You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1328 lines
1.3 MiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

var HDmap=function(){"use strict";var $l=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function bp(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,"default")?x.default:x}function I1(x){if(x.__esModule)return x;var d=x.default;if(typeof d=="function"){var w=function k(){return this instanceof k?Reflect.construct(d,arguments,this.constructor):d.apply(this,arguments)};w.prototype=d.prototype}else w={};return Object.defineProperty(w,"__esModule",{value:!0}),Object.keys(x).forEach(function(k){var A=Object.getOwnPropertyDescriptor(x,k);Object.defineProperty(w,k,A.get?A:{enumerable:!0,get:function(){return x[k]}})}),w}var fg={exports:{}};(function(x,d){(function(w,k){x.exports=k()})($l,function(){var w,k,A;function O(s,Z){if(!w)w=Z;else if(!k)k=Z;else{var oe="self.onerror = function() { console.error('An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling'); }; var sharedChunk = {}; ("+w+")(sharedChunk); ("+k+")(sharedChunk); self.onerror = null;",pe={};w(pe),A=Z(pe),typeof window<"u"&&window&&window.URL&&window.URL.createObjectURL&&(A.workerUrl=window.URL.createObjectURL(new Blob([oe],{type:"text/javascript"})))}}O(["exports"],function(s){var Z=typeof self<"u"?self:{},oe="2.15.0";let pe;const he={API_URL:"https://api.mapbox.com",get API_URL_REGEX(){if(pe==null){const t=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;try{pe=process.env.API_URL_REGEX!=null?new RegExp(process.env.API_URL_REGEX):t}catch{pe=t}}return pe},get API_TILEJSON_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/v[0-9]*\/.*\.json.*$)/i},get API_SPRITE_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/styles\/v[0-9]*\/)(.*\/sprite.*\..*$)/i},get API_FONTS_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/fonts\/v[0-9]*\/)(.*\.pbf.*$)/i},get API_STYLE_REGEX(){return/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/styles\/v[0-9]*\/)(.*$)/i},get API_CDN_URL_REGEX(){return/^((https?:)?\/\/)?api\.mapbox\.c(n|om)(\/mapbox-gl-js\/)(.*$)/i},get EVENTS_URL(){if(!he.API_URL)return null;try{const t=new URL(he.API_URL);return t.hostname==="api.mapbox.cn"?"https://events.mapbox.cn/events/v2":t.hostname==="api.mapbox.com"?"https://events.mapbox.com/events/v2":null}catch{return null}},SESSION_PATH:"/map-sessions/v1",FEEDBACK_URL:"https://apps.mapbox.com/feedback",TILE_URL_VERSION:"v4",RASTER_URL_PREFIX:"raster/v1",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},we={supported:!1,testSupport:function(t){!Tt&&Ie&&(gt?Mt(t):ye=t)}};let ye,Ie,Tt=!1,gt=!1;function Mt(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,Ie),t.isContextLost())return;we.supported=!0}catch{}t.deleteTexture(e),Tt=!0}Z.document&&(Ie=Z.document.createElement("img"),Ie.onload=function(){ye&&Mt(ye),ye=null,gt=!0},Ie.onerror=function(){Tt=!0,ye=null},Ie.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");const Le="01";function Qe(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Et=ut;function ut(t,e,i,r){this.cx=3*t,this.bx=3*(i-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(r-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=i,this.p2y=r}ut.prototype={sampleCurveX:function(t){return((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(e===void 0&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var i=t,r=0;r<8;r++){var u=this.sampleCurveX(i)-t;if(Math.abs(u)<e)return i;var f=this.sampleCurveDerivativeX(i);if(Math.abs(f)<1e-6)break;i-=u/f}var m=0,y=1;for(i=t,r=0;r<20&&(u=this.sampleCurveX(i),!(Math.abs(u-t)<e));r++)t>u?m=i:y=i,i=.5*(y-m)+m;return i},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}};var yt=Qe(Et),_t=It;function It(t,e){this.x=t,this.y=e}It.prototype={clone:function(){return new It(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,i=t.y-this.y;return e*e+i*i},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),i=Math.sin(t),r=i*this.x+e*this.y;return this.x=e*this.x-i*this.y,this.y=r,this},_rotateAround:function(t,e){var i=Math.cos(t),r=Math.sin(t),u=e.y+r*(this.x-e.x)+i*(this.y-e.y);return this.x=e.x+i*(this.x-e.x)-r*(this.y-e.y),this.y=u,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},It.convert=function(t){return t instanceof It?t:Array.isArray(t)?new It(t[0],t[1]):t};var Oe=Qe(_t);const gi=Math.PI/180,ti=180/Math.PI;function At(t){return t*gi}function Xt(t){return t*ti}const bt=[[0,0],[1,0],[1,1],[0,1]];function Jt(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,i=e*t;return 4*(t<.5?i:3*(t-e)+i-.75)}function Bt(t,e,i,r){const u=new yt(t,e,i,r);return function(f){return u.solve(f)}}const Ri=Bt(.25,.1,.25,1);function Rt(t,e,i){return Math.min(i,Math.max(e,t))}function pi(t,e,i){return(i=Rt((i-t)/(e-t),0,1))*i*(3-2*i)}function St(t,e,i){const r=i-e,u=((t-e)%r+r)%r+e;return u===e?i:u}function wi(t,e,i){if(!t.length)return i(null,[]);let r=t.length;const u=new Array(t.length);let f=null;t.forEach((m,y)=>{e(m,(E,T)=>{E&&(f=E),u[y]=T,--r==0&&i(f,u)})})}function Oi(t){const e=[];for(const i in t)e.push(t[i]);return e}function Wt(t,...e){for(const i of e)for(const r in i)t[r]=i[r];return t}let Dt=1;function Ni(){return Dt++}function Dn(){return function t(e){return e?(e^Math.random()*(16>>e/4)).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function vn(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}function Fe(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function no(t,e){t.forEach(i=>{e[i]&&(e[i]=e[i].bind(e))})}function Ci(t,e){return t.indexOf(e,t.length-e.length)!==-1}function ft(t,e,i){const r={};for(const u in t)r[u]=e.call(this,t[u],u,t);return r}function me(t,e,i){const r={};for(const u in t)e.call(i||this,t[u],u,t)&&(r[u]=t[u]);return r}function rn(t){return Array.isArray(t)?t.map(rn):typeof t=="object"&&t?ft(t,rn):t}const $r={};function Ti(t){$r[t]||(typeof console<"u"&&console.warn(t),$r[t]=!0)}function pr(t,e,i){return(i.y-t.y)*(e.x-t.x)>(e.y-t.y)*(i.x-t.x)}function ps(t){let e=0;for(let i,r,u=0,f=t.length,m=f-1;u<f;m=u++)i=t[u],r=t[m],e+=(r.x-i.x)*(i.y+r.y);return e}function ro(){return typeof WorkerGlobalScope<"u"&&typeof self<"u"&&self instanceof WorkerGlobalScope}function ct(t){const e={};if(t.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(i,r,u,f)=>{const m=u||f;return e[r]=!m||m.toLowerCase(),""}),e["max-age"]){const i=parseInt(e["max-age"],10);isNaN(i)?delete e["max-age"]:e["max-age"]=i}return e}let ds=null;function Do(t){if(ds==null){const e=t.navigator?t.navigator.userAgent:null;ds=!!t.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return ds}function Dr(t){try{const e=Z[t];return e.setItem("_mapbox_test_",1),e.removeItem("_mapbox_test_"),!0}catch{return!1}}function xo(t,e){return[t[4*e],t[4*e+1],t[4*e+2],t[4*e+3]]}const ii="mapbox-tiles";let bo=500,Oo=50,tr,$t;function zo(){try{return Z.caches}catch{}}function _i(){zo()&&!tr&&(tr=Z.caches.open(ii))}function Yt(t){const e=t.indexOf("?");if(e<0)return t;const i=function(u){const f=u.indexOf("?");return f>0?u.slice(f+1).split("&"):[]}(t),r=i.filter(u=>{const f=u.split("=");return f[0]==="language"||f[0]==="worldview"});return r.length?`${t.slice(0,e)}?${r.join("&")}`:t.slice(0,e)}let zs=1/0;const Wn={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};typeof Object.freeze=="function"&&Object.freeze(Wn);class wo extends Error{constructor(e,i,r){i===401&&Pe(r)&&(e+=": you may have provided an invalid Mapbox access token. See https://docs.mapbox.com/api/overview/#access-tokens-and-token-scopes"),super(e),this.status=i,this.url=r}toString(){return`${this.name}: ${this.message} (${this.status}): ${this.url}`}}const qt=ro()?()=>self.worker&&self.worker.referrer:()=>(Z.location.protocol==="blob:"?Z.parent:Z).location.href,No=function(t,e){if(!(/^file:/.test(i=t.url)||/^file:/.test(qt())&&!/^\w+:/.test(i))){if(Z.fetch&&Z.Request&&Z.AbortController&&Z.Request.prototype.hasOwnProperty("signal"))return function(r,u){const f=new Z.AbortController,m=new Z.Request(r.url,{method:r.method||"GET",body:r.body,credentials:r.credentials,headers:r.headers,referrer:qt(),referrerPolicy:r.referrerPolicy,signal:f.signal});let y=!1,E=!1;const T=(C=m.url).indexOf("sku=")>0&&Pe(C);var C;r.type==="json"&&m.headers.set("Accept","application/json");const L=(B,U,G)=>{if(E)return;if(B&&B.message!=="SecurityError"&&Ti(B.toString()),U&&G)return D(U);const H=Date.now();Z.fetch(m).then(ne=>{if(ne.ok){const de=T?ne.clone():null;return D(ne,de,H)}return u(new wo(ne.statusText,ne.status,r.url))}).catch(ne=>{ne.name!=="AbortError"&&u(new Error(`${ne.message} ${r.url}`))})},D=(B,U,G)=>{(r.type==="arrayBuffer"?B.arrayBuffer():r.type==="json"?B.json():B.text()).then(H=>{E||(U&&G&&function(ne,de,re){if(_i(),!tr)return;const fe={status:de.status,statusText:de.statusText,headers:new Z.Headers};de.headers.forEach((Be,De)=>fe.headers.set(De,Be));const ve=ct(de.headers.get("Cache-Control")||"");if(ve["no-store"])return;ve["max-age"]&&fe.headers.set("Expires",new Date(re+1e3*ve["max-age"]).toUTCString());const ge=fe.headers.get("Expires");ge&&(new Date(ge).getTime()-re<42e4||function(Be,De){if($t===void 0)try{new Response(new ReadableStream),$t=!0}catch{$t=!1}$t?De(Be.body):Be.blob().then(De)}(de,Be=>{const De=new Z.Response(Be,fe);_i(),tr&&tr.then(qe=>qe.put(Yt(ne.url),De)).catch(qe=>Ti(qe.message))}))}(m,U,G),y=!0,u(null,H,B.headers.get("Cache-Control"),B.headers.get("Expires")))}).catch(H=>{E||u(new Error(H.message))})};return T?function(B,U){if(_i(),!tr)return U(null);const G=Yt(B.url);tr.then(H=>{H.match(G).then(ne=>{const de=function(re){if(!re)return!1;const fe=new Date(re.headers.get("Expires")||0),ve=ct(re.headers.get("Cache-Control")||"");return fe>Date.now()&&!ve["no-cache"]}(ne);H.delete(G),de&&H.put(G,ne.clone()),U(null,ne,de)}).catch(U)}).catch(U)}(m,L):L(null,null),{cancel:()=>{E=!0,y||f.abort()}}}(t,e);if(ro()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",t,e,void 0,!0)}var i;return function(r,u){const f=new Z.XMLHttpRequest;f.open(r.method||"GET",r.url,!0),r.type==="arrayBuffer"&&(f.responseType="arraybuffer");for(const m in r.headers)f.setRequestHeader(m,r.headers[m]);return r.type==="json"&&(f.responseType="text",f.setRequestHeader("Accept","application/json")),f.withCredentials=r.credentials==="include",f.onerror=()=>{u(new Error(f.statusText))},f.onload=()=>{if((f.status>=200&&f.status<300||f.status===0)&&f.response!==null){let m=f.response;if(r.type==="json")try{m=JSON.parse(f.response)}catch(y){return u(y)}u(null,m,f.getResponseHeader("Cache-Control"),f.getResponseHeader("Expires"))}else u(new wo(f.statusText,f.status,r.url))},f.send(r.body),{cancel:()=>f.abort()}}(t,e)},ms=function(t,e){return No(Wt(t,{type:"arrayBuffer"}),e)};function gs(t){const e=Z.document.createElement("a");return e.href=t,e.protocol===Z.document.location.protocol&&e.host===Z.document.location.host}const ce="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";let X,W;X=[],W=0;const ue=function(t,e){if(we.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*"),W>=he.MAX_PARALLEL_IMAGE_REQUESTS){const f={requestParameters:t,callback:e,cancelled:!1,cancel(){this.cancelled=!0}};return X.push(f),f}W++;let i=!1;const r=()=>{if(!i)for(i=!0,W--;X.length&&W<he.MAX_PARALLEL_IMAGE_REQUESTS;){const f=X.shift(),{requestParameters:m,callback:y,cancelled:E}=f;E||(f.cancel=ue(m,y).cancel)}},u=ms(t,(f,m,y,E)=>{r(),f?e(f):m&&(Z.createImageBitmap?function(T,C){const L=new Z.Blob([new Uint8Array(T)],{type:"image/png"});Z.createImageBitmap(L).then(D=>{C(null,D)}).catch(D=>{C(new Error(`Could not load image because of ${D.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))})}(m,(T,C)=>e(T,C,y,E)):function(T,C){const L=new Z.Image,D=Z.URL;L.onload=()=>{C(null,L),D.revokeObjectURL(L.src),L.onload=null,Z.requestAnimationFrame(()=>{L.src=ce})},L.onerror=()=>C(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const B=new Z.Blob([new Uint8Array(T)],{type:"image/png"});L.src=T.byteLength?D.createObjectURL(B):ce}(m,(T,C)=>e(T,C,y,E)))});return{cancel:()=>{u.cancel(),r()}}},_e="NO_ACCESS_TOKEN";function Se(t){return t.indexOf("mapbox:")===0}function Pe(t){return he.API_URL_REGEX.test(t)}function Ce(t){return he.API_CDN_URL_REGEX.test(t)}function se(t){return he.API_STYLE_REGEX.test(t)&&!Ue(t)}function Ue(t){return he.API_SPRITE_REGEX.test(t)}const ot=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function ht(t){const e=t.match(ot);if(!e)throw new Error("Unable to parse URL object");return{protocol:e[1],authority:e[2],path:e[3]||"/",params:e[4]?e[4].split("&"):[]}}function nt(t){const e=t.params.length?`?${t.params.join("&")}`:"";return`${t.protocol}://${t.authority}${t.path}${e}`}const Ht="mapbox.eventData";function li(t){if(!t)return null;const e=t.split(".");if(!e||e.length!==3)return null;try{return JSON.parse(decodeURIComponent(Z.atob(e[1]).split("").map(i=>"%"+("00"+i.charCodeAt(0).toString(16)).slice(-2)).join("")))}catch{return null}}class Zt{constructor(e){this.type=e,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null}getStorageKey(e){const i=li(he.ACCESS_TOKEN);let r="";return r=i&&i.u?Z.btoa(encodeURIComponent(i.u).replace(/%([0-9A-F]{2})/g,(u,f)=>String.fromCharCode(+("0x"+f)))):he.ACCESS_TOKEN||"",e?`${Ht}.${e}:${r}`:`${Ht}:${r}`}fetchEventData(){const e=Dr("localStorage"),i=this.getStorageKey(),r=this.getStorageKey("uuid");if(e)try{const u=Z.localStorage.getItem(i);u&&(this.eventData=JSON.parse(u));const f=Z.localStorage.getItem(r);f&&(this.anonId=f)}catch{Ti("Unable to read from LocalStorage")}}saveEventData(){const e=Dr("localStorage"),i=this.getStorageKey(),r=this.getStorageKey("uuid");if(e)try{Z.localStorage.setItem(r,this.anonId),Object.keys(this.eventData).length>=1&&Z.localStorage.setItem(i,JSON.stringify(this.eventData))}catch{Ti("Unable to write to LocalStorage")}}processRequests(e){}postEvent(e,i,r,u){if(!he.EVENTS_URL)return;const f=ht(he.EVENTS_URL);f.params.push(`access_token=${u||he.ACCESS_TOKEN||""}`);const m={event:this.type,created:new Date(e).toISOString()},y=i?Wt(m,i):m,E={url:nt(f),headers:{"Content-Type":"text/plain"},body:JSON.stringify([y])};this.pendingRequest=function(T,C){return No(Wt(T,{method:"POST"}),C)}(E,T=>{this.pendingRequest=null,r(T),this.saveEventData(),this.processRequests(u)})}queueRequest(e,i){this.queue.push(e),this.processRequests(i)}}const ui=new class extends Zt{constructor(t){super("appUserTurnstile"),this._customAccessToken=t}postTurnstileEvent(t,e){he.EVENTS_URL&&he.ACCESS_TOKEN&&Array.isArray(t)&&t.some(i=>Se(i)||Pe(i))&&this.queueRequest(Date.now(),e)}processRequests(t){if(this.pendingRequest||this.queue.length===0)return;this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();const e=li(he.ACCESS_TOKEN),i=e?e.u:he.ACCESS_TOKEN;let r=i!==this.eventData.tokenU;Fe(this.anonId)||(this.anonId=Dn(),r=!0);const u=this.queue.shift();if(this.eventData.lastSuccess){const f=new Date(this.eventData.lastSuccess),m=new Date(u),y=(u-this.eventData.lastSuccess)/864e5;r=r||y>=1||y<-1||f.getDate()!==m.getDate()}else r=!0;r?this.postEvent(u,{sdkIdentifier:"mapbox-gl-js",sdkVersion:oe,skuId:Le,"enabled.telemetry":!1,userId:this.anonId},f=>{f||(this.eventData.lastSuccess=u,this.eventData.tokenU=i)},t):this.processRequests()}},hi=ui.postTurnstileEvent.bind(ui),tn=new class extends Zt{constructor(){super("map.load"),this.success={},this.skuToken=""}postMapLoadEvent(t,e,i,r){this.skuToken=e,this.errorCb=r,he.EVENTS_URL&&(i||he.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},i):this.errorCb(new Error(_e)))}processRequests(t){if(this.pendingRequest||this.queue.length===0)return;const{id:e,timestamp:i}=this.queue.shift();e&&this.success[e]||(this.anonId||this.fetchEventData(),Fe(this.anonId)||(this.anonId=Dn()),this.postEvent(i,{sdkIdentifier:"mapbox-gl-js",sdkVersion:oe,skuId:Le,skuToken:this.skuToken,userId:this.anonId},r=>{r?this.errorCb(r):e&&(this.success[e]=!0)},t))}},un=tn.postMapLoadEvent.bind(tn),Un=new class extends Zt{constructor(){super("gljs.performance")}postPerformanceEvent(t,e){he.EVENTS_URL&&(t||he.ACCESS_TOKEN)&&this.queueRequest({timestamp:Date.now(),performanceData:e},t)}processRequests(t){if(this.pendingRequest||this.queue.length===0)return;const{timestamp:e,performanceData:i}=this.queue.shift(),r=function(u){const f=Z.performance.getEntriesByType("resource"),m=Z.performance.getEntriesByType("mark"),y=function(D){const B={};if(D){for(const U in D)if(U!=="other")for(const G of D[U]){const H=`${U}ResolveRangeMin`,ne=`${U}ResolveRangeMax`,de=`${U}RequestCount`,re=`${U}RequestCachedCount`;B[H]=Math.min(B[H]||1/0,G.startTime),B[ne]=Math.max(B[ne]||-1/0,G.responseEnd);const fe=ve=>{B[ve]===void 0&&(B[ve]=0),++B[ve]};G.transferSize!==void 0&&G.transferSize===0&&fe(re),fe(de)}}return B}(function(D,B){const U={};if(D)for(const G of D){const H=B(G);U[H]===void 0&&(U[H]=[]),U[H].push(G)}return U}(f,Ns)),E=Z.devicePixelRatio,T=Z.navigator.connection||Z.navigator.mozConnection||Z.navigator.webkitConnection,C={counters:[],metadata:[],attributes:[]},L=(D,B,U)=>{U!=null&&D.push({name:B,value:U.toString()})};for(const D in y)L(C.counters,D,y[D]);if(u.interactionRange[0]!==1/0&&u.interactionRange[1]!==-1/0&&(L(C.counters,"interactionRangeMin",u.interactionRange[0]),L(C.counters,"interactionRangeMax",u.interactionRange[1])),m)for(const D of Object.keys(br)){const B=br[D],U=m.find(G=>G.name===B);U&&L(C.counters,B,U.startTime)}return L(C.counters,"visibilityHidden",u.visibilityHidden),L(C.attributes,"style",function(D){if(D)for(const B of D){const U=B.name.split("?")[0];if(se(U)){const G=U.split("/").slice(-2);if(G.length===2)return`mapbox://styles/${G[0]}/${G[1]}`}}}(f)),L(C.attributes,"terrainEnabled",u.terrainEnabled?"true":"false"),L(C.attributes,"fogEnabled",u.fogEnabled?"true":"false"),L(C.attributes,"projection",u.projection),L(C.attributes,"zoom",u.zoom),L(C.metadata,"devicePixelRatio",E),L(C.metadata,"connectionEffectiveType",T?T.effectiveType:void 0),L(C.metadata,"navigatorUserAgent",Z.navigator.userAgent),L(C.metadata,"screenWidth",Z.screen.width),L(C.metadata,"screenHeight",Z.screen.height),L(C.metadata,"windowWidth",Z.innerWidth),L(C.metadata,"windowHeight",Z.innerHeight),L(C.metadata,"mapWidth",u.width/E),L(C.metadata,"mapHeight",u.height/E),L(C.metadata,"webglRenderer",u.renderer),L(C.metadata,"webglVendor",u.vendor),L(C.metadata,"sdkVersion",oe),L(C.metadata,"sdkIdentifier","mapbox-gl-js"),C}(i);for(const u of r.metadata);for(const u of r.counters);for(const u of r.attributes);this.postEvent(e,r,()=>{},t)}},Pi=Un.postPerformanceEvent.bind(Un),xr=new class extends Zt{constructor(){super("map.auth"),this.success={},this.skuToken=""}getSession(t,e,i,r){if(!he.API_URL||!he.SESSION_PATH)return;const u=ht(he.API_URL+he.SESSION_PATH);u.params.push(`sku=${e||""}`),u.params.push(`access_token=${r||he.ACCESS_TOKEN||""}`);const f={url:nt(u),headers:{"Content-Type":"text/plain"}};this.pendingRequest=function(m,y){return No(Wt(m,{method:"GET"}),y)}(f,m=>{this.pendingRequest=null,i(m),this.saveEventData(),this.processRequests(r)})}getSessionAPI(t,e,i,r){this.skuToken=e,this.errorCb=r,he.SESSION_PATH&&he.API_URL&&(i||he.ACCESS_TOKEN?this.queueRequest({id:t,timestamp:Date.now()},i):this.errorCb(new Error(_e)))}processRequests(t){if(this.pendingRequest||this.queue.length===0)return;const{id:e,timestamp:i}=this.queue.shift();e&&this.success[e]||this.getSession(i,this.skuToken,r=>{r?this.errorCb(r):e&&(this.success[e]=!0)},t)}},cn=xr.getSessionAPI.bind(xr),pn=new Set,br={create:"create",load:"load",fullLoad:"fullLoad"},al={mark(t){Z.performance.mark(t)},measure(t,e,i){Z.performance.measure(t,e,i)}};function Ns(t){const e=t.name.split("?")[0];return Ce(e)&&e.includes("mapbox-gl.js")?"javascript":Ce(e)&&e.includes("mapbox-gl.css")?"css":function(i){return he.API_FONTS_REGEX.test(i)}(e)?"fontRange":Ue(e)?"sprite":se(e)?"style":function(i){return he.API_TILEJSON_REGEX.test(i)}(e)?"tilejson":"other"}const xi=Z.performance;function dn(t){const e=t?t.url.toString():void 0;return xi.getEntriesByName(e)}let Bs,ll,Bo,ir;const Or={now:()=>Bo!==void 0?Bo:Z.performance.now(),setNow(t){Bo=t},restoreNow(){Bo=void 0},frame(t){const e=Z.requestAnimationFrame(t);return{cancel:()=>Z.cancelAnimationFrame(e)}},getImageData(t,e=0){const{width:i,height:r}=t;ir||(ir=Z.document.createElement("canvas"));const u=ir.getContext("2d",{willReadFrequently:!0});if(!u)throw new Error("failed to create canvas 2d context");return(i>ir.width||r>ir.height)&&(ir.width=i,ir.height=r),u.clearRect(-e,-e,i+2*e,r+2*e),u.drawImage(t,0,0,i,r),u.getImageData(-e,-e,i+2*e,r+2*e)},resolveURL:t=>(Bs||(Bs=Z.document.createElement("a")),Bs.href=t,Bs.href),get devicePixelRatio(){return Z.devicePixelRatio},get prefersReducedMotion(){return!!Z.matchMedia&&(ll==null&&(ll=Z.matchMedia("(prefers-reduced-motion: reduce)")),ll.matches)}};function Fs(t,e,i){i[t]&&i[t].indexOf(e)!==-1||(i[t]=i[t]||[],i[t].push(e))}function _a(t,e,i){if(i&&i[t]){const r=i[t].indexOf(e);r!==-1&&i[t].splice(r,1)}}class Fo{constructor(e,i={}){Wt(this,i),this.type=e}}class xn extends Fo{constructor(e,i={}){super("error",Wt({error:e},i))}}class qr{on(e,i){return this._listeners=this._listeners||{},Fs(e,i,this._listeners),this}off(e,i){return _a(e,i,this._listeners),_a(e,i,this._oneTimeListeners),this}once(e,i){return i?(this._oneTimeListeners=this._oneTimeListeners||{},Fs(e,i,this._oneTimeListeners),this):new Promise(r=>this.once(e,r))}fire(e,i){typeof e=="string"&&(e=new Fo(e,i||{}));const r=e.type;if(this.listens(r)){e.target=this;const u=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(const y of u)y.call(this,e);const f=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(const y of f)_a(r,y,this._oneTimeListeners),y.call(this,e);const m=this._eventedParent;m&&(Wt(e,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),m.fire(e))}else e instanceof xn&&console.error(e.error);return this}listens(e){return!!(this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e))}setEventedParent(e,i){return this._eventedParent=e,this._eventedParentData=i,this}}var Ge=JSON.parse('{"$version":8,"$root":{"version":{"required":true,"type":"enum","values":[8]},"name":{"type":"string"},"metadata":{"type":"*"},"center":{"type":"array","value":"number"},"zoom":{"type":"number"},"bearing":{"type":"number","default":0,"period":360,"units":"degrees"},"pitch":{"type":"number","default":0,"units":"degrees"},"light":{"type":"light"},"terrain":{"type":"terrain"},"fog":{"type":"fog"},"sources":{"required":true,"type":"sources"},"sprite":{"type":"string"},"glyphs":{"type":"string"},"transition":{"type":"transition"},"projection":{"type":"projection"},"layers":{"required":true,"type":"array","value":"layer"}},"sources":{"*":{"type":"source"}},"source":["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],"source_vector":{"type":{"required":true,"type":"enum","values":{"vector":{}}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"scheme":{"type":"enum","values":{"xyz":{},"tms":{}},"default":"xyz"},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"attribution":{"type":"string"},"promoteId":{"type":"promoteId"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_raster":{"type":{"required":true,"type":"enum","values":{"raster":{}}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"tileSize":{"type":"number","default":512,"units":"pixels"},"scheme":{"type":"enum","values":{"xyz":{},"tms":{}},"default":"xyz"},"attribution":{"type":"string"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_raster_dem":{"type":{"required":true,"type":"enum","values":{"raster-dem":{}}},"url":{"type":"string"},"tiles":{"type":"array","value":"string"},"bounds":{"type":"array","value":"number","length":4,"default":[-180,-85.051129,180,85.051129]},"minzoom":{"type":"number","default":0},"maxzoom":{"type":"number","default":22},"tileSize":{"type":"number","default":512,"units":"pixels"},"attribution":{"type":"string"},"encoding":{"type":"enum","values":{"terrarium":{},"mapbox":{}},"default":"mapbox"},"volatile":{"type":"boolean","default":false},"*":{"type":"*"}},"source_geojson":{"type":{"required":true,"type":"enum","values":{"geojson":{}}},"data":{"type":"*"},"maxzoom":{"type":"number","default":18},"attribution":{"type":"string"},"buffer":{"type":"number","default":128,"maximum":512,"minimum":0},"filter":{"type":"*"},"tolerance":{"type":"number","default":0.375},"cluster":{"type":"boolean","default":false},"clusterRadius":{"type":"number","default":50,"minimum":0},"clusterMaxZoom":{"type":"number"},"clusterMinPoints":{"type":"number"},"clusterProperties":{"type":"*"},"lineMetrics":{"type":"boolean","default":false},"generateId":{"type":"boolean","default":false},"promoteId":{"type":"promoteId"}},"source_video":{"type":{"required":true,"type":"enum","values":{"video":{}}},"urls":{"required":true,"type":"array","value":"string"},"coordinates":{"required":true,"type":"array","length":4,"value":{"type":"array","length":2,"value":"number"}}},"source_image":{"type":{"required":true,"type":"enum","values":{"image":{}}},"url":{"required":true,"type":"string"},"coordinates":{"required":true,"type":"array","length":4,"value":{"type":"array","length":2,"value":"number"}}},"layer":{"id":{"type":"string","required":true},"type":{"type":"enum","values":{"fill":{},"line":{},"symbol":{},"circle":{},"heatmap":{},"fill-extrusion":{},"raster":{},"hillshade":{},"background":{},"sky":{}},"required":true},"metadata":{"type":"*"},"source":{"type":"string"},"source-layer":{"type":"string"},"minzoom":{"type":"number","minimum":0,"maximum":24},"maxzoom":{"type":"number","minimum":0,"maximum":24},"filter":{"type":"filter"},"layout":{"type":"layout"},"paint":{"type":"paint"}},"layout":["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background","layout_sky"],"layout_background":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_sky":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_fill":{"fill-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_circle":{"circle-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_heatmap":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_fill-extrusion":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"},"fill-extrusion-edge-radius":{"type":"number","private":true,"default":0,"minimum":0,"maximum":1,"property-type":"constant"}},"layout_line":{"line-cap":{"type":"enum","values":{"butt":{},"round":{},"square":{}},"default":"butt","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-join":{"type":"enum","values":{"bevel":{},"round":{},"miter":{}},"default":"miter","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{"type":"number","default":2,"requires":[{"line-join":"miter"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-round-limit":{"type":"number","default":1.05,"requires":[{"line-join":"round"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_symbol":{"symbol-placement":{"type":"enum","values":{"point":{},"line":{},"line-center":{}},"default":"point","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-spacing":{"type":"number","default":250,"minimum":1,"units":"pixels","requires":[{"symbol-placement":"line"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{"type":"boolean","default":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{"type":"number","expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{"type":"enum","values":{"auto":{},"viewport-y":{},"source":{}},"default":"auto","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{"type":"boolean","default":false,"requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{"type":"boolean","default":false,"requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-optional":{"type":"boolean","default":false,"requires":["icon-image","text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-size":{"type":"number","default":1,"minimum":0,"units":"factor of the original icon size","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{"type":"enum","values":{"none":{},"width":{},"height":{},"both":{}},"default":"none","requires":["icon-image","text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{"type":"array","value":"number","length":4,"default":[0,0,0,0],"units":"pixels","requires":["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-image":{"type":"resolvedImage","tokens":true,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{"type":"number","default":0,"period":360,"units":"degrees","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{"type":"number","default":2,"minimum":0,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{"type":"boolean","default":false,"requires":["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"icon-offset":{"type":"array","value":"number","length":2,"default":[0,0],"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{"type":"enum","values":{"center":{},"left":{},"right":{},"top":{},"bottom":{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},"default":"center","requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{"type":"enum","values":{"map":{},"viewport":{},"auto":{}},"default":"auto","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-field":{"type":"formatted","default":"","tokens":true,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-font":{"type":"array","value":"string","default":["Open Sans Regular","Arial Unicode MS Regular"],"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-size":{"type":"number","default":16,"minimum":0,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{"type":"number","default":10,"minimum":0,"units":"ems","requires":["text-field",{"symbol-placement":["point"]}],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{"type":"number","default":1.2,"units":"ems","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-letter-spacing":{"type":"number","default":0,"units":"ems","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-justify":{"type":"enum","values":{"auto":{},"left":{},"center":{},"right":{}},"default":"center","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{"type":"number","units":"ems","default":0,"requires":["text-field"],"property-type":"data-driven","expression":{"interpolated":true,"parameters":["zoom","feature"]}},"text-variable-anchor":{"type":"array","value":"enum","values":{"center":{},"left":{},"right":{},"top":{},"bottom":{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},"requires":["text-field",{"symbol-placement":["point"]}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-anchor":{"type":"enum","values":{"center":{},"left":{},"right":{},"top":{},"bottom":{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},"default":"center","requires":["text-field",{"!":"text-variable-anchor"}],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{"type":"number","default":45,"units":"degrees","requires":["text-field",{"symbol-placement":["line","line-center"]}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-writing-mode":{"type":"array","value":"enum","values":{"horizontal":{},"vertical":{}},"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-rotate":{"type":"number","default":0,"period":360,"units":"degrees","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-padding":{"type":"number","default":2,"minimum":0,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-keep-upright":{"type":"boolean","default":true,"requires":["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-transform":{"type":"enum","values":{"none":{},"uppercase":{},"lowercase":{}},"default":"none","requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-offset":{"type":"array","value":"number","units":"ems","length":2,"default":[0,0],"requires":["text-field",{"!":"text-radial-offset"}],"expression":{"interpolated":true,"parameters":["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{"type":"boolean","default":false,"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{"type":"boolean","default":false,"requires":["text-field"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-optional":{"type":"boolean","default":false,"requires":["text-field","icon-image"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_raster":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"layout_hillshade":{"visibility":{"type":"enum","values":{"visible":{},"none":{}},"default":"visible","property-type":"constant"}},"filter":{"type":"array","value":"*"},"filter_symbol":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature","pitch","distance-from-center"]}},"filter_fill":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_line":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_circle":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_fill-extrusion":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_heatmap":{"type":"boolean","default":false,"transition":false,"property-type":"data-driven","expression":{"interpolated":false,"parameters":["zoom","feature"]}},"filter_operator":{"type":"enum","values":{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},"in":{},"!in":{},"all":{},"any":{},"none":{},"has":{},"!has":{},"within":{}}},"geometry_type":{"type":"enum","values":{"Point":{},"LineString":{},"Polygon":{}}},"function":{"expression":{"type":"expression"},"stops":{"type":"array","value":"function_stop"},"base":{"type":"number","default":1,"minimum":0},"property":{"type":"string","default":"$zoom"},"type":{"type":"enum","values":{"identity":{},"exponential":{},"interval":{},"categorical":{}},"default":"exponential"},"colorSpace":{"type":"enum","values":{"rgb":{},"lab":{},"hcl":{}},"default":"rgb"},"default":{"type":"*","required":false}},"function_stop":{"type":"array","minimum":0,"maximum":24,"value":["number","color"],"length":2},"expression":{"type":"array","value":"*","minimum":1},"fog":{"range":{"type":"array","default":[0.5,10],"minimum":-20,"maximum":20,"length":2,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"high-color":{"type":"color","property-type":"data-constant","default":"#245cdf","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"space-color":{"type":"color","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],4,"#010b19",7,"#367ab9"],"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"horizon-blend":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],4,0.2,7,0.1],"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"star-intensity":{"type":"number","property-type":"data-constant","default":["interpolate",["linear"],["zoom"],5,0.35,6,0],"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"light":{"anchor":{"type":"enum","default":"viewport","values":{"map":{},"viewport":{}},"property-type":"data-constant","transition":false,"expression":{"interpolated":false,"parameters":["zoom"]}},"position":{"type":"array","default":[1.15,210,30],"length":3,"value":"number","property-type":"data-constant","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]}},"color":{"type":"color","property-type":"data-constant","default":"#ffffff","expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"intensity":{"type":"number","property-type":"data-constant","default":0.5,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true}},"projection":{"name":{"type":"enum","values":{"albers":{},"equalEarth":{},"equirectangular":{},"lambertConformalConic":{},"mercator":{},"naturalEarth":{},"winkelTripel":{},"globe":{}},"default":"mercator","required":true},"center":{"type":"array","length":2,"value":"number","property-type":"data-constant","minimum":[-180,-90],"maximum":[180,90],"transition":false,"requires":[{"name":["albers","lambertConformalConic"]}]},"parallels":{"type":"array","length":2,"value":"number","property-type":"data-constant","minimum":[-90,-90],"maximum":[90,90],"transition":false,"requires":[{"name":["albers","lambertConformalConic"]}]}},"terrain":{"source":{"type":"string","required":true},"exaggeration":{"type":"number","property-type":"data-constant","default":1,"minimum":0,"maximum":1000,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true,"requires":["source"]}},"paint":["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background","paint_sky"],"paint_fill":{"fill-antialias":{"type":"boolean","default":true,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"fill-pattern"}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{"type":"color","transition":true,"requires":[{"!":"fill-pattern"},{"fill-antialias":true}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["fill-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-pattern":{"type":"resolvedImage","transition":false,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"fill-extrusion-pattern"}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["fill-extrusion-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{"type":"resolvedImage","transition":false,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"fill-extrusion-height":{"type":"number","default":0,"minimum":0,"units":"meters","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{"type":"number","default":0,"minimum":0,"units":"meters","transition":true,"requires":["fill-extrusion-height"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{"type":"boolean","default":true,"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"fill-extrusion-ambient-occlusion-intensity":{"property-type":"data-constant","type":"number","private":true,"default":0,"minimum":0,"maximum":1,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true},"fill-extrusion-ambient-occlusion-radius":{"property-type":"data-constant","type":"number","private":true,"default":3,"minimum":0,"expression":{"interpolated":true,"parameters":["zoom"]},"transition":true,"requires":["fill-extrusion-edge-radius"]},"fill-extrusion-rounded-roof":{"type":"boolean","default":true,"requires":["fill-extrusion-edge-radius"],"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_line":{"line-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"line-pattern"}],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["line-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"line-width":{"type":"number","default":1,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{"type":"number","default":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{"type":"array","value":"number","minimum":0,"transition":false,"units":"line widths","requires":[{"!":"line-pattern"}],"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-pattern":{"type":"resolvedImage","transition":false,"expression":{"interpolated":false,"parameters":["zoom","feature"]},"property-type":"data-driven"},"line-gradient":{"type":"color","transition":false,"requires":[{"!":"line-pattern"},{"source":"geojson","has":{"lineMetrics":true}}],"expression":{"interpolated":true,"parameters":["line-progress"]},"property-type":"color-ramp"},"line-trim-offset":{"type":"array","value":"number","length":2,"default":[0,0],"minimum":[0,0],"maximum":[1,1],"transition":false,"requires":[{"source":"geojson","has":{"lineMetrics":true}}],"property-type":"constant"}},"paint_circle":{"circle-radius":{"type":"number","default":5,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{"type":"number","default":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["circle-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{"type":"enum","values":{"map":{},"viewport":{}},"default":"viewport","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"}},"paint_heatmap":{"heatmap-radius":{"type":"number","default":30,"minimum":1,"transition":true,"units":"pixels","expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{"type":"number","default":1,"minimum":0,"transition":false,"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{"type":"number","default":1,"minimum":0,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"heatmap-color":{"type":"color","default":["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",0.1,"royalblue",0.3,"cyan",0.5,"lime",0.7,"yellow",1,"red"],"transition":false,"expression":{"interpolated":true,"parameters":["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_symbol":{"icon-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{"type":"color","default":"#000000","transition":true,"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{"type":"color","default":"rgba(0, 0, 0, 0)","transition":true,"requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","requires":["icon-image"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["icon-image","icon-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"text-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{"type":"color","default":"#000000","transition":true,"overridable":true,"requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{"type":"color","default":"rgba(0, 0, 0, 0)","transition":true,"requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{"type":"number","default":0,"minimum":0,"transition":true,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{"type":"array","value":"number","length":2,"default":[0,0],"transition":true,"units":"pixels","requires":["text-field"],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"map","requires":["text-field","text-translate"],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_raster":{"raster-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{"type":"number","default":0,"period":360,"transition":true,"units":"degrees","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{"type":"number","default":0,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-saturation":{"type":"number","default":0,"minimum":-1,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-contrast":{"type":"number","default":0,"minimum":-1,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"raster-resampling":{"type":"enum","values":{"linear":{},"nearest":{}},"default":"linear","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{"type":"number","default":300,"minimum":0,"transition":false,"units":"milliseconds","expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_hillshade":{"hillshade-illumination-direction":{"type":"number","default":335,"minimum":0,"maximum":359,"transition":false,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{"type":"enum","values":{"map":{},"viewport":{}},"default":"viewport","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{"type":"number","default":0.5,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{"type":"color","default":"#FFFFFF","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{"type":"color","default":"#000000","transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_background":{"background-color":{"type":"color","default":"#000000","transition":true,"requires":[{"!":"background-pattern"}],"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"},"background-pattern":{"type":"resolvedImage","transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"background-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"paint_sky":{"sky-type":{"type":"enum","values":{"gradient":{},"atmosphere":{}},"default":"atmosphere","expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun":{"type":"array","value":"number","length":2,"units":"degrees","minimum":[0,0],"maximum":[360,180],"transition":false,"requires":[{"sky-type":"atmosphere"}],"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun-intensity":{"type":"number","requires":[{"sky-type":"atmosphere"}],"default":10,"minimum":0,"maximum":100,"transition":false,"property-type":"data-constant"},"sky-gradient-center":{"type":"array","requires":[{"sky-type":"gradient"}],"value":"number","default":[0,0],"length":2,"units":"degrees","minimum":[0,0],"maximum":[360,180],"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-gradient-radius":{"type":"number","requires":[{"sky-type":"gradient"}],"default":90,"minimum":0,"maximum":180,"transition":false,"expression":{"interpolated":false,"parameters":["zoom"]},"property-type":"data-constant"},"sky-gradient":{"type":"color","default":["interpolate",["linear"],["sky-radial-progress"],0.8,"#87ceeb",1,"white"],"transition":false,"requires":[{"sky-type":"gradient"}],"expression":{"interpolated":true,"parameters":["sky-radial-progress"]},"property-type":"color-ramp"},"sky-atmosphere-halo-color":{"type":"color","default":"white","transition":false,"requires":[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-atmosphere-color":{"type":"color","default":"white","transition":false,"requires":[{"sky-type":"atmosphere"}],"property-type":"data-constant"},"sky-opacity":{"type":"number","default":1,"minimum":0,"maximum":1,"transition":true,"expression":{"interpolated":true,"parameters":["zoom"]},"property-type":"data-constant"}},"transition":{"duration":{"type":"number","default":300,"minimum":0,"units":"milliseconds"},"delay":{"type":"number","default":0,"minimum":0,"units":"milliseconds"}},"property-type":{"data-driven":{"type":"property-type"},"color-ramp":{"type":"property-type"},"data-constant":{"type":"property-type"},"constant":{"type":"property-type"}},"promoteId":{"*":{"type":"string"}}}');function nr(t,...e){for(const i of e)for(const r in i)t[r]=i[r];return t}function sn(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function An(t){if(Array.isArray(t))return t.map(An);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){const e={};for(const i in t)e[i]=An(t[i]);return e}return sn(t)}class hu extends Error{constructor(e,i){super(i),this.message=i,this.key=e}}var Zr=hu;class ya{constructor(e,i=[]){this.parent=e,this.bindings={};for(const[r,u]of i)this.bindings[r]=u}concat(e){return new ya(this,e)}get(e){if(this.bindings[e])return this.bindings[e];if(this.parent)return this.parent.get(e);throw new Error(`${e} not found in scope.`)}has(e){return!!this.bindings[e]||!!this.parent&&this.parent.has(e)}}var ul=ya;const oo={kind:"null"},mt={kind:"number"},Qt={kind:"string"},ci={kind:"boolean"},Cn={kind:"color"},zr={kind:"object"},fi={kind:"value"},dr={kind:"collator"},Us={kind:"formatted"},Eo={kind:"resolvedImage"};function jn(t,e){return{kind:"array",itemType:t,N:e}}function Zi(t){if(t.kind==="array"){const e=Zi(t.itemType);return typeof t.N=="number"?`array<${e}, ${t.N}>`:t.itemType.kind==="value"?"array":`array<${e}>`}return t.kind}const fu=[oo,mt,Qt,ci,Cn,Us,zr,jn(fi),Eo];function Xr(t,e){if(e.kind==="error")return null;if(t.kind==="array"){if(e.kind==="array"&&(e.N===0&&e.itemType.kind==="value"||!Xr(t.itemType,e.itemType))&&(typeof t.N!="number"||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(t.kind==="value"){for(const i of fu)if(!Xr(i,e))return null}}return`Expected ${Zi(t)} but found ${Zi(e)} instead.`}function js(t,e){return e.some(i=>i.kind===t.kind)}function Uo(t,e){return e.some(i=>i==="null"?t===null:i==="array"?Array.isArray(t):i==="object"?t&&!Array.isArray(t)&&typeof t=="object":i===typeof t)}var Ji,To={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Vs(t){return(t=Math.round(t))<0?0:t>255?255:t}function jo(t){return Vs(t[t.length-1]==="%"?parseFloat(t)/100*255:parseInt(t))}function Yn(t){return(e=t[t.length-1]==="%"?parseFloat(t)/100:parseFloat(t))<0?0:e>1?1:e;var e}function On(t,e,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(.6666666666666666-i)*6:t}try{Ji={}.parseCSSColor=function(t){var e,i=t.replace(/ /g,"").toLowerCase();if(i in To)return To[i].slice();if(i[0]==="#")return i.length===4?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:i.length===7&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var r=i.indexOf("("),u=i.indexOf(")");if(r!==-1&&u+1===i.length){var f=i.substr(0,r),m=i.substr(r+1,u-(r+1)).split(","),y=1;switch(f){case"rgba":if(m.length!==4)return null;y=Yn(m.pop());case"rgb":return m.length!==3?null:[jo(m[0]),jo(m[1]),jo(m[2]),y];case"hsla":if(m.length!==4)return null;y=Yn(m.pop());case"hsl":if(m.length!==3)return null;var E=(parseFloat(m[0])%360+360)%360/360,T=Yn(m[1]),C=Yn(m[2]),L=C<=.5?C*(T+1):C+T-C*T,D=2*C-L;return[Vs(255*On(D,L,E+.3333333333333333)),Vs(255*On(D,L,E)),Vs(255*On(D,L,E-.3333333333333333)),y];default:return null}}return null}}catch{}class zn{constructor(e,i,r,u=1){this.r=e,this.g=i,this.b=r,this.a=u}static parse(e){if(!e)return;if(e instanceof zn)return e;if(typeof e!="string")return;const i=Ji(e);return i?new zn(i[0]/255*i[3],i[1]/255*i[3],i[2]/255*i[3],i[3]):void 0}toString(){const[e,i,r,u]=this.toArray();return`rgba(${Math.round(e)},${Math.round(i)},${Math.round(r)},${u})`}toArray(){const{r:e,g:i,b:r,a:u}=this;return u===0?[0,0,0,0]:[255*e/u,255*i/u,255*r/u,u]}toArray01(){const{r:e,g:i,b:r,a:u}=this;return u===0?[0,0,0,0]:[e/u,i/u,r/u,u]}toArray01PremultipliedAlpha(){const{r:e,g:i,b:r,a:u}=this;return[e,i,r,u]}}zn.black=new zn(0,0,0,1),zn.white=new zn(1,1,1,1),zn.transparent=new zn(0,0,0,0),zn.red=new zn(1,0,0,1),zn.blue=new zn(0,0,1,1);var hn=zn;class cl{constructor(e,i,r){this.sensitivity=e?i?"variant":"case":i?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,i){return this.collator.compare(e,i)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class va{constructor(e,i,r,u,f){this.text=e.normalize?e.normalize():e,this.image=i,this.scale=r,this.fontStack=u,this.textColor=f}}class Nn{constructor(e){this.sections=e}static fromString(e){return new Nn([new va(e,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(e=>e.text.length!==0||e.image&&e.image.name.length!==0)}static factory(e){return e instanceof Nn?e:Nn.fromString(e)}toString(){return this.sections.length===0?"":this.sections.map(e=>e.text).join("")}serialize(){const e=["format"];for(const i of this.sections){if(i.image){e.push(["image",i.image.name]);continue}e.push(i.text);const r={};i.fontStack&&(r["text-font"]=["literal",i.fontStack.split(",")]),i.scale&&(r["font-scale"]=i.scale),i.textColor&&(r["text-color"]=["rgba"].concat(i.textColor.toArray())),e.push(r)}return e}}class wr{constructor(e){this.name=e.name,this.available=e.available}toString(){return this.name}static fromString(e){return e?new wr({name:e,available:!1}):null}serialize(){return["image",this.name]}}function hl(t,e,i,r){return typeof t=="number"&&t>=0&&t<=255&&typeof e=="number"&&e>=0&&e<=255&&typeof i=="number"&&i>=0&&i<=255?r===void 0||typeof r=="number"&&r>=0&&r<=1?null:`Invalid rgba value [${[t,e,i,r].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof r=="number"?[t,e,i,r]:[t,e,i]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Ei(t){if(t===null||typeof t=="string"||typeof t=="boolean"||typeof t=="number"||t instanceof hn||t instanceof cl||t instanceof Nn||t instanceof wr)return!0;if(Array.isArray(t)){for(const e of t)if(!Ei(e))return!1;return!0}if(typeof t=="object"){for(const e in t)if(!Ei(t[e]))return!1;return!0}return!1}function Li(t){if(t===null)return oo;if(typeof t=="string")return Qt;if(typeof t=="boolean")return ci;if(typeof t=="number")return mt;if(t instanceof hn)return Cn;if(t instanceof cl)return dr;if(t instanceof Nn)return Us;if(t instanceof wr)return Eo;if(Array.isArray(t)){const e=t.length;let i;for(const r of t){const u=Li(r);if(i){if(i===u)continue;i=fi;break}i=u}return jn(i||fi,e)}return zr}function Vo(t){const e=typeof t;return t===null?"":e==="string"||e==="number"||e==="boolean"?String(t):t instanceof hn||t instanceof Nn||t instanceof wr?t.toString():JSON.stringify(t)}class xa{constructor(e,i){this.type=e,this.value=i}static parse(e,i){if(e.length!==2)return i.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Ei(e[1]))return i.error("invalid value");const r=e[1];let u=Li(r);const f=i.expectedType;return u.kind!=="array"||u.N!==0||!f||f.kind!=="array"||typeof f.N=="number"&&f.N!==0||(u=f),new xa(u,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}serialize(){return this.type.kind==="array"||this.type.kind==="object"?["literal",this.value]:this.value instanceof hn?["rgba"].concat(this.value.toArray()):this.value instanceof Nn?this.value.serialize():this.value}}var Nr=xa,Pn=class{constructor(t){this.name="ExpressionEvaluationError",this.message=t}toJSON(){return this.message}};const Bn={string:Qt,number:mt,boolean:ci,object:zr};class ba{constructor(e,i){this.type=e,this.args=i}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");let r,u=1;const f=e[0];if(f==="array"){let y,E;if(e.length>2){const T=e[1];if(typeof T!="string"||!(T in Bn)||T==="object")return i.error('The item type argument of "array" must be one of string, number, boolean',1);y=Bn[T],u++}else y=fi;if(e.length>3){if(e[2]!==null&&(typeof e[2]!="number"||e[2]<0||e[2]!==Math.floor(e[2])))return i.error('The length argument to "array" must be a positive integer literal',2);E=e[2],u++}r=jn(y,E)}else r=Bn[f];const m=[];for(;u<e.length;u++){const y=i.parse(e[u],u,fi);if(!y)return null;m.push(y)}return new ba(r,m)}evaluate(e){for(let i=0;i<this.args.length;i++){const r=this.args[i].evaluate(e);if(!Xr(this.type,Li(r)))return r;if(i===this.args.length-1)throw new Pn(`Expected value to be of type ${Zi(this.type)}, but found ${Zi(Li(r))} instead.`)}return null}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}serialize(){const e=this.type,i=[e.kind];if(e.kind==="array"){const r=e.itemType;if(r.kind==="string"||r.kind==="number"||r.kind==="boolean"){i.push(r.kind);const u=e.N;(typeof u=="number"||this.args.length>1)&&i.push(u)}}return i.concat(this.args.map(r=>r.serialize()))}}var Br=ba;class so{constructor(e){this.type=Us,this.sections=e}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");const r=e[1];if(!Array.isArray(r)&&typeof r=="object")return i.error("First argument must be an image or text section.");const u=[];let f=!1;for(let m=1;m<=e.length-1;++m){const y=e[m];if(f&&typeof y=="object"&&!Array.isArray(y)){f=!1;let E=null;if(y["font-scale"]&&(E=i.parse(y["font-scale"],1,mt),!E))return null;let T=null;if(y["text-font"]&&(T=i.parse(y["text-font"],1,jn(Qt)),!T))return null;let C=null;if(y["text-color"]&&(C=i.parse(y["text-color"],1,Cn),!C))return null;const L=u[u.length-1];L.scale=E,L.font=T,L.textColor=C}else{const E=i.parse(e[m],1,fi);if(!E)return null;const T=E.type.kind;if(T!=="string"&&T!=="value"&&T!=="null"&&T!=="resolvedImage")return i.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");f=!0,u.push({content:E,scale:null,font:null,textColor:null})}}return new so(u)}evaluate(e){return new Nn(this.sections.map(i=>{const r=i.content.evaluate(e);return Li(r)===Eo?new va("",r,null,null,null):new va(Vo(r),null,i.scale?i.scale.evaluate(e):null,i.font?i.font.evaluate(e).join(","):null,i.textColor?i.textColor.evaluate(e):null)}))}eachChild(e){for(const i of this.sections)e(i.content),i.scale&&e(i.scale),i.font&&e(i.font),i.textColor&&e(i.textColor)}outputDefined(){return!1}serialize(){const e=["format"];for(const i of this.sections){e.push(i.content.serialize());const r={};i.scale&&(r["font-scale"]=i.scale.serialize()),i.font&&(r["text-font"]=i.font.serialize()),i.textColor&&(r["text-color"]=i.textColor.serialize()),e.push(r)}return e}}class Gs{constructor(e){this.type=Eo,this.input=e}static parse(e,i){if(e.length!==2)return i.error("Expected two arguments.");const r=i.parse(e[1],1,Qt);return r?new Gs(r):i.error("No image name provided.")}evaluate(e){const i=this.input.evaluate(e),r=wr.fromString(i);return r&&e.availableImages&&(r.available=e.availableImages.indexOf(i)>-1),r}eachChild(e){e(this.input)}outputDefined(){return!1}serialize(){return["image",this.input.serialize()]}}const vc={"to-boolean":ci,"to-color":Cn,"to-number":mt,"to-string":Qt};class wa{constructor(e,i){this.type=e,this.args=i}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");const r=e[0];if((r==="to-boolean"||r==="to-string")&&e.length!==2)return i.error("Expected one argument.");const u=vc[r],f=[];for(let m=1;m<e.length;m++){const y=i.parse(e[m],m,fi);if(!y)return null;f.push(y)}return new wa(u,f)}evaluate(e){if(this.type.kind==="boolean")return!!this.args[0].evaluate(e);if(this.type.kind==="color"){let i,r;for(const u of this.args){if(i=u.evaluate(e),r=null,i instanceof hn)return i;if(typeof i=="string"){const f=e.parseColor(i);if(f)return f}else if(Array.isArray(i)&&(r=i.length<3||i.length>4?`Invalid rbga value ${JSON.stringify(i)}: expected an array containing either three or four numeric values.`:hl(i[0],i[1],i[2],i[3]),!r))return new hn(i[0]/255,i[1]/255,i[2]/255,i[3])}throw new Pn(r||`Could not parse color from value '${typeof i=="string"?i:String(JSON.stringify(i))}'`)}if(this.type.kind==="number"){let i=null;for(const r of this.args){if(i=r.evaluate(e),i===null)return 0;const u=Number(i);if(!isNaN(u))return u}throw new Pn(`Could not convert ${JSON.stringify(i)} to number.`)}return this.type.kind==="formatted"?Nn.fromString(Vo(this.args[0].evaluate(e))):this.type.kind==="resolvedImage"?wr.fromString(Vo(this.args[0].evaluate(e))):Vo(this.args[0].evaluate(e))}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}serialize(){if(this.type.kind==="formatted")return new so([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if(this.type.kind==="resolvedImage")return new Gs(this.args[0]).serialize();const e=[`to-${this.type.kind}`];return this.eachChild(i=>{e.push(i.serialize())}),e}}var rr=wa;const mr=["Unknown","Point","LineString","Polygon"];var fl=class{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null,this.featureTileCoord=null,this.featureDistanceData=null}id(){return this.feature&&this.feature.id!==void 0?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?mr[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}distanceFromCenter(){if(this.featureTileCoord&&this.featureDistanceData){const t=this.featureDistanceData.center,e=this.featureDistanceData.scale,{x:i,y:r}=this.featureTileCoord;return this.featureDistanceData.bearing[0]*(i*e-t[0])+this.featureDistanceData.bearing[1]*(r*e-t[1])}return 0}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=hn.parse(t)),e}};class Ln{constructor(e,i,r,u){this.name=e,this.type=i,this._evaluate=r,this.args=u}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}serialize(){return[this.name].concat(this.args.map(e=>e.serialize()))}static parse(e,i){const r=e[0],u=Ln.definitions[r];if(!u)return i.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0);const f=Array.isArray(u)?u[0]:u.type,m=Array.isArray(u)?[[u[1],u[2]]]:u.overloads,y=m.filter(([T])=>!Array.isArray(T)||T.length===e.length-1);let E=null;for(const[T,C]of y){E=new Hn(i.registry,i.path,null,i.scope);const L=[];let D=!1;for(let B=1;B<e.length;B++){const U=e[B],G=Array.isArray(T)?T[B-1]:T.type,H=E.parse(U,1+L.length,G);if(!H){D=!0;break}L.push(H)}if(!D)if(Array.isArray(T)&&T.length!==L.length)E.error(`Expected ${T.length} arguments, but found ${L.length} instead.`);else{for(let B=0;B<L.length;B++){const U=Array.isArray(T)?T[B]:T.type,G=L[B];E.concat(B+1).checkSubtype(U,G.type)}if(E.errors.length===0)return new Ln(r,f,C,L)}}if(y.length===1)i.errors.push(...E.errors);else{const T=(y.length?y:m).map(([L])=>{return D=L,Array.isArray(D)?`(${D.map(Zi).join(", ")})`:`(${Zi(D.type)}...)`;var D}).join(" | "),C=[];for(let L=1;L<e.length;L++){const D=i.parse(e[L],1+C.length);if(!D)return null;C.push(Zi(D.type))}i.error(`Expected arguments of type ${T}, but found (${C.join(", ")}) instead.`)}return null}static register(e,i){Ln.definitions=i;for(const r in i)e[r]=Ln}}var or=Ln;class $s{constructor(e,i,r){this.type=dr,this.locale=r,this.caseSensitive=e,this.diacriticSensitive=i}static parse(e,i){if(e.length!==2)return i.error("Expected one argument.");const r=e[1];if(typeof r!="object"||Array.isArray(r))return i.error("Collator options argument must be an object.");const u=i.parse(r["case-sensitive"]!==void 0&&r["case-sensitive"],1,ci);if(!u)return null;const f=i.parse(r["diacritic-sensitive"]!==void 0&&r["diacritic-sensitive"],1,ci);if(!f)return null;let m=null;return r.locale&&(m=i.parse(r.locale,1,Qt),!m)?null:new $s(u,f,m)}evaluate(e){return new cl(this.caseSensitive.evaluate(e),this.diacriticSensitive.evaluate(e),this.locale?this.locale.evaluate(e):null)}eachChild(e){e(this.caseSensitive),e(this.diacriticSensitive),this.locale&&e(this.locale)}outputDefined(){return!1}serialize(){const e={};return e["case-sensitive"]=this.caseSensitive.serialize(),e["diacritic-sensitive"]=this.diacriticSensitive.serialize(),this.locale&&(e.locale=this.locale.serialize()),["collator",e]}}const sr=8192;function qs(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1])}function Fr(t,e){return!(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function Zs(t,e){const i=(180+t[0])/360,r=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,u=Math.pow(2,e.z);return[Math.round(i*u*sr),Math.round(r*u*sr)]}function Ur(t,e,i){const r=t[0]-e[0],u=t[1]-e[1],f=t[0]-i[0],m=t[1]-i[1];return r*m-f*u==0&&r*f<=0&&u*m<=0}function Xs(t,e){let i=!1;for(let m=0,y=e.length;m<y;m++){const E=e[m];for(let T=0,C=E.length;T<C-1;T++){if(Ur(t,E[T],E[T+1]))return!1;(u=E[T])[1]>(r=t)[1]!=(f=E[T+1])[1]>r[1]&&r[0]<(f[0]-u[0])*(r[1]-u[1])/(f[1]-u[1])+u[0]&&(i=!i)}}var r,u,f;return i}function pl(t,e){for(let i=0;i<e.length;i++)if(Xs(t,e[i]))return!0;return!1}function dl(t,e,i,r){const u=r[0]-i[0],f=r[1]-i[1],m=(t[0]-i[0])*f-u*(t[1]-i[1]),y=(e[0]-i[0])*f-u*(e[1]-i[1]);return m>0&&y<0||m<0&&y>0}function _s(t,e,i){for(const T of i)for(let C=0;C<T.length-1;++C)if((y=[(m=T[C+1])[0]-(f=T[C])[0],m[1]-f[1]])[0]*(E=[(u=e)[0]-(r=t)[0],u[1]-r[1]])[1]-y[1]*E[0]!=0&&dl(r,u,f,m)&&dl(f,m,r,u))return!0;var r,u,f,m,y,E;return!1}function Si(t,e){for(let i=0;i<t.length;++i)if(!Xs(t[i],e))return!1;for(let i=0;i<t.length-1;++i)if(_s(t[i],t[i+1],e))return!1;return!0}function xc(t,e){for(let i=0;i<e.length;i++)if(Si(t,e[i]))return!0;return!1}function ml(t,e,i){const r=[];for(let u=0;u<t.length;u++){const f=[];for(let m=0;m<t[u].length;m++){const y=Zs(t[u][m],i);qs(e,y),f.push(y)}r.push(f)}return r}function pu(t,e,i){const r=[];for(let u=0;u<t.length;u++){const f=ml(t[u],e,i);r.push(f)}return r}function ao(t,e,i,r){if(t[0]<i[0]||t[0]>i[2]){const u=.5*r;let f=t[0]-i[0]>u?-r:i[0]-t[0]>u?r:0;f===0&&(f=t[0]-i[2]>u?-r:i[2]-t[0]>u?r:0),t[0]+=f}qs(e,t)}function ar(t,e,i,r){const u=Math.pow(2,r.z)*sr,f=[r.x*sr,r.y*sr],m=[];if(!t)return m;for(const y of t)for(const E of y){const T=[E.x+f[0],E.y+f[1]];ao(T,e,i,u),m.push(T)}return m}function gl(t,e,i,r){const u=Math.pow(2,r.z)*sr,f=[r.x*sr,r.y*sr],m=[];if(!t)return m;for(const E of t){const T=[];for(const C of E){const L=[C.x+f[0],C.y+f[1]];qs(e,L),T.push(L)}m.push(T)}if(e[2]-e[0]<=u/2){(y=e)[0]=y[1]=1/0,y[2]=y[3]=-1/0;for(const E of m)for(const T of E)ao(T,e,i,u)}var y;return m}class Go{constructor(e,i){this.type=ci,this.geojson=e,this.geometries=i}static parse(e,i){if(e.length!==2)return i.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Ei(e[1])){const r=e[1];if(r.type==="FeatureCollection")for(let u=0;u<r.features.length;++u){const f=r.features[u].geometry.type;if(f==="Polygon"||f==="MultiPolygon")return new Go(r,r.features[u].geometry)}else if(r.type==="Feature"){const u=r.geometry.type;if(u==="Polygon"||u==="MultiPolygon")return new Go(r,r.geometry)}else if(r.type==="Polygon"||r.type==="MultiPolygon")return new Go(r,r)}return i.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(e.geometry()!=null&&e.canonicalID()!=null){if(e.geometryType()==="Point")return function(i,r){const u=[1/0,1/0,-1/0,-1/0],f=[1/0,1/0,-1/0,-1/0],m=i.canonicalID();if(!m)return!1;if(r.type==="Polygon"){const y=ml(r.coordinates,f,m),E=ar(i.geometry(),u,f,m);if(!Fr(u,f))return!1;for(const T of E)if(!Xs(T,y))return!1}if(r.type==="MultiPolygon"){const y=pu(r.coordinates,f,m),E=ar(i.geometry(),u,f,m);if(!Fr(u,f))return!1;for(const T of E)if(!pl(T,y))return!1}return!0}(e,this.geometries);if(e.geometryType()==="LineString")return function(i,r){const u=[1/0,1/0,-1/0,-1/0],f=[1/0,1/0,-1/0,-1/0],m=i.canonicalID();if(!m)return!1;if(r.type==="Polygon"){const y=ml(r.coordinates,f,m),E=gl(i.geometry(),u,f,m);if(!Fr(u,f))return!1;for(const T of E)if(!Si(T,y))return!1}if(r.type==="MultiPolygon"){const y=pu(r.coordinates,f,m),E=gl(i.geometry(),u,f,m);if(!Fr(u,f))return!1;for(const T of E)if(!xc(T,y))return!1}return!0}(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}serialize(){return["within",this.geojson]}}var Ea=Go;function So(t){if(t instanceof or&&(t.name==="get"&&t.args.length===1||t.name==="feature-state"||t.name==="has"&&t.args.length===1||t.name==="properties"||t.name==="geometry-type"||t.name==="id"||/^filter-/.test(t.name))||t instanceof Ea)return!1;let e=!0;return t.eachChild(i=>{e&&!So(i)&&(e=!1)}),e}function Wr(t){if(t instanceof or&&t.name==="feature-state")return!1;let e=!0;return t.eachChild(i=>{e&&!Wr(i)&&(e=!1)}),e}function lo(t,e){if(t instanceof or&&e.indexOf(t.name)>=0)return!1;let i=!0;return t.eachChild(r=>{i&&!lo(r,e)&&(i=!1)}),i}class Ws{constructor(e,i){this.type=i.type,this.name=e,this.boundExpression=i}static parse(e,i){if(e.length!==2||typeof e[1]!="string")return i.error("'var' expression requires exactly one string literal argument.");const r=e[1];return i.scope.has(r)?new Ws(r,i.scope.get(r)):i.error(`Unknown variable "${r}". Make sure "${r}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(e){return this.boundExpression.evaluate(e)}eachChild(){}outputDefined(){return!1}serialize(){return["var",this.name]}}var Er=Ws;class ys{constructor(e,i=[],r,u=new ul,f=[]){this.registry=e,this.path=i,this.key=i.map(m=>`[${m}]`).join(""),this.scope=u,this.errors=f,this.expectedType=r}parse(e,i,r,u,f={}){return i?this.concat(i,r,u)._parse(e,f):this._parse(e,f)}_parse(e,i){function r(u,f,m){return m==="assert"?new Br(f,[u]):m==="coerce"?new rr(f,[u]):u}if(e!==null&&typeof e!="string"&&typeof e!="boolean"&&typeof e!="number"||(e=["literal",e]),Array.isArray(e)){if(e.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const u=e[0];if(typeof u!="string")return this.error(`Expression name must be a string, but found ${typeof u} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const f=this.registry[u];if(f){let m=f.parse(e,this);if(!m)return null;if(this.expectedType){const y=this.expectedType,E=m.type;if(y.kind!=="string"&&y.kind!=="number"&&y.kind!=="boolean"&&y.kind!=="object"&&y.kind!=="array"||E.kind!=="value")if(y.kind!=="color"&&y.kind!=="formatted"&&y.kind!=="resolvedImage"||E.kind!=="value"&&E.kind!=="string"){if(this.checkSubtype(y,E))return null}else m=r(m,y,i.typeAnnotation||"coerce");else m=r(m,y,i.typeAnnotation||"assert")}if(!(m instanceof Nr)&&m.type.kind!=="resolvedImage"&&$o(m)){const y=new fl;try{m=new Nr(m.type,m.evaluate(y))}catch(E){return this.error(E.message),null}}return m}return this.error(`Unknown expression "${u}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(e===void 0?"'undefined' value invalid. Use null instead.":typeof e=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,i,r){const u=typeof e=="number"?this.path.concat(e):this.path,f=r?this.scope.concat(r):this.scope;return new ys(this.registry,u,i||null,f,this.errors)}error(e,...i){const r=`${this.key}${i.map(u=>`[${u}]`).join("")}`;this.errors.push(new Zr(r,e))}checkSubtype(e,i){const r=Xr(e,i);return r&&this.error(r),r}}var Hn=ys;function $o(t){if(t instanceof Er)return $o(t.boundExpression);if(t instanceof or&&t.name==="error"||t instanceof $s||t instanceof Ea)return!1;const e=t instanceof rr||t instanceof Br;let i=!0;return t.eachChild(r=>{i=e?i&&$o(r):i&&r instanceof Nr}),!!i&&So(t)&&lo(t,["zoom","heatmap-density","line-progress","sky-radial-progress","accumulated","is-supported-script","pitch","distance-from-center"])}function Ta(t,e){const i=t.length-1;let r,u,f=0,m=i,y=0;for(;f<=m;)if(y=Math.floor((f+m)/2),r=t[y],u=t[y+1],r<=e){if(y===i||e<u)return y;f=y+1}else{if(!(r>e))throw new Pn("Input is not a number.");m=y-1}return 0}class Ys{constructor(e,i,r){this.type=e,this.input=i,this.labels=[],this.outputs=[];for(const[u,f]of r)this.labels.push(u),this.outputs.push(f)}static parse(e,i){if(e.length-1<4)return i.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return i.error("Expected an even number of arguments.");const r=i.parse(e[1],1,mt);if(!r)return null;const u=[];let f=null;i.expectedType&&i.expectedType.kind!=="value"&&(f=i.expectedType);for(let m=1;m<e.length;m+=2){const y=m===1?-1/0:e[m],E=e[m+1],T=m,C=m+1;if(typeof y!="number")return i.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',T);if(u.length&&u[u.length-1][0]>=y)return i.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',T);const L=i.parse(E,C,f);if(!L)return null;f=f||L.type,u.push([y,L])}return new Ys(f,r,u)}evaluate(e){const i=this.labels,r=this.outputs;if(i.length===1)return r[0].evaluate(e);const u=this.input.evaluate(e);if(u<=i[0])return r[0].evaluate(e);const f=i.length;return u>=i[f-1]?r[f-1].evaluate(e):r[Ta(i,u)].evaluate(e)}eachChild(e){e(this.input);for(const i of this.outputs)e(i)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}serialize(){const e=["step",this.input.serialize()];for(let i=0;i<this.labels.length;i++)i>0&&e.push(this.labels[i]),e.push(this.outputs[i].serialize());return e}}var Sa=Ys;function bi(t,e,i){return t*(1-i)+e*i}var qo=Object.freeze({__proto__:null,array:function(t,e,i){return t.map((r,u)=>bi(r,e[u],i))},color:function(t,e,i){return new hn(bi(t.r,e.r,i),bi(t.g,e.g,i),bi(t.b,e.b,i),bi(t.a,e.a,i))},number:bi});const du=.95047,_l=1.08883,mu=4/29,Zo=6/29,yl=3*Zo*Zo,bc=Zo*Zo*Zo,wc=Math.PI/180,Ec=180/Math.PI;function Ia(t){return t>bc?Math.pow(t,.3333333333333333):t/yl+mu}function vl(t){return t>Zo?t*t*t:yl*(t-mu)}function ka(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,.4166666666666667)-.055)}function Ma(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function gu(t){const e=Ma(t.r),i=Ma(t.g),r=Ma(t.b),u=Ia((.4124564*e+.3575761*i+.1804375*r)/du),f=Ia((.2126729*e+.7151522*i+.072175*r)/1);return{l:116*f-16,a:500*(u-f),b:200*(f-Ia((.0193339*e+.119192*i+.9503041*r)/_l)),alpha:t.a}}function _u(t){let e=(t.l+16)/116,i=isNaN(t.a)?e:e+t.a/500,r=isNaN(t.b)?e:e-t.b/200;return e=1*vl(e),i=du*vl(i),r=_l*vl(r),new hn(ka(3.2404542*i-1.5371385*e-.4985314*r),ka(-.969266*i+1.8760108*e+.041556*r),ka(.0556434*i-.2040259*e+1.0572252*r),t.alpha)}function Tc(t,e,i){const r=e-t;return t+i*(r>180||r<-180?r-360*Math.round(r/360):r)}const Hs={forward:gu,reverse:_u,interpolate:function(t,e,i){return{l:bi(t.l,e.l,i),a:bi(t.a,e.a,i),b:bi(t.b,e.b,i),alpha:bi(t.alpha,e.alpha,i)}}},vs={forward:function(t){const{l:e,a:i,b:r}=gu(t),u=Math.atan2(r,i)*Ec;return{h:u<0?u+360:u,c:Math.sqrt(i*i+r*r),l:e,alpha:t.a}},reverse:function(t){const e=t.h*wc,i=t.c;return _u({l:t.l,a:Math.cos(e)*i,b:Math.sin(e)*i,alpha:t.alpha})},interpolate:function(t,e,i){return{h:Tc(t.h,e.h,i),c:bi(t.c,e.c,i),l:bi(t.l,e.l,i),alpha:bi(t.alpha,e.alpha,i)}}};var xl=Object.freeze({__proto__:null,hcl:vs,lab:Hs});class xs{constructor(e,i,r,u,f){this.type=e,this.operator=i,this.interpolation=r,this.input=u,this.labels=[],this.outputs=[];for(const[m,y]of f)this.labels.push(m),this.outputs.push(y)}static interpolationFactor(e,i,r,u){let f=0;if(e.name==="exponential")f=Aa(i,e.base,r,u);else if(e.name==="linear")f=Aa(i,1,r,u);else if(e.name==="cubic-bezier"){const m=e.controlPoints;f=new yt(m[0],m[1],m[2],m[3]).solve(Aa(i,1,r,u))}return f}static parse(e,i){let[r,u,f,...m]=e;if(!Array.isArray(u)||u.length===0)return i.error("Expected an interpolation type expression.",1);if(u[0]==="linear")u={name:"linear"};else if(u[0]==="exponential"){const T=u[1];if(typeof T!="number")return i.error("Exponential interpolation requires a numeric base.",1,1);u={name:"exponential",base:T}}else{if(u[0]!=="cubic-bezier")return i.error(`Unknown interpolation type ${String(u[0])}`,1,0);{const T=u.slice(1);if(T.length!==4||T.some(C=>typeof C!="number"||C<0||C>1))return i.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);u={name:"cubic-bezier",controlPoints:T}}}if(e.length-1<4)return i.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return i.error("Expected an even number of arguments.");if(f=i.parse(f,2,mt),!f)return null;const y=[];let E=null;r==="interpolate-hcl"||r==="interpolate-lab"?E=Cn:i.expectedType&&i.expectedType.kind!=="value"&&(E=i.expectedType);for(let T=0;T<m.length;T+=2){const C=m[T],L=m[T+1],D=T+3,B=T+4;if(typeof C!="number")return i.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.',D);if(y.length&&y[y.length-1][0]>=C)return i.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',D);const U=i.parse(L,B,E);if(!U)return null;E=E||U.type,y.push([C,U])}return E.kind==="number"||E.kind==="color"||E.kind==="array"&&E.itemType.kind==="number"&&typeof E.N=="number"?new xs(E,r,u,f,y):i.error(`Type ${Zi(E)} is not interpolatable.`)}evaluate(e){const i=this.labels,r=this.outputs;if(i.length===1)return r[0].evaluate(e);const u=this.input.evaluate(e);if(u<=i[0])return r[0].evaluate(e);const f=i.length;if(u>=i[f-1])return r[f-1].evaluate(e);const m=Ta(i,u),y=xs.interpolationFactor(this.interpolation,u,i[m],i[m+1]),E=r[m].evaluate(e),T=r[m+1].evaluate(e);return this.operator==="interpolate"?qo[this.type.kind.toLowerCase()](E,T,y):this.operator==="interpolate-hcl"?vs.reverse(vs.interpolate(vs.forward(E),vs.forward(T),y)):Hs.reverse(Hs.interpolate(Hs.forward(E),Hs.forward(T),y))}eachChild(e){e(this.input);for(const i of this.outputs)e(i)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}serialize(){let e;e=this.interpolation.name==="linear"?["linear"]:this.interpolation.name==="exponential"?this.interpolation.base===1?["linear"]:["exponential",this.interpolation.base]:["cubic-bezier"].concat(this.interpolation.controlPoints);const i=[this.operator,e,this.input.serialize()];for(let r=0;r<this.labels.length;r++)i.push(this.labels[r],this.outputs[r].serialize());return i}}function Aa(t,e,i,r){const u=r-i,f=t-i;return u===0?0:e===1?f/u:(Math.pow(e,f)-1)/(Math.pow(e,u)-1)}var jr=xs;class Ca{constructor(e,i){this.type=e,this.args=i}static parse(e,i){if(e.length<2)return i.error("Expectected at least one argument.");let r=null;const u=i.expectedType;u&&u.kind!=="value"&&(r=u);const f=[];for(const y of e.slice(1)){const E=i.parse(y,1+f.length,r,void 0,{typeAnnotation:"omit"});if(!E)return null;r=r||E.type,f.push(E)}const m=u&&f.some(y=>Xr(u,y.type));return new Ca(m?fi:r,f)}evaluate(e){let i,r=null,u=0;for(const f of this.args){if(u++,r=f.evaluate(e),r&&r instanceof wr&&!r.available&&(i||(i=r),r=null,u===this.args.length))return i;if(r!==null)break}return r}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}serialize(){const e=["coalesce"];return this.eachChild(i=>{e.push(i.serialize())}),e}}var Pa=Ca;class bs{constructor(e,i){this.type=i.type,this.bindings=[].concat(e),this.result=i}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const i of this.bindings)e(i[1]);e(this.result)}static parse(e,i){if(e.length<4)return i.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const r=[];for(let f=1;f<e.length-1;f+=2){const m=e[f];if(typeof m!="string")return i.error(`Expected string, but found ${typeof m} instead.`,f);if(/[^a-zA-Z0-9_]/.test(m))return i.error("Variable names must contain only alphanumeric characters or '_'.",f);const y=i.parse(e[f+1],f+1);if(!y)return null;r.push([m,y])}const u=i.parse(e[e.length-1],e.length-1,i.expectedType,r);return u?new bs(r,u):null}outputDefined(){return this.result.outputDefined()}serialize(){const e=["let"];for(const[i,r]of this.bindings)e.push(i,r.serialize());return e.push(this.result.serialize()),e}}var yu=bs;class La{constructor(e,i,r){this.type=e,this.index=i,this.input=r}static parse(e,i){if(e.length!==3)return i.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const r=i.parse(e[1],1,mt),u=i.parse(e[2],2,jn(i.expectedType||fi));return r&&u?new La(u.type.itemType,r,u):null}evaluate(e){const i=this.index.evaluate(e),r=this.input.evaluate(e);if(i<0)throw new Pn(`Array index out of bounds: ${i} < 0.`);if(i>=r.length)throw new Pn(`Array index out of bounds: ${i} > ${r.length-1}.`);if(i!==Math.floor(i))throw new Pn(`Array index must be an integer, but found ${i} instead.`);return r[i]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}serialize(){return["at",this.index.serialize(),this.input.serialize()]}}var vu=La;class bl{constructor(e,i){this.type=ci,this.needle=e,this.haystack=i}static parse(e,i){if(e.length!==3)return i.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const r=i.parse(e[1],1,fi),u=i.parse(e[2],2,fi);return r&&u?js(r.type,[ci,Qt,mt,oo,fi])?new bl(r,u):i.error(`Expected first argument to be of type boolean, string, number or null, but found ${Zi(r.type)} instead`):null}evaluate(e){const i=this.needle.evaluate(e),r=this.haystack.evaluate(e);if(r==null)return!1;if(!Uo(i,["boolean","string","number","null"]))throw new Pn(`Expected first argument to be of type boolean, string, number or null, but found ${Zi(Li(i))} instead.`);if(!Uo(r,["string","array"]))throw new Pn(`Expected second argument to be of type array or string, but found ${Zi(Li(r))} instead.`);return r.indexOf(i)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}serialize(){return["in",this.needle.serialize(),this.haystack.serialize()]}}var Ra=bl;class Yr{constructor(e,i,r){this.type=mt,this.needle=e,this.haystack=i,this.fromIndex=r}static parse(e,i){if(e.length<=2||e.length>=5)return i.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const r=i.parse(e[1],1,fi),u=i.parse(e[2],2,fi);if(!r||!u)return null;if(!js(r.type,[ci,Qt,mt,oo,fi]))return i.error(`Expected first argument to be of type boolean, string, number or null, but found ${Zi(r.type)} instead`);if(e.length===4){const f=i.parse(e[3],3,mt);return f?new Yr(r,u,f):null}return new Yr(r,u)}evaluate(e){const i=this.needle.evaluate(e),r=this.haystack.evaluate(e);if(!Uo(i,["boolean","string","number","null"]))throw new Pn(`Expected first argument to be of type boolean, string, number or null, but found ${Zi(Li(i))} instead.`);if(!Uo(r,["string","array"]))throw new Pn(`Expected second argument to be of type array or string, but found ${Zi(Li(r))} instead.`);if(this.fromIndex){const u=this.fromIndex.evaluate(e);return r.indexOf(i,u)}return r.indexOf(i)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}serialize(){if(this.fromIndex!=null&&this.fromIndex!==void 0){const e=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),e]}return["index-of",this.needle.serialize(),this.haystack.serialize()]}}var xu=Yr;class Da{constructor(e,i,r,u,f,m){this.inputType=e,this.type=i,this.input=r,this.cases=u,this.outputs=f,this.otherwise=m}static parse(e,i){if(e.length<5)return i.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return i.error("Expected an even number of arguments.");let r,u;i.expectedType&&i.expectedType.kind!=="value"&&(u=i.expectedType);const f={},m=[];for(let T=2;T<e.length-1;T+=2){let C=e[T];const L=e[T+1];Array.isArray(C)||(C=[C]);const D=i.concat(T);if(C.length===0)return D.error("Expected at least one branch label.");for(const U of C){if(typeof U!="number"&&typeof U!="string")return D.error("Branch labels must be numbers or strings.");if(typeof U=="number"&&Math.abs(U)>Number.MAX_SAFE_INTEGER)return D.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof U=="number"&&Math.floor(U)!==U)return D.error("Numeric branch labels must be integer values.");if(r){if(D.checkSubtype(r,Li(U)))return null}else r=Li(U);if(f[String(U)]!==void 0)return D.error("Branch labels must be unique.");f[String(U)]=m.length}const B=i.parse(L,T,u);if(!B)return null;u=u||B.type,m.push(B)}const y=i.parse(e[1],1,fi);if(!y)return null;const E=i.parse(e[e.length-1],e.length-1,u);return E?y.type.kind!=="value"&&i.concat(1).checkSubtype(r,y.type)?null:new Da(r,u,y,f,m,E):null}evaluate(e){const i=this.input.evaluate(e);return(Li(i)===this.inputType&&this.outputs[this.cases[i]]||this.otherwise).evaluate(e)}eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)}outputDefined(){return this.outputs.every(e=>e.outputDefined())&&this.otherwise.outputDefined()}serialize(){const e=["match",this.input.serialize()],i=Object.keys(this.cases).sort(),r=[],u={};for(const m of i){const y=u[this.cases[m]];y===void 0?(u[this.cases[m]]=r.length,r.push([this.cases[m],[m]])):r[y][1].push(m)}const f=m=>this.inputType.kind==="number"?Number(m):m;for(const[m,y]of r)e.push(y.length===1?f(y[0]):y.map(f)),e.push(this.outputs[m].serialize());return e.push(this.otherwise.serialize()),e}}var Tr=Da;class Sr{constructor(e,i,r){this.type=e,this.branches=i,this.otherwise=r}static parse(e,i){if(e.length<4)return i.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return i.error("Expected an odd number of arguments.");let r;i.expectedType&&i.expectedType.kind!=="value"&&(r=i.expectedType);const u=[];for(let m=1;m<e.length-1;m+=2){const y=i.parse(e[m],m,ci);if(!y)return null;const E=i.parse(e[m+1],m+1,r);if(!E)return null;u.push([y,E]),r=r||E.type}const f=i.parse(e[e.length-1],e.length-1,r);return f?new Sr(r,u,f):null}evaluate(e){for(const[i,r]of this.branches)if(i.evaluate(e))return r.evaluate(e);return this.otherwise.evaluate(e)}eachChild(e){for(const[i,r]of this.branches)e(i),e(r);e(this.otherwise)}outputDefined(){return this.branches.every(([e,i])=>i.outputDefined())&&this.otherwise.outputDefined()}serialize(){const e=["case"];return this.eachChild(i=>{e.push(i.serialize())}),e}}var v=Sr;class o{constructor(e,i,r,u){this.type=e,this.input=i,this.beginIndex=r,this.endIndex=u}static parse(e,i){if(e.length<=2||e.length>=5)return i.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const r=i.parse(e[1],1,fi),u=i.parse(e[2],2,mt);if(!r||!u)return null;if(!js(r.type,[jn(fi),Qt,fi]))return i.error(`Expected first argument to be of type array or string, but found ${Zi(r.type)} instead`);if(e.length===4){const f=i.parse(e[3],3,mt);return f?new o(r.type,r,u,f):null}return new o(r.type,r,u)}evaluate(e){const i=this.input.evaluate(e),r=this.beginIndex.evaluate(e);if(!Uo(i,["string","array"]))throw new Pn(`Expected first argument to be of type array or string, but found ${Zi(Li(i))} instead.`);if(this.endIndex){const u=this.endIndex.evaluate(e);return i.slice(r,u)}return i.slice(r)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}serialize(){if(this.endIndex!=null&&this.endIndex!==void 0){const e=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),e]}return["slice",this.input.serialize(),this.beginIndex.serialize()]}}var l=o;function c(t,e){return t==="=="||t==="!="?e.kind==="boolean"||e.kind==="string"||e.kind==="number"||e.kind==="null"||e.kind==="value":e.kind==="string"||e.kind==="number"||e.kind==="value"}function g(t,e,i,r){return r.compare(e,i)===0}function S(t,e,i){const r=t!=="=="&&t!=="!=";return class S1{constructor(f,m,y){this.type=ci,this.lhs=f,this.rhs=m,this.collator=y,this.hasUntypedArgument=f.type.kind==="value"||m.type.kind==="value"}static parse(f,m){if(f.length!==3&&f.length!==4)return m.error("Expected two or three arguments.");const y=f[0];let E=m.parse(f[1],1,fi);if(!E)return null;if(!c(y,E.type))return m.concat(1).error(`"${y}" comparisons are not supported for type '${Zi(E.type)}'.`);let T=m.parse(f[2],2,fi);if(!T)return null;if(!c(y,T.type))return m.concat(2).error(`"${y}" comparisons are not supported for type '${Zi(T.type)}'.`);if(E.type.kind!==T.type.kind&&E.type.kind!=="value"&&T.type.kind!=="value")return m.error(`Cannot compare types '${Zi(E.type)}' and '${Zi(T.type)}'.`);r&&(E.type.kind==="value"&&T.type.kind!=="value"?E=new Br(T.type,[E]):E.type.kind!=="value"&&T.type.kind==="value"&&(T=new Br(E.type,[T])));let C=null;if(f.length===4){if(E.type.kind!=="string"&&T.type.kind!=="string"&&E.type.kind!=="value"&&T.type.kind!=="value")return m.error("Cannot use collator to compare non-string types.");if(C=m.parse(f[3],3,dr),!C)return null}return new S1(E,T,C)}evaluate(f){const m=this.lhs.evaluate(f),y=this.rhs.evaluate(f);if(r&&this.hasUntypedArgument){const E=Li(m),T=Li(y);if(E.kind!==T.kind||E.kind!=="string"&&E.kind!=="number")throw new Pn(`Expected arguments for "${t}" to be (string, string) or (number, number), but found (${E.kind}, ${T.kind}) instead.`)}if(this.collator&&!r&&this.hasUntypedArgument){const E=Li(m),T=Li(y);if(E.kind!=="string"||T.kind!=="string")return e(f,m,y)}return this.collator?i(f,m,y,this.collator.evaluate(f)):e(f,m,y)}eachChild(f){f(this.lhs),f(this.rhs),this.collator&&f(this.collator)}outputDefined(){return!0}serialize(){const f=[t];return this.eachChild(m=>{f.push(m.serialize())}),f}}}const R=S("==",function(t,e,i){return e===i},g),F=S("!=",function(t,e,i){return e!==i},function(t,e,i,r){return!g(0,e,i,r)}),q=S("<",function(t,e,i){return e<i},function(t,e,i,r){return r.compare(e,i)<0}),Q=S(">",function(t,e,i){return e>i},function(t,e,i,r){return r.compare(e,i)>0}),Ee=S("<=",function(t,e,i){return e<=i},function(t,e,i,r){return r.compare(e,i)<=0}),Me=S(">=",function(t,e,i){return e>=i},function(t,e,i,r){return r.compare(e,i)>=0});class Xe{constructor(e,i,r,u,f,m){this.type=Qt,this.number=e,this.locale=i,this.currency=r,this.unit=u,this.minFractionDigits=f,this.maxFractionDigits=m}static parse(e,i){if(e.length!==3)return i.error("Expected two arguments.");const r=i.parse(e[1],1,mt);if(!r)return null;const u=e[2];if(typeof u!="object"||Array.isArray(u))return i.error("NumberFormat options argument must be an object.");let f=null;if(u.locale&&(f=i.parse(u.locale,1,Qt),!f))return null;let m=null;if(u.currency&&(m=i.parse(u.currency,1,Qt),!m))return null;let y=null;if(u.unit&&(y=i.parse(u.unit,1,Qt),!y))return null;let E=null;if(u["min-fraction-digits"]&&(E=i.parse(u["min-fraction-digits"],1,mt),!E))return null;let T=null;return u["max-fraction-digits"]&&(T=i.parse(u["max-fraction-digits"],1,mt),!T)?null:new Xe(r,f,m,y,E,T)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:(this.currency?"currency":this.unit&&"unit")||"decimal",currency:this.currency?this.currency.evaluate(e):void 0,unit:this.unit?this.unit.evaluate(e):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(e):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(e):void 0}).format(this.number.evaluate(e))}eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&&e(this.currency),this.unit&&e(this.unit),this.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}serialize(){const e={};return this.locale&&(e.locale=this.locale.serialize()),this.currency&&(e.currency=this.currency.serialize()),this.unit&&(e.unit=this.unit.serialize()),this.minFractionDigits&&(e["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(e["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),e]}}class pt{constructor(e){this.type=mt,this.input=e}static parse(e,i){if(e.length!==2)return i.error(`Expected 1 argument, but found ${e.length-1} instead.`);const r=i.parse(e[1],1);return r?r.type.kind!=="array"&&r.type.kind!=="string"&&r.type.kind!=="value"?i.error(`Expected argument of type string or array, but found ${Zi(r.type)} instead.`):new pt(r):null}evaluate(e){const i=this.input.evaluate(e);if(typeof i=="string"||Array.isArray(i))return i.length;throw new Pn(`Expected value to be of type string or array, but found ${Zi(Li(i))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}serialize(){const e=["length"];return this.eachChild(i=>{e.push(i.serialize())}),e}}const dt={"==":R,"!=":F,">":Q,"<":q,">=":Me,"<=":Ee,array:Br,at:vu,boolean:Br,case:v,coalesce:Pa,collator:$s,format:so,image:Gs,in:Ra,"index-of":xu,interpolate:jr,"interpolate-hcl":jr,"interpolate-lab":jr,length:pt,let:yu,literal:Nr,match:Tr,number:Br,"number-format":Xe,object:Br,slice:l,step:Sa,string:Br,"to-boolean":rr,"to-color":rr,"to-number":rr,"to-string":rr,var:Er,within:Ea};function Vt(t,[e,i,r,u]){e=e.evaluate(t),i=i.evaluate(t),r=r.evaluate(t);const f=u?u.evaluate(t):1,m=hl(e,i,r,f);if(m)throw new Pn(m);return new hn(e/255*f,i/255*f,r/255*f,f)}function Ut(t,e){return t in e}function ei(t,e){const i=e[t];return i===void 0?null:i}function yi(t){return{type:t}}or.register(dt,{error:[{kind:"error"},[Qt],(t,[e])=>{throw new Pn(e.evaluate(t))}],typeof:[Qt,[fi],(t,[e])=>Zi(Li(e.evaluate(t)))],"to-rgba":[jn(mt,4),[Cn],(t,[e])=>e.evaluate(t).toArray()],rgb:[Cn,[mt,mt,mt],Vt],rgba:[Cn,[mt,mt,mt,mt],Vt],has:{type:ci,overloads:[[[Qt],(t,[e])=>Ut(e.evaluate(t),t.properties())],[[Qt,zr],(t,[e,i])=>Ut(e.evaluate(t),i.evaluate(t))]]},get:{type:fi,overloads:[[[Qt],(t,[e])=>ei(e.evaluate(t),t.properties())],[[Qt,zr],(t,[e,i])=>ei(e.evaluate(t),i.evaluate(t))]]},"feature-state":[fi,[Qt],(t,[e])=>ei(e.evaluate(t),t.featureState||{})],properties:[zr,[],t=>t.properties()],"geometry-type":[Qt,[],t=>t.geometryType()],id:[fi,[],t=>t.id()],zoom:[mt,[],t=>t.globals.zoom],pitch:[mt,[],t=>t.globals.pitch||0],"distance-from-center":[mt,[],t=>t.distanceFromCenter()],"heatmap-density":[mt,[],t=>t.globals.heatmapDensity||0],"line-progress":[mt,[],t=>t.globals.lineProgress||0],"sky-radial-progress":[mt,[],t=>t.globals.skyRadialProgress||0],accumulated:[fi,[],t=>t.globals.accumulated===void 0?null:t.globals.accumulated],"+":[mt,yi(mt),(t,e)=>{let i=0;for(const r of e)i+=r.evaluate(t);return i}],"*":[mt,yi(mt),(t,e)=>{let i=1;for(const r of e)i*=r.evaluate(t);return i}],"-":{type:mt,overloads:[[[mt,mt],(t,[e,i])=>e.evaluate(t)-i.evaluate(t)],[[mt],(t,[e])=>-e.evaluate(t)]]},"/":[mt,[mt,mt],(t,[e,i])=>e.evaluate(t)/i.evaluate(t)],"%":[mt,[mt,mt],(t,[e,i])=>e.evaluate(t)%i.evaluate(t)],ln2:[mt,[],()=>Math.LN2],pi:[mt,[],()=>Math.PI],e:[mt,[],()=>Math.E],"^":[mt,[mt,mt],(t,[e,i])=>Math.pow(e.evaluate(t),i.evaluate(t))],sqrt:[mt,[mt],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[mt,[mt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[mt,[mt],(t,[e])=>Math.log(e.evaluate(t))],log2:[mt,[mt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[mt,[mt],(t,[e])=>Math.sin(e.evaluate(t))],cos:[mt,[mt],(t,[e])=>Math.cos(e.evaluate(t))],tan:[mt,[mt],(t,[e])=>Math.tan(e.evaluate(t))],asin:[mt,[mt],(t,[e])=>Math.asin(e.evaluate(t))],acos:[mt,[mt],(t,[e])=>Math.acos(e.evaluate(t))],atan:[mt,[mt],(t,[e])=>Math.atan(e.evaluate(t))],min:[mt,yi(mt),(t,e)=>Math.min(...e.map(i=>i.evaluate(t)))],max:[mt,yi(mt),(t,e)=>Math.max(...e.map(i=>i.evaluate(t)))],abs:[mt,[mt],(t,[e])=>Math.abs(e.evaluate(t))],round:[mt,[mt],(t,[e])=>{const i=e.evaluate(t);return i<0?-Math.round(-i):Math.round(i)}],floor:[mt,[mt],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[mt,[mt],(t,[e])=>Math.ceil(e.evaluate(t))],"filter-==":[ci,[Qt,fi],(t,[e,i])=>t.properties()[e.value]===i.value],"filter-id-==":[ci,[fi],(t,[e])=>t.id()===e.value],"filter-type-==":[ci,[Qt],(t,[e])=>t.geometryType()===e.value],"filter-<":[ci,[Qt,fi],(t,[e,i])=>{const r=t.properties()[e.value],u=i.value;return typeof r==typeof u&&r<u}],"filter-id-<":[ci,[fi],(t,[e])=>{const i=t.id(),r=e.value;return typeof i==typeof r&&i<r}],"filter->":[ci,[Qt,fi],(t,[e,i])=>{const r=t.properties()[e.value],u=i.value;return typeof r==typeof u&&r>u}],"filter-id->":[ci,[fi],(t,[e])=>{const i=t.id(),r=e.value;return typeof i==typeof r&&i>r}],"filter-<=":[ci,[Qt,fi],(t,[e,i])=>{const r=t.properties()[e.value],u=i.value;return typeof r==typeof u&&r<=u}],"filter-id-<=":[ci,[fi],(t,[e])=>{const i=t.id(),r=e.value;return typeof i==typeof r&&i<=r}],"filter->=":[ci,[Qt,fi],(t,[e,i])=>{const r=t.properties()[e.value],u=i.value;return typeof r==typeof u&&r>=u}],"filter-id->=":[ci,[fi],(t,[e])=>{const i=t.id(),r=e.value;return typeof i==typeof r&&i>=r}],"filter-has":[ci,[fi],(t,[e])=>e.value in t.properties()],"filter-has-id":[ci,[],t=>t.id()!==null&&t.id()!==void 0],"filter-type-in":[ci,[jn(Qt)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],"filter-id-in":[ci,[jn(fi)],(t,[e])=>e.value.indexOf(t.id())>=0],"filter-in-small":[ci,[Qt,jn(fi)],(t,[e,i])=>i.value.indexOf(t.properties()[e.value])>=0],"filter-in-large":[ci,[Qt,jn(fi)],(t,[e,i])=>function(r,u,f,m){for(;f<=m;){const y=f+m>>1;if(u[y]===r)return!0;u[y]>r?m=y-1:f=y+1}return!1}(t.properties()[e.value],i.value,0,i.value.length-1)],all:{type:ci,overloads:[[[ci,ci],(t,[e,i])=>e.evaluate(t)&&i.evaluate(t)],[yi(ci),(t,e)=>{for(const i of e)if(!i.evaluate(t))return!1;return!0}]]},any:{type:ci,overloads:[[[ci,ci],(t,[e,i])=>e.evaluate(t)||i.evaluate(t)],[yi(ci),(t,e)=>{for(const i of e)if(i.evaluate(t))return!0;return!1}]]},"!":[ci,[ci],(t,[e])=>!e.evaluate(t)],"is-supported-script":[ci,[Qt],(t,[e])=>{const i=t.globals&&t.globals.isSupportedScript;return!i||i(e.evaluate(t))}],upcase:[Qt,[Qt],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[Qt,[Qt],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[Qt,yi(fi),(t,e)=>e.map(i=>Vo(i.evaluate(t))).join("")],"resolved-locale":[Qt,[dr],(t,[e])=>e.evaluate(t).resolvedLocale()]});var Xi=dt;function Fn(t){return{result:"success",value:t}}function bn(t){return{result:"error",value:t}}function Vn(t){return t["property-type"]==="data-driven"}function Ir(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Hr(t){return!!t.expression&&t.expression.interpolated}function vi(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":t===null?"null":typeof t}function uo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Xo(t){return t}function Ks(t,e){const i=e.type==="color",r=t.stops&&typeof t.stops[0][0]=="object",u=r||!(r||t.property!==void 0),f=t.type||(Hr(e)?"exponential":"interval");if(i&&((t=nr({},t)).stops&&(t.stops=t.stops.map(T=>[T[0],hn.parse(T[1])])),t.default=hn.parse(t.default?t.default:e.default)),t.colorSpace&&t.colorSpace!=="rgb"&&!xl[t.colorSpace])throw new Error(`Unknown color space: ${t.colorSpace}`);let m,y,E;if(f==="exponential")m=Yo;else if(f==="interval")m=ws;else if(f==="categorical"){m=Oa,y=Object.create(null);for(const T of t.stops)y[T[0]]=T[1];E=typeof t.stops[0][0]}else{if(f!=="identity")throw new Error(`Unknown function type "${f}"`);m=bf}if(r){const T={},C=[];for(let B=0;B<t.stops.length;B++){const U=t.stops[B],G=U[0].zoom;T[G]===void 0&&(T[G]={zoom:G,type:t.type,property:t.property,default:t.default,stops:[]},C.push(G)),T[G].stops.push([U[0].value,U[1]])}const L=[];for(const B of C)L.push([T[B].zoom,Ks(T[B],e)]);const D={name:"linear"};return{kind:"composite",interpolationType:D,interpolationFactor:jr.interpolationFactor.bind(void 0,D),zoomStops:L.map(B=>B[0]),evaluate:({zoom:B},U)=>Yo({stops:L,base:t.base},e,B).evaluate(B,U)}}if(u){const T=f==="exponential"?{name:"exponential",base:t.base!==void 0?t.base:1}:null;return{kind:"camera",interpolationType:T,interpolationFactor:jr.interpolationFactor.bind(void 0,T),zoomStops:t.stops.map(C=>C[0]),evaluate:({zoom:C})=>m(t,e,C,y,E)}}return{kind:"source",evaluate(T,C){const L=C&&C.properties?C.properties[t.property]:void 0;return L===void 0?Wo(t.default,e.default):m(t,e,L,y,E)}}}function Wo(t,e,i){return t!==void 0?t:e!==void 0?e:i!==void 0?i:void 0}function Oa(t,e,i,r,u){return Wo(typeof i===u?r[i]:void 0,t.default,e.default)}function ws(t,e,i){if(vi(i)!=="number")return Wo(t.default,e.default);const r=t.stops.length;if(r===1||i<=t.stops[0][0])return t.stops[0][1];if(i>=t.stops[r-1][0])return t.stops[r-1][1];const u=Ta(t.stops.map(f=>f[0]),i);return t.stops[u][1]}function Yo(t,e,i){const r=t.base!==void 0?t.base:1;if(vi(i)!=="number")return Wo(t.default,e.default);const u=t.stops.length;if(u===1||i<=t.stops[0][0])return t.stops[0][1];if(i>=t.stops[u-1][0])return t.stops[u-1][1];const f=Ta(t.stops.map(C=>C[0]),i),m=function(C,L,D,B){const U=B-D,G=C-D;return U===0?0:L===1?G/U:(Math.pow(L,G)-1)/(Math.pow(L,U)-1)}(i,r,t.stops[f][0],t.stops[f+1][0]),y=t.stops[f][1],E=t.stops[f+1][1];let T=qo[e.type]||Xo;if(t.colorSpace&&t.colorSpace!=="rgb"){const C=xl[t.colorSpace];T=(L,D)=>C.reverse(C.interpolate(C.forward(L),C.forward(D),m))}return typeof y.evaluate=="function"?{evaluate(...C){const L=y.evaluate.apply(void 0,C),D=E.evaluate.apply(void 0,C);if(L!==void 0&&D!==void 0)return T(L,D,m)}}:T(y,E,m)}function bf(t,e,i){return e.type==="color"?i=hn.parse(i):e.type==="formatted"?i=Nn.fromString(i.toString()):e.type==="resolvedImage"?i=wr.fromString(i.toString()):vi(i)===e.type||e.type==="enum"&&e.values[i]||(i=void 0),Wo(i,t.default,e.default)}class bu{constructor(e,i){this.expression=e,this._warningHistory={},this._evaluator=new fl,this._defaultValue=i?function(r){return r.type==="color"&&(uo(r.default)||Array.isArray(r.default))?new hn(0,0,0,0):r.type==="color"?hn.parse(r.default)||null:r.default===void 0?null:r.default}(i):null,this._enumValues=i&&i.type==="enum"?i.values:null}evaluateWithoutErrorHandling(e,i,r,u,f,m,y,E){return this._evaluator.globals=e,this._evaluator.feature=i,this._evaluator.featureState=r,this._evaluator.canonical=u||null,this._evaluator.availableImages=f||null,this._evaluator.formattedSection=m,this._evaluator.featureTileCoord=y||null,this._evaluator.featureDistanceData=E||null,this.expression.evaluate(this._evaluator)}evaluate(e,i,r,u,f,m,y,E){this._evaluator.globals=e,this._evaluator.feature=i||null,this._evaluator.featureState=r||null,this._evaluator.canonical=u||null,this._evaluator.availableImages=f||null,this._evaluator.formattedSection=m||null,this._evaluator.featureTileCoord=y||null,this._evaluator.featureDistanceData=E||null;try{const T=this.expression.evaluate(this._evaluator);if(T==null||typeof T=="number"&&T!=T)return this._defaultValue;if(this._enumValues&&!(T in this._enumValues))throw new Pn(`Expected value to be one of ${Object.keys(this._enumValues).map(C=>JSON.stringify(C)).join(", ")}, but found ${JSON.stringify(T)} instead.`);return T}catch(T){return this._warningHistory[T.message]||(this._warningHistory[T.message]=!0,typeof console<"u"&&console.warn(T.message)),this._defaultValue}}}function za(t){return Array.isArray(t)&&t.length>0&&typeof t[0]=="string"&&t[0]in Xi}function Na(t,e){const i=new Hn(Xi,[],e?function(u){const f={color:Cn,string:Qt,number:mt,enum:Qt,boolean:ci,formatted:Us,resolvedImage:Eo};return u.type==="array"?jn(f[u.value]||fi,u.length):f[u.type]}(e):void 0),r=i.parse(t,void 0,void 0,void 0,e&&e.type==="string"?{typeAnnotation:"coerce"}:void 0);return r?Fn(new bu(r,e)):bn(i.errors)}class Sc{constructor(e,i){this.kind=e,this._styleExpression=i,this.isStateDependent=e!=="constant"&&!Wr(i.expression)}evaluateWithoutErrorHandling(e,i,r,u,f,m){return this._styleExpression.evaluateWithoutErrorHandling(e,i,r,u,f,m)}evaluate(e,i,r,u,f,m){return this._styleExpression.evaluate(e,i,r,u,f,m)}}class wl{constructor(e,i,r,u){this.kind=e,this.zoomStops=r,this._styleExpression=i,this.isStateDependent=e!=="camera"&&!Wr(i.expression),this.interpolationType=u}evaluateWithoutErrorHandling(e,i,r,u,f,m){return this._styleExpression.evaluateWithoutErrorHandling(e,i,r,u,f,m)}evaluate(e,i,r,u,f,m){return this._styleExpression.evaluate(e,i,r,u,f,m)}interpolationFactor(e,i,r){return this.interpolationType?jr.interpolationFactor(this.interpolationType,e,i,r):0}}function El(t,e){if((t=Na(t,e)).result==="error")return t;const i=t.value.expression,r=So(i);if(!r&&!Vn(e))return bn([new Zr("","data expressions not supported")]);const u=lo(i,["zoom","pitch","distance-from-center"]);if(!u&&!Ir(e))return bn([new Zr("","zoom expressions not supported")]);const f=Eu(i);return f||u?f instanceof Zr?bn([f]):f instanceof jr&&!Hr(e)?bn([new Zr("",'"interpolate" expressions cannot be used with this property')]):Fn(f?new wl(r?"camera":"composite",t.value,f.labels,f instanceof jr?f.interpolation:void 0):new Sc(r?"constant":"source",t.value)):bn([new Zr("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class wu{constructor(e,i){this._parameters=e,this._specification=i,nr(this,Ks(this._parameters,this._specification))}static deserialize(e){return new wu(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function Eu(t){let e=null;if(t instanceof yu)e=Eu(t.result);else if(t instanceof Pa){for(const i of t.args)if(e=Eu(i),e)break}else(t instanceof Sa||t instanceof jr)&&t.input instanceof or&&t.input.name==="zoom"&&(e=t);return e instanceof Zr||t.eachChild(i=>{const r=Eu(i);r instanceof Zr?e=r:!e&&r?e=new Zr("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&r&&e!==r&&(e=new Zr("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),e}class kt{constructor(e,i,r,u){this.message=(e?`${e}: `:"")+r,u&&(this.identifier=u),i!=null&&i.__line__&&(this.line=i.__line__)}}function co(t){const e=t.key,i=t.value,r=t.valueSpec||{},u=t.objectElementValidators||{},f=t.style,m=t.styleSpec;let y=[];const E=vi(i);if(E!=="object")return[new kt(e,i,`object expected, ${E} found`)];for(const T in i){const C=T.split(".")[0];let L;u[C]?L=u[C]:r[C]?L=lr:u["*"]?L=u["*"]:r["*"]&&(L=lr),L?y=y.concat(L({key:(e&&`${e}.`)+T,value:i[T],valueSpec:r[C]||r["*"],style:f,styleSpec:m,object:i,objectKey:T},i)):y.push(new kt(e,i[T],`unknown property "${T}"`))}for(const T in r)u[T]||r[T].required&&r[T].default===void 0&&i[T]===void 0&&y.push(new kt(e,i,`missing required property "${T}"`));return y}function wf(t){const e=t.value,i=t.valueSpec,r=t.style,u=t.styleSpec,f=t.key,m=t.arrayElementValidator||lr;if(vi(e)!=="array")return[new kt(f,e,`array expected, ${vi(e)} found`)];if(i.length&&e.length!==i.length)return[new kt(f,e,`array length ${i.length} expected, length ${e.length} found`)];if(i["min-length"]&&e.length<i["min-length"])return[new kt(f,e,`array length at least ${i["min-length"]} expected, length ${e.length} found`)];let y={type:i.value,values:i.values,minimum:i.minimum,maximum:i.maximum,function:void 0};u.$version<7&&(y.function=i.function),vi(i.value)==="object"&&(y=i.value);let E=[];for(let T=0;T<e.length;T++)E=E.concat(m({array:e,arrayIndex:T,value:e[T],valueSpec:y,style:r,styleSpec:u,key:`${f}[${T}]`}));return E}function Tl(t){const e=t.key,i=t.value,r=t.valueSpec;let u=vi(i);if(u==="number"&&i!=i&&(u="NaN"),u!=="number")return[new kt(e,i,`number expected, ${u} found`)];if("minimum"in r){let f=r.minimum;if(vi(r.minimum)==="array"&&(f=r.minimum[t.arrayIndex]),i<f)return[new kt(e,i,`${i} is less than the minimum value ${f}`)]}if("maximum"in r){let f=r.maximum;if(vi(r.maximum)==="array"&&(f=r.maximum[t.arrayIndex]),i>f)return[new kt(e,i,`${i} is greater than the maximum value ${f}`)]}return[]}function Sl(t){const e=t.valueSpec,i=sn(t.value.type);let r,u,f,m={};const y=i!=="categorical"&&t.value.property===void 0,E=!y,T=vi(t.value.stops)==="array"&&vi(t.value.stops[0])==="array"&&vi(t.value.stops[0][0])==="object",C=co({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(B){if(i==="identity")return[new kt(B.key,B.value,'identity function may not have a "stops" property')];let U=[];const G=B.value;return U=U.concat(wf({key:B.key,value:G,valueSpec:B.valueSpec,style:B.style,styleSpec:B.styleSpec,arrayElementValidator:L})),vi(G)==="array"&&G.length===0&&U.push(new kt(B.key,G,"array must have at least one stop")),U},default:function(B){return lr({key:B.key,value:B.value,valueSpec:e,style:B.style,styleSpec:B.styleSpec})}}});return i==="identity"&&y&&C.push(new kt(t.key,t.value,'missing required property "property"')),i==="identity"||t.value.stops||C.push(new kt(t.key,t.value,'missing required property "stops"')),i==="exponential"&&t.valueSpec.expression&&!Hr(t.valueSpec)&&C.push(new kt(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(E&&!Vn(t.valueSpec)?C.push(new kt(t.key,t.value,"property functions not supported")):y&&!Ir(t.valueSpec)&&C.push(new kt(t.key,t.value,"zoom functions not supported"))),i!=="categorical"&&!T||t.value.property!==void 0||C.push(new kt(t.key,t.value,'"property" property is required')),C;function L(B){let U=[];const G=B.value,H=B.key;if(vi(G)!=="array")return[new kt(H,G,`array expected, ${vi(G)} found`)];if(G.length!==2)return[new kt(H,G,`array length 2 expected, length ${G.length} found`)];if(T){if(vi(G[0])!=="object")return[new kt(H,G,`object expected, ${vi(G[0])} found`)];if(G[0].zoom===void 0)return[new kt(H,G,"object stop key must have zoom")];if(G[0].value===void 0)return[new kt(H,G,"object stop key must have value")];const ne=sn(G[0].zoom);if(typeof ne!="number")return[new kt(H,G[0].zoom,"stop zoom values must be numbers")];if(f&&f>ne)return[new kt(H,G[0].zoom,"stop zoom values must appear in ascending order")];ne!==f&&(f=ne,u=void 0,m={}),U=U.concat(co({key:`${H}[0]`,value:G[0],valueSpec:{zoom:{}},style:B.style,styleSpec:B.styleSpec,objectElementValidators:{zoom:Tl,value:D}}))}else U=U.concat(D({key:`${H}[0]`,value:G[0],valueSpec:{},style:B.style,styleSpec:B.styleSpec},G));return za(An(G[1]))?U.concat([new kt(`${H}[1]`,G[1],"expressions are not allowed in function stops.")]):U.concat(lr({key:`${H}[1]`,value:G[1],valueSpec:e,style:B.style,styleSpec:B.styleSpec}))}function D(B,U){const G=vi(B.value),H=sn(B.value),ne=B.value!==null?B.value:U;if(r){if(G!==r)return[new kt(B.key,ne,`${G} stop domain type must match previous stop domain type ${r}`)]}else r=G;if(G!=="number"&&G!=="string"&&G!=="boolean"&&typeof H!="number"&&typeof H!="string"&&typeof H!="boolean")return[new kt(B.key,ne,"stop domain value must be a number, string, or boolean")];if(G!=="number"&&i!=="categorical"){let de=`number expected, ${G} found`;return Vn(e)&&i===void 0&&(de+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new kt(B.key,ne,de)]}return i!=="categorical"||G!=="number"||typeof H=="number"&&isFinite(H)&&Math.floor(H)===H?i!=="categorical"&&G==="number"&&typeof H=="number"&&typeof u=="number"&&u!==void 0&&H<u?[new kt(B.key,ne,"stop domain values must appear in ascending order")]:(u=H,i==="categorical"&&H in m?[new kt(B.key,ne,"stop domain values must be unique")]:(m[H]=!0,[])):[new kt(B.key,ne,`integer expected, found ${String(H)}`)]}}function Gn(t){const e=(t.expressionContext==="property"?El:Na)(An(t.value),t.valueSpec);if(e.result==="error")return e.value.map(r=>new kt(`${t.key}${r.key}`,t.value,r.message));const i=e.value.expression||e.value._styleExpression.expression;if(t.expressionContext==="property"&&t.propertyKey==="text-font"&&!i.outputDefined())return[new kt(t.key,t.value,`Invalid data expression for "${t.propertyKey}". Output values must be contained as literals within the expression.`)];if(t.expressionContext==="property"&&t.propertyType==="layout"&&!Wr(i))return[new kt(t.key,t.value,'"feature-state" data expressions are not supported with layout properties.')];if(t.expressionContext==="filter")return Il(i,t);if(t.expressionContext&&t.expressionContext.indexOf("cluster")===0){if(!lo(i,["zoom","feature-state"]))return[new kt(t.key,t.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(t.expressionContext==="cluster-initial"&&!So(i))return[new kt(t.key,t.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function Il(t,e){const i=new Set(["zoom","feature-state","pitch","distance-from-center"]);if(e.valueSpec&&e.valueSpec.expression)for(const u of e.valueSpec.expression.parameters)i.delete(u);if(i.size===0)return[];const r=[];return t instanceof or&&i.has(t.name)?[new kt(e.key,e.value,`["${t.name}"] expression is not supported in a filter for a ${e.object.type} layer with id: ${e.object.id}`)]:(t.eachChild(u=>{r.push(...Il(u,e))}),r)}function Tu(t){const e=t.key,i=t.value,r=t.valueSpec,u=[];return Array.isArray(r.values)?r.values.indexOf(sn(i))===-1&&u.push(new kt(e,i,`expected one of [${r.values.join(", ")}], ${JSON.stringify(i)} found`)):Object.keys(r.values).indexOf(sn(i))===-1&&u.push(new kt(e,i,`expected one of [${Object.keys(r.values).join(", ")}], ${JSON.stringify(i)} found`)),u}function Ic(t){if(t===!0||t===!1)return!0;if(!Array.isArray(t)||t.length===0)return!1;switch(t[0]){case"has":return t.length>=2&&t[1]!=="$id"&&t[1]!=="$type";case"in":return t.length>=3&&(typeof t[1]!="string"||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return t.length!==3||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(const e of t.slice(1))if(!Ic(e)&&typeof e!="boolean")return!1;return!0;default:return!0}}function Su(t,e="fill"){if(t==null)return{filter:()=>!0,needGeometry:!1,needFeature:!1};Ic(t)||(t=Fa(t));const i=t;let r=!0;try{r=function(T){if(!Ba(T))return T;let C=An(T);return Iu(C),C=Ef(C),C}(i)}catch{console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.
This is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md
and paste the contents of this message in the report.
Thank you!
Filter Expression:
${JSON.stringify(i,null,2)}
`)}const u=Ge[`filter_${e}`],f=Na(r,u);let m=null;if(f.result==="error")throw new Error(f.value.map(T=>`${T.key}: ${T.message}`).join(", "));m=(T,C,L)=>f.value.evaluate(T,C,{},L);let y=null,E=null;if(r!==i){const T=Na(i,u);if(T.result==="error")throw new Error(T.value.map(C=>`${C.key}: ${C.message}`).join(", "));y=(C,L,D,B,U)=>T.value.evaluate(C,L,{},D,void 0,void 0,B,U),E=!So(T.value.expression)}return{filter:m,dynamicFilter:y||void 0,needGeometry:Tf(r),needFeature:!!E}}function Ef(t){if(!Array.isArray(t))return t;const e=function(i){if(kc.has(i[0])){for(let r=1;r<i.length;r++)if(Ba(i[r]))return!0}return i}(t);return e===!0?e:e.map(i=>Ef(i))}function Iu(t){let e=!1;const i=[];if(t[0]==="case"){for(let r=1;r<t.length-1;r+=2)e=e||Ba(t[r]),i.push(t[r+1]);i.push(t[t.length-1])}else if(t[0]==="match"){e=e||Ba(t[1]);for(let r=2;r<t.length-1;r+=2)i.push(t[r+1]);i.push(t[t.length-1])}else if(t[0]==="step"){e=e||Ba(t[1]);for(let r=1;r<t.length-1;r+=2)i.push(t[r+1])}e&&(t.length=0,t.push("any",...i));for(let r=1;r<t.length;r++)Iu(t[r])}function Ba(t){if(!Array.isArray(t))return!1;if((e=t[0])==="pitch"||e==="distance-from-center")return!0;var e;for(let i=1;i<t.length;i++)if(Ba(t[i]))return!0;return!1}const kc=new Set(["in","==","!=",">",">=","<","<=","to-boolean"]);function Xd(t,e){return t<e?-1:t>e?1:0}function Tf(t){if(!Array.isArray(t))return!1;if(t[0]==="within")return!0;for(let e=1;e<t.length;e++)if(Tf(t[e]))return!0;return!1}function Fa(t){if(!t)return!0;const e=t[0];return t.length<=1?e!=="any":e==="=="?Mc(t[1],t[2],"=="):e==="!="?ku(Mc(t[1],t[2],"==")):e==="<"||e===">"||e==="<="||e===">="?Mc(t[1],t[2],e):e==="any"?(i=t.slice(1),["any"].concat(i.map(Fa))):e==="all"?["all"].concat(t.slice(1).map(Fa)):e==="none"?["all"].concat(t.slice(1).map(Fa).map(ku)):e==="in"?Ac(t[1],t.slice(2)):e==="!in"?ku(Ac(t[1],t.slice(2))):e==="has"?Cc(t[1]):e==="!has"?ku(Cc(t[1])):e!=="within"||t;var i}function Mc(t,e,i){switch(t){case"$type":return[`filter-type-${i}`,e];case"$id":return[`filter-id-${i}`,e];default:return[`filter-${i}`,t,e]}}function Ac(t,e){if(e.length===0)return!1;switch(t){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(i=>typeof i!=typeof e[0])?["filter-in-large",t,["literal",e.sort(Xd)]]:["filter-in-small",t,["literal",e]]}}function Cc(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function ku(t){return["!",t]}function kl(t){return Ic(An(t.value))?Gn(nr({},t,{expressionContext:"filter",valueSpec:t.styleSpec[`filter_${t.layerType||"fill"}`]})):Ml(t)}function Ml(t){const e=t.value,i=t.key;if(vi(e)!=="array")return[new kt(i,e,`array expected, ${vi(e)} found`)];const r=t.styleSpec;let u,f=[];if(e.length<1)return[new kt(i,e,"filter array must have at least 1 element")];switch(f=f.concat(Tu({key:`${i}[0]`,value:e[0],valueSpec:r.filter_operator,style:t.style,styleSpec:t.styleSpec})),sn(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&sn(e[1])==="$type"&&f.push(new kt(i,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":e.length!==3&&f.push(new kt(i,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(u=vi(e[1]),u!=="string"&&f.push(new kt(`${i}[1]`,e[1],`string expected, ${u} found`)));for(let m=2;m<e.length;m++)u=vi(e[m]),sn(e[1])==="$type"?f=f.concat(Tu({key:`${i}[${m}]`,value:e[m],valueSpec:r.geometry_type,style:t.style,styleSpec:t.styleSpec})):u!=="string"&&u!=="number"&&u!=="boolean"&&f.push(new kt(`${i}[${m}]`,e[m],`string, number, or boolean expected, ${u} found`));break;case"any":case"all":case"none":for(let m=1;m<e.length;m++)f=f.concat(Ml({key:`${i}[${m}]`,value:e[m],style:t.style,styleSpec:t.styleSpec}));break;case"has":case"!has":u=vi(e[1]),e.length!==2?f.push(new kt(i,e,`filter array for "${e[0]}" operator must have 2 elements`)):u!=="string"&&f.push(new kt(`${i}[1]`,e[1],`string expected, ${u} found`));break;case"within":u=vi(e[1]),e.length!==2?f.push(new kt(i,e,`filter array for "${e[0]}" operator must have 2 elements`)):u!=="object"&&f.push(new kt(`${i}[1]`,e[1],`object expected, ${u} found`))}return f}function Pc(t,e){const i=t.key,r=t.style,u=t.styleSpec,f=t.value,m=t.objectKey,y=u[`${e}_${t.layerType}`];if(!y)return[];const E=m.match(/^(.*)-transition$/);if(e==="paint"&&E&&y[E[1]]&&y[E[1]].transition)return lr({key:i,value:f,valueSpec:u.transition,style:r,styleSpec:u});const T=t.valueSpec||y[m];if(!T)return[new kt(i,f,`unknown property "${m}"`)];let C;if(vi(f)==="string"&&Vn(T)&&!T.tokens&&(C=/^{([^}]+)}$/.exec(f))){const D=`\`{ "type": "identity", "property": ${C?JSON.stringify(C[1]):'"_"'} }\``;return[new kt(i,f,`"${m}" does not support interpolation syntax
Use an identity property function instead: ${D}.`)]}const L=[];return t.layerType==="symbol"&&(m==="text-field"&&r&&!r.glyphs&&L.push(new kt(i,f,'use of "text-field" requires a style "glyphs" property')),m==="text-font"&&uo(An(f))&&sn(f.type)==="identity"&&L.push(new kt(i,f,'"text-font" does not support identity functions'))),L.concat(lr({key:t.key,value:f,valueSpec:T,style:r,styleSpec:u,expressionContext:"property",propertyType:e,propertyKey:m}))}function Sf(t){return Pc(t,"paint")}function Lc(t){return Pc(t,"layout")}function If(t){let e=[];const i=t.value,r=t.key,u=t.style,f=t.styleSpec;i.type||i.ref||e.push(new kt(r,i,'either "type" or "ref" is required'));let m=sn(i.type);const y=sn(i.ref);if(i.id){const E=sn(i.id);for(let T=0;T<t.arrayIndex;T++){const C=u.layers[T];sn(C.id)===E&&e.push(new kt(r,i.id,`duplicate layer id "${i.id}", previously used at line ${C.id.__line__}`))}}if("ref"in i){let E;["type","source","source-layer","filter","layout"].forEach(T=>{T in i&&e.push(new kt(r,i[T],`"${T}" is prohibited for ref layers`))}),u.layers.forEach(T=>{sn(T.id)===y&&(E=T)}),E?E.ref?e.push(new kt(r,i.ref,"ref cannot reference another ref layer")):m=sn(E.type):typeof y=="string"&&e.push(new kt(r,i.ref,`ref layer "${y}" not found`))}else if(m!=="background"&&m!=="sky")if(i.source){const E=u.sources&&u.sources[i.source],T=E&&sn(E.type);E?T==="vector"&&m==="raster"?e.push(new kt(r,i.source,`layer "${i.id}" requires a raster source`)):T==="raster"&&m!=="raster"?e.push(new kt(r,i.source,`layer "${i.id}" requires a vector source`)):T!=="vector"||i["source-layer"]?T==="raster-dem"&&m!=="hillshade"?e.push(new kt(r,i.source,"raster-dem source can only be used with layer type 'hillshade'.")):m!=="line"||!i.paint||!i.paint["line-gradient"]&&!i.paint["line-trim-offset"]||T==="geojson"&&E.lineMetrics||e.push(new kt(r,i,`layer "${i.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new kt(r,i,`layer "${i.id}" must specify a "source-layer"`)):e.push(new kt(r,i.source,`source "${i.source}" not found`))}else e.push(new kt(r,i,'missing required property "source"'));return e=e.concat(co({key:r,value:i,valueSpec:f.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":()=>[],type:()=>lr({key:`${r}.type`,value:i.type,valueSpec:f.layer.type,style:t.style,styleSpec:t.styleSpec,object:i,objectKey:"type"}),filter:E=>kl(nr({layerType:m},E)),layout:E=>co({layer:i,key:E.key,value:E.value,valueSpec:{},style:E.style,styleSpec:E.styleSpec,objectElementValidators:{"*":T=>Lc(nr({layerType:m},T))}}),paint:E=>co({layer:i,key:E.key,value:E.value,valueSpec:{},style:E.style,styleSpec:E.styleSpec,objectElementValidators:{"*":T=>Sf(nr({layerType:m},T))}})}})),e}function Es(t){const e=t.value,i=t.key,r=vi(e);return r!=="string"?[new kt(i,e,`string expected, ${r} found`)]:[]}const kf={promoteId:function({key:t,value:e}){if(vi(e)==="string")return Es({key:t,value:e});{const i=[];for(const r in e)i.push(...Es({key:`${t}.${r}`,value:e[r]}));return i}}};function Mf(t){const e=t.value,i=t.key,r=t.styleSpec,u=t.style;if(!e.type)return[new kt(i,e,'"type" is required')];const f=sn(e.type);let m;switch(f){case"vector":case"raster":case"raster-dem":return m=co({key:i,value:e,valueSpec:r[`source_${f.replace("-","_")}`],style:t.style,styleSpec:r,objectElementValidators:kf}),m;case"geojson":if(m=co({key:i,value:e,valueSpec:r.source_geojson,style:u,styleSpec:r,objectElementValidators:kf}),e.cluster)for(const y in e.clusterProperties){const[E,T]=e.clusterProperties[y],C=typeof E=="string"?[E,["accumulated"],["get",y]]:E;m.push(...Gn({key:`${i}.${y}.map`,value:T,expressionContext:"cluster-map"})),m.push(...Gn({key:`${i}.${y}.reduce`,value:C,expressionContext:"cluster-reduce"}))}return m;case"video":return co({key:i,value:e,valueSpec:r.source_video,style:u,styleSpec:r});case"image":return co({key:i,value:e,valueSpec:r.source_image,style:u,styleSpec:r});case"canvas":return[new kt(i,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return Tu({key:`${i}.type`,value:e.type,valueSpec:{values:Wd(r)},style:u,styleSpec:r})}}function Wd(t){return t.source.reduce((e,i)=>{const r=t[i];return r.type.type==="enum"&&(e=e.concat(Object.keys(r.type.values))),e},[])}function Af(t){const e=t.value,i=t.styleSpec,r=i.light,u=t.style;let f=[];const m=vi(e);if(e===void 0)return f;if(m!=="object")return f=f.concat([new kt("light",e,`object expected, ${m} found`)]),f;for(const y in e){const E=y.match(/^(.*)-transition$/);f=f.concat(E&&r[E[1]]&&r[E[1]].transition?lr({key:y,value:e[y],valueSpec:i.transition,style:u,styleSpec:i}):r[y]?lr({key:y,value:e[y],valueSpec:r[y],style:u,styleSpec:i}):[new kt(y,e[y],`unknown property "${y}"`)])}return f}function Rc(t){const e=t.value,i=t.key,r=t.style,u=t.styleSpec,f=u.terrain;let m=[];const y=vi(e);if(e===void 0)return m;if(y!=="object")return m=m.concat([new kt("terrain",e,`object expected, ${y} found`)]),m;for(const E in e){const T=E.match(/^(.*)-transition$/);m=m.concat(T&&f[T[1]]&&f[T[1]].transition?lr({key:E,value:e[E],valueSpec:u.transition,style:r,styleSpec:u}):f[E]?lr({key:E,value:e[E],valueSpec:f[E],style:r,styleSpec:u}):[new kt(E,e[E],`unknown property "${E}"`)])}if(e.source){const E=r.sources&&r.sources[e.source],T=E&&sn(E.type);E?T!=="raster-dem"&&m.push(new kt(i,e.source,`terrain cannot be used with a source of type ${String(T)}, it only be used with a "raster-dem" source type`)):m.push(new kt(i,e.source,`source "${e.source}" not found`))}else m.push(new kt(i,e,'terrain is missing required property "source"'));return m}function Cf(t){const e=t.value,i=t.style,r=t.styleSpec,u=r.fog;let f=[];const m=vi(e);if(e===void 0)return f;if(m!=="object")return f=f.concat([new kt("fog",e,`object expected, ${m} found`)]),f;for(const y in e){const E=y.match(/^(.*)-transition$/);f=f.concat(E&&u[E[1]]&&u[E[1]].transition?lr({key:y,value:e[y],valueSpec:r.transition,style:i,styleSpec:r}):u[y]?lr({key:y,value:e[y],valueSpec:u[y],style:i,styleSpec:r}):[new kt(y,e[y],`unknown property "${y}"`)])}return f}const Pf={"*":()=>[],array:wf,boolean:function(t){const e=t.value,i=t.key,r=vi(e);return r!=="boolean"?[new kt(i,e,`boolean expected, ${r} found`)]:[]},number:Tl,color:function(t){const e=t.key,i=t.value,r=vi(i);return r!=="string"?[new kt(e,i,`color expected, ${r} found`)]:Ji(i)===null?[new kt(e,i,`color expected, "${i}" found`)]:[]},enum:Tu,filter:kl,function:Sl,layer:If,object:co,source:Mf,light:Af,terrain:Rc,fog:Cf,string:Es,formatted:function(t){return Es(t).length===0?[]:Gn(t)},resolvedImage:function(t){return Es(t).length===0?[]:Gn(t)},projection:function(t){const e=t.value,i=t.styleSpec,r=i.projection,u=t.style;let f=[];const m=vi(e);if(m==="object")for(const y in e)f=f.concat(lr({key:y,value:e[y],valueSpec:r[y],style:u,styleSpec:i}));else m!=="string"&&(f=f.concat([new kt("projection",e,`object or string expected, ${m} found`)]));return f}};function lr(t){const e=t.value,i=t.valueSpec,r=t.styleSpec;return i.expression&&uo(sn(e))?Sl(t):i.expression&&za(An(e))?Gn(t):i.type&&Pf[i.type]?Pf[i.type](t):co(nr({},t,{valueSpec:i.type?r[i.type]:i}))}function Yd(t){const e=t.value,i=t.key,r=Es(t);return r.length||(e.indexOf("{fontstack}")===-1&&r.push(new kt(i,e,'"glyphs" url must include a "{fontstack}" token')),e.indexOf("{range}")===-1&&r.push(new kt(i,e,'"glyphs" url must include a "{range}" token'))),r}function Lf(t,e=Ge){return Kr(lr({key:"",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:Yd,"*":()=>[]}}))}const Hd=t=>Kr(Sf(t)),Kd=t=>Kr(Lc(t));function Kr(t){return t.slice().sort((e,i)=>e.line&&i.line?e.line-i.line:0)}function Rf(t,e){let i=!1;if(e&&e.length)for(const r of e)t.fire(new xn(new Error(r.message))),i=!0;return i}var Jd=Io,ho=3;function Io(t,e,i){var r=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;var u=new Int32Array(this.arrayBuffer);t=u[0],this.d=(e=u[1])+2*(i=u[2]);for(var f=0;f<this.d*this.d;f++){var m=u[ho+f],y=u[ho+f+1];r.push(m===y?null:u.subarray(m,y))}var E=u[ho+r.length+1];this.keys=u.subarray(u[ho+r.length],E),this.bboxes=u.subarray(E),this.insert=this._insertReadonly}else{this.d=e+2*i;for(var T=0;T<this.d*this.d;T++)r.push([]);this.keys=[],this.bboxes=[]}this.n=e,this.extent=t,this.padding=i,this.scale=e/t,this.uid=0;var C=i/e*t;this.min=-C,this.max=t+C}Io.prototype.insert=function(t,e,i,r,u){this._forEachCell(e,i,r,u,this._insertCell,this.uid++),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(i),this.bboxes.push(r),this.bboxes.push(u)},Io.prototype._insertReadonly=function(){throw"Cannot insert into a GridIndex created from an ArrayBuffer."},Io.prototype._insertCell=function(t,e,i,r,u,f){this.cells[u].push(f)},Io.prototype.query=function(t,e,i,r,u){var f=this.min,m=this.max;if(t<=f&&e<=f&&m<=i&&m<=r&&!u)return Array.prototype.slice.call(this.keys);var y=[];return this._forEachCell(t,e,i,r,this._queryCell,y,{},u),y},Io.prototype._queryCell=function(t,e,i,r,u,f,m,y){var E=this.cells[u];if(E!==null)for(var T=this.keys,C=this.bboxes,L=0;L<E.length;L++){var D=E[L];if(m[D]===void 0){var B=4*D;(y?y(C[B+0],C[B+1],C[B+2],C[B+3]):t<=C[B+2]&&e<=C[B+3]&&i>=C[B+0]&&r>=C[B+1])?(m[D]=!0,f.push(T[D])):m[D]=!1}}},Io.prototype._forEachCell=function(t,e,i,r,u,f,m,y){for(var E=this._convertToCellCoord(t),T=this._convertToCellCoord(e),C=this._convertToCellCoord(i),L=this._convertToCellCoord(r),D=E;D<=C;D++)for(var B=T;B<=L;B++){var U=this.d*B+D;if((!y||y(this._convertFromCellCoord(D),this._convertFromCellCoord(B),this._convertFromCellCoord(D+1),this._convertFromCellCoord(B+1)))&&u.call(this,t,e,i,r,U,f,m,y))return}},Io.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},Io.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},Io.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=ho+this.cells.length+1+1,i=0,r=0;r<this.cells.length;r++)i+=this.cells[r].length;var u=new Int32Array(e+i+this.keys.length+this.bboxes.length);u[0]=this.extent,u[1]=this.n,u[2]=this.padding;for(var f=e,m=0;m<t.length;m++){var y=t[m];u[ho+m]=f,u.set(y,f),f+=y.length}return u[ho+t.length]=f,u.set(this.keys,f),u[ho+t.length+1]=f+=this.keys.length,u.set(this.bboxes,f),f+=this.bboxes.length,u.buffer};var Js=Qe(Jd);const Mu={};function Ct(t,e,i={}){Object.defineProperty(t,"_classRegistryKey",{value:e,writeable:!1}),Mu[e]={klass:t,omit:i.omit||[]}}Ct(Object,"Object"),Js.serialize=function(t,e){const i=t.toArrayBuffer();return e&&e.push(i),{buffer:i}},Js.deserialize=function(t){return new Js(t.buffer)},Object.defineProperty(Js,"name",{value:"Grid"}),Ct(Js,"Grid"),Ct(hn,"Color"),Ct(Error,"Error"),Ct(wo,"AJAXError"),Ct(wr,"ResolvedImage"),Ct(wu,"StylePropertyFunction"),Ct(bu,"StyleExpression",{omit:["_evaluator"]}),Ct(wl,"ZoomDependentExpression"),Ct(Sc,"ZoomConstantExpression"),Ct(or,"CompoundExpression",{omit:["_evaluate"]});for(const t in Xi)Mu[Xi[t]._classRegistryKey]||Ct(Xi[t],`Expression${t}`);function Dc(t){return t&&typeof ArrayBuffer<"u"&&(t instanceof ArrayBuffer||t.constructor&&t.constructor.name==="ArrayBuffer")}function Oc(t){return Z.ImageBitmap&&t instanceof Z.ImageBitmap}function Ua(t,e){if(t==null||typeof t=="boolean"||typeof t=="number"||typeof t=="string"||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp)return t;if(Dc(t)||Oc(t))return e&&e.push(t),t;if(ArrayBuffer.isView(t)){const i=t;return e&&e.push(i.buffer),i}if(t instanceof Z.ImageData)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){const i=[];for(const r of t)i.push(Ua(r,e));return i}if(typeof t=="object"){const i=t.constructor,r=i._classRegistryKey;if(!r)throw new Error(`can't serialize object of unregistered class ${r}`);const u=i.serialize?i.serialize(t,e):{};if(!i.serialize){for(const f in t)t.hasOwnProperty(f)&&(Mu[r].omit.indexOf(f)>=0||(u[f]=Ua(t[f],e)));t instanceof Error&&(u.message=t.message)}if(u.$name)throw new Error("$name property is reserved for worker serialization logic.");return r!=="Object"&&(u.$name=r),u}throw new Error("can't serialize object of type "+typeof t)}function Qs(t){if(t==null||typeof t=="boolean"||typeof t=="number"||typeof t=="string"||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||Dc(t)||Oc(t)||ArrayBuffer.isView(t)||t instanceof Z.ImageData)return t;if(Array.isArray(t))return t.map(Qs);if(typeof t=="object"){const e=t.$name||"Object",{klass:i}=Mu[e];if(!i)throw new Error(`can't deserialize unregistered class ${e}`);if(i.deserialize)return i.deserialize(t);const r=Object.create(i.prototype);for(const u of Object.keys(t))u!=="$name"&&(r[u]=Qs(t[u]));return r}throw new Error("can't deserialize object of type "+typeof t)}const wt={"Latin-1 Supplement":t=>t>=128&&t<=255,Arabic:t=>t>=1536&&t<=1791,"Arabic Supplement":t=>t>=1872&&t<=1919,"Arabic Extended-A":t=>t>=2208&&t<=2303,"Hangul Jamo":t=>t>=4352&&t<=4607,"Unified Canadian Aboriginal Syllabics":t=>t>=5120&&t<=5759,Khmer:t=>t>=6016&&t<=6143,"Unified Canadian Aboriginal Syllabics Extended":t=>t>=6320&&t<=6399,"General Punctuation":t=>t>=8192&&t<=8303,"Letterlike Symbols":t=>t>=8448&&t<=8527,"Number Forms":t=>t>=8528&&t<=8591,"Miscellaneous Technical":t=>t>=8960&&t<=9215,"Control Pictures":t=>t>=9216&&t<=9279,"Optical Character Recognition":t=>t>=9280&&t<=9311,"Enclosed Alphanumerics":t=>t>=9312&&t<=9471,"Geometric Shapes":t=>t>=9632&&t<=9727,"Miscellaneous Symbols":t=>t>=9728&&t<=9983,"Miscellaneous Symbols and Arrows":t=>t>=11008&&t<=11263,"CJK Radicals Supplement":t=>t>=11904&&t<=12031,"Kangxi Radicals":t=>t>=12032&&t<=12255,"Ideographic Description Characters":t=>t>=12272&&t<=12287,"CJK Symbols and Punctuation":t=>t>=12288&&t<=12351,Hiragana:t=>t>=12352&&t<=12447,Katakana:t=>t>=12448&&t<=12543,Bopomofo:t=>t>=12544&&t<=12591,"Hangul Compatibility Jamo":t=>t>=12592&&t<=12687,Kanbun:t=>t>=12688&&t<=12703,"Bopomofo Extended":t=>t>=12704&&t<=12735,"CJK Strokes":t=>t>=12736&&t<=12783,"Katakana Phonetic Extensions":t=>t>=12784&&t<=12799,"Enclosed CJK Letters and Months":t=>t>=12800&&t<=13055,"CJK Compatibility":t=>t>=13056&&t<=13311,"CJK Unified Ideographs Extension A":t=>t>=13312&&t<=19903,"Yijing Hexagram Symbols":t=>t>=19904&&t<=19967,"CJK Unified Ideographs":t=>t>=19968&&t<=40959,"Yi Syllables":t=>t>=40960&&t<=42127,"Yi Radicals":t=>t>=42128&&t<=42191,"Hangul Jamo Extended-A":t=>t>=43360&&t<=43391,"Hangul Syllables":t=>t>=44032&&t<=55215,"Hangul Jamo Extended-B":t=>t>=55216&&t<=55295,"Private Use Area":t=>t>=57344&&t<=63743,"CJK Compatibility Ideographs":t=>t>=63744&&t<=64255,"Arabic Presentation Forms-A":t=>t>=64336&&t<=65023,"Vertical Forms":t=>t>=65040&&t<=65055,"CJK Compatibility Forms":t=>t>=65072&&t<=65103,"Small Form Variants":t=>t>=65104&&t<=65135,"Arabic Presentation Forms-B":t=>t>=65136&&t<=65279,"Halfwidth and Fullwidth Forms":t=>t>=65280&&t<=65519};function zc(t){for(const e of t)if(Nc(e.charCodeAt(0)))return!0;return!1}function Qd(t){for(const e of t)if(!Df(e.charCodeAt(0)))return!1;return!0}function Df(t){return!(wt.Arabic(t)||wt["Arabic Supplement"](t)||wt["Arabic Extended-A"](t)||wt["Arabic Presentation Forms-A"](t)||wt["Arabic Presentation Forms-B"](t))}function Nc(t){return!(t!==746&&t!==747&&(t<4352||!(wt["Bopomofo Extended"](t)||wt.Bopomofo(t)||wt["CJK Compatibility Forms"](t)&&!(t>=65097&&t<=65103)||wt["CJK Compatibility Ideographs"](t)||wt["CJK Compatibility"](t)||wt["CJK Radicals Supplement"](t)||wt["CJK Strokes"](t)||!(!wt["CJK Symbols and Punctuation"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||t===12336)||wt["CJK Unified Ideographs Extension A"](t)||wt["CJK Unified Ideographs"](t)||wt["Enclosed CJK Letters and Months"](t)||wt["Hangul Compatibility Jamo"](t)||wt["Hangul Jamo Extended-A"](t)||wt["Hangul Jamo Extended-B"](t)||wt["Hangul Jamo"](t)||wt["Hangul Syllables"](t)||wt.Hiragana(t)||wt["Ideographic Description Characters"](t)||wt.Kanbun(t)||wt["Kangxi Radicals"](t)||wt["Katakana Phonetic Extensions"](t)||wt.Katakana(t)&&t!==12540||!(!wt["Halfwidth and Fullwidth Forms"](t)||t===65288||t===65289||t===65293||t>=65306&&t<=65310||t===65339||t===65341||t===65343||t>=65371&&t<=65503||t===65507||t>=65512&&t<=65519)||!(!wt["Small Form Variants"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||wt["Unified Canadian Aboriginal Syllabics"](t)||wt["Unified Canadian Aboriginal Syllabics Extended"](t)||wt["Vertical Forms"](t)||wt["Yijing Hexagram Symbols"](t)||wt["Yi Syllables"](t)||wt["Yi Radicals"](t))))}function Of(t){return!(Nc(t)||function(e){return!!(wt["Latin-1 Supplement"](e)&&(e===167||e===169||e===174||e===177||e===188||e===189||e===190||e===215||e===247)||wt["General Punctuation"](e)&&(e===8214||e===8224||e===8225||e===8240||e===8241||e===8251||e===8252||e===8258||e===8263||e===8264||e===8265||e===8273)||wt["Letterlike Symbols"](e)||wt["Number Forms"](e)||wt["Miscellaneous Technical"](e)&&(e>=8960&&e<=8967||e>=8972&&e<=8991||e>=8996&&e<=9e3||e===9003||e>=9085&&e<=9114||e>=9150&&e<=9165||e===9167||e>=9169&&e<=9179||e>=9186&&e<=9215)||wt["Control Pictures"](e)&&e!==9251||wt["Optical Character Recognition"](e)||wt["Enclosed Alphanumerics"](e)||wt["Geometric Shapes"](e)||wt["Miscellaneous Symbols"](e)&&!(e>=9754&&e<=9759)||wt["Miscellaneous Symbols and Arrows"](e)&&(e>=11026&&e<=11055||e>=11088&&e<=11097||e>=11192&&e<=11243)||wt["CJK Symbols and Punctuation"](e)||wt.Katakana(e)||wt["Private Use Area"](e)||wt["CJK Compatibility Forms"](e)||wt["Small Form Variants"](e)||wt["Halfwidth and Fullwidth Forms"](e)||e===8734||e===8756||e===8757||e>=9984&&e<=10087||e>=10102&&e<=10131||e===65532||e===65533)}(t))}function zf(t){return t>=1424&&t<=2303||wt["Arabic Presentation Forms-A"](t)||wt["Arabic Presentation Forms-B"](t)}function em(t,e){return!(!e&&zf(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||wt.Khmer(t))}function tm(t){for(const e of t)if(zf(e.charCodeAt(0)))return!0;return!1}const Bc="deferred",Fc="loading",Uc="loaded";let ja=null,h="unavailable",n=null;const a=function(t){t&&typeof t=="string"&&t.indexOf("NetworkError")>-1&&(h="error"),ja&&ja(t)};function p(){_.fire(new Fo("pluginStateChange",{pluginStatus:h,pluginURL:n}))}const _=new qr,b=function(){return h},I=function(){if(h!==Bc||!n)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");h=Fc,p(),n&&ms({url:n},t=>{t?a(t):(h=Uc,p())})},M={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>h===Uc||M.applyArabicShaping!=null,isLoading:()=>h===Fc,setState(t){h=t.pluginStatus,n=t.pluginURL},isParsed:()=>M.applyArabicShaping!=null&&M.processBidirectionalText!=null&&M.processStyledBidirectionalText!=null,getPluginURL:()=>n};class P{constructor(e,i){this.zoom=e,i?(this.now=i.now,this.fadeDuration=i.fadeDuration,this.transition=i.transition,this.pitch=i.pitch):(this.now=0,this.fadeDuration=0,this.transition={},this.pitch=0)}isSupportedScript(e){return function(i,r){for(const u of i)if(!em(u.charCodeAt(0),r))return!1;return!0}(e,M.isLoaded())}}class N{constructor(e,i){this.property=e,this.value=i,this.expression=function(r,u){if(uo(r))return new wu(r,u);if(za(r)){const f=El(r,u);if(f.result==="error")throw new Error(f.value.map(m=>`${m.key}: ${m.message}`).join(", "));return f.value}{let f=r;return typeof r=="string"&&u.type==="color"&&(f=hn.parse(r)),{kind:"constant",evaluate:()=>f}}}(i===void 0?e.specification.default:i,e.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(e,i,r){return this.property.possiblyEvaluate(this,e,i,r)}}class z{constructor(e){this.property=e,this.value=new N(e,void 0)}transitioned(e,i){return new Y(this.property,this.value,i,Wt({},e.transition,this.transition),e.now)}untransitioned(){return new Y(this.property,this.value,null,{},0)}}class j{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues)}getValue(e){return rn(this._values[e].value.value)}setValue(e,i){this._values.hasOwnProperty(e)||(this._values[e]=new z(this._values[e].property)),this._values[e].value=new N(this._values[e].property,i===null?void 0:rn(i))}getTransition(e){return rn(this._values[e].transition)}setTransition(e,i){this._values.hasOwnProperty(e)||(this._values[e]=new z(this._values[e].property)),this._values[e].transition=rn(i)||void 0}serialize(){const e={};for(const i of Object.keys(this._values)){const r=this.getValue(i);r!==void 0&&(e[i]=r);const u=this.getTransition(i);u!==void 0&&(e[`${i}-transition`]=u)}return e}transitioned(e,i){const r=new J(this._properties);for(const u of Object.keys(this._values))r._values[u]=this._values[u].transitioned(e,i._values[u]);return r}untransitioned(){const e=new J(this._properties);for(const i of Object.keys(this._values))e._values[i]=this._values[i].untransitioned();return e}}class Y{constructor(e,i,r,u,f){const m=u.delay||0,y=u.duration||0;f=f||0,this.property=e,this.value=i,this.begin=f+m,this.end=this.begin+y,e.specification.transition&&(u.delay||u.duration)&&(this.prior=r)}possiblyEvaluate(e,i,r){const u=e.now||0,f=this.value.possiblyEvaluate(e,i,r),m=this.prior;if(m){if(u>this.end)return this.prior=null,f;if(this.value.isDataDriven())return this.prior=null,f;if(u<this.begin)return m.possiblyEvaluate(e,i,r);{const y=(u-this.begin)/(this.end-this.begin);return this.property.interpolate(m.possiblyEvaluate(e,i,r),f,Jt(y))}}return f}}class J{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitioningPropertyValues)}possiblyEvaluate(e,i,r){const u=new ie(this._properties);for(const f of Object.keys(this._values))u._values[f]=this._values[f].possiblyEvaluate(e,i,r);return u}hasTransition(){for(const e of Object.keys(this._values))if(this._values[e].prior)return!0;return!1}}class te{constructor(e){this._properties=e,this._values=Object.create(e.defaultPropertyValues)}getValue(e){return rn(this._values[e].value)}setValue(e,i){this._values[e]=new N(this._values[e].property,i===null?void 0:rn(i))}serialize(){const e={};for(const i of Object.keys(this._values)){const r=this.getValue(i);r!==void 0&&(e[i]=r)}return e}possiblyEvaluate(e,i,r){const u=new ie(this._properties);for(const f of Object.keys(this._values))u._values[f]=this._values[f].possiblyEvaluate(e,i,r);return u}}class ee{constructor(e,i,r){this.property=e,this.value=i,this.parameters=r}isConstant(){return this.value.kind==="constant"}constantOr(e){return this.value.kind==="constant"?this.value.value:e}evaluate(e,i,r,u){return this.property.evaluate(this.value,this.parameters,e,i,r,u)}}class ie{constructor(e){this._properties=e,this._values=Object.create(e.defaultPossiblyEvaluatedValues)}get(e){return this._values[e]}}class V{constructor(e){this.specification=e}possiblyEvaluate(e,i){return e.expression.evaluate(i)}interpolate(e,i,r){const u=qo[this.specification.type];return u?u(e,i,r):e}}class K{constructor(e,i){this.specification=e,this.overrides=i}possiblyEvaluate(e,i,r,u){return new ee(this,e.expression.kind==="constant"||e.expression.kind==="camera"?{kind:"constant",value:e.expression.evaluate(i,null,{},r,u)}:e.expression,i)}interpolate(e,i,r){if(e.value.kind!=="constant"||i.value.kind!=="constant")return e;if(e.value.value===void 0||i.value.value===void 0)return new ee(this,{kind:"constant",value:void 0},e.parameters);const u=qo[this.specification.type];return u?new ee(this,{kind:"constant",value:u(e.value.value,i.value.value,r)},e.parameters):e}evaluate(e,i,r,u,f,m){return e.kind==="constant"?e.value:e.evaluate(i,r,u,f,m)}}class ae{constructor(e){this.specification=e}possiblyEvaluate(e,i,r,u){return!!e.expression.evaluate(i,null,{},r,u)}interpolate(){return!1}}class le{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];const i=new P(0,{});for(const r in e){const u=e[r];u.specification.overridable&&this.overridableProperties.push(r);const f=this.defaultPropertyValues[r]=new N(u,void 0),m=this.defaultTransitionablePropertyValues[r]=new z(u);this.defaultTransitioningPropertyValues[r]=m.untransitioned(),this.defaultPossiblyEvaluatedValues[r]=f.possiblyEvaluate(i)}}}function xe(t,e){return 256*(t=Rt(Math.floor(t),0,255))+Rt(Math.floor(e),0,255)}Ct(K,"DataDrivenProperty"),Ct(V,"DataConstantProperty"),Ct(ae,"ColorRampProperty");const Te={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class be{constructor(e,i){this._structArray=e,this._pos1=i*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Ae{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,i){return e._trim(),i&&(e.isTransferred=!0,i.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){const i=Object.create(this.prototype);return i.arrayBuffer=e.arrayBuffer,i.length=e.length,i.capacity=e.arrayBuffer.byteLength/i.bytesPerElement,i._refreshViews(),i}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(e){this.reserve(e),this.length=e}reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const i=this.uint8;this._refreshViews(),i&&this.uint8.set(i)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}destroy(){this.int8=this.uint8=this.int16=this.uint16=this.int32=this.uint32=this.float32=null,this.arrayBuffer=null}}function ke(t,e=1){let i=0,r=0;return{members:t.map(u=>{const f=Te[u.type].BYTES_PER_ELEMENT,m=i=Ne(i,Math.max(e,f)),y=u.components||1;return r=Math.max(r,f),i+=f*y,{name:u.name,type:u.type,components:y,offset:m}}),size:Ne(i,Math.max(r,e)),alignment:e}}function Ne(t,e){return Math.ceil(t/e)*e}class tt extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,i)}emplace(e,i,r){const u=2*e;return this.int16[u+0]=i,this.int16[u+1]=r,e}}tt.prototype.bytesPerElement=4,Ct(tt,"StructArrayLayout2i4");class Re extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,r){const u=this.length;return this.resize(u+1),this.emplace(u,e,i,r)}emplace(e,i,r,u){const f=3*e;return this.int16[f+0]=i,this.int16[f+1]=r,this.int16[f+2]=u,e}}Re.prototype.bytesPerElement=6,Ct(Re,"StructArrayLayout3i6");class We extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,r,u){const f=this.length;return this.resize(f+1),this.emplace(f,e,i,r,u)}emplace(e,i,r,u,f){const m=4*e;return this.int16[m+0]=i,this.int16[m+1]=r,this.int16[m+2]=u,this.int16[m+3]=f,e}}We.prototype.bytesPerElement=8,Ct(We,"StructArrayLayout4i8");class je extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f,m,y){const E=this.length;return this.resize(E+1),this.emplace(E,e,i,r,u,f,m,y)}emplace(e,i,r,u,f,m,y,E){const T=6*e,C=12*e,L=3*e;return this.int16[T+0]=i,this.int16[T+1]=r,this.uint8[C+4]=u,this.uint8[C+5]=f,this.uint8[C+6]=m,this.uint8[C+7]=y,this.float32[L+2]=E,e}}je.prototype.bytesPerElement=12,Ct(je,"StructArrayLayout2i4ub1f12");class et extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,r,u){const f=this.length;return this.resize(f+1),this.emplace(f,e,i,r,u)}emplace(e,i,r,u,f){const m=4*e;return this.float32[m+0]=i,this.float32[m+1]=r,this.float32[m+2]=u,this.float32[m+3]=f,e}}et.prototype.bytesPerElement=16,Ct(et,"StructArrayLayout4f16");class ze extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f){const m=this.length;return this.resize(m+1),this.emplace(m,e,i,r,u,f)}emplace(e,i,r,u,f,m){const y=6*e,E=3*e;return this.uint16[y+0]=i,this.uint16[y+1]=r,this.uint16[y+2]=u,this.uint16[y+3]=f,this.float32[E+2]=m,e}}ze.prototype.bytesPerElement=12,Ct(ze,"StructArrayLayout4ui1f12");class Ze extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,r,u){const f=this.length;return this.resize(f+1),this.emplace(f,e,i,r,u)}emplace(e,i,r,u,f){const m=4*e;return this.uint16[m+0]=i,this.uint16[m+1]=r,this.uint16[m+2]=u,this.uint16[m+3]=f,e}}Ze.prototype.bytesPerElement=8,Ct(Ze,"StructArrayLayout4ui8");class rt extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f,m){const y=this.length;return this.resize(y+1),this.emplace(y,e,i,r,u,f,m)}emplace(e,i,r,u,f,m,y){const E=6*e;return this.int16[E+0]=i,this.int16[E+1]=r,this.int16[E+2]=u,this.int16[E+3]=f,this.int16[E+4]=m,this.int16[E+5]=y,e}}rt.prototype.bytesPerElement=12,Ct(rt,"StructArrayLayout6i12");class Ke extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f,m,y,E,T,C,L,D){const B=this.length;return this.resize(B+1),this.emplace(B,e,i,r,u,f,m,y,E,T,C,L,D)}emplace(e,i,r,u,f,m,y,E,T,C,L,D,B){const U=12*e;return this.int16[U+0]=i,this.int16[U+1]=r,this.int16[U+2]=u,this.int16[U+3]=f,this.uint16[U+4]=m,this.uint16[U+5]=y,this.uint16[U+6]=E,this.uint16[U+7]=T,this.int16[U+8]=C,this.int16[U+9]=L,this.int16[U+10]=D,this.int16[U+11]=B,e}}Ke.prototype.bytesPerElement=24,Ct(Ke,"StructArrayLayout4i4ui4i24");class st extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f,m){const y=this.length;return this.resize(y+1),this.emplace(y,e,i,r,u,f,m)}emplace(e,i,r,u,f,m,y){const E=10*e,T=5*e;return this.int16[E+0]=i,this.int16[E+1]=r,this.int16[E+2]=u,this.float32[T+2]=f,this.float32[T+3]=m,this.float32[T+4]=y,e}}st.prototype.bytesPerElement=20,Ct(st,"StructArrayLayout3i3f20");class zt extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const i=this.length;return this.resize(i+1),this.emplace(i,e)}emplace(e,i){return this.uint32[1*e+0]=i,e}}zt.prototype.bytesPerElement=4,Ct(zt,"StructArrayLayout1ul4");class Kt extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f,m,y,E,T,C,L,D,B){const U=this.length;return this.resize(U+1),this.emplace(U,e,i,r,u,f,m,y,E,T,C,L,D,B)}emplace(e,i,r,u,f,m,y,E,T,C,L,D,B,U){const G=20*e,H=10*e;return this.int16[G+0]=i,this.int16[G+1]=r,this.int16[G+2]=u,this.int16[G+3]=f,this.int16[G+4]=m,this.float32[H+3]=y,this.float32[H+4]=E,this.float32[H+5]=T,this.float32[H+6]=C,this.int16[G+14]=L,this.uint32[H+8]=D,this.uint16[G+18]=B,this.uint16[G+19]=U,e}}Kt.prototype.bytesPerElement=40,Ct(Kt,"StructArrayLayout5i4f1i1ul2ui40");class Pt extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f,m,y){const E=this.length;return this.resize(E+1),this.emplace(E,e,i,r,u,f,m,y)}emplace(e,i,r,u,f,m,y,E){const T=8*e;return this.int16[T+0]=i,this.int16[T+1]=r,this.int16[T+2]=u,this.int16[T+4]=f,this.int16[T+5]=m,this.int16[T+6]=y,this.int16[T+7]=E,e}}Pt.prototype.bytesPerElement=16,Ct(Pt,"StructArrayLayout3i2i2i16");class jt extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f){const m=this.length;return this.resize(m+1),this.emplace(m,e,i,r,u,f)}emplace(e,i,r,u,f,m){const y=4*e,E=8*e;return this.float32[y+0]=i,this.float32[y+1]=r,this.float32[y+2]=u,this.int16[E+6]=f,this.int16[E+7]=m,e}}jt.prototype.bytesPerElement=16,Ct(jt,"StructArrayLayout2f1f2i16");class mi extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,r,u){const f=this.length;return this.resize(f+1),this.emplace(f,e,i,r,u)}emplace(e,i,r,u,f){const m=12*e,y=3*e;return this.uint8[m+0]=i,this.uint8[m+1]=r,this.float32[y+1]=u,this.float32[y+2]=f,e}}mi.prototype.bytesPerElement=12,Ct(mi,"StructArrayLayout2ub2f12");class di extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,r){const u=this.length;return this.resize(u+1),this.emplace(u,e,i,r)}emplace(e,i,r,u){const f=3*e;return this.float32[f+0]=i,this.float32[f+1]=r,this.float32[f+2]=u,e}}di.prototype.bytesPerElement=12,Ct(di,"StructArrayLayout3f12");class Ot extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,r){const u=this.length;return this.resize(u+1),this.emplace(u,e,i,r)}emplace(e,i,r,u){const f=3*e;return this.uint16[f+0]=i,this.uint16[f+1]=r,this.uint16[f+2]=u,e}}Ot.prototype.bytesPerElement=6,Ct(Ot,"StructArrayLayout3ui6");class Di extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f,m,y,E,T,C,L,D,B,U,G,H,ne,de,re,fe,ve){const ge=this.length;return this.resize(ge+1),this.emplace(ge,e,i,r,u,f,m,y,E,T,C,L,D,B,U,G,H,ne,de,re,fe,ve)}emplace(e,i,r,u,f,m,y,E,T,C,L,D,B,U,G,H,ne,de,re,fe,ve,ge){const Be=30*e,De=15*e,qe=60*e;return this.int16[Be+0]=i,this.int16[Be+1]=r,this.int16[Be+2]=u,this.float32[De+2]=f,this.float32[De+3]=m,this.uint16[Be+8]=y,this.uint16[Be+9]=E,this.uint32[De+5]=T,this.uint32[De+6]=C,this.uint32[De+7]=L,this.uint16[Be+16]=D,this.uint16[Be+17]=B,this.uint16[Be+18]=U,this.float32[De+10]=G,this.float32[De+11]=H,this.uint8[qe+48]=ne,this.uint8[qe+49]=de,this.uint8[qe+50]=re,this.uint32[De+13]=fe,this.int16[Be+28]=ve,this.uint8[qe+58]=ge,e}}Di.prototype.bytesPerElement=60,Ct(Di,"StructArrayLayout3i2f2ui3ul3ui2f3ub1ul1i1ub60");class Bi extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f,m,y,E,T,C,L,D,B,U,G,H,ne,de,re,fe,ve,ge,Be,De,qe,it,Ve,Ye,He,Je){const at=this.length;return this.resize(at+1),this.emplace(at,e,i,r,u,f,m,y,E,T,C,L,D,B,U,G,H,ne,de,re,fe,ve,ge,Be,De,qe,it,Ve,Ye,He,Je)}emplace(e,i,r,u,f,m,y,E,T,C,L,D,B,U,G,H,ne,de,re,fe,ve,ge,Be,De,qe,it,Ve,Ye,He,Je,at){const $e=38*e,vt=19*e;return this.int16[$e+0]=i,this.int16[$e+1]=r,this.int16[$e+2]=u,this.float32[vt+2]=f,this.float32[vt+3]=m,this.int16[$e+8]=y,this.int16[$e+9]=E,this.int16[$e+10]=T,this.int16[$e+11]=C,this.int16[$e+12]=L,this.int16[$e+13]=D,this.uint16[$e+14]=B,this.uint16[$e+15]=U,this.uint16[$e+16]=G,this.uint16[$e+17]=H,this.uint16[$e+18]=ne,this.uint16[$e+19]=de,this.uint16[$e+20]=re,this.uint16[$e+21]=fe,this.uint16[$e+22]=ve,this.uint16[$e+23]=ge,this.uint16[$e+24]=Be,this.uint16[$e+25]=De,this.uint16[$e+26]=qe,this.uint16[$e+27]=it,this.uint16[$e+28]=Ve,this.uint32[vt+15]=Ye,this.float32[vt+16]=He,this.float32[vt+17]=Je,this.float32[vt+18]=at,e}}Bi.prototype.bytesPerElement=76,Ct(Bi,"StructArrayLayout3i2f6i15ui1ul3f76");class Fi extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const i=this.length;return this.resize(i+1),this.emplace(i,e)}emplace(e,i){return this.float32[1*e+0]=i,e}}Fi.prototype.bytesPerElement=4,Ct(Fi,"StructArrayLayout1f4");class Ui extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,r,u,f){const m=this.length;return this.resize(m+1),this.emplace(m,e,i,r,u,f)}emplace(e,i,r,u,f,m){const y=5*e;return this.float32[y+0]=i,this.float32[y+1]=r,this.float32[y+2]=u,this.float32[y+3]=f,this.float32[y+4]=m,e}}Ui.prototype.bytesPerElement=20,Ct(Ui,"StructArrayLayout5f20");class ur extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,r,u){const f=this.length;return this.resize(f+1),this.emplace(f,e,i,r,u)}emplace(e,i,r,u,f){const m=6*e;return this.uint32[3*e+0]=i,this.uint16[m+2]=r,this.uint16[m+3]=u,this.uint16[m+4]=f,e}}ur.prototype.bytesPerElement=12,Ct(ur,"StructArrayLayout1ul3ui12");class $n extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,i)}emplace(e,i,r){const u=2*e;return this.uint16[u+0]=i,this.uint16[u+1]=r,e}}$n.prototype.bytesPerElement=4,Ct($n,"StructArrayLayout2ui4");class Jr extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const i=this.length;return this.resize(i+1),this.emplace(i,e)}emplace(e,i){return this.uint16[1*e+0]=i,e}}Jr.prototype.bytesPerElement=2,Ct(Jr,"StructArrayLayout1ui2");class ko extends Ae{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,i)}emplace(e,i,r){const u=2*e;return this.float32[u+0]=i,this.float32[u+1]=r,e}}ko.prototype.bytesPerElement=8,Ct(ko,"StructArrayLayout2f8");class on extends be{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.int16[this._pos2+3]}get tileAnchorY(){return this._structArray.int16[this._pos2+4]}get x1(){return this._structArray.float32[this._pos4+3]}get y1(){return this._structArray.float32[this._pos4+4]}get x2(){return this._structArray.float32[this._pos4+5]}get y2(){return this._structArray.float32[this._pos4+6]}get padding(){return this._structArray.int16[this._pos2+14]}get featureIndex(){return this._structArray.uint32[this._pos4+8]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+18]}get bucketIndex(){return this._structArray.uint16[this._pos2+19]}}on.prototype.size=40;class ji extends Kt{get(e){return new on(this,e)}}Ct(ji,"CollisionBoxArray");class ki extends be{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+8]}get numGlyphs(){return this._structArray.uint16[this._pos2+9]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+5]}get lineStartIndex(){return this._structArray.uint32[this._pos4+6]}get lineLength(){return this._structArray.uint32[this._pos4+7]}get segment(){return this._structArray.uint16[this._pos2+16]}get lowerSize(){return this._structArray.uint16[this._pos2+17]}get upperSize(){return this._structArray.uint16[this._pos2+18]}get lineOffsetX(){return this._structArray.float32[this._pos4+10]}get lineOffsetY(){return this._structArray.float32[this._pos4+11]}get writingMode(){return this._structArray.uint8[this._pos1+48]}get placedOrientation(){return this._structArray.uint8[this._pos1+49]}set placedOrientation(e){this._structArray.uint8[this._pos1+49]=e}get hidden(){return this._structArray.uint8[this._pos1+50]}set hidden(e){this._structArray.uint8[this._pos1+50]=e}get crossTileID(){return this._structArray.uint32[this._pos4+13]}set crossTileID(e){this._structArray.uint32[this._pos4+13]=e}get associatedIconIndex(){return this._structArray.int16[this._pos2+28]}get flipState(){return this._structArray.uint8[this._pos1+58]}set flipState(e){this._structArray.uint8[this._pos1+58]=e}}ki.prototype.size=60;class wn extends Di{get(e){return new ki(this,e)}}Ct(wn,"PlacedSymbolArray");class gr extends be{get projectedAnchorX(){return this._structArray.int16[this._pos2+0]}get projectedAnchorY(){return this._structArray.int16[this._pos2+1]}get projectedAnchorZ(){return this._structArray.int16[this._pos2+2]}get tileAnchorX(){return this._structArray.float32[this._pos4+2]}get tileAnchorY(){return this._structArray.float32[this._pos4+3]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+8]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+9]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+10]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+11]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+12]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+13]}get key(){return this._structArray.uint16[this._pos2+14]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+17]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+18]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+19]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+20]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+21]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+22]}get featureIndex(){return this._structArray.uint16[this._pos2+23]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+24]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+25]}get numIconVertices(){return this._structArray.uint16[this._pos2+26]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+27]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+28]}get crossTileID(){return this._structArray.uint32[this._pos4+15]}set crossTileID(e){this._structArray.uint32[this._pos4+15]=e}get textOffset0(){return this._structArray.float32[this._pos4+16]}get textOffset1(){return this._structArray.float32[this._pos4+17]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+18]}}gr.prototype.size=76;class nn extends Bi{get(e){return new gr(this,e)}}Ct(nn,"SymbolInstanceArray");class kr extends Fi{getoffsetX(e){return this.float32[1*e+0]}}Ct(kr,"GlyphOffsetArray");class Au extends tt{getx(e){return this.int16[2*e+0]}gety(e){return this.int16[2*e+1]}}Ct(Au,"SymbolLineVertexArray");class ea extends be{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}get layoutVertexArrayOffset(){return this._structArray.uint16[this._pos2+4]}}ea.prototype.size=12;class Al extends ur{get(e){return new ea(this,e)}}Ct(Al,"FeatureIndexArray");class Ho extends $n{geta_centroid_pos0(e){return this.uint16[2*e+0]}geta_centroid_pos1(e){return this.uint16[2*e+1]}}Ct(Ho,"FillExtrusionCentroidArray");const Ts=ke([{name:"a_pattern",components:4,type:"Uint16"},{name:"a_pixel_ratio",components:1,type:"Float32"}]),ta=ke([{name:"a_dash",components:4,type:"Uint16"}]);var Cu={exports:{}},Cl={exports:{}};Cl.exports=function(t,e){var i,r,u,f,m,y,E,T;for(r=t.length-(i=3&t.length),u=e,m=3432918353,y=461845907,T=0;T<r;)E=255&t.charCodeAt(T)|(255&t.charCodeAt(++T))<<8|(255&t.charCodeAt(++T))<<16|(255&t.charCodeAt(++T))<<24,++T,u=27492+(65535&(f=5*(65535&(u=(u^=E=(65535&(E=(E=(65535&E)*m+(((E>>>16)*m&65535)<<16)&4294967295)<<15|E>>>17))*y+(((E>>>16)*y&65535)<<16)&4294967295)<<13|u>>>19))+((5*(u>>>16)&65535)<<16)&4294967295))+((58964+(f>>>16)&65535)<<16);switch(E=0,i){case 3:E^=(255&t.charCodeAt(T+2))<<16;case 2:E^=(255&t.charCodeAt(T+1))<<8;case 1:u^=E=(65535&(E=(E=(65535&(E^=255&t.charCodeAt(T)))*m+(((E>>>16)*m&65535)<<16)&4294967295)<<15|E>>>17))*y+(((E>>>16)*y&65535)<<16)&4294967295}return u^=t.length,u=2246822507*(65535&(u^=u>>>16))+((2246822507*(u>>>16)&65535)<<16)&4294967295,u=3266489909*(65535&(u^=u>>>13))+((3266489909*(u>>>16)&65535)<<16)&4294967295,(u^=u>>>16)>>>0};var jc=Cl.exports,Yv={exports:{}};Yv.exports=function(t,e){for(var i,r=t.length,u=e^r,f=0;r>=4;)i=1540483477*(65535&(i=255&t.charCodeAt(f)|(255&t.charCodeAt(++f))<<8|(255&t.charCodeAt(++f))<<16|(255&t.charCodeAt(++f))<<24))+((1540483477*(i>>>16)&65535)<<16),u=1540483477*(65535&u)+((1540483477*(u>>>16)&65535)<<16)^(i=1540483477*(65535&(i^=i>>>24))+((1540483477*(i>>>16)&65535)<<16)),r-=4,++f;switch(r){case 3:u^=(255&t.charCodeAt(f+2))<<16;case 2:u^=(255&t.charCodeAt(f+1))<<8;case 1:u=1540483477*(65535&(u^=255&t.charCodeAt(f)))+((1540483477*(u>>>16)&65535)<<16)}return u=1540483477*(65535&(u^=u>>>13))+((1540483477*(u>>>16)&65535)<<16),(u^=u>>>15)>>>0};var Hv=jc,pI=Yv.exports;Cu.exports=Hv,Cu.exports.murmur3=Hv,Cu.exports.murmur2=pI;var im=Qe(Cu.exports);class Nf{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,i,r,u){this.ids.push(Kv(e)),this.positions.push(i,r,u)}getPositions(e){const i=Kv(e);let r=0,u=this.ids.length-1;for(;r<u;){const m=r+u>>1;this.ids[m]>=i?u=m:r=m+1}const f=[];for(;this.ids[r]===i;)f.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return f}static serialize(e,i){const r=new Float64Array(e.ids),u=new Uint32Array(e.positions);return nm(r,u,0,r.length-1),i&&i.push(r.buffer,u.buffer),{ids:r,positions:u}}static deserialize(e){const i=new Nf;return i.ids=e.ids,i.positions=e.positions,i.indexed=!0,i}}function Kv(t){const e=+t;return!isNaN(e)&&Number.MIN_SAFE_INTEGER<=e&&e<=Number.MAX_SAFE_INTEGER?e:im(String(t))}function nm(t,e,i,r){for(;i<r;){const u=t[i+r>>1];let f=i-1,m=r+1;for(;;){do f++;while(t[f]<u);do m--;while(t[m]>u);if(f>=m)break;Bf(t,f,m),Bf(e,3*f,3*m),Bf(e,3*f+1,3*m+1),Bf(e,3*f+2,3*m+2)}m-i<r-m?(nm(t,e,i,m),i=m+1):(nm(t,e,m+1,r),r=m)}}function Bf(t,e,i){const r=t[e];t[e]=t[i],t[i]=r}Ct(Nf,"FeaturePositionMap");class ia{constructor(e){this.gl=e.gl,this.initialized=!1}fetchUniformLocation(e,i){return this.location||this.initialized||(this.location=this.gl.getUniformLocation(e,i),this.initialized=!0),!!this.location}}class Ff extends ia{constructor(e){super(e),this.current=0}set(e,i,r){this.fetchUniformLocation(e,i)&&this.current!==r&&(this.current=r,this.gl.uniform1f(this.location,r))}}class Jv extends ia{constructor(e){super(e),this.current=[0,0,0,0]}set(e,i,r){this.fetchUniformLocation(e,i)&&(r[0]===this.current[0]&&r[1]===this.current[1]&&r[2]===this.current[2]&&r[3]===this.current[3]||(this.current=r,this.gl.uniform4f(this.location,r[0],r[1],r[2],r[3])))}}class Qv extends ia{constructor(e){super(e),this.current=hn.transparent}set(e,i,r){this.fetchUniformLocation(e,i)&&(r.r===this.current.r&&r.g===this.current.g&&r.b===this.current.b&&r.a===this.current.a||(this.current=r,this.gl.uniform4f(this.location,r.r,r.g,r.b,r.a)))}}const dI=new Float32Array(16),mI=new Float32Array(9),gI=new Float32Array(4);function rm(t){return[xe(255*t.r,255*t.g),xe(255*t.b,255*t.a)]}class Vc{constructor(e,i,r){this.value=e,this.uniformNames=i.map(u=>`u_${u}`),this.type=r}setUniform(e,i,r,u,f){i.set(e,f,u.constantOr(this.value))}getBinding(e,i){return this.type==="color"?new Qv(e):new Ff(e)}}class Pu{constructor(e,i){this.uniformNames=i.map(r=>`u_${r}`),this.pattern=null,this.pixelRatio=1}setConstantPatternPositions(e){this.pixelRatio=e.pixelRatio||1,this.pattern=e.tl.concat(e.br)}setUniform(e,i,r,u,f){const m=f==="u_pattern"||f==="u_dash"?this.pattern:f==="u_pixel_ratio"?this.pixelRatio:null;m&&i.set(e,f,m)}getBinding(e,i){return i==="u_pattern"||i==="u_dash"?new Jv(e):new Ff(e)}}class na{constructor(e,i,r,u){this.expression=e,this.type=r,this.maxValue=0,this.paintVertexAttributes=i.map(f=>({name:`a_${f}`,type:"Float32",components:r==="color"?2:1,offset:0})),this.paintVertexArray=new u}populatePaintArray(e,i,r,u,f,m){const y=this.paintVertexArray.length,E=this.expression.evaluate(new P(0),i,{},f,u,m);this.paintVertexArray.resize(e),this._setPaintValue(y,e,E)}updatePaintArray(e,i,r,u,f){const m=this.expression.evaluate({zoom:0},r,u,void 0,f);this._setPaintValue(e,i,m)}_setPaintValue(e,i,r){if(this.type==="color"){const u=rm(r);for(let f=e;f<i;f++)this.paintVertexArray.emplace(f,u[0],u[1])}else{for(let u=e;u<i;u++)this.paintVertexArray.emplace(u,r);this.maxValue=Math.max(this.maxValue,Math.abs(r))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}}class Ko{constructor(e,i,r,u,f,m){this.expression=e,this.uniformNames=i.map(y=>`u_${y}_t`),this.type=r,this.useIntegerZoom=u,this.zoom=f,this.maxValue=0,this.paintVertexAttributes=i.map(y=>({name:`a_${y}`,type:"Float32",components:r==="color"?4:2,offset:0})),this.paintVertexArray=new m}populatePaintArray(e,i,r,u,f,m){const y=this.expression.evaluate(new P(this.zoom),i,{},f,u,m),E=this.expression.evaluate(new P(this.zoom+1),i,{},f,u,m),T=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(T,e,y,E)}updatePaintArray(e,i,r,u,f){const m=this.expression.evaluate({zoom:this.zoom},r,u,void 0,f),y=this.expression.evaluate({zoom:this.zoom+1},r,u,void 0,f);this._setPaintValue(e,i,m,y)}_setPaintValue(e,i,r,u){if(this.type==="color"){const f=rm(r),m=rm(u);for(let y=e;y<i;y++)this.paintVertexArray.emplace(y,f[0],f[1],m[0],m[1])}else{for(let f=e;f<i;f++)this.paintVertexArray.emplace(f,r,u);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(u))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}setUniform(e,i,r,u,f){const m=this.useIntegerZoom?Math.floor(r.zoom):r.zoom,y=Rt(this.expression.interpolationFactor(m,this.zoom,this.zoom+1),0,1);i.set(e,f,y)}getBinding(e,i){return new Ff(e)}}class Va{constructor(e,i,r,u,f){this.expression=e,this.layerId=f,this.paintVertexAttributes=(r==="array"?ta:Ts).members;for(let m=0;m<i.length;++m);this.paintVertexArray=new u}populatePaintArray(e,i,r){const u=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValues(u,e,i.patterns&&i.patterns[this.layerId],r)}updatePaintArray(e,i,r,u,f,m){this._setPaintValues(e,i,r.patterns&&r.patterns[this.layerId],m)}_setPaintValues(e,i,r,u){if(!u||!r)return;const f=u[r];if(!f)return;const{tl:m,br:y,pixelRatio:E}=f;for(let T=e;T<i;T++)this.paintVertexArray.emplace(T,m[0],m[1],y[0],y[1],E)}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}}class Ga{constructor(e,i,r=()=>!0){this.binders={},this._buffers=[];const u=[];for(const f in e.paint._values){if(!r(f))continue;const m=e.paint.get(f);if(!(m instanceof ee&&Vn(m.property.specification)))continue;const y=yI(f,e.type),E=m.value,T=m.property.specification.type,C=!!m.property.useIntegerZoom,L=f==="line-dasharray"||f.endsWith("pattern"),D=f==="line-dasharray"&&e.layout.get("line-cap").value.kind!=="constant";if(E.kind!=="constant"||D)if(E.kind==="source"||D||L){const B=e0(f,T,"source");this.binders[f]=L?new Va(E,y,T,B,e.id):new na(E,y,T,B),u.push(`/a_${f}`)}else{const B=e0(f,T,"composite");this.binders[f]=new Ko(E,y,T,C,i,B),u.push(`/z_${f}`)}else this.binders[f]=L?new Pu(E.value,y):new Vc(E.value,y,T),u.push(`/u_${f}`)}this.cacheKey=u.sort().join("")}getMaxValue(e){const i=this.binders[e];return i instanceof na||i instanceof Ko?i.maxValue:0}populatePaintArrays(e,i,r,u,f,m){for(const y in this.binders){const E=this.binders[y];(E instanceof na||E instanceof Ko||E instanceof Va)&&E.populatePaintArray(e,i,r,u,f,m)}}setConstantPatternPositions(e){for(const i in this.binders){const r=this.binders[i];r instanceof Pu&&r.setConstantPatternPositions(e)}}updatePaintArrays(e,i,r,u,f,m){let y=!1;for(const E in e){const T=i.getPositions(E);for(const C of T){const L=r.feature(C.index);for(const D in this.binders){const B=this.binders[D];if((B instanceof na||B instanceof Ko||B instanceof Va)&&B.expression.isStateDependent===!0){const U=u.paint.get(D);B.expression=U.value,B.updatePaintArray(C.start,C.end,L,e[E],f,m),y=!0}}}}return y}defines(){const e=[];for(const i in this.binders){const r=this.binders[i];(r instanceof Vc||r instanceof Pu)&&e.push(...r.uniformNames.map(u=>`#define HAS_UNIFORM_${u}`))}return e}getBinderAttributes(){const e=[];for(const i in this.binders){const r=this.binders[i];if(r instanceof na||r instanceof Ko||r instanceof Va)for(let u=0;u<r.paintVertexAttributes.length;u++)e.push(r.paintVertexAttributes[u].name)}return e}getBinderUniforms(){const e=[];for(const i in this.binders){const r=this.binders[i];if(r instanceof Vc||r instanceof Pu||r instanceof Ko)for(const u of r.uniformNames)e.push(u)}return e}getPaintVertexBuffers(){return this._buffers}getUniforms(e){const i=[];for(const r in this.binders){const u=this.binders[r];if(u instanceof Vc||u instanceof Pu||u instanceof Ko)for(const f of u.uniformNames)i.push({name:f,property:r,binding:u.getBinding(e,f)})}return i}setUniforms(e,i,r,u,f){for(const{name:m,property:y,binding:E}of r)this.binders[y].setUniform(e,E,f,u.get(y),m)}updatePaintBuffers(){this._buffers=[];for(const e in this.binders){const i=this.binders[e];(i instanceof na||i instanceof Ko||i instanceof Va)&&i.paintVertexBuffer&&this._buffers.push(i.paintVertexBuffer)}}upload(e){for(const i in this.binders){const r=this.binders[i];(r instanceof na||r instanceof Ko||r instanceof Va)&&r.upload(e)}this.updatePaintBuffers()}destroy(){for(const e in this.binders){const i=this.binders[e];(i instanceof na||i instanceof Ko||i instanceof Va)&&i.destroy()}}}class Pl{constructor(e,i,r=()=>!0){this.programConfigurations={};for(const u of e)this.programConfigurations[u.id]=new Ga(u,i,r);this.needsUpload=!1,this._featureMap=new Nf,this._bufferOffset=0}populatePaintArrays(e,i,r,u,f,m,y){for(const E in this.programConfigurations)this.programConfigurations[E].populatePaintArrays(e,i,u,f,m,y);i.id!==void 0&&this._featureMap.add(i.id,r,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,i,r,u,f){for(const m of r)this.needsUpload=this.programConfigurations[m.id].updatePaintArrays(e,this._featureMap,i,m,u,f)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const i in this.programConfigurations)this.programConfigurations[i].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}const _I={"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern","pixel_ratio"],"fill-pattern":["pattern","pixel_ratio"],"fill-extrusion-pattern":["pattern","pixel_ratio"],"line-dasharray":["dash"]};function yI(t,e){return _I[t]||[t.replace(`${e}-`,"").replace(/-/g,"_")]}const vI={"line-pattern":{source:ze,composite:ze},"fill-pattern":{source:ze,composite:ze},"fill-extrusion-pattern":{source:ze,composite:ze},"line-dasharray":{source:Ze,composite:Ze}},xI={color:{source:ko,composite:et},number:{source:Fi,composite:ko}};function e0(t,e,i){const r=vI[t];return r&&r[i]||xI[e][i]}Ct(Vc,"ConstantBinder"),Ct(Pu,"PatternConstantBinder"),Ct(na,"SourceExpressionBinder"),Ct(Va,"PatternCompositeBinder"),Ct(Ko,"CompositeExpressionBinder"),Ct(Ga,"ProgramConfiguration",{omit:["_buffers"]}),Ct(Pl,"ProgramConfigurationSet");const t0="-transition";class Jo extends qr{constructor(e,i){if(super(),this.id=e.id,this.type=e.type,this._featureFilter={filter:()=>!0,needGeometry:!1,needFeature:!1},this._filterCompiled=!1,e.type!=="custom"&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,e.type!=="background"&&e.type!=="sky"&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),i.layout&&(this._unevaluatedLayout=new te(i.layout)),i.paint)){this._transitionablePaint=new j(i.paint);for(const r in e.paint)this.setPaintProperty(r,e.paint[r],{validate:!1});for(const r in e.layout)this.setLayoutProperty(r,e.layout[r],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new ie(i.paint)}}getLayoutProperty(e){return e==="visibility"?this.visibility:this._unevaluatedLayout.getValue(e)}setLayoutProperty(e,i,r={}){i!=null&&this._validate(Kd,`layers.${this.id}.layout.${e}`,e,i,r)||(e!=="visibility"?this._unevaluatedLayout.setValue(e,i):this.visibility=i)}getPaintProperty(e){return Ci(e,t0)?this._transitionablePaint.getTransition(e.slice(0,-11)):this._transitionablePaint.getValue(e)}setPaintProperty(e,i,r={}){if(i!=null&&this._validate(Hd,`layers.${this.id}.paint.${e}`,e,i,r))return!1;if(Ci(e,t0))return this._transitionablePaint.setTransition(e.slice(0,-11),i||void 0),!1;{const u=this._transitionablePaint._values[e],f=u.value.isDataDriven(),m=u.value;this._transitionablePaint.setValue(e,i),this._handleSpecialPaintPropertyUpdate(e);const y=this._transitionablePaint._values[e].value,E=y.isDataDriven(),T=Ci(e,"pattern")||e==="line-dasharray";return E||f||T||this._handleOverridablePaintPropertyUpdate(e,m,y)}}_handleSpecialPaintPropertyUpdate(e){}getProgramIds(){return null}getProgramConfiguration(e){return null}_handleOverridablePaintPropertyUpdate(e,i,r){return!1}isHidden(e){return!!(this.minzoom&&e<this.minzoom)||!!(this.maxzoom&&e>=this.maxzoom)||this.visibility==="none"}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(e,i){this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,i)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,i)}serialize(){const e={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(e.layout=e.layout||{},e.layout.visibility=this.visibility),me(e,(i,r)=>!(i===void 0||r==="layout"&&!Object.keys(i).length||r==="paint"&&!Object.keys(i).length))}_validate(e,i,r,u,f={}){return(!f||f.validate!==!1)&&Rf(this,e.call(Lf,{key:i,layerType:this.type,objectKey:r,value:u,styleSpec:Ge,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isSky(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const e in this.paint._values){const i=this.paint.get(e);if(i instanceof ee&&Vn(i.property.specification)&&(i.value.kind==="source"||i.value.kind==="composite")&&i.value.isStateDependent)return!0}return!1}compileFilter(){this._filterCompiled||(this._featureFilter=Su(this.filter),this._filterCompiled=!0)}invalidateCompiledFilter(){this._filterCompiled=!1}dynamicFilter(){return this._featureFilter.dynamicFilter}dynamicFilterNeedsFeature(){return this._featureFilter.needFeature}}const bI=ke([{name:"a_pos",components:2,type:"Int16"}],4),wI=ke([{name:"a_pos_3",components:3,type:"Int16"},{name:"a_pos_normal_3",components:3,type:"Int16"}]);class En{constructor(e=[]){this.segments=e}prepareSegment(e,i,r,u){let f=this.segments[this.segments.length-1];return e>En.MAX_VERTEX_ARRAY_LENGTH&&Ti(`Max vertices per segment is ${En.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}`),(!f||f.vertexLength+e>En.MAX_VERTEX_ARRAY_LENGTH||f.sortKey!==u)&&(f={vertexOffset:i.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},u!==void 0&&(f.sortKey=u),this.segments.push(f)),f}get(){return this.segments}destroy(){for(const e of this.segments)for(const i in e.vaos)e.vaos[i].destroy()}static simpleSegment(e,i,r,u){return new En([{vertexOffset:e,primitiveOffset:i,vertexLength:r,primitiveLength:u,vaos:{},sortKey:0}])}}En.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Ct(En,"SegmentVector");var Ft=8192;class $a{constructor(e,i){e&&(i?this.setSouthWest(e).setNorthEast(i):e.length===4?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1]))}setNorthEast(e){return this._ne=e instanceof Vi?new Vi(e.lng,e.lat):Vi.convert(e),this}setSouthWest(e){return this._sw=e instanceof Vi?new Vi(e.lng,e.lat):Vi.convert(e),this}extend(e){const i=this._sw,r=this._ne;let u,f;if(e instanceof Vi)u=e,f=e;else{if(!(e instanceof $a))return Array.isArray(e)?e.length===4||e.every(Array.isArray)?this.extend($a.convert(e)):this.extend(Vi.convert(e)):typeof e=="object"&&e!==null&&e.hasOwnProperty("lat")&&(e.hasOwnProperty("lon")||e.hasOwnProperty("lng"))?this.extend(Vi.convert(e)):this;if(u=e._sw,f=e._ne,!u||!f)return this}return i||r?(i.lng=Math.min(u.lng,i.lng),i.lat=Math.min(u.lat,i.lat),r.lng=Math.max(f.lng,r.lng),r.lat=Math.max(f.lat,r.lat)):(this._sw=new Vi(u.lng,u.lat),this._ne=new Vi(f.lng,f.lat)),this}getCenter(){return new Vi((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new Vi(this.getWest(),this.getNorth())}getSouthEast(){return new Vi(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(e){const{lng:i,lat:r}=Vi.convert(e);let u=this._sw.lng<=i&&i<=this._ne.lng;return this._sw.lng>this._ne.lng&&(u=this._sw.lng>=i&&i>=this._ne.lng),this._sw.lat<=r&&r<=this._ne.lat&&u}static convert(e){return!e||e instanceof $a?e:new $a(e)}}var Uf=1e-6,Qr=typeof Float32Array<"u"?Float32Array:Array;function i0(){var t=new Qr(9);return Qr!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function n0(t,e,i){var r=e[0],u=e[1],f=e[2],m=e[3],y=e[4],E=e[5],T=e[6],C=e[7],L=e[8],D=i[0],B=i[1],U=i[2],G=i[3],H=i[4],ne=i[5],de=i[6],re=i[7],fe=i[8];return t[0]=D*r+B*m+U*T,t[1]=D*u+B*y+U*C,t[2]=D*f+B*E+U*L,t[3]=G*r+H*m+ne*T,t[4]=G*u+H*y+ne*C,t[5]=G*f+H*E+ne*L,t[6]=de*r+re*m+fe*T,t[7]=de*u+re*y+fe*C,t[8]=de*f+re*E+fe*L,t}function Qo(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function om(t,e){var i=e[0],r=e[1],u=e[2],f=e[3],m=e[4],y=e[5],E=e[6],T=e[7],C=e[8],L=e[9],D=e[10],B=e[11],U=e[12],G=e[13],H=e[14],ne=e[15],de=i*y-r*m,re=i*E-u*m,fe=i*T-f*m,ve=r*E-u*y,ge=r*T-f*y,Be=u*T-f*E,De=C*G-L*U,qe=C*H-D*U,it=C*ne-B*U,Ve=L*H-D*G,Ye=L*ne-B*G,He=D*ne-B*H,Je=de*He-re*Ye+fe*Ve+ve*it-ge*qe+Be*De;return Je?(t[0]=(y*He-E*Ye+T*Ve)*(Je=1/Je),t[1]=(u*Ye-r*He-f*Ve)*Je,t[2]=(G*Be-H*ge+ne*ve)*Je,t[3]=(D*ge-L*Be-B*ve)*Je,t[4]=(E*it-m*He-T*qe)*Je,t[5]=(i*He-u*it+f*qe)*Je,t[6]=(H*fe-U*Be-ne*re)*Je,t[7]=(C*Be-D*fe+B*re)*Je,t[8]=(m*Ye-y*it+T*De)*Je,t[9]=(r*it-i*Ye-f*De)*Je,t[10]=(U*ge-G*fe+ne*de)*Je,t[11]=(L*fe-C*ge-B*de)*Je,t[12]=(y*qe-m*Ve-E*De)*Je,t[13]=(i*Ve-r*qe+u*De)*Je,t[14]=(G*re-U*ve-H*de)*Je,t[15]=(C*ve-L*re+D*de)*Je,t):null}function Ll(t,e,i){var r=e[0],u=e[1],f=e[2],m=e[3],y=e[4],E=e[5],T=e[6],C=e[7],L=e[8],D=e[9],B=e[10],U=e[11],G=e[12],H=e[13],ne=e[14],de=e[15],re=i[0],fe=i[1],ve=i[2],ge=i[3];return t[0]=re*r+fe*y+ve*L+ge*G,t[1]=re*u+fe*E+ve*D+ge*H,t[2]=re*f+fe*T+ve*B+ge*ne,t[3]=re*m+fe*C+ve*U+ge*de,t[4]=(re=i[4])*r+(fe=i[5])*y+(ve=i[6])*L+(ge=i[7])*G,t[5]=re*u+fe*E+ve*D+ge*H,t[6]=re*f+fe*T+ve*B+ge*ne,t[7]=re*m+fe*C+ve*U+ge*de,t[8]=(re=i[8])*r+(fe=i[9])*y+(ve=i[10])*L+(ge=i[11])*G,t[9]=re*u+fe*E+ve*D+ge*H,t[10]=re*f+fe*T+ve*B+ge*ne,t[11]=re*m+fe*C+ve*U+ge*de,t[12]=(re=i[12])*r+(fe=i[13])*y+(ve=i[14])*L+(ge=i[15])*G,t[13]=re*u+fe*E+ve*D+ge*H,t[14]=re*f+fe*T+ve*B+ge*ne,t[15]=re*m+fe*C+ve*U+ge*de,t}function Gc(t,e,i){var r,u,f,m,y,E,T,C,L,D,B,U,G=i[0],H=i[1],ne=i[2];return e===t?(t[12]=e[0]*G+e[4]*H+e[8]*ne+e[12],t[13]=e[1]*G+e[5]*H+e[9]*ne+e[13],t[14]=e[2]*G+e[6]*H+e[10]*ne+e[14],t[15]=e[3]*G+e[7]*H+e[11]*ne+e[15]):(u=e[1],f=e[2],m=e[3],y=e[4],E=e[5],T=e[6],C=e[7],L=e[8],D=e[9],B=e[10],U=e[11],t[0]=r=e[0],t[1]=u,t[2]=f,t[3]=m,t[4]=y,t[5]=E,t[6]=T,t[7]=C,t[8]=L,t[9]=D,t[10]=B,t[11]=U,t[12]=r*G+y*H+L*ne+e[12],t[13]=u*G+E*H+D*ne+e[13],t[14]=f*G+T*H+B*ne+e[14],t[15]=m*G+C*H+U*ne+e[15]),t}function Rl(t,e,i){var r=i[0],u=i[1],f=i[2];return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*u,t[5]=e[5]*u,t[6]=e[6]*u,t[7]=e[7]*u,t[8]=e[8]*f,t[9]=e[9]*f,t[10]=e[10]*f,t[11]=e[11]*f,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function sm(t,e,i){var r=Math.sin(i),u=Math.cos(i),f=e[4],m=e[5],y=e[6],E=e[7],T=e[8],C=e[9],L=e[10],D=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=f*u+T*r,t[5]=m*u+C*r,t[6]=y*u+L*r,t[7]=E*u+D*r,t[8]=T*u-f*r,t[9]=C*u-m*r,t[10]=L*u-y*r,t[11]=D*u-E*r,t}function jf(t,e,i){var r=Math.sin(i),u=Math.cos(i),f=e[0],m=e[1],y=e[2],E=e[3],T=e[8],C=e[9],L=e[10],D=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=f*u-T*r,t[1]=m*u-C*r,t[2]=y*u-L*r,t[3]=E*u-D*r,t[8]=f*r+T*u,t[9]=m*r+C*u,t[10]=y*r+L*u,t[11]=E*r+D*u,t}function r0(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function o0(t,e,i){var r,u,f,m=i[0],y=i[1],E=i[2],T=Math.hypot(m,y,E);return T<Uf?null:(m*=T=1/T,y*=T,E*=T,r=Math.sin(e),u=Math.cos(e),t[0]=m*m*(f=1-u)+u,t[1]=y*m*f+E*r,t[2]=E*m*f-y*r,t[3]=0,t[4]=m*y*f-E*r,t[5]=y*y*f+u,t[6]=E*y*f+m*r,t[7]=0,t[8]=m*E*f+y*r,t[9]=y*E*f-m*r,t[10]=E*E*f+u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var EI=Ll;function am(){var t=new Qr(3);return Qr!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function s0(t){var e=new Qr(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function $c(t){return Math.hypot(t[0],t[1],t[2])}function Lu(t,e,i){var r=new Qr(3);return r[0]=t,r[1]=e,r[2]=i,r}function ra(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2],t}function lm(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2],t}function a0(t,e,i){return t[0]=e[0]*i[0],t[1]=e[1]*i[1],t[2]=e[2]*i[2],t}function qc(t,e,i){return t[0]=Math.min(e[0],i[0]),t[1]=Math.min(e[1],i[1]),t[2]=Math.min(e[2],i[2]),t}function Zc(t,e,i){return t[0]=Math.max(e[0],i[0]),t[1]=Math.max(e[1],i[1]),t[2]=Math.max(e[2],i[2]),t}function fo(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t}function Xc(t,e,i,r){return t[0]=e[0]+i[0]*r,t[1]=e[1]+i[1]*r,t[2]=e[2]+i[2]*r,t}function Mr(t,e){var i=e[0],r=e[1],u=e[2],f=i*i+r*r+u*u;return f>0&&(f=1/Math.sqrt(f)),t[0]=e[0]*f,t[1]=e[1]*f,t[2]=e[2]*f,t}function Mo(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function um(t,e,i){var r=e[0],u=e[1],f=e[2],m=i[0],y=i[1],E=i[2];return t[0]=u*E-f*y,t[1]=f*m-r*E,t[2]=r*y-u*m,t}function gn(t,e,i){var r=e[0],u=e[1],f=e[2],m=i[3]*r+i[7]*u+i[11]*f+i[15];return t[0]=(i[0]*r+i[4]*u+i[8]*f+i[12])/(m=m||1),t[1]=(i[1]*r+i[5]*u+i[9]*f+i[13])/m,t[2]=(i[2]*r+i[6]*u+i[10]*f+i[14])/m,t}function l0(t,e,i){var r=i[0],u=i[1],f=i[2],m=e[0],y=e[1],E=e[2],T=u*E-f*y,C=f*m-r*E,L=r*y-u*m,D=u*L-f*C,B=f*T-r*L,U=r*C-u*T,G=2*i[3];return C*=G,L*=G,B*=2,U*=2,t[0]=m+(T*=G)+(D*=2),t[1]=y+C+B,t[2]=E+L+U,t}var Wc,es=lm,TI=a0,SI=$c;function u0(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3]*i,t}function c0(t,e){var i=e[0],r=e[1],u=e[2],f=e[3],m=i*i+r*r+u*u+f*f;return m>0&&(m=1/Math.sqrt(m)),t[0]=i*m,t[1]=r*m,t[2]=u*m,t[3]=f*m,t}function Dl(t,e,i){var r=e[0],u=e[1],f=e[2],m=e[3];return t[0]=i[0]*r+i[4]*u+i[8]*f+i[12]*m,t[1]=i[1]*r+i[5]*u+i[9]*f+i[13]*m,t[2]=i[2]*r+i[6]*u+i[10]*f+i[14]*m,t[3]=i[3]*r+i[7]*u+i[11]*f+i[15]*m,t}function h0(){var t=new Qr(4);return Qr!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function f0(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function p0(t,e,i){i*=.5;var r=e[0],u=e[1],f=e[2],m=e[3],y=Math.sin(i),E=Math.cos(i);return t[0]=r*E+m*y,t[1]=u*E+f*y,t[2]=f*E-u*y,t[3]=m*E-r*y,t}function d0(t,e,i){i*=.5;var r=e[0],u=e[1],f=e[2],m=e[3],y=Math.sin(i),E=Math.cos(i);return t[0]=r*E-f*y,t[1]=u*E+m*y,t[2]=f*E+r*y,t[3]=m*E-u*y,t}am(),Wc=new Qr(4),Qr!=Float32Array&&(Wc[0]=0,Wc[1]=0,Wc[2]=0,Wc[3]=0);var II=c0;am(),Lu(1,0,0),Lu(0,1,0),h0(),h0(),i0();const kI=ke([{type:"Float32",name:"a_globe_pos",components:3},{type:"Float32",name:"a_uv",components:2}]),{members:m0}=kI,g0=ke([{name:"a_pos_3",components:3,type:"Int16"}]);var Yc=ke([{name:"a_pos",type:"Int16",components:2}]);class cm{constructor(e,i){this.pos=e,this.dir=i}intersectsPlane(e,i,r){const u=Mo(i,this.dir);if(Math.abs(u)<1e-6)return!1;const f=((e[0]-this.pos[0])*i[0]+(e[1]-this.pos[1])*i[1]+(e[2]-this.pos[2])*i[2])/u;return r[0]=this.pos[0]+this.dir[0]*f,r[1]=this.pos[1]+this.dir[1]*f,r[2]=this.pos[2]+this.dir[2]*f,!0}closestPointOnSphere(e,i,r){if(function(B,U){var G=B[0],H=B[1],ne=B[2],de=U[0],re=U[1],fe=U[2];return Math.abs(G-de)<=Uf*Math.max(1,Math.abs(G),Math.abs(de))&&Math.abs(H-re)<=Uf*Math.max(1,Math.abs(H),Math.abs(re))&&Math.abs(ne-fe)<=Uf*Math.max(1,Math.abs(ne),Math.abs(fe))}(this.pos,e)||i===0)return r[0]=r[1]=r[2]=0,!1;const[u,f,m]=this.dir,y=this.pos[0]-e[0],E=this.pos[1]-e[1],T=this.pos[2]-e[2],C=u*u+f*f+m*m,L=2*(y*u+E*f+T*m),D=L*L-4*C*(y*y+E*E+T*T-i*i);if(D<0){const B=Math.max(-L/2,0),U=y+u*B,G=E+f*B,H=T+m*B,ne=Math.hypot(U,G,H);return r[0]=U*i/ne,r[1]=G*i/ne,r[2]=H*i/ne,!1}{const B=(-L-Math.sqrt(D))/(2*C);if(B<0){const U=Math.hypot(y,E,T);return r[0]=y*i/U,r[1]=E*i/U,r[2]=T*i/U,!1}return r[0]=y+u*B,r[1]=E+f*B,r[2]=T+m*B,!0}}}class hm{constructor(e,i,r,u,f){this.TL=e,this.TR=i,this.BR=r,this.BL=u,this.horizon=f}static fromInvProjectionMatrix(e,i,r){const u=[-1,1,1],f=[1,1,1],m=[1,-1,1],y=[-1,-1,1],E=gn(u,u,e),T=gn(f,f,e),C=gn(m,m,e),L=gn(y,y,e);return new hm(E,T,C,L,i/r)}}class fm{constructor(e,i){this.points=e,this.planes=i}static fromInvProjectionMatrix(e,i,r,u){const f=Math.pow(2,r),m=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(E=>{const T=Dl([],E,e),C=1/T[3]/i*f;return function(L,D,B){return L[0]=D[0]*B[0],L[1]=D[1]*B[1],L[2]=D[2]*B[2],L[3]=D[3]*B[3],L}(T,T,[C,C,u?1/T[3]:C,C])}),y=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(E=>{const T=Mr([],um([],es([],m[E[0]],m[E[1]]),es([],m[E[2]],m[E[1]]))),C=-Mo(T,m[E[1]]);return T.concat(C)});return new fm(m,y)}}class Ar{static fromPoints(e){const i=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(const u of e)qc(i,i,u),Zc(r,r,u);return new Ar(i,r)}static applyTransform(e,i){const r=e.getCorners();for(let u=0;u<r.length;++u)gn(r[u],r[u],i);return Ar.fromPoints(r)}constructor(e,i){this.min=e,this.max=i,this.center=fo([],ra([],this.min,this.max),.5)}quadrant(e){const i=[e%2==0,e<2],r=s0(this.min),u=s0(this.max);for(let f=0;f<i.length;f++)r[f]=i[f]?this.min[f]:this.center[f],u[f]=i[f]?this.center[f]:this.max[f];return u[2]=this.max[2],new Ar(r,u)}distanceX(e){return Math.max(Math.min(this.max[0],e[0]),this.min[0])-e[0]}distanceY(e){return Math.max(Math.min(this.max[1],e[1]),this.min[1])-e[1]}distanceZ(e){return Math.max(Math.min(this.max[2],e[2]),this.min[2])-e[2]}getCorners(){const e=this.min,i=this.max;return[[e[0],e[1],e[2]],[i[0],e[1],e[2]],[i[0],i[1],e[2]],[e[0],i[1],e[2]],[e[0],e[1],i[2]],[i[0],e[1],i[2]],[i[0],i[1],i[2]],[e[0],i[1],i[2]]]}intersects(e){const i=this.getCorners();let r=!0;for(let u=0;u<e.planes.length;u++){const f=e.planes[u];let m=0;for(let y=0;y<i.length;y++)m+=Mo(f,i[y])+f[3]>=0;if(m===0)return 0;m!==i.length&&(r=!1)}if(r)return 2;for(let u=0;u<3;u++){let f=Number.MAX_VALUE,m=-Number.MAX_VALUE;for(let y=0;y<e.points.length;y++){const E=e.points[y][u]-this.min[u];f=Math.min(f,E),m=Math.max(m,E)}if(m<0||f>this.max[u]-this.min[u])return 0}return 1}}const pm=5,_0=6,Ss=Ft/Math.PI/2,MI=16383,Ol=64,Hc=[Ol,32,16],Ao=-Ss,Co=Ss,AI=[new Ar([Ao,Ao,Ao],[Co,Co,Co]),new Ar([Ao,Ao,Ao],[0,0,Co]),new Ar([0,Ao,Ao],[Co,0,Co]),new Ar([Ao,0,Ao],[0,Co,Co]),new Ar([0,0,Ao],[Co,Co,Co])];function Vf(t){return t*Ss/Qc}function y0(t,e,i,r=!0){const u=fo([],t._camera.position,t.worldSize),f=[e,i,1,1];Dl(f,f,t.pixelMatrixInverse),u0(f,f,1/f[3]);const m=Mr([],es([],f,u)),y=t.globeMatrix,E=[y[12],y[13],y[14]],T=es([],E,u),C=$c(T),L=Mr([],T),D=t.worldSize/(2*Math.PI),B=Mo(L,m),U=Math.asin(D/C);if(U<Math.acos(B)){if(!r)return null;const it=[],Ve=[];fo(it,m,C/B),Mr(Ve,es(Ve,it,T)),Mr(m,ra(m,T,fo(m,Ve,Math.tan(U)*C)))}const G=[];new cm(u,m).closestPointOnSphere(E,D,G);const H=Mr([],xo(y,0)),ne=Mr([],xo(y,1)),de=Mr([],xo(y,2)),re=Mo(H,G),fe=Mo(ne,G),ve=Mo(de,G),ge=Xt(Math.asin(-fe/D));let Be=Xt(Math.atan2(re,ve));Be=t.center.lng+function(it,Ve){const Ye=(Ve-it+180)%360-180;return Ye<-180?Ye+360:Ye}(t.center.lng,Be);const De=ks(Be),qe=Rt(Ms(ge),0,1);return new zu(De,qe)}class CI{constructor(e,i,r){this.a=es([],e,r),this.b=es([],i,r),this.center=r;const u=Mr([],this.a),f=Mr([],this.b);this.angle=Math.acos(Mo(u,f))}}function dm(t,e){if(t.angle===0)return null;let i;return i=t.a[e]===0?1/t.angle*.5*Math.PI:1/t.angle*Math.atan(t.b[e]/t.a[e]/Math.sin(t.angle)-1/Math.tan(t.angle)),i<0||i>1?null:function(r,u,f,m){const y=Math.sin(f);return r*(Math.sin((1-m)*f)/y)+u*(Math.sin(m*f)/y)}(t.a[e],t.b[e],t.angle,Rt(i,0,1))+t.center[e]}function Is(t){if(t.z<=1)return AI[t.z+2*t.y+t.x];const e=mm(Gf(t));return Ar.fromPoints(e)}function zl(t,e,i){return fo(t,t,1-i),Xc(t,t,e,i)}function v0(t,e){const i=Ou(e.zoom);if(i===0)return Is(t);const r=Gf(t),u=mm(r),f=ks(r.getWest())*e.worldSize,m=ks(r.getEast())*e.worldSize,y=Ms(r.getNorth())*e.worldSize,E=Ms(r.getSouth())*e.worldSize,T=[f,y,0],C=[m,y,0],L=[f,E,0],D=[m,E,0],B=om([],e.globeMatrix);return gn(T,T,B),gn(C,C,B),gn(L,L,B),gn(D,D,B),u[0]=zl(u[0],L,i),u[1]=zl(u[1],D,i),u[2]=zl(u[2],C,i),u[3]=zl(u[3],T,i),Ar.fromPoints(u)}function x0(t,e,i){for(const r of t)gn(r,r,e),fo(r,r,i)}function PI(t,e,i){const r=e/t.worldSize,u=t.globeMatrix;if(i.z<=1){const De=Is(i).getCorners();return x0(De,u,r),Ar.fromPoints(De)}const f=Gf(i),m=mm(f);x0(m,u,r);const y=Number.MAX_VALUE,E=[-y,-y,-y],T=[y,y,y];if(f.contains(t.center)){for(const it of m)qc(T,T,it),Zc(E,E,it);E[2]=0;const De=t.point,qe=[De.x*r,De.y*r,0];return qc(T,T,qe),Zc(E,E,qe),new Ar(T,E)}const C=[u[12]*r,u[13]*r,u[14]*r],L=f.getCenter(),D=Rt(t.center.lat,-hr,hr),B=Rt(L.lat,-hr,hr),U=ks(t.center.lng),G=Ms(D);let H=U-ks(L.lng);const ne=G-Ms(B);H>.5?H-=1:H<-.5&&(H+=1);let de=0;Math.abs(H)>Math.abs(ne)?de=H>=0?1:3:(de=ne>=0?0:2,Xc(C,C,[u[4]*r,u[5]*r,u[6]*r],-Math.sin(At(ne>=0?f.getSouth():f.getNorth()))*Ss));const re=m[de],fe=m[(de+1)%4],ve=new CI(re,fe,C),ge=[dm(ve,0)||re[0],dm(ve,1)||re[1],dm(ve,2)||re[2]],Be=Ou(t.zoom);if(Be>0){const De=function({x:it,y:Ve,z:Ye},He,Je,at,$e){const vt=1/(1<<Ye);let Lt=it*vt,xt=Lt+vt,ni=Ve*vt,lt=ni+vt,Nt=0;const ri=(Lt+xt)/2-at;return ri>.5?Nt=-1:ri<-.5&&(Nt=1),Lt=((Lt+Nt)*He-(at*=He))*Je+at,xt=((xt+Nt)*He-at)*Je+at,ni=(ni*He-($e*=He))*Je+$e,lt=(lt*He-$e)*Je+$e,[[Lt,lt,0],[xt,lt,0],[xt,ni,0],[Lt,ni,0]]}(i,e,t._pixelsPerMercatorPixel,U,G);for(let it=0;it<m.length;it++)zl(m[it],De[it],Be);const qe=ra([],De[de],De[(de+1)%4]);fo(qe,qe,.5),zl(ge,qe,Be)}for(const De of m)qc(T,T,De),Zc(E,E,De);return T[2]=Math.min(re[2],fe[2]),qc(T,T,ge),Zc(E,E,ge),new Ar(T,E)}function Gf({x:t,y:e,z:i}){const r=1/(1<<i),u=new Vi(po(t*r),cr((e+1)*r)),f=new Vi(po((t+1)*r),cr(e*r));return new $a(u,f)}function mm(t){const e=At(t.getNorth()),i=At(t.getSouth()),r=Math.cos(e),u=Math.cos(i),f=Math.sin(e),m=Math.sin(i),y=t.getWest(),E=t.getEast();return[Ru(u,m,y),Ru(u,m,E),Ru(r,f,E),Ru(r,f,y)]}function Ru(t,e,i,r=Ss){return i=At(i),[t*Math.sin(i)*r,-e*r,t*Math.cos(i)*r]}function Du(t,e,i){return Ru(Math.cos(At(t)),Math.sin(At(t)),e,i)}function Kc(t,e,i,r){const u=1<<i.z,f=(t/Ft+i.x)/u;return Du(cr((e/Ft+i.y)/u),po(f),r)}function $f({min:t,max:e}){return MI/Math.max(e[0]-t[0],e[1]-t[1],e[2]-t[2])}const b0=new Float64Array(16);function Jc(t){const e=$f(t),i=r0(b0,[e,e,e]);return Gc(i,i,((r=[])[0]=-(u=t.min)[0],r[1]=-u[1],r[2]=-u[2],r));var r,u}function gm(t){const e=(r=t.min,(i=b0)[0]=1,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=1,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1,i[11]=0,i[12]=r[0],i[13]=r[1],i[14]=r[2],i[15]=1,i);var i,r;const u=1/$f(t);return Rl(e,e,[u,u,u])}function w0(t,e,i,r,u){const f=function(E){const T=Ft/(2*Math.PI);return E/(2*Math.PI)/T}(i),m=[t,e,-i/(2*Math.PI)],y=Qo(new Float64Array(16));return Gc(y,y,m),Rl(y,y,[f,f,f]),sm(y,y,At(-u)),jf(y,y,At(-r)),y}function Ou(t){return pi(pm,_0,t)}function E0(t,e){const i=Du(e.lat,e.lng),r=function(U){const G=Du(U._center.lat,U._center.lng);let H=um([],Lu(0,1,0),G);const ne=o0([],-U.angle,G);H=gn(H,H,ne),o0(ne,-U._pitch,H);const de=Mr([],G);return fo(de,de,Vf(U.cameraToCenterDistance/U.pixelsPerMeter)),gn(de,de,ne),ra([],G,de)}(t);return m=(u=lm([],r,i))[0],y=u[1],E=u[2],T=(f=i)[0],C=f[1],L=f[2],B=(D=Math.sqrt(m*m+y*y+E*E)*Math.sqrt(T*T+C*C+L*L))&&Mo(u,f)/D,Math.acos(Math.min(Math.max(B,-1),1));var u,f,m,y,E,T,C,L,D,B}function _m(t,e){return E0(t,e)>Math.PI/2*1.01}const T0=At(85),LI=Math.cos(T0),RI=Math.sin(T0),Qc=63710088e-1,S0=2*Math.PI*Qc;class qa{constructor(e,i){if(isNaN(e)||isNaN(i))throw new Error(`Invalid LngLat object: (${e}, ${i})`);if(this.lng=+e,this.lat=+i,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new qa(St(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const i=Math.PI/180,r=this.lat*i,u=e.lat*i,f=Math.sin(r)*Math.sin(u)+Math.cos(r)*Math.cos(u)*Math.cos((e.lng-this.lng)*i);return Qc*Math.acos(Math.min(f,1))}toBounds(e=0){const i=360*e/40075017,r=i/Math.cos(Math.PI/180*this.lat);return new $a(new qa(this.lng-r,this.lat-i),new qa(this.lng+r,this.lat+i))}toEcef(e){const i=Vf(e);return Du(this.lat,this.lng,Ss+i)}static convert(e){if(e instanceof qa)return e;if(Array.isArray(e)&&(e.length===2||e.length===3))return new qa(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&typeof e=="object"&&e!==null)return new qa(Number("lng"in e?e.lng:e.lon),Number(e.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]")}}var Vi=qa;function ym(t){return S0*Math.cos(t*Math.PI/180)}function ks(t){return(180+t)/360}function Ms(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function ts(t,e){return t/ym(e)}function po(t){return 360*t-180}function cr(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}function I0(t,e){return t*ym(cr(e))}const hr=85.051129;function k0(t){return 1/Math.cos(t*Math.PI/180)}class zu{constructor(e,i,r=0){this.x=+e,this.y=+i,this.z=+r}static fromLngLat(e,i=0){const r=Vi.convert(e);return new zu(ks(r.lng),Ms(r.lat),ts(i,r.lat))}toLngLat(){return new Vi(po(this.x),cr(this.y))}toAltitude(){return I0(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/S0*k0(cr(this.y))}}function vm(t,e,i,r,u,f,m,y,E){const T=(e+r)/2,C=(i+u)/2,L=new Oe(T,C);y(L),function(D,B,U,G,H,ne){const de=U-H,re=G-ne;return Math.abs((G-B)*de-(U-D)*re)/Math.hypot(de,re)}(L.x,L.y,f.x,f.y,m.x,m.y)>=E?(vm(t,e,i,T,C,f,L,y,E),vm(t,T,C,r,u,L,m,y,E)):t.push(m)}function M0(t,e,i){let r=t[0],u=r.x,f=r.y;e(r);const m=[r];for(let y=1;y<t.length;y++){const E=t[y],{x:T,y:C}=E;e(E),vm(m,u,f,T,C,r,E,e,i),u=T,f=C,r=E}return m}function xm(t,e,i,r){if(r(e,i)){const u=e.add(i)._mult(.5);xm(t,e,u,r),xm(t,u,i,r)}else t.push(i)}function DI(t,e){let i=t[0];const r=[i];for(let u=1;u<t.length;u++){const f=t[u];xm(r,i,f,e),i=f}return r}const bm=Math.pow(2,14)-1,A0=-bm-1;function OI(t,e){const i=Math.round(t.x*e),r=Math.round(t.y*e);return t.x=Rt(i,A0,bm),t.y=Rt(r,A0,bm),(i<t.x||i>t.x+1||r<t.y||r>t.y+1)&&Ti("Geometry exceeds allowed extent, reduce your vector tile buffer size"),t}function oa(t,e,i){const r=t.loadGeometry(),u=t.extent,f=Ft/u;if(e&&i&&i.projection.isReprojectedInTileSpace){const m=1<<e.z,{scale:y,x:E,y:T,projection:C}=i,L=D=>{const B=po((e.x+D.x/u)/m),U=cr((e.y+D.y/u)/m),G=C.project(B,U);D.x=(G.x*y-E)*u,D.y=(G.y*y-T)*u};for(let D=0;D<r.length;D++)if(t.type!==1)r[D]=M0(r[D],L,1);else{const B=[];for(const U of r[D])U.x<0||U.x>=u||U.y<0||U.y>=u||(L(U),B.push(U));r[D]=B}}for(const m of r)for(const y of m)OI(y,f);return r}function Nl(t,e){return{type:t.type,id:t.id,properties:t.properties,geometry:e?oa(t):[]}}function qf(t,e,i,r,u){t.emplaceBack(2*e+(r+1)/2,2*i+(u+1)/2)}function Zf(t,e,i){t.emplaceBack(e.x,e.y,e.z,i[0]*16384,i[1]*16384,i[2]*16384)}class wm{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(i=>i.id),this.index=e.index,this.hasPattern=!1,this.projection=e.projection,this.layoutVertexArray=new tt,this.indexArray=new Ot,this.segments=new En,this.programConfigurations=new Pl(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter(i=>i.isStateDependent()).map(i=>i.id)}populate(e,i,r,u){const f=this.layers[0],m=[];let y=null;f.type==="circle"&&(y=f.layout.get("circle-sort-key"));for(const{feature:T,id:C,index:L,sourceLayerIndex:D}of e){const B=this.layers[0]._featureFilter.needGeometry,U=Nl(T,B);if(!this.layers[0]._featureFilter.filter(new P(this.zoom),U,r))continue;const G=y?y.evaluate(U,{},r):void 0,H={id:C,properties:T.properties,type:T.type,sourceLayerIndex:D,index:L,geometry:B?U.geometry:oa(T,r,u),patterns:{},sortKey:G};m.push(H)}y&&m.sort((T,C)=>T.sortKey-C.sortKey);let E=null;u.projection.name==="globe"&&(this.globeExtVertexArray=new rt,E=u.projection);for(const T of m){const{geometry:C,index:L,sourceLayerIndex:D}=T,B=e[L].feature;this.addFeature(T,C,L,i.availableImages,r,E),i.featureIndex.insert(B,C,L,D,this.index)}}update(e,i,r,u){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,r,u)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,bI.members),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.globeExtVertexArray&&(this.globeExtVertexBuffer=e.createVertexBuffer(this.globeExtVertexArray,wI.members))),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy())}addFeature(e,i,r,u,f,m){for(const y of i)for(const E of y){const T=E.x,C=E.y;if(T<0||T>=Ft||C<0||C>=Ft)continue;if(m){const B=m.projectTilePoint(T,C,f),U=m.upVector(f,T,C),G=this.globeExtVertexArray;Zf(G,B,U),Zf(G,B,U),Zf(G,B,U),Zf(G,B,U)}const L=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,e.sortKey),D=L.vertexLength;qf(this.layoutVertexArray,T,C,-1,-1),qf(this.layoutVertexArray,T,C,1,-1),qf(this.layoutVertexArray,T,C,1,1),qf(this.layoutVertexArray,T,C,-1,1),this.indexArray.emplaceBack(D,D+1,D+2),this.indexArray.emplaceBack(D,D+2,D+3),L.vertexLength+=4,L.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,r,{},u,f)}}function C0(t,e){for(let i=0;i<t.length;i++)if(Bl(e,t[i]))return!0;for(let i=0;i<e.length;i++)if(Bl(t,e[i]))return!0;return!!Em(t,e)}function zI(t,e,i){return!!Bl(t,e)||!!Tm(e,t,i)}function P0(t,e){if(t.length===1)return R0(e,t[0]);for(let i=0;i<e.length;i++){const r=e[i];for(let u=0;u<r.length;u++)if(Bl(t,r[u]))return!0}for(let i=0;i<t.length;i++)if(R0(e,t[i]))return!0;for(let i=0;i<e.length;i++)if(Em(t,e[i]))return!0;return!1}function NI(t,e,i){if(t.length>1){if(Em(t,e))return!0;for(let r=0;r<e.length;r++)if(Tm(e[r],t,i))return!0}for(let r=0;r<t.length;r++)if(Tm(t[r],e,i))return!0;return!1}function Em(t,e){if(t.length===0||e.length===0)return!1;for(let i=0;i<t.length-1;i++){const r=t[i],u=t[i+1];for(let f=0;f<e.length-1;f++)if(BI(r,u,e[f],e[f+1]))return!0}return!1}function BI(t,e,i,r){return pr(t,i,r)!==pr(e,i,r)&&pr(t,e,i)!==pr(t,e,r)}function Tm(t,e,i){const r=i*i;if(e.length===1)return t.distSqr(e[0])<r;for(let u=1;u<e.length;u++)if(L0(t,e[u-1],e[u])<r)return!0;return!1}function L0(t,e,i){const r=e.distSqr(i);if(r===0)return t.distSqr(e);const u=((t.x-e.x)*(i.x-e.x)+(t.y-e.y)*(i.y-e.y))/r;return t.distSqr(u<0?e:u>1?i:i.sub(e)._mult(u)._add(e))}function R0(t,e){let i,r,u,f=!1;for(let m=0;m<t.length;m++){i=t[m];for(let y=0,E=i.length-1;y<i.length;E=y++)r=i[y],u=i[E],r.y>e.y!=u.y>e.y&&e.x<(u.x-r.x)*(e.y-r.y)/(u.y-r.y)+r.x&&(f=!f)}return f}function Bl(t,e){let i=!1;for(let r=0,u=t.length-1;r<t.length;u=r++){const f=t[r],m=t[u];f.y>e.y!=m.y>e.y&&e.x<(m.x-f.x)*(e.y-f.y)/(m.y-f.y)+f.x&&(i=!i)}return i}function D0(t,e,i,r,u){for(const m of t)if(e<=m.x&&i<=m.y&&r>=m.x&&u>=m.y)return!0;const f=[new Oe(e,i),new Oe(e,u),new Oe(r,u),new Oe(r,i)];if(t.length>2){for(const m of f)if(Bl(t,m))return!0}for(let m=0;m<t.length-1;m++)if(FI(t[m],t[m+1],f))return!0;return!1}function FI(t,e,i){const r=i[0],u=i[2];if(t.x<r.x&&e.x<r.x||t.x>u.x&&e.x>u.x||t.y<r.y&&e.y<r.y||t.y>u.y&&e.y>u.y)return!1;const f=pr(t,e,i[0]);return f!==pr(t,e,i[1])||f!==pr(t,e,i[2])||f!==pr(t,e,i[3])}function Nu(t,e,i){const r=e.paint.get(t).value;return r.kind==="constant"?r.value:i.programConfigurations.get(e.id).getMaxValue(t)}function Xf(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function O0(t,e,i,r,u){if(!e[0]&&!e[1])return t;const f=Oe.convert(e)._mult(u);i==="viewport"&&f._rotate(-r);const m=[];for(let y=0;y<t.length;y++)m.push(t[y].sub(f));return m}function z0(t,e,i,r){const u=Oe.convert(t)._mult(r);return e==="viewport"&&u._rotate(-i),u}Ct(wm,"CircleBucket",{omit:["layers"]});const UI=new le({"circle-sort-key":new K(Ge.layout_circle["circle-sort-key"])});var jI={paint:new le({"circle-radius":new K(Ge.paint_circle["circle-radius"]),"circle-color":new K(Ge.paint_circle["circle-color"]),"circle-blur":new K(Ge.paint_circle["circle-blur"]),"circle-opacity":new K(Ge.paint_circle["circle-opacity"]),"circle-translate":new V(Ge.paint_circle["circle-translate"]),"circle-translate-anchor":new V(Ge.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new V(Ge.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new V(Ge.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new K(Ge.paint_circle["circle-stroke-width"]),"circle-stroke-color":new K(Ge.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new K(Ge.paint_circle["circle-stroke-opacity"])}),layout:UI};function N0(t,e,i,r,u,f,m,y,E){if(f&&t.queryGeometry.isAboveHorizon)return!1;f&&(E*=t.pixelToTileUnitsFactor);const T=t.tileID.canonical,C=i.projection.upVectorScale(T,i.center.lat,i.worldSize).metersToTile;for(const L of e)for(const D of L){const B=D.add(y),U=u&&i.elevation?i.elevation.exaggeration()*u.getElevationAt(B.x,B.y,!0):0,G=i.projection.projectTilePoint(B.x,B.y,T);if(U>0){const re=i.projection.upVector(T,B.x,B.y);G.x+=re[0]*C*U,G.y+=re[1]*C*U,G.z+=re[2]*C*U}const H=f?B:VI(G.x,G.y,G.z,r),ne=f?t.tilespaceRays.map(re=>$I(re,U)):t.queryGeometry.screenGeometry,de=Dl([],[G.x,G.y,G.z,1],r);if(!m&&f?E*=de[3]/i.cameraToCenterDistance:m&&!f&&(E*=i.cameraToCenterDistance/de[3]),f){const re=cr((D.y/Ft+T.y)/(1<<T.z));E/=i.projection.pixelsPerMeter(re,1)/ts(1,re)}if(zI(ne,H,E))return!0}return!1}function VI(t,e,i,r){const u=Dl([],[t,e,i,1],r);return new Oe(u[0]/u[3],u[1]/u[3])}const B0=Lu(0,0,0),GI=Lu(0,0,1);function $I(t,e){const i=am();return B0[2]=e,t.intersectsPlane(B0,GI,i),new Oe(i[0],i[1])}class F0 extends wm{}function U0(t,{width:e,height:i},r,u){if(u){if(u instanceof Uint8ClampedArray)u=new Uint8Array(u.buffer);else if(u.length!==e*i*r)throw new RangeError("mismatched image size")}else u=new Uint8Array(e*i*r);return t.width=e,t.height=i,t.data=u,t}function j0(t,e,i){const{width:r,height:u}=e;r===t.width&&u===t.height||(Sm(t,e,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,r),height:Math.min(t.height,u)},i),t.width=r,t.height=u,t.data=e.data)}function Sm(t,e,i,r,u,f){if(u.width===0||u.height===0)return e;if(u.width>t.width||u.height>t.height||i.x>t.width-u.width||i.y>t.height-u.height)throw new RangeError("out of range source coordinates for image copy");if(u.width>e.width||u.height>e.height||r.x>e.width-u.width||r.y>e.height-u.height)throw new RangeError("out of range destination coordinates for image copy");const m=t.data,y=e.data;for(let E=0;E<u.height;E++){const T=((i.y+E)*t.width+i.x)*f,C=((r.y+E)*e.width+r.x)*f;for(let L=0;L<u.width*f;L++)y[C+L]=m[T+L]}return e}Ct(F0,"HeatmapBucket",{omit:["layers"]});class sa{constructor(e,i){U0(this,e,1,i)}resize(e){j0(this,new sa(e),1)}clone(){return new sa({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,i,r,u,f){Sm(e,i,r,u,f,1)}}class eo{constructor(e,i){U0(this,e,4,i)}resize(e){j0(this,new eo(e),4)}replace(e,i){i?this.data.set(e):this.data=e instanceof Uint8ClampedArray?new Uint8Array(e.buffer):e}clone(){return new eo({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,i,r,u,f){Sm(e,i,r,u,f,4)}}Ct(sa,"AlphaImage"),Ct(eo,"RGBAImage");var qI={paint:new le({"heatmap-radius":new K(Ge.paint_heatmap["heatmap-radius"]),"heatmap-weight":new K(Ge.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new V(Ge.paint_heatmap["heatmap-intensity"]),"heatmap-color":new ae(Ge.paint_heatmap["heatmap-color"]),"heatmap-opacity":new V(Ge.paint_heatmap["heatmap-opacity"])})};function Im(t){const e={},i=t.resolution||256,r=t.clips?t.clips.length:1,u=t.image||new eo({width:i,height:r}),f=(m,y,E)=>{e[t.evaluationKey]=E;const T=t.expression.evaluate(e);u.data[m+y+0]=Math.floor(255*T.r/T.a),u.data[m+y+1]=Math.floor(255*T.g/T.a),u.data[m+y+2]=Math.floor(255*T.b/T.a),u.data[m+y+3]=Math.floor(255*T.a)};if(t.clips)for(let m=0,y=0;m<r;++m,y+=4*i)for(let E=0,T=0;E<i;E++,T+=4){const C=E/(i-1),{start:L,end:D}=t.clips[m];f(y,T,L*(1-C)+D*C)}else for(let m=0,y=0;m<i;m++,y+=4)f(0,y,m/(i-1));return u}var ZI={paint:new le({"hillshade-illumination-direction":new V(Ge.paint_hillshade["hillshade-illumination-direction"]),"hillshade-illumination-anchor":new V(Ge.paint_hillshade["hillshade-illumination-anchor"]),"hillshade-exaggeration":new V(Ge.paint_hillshade["hillshade-exaggeration"]),"hillshade-shadow-color":new V(Ge.paint_hillshade["hillshade-shadow-color"]),"hillshade-highlight-color":new V(Ge.paint_hillshade["hillshade-highlight-color"]),"hillshade-accent-color":new V(Ge.paint_hillshade["hillshade-accent-color"])})};const XI=ke([{name:"a_pos",components:2,type:"Int16"}],4),{members:WI}=XI;var km={exports:{}};function Wf(t,e,i){i=i||2;var r,u,f,m,y,E,T,C=e&&e.length,L=C?e[0]*i:t.length,D=V0(t,0,L,i,!0),B=[];if(!D||D.next===D.prev)return B;if(C&&(D=function(G,H,ne,de){var re,fe,ve,ge=[];for(re=0,fe=H.length;re<fe;re++)(ve=V0(G,H[re]*de,re<fe-1?H[re+1]*de:G.length,de,!1))===ve.next&&(ve.steiner=!0),ge.push(ik(ve));for(ge.sort(QI),re=0;re<ge.length;re++)ne=ek(ge[re],ne);return ne}(t,e,D,i)),t.length>80*i){r=f=t[0],u=m=t[1];for(var U=i;U<L;U+=i)(y=t[U])<r&&(r=y),(E=t[U+1])<u&&(u=E),y>f&&(f=y),E>m&&(m=E);T=(T=Math.max(f-r,m-u))!==0?32767/T:0}return eh(D,B,i,r,u,T,0),B}function V0(t,e,i,r,u){var f,m;if(u===Cm(t,e,i,r)>0)for(f=e;f<i;f+=r)m=q0(f,t[f],t[f+1],m);else for(f=i-r;f>=e;f-=r)m=q0(f,t[f],t[f+1],m);return m&&Yf(m,m.next)&&(ih(m),m=m.next),m}function Fl(t,e){if(!t)return t;e||(e=t);var i,r=t;do if(i=!1,r.steiner||!Yf(r,r.next)&&Tn(r.prev,r,r.next)!==0)r=r.next;else{if(ih(r),(r=e=r.prev)===r.next)break;i=!0}while(i||r!==e);return e}function eh(t,e,i,r,u,f,m){if(t){!m&&f&&function(C,L,D,B){var U=C;do U.z===0&&(U.z=Mm(U.x,U.y,L,D,B)),U.prevZ=U.prev,U.nextZ=U.next,U=U.next;while(U!==C);U.prevZ.nextZ=null,U.prevZ=null,function(G){var H,ne,de,re,fe,ve,ge,Be,De=1;do{for(ne=G,G=null,fe=null,ve=0;ne;){for(ve++,de=ne,ge=0,H=0;H<De&&(ge++,de=de.nextZ);H++);for(Be=De;ge>0||Be>0&&de;)ge!==0&&(Be===0||!de||ne.z<=de.z)?(re=ne,ne=ne.nextZ,ge--):(re=de,de=de.nextZ,Be--),fe?fe.nextZ=re:G=re,re.prevZ=fe,fe=re;ne=de}fe.nextZ=null,De*=2}while(ve>1)}(U)}(t,r,u,f);for(var y,E,T=t;t.prev!==t.next;)if(y=t.prev,E=t.next,f?HI(t,r,u,f):YI(t))e.push(y.i/i|0),e.push(t.i/i|0),e.push(E.i/i|0),ih(t),t=E.next,T=E.next;else if((t=E)===T){m?m===1?eh(t=KI(Fl(t),e,i),e,i,r,u,f,2):m===2&&JI(t,e,i,r,u,f):eh(Fl(t),e,i,r,u,f,1);break}}}function YI(t){var e=t.prev,i=t,r=t.next;if(Tn(e,i,r)>=0)return!1;for(var u=e.x,f=i.x,m=r.x,y=e.y,E=i.y,T=r.y,C=u<f?u<m?u:m:f<m?f:m,L=y<E?y<T?y:T:E<T?E:T,D=u>f?u>m?u:m:f>m?f:m,B=y>E?y>T?y:T:E>T?E:T,U=r.next;U!==e;){if(U.x>=C&&U.x<=D&&U.y>=L&&U.y<=B&&Bu(u,y,f,E,m,T,U.x,U.y)&&Tn(U.prev,U,U.next)>=0)return!1;U=U.next}return!0}function HI(t,e,i,r){var u=t.prev,f=t,m=t.next;if(Tn(u,f,m)>=0)return!1;for(var y=u.x,E=f.x,T=m.x,C=u.y,L=f.y,D=m.y,B=y<E?y<T?y:T:E<T?E:T,U=C<L?C<D?C:D:L<D?L:D,G=y>E?y>T?y:T:E>T?E:T,H=C>L?C>D?C:D:L>D?L:D,ne=Mm(B,U,e,i,r),de=Mm(G,H,e,i,r),re=t.prevZ,fe=t.nextZ;re&&re.z>=ne&&fe&&fe.z<=de;){if(re.x>=B&&re.x<=G&&re.y>=U&&re.y<=H&&re!==u&&re!==m&&Bu(y,C,E,L,T,D,re.x,re.y)&&Tn(re.prev,re,re.next)>=0||(re=re.prevZ,fe.x>=B&&fe.x<=G&&fe.y>=U&&fe.y<=H&&fe!==u&&fe!==m&&Bu(y,C,E,L,T,D,fe.x,fe.y)&&Tn(fe.prev,fe,fe.next)>=0))return!1;fe=fe.nextZ}for(;re&&re.z>=ne;){if(re.x>=B&&re.x<=G&&re.y>=U&&re.y<=H&&re!==u&&re!==m&&Bu(y,C,E,L,T,D,re.x,re.y)&&Tn(re.prev,re,re.next)>=0)return!1;re=re.prevZ}for(;fe&&fe.z<=de;){if(fe.x>=B&&fe.x<=G&&fe.y>=U&&fe.y<=H&&fe!==u&&fe!==m&&Bu(y,C,E,L,T,D,fe.x,fe.y)&&Tn(fe.prev,fe,fe.next)>=0)return!1;fe=fe.nextZ}return!0}function KI(t,e,i){var r=t;do{var u=r.prev,f=r.next.next;!Yf(u,f)&&G0(u,r,r.next,f)&&th(u,f)&&th(f,u)&&(e.push(u.i/i|0),e.push(r.i/i|0),e.push(f.i/i|0),ih(r),ih(r.next),r=t=f),r=r.next}while(r!==t);return Fl(r)}function JI(t,e,i,r,u,f){var m=t;do{for(var y=m.next.next;y!==m.prev;){if(m.i!==y.i&&nk(m,y)){var E=$0(m,y);return m=Fl(m,m.next),E=Fl(E,E.next),eh(m,e,i,r,u,f,0),void eh(E,e,i,r,u,f,0)}y=y.next}m=m.next}while(m!==t)}function QI(t,e){return t.x-e.x}function ek(t,e){var i=function(u,f){var m,y=f,E=u.x,T=u.y,C=-1/0;do{if(T<=y.y&&T>=y.next.y&&y.next.y!==y.y){var L=y.x+(T-y.y)*(y.next.x-y.x)/(y.next.y-y.y);if(L<=E&&L>C&&(C=L,m=y.x<y.next.x?y:y.next,L===E))return m}y=y.next}while(y!==f);if(!m)return null;var D,B=m,U=m.x,G=m.y,H=1/0;y=m;do E>=y.x&&y.x>=U&&E!==y.x&&Bu(T<G?E:C,T,U,G,T<G?C:E,T,y.x,y.y)&&(D=Math.abs(T-y.y)/(E-y.x),th(y,u)&&(D<H||D===H&&(y.x>m.x||y.x===m.x&&tk(m,y)))&&(m=y,H=D)),y=y.next;while(y!==B);return m}(t,e);if(!i)return e;var r=$0(i,t);return Fl(r,r.next),Fl(i,i.next)}function tk(t,e){return Tn(t.prev,t,e.prev)<0&&Tn(e.next,t,t.next)<0}function Mm(t,e,i,r,u){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-i)*u|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*u|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function ik(t){var e=t,i=t;do(e.x<i.x||e.x===i.x&&e.y<i.y)&&(i=e),e=e.next;while(e!==t);return i}function Bu(t,e,i,r,u,f,m,y){return(u-m)*(e-y)>=(t-m)*(f-y)&&(t-m)*(r-y)>=(i-m)*(e-y)&&(i-m)*(f-y)>=(u-m)*(r-y)}function nk(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(i,r){var u=i;do{if(u.i!==i.i&&u.next.i!==i.i&&u.i!==r.i&&u.next.i!==r.i&&G0(u,u.next,i,r))return!0;u=u.next}while(u!==i);return!1}(t,e)&&(th(t,e)&&th(e,t)&&function(i,r){var u=i,f=!1,m=(i.x+r.x)/2,y=(i.y+r.y)/2;do u.y>y!=u.next.y>y&&u.next.y!==u.y&&m<(u.next.x-u.x)*(y-u.y)/(u.next.y-u.y)+u.x&&(f=!f),u=u.next;while(u!==i);return f}(t,e)&&(Tn(t.prev,t,e.prev)||Tn(t,e.prev,e))||Yf(t,e)&&Tn(t.prev,t,t.next)>0&&Tn(e.prev,e,e.next)>0)}function Tn(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function Yf(t,e){return t.x===e.x&&t.y===e.y}function G0(t,e,i,r){var u=Kf(Tn(t,e,i)),f=Kf(Tn(t,e,r)),m=Kf(Tn(i,r,t)),y=Kf(Tn(i,r,e));return u!==f&&m!==y||!(u!==0||!Hf(t,i,e))||!(f!==0||!Hf(t,r,e))||!(m!==0||!Hf(i,t,r))||!(y!==0||!Hf(i,e,r))}function Hf(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function Kf(t){return t>0?1:t<0?-1:0}function th(t,e){return Tn(t.prev,t,t.next)<0?Tn(t,e,t.next)>=0&&Tn(t,t.prev,e)>=0:Tn(t,e,t.prev)<0||Tn(t,t.next,e)<0}function $0(t,e){var i=new Am(t.i,t.x,t.y),r=new Am(e.i,e.x,e.y),u=t.next,f=e.prev;return t.next=e,e.prev=t,i.next=u,u.prev=i,r.next=i,i.prev=r,f.next=r,r.prev=f,r}function q0(t,e,i,r){var u=new Am(t,e,i);return r?(u.next=r.next,u.prev=r,r.next.prev=u,r.next=u):(u.prev=u,u.next=u),u}function ih(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Am(t,e,i){this.i=t,this.x=e,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Cm(t,e,i,r){for(var u=0,f=e,m=i-r;f<i;f+=r)u+=(t[m]-t[f])*(t[f+1]+t[m+1]),m=f;return u}km.exports=Wf,km.exports.default=Wf,Wf.deviation=function(t,e,i,r){var u=e&&e.length,f=Math.abs(Cm(t,0,u?e[0]*i:t.length,i));if(u)for(var m=0,y=e.length;m<y;m++)f-=Math.abs(Cm(t,e[m]*i,m<y-1?e[m+1]*i:t.length,i));var E=0;for(m=0;m<r.length;m+=3){var T=r[m]*i,C=r[m+1]*i,L=r[m+2]*i;E+=Math.abs((t[T]-t[L])*(t[C+1]-t[T+1])-(t[T]-t[C])*(t[L+1]-t[T+1]))}return f===0&&E===0?0:Math.abs((E-f)/f)},Wf.flatten=function(t){for(var e=t[0][0].length,i={vertices:[],holes:[],dimensions:e},r=0,u=0;u<t.length;u++){for(var f=0;f<t[u].length;f++)for(var m=0;m<e;m++)i.vertices.push(t[u][f][m]);u>0&&i.holes.push(r+=t[u-1].length)}return i};var Pm=Qe(km.exports);function rk(t,e,i,r,u){Z0(t,e,i,r||t.length-1,u||ok)}function Z0(t,e,i,r,u){for(;r>i;){if(r-i>600){var f=r-i+1,m=e-i+1,y=Math.log(f),E=.5*Math.exp(2*y/3),T=.5*Math.sqrt(y*E*(f-E)/f)*(m-f/2<0?-1:1);Z0(t,e,Math.max(i,Math.floor(e-m*E/f+T)),Math.min(r,Math.floor(e+(f-m)*E/f+T)),u)}var C=t[e],L=i,D=r;for(nh(t,i,e),u(t[r],C)>0&&nh(t,i,r);L<D;){for(nh(t,L,D),L++,D--;u(t[L],C)<0;)L++;for(;u(t[D],C)>0;)D--}u(t[i],C)===0?nh(t,i,D):nh(t,++D,r),D<=e&&(i=D+1),e<=D&&(r=D-1)}}function nh(t,e,i){var r=t[e];t[e]=t[i],t[i]=r}function ok(t,e){return t<e?-1:t>e?1:0}function Lm(t,e){const i=t.length;if(i<=1)return[t];const r=[];let u,f;for(let m=0;m<i;m++){const y=ps(t[m]);y!==0&&(t[m].area=Math.abs(y),f===void 0&&(f=y<0),f===y<0?(u&&r.push(u),u=[t[m]]):u.push(t[m]))}if(u&&r.push(u),e>1)for(let m=0;m<r.length;m++)r[m].length<=e||(rk(r[m],e,1,r[m].length-1,sk),r[m]=r[m].slice(0,e));return r}function sk(t,e){return e.area-t.area}function Rm(t,e,i){const r=i.patternDependencies;let u=!1;for(const f of e){const m=f.paint.get(`${t}-pattern`);m.isConstant()||(u=!0);const y=m.constantOr(null);y&&(u=!0,r[y]=!0)}return u}function Dm(t,e,i,r,u){const f=u.patternDependencies;for(const m of e){const y=m.paint.get(`${t}-pattern`).value;if(y.kind!=="constant"){let E=y.evaluate({zoom:r},i,{},u.availableImages);E=E&&E.name?E.name:E,f[E]=!0,i.patterns[m.id]=E}}return i}class Jf{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(i=>i.id),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new tt,this.indexArray=new Ot,this.indexArray2=new $n,this.programConfigurations=new Pl(e.layers,e.zoom),this.segments=new En,this.segments2=new En,this.stateDependentLayerIds=this.layers.filter(i=>i.isStateDependent()).map(i=>i.id),this.projection=e.projection}populate(e,i,r,u){this.hasPattern=Rm("fill",this.layers,i);const f=this.layers[0].layout.get("fill-sort-key"),m=[];for(const{feature:y,id:E,index:T,sourceLayerIndex:C}of e){const L=this.layers[0]._featureFilter.needGeometry,D=Nl(y,L);if(!this.layers[0]._featureFilter.filter(new P(this.zoom),D,r))continue;const B=f?f.evaluate(D,{},r,i.availableImages):void 0,U={id:E,properties:y.properties,type:y.type,sourceLayerIndex:C,index:T,geometry:L?D.geometry:oa(y,r,u),patterns:{},sortKey:B};m.push(U)}f&&m.sort((y,E)=>y.sortKey-E.sortKey);for(const y of m){const{geometry:E,index:T,sourceLayerIndex:C}=y;if(this.hasPattern){const L=Dm("fill",this.layers,y,this.zoom,i);this.patternFeatures.push(L)}else this.addFeature(y,E,T,r,{},i.availableImages);i.featureIndex.insert(e[T].feature,E,T,C,this.index)}}update(e,i,r,u){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,r,u)}addFeatures(e,i,r,u,f){for(const m of this.patternFeatures)this.addFeature(m,m.geometry,m.index,i,r,u)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,WI),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.indexBuffer2=e.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(e,i,r,u,f,m=[]){for(const y of Lm(i,500)){let E=0;for(const U of y)E+=U.length;const T=this.segments.prepareSegment(E,this.layoutVertexArray,this.indexArray),C=T.vertexLength,L=[],D=[];for(const U of y){if(U.length===0)continue;U!==y[0]&&D.push(L.length/2);const G=this.segments2.prepareSegment(U.length,this.layoutVertexArray,this.indexArray2),H=G.vertexLength;this.layoutVertexArray.emplaceBack(U[0].x,U[0].y),this.indexArray2.emplaceBack(H+U.length-1,H),L.push(U[0].x),L.push(U[0].y);for(let ne=1;ne<U.length;ne++)this.layoutVertexArray.emplaceBack(U[ne].x,U[ne].y),this.indexArray2.emplaceBack(H+ne-1,H+ne),L.push(U[ne].x),L.push(U[ne].y);G.vertexLength+=U.length,G.primitiveLength+=U.length}const B=Pm(L,D);for(let U=0;U<B.length;U+=3)this.indexArray.emplaceBack(C+B[U],C+B[U+1],C+B[U+2]);T.vertexLength+=E,T.primitiveLength+=B.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,r,f,m,u)}}Ct(Jf,"FillBucket",{omit:["layers","patternFeatures"]});const ak=new le({"fill-sort-key":new K(Ge.layout_fill["fill-sort-key"])});var lk={paint:new le({"fill-antialias":new V(Ge.paint_fill["fill-antialias"]),"fill-opacity":new K(Ge.paint_fill["fill-opacity"]),"fill-color":new K(Ge.paint_fill["fill-color"]),"fill-outline-color":new K(Ge.paint_fill["fill-outline-color"]),"fill-translate":new V(Ge.paint_fill["fill-translate"]),"fill-translate-anchor":new V(Ge.paint_fill["fill-translate-anchor"]),"fill-pattern":new K(Ge.paint_fill["fill-pattern"])}),layout:ak};const uk=ke([{name:"a_pos_normal_ed",components:4,type:"Int16"}]),ck=ke([{name:"a_centroid_pos",components:2,type:"Uint16"}]),hk=ke([{name:"a_pos_3",components:3,type:"Int16"},{name:"a_pos_normal_3",components:3,type:"Int16"}]),{members:fk}=uk;var Qf={},pk=_t,X0=Fu;function Fu(t,e,i,r,u){this.properties={},this.extent=i,this.type=0,this._pbf=t,this._geometry=-1,this._keys=r,this._values=u,t.readFields(dk,this,e)}function dk(t,e,i){t==1?e.id=i.readVarint():t==2?function(r,u){for(var f=r.readVarint()+r.pos;r.pos<f;){var m=u._keys[r.readVarint()],y=u._values[r.readVarint()];u.properties[m]=y}}(i,e):t==3?e.type=i.readVarint():t==4&&(e._geometry=i.pos)}function mk(t){for(var e,i,r=0,u=0,f=t.length,m=f-1;u<f;m=u++)r+=((i=t[m]).x-(e=t[u]).x)*(e.y+i.y);return r}Fu.types=["Unknown","Point","LineString","Polygon"],Fu.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,i=t.readVarint()+t.pos,r=1,u=0,f=0,m=0,y=[];t.pos<i;){if(u<=0){var E=t.readVarint();r=7&E,u=E>>3}if(u--,r===1||r===2)f+=t.readSVarint(),m+=t.readSVarint(),r===1&&(e&&y.push(e),e=[]),e.push(new pk(f,m));else{if(r!==7)throw new Error("unknown command "+r);e&&e.push(e[0].clone())}}return e&&y.push(e),y},Fu.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,i=1,r=0,u=0,f=0,m=1/0,y=-1/0,E=1/0,T=-1/0;t.pos<e;){if(r<=0){var C=t.readVarint();i=7&C,r=C>>3}if(r--,i===1||i===2)(u+=t.readSVarint())<m&&(m=u),u>y&&(y=u),(f+=t.readSVarint())<E&&(E=f),f>T&&(T=f);else if(i!==7)throw new Error("unknown command "+i)}return[m,E,y,T]},Fu.prototype.toGeoJSON=function(t,e,i){var r,u,f=this.extent*Math.pow(2,i),m=this.extent*t,y=this.extent*e,E=this.loadGeometry(),T=Fu.types[this.type];function C(B){for(var U=0;U<B.length;U++){var G=B[U];B[U]=[360*(G.x+m)/f-180,360/Math.PI*Math.atan(Math.exp((180-360*(G.y+y)/f)*Math.PI/180))-90]}}switch(this.type){case 1:var L=[];for(r=0;r<E.length;r++)L[r]=E[r][0];C(E=L);break;case 2:for(r=0;r<E.length;r++)C(E[r]);break;case 3:for(E=function(B){var U=B.length;if(U<=1)return[B];for(var G,H,ne=[],de=0;de<U;de++){var re=mk(B[de]);re!==0&&(H===void 0&&(H=re<0),H===re<0?(G&&ne.push(G),G=[B[de]]):G.push(B[de]))}return G&&ne.push(G),ne}(E),r=0;r<E.length;r++)for(u=0;u<E[r].length;u++)C(E[r][u])}E.length===1?E=E[0]:T="Multi"+T;var D={type:"Feature",geometry:{type:T,coordinates:E},properties:this.properties};return"id"in this&&(D.id=this.id),D};var gk=X0,W0=Y0;function Y0(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(_k,this,e),this.length=this._features.length}function _k(t,e,i){t===15?e.version=i.readVarint():t===1?e.name=i.readString():t===5?e.extent=i.readVarint():t===2?e._features.push(i.pos):t===3?e._keys.push(i.readString()):t===4&&e._values.push(function(r){for(var u=null,f=r.readVarint()+r.pos;r.pos<f;){var m=r.readVarint()>>3;u=m===1?r.readString():m===2?r.readFloat():m===3?r.readDouble():m===4?r.readVarint64():m===5?r.readVarint():m===6?r.readSVarint():m===7?r.readBoolean():null}return u}(i))}Y0.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new gk(this._pbf,e,this.extent,this._keys,this._values)};var yk=W0;function vk(t,e,i){if(t===3){var r=new yk(i,i.readVarint()+i.pos);r.length&&(e[r.name]=r)}}var Om=Qf.VectorTile=function(t,e){this.layers=t.readFields(vk,{},e)},ep=Qf.VectorTileFeature=X0;function tp(t,e,i,r){const u=[],f=r===0?(m,y,E,T,C,L)=>{m.push(new Oe(L,E+(L-y)/(T-y)*(C-E)))}:(m,y,E,T,C,L)=>{m.push(new Oe(y+(L-E)/(C-E)*(T-y),L))};for(const m of t){const y=[];for(const E of m){if(E.length<=2)continue;const T=[];for(let D=0;D<E.length-1;D++){const B=E[D].x,U=E[D].y,G=E[D+1].x,H=E[D+1].y,ne=r===0?B:U,de=r===0?G:H;ne<e?de>e&&f(T,B,U,G,H,e):ne>i?de<i&&f(T,B,U,G,H,i):T.push(E[D]),de<e&&ne>=e&&f(T,B,U,G,H,e),de>i&&ne<=i&&f(T,B,U,G,H,i)}let C=E[E.length-1];const L=r===0?C.x:C.y;L>=e&&L<=i&&T.push(C),T.length&&(C=T[T.length-1],T[0].x===C.x&&T[0].y===C.y||T.push(T[0]),y.push(T))}y.length&&u.push(y)}return u}Qf.VectorTileLayer=W0;const xk=ep.types,bk=Math.pow(2,13);function rh(t,e,i,r,u,f,m,y){t.emplaceBack((e<<1)+m,(i<<1)+f,(Math.floor(r*bk)<<1)+u,Math.round(y))}function oh(t,e,i){t.emplaceBack(e.x,e.y,e.z,i[0]*16384,i[1]*16384,i[2]*16384)}class H0{constructor(){this.acc=new Oe(0,0),this.polyCount=[]}startRing(e){this.currentPolyCount={edges:0,top:0},this.polyCount.push(this.currentPolyCount),this.min||(this.min=new Oe(e.x,e.y),this.max=new Oe(e.x,e.y))}append(e,i){this.currentPolyCount.edges++,this.acc._add(e);const r=this.min,u=this.max;e.x<r.x?r.x=e.x:e.x>u.x&&(u.x=e.x),e.y<r.y?r.y=e.y:e.y>u.y&&(u.y=e.y),((e.x===0||e.x===Ft)&&e.x===i.x)!=((e.y===0||e.y===Ft)&&e.y===i.y)&&this.processBorderOverlap(e,i),i.x<0!=e.x<0&&this.addBorderIntersection(0,bi(i.y,e.y,(0-i.x)/(e.x-i.x))),i.x>Ft!=e.x>Ft&&this.addBorderIntersection(1,bi(i.y,e.y,(Ft-i.x)/(e.x-i.x))),i.y<0!=e.y<0&&this.addBorderIntersection(2,bi(i.x,e.x,(0-i.y)/(e.y-i.y))),i.y>Ft!=e.y>Ft&&this.addBorderIntersection(3,bi(i.x,e.x,(Ft-i.y)/(e.y-i.y)))}addBorderIntersection(e,i){this.borders||(this.borders=[[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE],[Number.MAX_VALUE,-Number.MAX_VALUE]]);const r=this.borders[e];i<r[0]&&(r[0]=i),i>r[1]&&(r[1]=i)}processBorderOverlap(e,i){if(e.x===i.x){if(e.y===i.y)return;const r=e.x===0?0:1;this.addBorderIntersection(r,i.y),this.addBorderIntersection(r,e.y)}else{const r=e.y===0?2:3;this.addBorderIntersection(r,i.x),this.addBorderIntersection(r,e.x)}}centroid(){const e=this.polyCount.reduce((i,r)=>i+r.edges,0);return e!==0?this.acc.div(e)._round():new Oe(0,0)}span(){return new Oe(this.max.x-this.min.x,this.max.y-this.min.y)}intersectsCount(){return this.borders.reduce((e,i)=>e+ +(i[0]!==Number.MAX_VALUE),0)}}class sh{constructor(e){this.zoom=e.zoom,this.canonical=e.canonical,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(i=>i.id),this.index=e.index,this.hasPattern=!1,this.edgeRadius=0,this.projection=e.projection,this.layoutVertexArray=new We,this.centroidVertexArray=new Ho,this.indexArray=new Ot,this.programConfigurations=new Pl(e.layers,e.zoom),this.segments=new En,this.stateDependentLayerIds=this.layers.filter(i=>i.isStateDependent()).map(i=>i.id),this.enableTerrain=e.enableTerrain}populate(e,i,r,u){this.features=[],this.hasPattern=Rm("fill-extrusion",this.layers,i),this.featuresOnBorder=[],this.borders=[[],[],[],[]],this.borderDoneWithNeighborZ=[-1,-1,-1,-1],this.tileToMeter=function(f){const m=Math.exp(Math.PI*(1-f.y/(1<<f.z)*2));return 80150034*m/(m*m+1)/Ft/(1<<f.z)}(r),this.edgeRadius=this.layers[0].layout.get("fill-extrusion-edge-radius")/this.tileToMeter;for(const{feature:f,id:m,index:y,sourceLayerIndex:E}of e){const T=this.layers[0]._featureFilter.needGeometry,C=Nl(f,T);if(!this.layers[0]._featureFilter.filter(new P(this.zoom),C,r))continue;const L={id:m,sourceLayerIndex:E,index:y,geometry:T?C.geometry:oa(f,r,u),properties:f.properties,type:f.type,patterns:{}},D=this.layoutVertexArray.length;this.hasPattern?this.features.push(Dm("fill-extrusion",this.layers,L,this.zoom,i)):this.addFeature(L,L.geometry,y,r,{},i.availableImages,u),i.featureIndex.insert(f,L.geometry,y,E,this.index,D)}this.sortBorders()}addFeatures(e,i,r,u,f){for(const m of this.features){const{geometry:y}=m;this.addFeature(m,y,m.index,i,r,u,f)}this.sortBorders()}update(e,i,r,u){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,r,u)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,fk),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.layoutVertexExtArray&&(this.layoutVertexExtBuffer=e.createVertexBuffer(this.layoutVertexExtArray,hk.members,!0))),this.programConfigurations.upload(e),this.uploaded=!0}uploadCentroid(e){this.centroidVertexArray.length!==0&&(this.centroidVertexBuffer?this.needsCentroidUpdate&&this.centroidVertexBuffer.updateData(this.centroidVertexArray):this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,ck.members,!0),this.needsCentroidUpdate=!1)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.centroidVertexBuffer&&this.centroidVertexBuffer.destroy(),this.layoutVertexExtBuffer&&this.layoutVertexExtBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(e,i,r,u,f,m,y){const E=[new Oe(0,0),new Oe(Ft,Ft)],T=y.projection,C=T.name==="globe",L=this.enableTerrain&&!C?new H0:null,D=xk[e.type]==="Polygon";C&&!this.layoutVertexExtArray&&(this.layoutVertexExtArray=new rt);const B=Lm(i,500);for(let ne=B.length-1;ne>=0;ne--){const de=B[ne];(de.length===0||(U=de[0]).every(re=>re.x<=0)||U.every(re=>re.x>=Ft)||U.every(re=>re.y<=0)||U.every(re=>re.y>=Ft))&&B.splice(ne,1)}var U;let G;if(C)G=nx(B,E,u);else{G=[];for(const ne of B)G.push({polygon:ne,bounds:E})}const H=D?this.edgeRadius:0;for(const{polygon:ne,bounds:de}of G){let re=0,fe=0;for(const ge of ne)D&&!ge[0].equals(ge[ge.length-1])&&ge.push(ge[0]),fe+=D?ge.length-1:ge.length;const ve=this.segments.prepareSegment((D?5:4)*fe,this.layoutVertexArray,this.indexArray);if(D){const ge=[],Be=[];re=ve.vertexLength;for(const qe of ne){let it,Ve;qe.length&&qe!==ne[0]&&Be.push(ge.length/2),it=qe[1].sub(qe[0])._perp()._unit();for(let Ye=1;Ye<qe.length;Ye++){const He=qe[Ye],Je=qe[Ye===qe.length-1?1:Ye+1];let{x:at,y:$e}=He;if(H){Ve=Je.sub(He)._perp()._unit();const vt=it.add(Ve)._unit(),Lt=H*Math.min(4,1/(it.x*vt.x+it.y*vt.y));at+=Lt*vt.x,$e+=Lt*vt.y,it=Ve}rh(this.layoutVertexArray,at,$e,0,0,1,1,0),ve.vertexLength++,ge.push(He.x,He.y),C&&oh(this.layoutVertexExtArray,T.projectTilePoint(at,$e,u),T.upVector(u,at,$e))}}const De=Pm(ge,Be);for(let qe=0;qe<De.length;qe+=3)this.indexArray.emplaceBack(re+De[qe],re+De[qe+2],re+De[qe+1]),ve.primitiveLength++}for(const ge of ne){L&&ge.length&&L.startRing(ge[0]);let Be,De,qe,it=ge.length>4&&ex(ge[ge.length-2],ge[0],ge[1]),Ve=H?wk(ge[ge.length-2],ge[0],ge[1],H):0;De=ge[1].sub(ge[0])._perp()._unit();let Ye=!0;for(let He=1,Je=0;He<ge.length;He++){let at=ge[He-1],$e=ge[He];const vt=ge[He===ge.length-1?1:He+1];if(L&&D&&L.currentPolyCount.top++,Q0($e,at,de)){H&&(De=vt.sub($e)._perp()._unit(),Ye=!Ye);continue}L&&L.append($e,at);const Lt=$e.sub(at)._perp(),xt=Lt.x/(Math.abs(Lt.x)+Math.abs(Lt.y)),ni=Lt.y>0?1:0,lt=at.dist($e);if(Je+lt>32768&&(Je=0),H){qe=vt.sub($e)._perp()._unit();let oi=J0(at,$e,vt,K0(De,qe),H);isNaN(oi)&&(oi=0);const Gt=$e.sub(at)._unit();at=at.add(Gt.mult(Ve))._round(),$e=$e.add(Gt.mult(-oi))._round(),Ve=oi,De=qe}const Nt=ve.vertexLength,ri=ge.length>4&&ex(at,$e,vt);let Ii=tx(Je,it,Ye);if(rh(this.layoutVertexArray,at.x,at.y,xt,ni,0,0,Ii),rh(this.layoutVertexArray,at.x,at.y,xt,ni,0,1,Ii),Je+=lt,Ii=tx(Je,ri,!Ye),it=ri,rh(this.layoutVertexArray,$e.x,$e.y,xt,ni,0,0,Ii),rh(this.layoutVertexArray,$e.x,$e.y,xt,ni,0,1,Ii),ve.vertexLength+=4,this.indexArray.emplaceBack(Nt+0,Nt+1,Nt+2),this.indexArray.emplaceBack(Nt+1,Nt+3,Nt+2),ve.primitiveLength+=2,H){const oi=re+(He===1?ge.length-2:He-2),Gt=He===1?re:oi+1;if(this.indexArray.emplaceBack(Nt+1,oi,Nt+3),this.indexArray.emplaceBack(oi,Gt,Nt+3),ve.primitiveLength+=2,Be===void 0&&(Be=Nt),!Q0(vt,ge[He],de)){const Qi=He===ge.length-1?Be:ve.vertexLength;this.indexArray.emplaceBack(Nt+2,Nt+3,Qi),this.indexArray.emplaceBack(Nt+3,Qi+1,Qi),this.indexArray.emplaceBack(Nt+3,Gt,Qi+1),ve.primitiveLength+=3}Ye=!Ye}if(C){const oi=this.layoutVertexExtArray,Gt=T.projectTilePoint(at.x,at.y,u),Qi=T.projectTilePoint($e.x,$e.y,u),si=T.upVector(u,at.x,at.y),ai=T.upVector(u,$e.x,$e.y);oh(oi,Gt,si),oh(oi,Gt,si),oh(oi,Qi,ai),oh(oi,Qi,ai)}}D&&(re+=ge.length-1)}}if(L&&L.polyCount.length>0){if(L.borders){L.vertexArrayOffset=this.centroidVertexArray.length;const ne=L.borders,de=this.featuresOnBorder.push(L)-1;for(let re=0;re<4;re++)ne[re][0]!==Number.MAX_VALUE&&this.borders[re].push(de)}this.encodeCentroid(L.borders?void 0:L.centroid(),L)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,r,f,m,u)}sortBorders(){for(let e=0;e<4;e++)this.borders[e].sort((i,r)=>this.featuresOnBorder[i].borders[e][0]-this.featuresOnBorder[r].borders[e][0])}encodeCentroid(e,i,r=!0){let u,f;if(e)if(e.y!==0){const y=i.span()._mult(this.tileToMeter);u=(Math.max(e.x,1)<<3)+Math.min(7,Math.round(y.x/10)),f=(Math.max(e.y,1)<<3)+Math.min(7,Math.round(y.y/10))}else u=Math.ceil(7*(e.x+450)),f=0;else u=0,f=+r;let m=r?this.centroidVertexArray.length:i.vertexArrayOffset;for(const y of i.polyCount){r&&this.centroidVertexArray.resize(this.centroidVertexArray.length+4*y.edges+y.top);for(let E=0;E<y.top;E++)this.centroidVertexArray.emplace(m++,u,f);for(let E=0;E<2*y.edges;E++)this.centroidVertexArray.emplace(m++,0,f),this.centroidVertexArray.emplace(m++,u,f)}}}function K0(t,e){const i=t.add(e)._unit();return t.x*i.x+t.y*i.y}function wk(t,e,i,r){const u=e.sub(t)._perp()._unit(),f=i.sub(e)._perp()._unit();return J0(t,e,i,K0(u,f),r)}function J0(t,e,i,r,u){const f=Math.sqrt(1-r*r);return Math.min(t.dist(e)/3,e.dist(i)/3,u*f/r)}function Q0(t,e,i){return t.x<i[0].x&&e.x<i[0].x||t.x>i[1].x&&e.x>i[1].x||t.y<i[0].y&&e.y<i[0].y||t.y>i[1].y&&e.y>i[1].y}function ex(t,e,i){if(t.x<0||t.x>=Ft||e.x<0||e.x>=Ft||i.x<0||i.x>=Ft)return!1;const r=i.sub(e),u=r.perp(),f=t.sub(e);return(r.x*f.x+r.y*f.y)/Math.sqrt((r.x*r.x+r.y*r.y)*(f.x*f.x+f.y*f.y))>-.866&&u.x*f.x+u.y*f.y<0}function tx(t,e,i){const r=e?2|t:-3&t;return i?1|r:-2&r}function ix(){const t=Math.PI/32,e=Math.tan(t),i=Qc;return i*Math.sqrt(1+2*e*e)-i}function nx(t,e,i){const r=1<<i.z,u=po(i.x/r),f=po((i.x+1)/r),m=cr(i.y/r),y=cr((i.y+1)/r);return function(E,T,C,L,D=0,B){const U=[];if(!E.length||!C||!L)return U;const G=(ge,Be)=>{for(const De of ge)U.push({polygon:De,bounds:Be})},H=Math.ceil(Math.log2(C)),ne=Math.ceil(Math.log2(L)),de=H-ne,re=[];for(let ge=0;ge<Math.abs(de);ge++)re.push(de>0?0:1);for(let ge=0;ge<Math.min(H,ne);ge++)re.push(0),re.push(1);let fe=E;if(fe=tp(fe,T[0].y-D,T[1].y+D,1),fe=tp(fe,T[0].x-D,T[1].x+D,0),!fe.length)return U;const ve=[];for(re.length?ve.push({polygons:fe,bounds:T,depth:0}):G(fe,T);ve.length;){const ge=ve.pop(),Be=ge.depth,De=re[Be],qe=ge.bounds[0],it=ge.bounds[1],Ve=De===0?qe.x:qe.y,Ye=De===0?it.x:it.y,He=B?B(De,Ve,Ye):.5*(Ve+Ye),Je=tp(ge.polygons,Ve-D,He+D,De),at=tp(ge.polygons,He-D,Ye+D,De);if(Je.length){const $e=[qe,new Oe(De===0?He:it.x,De===1?He:it.y)];re.length>Be+1?ve.push({polygons:Je,bounds:$e,depth:Be+1}):G(Je,$e)}if(at.length){const $e=[new Oe(De===0?He:qe.x,De===1?He:qe.y),it];re.length>Be+1?ve.push({polygons:at,bounds:$e,depth:Be+1}):G(at,$e)}}return U}(t,e,Math.ceil((f-u)/11.25),Math.ceil((m-y)/11.25),1,(E,T,C)=>{if(E===0)return .5*(T+C);{const L=cr((i.y+T/Ft)/r);return(Ms(.5*(cr((i.y+C/Ft)/r)+L))*r-i.y)*Ft}})}Ct(sh,"FillExtrusionBucket",{omit:["layers","features"]}),Ct(H0,"PartMetadata");const Ek=new le({"fill-extrusion-edge-radius":new V(Ge["layout_fill-extrusion"]["fill-extrusion-edge-radius"])});var Tk={paint:new le({"fill-extrusion-opacity":new V(Ge["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new K(Ge["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new V(Ge["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new V(Ge["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new K(Ge["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new K(Ge["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new K(Ge["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new V(Ge["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"]),"fill-extrusion-ambient-occlusion-intensity":new V(Ge["paint_fill-extrusion"]["fill-extrusion-ambient-occlusion-intensity"]),"fill-extrusion-ambient-occlusion-radius":new V(Ge["paint_fill-extrusion"]["fill-extrusion-ambient-occlusion-radius"]),"fill-extrusion-rounded-roof":new V(Ge["paint_fill-extrusion"]["fill-extrusion-rounded-roof"])}),layout:Ek};function rx(t,e,i){var r=2*Math.PI*6378137/256/Math.pow(2,i);return[t*r-2*Math.PI*6378137/2,e*r-2*Math.PI*6378137/2]}class ip{constructor(e,i,r){this.z=e,this.x=i,this.y=r,this.key=ah(0,e,e,i,r)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,i){const r=function(f,m,y){var E=rx(256*f,256*(m=Math.pow(2,y)-m-1),y),T=rx(256*(f+1),256*(m+1),y);return E[0]+","+E[1]+","+T[0]+","+T[1]}(this.x,this.y,this.z),u=function(f,m,y){let E,T="";for(let C=f;C>0;C--)E=1<<C-1,T+=(m&E?1:0)+(y&E?2:0);return T}(this.z,this.x,this.y);return e[(this.x+this.y)%e.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(i==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",u).replace("{bbox-epsg-3857}",r)}toString(){return`${this.z}/${this.x}/${this.y}`}}class ox{constructor(e,i){this.wrap=e,this.canonical=i,this.key=ah(e,i.z,i.z,i.x,i.y)}}class Cr{constructor(e,i,r,u,f){this.overscaledZ=e,this.wrap=i,this.canonical=new ip(r,+u,+f),this.key=i===0&&e===r?this.canonical.key:ah(i,e,r,u,f)}equals(e){return this.overscaledZ===e.overscaledZ&&this.wrap===e.wrap&&this.canonical.equals(e.canonical)}scaledTo(e){const i=this.canonical.z-e;return e>this.canonical.z?new Cr(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Cr(e,this.wrap,e,this.canonical.x>>i,this.canonical.y>>i)}calculateScaledKey(e,i=!0){if(this.overscaledZ===e&&i)return this.key;if(e>this.canonical.z)return ah(this.wrap*+i,e,this.canonical.z,this.canonical.x,this.canonical.y);{const r=this.canonical.z-e;return ah(this.wrap*+i,e,e,this.canonical.x>>r,this.canonical.y>>r)}}isChildOf(e){if(e.wrap!==this.wrap)return!1;const i=this.canonical.z-e.canonical.z;return e.overscaledZ===0||e.overscaledZ<this.overscaledZ&&e.canonical.x===this.canonical.x>>i&&e.canonical.y===this.canonical.y>>i}children(e){if(this.overscaledZ>=e)return[new Cr(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const i=this.canonical.z+1,r=2*this.canonical.x,u=2*this.canonical.y;return[new Cr(i,this.wrap,i,r,u),new Cr(i,this.wrap,i,r+1,u),new Cr(i,this.wrap,i,r,u+1),new Cr(i,this.wrap,i,r+1,u+1)]}isLessThan(e){return this.wrap<e.wrap||!(this.wrap>e.wrap)&&(this.overscaledZ<e.overscaledZ||!(this.overscaledZ>e.overscaledZ)&&(this.canonical.x<e.canonical.x||!(this.canonical.x>e.canonical.x)&&this.canonical.y<e.canonical.y))}wrapped(){return new Cr(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(e){return new Cr(this.overscaledZ,e,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new ox(this.wrap,this.canonical)}toString(){return`${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}}function ah(t,e,i,r,u){const f=1<<Math.min(i,22);let m=f*(u%f)+r%f;return t&&i<22&&(m+=f*f*((t<0?-2*t-1:2*t)%(1<<2*(22-i)))),16*(32*m+i)+(e-i)}Ct(ip,"CanonicalTileID"),Ct(Cr,"OverscaledTileID",{omit:["projMatrix"]});class Uu extends Oe{constructor(e,i,r){super(e,i),this.z=r}}function lh(t,e){return t.x*e.x+t.y*e.y}function sx(t,e){if(t.length===1){let i=0;const r=e[i++];let u;for(;!u||r.equals(u);)if(u=e[i++],!u)return 1/0;for(;i<e.length;i++){const f=e[i],m=t[0],y=u.sub(r),E=f.sub(r),T=m.sub(r),C=lh(y,y),L=lh(y,E),D=lh(E,E),B=lh(T,y),U=lh(T,E),G=C*D-L*L,H=(D*B-L*U)/G,ne=(C*U-L*B)/G,de=r.z*(1-H-ne)+u.z*H+f.z*ne;if(isFinite(de))return de}return 1/0}{let i=1/0;for(const r of e)i=Math.min(i,r.z);return i}}function ax(t,e,i,r,u,f,m,y){const E=m*u.getElevationAt(t,e,!0,!0),T=f[0]!==0,C=T?f[1]===0?m*(f[0]/7-450):m*function(L,D,B){const U=Math.floor(D[0]/8),G=Math.floor(D[1]/8),H=10*(D[0]-8*U),ne=10*(D[1]-8*G),de=L.getElevationAt(U,G,!0,!0),re=L.getMeterToDEM(B),fe=Math.floor(.5*(H*re-1)),ve=Math.floor(.5*(ne*re-1)),ge=L.tileCoordToPixel(U,G),Be=2*fe+1,De=2*ve+1,qe=function(at,$e,vt,Lt,xt){return[at.getElevationAtPixel($e,vt,!0),at.getElevationAtPixel($e+xt,vt,!0),at.getElevationAtPixel($e,vt+xt,!0),at.getElevationAtPixel($e+Lt,vt+xt,!0)]}(L,ge.x-fe,ge.y-ve,Be,De),it=Math.abs(qe[0]-qe[1]),Ve=Math.abs(qe[2]-qe[3]),Ye=Math.abs(qe[0]-qe[2])+Math.abs(qe[1]-qe[3]),He=Math.min(.25,.5*re*(it+Ve)/Be),Je=Math.min(.25,.5*re*Ye/De);return de+Math.max(He*H,Je*ne)}(u,f,y):E;return{base:E+(i===0)?-1:i,top:T?Math.max(C+r,E+i+2):E+r}}const Sk=ke([{name:"a_pos_normal",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"},{name:"a_linesofar",components:1,type:"Float32"}],4),{members:Ik}=Sk,kk=ke([{name:"a_packed",components:4,type:"Float32"}]),{members:Mk}=kk,Ak=ep.types,Ck=Math.cos(Math.PI/180*37.5);class np{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(i=>i.id),this.index=e.index,this.projection=e.projection,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(i=>{this.gradients[i.id]={}}),this.layoutVertexArray=new je,this.layoutVertexArray2=new et,this.indexArray=new Ot,this.programConfigurations=new Pl(e.layers,e.zoom),this.segments=new En,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(i=>i.isStateDependent()).map(i=>i.id)}populate(e,i,r,u){this.hasPattern=Rm("line",this.layers,i);const f=this.layers[0].layout.get("line-sort-key"),m=[];for(const{feature:C,id:L,index:D,sourceLayerIndex:B}of e){const U=this.layers[0]._featureFilter.needGeometry,G=Nl(C,U);if(!this.layers[0]._featureFilter.filter(new P(this.zoom),G,r))continue;const H=f?f.evaluate(G,{},r):void 0,ne={id:L,properties:C.properties,type:C.type,sourceLayerIndex:B,index:D,geometry:U?G.geometry:oa(C,r,u),patterns:{},sortKey:H};m.push(ne)}f&&m.sort((C,L)=>C.sortKey-L.sortKey);const{lineAtlas:y,featureIndex:E}=i,T=this.addConstantDashes(y);for(const C of m){const{geometry:L,index:D,sourceLayerIndex:B}=C;if(T&&this.addFeatureDashes(C,y),this.hasPattern){const U=Dm("line",this.layers,C,this.zoom,i);this.patternFeatures.push(U)}else this.addFeature(C,L,D,r,y.positions,i.availableImages);E.insert(e[D].feature,L,D,B,this.index)}}addConstantDashes(e){let i=!1;for(const r of this.layers){const u=r.paint.get("line-dasharray").value,f=r.layout.get("line-cap").value;if(u.kind!=="constant"||f.kind!=="constant")i=!0;else{const m=f.value,y=u.value;if(!y)continue;e.addDash(y,m)}}return i}addFeatureDashes(e,i){const r=this.zoom;for(const u of this.layers){const f=u.paint.get("line-dasharray").value,m=u.layout.get("line-cap").value;if(f.kind==="constant"&&m.kind==="constant")continue;let y,E;if(f.kind==="constant"){if(y=f.value,!y)continue}else y=f.evaluate({zoom:r},e);E=m.kind==="constant"?m.value:m.evaluate({zoom:r},e),i.addDash(y,E),e.patterns[u.id]=i.getKey(y,E)}}update(e,i,r,u){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,r,u)}addFeatures(e,i,r,u,f){for(const m of this.patternFeatures)this.addFeature(m,m.geometry,m.index,i,r,u)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,Mk)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Ik),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(e){if(e.properties&&e.properties.hasOwnProperty("mapbox_clip_start")&&e.properties.hasOwnProperty("mapbox_clip_end"))return{start:+e.properties.mapbox_clip_start,end:+e.properties.mapbox_clip_end}}addFeature(e,i,r,u,f,m){const y=this.layers[0].layout,E=y.get("line-join").evaluate(e,{}),T=y.get("line-cap").evaluate(e,{}),C=y.get("line-miter-limit"),L=y.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(const D of i)this.addLine(D,e,E,T,C,L);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,r,f,m,u)}addLine(e,i,r,u,f,m){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineSoFar=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let ne=0;ne<e.length-1;ne++)this.totalDistance+=e[ne].dist(e[ne+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance)}const y=Ak[i.type]==="Polygon";let E=e.length;for(;E>=2&&e[E-1].equals(e[E-2]);)E--;let T=0;for(;T<E-1&&e[T].equals(e[T+1]);)T++;if(E<(y?3:2))return;r==="bevel"&&(f=1.05);const C=this.overscaling<=16?15*Ft/(512*this.overscaling):0,L=this.segments.prepareSegment(10*E,this.layoutVertexArray,this.indexArray);let D,B,U,G,H;this.e1=this.e2=-1,y&&(D=e[E-2],H=e[T].sub(D)._unit()._perp());for(let ne=T;ne<E;ne++){if(U=ne===E-1?y?e[T+1]:void 0:e[ne+1],U&&e[ne].equals(U))continue;H&&(G=H),D&&(B=D),D=e[ne],H=U?U.sub(D)._unit()._perp():G,G=G||H;let de=G.add(H);de.x===0&&de.y===0||de._unit();const re=G.x*H.x+G.y*H.y,fe=de.x*H.x+de.y*H.y,ve=fe!==0?1/fe:1/0,ge=2*Math.sqrt(2-2*fe),Be=fe<Ck&&B&&U,De=G.x*H.y-G.y*H.x>0;if(Be&&ne>T){const Ve=D.dist(B);if(Ve>2*C){const Ye=D.sub(D.sub(B)._mult(C/Ve)._round());this.updateDistance(B,Ye),this.addCurrentVertex(Ye,G,0,0,L),B=Ye}}const qe=B&&U;let it=qe?r:y?"butt":u;if(qe&&it==="round"&&(ve<m?it="miter":ve<=2&&(it="fakeround")),it==="miter"&&ve>f&&(it="bevel"),it==="bevel"&&(ve>2&&(it="flipbevel"),ve<f&&(it="miter")),B&&this.updateDistance(B,D),it==="miter")de._mult(ve),this.addCurrentVertex(D,de,0,0,L);else if(it==="flipbevel"){if(ve>100)de=H.mult(-1);else{const Ve=ve*G.add(H).mag()/G.sub(H).mag();de._perp()._mult(Ve*(De?-1:1))}this.addCurrentVertex(D,de,0,0,L),this.addCurrentVertex(D,de.mult(-1),0,0,L)}else if(it==="bevel"||it==="fakeround"){const Ve=-Math.sqrt(ve*ve-1),Ye=De?Ve:0,He=De?0:Ve;if(B&&this.addCurrentVertex(D,G,Ye,He,L),it==="fakeround"){const Je=Math.round(180*ge/Math.PI/20);for(let at=1;at<Je;at++){let $e=at/Je;if($e!==.5){const Lt=$e-.5;$e+=$e*Lt*($e-1)*((1.0904+re*(re*(3.55645-1.43519*re)-3.2452))*Lt*Lt+(.848013+re*(.215638*re-1.06021)))}const vt=H.sub(G)._mult($e)._add(G)._unit()._mult(De?-1:1);this.addHalfVertex(D,vt.x,vt.y,!1,De,0,L)}}U&&this.addCurrentVertex(D,H,-Ye,-He,L)}else if(it==="butt")this.addCurrentVertex(D,de,0,0,L);else if(it==="square"){const Ve=B?1:-1;B||this.addCurrentVertex(D,de,Ve,Ve,L),this.addCurrentVertex(D,de,0,0,L),B&&this.addCurrentVertex(D,de,Ve,Ve,L)}else it==="round"&&(B&&(this.addCurrentVertex(D,G,0,0,L),this.addCurrentVertex(D,G,1,1,L,!0)),U&&(this.addCurrentVertex(D,H,-1,-1,L,!0),this.addCurrentVertex(D,H,0,0,L)));if(Be&&ne<E-1){const Ve=D.dist(U);if(Ve>2*C){const Ye=D.add(U.sub(D)._mult(C/Ve)._round());this.updateDistance(D,Ye),this.addCurrentVertex(Ye,H,0,0,L),D=Ye}}}}addCurrentVertex(e,i,r,u,f,m=!1){const y=i.y*u-i.x,E=-i.y-i.x*u;this.addHalfVertex(e,i.x+i.y*r,i.y-i.x*r,m,!1,r,f),this.addHalfVertex(e,y,E,m,!0,-u,f)}addHalfVertex({x:e,y:i},r,u,f,m,y,E){this.layoutVertexArray.emplaceBack((e<<1)+(f?1:0),(i<<1)+(m?1:0),Math.round(63*r)+128,Math.round(63*u)+128,1+(y===0?0:y<0?-1:1),0,this.lineSoFar),this.lineClips&&this.layoutVertexArray2.emplaceBack(this.scaledDistance,this.lineClipsArray.length,this.lineClips.start,this.lineClips.end);const T=E.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,T),E.primitiveLength++),m?this.e2=T:this.e1=T}updateScaledDistance(){if(this.lineClips){const e=this.totalDistance/(this.lineClips.end-this.lineClips.start);this.scaledDistance=this.distance/this.totalDistance,this.lineSoFar=e*this.lineClips.start+this.distance}else this.lineSoFar=this.distance}updateDistance(e,i){this.distance+=e.dist(i),this.updateScaledDistance()}}Ct(np,"LineBucket",{omit:["layers","patternFeatures"]});const Pk=new le({"line-cap":new K(Ge.layout_line["line-cap"]),"line-join":new K(Ge.layout_line["line-join"]),"line-miter-limit":new V(Ge.layout_line["line-miter-limit"]),"line-round-limit":new V(Ge.layout_line["line-round-limit"]),"line-sort-key":new K(Ge.layout_line["line-sort-key"])});var lx={paint:new le({"line-opacity":new K(Ge.paint_line["line-opacity"]),"line-color":new K(Ge.paint_line["line-color"]),"line-translate":new V(Ge.paint_line["line-translate"]),"line-translate-anchor":new V(Ge.paint_line["line-translate-anchor"]),"line-width":new K(Ge.paint_line["line-width"]),"line-gap-width":new K(Ge.paint_line["line-gap-width"]),"line-offset":new K(Ge.paint_line["line-offset"]),"line-blur":new K(Ge.paint_line["line-blur"]),"line-dasharray":new K(Ge.paint_line["line-dasharray"]),"line-pattern":new K(Ge.paint_line["line-pattern"]),"line-gradient":new ae(Ge.paint_line["line-gradient"]),"line-trim-offset":new V(Ge.paint_line["line-trim-offset"])}),layout:Pk};const ux=new class extends K{possiblyEvaluate(t,e){return e=new P(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,i,r){return e=Wt({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,i,r)}}(lx.paint.properties["line-width"].specification);function cx(t,e){return e>0?e+2*t:t}ux.useIntegerZoom=!0;const Lk=ke([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_tex_size",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),Rk=ke([{name:"a_globe_anchor",components:3,type:"Int16"},{name:"a_globe_normal",components:3,type:"Float32"}],4),Dk=ke([{name:"a_projected_pos",components:4,type:"Float32"}],4);ke([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const Ok=ke([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}]),zk=ke([{name:"a_size_scale",components:1,type:"Float32"},{name:"a_padding",components:2,type:"Float32"}]);ke([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Int16",name:"tileAnchorX"},{type:"Int16",name:"tileAnchorY"},{type:"Float32",name:"x1"},{type:"Float32",name:"y1"},{type:"Float32",name:"x2"},{type:"Float32",name:"y2"},{type:"Int16",name:"padding"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);const hx=ke([{name:"a_pos",components:3,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),Nk=ke([{name:"a_pos_2f",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);ke([{name:"triangle",components:3,type:"Uint16"}]),ke([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Float32",name:"tileAnchorX"},{type:"Float32",name:"tileAnchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"},{type:"Uint8",name:"flipState"}]),ke([{type:"Int16",name:"projectedAnchorX"},{type:"Int16",name:"projectedAnchorY"},{type:"Int16",name:"projectedAnchorZ"},{type:"Float32",name:"tileAnchorX"},{type:"Float32",name:"tileAnchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),ke([{type:"Float32",name:"offsetX"}]),ke([{type:"Int16",name:"x"},{type:"Int16",name:"y"}]);var Kn=24;const is=128;function zm(t,e){const{expression:i}=e;if(i.kind==="constant")return{kind:"constant",layoutSize:i.evaluate(new P(t+1))};if(i.kind==="source")return{kind:"source"};{const{zoomStops:r,interpolationType:u}=i;let f=0;for(;f<r.length&&r[f]<=t;)f++;f=Math.max(0,f-1);let m=f;for(;m<r.length&&r[m]<t+1;)m++;m=Math.min(r.length-1,m);const y=r[f],E=r[m];return i.kind==="composite"?{kind:"composite",minZoom:y,maxZoom:E,interpolationType:u}:{kind:"camera",minZoom:y,maxZoom:E,minSize:i.evaluate(new P(y)),maxSize:i.evaluate(new P(E)),interpolationType:u}}}function rp(t,{uSize:e,uSizeT:i},{lowerSize:r,upperSize:u}){return t.kind==="source"?r/is:t.kind==="composite"?bi(r/is,u/is,i):e}function ju(t,e){let i=0,r=0;if(t.kind==="constant")r=t.layoutSize;else if(t.kind!=="source"){const{interpolationType:u,minZoom:f,maxZoom:m}=t,y=u?Rt(jr.interpolationFactor(u,e,f,m),0,1):0;t.kind==="camera"?r=bi(t.minSize,t.maxSize,y):i=y}return{uSizeT:i,uSize:r}}var Bk=Object.freeze({__proto__:null,SIZE_PACK_FACTOR:is,evaluateSizeForFeature:rp,evaluateSizeForZoom:ju,getSizeData:zm});function Fk(t,e,i){return t.sections.forEach(r=>{r.text=function(u,f,m){const y=f.layout.get("text-transform").evaluate(m,{});return y==="uppercase"?u=u.toLocaleUpperCase():y==="lowercase"&&(u=u.toLocaleLowerCase()),M.applyArabicShaping&&(u=M.applyArabicShaping(u)),u}(r.text,e,i)}),t}const uh={"!":"︕","#":"",$:"","%":"","&":"","(":"︵",")":"︶","*":"","+":"",",":"︐","-":"︲",".":"・","/":"",":":"︓",";":"︔","<":"︿","=":"",">":"﹀","?":"︖","@":"","[":"﹇","\\":"","]":"﹈","^":"",_:"︳","`":"","{":"︷","|":"―","}":"︸","~":"","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","":"︲","—":"︱","":"﹃","":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","":"︹","":"︺","〖":"︗","〗":"︘","":"︕","":"︵","":"︶","":"︐","":"︲","":"・","":"︓","":"︔","":"︿","":"﹀","":"︖","":"﹇","":"﹈","_":"︳","":"︷","":"―","":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂","←":"↑","→":"↓"};function Uk(t){return t==="︶"||t==="﹈"||t==="︸"||t==="﹄"||t==="﹂"||t==="︾"||t==="︼"||t==="︺"||t==="︘"||t==="﹀"||t==="︐"||t==="︓"||t==="︔"||t===""||t===" ̄"||t==="︑"||t==="︒"}function jk(t){return t==="︵"||t==="﹇"||t==="︷"||t==="﹃"||t==="﹁"||t==="︽"||t==="︻"||t==="︹"||t==="︗"||t==="︿"}var fx=Wi,px=function(t,e,i,r,u){var f,m,y=8*u-r-1,E=(1<<y)-1,T=E>>1,C=-7,L=u-1,D=-1,B=t[e+L];for(L+=D,f=B&(1<<-C)-1,B>>=-C,C+=y;C>0;f=256*f+t[e+L],L+=D,C-=8);for(m=f&(1<<-C)-1,f>>=-C,C+=r;C>0;m=256*m+t[e+L],L+=D,C-=8);if(f===0)f=1-T;else{if(f===E)return m?NaN:1/0*(B?-1:1);m+=Math.pow(2,r),f-=T}return(B?-1:1)*m*Math.pow(2,f-r)},dx=function(t,e,i,r,u,f){var m,y,E,T=8*f-u-1,C=(1<<T)-1,L=C>>1,D=u===23?Math.pow(2,-24)-Math.pow(2,-77):0,B=0,U=1,G=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(y=isNaN(e)?1:0,m=C):(m=Math.floor(Math.log(e)/Math.LN2),e*(E=Math.pow(2,-m))<1&&(m--,E*=2),(e+=m+L>=1?D/E:D*Math.pow(2,1-L))*E>=2&&(m++,E/=2),m+L>=C?(y=0,m=C):m+L>=1?(y=(e*E-1)*Math.pow(2,u),m+=L):(y=e*Math.pow(2,L-1)*Math.pow(2,u),m=0));u>=8;t[i+B]=255&y,B+=U,y/=256,u-=8);for(m=m<<u|y,T+=u;T>0;t[i+B]=255&m,B+=U,m/=256,T-=8);t[i+B-U]|=128*G};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */function Wi(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}Wi.Varint=0,Wi.Fixed64=1,Wi.Bytes=2,Wi.Fixed32=5;var Nm=4294967296,mx=1/Nm,gx=typeof TextDecoder>"u"?null:new TextDecoder("utf8");function aa(t){return t.type===Wi.Bytes?t.readVarint()+t.pos:t.pos+1}function Vu(t,e,i){return i?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function _x(t,e,i){var r=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));i.realloc(r);for(var u=i.pos-1;u>=t;u--)i.buf[u+r]=i.buf[u]}function Vk(t,e){for(var i=0;i<t.length;i++)e.writeVarint(t[i])}function Gk(t,e){for(var i=0;i<t.length;i++)e.writeSVarint(t[i])}function $k(t,e){for(var i=0;i<t.length;i++)e.writeFloat(t[i])}function qk(t,e){for(var i=0;i<t.length;i++)e.writeDouble(t[i])}function Zk(t,e){for(var i=0;i<t.length;i++)e.writeBoolean(t[i])}function Xk(t,e){for(var i=0;i<t.length;i++)e.writeFixed32(t[i])}function Wk(t,e){for(var i=0;i<t.length;i++)e.writeSFixed32(t[i])}function Yk(t,e){for(var i=0;i<t.length;i++)e.writeFixed64(t[i])}function Hk(t,e){for(var i=0;i<t.length;i++)e.writeSFixed64(t[i])}function op(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function Gu(t,e,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function yx(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}Wi.prototype={destroy:function(){this.buf=null},readFields:function(t,e,i){for(i=i||this.length;this.pos<i;){var r=this.readVarint(),u=r>>3,f=this.pos;this.type=7&r,t(u,e,this),this.pos===f&&this.skip(r)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=op(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=yx(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=op(this.buf,this.pos)+op(this.buf,this.pos+4)*Nm;return this.pos+=8,t},readSFixed64:function(){var t=op(this.buf,this.pos)+yx(this.buf,this.pos+4)*Nm;return this.pos+=8,t},readFloat:function(){var t=px(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=px(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,i,r=this.buf;return e=127&(i=r[this.pos++]),i<128?e:(e|=(127&(i=r[this.pos++]))<<7,i<128?e:(e|=(127&(i=r[this.pos++]))<<14,i<128?e:(e|=(127&(i=r[this.pos++]))<<21,i<128?e:function(u,f,m){var y,E,T=m.buf;if(y=(112&(E=T[m.pos++]))>>4,E<128||(y|=(127&(E=T[m.pos++]))<<3,E<128)||(y|=(127&(E=T[m.pos++]))<<10,E<128)||(y|=(127&(E=T[m.pos++]))<<17,E<128)||(y|=(127&(E=T[m.pos++]))<<24,E<128)||(y|=(1&(E=T[m.pos++]))<<31,E<128))return Vu(u,y,f);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(i=r[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&gx?function(i,r,u){return gx.decode(i.subarray(r,u))}(this.buf,e,t):function(i,r,u){for(var f="",m=r;m<u;){var y,E,T,C=i[m],L=null,D=C>239?4:C>223?3:C>191?2:1;if(m+D>u)break;D===1?C<128&&(L=C):D===2?(192&(y=i[m+1]))==128&&(L=(31&C)<<6|63&y)<=127&&(L=null):D===3?(E=i[m+2],(192&(y=i[m+1]))==128&&(192&E)==128&&((L=(15&C)<<12|(63&y)<<6|63&E)<=2047||L>=55296&&L<=57343)&&(L=null)):D===4&&(E=i[m+2],T=i[m+3],(192&(y=i[m+1]))==128&&(192&E)==128&&(192&T)==128&&((L=(15&C)<<18|(63&y)<<12|(63&E)<<6|63&T)<=65535||L>=1114112)&&(L=null)),L===null?(L=65533,D=1):L>65535&&(L-=65536,f+=String.fromCharCode(L>>>10&1023|55296),L=56320|1023&L),f+=String.fromCharCode(L),m+=D}return f}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==Wi.Bytes)return t.push(this.readVarint(e));var i=aa(this);for(t=t||[];this.pos<i;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==Wi.Bytes)return t.push(this.readSVarint());var e=aa(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==Wi.Bytes)return t.push(this.readBoolean());var e=aa(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==Wi.Bytes)return t.push(this.readFloat());var e=aa(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==Wi.Bytes)return t.push(this.readDouble());var e=aa(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==Wi.Bytes)return t.push(this.readFixed32());var e=aa(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==Wi.Bytes)return t.push(this.readSFixed32());var e=aa(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==Wi.Bytes)return t.push(this.readFixed64());var e=aa(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t},readPackedSFixed64:function(t){if(this.type!==Wi.Bytes)return t.push(this.readSFixed64());var e=aa(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===Wi.Varint)for(;this.buf[this.pos++]>127;);else if(e===Wi.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Wi.Fixed32)this.pos+=4;else{if(e!==Wi.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e<this.pos+t;)e*=2;if(e!==this.length){var i=new Uint8Array(e);i.set(this.buf),this.buf=i,this.length=e}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),Gu(this.buf,t,this.pos),this.pos+=4},writeSFixed32:function(t){this.realloc(4),Gu(this.buf,t,this.pos),this.pos+=4},writeFixed64:function(t){this.realloc(8),Gu(this.buf,-1&t,this.pos),Gu(this.buf,Math.floor(t*mx),this.pos+4),this.pos+=8},writeSFixed64:function(t){this.realloc(8),Gu(this.buf,-1&t,this.pos),Gu(this.buf,Math.floor(t*mx),this.pos+4),this.pos+=8},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(e,i){var r,u;if(e>=0?(r=e%4294967296|0,u=e/4294967296|0):(u=~(-e/4294967296),4294967295^(r=~(-e%4294967296))?r=r+1|0:(r=0,u=u+1|0)),e>=18446744073709552e3||e<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");i.realloc(10),function(f,m,y){y.buf[y.pos++]=127&f|128,f>>>=7,y.buf[y.pos++]=127&f|128,f>>>=7,y.buf[y.pos++]=127&f|128,f>>>=7,y.buf[y.pos++]=127&f|128,y.buf[y.pos]=127&(f>>>=7)}(r,0,i),function(f,m){var y=(7&f)<<4;m.buf[m.pos++]|=y|((f>>>=3)?128:0),f&&(m.buf[m.pos++]=127&f|((f>>>=7)?128:0),f&&(m.buf[m.pos++]=127&f|((f>>>=7)?128:0),f&&(m.buf[m.pos++]=127&f|((f>>>=7)?128:0),f&&(m.buf[m.pos++]=127&f|((f>>>=7)?128:0),f&&(m.buf[m.pos++]=127&f)))))}(u,i)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(!!t)},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(r,u,f){for(var m,y,E=0;E<u.length;E++){if((m=u.charCodeAt(E))>55295&&m<57344){if(!y){m>56319||E+1===u.length?(r[f++]=239,r[f++]=191,r[f++]=189):y=m;continue}if(m<56320){r[f++]=239,r[f++]=191,r[f++]=189,y=m;continue}m=y-55296<<10|m-56320|65536,y=null}else y&&(r[f++]=239,r[f++]=191,r[f++]=189,y=null);m<128?r[f++]=m:(m<2048?r[f++]=m>>6|192:(m<65536?r[f++]=m>>12|224:(r[f++]=m>>18|240,r[f++]=m>>12&63|128),r[f++]=m>>6&63|128),r[f++]=63&m|128)}return f}(this.buf,t,this.pos);var i=this.pos-e;i>=128&&_x(e,i,this),this.pos=e-1,this.writeVarint(i),this.pos+=i},writeFloat:function(t){this.realloc(4),dx(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),dx(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var i=0;i<e;i++)this.buf[this.pos++]=t[i]},writeRawMessage:function(t,e){this.pos++;var i=this.pos;t(e,this);var r=this.pos-i;r>=128&&_x(i,r,this),this.pos=i-1,this.writeVarint(r),this.pos+=r},writeMessage:function(t,e,i){this.writeTag(t,Wi.Bytes),this.writeRawMessage(e,i)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Vk,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Gk,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Zk,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,$k,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,qk,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Xk,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Wk,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Yk,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Hk,e)},writeBytesField:function(t,e){this.writeTag(t,Wi.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,Wi.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,Wi.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,Wi.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,Wi.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,Wi.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,Wi.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,Wi.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,Wi.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,Wi.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,!!e)}};var sp=Qe(fx);const Bm=3;function Kk(t,e,i){e.glyphs=[],t===1&&i.readMessage(Jk,e)}function Jk(t,e,i){if(t===3){const{id:r,bitmap:u,width:f,height:m,left:y,top:E,advance:T}=i.readMessage(Qk,{});e.glyphs.push({id:r,bitmap:new sa({width:f+2*Bm,height:m+2*Bm},u),metrics:{width:f,height:m,left:y,top:E,advance:T}})}else t===4?e.ascender=i.readSVarint():t===5&&(e.descender=i.readSVarint())}function Qk(t,e,i){t===1?e.id=i.readVarint():t===2?e.bitmap=i.readBytes():t===3?e.width=i.readVarint():t===4?e.height=i.readVarint():t===5?e.left=i.readSVarint():t===6?e.top=i.readSVarint():t===7&&(e.advance=i.readVarint())}const vx=Bm;function Fm(t){let e=0,i=0;for(const m of t)e+=m.w*m.h,i=Math.max(i,m.w);t.sort((m,y)=>y.h-m.h);const r=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),i),h:1/0}];let u=0,f=0;for(const m of t)for(let y=r.length-1;y>=0;y--){const E=r[y];if(!(m.w>E.w||m.h>E.h)){if(m.x=E.x,m.y=E.y,f=Math.max(f,m.y+m.h),u=Math.max(u,m.x+m.w),m.w===E.w&&m.h===E.h){const T=r.pop();y<r.length&&(r[y]=T)}else m.h===E.h?(E.x+=m.w,E.w-=m.w):m.w===E.w?(E.y+=m.h,E.h-=m.h):(r.push({x:E.x+m.w,y:E.y,w:E.w-m.w,h:m.h}),E.y+=m.h,E.h-=m.h);break}}return{w:u,h:f,fill:e/(u*f)||0}}const Vr=1;class Um{constructor(e,{pixelRatio:i,version:r,stretchX:u,stretchY:f,content:m}){this.paddedRect=e,this.pixelRatio=i,this.stretchX=u,this.stretchY=f,this.content=m,this.version=r}get tl(){return[this.paddedRect.x+Vr,this.paddedRect.y+Vr]}get br(){return[this.paddedRect.x+this.paddedRect.w-Vr,this.paddedRect.y+this.paddedRect.h-Vr]}get displaySize(){return[(this.paddedRect.w-2*Vr)/this.pixelRatio,(this.paddedRect.h-2*Vr)/this.pixelRatio]}}class xx{constructor(e,i){const r={},u={};this.haveRenderCallbacks=[];const f=[];this.addImages(e,r,f),this.addImages(i,u,f);const{w:m,h:y}=Fm(f),E=new eo({width:m||1,height:y||1});for(const T in e){const C=e[T],L=r[T].paddedRect;eo.copy(C.data,E,{x:0,y:0},{x:L.x+Vr,y:L.y+Vr},C.data)}for(const T in i){const C=i[T],L=u[T].paddedRect,D=L.x+Vr,B=L.y+Vr,U=C.data.width,G=C.data.height;eo.copy(C.data,E,{x:0,y:0},{x:D,y:B},C.data),eo.copy(C.data,E,{x:0,y:G-1},{x:D,y:B-1},{width:U,height:1}),eo.copy(C.data,E,{x:0,y:0},{x:D,y:B+G},{width:U,height:1}),eo.copy(C.data,E,{x:U-1,y:0},{x:D-1,y:B},{width:1,height:G}),eo.copy(C.data,E,{x:0,y:0},{x:D+U,y:B},{width:1,height:G})}this.image=E,this.iconPositions=r,this.patternPositions=u}addImages(e,i,r){for(const u in e){const f=e[u],m={x:0,y:0,w:f.data.width+2*Vr,h:f.data.height+2*Vr};r.push(m),i[u]=new Um(m,f),f.hasRenderCallback&&this.haveRenderCallbacks.push(u)}}patchUpdatedImages(e,i){this.haveRenderCallbacks=this.haveRenderCallbacks.filter(r=>e.hasImage(r)),e.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const r in e.updatedImages)this.patchUpdatedImage(this.iconPositions[r],e.getImage(r),i),this.patchUpdatedImage(this.patternPositions[r],e.getImage(r),i)}patchUpdatedImage(e,i,r){if(!e||!i||e.version===i.version)return;e.version=i.version;const[u,f]=e.tl;r.update(i.data,void 0,{x:u,y:f})}}Ct(Um,"ImagePosition"),Ct(xx,"ImageAtlas");const mo={horizontal:1,vertical:2,horizontalOnly:3},bx=-17;class ch{constructor(){this.scale=1,this.fontStack="",this.imageName=null}static forText(e,i){const r=new ch;return r.scale=e||1,r.fontStack=i,r}static forImage(e){const i=new ch;return i.imageName=e,i}}class $u{constructor(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null}static fromFeature(e,i){const r=new $u;for(let u=0;u<e.sections.length;u++){const f=e.sections[u];f.image?r.addImageSection(f):r.addTextSection(f,i)}return r}length(){return this.text.length}getSection(e){return this.sections[this.sectionIndex[e]]}getSections(){return this.sections}getSectionIndex(e){return this.sectionIndex[e]}getCharCode(e){return this.text.charCodeAt(e)}verticalizePunctuation(e){this.text=function(i,r){let u="";for(let f=0;f<i.length;f++){const m=i.charCodeAt(f+1)||null,y=i.charCodeAt(f-1)||null;u+=!r&&(m&&Of(m)&&!uh[i[f+1]]||y&&Of(y)&&!uh[i[f-1]])||!uh[i[f]]?i[f]:uh[i[f]]}return u}(this.text,e)}trim(){let e=0;for(let r=0;r<this.text.length&&ap[this.text.charCodeAt(r)];r++)e++;let i=this.text.length;for(let r=this.text.length-1;r>=0&&r>=e&&ap[this.text.charCodeAt(r)];r--)i--;this.text=this.text.substring(e,i),this.sectionIndex=this.sectionIndex.slice(e,i)}substring(e,i){const r=new $u;return r.text=this.text.substring(e,i),r.sectionIndex=this.sectionIndex.slice(e,i),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((e,i)=>Math.max(e,this.sections[i].scale),0)}addTextSection(e,i){this.text+=e.text,this.sections.push(ch.forText(e.scale,e.fontStack||i));const r=this.sections.length-1;for(let u=0;u<e.text.length;++u)this.sectionIndex.push(r)}addImageSection(e){const i=e.image?e.image.name:"";if(i.length===0)return void Ti("Can't add FormattedSection with an empty image.");const r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(ch.forImage(i)),this.sectionIndex.push(this.sections.length-1)):Ti("Reached maximum number of images 6401")}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function jm(t,e,i,r,u,f,m,y,E,T,C,L,D,B,U){const G=$u.fromFeature(t,u);L===mo.vertical&&G.verticalizePunctuation(D);let H=[];const ne=function(ge,Be,De,qe,it,Ve){if(!ge)return[];const Ye=[],He=function(vt,Lt,xt,ni,lt,Nt){let ri=0;for(let Ii=0;Ii<vt.length();Ii++){const oi=vt.getSection(Ii);ri+=wx(vt.getCharCode(Ii),oi,ni,lt,Lt,Nt)}return ri/Math.max(1,Math.ceil(ri/xt))}(ge,Be,De,qe,it,Ve),Je=ge.text.indexOf("")>=0;let at=0;for(let vt=0;vt<ge.length();vt++){const Lt=ge.getSection(vt),xt=ge.getCharCode(vt);if(ap[xt]||(at+=wx(xt,Lt,qe,it,Be,Ve)),vt<ge.length()-1){const ni=!(($e=xt)<11904||!(wt["Bopomofo Extended"]($e)||wt.Bopomofo($e)||wt["CJK Compatibility Forms"]($e)||wt["CJK Compatibility Ideographs"]($e)||wt["CJK Compatibility"]($e)||wt["CJK Radicals Supplement"]($e)||wt["CJK Strokes"]($e)||wt["CJK Symbols and Punctuation"]($e)||wt["CJK Unified Ideographs Extension A"]($e)||wt["CJK Unified Ideographs"]($e)||wt["Enclosed CJK Letters and Months"]($e)||wt["Halfwidth and Fullwidth Forms"]($e)||wt.Hiragana($e)||wt["Ideographic Description Characters"]($e)||wt["Kangxi Radicals"]($e)||wt["Katakana Phonetic Extensions"]($e)||wt.Katakana($e)||wt["Vertical Forms"]($e)||wt["Yi Radicals"]($e)||wt["Yi Syllables"]($e)));(eM[xt]||ni||Lt.imageName)&&Ye.push(Tx(vt+1,at,He,Ye,tM(xt,ge.getCharCode(vt+1),ni&&Je),!1))}}var $e;return Sx(Tx(ge.length(),at,He,Ye,0,!0))}(G,T,f,e,r,B),{processBidirectionalText:de,processStyledBidirectionalText:re}=M;if(de&&G.sections.length===1){const ge=de(G.toString(),ne);for(const Be of ge){const De=new $u;De.text=Be,De.sections=G.sections;for(let qe=0;qe<Be.length;qe++)De.sectionIndex.push(0);H.push(De)}}else if(re){const ge=re(G.text,G.sectionIndex,ne);for(const Be of ge){const De=new $u;De.text=Be[0],De.sectionIndex=Be[1],De.sections=G.sections,H.push(De)}}else H=function(ge,Be){const De=[],qe=ge.text;let it=0;for(const Ve of Be)De.push(ge.substring(it,Ve)),it=Ve;return it<qe.length&&De.push(ge.substring(it,qe.length)),De}(G,ne);const fe=[],ve={positionedLines:fe,text:G.toString(),top:C[1],bottom:C[1],left:C[0],right:C[0],writingMode:L,iconsInText:!1,verticalizable:!1,hasBaseline:!1};return function(ge,Be,De,qe,it,Ve,Ye,He,Je,at,$e,vt){let Lt=0,xt=0,ni=0;const lt=He==="right"?1:He==="left"?0:.5;let Nt=!1;for(const si of it){const ai=si.getSections();for(const Gi of ai){if(Gi.imageName)continue;const Yi=Be[Gi.fontStack];if(Yi&&(Nt=Yi.ascender!==void 0&&Yi.descender!==void 0,!Nt))break}if(!Nt)break}let ri=0;for(const si of it){si.trim();const ai=si.getMaxScale(),Gi=(ai-1)*Kn,Yi={positionedGlyphs:[],lineOffset:0};ge.positionedLines[ri]=Yi;const Hi=Yi.positionedGlyphs;let $i=0;if(!si.length()){xt+=Ve,++ri;continue}let an=0,mn=0;for(let qi=0;qi<si.length();qi++){const Rn=si.getSection(qi),In=si.getSectionIndex(qi),fn=si.getCharCode(qi);let Mi=Rn.scale,kn=null,Ki=null,Pr=null,Mn=Kn,Jn=0;const qn=!(Je===mo.horizontal||!$e&&!Nc(fn)||$e&&(ap[fn]||(Ii=fn,wt.Arabic(Ii)||wt["Arabic Supplement"](Ii)||wt["Arabic Extended-A"](Ii)||wt["Arabic Presentation Forms-A"](Ii)||wt["Arabic Presentation Forms-B"](Ii))));if(Rn.imageName){const Lr=qe[Rn.imageName];if(!Lr)continue;Pr=Rn.imageName,ge.iconsInText=ge.iconsInText||!0,Ki=Lr.paddedRect;const Zn=Lr.displaySize;Mi=Mi*Kn/vt,kn={width:Zn[0],height:Zn[1],left:Vr,top:-vx,advance:qn?Zn[1]:Zn[0],localGlyph:!1},Jn=Nt?-kn.height*Mi:bx+ai*Kn-Zn[1]*Mi,Mn=kn.advance;const os=(qn?Zn[0]:Zn[1])*Mi-Kn*ai;os>0&&os>$i&&($i=os)}else{const Lr=De[Rn.fontStack];if(!Lr)continue;Lr[fn]&&(Ki=Lr[fn]);const Zn=Be[Rn.fontStack];if(!Zn)continue;const os=Zn.glyphs[fn];if(!os)continue;if(kn=os.metrics,Mn=fn!==8203?Kn:0,Nt){const Ku=Zn.ascender!==void 0?Math.abs(Zn.ascender):0,xh=Zn.descender!==void 0?Math.abs(Zn.descender):0,bh=(Ku+xh)*Mi;an<bh&&(an=bh,mn=(Ku-xh)/2*Mi),Jn=-Ku*Mi}else Jn=bx+(ai-Mi)*Kn}qn?(ge.verticalizable=!0,Hi.push({glyph:fn,imageName:Pr,x:Lt,y:xt+Jn,vertical:qn,scale:Mi,localGlyph:kn.localGlyph,fontStack:Rn.fontStack,sectionIndex:In,metrics:kn,rect:Ki}),Lt+=Mn*Mi+at):(Hi.push({glyph:fn,imageName:Pr,x:Lt,y:xt+Jn,vertical:qn,scale:Mi,localGlyph:kn.localGlyph,fontStack:Rn.fontStack,sectionIndex:In,metrics:kn,rect:Ki}),Lt+=kn.advance*Mi+at)}Hi.length!==0&&(ni=Math.max(Lt-at,ni),Nt?Ix(Hi,lt,$i,mn,Ve*ai/2):Ix(Hi,lt,$i,0,Ve/2)),Lt=0;const Sn=Ve*ai+$i;Yi.lineOffset=Math.max($i,Gi),xt+=Sn,++ri}var Ii;const oi=xt,{horizontalAlign:Gt,verticalAlign:Qi}=Vm(Ye);(function(si,ai,Gi,Yi,Hi,$i){const an=(ai-Gi)*Hi,mn=-$i*Yi;for(const Sn of si)for(const qi of Sn.positionedGlyphs)qi.x+=an,qi.y+=mn})(ge.positionedLines,lt,Gt,Qi,ni,oi),ge.top+=-Qi*oi,ge.bottom=ge.top+oi,ge.left+=-Gt*ni,ge.right=ge.left+ni,ge.hasBaseline=Nt}(ve,e,i,r,H,m,y,E,L,T,D,U),!function(ge){for(const Be of ge)if(Be.positionedGlyphs.length!==0)return!1;return!0}(fe)&&ve}const ap={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},eM={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function wx(t,e,i,r,u,f){if(e.imageName){const m=r[e.imageName];return m?m.displaySize[0]*e.scale*Kn/f+u:0}{const m=i[e.fontStack],y=m&&m.glyphs[t];return y?y.metrics.advance*e.scale+u:0}}function Ex(t,e,i,r){const u=Math.pow(t-e,2);return r?t<e?u/2:2*u:u+Math.abs(i)*i}function tM(t,e,i){let r=0;return t===10&&(r-=1e4),i&&(r+=150),t!==40&&t!==65288||(r+=50),e!==41&&e!==65289||(r+=50),r}function Tx(t,e,i,r,u,f){let m=null,y=Ex(e,i,u,f);for(const E of r){const T=Ex(e-E.x,i,u,f)+E.badness;T<=y&&(m=E,y=T)}return{index:t,x:e,priorBreak:m,badness:y}}function Sx(t){return t?Sx(t.priorBreak).concat(t.index):[]}function Vm(t){let e=.5,i=.5;switch(t){case"right":case"top-right":case"bottom-right":e=1;break;case"left":case"top-left":case"bottom-left":e=0}switch(t){case"bottom":case"bottom-right":case"bottom-left":i=1;break;case"top":case"top-right":case"top-left":i=0}return{horizontalAlign:e,verticalAlign:i}}function Ix(t,e,i,r,u){if(!(e||i||r||u))return;const f=t.length-1,m=t[f],y=(m.x+m.metrics.advance*m.scale)*e;for(let E=0;E<=f;E++)t[E].x-=y,t[E].y+=i+r+u}function iM(t,e,i){const{horizontalAlign:r,verticalAlign:u}=Vm(i),f=e[0]-t.displaySize[0]*r,m=e[1]-t.displaySize[1]*u;return{image:t,top:m,bottom:m+t.displaySize[1],left:f,right:f+t.displaySize[0]}}function kx(t,e,i,r,u,f){const m=t.image;let y;if(m.content){const H=m.content,ne=m.pixelRatio||1;y=[H[0]/ne,H[1]/ne,m.displaySize[0]-H[2]/ne,m.displaySize[1]-H[3]/ne]}const E=e.left*f,T=e.right*f;let C,L,D,B;i==="width"||i==="both"?(B=u[0]+E-r[3],L=u[0]+T+r[1]):(B=u[0]+(E+T-m.displaySize[0])/2,L=B+m.displaySize[0]);const U=e.top*f,G=e.bottom*f;return i==="height"||i==="both"?(C=u[1]+U-r[0],D=u[1]+G+r[2]):(C=u[1]+(U+G-m.displaySize[1])/2,D=C+m.displaySize[1]),{image:m,top:C,right:L,bottom:D,left:B,collisionPadding:y}}class la extends Oe{constructor(e,i,r,u,f){super(e,i),this.angle=u,this.z=r,f!==void 0&&(this.segment=f)}clone(){return new la(this.x,this.y,this.z,this.angle,this.segment)}}function Mx(t,e,i,r,u){if(e.segment===void 0)return!0;let f=e,m=e.segment+1,y=0;for(;y>-i/2;){if(m--,m<0)return!1;y-=t[m].dist(f),f=t[m]}y+=t[m].dist(t[m+1]),m++;const E=[];let T=0;for(;y<i/2;){const C=t[m],L=t[m+1];if(!L)return!1;let D=t[m-1].angleTo(C)-C.angleTo(L);for(D=Math.abs((D+3*Math.PI)%(2*Math.PI)-Math.PI),E.push({distance:y,angleDelta:D}),T+=D;y-E[0].distance>r;)T-=E.shift().angleDelta;if(T>u)return!1;m++,y+=C.dist(L)}return!0}function Ax(t){let e=0;for(let i=0;i<t.length-1;i++)e+=t[i].dist(t[i+1]);return e}function Cx(t,e,i){return t?.6*e*i:0}function Px(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function nM(t,e,i,r,u,f){const m=Cx(i,u,f),y=Px(i,r)*f;let E=0;const T=Ax(t)/2;for(let C=0;C<t.length-1;C++){const L=t[C],D=t[C+1],B=L.dist(D);if(E+B>T){const U=(T-E)/B,G=bi(L.x,D.x,U),H=bi(L.y,D.y,U),ne=new la(G,H,0,D.angleTo(L),C);return!m||Mx(t,ne,y,m,e)?ne:void 0}E+=B}}function rM(t,e,i,r,u,f,m,y,E){const T=Cx(r,f,m),C=Px(r,u),L=C*m,D=t[0].x===0||t[0].x===E||t[0].y===0||t[0].y===E;return e-L<e/4&&(e=L+e/4),Lx(t,D?e/2*y%e:(C/2+2*f)*m*y%e,e,T,i,L,D,!1,E)}function Lx(t,e,i,r,u,f,m,y,E){const T=f/2,C=Ax(t);let L=0,D=e-i,B=[];for(let U=0;U<t.length-1;U++){const G=t[U],H=t[U+1],ne=G.dist(H),de=H.angleTo(G);for(;D+i<L+ne;){D+=i;const re=(D-L)/ne,fe=bi(G.x,H.x,re),ve=bi(G.y,H.y,re);if(fe>=0&&fe<E&&ve>=0&&ve<E&&D-T>=0&&D+T<=C){const ge=new la(fe,ve,0,de,U);ge._round(),r&&!Mx(t,ge,f,r,u)||B.push(ge)}}L+=ne}return y||B.length||m||(B=Lx(t,L/2,i,r,u,f,m,!0,E)),B}function Rx(t,e,i,r,u){const f=[];for(let m=0;m<t.length;m++){const y=t[m];let E;for(let T=0;T<y.length-1;T++){let C=y[T],L=y[T+1];C.x<e&&L.x<e||(C.x<e?C=new Oe(e,C.y+(e-C.x)/(L.x-C.x)*(L.y-C.y))._round():L.x<e&&(L=new Oe(e,C.y+(e-C.x)/(L.x-C.x)*(L.y-C.y))._round()),C.y<i&&L.y<i||(C.y<i?C=new Oe(C.x+(i-C.y)/(L.y-C.y)*(L.x-C.x),i)._round():L.y<i&&(L=new Oe(C.x+(i-C.y)/(L.y-C.y)*(L.x-C.x),i)._round()),C.x>=r&&L.x>=r||(C.x>=r?C=new Oe(r,C.y+(r-C.x)/(L.x-C.x)*(L.y-C.y))._round():L.x>=r&&(L=new Oe(r,C.y+(r-C.x)/(L.x-C.x)*(L.y-C.y))._round()),C.y>=u&&L.y>=u||(C.y>=u?C=new Oe(C.x+(u-C.y)/(L.y-C.y)*(L.x-C.x),u)._round():L.y>=u&&(L=new Oe(C.x+(u-C.y)/(L.y-C.y)*(L.x-C.x),u)._round()),E&&C.equals(E[E.length-1])||(E=[C],f.push(E)),E.push(L)))))}}return f}Ct(la,"Anchor");const hh=1e20;function Dx(t,e,i,r,u,f,m,y,E){for(let T=e;T<e+r;T++)Ox(t,i*f+T,f,u,m,y,E);for(let T=i;T<i+u;T++)Ox(t,T*f+e,1,r,m,y,E)}function Ox(t,e,i,r,u,f,m){f[0]=0,m[0]=-hh,m[1]=hh,u[0]=t[e];for(let y=1,E=0,T=0;y<r;y++){u[y]=t[e+y*i];const C=y*y;do{const L=f[E];T=(u[y]-u[L]+C-L*L)/(y-L)/2}while(T<=m[E]&&--E>-1);E++,f[E]=y,m[E]=T,m[E+1]=hh}for(let y=0,E=0;y<r;y++){for(;m[E+1]<y;)E++;const T=f[E],C=y-T;t[e+y*i]=u[T]+C*C}}const ns=2,Gm={none:0,ideographs:1,all:2};class qu{constructor(e,i,r){this.requestManager=e,this.localGlyphMode=i,this.localFontFamily=r,this.entries={},this.localGlyphs={200:{},400:{},500:{},900:{}}}setURL(e){this.url=e}getGlyphs(e,i){const r=[];for(const u in e)for(const f of e[u])r.push({stack:u,id:f});wi(r,({stack:u,id:f},m)=>{let y=this.entries[u];y||(y=this.entries[u]={glyphs:{},requests:{},ranges:{},ascender:void 0,descender:void 0});let E=y.glyphs[f];if(E!==void 0)return void m(null,{stack:u,id:f,glyph:E});if(E=this._tinySDF(y,u,f),E)return y.glyphs[f]=E,void m(null,{stack:u,id:f,glyph:E});const T=Math.floor(f/256);if(256*T>65535)return void m(new Error("glyphs > 65535 not supported"));if(y.ranges[T])return void m(null,{stack:u,id:f,glyph:E});let C=y.requests[T];C||(C=y.requests[T]=[],qu.loadGlyphRange(u,T,this.url,this.requestManager,(L,D)=>{if(D){y.ascender=D.ascender,y.descender=D.descender;for(const B in D.glyphs)this._doesCharSupportLocalGlyph(+B)||(y.glyphs[+B]=D.glyphs[+B]);y.ranges[T]=!0}for(const B of C)B(L,D);delete y.requests[T]})),C.push((L,D)=>{L?m(L):D&&m(null,{stack:u,id:f,glyph:D.glyphs[f]||null})})},(u,f)=>{if(u)i(u);else if(f){const m={};for(const{stack:y,id:E,glyph:T}of f)m[y]===void 0&&(m[y]={}),m[y].glyphs===void 0&&(m[y].glyphs={}),m[y].glyphs[E]=T&&{id:T.id,bitmap:T.bitmap.clone(),metrics:T.metrics},m[y].ascender=this.entries[y].ascender,m[y].descender=this.entries[y].descender;i(null,m)}})}_doesCharSupportLocalGlyph(e){return this.localGlyphMode!==Gm.none&&(this.localGlyphMode===Gm.all?!!this.localFontFamily:!!this.localFontFamily&&(wt["CJK Unified Ideographs"](e)||wt["Hangul Syllables"](e)||wt.Hiragana(e)||wt.Katakana(e)||wt["CJK Symbols and Punctuation"](e)))}_tinySDF(e,i,r){const u=this.localFontFamily;if(!u||!this._doesCharSupportLocalGlyph(r))return;let f=e.tinySDF;if(!f){let G="400";/bold/i.test(i)?G="900":/medium/i.test(i)?G="500":/light/i.test(i)&&(G="200"),f=e.tinySDF=new qu.TinySDF({fontFamily:u,fontWeight:G,fontSize:24*ns,buffer:3*ns,radius:8*ns}),f.fontWeight=G}if(this.localGlyphs[f.fontWeight][r])return this.localGlyphs[f.fontWeight][r];const m=String.fromCharCode(r),{data:y,width:E,height:T,glyphWidth:C,glyphHeight:L,glyphLeft:D,glyphTop:B,glyphAdvance:U}=f.draw(m);return this.localGlyphs[f.fontWeight][r]={id:r,bitmap:new sa({width:E,height:T},y),metrics:{width:C/ns,height:L/ns,left:D/ns,top:B/ns-27,advance:U/ns,localGlyph:!0}}}}qu.loadGlyphRange=function(t,e,i,r,u){const f=256*e,m=f+255,y=r.transformRequest(r.normalizeGlyphsURL(i).replace("{fontstack}",t).replace("{range}",`${f}-${m}`),Wn.Glyphs);ms(y,(E,T)=>{if(E)u(E);else if(T){const C={},L=function(D){return new sp(D).readFields(Kk,{})}(T);for(const D of L.glyphs)C[D.id]=D;u(null,{glyphs:C,ascender:L.ascender,descender:L.descender})}})},qu.TinySDF=class{constructor({fontSize:t=24,buffer:e=3,radius:i=8,cutoff:r=.25,fontFamily:u="sans-serif",fontWeight:f="normal",fontStyle:m="normal"}={}){this.buffer=e,this.cutoff=r,this.radius=i;const y=this.size=t+4*e,E=this._createCanvas(y),T=this.ctx=E.getContext("2d",{willReadFrequently:!0});T.font=`${m} ${f} ${t}px ${u}`,T.textBaseline="alphabetic",T.textAlign="left",T.fillStyle="black",this.gridOuter=new Float64Array(y*y),this.gridInner=new Float64Array(y*y),this.f=new Float64Array(y),this.z=new Float64Array(y+1),this.v=new Uint16Array(y)}_createCanvas(t){const e=document.createElement("canvas");return e.width=e.height=t,e}draw(t){const{width:e,actualBoundingBoxAscent:i,actualBoundingBoxDescent:r,actualBoundingBoxLeft:u,actualBoundingBoxRight:f}=this.ctx.measureText(t),m=Math.ceil(i),y=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(f-u))),E=Math.min(this.size-this.buffer,m+Math.ceil(r)),T=y+2*this.buffer,C=E+2*this.buffer,L=Math.max(T*C,0),D=new Uint8ClampedArray(L),B={data:D,width:T,height:C,glyphWidth:y,glyphHeight:E,glyphTop:m,glyphLeft:0,glyphAdvance:e};if(y===0||E===0)return B;const{ctx:U,buffer:G,gridInner:H,gridOuter:ne}=this;U.clearRect(G,G,y,E),U.fillText(t,G,G+m);const de=U.getImageData(G,G,y,E);ne.fill(hh,0,L),H.fill(0,0,L);for(let re=0;re<E;re++)for(let fe=0;fe<y;fe++){const ve=de.data[4*(re*y+fe)+3]/255;if(ve===0)continue;const ge=(re+G)*T+fe+G;if(ve===1)ne[ge]=0,H[ge]=hh;else{const Be=.5-ve;ne[ge]=Be>0?Be*Be:0,H[ge]=Be<0?Be*Be:0}}Dx(ne,0,0,T,C,T,this.f,this.v,this.z),Dx(H,G,G,y,E,T,this.f,this.v,this.z);for(let re=0;re<L;re++){const fe=Math.sqrt(ne[re])-Math.sqrt(H[re]);D[re]=Math.round(255-255*(fe/this.radius+this.cutoff))}return B}};const Zu=Vr;function zx(t,e,i,r){const u=[],f=t.image,m=f.pixelRatio,y=f.paddedRect.w-2*Zu,E=f.paddedRect.h-2*Zu,T=t.right-t.left,C=t.bottom-t.top,L=f.stretchX||[[0,y]],D=f.stretchY||[[0,E]],B=(Ve,Ye)=>Ve+Ye[1]-Ye[0],U=L.reduce(B,0),G=D.reduce(B,0),H=y-U,ne=E-G;let de=0,re=U,fe=0,ve=G,ge=0,Be=H,De=0,qe=ne;if(f.content&&r){const Ve=f.content;de=lp(L,0,Ve[0]),fe=lp(D,0,Ve[1]),re=lp(L,Ve[0],Ve[2]),ve=lp(D,Ve[1],Ve[3]),ge=Ve[0]-de,De=Ve[1]-fe,Be=Ve[2]-Ve[0]-re,qe=Ve[3]-Ve[1]-ve}const it=(Ve,Ye,He,Je)=>{const at=up(Ve.stretch-de,re,T,t.left),$e=cp(Ve.fixed-ge,Be,Ve.stretch,U),vt=up(Ye.stretch-fe,ve,C,t.top),Lt=cp(Ye.fixed-De,qe,Ye.stretch,G),xt=up(He.stretch-de,re,T,t.left),ni=cp(He.fixed-ge,Be,He.stretch,U),lt=up(Je.stretch-fe,ve,C,t.top),Nt=cp(Je.fixed-De,qe,Je.stretch,G),ri=new Oe(at,vt),Ii=new Oe(xt,vt),oi=new Oe(xt,lt),Gt=new Oe(at,lt),Qi=new Oe($e/m,Lt/m),si=new Oe(ni/m,Nt/m),ai=e*Math.PI/180;if(ai){const Hi=Math.sin(ai),$i=Math.cos(ai),an=[$i,-Hi,Hi,$i];ri._matMult(an),Ii._matMult(an),Gt._matMult(an),oi._matMult(an)}const Gi=Ve.stretch+Ve.fixed,Yi=Ye.stretch+Ye.fixed;return{tl:ri,tr:Ii,bl:Gt,br:oi,tex:{x:f.paddedRect.x+Zu+Gi,y:f.paddedRect.y+Zu+Yi,w:He.stretch+He.fixed-Gi,h:Je.stretch+Je.fixed-Yi},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Qi,pixelOffsetBR:si,minFontScaleX:Be/m/T,minFontScaleY:qe/m/C,isSDF:i}};if(r&&(f.stretchX||f.stretchY)){const Ve=Nx(L,H,U),Ye=Nx(D,ne,G);for(let He=0;He<Ve.length-1;He++){const Je=Ve[He],at=Ve[He+1];for(let $e=0;$e<Ye.length-1;$e++)u.push(it(Je,Ye[$e],at,Ye[$e+1]))}}else u.push(it({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:y+1},{fixed:0,stretch:E+1}));return u}function lp(t,e,i){let r=0;for(const u of t)r+=Math.max(e,Math.min(i,u[1]))-Math.max(e,Math.min(i,u[0]));return r}function Nx(t,e,i){const r=[{fixed:-Zu,stretch:0}];for(const[u,f]of t){const m=r[r.length-1];r.push({fixed:u-m.stretch,stretch:m.stretch}),r.push({fixed:u-m.stretch,stretch:m.stretch+(f-u)})}return r.push({fixed:e+Zu,stretch:i}),r}function up(t,e,i,r){return t/e*i+r}function cp(t,e,i,r){return t-e*i/r}function oM(t,e,i,r){const u=e+t.positionedLines[r].lineOffset;return r===0?i+u/2:i+(u+(e+t.positionedLines[r-1].lineOffset))/2}class sM{constructor(e=[],i=aM){if(this.data=e,this.length=this.data.length,this.compare=i,this.length>0)for(let r=(this.length>>1)-1;r>=0;r--)this._down(r)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;const e=this.data[0],i=this.data.pop();return this.length--,this.length>0&&(this.data[0]=i,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:i,compare:r}=this,u=i[e];for(;e>0;){const f=e-1>>1,m=i[f];if(r(u,m)>=0)break;i[e]=m,e=f}i[e]=u}_down(e){const{data:i,compare:r}=this,u=this.length>>1,f=i[e];for(;e<u;){let m=1+(e<<1),y=i[m];const E=m+1;if(E<this.length&&r(i[E],y)<0&&(m=E,y=i[E]),r(y,f)>=0)break;i[e]=y,e=m}i[e]=f}}function aM(t,e){return t<e?-1:t>e?1:0}function lM(t,e=1,i=!1){let r=1/0,u=1/0,f=-1/0,m=-1/0;const y=t[0];for(let B=0;B<y.length;B++){const U=y[B];(!B||U.x<r)&&(r=U.x),(!B||U.y<u)&&(u=U.y),(!B||U.x>f)&&(f=U.x),(!B||U.y>m)&&(m=U.y)}const E=Math.min(f-r,m-u);let T=E/2;const C=new sM([],uM);if(E===0)return new Oe(r,u);for(let B=r;B<f;B+=E)for(let U=u;U<m;U+=E)C.push(new Xu(B+T,U+T,T,t));let L=function(B){let U=0,G=0,H=0;const ne=B[0];for(let de=0,re=ne.length,fe=re-1;de<re;fe=de++){const ve=ne[de],ge=ne[fe],Be=ve.x*ge.y-ge.x*ve.y;G+=(ve.x+ge.x)*Be,H+=(ve.y+ge.y)*Be,U+=3*Be}return new Xu(G/U,H/U,0,B)}(t),D=C.length;for(;C.length;){const B=C.pop();(B.d>L.d||!L.d)&&(L=B,i&&console.log("found best %d after %d probes",Math.round(1e4*B.d)/1e4,D)),B.max-L.d<=e||(T=B.h/2,C.push(new Xu(B.p.x-T,B.p.y-T,T,t)),C.push(new Xu(B.p.x+T,B.p.y-T,T,t)),C.push(new Xu(B.p.x-T,B.p.y+T,T,t)),C.push(new Xu(B.p.x+T,B.p.y+T,T,t)),D+=4)}return i&&(console.log(`num probes: ${D}`),console.log(`best distance: ${L.d}`)),L.p}function uM(t,e){return e.max-t.max}class Xu{constructor(e,i,r,u){this.p=new Oe(e,i),this.h=r,this.d=function(f,m){let y=!1,E=1/0;for(let T=0;T<m.length;T++){const C=m[T];for(let L=0,D=C.length,B=D-1;L<D;B=L++){const U=C[L],G=C[B];U.y>f.y!=G.y>f.y&&f.x<(G.x-U.x)*(f.y-U.y)/(G.y-U.y)+U.x&&(y=!y),E=Math.min(E,L0(f,U,G))}}return(y?1:-1)*Math.sqrt(E)}(this.p,u),this.max=this.d+this.h*Math.SQRT2}}const Wu=7,$m=Number.POSITIVE_INFINITY,cM=Math.sqrt(2);function Bx(t,[e,i]){let r=0,u=0;if(i===$m){e<0&&(e=0);const f=e/cM;switch(t){case"top-right":case"top-left":u=f-Wu;break;case"bottom-right":case"bottom-left":u=-f+Wu;break;case"bottom":u=-e+Wu;break;case"top":u=e-Wu}switch(t){case"top-right":case"bottom-right":r=-f;break;case"top-left":case"bottom-left":r=f;break;case"left":r=e;break;case"right":r=-e}}else{switch(e=Math.abs(e),i=Math.abs(i),t){case"top-right":case"top-left":case"top":u=i-Wu;break;case"bottom-right":case"bottom-left":case"bottom":u=-i+Wu}switch(t){case"top-right":case"bottom-right":case"right":r=-e;break;case"top-left":case"bottom-left":case"left":r=e}}return[r,u]}function hM(t,e,i,r,u,f,m,y,E,T){t.createArrays(),t.tilePixelRatio=Ft/(512*t.overscaling),t.compareText={},t.iconsNeedLinear=!1;const C=t.layers[0].layout,L=t.layers[0]._unevaluatedLayout._values,D={};if(t.textSizeData.kind==="composite"){const{minZoom:G,maxZoom:H}=t.textSizeData;D.compositeTextSizes=[L["text-size"].possiblyEvaluate(new P(G),y),L["text-size"].possiblyEvaluate(new P(H),y)]}if(t.iconSizeData.kind==="composite"){const{minZoom:G,maxZoom:H}=t.iconSizeData;D.compositeIconSizes=[L["icon-size"].possiblyEvaluate(new P(G),y),L["icon-size"].possiblyEvaluate(new P(H),y)]}D.layoutTextSize=L["text-size"].possiblyEvaluate(new P(E+1),y),D.layoutIconSize=L["icon-size"].possiblyEvaluate(new P(E+1),y),D.textMaxSize=L["text-size"].possiblyEvaluate(new P(18),y);const B=C.get("text-rotation-alignment")==="map"&&C.get("symbol-placement")!=="point",U=C.get("text-size");for(const G of t.features){const H=C.get("text-font").evaluate(G,{},y).join(","),ne=U.evaluate(G,{},y),de=D.layoutTextSize.evaluate(G,{},y),re=(D.layoutIconSize.evaluate(G,{},y),{horizontal:{},vertical:void 0}),fe=G.text;let ve,ge=[0,0];if(fe){const qe=fe.toString(),it=C.get("text-letter-spacing").evaluate(G,{},y)*Kn,Ve=C.get("text-line-height").evaluate(G,{},y)*Kn,Ye=Qd(qe)?it:0,He=C.get("text-anchor").evaluate(G,{},y),Je=C.get("text-variable-anchor");if(!Je){const xt=C.get("text-radial-offset").evaluate(G,{},y);ge=xt?Bx(He,[xt*Kn,$m]):C.get("text-offset").evaluate(G,{},y).map(ni=>ni*Kn)}let at=B?"center":C.get("text-justify").evaluate(G,{},y);const $e=C.get("symbol-placement")==="point",vt=$e?C.get("text-max-width").evaluate(G,{},y)*Kn:1/0,Lt=xt=>{t.allowVerticalPlacement&&zc(qe)&&(re.vertical=jm(fe,e,i,u,H,vt,Ve,He,xt,Ye,ge,mo.vertical,!0,de,ne))};if(!B&&Je){const xt=at==="auto"?Je.map(lt=>qm(lt)):[at];let ni=!1;for(let lt=0;lt<xt.length;lt++){const Nt=xt[lt];if(!re.horizontal[Nt])if(ni)re.horizontal[Nt]=re.horizontal[0];else{const ri=jm(fe,e,i,u,H,vt,Ve,"center",Nt,Ye,ge,mo.horizontal,!1,de,ne);ri&&(re.horizontal[Nt]=ri,ni=ri.positionedLines.length===1)}}Lt("left")}else{if(at==="auto"&&(at=qm(He)),$e||C.get("text-writing-mode").indexOf("horizontal")>=0||!zc(qe)){const xt=jm(fe,e,i,u,H,vt,Ve,He,at,Ye,ge,mo.horizontal,!1,de,ne);xt&&(re.horizontal[at]=xt)}Lt($e?"left":at)}}let Be=!1;if(G.icon&&G.icon.name){const qe=r[G.icon.name];qe&&(ve=iM(u[G.icon.name],C.get("icon-offset").evaluate(G,{},y),C.get("icon-anchor").evaluate(G,{},y)),Be=qe.sdf,t.sdfIcons===void 0?t.sdfIcons=qe.sdf:t.sdfIcons!==qe.sdf&&Ti("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(qe.pixelRatio!==t.pixelRatio||C.get("icon-rotate").constantOr(1)!==0)&&(t.iconsNeedLinear=!0))}const De=Ux(re.horizontal)||re.vertical;t.iconsInText||(t.iconsInText=!!De&&De.iconsInText),(De||ve)&&fM(t,G,re,ve,r,D,de,0,ge,Be,m,y,T)}f&&t.generateCollisionDebugBuffers(E,t.collisionBoxArray)}function qm(t){switch(t){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function fM(t,e,i,r,u,f,m,y,E,T,C,L,D){let B=f.textMaxSize.evaluate(e,{},L);B===void 0&&(B=m);const U=t.layers[0].layout,G=U.get("icon-offset").evaluate(e,{},L),H=Ux(i.horizontal)||i.vertical,ne=D.name==="globe",de=Kn,re=m/de,fe=t.tilePixelRatio*B/de,ve=(He=t.overscaling,t.zoom>18&&He>2&&(He>>=1),Math.max(Ft/(512*He),1)*U.get("symbol-spacing")),ge=U.get("text-padding")*t.tilePixelRatio,Be=U.get("icon-padding")*t.tilePixelRatio,De=At(U.get("text-max-angle")),qe=U.get("text-rotation-alignment")==="map"&&U.get("symbol-placement")!=="point",it=U.get("icon-rotation-alignment")==="map"&&U.get("symbol-placement")!=="point",Ve=U.get("symbol-placement"),Ye=ve/2;var He;const Je=U.get("icon-text-fit");let at;r&&Je!=="none"&&(t.allowVerticalPlacement&&i.vertical&&(at=kx(r,i.vertical,Je,U.get("icon-text-fit-padding"),G,re)),H&&(r=kx(r,H,Je,U.get("icon-text-fit-padding"),G,re)));const $e=(vt,Lt,xt)=>{if(Lt.x<0||Lt.x>=Ft||Lt.y<0||Lt.y>=Ft)return;let ni=null;if(ne){const{x:lt,y:Nt,z:ri}=D.projectTilePoint(Lt.x,Lt.y,xt);ni={anchor:new la(lt,Nt,ri,0,void 0),up:D.upVector(xt,Lt.x,Lt.y)}}(function(lt,Nt,ri,Ii,oi,Gt,Qi,si,ai,Gi,Yi,Hi,$i,an,mn,Sn,qi,Rn,In,fn,Mi,kn,Ki,Pr,Mn){const Jn=lt.addToLineVertexArray(Nt,Ii);let qn,Lr,Zn,os,Ku,xh,bh,v1=0,x1=0,b1=0,w1=0,sg=-1,ag=-1;const Ls={};let E1=im("");const Vl=ri?ri.anchor:Nt;let lg=0,ug=0;if(ai._unevaluatedLayout.getValue("text-radial-offset")===void 0?[lg,ug]=ai.layout.get("text-offset").evaluate(Mi,{},Mn).map(to=>to*Kn):(lg=ai.layout.get("text-radial-offset").evaluate(Mi,{},Mn)*Kn,ug=$m),lt.allowVerticalPlacement&&oi.vertical){const to=oi.vertical;if(mn)xh=Zm(to),si&&(bh=Zm(si));else{const io=ai.layout.get("text-rotate").evaluate(Mi,{},Mn)+90;Zn=hp(Gi,Vl,Nt,Yi,Hi,$i,to,an,io,Sn),si&&(os=hp(Gi,Vl,Nt,Yi,Hi,$i,si,Rn,io))}}if(Gt){const to=ai.layout.get("icon-rotate").evaluate(Mi,{},Mn),io=ai.layout.get("icon-text-fit")!=="none",wh=zx(Gt,to,Ki,io),hg=si?zx(si,to,Ki,io):void 0;Lr=hp(Gi,Vl,Nt,Yi,Hi,$i,Gt,Rn,to),v1=4*wh.length;const T1=lt.iconSizeData;let Gl=null;T1.kind==="source"?(Gl=[is*ai.layout.get("icon-size").evaluate(Mi,{},Mn)],Gl[0]>Za&&Ti(`${lt.layerIds[0]}: Value for "icon-size" is >= ${fh}. Reduce your "icon-size".`)):T1.kind==="composite"&&(Gl=[is*kn.compositeIconSizes[0].evaluate(Mi,{},Mn),is*kn.compositeIconSizes[1].evaluate(Mi,{},Mn)],(Gl[0]>Za||Gl[1]>Za)&&Ti(`${lt.layerIds[0]}: Value for "icon-size" is >= ${fh}. Reduce your "icon-size".`)),lt.addSymbols(lt.icon,wh,Gl,fn,In,Mi,!1,ri,Nt,Jn.lineStartIndex,Jn.lineLength,-1,Pr,Mn),sg=lt.icon.placedSymbolArray.length-1,hg&&(x1=4*hg.length,lt.addSymbols(lt.icon,hg,Gl,fn,In,Mi,mo.vertical,ri,Nt,Jn.lineStartIndex,Jn.lineLength,-1,Pr,Mn),ag=lt.icon.placedSymbolArray.length-1)}for(const to in oi.horizontal){const io=oi.horizontal[to];qn||(E1=im(io.text),mn?Ku=Zm(io):qn=hp(Gi,Vl,Nt,Yi,Hi,$i,io,an,ai.layout.get("text-rotate").evaluate(Mi,{},Mn),Sn));const wh=io.positionedLines.length===1;if(b1+=Fx(lt,ri,Nt,io,Qi,ai,mn,Mi,Sn,Jn,oi.vertical?mo.horizontal:mo.horizontalOnly,wh?Object.keys(oi.horizontal):[to],Ls,sg,kn,Pr,Mn),wh)break}oi.vertical&&(w1+=Fx(lt,ri,Nt,oi.vertical,Qi,ai,mn,Mi,Sn,Jn,mo.vertical,["vertical"],Ls,ag,kn,Pr,Mn));let Ja=-1;const cg=(to,io)=>to?Math.max(to,io):io;Ja=cg(Ku,Ja),Ja=cg(xh,Ja),Ja=cg(bh,Ja);const UM=Ja>-1?1:0;lt.glyphOffsetArray.length>=Wa.MAX_GLYPHS&&Ti("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),Mi.sortKey!==void 0&&lt.addToSortKeyRanges(lt.symbolInstances.length,Mi.sortKey),lt.symbolInstances.emplaceBack(Vl.x,Vl.y,Vl.z,Nt.x,Nt.y,Ls.right>=0?Ls.right:-1,Ls.center>=0?Ls.center:-1,Ls.left>=0?Ls.left:-1,Ls.vertical>=0?Ls.vertical:-1,sg,ag,E1,qn!==void 0?qn:lt.collisionBoxArray.length,qn!==void 0?qn+1:lt.collisionBoxArray.length,Zn!==void 0?Zn:lt.collisionBoxArray.length,Zn!==void 0?Zn+1:lt.collisionBoxArray.length,Lr!==void 0?Lr:lt.collisionBoxArray.length,Lr!==void 0?Lr+1:lt.collisionBoxArray.length,os||lt.collisionBoxArray.length,os?os+1:lt.collisionBoxArray.length,Yi,b1,w1,v1,x1,UM,0,lg,ug,Ja)})(t,Lt,ni,vt,i,r,u,at,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,ge,qe,E,0,Be,it,G,e,f,T,C,L)};if(Ve==="line")for(const vt of Rx(e.geometry,0,0,Ft,Ft)){const Lt=rM(vt,ve,De,i.vertical||H,r,de,fe,t.overscaling,Ft);for(const xt of Lt)H&&pM(t,H.text,Ye,xt)||$e(vt,xt,L)}else if(Ve==="line-center"){for(const vt of e.geometry)if(vt.length>1){const Lt=nM(vt,De,i.vertical||H,r,de,fe);Lt&&$e(vt,Lt,L)}}else if(e.type==="Polygon")for(const vt of Lm(e.geometry,0)){const Lt=lM(vt,16);$e(vt[0],new la(Lt.x,Lt.y,0,0,void 0),L)}else if(e.type==="LineString")for(const vt of e.geometry)$e(vt,new la(vt[0].x,vt[0].y,0,0,void 0),L);else if(e.type==="Point")for(const vt of e.geometry)for(const Lt of vt)$e([Lt],new la(Lt.x,Lt.y,0,0,void 0),L)}const fh=255,Za=fh*is;function Fx(t,e,i,r,u,f,m,y,E,T,C,L,D,B,U,G,H){const ne=function(fe,ve,ge,Be,De,qe,it,Ve){const Ye=[];if(ve.positionedLines.length===0)return Ye;const He=Be.layout.get("text-rotate").evaluate(qe,{})*Math.PI/180,Je=function(xt){const ni=xt[0],lt=xt[1],Nt=ni*lt;return Nt>0?[ni,-lt]:Nt<0?[-ni,lt]:ni===0?[lt,ni]:[lt,-ni]}(ge);let at=Math.abs(ve.top-ve.bottom);for(const xt of ve.positionedLines)at-=xt.lineOffset;const $e=ve.positionedLines.length,vt=at/$e;let Lt=ve.top-ge[1];for(let xt=0;xt<$e;++xt){const ni=ve.positionedLines[xt];Lt=oM(ve,vt,Lt,xt);for(const lt of ni.positionedGlyphs){if(!lt.rect)continue;const Nt=lt.rect||{};let ri=vx+1,Ii=!0,oi=1,Gt=0;if(lt.imageName){const Ki=it[lt.imageName];if(!Ki)continue;if(Ki.sdf){Ti("SDF images are not supported in formatted text and will be ignored.");continue}Ii=!1,oi=Ki.pixelRatio,ri=Vr/oi}const Qi=(De||Ve)&&lt.vertical,si=lt.metrics.advance*lt.scale/2,ai=lt.metrics,Gi=lt.rect;if(Gi===null)continue;Ve&&ve.verticalizable&&(Gt=lt.imageName?si-lt.metrics.width*lt.scale/2:0);const Yi=De?[lt.x+si,lt.y]:[0,0];let Hi=[0,0],$i=[0,0],an=!1;De||(Qi?($i=[lt.x+si+Je[0],lt.y+Je[1]-Gt],an=!0):Hi=[lt.x+si+ge[0],lt.y+ge[1]-Gt]);const mn=Gi.w*lt.scale/(oi*(lt.localGlyph?ns:1)),Sn=Gi.h*lt.scale/(oi*(lt.localGlyph?ns:1));let qi,Rn,In,fn;if(Qi){const Ki=lt.y-Lt,Pr=new Oe(-si,si-Ki),Mn=-Math.PI/2,Jn=new Oe(...$i);qi=new Oe(-si+Hi[0],Hi[1]),qi._rotateAround(Mn,Pr)._add(Jn),qi.x+=-Ki+si,qi.y-=(ai.left-ri)*lt.scale;const qn=lt.imageName?ai.advance*lt.scale:Kn*lt.scale,Lr=String.fromCharCode(lt.glyph);Uk(Lr)?qi.x+=(1-ri)*lt.scale:jk(Lr)?qi.x+=qn-ai.height*lt.scale+(-ri-1)*lt.scale:qi.x+=lt.imageName||ai.width+2*ri===Gi.w&&ai.height+2*ri===Gi.h?(qn-Sn)/2:(qn-(ai.height+2*ri)*lt.scale)/2,Rn=new Oe(qi.x,qi.y-mn),In=new Oe(qi.x+Sn,qi.y),fn=new Oe(qi.x+Sn,qi.y-mn)}else{const Ki=(ai.left-ri)*lt.scale-si+Hi[0],Pr=(-ai.top-ri)*lt.scale+Hi[1],Mn=Ki+mn,Jn=Pr+Sn;qi=new Oe(Ki,Pr),Rn=new Oe(Mn,Pr),In=new Oe(Ki,Jn),fn=new Oe(Mn,Jn)}if(He){let Ki;Ki=De?new Oe(0,0):an?new Oe(Je[0],Je[1]):new Oe(ge[0],ge[1]),qi._rotateAround(He,Ki),Rn._rotateAround(He,Ki),In._rotateAround(He,Ki),fn._rotateAround(He,Ki)}const Mi=new Oe(0,0),kn=new Oe(0,0);Ye.push({tl:qi,tr:Rn,bl:In,br:fn,tex:Nt,writingMode:ve.writingMode,glyphOffset:Yi,sectionIndex:lt.sectionIndex,isSDF:Ii,pixelOffsetTL:Mi,pixelOffsetBR:kn,minFontScaleX:0,minFontScaleY:0})}}return Ye}(0,r,E,f,m,y,u,t.allowVerticalPlacement),de=t.textSizeData;let re=null;de.kind==="source"?(re=[is*f.layout.get("text-size").evaluate(y,{},H)],re[0]>Za&&Ti(`${t.layerIds[0]}: Value for "text-size" is >= ${fh}. Reduce your "text-size".`)):de.kind==="composite"&&(re=[is*U.compositeTextSizes[0].evaluate(y,{},H),is*U.compositeTextSizes[1].evaluate(y,{},H)],(re[0]>Za||re[1]>Za)&&Ti(`${t.layerIds[0]}: Value for "text-size" is >= ${fh}. Reduce your "text-size".`)),t.addSymbols(t.text,ne,re,E,m,y,C,e,i,T.lineStartIndex,T.lineLength,B,G,H);for(const fe of L)D[fe]=t.text.placedSymbolArray.length-1;return 4*ne.length}function Ux(t){for(const e in t)return t[e];return null}function hp(t,e,i,r,u,f,m,y,E,T){let C=m.top,L=m.bottom,D=m.left,B=m.right;const U=m.collisionPadding;if(U&&(D-=U[0],C-=U[1],B+=U[2],L+=U[3]),E){const G=new Oe(D,C),H=new Oe(B,C),ne=new Oe(D,L),de=new Oe(B,L),re=At(E);let fe=new Oe(0,0);T&&(fe=new Oe(T[0],T[1])),G._rotateAround(re,fe),H._rotateAround(re,fe),ne._rotateAround(re,fe),de._rotateAround(re,fe),D=Math.min(G.x,H.x,ne.x,de.x),B=Math.max(G.x,H.x,ne.x,de.x),C=Math.min(G.y,H.y,ne.y,de.y),L=Math.max(G.y,H.y,ne.y,de.y)}return t.emplaceBack(e.x,e.y,e.z,i.x,i.y,D,C,B,L,y,r,u,f),t.length-1}function Zm(t){t.collisionPadding&&(t.top-=t.collisionPadding[1],t.bottom+=t.collisionPadding[3]);const e=t.bottom-t.top;return e>0?Math.max(10,e):null}function pM(t,e,i,r){const u=t.compareText;if(e in u){const f=u[e];for(let m=f.length-1;m>=0;m--)if(r.dist(f[m])<i)return!0}else u[e]=[];return u[e].push(r),!1}function jx(t,e){const i=t.fovAboveCenter,r=t.elevation?t.elevation.getMinElevationBelowMSL()*e:0,u=(t._camera.position[2]*t.worldSize-r)/Math.cos(t._pitch),f=Math.sin(i)*u/Math.sin(Math.max(Math.PI/2-t._pitch-i,.01)),m=Math.sin(t._pitch)*f+u;return Math.min(1.01*m,u*(1/t._horizonShift))}function Ul(t,e){if(!e.isReprojectedInTileSpace)return{scale:1<<t.z,x:t.x,y:t.y,x2:t.x+1,y2:t.y+1,projection:e};const i=Math.pow(2,-t.z),r=t.x*i,u=(t.x+1)*i,f=t.y*i,m=(t.y+1)*i,y=po(r),E=po(u),T=cr(f),C=cr(m),L=e.project(y,T),D=e.project(E,T),B=e.project(E,C),U=e.project(y,C);let G=Math.min(L.x,D.x,B.x,U.x),H=Math.min(L.y,D.y,B.y,U.y),ne=Math.max(L.x,D.x,B.x,U.x),de=Math.max(L.y,D.y,B.y,U.y);const re=i/16;function fe(ge,Be,De,qe,it,Ve){const Ye=(De+it)/2,He=(qe+Ve)/2,Je=e.project(po(Ye),cr(He)),at=Math.max(0,G-Je.x,H-Je.y,Je.x-ne,Je.y-de);G=Math.min(G,Je.x),ne=Math.max(ne,Je.x),H=Math.min(H,Je.y),de=Math.max(de,Je.y),at>re&&(fe(ge,Je,De,qe,Ye,He),fe(Je,Be,Ye,He,it,Ve))}fe(L,D,r,f,u,f),fe(D,B,u,f,u,m),fe(B,U,u,m,r,m),fe(U,L,r,m,r,f),G-=re,H-=re,ne+=re,de+=re;const ve=1/Math.max(ne-G,de-H);return{scale:ve,x:G*ve,y:H*ve,x2:ne*ve,y2:de*ve,projection:e}}const dM=Qo(new Float32Array(16));class Xa{constructor(e){this.spec=e,this.name=e.name,this.wrap=!1,this.requiresDraping=!1,this.supportsWorldCopies=!1,this.supportsTerrain=!1,this.supportsFog=!1,this.supportsFreeCamera=!1,this.zAxisUnit="meters",this.isReprojectedInTileSpace=!0,this.unsupportedLayers=["custom"],this.center=[0,0],this.range=[3.5,7]}project(e,i){return{x:0,y:0,z:0}}unproject(e,i){return new Vi(0,0)}projectTilePoint(e,i,r){return{x:e,y:i,z:0}}locationPoint(e,i,r=!0){return e._coordinatePoint(e.locationCoordinate(i),r)}pixelsPerMeter(e,i){return ts(1,e)*i}pixelSpaceConversion(e,i,r){return 1}farthestPixelDistance(e){return jx(e,e.pixelsPerMeter)}pointCoordinate(e,i,r,u){const f=e.horizonLineFromTop(!1),m=new Oe(i,Math.max(f,r));return e.rayIntersectionCoordinate(e.pointRayIntersection(m,u))}pointCoordinate3D(e,i,r){const u=new Oe(i,r);if(e.elevation)return e.elevation.pointCoordinate(u);{const f=this.pointCoordinate(e,u.x,u.y,0);return[f.x,f.y,f.z]}}isPointAboveHorizon(e,i){if(e.elevation)return!this.pointCoordinate3D(e,i.x,i.y);const r=e.horizonLineFromTop();return i.y<r}createInversionMatrix(e,i){return dM}createTileMatrix(e,i,r){let u,f,m;const y=r.canonical,E=Qo(new Float64Array(16));if(this.isReprojectedInTileSpace){const T=Ul(y,this);u=1,f=T.x+r.wrap*T.scale,m=T.y,Rl(E,E,[u/T.scale,u/T.scale,e.pixelsPerMeter/i])}else u=i/e.zoomScale(y.z),f=(y.x+Math.pow(2,y.z)*r.wrap)*u,m=y.y*u;return Gc(E,E,[f,m,0]),Rl(E,E,[u/Ft,u/Ft,1]),E}upVector(e,i,r){return[0,0,1]}upVectorScale(e,i,r){return{metersToTile:1}}}class mM extends Xa{constructor(e){super(e),this.range=[4,7],this.center=e.center||[-96,37.5];const[i,r]=this.parallels=e.parallels||[29.5,45.5],u=Math.sin(At(i));this.n=(u+Math.sin(At(r)))/2,this.c=1+u*(2*this.n-u),this.r0=Math.sqrt(this.c)/this.n}project(e,i){const{n:r,c:u,r0:f}=this,m=At(e-this.center[0]),y=At(i),E=Math.sqrt(u-2*r*Math.sin(y))/r;return{x:E*Math.sin(m*r),y:E*Math.cos(m*r)-f,z:0}}unproject(e,i){const{n:r,c:u,r0:f}=this,m=f+i;let y=Math.atan2(e,Math.abs(m))*Math.sign(m);m*r<0&&(y-=Math.PI*Math.sign(e)*Math.sign(m));const E=At(this.center[0])*r;y=St(y,-Math.PI-E,Math.PI-E);const T=Rt(Xt(y/r)+this.center[0],-180,180),C=Math.asin(Rt((u-(e*e+m*m)*r*r)/(2*r),-1,1)),L=Rt(Xt(C),-hr,hr);return new Vi(T,L)}}const ph=1.340264,dh=-.081106,mh=893e-6,gh=.003796,fp=Math.sqrt(3)/2;class gM extends Xa{project(e,i){i=i/180*Math.PI,e=e/180*Math.PI;const r=Math.asin(fp*Math.sin(i)),u=r*r,f=u*u*u;return{x:.5*(e*Math.cos(r)/(fp*(ph+3*dh*u+f*(7*mh+9*gh*u)))/Math.PI+.5),y:1-.5*(r*(ph+dh*u+f*(mh+gh*u))/Math.PI+1),z:0}}unproject(e,i){e=(2*e-.5)*Math.PI;let r=i=(2*(1-i)-1)*Math.PI,u=r*r,f=u*u*u;for(let C,L,D,B=0;B<12&&(L=r*(ph+dh*u+f*(mh+gh*u))-i,D=ph+3*dh*u+f*(7*mh+9*gh*u),C=L/D,r=Rt(r-C,-Math.PI/3,Math.PI/3),u=r*r,f=u*u*u,!(Math.abs(C)<1e-12));++B);const m=fp*e*(ph+3*dh*u+f*(7*mh+9*gh*u))/Math.cos(r),y=Math.asin(Math.sin(r)/fp),E=Rt(180*m/Math.PI,-180,180),T=Rt(180*y/Math.PI,-hr,hr);return new Vi(E,T)}}class _M extends Xa{constructor(e){super(e),this.wrap=!0,this.supportsWorldCopies=!0}project(e,i){return{x:.5+e/360,y:.5-i/360,z:0}}unproject(e,i){const r=360*(e-.5),u=Rt(360*(.5-i),-hr,hr);return new Vi(r,u)}}const Yu=Math.PI/2;function pp(t){return Math.tan((Yu+t)/2)}class yM extends Xa{constructor(e){super(e),this.center=e.center||[0,30];const[i,r]=this.parallels=e.parallels||[30,30];let u=At(i),f=At(r);this.southernCenter=u+f<0,this.southernCenter&&(u=-u,f=-f);const m=Math.cos(u),y=pp(u);this.n=u===f?Math.sin(u):Math.log(m/Math.cos(f))/Math.log(pp(f)/y),this.f=m*Math.pow(pp(u),this.n)/this.n}project(e,i){i=At(i),this.southernCenter&&(i=-i),e=At(e-this.center[0]);const r=1e-6,{n:u,f}=this;f>0?i<-Yu+r&&(i=-Yu+r):i>Yu-r&&(i=Yu-r);const m=f/Math.pow(pp(i),u);let y=m*Math.sin(u*e),E=f-m*Math.cos(u*e);return y=.5*(y/Math.PI+.5),E=.5*(E/Math.PI+.5),{x:y,y:this.southernCenter?E:1-E,z:0}}unproject(e,i){e=(2*e-.5)*Math.PI,this.southernCenter&&(i=1-i),i=(2*(1-i)-.5)*Math.PI;const{n:r,f:u}=this,f=u-i,m=Math.sign(f),y=Math.sign(r)*Math.sqrt(e*e+f*f);let E=Math.atan2(e,Math.abs(f))*m;f*r<0&&(E-=Math.PI*Math.sign(e)*m);const T=Rt(Xt(E/r)+this.center[0],-180,180),C=Rt(Xt(2*Math.atan(Math.pow(u/y,1/r))-Yu),-hr,hr);return new Vi(T,this.southernCenter?-C:C)}}class Vx extends Xa{constructor(e){super(e),this.wrap=!0,this.supportsWorldCopies=!0,this.supportsTerrain=!0,this.supportsFog=!0,this.supportsFreeCamera=!0,this.isReprojectedInTileSpace=!1,this.unsupportedLayers=[],this.range=null}project(e,i){return{x:ks(e),y:Ms(i),z:0}}unproject(e,i){const r=po(e),u=cr(i);return new Vi(r,u)}}const Gx=At(hr);class vM extends Xa{project(e,i){const r=(i=At(i))*i,u=r*r;return{x:.5*((e=At(e))*(.8707-.131979*r+u*(u*(.003971*r-.001529*u)-.013791))/Math.PI+.5),y:1-.5*(i*(1.007226+r*(.015085+u*(.028874*r-.044475-.005916*u)))/Math.PI+1),z:0}}unproject(e,i){e=(2*e-.5)*Math.PI;let r=i=(2*(1-i)-1)*Math.PI,u=25,f=0,m=r*r;do{m=r*r;const T=m*m;f=(r*(1.007226+m*(.015085+T*(.028874*m-.044475-.005916*T)))-i)/(1.007226+m*(.045255+T*(.259866*m-.311325-.06507600000000001*T))),r=Rt(r-f,-Gx,Gx)}while(Math.abs(f)>1e-6&&--u>0);m=r*r;const y=Rt(Xt(e/(.8707+m*(m*(m*m*m*(.003971-.001529*m)-.013791)-.131979))),-180,180),E=Xt(r);return new Vi(y,E)}}const $x=At(hr);class xM extends Xa{project(e,i){i=At(i),e=At(e);const r=Math.cos(i),u=2/Math.PI,f=Math.acos(r*Math.cos(e/2)),m=Math.sin(f)/f,y=.5*(e*u+2*r*Math.sin(e/2)/m)||0,E=.5*(i+Math.sin(i)/m)||0;return{x:.5*(y/Math.PI+.5),y:1-.5*(E/Math.PI+1),z:0}}unproject(e,i){let r=e=(2*e-.5)*Math.PI,u=i=(2*(1-i)-1)*Math.PI,f=25;const m=1e-6;let y=0,E=0;do{const T=Math.cos(u),C=Math.sin(u),L=2*C*T,D=C*C,B=T*T,U=Math.cos(r/2),G=Math.sin(r/2),H=2*U*G,ne=G*G,de=1-B*U*U,re=de?1/de:0,fe=de?Math.acos(T*U)*Math.sqrt(1/de):0,ve=.5*(2*fe*T*G+2*r/Math.PI)-e,ge=.5*(fe*C+u)-i,Be=.5*re*(B*ne+fe*T*U*D)+1/Math.PI,De=re*(H*L/4-fe*C*G),qe=.125*re*(L*G-fe*C*B*H),it=.5*re*(D*U+fe*ne*T)+.5,Ve=De*qe-it*Be;y=(ge*De-ve*it)/Ve,E=(ve*qe-ge*Be)/Ve,r=Rt(r-y,-Math.PI,Math.PI),u=Rt(u-E,-$x,$x)}while((Math.abs(y)>m||Math.abs(E)>m)&&--f>0);return new Vi(Xt(r),Xt(u))}}class qx extends Xa{constructor(e){super(e),this.center=e.center||[0,0],this.parallels=e.parallels||[0,0],this.cosPhi=Math.max(.01,Math.cos(At(this.parallels[0]))),this.scale=1/(2*Math.max(Math.PI*this.cosPhi,1/this.cosPhi)),this.wrap=!0,this.supportsWorldCopies=!0}project(e,i){const{scale:r,cosPhi:u}=this;return{x:At(e)*u*r+.5,y:-Math.sin(At(i))/u*r+.5,z:0}}unproject(e,i){const{scale:r,cosPhi:u}=this,f=-(i-.5)/r,m=Rt(Xt((e-.5)/r)/u,-180,180),y=Math.asin(Rt(f*u,-1,1)),E=Rt(Xt(y),-hr,hr);return new Vi(m,E)}}class bM extends Vx{constructor(e){super(e),this.requiresDraping=!0,this.supportsWorldCopies=!1,this.supportsFog=!0,this.zAxisUnit="pixels",this.unsupportedLayers=["debug"],this.range=[3,5]}projectTilePoint(e,i,r){const u=Kc(e,i,r);return gn(u,u,Jc(Is(r))),{x:u[0],y:u[1],z:u[2]}}locationPoint(e,i){const r=Du(i.lat,i.lng),u=Mr([],r),f=e.elevation?e.elevation.getAtPointOrZero(e.locationCoordinate(i),e._centerAltitude):e._centerAltitude;Xc(r,r,u,ts(1,0)*Ft*f);const m=Qo(new Float64Array(16));return Ll(m,e.pixelMatrix,e.globeMatrix),gn(r,r,m),new Oe(r[0],r[1])}pixelsPerMeter(e,i){return ts(1,0)*i}pixelSpaceConversion(e,i,r){const u=ts(1,e)*i,f=bi(ts(1,45)*i,u,r);return this.pixelsPerMeter(e,i)/f}createTileMatrix(e,i,r){const u=gm(Is(r.canonical));return Ll(new Float64Array(16),e.globeMatrix,u)}createInversionMatrix(e,i){const{center:r}=e,u=Jc(Is(i));return jf(u,u,At(r.lng)),sm(u,u,At(r.lat)),Rl(u,u,[e._pixelsPerMercatorPixel,e._pixelsPerMercatorPixel,1]),Float32Array.from(u)}pointCoordinate(e,i,r,u){return y0(e,i,r,!0)||new zu(0,0)}pointCoordinate3D(e,i,r){const u=this.pointCoordinate(e,i,r,0);return[u.x,u.y,u.z]}isPointAboveHorizon(e,i){return!y0(e,i.x,i.y,!1)}farthestPixelDistance(e){const i=function(u,f){const m=u.cameraToCenterDistance,y=u._centerAltitude*f,E=u._camera,T=u._camera.forward(),C=ra([],fo([],T,-m),[0,0,y]),L=u.worldSize/(2*Math.PI),D=[0,0,-L],B=u.width/u.height,U=Math.tan(u.fovAboveCenter),G=fo([],E.up(),U),H=fo([],E.right(),U*B),ne=Mr([],ra([],ra([],T,G),H)),de=[];let re;if(new cm(C,ne).closestPointOnSphere(D,L,de)){const fe=ra([],de,D),ve=es([],fe,C);re=Math.cos(u.fovAboveCenter)*$c(ve)}else{const fe=es([],C,D),ve=es([],D,C);Mr(ve,ve);const ge=$c(fe)-L;re=Math.sqrt(ge*(ge+2*L));const Be=Math.acos(re/(L+ge))-Math.acos(Mo(T,ve));re*=Math.cos(Be)}return 1.01*re}(e,this.pixelsPerMeter(e.center.lat,e.worldSize)),r=Ou(e.zoom);if(r>0){const u=jx(e,ts(1,e.center.lat)*e.worldSize),f=e.worldSize/(2*Math.PI),m=Math.max(e.width,e.height)/e.worldSize*Math.PI;return bi(i,u+f*(1-Math.cos(m)),Math.pow(r,10))}return i}upVector(e,i,r){return Kc(i,r,e,1)}upVectorScale(e){return{metersToTile:Vf($f(Is(e)))}}}function Zx(t){const e=t.parallels,i=!!e&&Math.abs(e[0]+e[1])<.01;switch(t.name){case"mercator":return new Vx(t);case"equirectangular":return new _M(t);case"naturalEarth":return new vM(t);case"equalEarth":return new gM(t);case"winkelTripel":return new xM(t);case"albers":return i?new qx(t):new mM(t);case"lambertConformalConic":return i?new qx(t):new yM(t);case"globe":return new bM(t)}throw new Error(`Invalid projection name: ${t.name}`)}const wM=ep.types,EM=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function dp(t,e,i,r,u,f,m,y,E,T,C,L,D){const B=y?Math.min(Za,Math.round(y[0])):0,U=y?Math.min(Za,Math.round(y[1])):0;t.emplaceBack(e,i,Math.round(32*r),Math.round(32*u),f,m,(B<<1)+(E?1:0),U,16*T,16*C,256*L,256*D)}function mp(t,e,i,r,u,f,m){t.emplaceBack(e,i,r,u,f,m)}function gp(t,e,i,r,u){t.emplaceBack(e,i,r,u),t.emplaceBack(e,i,r,u),t.emplaceBack(e,i,r,u),t.emplaceBack(e,i,r,u)}function TM(t){for(const e of t.sections)if(tm(e.text))return!0;return!1}class Xm{constructor(e){this.layoutVertexArray=new Ke,this.indexArray=new Ot,this.programConfigurations=e,this.segments=new En,this.dynamicLayoutVertexArray=new et,this.opacityVertexArray=new zt,this.placedSymbolArray=new wn,this.globeExtVertexArray=new st}isEmpty(){return this.layoutVertexArray.length===0&&this.indexArray.length===0&&this.dynamicLayoutVertexArray.length===0&&this.opacityVertexArray.length===0}upload(e,i,r,u){this.isEmpty()||(r&&(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Lk.members),this.indexBuffer=e.createIndexBuffer(this.indexArray,i),this.dynamicLayoutVertexBuffer=e.createVertexBuffer(this.dynamicLayoutVertexArray,Dk.members,!0),this.opacityVertexBuffer=e.createVertexBuffer(this.opacityVertexArray,EM,!0),this.globeExtVertexArray.length>0&&(this.globeExtVertexBuffer=e.createVertexBuffer(this.globeExtVertexArray,Rk.members,!0)),this.opacityVertexBuffer.itemSize=1),(r||u)&&this.programConfigurations.upload(e))}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy(),this.globeExtVertexBuffer&&this.globeExtVertexBuffer.destroy())}}Ct(Xm,"SymbolBuffers");class Wm{constructor(e,i,r){this.layoutVertexArray=new e,this.layoutAttributes=i,this.indexArray=new r,this.segments=new En,this.collisionVertexArray=new mi,this.collisionVertexArrayExt=new di}upload(e){this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=e.createVertexBuffer(this.collisionVertexArray,Ok.members,!0),this.collisionVertexBufferExt=e.createVertexBuffer(this.collisionVertexArrayExt,zk.members,!0)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy(),this.collisionVertexBufferExt.destroy())}}Ct(Wm,"CollisionBuffers");class Wa{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(m=>m.id),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.fullyClipped=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Qo([]),this.placementViewportMatrix=Qo([]);const i=this.layers[0]._unevaluatedLayout._values;this.textSizeData=zm(this.zoom,i["text-size"]),this.iconSizeData=zm(this.zoom,i["icon-size"]);const r=this.layers[0].layout,u=r.get("symbol-sort-key"),f=r.get("symbol-z-order");this.canOverlap=r.get("text-allow-overlap")||r.get("icon-allow-overlap")||r.get("text-ignore-placement")||r.get("icon-ignore-placement"),this.sortFeaturesByKey=f!=="viewport-y"&&u.constantOr(1)!==void 0,this.sortFeaturesByY=(f==="viewport-y"||f==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,this.writingModes=r.get("text-writing-mode").map(m=>mo[m]),this.stateDependentLayerIds=this.layers.filter(m=>m.isStateDependent()).map(m=>m.id),this.sourceID=e.sourceID,this.projection=e.projection}createArrays(){this.text=new Xm(new Pl(this.layers,this.zoom,e=>/^text/.test(e))),this.icon=new Xm(new Pl(this.layers,this.zoom,e=>/^icon/.test(e))),this.glyphOffsetArray=new kr,this.lineVertexArray=new Au,this.symbolInstances=new nn}calculateGlyphDependencies(e,i,r,u,f){for(let m=0;m<e.length;m++)if(i[e.charCodeAt(m)]=!0,u&&f){const y=uh[e.charAt(m)];y&&(i[y.charCodeAt(0)]=!0)}}populate(e,i,r,u){const f=this.layers[0],m=f.layout,y=this.projection.name==="globe",E=m.get("text-font"),T=m.get("text-field"),C=m.get("icon-image"),L=(T.value.kind!=="constant"||T.value.value instanceof Nn&&!T.value.value.isEmpty()||T.value.value.toString().length>0)&&(E.value.kind!=="constant"||E.value.value.length>0),D=C.value.kind!=="constant"||!!C.value.value||Object.keys(C.parameters).length>0,B=m.get("symbol-sort-key");if(this.features=[],!L&&!D)return;const U=i.iconDependencies,G=i.glyphDependencies,H=i.availableImages,ne=new P(this.zoom);for(const{feature:de,id:re,index:fe,sourceLayerIndex:ve}of e){const ge=f._featureFilter.needGeometry,Be=Nl(de,ge);if(!f._featureFilter.filter(ne,Be,r))continue;if(ge||(Be.geometry=oa(de,r,u)),y&&de.type!==1&&r.z<=5){const Ve=Be.geometry,Ye=.98078528056,He=(Je,at)=>Mo(Kc(Je.x,Je.y,r,1),Kc(at.x,at.y,r,1))<Ye;for(let Je=0;Je<Ve.length;Je++)Ve[Je]=DI(Ve[Je],He)}let De,qe;if(L){const Ve=f.getValueAndResolveTokens("text-field",Be,r,H),Ye=Nn.factory(Ve);TM(Ye)&&(this.hasRTLText=!0),(!this.hasRTLText||b()==="unavailable"||this.hasRTLText&&M.isParsed())&&(De=Fk(Ye,f,Be))}if(D){const Ve=f.getValueAndResolveTokens("icon-image",Be,r,H);qe=Ve instanceof wr?Ve:wr.fromString(Ve)}if(!De&&!qe)continue;const it=this.sortFeaturesByKey?B.evaluate(Be,{},r):void 0;if(this.features.push({id:re,text:De,icon:qe,index:fe,sourceLayerIndex:ve,geometry:Be.geometry,properties:de.properties,type:wM[de.type],sortKey:it}),qe&&(U[qe.name]=!0),De){const Ve=E.evaluate(Be,{},r).join(","),Ye=m.get("text-rotation-alignment")==="map"&&m.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(mo.vertical)>=0;for(const He of De.sections)if(He.image)U[He.image.name]=!0;else{const Je=zc(De.toString()),at=He.fontStack||Ve,$e=G[at]=G[at]||{};this.calculateGlyphDependencies(He.text,$e,Ye,this.allowVerticalPlacement,Je)}}}m.get("symbol-placement")==="line"&&(this.features=function(de){const re={},fe={},ve=[];let ge=0;function Be(Ve){ve.push(de[Ve]),ge++}function De(Ve,Ye,He){const Je=fe[Ve];return delete fe[Ve],fe[Ye]=Je,ve[Je].geometry[0].pop(),ve[Je].geometry[0]=ve[Je].geometry[0].concat(He[0]),Je}function qe(Ve,Ye,He){const Je=re[Ye];return delete re[Ye],re[Ve]=Je,ve[Je].geometry[0].shift(),ve[Je].geometry[0]=He[0].concat(ve[Je].geometry[0]),Je}function it(Ve,Ye,He){const Je=He?Ye[0][Ye[0].length-1]:Ye[0][0];return`${Ve}:${Je.x}:${Je.y}`}for(let Ve=0;Ve<de.length;Ve++){const Ye=de[Ve],He=Ye.geometry,Je=Ye.text?Ye.text.toString():null;if(!Je){Be(Ve);continue}const at=it(Je,He),$e=it(Je,He,!0);if(at in fe&&$e in re&&fe[at]!==re[$e]){const vt=qe(at,$e,He),Lt=De(at,$e,ve[vt].geometry);delete re[at],delete fe[$e],fe[it(Je,ve[Lt].geometry,!0)]=Lt,ve[vt].geometry=null}else at in fe?De(at,$e,He):$e in re?qe(at,$e,He):(Be(Ve),re[at]=ge-1,fe[$e]=ge-1)}return ve.filter(Ve=>Ve.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((de,re)=>de.sortKey-re.sortKey)}update(e,i,r,u){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,i,this.layers,r,u),this.icon.programConfigurations.updatePaintArrays(e,i,this.layers,r,u))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(e){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(e),this.iconCollisionBox.upload(e)),this.text.upload(e,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(e,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}getProjection(){return this.projectionInstance||(this.projectionInstance=Zx(this.projection)),this.projectionInstance}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(e,i){const r=this.lineVertexArray.length;if(e.segment!==void 0)for(const{x:u,y:f}of i)this.lineVertexArray.emplaceBack(u,f);return{lineStartIndex:r,lineLength:this.lineVertexArray.length-r}}addSymbols(e,i,r,u,f,m,y,E,T,C,L,D,B,U){const G=e.indexArray,H=e.layoutVertexArray,ne=e.globeExtVertexArray,de=e.segments.prepareSegment(4*i.length,H,G,this.canOverlap?m.sortKey:void 0),re=this.glyphOffsetArray.length,fe=de.vertexLength,ve=this.allowVerticalPlacement&&y===mo.vertical?Math.PI/2:0,ge=m.text&&m.text.sections;for(let De=0;De<i.length;De++){const{tl:qe,tr:it,bl:Ve,br:Ye,tex:He,pixelOffsetTL:Je,pixelOffsetBR:at,minFontScaleX:$e,minFontScaleY:vt,glyphOffset:Lt,isSDF:xt,sectionIndex:ni}=i[De],lt=de.vertexLength,Nt=Lt[1];if(dp(H,T.x,T.y,qe.x,Nt+qe.y,He.x,He.y,r,xt,Je.x,Je.y,$e,vt),dp(H,T.x,T.y,it.x,Nt+it.y,He.x+He.w,He.y,r,xt,at.x,Je.y,$e,vt),dp(H,T.x,T.y,Ve.x,Nt+Ve.y,He.x,He.y+He.h,r,xt,Je.x,at.y,$e,vt),dp(H,T.x,T.y,Ye.x,Nt+Ye.y,He.x+He.w,He.y+He.h,r,xt,at.x,at.y,$e,vt),E){const{x:ri,y:Ii,z:oi}=E.anchor,[Gt,Qi,si]=E.up;mp(ne,ri,Ii,oi,Gt,Qi,si),mp(ne,ri,Ii,oi,Gt,Qi,si),mp(ne,ri,Ii,oi,Gt,Qi,si),mp(ne,ri,Ii,oi,Gt,Qi,si),gp(e.dynamicLayoutVertexArray,ri,Ii,oi,ve)}else gp(e.dynamicLayoutVertexArray,T.x,T.y,T.z,ve);G.emplaceBack(lt,lt+1,lt+2),G.emplaceBack(lt+1,lt+2,lt+3),de.vertexLength+=4,de.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(Lt[0]),De!==i.length-1&&ni===i[De+1].sectionIndex||e.programConfigurations.populatePaintArrays(H.length,m,m.index,{},B,U,ge&&ge[ni])}const Be=E?E.anchor:T;e.placedSymbolArray.emplaceBack(Be.x,Be.y,Be.z,T.x,T.y,re,this.glyphOffsetArray.length-re,fe,C,L,T.segment,r?r[0]:0,r?r[1]:0,u[0],u[1],y,0,!1,0,D,0)}_commitLayoutVertex(e,i,r,u,f,m,y){e.emplaceBack(i,r,u,f,m,Math.round(y.x),Math.round(y.y))}_addCollisionDebugVertices(e,i,r,u,f,m,y){const E=r.segments.prepareSegment(4,r.layoutVertexArray,r.indexArray),T=E.vertexLength,C=y.tileAnchorX,L=y.tileAnchorY;for(let B=0;B<4;B++)r.collisionVertexArray.emplaceBack(0,0,0,0);r.collisionVertexArrayExt.emplaceBack(i,-e.padding,-e.padding),r.collisionVertexArrayExt.emplaceBack(i,e.padding,-e.padding),r.collisionVertexArrayExt.emplaceBack(i,e.padding,e.padding),r.collisionVertexArrayExt.emplaceBack(i,-e.padding,e.padding),this._commitLayoutVertex(r.layoutVertexArray,u,f,m,C,L,new Oe(e.x1,e.y1)),this._commitLayoutVertex(r.layoutVertexArray,u,f,m,C,L,new Oe(e.x2,e.y1)),this._commitLayoutVertex(r.layoutVertexArray,u,f,m,C,L,new Oe(e.x2,e.y2)),this._commitLayoutVertex(r.layoutVertexArray,u,f,m,C,L,new Oe(e.x1,e.y2)),E.vertexLength+=4;const D=r.indexArray;D.emplaceBack(T,T+1),D.emplaceBack(T+1,T+2),D.emplaceBack(T+2,T+3),D.emplaceBack(T+3,T),E.primitiveLength+=4}_addTextDebugCollisionBoxes(e,i,r,u,f,m){for(let y=u;y<f;y++){const E=r.get(y),T=this.getSymbolInstanceTextSize(e,m,i,y);this._addCollisionDebugVertices(E,T,this.textCollisionBox,E.projectedAnchorX,E.projectedAnchorY,E.projectedAnchorZ,m)}}_addIconDebugCollisionBoxes(e,i,r,u,f,m){for(let y=u;y<f;y++){const E=r.get(y),T=this.getSymbolInstanceIconSize(e,i,m.placedIconSymbolIndex);this._addCollisionDebugVertices(E,T,this.iconCollisionBox,E.projectedAnchorX,E.projectedAnchorY,E.projectedAnchorZ,m)}}generateCollisionDebugBuffers(e,i){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Wm(Pt,hx.members,$n),this.iconCollisionBox=new Wm(Pt,hx.members,$n);const r=ju(this.iconSizeData,e),u=ju(this.textSizeData,e);for(let f=0;f<this.symbolInstances.length;f++){const m=this.symbolInstances.get(f);this._addTextDebugCollisionBoxes(u,e,i,m.textBoxStartIndex,m.textBoxEndIndex,m),this._addTextDebugCollisionBoxes(u,e,i,m.verticalTextBoxStartIndex,m.verticalTextBoxEndIndex,m),this._addIconDebugCollisionBoxes(r,e,i,m.iconBoxStartIndex,m.iconBoxEndIndex,m),this._addIconDebugCollisionBoxes(r,e,i,m.verticalIconBoxStartIndex,m.verticalIconBoxEndIndex,m)}}getSymbolInstanceTextSize(e,i,r,u){const f=this.text.placedSymbolArray.get(i.rightJustifiedTextSymbolIndex>=0?i.rightJustifiedTextSymbolIndex:i.centerJustifiedTextSymbolIndex>=0?i.centerJustifiedTextSymbolIndex:i.leftJustifiedTextSymbolIndex>=0?i.leftJustifiedTextSymbolIndex:i.verticalPlacedTextSymbolIndex>=0?i.verticalPlacedTextSymbolIndex:u),m=rp(this.textSizeData,e,f)/Kn;return this.tilePixelRatio*m}getSymbolInstanceIconSize(e,i,r){const u=this.icon.placedSymbolArray.get(r),f=rp(this.iconSizeData,e,u);return this.tilePixelRatio*f}_commitDebugCollisionVertexUpdate(e,i,r){e.emplaceBack(i,-r,-r),e.emplaceBack(i,r,-r),e.emplaceBack(i,r,r),e.emplaceBack(i,-r,r)}_updateTextDebugCollisionBoxes(e,i,r,u,f,m){for(let y=u;y<f;y++){const E=r.get(y),T=this.getSymbolInstanceTextSize(e,m,i,y);this._commitDebugCollisionVertexUpdate(this.textCollisionBox.collisionVertexArrayExt,T,E.padding)}}_updateIconDebugCollisionBoxes(e,i,r,u,f,m){for(let y=u;y<f;y++){const E=r.get(y),T=this.getSymbolInstanceIconSize(e,i,m);this._commitDebugCollisionVertexUpdate(this.iconCollisionBox.collisionVertexArrayExt,T,E.padding)}}updateCollisionDebugBuffers(e,i){if(!this.hasDebugData())return;this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexArrayExt.clear(),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexArrayExt.clear();const r=ju(this.iconSizeData,e),u=ju(this.textSizeData,e);for(let f=0;f<this.symbolInstances.length;f++){const m=this.symbolInstances.get(f);this._updateTextDebugCollisionBoxes(u,e,i,m.textBoxStartIndex,m.textBoxEndIndex,m),this._updateTextDebugCollisionBoxes(u,e,i,m.verticalTextBoxStartIndex,m.verticalTextBoxEndIndex,m),this._updateIconDebugCollisionBoxes(r,e,i,m.iconBoxStartIndex,m.iconBoxEndIndex,m.placedIconSymbolIndex),this._updateIconDebugCollisionBoxes(r,e,i,m.verticalIconBoxStartIndex,m.verticalIconBoxEndIndex,m.placedIconSymbolIndex)}this.hasTextCollisionBoxData()&&this.textCollisionBox.collisionVertexBufferExt&&this.textCollisionBox.collisionVertexBufferExt.updateData(this.textCollisionBox.collisionVertexArrayExt),this.hasIconCollisionBoxData()&&this.iconCollisionBox.collisionVertexBufferExt&&this.iconCollisionBox.collisionVertexBufferExt.updateData(this.iconCollisionBox.collisionVertexArrayExt)}_deserializeCollisionBoxesForSymbol(e,i,r,u,f,m,y,E,T){const C={};if(i<r){const{x1:L,y1:D,x2:B,y2:U,padding:G,projectedAnchorX:H,projectedAnchorY:ne,projectedAnchorZ:de,tileAnchorX:re,tileAnchorY:fe,featureIndex:ve}=e.get(i);C.textBox={x1:L,y1:D,x2:B,y2:U,padding:G,projectedAnchorX:H,projectedAnchorY:ne,projectedAnchorZ:de,tileAnchorX:re,tileAnchorY:fe},C.textFeatureIndex=ve}if(u<f){const{x1:L,y1:D,x2:B,y2:U,padding:G,projectedAnchorX:H,projectedAnchorY:ne,projectedAnchorZ:de,tileAnchorX:re,tileAnchorY:fe,featureIndex:ve}=e.get(u);C.verticalTextBox={x1:L,y1:D,x2:B,y2:U,padding:G,projectedAnchorX:H,projectedAnchorY:ne,projectedAnchorZ:de,tileAnchorX:re,tileAnchorY:fe},C.verticalTextFeatureIndex=ve}if(m<y){const{x1:L,y1:D,x2:B,y2:U,padding:G,projectedAnchorX:H,projectedAnchorY:ne,projectedAnchorZ:de,tileAnchorX:re,tileAnchorY:fe,featureIndex:ve}=e.get(m);C.iconBox={x1:L,y1:D,x2:B,y2:U,padding:G,projectedAnchorX:H,projectedAnchorY:ne,projectedAnchorZ:de,tileAnchorX:re,tileAnchorY:fe},C.iconFeatureIndex=ve}if(E<T){const{x1:L,y1:D,x2:B,y2:U,padding:G,projectedAnchorX:H,projectedAnchorY:ne,projectedAnchorZ:de,tileAnchorX:re,tileAnchorY:fe,featureIndex:ve}=e.get(E);C.verticalIconBox={x1:L,y1:D,x2:B,y2:U,padding:G,projectedAnchorX:H,projectedAnchorY:ne,projectedAnchorZ:de,tileAnchorX:re,tileAnchorY:fe},C.verticalIconFeatureIndex=ve}return C}deserializeCollisionBoxes(e){this.collisionArrays=[];for(let i=0;i<this.symbolInstances.length;i++){const r=this.symbolInstances.get(i);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(e,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex))}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(e,i){const r=e.placedSymbolArray.get(i),u=r.vertexStartIndex+4*r.numGlyphs;for(let f=r.vertexStartIndex;f<u;f+=4)e.indexArray.emplaceBack(f,f+1,f+2),e.indexArray.emplaceBack(f+1,f+2,f+3)}getSortedSymbolIndexes(e){if(this.sortedAngle===e&&this.symbolInstanceIndexes!==void 0)return this.symbolInstanceIndexes;const i=Math.sin(e),r=Math.cos(e),u=[],f=[],m=[];for(let y=0;y<this.symbolInstances.length;++y){m.push(y);const E=this.symbolInstances.get(y);u.push(0|Math.round(i*E.tileAnchorX+r*E.tileAnchorY)),f.push(E.featureIndex)}return m.sort((y,E)=>u[y]-u[E]||f[E]-f[y]),m}addToSortKeyRanges(e,i){const r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===i?r.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:i,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const i of this.symbolInstanceIndexes){const r=this.symbolInstances.get(i);this.featureSortOrder.push(r.featureIndex);const{rightJustifiedTextSymbolIndex:u,centerJustifiedTextSymbolIndex:f,leftJustifiedTextSymbolIndex:m,verticalPlacedTextSymbolIndex:y,placedIconSymbolIndex:E,verticalPlacedIconSymbolIndex:T}=r;u>=0&&this.addIndicesForPlacedSymbol(this.text,u),f>=0&&f!==u&&this.addIndicesForPlacedSymbol(this.text,f),m>=0&&m!==f&&m!==u&&this.addIndicesForPlacedSymbol(this.text,m),y>=0&&this.addIndicesForPlacedSymbol(this.text,y),E>=0&&this.addIndicesForPlacedSymbol(this.icon,E),T>=0&&this.addIndicesForPlacedSymbol(this.icon,T)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}Ct(Wa,"SymbolBucket",{omit:["layers","collisionBoxArray","features","compareText"]}),Wa.MAX_GLYPHS=65535,Wa.addDynamicAttributes=gp;const SM=new le({"symbol-placement":new V(Ge.layout_symbol["symbol-placement"]),"symbol-spacing":new V(Ge.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new V(Ge.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new K(Ge.layout_symbol["symbol-sort-key"]),"symbol-z-order":new V(Ge.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new V(Ge.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new V(Ge.layout_symbol["icon-ignore-placement"]),"icon-optional":new V(Ge.layout_symbol["icon-optional"]),"icon-rotation-alignment":new V(Ge.layout_symbol["icon-rotation-alignment"]),"icon-size":new K(Ge.layout_symbol["icon-size"]),"icon-text-fit":new V(Ge.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new V(Ge.layout_symbol["icon-text-fit-padding"]),"icon-image":new K(Ge.layout_symbol["icon-image"]),"icon-rotate":new K(Ge.layout_symbol["icon-rotate"]),"icon-padding":new V(Ge.layout_symbol["icon-padding"]),"icon-keep-upright":new V(Ge.layout_symbol["icon-keep-upright"]),"icon-offset":new K(Ge.layout_symbol["icon-offset"]),"icon-anchor":new K(Ge.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new V(Ge.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new V(Ge.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new V(Ge.layout_symbol["text-rotation-alignment"]),"text-field":new K(Ge.layout_symbol["text-field"]),"text-font":new K(Ge.layout_symbol["text-font"]),"text-size":new K(Ge.layout_symbol["text-size"]),"text-max-width":new K(Ge.layout_symbol["text-max-width"]),"text-line-height":new K(Ge.layout_symbol["text-line-height"]),"text-letter-spacing":new K(Ge.layout_symbol["text-letter-spacing"]),"text-justify":new K(Ge.layout_symbol["text-justify"]),"text-radial-offset":new K(Ge.layout_symbol["text-radial-offset"]),"text-variable-anchor":new V(Ge.layout_symbol["text-variable-anchor"]),"text-anchor":new K(Ge.layout_symbol["text-anchor"]),"text-max-angle":new V(Ge.layout_symbol["text-max-angle"]),"text-writing-mode":new V(Ge.layout_symbol["text-writing-mode"]),"text-rotate":new K(Ge.layout_symbol["text-rotate"]),"text-padding":new V(Ge.layout_symbol["text-padding"]),"text-keep-upright":new V(Ge.layout_symbol["text-keep-upright"]),"text-transform":new K(Ge.layout_symbol["text-transform"]),"text-offset":new K(Ge.layout_symbol["text-offset"]),"text-allow-overlap":new V(Ge.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new V(Ge.layout_symbol["text-ignore-placement"]),"text-optional":new V(Ge.layout_symbol["text-optional"])});var Ym={paint:new le({"icon-opacity":new K(Ge.paint_symbol["icon-opacity"]),"icon-color":new K(Ge.paint_symbol["icon-color"]),"icon-halo-color":new K(Ge.paint_symbol["icon-halo-color"]),"icon-halo-width":new K(Ge.paint_symbol["icon-halo-width"]),"icon-halo-blur":new K(Ge.paint_symbol["icon-halo-blur"]),"icon-translate":new V(Ge.paint_symbol["icon-translate"]),"icon-translate-anchor":new V(Ge.paint_symbol["icon-translate-anchor"]),"text-opacity":new K(Ge.paint_symbol["text-opacity"]),"text-color":new K(Ge.paint_symbol["text-color"],{runtimeType:Cn,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),"text-halo-color":new K(Ge.paint_symbol["text-halo-color"]),"text-halo-width":new K(Ge.paint_symbol["text-halo-width"]),"text-halo-blur":new K(Ge.paint_symbol["text-halo-blur"]),"text-translate":new V(Ge.paint_symbol["text-translate"]),"text-translate-anchor":new V(Ge.paint_symbol["text-translate-anchor"])}),layout:SM};class Xx{constructor(e){this.type=e.property.overrides?e.property.overrides.runtimeType:oo,this.defaultValue=e}evaluate(e){if(e.formattedSection){const i=this.defaultValue.property.overrides;if(i&&i.hasOverride(e.formattedSection))return i.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){this.defaultValue.isConstant()||e(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Ct(Xx,"FormatSectionOverride",{omit:["defaultValue"]});class _p extends Jo{constructor(e){super(e,Ym)}recalculate(e,i){super.recalculate(e,i),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment"));const r=this.layout.get("text-writing-mode");if(r){const u=[];for(const f of r)u.indexOf(f)<0&&u.push(f);this.layout._values["text-writing-mode"]=u}else this.layout._values["text-writing-mode"]=this.layout.get("symbol-placement")==="point"?["horizontal"]:["horizontal","vertical"];this._setPaintOverrides()}getValueAndResolveTokens(e,i,r,u){const f=this.layout.get(e).evaluate(i,{},r,u),m=this._unevaluatedLayout._values[e];return m.isDataDriven()||za(m.value)||!f?f:function(y,E){return E.replace(/{([^{}]+)}/g,(T,C)=>C in y?String(y[C]):"")}(i.properties,f)}createBucket(e){return new Wa(e)}queryRadius(){return 0}queryIntersectsFeature(){return!1}_setPaintOverrides(){for(const e of Ym.paint.overridableProperties){if(!_p.hasPaintOverride(this.layout,e))continue;const i=this.paint.get(e),r=new Xx(i),u=new bu(r,i.property.specification);let f=null;f=i.value.kind==="constant"||i.value.kind==="source"?new Sc("source",u):new wl("composite",u,i.value.zoomStops,i.value._interpolationType),this.paint._values[e]=new ee(i.property,f,i.parameters)}}_handleOverridablePaintPropertyUpdate(e,i,r){return!(!this.layout||i.isDataDriven()||r.isDataDriven())&&_p.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,i){const r=e.get("text-field"),u=Ym.paint.properties[i];let f=!1;const m=y=>{for(const E of y)if(u.overrides&&u.overrides.hasOverride(E))return void(f=!0)};if(r.value.kind==="constant"&&r.value.value instanceof Nn)m(r.value.value.sections);else if(r.value.kind==="source"){const y=T=>{f||(T instanceof Nr&&Li(T.value)===Us?m(T.value.sections):T instanceof so?m(T.sections):T.eachChild(y))},E=r.value;E._styleExpression&&y(E._styleExpression.expression)}return f}getProgramConfiguration(e){return new Ga(this,e)}}var IM={paint:new le({"background-color":new V(Ge.paint_background["background-color"]),"background-pattern":new V(Ge.paint_background["background-pattern"]),"background-opacity":new V(Ge.paint_background["background-opacity"])})},kM={paint:new le({"raster-opacity":new V(Ge.paint_raster["raster-opacity"]),"raster-hue-rotate":new V(Ge.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new V(Ge.paint_raster["raster-brightness-min"]),"raster-brightness-max":new V(Ge.paint_raster["raster-brightness-max"]),"raster-saturation":new V(Ge.paint_raster["raster-saturation"]),"raster-contrast":new V(Ge.paint_raster["raster-contrast"]),"raster-resampling":new V(Ge.paint_raster["raster-resampling"]),"raster-fade-duration":new V(Ge.paint_raster["raster-fade-duration"])})};class MM extends Jo{constructor(e){super(e,{}),this.implementation=e}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}isLayerDraped(){return this.implementation.renderToTile!==void 0}shouldRedrape(){return!!this.implementation.shouldRerenderTiles&&this.implementation.shouldRerenderTiles()}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){}onAdd(e){this.implementation.onAdd&&this.implementation.onAdd(e,e.painter.context.gl)}onRemove(e){this.implementation.onRemove&&this.implementation.onRemove(e,e.painter.context.gl)}}var AM={paint:new le({"sky-type":new V(Ge.paint_sky["sky-type"]),"sky-atmosphere-sun":new V(Ge.paint_sky["sky-atmosphere-sun"]),"sky-atmosphere-sun-intensity":new V(Ge.paint_sky["sky-atmosphere-sun-intensity"]),"sky-gradient-center":new V(Ge.paint_sky["sky-gradient-center"]),"sky-gradient-radius":new V(Ge.paint_sky["sky-gradient-radius"]),"sky-gradient":new ae(Ge.paint_sky["sky-gradient"]),"sky-atmosphere-halo-color":new V(Ge.paint_sky["sky-atmosphere-halo-color"]),"sky-atmosphere-color":new V(Ge.paint_sky["sky-atmosphere-color"]),"sky-opacity":new V(Ge.paint_sky["sky-opacity"])})};function Hm(t,e,i){const r=[0,0,1],u=f0([]);return d0(u,u,i?-At(t)+Math.PI:At(t)),p0(u,u,-At(e)),l0(r,r,u),Mr(r,r)}const CM={circle:class extends Jo{constructor(t){super(t,jI)}createBucket(t){return new wm(t)}queryRadius(t){const e=t;return Nu("circle-radius",this,e)+Nu("circle-stroke-width",this,e)+Xf(this.paint.get("circle-translate"))}queryIntersectsFeature(t,e,i,r,u,f,m,y){const E=z0(this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),f.angle,t.pixelToTileUnitsFactor),T=this.paint.get("circle-radius").evaluate(e,i)+this.paint.get("circle-stroke-width").evaluate(e,i);return N0(t,r,f,m,y,this.paint.get("circle-pitch-alignment")==="map",this.paint.get("circle-pitch-scale")==="map",E,T)}getProgramIds(){return["circle"]}getProgramConfiguration(t){return new Ga(this,t)}},heatmap:class extends Jo{createBucket(t){return new F0(t)}constructor(t){super(t,qI),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(t){t==="heatmap-color"&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=Im({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null)}queryRadius(t){return Nu("heatmap-radius",this,t)}queryIntersectsFeature(t,e,i,r,u,f,m,y){const E=this.paint.get("heatmap-radius").evaluate(e,i);return N0(t,r,f,m,y,!0,!0,new Oe(0,0),E)}hasOffscreenPass(){return this.paint.get("heatmap-opacity")!==0&&this.visibility!=="none"}getProgramIds(){return["heatmap","heatmapTexture"]}getProgramConfiguration(t){return new Ga(this,t)}},hillshade:class extends Jo{constructor(t){super(t,ZI)}hasOffscreenPass(){return this.paint.get("hillshade-exaggeration")!==0&&this.visibility!=="none"}getProgramIds(){return["hillshade","hillshadePrepare"]}},fill:class extends Jo{constructor(t){super(t,lk)}getProgramIds(){const t=this.paint.get("fill-pattern"),e=t&&t.constantOr(1),i=[e?"fillPattern":"fill"];return this.paint.get("fill-antialias")&&i.push(e&&!this.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline"),i}getProgramConfiguration(t){return new Ga(this,t)}recalculate(t,e){super.recalculate(t,e);const i=this.paint._values["fill-outline-color"];i.value.kind==="constant"&&i.value.value===void 0&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(t){return new Jf(t)}queryRadius(){return Xf(this.paint.get("fill-translate"))}queryIntersectsFeature(t,e,i,r,u,f){return!t.queryGeometry.isAboveHorizon&&P0(O0(t.tilespaceGeometry,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),f.angle,t.pixelToTileUnitsFactor),r)}isTileClipped(){return!0}},"fill-extrusion":class extends Jo{constructor(t){super(t,Tk)}createBucket(t){return new sh(t)}queryRadius(){return Xf(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}getProgramIds(){return[this.paint.get("fill-extrusion-pattern").constantOr(1)?"fillExtrusionPattern":"fillExtrusion"]}getProgramConfiguration(t){return new Ga(this,t)}queryIntersectsFeature(t,e,i,r,u,f,m,y,E){const T=z0(this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),f.angle,t.pixelToTileUnitsFactor),C=this.paint.get("fill-extrusion-height").evaluate(e,i),L=this.paint.get("fill-extrusion-base").evaluate(e,i),D=[0,0],B=y&&f.elevation,U=f.elevation?f.elevation.exaggeration():1,G=t.tile.getBucket(this);if(B&&G instanceof sh){const fe=G.centroidVertexArray,ve=E+1;ve<fe.length&&(D[0]=fe.geta_centroid_pos0(ve),D[1]=fe.geta_centroid_pos1(ve))}if(D[0]===0&&D[1]===1)return!1;f.projection.name==="globe"&&(r=nx([r],[new Oe(0,0),new Oe(Ft,Ft)],t.tileID.canonical).map(fe=>fe.polygon).flat());const H=B?y:null,[ne,de]=function(fe,ve,ge,Be,De,qe,it,Ve,Ye,He,Je){return fe.projection.name==="globe"?function(at,$e,vt,Lt,xt,ni,lt,Nt,ri,Ii,oi){const Gt=[],Qi=[],si=at.projection.upVectorScale(oi,at.center.lat,at.worldSize).metersToTile,ai=[0,0,0,1],Gi=[0,0,0,1],Yi=($i,an,mn,Sn)=>{$i[0]=an,$i[1]=mn,$i[2]=Sn,$i[3]=1},Hi=ix();vt>0&&(vt+=Hi),Lt+=Hi;for(const $i of $e){const an=[],mn=[];for(const Sn of $i){const qi=Sn.x+xt.x,Rn=Sn.y+xt.y,In=at.projection.projectTilePoint(qi,Rn,oi),fn=at.projection.upVector(oi,Sn.x,Sn.y);let Mi=vt,kn=Lt;if(lt){const Ki=ax(qi,Rn,vt,Lt,lt,Nt,ri,Ii);Mi+=Ki.base,kn+=Ki.top}vt!==0?Yi(ai,In.x+fn[0]*si*Mi,In.y+fn[1]*si*Mi,In.z+fn[2]*si*Mi):Yi(ai,In.x,In.y,In.z),Yi(Gi,In.x+fn[0]*si*kn,In.y+fn[1]*si*kn,In.z+fn[2]*si*kn),gn(ai,ai,ni),gn(Gi,Gi,ni),an.push(new Uu(ai[0],ai[1],ai[2])),mn.push(new Uu(Gi[0],Gi[1],Gi[2]))}Gt.push(an),Qi.push(mn)}return[Gt,Qi]}(fe,ve,ge,Be,De,qe,it,Ve,Ye,He,Je):it?function(at,$e,vt,Lt,xt,ni,lt,Nt,ri){const Ii=[],oi=[],Gt=[0,0,0,1];for(const Qi of at){const si=[],ai=[];for(const Gi of Qi){const Yi=Gi.x+Lt.x,Hi=Gi.y+Lt.y,$i=ax(Yi,Hi,$e,vt,ni,lt,Nt,ri);Gt[0]=Yi,Gt[1]=Hi,Gt[2]=$i.base,Gt[3]=1,Dl(Gt,Gt,xt),Gt[3]=Math.max(Gt[3],1e-5);const an=new Uu(Gt[0]/Gt[3],Gt[1]/Gt[3],Gt[2]/Gt[3]);Gt[0]=Yi,Gt[1]=Hi,Gt[2]=$i.top,Gt[3]=1,Dl(Gt,Gt,xt),Gt[3]=Math.max(Gt[3],1e-5);const mn=new Uu(Gt[0]/Gt[3],Gt[1]/Gt[3],Gt[2]/Gt[3]);si.push(an),ai.push(mn)}Ii.push(si),oi.push(ai)}return[Ii,oi]}(ve,ge,Be,De,qe,it,Ve,Ye,He):function(at,$e,vt,Lt,xt){const ni=[],lt=[],Nt=xt[8]*$e,ri=xt[9]*$e,Ii=xt[10]*$e,oi=xt[11]*$e,Gt=xt[8]*vt,Qi=xt[9]*vt,si=xt[10]*vt,ai=xt[11]*vt;for(const Gi of at){const Yi=[],Hi=[];for(const $i of Gi){const an=$i.x+Lt.x,mn=$i.y+Lt.y,Sn=xt[0]*an+xt[4]*mn+xt[12],qi=xt[1]*an+xt[5]*mn+xt[13],Rn=xt[2]*an+xt[6]*mn+xt[14],In=xt[3]*an+xt[7]*mn+xt[15],fn=Sn+Nt,Mi=qi+ri,kn=Rn+Ii,Ki=Math.max(In+oi,1e-5),Pr=Sn+Gt,Mn=qi+Qi,Jn=Rn+si,qn=Math.max(In+ai,1e-5);Yi.push(new Uu(fn/Ki,Mi/Ki,kn/Ki)),Hi.push(new Uu(Pr/qn,Mn/qn,Jn/qn))}ni.push(Yi),lt.push(Hi)}return[ni,lt]}(ve,ge,Be,De,qe)}(f,r,L,C,T,m,H,D,U,f.center.lat,t.tileID.canonical),re=t.queryGeometry;return function(fe,ve,ge){let Be=1/0;P0(ge,ve)&&(Be=sx(ge,ve[0]));for(let De=0;De<ve.length;De++){const qe=ve[De],it=fe[De];for(let Ve=0;Ve<qe.length-1;Ve++){const Ye=qe[Ve],He=[Ye,qe[Ve+1],it[Ve+1],it[Ve],Ye];C0(ge,He)&&(Be=Math.min(Be,sx(ge,He)))}}return Be!==1/0&&Be}(ne,de,re.isPointQuery()?re.screenBounds:re.screenGeometry)}},line:class extends Jo{constructor(t){super(t,lx),this.gradientVersion=0}_handleSpecialPaintPropertyUpdate(t){if(t==="line-gradient"){const e=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=e._styleExpression&&e._styleExpression.expression instanceof Sa,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}widthExpression(){return this._transitionablePaint._values["line-width"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values["line-floorwidth"]=ux.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,t)}createBucket(t){return new np(t)}getProgramIds(){return[this.paint.get("line-pattern").constantOr(1)?"linePattern":"line"]}getProgramConfiguration(t){return new Ga(this,t)}queryRadius(t){const e=t,i=cx(Nu("line-width",this,e),Nu("line-gap-width",this,e)),r=Nu("line-offset",this,e);return i/2+Math.abs(r)+Xf(this.paint.get("line-translate"))}queryIntersectsFeature(t,e,i,r,u,f){if(t.queryGeometry.isAboveHorizon)return!1;const m=O0(t.tilespaceGeometry,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),f.angle,t.pixelToTileUnitsFactor),y=t.pixelToTileUnitsFactor/2*cx(this.paint.get("line-width").evaluate(e,i),this.paint.get("line-gap-width").evaluate(e,i)),E=this.paint.get("line-offset").evaluate(e,i);return E&&(r=function(T,C){const L=[],D=new Oe(0,0);for(let B=0;B<T.length;B++){const U=T[B],G=[];for(let H=0;H<U.length;H++){const ne=U[H],de=U[H+1],re=H===0?D:ne.sub(U[H-1])._unit()._perp(),fe=H===U.length-1?D:de.sub(ne)._unit()._perp(),ve=re._add(fe)._unit();ve._mult(1/(ve.x*fe.x+ve.y*fe.y)),G.push(ve._mult(C)._add(ne))}L.push(G)}return L}(r,E*t.pixelToTileUnitsFactor)),function(T,C,L){for(let D=0;D<C.length;D++){const B=C[D];if(T.length>=3){for(let U=0;U<B.length;U++)if(Bl(T,B[U]))return!0}if(NI(T,B,L))return!0}return!1}(m,r,y)}isTileClipped(){return!0}},symbol:_p,background:class extends Jo{constructor(t){super(t,IM)}getProgramIds(){return[this.paint.get("background-pattern")?"backgroundPattern":"background"]}},raster:class extends Jo{constructor(t){super(t,kM)}getProgramIds(){return["raster"]}},sky:class extends Jo{constructor(t){super(t,AM),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(t){t==="sky-gradient"?this._updateColorRamp():t!=="sky-atmosphere-sun"&&t!=="sky-atmosphere-halo-color"&&t!=="sky-atmosphere-color"&&t!=="sky-atmosphere-sun-intensity"||(this._skyboxInvalidated=!0)}_updateColorRamp(){this.colorRamp=Im({expression:this._transitionablePaint._values["sky-gradient"].value.expression,evaluationKey:"skyRadialProgress"}),this.colorRampTexture&&(this.colorRampTexture.destroy(),this.colorRampTexture=null)}needsSkyboxCapture(t){if(this._skyboxInvalidated||!this.skyboxTexture||!this.skyboxGeometry)return!0;if(!this.paint.get("sky-atmosphere-sun")){const e=t.style.light.properties.get("position");return this._lightPosition.azimuthal!==e.azimuthal||this._lightPosition.polar!==e.polar}return!1}getCenter(t,e){if(this.paint.get("sky-type")==="atmosphere"){const r=this.paint.get("sky-atmosphere-sun"),u=!r,f=t.style.light,m=f.properties.get("position");return u&&f.properties.get("anchor")==="viewport"&&Ti("The sun direction is attached to a light with viewport anchor, lighting may behave unexpectedly."),u?Hm(m.azimuthal,90-m.polar,e):Hm(r[0],90-r[1],e)}const i=this.paint.get("sky-gradient-center");return Hm(i[0],90-i[1],e)}is3D(){return!1}isSky(){return!0}markSkyboxValid(t){this._skyboxInvalidated=!1,this._lightPosition=t.style.light.properties.get("position")}hasOffscreenPass(){return!0}getProgramIds(){const t=this.paint.get("sky-type");return t==="atmosphere"?["skyboxCapture","skybox"]:t==="gradient"?["skyboxGradient"]:null}}};class _h{constructor(e,i,r,u){this.context=e,this.format=r,this.texture=e.gl.createTexture(),this.update(i,u)}update(e,i,r){const{width:u,height:f}=e,{context:m}=this,{gl:y}=m,{HTMLImageElement:E,HTMLCanvasElement:T,HTMLVideoElement:C,ImageData:L,ImageBitmap:D}=Z;if(y.bindTexture(y.TEXTURE_2D,this.texture),m.pixelStoreUnpackFlipY.set(!1),m.pixelStoreUnpack.set(1),m.pixelStoreUnpackPremultiplyAlpha.set(this.format===y.RGBA&&(!i||i.premultiply!==!1)),r||this.size&&this.size[0]===u&&this.size[1]===f){const{x:B,y:U}=r||{x:0,y:0};e instanceof E||e instanceof T||e instanceof C||e instanceof L||D&&e instanceof D?y.texSubImage2D(y.TEXTURE_2D,0,B,U,y.RGBA,y.UNSIGNED_BYTE,e):y.texSubImage2D(y.TEXTURE_2D,0,B,U,u,f,y.RGBA,y.UNSIGNED_BYTE,e.data)}else this.size=[u,f],e instanceof E||e instanceof T||e instanceof C||e instanceof L||D&&e instanceof D?y.texImage2D(y.TEXTURE_2D,0,this.format,this.format,y.UNSIGNED_BYTE,e):y.texImage2D(y.TEXTURE_2D,0,this.format,u,f,0,this.format,y.UNSIGNED_BYTE,e.data);this.useMipmap=!!(i&&i.useMipmap&&this.isSizePowerOfTwo()),this.useMipmap&&y.generateMipmap(y.TEXTURE_2D)}bind(e,i){const{context:r}=this,{gl:u}=r;u.bindTexture(u.TEXTURE_2D,this.texture),e!==this.filter&&(u.texParameteri(u.TEXTURE_2D,u.TEXTURE_MAG_FILTER,e),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_MIN_FILTER,this.useMipmap?e===u.NEAREST?u.NEAREST_MIPMAP_NEAREST:u.LINEAR_MIPMAP_NEAREST:e),this.filter=e),i!==this.wrap&&(u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_S,i),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_T,i),this.wrap=i)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:e}=this.context;e.deleteTexture(this.texture),this.texture=null}}class PM{constructor(e){this._callback=e,this._triggered=!1,typeof MessageChannel<"u"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._callback()},0))}remove(){this._channel=void 0,this._callback=()=>{}}}class LM{constructor(){this.tasks={},this.taskQueue=[],no(["process"],this),this.invoker=new PM(this.process),this.nextId=0}add(e,i){const r=this.nextId++,u=function({type:f,isSymbolTile:m,zoom:y}){return y=y||0,f==="message"?0:f!=="maybePrepare"||m?f!=="parseTile"||m?f==="parseTile"&&m?300-y:f==="maybePrepare"&&m?400-y:500:200-y:100-y}(i);if(u===0){ro();try{e()}finally{}return{cancel:()=>{}}}return this.tasks[r]={fn:e,metadata:i,priority:u,id:r},this.taskQueue.push(r),this.invoker.trigger(),{cancel:()=>{delete this.tasks[r]}}}process(){ro();try{if(this.taskQueue=this.taskQueue.filter(r=>!!this.tasks[r]),!this.taskQueue.length)return;const e=this.pick();if(e===null)return;const i=this.tasks[e];if(delete this.tasks[e],this.taskQueue.length&&this.invoker.trigger(),!i)return;i.fn()}finally{}}pick(){let e=null,i=1/0;for(let u=0;u<this.taskQueue.length;u++){const f=this.tasks[this.taskQueue[u]];f.priority<i&&(i=f.priority,e=u)}if(e===null)return null;const r=this.taskQueue[e];return this.taskQueue.splice(e,1),r}remove(){this.invoker.remove()}}class Wx{constructor(e){this._stringToNumber={},this._numberToString=[];for(let i=0;i<e.length;i++){const r=e[i];this._stringToNumber[r]=i,this._numberToString[i]=r}}encode(e){return this._stringToNumber[e]}decode(e){return this._numberToString[e]}}const RM=["tile","layer","source","sourceLayer","state"];class Yx{constructor(e,i,r,u,f){this.type="Feature",this._vectorTileFeature=e,this._z=i,this._x=r,this._y=u,this.properties=e.properties,this.id=f}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._x,this._y,this._z).geometry),this._geometry}set geometry(e){this._geometry=e}toJSON(){const e={type:"Feature",state:void 0,geometry:this.geometry,properties:this.properties};this.id!==void 0&&(e.id=this.id);for(const i of RM)this[i]!==void 0&&(e[i]=this[i]);return e}}const Po=32,As=33,Ya=new Uint16Array(8184);for(let t=0;t<2046;t++){let e=t+2,i=0,r=0,u=0,f=0,m=0,y=0;for(1&e?u=f=m=Po:i=r=y=Po;(e>>=1)>1;){const T=i+u>>1,C=r+f>>1;1&e?(u=i,f=r,i=m,r=y):(i=u,r=f,u=m,f=y),m=T,y=C}const E=4*t;Ya[E+0]=i,Ya[E+1]=r,Ya[E+2]=u,Ya[E+3]=f}const Cs=new Uint16Array(2178),Ha=new Uint8Array(1089),yp=new Uint16Array(1089);function Hx(t){return t===0?-.03125:t===32?.03125:0}var Kx=ke([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);const Jx={type:2,extent:Ft,loadGeometry:()=>[[new Oe(0,0),new Oe(Ft+1,0),new Oe(Ft+1,Ft+1),new Oe(0,Ft+1),new Oe(0,0)]]};class Km{constructor(e,i,r,u,f){this.tileID=e,this.uid=Ni(),this.uses=0,this.tileSize=i,this.tileZoom=r,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.isRaster=f,this.expiredRequestCount=0,this.state="loading",u&&u.transform&&(this.projection=u.transform.projection)}registerFadeDuration(e){const i=e+this.timeAdded;i<Or.now()||this.fadeEndTime&&i<this.fadeEndTime||(this.fadeEndTime=i)}wasRequested(){return this.state==="errored"||this.state==="loaded"||this.state==="reloading"}get tileTransform(){return this._tileTransform||(this._tileTransform=Ul(this.tileID.canonical,this.projection)),this._tileTransform}loadVectorData(e,i,r){if(this.unloadVectorData(),this.state="loaded",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestFeatureIndex.rawTileData=e.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(u,f){const m={};if(!f)return m;for(const y of u){const E=y.layerIds.map(T=>f.getLayer(T)).filter(Boolean);if(E.length!==0){y.layers=E,y.stateDependentLayerIds&&(y.stateDependentLayers=y.stateDependentLayerIds.map(T=>E.filter(C=>C.id===T)[0]));for(const T of E)m[T.id]=y}}return m}(e.buckets,i.style),this.hasSymbolBuckets=!1;for(const u in this.buckets){const f=this.buckets[u];if(f instanceof Wa){if(this.hasSymbolBuckets=!0,!r)break;f.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const u in this.buckets){const f=this.buckets[u];if(f instanceof Wa&&f.hasRTLText){this.hasRTLText=!0,M.isLoading()||M.isLoaded()||b()!=="deferred"||I();break}}this.queryPadding=0;for(const u in this.buckets){const f=this.buckets[u];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(u).queryRadius(f))}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),e.lineAtlas&&(this.lineAtlas=e.lineAtlas)}else this.collisionBoxArray=new ji}unloadVectorData(){if(this.hasData()){for(const e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlas&&(this.imageAtlas=null),this.lineAtlas&&(this.lineAtlas=null),this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.lineAtlasTexture&&this.lineAtlasTexture.destroy(),this._tileBoundsBuffer&&(this._tileBoundsBuffer.destroy(),this._tileBoundsIndexBuffer.destroy(),this._tileBoundsSegments.destroy(),this._tileBoundsBuffer=null),this._tileDebugBuffer&&(this._tileDebugBuffer.destroy(),this._tileDebugSegments.destroy(),this._tileDebugBuffer=null),this._tileDebugIndexBuffer&&(this._tileDebugIndexBuffer.destroy(),this._tileDebugIndexBuffer=null),this._globeTileDebugBorderBuffer&&(this._globeTileDebugBorderBuffer.destroy(),this._globeTileDebugBorderBuffer=null),this._tileDebugTextBuffer&&(this._tileDebugTextBuffer.destroy(),this._tileDebugTextSegments.destroy(),this._tileDebugTextIndexBuffer.destroy(),this._tileDebugTextBuffer=null),this._globeTileDebugTextBuffer&&(this._globeTileDebugTextBuffer.destroy(),this._globeTileDebugTextBuffer=null),this.latestFeatureIndex=null,this.state="unloaded"}}getBucket(e){return this.buckets[e.id]}upload(e){for(const r in this.buckets){const u=this.buckets[r];u.uploadPending()&&u.upload(e)}const i=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new _h(e,this.imageAtlas.image,i.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new _h(e,this.glyphAtlasImage,i.ALPHA),this.glyphAtlasImage=null),this.lineAtlas&&!this.lineAtlas.uploaded&&(this.lineAtlasTexture=new _h(e,this.lineAtlas.image,i.ALPHA),this.lineAtlas.uploaded=!0)}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture)}queryRenderedFeatures(e,i,r,u,f,m,y,E){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({tileResult:u,pixelPosMatrix:y,transform:m,params:f,tileTransform:this.tileTransform},e,i,r):{}}querySourceFeatures(e,i){const r=this.latestFeatureIndex;if(!r||!r.rawTileData)return;const u=r.loadVTLayers(),f=i?i.sourceLayer:"",m=u._geojsonTileLayer||u[f];if(!m)return;const y=Su(i&&i.filter),{z:E,x:T,y:C}=this.tileID.canonical,L={z:E,x:T,y:C};for(let D=0;D<m.length;D++){const B=m.feature(D);if(y.needGeometry){const H=Nl(B,!0);if(!y.filter(new P(this.tileID.overscaledZ),H,this.tileID.canonical))continue}else if(!y.filter(new P(this.tileID.overscaledZ),B))continue;const U=r.getId(B,f),G=new Yx(B,E,T,C,U);G.tile=L,e.push(G)}}hasData(){return this.state==="loaded"||this.state==="reloading"||this.state==="expired"}patternsLoaded(){return!!this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(e){const i=this.expirationTime;if(e.cacheControl){const r=ct(e.cacheControl);r["max-age"]&&(this.expirationTime=Date.now()+1e3*r["max-age"])}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){const r=Date.now();let u=!1;if(this.expirationTime>r)u=!1;else if(i)if(this.expirationTime<i)u=!0;else{const f=this.expirationTime-i;f?this.expirationTime=r+Math.max(f,3e4):u=!0}else u=!0;u?(this.expiredRequestCount++,this.state="expired"):this.expiredRequestCount=0}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-new Date().getTime(),Math.pow(2,31)-1)}setFeatureState(e,i){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||Object.keys(e).length===0||!i)return;const r=this.latestFeatureIndex.loadVTLayers(),u=i.style.listImages();for(const f in this.buckets){if(!i.style.hasLayer(f))continue;const m=this.buckets[f],y=m.layers[0].sourceLayer||"_geojsonTileLayer",E=r[y],T=e[y];if(!E||!T||Object.keys(T).length===0)continue;if(m.update(T,E,u,this.imageAtlas&&this.imageAtlas.patternPositions||{}),m instanceof np||m instanceof Jf){const L=i.style._getSourceCache(m.layers[0].source);i._terrain&&i._terrain.enabled&&L&&m.programConfigurations.needsUpload&&i._terrain._clearRenderCacheForTile(L.id,this.tileID)}const C=i&&i.style&&i.style.getLayer(f);C&&(this.queryPadding=Math.max(this.queryPadding,C.queryRadius(m)))}}holdingForFade(){return this.symbolFadeHoldUntil!==void 0}symbolFadeFinished(){return!this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<Or.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0}setHoldDuration(e){this.symbolFadeHoldUntil=Or.now()+e}setTexture(e,i){const r=i.context,u=r.gl;this.texture=this.texture||i.getTileTexture(e.width),this.texture?this.texture.update(e,{useMipmap:!0}):(this.texture=new _h(r,e,u.RGBA,{useMipmap:!0}),this.texture.bind(u.LINEAR,u.CLAMP_TO_EDGE))}setDependencies(e,i){const r={};for(const u of i)r[u]=!0;this.dependencies[e]=r}hasDependency(e,i){for(const r of e){const u=this.dependencies[r];if(u){for(const f of i)if(u[f])return!0}}return!1}clearQueryDebugViz(){}_makeDebugTileBoundsBuffers(e,i){if(!i||i.name==="mercator"||this._tileDebugBuffer)return;const r=oa(Jx,this.tileID.canonical,this.tileTransform)[0],u=new tt,f=new Jr;for(let m=0;m<r.length;m++){const{x:y,y:E}=r[m];u.emplaceBack(y,E),f.emplaceBack(m)}f.emplaceBack(0),this._tileDebugIndexBuffer=e.createIndexBuffer(f),this._tileDebugBuffer=e.createVertexBuffer(u,Yc.members),this._tileDebugSegments=En.simpleSegment(0,0,u.length,f.length)}_makeTileBoundsBuffers(e,i){if(this._tileBoundsBuffer||!i||i.name==="mercator")return;const r=oa(Jx,this.tileID.canonical,this.tileTransform)[0];let u,f;if(this.isRaster){const m=function(y,E){const T=Ul(y,E),C=Math.pow(2,y.z);for(let H=0;H<As;H++)for(let ne=0;ne<As;ne++){const de=po((y.x+(ne+Hx(ne))/Po)/C),re=cr((y.y+(H+Hx(H))/Po)/C),fe=E.project(de,re),ve=H*As+ne;Cs[2*ve+0]=Math.round((fe.x*T.scale-T.x)*Ft),Cs[2*ve+1]=Math.round((fe.y*T.scale-T.y)*Ft)}Ha.fill(0),yp.fill(0);for(let H=2045;H>=0;H--){const ne=4*H,de=Ya[ne+0],re=Ya[ne+1],fe=Ya[ne+2],ve=Ya[ne+3],ge=de+fe>>1,Be=re+ve>>1,De=ge+Be-re,qe=Be+de-ge,it=re*As+de,Ve=ve*As+fe,Ye=Be*As+ge,He=Math.hypot((Cs[2*it+0]+Cs[2*Ve+0])/2-Cs[2*Ye+0],(Cs[2*it+1]+Cs[2*Ve+1])/2-Cs[2*Ye+1])>=16;Ha[Ye]=Ha[Ye]||(He?1:0),H<1022&&(Ha[Ye]=Ha[Ye]||Ha[(re+qe>>1)*As+(de+De>>1)]||Ha[(ve+qe>>1)*As+(fe+De>>1)])}const L=new We,D=new Ot;let B=0;function U(H,ne){const de=ne*As+H;return yp[de]===0&&(L.emplaceBack(Cs[2*de+0],Cs[2*de+1],H*Ft/Po,ne*Ft/Po),yp[de]=++B),yp[de]-1}function G(H,ne,de,re,fe,ve){const ge=H+de>>1,Be=ne+re>>1;if(Math.abs(H-fe)+Math.abs(ne-ve)>1&&Ha[Be*As+ge])G(fe,ve,H,ne,ge,Be),G(de,re,fe,ve,ge,Be);else{const De=U(H,ne),qe=U(de,re),it=U(fe,ve);D.emplaceBack(De,qe,it)}}return G(0,0,Po,Po,Po,0),G(Po,Po,0,0,0,Po),{vertices:L,indices:D}}(this.tileID.canonical,i);u=m.vertices,f=m.indices}else{u=new We,f=new Ot;for(const{x:y,y:E}of r)u.emplaceBack(y,E,0,0);const m=Pm(u.int16,void 0,4);for(let y=0;y<m.length;y+=3)f.emplaceBack(m[y],m[y+1],m[y+2])}this._tileBoundsBuffer=e.createVertexBuffer(u,Kx.members),this._tileBoundsIndexBuffer=e.createIndexBuffer(f),this._tileBoundsSegments=En.simpleSegment(0,0,u.length,f.length)}_makeGlobeTileDebugBuffers(e,i){const r=i.projection;if(!r||r.name!=="globe"||i.freezeTileCoverage)return;const u=this.tileID.canonical,f=Jc(v0(u,i)),m=Ou(i.zoom);let y;m>0&&(y=om(new Float64Array(16),i.globeMatrix)),this._makeGlobeTileDebugBorderBuffer(e,u,i,f,y,m),this._makeGlobeTileDebugTextBuffer(e,u,i,f,y,m)}_globePoint(e,i,r,u,f,m,y){let E=Kc(e,i,r);if(m){const T=1<<r.z,C=ks(u.center.lng),L=Ms(u.center.lat),D=(r.x+.5)/T-C;let B=0;D>.5?B=-1:D<-.5&&(B=1);let U=(e/Ft+r.x)/T+B,G=(i/Ft+r.y)/T;U=(U-C)*u._pixelsPerMercatorPixel+C,G=(G-L)*u._pixelsPerMercatorPixel+L;const H=[U*u.worldSize,G*u.worldSize,0];gn(H,H,m),E=zl(E,H,y)}return gn(E,E,f)}_makeGlobeTileDebugBorderBuffer(e,i,r,u,f,m){const y=new tt,E=new Jr,T=new Re,C=(D,B,U,G,H)=>{const ne=(U-D)/(H-1),de=(G-B)/(H-1),re=y.length;for(let fe=0;fe<H;fe++){const ve=D+fe*ne,ge=B+fe*de;y.emplaceBack(ve,ge);const Be=this._globePoint(ve,ge,i,r,u,f,m);T.emplaceBack(Be[0],Be[1],Be[2]),E.emplaceBack(re+fe)}},L=Ft;C(0,0,L,0,16),C(L,0,L,L,16),C(L,L,0,L,16),C(0,L,0,0,16),this._tileDebugIndexBuffer=e.createIndexBuffer(E),this._tileDebugBuffer=e.createVertexBuffer(y,Yc.members),this._globeTileDebugBorderBuffer=e.createVertexBuffer(T,g0.members),this._tileDebugSegments=En.simpleSegment(0,0,y.length,E.length)}_makeGlobeTileDebugTextBuffer(e,i,r,u,f,m){const y=Ft/4,E=new tt,T=new Ot,C=new Re,L=25;T.reserve(32),E.reserve(L),C.reserve(L);const D=(B,U)=>L*B+U;for(let B=0;B<L;B++){const U=B*y;for(let G=0;G<L;G++){const H=G*y;E.emplaceBack(H,U);const ne=this._globePoint(H,U,i,r,u,f,m);C.emplaceBack(ne[0],ne[1],ne[2])}}for(let B=0;B<4;B++)for(let U=0;U<4;U++){const G=D(B,U),H=D(B,U+1),ne=D(B+1,U),de=D(B+1,U+1);T.emplaceBack(G,H,ne),T.emplaceBack(ne,H,de)}this._tileDebugTextIndexBuffer=e.createIndexBuffer(T),this._tileDebugTextBuffer=e.createVertexBuffer(E,Yc.members),this._globeTileDebugTextBuffer=e.createVertexBuffer(C,g0.members),this._tileDebugTextSegments=En.simpleSegment(0,0,L,32)}}class DM{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(e,i,r){const u=String(i);if(this.stateChanges[e]=this.stateChanges[e]||{},this.stateChanges[e][u]=this.stateChanges[e][u]||{},Wt(this.stateChanges[e][u],r),this.deletedStates[e]===null){this.deletedStates[e]={};for(const f in this.state[e])f!==u&&(this.deletedStates[e][f]=null)}else if(this.deletedStates[e]&&this.deletedStates[e][u]===null){this.deletedStates[e][u]={};for(const f in this.state[e][u])r[f]||(this.deletedStates[e][u][f]=null)}else for(const f in r)this.deletedStates[e]&&this.deletedStates[e][u]&&this.deletedStates[e][u][f]===null&&delete this.deletedStates[e][u][f]}removeFeatureState(e,i,r){if(this.deletedStates[e]===null)return;const u=String(i);if(this.deletedStates[e]=this.deletedStates[e]||{},r&&i!==void 0)this.deletedStates[e][u]!==null&&(this.deletedStates[e][u]=this.deletedStates[e][u]||{},this.deletedStates[e][u][r]=null);else if(i!==void 0)if(this.stateChanges[e]&&this.stateChanges[e][u])for(r in this.deletedStates[e][u]={},this.stateChanges[e][u])this.deletedStates[e][u][r]=null;else this.deletedStates[e][u]=null;else this.deletedStates[e]=null}getState(e,i){const r=String(i),u=Wt({},(this.state[e]||{})[r],(this.stateChanges[e]||{})[r]);if(this.deletedStates[e]===null)return{};if(this.deletedStates[e]){const f=this.deletedStates[e][i];if(f===null)return{};for(const m in f)delete u[m]}return u}initializeTileState(e,i){e.setFeatureState(this.state,i)}coalesceChanges(e,i){const r={};for(const u in this.stateChanges){this.state[u]=this.state[u]||{};const f={};for(const m in this.stateChanges[u])this.state[u][m]||(this.state[u][m]={}),Wt(this.state[u][m],this.stateChanges[u][m]),f[m]=this.state[u][m];r[u]=f}for(const u in this.deletedStates){this.state[u]=this.state[u]||{};const f={};if(this.deletedStates[u]===null)for(const m in this.state[u])f[m]={},this.state[u][m]={};else for(const m in this.deletedStates[u]){if(this.deletedStates[u][m]===null)this.state[u][m]={};else if(this.state[u][m])for(const y of Object.keys(this.deletedStates[u][m]))delete this.state[u][m][y];f[m]=this.state[u][m]}r[u]=r[u]||{},Wt(r[u],f)}if(this.stateChanges={},this.deletedStates={},Object.keys(r).length!==0)for(const u in e)e[u].setFeatureState(r,i)}}class Qx{constructor(e){this.size=e,this.minimums=[],this.maximums=[],this.leaves=[]}getElevation(e,i){const r=this.toIdx(e,i);return{min:this.minimums[r],max:this.maximums[r]}}isLeaf(e,i){return this.leaves[this.toIdx(e,i)]}toIdx(e,i){return i*this.size+e}}function e1(t,e,i,r){let u=0,f=Number.MAX_VALUE;for(let m=0;m<3;m++)if(Math.abs(r[m])<1e-15){if(i[m]<t[m]||i[m]>e[m])return null}else{const y=1/r[m];let E=(t[m]-i[m])*y,T=(e[m]-i[m])*y;if(E>T){const C=E;E=T,T=C}if(E>u&&(u=E),T<f&&(f=T),u>f)return null}return u}function t1(t,e,i,r,u,f,m,y,E,T,C){const L=r-t,D=u-e,B=f-i,U=m-t,G=y-e,H=E-i,ne=C[1]*H-C[2]*G,de=C[2]*U-C[0]*H,re=C[0]*G-C[1]*U,fe=L*ne+D*de+B*re;if(Math.abs(fe)<1e-15)return null;const ve=1/fe,ge=T[0]-t,Be=T[1]-e,De=T[2]-i,qe=(ge*ne+Be*de+De*re)*ve;if(qe<0||qe>1)return null;const it=Be*B-De*D,Ve=De*L-ge*B,Ye=ge*D-Be*L,He=(C[0]*it+C[1]*Ve+C[2]*Ye)*ve;return He<0||qe+He>1?null:(U*it+G*Ve+H*Ye)*ve}function i1(t,e,i){return(t-e)/(i-e)}function n1(t,e,i,r,u,f,m,y,E){const T=1<<i,C=f-r,L=m-u,D=(t+1)/T*C+r,B=(e+0)/T*L+u,U=(e+1)/T*L+u;y[0]=(t+0)/T*C+r,y[1]=B,E[0]=D,E[1]=U}class r1{constructor(e){if(this.maximums=[],this.minimums=[],this.leaves=[],this.childOffsets=[],this.nodeCount=0,this.dem=e,this._siblingOffset=[[0,0],[1,0],[0,1],[1,1]],!this.dem)return;const i=function(f){const m=Math.ceil(Math.log2(f.dim/8)),y=[];let E=Math.ceil(Math.pow(2,m));const T=1/E,C=(B,U,G,H,ne)=>{const de=H?1:0,re=(B+1)*G-de,fe=U*G,ve=(U+1)*G-de;ne[0]=B*G,ne[1]=fe,ne[2]=re,ne[3]=ve};let L=new Qx(E);const D=[];for(let B=0;B<E*E;B++){C(B%E,Math.floor(B/E),T,!1,D);const U=Ka(D[0],D[1],f),G=Ka(D[2],D[1],f),H=Ka(D[2],D[3],f),ne=Ka(D[0],D[3],f);L.minimums.push(Math.min(U,G,H,ne)),L.maximums.push(Math.max(U,G,H,ne)),L.leaves.push(1)}for(y.push(L),E/=2;E>=1;E/=2){const B=y[y.length-1];L=new Qx(E);for(let U=0;U<E*E;U++){C(U%E,Math.floor(U/E),2,!0,D);const G=B.getElevation(D[0],D[1]),H=B.getElevation(D[2],D[1]),ne=B.getElevation(D[2],D[3]),de=B.getElevation(D[0],D[3]),re=B.isLeaf(D[0],D[1]),fe=B.isLeaf(D[2],D[1]),ve=B.isLeaf(D[2],D[3]),ge=B.isLeaf(D[0],D[3]),Be=Math.min(G.min,H.min,ne.min,de.min),De=Math.max(G.max,H.max,ne.max,de.max),qe=re&&fe&&ve&&ge;L.maximums.push(De),L.minimums.push(Be),L.leaves.push(De-Be<=5&&qe?1:0)}y.push(L)}return y}(this.dem),r=i.length-1,u=i[r];this._addNode(u.minimums[0],u.maximums[0],u.leaves[0]),this._construct(i,0,0,r,0)}raycastRoot(e,i,r,u,f,m,y=1){return e1([e,i,-100],[r,u,this.maximums[0]*y],f,m)}raycast(e,i,r,u,f,m,y=1){if(!this.nodeCount)return null;const E=this.raycastRoot(e,i,r,u,f,m,y);if(E==null)return null;const T=[],C=[],L=[],D=[],B=[{idx:0,t:E,nodex:0,nodey:0,depth:0}];for(;B.length>0;){const{idx:U,t:G,nodex:H,nodey:ne,depth:de}=B.pop();if(this.leaves[U]){n1(H,ne,de,e,i,r,u,L,D);const fe=1<<de,ve=(H+0)/fe,ge=(H+1)/fe,Be=(ne+0)/fe,De=(ne+1)/fe,qe=Ka(ve,Be,this.dem)*y,it=Ka(ge,Be,this.dem)*y,Ve=Ka(ge,De,this.dem)*y,Ye=Ka(ve,De,this.dem)*y,He=t1(L[0],L[1],qe,D[0],L[1],it,D[0],D[1],Ve,f,m),Je=t1(D[0],D[1],Ve,L[0],D[1],Ye,L[0],L[1],qe,f,m),at=Math.min(He!==null?He:Number.MAX_VALUE,Je!==null?Je:Number.MAX_VALUE);if(at!==Number.MAX_VALUE)return at;{const $e=Xc([],f,m,G);if(o1(qe,it,Ye,Ve,i1($e[0],L[0],D[0]),i1($e[1],L[1],D[1]))>=$e[2])return G}continue}let re=0;for(let fe=0;fe<this._siblingOffset.length;fe++){n1((H<<1)+this._siblingOffset[fe][0],(ne<<1)+this._siblingOffset[fe][1],de+1,e,i,r,u,L,D),L[2]=-100,D[2]=this.maximums[this.childOffsets[U]+fe]*y;const ve=e1(L,D,f,m);if(ve!=null){const ge=ve;T[fe]=ge;let Be=!1;for(let De=0;De<re&&!Be;De++)ge>=T[C[De]]&&(C.splice(De,0,fe),Be=!0);Be||(C[re]=fe),re++}}for(let fe=0;fe<re;fe++){const ve=C[fe];B.push({idx:this.childOffsets[U]+ve,t:T[ve],nodex:(H<<1)+this._siblingOffset[ve][0],nodey:(ne<<1)+this._siblingOffset[ve][1],depth:de+1})}}return null}_addNode(e,i,r){return this.minimums.push(e),this.maximums.push(i),this.leaves.push(r),this.childOffsets.push(0),this.nodeCount++}_construct(e,i,r,u,f){if(e[u].isLeaf(i,r)===1)return;this.childOffsets[f]||(this.childOffsets[f]=this.nodeCount);const m=u-1,y=e[m];let E=0,T=0;for(let C=0;C<this._siblingOffset.length;C++){const L=2*i+this._siblingOffset[C][0],D=2*r+this._siblingOffset[C][1],B=y.getElevation(L,D),U=y.isLeaf(L,D),G=this._addNode(B.min,B.max,U);U&&(E|=1<<C),T||(T=G)}for(let C=0;C<this._siblingOffset.length;C++)E&1<<C||this._construct(e,2*i+this._siblingOffset[C][0],2*r+this._siblingOffset[C][1],m,T+C)}}function o1(t,e,i,r,u,f){return bi(bi(t,i,f),bi(e,r,f),u)}function Ka(t,e,i){const r=i.dim,u=Rt(t*r-.5,0,r-1),f=Rt(e*r-.5,0,r-1),m=Math.floor(u),y=Math.floor(f),E=Math.min(m+1,r-1),T=Math.min(y+1,r-1);return o1(i.get(m,y),i.get(E,y),i.get(m,T),i.get(E,T),u-m,f-y)}const s1={mapbox:[6553.6,25.6,.1,1e4],terrarium:[256,1,1/256,32768]};function OM(t,e,i){return(256*t*256+256*e+i)/10-1e4}function zM(t,e,i){return 256*t+e+i/256-32768}class vp{get tree(){return this._tree||this._buildQuadTree(),this._tree}constructor(e,i,r,u=!1,f=!1){if(this.uid=e,i.height!==i.width)throw new RangeError("DEM tiles must be square");if(r&&r!=="mapbox"&&r!=="terrarium")return Ti(`"${r}" is not a valid encoding type. Valid types include "mapbox" and "terrarium".`);this.stride=i.height;const m=this.dim=i.height-2,y=new Uint32Array(i.data.buffer);if(this.pixels=new Uint8Array(i.data.buffer),this.encoding=r||"mapbox",this.borderReady=u,!u){for(let E=0;E<m;E++)y[this._idx(-1,E)]=y[this._idx(0,E)],y[this._idx(m,E)]=y[this._idx(m-1,E)],y[this._idx(E,-1)]=y[this._idx(E,0)],y[this._idx(E,m)]=y[this._idx(E,m-1)];y[this._idx(-1,-1)]=y[this._idx(0,0)],y[this._idx(m,-1)]=y[this._idx(m-1,0)],y[this._idx(-1,m)]=y[this._idx(0,m-1)],y[this._idx(m,m)]=y[this._idx(m-1,m-1)],f&&this._buildQuadTree()}}_buildQuadTree(){this._tree=new r1(this)}get(e,i,r=!1){r&&(e=Rt(e,-1,this.dim),i=Rt(i,-1,this.dim));const u=4*this._idx(e,i);return(this.encoding==="terrarium"?zM:OM)(this.pixels[u],this.pixels[u+1],this.pixels[u+2])}static getUnpackVector(e){return s1[e]}get unpackVector(){return s1[this.encoding]}_idx(e,i){if(e<-1||e>=this.dim+1||i<-1||i>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(i+1)*this.stride+(e+1)}static pack(e,i){const r=[0,0,0,0],u=vp.getUnpackVector(i);let f=Math.floor((e+u[3])/u[2]);return r[2]=f%256,f=Math.floor(f/256),r[1]=f%256,f=Math.floor(f/256),r[0]=f,r}getPixels(){return new eo({width:this.stride,height:this.stride},this.pixels)}backfillBorder(e,i,r){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let u=i*this.dim,f=i*this.dim+this.dim,m=r*this.dim,y=r*this.dim+this.dim;switch(i){case-1:u=f-1;break;case 1:f=u+1}switch(r){case-1:m=y-1;break;case 1:y=m+1}const E=-i*this.dim,T=-r*this.dim;for(let C=m;C<y;C++)for(let L=u;L<f;L++){const D=4*this._idx(L,C),B=4*this._idx(L+E,C+T);this.pixels[D+0]=e.pixels[B+0],this.pixels[D+1]=e.pixels[B+1],this.pixels[D+2]=e.pixels[B+2],this.pixels[D+3]=e.pixels[B+3]}}onDeserialize(){this._tree&&(this._tree.dem=this)}}Ct(vp,"DEMData"),Ct(r1,"DemMinMaxQuadTree",{omit:["dem"]});class NM{constructor(e,i){this.max=e,this.onRemove=i,this.reset()}reset(){for(const e in this.data)for(const i of this.data[e])i.timeout&&clearTimeout(i.timeout),this.onRemove(i.value);return this.data={},this.order=[],this}add(e,i,r){const u=e.wrapped().key;this.data[u]===void 0&&(this.data[u]=[]);const f={value:i,timeout:void 0};if(r!==void 0&&(f.timeout=setTimeout(()=>{this.remove(e,f)},r)),this.data[u].push(f),this.order.push(u),this.order.length>this.max){const m=this._getAndRemoveByKey(this.order[0]);m&&this.onRemove(m)}return this}has(e){return e.wrapped().key in this.data}getAndRemove(e){return this.has(e)?this._getAndRemoveByKey(e.wrapped().key):null}_getAndRemoveByKey(e){const i=this.data[e].shift();return i.timeout&&clearTimeout(i.timeout),this.data[e].length===0&&delete this.data[e],this.order.splice(this.order.indexOf(e),1),i.value}getByKey(e){const i=this.data[e];return i?i[0].value:null}get(e){return this.has(e)?this.data[e.wrapped().key][0].value:null}remove(e,i){if(!this.has(e))return this;const r=e.wrapped().key,u=i===void 0?0:this.data[r].indexOf(i),f=this.data[r][u];return this.data[r].splice(u,1),f.timeout&&clearTimeout(f.timeout),this.data[r].length===0&&delete this.data[r],this.onRemove(f.value),this.order.splice(this.order.indexOf(r),1),this}setMaxSize(e){for(this.max=e;this.order.length>this.max;){const i=this._getAndRemoveByKey(this.order[0]);i&&this.onRemove(i)}return this}filter(e){const i=[];for(const r in this.data)for(const u of this.data[r])e(u.value)||i.push(u);for(const r of i)this.remove(r.value.tileID,r)}}class Hu{constructor(e,i,r){this.func=e,this.mask=i,this.range=r}}Hu.ReadOnly=!1,Hu.ReadWrite=!0,Hu.disabled=new Hu(519,Hu.ReadOnly,[0,1]);const Jm=7680;class Qm{constructor(e,i,r,u,f,m){this.test=e,this.ref=i,this.mask=r,this.fail=u,this.depthFail=f,this.pass=m}}Qm.disabled=new Qm({func:519,mask:0},0,0,Jm,Jm,Jm);class Ps{constructor(e,i,r){this.blendFunction=e,this.blendColor=i,this.mask=r}}Ps.Replace=[1,0],Ps.disabled=new Ps(Ps.Replace,hn.transparent,[!1,!1,!1,!1]),Ps.unblended=new Ps(Ps.Replace,hn.transparent,[!0,!0,!0,!0]),Ps.alphaBlended=new Ps([1,771],hn.transparent,[!0,!0,!0,!0]);const eg=1029,tg=2305;class rs{constructor(e,i,r){this.enable=e,this.mode=i,this.frontFace=r}}rs.disabled=new rs(!1,eg,tg),rs.backCCW=new rs(!0,eg,tg),rs.backCW=new rs(!0,eg,2304),rs.frontCW=new rs(!0,1028,2304),rs.frontCCW=new rs(!0,1028,tg);class jl extends qr{constructor(e,i,r){super(),this.id=e,this._onlySymbols=r,i.on("data",u=>{u.dataType==="source"&&u.sourceDataType==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&u.dataType==="source"&&u.sourceDataType==="content"&&(this.reload(),this.transform&&this.update(this.transform))}),i.on("error",()=>{this._sourceErrored=!0}),this._source=i,this._tiles={},this._cache=new NM(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._minTileCacheSize=i.minTileCacheSize,this._maxTileCacheSize=i.maxTileCacheSize,this._loadedParentTiles={},this._coveredTiles={},this._state=new DM,this._isRaster=this._source.type==="raster"||this._source.type==="raster-dem"||this._source.type==="custom"&&this._source._dataType==="raster"}onAdd(e){this.map=e,this._minTileCacheSize=this._minTileCacheSize===void 0&&e?e._minTileCacheSize:this._minTileCacheSize,this._maxTileCacheSize=this._maxTileCacheSize===void 0&&e?e._maxTileCacheSize:this._maxTileCacheSize}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;for(const e in this._tiles){const i=this._tiles[e];if(i.state!=="loaded"&&i.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;const e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform)}_loadTile(e,i){return e.isSymbolTile=this._onlySymbols,this._source.loadTile(e,i)}_unloadTile(e){if(this._source.unloadTile)return this._source.unloadTile(e,()=>{})}_abortTile(e){if(this._source.abortTile)return this._source.abortTile(e,()=>{})}serialize(){return this._source.serialize()}prepare(e){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const i in this._tiles){const r=this._tiles[i];r.upload(e),r.prepare(this.map.style.imageManager)}}getIds(){return Oi(this._tiles).map(e=>e.tileID).sort(a1).map(e=>e.key)}getRenderableIds(e){const i=[];for(const r in this._tiles)this._isIdRenderable(+r,e)&&i.push(this._tiles[r]);return e?i.sort((r,u)=>{const f=r.tileID,m=u.tileID,y=new Oe(f.canonical.x,f.canonical.y)._rotate(this.transform.angle),E=new Oe(m.canonical.x,m.canonical.y)._rotate(this.transform.angle);return f.overscaledZ-m.overscaledZ||E.y-y.y||E.x-y.x}).map(r=>r.tileID.key):i.map(r=>r.tileID).sort(a1).map(r=>r.key)}hasRenderableParent(e){const i=this.findLoadedParent(e,0);return!!i&&this._isIdRenderable(i.tileID.key)}_isIdRenderable(e,i){return this._tiles[e]&&this._tiles[e].hasData()&&!this._coveredTiles[e]&&(i||!this._tiles[e].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(const e in this._tiles)this._tiles[e].state!=="errored"&&this._reloadTile(+e,"reloading")}}_reloadTile(e,i){const r=this._tiles[e];r&&(r.state!=="loading"&&(r.state=i),this._loadTile(r,this._tileLoaded.bind(this,r,e,i)))}_tileLoaded(e,i,r,u){if(u)if(e.state="errored",u.status!==404)this._source.fire(new xn(u,{tile:e}));else if(this._source.type==="raster-dem"&&this.usedForTerrain&&this.map.painter.terrain){const f=this.map.painter.terrain;this.update(this.transform,f.getScaledDemTileSize(),!0),f.resetTileLookupCache(this.id)}else this.update(this.transform);else e.timeAdded=Or.now(),r==="expired"&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),this._source.type==="raster-dem"&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),this._source.fire(new Fo("data",{dataType:"source",tile:e,coord:e.tileID,sourceCacheId:this.id}))}_backfillDEM(e){const i=this.getRenderableIds();for(let u=0;u<i.length;u++){const f=i[u];if(e.neighboringTiles&&e.neighboringTiles[f]){const m=this.getTileByID(f);r(e,m),r(m,e)}}function r(u,f){if(!u.dem||u.dem.borderReady)return;u.needsHillshadePrepare=!0,u.needsDEMTextureUpload=!0;let m=f.tileID.canonical.x-u.tileID.canonical.x;const y=f.tileID.canonical.y-u.tileID.canonical.y,E=Math.pow(2,u.tileID.canonical.z),T=f.tileID.key;m===0&&y===0||Math.abs(y)>1||(Math.abs(m)>1&&(Math.abs(m+E)===1?m+=E:Math.abs(m-E)===1&&(m-=E)),f.dem&&u.dem&&(u.dem.backfillBorder(f.dem,m,y),u.neighboringTiles&&u.neighboringTiles[T]&&(u.neighboringTiles[T].backfilled=!0)))}}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._tiles[e]}_retainLoadedChildren(e,i,r,u){for(const f in this._tiles){let m=this._tiles[f];if(u[f]||!m.hasData()||m.tileID.overscaledZ<=i||m.tileID.overscaledZ>r)continue;let y=m.tileID;for(;m&&m.tileID.overscaledZ>i+1;){const T=m.tileID.scaledTo(m.tileID.overscaledZ-1);m=this._tiles[T.key],m&&m.hasData()&&(y=T)}let E=y;for(;E.overscaledZ>i;)if(E=E.scaledTo(E.overscaledZ-1),e[E.key]){u[y.key]=y;break}}}findLoadedParent(e,i){if(e.key in this._loadedParentTiles){const r=this._loadedParentTiles[e.key];return r&&r.tileID.overscaledZ>=i?r:null}for(let r=e.overscaledZ-1;r>=i;r--){const u=e.scaledTo(r),f=this._getLoadedTile(u);if(f)return f}}_getLoadedTile(e){const i=this._tiles[e.key];return i&&i.hasData()?i:this._cache.getByKey(this._source.reparseOverscaled?e.wrapped().key:e.canonical.key)}updateCacheSize(e,i){i=i||this._source.tileSize;const r=Math.ceil(e.width/i)+1,u=Math.ceil(e.height/i)+1,f=Math.floor(r*u*5),m=typeof this._minTileCacheSize=="number"?Math.max(this._minTileCacheSize,f):f,y=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,m):m;this._cache.setMaxSize(y)}handleWrapJump(e){const i=Math.round((e-(this._prevLng===void 0?e:this._prevLng))/360);if(this._prevLng=e,i){const r={};for(const u in this._tiles){const f=this._tiles[u];f.tileID=f.tileID.unwrapTo(f.tileID.wrap+i),r[f.tileID.key]=f}this._tiles=r;for(const u in this._timers)clearTimeout(this._timers[u]),delete this._timers[u];for(const u in this._tiles)this._setTileReloadTimer(+u,this._tiles[u])}}update(e,i,r){if(this.transform=e,!this._sourceLoaded||this._paused||this.transform.freezeTileCoverage||this.usedForTerrain&&!r)return;let u;this.updateCacheSize(e,i),this.transform.projection.name!=="globe"&&this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?u=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(y=>new Cr(y.canonical.z,y.wrap,y.canonical.z,y.canonical.x,y.canonical.y)):(u=e.coveringTiles({tileSize:i||this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!r,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain}),this._source.hasTile&&(u=u.filter(y=>this._source.hasTile(y)))):u=[];const f=this._updateRetainedTiles(u);if(l1(this._source.type)&&u.length!==0){const y={},E={},T=Object.keys(f);for(const L of T){const D=f[L],B=this._tiles[L];if(!B||B.fadeEndTime&&B.fadeEndTime<=Or.now())continue;const U=this.findLoadedParent(D,Math.max(D.overscaledZ-jl.maxOverzooming,this._source.minzoom));U&&(this._addTile(U.tileID),y[U.tileID.key]=U.tileID),E[L]=D}const C=u[u.length-1].overscaledZ;for(const L in this._tiles){const D=this._tiles[L];if(f[L]||!D.hasData())continue;let B=D.tileID;for(;B.overscaledZ>C;){B=B.scaledTo(B.overscaledZ-1);const U=this._tiles[B.key];if(U&&U.hasData()&&E[B.key]){f[L]=D.tileID;break}}}for(const L in y)f[L]||(this._coveredTiles[L]=!0,f[L]=y[L])}for(const y in f)this._tiles[y].clearFadeHold();const m=function(y,E){const T=[];for(const C in y)C in E||T.push(C);return T}(this._tiles,f);for(const y of m){const E=this._tiles[y];E.hasSymbolBuckets&&!E.holdingForFade()?E.setHoldDuration(this.map._fadeDuration):E.hasSymbolBuckets&&!E.symbolFadeFinished()||this._removeTile(+y)}this._updateLoadedParentTileCache(),this._onlySymbols&&this._source.afterUpdate&&this._source.afterUpdate()}releaseSymbolFadeTiles(){for(const e in this._tiles)this._tiles[e].holdingForFade()&&this._removeTile(+e)}_updateRetainedTiles(e){const i={};if(e.length===0)return i;const r={},u=e.reduce((T,C)=>Math.min(T,C.overscaledZ),1/0),f=e[0].overscaledZ,m=Math.max(f-jl.maxOverzooming,this._source.minzoom),y=Math.max(f+jl.maxUnderzooming,this._source.minzoom),E={};for(const T of e){const C=this._addTile(T);i[T.key]=T,C.hasData()||u<this._source.maxzoom&&(E[T.key]=T)}this._retainLoadedChildren(E,u,y,i);for(const T of e){let C=this._tiles[T.key];if(C.hasData())continue;if(T.canonical.z>=this._source.maxzoom){const D=T.children(this._source.maxzoom)[0],B=this.getTile(D);if(B&&B.hasData()){i[D.key]=D;continue}}else{const D=T.children(this._source.maxzoom);if(i[D[0].key]&&i[D[1].key]&&i[D[2].key]&&i[D[3].key])continue}let L=C.wasRequested();for(let D=T.overscaledZ-1;D>=m;--D){const B=T.scaledTo(D);if(r[B.key]||(r[B.key]=!0,C=this.getTile(B),!C&&L&&(C=this._addTile(B)),C&&(i[B.key]=B,L=C.wasRequested(),C.hasData())))break}}return i}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const e in this._tiles){const i=[];let r,u=this._tiles[e].tileID;for(;u.overscaledZ>0;){if(u.key in this._loadedParentTiles){r=this._loadedParentTiles[u.key];break}i.push(u.key);const f=u.scaledTo(u.overscaledZ-1);if(r=this._getLoadedTile(f),r)break;u=f}for(const f of i)this._loadedParentTiles[f]=r}}_addTile(e){let i=this._tiles[e.key];if(i)return i;i=this._cache.getAndRemove(e),i&&(this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,i)));const r=!!i;if(!r){const u=this.map?this.map.painter:null;i=new Km(e,this._source.tileSize*e.overscaleFactor(),this.transform.tileZoom,u,this._isRaster),this._loadTile(i,this._tileLoaded.bind(this,i,e.key,i.state))}return i?(i.uses++,this._tiles[e.key]=i,r||this._source.fire(new Fo("dataloading",{tile:i,coord:i.tileID,dataType:"source"})),i):null}_setTileReloadTimer(e,i){e in this._timers&&(clearTimeout(this._timers[e]),delete this._timers[e]);const r=i.getExpiryTimeout();r&&(this._timers[e]=setTimeout(()=>{this._reloadTile(e,"expired"),delete this._timers[e]},r))}_removeTile(e){const i=this._tiles[e];i&&(i.uses--,delete this._tiles[e],this._timers[e]&&(clearTimeout(this._timers[e]),delete this._timers[e]),i.uses>0||(i.hasData()&&i.state!=="reloading"?this._cache.add(i.tileID,i,i.getExpiryTimeout()):(i.aborted=!0,this._abortTile(i),this._unloadTile(i))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const e in this._tiles)this._removeTile(+e);this._source._clear&&this._source._clear(),this._cache.reset(),this.map&&this.usedForTerrain&&this.map.painter.terrain&&this.map.painter.terrain.resetTileLookupCache(this.id)}tilesIn(e,i,r){const u=[],f=this.transform;if(!f)return u;const m=f.projection.name==="globe",y=ks(f.center.lng);for(const E in this._tiles){const T=this._tiles[E];if(r&&T.clearQueryDebugViz(),T.holdingForFade())continue;let C;if(m){const L=T.tileID.canonical;if(L.z===0){const D=[Math.abs(Rt(y,...yh(L,-1))-y),Math.abs(Rt(y,...yh(L,1))-y)];C=[0,2*D.indexOf(Math.min(...D))-1]}else{const D=[Math.abs(Rt(y,...yh(L,-1))-y),Math.abs(Rt(y,...yh(L,0))-y),Math.abs(Rt(y,...yh(L,1))-y)];C=[D.indexOf(Math.min(...D))-1]}}else C=[0];for(const L of C){const D=e.containsTile(T,f,i,L);D&&u.push(D)}}return u}getVisibleCoordinates(e){const i=this.getRenderableIds(e).map(r=>this._tiles[r].tileID);for(const r of i)r.projMatrix=this.transform.calculateProjMatrix(r.toUnwrapped());return i}hasTransition(){if(this._source.hasTransition())return!0;if(l1(this._source.type))for(const e in this._tiles){const i=this._tiles[e];if(i.fadeEndTime!==void 0&&i.fadeEndTime>=Or.now())return!0}return!1}setFeatureState(e,i,r){this._state.updateState(e=e||"_geojsonTileLayer",i,r)}removeFeatureState(e,i,r){this._state.removeFeatureState(e=e||"_geojsonTileLayer",i,r)}getFeatureState(e,i){return this._state.getState(e=e||"_geojsonTileLayer",i)}setDependencies(e,i,r){const u=this._tiles[e];u&&u.setDependencies(i,r)}reloadTilesForDependencies(e,i){for(const r in this._tiles)this._tiles[r].hasDependency(e,i)&&this._reloadTile(+r,"reloading");this._cache.filter(r=>!r.hasDependency(e,i))}_preloadTiles(e,i){if(!this._sourceLoaded){const y=()=>{this._sourceLoaded&&(this._source.off("data",y),this._preloadTiles(e,i))};return void this._source.on("data",y)}const r=new Map,u=Array.isArray(e)?e:[e],f=this.map.painter.terrain,m=this.usedForTerrain&&f?f.getScaledDemTileSize():this._source.tileSize;for(const y of u){const E=y.coveringTiles({tileSize:m,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom&&!this.usedForTerrain,reparseOverscaled:this._source.reparseOverscaled,isTerrainDEM:this.usedForTerrain});for(const T of E)r.set(T.key,T);this.usedForTerrain&&y.updateElevation(!1)}wi(Array.from(r.values()),(y,E)=>{const T=new Km(y,this._source.tileSize*y.overscaleFactor(),this.transform.tileZoom,this.map.painter,this._isRaster);this._loadTile(T,C=>{this._source.type==="raster-dem"&&T.dem&&this._backfillDEM(T),E(C,T)})},i)}}function a1(t,e){const i=Math.abs(2*t.wrap)-+(t.wrap<0),r=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||r-i||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function l1(t){return t==="raster"||t==="image"||t==="video"||t==="custom"}function yh(t,e){const i=1<<t.z;return[t.x/i+e,(t.x+1)/i+e]}jl.maxOverzooming=10,jl.maxUnderzooming=3;class xp{constructor(e,i,r){this._demTile=e,this._dem=this._demTile.dem,this._scale=i,this._offset=r}static create(e,i,r){const u=r||e.findDEMTileFor(i);if(!u||!u.dem)return;const f=u.dem,m=u.tileID,y=1<<i.canonical.z-m.canonical.z;return new xp(u,u.tileSize/Ft/y,[(i.canonical.x/y-m.canonical.x)*f.dim,(i.canonical.y/y-m.canonical.y)*f.dim])}tileCoordToPixel(e,i){const r=i*this._scale+this._offset[1],u=Math.floor(e*this._scale+this._offset[0]),f=Math.floor(r);return new Oe(u,f)}getElevationAt(e,i,r,u){const f=e*this._scale+this._offset[0],m=i*this._scale+this._offset[1],y=Math.floor(f),E=Math.floor(m),T=this._dem;return u=!!u,r?bi(bi(T.get(y,E,u),T.get(y,E+1,u),m-E),bi(T.get(y+1,E,u),T.get(y+1,E+1,u),m-E),f-y):T.get(y,E,u)}getElevationAtPixel(e,i,r){return this._dem.get(e,i,!!r)}getMeterToDEM(e){return(1<<this._demTile.tileID.canonical.z)*ts(1,e)*this._dem.stride}}class u1{constructor(e,i){this.tileID=e,this.x=e.canonical.x,this.y=e.canonical.y,this.z=e.canonical.z,this.grid=new Js(Ft,16,0),this.featureIndexArray=new Al,this.promoteId=i}insert(e,i,r,u,f,m=0){const y=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,u,f,m);const E=this.grid;for(let T=0;T<i.length;T++){const C=i[T],L=[1/0,1/0,-1/0,-1/0];for(let D=0;D<C.length;D++){const B=C[D];L[0]=Math.min(L[0],B.x),L[1]=Math.min(L[1],B.y),L[2]=Math.max(L[2],B.x),L[3]=Math.max(L[3],B.y)}L[0]<Ft&&L[1]<Ft&&L[2]>=0&&L[3]>=0&&E.insert(y,L[0],L[1],L[2],L[3])}}loadVTLayers(){if(!this.vtLayers){this.vtLayers=new Om(new sp(this.rawTileData)).layers,this.sourceLayerCoder=new Wx(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"]),this.vtFeatures={};for(const e in this.vtLayers)this.vtFeatures[e]=[]}return this.vtLayers}query(e,i,r,u){this.loadVTLayers();const f=e.params||{},m=Su(f.filter),y=e.tileResult,E=e.transform,T=y.bufferedTilespaceBounds,C=this.grid.query(T.min.x,T.min.y,T.max.x,T.max.y,(U,G,H,ne)=>D0(y.bufferedTilespaceGeometry,U,G,H,ne));C.sort(BM);let L=null;E.elevation&&C.length>0&&(L=xp.create(E.elevation,this.tileID));const D={};let B;for(let U=0;U<C.length;U++){const G=C[U];if(G===B)continue;B=G;const H=this.featureIndexArray.get(G);let ne=null;this.loadMatchingFeature(D,H,m,f.layers,f.availableImages,i,r,u,(de,re,fe,ve=0)=>(ne||(ne=oa(de,this.tileID.canonical,e.tileTransform)),re.queryIntersectsFeature(y,de,fe,ne,this.z,e.transform,e.pixelPosMatrix,L,ve)))}return D}loadMatchingFeature(e,i,r,u,f,m,y,E,T){const{featureIndex:C,bucketIndex:L,sourceLayerIndex:D,layoutVertexArrayOffset:B}=i,U=this.bucketLayerIDs[L];if(u&&!function(de,re){for(let fe=0;fe<de.length;fe++)if(re.indexOf(de[fe])>=0)return!0;return!1}(u,U))return;const G=this.sourceLayerCoder.decode(D),H=this.vtLayers[G].feature(C);if(r.needGeometry){const de=Nl(H,!0);if(!r.filter(new P(this.tileID.overscaledZ),de,this.tileID.canonical))return}else if(!r.filter(new P(this.tileID.overscaledZ),H))return;const ne=this.getId(H,G);for(let de=0;de<U.length;de++){const re=U[de];if(u&&u.indexOf(re)<0)continue;const fe=m[re];if(!fe)continue;let ve={};ne!==void 0&&E&&(ve=E.getState(fe.sourceLayer||"_geojsonTileLayer",ne));const ge=Wt({},y[re]);ge.paint=c1(ge.paint,fe.paint,H,ve,f),ge.layout=c1(ge.layout,fe.layout,H,ve,f);const Be=!T||T(H,fe,ve,B);if(!Be)continue;const De=new Yx(H,this.z,this.x,this.y,ne);De.layer=ge;let qe=e[re];qe===void 0&&(qe=e[re]=[]),qe.push({featureIndex:C,feature:De,intersectionZ:Be})}}lookupSymbolFeatures(e,i,r,u,f,m,y,E){const T={};this.loadVTLayers();const C=Su(f);for(const L of e)this.loadMatchingFeature(T,{bucketIndex:r,sourceLayerIndex:u,featureIndex:L,layoutVertexArrayOffset:0},C,m,y,E,i);return T}loadFeature(e){const{featureIndex:i,sourceLayerIndex:r}=e;this.loadVTLayers();const u=this.sourceLayerCoder.decode(r),f=this.vtFeatures[u];if(f[i])return f[i];const m=this.vtLayers[u].feature(i);return f[i]=m,m}hasLayer(e){for(const i of this.bucketLayerIDs)for(const r of i)if(e===r)return!0;return!1}getId(e,i){let r=e.id;if(this.promoteId){const u=typeof this.promoteId=="string"?this.promoteId:this.promoteId[i];u!=null&&(r=e.properties[u]),typeof r=="boolean"&&(r=Number(r))}return r}}function c1(t,e,i,r,u){return ft(t,(f,m)=>{const y=e instanceof ie?e.get(m):null;return y&&y.evaluate?y.evaluate(i,r,u):y})}function BM(t,e){return e-t}Ct(u1,"FeatureIndex",{omit:["rawTileData","sourceLayerCoder"]});class h1{constructor(e,i){this.width=e,this.height=i,this.nextRow=0,this.image=new sa({width:e,height:i}),this.positions={},this.uploaded=!1}getDash(e,i){const r=this.getKey(e,i);return this.positions[r]}trim(){const e=this.width,i=this.height=vn(this.nextRow);this.image.resize({width:e,height:i})}getKey(e,i){return e.join(",")+i}getDashRanges(e,i,r){const u=[];let f=e.length%2==1?-e[e.length-1]*r:0,m=e[0]*r,y=!0;u.push({left:f,right:m,isDash:y,zeroLength:e[0]===0});let E=e[0];for(let T=1;T<e.length;T++){y=!y;const C=e[T];f=E*r,E+=C,m=E*r,u.push({left:f,right:m,isDash:y,zeroLength:C===0})}return u}addRoundDash(e,i,r){const u=i/2;for(let f=-r;f<=r;f++){const m=this.width*(this.nextRow+r+f);let y=0,E=e[y];for(let T=0;T<this.width;T++){T/E.right>1&&(E=e[++y]);const C=Math.abs(T-E.left),L=Math.abs(T-E.right),D=Math.min(C,L);let B;const U=f/r*(u+1);if(E.isDash){const G=u-Math.abs(U);B=Math.sqrt(D*D+G*G)}else B=u-Math.sqrt(D*D+U*U);this.image.data[m+T]=Math.max(0,Math.min(255,B+128))}}}addRegularDash(e,i){for(let E=e.length-1;E>=0;--E){const T=e[E],C=e[E+1];T.zeroLength?e.splice(E,1):C&&C.isDash===T.isDash&&(C.left=T.left,e.splice(E,1))}const r=e[0],u=e[e.length-1];r.isDash===u.isDash&&(r.left=u.left-this.width,u.right=r.right+this.width);const f=this.width*this.nextRow;let m=0,y=e[m];for(let E=0;E<this.width;E++){E/y.right>1&&(y=e[++m]);const T=Math.abs(E-y.left),C=Math.abs(E-y.right),L=Math.min(T,C);this.image.data[f+E]=Math.max(0,Math.min(255,(y.isDash?L:-L)+i+128))}}addDash(e,i){const r=this.getKey(e,i);if(this.positions[r])return this.positions[r];const u=i==="round",f=u?7:0,m=2*f+1;if(this.nextRow+m>this.height)return Ti("LineAtlas out of space"),null;e.length===0&&e.push(1);let y=0;for(let C=0;C<e.length;C++)e[C]<0&&(Ti("Negative value is found in line dasharray, replacing values with 0"),e[C]=0),y+=e[C];if(y!==0){const C=this.width/y,L=this.getDashRanges(e,this.width,C);u?this.addRoundDash(L,C,f):this.addRegularDash(L,i==="square"?.5*C:0)}const E=this.nextRow+f;this.nextRow+=m;const T={tl:[E,f],br:[y,0]};return this.positions[r]=T,T}}Ct(h1,"LineAtlas");const f1=1*ns;class p1{constructor(e){const i={},r=[];for(const y in e){const E=e[y],T=i[y]={};for(const C in E.glyphs){const L=E.glyphs[+C];if(!L||L.bitmap.width===0||L.bitmap.height===0)continue;const D=L.metrics.localGlyph?f1:1,B={x:0,y:0,w:L.bitmap.width+2*D,h:L.bitmap.height+2*D};r.push(B),T[C]=B}}const{w:u,h:f}=Fm(r),m=new sa({width:u||1,height:f||1});for(const y in e){const E=e[y];for(const T in E.glyphs){const C=E.glyphs[+T];if(!C||C.bitmap.width===0||C.bitmap.height===0)continue;const L=i[y][T],D=C.metrics.localGlyph?f1:1;sa.copy(C.bitmap,m,{x:0,y:0},{x:L.x+D,y:L.y+D},C.bitmap)}}this.image=m,this.positions=i}}Ct(p1,"GlyphAtlas");class FM{constructor(e){this.tileID=new Cr(e.tileID.overscaledZ,e.tileID.wrap,e.tileID.canonical.z,e.tileID.canonical.x,e.tileID.canonical.y),this.tileZoom=e.tileZoom,this.uid=e.uid,this.zoom=e.zoom,this.canonical=e.tileID.canonical,this.pixelRatio=e.pixelRatio,this.tileSize=e.tileSize,this.source=e.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=e.showCollisionBoxes,this.collectResourceTiming=!!e.collectResourceTiming,this.returnDependencies=!!e.returnDependencies,this.promoteId=e.promoteId,this.enableTerrain=!!e.enableTerrain,this.isSymbolTile=e.isSymbolTile,this.tileTransform=Ul(e.tileID.canonical,e.projection),this.projection=e.projection}parse(e,i,r,u,f){this.status="parsing",this.data=e,this.collisionBoxArray=new ji;const m=new Wx(Object.keys(e.layers).sort()),y=new u1(this.tileID,this.promoteId);y.bucketLayerIDs=[];const E={},T=new h1(256,256),C={featureIndex:y,iconDependencies:{},patternDependencies:{},glyphDependencies:{},lineAtlas:T,availableImages:r},L=i.familiesBySource[this.source];for(const ve in L){const ge=e.layers[ve];if(!ge)continue;let Be=!1,De=!1;for(const Ve of L[ve])Ve[0].type==="symbol"?Be=!0:De=!0;if(this.isSymbolTile===!0&&!Be||this.isSymbolTile===!1&&!De)continue;ge.version===1&&Ti(`Vector tile source "${this.source}" layer "${ve}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const qe=m.encode(ve),it=[];for(let Ve=0;Ve<ge.length;Ve++){const Ye=ge.feature(Ve),He=y.getId(Ye,ve);it.push({feature:Ye,id:He,index:Ve,sourceLayerIndex:qe})}for(const Ve of L[ve]){const Ye=Ve[0];this.isSymbolTile!==void 0&&Ye.type==="symbol"!==this.isSymbolTile||Ye.minzoom&&this.zoom<Math.floor(Ye.minzoom)||Ye.maxzoom&&this.zoom>=Ye.maxzoom||Ye.visibility!=="none"&&(ig(Ve,this.zoom,r),(E[Ye.id]=Ye.createBucket({index:y.bucketLayerIDs.length,layers:Ve,zoom:this.zoom,canonical:this.canonical,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:qe,sourceID:this.source,enableTerrain:this.enableTerrain,projection:this.projection.spec,availableImages:r})).populate(it,C,this.tileID.canonical,this.tileTransform),y.bucketLayerIDs.push(Ve.map(He=>He.id)))}}let D,B,U,G;T.trim();const H={type:"maybePrepare",isSymbolTile:this.isSymbolTile,zoom:this.zoom},ne=()=>{if(D)return f(D);if(B&&U&&G){const ve=new p1(B),ge=new xx(U,G);for(const Be in E){const De=E[Be];De instanceof Wa?(ig(De.layers,this.zoom,r),hM(De,B,ve.positions,U,ge.iconPositions,this.showCollisionBoxes,r,this.tileID.canonical,this.tileZoom,this.projection)):De.hasPattern&&(De instanceof np||De instanceof Jf||De instanceof sh)&&(ig(De.layers,this.zoom,r),De.addFeatures(C,this.tileID.canonical,ge.patternPositions,r,this.tileTransform))}this.status="done",f(null,{buckets:Oi(E).filter(Be=>!Be.isEmpty()),featureIndex:y,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:ve.image,lineAtlas:T,imageAtlas:ge,glyphMap:this.returnDependencies?B:null,iconMap:this.returnDependencies?U:null,glyphPositions:this.returnDependencies?ve.positions:null})}},de=ft(C.glyphDependencies,ve=>Object.keys(ve).map(Number));Object.keys(de).length?u.send("getGlyphs",{uid:this.uid,stacks:de},(ve,ge)=>{D||(D=ve,B=ge,ne())},void 0,!1,H):B={};const re=Object.keys(C.iconDependencies);re.length?u.send("getImages",{icons:re,source:this.source,tileID:this.tileID,type:"icons"},(ve,ge)=>{D||(D=ve,U=ge,ne())},void 0,!1,H):U={};const fe=Object.keys(C.patternDependencies);fe.length?u.send("getImages",{icons:fe,source:this.source,tileID:this.tileID,type:"patterns"},(ve,ge)=>{D||(D=ve,G=ge,ne())},void 0,!1,H):G={},ne()}}function ig(t,e,i){const r=new P(e);for(const u of t)u.recalculate(r,i)}class d1{constructor(e){this.entries={},this.scheduler=e}request(e,i,r,u){const f=this.entries[e]=this.entries[e]||{callbacks:[]};if(f.result){const[m,y]=f.result;return this.scheduler?this.scheduler.add(()=>{u(m,y)},i):u(m,y),()=>{}}return f.callbacks.push(u),f.cancel||(f.cancel=r((m,y)=>{f.result=[m,y];for(const E of f.callbacks)this.scheduler?this.scheduler.add(()=>{E(m,y)},i):E(m,y);setTimeout(()=>delete this.entries[e],3e3)})),()=>{f.result||(f.callbacks=f.callbacks.filter(m=>m!==u),f.callbacks.length||(f.cancel(),delete this.entries[e]))}}}function m1(t,e,i){const r=JSON.stringify(t.request);return t.data&&(this.deduped.entries[r]={result:[null,t.data]}),this.deduped.request(r,{type:"parseTile",isSymbolTile:t.isSymbolTile,zoom:t.tileZoom},u=>{const f=ms(t.request,(m,y,E,T)=>{m?u(m):y&&u(null,{vectorTile:i?void 0:new Om(new sp(y)),rawData:y,cacheControl:E,expires:T})});return()=>{f.cancel(),u()}},e)}const g1=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class ng{static from(e){if(!(e instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[i,r]=new Uint8Array(e,0,2);if(i!==219)throw new Error("Data does not appear to be in a KDBush format.");const u=r>>4;if(u!==1)throw new Error(`Got v${u} data when expected v1.`);const f=g1[15&r];if(!f)throw new Error("Unrecognized array type.");const[m]=new Uint16Array(e,2,1),[y]=new Uint32Array(e,4,1);return new ng(y,m,f,e)}constructor(e,i=64,r=Float64Array,u){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+i,2),65535),this.ArrayType=r,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;const f=g1.indexOf(this.ArrayType),m=2*e*this.ArrayType.BYTES_PER_ELEMENT,y=e*this.IndexArrayType.BYTES_PER_ELEMENT,E=(8-y%8)%8;if(f<0)throw new Error(`Unexpected typed array class: ${r}.`);u&&u instanceof ArrayBuffer?(this.data=u,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+y+E,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+m+y+E),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+y+E,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+f]),new Uint16Array(this.data,2,1)[0]=i,new Uint32Array(this.data,4,1)[0]=e)}add(e,i){const r=this._pos>>1;return this.ids[r]=r,this.coords[this._pos++]=e,this.coords[this._pos++]=i,r}finish(){const e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return rg(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,i,r,u){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:f,coords:m,nodeSize:y}=this,E=[0,f.length-1,0],T=[];for(;E.length;){const C=E.pop()||0,L=E.pop()||0,D=E.pop()||0;if(L-D<=y){for(let H=D;H<=L;H++){const ne=m[2*H],de=m[2*H+1];ne>=e&&ne<=r&&de>=i&&de<=u&&T.push(f[H])}continue}const B=D+L>>1,U=m[2*B],G=m[2*B+1];U>=e&&U<=r&&G>=i&&G<=u&&T.push(f[B]),(C===0?e<=U:i<=G)&&(E.push(D),E.push(B-1),E.push(1-C)),(C===0?r>=U:u>=G)&&(E.push(B+1),E.push(L),E.push(1-C))}return T}within(e,i,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:u,coords:f,nodeSize:m}=this,y=[0,u.length-1,0],E=[],T=r*r;for(;y.length;){const C=y.pop()||0,L=y.pop()||0,D=y.pop()||0;if(L-D<=m){for(let H=D;H<=L;H++)y1(f[2*H],f[2*H+1],e,i)<=T&&E.push(u[H]);continue}const B=D+L>>1,U=f[2*B],G=f[2*B+1];y1(U,G,e,i)<=T&&E.push(u[B]),(C===0?e-r<=U:i-r<=G)&&(y.push(D),y.push(B-1),y.push(1-C)),(C===0?e+r>=U:i+r>=G)&&(y.push(B+1),y.push(L),y.push(1-C))}return E}}function rg(t,e,i,r,u,f){if(u-r<=i)return;const m=r+u>>1;_1(t,e,m,r,u,f),rg(t,e,i,r,m-1,1-f),rg(t,e,i,m+1,u,1-f)}function _1(t,e,i,r,u,f){for(;u>r;){if(u-r>600){const T=u-r+1,C=i-r+1,L=Math.log(T),D=.5*Math.exp(2*L/3),B=.5*Math.sqrt(L*D*(T-D)/T)*(C-T/2<0?-1:1);_1(t,e,i,Math.max(r,Math.floor(i-C*D/T+B)),Math.min(u,Math.floor(i+(T-C)*D/T+B)),f)}const m=e[2*i+f];let y=r,E=u;for(vh(t,e,r,i),e[2*u+f]>m&&vh(t,e,r,u);y<E;){for(vh(t,e,y,E),y++,E--;e[2*y+f]<m;)y++;for(;e[2*E+f]>m;)E--}e[2*r+f]===m?vh(t,e,r,E):(E++,vh(t,e,E,u)),E<=i&&(r=E+1),i<=E&&(u=E-1)}}function vh(t,e,i,r){og(t,i,r),og(e,2*i,2*r),og(e,2*i+1,2*r+1)}function og(t,e,i){const r=t[e];t[e]=t[i],t[i]=r}function y1(t,e,i,r){const u=t-i,f=e-r;return u*u+f*f}s.ARRAY_TYPE=Qr,s.AUTH_ERR_MSG=_e,s.Aabb=Ar,s.Actor=class{constructor(t,e,i){this.target=t,this.parent=e,this.mapId=i,this.callbacks={},this.cancelCallbacks={},no(["receive"],this),this.target.addEventListener("message",this.receive,!1),this.globalScope=ro()?t:Z,this.scheduler=new LM}send(t,e,i,r,u=!1,f){const m=Math.round(1e18*Math.random()).toString(36).substring(0,10);i&&(i.metadata=f,this.callbacks[m]=i);const y=Do(this.globalScope)?void 0:[];return this.target.postMessage({id:m,type:t,hasCallback:!!i,targetMapId:r,mustQueue:u,sourceMapId:this.mapId,data:Ua(e,y)},y),{cancel:()=>{i&&delete this.callbacks[m],this.target.postMessage({id:m,type:"<cancel>",targetMapId:r,sourceMapId:this.mapId})}}}receive(t){const e=t.data,i=e.id;if(i&&(!e.targetMapId||this.mapId===e.targetMapId))if(e.type==="<cancel>"){const r=this.cancelCallbacks[i];delete this.cancelCallbacks[i],r&&r.cancel()}else if(e.mustQueue||ro()){const r=this.callbacks[i];this.cancelCallbacks[i]=this.scheduler.add(()=>this.processTask(i,e),r&&r.metadata||{type:"message"})}else this.processTask(i,e)}processTask(t,e){if(e.type==="<response>"){const i=this.callbacks[t];delete this.callbacks[t],i&&(e.error?i(Qs(e.error)):i(null,Qs(e.data)))}else{const i=Do(this.globalScope)?void 0:[],r=e.hasCallback?(f,m)=>{delete this.cancelCallbacks[t],this.target.postMessage({id:t,type:"<response>",sourceMapId:this.mapId,error:f?Ua(f):null,data:Ua(m,i)},i)}:f=>{},u=Qs(e.data);if(this.parent[e.type])this.parent[e.type](e.sourceMapId,u,r);else if(this.parent.getWorkerSource){const f=e.type.split(".");this.parent.getWorkerSource(e.sourceMapId,f[0],u.source)[f[1]](u,r)}else r(new Error(`Could not find function ${e.type}`))}}remove(){this.scheduler.remove(),this.target.removeEventListener("message",this.receive,!1)}},s.CanonicalTileID=ip,s.Color=hn,s.ColorMode=Ps,s.CullFaceMode=rs,s.DEMData=vp,s.DataConstantProperty=V,s.DedupedRequest=d1,s.DepthMode=Hu,s.EXTENT=Ft,s.Elevation=class{isDataAvailableAtPoint(t){const e=this._source();if(this.isUsingMockSource()||!e||t.y<0||t.y>1)return!1;const i=e.getSource().maxzoom,r=1<<i,u=Math.floor(t.x),f=Math.floor((t.x-u)*r),m=Math.floor(t.y*r),y=this.findDEMTileFor(new Cr(i,u,i,f,m));return!(!y||!y.dem)}getAtPointOrZero(t,e=0){return this.getAtPoint(t,e)||0}getAtPoint(t,e,i=!0){if(this.isUsingMockSource())return null;e==null&&(e=null);const r=this._source();if(!r||t.y<0||t.y>1)return e;const u=r.getSource().maxzoom,f=1<<u,m=Math.floor(t.x),y=t.x-m,E=new Cr(u,m,u,Math.floor(y*f),Math.floor(t.y*f)),T=this.findDEMTileFor(E);if(!T||!T.dem)return e;const C=T.dem,L=1<<T.tileID.canonical.z,D=(y*L-T.tileID.canonical.x)*C.dim,B=(t.y*L-T.tileID.canonical.y)*C.dim,U=Math.floor(D),G=Math.floor(B);return(i?this.exaggeration():1)*bi(bi(C.get(U,G),C.get(U,G+1),B-G),bi(C.get(U+1,G),C.get(U+1,G+1),B-G),D-U)}getAtTileOffset(t,e,i){const r=1<<t.canonical.z;return this.getAtPointOrZero(new zu(t.wrap+(t.canonical.x+e/Ft)/r,(t.canonical.y+i/Ft)/r))}getAtTileOffsetFunc(t,e,i,r){return u=>{const f=this.getAtTileOffset(t,u.x,u.y),m=r.upVector(t.canonical,u.x,u.y);return fo(m,m,f*r.upVectorScale(t.canonical,e,i).metersToTile),m}}getForTilePoints(t,e,i,r){if(this.isUsingMockSource())return!1;const u=xp.create(this,t,r);return!!u&&(e.forEach(f=>{f[2]=this.exaggeration()*u.getElevationAt(f[0],f[1],i)}),!0)}getMinMaxForTile(t){if(this.isUsingMockSource())return null;const e=this.findDEMTileFor(t);if(!e||!e.dem)return null;const i=e.dem.tree,r=e.tileID,u=1<<t.canonical.z-r.canonical.z;let f=t.canonical.x/u-r.canonical.x,m=t.canonical.y/u-r.canonical.y,y=0;for(let E=0;E<t.canonical.z-r.canonical.z&&!i.leaves[y];E++){f*=2,m*=2;const T=2*Math.floor(m)+Math.floor(f);y=i.childOffsets[y]+T,f%=1,m%=1}return{min:this.exaggeration()*i.minimums[y],max:this.exaggeration()*i.maximums[y]}}getMinElevationBelowMSL(){throw new Error("Pure virtual method called.")}raycast(t,e,i){throw new Error("Pure virtual method called.")}pointCoordinate(t){throw new Error("Pure virtual method called.")}_source(){throw new Error("Pure virtual method called.")}isUsingMockSource(){throw new Error("Pure virtual method called.")}exaggeration(){throw new Error("Pure virtual method called.")}findDEMTileFor(t){throw new Error("Pure virtual method called.")}get visibleDemTiles(){throw new Error("Getter must be implemented in subclass.")}},s.ErrorEvent=xn,s.EvaluationParameters=P,s.Event=Fo,s.Evented=qr,s.FillExtrusionBucket=sh,s.Frustum=fm,s.FrustumCorners=hm,s.GLOBE_RADIUS=Ss,s.GLOBE_SCALE_MATCH_LATITUDE=45,s.GLOBE_ZOOM_THRESHOLD_MAX=_0,s.GLOBE_ZOOM_THRESHOLD_MIN=pm,s.GlobeSharedBuffers=class{constructor(t){this._createGrid(t),this._createPoles(t)}destroy(){this._poleIndexBuffer.destroy(),this._gridBuffer.destroy(),this._gridIndexBuffer.destroy(),this._poleNorthVertexBuffer.destroy(),this._poleSouthVertexBuffer.destroy();for(const t of this._poleSegments)t.destroy();for(const t of this._gridSegments)t.withSkirts.destroy(),t.withoutSkirts.destroy();if(this._wireframeIndexBuffer){this._wireframeIndexBuffer.destroy();for(const t of this._wireframeSegments)t.destroy()}}_fillGridMeshWithLods(t,e){const i=new tt,r=new Ot,u=[],f=t+1+2,m=e[0]+1,y=e[0]+1+(1+e.length),E=(T,C,L)=>{let D=T===f-1?T-2:T===0?T:T-1;return D+=L?24575:0,[D,C]};for(let T=0;T<f;++T)i.emplaceBack(...E(T,0,!0));for(let T=0;T<m;++T)for(let C=0;C<f;++C)i.emplaceBack(...E(C,T,(C===0||C===f-1)&&!0));for(let T=0;T<e.length;++T){const C=e[T];for(let L=0;L<f;++L)i.emplaceBack(...E(L,C,!0))}for(let T=0;T<e.length;++T){const C=r.length,L=e[T]+1+2,D=new Ot;for(let G=0;G<L-1;G++){const H=G===L-2,ne=H?f*(y-e.length+T-G):f;for(let de=0;de<f-1;de++){const re=G*f+de;G===0||H||de===0||de===f-2?(D.emplaceBack(re+1,re,re+ne),D.emplaceBack(re+ne,re+ne+1,re+1)):(r.emplaceBack(re+1,re,re+ne),r.emplaceBack(re+ne,re+ne+1,re+1))}}const B=En.simpleSegment(0,C,i.length,r.length-C);for(let G=0;G<D.uint16.length;G+=3)r.emplaceBack(D.uint16[G],D.uint16[G+1],D.uint16[G+2]);const U=En.simpleSegment(0,C,i.length,r.length-C);u.push({withoutSkirts:B,withSkirts:U})}return{vertices:i,indices:r,segments:u}}_createGrid(t){const e=this._fillGridMeshWithLods(Ol,Hc);this._gridSegments=e.segments,this._gridBuffer=t.createVertexBuffer(e.vertices,Yc.members),this._gridIndexBuffer=t.createIndexBuffer(e.indices,!0)}_createPoles(t){const e=new Ot;for(let u=0;u<=Ol;u++)e.emplaceBack(0,u+1,u+2);this._poleIndexBuffer=t.createIndexBuffer(e,!0);const i=new Ui,r=new Ui;this._poleSegments=[];for(let u=0,f=0;u<pm;u++){const m=360/(1<<u);i.emplaceBack(0,-Ss,0,.5,0),r.emplaceBack(0,-Ss,0,.5,1);for(let y=0;y<=Ol;y++){const E=y/Ol,T=bi(0,m,E),[C,L,D]=Ru(LI,RI,T,Ss);i.emplaceBack(C,L,D,E,0),r.emplaceBack(C,L,D,E,1)}this._poleSegments.push(En.simpleSegment(f,0,66,64)),f+=66}this._poleNorthVertexBuffer=t.createVertexBuffer(i,m0,!1),this._poleSouthVertexBuffer=t.createVertexBuffer(r,m0,!1)}getGridBuffers(t,e){return[this._gridBuffer,this._gridIndexBuffer,e?this._gridSegments[t].withSkirts:this._gridSegments[t].withoutSkirts]}getPoleBuffers(t){return[this._poleNorthVertexBuffer,this._poleSouthVertexBuffer,this._poleIndexBuffer,this._poleSegments[t]]}getWirefameBuffers(t,e){if(!this._wireframeSegments){const i=new $n,r=Ol,u=r+1+2,f=1;this._wireframeSegments=[];for(let m=0,y=0;m<Hc.length;m++){const E=Hc[m];for(let C=f;C<E+f;C++)for(let L=f;L<r+f;L++){const D=C*u+L;i.emplaceBack(D,D+1),i.emplaceBack(D,D+u),i.emplaceBack(D,D+u+1)}const T=E*r*3;this._wireframeSegments.push(En.simpleSegment(0,y,(E+1)*u,T)),y+=T}this._wireframeIndexBuffer=t.createIndexBuffer(i)}return[this._gridBuffer,this._wireframeIndexBuffer,this._wireframeSegments[e]]}},s.GlyphManager=qu,s.ImagePosition=Um,s.KDBush=ng,s.LivePerformanceUtils=al,s.LngLat=Vi,s.LngLatBounds=$a,s.LocalGlyphMode=Gm,s.MAX_MERCATOR_LATITUDE=hr,s.MercatorCoordinate=zu,s.ONE_EM=Kn,s.OverscaledTileID=Cr,s.PerformanceMarkers=br,s.Point=Oe,s.Properties=le,s.RGBAImage=eo,s.Ray=cm,s.RequestManager=class{constructor(t,e,i){this._transformRequestFn=t,this._customAccessToken=e,this._silenceAuthErrors=!!i,this._createSkuToken()}_createSkuToken(){const t=function(){let e="";for(let i=0;i<10;i++)e+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(62*Math.random())];return{token:["1",Le,e].join(""),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt}_isSkuTokenExpired(){return Date.now()>this._skuTokenExpiresAt}transformRequest(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}}normalizeStyleURL(t,e){if(!Se(t))return t;const i=ht(t);return i.path=`/styles/v1${i.path}`,this._makeAPIURL(i,this._customAccessToken||e)}normalizeGlyphsURL(t,e){if(!Se(t))return t;const i=ht(t);return i.path=`/fonts/v1${i.path}`,this._makeAPIURL(i,this._customAccessToken||e)}normalizeSourceURL(t,e,i,r){if(!Se(t))return t;const u=ht(t);return u.path=`/v4/${u.authority}.json`,u.params.push("secure"),i&&u.params.push(`language=${i}`),r&&u.params.push(`worldview=${r}`),this._makeAPIURL(u,this._customAccessToken||e)}normalizeSpriteURL(t,e,i,r){const u=ht(t);return Se(t)?(u.path=`/styles/v1${u.path}/sprite${e}${i}`,this._makeAPIURL(u,this._customAccessToken||r)):(u.path+=`${e}${i}`,nt(u))}normalizeTileURL(t,e,i){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!Se(t))return t;const r=ht(t);r.path=r.path.replace(/(\.(png|jpg)\d*)(?=$)/,`${e||i&&r.authority!=="raster"&&i===512?"@2x":""}${we.supported?".webp":"$1"}`),r.authority==="raster"?r.path=`/${he.RASTER_URL_PREFIX}${r.path}`:(r.path=r.path.replace(/^.+\/v4\//,"/"),r.path=`/${he.TILE_URL_VERSION}${r.path}`);const u=this._customAccessToken||function(f){for(const m of f){const y=m.match(/^access_token=(.*)$/);if(y)return y[1]}return null}(r.params)||he.ACCESS_TOKEN;return he.REQUIRE_ACCESS_TOKEN&&u&&this._skuToken&&r.params.push(`sku=${this._skuToken}`),this._makeAPIURL(r,u)}canonicalizeTileURL(t,e){const i=ht(t);if(!i.path.match(/^(\/v4\/|\/raster\/v1\/)/)||!i.path.match(/\.[\w]+$/))return t;let r="mapbox://";i.path.match(/^\/raster\/v1\//)?r+=`raster/${i.path.replace(`/${he.RASTER_URL_PREFIX}/`,"")}`:r+=`tiles/${i.path.replace(`/${he.TILE_URL_VERSION}/`,"")}`;let u=i.params;return e&&(u=u.filter(f=>!f.match(/^access_token=/))),u.length&&(r+=`?${u.join("&")}`),r}canonicalizeTileset(t,e){const i=!!e&&Se(e),r=[];for(const u of t.tiles||[])Pe(u)?r.push(this.canonicalizeTileURL(u,i)):r.push(u);return r}_makeAPIURL(t,e){const i="See https://docs.mapbox.com/api/overview/#access-tokens-and-token-scopes",r=ht(he.API_URL);if(t.protocol=r.protocol,t.authority=r.authority,t.protocol==="http"){const u=t.params.indexOf("secure");u>=0&&t.params.splice(u,1)}if(r.path!=="/"&&(t.path=`${r.path}${t.path}`),!he.REQUIRE_ACCESS_TOKEN)return nt(t);if(e=e||he.ACCESS_TOKEN,!this._silenceAuthErrors){if(!e)throw new Error(`An API access token is required to use Mapbox GL. ${i}`);if(e[0]==="s")throw new Error(`Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). ${i}`)}return t.params=t.params.filter(u=>u.indexOf("access_token")===-1),t.params.push(`access_token=${e||""}`),nt(t)}},s.ResourceType=Wn,s.SegmentVector=En,s.SourceCache=jl,s.StencilMode=Qm,s.StructArrayLayout1ui2=Jr,s.StructArrayLayout2f1f2i16=jt,s.StructArrayLayout2i4=tt,s.StructArrayLayout2ui4=$n,s.StructArrayLayout3f12=di,s.StructArrayLayout3ui6=Ot,s.StructArrayLayout4i8=We,s.StructArrayLayout5f20=Ui,s.Texture=_h,s.Tile=Km,s.Transitionable=j,s.Uniform1f=Ff,s.Uniform1i=class extends ia{constructor(t){super(t),this.current=0}set(t,e,i){this.fetchUniformLocation(t,e)&&this.current!==i&&(this.current=i,this.gl.uniform1i(this.location,i))}},s.Uniform2f=class extends ia{constructor(t){super(t),this.current=[0,0]}set(t,e,i){this.fetchUniformLocation(t,e)&&(i[0]===this.current[0]&&i[1]===this.current[1]||(this.current=i,this.gl.uniform2f(this.location,i[0],i[1])))}},s.Uniform3f=class extends ia{constructor(t){super(t),this.current=[0,0,0]}set(t,e,i){this.fetchUniformLocation(t,e)&&(i[0]===this.current[0]&&i[1]===this.current[1]&&i[2]===this.current[2]||(this.current=i,this.gl.uniform3f(this.location,i[0],i[1],i[2])))}},s.Uniform4f=Jv,s.UniformColor=Qv,s.UniformMatrix2f=class extends ia{constructor(t){super(t),this.current=gI}set(t,e,i){if(this.fetchUniformLocation(t,e)){for(let r=0;r<4;r++)if(i[r]!==this.current[r]){this.current=i,this.gl.uniformMatrix2fv(this.location,!1,i);break}}}},s.UniformMatrix3f=class extends ia{constructor(t){super(t),this.current=mI}set(t,e,i){if(this.fetchUniformLocation(t,e)){for(let r=0;r<9;r++)if(i[r]!==this.current[r]){this.current=i,this.gl.uniformMatrix3fv(this.location,!1,i);break}}}},s.UniformMatrix4f=class extends ia{constructor(t){super(t),this.current=dI}set(t,e,i){if(this.fetchUniformLocation(t,e)){if(i[12]!==this.current[12]||i[0]!==this.current[0])return this.current=i,void this.gl.uniformMatrix4fv(this.location,!1,i);for(let r=1;r<16;r++)if(i[r]!==this.current[r]){this.current=i,this.gl.uniformMatrix4fv(this.location,!1,i);break}}}},s.UnwrappedTileID=ox,s.ValidationError=kt,s.VectorTileFeature=ep,s.VectorTileWorkerSource=class extends qr{constructor(t,e,i,r,u){super(),this.actor=t,this.layerIndex=e,this.availableImages=i,this.loadVectorData=u||m1,this.loading={},this.loaded={},this.deduped=new d1(t.scheduler),this.isSpriteLoaded=r,this.scheduler=t.scheduler}loadTile(t,e){const i=t.uid,r=t&&t.request,u=r&&r.collectResourceTiming,f=this.loading[i]=new FM(t);f.abort=this.loadVectorData(t,(m,y)=>{const E=!this.loading[i];if(delete this.loading[i],E||m||!y)return f.status="done",E||(this.loaded[i]=f),e(m);const T=y.rawData,C={};y.expires&&(C.expires=y.expires),y.cacheControl&&(C.cacheControl=y.cacheControl),f.vectorTile=y.vectorTile||new Om(new sp(T));const L=()=>{f.parse(f.vectorTile,this.layerIndex,this.availableImages,this.actor,(D,B)=>{if(D||!B)return e(D);const U={};if(u){const G=dn(r);G.length>0&&(U.resourceTiming=JSON.parse(JSON.stringify(G)))}e(null,Wt({rawTileData:T.slice(0)},B,C,U))})};this.isSpriteLoaded?L():this.once("isSpriteLoaded",()=>{this.scheduler?this.scheduler.add(L,{type:"parseTile",isSymbolTile:t.isSymbolTile,zoom:t.tileZoom}):L()}),this.loaded=this.loaded||{},this.loaded[i]=f})}reloadTile(t,e){const i=this.loaded,r=t.uid,u=this;if(i&&i[r]){const f=i[r];f.showCollisionBoxes=t.showCollisionBoxes,f.enableTerrain=!!t.enableTerrain,f.projection=t.projection,f.tileTransform=Ul(t.tileID.canonical,t.projection);const m=(y,E)=>{const T=f.reloadCallback;T&&(delete f.reloadCallback,f.parse(f.vectorTile,u.layerIndex,this.availableImages,u.actor,T)),e(y,E)};f.status==="parsing"?f.reloadCallback=m:f.status==="done"&&(f.vectorTile?f.parse(f.vectorTile,this.layerIndex,this.availableImages,this.actor,m):m())}}abortTile(t,e){const i=t.uid,r=this.loading[i];r&&(r.abort&&r.abort(),delete this.loading[i]),e()}removeTile(t,e){const i=this.loaded,r=t.uid;i&&i[r]&&delete i[r],e()}},s.WritingMode=mo,s.ZoomDependentExpression=wl,s.add=ra,s.addDynamicAttributes=gp,s.adjoint=function(t,e){var i=e[0],r=e[1],u=e[2],f=e[3],m=e[4],y=e[5],E=e[6],T=e[7],C=e[8];return t[0]=m*C-y*T,t[1]=u*T-r*C,t[2]=r*y-u*m,t[3]=y*E-f*C,t[4]=i*C-u*E,t[5]=u*f-i*y,t[6]=f*T-m*E,t[7]=r*E-i*T,t[8]=i*m-r*f,t},s.asyncAll=wi,s.bezier=Bt,s.bindAll=no,s.boundsAttributes=Kx,s.bufferConvexPolygon=function(t,e){const i=[];for(let r=0;r<t.length;r++){const u=St(r-1,-1,t.length-1),f=St(r+1,-1,t.length-1),m=t[r],y=t[f],E=t[u].sub(m).unit(),T=y.sub(m).unit(),C=T.angleWithSep(E.x,E.y),L=E.add(T).unit().mult(-1*e/Math.sin(C/2));i.push(m.add(L))}return i},s.cacheEntryPossiblyAdded=function(t){zs++,zs>Oo&&(t.getActor().send("enforceCacheSizeLimit",bo),zs=0)},s.calculateGlobeLabelMatrix=function(t,e){const{x:i,y:r}=t.point,u=w0(i,r,t.worldSize/t._pixelsPerMercatorPixel,0,0);return Ll(u,u,gm(Is(e)))},s.calculateGlobeMatrix=function(t){const{x:e,y:i}=t.point,{lng:r,lat:u}=t._center;return w0(e,i,t.worldSize,r,u)},s.calculateGlobeMercatorMatrix=function(t){const e=t.pixelsPerMeter,i=e/ts(1,t.center.lat),r=Qo(new Float64Array(16));return Gc(r,r,[t.point.x,t.point.y,0]),Rl(r,r,[i,i,e]),Float32Array.from(r)},s.circumferenceAtLatitude=ym,s.clamp=Rt,s.clearTileCache=function(t){if(!zo())return;const e=Z.caches.delete(ii);t&&e.catch(t).then(()=>t())},s.clipLine=Rx,s.clone=function(t){var e=new Qr(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},s.clone$1=rn,s.collisionCircleLayout=Nk,s.config=he,s.conjugate=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t},s.create=function(){var t=new Qr(16);return Qr!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},s.create$1=i0,s.createExpression=Na,s.createLayout=ke,s.createStyleLayer=function(t){return t.type==="custom"?new MM(t):new CM[t.type](t)},s.cross=um,s.degToRad=At,s.distance=function(t,e){return Math.hypot(e[0]-t[0],e[1]-t[1],e[2]-t[2])},s.div=function(t,e,i){return t[0]=e[0]/i[0],t[1]=e[1]/i[1],t[2]=e[2]/i[2],t},s.dot=Mo,s.earthRadius=Qc,s.ease=Ri,s.easeCubicInOut=Jt,s.ecefToLatLng=function([t,e,i]){const r=Math.hypot(t,e,i),u=Math.atan2(t,i),f=.5*Math.PI-Math.acos(-e/r);return new Vi(Xt(u),Xt(f))},s.emitValidationErrors=Rf,s.endsWith=Ci,s.enforceCacheSizeLimit=function(t){_i(),tr&&tr.then(e=>{e.keys().then(i=>{for(let r=0;r<i.length-t;r++)e.delete(i[r])})})},s.evaluateSizeForFeature=rp,s.evaluateSizeForZoom=ju,s.evaluateVariableOffset=Bx,s.evented=_,s.exactEquals=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]},s.exactEquals$1=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]},s.exported=Or,s.exported$1=we,s.extend=Wt,s.extend$1=nr,s.fillExtrusionHeightLift=ix,s.filterObject=me,s.fromMat4=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t},s.fromQuat=function(t,e){var i=e[0],r=e[1],u=e[2],f=e[3],m=i+i,y=r+r,E=u+u,T=i*m,C=r*m,L=r*y,D=u*m,B=u*y,U=u*E,G=f*m,H=f*y,ne=f*E;return t[0]=1-L-U,t[1]=C+ne,t[2]=D-H,t[3]=0,t[4]=C-ne,t[5]=1-T-U,t[6]=B+G,t[7]=0,t[8]=D+H,t[9]=B-G,t[10]=1-T-L,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},s.fromRotation=function(t,e){var i=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=i,t[2]=0,t[3]=-i,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},s.fromScaling=r0,s.furthestTileCorner=function(t){const e=Math.round((t+45+360)%360/90)%4;return bt[e]},s.getAABBPointSquareDist=function(t,e,i){let r=0;for(let u=0;u<2;++u){const f=i?i[u]:0;t[u]>f&&(r+=(t[u]-f)*(t[u]-f)),e[u]<f&&(r+=(f-e[u])*(f-e[u]))}return r},s.getAnchorAlignment=Vm,s.getAnchorJustification=qm,s.getBounds=function(t){let e=1/0,i=1/0,r=-1/0,u=-1/0;for(const f of t)e=Math.min(e,f.x),i=Math.min(i,f.y),r=Math.max(r,f.x),u=Math.max(u,f.y);return{min:new Oe(e,i),max:new Oe(r,u)}},s.getColumn=xo,s.getDefaultExportFromCjs=Qe,s.getGridMatrix=function(t,e,i,r){const u=e.getNorth(),f=e.getSouth(),m=e.getWest(),y=e.getEast(),E=1<<t.z,T=y-m,C=u-f,L=T/Ol,D=-C/Hc[i],B=[0,L,0,D,0,0,u,m,0];if(t.z>0){const U=180/r;n0(B,B,[U/T+1,0,0,0,U/C+1,0,-.5*U/L,.5*U/D,1])}return B[2]=E,B[5]=t.x,B[8]=t.y,B},s.getImage=ue,s.getJSON=function(t,e){return No(Wt(t,{type:"json"}),e)},s.getLatitudinalLod=function(t){const e=hr-5;t=Rt(t,-e,e)/e*90;const i=Math.pow(Math.abs(Math.sin(At(t))),3);return Math.round(i*(Hc.length-1))},s.getMapSessionAPI=cn,s.getPerformanceMeasurement=dn,s.getProjection=Zx,s.getRTLTextPluginStatus=b,s.getReferrer=qt,s.getTilePoint=function(t,{x:e,y:i},r=0){return new Oe(((e-r)*t.scale-t.x)*Ft,(i*t.scale-t.y)*Ft)},s.getTileVec3=function(t,e,i=0){return Lu(((e.x-i)*t.scale-t.x)*Ft,(e.y*t.scale-t.y)*Ft,I0(e.z,e.y))},s.getVideo=function(t,e){const i=Z.document.createElement("video");i.muted=!0,i.onloadstart=function(){e(null,i)};for(let r=0;r<t.length;r++){const u=Z.document.createElement("source");gs(t[r])||(i.crossOrigin="Anonymous"),u.src=t[r],i.appendChild(u)}return{cancel:()=>{}}},s.globeCenterToScreenPoint=function(t){const e=[0,0,0],i=Qo(new Float64Array(16));return Ll(i,t.pixelMatrix,t.globeMatrix),gn(e,e,i),new Oe(e[0],e[1])},s.globeDenormalizeECEF=gm,s.globeECEFOrigin=function(t,e){const i=[0,0,0];return gn(i,i,Jc(Is(e.canonical))),gn(i,i,t),i},s.globeMetersToEcef=Vf,s.globeNormalizeECEF=Jc,s.globePixelsToTileUnits=function(t,e){return Ft/(512*Math.pow(2,t))*$f(Is(e))},s.globePoleMatrixForTile=function(t,e,i){const r=Qo(new Float64Array(16)),u=(e/(1<<t)-.5)*Math.PI*2;return jf(r,i.globeMatrix,u),Float32Array.from(r)},s.globeTileBounds=Is,s.globeTiltAtLngLat=E0,s.globeToMercatorTransition=Ou,s.globeUseCustomAntiAliasing=function(t,e,i){const r=Ou(i.zoom),u=t.style.map._antialias,f=!!e.extStandardDerivatives,m=e.extStandardDerivativesForceOff||t.terrain&&t.terrain.exaggeration()>0;return r===0&&!u&&!m&&f},s.identity=Qo,s.identity$1=f0,s.invert=om,s.isFullscreen=function(){return!!Z.document.fullscreenElement||!!Z.document.webkitFullscreenElement},s.isLngLatBehindGlobe=_m,s.isMapAuthenticated=function(t){return pn.has(t)},s.isMapboxURL=Se,s.isSafariWithAntialiasingBug=function(t){const e=t.navigator?t.navigator.userAgent:null;return!!Do(t)&&e&&(e.match("Version/15.4")||e.match("Version/15.5")||e.match(/CPU (OS|iPhone OS) (15_4|15_5) like Mac OS X/))},s.latFromMercatorY=cr,s.latLngToECEF=Du,s.len=SI,s.length=$c,s.length$1=function(t){return Math.hypot(t[0],t[1],t[2],t[3])},s.lngFromMercatorX=po,s.loadVectorTile=m1,s.makeRequest=No,s.mapValue=function(t,e,i,r,u){return Rt((t-e)/(i-e)*(u-r)+r,r,u)},s.mercatorScale=k0,s.mercatorXfromLng=ks,s.mercatorYfromLat=Ms,s.mercatorZfromAltitude=ts,s.mul=EI,s.mul$1=TI,s.multiply=Ll,s.multiply$1=n0,s.multiply$2=a0,s.nextPowerOfTwo=vn,s.normalize=Mr,s.normalize$1=II,s.normalize$2=c0,s.number=bi,s.ortho=function(t,e,i,r,u,f,m){var y=1/(e-i),E=1/(r-u),T=1/(f-m);return t[0]=-2*y,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*E,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*T,t[11]=0,t[12]=(e+i)*y,t[13]=(u+r)*E,t[14]=(m+f)*T,t[15]=1,t},s.pbf=fx,s.perspective=function(t,e,i,r,u){var f,m=1/Math.tan(e/2);return t[0]=m/i,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=m,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,u!=null&&u!==1/0?(t[10]=(u+r)*(f=1/(r-u)),t[14]=2*u*r*f):(t[10]=-1,t[14]=-2*r),t},s.pick=function(t,e){const i={};for(let r=0;r<e.length;r++){const u=e[r];u in t&&(i[u]=t[u])}return i},s.plugin=M,s.pointGeometry=_t,s.polesInViewport=function(t){const e=Qo(new Float64Array(16));Ll(e,t.pixelMatrix,t.globeMatrix);const i=[0,Ao,0],r=[0,Co,0];return gn(i,i,e),gn(r,r,e),[i[0]>0&&i[0]<=t.width&&i[1]>0&&i[1]<=t.height&&!_m(t,new Vi(t.center.lat,90)),r[0]>0&&r[0]<=t.width&&r[1]>0&&r[1]<=t.height&&!_m(t,new Vi(t.center.lat,-90))]},s.polygonContainsPoint=Bl,s.polygonIntersectsBox=D0,s.polygonIntersectsPolygon=C0,s.polygonizeBounds=function(t,e,i=0,r=!0){const u=new Oe(i,i),f=t.sub(u),m=e.add(u),y=[f,new Oe(m.x,f.y),m,new Oe(f.x,m.y)];return r&&y.push(f.clone()),y},s.posAttributes=Yc,s.postMapLoadEvent=un,s.postPerformanceEvent=Pi,s.postTurnstileEvent=hi,s.potpack=Fm,s.prevPowerOfTwo=function(t){return t<=1?1:Math.pow(2,Math.floor(Math.log(t)/Math.LN2))},s.radToDeg=Xt,s.refProperties=["type","source","source-layer","minzoom","maxzoom","filter","layout"],s.registerForPluginStateChange=function(t){return t({pluginStatus:h,pluginURL:n}),_.on("pluginStateChange",t),t},s.removeAuthState=function(t){pn.delete(t)},s.renderColorRamp=Im,s.resample=M0,s.rotateX=sm,s.rotateX$1=p0,s.rotateY=jf,s.rotateY$1=d0,s.rotateZ=function(t,e,i){var r=Math.sin(i),u=Math.cos(i),f=e[0],m=e[1],y=e[2],E=e[3],T=e[4],C=e[5],L=e[6],D=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=f*u+T*r,t[1]=m*u+C*r,t[2]=y*u+L*r,t[3]=E*u+D*r,t[4]=T*u-f*r,t[5]=C*u-m*r,t[6]=L*u-y*r,t[7]=D*u-E*r,t},s.rotateZ$1=function(t,e,i){i*=.5;var r=e[0],u=e[1],f=e[2],m=e[3],y=Math.sin(i),E=Math.cos(i);return t[0]=r*E+u*y,t[1]=u*E-r*y,t[2]=f*E+m*y,t[3]=m*E-f*y,t},s.scale=Rl,s.scale$1=u0,s.scale$2=fo,s.scaleAndAdd=Xc,s.set=function(t,e,i,r){return t[0]=e,t[1]=i,t[2]=r,t},s.setCacheLimits=function(t,e){bo=t,Oo=e},s.setColumn=function(t,e,i){t[4*e+0]=i[0],t[4*e+1]=i[1],t[4*e+2]=i[2],t[4*e+3]=i[3]},s.setRTLTextPlugin=function(t,e,i=!1){if(h===Bc||h===Fc||h===Uc)throw new Error("setRTLTextPlugin cannot be called multiple times.");n=Or.resolveURL(t),h=Bc,ja=e,p(),i||I()},s.smoothstep=pi,s.spec=Ge,s.squaredLength=function(t){var e=t[0],i=t[1],r=t[2];return e*e+i*i+r*r},s.storeAuthState=function(t,e){e?pn.add(t):pn.delete(t)},s.sub=es,s.subtract=lm,s.symbolSize=Bk,s.tileAABB=function(t,e,i,r,u,f,m,y,E){if(E.name==="globe")return PI(t,e,new ip(i,r,u));const T=Ul({z:i,x:r,y:u},E);return new Ar([(f+T.x/T.scale)*e,e*(T.y/T.scale),m],[(f+T.x2/T.scale)*e,e*(T.y2/T.scale),y])},s.tileCornersToBounds=Gf,s.tileTransform=Ul,s.transformMat3=function(t,e,i){var r=e[0],u=e[1],f=e[2];return t[0]=r*i[0]+u*i[3]+f*i[6],t[1]=r*i[1]+u*i[4]+f*i[7],t[2]=r*i[2]+u*i[5]+f*i[8],t},s.transformMat4=gn,s.transformMat4$1=Dl,s.transformQuat=l0,s.transitionTileAABBinECEF=v0,s.translate=Gc,s.transpose=function(t,e){if(t===e){var i=e[1],r=e[2],u=e[5];t[1]=e[3],t[2]=e[6],t[3]=i,t[5]=e[7],t[6]=r,t[7]=u}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t},s.triggerPluginCompletionEvent=a,s.uniqueId=Ni,s.updateGlobeVertexNormal=function(t,e,i,r,u){const f=5*e+2;t.float32[f+0]=i,t.float32[f+1]=r,t.float32[f+2]=u},s.validateCustomStyleLayer=function(t){const e=[],i=t.id;return i===void 0&&e.push({message:`layers.${i}: missing required property "id"`}),t.render===void 0&&e.push({message:`layers.${i}: missing required method "render"`}),t.renderingMode&&t.renderingMode!=="2d"&&t.renderingMode!=="3d"&&e.push({message:`layers.${i}: property "renderingMode" must be either "2d" or "3d"`}),e},s.validateFilter=t=>Kr(kl(t)),s.validateFog=t=>Kr(Cf(t)),s.validateLayer=t=>Kr(If(t)),s.validateLight=t=>Kr(Af(t)),s.validateSource=t=>Kr(Mf(t)),s.validateStyle=Lf,s.validateTerrain=t=>Kr(Rc(t)),s.values=Oi,s.vectorTile=Qf,s.version=oe,s.warnOnce=Ti,s.window=Z,s.wrap=St}),O(["./shared"],function(s){function Z(ce){if(typeof ce=="number"||typeof ce=="boolean"||typeof ce=="string"||ce==null)return JSON.stringify(ce);if(Array.isArray(ce)){let W="[";for(const ue of ce)W+=`${Z(ue)},`;return`${W}]`}let X="{";for(const W of Object.keys(ce).sort())X+=`${W}:${Z(ce[W])},`;return`${X}}`}function oe(ce){let X="";for(const W of s.refProperties)X+=`/${Z(ce[W])}`;return X}class pe{constructor(X){this.keyCache={},X&&this.replace(X)}replace(X){this._layerConfigs={},this._layers={},this.update(X,[])}update(X,W){for(const _e of X)this._layerConfigs[_e.id]=_e,(this._layers[_e.id]=s.createStyleLayer(_e)).compileFilter(),this.keyCache[_e.id]&&delete this.keyCache[_e.id];for(const _e of W)delete this.keyCache[_e],delete this._layerConfigs[_e],delete this._layers[_e];this.familiesBySource={};const ue=function(_e,Se){const Pe={};for(let se=0;se<_e.length;se++){const Ue=Se&&Se[_e[se].id]||oe(_e[se]);Se&&(Se[_e[se].id]=Ue);let ot=Pe[Ue];ot||(ot=Pe[Ue]=[]),ot.push(_e[se])}const Ce=[];for(const se in Pe)Ce.push(Pe[se]);return Ce}(s.values(this._layerConfigs),this.keyCache);for(const _e of ue){const Se=_e.map(ht=>this._layers[ht.id]),Pe=Se[0];if(Pe.visibility==="none")continue;const Ce=Pe.source||"";let se=this.familiesBySource[Ce];se||(se=this.familiesBySource[Ce]={});const Ue=Pe.sourceLayer||"_geojsonTileLayer";let ot=se[Ue];ot||(ot=se[Ue]=[]),ot.push(Se)}}}class he{loadTile(X,W){const{uid:ue,encoding:_e,rawImageData:Se,padding:Pe,buildQuadTree:Ce}=X,se=s.window.ImageBitmap&&Se instanceof s.window.ImageBitmap?this.getImageData(Se,Pe):Se;W(null,new s.DEMData(ue,se,_e,Pe<1,Ce))}getImageData(X,W){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(X.width,X.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d",{willReadFrequently:!0})),this.offscreenCanvas.width=X.width,this.offscreenCanvas.height=X.height,this.offscreenCanvasContext.drawImage(X,0,0,X.width,X.height);const ue=this.offscreenCanvasContext.getImageData(-W,-W,X.width+2*W,X.height+2*W);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),ue}}function we(ce,X){if(ce.length!==0){ye(ce[0],X);for(var W=1;W<ce.length;W++)ye(ce[W],!X)}}function ye(ce,X){for(var W=0,ue=0,_e=0,Se=ce.length,Pe=Se-1;_e<Se;Pe=_e++){var Ce=(ce[_e][0]-ce[Pe][0])*(ce[Pe][1]+ce[_e][1]),se=W+Ce;ue+=Math.abs(W)>=Math.abs(Ce)?W-se+Ce:Ce-se+W,W=se}W+ue>=0!=!!X&&ce.reverse()}var Ie=s.getDefaultExportFromCjs(function ce(X,W){var ue,_e=X&&X.type;if(_e==="FeatureCollection")for(ue=0;ue<X.features.length;ue++)ce(X.features[ue],W);else if(_e==="GeometryCollection")for(ue=0;ue<X.geometries.length;ue++)ce(X.geometries[ue],W);else if(_e==="Feature")ce(X.geometry,W);else if(_e==="Polygon")we(X.coordinates,W);else if(_e==="MultiPolygon")for(ue=0;ue<X.coordinates.length;ue++)we(X.coordinates[ue],W);return X});const Tt=s.VectorTileFeature.prototype.toGeoJSON;var gt={exports:{}},Mt=s.pointGeometry,Le=s.vectorTile.VectorTileFeature,Qe=Et;function Et(ce,X){this.options=X||{},this.features=ce,this.length=ce.length}function ut(ce,X){this.id=typeof ce.id=="number"?ce.id:void 0,this.type=ce.type,this.rawGeometry=ce.type===1?[ce.geometry]:ce.geometry,this.properties=ce.tags,this.extent=X||4096}Et.prototype.feature=function(ce){return new ut(this.features[ce],this.options.extent)},ut.prototype.loadGeometry=function(){var ce=this.rawGeometry;this.geometry=[];for(var X=0;X<ce.length;X++){for(var W=ce[X],ue=[],_e=0;_e<W.length;_e++)ue.push(new Mt(W[_e][0],W[_e][1]));this.geometry.push(ue)}return this.geometry},ut.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var ce=this.geometry,X=1/0,W=-1/0,ue=1/0,_e=-1/0,Se=0;Se<ce.length;Se++)for(var Pe=ce[Se],Ce=0;Ce<Pe.length;Ce++){var se=Pe[Ce];X=Math.min(X,se.x),W=Math.max(W,se.x),ue=Math.min(ue,se.y),_e=Math.max(_e,se.y)}return[X,ue,W,_e]},ut.prototype.toGeoJSON=Le.prototype.toGeoJSON;var yt=s.pbf,_t=Qe;function It(ce){var X=new yt;return function(W,ue){for(var _e in W.layers)ue.writeMessage(3,Oe,W.layers[_e])}(ce,X),X.finish()}function Oe(ce,X){var W;X.writeVarintField(15,ce.version||1),X.writeStringField(1,ce.name||""),X.writeVarintField(5,ce.extent||4096);var ue={keys:[],values:[],keycache:{},valuecache:{}};for(W=0;W<ce.length;W++)ue.feature=ce.feature(W),X.writeMessage(2,gi,ue);var _e=ue.keys;for(W=0;W<_e.length;W++)X.writeStringField(3,_e[W]);var Se=ue.values;for(W=0;W<Se.length;W++)X.writeMessage(4,Jt,Se[W])}function gi(ce,X){var W=ce.feature;W.id!==void 0&&X.writeVarintField(1,W.id),X.writeMessage(2,ti,ce),X.writeVarintField(3,W.type),X.writeMessage(4,bt,W)}function ti(ce,X){var W=ce.feature,ue=ce.keys,_e=ce.values,Se=ce.keycache,Pe=ce.valuecache;for(var Ce in W.properties){var se=W.properties[Ce],Ue=Se[Ce];if(se!==null){Ue===void 0&&(ue.push(Ce),Se[Ce]=Ue=ue.length-1),X.writeVarint(Ue);var ot=typeof se;ot!=="string"&&ot!=="boolean"&&ot!=="number"&&(se=JSON.stringify(se));var ht=ot+":"+se,nt=Pe[ht];nt===void 0&&(_e.push(se),Pe[ht]=nt=_e.length-1),X.writeVarint(nt)}}}function At(ce,X){return(X<<3)+(7&ce)}function Xt(ce){return ce<<1^ce>>31}function bt(ce,X){for(var W=ce.loadGeometry(),ue=ce.type,_e=0,Se=0,Pe=W.length,Ce=0;Ce<Pe;Ce++){var se=W[Ce],Ue=1;ue===1&&(Ue=se.length),X.writeVarint(At(1,Ue));for(var ot=ue===3?se.length-1:se.length,ht=0;ht<ot;ht++){ht===1&&ue!==1&&X.writeVarint(At(2,ot-1));var nt=se[ht].x-_e,Ht=se[ht].y-Se;X.writeVarint(Xt(nt)),X.writeVarint(Xt(Ht)),_e+=nt,Se+=Ht}ue===3&&X.writeVarint(At(7,1))}}function Jt(ce,X){var W=typeof ce;W==="string"?X.writeStringField(1,ce):W==="boolean"?X.writeBooleanField(7,ce):W==="number"&&(ce%1!=0?X.writeDoubleField(3,ce):ce<0?X.writeSVarintField(6,ce):X.writeVarintField(5,ce))}gt.exports=It,gt.exports.fromVectorTileJs=It,gt.exports.fromGeojsonVt=function(ce,X){X=X||{};var W={};for(var ue in ce)W[ue]=new _t(ce[ue].features,X),W[ue].name=ue,W[ue].version=X.version,W[ue].extent=X.extent;return It({layers:W})},gt.exports.GeoJSONWrapper=_t;var Bt=s.getDefaultExportFromCjs(gt.exports);const Ri={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:ce=>ce},Rt=Math.fround||(pi=new Float32Array(1),ce=>(pi[0]=+ce,pi[0]));var pi;const St=3,wi=5,Oi=6;class Wt{constructor(X){this.options=Object.assign(Object.create(Ri),X),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(X){const{log:W,minZoom:ue,maxZoom:_e}=this.options;W&&console.time("total time");const Se=`prepare ${X.length} points`;W&&console.time(Se),this.points=X;const Pe=[];for(let se=0;se<X.length;se++){const Ue=X[se];if(!Ue.geometry)continue;const[ot,ht]=Ue.geometry.coordinates,nt=Rt(Dn(ot)),Ht=Rt(vn(ht));Pe.push(nt,Ht,1/0,se,-1,1),this.options.reduce&&Pe.push(0)}let Ce=this.trees[_e+1]=this._createTree(Pe);W&&console.timeEnd(Se);for(let se=_e;se>=ue;se--){const Ue=+Date.now();Ce=this.trees[se]=this._createTree(this._cluster(Ce,se)),W&&console.log("z%d: %d clusters in %dms",se,Ce.numItems,+Date.now()-Ue)}return W&&console.timeEnd("total time"),this}getClusters(X,W){let ue=((X[0]+180)%360+360)%360-180;const _e=Math.max(-90,Math.min(90,X[1]));let Se=X[2]===180?180:((X[2]+180)%360+360)%360-180;const Pe=Math.max(-90,Math.min(90,X[3]));if(X[2]-X[0]>=360)ue=-180,Se=180;else if(ue>Se){const ht=this.getClusters([ue,_e,180,Pe],W),nt=this.getClusters([-180,_e,Se,Pe],W);return ht.concat(nt)}const Ce=this.trees[this._limitZoom(W)],se=Ce.range(Dn(ue),vn(Pe),Dn(Se),vn(_e)),Ue=Ce.data,ot=[];for(const ht of se){const nt=this.stride*ht;ot.push(Ue[nt+wi]>1?Dt(Ue,nt,this.clusterProps):this.points[Ue[nt+St]])}return ot}getChildren(X){const W=this._getOriginId(X),ue=this._getOriginZoom(X),_e="No cluster with the specified id.",Se=this.trees[ue];if(!Se)throw new Error(_e);const Pe=Se.data;if(W*this.stride>=Pe.length)throw new Error(_e);const Ce=this.options.radius/(this.options.extent*Math.pow(2,ue-1)),se=Se.within(Pe[W*this.stride],Pe[W*this.stride+1],Ce),Ue=[];for(const ot of se){const ht=ot*this.stride;Pe[ht+4]===X&&Ue.push(Pe[ht+wi]>1?Dt(Pe,ht,this.clusterProps):this.points[Pe[ht+St]])}if(Ue.length===0)throw new Error(_e);return Ue}getLeaves(X,W,ue){const _e=[];return this._appendLeaves(_e,X,W=W||10,ue=ue||0,0),_e}getTile(X,W,ue){const _e=this.trees[this._limitZoom(X)],Se=Math.pow(2,X),{extent:Pe,radius:Ce}=this.options,se=Ce/Pe,Ue=(ue-se)/Se,ot=(ue+1+se)/Se,ht={features:[]};return this._addTileFeatures(_e.range((W-se)/Se,Ue,(W+1+se)/Se,ot),_e.data,W,ue,Se,ht),W===0&&this._addTileFeatures(_e.range(1-se/Se,Ue,1,ot),_e.data,Se,ue,Se,ht),W===Se-1&&this._addTileFeatures(_e.range(0,Ue,se/Se,ot),_e.data,-1,ue,Se,ht),ht.features.length?ht:null}getClusterExpansionZoom(X){let W=this._getOriginZoom(X)-1;for(;W<=this.options.maxZoom;){const ue=this.getChildren(X);if(W++,ue.length!==1)break;X=ue[0].properties.cluster_id}return W}_appendLeaves(X,W,ue,_e,Se){const Pe=this.getChildren(W);for(const Ce of Pe){const se=Ce.properties;if(se&&se.cluster?Se+se.point_count<=_e?Se+=se.point_count:Se=this._appendLeaves(X,se.cluster_id,ue,_e,Se):Se<_e?Se++:X.push(Ce),X.length===ue)break}return Se}_createTree(X){const W=new s.KDBush(X.length/this.stride|0,this.options.nodeSize,Float32Array);for(let ue=0;ue<X.length;ue+=this.stride)W.add(X[ue],X[ue+1]);return W.finish(),W.data=X,W}_addTileFeatures(X,W,ue,_e,Se,Pe){for(const Ce of X){const se=Ce*this.stride,Ue=W[se+wi]>1;let ot,ht,nt;if(Ue)ot=Ni(W,se,this.clusterProps),ht=W[se],nt=W[se+1];else{const Zt=this.points[W[se+St]];ot=Zt.properties;const[ui,hi]=Zt.geometry.coordinates;ht=Dn(ui),nt=vn(hi)}const Ht={type:1,geometry:[[Math.round(this.options.extent*(ht*Se-ue)),Math.round(this.options.extent*(nt*Se-_e))]],tags:ot};let li;li=Ue||this.options.generateId?W[se+St]:this.points[W[se+St]].id,li!==void 0&&(Ht.id=li),Pe.features.push(Ht)}}_limitZoom(X){return Math.max(this.options.minZoom,Math.min(Math.floor(+X),this.options.maxZoom+1))}_cluster(X,W){const{radius:ue,extent:_e,reduce:Se,minPoints:Pe}=this.options,Ce=ue/(_e*Math.pow(2,W)),se=X.data,Ue=[],ot=this.stride;for(let ht=0;ht<se.length;ht+=ot){if(se[ht+2]<=W)continue;se[ht+2]=W;const nt=se[ht],Ht=se[ht+1],li=X.within(se[ht],se[ht+1],Ce),Zt=se[ht+wi];let ui=Zt;for(const hi of li){const tn=hi*ot;se[tn+2]>W&&(ui+=se[tn+wi])}if(ui>Zt&&ui>=Pe){let hi,tn=nt*Zt,un=Ht*Zt,Un=-1;const Pi=((ht/ot|0)<<5)+(W+1)+this.points.length;for(const xr of li){const cn=xr*ot;if(se[cn+2]<=W)continue;se[cn+2]=W;const pn=se[cn+wi];tn+=se[cn]*pn,un+=se[cn+1]*pn,se[cn+4]=Pi,Se&&(hi||(hi=this._map(se,ht,!0),Un=this.clusterProps.length,this.clusterProps.push(hi)),Se(hi,this._map(se,cn)))}se[ht+4]=Pi,Ue.push(tn/ui,un/ui,1/0,Pi,-1,ui),Se&&Ue.push(Un)}else{for(let hi=0;hi<ot;hi++)Ue.push(se[ht+hi]);if(ui>1)for(const hi of li){const tn=hi*ot;if(!(se[tn+2]<=W)){se[tn+2]=W;for(let un=0;un<ot;un++)Ue.push(se[tn+un])}}}}return Ue}_getOriginId(X){return X-this.points.length>>5}_getOriginZoom(X){return(X-this.points.length)%32}_map(X,W,ue){if(X[W+wi]>1){const Pe=this.clusterProps[X[W+Oi]];return ue?Object.assign({},Pe):Pe}const _e=this.points[X[W+St]].properties,Se=this.options.map(_e);return ue&&Se===_e?Object.assign({},Se):Se}}function Dt(ce,X,W){return{type:"Feature",id:ce[X+St],properties:Ni(ce,X,W),geometry:{type:"Point",coordinates:[(ue=ce[X],360*(ue-.5)),Fe(ce[X+1])]}};var ue}function Ni(ce,X,W){const ue=ce[X+wi],_e=ue>=1e4?`${Math.round(ue/1e3)}k`:ue>=1e3?Math.round(ue/100)/10+"k":ue,Se=ce[X+Oi],Pe=Se===-1?{}:Object.assign({},W[Se]);return Object.assign(Pe,{cluster:!0,cluster_id:ce[X+St],point_count:ue,point_count_abbreviated:_e})}function Dn(ce){return ce/360+.5}function vn(ce){const X=Math.sin(ce*Math.PI/180),W=.5-.25*Math.log((1+X)/(1-X))/Math.PI;return W<0?0:W>1?1:W}function Fe(ce){const X=(180-360*ce)*Math.PI/180;return 360*Math.atan(Math.exp(X))/Math.PI-90}function no(ce,X,W,ue){for(var _e,Se=ue,Pe=W-X>>1,Ce=W-X,se=ce[X],Ue=ce[X+1],ot=ce[W],ht=ce[W+1],nt=X+3;nt<W;nt+=3){var Ht=Ci(ce[nt],ce[nt+1],se,Ue,ot,ht);if(Ht>Se)_e=nt,Se=Ht;else if(Ht===Se){var li=Math.abs(nt-Pe);li<Ce&&(_e=nt,Ce=li)}}Se>ue&&(_e-X>3&&no(ce,X,_e,ue),ce[_e+2]=Se,W-_e>3&&no(ce,_e,W,ue))}function Ci(ce,X,W,ue,_e,Se){var Pe=_e-W,Ce=Se-ue;if(Pe!==0||Ce!==0){var se=((ce-W)*Pe+(X-ue)*Ce)/(Pe*Pe+Ce*Ce);se>1?(W=_e,ue=Se):se>0&&(W+=Pe*se,ue+=Ce*se)}return(Pe=ce-W)*Pe+(Ce=X-ue)*Ce}function ft(ce,X,W,ue){var _e={id:ce===void 0?null:ce,type:X,geometry:W,tags:ue,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(Se){var Pe=Se.geometry,Ce=Se.type;if(Ce==="Point"||Ce==="MultiPoint"||Ce==="LineString")me(Se,Pe);else if(Ce==="Polygon"||Ce==="MultiLineString")for(var se=0;se<Pe.length;se++)me(Se,Pe[se]);else if(Ce==="MultiPolygon")for(se=0;se<Pe.length;se++)for(var Ue=0;Ue<Pe[se].length;Ue++)me(Se,Pe[se][Ue])}(_e),_e}function me(ce,X){for(var W=0;W<X.length;W+=3)ce.minX=Math.min(ce.minX,X[W]),ce.minY=Math.min(ce.minY,X[W+1]),ce.maxX=Math.max(ce.maxX,X[W]),ce.maxY=Math.max(ce.maxY,X[W+1])}function rn(ce,X,W,ue){if(X.geometry){var _e=X.geometry.coordinates,Se=X.geometry.type,Pe=Math.pow(W.tolerance/((1<<W.maxZoom)*W.extent),2),Ce=[],se=X.id;if(W.promoteId?se=X.properties[W.promoteId]:W.generateId&&(se=ue||0),Se==="Point")$r(_e,Ce);else if(Se==="MultiPoint")for(var Ue=0;Ue<_e.length;Ue++)$r(_e[Ue],Ce);else if(Se==="LineString")Ti(_e,Ce,Pe,!1);else if(Se==="MultiLineString"){if(W.lineMetrics){for(Ue=0;Ue<_e.length;Ue++)Ti(_e[Ue],Ce=[],Pe,!1),ce.push(ft(se,"LineString",Ce,X.properties));return}pr(_e,Ce,Pe,!1)}else if(Se==="Polygon")pr(_e,Ce,Pe,!0);else{if(Se!=="MultiPolygon"){if(Se==="GeometryCollection"){for(Ue=0;Ue<X.geometry.geometries.length;Ue++)rn(ce,{id:se,geometry:X.geometry.geometries[Ue],properties:X.properties},W,ue);return}throw new Error("Input data is not a valid GeoJSON object.")}for(Ue=0;Ue<_e.length;Ue++){var ot=[];pr(_e[Ue],ot,Pe,!0),Ce.push(ot)}}ce.push(ft(se,Se,Ce,X.properties))}}function $r(ce,X){X.push(ps(ce[0])),X.push(ro(ce[1])),X.push(0)}function Ti(ce,X,W,ue){for(var _e,Se,Pe=0,Ce=0;Ce<ce.length;Ce++){var se=ps(ce[Ce][0]),Ue=ro(ce[Ce][1]);X.push(se),X.push(Ue),X.push(0),Ce>0&&(Pe+=ue?(_e*Ue-se*Se)/2:Math.sqrt(Math.pow(se-_e,2)+Math.pow(Ue-Se,2))),_e=se,Se=Ue}var ot=X.length-3;X[2]=1,no(X,0,ot,W),X[ot+2]=1,X.size=Math.abs(Pe),X.start=0,X.end=X.size}function pr(ce,X,W,ue){for(var _e=0;_e<ce.length;_e++){var Se=[];Ti(ce[_e],Se,W,ue),X.push(Se)}}function ps(ce){return ce/360+.5}function ro(ce){var X=Math.sin(ce*Math.PI/180),W=.5-.25*Math.log((1+X)/(1-X))/Math.PI;return W<0?0:W>1?1:W}function ct(ce,X,W,ue,_e,Se,Pe,Ce){if(ue/=X,Se>=(W/=X)&&Pe<ue)return ce;if(Pe<W||Se>=ue)return null;for(var se=[],Ue=0;Ue<ce.length;Ue++){var ot=ce[Ue],ht=ot.geometry,nt=ot.type,Ht=_e===0?ot.minX:ot.minY,li=_e===0?ot.maxX:ot.maxY;if(Ht>=W&&li<ue)se.push(ot);else if(!(li<W||Ht>=ue)){var Zt=[];if(nt==="Point"||nt==="MultiPoint")ds(ht,Zt,W,ue,_e);else if(nt==="LineString")Do(ht,Zt,W,ue,_e,!1,Ce.lineMetrics);else if(nt==="MultiLineString")xo(ht,Zt,W,ue,_e,!1);else if(nt==="Polygon")xo(ht,Zt,W,ue,_e,!0);else if(nt==="MultiPolygon")for(var ui=0;ui<ht.length;ui++){var hi=[];xo(ht[ui],hi,W,ue,_e,!0),hi.length&&Zt.push(hi)}if(Zt.length){if(Ce.lineMetrics&&nt==="LineString"){for(ui=0;ui<Zt.length;ui++)se.push(ft(ot.id,nt,Zt[ui],ot.tags));continue}nt!=="LineString"&&nt!=="MultiLineString"||(Zt.length===1?(nt="LineString",Zt=Zt[0]):nt="MultiLineString"),nt!=="Point"&&nt!=="MultiPoint"||(nt=Zt.length===3?"Point":"MultiPoint"),se.push(ft(ot.id,nt,Zt,ot.tags))}}}return se.length?se:null}function ds(ce,X,W,ue,_e){for(var Se=0;Se<ce.length;Se+=3){var Pe=ce[Se+_e];Pe>=W&&Pe<=ue&&(X.push(ce[Se]),X.push(ce[Se+1]),X.push(ce[Se+2]))}}function Do(ce,X,W,ue,_e,Se,Pe){for(var Ce,se,Ue=Dr(ce),ot=_e===0?bo:Oo,ht=ce.start,nt=0;nt<ce.length-3;nt+=3){var Ht=ce[nt],li=ce[nt+1],Zt=ce[nt+2],ui=ce[nt+3],hi=ce[nt+4],tn=_e===0?Ht:li,un=_e===0?ui:hi,Un=!1;Pe&&(Ce=Math.sqrt(Math.pow(Ht-ui,2)+Math.pow(li-hi,2))),tn<W?un>W&&(se=ot(Ue,Ht,li,ui,hi,W),Pe&&(Ue.start=ht+Ce*se)):tn>ue?un<ue&&(se=ot(Ue,Ht,li,ui,hi,ue),Pe&&(Ue.start=ht+Ce*se)):ii(Ue,Ht,li,Zt),un<W&&tn>=W&&(se=ot(Ue,Ht,li,ui,hi,W),Un=!0),un>ue&&tn<=ue&&(se=ot(Ue,Ht,li,ui,hi,ue),Un=!0),!Se&&Un&&(Pe&&(Ue.end=ht+Ce*se),X.push(Ue),Ue=Dr(ce)),Pe&&(ht+=Ce)}var Pi=ce.length-3;Ht=ce[Pi],li=ce[Pi+1],Zt=ce[Pi+2],(tn=_e===0?Ht:li)>=W&&tn<=ue&&ii(Ue,Ht,li,Zt),Pi=Ue.length-3,Se&&Pi>=3&&(Ue[Pi]!==Ue[0]||Ue[Pi+1]!==Ue[1])&&ii(Ue,Ue[0],Ue[1],Ue[2]),Ue.length&&X.push(Ue)}function Dr(ce){var X=[];return X.size=ce.size,X.start=ce.start,X.end=ce.end,X}function xo(ce,X,W,ue,_e,Se){for(var Pe=0;Pe<ce.length;Pe++)Do(ce[Pe],X,W,ue,_e,Se,!1)}function ii(ce,X,W,ue){ce.push(X),ce.push(W),ce.push(ue)}function bo(ce,X,W,ue,_e,Se){var Pe=(Se-X)/(ue-X);return ce.push(Se),ce.push(W+(_e-W)*Pe),ce.push(1),Pe}function Oo(ce,X,W,ue,_e,Se){var Pe=(Se-W)/(_e-W);return ce.push(X+(ue-X)*Pe),ce.push(Se),ce.push(1),Pe}function tr(ce,X){for(var W=[],ue=0;ue<ce.length;ue++){var _e,Se=ce[ue],Pe=Se.type;if(Pe==="Point"||Pe==="MultiPoint"||Pe==="LineString")_e=$t(Se.geometry,X);else if(Pe==="MultiLineString"||Pe==="Polygon"){_e=[];for(var Ce=0;Ce<Se.geometry.length;Ce++)_e.push($t(Se.geometry[Ce],X))}else if(Pe==="MultiPolygon")for(_e=[],Ce=0;Ce<Se.geometry.length;Ce++){for(var se=[],Ue=0;Ue<Se.geometry[Ce].length;Ue++)se.push($t(Se.geometry[Ce][Ue],X));_e.push(se)}W.push(ft(Se.id,Pe,_e,Se.tags))}return W}function $t(ce,X){var W=[];W.size=ce.size,ce.start!==void 0&&(W.start=ce.start,W.end=ce.end);for(var ue=0;ue<ce.length;ue+=3)W.push(ce[ue]+X,ce[ue+1],ce[ue+2]);return W}function zo(ce,X){if(ce.transformed)return ce;var W,ue,_e,Se=1<<ce.z,Pe=ce.x,Ce=ce.y;for(W=0;W<ce.features.length;W++){var se=ce.features[W],Ue=se.geometry,ot=se.type;if(se.geometry=[],ot===1)for(ue=0;ue<Ue.length;ue+=2)se.geometry.push(_i(Ue[ue],Ue[ue+1],X,Se,Pe,Ce));else for(ue=0;ue<Ue.length;ue++){var ht=[];for(_e=0;_e<Ue[ue].length;_e+=2)ht.push(_i(Ue[ue][_e],Ue[ue][_e+1],X,Se,Pe,Ce));se.geometry.push(ht)}}return ce.transformed=!0,ce}function _i(ce,X,W,ue,_e,Se){return[Math.round(W*(ce*ue-_e)),Math.round(W*(X*ue-Se))]}function Yt(ce,X,W,ue,_e){for(var Se=X===_e.maxZoom?0:_e.tolerance/((1<<X)*_e.extent),Pe={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:W,y:ue,z:X,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},Ce=0;Ce<ce.length;Ce++){Pe.numFeatures++,zs(Pe,ce[Ce],Se,_e);var se=ce[Ce].minX,Ue=ce[Ce].minY,ot=ce[Ce].maxX,ht=ce[Ce].maxY;se<Pe.minX&&(Pe.minX=se),Ue<Pe.minY&&(Pe.minY=Ue),ot>Pe.maxX&&(Pe.maxX=ot),ht>Pe.maxY&&(Pe.maxY=ht)}return Pe}function zs(ce,X,W,ue){var _e=X.geometry,Se=X.type,Pe=[];if(Se==="Point"||Se==="MultiPoint")for(var Ce=0;Ce<_e.length;Ce+=3)Pe.push(_e[Ce]),Pe.push(_e[Ce+1]),ce.numPoints++,ce.numSimplified++;else if(Se==="LineString")Wn(Pe,_e,ce,W,!1,!1);else if(Se==="MultiLineString"||Se==="Polygon")for(Ce=0;Ce<_e.length;Ce++)Wn(Pe,_e[Ce],ce,W,Se==="Polygon",Ce===0);else if(Se==="MultiPolygon")for(var se=0;se<_e.length;se++){var Ue=_e[se];for(Ce=0;Ce<Ue.length;Ce++)Wn(Pe,Ue[Ce],ce,W,!0,Ce===0)}if(Pe.length){var ot=X.tags||null;if(Se==="LineString"&&ue.lineMetrics){for(var ht in ot={},X.tags)ot[ht]=X.tags[ht];ot.mapbox_clip_start=_e.start/_e.size,ot.mapbox_clip_end=_e.end/_e.size}var nt={geometry:Pe,type:Se==="Polygon"||Se==="MultiPolygon"?3:Se==="LineString"||Se==="MultiLineString"?2:1,tags:ot};X.id!==null&&(nt.id=X.id),ce.features.push(nt)}}function Wn(ce,X,W,ue,_e,Se){var Pe=ue*ue;if(ue>0&&X.size<(_e?Pe:ue))W.numPoints+=X.length/3;else{for(var Ce=[],se=0;se<X.length;se+=3)(ue===0||X[se+2]>Pe)&&(W.numSimplified++,Ce.push(X[se]),Ce.push(X[se+1])),W.numPoints++;_e&&function(Ue,ot){for(var ht=0,nt=0,Ht=Ue.length,li=Ht-2;nt<Ht;li=nt,nt+=2)ht+=(Ue[nt]-Ue[li])*(Ue[nt+1]+Ue[li+1]);if(ht>0===ot)for(nt=0,Ht=Ue.length;nt<Ht/2;nt+=2){var Zt=Ue[nt],ui=Ue[nt+1];Ue[nt]=Ue[Ht-2-nt],Ue[nt+1]=Ue[Ht-1-nt],Ue[Ht-2-nt]=Zt,Ue[Ht-1-nt]=ui}}(Ce,Se),ce.push(Ce)}}function wo(ce,X){var W=(X=this.options=function(_e,Se){for(var Pe in Se)_e[Pe]=Se[Pe];return _e}(Object.create(this.options),X)).debug;if(W&&console.time("preprocess data"),X.maxZoom<0||X.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(X.promoteId&&X.generateId)throw new Error("promoteId and generateId cannot be used together.");var ue=function(_e,Se){var Pe=[];if(_e.type==="FeatureCollection")for(var Ce=0;Ce<_e.features.length;Ce++)rn(Pe,_e.features[Ce],Se,Ce);else rn(Pe,_e.type==="Feature"?_e:{geometry:_e},Se);return Pe}(ce,X);this.tiles={},this.tileCoords=[],W&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",X.indexMaxZoom,X.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),ue=function(_e,Se){var Pe=Se.buffer/Se.extent,Ce=_e,se=ct(_e,1,-1-Pe,Pe,0,-1,2,Se),Ue=ct(_e,1,1-Pe,2+Pe,0,-1,2,Se);return(se||Ue)&&(Ce=ct(_e,1,-Pe,1+Pe,0,-1,2,Se)||[],se&&(Ce=tr(se,1).concat(Ce)),Ue&&(Ce=Ce.concat(tr(Ue,-1)))),Ce}(ue,X),ue.length&&this.splitTile(ue,0,0,0),W&&(ue.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}function qt(ce,X,W){return 32*((1<<ce)*W+X)+ce}function No(ce,X){const W=ce.tileID.canonical;if(!this._geoJSONIndex)return X(null,null);const ue=this._geoJSONIndex.getTile(W.z,W.x,W.y);if(!ue)return X(null,null);const _e=new class{constructor(Pe){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=s.EXTENT,this.length=Pe.length,this._features=Pe}feature(Pe){return new class{constructor(Ce){this._feature=Ce,this.extent=s.EXTENT,this.type=Ce.type,this.properties=Ce.tags,"id"in Ce&&!isNaN(Ce.id)&&(this.id=parseInt(Ce.id,10))}loadGeometry(){if(this._feature.type===1){const Ce=[];for(const se of this._feature.geometry)Ce.push([new s.Point(se[0],se[1])]);return Ce}{const Ce=[];for(const se of this._feature.geometry){const Ue=[];for(const ot of se)Ue.push(new s.Point(ot[0],ot[1]));Ce.push(Ue)}return Ce}}toGeoJSON(Ce,se,Ue){return Tt.call(this,Ce,se,Ue)}}(this._features[Pe])}}(ue.features);let Se=Bt(_e);Se.byteOffset===0&&Se.byteLength===Se.buffer.byteLength||(Se=new Uint8Array(Se)),X(null,{vectorTile:_e,rawData:Se.buffer})}wo.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},wo.prototype.splitTile=function(ce,X,W,ue,_e,Se,Pe){for(var Ce=[ce,X,W,ue],se=this.options,Ue=se.debug;Ce.length;){ue=Ce.pop(),W=Ce.pop(),X=Ce.pop(),ce=Ce.pop();var ot=1<<X,ht=qt(X,W,ue),nt=this.tiles[ht];if(!nt&&(Ue>1&&console.time("creation"),nt=this.tiles[ht]=Yt(ce,X,W,ue,se),this.tileCoords.push({z:X,x:W,y:ue}),Ue)){Ue>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",X,W,ue,nt.numFeatures,nt.numPoints,nt.numSimplified),console.timeEnd("creation"));var Ht="z"+X;this.stats[Ht]=(this.stats[Ht]||0)+1,this.total++}if(nt.source=ce,_e){if(X===se.maxZoom||X===_e)continue;var li=1<<_e-X;if(W!==Math.floor(Se/li)||ue!==Math.floor(Pe/li))continue}else if(X===se.indexMaxZoom||nt.numPoints<=se.indexMaxPoints)continue;if(nt.source=null,ce.length!==0){Ue>1&&console.time("clipping");var Zt,ui,hi,tn,un,Un,Pi=.5*se.buffer/se.extent,xr=.5-Pi,cn=.5+Pi,pn=1+Pi;Zt=ui=hi=tn=null,un=ct(ce,ot,W-Pi,W+cn,0,nt.minX,nt.maxX,se),Un=ct(ce,ot,W+xr,W+pn,0,nt.minX,nt.maxX,se),ce=null,un&&(Zt=ct(un,ot,ue-Pi,ue+cn,1,nt.minY,nt.maxY,se),ui=ct(un,ot,ue+xr,ue+pn,1,nt.minY,nt.maxY,se),un=null),Un&&(hi=ct(Un,ot,ue-Pi,ue+cn,1,nt.minY,nt.maxY,se),tn=ct(Un,ot,ue+xr,ue+pn,1,nt.minY,nt.maxY,se),Un=null),Ue>1&&console.timeEnd("clipping"),Ce.push(Zt||[],X+1,2*W,2*ue),Ce.push(ui||[],X+1,2*W,2*ue+1),Ce.push(hi||[],X+1,2*W+1,2*ue),Ce.push(tn||[],X+1,2*W+1,2*ue+1)}}},wo.prototype.getTile=function(ce,X,W){var ue=this.options,_e=ue.extent,Se=ue.debug;if(ce<0||ce>24)return null;var Pe=1<<ce,Ce=qt(ce,X=(X%Pe+Pe)%Pe,W);if(this.tiles[Ce])return zo(this.tiles[Ce],_e);Se>1&&console.log("drilling down to z%d-%d-%d",ce,X,W);for(var se,Ue=ce,ot=X,ht=W;!se&&Ue>0;)Ue--,ot=Math.floor(ot/2),ht=Math.floor(ht/2),se=this.tiles[qt(Ue,ot,ht)];return se&&se.source?(Se>1&&console.log("found parent tile z%d-%d-%d",Ue,ot,ht),Se>1&&console.time("drilling down"),this.splitTile(se.source,Ue,ot,ht,ce,X,W),Se>1&&console.timeEnd("drilling down"),this.tiles[Ce]?zo(this.tiles[Ce],_e):null):null};class ms extends s.VectorTileWorkerSource{constructor(X,W,ue,_e,Se){super(X,W,ue,_e,No),Se&&(this.loadGeoJSON=Se)}loadData(X,W){const ue=X&&X.request,_e=ue&&ue.collectResourceTiming;this.loadGeoJSON(X,(Se,Pe)=>{if(Se||!Pe)return W(Se);if(typeof Pe!="object")return W(new Error(`Input data given to '${X.source}' is not a valid GeoJSON object.`));{Ie(Pe,!0);try{if(X.filter){const se=s.createExpression(X.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(se.result==="error")throw new Error(se.value.map(ot=>`${ot.key}: ${ot.message}`).join(", "));Pe={type:"FeatureCollection",features:Pe.features.filter(ot=>se.value.evaluate({zoom:0},ot))}}this._geoJSONIndex=X.cluster?new Wt(function({superclusterOptions:se,clusterProperties:Ue}){if(!Ue||!se)return se;const ot={},ht={},nt={accumulated:null,zoom:0},Ht={properties:null},li=Object.keys(Ue);for(const Zt of li){const[ui,hi]=Ue[Zt],tn=s.createExpression(hi),un=s.createExpression(typeof ui=="string"?[ui,["accumulated"],["get",Zt]]:ui);ot[Zt]=tn.value,ht[Zt]=un.value}return se.map=Zt=>{Ht.properties=Zt;const ui={};for(const hi of li)ui[hi]=ot[hi].evaluate(nt,Ht);return ui},se.reduce=(Zt,ui)=>{Ht.properties=ui;for(const hi of li)nt.accumulated=Zt[hi],Zt[hi]=ht[hi].evaluate(nt,Ht)},se}(X)).load(Pe.features):function(se,Ue){return new wo(se,Ue)}(Pe,X.geojsonVtOptions)}catch(se){return W(se)}this.loaded={};const Ce={};if(_e){const se=s.getPerformanceMeasurement(ue);se&&(Ce.resourceTiming={},Ce.resourceTiming[X.source]=JSON.parse(JSON.stringify(se)))}W(null,Ce)}})}reloadTile(X,W){const ue=this.loaded;return ue&&ue[X.uid]?super.reloadTile(X,W):this.loadTile(X,W)}loadGeoJSON(X,W){if(X.request)s.getJSON(X.request,W);else{if(typeof X.data!="string")return W(new Error(`Input data given to '${X.source}' is not a valid GeoJSON object.`));try{return W(null,JSON.parse(X.data))}catch{return W(new Error(`Input data given to '${X.source}' is not a valid GeoJSON object.`))}}}getClusterExpansionZoom(X,W){try{W(null,this._geoJSONIndex.getClusterExpansionZoom(X.clusterId))}catch(ue){W(ue)}}getClusterChildren(X,W){try{W(null,this._geoJSONIndex.getChildren(X.clusterId))}catch(ue){W(ue)}}getClusterLeaves(X,W){try{W(null,this._geoJSONIndex.getLeaves(X.clusterId,X.limit,X.offset))}catch(ue){W(ue)}}}class gs{constructor(X){this.self=X,this.actor=new s.Actor(X,this),this.layerIndexes={},this.availableImages={},this.isSpriteLoaded={},this.projections={},this.defaultProjection=s.getProjection({name:"mercator"}),this.workerSourceTypes={vector:s.VectorTileWorkerSource,geojson:ms},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(W,ue)=>{if(this.workerSourceTypes[W])throw new Error(`Worker source with name "${W}" already registered.`);this.workerSourceTypes[W]=ue},this.self.registerRTLTextPlugin=W=>{if(s.plugin.isParsed())throw new Error("RTL text plugin already registered.");s.plugin.applyArabicShaping=W.applyArabicShaping,s.plugin.processBidirectionalText=W.processBidirectionalText,s.plugin.processStyledBidirectionalText=W.processStyledBidirectionalText}}clearCaches(X,W,ue){delete this.layerIndexes[X],delete this.availableImages[X],delete this.workerSources[X],delete this.demWorkerSources[X],ue()}checkIfReady(X,W,ue){ue()}setReferrer(X,W){this.referrer=W}spriteLoaded(X,W){this.isSpriteLoaded[X]=W;for(const ue in this.workerSources[X]){const _e=this.workerSources[X][ue];for(const Se in _e)_e[Se]instanceof s.VectorTileWorkerSource&&(_e[Se].isSpriteLoaded=W,_e[Se].fire(new s.Event("isSpriteLoaded")))}}setImages(X,W,ue){this.availableImages[X]=W;for(const _e in this.workerSources[X]){const Se=this.workerSources[X][_e];for(const Pe in Se)Se[Pe].availableImages=W}ue()}enableTerrain(X,W,ue){this.terrain=W,ue()}setProjection(X,W){this.projections[X]=s.getProjection(W)}setLayers(X,W,ue){this.getLayerIndex(X).replace(W),ue()}updateLayers(X,W,ue){this.getLayerIndex(X).update(W.layers,W.removedIds),ue()}loadTile(X,W,ue){const _e=this.enableTerrain?s.extend({enableTerrain:this.terrain},W):W;_e.projection=this.projections[X]||this.defaultProjection,this.getWorkerSource(X,W.type,W.source).loadTile(_e,ue)}loadDEMTile(X,W,ue){const _e=this.enableTerrain?s.extend({buildQuadTree:this.terrain},W):W;this.getDEMWorkerSource(X,W.source).loadTile(_e,ue)}reloadTile(X,W,ue){const _e=this.enableTerrain?s.extend({enableTerrain:this.terrain},W):W;_e.projection=this.projections[X]||this.defaultProjection,this.getWorkerSource(X,W.type,W.source).reloadTile(_e,ue)}abortTile(X,W,ue){this.getWorkerSource(X,W.type,W.source).abortTile(W,ue)}removeTile(X,W,ue){this.getWorkerSource(X,W.type,W.source).removeTile(W,ue)}removeSource(X,W,ue){if(!this.workerSources[X]||!this.workerSources[X][W.type]||!this.workerSources[X][W.type][W.source])return;const _e=this.workerSources[X][W.type][W.source];delete this.workerSources[X][W.type][W.source],_e.removeSource!==void 0?_e.removeSource(W,ue):ue()}loadWorkerSource(X,W,ue){try{this.self.importScripts(W.url),ue()}catch(_e){ue(_e.toString())}}syncRTLPluginState(X,W,ue){try{s.plugin.setState(W);const _e=s.plugin.getPluginURL();if(s.plugin.isLoaded()&&!s.plugin.isParsed()&&_e!=null){this.self.importScripts(_e);const Se=s.plugin.isParsed();ue(Se?void 0:new Error(`RTL Text Plugin failed to import scripts from ${_e}`),Se)}}catch(_e){ue(_e.toString())}}getAvailableImages(X){let W=this.availableImages[X];return W||(W=[]),W}getLayerIndex(X){let W=this.layerIndexes[X];return W||(W=this.layerIndexes[X]=new pe),W}getWorkerSource(X,W,ue){if(this.workerSources[X]||(this.workerSources[X]={}),this.workerSources[X][W]||(this.workerSources[X][W]={}),!this.workerSources[X][W][ue]){const _e={send:(Se,Pe,Ce,se,Ue,ot)=>{this.actor.send(Se,Pe,Ce,X,Ue,ot)},scheduler:this.actor.scheduler};this.workerSources[X][W][ue]=new this.workerSourceTypes[W](_e,this.getLayerIndex(X),this.getAvailableImages(X),this.isSpriteLoaded[X])}return this.workerSources[X][W][ue]}getDEMWorkerSource(X,W){return this.demWorkerSources[X]||(this.demWorkerSources[X]={}),this.demWorkerSources[X][W]||(this.demWorkerSources[X][W]=new he),this.demWorkerSources[X][W]}enforceCacheSizeLimit(X,W){s.enforceCacheSizeLimit(W)}getWorkerPerformanceMetrics(X,W,ue){ue(void 0,void 0)}}return typeof WorkerGlobalScope<"u"&&typeof self<"u"&&self instanceof WorkerGlobalScope&&(self.worker=new gs(self)),gs}),O(["./shared"],function(s){function Z(h,n){if(Array.isArray(h)){if(!Array.isArray(n)||h.length!==n.length)return!1;for(let a=0;a<h.length;a++)if(!Z(h[a],n[a]))return!1;return!0}if(typeof h=="object"&&h!==null&&n!==null){if(typeof n!="object"||Object.keys(h).length!==Object.keys(n).length)return!1;for(const a in h)if(!Z(h[a],n[a]))return!1;return!0}return h===n}var oe=pe;function pe(h){return!function(n){return typeof window>"u"||typeof document>"u"?"not a browser":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?"JSON"in window&&"parse"in JSON&&"stringify"in JSON?function(){if(!("Worker"in window&&"Blob"in window&&"URL"in window))return!1;var p,_,b=new Blob([""],{type:"text/javascript"}),I=URL.createObjectURL(b);try{_=new Worker(I),p=!0}catch{p=!1}return _&&_.terminate(),URL.revokeObjectURL(I),p}()?"Uint8ClampedArray"in window?ArrayBuffer.isView?function(){var p=document.createElement("canvas");p.width=p.height=1;var _=p.getContext("2d");if(!_)return!1;var b=_.getImageData(0,0,1,1);return b&&b.width===p.width}()?(he[a=n&&n.failIfMajorPerformanceCaveat]===void 0&&(he[a]=function(p){var _,b=function(I){var M=document.createElement("canvas"),P=Object.create(pe.webGLContextAttributes);return P.failIfMajorPerformanceCaveat=I,M.getContext("webgl",P)||M.getContext("experimental-webgl",P)}(p);if(!b)return!1;try{_=b.createShader(b.VERTEX_SHADER)}catch{return!1}return!(!_||b.isContextLost())&&(b.shaderSource(_,"void main() {}"),b.compileShader(_),b.getShaderParameter(_,b.COMPILE_STATUS)===!0)}(a)),he[a]?document.documentMode?"insufficient ECMAScript 6 support":void 0:"insufficient WebGL support"):"insufficient Canvas/getImageData support":"insufficient ArrayBuffer support":"insufficient Uint8ClampedArray support":"insufficient worker support":"insufficient JSON support":"insufficient Object support":"insufficient Function support":"insufficent Array support";var a}(h)}var he={};function we(h,n,a){const p=s.window.document.createElement(h);return n!==void 0&&(p.className=n),a&&a.appendChild(p),p}function ye(h,n,a){const p=s.window.document.createElementNS("http://www.w3.org/2000/svg",h);for(const _ of Object.keys(n))p.setAttributeNS(null,_,n[_]);return a&&a.appendChild(p),p}pe.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};const Ie=s.window.document&&s.window.document.documentElement.style,Tt=Ie&&Ie.userSelect!==void 0?"userSelect":"WebkitUserSelect";let gt;function Mt(){Ie&&Tt&&(gt=Ie[Tt],Ie[Tt]="none")}function Le(){Ie&&Tt&&(Ie[Tt]=gt)}function Qe(h){h.preventDefault(),h.stopPropagation(),s.window.removeEventListener("click",Qe,!0)}function Et(){s.window.addEventListener("click",Qe,!0),s.window.setTimeout(()=>{s.window.removeEventListener("click",Qe,!0)},0)}function ut(h,n){const a=h.getBoundingClientRect();return It(h,a,n)}function yt(h,n){const a=h.getBoundingClientRect(),p=[];for(let _=0;_<n.length;_++)p.push(It(h,a,n[_]));return p}function _t(h){return s.window.InstallTrigger!==void 0&&h.button===2&&h.ctrlKey&&s.window.navigator.platform.toUpperCase().indexOf("MAC")>=0?0:h.button}function It(h,n,a){const p=h.offsetWidth===n.width?1:h.offsetWidth/n.width;return new s.Point((a.clientX-n.left)*p,(a.clientY-n.top)*p)}function Oe(h,n){var a=n[0],p=n[1],_=n[2],b=n[3],I=a*b-_*p;return I?(h[0]=b*(I=1/I),h[1]=-p*I,h[2]=-_*I,h[3]=a*I,h):null}function gi(h){const{userImage:n}=h;return!!(n&&n.render&&n.render())&&(h.data.replace(new Uint8Array(n.data.buffer)),!0)}class ti extends s.Evented{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new s.RGBAImage({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(n){if(this.loaded!==n&&(this.loaded=n,n)){for(const{ids:a,callback:p}of this.requestors)this._notify(a,p);this.requestors=[]}}hasImage(n){return!!this.getImage(n)}getImage(n){return this.images[n]}addImage(n,a){this._validate(n,a)&&(this.images[n]=a)}_validate(n,a){let p=!0;return this._validateStretch(a.stretchX,a.data&&a.data.width)||(this.fire(new s.ErrorEvent(new Error(`Image "${n}" has invalid "stretchX" value`))),p=!1),this._validateStretch(a.stretchY,a.data&&a.data.height)||(this.fire(new s.ErrorEvent(new Error(`Image "${n}" has invalid "stretchY" value`))),p=!1),this._validateContent(a.content,a)||(this.fire(new s.ErrorEvent(new Error(`Image "${n}" has invalid "content" value`))),p=!1),p}_validateStretch(n,a){if(!n)return!0;let p=0;for(const _ of n){if(_[0]<p||_[1]<_[0]||a<_[1])return!1;p=_[1]}return!0}_validateContent(n,a){return!(n&&(n.length!==4||n[0]<0||a.data.width<n[0]||n[1]<0||a.data.height<n[1]||n[2]<0||a.data.width<n[2]||n[3]<0||a.data.height<n[3]||n[2]<n[0]||n[3]<n[1]))}updateImage(n,a){a.version=this.images[n].version+1,this.images[n]=a,this.updatedImages[n]=!0}removeImage(n){const a=this.images[n];delete this.images[n],delete this.patterns[n],a.userImage&&a.userImage.onRemove&&a.userImage.onRemove()}listImages(){return Object.keys(this.images)}getImages(n,a){let p=!0;if(!this.isLoaded())for(const _ of n)this.images[_]||(p=!1);this.isLoaded()||p?this._notify(n,a):this.requestors.push({ids:n,callback:a})}_notify(n,a){const p={};for(const _ of n){this.images[_]||this.fire(new s.Event("styleimagemissing",{id:_}));const b=this.images[_];b?p[_]={data:b.data.clone(),pixelRatio:b.pixelRatio,sdf:b.sdf,version:b.version,stretchX:b.stretchX,stretchY:b.stretchY,content:b.content,hasRenderCallback:!!(b.userImage&&b.userImage.render)}:s.warnOnce(`Image "${_}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}a(null,p)}getPixelSize(){const{width:n,height:a}=this.atlasImage;return{width:n,height:a}}getPattern(n){const a=this.patterns[n],p=this.getImage(n);if(!p)return null;if(a&&a.position.version===p.version)return a.position;if(a)a.position.version=p.version;else{const _={w:p.data.width+2,h:p.data.height+2,x:0,y:0},b=new s.ImagePosition(_,p);this.patterns[n]={bin:_,position:b}}return this._updatePatternAtlas(),this.patterns[n].position}bind(n){const a=n.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new s.Texture(n,this.atlasImage,a.RGBA),this.atlasTexture&&this.atlasTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE)}_updatePatternAtlas(){const n=[];for(const b in this.patterns)n.push(this.patterns[b].bin);const{w:a,h:p}=s.potpack(n),_=this.atlasImage;_.resize({width:a||1,height:p||1});for(const b in this.patterns){const{bin:I}=this.patterns[b],M=I.x+1,P=I.y+1,N=this.images[b].data,z=N.width,j=N.height;s.RGBAImage.copy(N,_,{x:0,y:0},{x:M,y:P},{width:z,height:j}),s.RGBAImage.copy(N,_,{x:0,y:j-1},{x:M,y:P-1},{width:z,height:1}),s.RGBAImage.copy(N,_,{x:0,y:0},{x:M,y:P+j},{width:z,height:1}),s.RGBAImage.copy(N,_,{x:z-1,y:0},{x:M-1,y:P},{width:1,height:j}),s.RGBAImage.copy(N,_,{x:0,y:0},{x:M+z,y:P},{width:1,height:j})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(n){for(const a of n){if(this.callbackDispatchedThisFrame[a])continue;this.callbackDispatchedThisFrame[a]=!0;const p=this.images[a];gi(p)&&this.updateImage(a,p)}}}const At=new s.Properties({anchor:new s.DataConstantProperty(s.spec.light.anchor),position:new class{constructor(){this.specification=s.spec.light.position}possiblyEvaluate(h,n){return function([a,p,_]){const b=s.degToRad(p+90),I=s.degToRad(_);return{x:a*Math.cos(b)*Math.sin(I),y:a*Math.sin(b)*Math.sin(I),z:a*Math.cos(I),azimuthal:p,polar:_}}(h.expression.evaluate(n))}interpolate(h,n,a){return{x:s.number(h.x,n.x,a),y:s.number(h.y,n.y,a),z:s.number(h.z,n.z,a),azimuthal:s.number(h.azimuthal,n.azimuthal,a),polar:s.number(h.polar,n.polar,a)}}},color:new s.DataConstantProperty(s.spec.light.color),intensity:new s.DataConstantProperty(s.spec.light.intensity)});class Xt extends s.Evented{constructor(n){super(),this._transitionable=new s.Transitionable(At),this.setLight(n),this._transitioning=this._transitionable.untransitioned()}getLight(){return this._transitionable.serialize()}setLight(n,a={}){if(!this._validate(s.validateLight,n,a))for(const p in n){const _=n[p];s.endsWith(p,"-transition")?this._transitionable.setTransition(p.slice(0,-11),_):this._transitionable.setValue(p,_)}}updateTransitions(n){this._transitioning=this._transitionable.transitioned(n,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(n){this.properties=this._transitioning.possiblyEvaluate(n)}_validate(n,a,p){return(!p||p.validate!==!1)&&s.emitValidationErrors(this,n.call(s.validateStyle,s.extend({value:a,style:{glyphs:!0,sprite:!0},styleSpec:s.spec})))}}const bt=new s.Properties({source:new s.DataConstantProperty(s.spec.terrain.source),exaggeration:new s.DataConstantProperty(s.spec.terrain.exaggeration)});let Jt=class extends s.Evented{constructor(h,n){super(),this._transitionable=new s.Transitionable(bt),this.set(h),this._transitioning=this._transitionable.untransitioned(),this.drapeRenderMode=n}get(){return this._transitionable.serialize()}set(h){for(const n in h){const a=h[n];s.endsWith(n,"-transition")?this._transitionable.setTransition(n.slice(0,-11),a):this._transitionable.setValue(n,a)}}updateTransitions(h){this._transitioning=this._transitionable.transitioned(h,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(h){this.properties=this._transitioning.possiblyEvaluate(h)}};function Bt(h,n,a,p){const _=s.smoothstep(45,65,a),[b,I]=Ri(h,p),M=s.length(n);let P=1-Math.min(1,Math.exp((M-b)/(I-b)*-6));return P*=P*P,P=Math.min(1,1.00747*P),P*_*h.alpha}function Ri(h,n){const a=.5/Math.tan(.5*n);return[h.range[0]+a,h.range[1]+a]}const Rt=new s.Properties({range:new s.DataConstantProperty(s.spec.fog.range),color:new s.DataConstantProperty(s.spec.fog.color),"high-color":new s.DataConstantProperty(s.spec.fog["high-color"]),"space-color":new s.DataConstantProperty(s.spec.fog["space-color"]),"horizon-blend":new s.DataConstantProperty(s.spec.fog["horizon-blend"]),"star-intensity":new s.DataConstantProperty(s.spec.fog["star-intensity"])});class pi extends s.Evented{constructor(n,a){super(),this._transitionable=new s.Transitionable(Rt),this.set(n),this._transitioning=this._transitionable.untransitioned(),this._transform=a}get state(){const n=this._transform,a=n.projection.name==="globe",p=s.globeToMercatorTransition(n.zoom),_=this.properties.get("range"),b=[.5,3];return{range:a?[s.number(b[0],_[0],p),s.number(b[1],_[1],p)]:_,horizonBlend:this.properties.get("horizon-blend"),alpha:this.properties.get("color").a}}get(){return this._transitionable.serialize()}set(n,a={}){if(!this._validate(s.validateFog,n,a)){for(const p of Object.keys(s.spec.fog))n&&n[p]===void 0&&(n[p]=s.spec.fog[p].default);for(const p in n){const _=n[p];s.endsWith(p,"-transition")?this._transitionable.setTransition(p.slice(0,-11),_):this._transitionable.setValue(p,_)}}}getOpacity(n){if(!this._transform.projection.supportsFog)return 0;const a=this.properties&&this.properties.get("color")||1;return(this._transform.projection.name==="globe"?1:s.smoothstep(45,65,n))*a.a}getOpacityAtLatLng(n,a){return this._transform.projection.supportsFog?function(p,_,b){const I=s.MercatorCoordinate.fromLngLat(_),M=b.elevation?b.elevation.getAtPointOrZero(I):0,P=[I.x,I.y,M];return s.transformMat4(P,P,b.mercatorFogMatrix),Bt(p,P,b.pitch,b._fov)}(this.state,n,a):0}getFovAdjustedRange(n){return this._transform.projection.supportsFog?Ri(this.state,n):[0,1]}updateTransitions(n){this._transitioning=this._transitionable.transitioned(n,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(n){this.properties=this._transitioning.possiblyEvaluate(n)}_validate(n,a,p){return(!p||p.validate!==!1)&&s.emitValidationErrors(this,n.call(s.validateStyle,s.extend({value:a,style:{glyphs:!0,sprite:!0},styleSpec:s.spec})))}}class St{constructor(n,a){this.workerPool=n,this.actors=[],this.currentActor=0,this.id=s.uniqueId();const p=this.workerPool.acquire(this.id);for(let _=0;_<p.length;_++){const b=new St.Actor(p[_],a,this.id);b.name=`Worker ${_}`,this.actors.push(b)}this.ready=!1,this.broadcast("checkIfReady",null,()=>{this.ready=!0})}broadcast(n,a,p){s.asyncAll(this.actors,(_,b)=>{_.send(n,a,b)},p=p||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach(n=>{n.remove()}),this.actors=[],this.workerPool.release(this.id)}}function wi(h,n,a){return n*(s.EXTENT/(h.tileSize*Math.pow(2,a-h.tileID.overscaledZ)))}St.Actor=s.Actor;class Oi{constructor(n,a,p,_){this.screenBounds=n,this.cameraPoint=a,this._screenRaycastCache={},this._cameraRaycastCache={},this.isAboveHorizon=p,this.screenGeometry=this.bufferedScreenGeometry(0),this.screenGeometryMercator=this._bufferedScreenMercator(0,_)}static createFromScreenPoints(n,a){let p,_;if(n instanceof s.Point||typeof n[0]=="number"){const b=s.Point.convert(n);p=[b],_=a.isPointAboveHorizon(b)}else{const b=s.Point.convert(n[0]),I=s.Point.convert(n[1]);p=[b,I],_=s.polygonizeBounds(b,I).every(M=>a.isPointAboveHorizon(M))}return new Oi(p,a.getCameraPoint(),_,a)}isPointQuery(){return this.screenBounds.length===1}bufferedScreenGeometry(n){return s.polygonizeBounds(this.screenBounds[0],this.screenBounds.length===1?this.screenBounds[0]:this.screenBounds[1],n)}bufferedCameraGeometry(n){const a=this.screenBounds[0],p=this.screenBounds.length===1?this.screenBounds[0].add(new s.Point(1,1)):this.screenBounds[1],_=s.polygonizeBounds(a,p,0,!1);return this.cameraPoint.y>p.y&&(this.cameraPoint.x>a.x&&this.cameraPoint.x<p.x?_.splice(3,0,this.cameraPoint):this.cameraPoint.x>=p.x?_[2]=this.cameraPoint:this.cameraPoint.x<=a.x&&(_[3]=this.cameraPoint)),s.bufferConvexPolygon(_,n)}bufferedCameraGeometryGlobe(n){const a=this.screenBounds[0],p=this.screenBounds.length===1?this.screenBounds[0].add(new s.Point(1,1)):this.screenBounds[1],_=s.polygonizeBounds(a,p,n),b=this.cameraPoint.clone();switch(3*((b.y>a.y)+(b.y>p.y))+((b.x>a.x)+(b.x>p.x))){case 0:_[0]=b,_[4]=b.clone();break;case 1:_.splice(1,0,b);break;case 2:_[1]=b;break;case 3:_.splice(4,0,b);break;case 5:_.splice(2,0,b);break;case 6:_[3]=b;break;case 7:_.splice(3,0,b);break;case 8:_[2]=b}return _}containsTile(n,a,p,_=0){const b=n.queryPadding/a._pixelsPerMercatorPixel+1,I=p?this._bufferedCameraMercator(b,a):this._bufferedScreenMercator(b,a);let M=n.tileID.wrap+(I.unwrapped?_:0);const P=I.polygon.map(ie=>s.getTilePoint(n.tileTransform,ie,M));if(!s.polygonIntersectsBox(P,0,0,s.EXTENT,s.EXTENT))return;M=n.tileID.wrap+(this.screenGeometryMercator.unwrapped?_:0);const N=this.screenGeometryMercator.polygon.map(ie=>s.getTileVec3(n.tileTransform,ie,M)),z=N.map(ie=>new s.Point(ie[0],ie[1])),j=a.getFreeCameraOptions().position||new s.MercatorCoordinate(0,0,0),Y=s.getTileVec3(n.tileTransform,j,M),J=N.map(ie=>{const V=s.sub(ie,ie,Y);return s.normalize(V,V),new s.Ray(Y,V)}),te=wi(n,1,a.zoom)*a._pixelsPerMercatorPixel;return{queryGeometry:this,tilespaceGeometry:z,tilespaceRays:J,bufferedTilespaceGeometry:P,bufferedTilespaceBounds:(ee=s.getBounds(P),ee.min.x=s.clamp(ee.min.x,0,s.EXTENT),ee.min.y=s.clamp(ee.min.y,0,s.EXTENT),ee.max.x=s.clamp(ee.max.x,0,s.EXTENT),ee.max.y=s.clamp(ee.max.y,0,s.EXTENT),ee),tile:n,tileID:n.tileID,pixelToTileUnitsFactor:te};var ee}_bufferedScreenMercator(n,a){const p=Ni(n);if(this._screenRaycastCache[p])return this._screenRaycastCache[p];{let _;return _=a.projection.name==="globe"?this._projectAndResample(this.bufferedScreenGeometry(n),a):{polygon:this.bufferedScreenGeometry(n).map(b=>a.pointCoordinate3D(b)),unwrapped:!0},this._screenRaycastCache[p]=_,_}}_bufferedCameraMercator(n,a){const p=Ni(n);if(this._cameraRaycastCache[p])return this._cameraRaycastCache[p];{let _;return _=a.projection.name==="globe"?this._projectAndResample(this.bufferedCameraGeometryGlobe(n),a):{polygon:this.bufferedCameraGeometry(n).map(b=>a.pointCoordinate3D(b)),unwrapped:!0},this._cameraRaycastCache[p]=_,_}}_projectAndResample(n,a){const p=function(b,I){const M=s.multiply([],I.pixelMatrix,I.globeMatrix),P=[0,-s.GLOBE_RADIUS,0,1],N=[0,s.GLOBE_RADIUS,0,1],z=[0,0,0,1];s.transformMat4$1(P,P,M),s.transformMat4$1(N,N,M),s.transformMat4$1(z,z,M);const j=new s.Point(P[0]/P[3],P[1]/P[3]),Y=new s.Point(N[0]/N[3],N[1]/N[3]),J=s.polygonContainsPoint(b,j)&&P[3]<z[3],te=s.polygonContainsPoint(b,Y)&&N[3]<z[3];if(!J&&!te)return null;const ee=function(be,Ae,ke){for(let Ne=1;Ne<be.length;Ne++){const tt=Dt(Ae.pointCoordinate3D(be[Ne-1]).x),Re=Dt(Ae.pointCoordinate3D(be[Ne]).x);if(ke<0){if(tt<Re)return{idx:Ne,t:-tt/(Re-1-tt)}}else if(Re<tt)return{idx:Ne,t:(1-tt)/(Re+1-tt)}}return null}(b,I,J?-1:1);if(!ee)return null;const{idx:ie,t:V}=ee;let K=ie>1?Wt(b.slice(0,ie),I):[],ae=ie<b.length?Wt(b.slice(ie),I):[];K=K.map(be=>new s.Point(Dt(be.x),be.y)),ae=ae.map(be=>new s.Point(Dt(be.x),be.y));const le=[...K];le.length===0&&le.push(ae[ae.length-1]);const xe=s.number(le[le.length-1].y,(ae.length===0?K[0]:ae[0]).y,V);let Te;return Te=J?[new s.Point(0,xe),new s.Point(0,0),new s.Point(1,0),new s.Point(1,xe)]:[new s.Point(1,xe),new s.Point(1,1),new s.Point(0,1),new s.Point(0,xe)],le.push(...Te),ae.length===0?le.push(K[0]):le.push(...ae),{polygon:le.map(be=>new s.MercatorCoordinate(be.x,be.y)),unwrapped:!1}}(n,a);if(p)return p;const _=function(b,I){let M=!1,P=-1/0,N=0;for(let j=0;j<b.length-1;j++)b[j].x>P&&(P=b[j].x,N=j);for(let j=0;j<b.length-1;j++){const Y=(N+j)%(b.length-1),J=b[Y],te=b[Y+1];Math.abs(J.x-te.x)>.5&&(J.x<te.x?(J.x+=1,Y===0&&(b[b.length-1].x+=1)):(te.x+=1,Y+1===b.length-1&&(b[0].x+=1)),M=!0)}const z=s.mercatorXfromLng(I.center.lng);return M&&z<Math.abs(z-1)&&b.forEach(j=>{j.x-=1}),{polygon:b,unwrapped:M}}(Wt(n,a).map(b=>new s.Point(Dt(b.x),b.y)),a);return{polygon:_.polygon.map(b=>new s.MercatorCoordinate(b.x,b.y)),unwrapped:_.unwrapped}}}function Wt(h,n){return s.resample(h,a=>{const p=n.pointCoordinate3D(a);a.x=p.x,a.y=p.y},.00390625)}function Dt(h){return h<0?1+h%1:h%1}function Ni(h){return 100*h|0}function Dn(h,n,a,p,_){const b=function(I,M){if(I)return _(I);if(M){h.url&&M.tiles&&h.tiles&&delete h.tiles;const P=s.pick(s.extend(M,h),["tiles","minzoom","maxzoom","attribution","mapbox_logo","bounds","scheme","tileSize","encoding"]);M.vector_layers&&(P.vectorLayers=M.vector_layers,P.vectorLayerIds=P.vectorLayers.map(N=>N.id)),P.tiles=n.canonicalizeTileset(P,h.url),_(null,P)}};return h.url?s.getJSON(n.transformRequest(n.normalizeSourceURL(h.url,null,a,p),s.ResourceType.Source),b):s.exported.frame(()=>b(null,h))}class vn{constructor(n,a,p){this.bounds=s.LngLatBounds.convert(this.validateBounds(n)),this.minzoom=a||0,this.maxzoom=p||24}validateBounds(n){return Array.isArray(n)&&n.length===4?[Math.max(-180,n[0]),Math.max(-90,n[1]),Math.min(180,n[2]),Math.min(90,n[3])]:[-180,-90,180,90]}contains(n){const a=Math.pow(2,n.z),p=Math.floor(s.mercatorXfromLng(this.bounds.getWest())*a),_=Math.floor(s.mercatorYfromLat(this.bounds.getNorth())*a),b=Math.ceil(s.mercatorXfromLng(this.bounds.getEast())*a),I=Math.ceil(s.mercatorYfromLat(this.bounds.getSouth())*a);return n.x>=p&&n.x<b&&n.y>=_&&n.y<I}}class Fe{constructor(n,a,p){this.context=n;const _=n.gl;this.buffer=_.createBuffer(),this.dynamicDraw=!!p,this.context.unbindVAO(),n.bindElementBuffer.set(this.buffer),_.bufferData(_.ELEMENT_ARRAY_BUFFER,a.arrayBuffer,this.dynamicDraw?_.DYNAMIC_DRAW:_.STATIC_DRAW),this.dynamicDraw||a.destroy()}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(n){const a=this.context.gl;this.context.unbindVAO(),this.bind(),a.bufferSubData(a.ELEMENT_ARRAY_BUFFER,0,n.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const no={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Ci{constructor(n,a,p,_){this.length=a.length,this.attributes=p,this.itemSize=a.bytesPerElement,this.dynamicDraw=_,this.context=n;const b=n.gl;this.buffer=b.createBuffer(),n.bindVertexBuffer.set(this.buffer),b.bufferData(b.ARRAY_BUFFER,a.arrayBuffer,this.dynamicDraw?b.DYNAMIC_DRAW:b.STATIC_DRAW),this.dynamicDraw||a.destroy()}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(n){const a=this.context.gl;this.bind(),a.bufferSubData(a.ARRAY_BUFFER,0,n.arrayBuffer)}enableAttributes(n,a){for(let p=0;p<this.attributes.length;p++){const _=a.attributes[this.attributes[p].name];_!==void 0&&n.enableVertexAttribArray(_)}}setVertexAttribPointers(n,a,p){for(let _=0;_<this.attributes.length;_++){const b=this.attributes[_],I=a.attributes[b.name];I!==void 0&&n.vertexAttribPointer(I,b.components,n[no[b.type]],!1,this.itemSize,b.offset+this.itemSize*(p||0))}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}class ft{constructor(n){this.gl=n.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1}get(){return this.current}set(n){}getDefault(){return this.default}setDefault(){this.set(this.default)}}class me extends ft{getDefault(){return s.Color.transparent}set(n){const a=this.current;(n.r!==a.r||n.g!==a.g||n.b!==a.b||n.a!==a.a||this.dirty)&&(this.gl.clearColor(n.r,n.g,n.b,n.a),this.current=n,this.dirty=!1)}}class rn extends ft{getDefault(){return 1}set(n){(n!==this.current||this.dirty)&&(this.gl.clearDepth(n),this.current=n,this.dirty=!1)}}class $r extends ft{getDefault(){return 0}set(n){(n!==this.current||this.dirty)&&(this.gl.clearStencil(n),this.current=n,this.dirty=!1)}}class Ti extends ft{getDefault(){return[!0,!0,!0,!0]}set(n){const a=this.current;(n[0]!==a[0]||n[1]!==a[1]||n[2]!==a[2]||n[3]!==a[3]||this.dirty)&&(this.gl.colorMask(n[0],n[1],n[2],n[3]),this.current=n,this.dirty=!1)}}class pr extends ft{getDefault(){return!0}set(n){(n!==this.current||this.dirty)&&(this.gl.depthMask(n),this.current=n,this.dirty=!1)}}class ps extends ft{getDefault(){return 255}set(n){(n!==this.current||this.dirty)&&(this.gl.stencilMask(n),this.current=n,this.dirty=!1)}}class ro extends ft{getDefault(){return{func:this.gl.ALWAYS,ref:0,mask:255}}set(n){const a=this.current;(n.func!==a.func||n.ref!==a.ref||n.mask!==a.mask||this.dirty)&&(this.gl.stencilFunc(n.func,n.ref,n.mask),this.current=n,this.dirty=!1)}}class ct extends ft{getDefault(){const n=this.gl;return[n.KEEP,n.KEEP,n.KEEP]}set(n){const a=this.current;(n[0]!==a[0]||n[1]!==a[1]||n[2]!==a[2]||this.dirty)&&(this.gl.stencilOp(n[0],n[1],n[2]),this.current=n,this.dirty=!1)}}class ds extends ft{getDefault(){return!1}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;n?a.enable(a.STENCIL_TEST):a.disable(a.STENCIL_TEST),this.current=n,this.dirty=!1}}class Do extends ft{getDefault(){return[0,1]}set(n){const a=this.current;(n[0]!==a[0]||n[1]!==a[1]||this.dirty)&&(this.gl.depthRange(n[0],n[1]),this.current=n,this.dirty=!1)}}class Dr extends ft{getDefault(){return!1}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;n?a.enable(a.DEPTH_TEST):a.disable(a.DEPTH_TEST),this.current=n,this.dirty=!1}}class xo extends ft{getDefault(){return this.gl.LESS}set(n){(n!==this.current||this.dirty)&&(this.gl.depthFunc(n),this.current=n,this.dirty=!1)}}class ii extends ft{getDefault(){return!1}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;n?a.enable(a.BLEND):a.disable(a.BLEND),this.current=n,this.dirty=!1}}class bo extends ft{getDefault(){const n=this.gl;return[n.ONE,n.ZERO]}set(n){const a=this.current;(n[0]!==a[0]||n[1]!==a[1]||this.dirty)&&(this.gl.blendFunc(n[0],n[1]),this.current=n,this.dirty=!1)}}class Oo extends ft{getDefault(){return s.Color.transparent}set(n){const a=this.current;(n.r!==a.r||n.g!==a.g||n.b!==a.b||n.a!==a.a||this.dirty)&&(this.gl.blendColor(n.r,n.g,n.b,n.a),this.current=n,this.dirty=!1)}}class tr extends ft{getDefault(){return this.gl.FUNC_ADD}set(n){(n!==this.current||this.dirty)&&(this.gl.blendEquation(n),this.current=n,this.dirty=!1)}}class $t extends ft{getDefault(){return!1}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;n?a.enable(a.CULL_FACE):a.disable(a.CULL_FACE),this.current=n,this.dirty=!1}}class zo extends ft{getDefault(){return this.gl.BACK}set(n){(n!==this.current||this.dirty)&&(this.gl.cullFace(n),this.current=n,this.dirty=!1)}}class _i extends ft{getDefault(){return this.gl.CCW}set(n){(n!==this.current||this.dirty)&&(this.gl.frontFace(n),this.current=n,this.dirty=!1)}}let Yt,zs=class extends ft{getDefault(){return null}set(h){(h!==this.current||this.dirty)&&(this.gl.useProgram(h),this.current=h,this.dirty=!1)}};class Wn extends ft{getDefault(){return this.gl.TEXTURE0}set(n){(n!==this.current||this.dirty)&&(this.gl.activeTexture(n),this.current=n,this.dirty=!1)}}class wo extends ft{getDefault(){const n=this.gl;return[0,0,n.drawingBufferWidth,n.drawingBufferHeight]}set(n){const a=this.current;(n[0]!==a[0]||n[1]!==a[1]||n[2]!==a[2]||n[3]!==a[3]||this.dirty)&&(this.gl.viewport(n[0],n[1],n[2],n[3]),this.current=n,this.dirty=!1)}}class qt extends ft{getDefault(){return null}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;a.bindFramebuffer(a.FRAMEBUFFER,n),this.current=n,this.dirty=!1}}class No extends ft{getDefault(){return null}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;a.bindRenderbuffer(a.RENDERBUFFER,n),this.current=n,this.dirty=!1}}class ms extends ft{getDefault(){return null}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;a.bindTexture(a.TEXTURE_2D,n),this.current=n,this.dirty=!1}}class gs extends ft{getDefault(){return null}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;a.bindBuffer(a.ARRAY_BUFFER,n),this.current=n,this.dirty=!1}}class ce extends ft{getDefault(){return null}set(n){const a=this.gl;a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,n),this.current=n,this.dirty=!1}}class X extends ft{constructor(n){super(n),this.vao=n.extVertexArrayObject}getDefault(){return null}set(n){this.vao&&(n!==this.current||this.dirty)&&(this.vao.bindVertexArrayOES(n),this.current=n,this.dirty=!1)}}class W extends ft{getDefault(){return 4}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;a.pixelStorei(a.UNPACK_ALIGNMENT,n),this.current=n,this.dirty=!1}}class ue extends ft{getDefault(){return!1}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n),this.current=n,this.dirty=!1}}class _e extends ft{getDefault(){return!1}set(n){if(n===this.current&&!this.dirty)return;const a=this.gl;a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,n),this.current=n,this.dirty=!1}}class Se extends ft{constructor(n,a){super(n),this.context=n,this.parent=a}getDefault(){return null}}class Pe extends Se{setDirty(){this.dirty=!0}set(n){if(n===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const a=this.gl;a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,n,0),this.current=n,this.dirty=!1}}class Ce extends Se{attachment(){return this.gl.DEPTH_ATTACHMENT}set(n){if(n===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const a=this.gl;a.framebufferRenderbuffer(a.FRAMEBUFFER,this.attachment(),a.RENDERBUFFER,n),this.current=n,this.dirty=!1}}class se extends Ce{attachment(){return this.gl.DEPTH_STENCIL_ATTACHMENT}}class Ue{constructor(n,a,p,_){this.context=n,this.width=a,this.height=p;const b=this.framebuffer=n.gl.createFramebuffer();this.colorAttachment=new Pe(n,b),_&&(this.depthAttachment=new Ce(n,b))}destroy(){const n=this.context.gl,a=this.colorAttachment.get();if(a&&n.deleteTexture(a),this.depthAttachment){const p=this.depthAttachment.get();p&&n.deleteRenderbuffer(p)}n.deleteFramebuffer(this.framebuffer)}}class ot{constructor(n,a=!1){if(this.gl=n,this.isWebGL2=a,this.extVertexArrayObject=this.gl.getExtension("OES_vertex_array_object"),a){const p=n;this.extVertexArrayObject={createVertexArrayOES:p.createVertexArray.bind(n),deleteVertexArrayOES:p.deleteVertexArray.bind(n),bindVertexArrayOES:p.bindVertexArray.bind(n)}}this.clearColor=new me(this),this.clearDepth=new rn(this),this.clearStencil=new $r(this),this.colorMask=new Ti(this),this.depthMask=new pr(this),this.stencilMask=new ps(this),this.stencilFunc=new ro(this),this.stencilOp=new ct(this),this.stencilTest=new ds(this),this.depthRange=new Do(this),this.depthTest=new Dr(this),this.depthFunc=new xo(this),this.blend=new ii(this),this.blendFunc=new bo(this),this.blendColor=new Oo(this),this.blendEquation=new tr(this),this.cullFace=new $t(this),this.cullFaceSide=new zo(this),this.frontFace=new _i(this),this.program=new zs(this),this.activeTexture=new Wn(this),this.viewport=new wo(this),this.bindFramebuffer=new qt(this),this.bindRenderbuffer=new No(this),this.bindTexture=new ms(this),this.bindVertexBuffer=new gs(this),this.bindElementBuffer=new ce(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new X(this),this.pixelStoreUnpack=new W(this),this.pixelStoreUnpackPremultiplyAlpha=new ue(this),this.pixelStoreUnpackFlipY=new _e(this),this.extTextureFilterAnisotropic=n.getExtension("EXT_texture_filter_anisotropic")||n.getExtension("MOZ_EXT_texture_filter_anisotropic")||n.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=n.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.extTextureFilterAnisotropicForceOff=!1,this.extStandardDerivativesForceOff=!1,this.extDebugRendererInfo=n.getExtension("WEBGL_debug_renderer_info"),this.extDebugRendererInfo&&(this.renderer=n.getParameter(this.extDebugRendererInfo.UNMASKED_RENDERER_WEBGL),this.vendor=n.getParameter(this.extDebugRendererInfo.UNMASKED_VENDOR_WEBGL)),a||(this.extTextureHalfFloat=n.getExtension("OES_texture_half_float")),(a||this.extTextureHalfFloat&&n.getExtension("OES_texture_half_float_linear"))&&(this.extRenderToTextureHalfFloat=n.getExtension("EXT_color_buffer_half_float")),this.extStandardDerivatives=a||n.getExtension("OES_standard_derivatives"),this.extTimerQuery=n.getExtension("EXT_disjoint_timer_query"),this.maxTextureSize=n.getParameter(n.MAX_TEXTURE_SIZE)}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault()}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.extVertexArrayObject&&(this.bindVertexArrayOES.dirty=!0),this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0}createIndexBuffer(n,a){return new Fe(this,n,a)}createVertexBuffer(n,a,p){return new Ci(this,n,a,p)}createRenderbuffer(n,a,p){const _=this.gl,b=_.createRenderbuffer();return this.bindRenderbuffer.set(b),_.renderbufferStorage(_.RENDERBUFFER,n,a,p),this.bindRenderbuffer.set(null),b}createFramebuffer(n,a,p){return new Ue(this,n,a,p)}clear({color:n,depth:a,stencil:p}){const _=this.gl;let b=0;n&&(b|=_.COLOR_BUFFER_BIT,this.clearColor.set(n),this.colorMask.set([!0,!0,!0,!0])),a!==void 0&&(b|=_.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(a),this.depthMask.set(!0)),p!==void 0&&(b|=_.STENCIL_BUFFER_BIT,this.clearStencil.set(p),this.stencilMask.set(255)),_.clear(b)}setCullFace(n){n.enable===!1?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(n.mode),this.frontFace.set(n.frontFace))}setDepthMode(n){n.func!==this.gl.ALWAYS||n.mask?(this.depthTest.set(!0),this.depthFunc.set(n.func),this.depthMask.set(n.mask),this.depthRange.set(n.range)):this.depthTest.set(!1)}setStencilMode(n){n.test.func!==this.gl.ALWAYS||n.mask?(this.stencilTest.set(!0),this.stencilMask.set(n.mask),this.stencilOp.set([n.fail,n.depthFail,n.pass]),this.stencilFunc.set({func:n.test.func,ref:n.ref,mask:n.test.mask})):this.stencilTest.set(!1)}setColorMode(n){Z(n.blendFunction,s.ColorMode.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(n.blendFunction),this.blendColor.set(n.blendColor)),this.colorMask.set(n.mask)}unbindVAO(){this.extVertexArrayObject&&this.bindVertexArrayOES.set(null)}}class ht extends s.Evented{constructor(n,a,p,_){if(super(),this.id=n,this.dispatcher=p,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,s.extend(this,s.pick(a,["url","scheme","tileSize","promoteId"])),this._options=s.extend({type:"vector"},a),this._collectResourceTiming=a.collectResourceTiming,this.tileSize!==512)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(_),this._tileWorkers={},this._deduped=new s.DedupedRequest}load(n){this._loaded=!1,this.fire(new s.Event("dataloading",{dataType:"source"}));const a=Array.isArray(this.map._language)?this.map._language.join():this.map._language,p=this.map._worldview;this._tileJSONRequest=Dn(this._options,this.map._requestManager,a,p,(_,b)=>{this._tileJSONRequest=null,this._loaded=!0,_?(a&&console.warn(`Ensure that your requested language string is a valid BCP-47 code or list of codes. Found: ${a}`),p&&p.length!==2&&console.warn(`Requested worldview strings must be a valid ISO alpha-2 code. Found: ${p}`),this.fire(new s.ErrorEvent(_))):b&&(s.extend(this,b),b.bounds&&(this.tileBounds=new vn(b.bounds,this.minzoom,this.maxzoom)),s.postTurnstileEvent(b.tiles,this.map._requestManager._customAccessToken),this.fire(new s.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new s.Event("data",{dataType:"source",sourceDataType:"content"}))),n&&n(_)})}loaded(){return this._loaded}hasTile(n){return!this.tileBounds||this.tileBounds.contains(n.canonical)}onAdd(n){this.map=n,this.load()}reload(){this.cancelTileJSONRequest(),this.load(()=>this.map.style._clearSource(this.id))}setTiles(n){return this._options.tiles=n,this.reload(),this}setUrl(n){return this.url=n,this._options.url=n,this.reload(),this}onRemove(){this.cancelTileJSONRequest()}serialize(){return s.extend({},this._options)}loadTile(n,a){const p=this.map._requestManager.normalizeTileURL(n.tileID.canonical.url(this.tiles,this.scheme)),_={request:this.map._requestManager.transformRequest(p,s.ResourceType.Tile),data:void 0,uid:n.uid,tileID:n.tileID,tileZoom:n.tileZoom,zoom:n.tileID.overscaledZ,tileSize:this.tileSize*n.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:s.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,isSymbolTile:n.isSymbolTile};if(_.request.collectResourceTiming=this._collectResourceTiming,n.actor&&n.state!=="expired")n.state==="loading"?n.reloadCallback=a:n.request=n.actor.send("reloadTile",_,b.bind(this));else if(n.actor=this._tileWorkers[p]=this._tileWorkers[p]||this.dispatcher.getActor(),this.dispatcher.ready)n.request=n.actor.send("loadTile",_,b.bind(this),void 0,!0);else{const I=s.loadVectorTile.call({deduped:this._deduped},_,(M,P)=>{M||!P?b.call(this,M):(_.data={cacheControl:P.cacheControl,expires:P.expires,rawData:P.rawData.slice(0)},n.actor&&n.actor.send("loadTile",_,b.bind(this),void 0,!0))},!0);n.request={cancel:I}}function b(I,M){return delete n.request,n.aborted?a(null):I&&I.status!==404?a(I):(M&&M.resourceTiming&&(n.resourceTiming=M.resourceTiming),this.map._refreshExpiredTiles&&M&&n.setExpiryData(M),n.loadVectorData(M,this.map.painter),s.cacheEntryPossiblyAdded(this.dispatcher),a(null),void(n.reloadCallback&&(this.loadTile(n,n.reloadCallback),n.reloadCallback=null)))}}abortTile(n){n.request&&(n.request.cancel(),delete n.request),n.actor&&n.actor.send("abortTile",{uid:n.uid,type:this.type,source:this.id})}unloadTile(n){n.unloadVectorData(),n.actor&&n.actor.send("removeTile",{uid:n.uid,type:this.type,source:this.id})}hasTransition(){return!1}afterUpdate(){this._tileWorkers={}}cancelTileJSONRequest(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}}class nt extends s.Evented{constructor(n,a,p,_){super(),this.id=n,this.dispatcher=p,this.setEventedParent(_),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=s.extend({type:"raster"},a),s.extend(this,s.pick(a,["url","scheme","tileSize"]))}load(n){this._loaded=!1,this.fire(new s.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=Dn(this._options,this.map._requestManager,null,null,(a,p)=>{this._tileJSONRequest=null,this._loaded=!0,a?this.fire(new s.ErrorEvent(a)):p&&(s.extend(this,p),p.bounds&&(this.tileBounds=new vn(p.bounds,this.minzoom,this.maxzoom)),s.postTurnstileEvent(p.tiles),this.fire(new s.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new s.Event("data",{dataType:"source",sourceDataType:"content"}))),n&&n(a)})}loaded(){return this._loaded}onAdd(n){this.map=n,this.load()}reload(){this.cancelTileJSONRequest(),this.load(()=>this.map.style._clearSource(this.id))}setTiles(n){return this._options.tiles=n,this.reload(),this}setUrl(n){return this.url=n,this._options.url=n,this.reload(),this}onRemove(){this.cancelTileJSONRequest()}serialize(){return s.extend({},this._options)}hasTile(n){return!this.tileBounds||this.tileBounds.contains(n.canonical)}loadTile(n,a){const p=s.exported.devicePixelRatio>=2,_=this.map._requestManager.normalizeTileURL(n.tileID.canonical.url(this.tiles,this.scheme),p,this.tileSize);n.request=s.getImage(this.map._requestManager.transformRequest(_,s.ResourceType.Tile),(b,I,M,P)=>(delete n.request,n.aborted?(n.state="unloaded",a(null)):b?(n.state="errored",a(b)):I?(this.map._refreshExpiredTiles&&n.setExpiryData({cacheControl:M,expires:P}),n.setTexture(I,this.map.painter),n.state="loaded",s.cacheEntryPossiblyAdded(this.dispatcher),void a(null)):a(null)))}static loadTileData(n,a,p){n.setTexture(a,p)}static unloadTileData(n,a){n.texture&&a.saveTileTexture(n.texture)}abortTile(n,a){n.request&&(n.request.cancel(),delete n.request),a()}unloadTile(n,a){n.texture&&this.map.painter.saveTileTexture(n.texture),a()}hasTransition(){return!1}cancelTileJSONRequest(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}}function Ht(h,n,a,p,_,b,I,M){const P=[h,a,_,n,p,b,1,1,1],N=[I,M,1],z=s.adjoint([],P),[j,Y,J]=s.transformMat3(N,N,s.transpose(z,z));return s.multiply$1(P,[j,0,0,0,Y,0,0,0,J],P)}class li extends s.Evented{constructor(n,a,p,_){super(),this.id=n,this.dispatcher=p,this.coordinates=a.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(_),this.options=a,this._dirty=!1}load(n,a){this._loaded=a||!1,this.fire(new s.Event("dataloading",{dataType:"source"})),this.url=this.options.url,this._imageRequest=s.getImage(this.map._requestManager.transformRequest(this.url,s.ResourceType.Image),(p,_)=>{if(this._imageRequest=null,this._loaded=!0,p)this.fire(new s.ErrorEvent(p));else if(_){const{HTMLImageElement:b}=s.window;this.image=_ instanceof b?s.exported.getImageData(_):_,this._dirty=!0,this.width=this.image.width,this.height=this.image.height,n&&(this.coordinates=n),this._finishLoading()}})}loaded(){return this._loaded}updateImage(n){return this.image&&n.url?(this._imageRequest&&n.url!==this.options.url&&(this._imageRequest.cancel(),this._imageRequest=null),this.options.url=n.url,this.load(n.coordinates,this._loaded),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new s.Event("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(n){this.map=n,this.load()}onRemove(){this._imageRequest&&(this._imageRequest.cancel(),this._imageRequest=null),this.texture&&this.texture.destroy()}setCoordinates(n){this.coordinates=n,this._boundsArray=void 0;const a=n.map(s.MercatorCoordinate.fromLngLat);return this.tileID=function(p){let _=1/0,b=1/0,I=-1/0,M=-1/0;for(const j of p)_=Math.min(_,j.x),b=Math.min(b,j.y),I=Math.max(I,j.x),M=Math.max(M,j.y);const P=Math.max(I-_,M-b),N=Math.max(0,Math.floor(-Math.log(P)/Math.LN2)),z=Math.pow(2,N);return new s.CanonicalTileID(N,Math.floor((_+I)/2*z),Math.floor((b+M)/2*z))}(a),this.minzoom=this.maxzoom=this.tileID.z,this.fire(new s.Event("data",{dataType:"source",sourceDataType:"content"})),this}_clear(){this._boundsArray=void 0}_prepareData(n){for(const P in this.tiles){const N=this.tiles[P];N.state!=="loaded"&&(N.state="loaded",N.texture=this.texture)}if(this._boundsArray)return;const a=s.tileTransform(this.tileID,this.map.transform.projection),[p,_,b,I]=this.coordinates.map(P=>{const N=a.projection.project(P[0],P[1]);return s.getTilePoint(a,N)._round()});this.perspectiveTransform=function(P,N,z,j,Y,J,te,ee,ie,V){const K=Ht(0,0,P,0,0,N,P,N),ae=Ht(z,j,Y,J,te,ee,ie,V);return s.multiply$1(ae,s.adjoint(K,K),ae),[ae[6]/ae[8]*P/s.EXTENT,ae[7]/ae[8]*N/s.EXTENT]}(this.width,this.height,p.x,p.y,_.x,_.y,I.x,I.y,b.x,b.y);const M=this._boundsArray=new s.StructArrayLayout4i8;M.emplaceBack(p.x,p.y,0,0),M.emplaceBack(_.x,_.y,s.EXTENT,0),M.emplaceBack(I.x,I.y,0,s.EXTENT),M.emplaceBack(b.x,b.y,s.EXTENT,s.EXTENT),this.boundsBuffer&&this.boundsBuffer.destroy(),this.boundsBuffer=n.createVertexBuffer(M,s.boundsAttributes.members),this.boundsSegments=s.SegmentVector.simpleSegment(0,0,4,2)}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;const n=this.map.painter.context,a=n.gl;this._dirty&&(this.texture?this.texture.update(this.image):(this.texture=new s.Texture(n,this.image,a.RGBA),this.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE)),this._dirty=!1),this._prepareData(n)}loadTile(n,a){this.tileID&&this.tileID.equals(n.tileID.canonical)?(this.tiles[String(n.tileID.wrap)]=n,n.buckets={},a(null)):(n.state="errored",a(null))}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}const Zt={vector:ht,raster:nt,"raster-dem":class extends nt{constructor(h,n,a,p){super(h,n,a,p),this.type="raster-dem",this.maxzoom=22,this._options=s.extend({type:"raster-dem"},n),this.encoding=n.encoding||"mapbox"}loadTile(h,n){const a=this.map._requestManager.normalizeTileURL(h.tileID.canonical.url(this.tiles,this.scheme),!1,this.tileSize);function p(_,b){_&&(h.state="errored",n(_)),b&&(h.dem=b,h.dem.onDeserialize(),h.needsHillshadePrepare=!0,h.needsDEMTextureUpload=!0,h.state="loaded",n(null))}h.request=s.getImage(this.map._requestManager.transformRequest(a,s.ResourceType.Tile),(function(_,b,I,M){if(delete h.request,h.aborted)h.state="unloaded",n(null);else if(_)h.state="errored",n(_);else if(b){this.map._refreshExpiredTiles&&h.setExpiryData({cacheControl:I,expires:M});const P=s.window.ImageBitmap&&b instanceof s.window.ImageBitmap&&(Yt==null&&(Yt=s.window.OffscreenCanvas&&new s.window.OffscreenCanvas(1,1).getContext("2d")&&typeof s.window.createImageBitmap=="function"),Yt),N=1-(b.width-s.prevPowerOfTwo(b.width))/2;N<1||h.neighboringTiles||(h.neighboringTiles=this._getNeighboringTiles(h.tileID));const z=P?b:s.exported.getImageData(b,N),j={uid:h.uid,coord:h.tileID,source:this.id,rawImageData:z,encoding:this.encoding,padding:N};h.actor&&h.state!=="expired"||(h.actor=this.dispatcher.getActor(),h.actor.send("loadDEMTile",j,p.bind(this),void 0,!0))}}).bind(this))}_getNeighboringTiles(h){const n=h.canonical,a=Math.pow(2,n.z),p=(n.x-1+a)%a,_=n.x===0?h.wrap-1:h.wrap,b=(n.x+1+a)%a,I=n.x+1===a?h.wrap+1:h.wrap,M={};return M[new s.OverscaledTileID(h.overscaledZ,_,n.z,p,n.y).key]={backfilled:!1},M[new s.OverscaledTileID(h.overscaledZ,I,n.z,b,n.y).key]={backfilled:!1},n.y>0&&(M[new s.OverscaledTileID(h.overscaledZ,_,n.z,p,n.y-1).key]={backfilled:!1},M[new s.OverscaledTileID(h.overscaledZ,h.wrap,n.z,n.x,n.y-1).key]={backfilled:!1},M[new s.OverscaledTileID(h.overscaledZ,I,n.z,b,n.y-1).key]={backfilled:!1}),n.y+1<a&&(M[new s.OverscaledTileID(h.overscaledZ,_,n.z,p,n.y+1).key]={backfilled:!1},M[new s.OverscaledTileID(h.overscaledZ,h.wrap,n.z,n.x,n.y+1).key]={backfilled:!1},M[new s.OverscaledTileID(h.overscaledZ,I,n.z,b,n.y+1).key]={backfilled:!1}),M}unloadTile(h){h.demTexture&&this.map.painter.saveTileTexture(h.demTexture),h.fbo&&(h.fbo.destroy(),delete h.fbo),h.dem&&delete h.dem,delete h.neighboringTiles,h.state="unloaded"}},geojson:class extends s.Evented{constructor(h,n,a,p){super(),this.id=h,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._loaded=!1,this.actor=a.getActor(),this.setEventedParent(p),this._data=n.data,this._options=s.extend({},n),this._collectResourceTiming=n.collectResourceTiming,n.maxzoom!==void 0&&(this.maxzoom=n.maxzoom),n.type&&(this.type=n.type),n.attribution&&(this.attribution=n.attribution),this.promoteId=n.promoteId;const _=s.EXTENT/this.tileSize;this.workerOptions=s.extend({source:this.id,cluster:n.cluster||!1,geojsonVtOptions:{buffer:(n.buffer!==void 0?n.buffer:128)*_,tolerance:(n.tolerance!==void 0?n.tolerance:.375)*_,extent:s.EXTENT,maxZoom:this.maxzoom,lineMetrics:n.lineMetrics||!1,generateId:n.generateId||!1},superclusterOptions:{maxZoom:n.clusterMaxZoom!==void 0?n.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,n.clusterMinPoints||2),extent:s.EXTENT,radius:(n.clusterRadius!==void 0?n.clusterRadius:50)*_,log:!1,generateId:n.generateId||!1},clusterProperties:n.clusterProperties,filter:n.filter},n.workerOptions)}onAdd(h){this.map=h,this.setData(this._data)}setData(h){return this._data=h,this._updateWorkerData(),this}getClusterExpansionZoom(h,n){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:h,source:this.id},n),this}getClusterChildren(h,n){return this.actor.send("geojson.getClusterChildren",{clusterId:h,source:this.id},n),this}getClusterLeaves(h,n,a,p){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:h,limit:n,offset:a},p),this}_updateWorkerData(){if(this._pendingLoad)return void(this._coalesce=!0);this.fire(new s.Event("dataloading",{dataType:"source"})),this._loaded=!1;const h=s.extend({},this.workerOptions),n=this._data;typeof n=="string"?(h.request=this.map._requestManager.transformRequest(s.exported.resolveURL(n),s.ResourceType.Source),h.request.collectResourceTiming=this._collectResourceTiming):h.data=JSON.stringify(n),this._pendingLoad=this.actor.send(`${this.type}.loadData`,h,(a,p)=>{if(this._loaded=!0,this._pendingLoad=null,a)this.fire(new s.ErrorEvent(a));else{const _={dataType:"source",sourceDataType:this._metadataFired?"content":"metadata"};this._collectResourceTiming&&p&&p.resourceTiming&&p.resourceTiming[this.id]&&(_.resourceTiming=p.resourceTiming[this.id]),this.fire(new s.Event("data",_)),this._metadataFired=!0}this._coalesce&&(this._updateWorkerData(),this._coalesce=!1)})}loaded(){return this._loaded}loadTile(h,n){const a=h.actor?"reloadTile":"loadTile";h.actor=this.actor,h.request=this.actor.send(a,{type:this.type,uid:h.uid,tileID:h.tileID,tileZoom:h.tileZoom,zoom:h.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:s.exported.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId},(p,_)=>(delete h.request,h.unloadVectorData(),h.aborted?n(null):p?n(p):(h.loadVectorData(_,this.map.painter,a==="reloadTile"),n(null))),void 0,a==="loadTile")}abortTile(h){h.request&&(h.request.cancel(),delete h.request),h.aborted=!0}unloadTile(h){h.unloadVectorData(),this.actor.send("removeTile",{uid:h.uid,type:this.type,source:this.id})}onRemove(){this._pendingLoad&&this._pendingLoad.cancel()}serialize(){return s.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}},video:class extends li{constructor(h,n,a,p){super(h,n,a,p),this.roundZoom=!0,this.type="video",this.options=n}load(){this._loaded=!1;const h=this.options;this.urls=[];for(const n of h.urls)this.urls.push(this.map._requestManager.transformRequest(n,s.ResourceType.Source).url);s.getVideo(this.urls,(n,a)=>{this._loaded=!0,n?this.fire(new s.ErrorEvent(n)):a&&(this.video=a,this.video.loop=!0,this.video.setAttribute("playsinline",""),this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading())})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(h){if(this.video){const n=this.video.seekable;h<n.start(0)||h>n.end(0)?this.fire(new s.ErrorEvent(new s.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${n.start(0)} and ${n.end(0)}-second mark.`))):this.video.currentTime=h}}getVideo(){return this.video}onAdd(h){this.map||(this.map=h,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;const h=this.map.painter.context,n=h.gl;this.texture?this.video.paused||(this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE),n.texSubImage2D(n.TEXTURE_2D,0,0,0,n.RGBA,n.UNSIGNED_BYTE,this.video)):(this.texture=new s.Texture(h,this.video,n.RGBA),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE),this.width=this.video.videoWidth,this.height=this.video.videoHeight),this._prepareData(h)}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}},image:li,canvas:class extends li{constructor(h,n,a,p){super(h,n,a,p),n.coordinates?Array.isArray(n.coordinates)&&n.coordinates.length===4&&!n.coordinates.some(_=>!Array.isArray(_)||_.length!==2||_.some(b=>typeof b!="number"))||this.fire(new s.ErrorEvent(new s.ValidationError(`sources.${h}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new s.ErrorEvent(new s.ValidationError(`sources.${h}`,null,'missing required property "coordinates"'))),n.animate&&typeof n.animate!="boolean"&&this.fire(new s.ErrorEvent(new s.ValidationError(`sources.${h}`,null,'optional "animate" property must be a boolean value'))),n.canvas?typeof n.canvas=="string"||n.canvas instanceof s.window.HTMLCanvasElement||this.fire(new s.ErrorEvent(new s.ValidationError(`sources.${h}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new s.ErrorEvent(new s.ValidationError(`sources.${h}`,null,'missing required property "canvas"'))),this.options=n,this.animate=n.animate===void 0||n.animate}load(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof s.window.HTMLCanvasElement?this.options.canvas:s.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new s.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())}getCanvas(){return this.canvas}onAdd(h){this.map=h,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let h=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,h=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,h=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;const n=this.map.painter.context;this.texture?(h||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new s.Texture(n,this.canvas,n.gl.RGBA,{premultiply:!0}),this._prepareData(n)}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const h of[this.canvas.width,this.canvas.height])if(isNaN(h)||h<=0)return!0;return!1}},custom:class extends s.Evented{constructor(h,n,a,p){super(),this.id=h,this.type="custom",this._dataType="raster",this._dispatcher=a,this._implementation=n,this.setEventedParent(p),this.scheme="xyz",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this._loaded=!1,this.roundZoom=!0,this._implementation||this.fire(new s.ErrorEvent(new Error(`Missing implementation for ${this.id} custom source`))),this._implementation.loadTile||this.fire(new s.ErrorEvent(new Error(`Missing loadTile implementation for ${this.id} custom source`))),this._implementation.bounds&&(this.tileBounds=new vn(this._implementation.bounds,this.minzoom,this.maxzoom)),n.update=this._update.bind(this),n.clearTiles=this._clearTiles.bind(this),n.coveringTiles=this._coveringTiles.bind(this),s.extend(this,s.pick(n,["dataType","scheme","minzoom","maxzoom","tileSize","attribution","minTileCacheSize","maxTileCacheSize"]))}serialize(){return s.pick(this,["type","scheme","minzoom","maxzoom","tileSize","attribution"])}load(){this._loaded=!0,this.fire(new s.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new s.Event("data",{dataType:"source",sourceDataType:"content"}))}loaded(){return this._loaded}onAdd(h){this._map=h,this._loaded=!1,this.fire(new s.Event("dataloading",{dataType:"source"})),this._implementation.onAdd&&this._implementation.onAdd(h),this.load()}onRemove(h){this._implementation.onRemove&&this._implementation.onRemove(h)}hasTile(h){if(this._implementation.hasTile){const{x:n,y:a,z:p}=h.canonical;return this._implementation.hasTile({x:n,y:a,z:p})}return!this.tileBounds||this.tileBounds.contains(h.canonical)}loadTile(h,n){const{x:a,y:p,z:_}=h.tileID.canonical,b=new s.window.AbortController;h.request=Promise.resolve(this._implementation.loadTile({x:a,y:p,z:_},{signal:b.signal})).then((function(I){return delete h.request,h.aborted?(h.state="unloaded",n(null)):I===void 0?(h.state="errored",n(null)):I===null?(this.loadTileData(h,{width:this.tileSize,height:this.tileSize,data:null}),h.state="loaded",n(null)):function(M){return M instanceof s.window.ImageData||M instanceof s.window.HTMLCanvasElement||M instanceof s.window.ImageBitmap||M instanceof s.window.HTMLImageElement}(I)?(this.loadTileData(h,I),h.state="loaded",void n(null)):(h.state="errored",n(new Error(`Can't infer data type for ${this.id}, only raster data supported at the moment`)))}).bind(this)).catch(I=>{I.code!==20&&(h.state="errored",n(I))}),h.request.cancel=()=>b.abort()}loadTileData(h,n){nt.loadTileData(h,n,this._map.painter)}unloadTileData(h){nt.unloadTileData(h,this._map.painter)}unloadTile(h,n){if(this.unloadTileData(h),this._implementation.unloadTile){const{x:a,y:p,z:_}=h.tileID.canonical;this._implementation.unloadTile({x:a,y:p,z:_})}n()}abortTile(h,n){h.request&&h.request.cancel&&(h.request.cancel(),delete h.request),n()}hasTransition(){return!1}_coveringTiles(){return this._map.transform.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,roundZoom:this.roundZoom}).map(h=>({x:h.canonical.x,y:h.canonical.y,z:h.canonical.z}))}_clearTiles(){this._map.style._clearSource(this.id)}_update(){this.fire(new s.Event("data",{dataType:"source",sourceDataType:"content"}))}}},ui=function(h,n,a,p){const _=new Zt[n.type](h,n,a,p);if(_.id!==h)throw new Error(`Expected Source id to be ${h} instead of ${_.id}`);return s.bindAll(["load","abort","unload","serialize","prepare"],_),_};function hi(h,n){const a=s.identity([]);return s.scale(a,a,[.5*h.width,.5*-h.height,1]),s.translate(a,a,[1,-1,0]),s.multiply(a,a,h.calculateProjMatrix(n.toUnwrapped())),Float32Array.from(a)}function tn(h,n,a,p,_,b,I,M=!1){const P=h.tilesIn(p,I,M);P.sort(Un);const N=[];for(const j of P)N.push({wrappedTileID:j.tile.tileID.wrapped().key,queryResults:j.tile.queryRenderedFeatures(n,a,h._state,j,_,b,hi(h.transform,j.tile.tileID),M)});const z=function(j){const Y={},J={};for(const te of j){const ee=te.queryResults,ie=te.wrappedTileID,V=J[ie]=J[ie]||{};for(const K in ee){const ae=ee[K],le=V[K]=V[K]||{},xe=Y[K]=Y[K]||[];for(const Te of ae)le[Te.featureIndex]||(le[Te.featureIndex]=!0,xe.push(Te))}}return Y}(N);for(const j in z)z[j].forEach(Y=>{const J=Y.feature,te=J.layer;te&&te.type!=="background"&&te.type!=="sky"&&(J.source=te.source,te["source-layer"]&&(J.sourceLayer=te["source-layer"]),J.state=J.id!==void 0?h.getFeatureState(te["source-layer"],J.id):{})});return z}function un(h,n){const a=h.getRenderableIds().map(b=>h.getTileByID(b)),p=[],_={};for(let b=0;b<a.length;b++){const I=a[b],M=I.tileID.canonical.key;_[M]||(_[M]=!0,I.querySourceFeatures(p,n))}return p}function Un(h,n){const a=h.tileID,p=n.tileID;return a.overscaledZ-p.overscaledZ||a.canonical.y-p.canonical.y||a.wrap-p.wrap||a.canonical.x-p.canonical.x}function Pi(){return ja.workerClass!=null?new ja.workerClass:new s.window.Worker(ja.workerUrl)}const xr="mapboxgl_preloaded_worker_pool";class cn{constructor(){this.active={}}acquire(n){if(!this.workers)for(this.workers=[];this.workers.length<cn.workerCount;)this.workers.push(new Pi);return this.active[n]=!0,this.workers.slice()}release(n){delete this.active[n],this.numActive()===0&&(this.workers.forEach(a=>{a.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[xr]}numActive(){return Object.keys(this.active).length}}let pn;function br(){return pn||(pn=new cn),pn}function al(h,n){const a={};for(const p in h)p!=="ref"&&(a[p]=h[p]);return s.refProperties.forEach(p=>{p in n&&(a[p]=n[p])}),a}function Ns(h){h=h.slice();const n=Object.create(null);for(let a=0;a<h.length;a++)n[h[a].id]=h[a];for(let a=0;a<h.length;a++)"ref"in h[a]&&(h[a]=al(h[a],n[h[a].ref]));return h}cn.workerCount=2;const xi={setStyle:"setStyle",addLayer:"addLayer",removeLayer:"removeLayer",setPaintProperty:"setPaintProperty",setLayoutProperty:"setLayoutProperty",setFilter:"setFilter",addSource:"addSource",removeSource:"removeSource",setGeoJSONSourceData:"setGeoJSONSourceData",setLayerZoomRange:"setLayerZoomRange",setLayerProperty:"setLayerProperty",setCenter:"setCenter",setZoom:"setZoom",setBearing:"setBearing",setPitch:"setPitch",setSprite:"setSprite",setGlyphs:"setGlyphs",setTransition:"setTransition",setLight:"setLight",setTerrain:"setTerrain",setFog:"setFog",setProjection:"setProjection"};function dn(h,n,a){a.push({command:xi.addSource,args:[h,n[h]]})}function Bs(h,n,a){n.push({command:xi.removeSource,args:[h]}),a[h]=!0}function ll(h,n,a,p){Bs(h,a,p),dn(h,n,a)}function Bo(h,n,a){let p;for(p in h[a])if(h[a].hasOwnProperty(p)&&p!=="data"&&!Z(h[a][p],n[a][p]))return!1;for(p in n[a])if(n[a].hasOwnProperty(p)&&p!=="data"&&!Z(h[a][p],n[a][p]))return!1;return!0}function ir(h,n,a,p,_,b){let I;for(I in n=n||{},h=h||{})h.hasOwnProperty(I)&&(Z(h[I],n[I])||a.push({command:b,args:[p,I,n[I],_]}));for(I in n)n.hasOwnProperty(I)&&!h.hasOwnProperty(I)&&(Z(h[I],n[I])||a.push({command:b,args:[p,I,n[I],_]}))}function Or(h){return h.id}function Fs(h,n){return h[n.id]=n,h}class _a{constructor(n,a){this.reset(n,a)}reset(n,a){this.points=n||[],this._distances=[0];for(let p=1;p<this.points.length;p++)this._distances[p]=this._distances[p-1]+this.points[p].dist(this.points[p-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(a||0,.5*this.length),this.paddedLength=this.length-2*this.padding}lerp(n){if(this.points.length===1)return this.points[0];n=s.clamp(n,0,1);let a=1,p=this._distances[a];const _=n*this.paddedLength+this.padding;for(;p<_&&a<this._distances.length;)p=this._distances[++a];const b=a-1,I=this._distances[b],M=p-I,P=M>0?(_-I)/M:0;return this.points[b].mult(1-P).add(this.points[a].mult(P))}}class Fo{constructor(n,a,p){const _=this.boxCells=[],b=this.circleCells=[];this.xCellCount=Math.ceil(n/p),this.yCellCount=Math.ceil(a/p);for(let I=0;I<this.xCellCount*this.yCellCount;I++)_.push([]),b.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=n,this.height=a,this.xScale=this.xCellCount/n,this.yScale=this.yCellCount/a,this.boxUid=0,this.circleUid=0}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(n,a,p,_,b){this._forEachCell(a,p,_,b,this._insertBoxCell,this.boxUid++),this.boxKeys.push(n),this.bboxes.push(a),this.bboxes.push(p),this.bboxes.push(_),this.bboxes.push(b)}insertCircle(n,a,p,_){this._forEachCell(a-_,p-_,a+_,p+_,this._insertCircleCell,this.circleUid++),this.circleKeys.push(n),this.circles.push(a),this.circles.push(p),this.circles.push(_)}_insertBoxCell(n,a,p,_,b,I){this.boxCells[b].push(I)}_insertCircleCell(n,a,p,_,b,I){this.circleCells[b].push(I)}_query(n,a,p,_,b,I){if(p<0||n>this.width||_<0||a>this.height)return!b&&[];const M=[];if(n<=0&&a<=0&&this.width<=p&&this.height<=_){if(b)return!0;for(let P=0;P<this.boxKeys.length;P++)M.push({key:this.boxKeys[P],x1:this.bboxes[4*P],y1:this.bboxes[4*P+1],x2:this.bboxes[4*P+2],y2:this.bboxes[4*P+3]});for(let P=0;P<this.circleKeys.length;P++){const N=this.circles[3*P],z=this.circles[3*P+1],j=this.circles[3*P+2];M.push({key:this.circleKeys[P],x1:N-j,y1:z-j,x2:N+j,y2:z+j})}return I?M.filter(I):M}return this._forEachCell(n,a,p,_,this._queryCell,M,{hitTest:b,seenUids:{box:{},circle:{}}},I),b?M.length>0:M}_queryCircle(n,a,p,_,b){const I=n-p,M=n+p,P=a-p,N=a+p;if(M<0||I>this.width||N<0||P>this.height)return!_&&[];const z=[];return this._forEachCell(I,P,M,N,this._queryCellCircle,z,{hitTest:_,circle:{x:n,y:a,radius:p},seenUids:{box:{},circle:{}}},b),_?z.length>0:z}query(n,a,p,_,b){return this._query(n,a,p,_,!1,b)}hitTest(n,a,p,_,b){return this._query(n,a,p,_,!0,b)}hitTestCircle(n,a,p,_){return this._queryCircle(n,a,p,!0,_)}_queryCell(n,a,p,_,b,I,M,P){const N=M.seenUids,z=this.boxCells[b];if(z!==null){const Y=this.bboxes;for(const J of z)if(!N.box[J]){N.box[J]=!0;const te=4*J;if(n<=Y[te+2]&&a<=Y[te+3]&&p>=Y[te+0]&&_>=Y[te+1]&&(!P||P(this.boxKeys[J]))){if(M.hitTest)return I.push(!0),!0;I.push({key:this.boxKeys[J],x1:Y[te],y1:Y[te+1],x2:Y[te+2],y2:Y[te+3]})}}}const j=this.circleCells[b];if(j!==null){const Y=this.circles;for(const J of j)if(!N.circle[J]){N.circle[J]=!0;const te=3*J;if(this._circleAndRectCollide(Y[te],Y[te+1],Y[te+2],n,a,p,_)&&(!P||P(this.circleKeys[J]))){if(M.hitTest)return I.push(!0),!0;{const ee=Y[te],ie=Y[te+1],V=Y[te+2];I.push({key:this.circleKeys[J],x1:ee-V,y1:ie-V,x2:ee+V,y2:ie+V})}}}}}_queryCellCircle(n,a,p,_,b,I,M,P){const N=M.circle,z=M.seenUids,j=this.boxCells[b];if(j!==null){const J=this.bboxes;for(const te of j)if(!z.box[te]){z.box[te]=!0;const ee=4*te;if(this._circleAndRectCollide(N.x,N.y,N.radius,J[ee+0],J[ee+1],J[ee+2],J[ee+3])&&(!P||P(this.boxKeys[te])))return I.push(!0),!0}}const Y=this.circleCells[b];if(Y!==null){const J=this.circles;for(const te of Y)if(!z.circle[te]){z.circle[te]=!0;const ee=3*te;if(this._circlesCollide(J[ee],J[ee+1],J[ee+2],N.x,N.y,N.radius)&&(!P||P(this.circleKeys[te])))return I.push(!0),!0}}}_forEachCell(n,a,p,_,b,I,M,P){const N=this._convertToXCellCoord(n),z=this._convertToYCellCoord(a),j=this._convertToXCellCoord(p),Y=this._convertToYCellCoord(_);for(let J=N;J<=j;J++)for(let te=z;te<=Y;te++)if(b.call(this,n,a,p,_,this.xCellCount*te+J,I,M,P))return}_convertToXCellCoord(n){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(n*this.xScale)))}_convertToYCellCoord(n){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(n*this.yScale)))}_circlesCollide(n,a,p,_,b,I){const M=_-n,P=b-a,N=p+I;return N*N>M*M+P*P}_circleAndRectCollide(n,a,p,_,b,I,M){const P=(I-_)/2,N=Math.abs(n-(_+P));if(N>P+p)return!1;const z=(M-b)/2,j=Math.abs(a-(b+z));if(j>z+p)return!1;if(N<=P||j<=z)return!0;const Y=N-P,J=j-z;return Y*Y+J*J<=p*p}}const xn={unknown:0,flipRequired:1,flipNotRequired:2},qr=Math.tan(85*Math.PI/180);function Ge(h,n,a,p,_,b,I){const M=s.create();if(a)if(b.name==="globe"){const P=s.calculateGlobeLabelMatrix(_,n);s.multiply(M,M,P)}else{const P=Oe([],I);M[0]=P[0],M[1]=P[1],M[4]=P[2],M[5]=P[3],p||s.rotateZ(M,M,_.angle)}else s.multiply(M,_.labelPlaneMatrix,h);return M}function nr(h,n,a,p,_,b,I){const M=Ge(h,n,a,p,_,b,I);return b.name==="globe"&&a||(M[2]=M[6]=M[10]=M[14]=0),M}function sn(h,n,a,p,_,b,I){if(a){if(b.name==="globe"){const M=Ge(h,n,a,p,_,b,I);return s.invert(M,M),s.multiply(M,h,M),M}{const M=s.clone(h),P=s.identity([]);return P[0]=I[0],P[1]=I[1],P[4]=I[2],P[5]=I[3],s.multiply(M,M,P),p||s.rotateZ(M,M,-_.angle),M}}return _.glCoordMatrix}function An(h,n,a,p){const _=[h,n,a,1];a?s.transformMat4$1(_,_,p):fi(_,_,p);const b=_[3];return _[0]/=b,_[1]/=b,_[2]/=b,_}function hu(h,n){return Math.min(.5+h/n*.5,1.5)}function Zr(h,n){const a=h[0]/h[3],p=h[1]/h[3];return a>=-n[0]&&a<=n[0]&&p>=-n[1]&&p<=n[1]}function ya(h,n,a,p,_,b,I,M,P,N){const z=a.transform,j=p?h.textSizeData:h.iconSizeData,Y=s.evaluateSizeForZoom(j,a.transform.zoom),J=z.projection.name==="globe",te=[256/a.width*2+1,256/a.height*2+1],ee=p?h.text.dynamicLayoutVertexArray:h.icon.dynamicLayoutVertexArray;ee.clear();let ie=null;J&&(ie=p?h.text.globeExtVertexArray:h.icon.globeExtVertexArray);const V=h.lineVertexArray,K=p?h.text.placedSymbolArray:h.icon.placedSymbolArray,ae=a.transform.width/a.transform.height;let le,xe=!1;for(let Te=0;Te<K.length;Te++){const be=K.get(Te),{numGlyphs:Ae,writingMode:ke}=be;if(ke!==s.WritingMode.vertical||xe||le===s.WritingMode.horizontal||(xe=!0),le=ke,(be.hidden||ke===s.WritingMode.vertical)&&!xe){zr(Ae,ee);continue}xe=!1;const Ne=new s.Point(be.tileAnchorX,be.tileAnchorY);let{x:tt,y:Re,z:We}=z.projection.projectTilePoint(Ne.x,Ne.y,N.canonical);if(P){const[Kt,Pt,jt]=P(Ne);tt+=Kt,Re+=Pt,We+=jt}const je=[tt,Re,We,1];if(s.transformMat4$1(je,je,n),!Zr(je,te)){zr(Ae,ee);continue}const et=hu(a.transform.cameraToCenterDistance,je[3]),ze=s.evaluateSizeForFeature(j,Y,be),Ze=I?ze/et:ze*et,rt=An(tt,Re,We,_);if(rt[3]<=0){zr(Ae,ee);continue}let Ke={};const st=I?null:P,zt=mt(be,Ze,!1,M,n,_,b,h.glyphOffsetArray,V,ee,ie,rt,Ne,Ke,ae,st,z.projection,N,I);xe=zt.useVertical,st&&zt.needsFlipping&&(Ke={}),(zt.notEnoughRoom||xe||zt.needsFlipping&&mt(be,Ze,!0,M,n,_,b,h.glyphOffsetArray,V,ee,ie,rt,Ne,Ke,ae,st,z.projection,N,I).notEnoughRoom)&&zr(Ae,ee)}p?(h.text.dynamicLayoutVertexBuffer.updateData(ee),ie&&h.text.globeExtVertexBuffer.updateData(ie)):(h.icon.dynamicLayoutVertexBuffer.updateData(ee),ie&&h.icon.globeExtVertexBuffer.updateData(ie))}function ul(h,n,a,p,_,b,I,M,P,N,z,j,Y,J,te,ee){const{lineStartIndex:ie,glyphStartIndex:V,segment:K}=M,ae=V+M.numGlyphs,le=ie+M.lineLength,xe=n.getoffsetX(V),Te=n.getoffsetX(ae-1),be=Cn(h*xe,a,p,_,b,I,K,ie,le,P,N,z,j,Y,!0,J,te,ee);if(!be)return null;const Ae=Cn(h*Te,a,p,_,b,I,K,ie,le,P,N,z,j,Y,!0,J,te,ee);return Ae?{first:be,last:Ae}:null}function oo(h,n,a,p){return h===s.WritingMode.horizontal&&Math.abs(p)>Math.abs(a)?{useVertical:!0}:h===s.WritingMode.vertical?p>0?{needsFlipping:!0}:null:n!==xn.unknown&&function(_,b){return _===0||Math.abs(b/_)>qr}(a,p)?n===xn.flipRequired?{needsFlipping:!0}:null:a<0?{needsFlipping:!0}:null}function mt(h,n,a,p,_,b,I,M,P,N,z,j,Y,J,te,ee,ie,V,K){const ae=n/24,le=h.lineOffsetX*ae,xe=h.lineOffsetY*ae,{lineStartIndex:Te,glyphStartIndex:be,numGlyphs:Ae,segment:ke,writingMode:Ne,flipState:tt}=h,Re=Te+h.lineLength,We=je=>{if(z){const[rt,Ke,st]=je.up,zt=N.length;s.updateGlobeVertexNormal(z,zt+0,rt,Ke,st),s.updateGlobeVertexNormal(z,zt+1,rt,Ke,st),s.updateGlobeVertexNormal(z,zt+2,rt,Ke,st),s.updateGlobeVertexNormal(z,zt+3,rt,Ke,st)}const[et,ze,Ze]=je.point;s.addDynamicAttributes(N,et,ze,Ze,je.angle)};if(Ae>1){const je=ul(ae,M,le,xe,a,j,Y,h,P,b,J,ee,!1,ie,V,K);if(!je)return{notEnoughRoom:!0};if(p&&!a){let[et,ze,Ze]=je.first.point,[rt,Ke,st]=je.last.point;[et,ze]=An(et,ze,Ze,I),[rt,Ke]=An(rt,Ke,st,I);const zt=oo(Ne,tt,(rt-et)*te,Ke-ze);if(h.flipState=zt&&zt.needsFlipping?xn.flipRequired:xn.flipNotRequired,zt)return zt}We(je.first);for(let et=be+1;et<be+Ae-1;et++){const ze=Cn(ae*M.getoffsetX(et),le,xe,a,j,Y,ke,Te,Re,P,b,J,ee,!1,!1,ie,V,K);if(!ze)return N.length-=4*(et-be),{notEnoughRoom:!0};We(ze)}We(je.last)}else{if(p&&!a){const et=An(Y.x,Y.y,0,_),ze=Te+ke+1,Ze=new s.Point(P.getx(ze),P.gety(ze)),rt=An(Ze.x,Ze.y,0,_),Ke=rt[3]>0?rt:ci(Y,Ze,et,1,_,void 0,ie,V.canonical),st=oo(Ne,tt,(Ke[0]-et[0])*te,Ke[1]-et[1]);if(h.flipState=st&&st.needsFlipping?xn.flipRequired:xn.flipNotRequired,st)return st}const je=Cn(ae*M.getoffsetX(be),le,xe,a,j,Y,ke,Te,Re,P,b,J,ee,!1,!1,ie,V,K);if(!je)return{notEnoughRoom:!0};We(je)}return{}}function Qt(h,n,a,p,_){const{x:b,y:I,z:M}=p.projectTilePoint(h.x,h.y,n);if(!_)return An(b,I,M,a);const[P,N,z]=_(h);return An(b+P,I+N,M+z,a)}function ci(h,n,a,p,_,b,I,M){const P=Qt(h.sub(n)._unit()._add(h),M,_,I,b);return s.sub(P,a,P),s.normalize(P,P),s.scaleAndAdd(P,a,P,p)}function Cn(h,n,a,p,_,b,I,M,P,N,z,j,Y,J,te,ee,ie,V){const K=p?h-n:h+n;let ae=K>0?1:-1,le=0;p&&(ae*=-1,le=Math.PI),ae<0&&(le+=Math.PI);let xe=M+I+(ae>0?0:1)|0,Te=_,be=_,Ae=0,ke=0;const Ne=Math.abs(K),tt=[],Re=[];let We=b,je=We;const et=()=>ci(je,We,be,Ne-Ae+1,z,Y,ee,ie.canonical);for(;Ae+ke<=Ne;){if(xe+=ae,xe<M||xe>=P)return null;if(be=Te,je=We,tt.push(be),J&&Re.push(je),We=new s.Point(N.getx(xe),N.gety(xe)),Te=j[xe],!Te){const jt=Qt(We,ie.canonical,z,ee,Y);Te=jt[3]>0?j[xe]=jt:et()}Ae+=ke,ke=s.distance(be,Te)}te&&Y&&(j[xe]&&(Te=et(),ke=s.distance(be,Te)),j[xe]=Te);const ze=(Ne-Ae)/ke,Ze=We.sub(je)._mult(ze)._add(je),rt=s.sub([],Te,be),Ke=s.scaleAndAdd([],be,rt,ze);let st=[0,0,1],zt=rt[0],Kt=rt[1];if(V&&(st=ee.upVector(ie.canonical,Ze.x,Ze.y),st[0]!==0||st[1]!==0||st[2]!==1)){const jt=[st[2],0,-st[0]],mi=s.cross([],st,jt);s.normalize(jt,jt),s.normalize(mi,mi),zt=s.dot(rt,jt),Kt=s.dot(rt,mi)}if(a){const jt=s.cross([],st,rt);s.normalize(jt,jt),s.scaleAndAdd(Ke,Ke,jt,a*ae)}const Pt=le+Math.atan2(Kt,zt);return tt.push(Ke),J&&Re.push(Ze),{point:Ke,angle:Pt,path:tt,tilePath:Re,up:st}}function zr(h,n){const a=n.length,p=a+4*h;n.resize(p),n.float32.fill(-1/0,4*a,4*p)}function fi(h,n,a){const p=n[0],_=n[1];return h[0]=a[0]*p+a[4]*_+a[12],h[1]=a[1]*p+a[5]*_+a[13],h[3]=a[3]*p+a[7]*_+a[15],h}const dr=100;class Us{constructor(n,a,p=new Fo(n.width+200,n.height+200,25),_=new Fo(n.width+200,n.height+200,25)){this.transform=n,this.grid=p,this.ignoredGrid=_,this.pitchfactor=Math.cos(n._pitch)*n.cameraToCenterDistance,this.screenRightBoundary=n.width+dr,this.screenBottomBoundary=n.height+dr,this.gridRightBoundary=n.width+200,this.gridBottomBoundary=n.height+200,this.fogState=a}placeCollisionBox(n,a,p,_,b,I,M,P){let N=p.projectedAnchorX,z=p.projectedAnchorY,j=p.projectedAnchorZ;const Y=p.elevation,J=p.tileID,te=n.getProjection();if(Y&&J){const[Te,be,Ae]=te.upVector(J.canonical,p.tileAnchorX,p.tileAnchorY),ke=te.upVectorScale(J.canonical,this.transform.center.lat,this.transform.worldSize).metersToTile;N+=Te*Y*ke,z+=be*Y*ke,j+=Ae*Y*ke}const ee=this.projectAndGetPerspectiveRatio(M,N,z,j,p.tileID,te.name==="globe"||!!Y||this.transform.pitch>0,te),ie=I*ee.perspectiveRatio,V=(p.x1*a+_.x-p.padding)*ie+ee.point.x,K=(p.y1*a+_.y-p.padding)*ie+ee.point.y,ae=(p.x2*a+_.x+p.padding)*ie+ee.point.x,le=(p.y2*a+_.y+p.padding)*ie+ee.point.y,xe=ee.perspectiveRatio<=.55||ee.occluded;return!this.isInsideGrid(V,K,ae,le)||!b&&this.grid.hitTest(V,K,ae,le,P)||xe?{box:[],offscreen:!1,occluded:ee.occluded}:{box:[V,K,ae,le],offscreen:this.isOffscreen(V,K,ae,le),occluded:!1}}placeCollisionCircles(n,a,p,_,b,I,M,P,N,z,j,Y,J,te,ee){const ie=[],V=this.transform.elevation,K=n.getProjection(),ae=V?V.getAtTileOffsetFunc(ee,this.transform.center.lat,this.transform.worldSize,K):null,le=new s.Point(p.tileAnchorX,p.tileAnchorY);let{x:xe,y:Te,z:be}=K.projectTilePoint(le.x,le.y,ee.canonical);if(ae){const[Ze,rt,Ke]=ae(le);xe+=Ze,Te+=rt,be+=Ke}const Ae=K.name==="globe",ke=this.projectAndGetPerspectiveRatio(M,xe,Te,be,ee,Ae||!!V||this.transform.pitch>0,K),{perspectiveRatio:Ne}=ke,tt=(j?I/Ne:I*Ne)/s.ONE_EM,Re=An(xe,Te,be,P),We=ke.signedDistanceFromCamera>0?ul(tt,b,p.lineOffsetX*tt,p.lineOffsetY*tt,!1,Re,le,p,_,P,{},V&&!j?ae:null,j&&!!V,K,ee,j):null;let je=!1,et=!1,ze=!0;if(We&&!ke.occluded){const Ze=.5*J*Ne+te,rt=new s.Point(-100,-100),Ke=new s.Point(this.screenRightBoundary,this.screenBottomBoundary),st=new _a,{first:zt,last:Kt}=We,Pt=zt.path.length;let jt=[];for(let Ot=Pt-1;Ot>=1;Ot--)jt.push(zt.path[Ot]);for(let Ot=1;Ot<Kt.path.length;Ot++)jt.push(Kt.path[Ot]);const mi=2.5*Ze;N&&(jt=jt.map(([Ot,Di,Bi],Fi)=>(ae&&!Ae&&(Bi=ae(Fi<Pt-1?zt.tilePath[Pt-1-Fi]:Kt.tilePath[Fi-Pt+2])[2]),An(Ot,Di,Bi,N))),jt.some(Ot=>Ot[3]<=0)&&(jt=[]));let di=[];if(jt.length>0){let Ot=1/0,Di=-1/0,Bi=1/0,Fi=-1/0;for(const Ui of jt)Ot=Math.min(Ot,Ui[0]),Bi=Math.min(Bi,Ui[1]),Di=Math.max(Di,Ui[0]),Fi=Math.max(Fi,Ui[1]);Di>=rt.x&&Ot<=Ke.x&&Fi>=rt.y&&Bi<=Ke.y&&(di=[jt.map(Ui=>new s.Point(Ui[0],Ui[1]))],(Ot<rt.x||Di>Ke.x||Bi<rt.y||Fi>Ke.y)&&(di=s.clipLine(di,rt.x,rt.y,Ke.x,Ke.y)))}for(const Ot of di){st.reset(Ot,.25*Ze);let Di=0;Di=st.length<=.5*Ze?1:Math.ceil(st.paddedLength/mi)+1;for(let Bi=0;Bi<Di;Bi++){const Fi=Bi/Math.max(Di-1,1),Ui=st.lerp(Fi),ur=Ui.x+dr,$n=Ui.y+dr;ie.push(ur,$n,Ze,0);const Jr=ur-Ze,ko=$n-Ze,on=ur+Ze,ji=$n+Ze;if(ze=ze&&this.isOffscreen(Jr,ko,on,ji),et=et||this.isInsideGrid(Jr,ko,on,ji),!a&&this.grid.hitTestCircle(ur,$n,Ze,Y)&&(je=!0,!z))return{circles:[],offscreen:!1,collisionDetected:je,occluded:!1}}}}return{circles:!z&&je||!et?[]:ie,offscreen:ze,collisionDetected:je,occluded:ke.occluded}}queryRenderedSymbols(n){if(n.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};const a=[];let p=1/0,_=1/0,b=-1/0,I=-1/0;for(const z of n){const j=new s.Point(z.x+dr,z.y+dr);p=Math.min(p,j.x),_=Math.min(_,j.y),b=Math.max(b,j.x),I=Math.max(I,j.y),a.push(j)}const M=this.grid.query(p,_,b,I).concat(this.ignoredGrid.query(p,_,b,I)),P={},N={};for(const z of M){const j=z.key;if(P[j.bucketInstanceId]===void 0&&(P[j.bucketInstanceId]={}),P[j.bucketInstanceId][j.featureIndex])continue;const Y=[new s.Point(z.x1,z.y1),new s.Point(z.x2,z.y1),new s.Point(z.x2,z.y2),new s.Point(z.x1,z.y2)];s.polygonIntersectsPolygon(a,Y)&&(P[j.bucketInstanceId][j.featureIndex]=!0,N[j.bucketInstanceId]===void 0&&(N[j.bucketInstanceId]=[]),N[j.bucketInstanceId].push(j.featureIndex))}return N}insertCollisionBox(n,a,p,_,b){(a?this.ignoredGrid:this.grid).insert({bucketInstanceId:p,featureIndex:_,collisionGroupID:b},n[0],n[1],n[2],n[3])}insertCollisionCircles(n,a,p,_,b){const I=a?this.ignoredGrid:this.grid,M={bucketInstanceId:p,featureIndex:_,collisionGroupID:b};for(let P=0;P<n.length;P+=4)I.insertCircle(M,n[P],n[P+1],n[P+2])}projectAndGetPerspectiveRatio(n,a,p,_,b,I,M){const P=[a,p,_,1];let N=!1;_||this.transform.pitch>0?(s.transformMat4$1(P,P,n),this.fogState&&b&&M.name!=="globe"&&(N=function(Y,J,te,ee,ie,V){const K=V.calculateFogTileMatrix(ie),ae=[J,te,ee];return s.transformMat4(ae,ae,K),Bt(Y,ae,V.pitch,V._fov)}(this.fogState,a,p,_,b.toUnwrapped(),this.transform)>.9)):fi(P,P,n);const z=P[3];return{point:new s.Point((P[0]/z+1)/2*this.transform.width+dr,(-P[1]/z+1)/2*this.transform.height+dr),perspectiveRatio:Math.min(.5+this.transform.getCameraToCenterDistance(M)/z*.5,1.5),signedDistanceFromCamera:z,occluded:I&&P[2]>z||N}}isOffscreen(n,a,p,_){return p<dr||n>=this.screenRightBoundary||_<dr||a>this.screenBottomBoundary}isInsideGrid(n,a,p,_){return p>=0&&n<this.gridRightBoundary&&_>=0&&a<this.gridBottomBoundary}getViewportMatrix(){const n=s.identity([]);return s.translate(n,n,[-100,-100,0]),n}}function Eo(h,n,a){const p=n.createTileMatrix(h,h.worldSize,a.toUnwrapped());return s.multiply(new Float32Array(16),h.projMatrix,p)}function jn(h,n,a){if(n.projection.name===a.projection.name)return h.projMatrix;const p=a.clone();return p.setProjection(n.projection),Eo(p,n.getProjection(),h)}function Zi(h,n,a){return n.name===a.projection.name?h.projMatrix:Eo(a,n,h)}class fu{constructor(n,a,p,_){this.opacity=n?Math.max(0,Math.min(1,n.opacity+(n.placed?a:-a))):_&&p?1:0,this.placed=p}isHidden(){return this.opacity===0&&!this.placed}}class Xr{constructor(n,a,p,_,b,I=!1){this.text=new fu(n?n.text:null,a,p,b),this.icon=new fu(n?n.icon:null,a,_,b),this.clipped=I}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class js{constructor(n,a,p,_=!1){this.text=n,this.icon=a,this.skipFade=p,this.clipped=_}}class Uo{constructor(){this.invProjMatrix=s.create(),this.viewportMatrix=s.create(),this.circles=[]}}class Ji{constructor(n,a,p,_,b){this.bucketInstanceId=n,this.featureIndex=a,this.sourceLayerIndex=p,this.bucketIndex=_,this.tileID=b}}class To{constructor(n){this.crossSourceCollisions=n,this.maxGroupID=0,this.collisionGroups={}}get(n){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[n]){const a=++this.maxGroupID;this.collisionGroups[n]={ID:a,predicate:p=>p.collisionGroupID===a}}return this.collisionGroups[n]}}function Vs(h,n,a,p,_){const{horizontalAlign:b,verticalAlign:I}=s.getAnchorAlignment(h),M=-(b-.5)*n,P=-(I-.5)*a,N=s.evaluateVariableOffset(h,p);return new s.Point(M+N[0]*_,P+N[1]*_)}function jo(h,n,a,p,_){const b=new s.Point(h,n);return a&&b._rotate(p?_:-_),b}class Yn{constructor(n,a,p,_,b){this.transform=n.clone(),this.projection=n.projection.name,this.collisionIndex=new Us(this.transform,b),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=a,this.retainedQueryData={},this.collisionGroups=new To(p),this.collisionCircleArrays={},this.prevPlacement=_,_&&(_.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(n,a,p,_){const b=p.getBucket(a),I=p.latestFeatureIndex;if(!b||!I||a.id!==b.layerIds[0])return;const M=b.layers[0].layout,P=p.collisionBoxArray,N=Math.pow(2,this.transform.zoom-p.tileID.overscaledZ),z=p.tileSize/s.EXTENT,j=p.tileID.toUnwrapped();this.transform.setProjection(b.projection);const Y=(J=p.tileID,te=b.getProjection(),ee=this.transform,te.name===this.projection?ee.calculateProjMatrix(J.toUnwrapped()):Eo(ee,te,J));var J,te,ee;const ie=M.get("text-pitch-alignment")==="map",V=M.get("text-rotation-alignment")==="map";a.compileFilter();const K=a.dynamicFilter(),ae=a.dynamicFilterNeedsFeature(),le=this.transform.calculatePixelsToTileUnitsMatrix(p),xe=nr(Y,p.tileID.canonical,ie,V,this.transform,b.getProjection(),le);let Te=null;if(ie){const ke=sn(Y,p.tileID.canonical,ie,V,this.transform,b.getProjection(),le);Te=s.multiply([],this.transform.labelPlaneMatrix,ke)}let be=null;K&&p.latestFeatureIndex&&(be={unwrappedTileID:j,dynamicFilter:K,dynamicFilterNeedsFeature:ae,featureIndex:p.latestFeatureIndex}),this.retainedQueryData[b.bucketInstanceId]=new Ji(b.bucketInstanceId,I,b.sourceLayerIndex,b.index,p.tileID);const Ae={bucket:b,layout:M,posMatrix:Y,textLabelPlaneMatrix:xe,labelToScreenMatrix:Te,clippingData:be,scale:N,textPixelRatio:z,holdingForFade:p.holdingForFade(),collisionBoxArray:P,partiallyEvaluatedTextSize:s.evaluateSizeForZoom(b.textSizeData,this.transform.zoom),partiallyEvaluatedIconSize:s.evaluateSizeForZoom(b.iconSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(b.sourceID)};if(_)for(const ke of b.sortKeyRanges){const{sortKey:Ne,symbolInstanceStart:tt,symbolInstanceEnd:Re}=ke;n.push({sortKey:Ne,symbolInstanceStart:tt,symbolInstanceEnd:Re,parameters:Ae})}else n.push({symbolInstanceStart:0,symbolInstanceEnd:b.symbolInstances.length,parameters:Ae})}attemptAnchorPlacement(n,a,p,_,b,I,M,P,N,z,j,Y,J,te,ee,ie,V,K){const{textOffset0:ae,textOffset1:le,crossTileID:xe}=Y,Te=[ae,le],be=Vs(n,p,_,Te,b),Ae=this.collisionIndex.placeCollisionBox(te,b,a,jo(be.x,be.y,I,M,this.transform.angle),j,P,N,z.predicate);if(ie){const ke=te.getSymbolInstanceIconSize(K,this.transform.zoom,Y.placedIconSymbolIndex);if(this.collisionIndex.placeCollisionBox(te,ke,ie,jo(be.x,be.y,I,M,this.transform.angle),j,P,N,z.predicate).box.length===0)return}if(Ae.box.length>0){let ke;return this.prevPlacement&&this.prevPlacement.variableOffsets[xe]&&this.prevPlacement.placements[xe]&&this.prevPlacement.placements[xe].text&&(ke=this.prevPlacement.variableOffsets[xe].anchor),this.variableOffsets[xe]={textOffset:Te,width:p,height:_,anchor:n,textScale:b,prevAnchor:ke},this.markUsedJustification(te,n,Y,ee),te.allowVerticalPlacement&&(this.markUsedOrientation(te,ee,Y),this.placedOrientations[xe]=ee),{shift:be,placedGlyphBoxes:Ae}}}placeLayerBucketPart(n,a,p,_){const{bucket:b,layout:I,posMatrix:M,textLabelPlaneMatrix:P,labelToScreenMatrix:N,clippingData:z,textPixelRatio:j,holdingForFade:Y,collisionBoxArray:J,partiallyEvaluatedTextSize:te,partiallyEvaluatedIconSize:ee,collisionGroup:ie}=n.parameters,V=I.get("text-optional"),K=I.get("icon-optional"),ae=I.get("text-allow-overlap"),le=I.get("icon-allow-overlap"),xe=I.get("text-rotation-alignment")==="map",Te=I.get("text-pitch-alignment")==="map",be=I.get("icon-text-fit")!=="none",Ae=I.get("symbol-z-order")==="viewport-y";this.transform.setProjection(b.projection);let ke=ae&&(le||!b.hasIconData()||K),Ne=le&&(ae||!b.hasTextData()||V);!b.collisionArrays&&J&&b.deserializeCollisionBoxes(J),p&&_&&b.updateCollisionDebugBuffers(this.transform.zoom,J);const tt=(Re,We,je)=>{const{crossTileID:et,numVerticalGlyphVertices:ze}=Re;if(z){const on={zoom:this.transform.zoom,pitch:this.transform.pitch};let ji=null;if(z.dynamicFilterNeedsFeature){const ki=this.retainedQueryData[b.bucketInstanceId];ji=z.featureIndex.loadFeature({featureIndex:Re.featureIndex,bucketIndex:ki.bucketIndex,sourceLayerIndex:ki.sourceLayerIndex,layoutVertexArrayOffset:0})}if(!(0,z.dynamicFilter)(on,ji,this.retainedQueryData[b.bucketInstanceId].tileID.canonical,new s.Point(Re.tileAnchorX,Re.tileAnchorY),this.transform.calculateDistanceTileData(z.unwrappedTileID)))return this.placements[et]=new js(!1,!1,!1,!0),void a.add(et)}if(a.has(et))return;if(Y)return void(this.placements[et]=new js(!1,!1,!1));let Ze=!1,rt=!1,Ke=!0,st=!1,zt=!1,Kt=null,Pt={box:null,offscreen:null,occluded:null},jt={box:null,offscreen:null,occluded:null},mi=null,di=null,Ot=null,Di=0,Bi=0,Fi=0;je.textFeatureIndex?Di=je.textFeatureIndex:Re.useRuntimeCollisionCircles&&(Di=Re.featureIndex),je.verticalTextFeatureIndex&&(Bi=je.verticalTextFeatureIndex);const Ui=on=>{on.tileID=this.retainedQueryData[b.bucketInstanceId].tileID;const ji=this.transform.elevation;(ji||on.elevation)&&(on.elevation=ji?ji.getAtTileOffset(on.tileID,on.tileAnchorX,on.tileAnchorY):0)},ur=je.textBox;if(ur){Ui(ur);const on=ki=>{let wn=s.WritingMode.horizontal;if(b.allowVerticalPlacement&&!ki&&this.prevPlacement){const gr=this.prevPlacement.placedOrientations[et];gr&&(this.placedOrientations[et]=gr,wn=gr,this.markUsedOrientation(b,wn,Re))}return wn},ji=(ki,wn)=>{if(b.allowVerticalPlacement&&ze>0&&je.verticalTextBox){for(const gr of b.writingModes)if(gr===s.WritingMode.vertical?(Pt=wn(),jt=Pt):Pt=ki(),Pt&&Pt.box&&Pt.box.length)break}else Pt=ki()};if(I.get("text-variable-anchor")){let ki=I.get("text-variable-anchor");if(this.prevPlacement&&this.prevPlacement.variableOffsets[et]){const nn=this.prevPlacement.variableOffsets[et];ki.indexOf(nn.anchor)>0&&(ki=ki.filter(kr=>kr!==nn.anchor),ki.unshift(nn.anchor))}const wn=(nn,kr,Au)=>{const ea=b.getSymbolInstanceTextSize(te,Re,this.transform.zoom,We),Al=(nn.x2-nn.x1)*ea+2*nn.padding,Ho=(nn.y2-nn.y1)*ea+2*nn.padding,Ts=be&&!le?kr:null;Ts&&Ui(Ts);let ta={box:[],offscreen:!1,occluded:!1};const Cu=ae?2*ki.length:ki.length;for(let Cl=0;Cl<Cu;++Cl){const jc=this.attemptAnchorPlacement(ki[Cl%ki.length],nn,Al,Ho,ea,xe,Te,j,M,ie,Cl>=ki.length,Re,We,b,Au,Ts,te,ee);if(jc&&(ta=jc.placedGlyphBoxes,ta&&ta.box&&ta.box.length)){Ze=!0,Kt=jc.shift;break}}return ta};ji(()=>wn(ur,je.iconBox,s.WritingMode.horizontal),()=>{const nn=je.verticalTextBox;return nn&&Ui(nn),b.allowVerticalPlacement&&!(Pt&&Pt.box&&Pt.box.length)&&ze>0&&nn?wn(nn,je.verticalIconBox,s.WritingMode.vertical):{box:null,offscreen:null,occluded:null}}),Pt&&(Ze=Pt.box,Ke=Pt.offscreen,st=Pt.occluded);const gr=on(!(!Pt||!Pt.box));if(!Ze&&this.prevPlacement){const nn=this.prevPlacement.variableOffsets[et];nn&&(this.variableOffsets[et]=nn,this.markUsedJustification(b,nn.anchor,Re,gr))}}else{const ki=(wn,gr)=>{const nn=b.getSymbolInstanceTextSize(te,Re,this.transform.zoom,We),kr=this.collisionIndex.placeCollisionBox(b,nn,wn,new s.Point(0,0),ae,j,M,ie.predicate);return kr&&kr.box&&kr.box.length&&(this.markUsedOrientation(b,gr,Re),this.placedOrientations[et]=gr),kr};ji(()=>ki(ur,s.WritingMode.horizontal),()=>{const wn=je.verticalTextBox;return b.allowVerticalPlacement&&ze>0&&wn?(Ui(wn),ki(wn,s.WritingMode.vertical)):{box:null,offscreen:null,occluded:null}}),on(!!(Pt&&Pt.box&&Pt.box.length))}}if(mi=Pt,Ze=mi&&mi.box&&mi.box.length>0,Ke=mi&&mi.offscreen,st=mi&&mi.occluded,Re.useRuntimeCollisionCircles){const on=b.text.placedSymbolArray.get(Re.centerJustifiedTextSymbolIndex>=0?Re.centerJustifiedTextSymbolIndex:Re.verticalPlacedTextSymbolIndex),ji=s.evaluateSizeForFeature(b.textSizeData,te,on),ki=I.get("text-padding");di=this.collisionIndex.placeCollisionCircles(b,ae,on,b.lineVertexArray,b.glyphOffsetArray,ji,M,P,N,p,Te,ie.predicate,Re.collisionCircleDiameter*ji/s.ONE_EM,ki,this.retainedQueryData[b.bucketInstanceId].tileID),Ze=ae||di.circles.length>0&&!di.collisionDetected,Ke=Ke&&di.offscreen,st=di.occluded}if(je.iconFeatureIndex&&(Fi=je.iconFeatureIndex),je.iconBox){const on=ji=>{Ui(ji);const ki=be&&Kt?jo(Kt.x,Kt.y,xe,Te,this.transform.angle):new s.Point(0,0),wn=b.getSymbolInstanceIconSize(ee,this.transform.zoom,Re.placedIconSymbolIndex);return this.collisionIndex.placeCollisionBox(b,wn,ji,ki,le,j,M,ie.predicate)};jt&&jt.box&&jt.box.length&&je.verticalIconBox?(Ot=on(je.verticalIconBox),rt=Ot.box.length>0):(Ot=on(je.iconBox),rt=Ot.box.length>0),Ke=Ke&&Ot.offscreen,zt=Ot.occluded}const $n=V||Re.numHorizontalGlyphVertices===0&&ze===0,Jr=K||Re.numIconVertices===0;if($n||Jr?Jr?$n||(rt=rt&&Ze):Ze=rt&&Ze:rt=Ze=rt&&Ze,Ze&&mi&&mi.box&&this.collisionIndex.insertCollisionBox(mi.box,I.get("text-ignore-placement"),b.bucketInstanceId,jt&&jt.box&&Bi?Bi:Di,ie.ID),rt&&Ot&&this.collisionIndex.insertCollisionBox(Ot.box,I.get("icon-ignore-placement"),b.bucketInstanceId,Fi,ie.ID),di&&(Ze&&this.collisionIndex.insertCollisionCircles(di.circles,I.get("text-ignore-placement"),b.bucketInstanceId,Di,ie.ID),p)){const on=b.bucketInstanceId;let ji=this.collisionCircleArrays[on];ji===void 0&&(ji=this.collisionCircleArrays[on]=new Uo);for(let ki=0;ki<di.circles.length;ki+=4)ji.circles.push(di.circles[ki+0]),ji.circles.push(di.circles[ki+1]),ji.circles.push(di.circles[ki+2]),ji.circles.push(di.collisionDetected?1:0)}const ko=b.projection.name!=="globe";ke=ke&&(ko||!st),Ne=Ne&&(ko||!zt),this.placements[et]=new js(Ze||ke,rt||Ne,Ke||b.justReloaded),a.add(et)};if(Ae){const Re=b.getSortedSymbolIndexes(this.transform.angle);for(let We=Re.length-1;We>=0;--We){const je=Re[We];tt(b.symbolInstances.get(je),je,b.collisionArrays[je])}}else for(let Re=n.symbolInstanceStart;Re<n.symbolInstanceEnd;Re++)tt(b.symbolInstances.get(Re),Re,b.collisionArrays[Re]);if(p&&b.bucketInstanceId in this.collisionCircleArrays){const Re=this.collisionCircleArrays[b.bucketInstanceId];s.invert(Re.invProjMatrix,M),Re.viewportMatrix=this.collisionIndex.getViewportMatrix()}b.justReloaded=!1}markUsedJustification(n,a,p,_){const{leftJustifiedTextSymbolIndex:b,centerJustifiedTextSymbolIndex:I,rightJustifiedTextSymbolIndex:M,verticalPlacedTextSymbolIndex:P,crossTileID:N}=p,z=s.getAnchorJustification(a),j=_===s.WritingMode.vertical?P:z==="left"?b:z==="center"?I:z==="right"?M:-1;b>=0&&(n.text.placedSymbolArray.get(b).crossTileID=j>=0&&b!==j?0:N),I>=0&&(n.text.placedSymbolArray.get(I).crossTileID=j>=0&&I!==j?0:N),M>=0&&(n.text.placedSymbolArray.get(M).crossTileID=j>=0&&M!==j?0:N),P>=0&&(n.text.placedSymbolArray.get(P).crossTileID=j>=0&&P!==j?0:N)}markUsedOrientation(n,a,p){const _=a===s.WritingMode.horizontal||a===s.WritingMode.horizontalOnly?a:0,b=a===s.WritingMode.vertical?a:0,{leftJustifiedTextSymbolIndex:I,centerJustifiedTextSymbolIndex:M,rightJustifiedTextSymbolIndex:P,verticalPlacedTextSymbolIndex:N}=p,z=n.text.placedSymbolArray;I>=0&&(z.get(I).placedOrientation=_),M>=0&&(z.get(M).placedOrientation=_),P>=0&&(z.get(P).placedOrientation=_),N>=0&&(z.get(N).placedOrientation=b)}commit(n){this.commitTime=n,this.zoomAtLastRecencyCheck=this.transform.zoom;const a=this.prevPlacement;let p=!1;this.prevZoomAdjustment=a?a.zoomAdjustment(this.transform.zoom):0;const _=a?a.symbolFadeChange(n):1,b=a?a.opacities:{},I=a?a.variableOffsets:{},M=a?a.placedOrientations:{};for(const P in this.placements){const N=this.placements[P],z=b[P];z?(this.opacities[P]=new Xr(z,_,N.text,N.icon,null,N.clipped),p=p||N.text!==z.text.placed||N.icon!==z.icon.placed):(this.opacities[P]=new Xr(null,_,N.text,N.icon,N.skipFade,N.clipped),p=p||N.text||N.icon)}for(const P in b){const N=b[P];if(!this.opacities[P]){const z=new Xr(N,_,!1,!1);z.isHidden()||(this.opacities[P]=z,p=p||N.text.placed||N.icon.placed)}}for(const P in I)this.variableOffsets[P]||!this.opacities[P]||this.opacities[P].isHidden()||(this.variableOffsets[P]=I[P]);for(const P in M)this.placedOrientations[P]||!this.opacities[P]||this.opacities[P].isHidden()||(this.placedOrientations[P]=M[P]);p?this.lastPlacementChangeTime=n:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=a?a.lastPlacementChangeTime:n)}updateLayerOpacities(n,a){const p=new Set;for(const _ of a){const b=_.getBucket(n);b&&_.latestFeatureIndex&&n.id===b.layerIds[0]&&this.updateBucketOpacities(b,p,_.collisionBoxArray)}}updateBucketOpacities(n,a,p){n.hasTextData()&&n.text.opacityVertexArray.clear(),n.hasIconData()&&n.icon.opacityVertexArray.clear(),n.hasIconCollisionBoxData()&&n.iconCollisionBox.collisionVertexArray.clear(),n.hasTextCollisionBoxData()&&n.textCollisionBox.collisionVertexArray.clear();const _=n.layers[0].layout,b=!!n.layers[0].dynamicFilter(),I=new Xr(null,0,!1,!1,!0),M=_.get("text-allow-overlap"),P=_.get("icon-allow-overlap"),N=_.get("text-variable-anchor"),z=_.get("text-rotation-alignment")==="map",j=_.get("text-pitch-alignment")==="map",Y=_.get("icon-text-fit")!=="none",J=new Xr(null,0,M&&(P||!n.hasIconData()||_.get("icon-optional")),P&&(M||!n.hasTextData()||_.get("text-optional")),!0);!n.collisionArrays&&p&&(n.hasIconCollisionBoxData()||n.hasTextCollisionBoxData())&&n.deserializeCollisionBoxes(p);const te=(ie,V,K)=>{for(let ae=0;ae<V/4;ae++)ie.opacityVertexArray.emplaceBack(K)};let ee=0;for(let ie=0;ie<n.symbolInstances.length;ie++){const V=n.symbolInstances.get(ie),{numHorizontalGlyphVertices:K,numVerticalGlyphVertices:ae,crossTileID:le,numIconVertices:xe}=V,Te=a.has(le);let be=this.opacities[le];Te?be=I:be||(be=J,this.opacities[le]=be),a.add(le);const Ae=K>0||ae>0,ke=xe>0,Ne=this.placedOrientations[le],tt=Ne===s.WritingMode.vertical,Re=Ne===s.WritingMode.horizontal||Ne===s.WritingMode.horizontalOnly;if(!Ae&&!ke||be.isHidden()||ee++,Ae){const We=Ei(be.text);te(n.text,K,tt?Li:We),te(n.text,ae,Re?Li:We);const je=be.text.isHidden(),{leftJustifiedTextSymbolIndex:et,centerJustifiedTextSymbolIndex:ze,rightJustifiedTextSymbolIndex:Ze,verticalPlacedTextSymbolIndex:rt}=V,Ke=n.text.placedSymbolArray,st=je||tt?1:0;et>=0&&(Ke.get(et).hidden=st),ze>=0&&(Ke.get(ze).hidden=st),Ze>=0&&(Ke.get(Ze).hidden=st),rt>=0&&(Ke.get(rt).hidden=je||Re?1:0);const zt=this.variableOffsets[le];zt&&this.markUsedJustification(n,zt.anchor,V,Ne);const Kt=this.placedOrientations[le];Kt&&(this.markUsedJustification(n,"left",V,Kt),this.markUsedOrientation(n,Kt,V))}if(ke){const We=Ei(be.icon),{placedIconSymbolIndex:je,verticalPlacedIconSymbolIndex:et}=V,ze=n.icon.placedSymbolArray,Ze=be.icon.isHidden()?1:0;je>=0&&(te(n.icon,xe,tt?Li:We),ze.get(je).hidden=Ze),et>=0&&(te(n.icon,V.numVerticalIconVertices,Re?Li:We),ze.get(et).hidden=Ze)}if(n.hasIconCollisionBoxData()||n.hasTextCollisionBoxData()){const We=n.collisionArrays[ie];if(We){let je=new s.Point(0,0),et=!0;if(We.textBox||We.verticalTextBox){if(N){const Ze=this.variableOffsets[le];Ze?(je=Vs(Ze.anchor,Ze.width,Ze.height,Ze.textOffset,Ze.textScale),z&&je._rotate(j?this.transform.angle:-this.transform.angle)):et=!1}b&&(et=!be.clipped),We.textBox&&On(n.textCollisionBox.collisionVertexArray,be.text.placed,!et||tt,je.x,je.y),We.verticalTextBox&&On(n.textCollisionBox.collisionVertexArray,be.text.placed,!et||Re,je.x,je.y)}const ze=et&&!!(!Re&&We.verticalIconBox);We.iconBox&&On(n.iconCollisionBox.collisionVertexArray,be.icon.placed,ze,Y?je.x:0,Y?je.y:0),We.verticalIconBox&&On(n.iconCollisionBox.collisionVertexArray,be.icon.placed,!ze,Y?je.x:0,Y?je.y:0)}}}if(n.fullyClipped=ee===0,n.sortFeatures(this.transform.angle),this.retainedQueryData[n.bucketInstanceId]&&(this.retainedQueryData[n.bucketInstanceId].featureSortOrder=n.featureSortOrder),n.hasTextData()&&n.text.opacityVertexBuffer&&n.text.opacityVertexBuffer.updateData(n.text.opacityVertexArray),n.hasIconData()&&n.icon.opacityVertexBuffer&&n.icon.opacityVertexBuffer.updateData(n.icon.opacityVertexArray),n.hasIconCollisionBoxData()&&n.iconCollisionBox.collisionVertexBuffer&&n.iconCollisionBox.collisionVertexBuffer.updateData(n.iconCollisionBox.collisionVertexArray),n.hasTextCollisionBoxData()&&n.textCollisionBox.collisionVertexBuffer&&n.textCollisionBox.collisionVertexBuffer.updateData(n.textCollisionBox.collisionVertexArray),n.bucketInstanceId in this.collisionCircleArrays){const ie=this.collisionCircleArrays[n.bucketInstanceId];n.placementInvProjMatrix=ie.invProjMatrix,n.placementViewportMatrix=ie.viewportMatrix,n.collisionCircleArray=ie.circles,delete this.collisionCircleArrays[n.bucketInstanceId]}}symbolFadeChange(n){return this.fadeDuration===0?1:(n-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(n){return Math.max(0,(this.transform.zoom-n)/1.5)}hasTransitions(n){return this.stale||n-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(n,a){const p=this.zoomAtLastRecencyCheck===a?1-this.zoomAdjustment(a):1;return this.zoomAtLastRecencyCheck=a,this.commitTime+this.fadeDuration*p>n}setStale(){this.stale=!0}}function On(h,n,a,p,_){h.emplaceBack(n?1:0,a?1:0,p||0,_||0),h.emplaceBack(n?1:0,a?1:0,p||0,_||0),h.emplaceBack(n?1:0,a?1:0,p||0,_||0),h.emplaceBack(n?1:0,a?1:0,p||0,_||0)}const zn=Math.pow(2,25),hn=Math.pow(2,24),cl=Math.pow(2,17),va=Math.pow(2,16),Nn=Math.pow(2,9),wr=Math.pow(2,8),hl=Math.pow(2,1);function Ei(h){if(h.opacity===0&&!h.placed)return 0;if(h.opacity===1&&h.placed)return 4294967295;const n=h.placed?1:0,a=Math.floor(127*h.opacity);return a*zn+n*hn+a*cl+n*va+a*Nn+n*wr+a*hl+n}const Li=0;class Vo{constructor(n){this._sortAcrossTiles=n.layout.get("symbol-z-order")!=="viewport-y"&&n.layout.get("symbol-sort-key").constantOr(1)!==void 0,this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs=new Set,this._bucketParts=[]}continuePlacement(n,a,p,_,b){const I=this._bucketParts;for(;this._currentTileIndex<n.length;)if(a.getBucketParts(I,_,n[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,b())return!0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,I.sort((M,P)=>M.sortKey-P.sortKey));this._currentPartIndex<I.length;){const M=I[this._currentPartIndex];if(a.placeLayerBucketPart(M,this._seenCrossTileIDs,p,M.symbolInstanceStart===0),this._currentPartIndex++,b())return!0}return!1}}class xa{constructor(n,a,p,_,b,I,M,P){this.placement=new Yn(n,b,I,M,P),this._currentPlacementIndex=a.length-1,this._forceFullPlacement=p,this._showCollisionBoxes=_,this._done=!1}isDone(){return this._done}continuePlacement(n,a,p){const _=s.exported.now(),b=()=>{const I=s.exported.now()-_;return!this._forceFullPlacement&&I>2};for(;this._currentPlacementIndex>=0;){const I=a[n[this._currentPlacementIndex]],M=this.placement.collisionIndex.transform.zoom;if(I.type==="symbol"&&(!I.minzoom||I.minzoom<=M)&&(!I.maxzoom||I.maxzoom>M)){if(this._inProgressLayer||(this._inProgressLayer=new Vo(I)),this._inProgressLayer.continuePlacement(p[I.source],this.placement,this._showCollisionBoxes,I,b))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(n){return this.placement.commit(n),this.placement}}const Nr=512/s.EXTENT/2;class Pn{constructor(n,a,p){this.tileID=n,this.bucketInstanceId=p,this.index=new s.KDBush(a.length,16,Int32Array),this.keys=[],this.crossTileIDs=[];const _=n.canonical.x*s.EXTENT,b=n.canonical.y*s.EXTENT;for(let I=0;I<a.length;I++){const{key:M,crossTileID:P,tileAnchorX:N,tileAnchorY:z}=a.get(I),j=Math.floor((_+N)*Nr),Y=Math.floor((b+z)*Nr);this.index.add(j,Y),this.keys.push(M),this.crossTileIDs.push(P)}this.index.finish()}findMatches(n,a,p){const _=this.tileID.canonical.z<a.canonical.z?1:Math.pow(2,this.tileID.canonical.z-a.canonical.z),b=Nr/Math.pow(2,a.canonical.z-this.tileID.canonical.z),I=a.canonical.x*s.EXTENT,M=a.canonical.y*s.EXTENT;for(let P=0;P<n.length;P++){const N=n.get(P);if(N.crossTileID)continue;const{key:z,tileAnchorX:j,tileAnchorY:Y}=N,J=Math.floor((I+j)*b),te=Math.floor((M+Y)*b),ee=this.index.range(J-_,te-_,J+_,te+_);for(const ie of ee){const V=this.crossTileIDs[ie];if(this.keys[ie]===z&&!p.has(V)){p.add(V),N.crossTileID=V;break}}}}}class Bn{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class ba{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(n){const a=Math.round((n-this.lng)/360);if(a!==0)for(const p in this.indexes){const _=this.indexes[p],b={};for(const I in _){const M=_[I];M.tileID=M.tileID.unwrapTo(M.tileID.wrap+a),b[M.tileID.key]=M}this.indexes[p]=b}this.lng=n}addBucket(n,a,p){if(this.indexes[n.overscaledZ]&&this.indexes[n.overscaledZ][n.key]){if(this.indexes[n.overscaledZ][n.key].bucketInstanceId===a.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(n.overscaledZ,this.indexes[n.overscaledZ][n.key])}for(let b=0;b<a.symbolInstances.length;b++)a.symbolInstances.get(b).crossTileID=0;this.usedCrossTileIDs[n.overscaledZ]||(this.usedCrossTileIDs[n.overscaledZ]=new Set);const _=this.usedCrossTileIDs[n.overscaledZ];for(const b in this.indexes){const I=this.indexes[b];if(Number(b)>n.overscaledZ)for(const M in I){const P=I[M];P.tileID.isChildOf(n)&&P.findMatches(a.symbolInstances,n,_)}else{const M=I[n.scaledTo(Number(b)).key];M&&M.findMatches(a.symbolInstances,n,_)}}for(let b=0;b<a.symbolInstances.length;b++){const I=a.symbolInstances.get(b);I.crossTileID||(I.crossTileID=p.generate(),_.add(I.crossTileID))}return this.indexes[n.overscaledZ]===void 0&&(this.indexes[n.overscaledZ]={}),this.indexes[n.overscaledZ][n.key]=new Pn(n,a.symbolInstances,a.bucketInstanceId),!0}removeBucketCrossTileIDs(n,a){for(const p of a.crossTileIDs)this.usedCrossTileIDs[n].delete(p)}removeStaleBuckets(n){let a=!1;for(const p in this.indexes){const _=this.indexes[p];for(const b in _)n[_[b].bucketInstanceId]||(this.removeBucketCrossTileIDs(p,_[b]),delete _[b],a=!0)}return a}}class Br{constructor(){this.layerIndexes={},this.crossTileIDs=new Bn,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}}addLayer(n,a,p,_){let b=this.layerIndexes[n.id];b===void 0&&(b=this.layerIndexes[n.id]=new ba);let I=!1;const M={};_.name!=="globe"&&b.handleWrapJump(p);for(const P of a){const N=P.getBucket(n);N&&n.id===N.layerIds[0]&&(N.bucketInstanceId||(N.bucketInstanceId=++this.maxBucketInstanceId),b.addBucket(P.tileID,N,this.crossTileIDs)&&(I=!0),M[N.bucketInstanceId]=!0)}return b.removeStaleBuckets(M)&&(I=!0),I}pruneUnusedLayers(n){const a={};n.forEach(p=>{a[p]=!0});for(const p in this.layerIndexes)a[p]||delete this.layerIndexes[p]}}const so=(h,n)=>s.emitValidationErrors(h,n&&n.filter(a=>a.identifier!=="source.canvas")),Gs=s.pick(xi,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData","setTerrain","setFog","setProjection"]),vc=s.pick(xi,["setCenter","setZoom","setBearing","setPitch"]),wa={version:8,layers:[],sources:{}},rr={fill:!0,line:!0,background:!0,hillshade:!0,raster:!0};class mr extends s.Evented{constructor(n,a={}){super(),this.map=n,this.dispatcher=new St(br(),this),this.imageManager=new ti,this.imageManager.setEventedParent(this),this.glyphManager=new s.GlyphManager(n._requestManager,a.localFontFamily?s.LocalGlyphMode.all:a.localIdeographFontFamily?s.LocalGlyphMode.ideographs:s.LocalGlyphMode.none,a.localFontFamily||a.localIdeographFontFamily),this.crossTileSymbolIndex=new Br,this._layers={},this._num3DLayers=0,this._numSymbolLayers=0,this._numCircleLayers=0,this._serializedLayers={},this._sourceCaches={},this._otherSourceCaches={},this._symbolSourceCaches={},this._loaded=!1,this._availableImages=[],this._order=[],this._drapedFirstOrder=[],this._markersNeedUpdate=!1,this._resetUpdates(),this.dispatcher.broadcast("setReferrer",s.getReferrer());const p=this;this._rtlTextPluginCallback=mr.registerForPluginStateChange(_=>{p.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:_.pluginStatus,pluginURL:_.pluginURL},(b,I)=>{if(s.triggerPluginCompletionEvent(b),I&&I.every(M=>M))for(const M in p._sourceCaches){const P=p._sourceCaches[M],N=P.getSource().type;N!=="vector"&&N!=="geojson"||P.reload()}})}),this.on("data",_=>{if(_.dataType!=="source"||_.sourceDataType!=="metadata")return;const b=this.getSource(_.sourceId);if(b&&b.vectorLayerIds)for(const I in this._layers){const M=this._layers[I];M.source===b.id&&this._validateLayer(M)}})}loadURL(n,a={}){this.fire(new s.Event("dataloading",{dataType:"style"}));const p=typeof a.validate=="boolean"?a.validate:!s.isMapboxURL(n);n=this.map._requestManager.normalizeStyleURL(n,a.accessToken);const _=this.map._requestManager.transformRequest(n,s.ResourceType.Style);this._request=s.getJSON(_,(b,I)=>{this._request=null,b?this.fire(new s.ErrorEvent(b)):I&&this._load(I,p)})}loadJSON(n,a={}){this.fire(new s.Event("dataloading",{dataType:"style"})),this._request=s.exported.frame(()=>{this._request=null,this._load(n,a.validate!==!1)})}loadEmpty(){this.fire(new s.Event("dataloading",{dataType:"style"})),this._load(wa,!1)}_updateLayerCount(n,a){const p=a?1:-1;n.is3D()&&(this._num3DLayers+=p),n.type==="circle"&&(this._numCircleLayers+=p),n.type==="symbol"&&(this._numSymbolLayers+=p)}_load(n,a){if(a&&so(this,s.validateStyle(n)))return;this._loaded=!0,this.stylesheet=s.clone$1(n),this._updateMapProjection();for(const _ in n.sources)this.addSource(_,n.sources[_],{validate:!1});this._changed=!1,n.sprite?this._loadSprite(n.sprite):(this.imageManager.setLoaded(!0),this.dispatcher.broadcast("spriteLoaded",!0)),this.glyphManager.setURL(n.glyphs);const p=Ns(this.stylesheet.layers);this._order=p.map(_=>_.id),this._layers={},this._serializedLayers={};for(const _ of p){const b=s.createStyleLayer(_);b.setEventedParent(this,{layer:{id:b.id}}),this._layers[b.id]=b,this._serializedLayers[b.id]=b.serialize(),this._updateLayerCount(b,!0)}this.dispatcher.broadcast("setLayers",this._serializeLayers(this._order)),this.light=new Xt(this.stylesheet.light),this.stylesheet.terrain&&!this.terrainSetForDrapingOnly()&&this._createTerrain(this.stylesheet.terrain,1),this.stylesheet.fog&&this._createFog(this.stylesheet.fog),this._updateDrapeFirstLayers(),this.fire(new s.Event("data",{dataType:"style"})),this.fire(new s.Event("style.load"))}terrainSetForDrapingOnly(){return!!this.terrain&&this.terrain.drapeRenderMode===0}setProjection(n){n?this.stylesheet.projection=n:delete this.stylesheet.projection,this._updateMapProjection()}applyProjectionUpdate(){this._loaded&&(this.dispatcher.broadcast("setProjection",this.map.transform.projectionOptions),this.map.transform.projection.requiresDraping?this.getTerrain()||this.stylesheet.terrain||this.setTerrainForDraping():this.terrainSetForDrapingOnly()&&this.setTerrain(null))}_updateMapProjection(){this.map._useExplicitProjection?this.applyProjectionUpdate():this.map._prioritizeAndUpdateProjection(null,this.stylesheet.projection)}_loadSprite(n){this._spriteRequest=function(a,p,_){let b,I,M;const P=s.exported.devicePixelRatio>1?"@2x":"";let N=s.getJSON(p.transformRequest(p.normalizeSpriteURL(a,P,".json"),s.ResourceType.SpriteJSON),(Y,J)=>{N=null,M||(M=Y,b=J,j())}),z=s.getImage(p.transformRequest(p.normalizeSpriteURL(a,P,".png"),s.ResourceType.SpriteImage),(Y,J)=>{z=null,M||(M=Y,I=J,j())});function j(){if(M)_(M);else if(b&&I){const Y=s.exported.getImageData(I),J={};for(const te in b){const{width:ee,height:ie,x:V,y:K,sdf:ae,pixelRatio:le,stretchX:xe,stretchY:Te,content:be}=b[te],Ae=new s.RGBAImage({width:ee,height:ie});s.RGBAImage.copy(Y,Ae,{x:V,y:K},{x:0,y:0},{width:ee,height:ie}),J[te]={data:Ae,pixelRatio:le,sdf:ae,stretchX:xe,stretchY:Te,content:be}}_(null,J)}}return{cancel(){N&&(N.cancel(),N=null),z&&(z.cancel(),z=null)}}}(n,this.map._requestManager,(a,p)=>{if(this._spriteRequest=null,a)this.fire(new s.ErrorEvent(a));else if(p)for(const _ in p)this.imageManager.addImage(_,p[_]);this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),this.dispatcher.broadcast("setImages",this._availableImages),this.dispatcher.broadcast("spriteLoaded",!0),this.fire(new s.Event("data",{dataType:"style"}))})}_validateLayer(n){const a=this.getSource(n.source);if(!a)return;const p=n.sourceLayer;p&&(a.type==="geojson"||a.vectorLayerIds&&a.vectorLayerIds.indexOf(p)===-1)&&this.fire(new s.ErrorEvent(new Error(`Source layer "${p}" does not exist on source "${a.id}" as specified by style layer "${n.id}"`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(const n in this._sourceCaches)if(!this._sourceCaches[n].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeLayers(n){const a=[];for(const p of n){const _=this._layers[p];_.type!=="custom"&&a.push(_.serialize())}return a}hasTransitions(){if(this.light&&this.light.hasTransition()||this.fog&&this.fog.hasTransition())return!0;for(const n in this._sourceCaches)if(this._sourceCaches[n].hasTransition())return!0;for(const n in this._layers)if(this._layers[n].hasTransition())return!0;return!1}get order(){return this.map._optimizeForTerrain&&this.terrain?this._drapedFirstOrder:this._order}isLayerDraped(n){return!!this.terrain&&(typeof n.isLayerDraped=="function"?n.isLayerDraped():rr[n.type])}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading")}update(n){if(!this._loaded)return;const a=this._changed;if(this._changed){const _=Object.keys(this._updatedLayers),b=Object.keys(this._removedLayers);(_.length||b.length)&&this._updateWorkerLayers(_,b);for(const I in this._updatedSources){const M=this._updatedSources[I];M==="reload"?this._reloadSource(I):M==="clear"&&this._clearSource(I)}this._updateTilesForChangedImages();for(const I in this._updatedPaintProps)this._layers[I].updateTransitions(n);this.light.updateTransitions(n),this.fog&&this.fog.updateTransitions(n),this._resetUpdates()}const p={};for(const _ in this._sourceCaches){const b=this._sourceCaches[_];p[_]=b.used,b.used=!1}for(const _ of this._order){const b=this._layers[_];if(b.recalculate(n,this._availableImages),!b.isHidden(n.zoom)){const M=this._getLayerSourceCache(b);M&&(M.used=!0)}const I=this.map.painter;if(I){const M=b.getProgramIds();if(!M)continue;const P=b.getProgramConfiguration(n.zoom);for(const N of M)I.useProgram(N,P)}}for(const _ in p){const b=this._sourceCaches[_];p[_]!==b.used&&b.getSource().fire(new s.Event("data",{sourceDataType:"visibility",dataType:"source",sourceId:b.getSource().id}))}this.light.recalculate(n),this.terrain&&this.terrain.recalculate(n),this.fog&&this.fog.recalculate(n),this.z=n.zoom,this._markersNeedUpdate&&(this._updateMarkersOpacity(),this._markersNeedUpdate=!1),a&&this.fire(new s.Event("data",{dataType:"style"}))}_updateTilesForChangedImages(){const n=Object.keys(this._changedImages);if(n.length){for(const a in this._sourceCaches)this._sourceCaches[a].reloadTilesForDependencies(["icons","patterns"],n);this._changedImages={}}}_updateWorkerLayers(n,a){this.dispatcher.broadcast("updateLayers",{layers:this._serializeLayers(n),removedIds:a})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={}}setState(n){if(this._checkLoaded(),so(this,s.validateStyle(n)))return!1;(n=s.clone$1(n)).layers=Ns(n.layers);const a=function(_,b){if(!_)return[{command:xi.setStyle,args:[b]}];let I=[];try{if(!Z(_.version,b.version))return[{command:xi.setStyle,args:[b]}];Z(_.center,b.center)||I.push({command:xi.setCenter,args:[b.center]}),Z(_.zoom,b.zoom)||I.push({command:xi.setZoom,args:[b.zoom]}),Z(_.bearing,b.bearing)||I.push({command:xi.setBearing,args:[b.bearing]}),Z(_.pitch,b.pitch)||I.push({command:xi.setPitch,args:[b.pitch]}),Z(_.sprite,b.sprite)||I.push({command:xi.setSprite,args:[b.sprite]}),Z(_.glyphs,b.glyphs)||I.push({command:xi.setGlyphs,args:[b.glyphs]}),Z(_.transition,b.transition)||I.push({command:xi.setTransition,args:[b.transition]}),Z(_.light,b.light)||I.push({command:xi.setLight,args:[b.light]}),Z(_.fog,b.fog)||I.push({command:xi.setFog,args:[b.fog]}),Z(_.projection,b.projection)||I.push({command:xi.setProjection,args:[b.projection]});const M={},P=[];(function(j,Y,J,te){let ee;for(ee in Y=Y||{},j=j||{})j.hasOwnProperty(ee)&&(Y.hasOwnProperty(ee)||Bs(ee,J,te));for(ee in Y){if(!Y.hasOwnProperty(ee))continue;const ie=Y[ee];j.hasOwnProperty(ee)?Z(j[ee],ie)||(j[ee].type==="geojson"&&ie.type==="geojson"&&Bo(j,Y,ee)?J.push({command:xi.setGeoJSONSourceData,args:[ee,ie.data]}):ll(ee,Y,J,te)):dn(ee,Y,J)}})(_.sources,b.sources,P,M);const N=[];_.layers&&_.layers.forEach(j=>{j.source&&M[j.source]?I.push({command:xi.removeLayer,args:[j.id]}):N.push(j)});let z=_.terrain;z&&M[z.source]&&(I.push({command:xi.setTerrain,args:[void 0]}),z=void 0),I=I.concat(P),Z(z,b.terrain)||I.push({command:xi.setTerrain,args:[b.terrain]}),function(j,Y,J){Y=Y||[];const te=(j=j||[]).map(Or),ee=Y.map(Or),ie=j.reduce(Fs,{}),V=Y.reduce(Fs,{}),K=te.slice(),ae=Object.create(null);let le,xe,Te,be,Ae,ke,Ne;for(le=0,xe=0;le<te.length;le++)Te=te[le],V.hasOwnProperty(Te)?xe++:(J.push({command:xi.removeLayer,args:[Te]}),K.splice(K.indexOf(Te,xe),1));for(le=0,xe=0;le<ee.length;le++)Te=ee[ee.length-1-le],K[K.length-1-le]!==Te&&(ie.hasOwnProperty(Te)?(J.push({command:xi.removeLayer,args:[Te]}),K.splice(K.lastIndexOf(Te,K.length-xe),1)):xe++,ke=K[K.length-le],J.push({command:xi.addLayer,args:[V[Te],ke]}),K.splice(K.length-le,0,Te),ae[Te]=!0);for(le=0;le<ee.length;le++)if(Te=ee[le],be=ie[Te],Ae=V[Te],!ae[Te]&&!Z(be,Ae))if(Z(be.source,Ae.source)&&Z(be["source-layer"],Ae["source-layer"])&&Z(be.type,Ae.type)){for(Ne in ir(be.layout,Ae.layout,J,Te,null,xi.setLayoutProperty),ir(be.paint,Ae.paint,J,Te,null,xi.setPaintProperty),Z(be.filter,Ae.filter)||J.push({command:xi.setFilter,args:[Te,Ae.filter]}),Z(be.minzoom,Ae.minzoom)&&Z(be.maxzoom,Ae.maxzoom)||J.push({command:xi.setLayerZoomRange,args:[Te,Ae.minzoom,Ae.maxzoom]}),be)be.hasOwnProperty(Ne)&&Ne!=="layout"&&Ne!=="paint"&&Ne!=="filter"&&Ne!=="metadata"&&Ne!=="minzoom"&&Ne!=="maxzoom"&&(Ne.indexOf("paint.")===0?ir(be[Ne],Ae[Ne],J,Te,Ne.slice(6),xi.setPaintProperty):Z(be[Ne],Ae[Ne])||J.push({command:xi.setLayerProperty,args:[Te,Ne,Ae[Ne]]}));for(Ne in Ae)Ae.hasOwnProperty(Ne)&&!be.hasOwnProperty(Ne)&&Ne!=="layout"&&Ne!=="paint"&&Ne!=="filter"&&Ne!=="metadata"&&Ne!=="minzoom"&&Ne!=="maxzoom"&&(Ne.indexOf("paint.")===0?ir(be[Ne],Ae[Ne],J,Te,Ne.slice(6),xi.setPaintProperty):Z(be[Ne],Ae[Ne])||J.push({command:xi.setLayerProperty,args:[Te,Ne,Ae[Ne]]}))}else J.push({command:xi.removeLayer,args:[Te]}),ke=K[K.lastIndexOf(Te)+1],J.push({command:xi.addLayer,args:[Ae,ke]})}(N,b.layers,I)}catch(M){console.warn("Unable to compute style diff:",M),I=[{command:xi.setStyle,args:[b]}]}return I}(this.serialize(),n).filter(_=>!(_.command in vc));if(a.length===0)return!1;const p=a.filter(_=>!(_.command in Gs));if(p.length>0)throw new Error(`Unimplemented: ${p.map(_=>_.command).join(", ")}.`);return a.forEach(_=>{_.command!=="setTransition"&&_.command!=="setProjection"&&this[_.command].apply(this,_.args)}),this.stylesheet=n,this._updateMapProjection(),!0}addImage(n,a){return this.getImage(n)?this.fire(new s.ErrorEvent(new Error("An image with this name already exists."))):(this.imageManager.addImage(n,a),this._afterImageUpdated(n),this)}updateImage(n,a){this.imageManager.updateImage(n,a)}getImage(n){return this.imageManager.getImage(n)}removeImage(n){return this.getImage(n)?(this.imageManager.removeImage(n),this._afterImageUpdated(n),this):this.fire(new s.ErrorEvent(new Error("No image with this name exists.")))}_afterImageUpdated(n){this._availableImages=this.imageManager.listImages(),this._changedImages[n]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new s.Event("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this._availableImages.slice()}addSource(n,a,p={}){if(this._checkLoaded(),this.getSource(n)!==void 0)throw new Error("There is already a source with this ID");if(!a.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(a).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(a.type)>=0&&this._validate(s.validateSource,`sources.${n}`,a,null,p))return;this.map&&this.map._collectResourceTiming&&(a.collectResourceTiming=!0);const _=ui(n,a,this.dispatcher,this);_.setEventedParent(this,()=>({isSourceLoaded:this._isSourceCacheLoaded(n),source:_.serialize(),sourceId:n}));const b=I=>{const M=(I?"symbol:":"other:")+n,P=this._sourceCaches[M]=new s.SourceCache(M,_,I);(I?this._symbolSourceCaches:this._otherSourceCaches)[n]=P,P.style=this,P.onAdd(this.map)};b(!1),a.type!=="vector"&&a.type!=="geojson"||b(!0),_.onAdd&&_.onAdd(this.map),this._changed=!0}removeSource(n){this._checkLoaded();const a=this.getSource(n);if(!a)throw new Error("There is no source with this ID");for(const _ in this._layers)if(this._layers[_].source===n)return this.fire(new s.ErrorEvent(new Error(`Source "${n}" cannot be removed while layer "${_}" is using it.`)));if(this.terrain&&this.terrain.get().source===n)return this.fire(new s.ErrorEvent(new Error(`Source "${n}" cannot be removed while terrain is using it.`)));const p=this._getSourceCaches(n);for(const _ of p)delete this._sourceCaches[_.id],delete this._updatedSources[_.id],_.fire(new s.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:_.getSource().id})),_.setEventedParent(null),_.clearTiles();return delete this._otherSourceCaches[n],delete this._symbolSourceCaches[n],a.setEventedParent(null),a.onRemove&&a.onRemove(this.map),this._changed=!0,this}setGeoJSONSourceData(n,a){this._checkLoaded(),this.getSource(n).setData(a),this._changed=!0}getSource(n){const a=this._getSourceCache(n);return a&&a.getSource()}_getSources(){const n=[];for(const a in this._otherSourceCaches){const p=this._getSourceCache(a);p&&n.push(p.getSource())}return n}addLayer(n,a,p={}){this._checkLoaded();const _=n.id;if(this.getLayer(_))return void this.fire(new s.ErrorEvent(new Error(`Layer with id "${_}" already exists on this map`)));let b;if(n.type==="custom"){if(so(this,s.validateCustomStyleLayer(n)))return;b=s.createStyleLayer(n)}else{if(typeof n.source=="object"&&(this.addSource(_,n.source),n=s.clone$1(n),n=s.extend(n,{source:_})),this._validate(s.validateLayer,`layers.${_}`,n,{arrayIndex:-1},p))return;b=s.createStyleLayer(n),this._validateLayer(b),b.setEventedParent(this,{layer:{id:_}}),this._serializedLayers[b.id]=b.serialize(),this._updateLayerCount(b,!0)}const I=a?this._order.indexOf(a):this._order.length;if(a&&I===-1)return void this.fire(new s.ErrorEvent(new Error(`Layer with id "${a}" does not exist on this map.`)));this._order.splice(I,0,_),this._layerOrderChanged=!0,this._layers[_]=b;const M=this._getLayerSourceCache(b);if(this._removedLayers[_]&&b.source&&M&&b.type!=="custom"){const P=this._removedLayers[_];delete this._removedLayers[_],P.type!==b.type?this._updatedSources[b.source]="clear":(this._updatedSources[b.source]="reload",M.pause())}this._updateLayer(b),b.onAdd&&b.onAdd(this.map),this._updateDrapeFirstLayers()}moveLayer(n,a){if(this._checkLoaded(),this._changed=!0,!this._layers[n])return void this.fire(new s.ErrorEvent(new Error(`The layer '${n}' does not exist in the map's style and cannot be moved.`)));if(n===a)return;const p=this._order.indexOf(n);this._order.splice(p,1);const _=a?this._order.indexOf(a):this._order.length;a&&_===-1?this.fire(new s.ErrorEvent(new Error(`Layer with id "${a}" does not exist on this map.`))):(this._order.splice(_,0,n),this._layerOrderChanged=!0,this._updateDrapeFirstLayers())}removeLayer(n){this._checkLoaded();const a=this._layers[n];if(!a)return void this.fire(new s.ErrorEvent(new Error(`The layer '${n}' does not exist in the map's style and cannot be removed.`)));a.setEventedParent(null),this._updateLayerCount(a,!1);const p=this._order.indexOf(n);this._order.splice(p,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[n]=a,delete this._layers[n],delete this._serializedLayers[n],delete this._updatedLayers[n],delete this._updatedPaintProps[n],a.onRemove&&a.onRemove(this.map),this._updateDrapeFirstLayers()}getLayer(n){return this._layers[n]}hasLayer(n){return n in this._layers}hasLayerType(n){for(const a in this._layers)if(this._layers[a].type===n)return!0;return!1}setLayerZoomRange(n,a,p){this._checkLoaded();const _=this.getLayer(n);_?_.minzoom===a&&_.maxzoom===p||(a!=null&&(_.minzoom=a),p!=null&&(_.maxzoom=p),this._updateLayer(_)):this.fire(new s.ErrorEvent(new Error(`The layer '${n}' does not exist in the map's style and cannot have zoom extent.`)))}setFilter(n,a,p={}){this._checkLoaded();const _=this.getLayer(n);if(_){if(!Z(_.filter,a))return a==null?(_.filter=void 0,void this._updateLayer(_)):void(this._validate(s.validateFilter,`layers.${_.id}.filter`,a,{layerType:_.type},p)||(_.filter=s.clone$1(a),this._updateLayer(_)))}else this.fire(new s.ErrorEvent(new Error(`The layer '${n}' does not exist in the map's style and cannot be filtered.`)))}getFilter(n){const a=this.getLayer(n);return a&&s.clone$1(a.filter)}setLayoutProperty(n,a,p,_={}){this._checkLoaded();const b=this.getLayer(n);b?Z(b.getLayoutProperty(a),p)||(b.setLayoutProperty(a,p,_),this._updateLayer(b)):this.fire(new s.ErrorEvent(new Error(`The layer '${n}' does not exist in the map's style and cannot be styled.`)))}getLayoutProperty(n,a){const p=this.getLayer(n);if(p)return p.getLayoutProperty(a);this.fire(new s.ErrorEvent(new Error(`The layer '${n}' does not exist in the map's style.`)))}setPaintProperty(n,a,p,_={}){this._checkLoaded();const b=this.getLayer(n);b?Z(b.getPaintProperty(a),p)||(b.setPaintProperty(a,p,_)&&this._updateLayer(b),this._changed=!0,this._updatedPaintProps[n]=!0):this.fire(new s.ErrorEvent(new Error(`The layer '${n}' does not exist in the map's style and cannot be styled.`)))}getPaintProperty(n,a){const p=this.getLayer(n);return p&&p.getPaintProperty(a)}setFeatureState(n,a){this._checkLoaded();const p=n.source,_=n.sourceLayer,b=this.getSource(p);if(!b)return void this.fire(new s.ErrorEvent(new Error(`The source '${p}' does not exist in the map's style.`)));const I=b.type;if(I==="geojson"&&_)return void this.fire(new s.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));if(I==="vector"&&!_)return void this.fire(new s.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));n.id===void 0&&this.fire(new s.ErrorEvent(new Error("The feature id parameter must be provided.")));const M=this._getSourceCaches(p);for(const P of M)P.setFeatureState(_,n.id,a)}removeFeatureState(n,a){this._checkLoaded();const p=n.source,_=this.getSource(p);if(!_)return void this.fire(new s.ErrorEvent(new Error(`The source '${p}' does not exist in the map's style.`)));const b=_.type,I=b==="vector"?n.sourceLayer:void 0;if(b==="vector"&&!I)return void this.fire(new s.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));if(a&&typeof n.id!="string"&&typeof n.id!="number")return void this.fire(new s.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));const M=this._getSourceCaches(p);for(const P of M)P.removeFeatureState(I,n.id,a)}getFeatureState(n){this._checkLoaded();const a=n.source,p=n.sourceLayer,_=this.getSource(a);if(_){if(_.type!=="vector"||p)return n.id===void 0&&this.fire(new s.ErrorEvent(new Error("The feature id parameter must be provided."))),this._getSourceCaches(a)[0].getFeatureState(p,n.id);this.fire(new s.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new s.ErrorEvent(new Error(`The source '${a}' does not exist in the map's style.`)))}getTransition(){return s.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){const n={};for(const a in this._sourceCaches){const p=this._sourceCaches[a].getSource();n[p.id]||(n[p.id]=p.serialize())}return s.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,terrain:this.getTerrain()||void 0,fog:this.stylesheet.fog,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,projection:this.stylesheet.projection,sources:n,layers:this._serializeLayers(this._order)},a=>a!==void 0)}_updateLayer(n){this._updatedLayers[n.id]=!0;const a=this._getLayerSourceCache(n);n.source&&!this._updatedSources[n.source]&&a&&a.getSource().type!=="raster"&&(this._updatedSources[n.source]="reload",a.pause()),this._changed=!0,n.invalidateCompiledFilter()}_flattenAndSortRenderedFeatures(n){const a=I=>this._layers[I].type==="fill-extrusion",p={},_=[];for(let I=this._order.length-1;I>=0;I--){const M=this._order[I];if(a(M)){p[M]=I;for(const P of n){const N=P[M];if(N)for(const z of N)_.push(z)}}}_.sort((I,M)=>M.intersectionZ-I.intersectionZ);const b=[];for(let I=this._order.length-1;I>=0;I--){const M=this._order[I];if(a(M))for(let P=_.length-1;P>=0;P--){const N=_[P].feature;if(p[N.layer.id]<I)break;b.push(N),_.pop()}else for(const P of n){const N=P[M];if(N)for(const z of N)b.push(z.feature)}}return b}queryRenderedFeatures(n,a,p){a&&a.filter&&this._validate(s.validateFilter,"queryRenderedFeatures.filter",a.filter,null,a);const _={};if(a&&a.layers){if(!Array.isArray(a.layers))return this.fire(new s.ErrorEvent(new Error("parameters.layers must be an Array."))),[];for(const P of a.layers){const N=this._layers[P];if(!N)return this.fire(new s.ErrorEvent(new Error(`The layer '${P}' does not exist in the map's style and cannot be queried for features.`))),[];_[N.source]=!0}}const b=[];a.availableImages=this._availableImages;const I=a&&a.layers?a.layers.some(P=>{const N=this.getLayer(P);return N&&N.is3D()}):this.has3DLayers(),M=Oi.createFromScreenPoints(n,p);for(const P in this._sourceCaches){const N=this._sourceCaches[P].getSource().id;a.layers&&!_[N]||b.push(tn(this._sourceCaches[P],this._layers,this._serializedLayers,M,a,p,I,!!this.map._showQueryGeometry))}return this.placement&&b.push(function(P,N,z,j,Y,J,te){const ee={},ie=J.queryRenderedSymbols(j),V=[];for(const K of Object.keys(ie).map(Number))V.push(te[K]);V.sort(Un);for(const K of V){const ae=K.featureIndex.lookupSymbolFeatures(ie[K.bucketInstanceId],N,K.bucketIndex,K.sourceLayerIndex,Y.filter,Y.layers,Y.availableImages,P);for(const le in ae){const xe=ee[le]=ee[le]||[],Te=ae[le];Te.sort((be,Ae)=>{const ke=K.featureSortOrder;if(ke){const Ne=ke.indexOf(be.featureIndex);return ke.indexOf(Ae.featureIndex)-Ne}return Ae.featureIndex-be.featureIndex});for(const be of Te)xe.push(be)}}for(const K in ee)ee[K].forEach(ae=>{const le=ae.feature,xe=z(P[K]);if(!xe)return;const Te=xe.getFeatureState(le.layer["source-layer"],le.id);le.source=le.layer.source,le.layer["source-layer"]&&(le.sourceLayer=le.layer["source-layer"]),le.state=Te});return ee}(this._layers,this._serializedLayers,this._getLayerSourceCache.bind(this),M.screenGeometry,a,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(b)}querySourceFeatures(n,a){a&&a.filter&&this._validate(s.validateFilter,"querySourceFeatures.filter",a.filter,null,a);const p=this._getSourceCaches(n);let _=[];for(const b of p)_=_.concat(un(b,a));return _}addSourceType(n,a,p){return mr.getSourceType(n)?p(new Error(`A source type called "${n}" already exists.`)):(mr.setSourceType(n,a),a.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:n,url:a.workerSourceURL},p):p(null,null))}getLight(){return this.light.getLight()}setLight(n,a={}){this._checkLoaded();const p=this.light.getLight();let _=!1;for(const I in n)if(!Z(n[I],p[I])){_=!0;break}if(!_)return;const b=this._setTransitionParameters({duration:300,delay:0});this.light.setLight(n,a),this.light.updateTransitions(b)}getTerrain(){return this.terrain&&this.terrain.drapeRenderMode===1?this.terrain.get():null}setTerrainForDraping(){this.setTerrain({source:"",exaggeration:0},0)}setTerrain(n,a=1){if(this._checkLoaded(),!n)return delete this.terrain,delete this.stylesheet.terrain,this.dispatcher.broadcast("enableTerrain",!1),this._force3DLayerUpdate(),void(this._markersNeedUpdate=!0);let p=n;if(a===1){if(typeof p.source=="object"){const _="terrain-dem-src";this.addSource(_,p.source),p=s.clone$1(p),p=s.extend(p,{source:_})}if(this._validate(s.validateTerrain,"terrain",p))return}if(!this.terrain||this.terrain&&a!==this.terrain.drapeRenderMode){if(!p)return;this._createTerrain(p,a)}else{const _=this.terrain,b=_.get();for(const I of Object.keys(s.spec.terrain))!p.hasOwnProperty(I)&&s.spec.terrain[I].default&&(p[I]=s.spec.terrain[I].default);for(const I in p)if(!Z(p[I],b[I])){_.set(p),this.stylesheet.terrain=p;const M=this._setTransitionParameters({duration:0});_.updateTransitions(M);break}}this._updateDrapeFirstLayers(),this._markersNeedUpdate=!0}_createFog(n){const a=this.fog=new pi(n,this.map.transform);this.stylesheet.fog=n;const p=this._setTransitionParameters({duration:0});a.updateTransitions(p)}_updateMarkersOpacity(){this.map._markers.length!==0&&this.map._requestDomTask(()=>{for(const n of this.map._markers)n._evaluateOpacity()})}getFog(){return this.fog?this.fog.get():null}setFog(n){if(this._checkLoaded(),!n)return delete this.fog,delete this.stylesheet.fog,void(this._markersNeedUpdate=!0);if(this.fog){const a=this.fog,p=a.get();Object.keys(n).length===0&&a.set(n);for(const _ in n)if(!Z(n[_],p[_])){a.set(n),this.stylesheet.fog=n;const b=this._setTransitionParameters({duration:0});a.updateTransitions(b);break}}else this._createFog(n);this._markersNeedUpdate=!0}_setTransitionParameters(n){return{now:s.exported.now(),transition:s.extend(n,this.stylesheet.transition)}}_updateDrapeFirstLayers(){if(!this.map._optimizeForTerrain||!this.terrain)return;const n=this._order.filter(p=>this.isLayerDraped(this._layers[p])),a=this._order.filter(p=>!this.isLayerDraped(this._layers[p]));this._drapedFirstOrder=[],this._drapedFirstOrder.push(...n),this._drapedFirstOrder.push(...a)}_createTerrain(n,a){const p=this.terrain=new Jt(n,a);this.stylesheet.terrain=n,this.dispatcher.broadcast("enableTerrain",!this.terrainSetForDrapingOnly()),this._force3DLayerUpdate();const _=this._setTransitionParameters({duration:0});p.updateTransitions(_)}_force3DLayerUpdate(){for(const n in this._layers){const a=this._layers[n];a.type==="fill-extrusion"&&this._updateLayer(a)}}_forceSymbolLayerUpdate(){for(const n in this._layers){const a=this._layers[n];a.type==="symbol"&&this._updateLayer(a)}}_validate(n,a,p,_,b={}){return(!b||b.validate!==!1)&&so(this,n.call(s.validateStyle,s.extend({key:a,style:this.serialize(),value:p,styleSpec:s.spec},_)))}_remove(){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),s.evented.off("pluginStateChange",this._rtlTextPluginCallback);for(const n in this._layers)this._layers[n].setEventedParent(null);for(const n in this._sourceCaches)this._sourceCaches[n].clearTiles(),this._sourceCaches[n].setEventedParent(null);this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove()}_clearSource(n){const a=this._getSourceCaches(n);for(const p of a)p.clearTiles()}_reloadSource(n){const a=this._getSourceCaches(n);for(const p of a)p.resume(),p.reload()}_reloadSources(){for(const n of this._getSources())n.reload&&n.reload()}_updateSources(n){for(const a in this._sourceCaches)this._sourceCaches[a].update(n)}_generateCollisionBoxes(){for(const n in this._sourceCaches){const a=this._sourceCaches[n];a.resume(),a.reload()}}_updatePlacement(n,a,p,_,b=!1){let I=!1,M=!1;const P={};for(const N of this._order){const z=this._layers[N];if(z.type!=="symbol")continue;if(!P[z.source]){const Y=this._getLayerSourceCache(z);if(!Y)continue;P[z.source]=Y.getRenderableIds(!0).map(J=>Y.getTileByID(J)).sort((J,te)=>te.tileID.overscaledZ-J.tileID.overscaledZ||(J.tileID.isLessThan(te.tileID)?-1:1))}const j=this.crossTileSymbolIndex.addLayer(z,P[z.source],n.center.lng,n.projection);I=I||j}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),b=b||this._layerOrderChanged||p===0,this._layerOrderChanged&&this.fire(new s.Event("neworder")),(b||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(s.exported.now(),n.zoom))&&(this.pauseablePlacement=new xa(n,this._order,b,a,p,_,this.placement,this.fog&&n.projection.supportsFog?this.fog.state:null),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,P),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(s.exported.now()),M=!0),I&&this.pauseablePlacement.placement.setStale()),M||I)for(const N of this._order){const z=this._layers[N];z.type==="symbol"&&this.placement.updateLayerOpacities(z,P[z.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(s.exported.now())}_releaseSymbolFadeTiles(){for(const n in this._sourceCaches)this._sourceCaches[n].releaseSymbolFadeTiles()}getImages(n,a,p){this.imageManager.getImages(a.icons,p),this._updateTilesForChangedImages();const _=b=>{b&&b.setDependencies(a.tileID.key,a.type,a.icons)};_(this._otherSourceCaches[a.source]),_(this._symbolSourceCaches[a.source])}getGlyphs(n,a,p){this.glyphManager.getGlyphs(a.stacks,p)}getResource(n,a,p){return s.makeRequest(a,p)}_getSourceCache(n){return this._otherSourceCaches[n]}_getLayerSourceCache(n){return n.type==="symbol"?this._symbolSourceCaches[n.source]:this._otherSourceCaches[n.source]}_getSourceCaches(n){const a=[];return this._otherSourceCaches[n]&&a.push(this._otherSourceCaches[n]),this._symbolSourceCaches[n]&&a.push(this._symbolSourceCaches[n]),a}_isSourceCacheLoaded(n){const a=this._getSourceCaches(n);return a.length===0?(this.fire(new s.ErrorEvent(new Error(`There is no source with ID '${n}'`))),!1):a.every(p=>p.loaded())}has3DLayers(){return this._num3DLayers>0}hasSymbolLayers(){return this._numSymbolLayers>0}hasCircleLayers(){return this._numCircleLayers>0}_clearWorkerCaches(){this.dispatcher.broadcast("clearCaches")}destroy(){this._clearWorkerCaches(),this.terrainSetForDrapingOnly()&&(delete this.terrain,delete this.stylesheet.terrain)}}mr.getSourceType=function(h){return Zt[h]},mr.setSourceType=function(h,n){Zt[h]=n},mr.registerForPluginStateChange=s.registerForPluginStateChange;var fl=`
#define EPSILON 0.0000001
#define PI 3.141592653589793
#define EXTENT 8192.0
#define HALF_PI PI/2.0
#define QUARTER_PI PI/4.0
#define RAD_TO_DEG 180.0/PI
#define DEG_TO_RAD PI/180.0
#define GLOBE_RADIUS EXTENT/PI/2.0`,Ln="attribute highp vec3 a_pos_3f;uniform lowp mat4 u_matrix;varying highp vec3 v_uv;void main() {const mat3 half_neg_pi_around_x=mat3(1.0,0.0, 0.0,0.0,0.0,-1.0,0.0,1.0, 0.0);v_uv=half_neg_pi_around_x*a_pos_3f;vec4 pos=u_matrix*vec4(a_pos_3f,1.0);gl_Position=pos.xyww;}",or=`
#define ELEVATION_SCALE 7.0
#define ELEVATION_OFFSET 450.0
#ifdef PROJECTION_GLOBE_VIEW
uniform vec3 u_tile_tl_up;uniform vec3 u_tile_tr_up;uniform vec3 u_tile_br_up;uniform vec3 u_tile_bl_up;uniform float u_tile_up_scale;vec3 elevationVector(vec2 pos) {vec2 uv=pos/EXTENT;vec3 up=normalize(mix(
mix(u_tile_tl_up,u_tile_tr_up,uv.xxx),mix(u_tile_bl_up,u_tile_br_up,uv.xxx),uv.yyy));return up*u_tile_up_scale;}
#else
vec3 elevationVector(vec2 pos) { return vec3(0,0,1); }
#endif
const float skirtOffset=24575.0;vec3 decomposeToPosAndSkirt(vec2 posWithComposedSkirt)
{float skirt=float(posWithComposedSkirt.x >=skirtOffset);vec2 pos=posWithComposedSkirt-vec2(skirt*skirtOffset,0.0);return vec3(pos,skirt);}
#ifdef TERRAIN
#ifdef TERRAIN_DEM_FLOAT_FORMAT
uniform highp sampler2D u_dem;uniform highp sampler2D u_dem_prev;
#else
uniform sampler2D u_dem;uniform sampler2D u_dem_prev;
#endif
uniform vec4 u_dem_unpack;uniform vec2 u_dem_tl;uniform vec2 u_dem_tl_prev;uniform float u_dem_scale;uniform float u_dem_scale_prev;uniform float u_dem_size;uniform float u_dem_lerp;uniform float u_exaggeration;uniform float u_meter_to_dem;uniform mat4 u_label_plane_matrix_inv;uniform sampler2D u_depth;uniform vec2 u_depth_size_inv;vec4 tileUvToDemSample(vec2 uv,float dem_size,float dem_scale,vec2 dem_tl) {vec2 pos=dem_size*(uv*dem_scale+dem_tl)+1.0;vec2 f=fract(pos);return vec4((pos-f+0.5)/(dem_size+2.0),f);}float decodeElevation(vec4 v) {return dot(vec4(v.xyz*255.0,-1.0),u_dem_unpack);}float currentElevation(vec2 apos) {
#ifdef TERRAIN_DEM_FLOAT_FORMAT
vec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale+u_dem_tl)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem,pos).a;
#else
float dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale,u_dem_tl);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem,pos));
#ifdef TERRAIN_DEM_NEAREST_FILTER
return u_exaggeration*tl;
#endif
float tr=decodeElevation(texture2D(u_dem,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);
#endif
}float prevElevation(vec2 apos) {
#ifdef TERRAIN_DEM_FLOAT_FORMAT
vec2 pos=(u_dem_size*(apos/8192.0*u_dem_scale_prev+u_dem_tl_prev)+1.5)/(u_dem_size+2.0);return u_exaggeration*texture2D(u_dem_prev,pos).a;
#else
float dd=1.0/(u_dem_size+2.0);vec4 r=tileUvToDemSample(apos/8192.0,u_dem_size,u_dem_scale_prev,u_dem_tl_prev);vec2 pos=r.xy;vec2 f=r.zw;float tl=decodeElevation(texture2D(u_dem_prev,pos));float tr=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,0.0)));float bl=decodeElevation(texture2D(u_dem_prev,pos+vec2(0.0,dd)));float br=decodeElevation(texture2D(u_dem_prev,pos+vec2(dd,dd)));return u_exaggeration*mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);
#endif
}
#ifdef TERRAIN_VERTEX_MORPHING
float elevation(vec2 apos) {
#ifdef ZERO_EXAGGERATION
return 0.0;
#endif
float nextElevation=currentElevation(apos);float prevElevation=prevElevation(apos);return mix(prevElevation,nextElevation,u_dem_lerp);}
#else
float elevation(vec2 apos) {
#ifdef ZERO_EXAGGERATION
return 0.0;
#endif
return currentElevation(apos);}
#endif
highp float unpack_depth(highp vec4 rgba_depth)
{const highp vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}bool isOccluded(vec4 frag) {vec3 coord=frag.xyz/frag.w;float depth=unpack_depth(texture2D(u_depth,(coord.xy+1.0)*0.5));return coord.z > depth+0.0005;}float occlusionFade(vec4 frag) {vec3 coord=frag.xyz/frag.w;vec3 df=vec3(5.0*u_depth_size_inv,0.0);vec2 uv=0.5*coord.xy+0.5;vec4 depth=vec4(
unpack_depth(texture2D(u_depth,uv-df.xz)),unpack_depth(texture2D(u_depth,uv+df.xz)),unpack_depth(texture2D(u_depth,uv-df.zy)),unpack_depth(texture2D(u_depth,uv+df.zy))
);return dot(vec4(0.25),vec4(1.0)-clamp(300.0*(vec4(coord.z-0.001)-depth),0.0,1.0));}vec4 fourSample(vec2 pos,vec2 off) {
#ifdef TERRAIN_DEM_FLOAT_FORMAT
float tl=texture2D(u_dem,pos).a;float tr=texture2D(u_dem,pos+vec2(off.x,0.0)).a;float bl=texture2D(u_dem,pos+vec2(0.0,off.y)).a;float br=texture2D(u_dem,pos+off).a;
#else
vec4 demtl=vec4(texture2D(u_dem,pos).xyz*255.0,-1.0);float tl=dot(demtl,u_dem_unpack);vec4 demtr=vec4(texture2D(u_dem,pos+vec2(off.x,0.0)).xyz*255.0,-1.0);float tr=dot(demtr,u_dem_unpack);vec4 dembl=vec4(texture2D(u_dem,pos+vec2(0.0,off.y)).xyz*255.0,-1.0);float bl=dot(dembl,u_dem_unpack);vec4 dembr=vec4(texture2D(u_dem,pos+off).xyz*255.0,-1.0);float br=dot(dembr,u_dem_unpack);
#endif
return vec4(tl,tr,bl,br);}float flatElevation(vec2 pack) {vec2 apos=floor(pack/8.0);vec2 span=10.0*(pack-apos*8.0);vec2 uvTex=(apos-vec2(1.0,1.0))/8190.0;float size=u_dem_size+2.0;float dd=1.0/size;vec2 pos=u_dem_size*(uvTex*u_dem_scale+u_dem_tl)+1.0;vec2 f=fract(pos);pos=(pos-f+0.5)*dd;vec4 h=fourSample(pos,vec2(dd));float z=mix(mix(h.x,h.y,f.x),mix(h.z,h.w,f.x),f.y);vec2 w=floor(0.5*(span*u_meter_to_dem-1.0));vec2 d=dd*w;h=fourSample(pos-d,2.0*d+vec2(dd));vec4 diff=abs(h.xzxy-h.ywzw);vec2 slope=min(vec2(0.25),u_meter_to_dem*0.5*(diff.xz+diff.yw)/(2.0*w+vec2(1.0)));vec2 fix=slope*span;float base=z+max(fix.x,fix.y);return u_exaggeration*base;}float elevationFromUint16(float word) {return u_exaggeration*(word/ELEVATION_SCALE-ELEVATION_OFFSET);}
#else
float elevation(vec2 pos) { return 0.0; }bool isOccluded(vec4 frag) { return false; }float occlusionFade(vec4 frag) { return 1.0; }
#endif`,$s=`#ifdef FOG
uniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;uniform mediump mat4 u_fog_matrix;varying vec3 v_fog_pos;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}vec3 fog_position(vec3 pos) {return (u_fog_matrix*vec4(pos,1.0)).xyz;}vec3 fog_position(vec2 pos) {return fog_position(vec3(pos,0.0));}float fog(vec3 pos) {float depth=length(pos);float opacity=fog_opacity(fog_range(depth));return opacity*fog_horizon_blending(pos/depth);}
#endif`,sr=`#ifdef FOG
uniform mediump vec4 u_fog_color;uniform mediump vec2 u_fog_range;uniform mediump float u_fog_horizon_blend;uniform mediump float u_fog_temporal_offset;varying vec3 v_fog_pos;uniform highp vec3 u_frustum_tl;uniform highp vec3 u_frustum_tr;uniform highp vec3 u_frustum_br;uniform highp vec3 u_frustum_bl;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;uniform highp vec2 u_viewport;uniform float u_globe_transition;uniform int u_is_globe;float fog_range(float depth) {return (depth-u_fog_range[0])/(u_fog_range[1]-u_fog_range[0]);}float fog_horizon_blending(vec3 camera_dir) {float t=max(0.0,camera_dir.z/u_fog_horizon_blend);return u_fog_color.a*exp(-3.0*t*t);}float fog_opacity(float t) {const float decay=6.0;float falloff=1.0-min(1.0,exp(-decay*t));falloff*=falloff*falloff;return u_fog_color.a*min(1.0,1.00747*falloff);}float globe_glow_progress() {highp vec2 uv=gl_FragCoord.xy/u_viewport;highp vec3 ray_dir=mix(
mix(u_frustum_tl,u_frustum_tr,uv.x),mix(u_frustum_bl,u_frustum_br,uv.x),1.0-uv.y);highp vec3 dir=normalize(ray_dir);highp vec3 closest_point=dot(u_globe_pos,dir)*dir;highp float sdf=length(closest_point-u_globe_pos)/u_globe_radius;return sdf+PI*0.5;}float fog_opacity(vec3 pos) {float depth=length(pos);return fog_opacity(fog_range(depth));}vec3 fog_apply(vec3 color,vec3 pos) {float depth=length(pos);float opacity;if (u_is_globe==1) {float glow_progress=globe_glow_progress();float t=mix(glow_progress,depth,u_globe_transition);opacity=fog_opacity(fog_range(t));} else {opacity=fog_opacity(fog_range(depth));opacity*=fog_horizon_blending(pos/depth);}return mix(color,u_fog_color.rgb,opacity);}vec4 fog_apply_from_vert(vec4 color,float fog_opac) {float alpha=EPSILON+color.a;color.rgb=mix(color.rgb/alpha,u_fog_color.rgb,fog_opac)*alpha;return color;}vec3 fog_apply_sky_gradient(vec3 camera_ray,vec3 sky_color) {float horizon_blend=fog_horizon_blending(normalize(camera_ray));return mix(sky_color,u_fog_color.rgb,horizon_blend);}vec4 fog_apply_premultiplied(vec4 color,vec3 pos) {float alpha=EPSILON+color.a;color.rgb=fog_apply(color.rgb/alpha,pos)*alpha;return color;}vec3 fog_dither(vec3 color) {vec2 dither_seed=gl_FragCoord.xy+u_fog_temporal_offset;return dither(color,dither_seed);}vec4 fog_dither(vec4 color) {return vec4(fog_dither(color.rgb),color.a);}
#endif`;let qs={},Fr={};const Zs=[];_s(fl,Zs),_s(or,Zs),_s($s,Zs),_s(sr,Zs),qs=Si("",or),Fr=Si(sr,$s);const Ur=Si(`
#if __VERSION__ >=300
#define varying in
#define gl_FragColor glFragColor
#define texture2D texture
#define textureCube texture
out vec4 glFragColor;
#endif
highp vec3 hash(highp vec2 p) {highp vec3 p3=fract(p.xyx*vec3(443.8975,397.2973,491.1871));p3+=dot(p3,p3.yxz+19.19);return fract((p3.xxy+p3.yzz)*p3.zyx);}vec3 dither(vec3 color,highp vec2 seed) {vec3 rnd=hash(seed)+hash(seed+0.59374)-0.5;return color+rnd/255.0;}highp float unpack_depth(highp vec4 rgba_depth)
{const highp vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(rgba_depth,bit_shift)*2.0-1.0;}highp vec4 pack_depth(highp float ndc_z) {highp float depth=ndc_z*0.5+0.5;const highp vec4 bit_shift=vec4(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const highp vec4 bit_mask =vec4(0.0,1.0/255.0,1.0/255.0,1.0/255.0);highp vec4 res=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;}`,`
#if __VERSION__ >=300
#define attribute in
#define varying out
#define texture2D texture
#endif
float wrap(float n,float min,float max) {float d=max-min;float w=mod(mod(n-min,d)+d,d)+min;return (w==min) ? max : w;}
#ifdef PROJECTION_GLOBE_VIEW
vec3 mercator_tile_position(mat4 matrix,vec2 tile_anchor,vec3 tile_id,vec2 mercator_center) {
#ifndef PROJECTED_POS_ON_VIEWPORT
float tiles=tile_id.z;vec2 mercator=(tile_anchor/EXTENT+tile_id.xy)/tiles;mercator-=mercator_center;mercator.x=wrap(mercator.x,-0.5,0.5);vec4 mercator_tile=vec4(mercator.xy*EXTENT,EXTENT/(2.0*PI),1.0);mercator_tile=matrix*mercator_tile;return mercator_tile.xyz;
#else
return vec3(0.0);
#endif
}vec3 mix_globe_mercator(vec3 globe,vec3 mercator,float t) {return mix(globe,mercator,t);}mat3 globe_mercator_surface_vectors(vec3 pos_normal,vec3 up_dir,float zoom_transition) {vec3 normal=zoom_transition==0.0 ? pos_normal : normalize(mix(pos_normal,up_dir,zoom_transition));vec3 xAxis=normalize(vec3(normal.z,0.0,-normal.x));vec3 yAxis=normalize(cross(normal,xAxis));return mat3(xAxis,yAxis,normal);}
#endif
vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(
unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0
);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}const vec4 AWAY=vec4(-1000.0,-1000.0,-1000.0,1);//Normalized device coordinate that is not rendered.`),Xs=fl,pl=`
#ifdef GL_ES
precision mediump float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif`;var dl={background:Si(`uniform vec4 u_color;uniform float u_opacity;
#ifdef LIGHTING_3D_MODE
varying vec4 v_color;
#endif
void main() {vec4 out_color;
#ifdef LIGHTING_3D_MODE
out_color=v_color;
#else
out_color=u_color;
#endif
#ifdef FOG
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
#endif
gl_FragColor=out_color*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`attribute vec2 a_pos;uniform mat4 u_matrix;
#ifdef LIGHTING_3D_MODE
uniform vec4 u_color;varying vec4 v_color;
#endif
void main() {gl_Position=u_matrix*vec4(a_pos,0,1);
#ifdef LIGHTING_3D_MODE
v_color=apply_lighting(u_color);
#endif
#ifdef FOG
v_fog_pos=fog_position(a_pos);
#endif
}`),backgroundPattern:Si(`uniform vec2 u_pattern_tl;uniform vec2 u_pattern_br;uniform vec2 u_texsize;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos;void main() {vec2 imagecoord=mod(v_pos,1.0);vec2 pos=mix(u_pattern_tl/u_texsize,u_pattern_br/u_texsize,imagecoord);vec4 out_color=texture2D(u_image,pos);
#ifdef LIGHTING_3D_MODE
out_color=apply_lighting(out_color);
#endif
#ifdef FOG
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
#endif
gl_FragColor=out_color*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform vec2 u_pattern_size;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_pattern_size,u_tile_units_to_pixels,a_pos);
#ifdef FOG
v_fog_pos=fog_position(a_pos);
#endif
}`),circle:Si(`varying vec3 v_data;varying float v_visibility;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define mediump float radius
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define highp vec4 stroke_color
#pragma mapbox: define mediump float stroke_width
#pragma mapbox: define lowp float stroke_opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize mediump float radius
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize highp vec4 stroke_color
#pragma mapbox: initialize mediump float stroke_width
#pragma mapbox: initialize lowp float stroke_opacity
vec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(
antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width)
);vec4 out_color=mix(color*opacity,stroke_color*stroke_opacity,color_t);
#ifdef LIGHTING_3D_MODE
out_color=apply_lighting(out_color);
#endif
#ifdef FOG
out_color=fog_apply_premultiplied(out_color,v_fog_pos);
#endif
gl_FragColor=out_color*(v_visibility*opacity_t);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`#define NUM_VISIBILITY_RINGS 2
#define INV_SQRT2 0.70710678
#define ELEVATION_BIAS 0.0001
#define NUM_SAMPLES_PER_RING 16
uniform mat4 u_matrix;uniform mat2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;
#ifdef PROJECTION_GLOBE_VIEW
attribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;
#endif
varying vec3 v_data;varying float v_visibility;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define mediump float radius
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define highp vec4 stroke_color
#pragma mapbox: define mediump float stroke_width
#pragma mapbox: define lowp float stroke_opacity
vec2 calc_offset(vec2 extrusion,float radius,float stroke_width, float view_scale) {return extrusion*(radius+stroke_width)*u_extrude_scale*view_scale;}float cantilevered_elevation(vec2 pos,float radius,float stroke_width,float view_scale) {vec2 c1=pos+calc_offset(vec2(-1,-1),radius,stroke_width,view_scale);vec2 c2=pos+calc_offset(vec2(1,-1),radius,stroke_width,view_scale);vec2 c3=pos+calc_offset(vec2(1,1),radius,stroke_width,view_scale);vec2 c4=pos+calc_offset(vec2(-1,1),radius,stroke_width,view_scale);float h1=elevation(c1)+ELEVATION_BIAS;float h2=elevation(c2)+ELEVATION_BIAS;float h3=elevation(c3)+ELEVATION_BIAS;float h4=elevation(c4)+ELEVATION_BIAS;return max(h4,max(h3,max(h1,h2)));}float circle_elevation(vec2 pos) {
#if defined(TERRAIN)
return elevation(pos)+ELEVATION_BIAS;
#else
return 0.0;
#endif
}vec4 project_vertex(vec2 extrusion,vec4 world_center,vec4 projected_center,float radius,float stroke_width, float view_scale,mat3 surface_vectors) {vec2 sample_offset=calc_offset(extrusion,radius,stroke_width,view_scale);
#ifdef PITCH_WITH_MAP
#ifdef PROJECTION_GLOBE_VIEW
return u_matrix*( world_center+vec4(sample_offset.x*surface_vectors[0]+sample_offset.y*surface_vectors[1],0) );
#else
return u_matrix*( world_center+vec4(sample_offset,0,0) );
#endif
#else
return projected_center+vec4(sample_offset,0,0);
#endif
}float get_sample_step() {
#ifdef PITCH_WITH_MAP
return 2.0*PI/float(NUM_SAMPLES_PER_RING);
#else
return PI/float(NUM_SAMPLES_PER_RING);
#endif
}void main(void) {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize mediump float radius
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize highp vec4 stroke_color
#pragma mapbox: initialize mediump float stroke_width
#pragma mapbox: initialize lowp float stroke_opacity
vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);vec4 world_center;mat3 surface_vectors;
#ifdef PROJECTION_GLOBE_VIEW
vec3 pos_normal_3=a_pos_normal_3/16384.0;surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(circle_center)*circle_elevation(circle_center);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*circle_elevation(circle_center);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,circle_center,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;vec3 pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);world_center=vec4(pos,1);
#else
surface_vectors=mat3(1.0);float height=circle_elevation(circle_center);world_center=vec4(circle_center,height,1);
#endif
vec4 projected_center=u_matrix*world_center;float view_scale=0.0;
#ifdef PITCH_WITH_MAP
#ifdef SCALE_WITH_MAP
view_scale=1.0;
#else
view_scale=projected_center.w/u_camera_to_center_distance;
#endif
#else
#ifdef SCALE_WITH_MAP
view_scale=u_camera_to_center_distance;
#else
view_scale=projected_center.w;
#endif
#endif
gl_Position=project_vertex(extrude,world_center,projected_center,radius,stroke_width,view_scale,surface_vectors);float visibility=0.0;
#ifdef TERRAIN
float step=get_sample_step();vec4 occlusion_world_center;vec4 occlusion_projected_center;
#ifdef PITCH_WITH_MAP
float cantilevered_height=cantilevered_elevation(circle_center,radius,stroke_width,view_scale);occlusion_world_center=vec4(circle_center,cantilevered_height,1);occlusion_projected_center=u_matrix*occlusion_world_center;
#else
occlusion_world_center=world_center;occlusion_projected_center=projected_center;
#endif
for(int ring=0; ring < NUM_VISIBILITY_RINGS; ring++) {float scale=(float(ring)+1.0)/float(NUM_VISIBILITY_RINGS);for(int i=0; i < NUM_SAMPLES_PER_RING; i++) {vec2 extrusion=vec2(cos(step*float(i)),-sin(step*float(i)))*scale;vec4 frag_pos=project_vertex(extrusion,occlusion_world_center,occlusion_projected_center,radius,stroke_width,view_scale,surface_vectors);visibility+=float(!isOccluded(frag_pos));}}visibility/=float(NUM_VISIBILITY_RINGS)*float(NUM_SAMPLES_PER_RING);
#else
visibility=1.0;
#endif
#ifdef PROJECTION_GLOBE_VIEW
visibility=1.0;
#endif
v_visibility=visibility;lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);
#ifdef FOG
v_fog_pos=fog_position(world_center.xyz);
#endif
}`),clippingMask:Si("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:Si(`uniform highp float u_intensity;varying vec2 v_extrude;
#pragma mapbox: define highp float weight
#define GAUSS_COEF 0.3989422804014327
void main() {
#pragma mapbox: initialize highp float weight
float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);
#ifdef FOG
if (u_is_globe==0) {gl_FragColor.r*=pow(1.0-fog_opacity(v_fog_pos),2.0);}
#endif
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;
#ifdef PROJECTION_GLOBE_VIEW
attribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;
#endif
varying vec2 v_extrude;
#pragma mapbox: define highp float weight
#pragma mapbox: define mediump float radius
const highp float ZERO=1.0/255.0/16.0;
#define GAUSS_COEF 0.3989422804014327
void main(void) {
#pragma mapbox: initialize highp float weight
#pragma mapbox: initialize mediump float radius
vec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 tilePos=floor(a_pos*0.5);vec3 pos;
#ifdef PROJECTION_GLOBE_VIEW
vec3 pos_normal_3=a_pos_normal_3/16384.0;mat3 surface_vectors=globe_mercator_surface_vectors(pos_normal_3,u_up_dir,u_zoom_transition);vec3 surface_extrusion=extrude.x*surface_vectors[0]+extrude.y*surface_vectors[1];vec3 globe_elevation=elevationVector(tilePos)*elevation(tilePos);vec3 globe_pos=a_pos_3+surface_extrusion+globe_elevation;vec3 mercator_elevation=u_up_dir*u_tile_up_scale*elevation(tilePos);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,tilePos,u_tile_id,u_merc_center)+surface_extrusion+mercator_elevation;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);
#else
pos=vec3(tilePos+extrude,elevation(tilePos));
#endif
gl_Position=u_matrix*vec4(pos,1);
#ifdef FOG
v_fog_pos=fog_position(pos);
#endif
}`),heatmapTexture:Si(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(0.0);
#endif
}`,"attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=vec4(a_pos,0,1);v_pos=a_pos*0.5+0.5;}"),collisionBox:Si("varying float v_placed;varying float v_notUsed;void main() {vec4 red =vec4(1.0,0.0,0.0,1.0);vec4 blue=vec4(0.0,0.0,1.0,0.5);gl_FragColor =mix(red,blue,step(0.5,v_placed))*0.5;gl_FragColor*=mix(1.0,0.1,step(0.5,v_notUsed));}",`attribute vec3 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;attribute float a_size_scale;attribute vec2 a_padding;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_pos+elevationVector(a_anchor_pos)*elevation(a_anchor_pos),1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(
0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,1.5);gl_Position=projectedPoint;gl_Position.xy+=(a_extrude*a_size_scale+a_shift+a_padding)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}`),collisionCircle:Si("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}",`attribute vec2 a_pos_2f;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos_2f;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(
mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(
0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}`),debug:Si("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}",`attribute vec2 a_pos;
#ifdef PROJECTION_GLOBE_VIEW
attribute vec3 a_pos_3;
#endif
varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {float h=elevation(a_pos);v_uv=a_pos/8192.0;
#ifdef PROJECTION_GLOBE_VIEW
gl_Position=u_matrix*vec4(a_pos_3+elevationVector(a_pos)*h,1);
#else
gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,h,1);
#endif
}`),fill:Si(`#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float opacity
vec4 out_color=color;
#ifdef LIGHTING_3D_MODE
out_color=apply_lighting(out_color);
#endif
#ifdef FOG
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
#endif
gl_FragColor=out_color*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`attribute vec2 a_pos;uniform mat4 u_matrix;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float opacity
gl_Position=u_matrix*vec4(a_pos,0,1);
#ifdef FOG
v_fog_pos=fog_position(a_pos);
#endif
}`),fillOutline:Si(`varying vec2 v_pos;
#pragma mapbox: define highp vec4 outline_color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 outline_color
#pragma mapbox: initialize lowp float opacity
float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=outline_color;
#ifdef LIGHTING_3D_MODE
out_color=apply_lighting(out_color);
#endif
#ifdef FOG
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
#endif
gl_FragColor=out_color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;
#pragma mapbox: define highp vec4 outline_color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 outline_color
#pragma mapbox: initialize lowp float opacity
gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;
#ifdef FOG
v_fog_pos=fog_position(a_pos);
#endif
}`),fillOutlinePattern:Si(`uniform vec2 u_texsize;uniform sampler2D u_image;varying vec2 v_pos;varying vec2 v_pos_world;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 imagecoord=mod(v_pos,1.0);vec2 pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,imagecoord);float dist=length(v_pos_world-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);vec4 out_color=texture2D(u_image,pos);
#ifdef LIGHTING_3D_MODE
out_color=apply_lighting(out_color);
#endif
#ifdef FOG
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
#endif
gl_FragColor=out_color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos;varying vec2 v_pos_world;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern
#pragma mapbox: define lowp float pixel_ratio
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern
#pragma mapbox: initialize lowp float pixel_ratio
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,display_size,u_tile_units_to_pixels,a_pos);v_pos_world=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;
#ifdef FOG
v_fog_pos=fog_position(a_pos);
#endif
}`),fillPattern:Si(`uniform vec2 u_texsize;uniform sampler2D u_image;varying vec2 v_pos;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 imagecoord=mod(v_pos,1.0);vec2 pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,imagecoord);vec4 out_color=texture2D(u_image,pos);
#ifdef LIGHTING_3D_MODE
out_color=apply_lighting(out_color);
#endif
#ifdef FOG
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
#endif
gl_FragColor=out_color*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern
#pragma mapbox: define lowp float pixel_ratio
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern
#pragma mapbox: initialize lowp float pixel_ratio
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,display_size,u_tile_units_to_pixels,a_pos);
#ifdef FOG
v_fog_pos=fog_position(a_pos);
#endif
}`),fillExtrusion:Si(`varying vec4 v_color;
#ifdef RENDER_SHADOWS
varying highp vec4 v_pos_light_view_0;varying highp vec4 v_pos_light_view_1;varying float v_depth;
#endif
#ifdef FAUX_AO
uniform lowp vec2 u_ao;varying vec3 v_ao;
#endif
#ifdef ZERO_ROOF_RADIUS
varying vec4 v_roof_color;
#endif
#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS)
varying highp vec3 v_normal;
#endif
void main() {
#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS)
vec3 normal=v_normal;
#endif
float z;vec4 color;
#ifdef ZERO_ROOF_RADIUS
z=float(normal.z > 0.00001);color=mix(v_color,v_roof_color,z);
#else
color=v_color;
#endif
#ifdef FAUX_AO
float intensity=u_ao[0];float h=max(0.0,v_ao.z);float h_floors=h/u_ao[1];float y_shade=1.0-0.9*intensity*min(v_ao.y,1.0);float shade=(1.0-0.08*intensity)*(y_shade+(1.0-y_shade)*(1.0-pow(1.0-min(h_floors/16.0,1.0),16.0)))+0.08*intensity*min(h_floors/160.0,1.0);float concave=v_ao.x*v_ao.x;
#ifdef ZERO_ROOF_RADIUS
concave*=(1.0-z);
#endif
float x_shade=mix(1.0,mix(0.6,0.75,min(h_floors/30.0,1.0)),intensity)+0.1*intensity*min(h,1.0);shade*=mix(1.0,x_shade*x_shade*x_shade,concave);color.rgb=color.rgb*shade;
#endif
#ifdef RENDER_SHADOWS
#ifdef ZERO_ROOF_RADIUS
normal=mix(normal,vec3(0.0,0.0,1.0),z);
#endif
color.xyz=shadowed_color_normal(color.xyz,normalize(normal),v_pos_light_view_0,v_pos_light_view_1,v_depth);
#endif
#ifdef FOG
color=fog_dither(fog_apply_premultiplied(color,v_fog_pos));
#endif
gl_FragColor=color;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform float u_edge_radius;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;
#ifdef PROJECTION_GLOBE_VIEW
attribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;
#endif
varying vec4 v_color;
#ifdef RENDER_SHADOWS
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;varying highp vec4 v_pos_light_view_0;varying highp vec4 v_pos_light_view_1;varying float v_depth;
#endif
#ifdef ZERO_ROOF_RADIUS
varying vec4 v_roof_color;
#endif
#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS)
varying highp vec3 v_normal;
#endif
#ifdef FAUX_AO
uniform lowp vec2 u_ao;varying vec3 v_ao;
#endif
#pragma mapbox: define highp float base
#pragma mapbox: define highp float height
#pragma mapbox: define highp vec4 color
void main() {
#pragma mapbox: initialize highp float base
#pragma mapbox: initialize highp float height
#pragma mapbox: initialize highp vec4 color
vec4 pos_nx=floor(a_pos_normal_ed*0.5);vec4 top_up_ny_start=a_pos_normal_ed-2.0*pos_nx;vec3 top_up_ny=top_up_ny_start.xyz;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));
#if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS)
v_normal=normal;
#endif
base=max(0.0,base);height=max(0.0,top_up_ny.y==0.0 && top_up_ny.x==1.0 ? height-u_edge_radius : height);float t=top_up_ny.x;vec2 centroid_pos=vec2(0.0);
#if defined(HAS_CENTROID) || defined(TERRAIN)
centroid_pos=a_centroid_pos;
#endif
float ele=0.0;float h=0.0;float c_ele;vec3 pos;
#ifdef TERRAIN
bool flat_roof=centroid_pos.x !=0.0 && t > 0.0;ele=elevation(pos_nx.xy);c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);pos=vec3(pos_nx.xy,h);
#else
h=t > 0.0 ? height : base;pos=vec3(pos_nx.xy,h);
#endif
#ifdef PROJECTION_GLOBE_VIEW
float lift=float((t+base) > 0.0)*u_height_lift;h+=lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*h);vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,pos.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*pos.z;pos=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);
#endif
float hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(pos,1),AWAY,hidden);
#ifdef RENDER_SHADOWS
v_pos_light_view_0=u_light_matrix_0*vec4(pos,1);v_pos_light_view_1=u_light_matrix_1*vec4(pos,1);v_depth=gl_Position.w;
#endif
float NdotL=0.0;float colorvalue=0.0;
#ifdef LIGHTING_3D_MODE
NdotL=calculate_NdotL(normal);
#else
colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;NdotL=clamp(dot(normal,u_lightpos),0.0,1.0);NdotL=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),NdotL);
#endif
if (normal.y !=0.0) {float r=0.84;
#ifndef LIGHTING_3D_MODE
r=mix(0.7,0.98,1.0-u_lightintensity);
#endif
NdotL*=(
(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),r,1.0)));}v_color=vec4(0.0,0.0,0.0,1.0);
#ifdef FAUX_AO
float concave=pos_nx.w-floor(pos_nx.w*0.5)*2.0;float start=top_up_ny_start.w;float y_ground=1.0-clamp(t+base,0.0,1.0);float top_height=height;
#ifdef TERRAIN
top_height=mix(max(c_ele+height,ele+base+2.0),ele+height,float(centroid_pos.x==0.0))-ele;y_ground+=y_ground*5.0/max(3.0,top_height);
#endif
v_ao=vec3(mix(concave,-concave,start),y_ground,h-ele);NdotL*=(1.0+0.05*(1.0-top_up_ny.y)*u_ao[0]);
#ifdef PROJECTION_GLOBE_VIEW
top_height+=u_height_lift;
#endif
gl_Position.z-=(0.0000006*(min(top_height,500.)+2.0*min(base,500.0)+60.0*concave+3.0*start))*gl_Position.w;
#endif
#ifdef LIGHTING_3D_MODE
v_color=apply_lighting(color,NdotL);
#else
v_color.rgb+=clamp(color.rgb*NdotL*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));
#endif
v_color*=u_opacity;
#ifdef ZERO_ROOF_RADIUS
v_roof_color=vec4(0.0,0.0,0.0,1.0);
#ifdef LIGHTING_3D_MODE
v_roof_color=apply_lighting(color,calculate_NdotL(vec3(0.0,0.0,1.0)));
#else
float roofNdotL=clamp(u_lightpos.z,0.0,1.0);roofNdotL=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),roofNdotL);v_roof_color.rgb+=clamp(color.rgb*roofNdotL*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));
#endif
v_roof_color*=u_opacity;
#endif
#ifdef FOG
v_fog_pos=fog_position(pos);
#endif
}`),fillExtrusionPattern:Si(`uniform vec2 u_texsize;uniform sampler2D u_image;
#ifdef FAUX_AO
uniform lowp vec2 u_ao;varying vec3 v_ao;
#endif
#ifdef LIGHTING_3D_MODE
varying float v_NdotL;
#endif
varying vec2 v_pos;varying vec4 v_lighting;uniform lowp float u_opacity;
#pragma mapbox: define lowp float base
#pragma mapbox: define lowp float height
#pragma mapbox: define lowp vec4 pattern
#pragma mapbox: define lowp float pixel_ratio
void main() {
#pragma mapbox: initialize lowp float base
#pragma mapbox: initialize lowp float height
#pragma mapbox: initialize mediump vec4 pattern
#pragma mapbox: initialize lowp float pixel_ratio
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 imagecoord=mod(v_pos,1.0);vec2 pos=mix(pattern_tl/u_texsize,pattern_br/u_texsize,imagecoord);vec4 out_color=texture2D(u_image,pos);
#ifdef LIGHTING_3D_MODE
out_color=apply_lighting(out_color,v_NdotL)*u_opacity;
#else
out_color=out_color*v_lighting;
#endif
#ifdef FAUX_AO
float intensity=u_ao[0];float h=max(0.0,v_ao.z);float h_floors=h/u_ao[1];float y_shade=1.0-0.9*intensity*min(v_ao.y,1.0);float shade=(1.0-0.08*intensity)*(y_shade+(1.0-y_shade)*(1.0-pow(1.0-min(h_floors/16.0,1.0),16.0)))+0.08*intensity*min(h_floors/160.0,1.0);float concave=v_ao.x*v_ao.x;float x_shade=mix(1.0,mix(0.6,0.75,min(h_floors/30.0,1.0)),intensity)+0.1*intensity*min(h,1.0);shade*=mix(1.0,x_shade*x_shade*x_shade,concave);out_color.rgb=out_color.rgb*shade;
#endif
#ifdef FOG
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
#endif
gl_FragColor=out_color;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform float u_tile_units_to_pixels;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec4 a_pos_normal_ed;attribute vec2 a_centroid_pos;
#ifdef PROJECTION_GLOBE_VIEW
attribute vec3 a_pos_3;attribute vec3 a_pos_normal_3;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_tile_id;uniform float u_zoom_transition;uniform vec3 u_up_dir;uniform float u_height_lift;
#endif
varying vec2 v_pos;varying vec4 v_lighting;
#ifdef FAUX_AO
uniform lowp vec2 u_ao;varying vec3 v_ao;
#endif
#ifdef LIGHTING_3D_MODE
varying float v_NdotL;
#endif
#pragma mapbox: define lowp float base
#pragma mapbox: define lowp float height
#pragma mapbox: define lowp vec4 pattern
#pragma mapbox: define lowp float pixel_ratio
void main() {
#pragma mapbox: initialize lowp float base
#pragma mapbox: initialize lowp float height
#pragma mapbox: initialize mediump vec4 pattern
#pragma mapbox: initialize lowp float pixel_ratio
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec4 pos_nx=floor(a_pos_normal_ed*0.5);mediump vec4 top_up_ny_start=a_pos_normal_ed-2.0*pos_nx;mediump vec3 top_up_ny=top_up_ny_start.xyz;float x_normal=pos_nx.z/8192.0;vec3 normal=top_up_ny.y==1.0 ? vec3(0.0,0.0,1.0) : normalize(vec3(x_normal,(2.0*top_up_ny.z-1.0)*(1.0-abs(x_normal)),0.0));float edgedistance=a_pos_normal_ed.w;vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;base=max(0.0,base);height=max(0.0,height);float t=top_up_ny.x;float z=t > 0.0 ? height : base;vec2 centroid_pos=vec2(0.0);
#if defined(HAS_CENTROID) || defined(TERRAIN)
centroid_pos=a_centroid_pos;
#endif
float ele=0.0;float h=z;vec3 p;float c_ele;
#ifdef TERRAIN
bool flat_roof=centroid_pos.x !=0.0 && t > 0.0;ele=elevation(pos_nx.xy);c_ele=flat_roof ? centroid_pos.y==0.0 ? elevationFromUint16(centroid_pos.x) : flatElevation(centroid_pos) : ele;h=flat_roof ? max(c_ele+height,ele+base+2.0) : ele+(t > 0.0 ? height : base==0.0 ?-5.0 : base);p=vec3(pos_nx.xy,h);
#else
p=vec3(pos_nx.xy,z);
#endif
#ifdef PROJECTION_GLOBE_VIEW
float lift=float((t+base) > 0.0)*u_height_lift;h+=lift;vec3 globe_normal=normalize(mix(a_pos_normal_3/16384.0,u_up_dir,u_zoom_transition));vec3 globe_pos=a_pos_3+globe_normal*(u_tile_up_scale*(p.z+lift));vec3 merc_pos=mercator_tile_position(u_inv_rot_matrix,p.xy,u_tile_id,u_merc_center)+u_up_dir*u_tile_up_scale*p.z;p=mix_globe_mercator(globe_pos,merc_pos,u_zoom_transition);
#endif
float hidden=float(centroid_pos.x==0.0 && centroid_pos.y==1.0);gl_Position=mix(u_matrix*vec4(p,1),AWAY,hidden);vec2 pos=normal.z==1.0
? pos_nx.xy
: vec2(edgedistance,z*u_height_factor);v_pos=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,display_size,u_tile_units_to_pixels,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float NdotL=0.0;
#ifdef LIGHTING_3D_MODE
NdotL=calculate_NdotL(normal);
#else
NdotL=clamp(dot(normal,u_lightpos),0.0,1.0);NdotL=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),NdotL);
#endif
if (normal.y !=0.0) {float r=0.84;
#ifndef LIGHTING_3D_MODE
r=mix(0.7,0.98,1.0-u_lightintensity);
#endif
NdotL*=(
(1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),r,1.0)));}
#ifdef FAUX_AO
float concave=pos_nx.w-floor(pos_nx.w*0.5)*2.0;float start=top_up_ny_start.w;float y_ground=1.0-clamp(t+base,0.0,1.0);float top_height=height;
#ifdef TERRAIN
top_height=mix(max(c_ele+height,ele+base+2.0),ele+height,float(centroid_pos.x==0.0))-ele;y_ground+=y_ground*5.0/max(3.0,top_height);
#endif
v_ao=vec3(mix(concave,-concave,start),y_ground,h-ele);NdotL*=(1.0+0.05*(1.0-top_up_ny.y)*u_ao[0]);
#ifdef PROJECTION_GLOBE_VIEW
top_height+=u_height_lift;
#endif
gl_Position.z-=(0.0000006*(min(top_height,500.)+2.0*min(base,500.0)+60.0*concave+3.0*start))*gl_Position.w;
#endif
#ifdef LIGHTING_3D_MODE
v_NdotL=NdotL;
#else
v_lighting.rgb+=clamp(NdotL*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;
#endif
#ifdef FOG
v_fog_pos=fog_position(p);
#endif
}`),hillshadePrepare:Si(`#ifdef GL_ES
precision highp float;
#endif
uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord) {
#ifdef TERRAIN_DEM_FLOAT_FORMAT
return texture2D(u_image,coord).a/4.0;
#else
vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;
#endif
}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y));float b=getElevation(v_pos+vec2(0,-epsilon.y));float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y));float d=getElevation(v_pos+vec2(-epsilon.x,0));float e=getElevation(v_pos+vec2(epsilon.x,0));float f=getElevation(v_pos+vec2(-epsilon.x,epsilon.y));float g=getElevation(v_pos+vec2(0,epsilon.y));float h=getElevation(v_pos+vec2(epsilon.x,epsilon.y));float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2(
(c+e+e+h)-(a+d+d+f),(f+g+g+h)-(a+b+b+c)
)/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(
deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:Si(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;
#ifdef LIGHTING_3D_MODE
gl_FragColor=apply_lighting(gl_FragColor);
#endif
#ifdef FOG
gl_FragColor=fog_dither(fog_apply_premultiplied(gl_FragColor,v_fog_pos));
#endif
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;
#ifdef FOG
v_fog_pos=fog_position(a_pos);
#endif
}`),line:Si(`uniform lowp float u_device_pixel_ratio;uniform float u_alpha_discard_threshold;uniform highp vec2 u_trim_offset;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec4 v_uv;
#ifdef RENDER_LINE_DASH
uniform sampler2D u_dash_image;varying vec2 v_tex;
#endif
#ifdef RENDER_LINE_GRADIENT
uniform sampler2D u_gradient_image;
#endif
uniform float u_border_width;uniform vec4 u_border_color;float luminance(vec3 c) {return (c.r+c.r+c.b+c.g+c.g+c.g)*0.1667;}
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float floorwidth
#pragma mapbox: define lowp vec4 dash
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
float linearstep(float edge0,float edge1,float x) {return clamp((x-edge0)/(edge1-edge0),0.0,1.0);}void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float floorwidth
#pragma mapbox: initialize lowp vec4 dash
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);
#ifdef RENDER_LINE_DASH
float sdfdist=texture2D(u_dash_image,v_tex).a;float sdfgamma=1.0/(2.0*u_device_pixel_ratio)/dash.z;alpha*=linearstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);
#endif
highp vec4 out_color;
#ifdef RENDER_LINE_GRADIENT
out_color=texture2D(u_gradient_image,v_uv.xy);
#else
out_color=color;
#endif
float trimmed=1.0;
#ifdef RENDER_LINE_TRIM_OFFSET
highp float start=v_uv[2];highp float end=v_uv[3];highp float trim_start=u_trim_offset[0];highp float trim_end=u_trim_offset[1];highp float line_progress=(start+(v_uv.x)*(end-start));if (trim_end > trim_start) {if (line_progress <=trim_end && line_progress >=trim_start) {out_color=vec4(0,0,0,0);trimmed=0.0;}}
#endif
#ifdef LIGHTING_3D_MODE
out_color=apply_lighting(out_color);
#endif
#ifdef FOG
out_color=fog_dither(fog_apply_premultiplied(out_color,v_fog_pos));
#endif
#ifdef RENDER_LINE_ALPHA_DISCARD
if (alpha < u_alpha_discard_threshold) {discard;}
#endif
#ifdef RENDER_LINE_BORDER
float edgeBlur=(u_border_width+1.0/u_device_pixel_ratio);float alpha2=clamp(min(dist-(v_width2.t-edgeBlur),v_width2.s-dist)/edgeBlur,0.0,1.0);if (alpha2 < 1.) {float smoothAlpha=smoothstep(0.6,1.0,alpha2);
#ifdef RENDER_LINE_BORDER_AUTO
float Y=(out_color.a > 0.01) ? luminance(out_color.rgb/out_color.a) : 1.;float adjustment=(Y > 0.) ? 0.5/Y : 0.45;if (out_color.a > 0.25 && Y < 0.25) {vec3 borderColor=(Y > 0.) ? out_color.rgb : vec3(1,1,1)*out_color.a;out_color.rgb=out_color.rgb+borderColor*(adjustment*(1.0-smoothAlpha));} else {out_color.rgb*=(0.6 +0.4*smoothAlpha);}
#else
out_color.rgb=mix(u_border_color.rgb*u_border_color.a*trimmed,out_color.rgb,smoothAlpha);
#endif
}
#endif
gl_FragColor=out_color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`
#define EXTRUDE_SCALE 0.015873016
attribute vec2 a_pos_normal;attribute vec4 a_data;
#if defined(RENDER_LINE_GRADIENT) || defined(RENDER_LINE_TRIM_OFFSET)
attribute highp vec4 a_packed;
#endif
#ifdef RENDER_LINE_DASH
attribute float a_linesofar;
#endif
uniform mat4 u_matrix;uniform mat2 u_pixels_to_tile_units;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec4 v_uv;
#ifdef RENDER_LINE_DASH
uniform vec2 u_texsize;uniform float u_tile_units_to_pixels;varying vec2 v_tex;
#endif
#ifdef RENDER_LINE_GRADIENT
uniform float u_image_height;
#endif
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float floorwidth
#pragma mapbox: define lowp vec4 dash
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float floorwidth
#pragma mapbox: initialize lowp vec4 dash
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*EXTRUDE_SCALE;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*EXTRUDE_SCALE*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;
#ifndef RENDER_TO_TEXTURE
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#else
v_gamma_scale=1.0;
#endif
#if defined(RENDER_LINE_GRADIENT) || defined(RENDER_LINE_TRIM_OFFSET)
float a_uv_x=a_packed[0];float a_split_index=a_packed[1];highp float a_clip_start=a_packed[2];highp float a_clip_end=a_packed[3];
#ifdef RENDER_LINE_GRADIENT
highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec4(a_uv_x,a_split_index*texel_height-half_texel_height,a_clip_start,a_clip_end);
#else
v_uv=vec4(a_uv_x,0.0,a_clip_start,a_clip_end);
#endif
#endif
#ifdef RENDER_LINE_DASH
float scale=dash.z==0.0 ? 0.0 : u_tile_units_to_pixels/dash.z;float height=dash.y;v_tex=vec2(a_linesofar*scale/floorwidth,(-normal.y*height+dash.x+0.5)/u_texsize.y);
#endif
v_width2=vec2(outset,inset);
#ifdef FOG
v_fog_pos=fog_position(pos);
#endif
}`),linePattern:Si(`uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_tile_units_to_pixels;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;
#pragma mapbox: define lowp vec4 pattern
#pragma mapbox: define lowp float pixel_ratio
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize mediump vec4 pattern
#pragma mapbox: initialize lowp float pixel_ratio
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
vec2 pattern_tl=pattern.xy;vec2 pattern_br=pattern.zw;vec2 display_size=(pattern_br-pattern_tl)/pixel_ratio;vec2 pattern_size=vec2(display_size.x/u_tile_units_to_pixels,display_size.y);float aspect=display_size.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x=mod(v_linesofar/pattern_size.x*aspect,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos=mix(pattern_tl*texel_size-texel_size,pattern_br*texel_size+texel_size,vec2(x,y));vec4 color=texture2D(u_image,pos);
#ifdef LIGHTING_3D_MODE
color=apply_lighting(color);
#endif
#ifdef FOG
color=fog_dither(fog_apply_premultiplied(color,v_fog_pos));
#endif
gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`
#define scale 0.015873016
attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_linesofar;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mat2 u_pixels_to_tile_units;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
#pragma mapbox: define lowp vec4 pattern
#pragma mapbox: define lowp float pixel_ratio
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
#pragma mapbox: initialize mediump vec4 pattern
#pragma mapbox: initialize lowp float pixel_ratio
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist*u_pixels_to_tile_units,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2*u_pixels_to_tile_units,0.0,1.0)+projected_extrude;
#ifndef RENDER_TO_TEXTURE
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#else
v_gamma_scale=1.0;
#endif
v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;
#ifdef FOG
v_fog_pos=fog_position(pos);
#endif
}`),raster:Si(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(
dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);vec3 out_color=mix(u_high_vec,u_low_vec,rgb);
#ifdef LIGHTING_3D_MODE
out_color=apply_lighting(out_color);
#endif
#ifdef FOG
out_color=fog_dither(fog_apply(out_color,v_fog_pos));
#endif
gl_FragColor=vec4(out_color*color.a,color.a);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform vec2 u_perspective_transform;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {float w=1.0+dot(a_texture_pos,u_perspective_transform);gl_Position=u_matrix*vec4(a_pos*w,0,w);v_pos0=a_texture_pos/8192.0;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;
#ifdef FOG
v_fog_pos=fog_position(a_pos);
#endif
}`),symbolIcon:Si(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float opacity
lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_projected_pos;attribute float a_fade_opacity;
#ifdef PROJECTION_GLOBE_VIEW
attribute vec3 a_globe_anchor;attribute vec3 a_globe_normal;
#endif
uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform vec3 u_up_vector;
#ifdef PROJECTION_GLOBE_VIEW
uniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;
#endif
varying vec2 v_tex;varying float v_fade_opacity;
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float opacity
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_min_font_scale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);float globe_occlusion_fade;vec3 world_pos;vec3 mercator_pos;
#ifdef PROJECTION_GLOBE_VIEW
mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);world_pos=mix_globe_mercator(a_globe_anchor+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;
#else
world_pos=vec3(tile_anchor,0)+h;globe_occlusion_fade=1.0;
#endif
vec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(
0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjected_point;
#ifdef PROJECTION_GLOBE_VIEW
vec3 displacement=vec3(a_globe_normal.z,0,-a_globe_normal.x);offsetProjected_point=u_matrix*vec4(a_globe_anchor+displacement,1);
#else
offsetProjected_point=u_matrix*vec4(tile_anchor+vec2(1,0),0,1);
#endif
vec2 a=projected_point.xy/projected_point.w;vec2 b=offsetProjected_point.xy/offsetProjected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec4 projected_pos;
#ifdef PROJECTION_GLOBE_VIEW
vec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);
#else
projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);
#endif
highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*max(a_min_font_scale,font_scale)+a_pxoffset/16.0);
#ifdef TERRAIN
#ifdef PITCH_WITH_MAP_TERRAIN
vec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);
#endif
#endif
float occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;
#ifdef PROJECTION_GLOBE_VIEW
vec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));
#else
gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));
#endif
float projection_transition_fade=1.0;
#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)
projection_transition_fade=1.0-step(EPSILON,u_zoom_transition);
#endif
v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change))*projection_transition_fade;}`),symbolSDF:Si(`#define SDF_PX 8.0
uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_pixeloffset;attribute vec4 a_projected_pos;attribute float a_fade_opacity;
#ifdef PROJECTION_GLOBE_VIEW
attribute vec3 a_globe_anchor;attribute vec3 a_globe_normal;
#endif
uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec3 u_up_vector;
#ifdef PROJECTION_GLOBE_VIEW
uniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;
#endif
varying vec2 v_data0;varying vec3 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);float globe_occlusion_fade;vec3 world_pos;vec3 mercator_pos;
#ifdef PROJECTION_GLOBE_VIEW
mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);world_pos=mix_globe_mercator(a_globe_anchor+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;
#else
world_pos=vec3(tile_anchor,0)+h;globe_occlusion_fade=1.0;
#endif
vec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(
0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetprojected_point;
#ifdef PROJECTION_GLOBE_VIEW
vec3 displacement=vec3(a_globe_normal.z,0,-a_globe_normal.x);offsetprojected_point=u_matrix*vec4(a_globe_anchor+displacement,1);
#else
offsetprojected_point=u_matrix*vec4(tile_anchor+vec2(1,0),0,1);
#endif
vec2 a=projected_point.xy/projected_point.w;vec2 b=offsetprojected_point.xy/offsetprojected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec4 projected_pos;
#ifdef PROJECTION_GLOBE_VIEW
vec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);
#else
projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);
#endif
highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset);
#ifdef TERRAIN
#ifdef PITCH_WITH_MAP_TERRAIN
vec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);
#endif
#endif
float occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;
#ifdef PROJECTION_GLOBE_VIEW
vec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));
#else
gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));
#endif
float gamma_scale=gl_Position.w;float projection_transition_fade=1.0;
#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)
projection_transition_fade=1.0-step(EPSILON,u_zoom_transition);
#endif
vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade);}`),symbolTextAndIcon:Si(`#define SDF_PX 8.0
#define SDF 1.0
#define ICON 0.0
uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`attribute vec4 a_pos_offset;attribute vec4 a_tex_size;attribute vec4 a_projected_pos;attribute float a_fade_opacity;
#ifdef PROJECTION_GLOBE_VIEW
attribute vec3 a_globe_anchor;attribute vec3 a_globe_normal;
#endif
uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec3 u_up_vector;uniform vec2 u_texsize_icon;
#ifdef PROJECTION_GLOBE_VIEW
uniform vec3 u_tile_id;uniform mat4 u_inv_rot_matrix;uniform vec2 u_merc_center;uniform vec3 u_camera_forward;uniform float u_zoom_transition;uniform vec3 u_ecef_origin;uniform mat4 u_tile_matrix;
#endif
varying vec4 v_data0;varying vec4 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_tex_size.xy;vec2 a_size=a_tex_size.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[3];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 tile_anchor=a_pos;vec3 h=elevationVector(tile_anchor)*elevation(tile_anchor);float globe_occlusion_fade;vec3 world_pos;vec3 mercator_pos;
#ifdef PROJECTION_GLOBE_VIEW
mercator_pos=mercator_tile_position(u_inv_rot_matrix,tile_anchor,u_tile_id,u_merc_center);world_pos=mix_globe_mercator(a_globe_anchor+h,mercator_pos,u_zoom_transition);vec4 ecef_point=u_tile_matrix*vec4(world_pos,1.0);vec3 origin_to_point=ecef_point.xyz-u_ecef_origin;globe_occlusion_fade=dot(origin_to_point,u_camera_forward) >=0.0 ? 0.0 : 1.0;
#else
world_pos=vec3(tile_anchor,0)+h;globe_occlusion_fade=1.0;
#endif
vec4 projected_point=u_matrix*vec4(world_pos,1);highp float camera_to_anchor_distance=projected_point.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(
0.5+0.5*distance_ratio,0.0,1.5);size*=perspective_ratio;float font_scale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offset_projected_point=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projected_point.xy/projected_point.w;vec2 b=offset_projected_point.xy/offset_projected_point.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}vec4 projected_pos;
#ifdef PROJECTION_GLOBE_VIEW
vec3 proj_pos=mix_globe_mercator(a_projected_pos.xyz+h,mercator_pos,u_zoom_transition);projected_pos=u_label_plane_matrix*vec4(proj_pos,1.0);
#else
projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,h.z,1.0);
#endif
highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);float z=0.0;vec2 offset=rotation_matrix*(a_offset/32.0*font_scale);
#ifdef TERRAIN
#ifdef PITCH_WITH_MAP_TERRAIN
vec4 tile_pos=u_label_plane_matrix_inv*vec4(a_projected_pos.xy+offset,0.0,1.0);z=elevation(tile_pos.xy);
#endif
#endif
float occlusion_fade=occlusionFade(projected_point)*globe_occlusion_fade;
#ifdef PROJECTION_GLOBE_VIEW
vec3 xAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,u_up_vector)) : vec3(1,0,0);vec3 yAxis=u_pitch_with_map ? normalize(cross(a_globe_normal,xAxis)) : vec3(0,1,0);gl_Position=mix(u_coord_matrix*vec4(projected_pos.xyz/projected_pos.w+xAxis*offset.x+yAxis*offset.y,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));
#else
gl_Position=mix(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+offset,z,1.0),AWAY,float(projected_point.w <=0.0 || occlusion_fade==0.0));
#endif
float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(occlusion_fade,fade_opacity[0]+fade_change));float projection_transition_fade=1.0;
#if defined(PROJECTED_POS_ON_VIEWPORT) && defined(PROJECTION_GLOBE_VIEW)
projection_transition_fade=1.0-step(EPSILON,u_zoom_transition);
#endif
v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity*projection_transition_fade,is_sdf);}`),terrainRaster:Si(`uniform sampler2D u_image0;varying vec2 v_pos0;
#ifdef FOG
varying float v_fog_opacity;
#endif
#ifdef RENDER_SHADOWS
varying vec4 v_pos_light_view_0;varying vec4 v_pos_light_view_1;varying float v_depth;
#endif
void main() {vec4 color=texture2D(u_image0,v_pos0);
#ifdef RENDER_SHADOWS
color.xyz=shadowed_color(color.xyz,v_pos_light_view_0,v_pos_light_view_1,v_depth);
#endif
#ifdef FOG
#ifdef ZERO_EXAGGERATION
color=fog_dither(fog_apply_premultiplied(color,v_fog_pos));
#else
color=fog_dither(fog_apply_from_vert(color,v_fog_opacity));
#endif
#endif
gl_FragColor=color;
#ifdef TERRAIN_WIREFRAME
gl_FragColor=vec4(1.0,0.0,0.0,0.8);
#endif
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform float u_skirt_height;attribute vec2 a_pos;varying vec2 v_pos0;
#ifdef FOG
varying float v_fog_opacity;
#endif
#ifdef RENDER_SHADOWS
uniform mat4 u_light_matrix_0;uniform mat4 u_light_matrix_1;varying vec4 v_pos_light_view_0;varying vec4 v_pos_light_view_1;varying float v_depth;
#endif
const float wireframeOffset=0.00015;void main() {vec3 decomposedPosAndSkirt=decomposeToPosAndSkirt(a_pos);float skirt=decomposedPosAndSkirt.z;vec2 decodedPos=decomposedPosAndSkirt.xy;float elevation=elevation(decodedPos)-skirt*u_skirt_height;
#ifdef TERRAIN_WIREFRAME
elevation+=wireframeOffset;
#endif
v_pos0=decodedPos/8192.0;gl_Position=u_matrix*vec4(decodedPos,elevation,1.0);
#ifdef FOG
#ifdef ZERO_EXAGGERATION
v_fog_pos=fog_position(decodedPos);
#else
v_fog_opacity=fog(fog_position(vec3(decodedPos,elevation)));
#endif
#endif
#ifdef RENDER_SHADOWS
vec3 pos=vec3(decodedPos,elevation);v_pos_light_view_0=u_light_matrix_0*vec4(pos,1.);v_pos_light_view_1=u_light_matrix_1*vec4(pos,1.);v_depth=gl_Position.w;
#endif
}`),terrainDepth:Si(`#ifdef GL_ES
precision highp float;
#endif
varying float v_depth;void main() {gl_FragColor=pack_depth(v_depth);}`,"uniform mat4 u_matrix;attribute vec2 a_pos;varying float v_depth;void main() {float elevation=elevation(a_pos);gl_Position=u_matrix*vec4(a_pos,elevation,1.0);v_depth=gl_Position.z/gl_Position.w;}"),skybox:Si(`
varying lowp vec3 v_uv;uniform lowp samplerCube u_cubemap;uniform lowp float u_opacity;uniform highp float u_temporal_offset;uniform highp vec3 u_sun_direction;float sun_disk(highp vec3 ray_direction,highp vec3 sun_direction) {highp float cos_angle=dot(normalize(ray_direction),sun_direction);const highp float cos_sun_angular_diameter=0.99996192306;const highp float smoothstep_delta=1e-5;return smoothstep(
cos_sun_angular_diameter-smoothstep_delta,cos_sun_angular_diameter+smoothstep_delta,cos_angle);}float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec3 uv=v_uv;const float y_bias=0.015;uv.y+=y_bias;uv.y=pow(abs(uv.y),1.0/5.0);uv.y=map(uv.y,0.0,1.0,-1.0,1.0);vec3 sky_color=textureCube(u_cubemap,uv).rgb;
#ifdef FOG
sky_color=fog_apply_sky_gradient(v_uv.xzy,sky_color);
#endif
sky_color.rgb=dither(sky_color.rgb,gl_FragCoord.xy+u_temporal_offset);sky_color+=0.1*sun_disk(v_uv,u_sun_direction);gl_FragColor=vec4(sky_color*u_opacity,u_opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,Ln),skyboxGradient:Si(`varying highp vec3 v_uv;uniform lowp sampler2D u_color_ramp;uniform highp vec3 u_center_direction;uniform lowp float u_radius;uniform lowp float u_opacity;uniform highp float u_temporal_offset;void main() {float progress=acos(dot(normalize(v_uv),u_center_direction))/u_radius;vec4 color=texture2D(u_color_ramp,vec2(progress,0.5));
#ifdef FOG
color.rgb=fog_apply_sky_gradient(v_uv.xzy,color.rgb/color.a)*color.a;
#endif
color*=u_opacity;color.rgb=dither(color.rgb,gl_FragCoord.xy+u_temporal_offset);gl_FragColor=color;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,Ln),skyboxCapture:Si(`
varying highp vec3 v_position;uniform highp float u_sun_intensity;uniform highp float u_luminance;uniform lowp vec3 u_sun_direction;uniform highp vec4 u_color_tint_r;uniform highp vec4 u_color_tint_m;
#ifdef GL_ES
precision highp float;
#endif
#define BETA_R vec3(5.5e-6,13.0e-6,22.4e-6)
#define BETA_M vec3(21e-6,21e-6,21e-6)
#define MIE_G 0.76
#define DENSITY_HEIGHT_SCALE_R 8000.0
#define DENSITY_HEIGHT_SCALE_M 1200.0
#define PLANET_RADIUS 6360e3
#define ATMOSPHERE_RADIUS 6420e3
#define SAMPLE_STEPS 10
#define DENSITY_STEPS 4
float ray_sphere_exit(vec3 orig,vec3 dir,float radius) {float a=dot(dir,dir);float b=2.0*dot(dir,orig);float c=dot(orig,orig)-radius*radius;float d=sqrt(b*b-4.0*a*c);return (-b+d)/(2.0*a);}vec3 extinction(vec2 density) {return exp(-vec3(BETA_R*u_color_tint_r.a*density.x+BETA_M*u_color_tint_m.a*density.y));}vec2 local_density(vec3 point) {float height=max(length(point)-PLANET_RADIUS,0.0);float exp_r=exp(-height/DENSITY_HEIGHT_SCALE_R);float exp_m=exp(-height/DENSITY_HEIGHT_SCALE_M);return vec2(exp_r,exp_m);}float phase_ray(float cos_angle) {return (3.0/(16.0*PI))*(1.0+cos_angle*cos_angle);}float phase_mie(float cos_angle) {return (3.0/(8.0*PI))*((1.0-MIE_G*MIE_G)*(1.0+cos_angle*cos_angle))/((2.0+MIE_G*MIE_G)*pow(1.0+MIE_G*MIE_G-2.0*MIE_G*cos_angle,1.5));}vec2 density_to_atmosphere(vec3 point,vec3 light_dir) {float ray_len=ray_sphere_exit(point,light_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(DENSITY_STEPS);vec2 density_point_to_atmosphere=vec2(0.0);for (int i=0; i < DENSITY_STEPS;++i) {vec3 point_on_ray=point+light_dir*((float(i)+0.5)*step_len);density_point_to_atmosphere+=local_density(point_on_ray)*step_len;;}return density_point_to_atmosphere;}vec3 atmosphere(vec3 ray_dir,vec3 sun_direction,float sun_intensity) {vec2 density_orig_to_point=vec2(0.0);vec3 scatter_r=vec3(0.0);vec3 scatter_m=vec3(0.0);vec3 origin=vec3(0.0,PLANET_RADIUS,0.0);float ray_len=ray_sphere_exit(origin,ray_dir,ATMOSPHERE_RADIUS);float step_len=ray_len/float(SAMPLE_STEPS);for (int i=0; i < SAMPLE_STEPS;++i) {vec3 point_on_ray=origin+ray_dir*((float(i)+0.5)*step_len);vec2 density=local_density(point_on_ray)*step_len;density_orig_to_point+=density;vec2 density_point_to_atmosphere=density_to_atmosphere(point_on_ray,sun_direction);vec2 density_orig_to_atmosphere=density_orig_to_point+density_point_to_atmosphere;vec3 extinction=extinction(density_orig_to_atmosphere);scatter_r+=density.x*extinction;scatter_m+=density.y*extinction;}float cos_angle=dot(ray_dir,sun_direction);float phase_r=phase_ray(cos_angle);float phase_m=phase_mie(cos_angle);vec3 beta_r=BETA_R*u_color_tint_r.rgb*u_color_tint_r.a;vec3 beta_m=BETA_M*u_color_tint_m.rgb*u_color_tint_m.a;return (scatter_r*phase_r*beta_r+scatter_m*phase_m*beta_m)*sun_intensity;}const float A=0.15;const float B=0.50;const float C=0.10;const float D=0.20;const float E=0.02;const float F=0.30;vec3 uncharted2_tonemap(vec3 x) {return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;}void main() {vec3 ray_direction=v_position;ray_direction.y=pow(ray_direction.y,5.0);const float y_bias=0.015;ray_direction.y+=y_bias;vec3 color=atmosphere(normalize(ray_direction),u_sun_direction,u_sun_intensity);float white_scale=1.0748724675633854;color=uncharted2_tonemap((log2(2.0/pow(u_luminance,4.0)))*color)*white_scale;gl_FragColor=vec4(color,1.0);}`,"attribute highp vec3 a_pos_3f;uniform mat3 u_matrix_3f;varying highp vec3 v_position;float map(float value,float start,float end,float new_start,float new_end) {return ((value-start)*(new_end-new_start))/(end-start)+new_start;}void main() {vec4 pos=vec4(u_matrix_3f*a_pos_3f,1.0);v_position=pos.xyz;v_position.y*=-1.0;v_position.y=map(v_position.y,-1.0,1.0,0.0,1.0);gl_Position=vec4(a_pos_3f.xy,0.0,1.0);}"),globeRaster:Si(`uniform sampler2D u_image0;varying vec2 v_pos0;
#ifndef FOG
uniform highp vec3 u_frustum_tl;uniform highp vec3 u_frustum_tr;uniform highp vec3 u_frustum_br;uniform highp vec3 u_frustum_bl;uniform highp vec3 u_globe_pos;uniform highp float u_globe_radius;uniform vec2 u_viewport;
#endif
void main() {vec4 color;
#ifdef CUSTOM_ANTIALIASING
vec2 uv=gl_FragCoord.xy/u_viewport;highp vec3 ray_dir=mix(
mix(u_frustum_tl,u_frustum_tr,uv.x),mix(u_frustum_bl,u_frustum_br,uv.x),1.0-uv.y);vec3 dir=normalize(ray_dir);vec3 closest_point=dot(u_globe_pos,dir)*dir;float norm_dist_from_center=1.0-length(closest_point-u_globe_pos)/u_globe_radius;const float antialias_pixel=2.0;float antialias_factor=antialias_pixel*fwidth(norm_dist_from_center);float antialias=smoothstep(0.0,antialias_factor,norm_dist_from_center);vec4 raster=texture2D(u_image0,v_pos0);color=vec4(raster.rgb*antialias,raster.a*antialias);
#else
color=texture2D(u_image0,v_pos0);
#endif
#ifdef FOG
color=fog_dither(fog_apply_premultiplied(color,v_fog_pos));
#endif
gl_FragColor=color;
#ifdef TERRAIN_WIREFRAME
gl_FragColor=vec4(1.0,0.0,0.0,0.8);
#endif
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_proj_matrix;uniform mat4 u_normalize_matrix;uniform mat4 u_globe_matrix;uniform mat4 u_merc_matrix;uniform float u_zoom_transition;uniform vec2 u_merc_center;uniform mat3 u_grid_matrix;uniform float u_skirt_height;
#ifdef GLOBE_POLES
attribute vec3 a_globe_pos;attribute vec2 a_uv;
#else
attribute vec2 a_pos;
#endif
varying vec2 v_pos0;const float wireframeOffset=1e3;float mercatorXfromLng(float lng) {return (180.0+lng)/360.0;}float mercatorYfromLat(float lat) {return (180.0-(RAD_TO_DEG*log(tan(QUARTER_PI+lat/2.0*DEG_TO_RAD))))/360.0;}vec3 latLngToECEF(vec2 latLng) {latLng=DEG_TO_RAD*latLng;float cosLat=cos(latLng[0]);float sinLat=sin(latLng[0]);float cosLng=cos(latLng[1]);float sinLng=sin(latLng[1]);float sx=cosLat*sinLng*GLOBE_RADIUS;float sy=-sinLat*GLOBE_RADIUS;float sz=cosLat*cosLng*GLOBE_RADIUS;return vec3(sx,sy,sz);}void main() {
#ifdef GLOBE_POLES
vec3 globe_pos=a_globe_pos;vec2 uv=a_uv;
#else
float tiles=u_grid_matrix[0][2];float idx=u_grid_matrix[1][2];float idy=u_grid_matrix[2][2];vec3 decomposed_pos_and_skirt=decomposeToPosAndSkirt(a_pos);vec3 latLng=u_grid_matrix*vec3(decomposed_pos_and_skirt.xy,1.0);float mercatorY=mercatorYfromLat(latLng[0]);float uvY=mercatorY*tiles-idy;float mercatorX=mercatorXfromLng(latLng[1]);float uvX=mercatorX*tiles-idx;vec3 globe_pos=latLngToECEF(latLng.xy);vec2 merc_pos=vec2(mercatorX,mercatorY);vec2 uv=vec2(uvX,uvY);
#endif
v_pos0=uv;vec2 tile_pos=uv*EXTENT;vec3 globe_derived_up_vector=normalize(globe_pos)*u_tile_up_scale;
#ifdef GLOBE_POLES
vec3 up_vector=globe_derived_up_vector;
#else
vec3 up_vector=elevationVector(tile_pos);
#endif
float height=elevation(tile_pos);
#ifdef TERRAIN_WIREFRAME
height+=wireframeOffset;
#endif
globe_pos+=up_vector*height;
#ifndef GLOBE_POLES
globe_pos-=globe_derived_up_vector*u_skirt_height*decomposed_pos_and_skirt.z;
#endif
#ifdef GLOBE_POLES
vec4 interpolated_pos=u_globe_matrix*vec4(globe_pos,1.0);
#else
vec4 globe_world_pos=u_globe_matrix*vec4(globe_pos,1.0);vec4 merc_world_pos=vec4(0.0);if (u_zoom_transition > 0.0) {merc_world_pos=vec4(merc_pos,height-u_skirt_height*decomposed_pos_and_skirt.z,1.0);merc_world_pos.xy-=u_merc_center;merc_world_pos.x=wrap(merc_world_pos.x,-0.5,0.5);merc_world_pos=u_merc_matrix*merc_world_pos;}vec4 interpolated_pos=vec4(mix(globe_world_pos.xyz,merc_world_pos.xyz,u_zoom_transition),1.0);
#endif
gl_Position=u_proj_matrix*interpolated_pos;
#ifdef FOG
v_fog_pos=fog_position((u_normalize_matrix*vec4(globe_pos,1.0)).xyz);
#endif
}`),globeAtmosphere:Si(`uniform float u_transition;uniform highp float u_fadeout_range;uniform highp float u_temporal_offset;uniform vec3 u_start_color;uniform vec4 u_color;uniform vec4 u_space_color;uniform vec4 u_high_color;uniform float u_star_intensity;uniform float u_star_size;uniform float u_star_density;uniform float u_horizon_angle;uniform mat4 u_rotation_matrix;varying highp vec3 v_ray_dir;varying highp vec3 v_horizon_dir;highp float random(highp vec3 p) {p=fract(p*vec3(23.2342,97.1231,91.2342));p+=dot(p.zxy,p.yxz+123.1234);return fract(p.x*p.y);}float stars(vec3 p,float scale,vec2 offset) {vec2 uv_scale=(u_viewport/u_star_size)*scale;vec3 position=vec3(p.xy*uv_scale+offset*u_viewport,p.z);vec3 q=fract(position)-0.5;vec3 id=floor(position);float random_visibility=step(random(id),u_star_density);float circle=smoothstep(0.5+u_star_intensity,0.5,length(q));return circle*random_visibility;}void main() {highp vec3 dir=normalize(v_ray_dir);float globe_pos_dot_dir;
#ifdef PROJECTION_GLOBE_VIEW
globe_pos_dot_dir=dot(u_globe_pos,dir);highp vec3 closest_point_forward=abs(globe_pos_dot_dir)*dir;float norm_dist_from_center=length(closest_point_forward-u_globe_pos)/u_globe_radius;if (norm_dist_from_center < 0.98) {discard;return;}
#endif
highp vec3 horizon_dir=normalize(v_horizon_dir);float horizon_angle_mercator=dir.y < horizon_dir.y ?
0.0 : max(acos(dot(dir,horizon_dir)),0.0);float horizon_angle;
#ifdef PROJECTION_GLOBE_VIEW
highp vec3 closest_point=globe_pos_dot_dir*dir;float closest_point_to_center=length(closest_point-u_globe_pos);float theta=asin(clamp(closest_point_to_center/length(u_globe_pos),-1.0,1.0));horizon_angle=globe_pos_dot_dir < 0.0 ?
PI-theta-u_horizon_angle : theta-u_horizon_angle;float angle_t=pow(u_transition,10.0);horizon_angle=mix(horizon_angle,horizon_angle_mercator,angle_t);
#else
horizon_angle=horizon_angle_mercator;
#endif
horizon_angle/=PI;float t=exp(-horizon_angle/u_fadeout_range);float alpha_0=u_color.a;float alpha_1=u_high_color.a;float alpha_2=u_space_color.a;vec3 color_stop_0=u_color.rgb;vec3 color_stop_1=u_high_color.rgb;vec3 color_stop_2=u_space_color.rgb;vec3 c0=mix(color_stop_2,color_stop_1,alpha_1);vec3 c1=mix(c0,color_stop_0,alpha_0);vec3 c2=mix(c0,c1,t);vec3 c =mix(color_stop_2,c2,t);float a0=mix(alpha_2,1.0,alpha_1);float a1=mix(a0,1.0,alpha_0);float a2=mix(a0,a1,t);float a =mix(alpha_2,a2,t);vec2 uv=gl_FragCoord.xy/u_viewport-0.5;float aspect_ratio=u_viewport.x/u_viewport.y;vec4 uv_dir=vec4(normalize(vec3(uv.x*aspect_ratio,uv.y,1.0)),1.0);uv_dir=u_rotation_matrix*uv_dir;vec3 n=abs(uv_dir.xyz);vec2 uv_remap=(n.x > n.y && n.x > n.z) ? uv_dir.yz/uv_dir.x:
(n.y > n.x && n.y > n.z) ? uv_dir.zx/uv_dir.y:
uv_dir.xy/uv_dir.z;uv_remap.x/=aspect_ratio;vec3 D=vec3(uv_remap,1.0);highp float star_field=0.0;if (u_star_intensity > 0.0) {star_field+=stars(D,1.2,vec2(0.0,0.0));star_field+=stars(D,1.0,vec2(1.0,0.0));star_field+=stars(D,0.8,vec2(0.0,1.0));star_field+=stars(D,0.6,vec2(1.0,1.0));star_field*=(1.0-pow(t,0.25+(1.0-u_high_color.a)*0.75));c+=star_field*alpha_2;}c=dither(c,gl_FragCoord.xy+u_temporal_offset);gl_FragColor=vec4(c,a);}`,`attribute vec3 a_pos;attribute vec2 a_uv;uniform vec3 u_frustum_tl;uniform vec3 u_frustum_tr;uniform vec3 u_frustum_br;uniform vec3 u_frustum_bl;uniform float u_horizon;varying highp vec3 v_ray_dir;varying highp vec3 v_horizon_dir;void main() {v_ray_dir=mix(
mix(u_frustum_tl,u_frustum_tr,a_uv.x),mix(u_frustum_bl,u_frustum_br,a_uv.x),a_uv.y);v_horizon_dir=mix(
mix(u_frustum_tl,u_frustum_bl,u_horizon),mix(u_frustum_tr,u_frustum_br,u_horizon),a_uv.x);gl_Position=vec4(a_pos,1.0);}`)};function _s(h,n){const a=h.replace(/\s*\/\/[^\n]*\n/g,`
`).split(`
`);for(let p of a)if(p=p.trim(),p[0]==="#"&&p.includes("if")&&!p.includes("endif")){p=p.replace("#","").replace(/ifdef|ifndef|elif|if/g,"").replace(/!|defined|\(|\)|\|\||&&/g,"").replace(/\s+/g," ").trim();const _=p.split(" ");for(const b of _)n.includes(b)||n.push(b)}}function Si(h,n){const a=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,p=n.match(/attribute (highp |mediump |lowp )?([\w]+) ([\w]+)/g),_={},b=[...Zs];return _s(h,b),_s(n,b),{fragmentSource:h=h.replace(a,(I,M,P,N,z)=>(_[z]=!0,M==="define"?`
#ifndef HAS_UNIFORM_u_${z}
varying ${P} ${N} ${z};
#else
uniform ${P} ${N} u_${z};
#endif
`:`
#ifdef HAS_UNIFORM_u_${z}
${P} ${N} ${z} = u_${z};
#endif
`)),vertexSource:n=n.replace(a,(I,M,P,N,z)=>{const j=N==="float"?"vec2":"vec4",Y=z.match(/color/)?"color":j;return _[z]?M==="define"?`
#ifndef HAS_UNIFORM_u_${z}
uniform lowp float u_${z}_t;
attribute ${P} ${j} a_${z};
varying ${P} ${N} ${z};
#else
uniform ${P} ${N} u_${z};
#endif
`:Y==="vec4"?`
#ifndef HAS_UNIFORM_u_${z}
${z} = a_${z};
#else
${P} ${N} ${z} = u_${z};
#endif
`:`
#ifndef HAS_UNIFORM_u_${z}
${z} = unpack_mix_${Y}(a_${z}, u_${z}_t);
#else
${P} ${N} ${z} = u_${z};
#endif
`:M==="define"?`
#ifndef HAS_UNIFORM_u_${z}
uniform lowp float u_${z}_t;
attribute ${P} ${j} a_${z};
#else
uniform ${P} ${N} u_${z};
#endif
`:Y==="vec4"?`
#ifndef HAS_UNIFORM_u_${z}
${P} ${N} ${z} = a_${z};
#else
${P} ${N} ${z} = u_${z};
#endif
`:`
#ifndef HAS_UNIFORM_u_${z}
${P} ${N} ${z} = unpack_mix_${Y}(a_${z}, u_${z}_t);
#else
${P} ${N} ${z} = u_${z};
#endif
`}),staticAttributes:p,usedDefines:b}}class xc{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffers=[],this.vao=null}bind(n,a,p,_,b,I,M){this.context=n;let P=this.boundPaintVertexBuffers.length!==_.length;for(let z=0;!P&&z<_.length;z++)this.boundPaintVertexBuffers[z]!==_[z]&&(P=!0);let N=this.boundDynamicVertexBuffers.length!==M.length;for(let z=0;!N&&z<M.length;z++)this.boundDynamicVertexBuffers[z]!==M[z]&&(N=!0);if(!n.extVertexArrayObject||!this.vao||this.boundProgram!==a||this.boundLayoutVertexBuffer!==p||P||N||this.boundIndexBuffer!==b||this.boundVertexOffset!==I)this.freshBind(a,p,_,b,I,M);else{n.bindVertexArrayOES.set(this.vao);for(const z of M)z&&z.bind();b&&b.dynamicDraw&&b.bind()}}freshBind(n,a,p,_,b,I){let M;const P=n.numAttributes,N=this.context,z=N.gl;if(N.extVertexArrayObject)this.vao&&this.destroy(),this.vao=N.extVertexArrayObject.createVertexArrayOES(),N.bindVertexArrayOES.set(this.vao),M=0,this.boundProgram=n,this.boundLayoutVertexBuffer=a,this.boundPaintVertexBuffers=p,this.boundIndexBuffer=_,this.boundVertexOffset=b,this.boundDynamicVertexBuffers=I;else{M=N.currentNumAttributes||0;for(let j=P;j<M;j++)z.disableVertexAttribArray(j)}a.enableAttributes(z,n),a.bind(),a.setVertexAttribPointers(z,n,b);for(const j of p)j.enableAttributes(z,n),j.bind(),j.setVertexAttribPointers(z,n,b);for(const j of I)j&&(j.enableAttributes(z,n),j.bind(),j.setVertexAttribPointers(z,n,b));_&&_.bind(),N.currentNumAttributes=P}destroy(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null)}}function ml(h,n){const a=Math.pow(2,n.canonical.z),p=n.canonical.y;return[new s.MercatorCoordinate(0,p/a).toLngLat().lat,new s.MercatorCoordinate(0,(p+1)/a).toLngLat().lat]}function pu(h,n,a,p,_,b,I){const M=h.context,P=M.gl,N=a.fbo;if(!N)return;h.prepareDrawTile();const z=h.useProgram("hillshade");M.activeTexture.set(P.TEXTURE0),P.bindTexture(P.TEXTURE_2D,N.colorAttachment.get());const j=((ee,ie,V,K)=>{const ae=V.paint.get("hillshade-shadow-color"),le=V.paint.get("hillshade-highlight-color"),xe=V.paint.get("hillshade-accent-color");let Te=V.paint.get("hillshade-illumination-direction")*(Math.PI/180);V.paint.get("hillshade-illumination-anchor")==="viewport"&&(Te-=ee.transform.angle);const be=!ee.options.moving;return{u_matrix:K||ee.transform.calculateProjMatrix(ie.tileID.toUnwrapped(),be),u_image:0,u_latrange:ml(0,ie.tileID),u_light:[V.paint.get("hillshade-exaggeration"),Te],u_shadow:ae,u_highlight:le,u_accent:xe}})(h,a,p,h.terrain?n.projMatrix:null);h.prepareDrawProgram(M,z,n.toUnwrapped());const{tileBoundsBuffer:Y,tileBoundsIndexBuffer:J,tileBoundsSegments:te}=h.getTileBoundsBuffers(a);z.draw(M,P.TRIANGLES,_,b,I,s.CullFaceMode.disabled,j,p.id,Y,J,te)}function ao(h,n,a){if(!n.needsDEMTextureUpload)return;const p=h.context,_=p.gl;p.pixelStoreUnpackPremultiplyAlpha.set(!1),n.demTexture=n.demTexture||h.getTileTexture(a.stride);const b=a.getPixels();n.demTexture?n.demTexture.update(b,{premultiply:!1}):n.demTexture=new s.Texture(p,b,_.RGBA,{premultiply:!1}),n.needsDEMTextureUpload=!1}function ar(h,n,a,p,_,b){const I=h.context,M=I.gl;if(!n.dem)return;const P=n.dem;if(I.activeTexture.set(M.TEXTURE1),ao(h,n,P),!n.demTexture)return;n.demTexture.bind(M.NEAREST,M.CLAMP_TO_EDGE);const N=P.dim;I.activeTexture.set(M.TEXTURE0);let z=n.fbo;if(!z){const te=new s.Texture(I,{width:N,height:N,data:null},M.RGBA);te.bind(M.LINEAR,M.CLAMP_TO_EDGE),z=n.fbo=I.createFramebuffer(N,N,!0),z.colorAttachment.set(te.texture)}I.bindFramebuffer.set(z.framebuffer),I.viewport.set([0,0,N,N]);const{tileBoundsBuffer:j,tileBoundsIndexBuffer:Y,tileBoundsSegments:J}=h.getMercatorTileBoundsBuffers();h.useProgram("hillshadePrepare").draw(I,M.TRIANGLES,p,_,b,s.CullFaceMode.disabled,((te,ee)=>{const ie=ee.stride,V=s.create();return s.ortho(V,0,s.EXTENT,-s.EXTENT,0,0,1),s.translate(V,V,[0,-s.EXTENT,0]),{u_matrix:V,u_image:1,u_dimension:[ie,ie],u_zoom:te.overscaledZ,u_unpack:ee.unpackVector}})(n.tileID,P),a.id,j,Y,J),n.needsHillshadePrepare=!1}const gl=h=>({u_matrix:new s.UniformMatrix4f(h),u_image0:new s.Uniform1i(h),u_skirt_height:new s.Uniform1f(h)}),Go=(h,n)=>({u_matrix:h,u_image0:0,u_skirt_height:n}),Ea=(h,n,a,p,_,b,I,M,P,N,z,j,Y,J,te)=>({u_proj_matrix:Float32Array.from(h),u_globe_matrix:n,u_normalize_matrix:Float32Array.from(p),u_merc_matrix:a,u_zoom_transition:_,u_merc_center:b,u_image0:0,u_frustum_tl:I,u_frustum_tr:M,u_frustum_br:P,u_frustum_bl:N,u_globe_pos:z,u_globe_radius:j,u_viewport:Y,u_grid_matrix:te?Float32Array.from(te):new Float32Array(9),u_skirt_height:J});function So(h,n){return h!=null&&n!=null&&!(!h.hasData()||!n.hasData())&&h.demTexture!=null&&n.demTexture!=null&&h.tileID.key!==n.tileID.key}const Wr=new class{constructor(){this.operations={}}newMorphing(h,n,a,p,_){if(h in this.operations){const b=this.operations[h];b.to.tileID.key!==a.tileID.key&&(b.queued=a)}else this.operations[h]={startTime:p,phase:0,duration:_,from:n,to:a,queued:null}}getMorphValuesForProxy(h){if(!(h in this.operations))return null;const n=this.operations[h];return{from:n.from,to:n.to,phase:n.phase}}update(h){for(const n in this.operations){const a=this.operations[n];for(a.phase=(h-a.startTime)/a.duration;a.phase>=1||!this._validOp(a);)if(!this._nextOp(a,h)){delete this.operations[n];break}}}_nextOp(h,n){return!!h.queued&&(h.from=h.to,h.to=h.queued,h.queued=null,h.phase=0,h.startTime=n,!0)}_validOp(h){return h.from.hasData()&&h.to.hasData()}},lo={0:null,1:"TERRAIN_VERTEX_MORPHING",2:"TERRAIN_WIREFRAME"};function Ws(h){return 6*Math.pow(1.5,22-h)}function Er(h,n){const a=1<<h.z;return!n&&(h.x===0||h.x===a-1)||h.y===0||h.y===a-1}const ys=h=>({u_matrix:h});function Hn(h,n,a,p,_){if(_>0){const b=s.exported.now(),I=(b-h.timeAdded)/_,M=n?(b-n.timeAdded)/_:-1,P=a.getSource(),N=p.coveringZoomLevel({tileSize:P.tileSize,roundZoom:P.roundZoom}),z=!n||Math.abs(n.tileID.overscaledZ-N)>Math.abs(h.tileID.overscaledZ-N),j=z&&h.refreshedUponExpiration?1:s.clamp(z?I:1-M,0,1);return h.refreshedUponExpiration&&I>=1&&(h.refreshedUponExpiration=!1),n?{opacity:1,mix:1-j}:{opacity:j,mix:0}}return{opacity:1,mix:0}}class $o extends s.SourceCache{constructor(n){const a={type:"raster-dem",maxzoom:n.transform.maxZoom},p=new St(br(),null),_=ui("mock-dem",a,p,n.style);super("mock-dem",_,!1),_.setEventedParent(this),this._sourceLoaded=!0}_loadTile(n,a){n.state="loaded",a(null)}}class Ta extends s.SourceCache{constructor(n){const a=ui("proxy",{type:"geojson",maxzoom:n.transform.maxZoom},new St(br(),null),n.style);super("proxy",a,!1),a.setEventedParent(this),this.map=this.getSource().map=n,this.used=this._sourceLoaded=!0,this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={}}update(n,a,p){if(n.freezeTileCoverage)return;this.transform=n;const _=n.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}).reduce((b,I)=>{if(b[I.key]="",!this._tiles[I.key]){const M=new s.Tile(I,this._source.tileSize*I.overscaleFactor(),n.tileZoom);M.state="loaded",this._tiles[I.key]=M}return b},{});for(const b in this._tiles)b in _||(this.freeFBO(b),this._tiles[b].unloadVectorData(),delete this._tiles[b])}freeFBO(n){const a=this.proxyCachedFBO[n];if(a!==void 0){const p=Object.values(a);this.renderCachePool.push(...p),delete this.proxyCachedFBO[n]}}deallocRenderCache(){this.renderCache.forEach(n=>n.fb.destroy()),this.renderCache=[],this.renderCachePool=[],this.proxyCachedFBO={}}}class Ys extends s.OverscaledTileID{constructor(n,a,p){super(n.overscaledZ,n.wrap,n.canonical.z,n.canonical.x,n.canonical.y),this.proxyTileKey=a,this.projMatrix=p}}class Sa extends s.Elevation{constructor(n,a){super(),this.painter=n,this.terrainTileForTile={},this.prevTerrainTileForTile={};const[p,_,b]=function(P){const N=new s.StructArrayLayout2i4,z=new s.StructArrayLayout3ui6,j=131;N.reserve(17161),z.reserve(33800);const Y=s.EXTENT/128,J=s.EXTENT+Y/2,te=J+Y;for(let ie=-Y;ie<te;ie+=Y)for(let V=-Y;V<te;V+=Y){const K=V<0||V>J||ie<0||ie>J?24575:0,ae=s.clamp(Math.round(V),0,s.EXTENT),le=s.clamp(Math.round(ie),0,s.EXTENT);N.emplaceBack(ae+K,le)}const ee=(ie,V)=>{const K=V*j+ie;z.emplaceBack(K+1,K,K+j),z.emplaceBack(K+j,K+j+1,K+1)};for(let ie=1;ie<129;ie++)for(let V=1;V<129;V++)ee(V,ie);return[0,129].forEach(ie=>{for(let V=0;V<130;V++)ee(V,ie),ee(ie,V)}),[N,z,32768]}(),I=n.context;this.gridBuffer=I.createVertexBuffer(p,s.posAttributes.members),this.gridIndexBuffer=I.createIndexBuffer(_),this.gridSegments=s.SegmentVector.simpleSegment(0,0,p.length,_.length),this.gridNoSkirtSegments=s.SegmentVector.simpleSegment(0,0,p.length,b),this.proxyCoords=[],this.proxiedCoords={},this._visibleDemTiles=[],this._drapedRenderBatches=[],this._sourceTilesOverlap={},this.proxySourceCache=new Ta(a.map),this.orthoMatrix=s.create(),s.ortho(this.orthoMatrix,this.painter.transform.projection.name==="globe"?.015:0,s.EXTENT,0,s.EXTENT,0,1);const M=I.gl;this._overlapStencilMode=new s.StencilMode({func:M.GEQUAL,mask:255},0,255,M.KEEP,M.KEEP,M.REPLACE),this._previousZoom=n.transform.zoom,this.pool=[],this._findCoveringTileCache={},this._tilesDirty={},this.style=a,this._useVertexMorphing=!0,this._exaggeration=1,this._mockSourceCache=new $o(a.map)}set style(n){n.on("data",this._onStyleDataEvent.bind(this)),n.on("neworder",this._checkRenderCacheEfficiency.bind(this)),this._style=n,this._checkRenderCacheEfficiency(),this._style.map.on("moveend",()=>{this._clearLineLayersFromRenderCache()})}update(n,a,p){if(n&&n.terrain){this._style!==n&&(this.style=n),this.enabled=!0;const _=n.terrain.properties;this.sourceCache=n.terrain.drapeRenderMode===0?this._mockSourceCache:n._getSourceCache(_.get("source")),this._exaggeration=_.get("exaggeration");const b=()=>{this.sourceCache.used&&s.warnOnce(`Raster DEM source '${this.sourceCache.id}' is used both for terrain and as layer source.
This leads to lower resolution of hillshade. For full hillshade resolution but higher memory consumption, define another raster DEM source.`);const I=this.getScaledDemTileSize();this.sourceCache.update(a,I,!0),this.resetTileLookupCache(this.sourceCache.id)};this.sourceCache.usedForTerrain||(this.resetTileLookupCache(this.sourceCache.id),this.sourceCache.usedForTerrain=!0,b(),this._initializing=!0),b(),a.updateElevation(!0,p),this.resetTileLookupCache(this.proxySourceCache.id),this.proxySourceCache.update(a),this._emptyDEMTextureDirty=!0}else this._disable()}resetTileLookupCache(n){this._findCoveringTileCache[n]={}}getScaledDemTileSize(){return this.sourceCache.getSource().tileSize/128*this.proxySourceCache.getSource().tileSize}_checkRenderCacheEfficiency(){const n=this.renderCacheEfficiency(this._style);this._style.map._optimizeForTerrain||n.efficiency!==100&&s.warnOnce(`Terrain render cache efficiency is not optimal (${n.efficiency}%) and performance
may be affected negatively, consider placing all background, fill and line layers before layer
with id '${n.firstUndrapedLayer}' or create a map using optimizeForTerrain: true option.`)}_onStyleDataEvent(n){n.coord&&n.dataType==="source"?this._clearRenderCacheForTile(n.sourceCacheId,n.coord):n.dataType==="style"&&(this._invalidateRenderCache=!0)}_disable(){if(this.enabled&&(this.enabled=!1,this._sharedDepthStencil=void 0,this.proxySourceCache.deallocRenderCache(),this._style))for(const n in this._style._sourceCaches)this._style._sourceCaches[n].usedForTerrain=!1}destroy(){this._disable(),this._emptyDEMTexture&&this._emptyDEMTexture.destroy(),this._emptyDepthBufferTexture&&this._emptyDepthBufferTexture.destroy(),this.pool.forEach(n=>n.fb.destroy()),this.pool=[],this._depthFBO&&(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0)}_source(){return this.enabled?this.sourceCache:null}isUsingMockSource(){return this.sourceCache===this._mockSourceCache}exaggeration(){return this._exaggeration}get visibleDemTiles(){return this._visibleDemTiles}get drapeBufferSize(){const n=2*this.proxySourceCache.getSource().tileSize;return[n,n]}set useVertexMorphing(n){this._useVertexMorphing=n}updateTileBinding(n){if(!this.enabled)return;this.prevTerrainTileForTile=this.terrainTileForTile;const a=this.proxySourceCache,p=this.painter.transform;this._initializing&&(this._initializing=p._centerAltitude===0&&this.getAtPointOrZero(s.MercatorCoordinate.fromLngLat(p.center),-1)===-1,this._emptyDEMTextureDirty=!this._initializing);const _=this.proxyCoords=a.getIds().map(P=>{const N=a.getTileByID(P).tileID;return N.projMatrix=p.calculateProjMatrix(N.toUnwrapped()),N});(function(P,N){const z=N.transform.pointCoordinate(N.transform.getCameraPoint()),j=new s.Point(z.x,z.y);P.sort((Y,J)=>{if(J.overscaledZ-Y.overscaledZ)return J.overscaledZ-Y.overscaledZ;const te=new s.Point(Y.canonical.x+(1<<Y.canonical.z)*Y.wrap,Y.canonical.y),ee=new s.Point(J.canonical.x+(1<<J.canonical.z)*J.wrap,J.canonical.y),ie=j.mult(1<<Y.canonical.z);return ie.x-=.5,ie.y-=.5,ie.distSqr(te)-ie.distSqr(ee)})})(_,this.painter),this._previousZoom=p.zoom;const b=this.proxyToSource||{};this.proxyToSource={},_.forEach(P=>{this.proxyToSource[P.key]={}}),this.terrainTileForTile={};const I=this._style._sourceCaches;for(const P in I){const N=I[P];if(!N.used||(N!==this.sourceCache&&this.resetTileLookupCache(N.id),this._setupProxiedCoordsForOrtho(N,n[P],b),N.usedForTerrain))continue;const z=n[P];N.getSource().reparseOverscaled&&this._assignTerrainTiles(z)}this.proxiedCoords[a.id]=_.map(P=>new Ys(P,P.key,this.orthoMatrix)),this._assignTerrainTiles(_),this._prepareDEMTextures(),this._setupDrapedRenderBatches(),this._initFBOPool(),this._setupRenderCache(b),this.renderingToTexture=!1,this._updateTimestamp=s.exported.now();const M={};this._visibleDemTiles=[];for(const P of this.proxyCoords){const N=this.terrainTileForTile[P.key];if(!N)continue;const z=N.tileID.key;z in M||(this._visibleDemTiles.push(N),M[z]=z)}}_assignTerrainTiles(n){this._initializing||n.forEach(a=>{if(this.terrainTileForTile[a.key])return;const p=this._findTileCoveringTileID(a,this.sourceCache);p&&(this.terrainTileForTile[a.key]=p)})}_prepareDEMTextures(){const n=this.painter.context,a=n.gl;for(const p in this.terrainTileForTile){const _=this.terrainTileForTile[p],b=_.dem;!b||_.demTexture&&!_.needsDEMTextureUpload||(n.activeTexture.set(a.TEXTURE1),ao(this.painter,_,b))}}_prepareDemTileUniforms(n,a,p,_){if(!a||a.demTexture==null)return!1;const b=n.tileID.canonical,I=Math.pow(2,a.tileID.canonical.z-b.z),M=_||"";return p[`u_dem_tl${M}`]=[b.x*I%1,b.y*I%1],p[`u_dem_scale${M}`]=I,!0}get emptyDEMTexture(){return!this._emptyDEMTextureDirty&&this._emptyDEMTexture?this._emptyDEMTexture:this._updateEmptyDEMTexture()}get emptyDepthBufferTexture(){const n=this.painter.context,a=n.gl;if(!this._emptyDepthBufferTexture){const p=new s.RGBAImage({width:1,height:1},Uint8Array.of(255,255,255,255));this._emptyDepthBufferTexture=new s.Texture(n,p,a.RGBA,{premultiply:!1})}return this._emptyDepthBufferTexture}_getLoadedAreaMinimum(){let n=0;const a=this._visibleDemTiles.reduce((p,_)=>{if(!_.dem)return p;const b=_.dem.tree.minimums[0];return b>0&&n++,p+b},0);return n?a/n:0}_updateEmptyDEMTexture(){const n=this.painter.context,a=n.gl;n.activeTexture.set(a.TEXTURE2);const p=this._getLoadedAreaMinimum(),_=new s.RGBAImage({width:1,height:1},new Uint8Array(s.DEMData.pack(p,this.sourceCache.getSource().encoding)));this._emptyDEMTextureDirty=!1;let b=this._emptyDEMTexture;return b?b.update(_,{premultiply:!1}):b=this._emptyDEMTexture=new s.Texture(n,_,a.RGBA,{premultiply:!1}),b}setupElevationDraw(n,a,p){const _=this.painter.context,b=_.gl,I=(M=this.sourceCache.getSource().encoding,{u_dem:2,u_dem_prev:4,u_dem_unpack:s.DEMData.getUnpackVector(M),u_dem_tl:[0,0],u_dem_tl_prev:[0,0],u_dem_scale:0,u_dem_scale_prev:0,u_dem_size:0,u_dem_lerp:1,u_depth:3,u_depth_size_inv:[0,0],u_exaggeration:0});var M;I.u_dem_size=this.sourceCache.getSource().tileSize,I.u_exaggeration=this.exaggeration();let P=null,N=null,z=1;if(p&&p.morphing&&this._useVertexMorphing){const j=p.morphing.srcDemTile,Y=p.morphing.dstDemTile;z=p.morphing.phase,j&&Y&&(this._prepareDemTileUniforms(n,j,I,"_prev")&&(N=j),this._prepareDemTileUniforms(n,Y,I)&&(P=Y))}if(N&&P?(_.activeTexture.set(b.TEXTURE2),P.demTexture.bind(b.NEAREST,b.CLAMP_TO_EDGE,b.NEAREST),_.activeTexture.set(b.TEXTURE4),N.demTexture.bind(b.NEAREST,b.CLAMP_TO_EDGE,b.NEAREST),I.u_dem_lerp=z):(P=this.terrainTileForTile[n.tileID.key],_.activeTexture.set(b.TEXTURE2),(this._prepareDemTileUniforms(n,P,I)?P.demTexture:this.emptyDEMTexture).bind(b.NEAREST,b.CLAMP_TO_EDGE)),_.activeTexture.set(b.TEXTURE3),p&&p.useDepthForOcclusion?(this._depthTexture&&this._depthTexture.bind(b.NEAREST,b.CLAMP_TO_EDGE),this._depthFBO&&(I.u_depth_size_inv=[1/this._depthFBO.width,1/this._depthFBO.height])):(this.emptyDepthBufferTexture.bind(b.NEAREST,b.CLAMP_TO_EDGE),I.u_depth_size_inv=[1,1]),p&&p.useMeterToDem&&P){const j=(1<<P.tileID.canonical.z)*s.mercatorZfromAltitude(1,this.painter.transform.center.lat)*this.sourceCache.getSource().tileSize;I.u_meter_to_dem=j}if(p&&p.labelPlaneMatrixInv&&(I.u_label_plane_matrix_inv=p.labelPlaneMatrixInv),a.setTerrainUniformValues(_,I),this.painter.transform.projection.name==="globe"){const j=this.globeUniformValues(this.painter.transform,n.tileID.canonical,p&&p.useDenormalizedUpVectorScale);a.setGlobeUniformValues(_,j)}}globeUniformValues(n,a,p){const _=n.projection;return{u_tile_tl_up:_.upVector(a,0,0),u_tile_tr_up:_.upVector(a,s.EXTENT,0),u_tile_br_up:_.upVector(a,s.EXTENT,s.EXTENT),u_tile_bl_up:_.upVector(a,0,s.EXTENT),u_tile_up_scale:p?s.globeMetersToEcef(1):_.upVectorScale(a,n.center.lat,n.worldSize).metersToTile}}renderToBackBuffer(n){const a=this.painter,p=this.painter.context;n.length!==0&&(p.bindFramebuffer.set(null),p.viewport.set([0,0,a.width,a.height]),a.gpuTimingDeferredRenderStart(),this.renderingToTexture=!1,function(_,b,I,M,P){if(_.transform.projection.name==="globe")(function(N,z,j,Y,J){const te=N.context,ee=te.gl;let ie,V;const K=N.options.showTerrainWireframe?2:0,ae=N.transform,le=s.globeUseCustomAntiAliasing(N,te,ae),xe=(et,ze)=>{if(V===et)return;const Ze=[lo[et],"PROJECTION_GLOBE_VIEW"];le&&Ze.push("CUSTOM_ANTIALIASING"),ze&&Ze.push(lo[K]),ie=N.useProgram("globeRaster",null,Ze),V=et},Te=N.colorModeForRenderPass(),be=new s.DepthMode(ee.LEQUAL,s.DepthMode.ReadWrite,N.depthRangeFor3D);Wr.update(J);const Ae=s.calculateGlobeMercatorMatrix(ae),ke=[s.mercatorXfromLng(ae.center.lng),s.mercatorYfromLat(ae.center.lat)],Ne=K?[!1,!0]:[!1],tt=N.globeSharedBuffers,Re=[ae.width*s.exported.devicePixelRatio,ae.height*s.exported.devicePixelRatio],We=Float32Array.from(ae.globeMatrix),je={useDenormalizedUpVectorScale:!0};if(Ne.forEach(et=>{const ze=N.transform,Ze=Ws(ze.zoom)*z.exaggeration();V=-1;const rt=et?ee.LINES:ee.TRIANGLES;for(const Ke of Y){const st=j.getTile(Ke),zt=s.StencilMode.disabled,Kt=z.prevTerrainTileForTile[Ke.key],Pt=z.terrainTileForTile[Ke.key];So(Kt,Pt)&&Wr.newMorphing(Ke.key,Kt,Pt,J,250),te.activeTexture.set(ee.TEXTURE0),st.texture.bind(ee.LINEAR,ee.CLAMP_TO_EDGE);const jt=Wr.getMorphValuesForProxy(Ke.key),mi=jt?1:0;jt&&s.extend$1(je,{morphing:{srcDemTile:jt.from,dstDemTile:jt.to,phase:s.easeCubicInOut(jt.phase)}});const di=s.tileCornersToBounds(Ke.canonical),Ot=s.getLatitudinalLod(di.getCenter().lat),Di=s.getGridMatrix(Ke.canonical,di,Ot,ze.worldSize/ze._pixelsPerMercatorPixel),Bi=s.globeNormalizeECEF(s.globeTileBounds(Ke.canonical)),Fi=Ea(ze.projMatrix,We,Ae,Bi,s.globeToMercatorTransition(ze.zoom),ke,ze.frustumCorners.TL,ze.frustumCorners.TR,ze.frustumCorners.BR,ze.frustumCorners.BL,ze.globeCenterInViewSpace,ze.globeRadius,Re,Ze,Di);if(xe(mi,et),z.setupElevationDraw(st,ie,je),N.prepareDrawProgram(te,ie,Ke.toUnwrapped()),tt){const[Ui,ur,$n]=et?tt.getWirefameBuffers(N.context,Ot):tt.getGridBuffers(Ot,Ze!==0);ie.draw(te,rt,be,zt,Te,s.CullFaceMode.backCCW,Fi,"globe_raster",Ui,ur,$n)}}}),tt){const et=["GLOBE_POLES","PROJECTION_GLOBE_VIEW"];le&&et.push("CUSTOM_ANTIALIASING"),ie=N.useProgram("globeRaster",null,et);for(const ze of Y){const{x:Ze,y:rt,z:Ke}=ze.canonical,st=rt===0,zt=rt===(1<<Ke)-1,[Kt,Pt,jt,mi]=tt.getPoleBuffers(Ke);if(mi&&(st||zt)){const di=j.getTile(ze);te.activeTexture.set(ee.TEXTURE0),di.texture.bind(ee.LINEAR,ee.CLAMP_TO_EDGE);let Ot=s.globePoleMatrixForTile(Ke,Ze,ae);const Di=s.globeNormalizeECEF(s.globeTileBounds(ze.canonical)),Bi=(Fi,Ui)=>Fi.draw(te,ee.TRIANGLES,be,s.StencilMode.disabled,Te,s.CullFaceMode.disabled,Ea(ae.projMatrix,Ot,Ot,Di,0,ke,ae.frustumCorners.TL,ae.frustumCorners.TR,ae.frustumCorners.BR,ae.frustumCorners.BL,ae.globeCenterInViewSpace,ae.globeRadius,Re,0),"globe_pole_raster",Ui,jt,mi);z.setupElevationDraw(di,ie,je),N.prepareDrawProgram(te,ie,ze.toUnwrapped()),st&&Bi(ie,Kt),zt&&(Ot=s.scale(s.create(),Ot,[1,-1,1]),Bi(ie,Pt))}}}})(_,b,I,M,P);else{const N=_.context,z=N.gl;let j,Y;const J=_.options.showTerrainWireframe?2:0,te=(ae,le)=>{if(Y===ae)return;const xe=[lo[ae]];le&&xe.push(lo[J]),j=_.useProgram("terrainRaster",null,xe),Y=ae},ee=_.colorModeForRenderPass(),ie=new s.DepthMode(z.LEQUAL,s.DepthMode.ReadWrite,_.depthRangeFor3D);Wr.update(P);const V=_.transform,K=Ws(V.zoom)*b.exaggeration();(J?[!1,!0]:[!1]).forEach(ae=>{Y=-1;const le=ae?z.LINES:z.TRIANGLES,[xe,Te]=ae?b.getWirefameBuffer():[b.gridIndexBuffer,b.gridSegments];for(const be of M){const Ae=I.getTile(be),ke=s.StencilMode.disabled,Ne=b.prevTerrainTileForTile[be.key],tt=b.terrainTileForTile[be.key];So(Ne,tt)&&Wr.newMorphing(be.key,Ne,tt,P,250),N.activeTexture.set(z.TEXTURE0),Ae.texture.bind(z.LINEAR,z.CLAMP_TO_EDGE,z.LINEAR_MIPMAP_NEAREST);const Re=Wr.getMorphValuesForProxy(be.key),We=Re?1:0;let je;Re&&(je={morphing:{srcDemTile:Re.from,dstDemTile:Re.to,phase:s.easeCubicInOut(Re.phase)}});const et=Go(be.projMatrix,Er(be.canonical,V.renderWorldCopies)?K/10:K);te(We,ae),b.setupElevationDraw(Ae,j,je),_.prepareDrawProgram(N,j,be.toUnwrapped()),j.draw(N,le,ie,ke,ee,s.CullFaceMode.backCCW,et,"terrain_raster",b.gridBuffer,xe,Te)}})}}(a,this,this.proxySourceCache,n,this._updateTimestamp),this.renderingToTexture=!0,a.gpuTimingDeferredRenderEnd(),n.splice(0,n.length))}renderBatch(n){if(this._drapedRenderBatches.length===0)return n+1;this.renderingToTexture=!0;const a=this.painter,p=this.painter.context,_=this.proxySourceCache,b=this.proxiedCoords[_.id],I=this._drapedRenderBatches.shift(),M=[],P=a.style.order;let N=0;for(const z of b){const j=_.getTileByID(z.proxyTileKey),Y=_.proxyCachedFBO[z.key]?_.proxyCachedFBO[z.key][n]:void 0,J=Y!==void 0?_.renderCache[Y]:this.pool[N++],te=Y!==void 0;if(j.texture=J.tex,te&&!J.dirty){M.push(j.tileID);continue}let ee;p.bindFramebuffer.set(J.fb.framebuffer),this.renderedToTile=!1,J.dirty&&(p.clear({color:s.Color.transparent,stencil:0}),J.dirty=!1);for(let ie=I.start;ie<=I.end;++ie){const V=a.style._layers[P[ie]];if(V.isHidden(a.transform.zoom))continue;const K=a.style._getLayerSourceCache(V),ae=K?this.proxyToSource[z.key][K.id]:[z];if(!ae)continue;const le=ae;p.viewport.set([0,0,J.fb.width,J.fb.height]),ee!==(K?K.id:null)&&(this._setupStencil(J,ae,V,K),ee=K?K.id:null),a.renderLayer(a,K,V,le)}this.renderedToTile?(J.dirty=!0,M.push(j.tileID)):te||--N,N===5&&(N=0,this.renderToBackBuffer(M))}return this.renderToBackBuffer(M),this.renderingToTexture=!1,p.bindFramebuffer.set(null),p.viewport.set([0,0,a.width,a.height]),I.end+1}postRender(){}renderCacheEfficiency(n){const a=n.order.length;if(a===0)return{efficiency:100};let p,_=0,b=0,I=!1;for(let M=0;M<a;++M){const P=n._layers[n.order[M]];this._style.isLayerDraped(P)?(I&&++_,++b):I||(I=!0,p=P.id)}return b===0?{efficiency:100}:{efficiency:100*(1-_/b),firstUndrapedLayer:p}}getMinElevationBelowMSL(){let n=0;return this._visibleDemTiles.filter(a=>a.dem).forEach(a=>{n=Math.min(n,a.dem.tree.minimums[0])}),n===0?n:(n-30)*this._exaggeration}raycast(n,a,p){if(!this._visibleDemTiles)return null;const _=this._visibleDemTiles.filter(b=>b.dem).map(b=>{const I=b.tileID,M=1<<I.overscaledZ,{x:P,y:N}=I.canonical,z=P/M,j=(P+1)/M,Y=N/M,J=(N+1)/M;return{minx:z,miny:Y,maxx:j,maxy:J,t:b.dem.tree.raycastRoot(z,Y,j,J,n,a,p),tile:b}});_.sort((b,I)=>(b.t!==null?b.t:Number.MAX_VALUE)-(I.t!==null?I.t:Number.MAX_VALUE));for(const b of _){if(b.t==null)return null;const I=b.tile.dem.tree.raycast(b.minx,b.miny,b.maxx,b.maxy,n,a,p);if(I!=null)return I}return null}_createFBO(){const n=this.painter.context,a=n.gl,p=this.drapeBufferSize;n.activeTexture.set(a.TEXTURE0);const _=new s.Texture(n,{width:p[0],height:p[1],data:null},a.RGBA);_.bind(a.LINEAR,a.CLAMP_TO_EDGE);const b=n.createFramebuffer(p[0],p[1],!1);return b.colorAttachment.set(_.texture),b.depthAttachment=new se(n,b.framebuffer),this._sharedDepthStencil===void 0?(this._sharedDepthStencil=n.createRenderbuffer(n.gl.DEPTH_STENCIL,p[0],p[1]),this._stencilRef=0,b.depthAttachment.set(this._sharedDepthStencil),n.clear({stencil:0})):b.depthAttachment.set(this._sharedDepthStencil),n.extTextureFilterAnisotropic&&!n.extTextureFilterAnisotropicForceOff&&a.texParameterf(a.TEXTURE_2D,n.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,n.extTextureFilterAnisotropicMax),{fb:b,tex:_,dirty:!1}}_initFBOPool(){for(;this.pool.length<Math.min(5,this.proxyCoords.length);)this.pool.push(this._createFBO())}_shouldDisableRenderCache(){if(this._style.light&&this._style.light.hasTransition())return!0;for(const n in this._style._sourceCaches)if(this._style._sourceCaches[n].hasTransition())return!0;return this._style.order.some(n=>{const a=this._style._layers[n],p=a.isHidden(this.painter.transform.zoom);return a.type==="custom"?!p&&a.shouldRedrape():!p&&a.hasTransition()})}_clearLineLayersFromRenderCache(){let n=!1;for(const p of this._style._getSources())if(p instanceof ht){n=!0;break}if(!n)return;const a={};for(let p=0;p<this._style.order.length;++p){const _=this._style._layers[this._style.order[p]],b=this._style._getLayerSourceCache(_);if(b&&!a[b.id]&&!_.isHidden(this.painter.transform.zoom)&&_.type==="line"&&_.widthExpression()instanceof s.ZoomDependentExpression){a[b.id]=!0;for(const I of this.proxyCoords){const M=this.proxyToSource[I.key][b.id];if(M)for(const P of M)this._clearRenderCacheForTile(b.id,P)}}}}_clearRasterLayersFromRenderCache(){let n=!1;for(const p in this._style._sourceCaches)if(this._style._sourceCaches[p]._source instanceof nt){n=!0;break}if(!n)return;const a={};for(let p=0;p<this._style.order.length;++p){const _=this._style._layers[this._style.order[p]],b=this._style._getLayerSourceCache(_);if(!b||a[b.id]||_.isHidden(this.painter.transform.zoom)||_.type!=="raster")continue;const I=_.paint.get("raster-fade-duration");for(const M of this.proxyCoords){const P=this.proxyToSource[M.key][b.id];if(P)for(const N of P){const z=Hn(b.getTile(N),b.findLoadedParent(N,0),b,this.painter.transform,I);(z.opacity!==1||z.mix!==0)&&this._clearRenderCacheForTile(b.id,N)}}}}_setupDrapedRenderBatches(){const n=this._style.order,a=n.length;if(a===0)return;const p=[];let _,b=0,I=this._style._layers[n[b]];for(;!this._style.isLayerDraped(I)&&I.isHidden(this.painter.transform.zoom)&&++b<a;)I=this._style._layers[n[b]];for(;b<a;++b){const M=this._style._layers[n[b]];M.isHidden(this.painter.transform.zoom)||(this._style.isLayerDraped(M)?_===void 0&&(_=b):_!==void 0&&(p.push({start:_,end:b-1}),_=void 0))}_!==void 0&&p.push({start:_,end:b-1}),this._drapedRenderBatches=p}_setupRenderCache(n){const a=this.proxySourceCache;if(this._shouldDisableRenderCache()||this._invalidateRenderCache){if(this._invalidateRenderCache=!1,a.renderCache.length>a.renderCachePool.length){const I=Object.values(a.proxyCachedFBO);a.proxyCachedFBO={};for(let M=0;M<I.length;++M){const P=Object.values(I[M]);a.renderCachePool.push(...P)}}return}this._clearRasterLayersFromRenderCache();const p=this.proxyCoords,_=this._tilesDirty;for(let I=p.length-1;I>=0;I--){const M=p[I];if(a.getTileByID(M.key),a.proxyCachedFBO[M.key]!==void 0){const P=n[M.key],N=this.proxyToSource[M.key];let z=0;for(const j in N){const Y=N[j],J=P[j];if(!J||J.length!==Y.length||Y.some((te,ee)=>te!==J[ee]||_[j]&&_[j].hasOwnProperty(te.key))){z=-1;break}++z}for(const j in a.proxyCachedFBO[M.key])a.renderCache[a.proxyCachedFBO[M.key][j]].dirty=z<0||z!==Object.values(P).length}}const b=[...this._drapedRenderBatches];b.sort((I,M)=>M.end-M.start-(I.end-I.start));for(const I of b)for(const M of p){if(a.proxyCachedFBO[M.key])continue;let P=a.renderCachePool.pop();P===void 0&&a.renderCache.length<50&&(P=a.renderCache.length,a.renderCache.push(this._createFBO())),P!==void 0&&(a.proxyCachedFBO[M.key]={},a.proxyCachedFBO[M.key][I.start]=P,a.renderCache[P].dirty=!0)}this._tilesDirty={}}_setupStencil(n,a,p,_){if(!_||!this._sourceTilesOverlap[_.id])return void(this._overlapStencilType&&(this._overlapStencilType=!1));const b=this.painter.context,I=b.gl;if(a.length<=1)return void(this._overlapStencilType=!1);let M;if(p.isTileClipped())M=a.length,this._overlapStencilMode.test={func:I.EQUAL,mask:255},this._overlapStencilType="Clip";else{if(!(a[0].overscaledZ>a[a.length-1].overscaledZ))return void(this._overlapStencilType=!1);M=1,this._overlapStencilMode.test={func:I.GREATER,mask:255},this._overlapStencilType="Mask"}this._stencilRef+M>255&&(b.clear({stencil:0}),this._stencilRef=0),this._stencilRef+=M,this._overlapStencilMode.ref=this._stencilRef,p.isTileClipped()&&this._renderTileClippingMasks(a,this._overlapStencilMode.ref)}clipOrMaskOverlapStencilType(){return this._overlapStencilType==="Clip"||this._overlapStencilType==="Mask"}stencilModeForRTTOverlap(n){return this.renderingToTexture&&this._overlapStencilType?(this._overlapStencilType==="Clip"&&(this._overlapStencilMode.ref=this.painter._tileClippingMaskIDs[n.key]),this._overlapStencilMode):s.StencilMode.disabled}_renderTileClippingMasks(n,a){const p=this.painter,_=this.painter.context,b=_.gl;p._tileClippingMaskIDs={},_.setColorMode(s.ColorMode.disabled),_.setDepthMode(s.DepthMode.disabled);const I=p.useProgram("clippingMask");for(const M of n){const P=p._tileClippingMaskIDs[M.key]=--a;I.draw(_,b.TRIANGLES,s.DepthMode.disabled,new s.StencilMode({func:b.ALWAYS,mask:0},P,255,b.KEEP,b.KEEP,b.REPLACE),s.ColorMode.disabled,s.CullFaceMode.disabled,ys(M.projMatrix),"$clipping",p.tileExtentBuffer,p.quadTriangleIndexBuffer,p.tileExtentSegments)}}pointCoordinate(n){const a=this.painter.transform;if(n.x<0||n.x>a.width||n.y<0||n.y>a.height)return null;const p=[n.x,n.y,1,1];s.transformMat4$1(p,p,a.pixelMatrixInverse),s.scale$1(p,p,1/p[3]),p[0]/=a.worldSize,p[1]/=a.worldSize;const _=a._camera.position,b=s.mercatorZfromAltitude(1,a.center.lat),I=[_[0],_[1],_[2]/b,0],M=s.subtract([],p.slice(0,3),I);s.normalize(M,M);const P=this.raycast(I,M,this._exaggeration);return P!==null&&P?(s.scaleAndAdd(I,I,M,P),I[3]=I[2],I[2]*=b,I):null}drawDepth(){const n=this.painter,a=n.context,p=this.proxySourceCache,_=Math.ceil(n.width),b=Math.ceil(n.height);if(!this._depthFBO||this._depthFBO.width===_&&this._depthFBO.height===b||(this._depthFBO.destroy(),this._depthFBO=void 0,this._depthTexture=void 0),!this._depthFBO){const I=a.gl,M=a.createFramebuffer(_,b,!0);a.activeTexture.set(I.TEXTURE0);const P=new s.Texture(a,{width:_,height:b,data:null},I.RGBA);P.bind(I.NEAREST,I.CLAMP_TO_EDGE),M.colorAttachment.set(P.texture);const N=a.createRenderbuffer(a.gl.DEPTH_COMPONENT16,_,b);M.depthAttachment.set(N),this._depthFBO=M,this._depthTexture=P}a.bindFramebuffer.set(this._depthFBO.framebuffer),a.viewport.set([0,0,_,b]),function(I,M,P,N){if(I.transform.projection.name==="globe")return;const z=I.context,j=z.gl;z.clear({depth:1});const Y=I.useProgram("terrainDepth"),J=new s.DepthMode(j.LESS,s.DepthMode.ReadWrite,I.depthRangeFor3D);for(const te of N){const ee=P.getTile(te),ie=Go(te.projMatrix,0);M.setupElevationDraw(ee,Y),Y.draw(z,j.TRIANGLES,J,s.StencilMode.disabled,s.ColorMode.unblended,s.CullFaceMode.backCCW,ie,"terrain_depth",M.gridBuffer,M.gridIndexBuffer,M.gridNoSkirtSegments)}}(n,this,p,this.proxyCoords)}_setupProxiedCoordsForOrtho(n,a,p){if(n.getSource()instanceof li)return this._setupProxiedCoordsForImageSource(n,a,p);this._findCoveringTileCache[n.id]=this._findCoveringTileCache[n.id]||{};const _=this.proxiedCoords[n.id]=[],b=this.proxyCoords;for(let M=0;M<b.length;M++){const P=b[M],N=this._findTileCoveringTileID(P,n);if(N){const z=this._createProxiedId(P,N,p[P.key]&&p[P.key][n.id]);_.push(z),this.proxyToSource[P.key][n.id]=[z]}}let I=!1;for(let M=0;M<a.length;M++){const P=n.getTile(a[M]);if(!P||!P.hasData())continue;const N=this._findTileCoveringTileID(P.tileID,this.proxySourceCache);if(N&&N.tileID.canonical.z!==P.tileID.canonical.z){const z=this.proxyToSource[N.tileID.key][n.id],j=this._createProxiedId(N.tileID,P,p[N.tileID.key]&&p[N.tileID.key][n.id]);z?z.splice(z.length-1,0,j):this.proxyToSource[N.tileID.key][n.id]=[j],_.push(j),I=!0}}this._sourceTilesOverlap[n.id]=I}_setupProxiedCoordsForImageSource(n,a,p){if(!n.getSource().loaded())return;const _=this.proxiedCoords[n.id]=[],b=this.proxyCoords,I=n.getSource(),M=new s.Point(I.tileID.x,I.tileID.y)._div(1<<I.tileID.z),P=I.coordinates.map(s.MercatorCoordinate.fromLngLat).reduce((z,j)=>(z.min.x=Math.min(z.min.x,j.x-M.x),z.min.y=Math.min(z.min.y,j.y-M.y),z.max.x=Math.max(z.max.x,j.x-M.x),z.max.y=Math.max(z.max.y,j.y-M.y),z),{min:new s.Point(Number.MAX_VALUE,Number.MAX_VALUE),max:new s.Point(-Number.MAX_VALUE,-Number.MAX_VALUE)}),N=(z,j)=>{const Y=z.wrap+z.canonical.x/(1<<z.canonical.z),J=z.canonical.y/(1<<z.canonical.z),te=s.EXTENT/(1<<z.canonical.z),ee=j.wrap+j.canonical.x/(1<<j.canonical.z),ie=j.canonical.y/(1<<j.canonical.z);return Y+te<ee+P.min.x||Y>ee+P.max.x||J+te<ie+P.min.y||J>ie+P.max.y};for(let z=0;z<b.length;z++){const j=b[z];for(let Y=0;Y<a.length;Y++){const J=n.getTile(a[Y]);if(!J||!J.hasData()||N(j,J.tileID))continue;const te=this._createProxiedId(j,J,p[j.key]&&p[j.key][n.id]),ee=this.proxyToSource[j.key][n.id];ee?ee.push(te):this.proxyToSource[j.key][n.id]=[te],_.push(te)}}}_createProxiedId(n,a,p){let _=this.orthoMatrix;if(p){const b=p.find(I=>I.key===a.tileID.key);if(b)return b}if(a.tileID.key!==n.key){const b=n.canonical.z-a.tileID.canonical.z;let I,M,P;_=s.create();const N=a.tileID.wrap-n.wrap<<n.overscaledZ;b>0?(I=s.EXTENT>>b,M=I*((a.tileID.canonical.x<<b)-n.canonical.x+N),P=I*((a.tileID.canonical.y<<b)-n.canonical.y)):(I=s.EXTENT<<-b,M=s.EXTENT*(a.tileID.canonical.x-(n.canonical.x+N<<-b)),P=s.EXTENT*(a.tileID.canonical.y-(n.canonical.y<<-b))),s.ortho(_,0,I,0,I,0,1),s.translate(_,_,[M,P,0])}return new Ys(a.tileID,n.key,_)}_findTileCoveringTileID(n,a){let p=a.getTile(n);if(p&&p.hasData())return p;const _=this._findCoveringTileCache[a.id],b=_[n.key];if(p=b?a.getTileByID(b):null,p&&p.hasData()||b===null)return p;let I=p?p.tileID:n,M=I.overscaledZ;const P=a.getSource().minzoom,N=[];if(!b){const j=a.getSource().maxzoom;if(n.canonical.z>=j){const Y=n.canonical.z-j;a.getSource().reparseOverscaled?(M=Math.max(n.canonical.z+2,a.transform.tileZoom),I=new s.OverscaledTileID(M,n.wrap,j,n.canonical.x>>Y,n.canonical.y>>Y)):Y!==0&&(M=j,I=new s.OverscaledTileID(M,n.wrap,j,n.canonical.x>>Y,n.canonical.y>>Y))}I.key!==n.key&&(N.push(I.key),p=a.getTile(I))}const z=j=>{N.forEach(Y=>{_[Y]=j}),N.length=0};for(M-=1;M>=P&&(!p||!p.hasData());M--){p&&z(p.tileID.key);const j=I.calculateScaledKey(M);if(p=a.getTileByID(j),p&&p.hasData())break;const Y=_[j];if(Y===null)break;Y===void 0?N.push(j):p=a.getTileByID(Y)}return z(p?p.tileID.key:null),p&&p.hasData()?p:null}findDEMTileFor(n){return this.enabled?this._findTileCoveringTileID(n,this.sourceCache):null}prepareDrawTile(){this.renderedToTile=!0}_clearRenderCacheForTile(n,a){let p=this._tilesDirty[n];p||(p=this._tilesDirty[n]={}),p[a.key]=!0}getWirefameBuffer(){if(!this.wireframeSegments){const n=function(a){let p=0;const _=new s.StructArrayLayout2ui4,b=131;for(let I=1;I<129;I++){for(let M=1;M<129;M++)p=I*b+M,_.emplaceBack(p,p+1),_.emplaceBack(p,p+b),_.emplaceBack(p+1,p+b),I===128&&_.emplaceBack(p+b,p+b+1);_.emplaceBack(p+1,p+1+b)}return _}();this.wireframeIndexBuffer=this.painter.context.createIndexBuffer(n),this.wireframeSegments=s.SegmentVector.simpleSegment(0,0,this.gridBuffer.length,n.length)}return[this.wireframeIndexBuffer,this.wireframeSegments]}}class bi{static cacheKey(n,a,p,_){let b=`${a}${_?_.cacheKey:""}`;for(const I of p)n.usedDefines.includes(I)&&(b+=`/${I}`);return b}constructor(n,a,p,_,b,I){const M=n.gl;this.program=M.createProgram();const P=function(V){const K=[];for(let ae=0;ae<V.length;ae++){if(V[ae]===null)continue;const le=V[ae].split(" ");K.push(le.pop())}return K}(p.staticAttributes),N=_?_.getBinderAttributes():[],z=P.concat(N);let j=_?_.defines():[];j=j.concat(I.map(V=>`#define ${V}`));const Y=n.isWebGL2?`#version 300 es
`:"",J=Y+j.concat(n.extStandardDerivatives&&Y.length===0?`#extension GL_OES_standard_derivatives : enable
`.concat(pl):pl,pl,Xs,Ur.fragmentSource,Fr.fragmentSource,p.fragmentSource).join(`
`),te=Y+j.concat(`
#ifdef GL_ES
precision highp float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif`,Xs,Ur.vertexSource,Fr.vertexSource,qs.vertexSource,p.vertexSource).join(`
`),ee=M.createShader(M.FRAGMENT_SHADER);if(M.isContextLost())return void(this.failedToCreate=!0);M.shaderSource(ee,J),M.compileShader(ee),M.attachShader(this.program,ee);const ie=M.createShader(M.VERTEX_SHADER);if(M.isContextLost())this.failedToCreate=!0;else{M.shaderSource(ie,te),M.compileShader(ie),M.attachShader(this.program,ie),this.attributes={},this.numAttributes=z.length;for(let V=0;V<this.numAttributes;V++)z[V]&&(M.bindAttribLocation(this.program,V,z[V]),this.attributes[z[V]]=V);M.linkProgram(this.program),M.deleteShader(ie),M.deleteShader(ee),this.fixedUniforms=b(n),this.binderUniforms=_?_.getUniforms(n):[],I.includes("TERRAIN")&&(this.terrainUniforms=(V=>({u_dem:new s.Uniform1i(V),u_dem_prev:new s.Uniform1i(V),u_dem_unpack:new s.Uniform4f(V),u_dem_tl:new s.Uniform2f(V),u_dem_scale:new s.Uniform1f(V),u_dem_tl_prev:new s.Uniform2f(V),u_dem_scale_prev:new s.Uniform1f(V),u_dem_size:new s.Uniform1f(V),u_dem_lerp:new s.Uniform1f(V),u_exaggeration:new s.Uniform1f(V),u_depth:new s.Uniform1i(V),u_depth_size_inv:new s.Uniform2f(V),u_meter_to_dem:new s.Uniform1f(V),u_label_plane_matrix_inv:new s.UniformMatrix4f(V)}))(n)),I.includes("GLOBE")&&(this.globeUniforms=(V=>({u_tile_tl_up:new s.Uniform3f(V),u_tile_tr_up:new s.Uniform3f(V),u_tile_br_up:new s.Uniform3f(V),u_tile_bl_up:new s.Uniform3f(V),u_tile_up_scale:new s.Uniform1f(V)}))(n)),I.includes("FOG")&&(this.fogUniforms=(V=>({u_fog_matrix:new s.UniformMatrix4f(V),u_fog_range:new s.Uniform2f(V),u_fog_color:new s.Uniform4f(V),u_fog_horizon_blend:new s.Uniform1f(V),u_fog_temporal_offset:new s.Uniform1f(V),u_frustum_tl:new s.Uniform3f(V),u_frustum_tr:new s.Uniform3f(V),u_frustum_br:new s.Uniform3f(V),u_frustum_bl:new s.Uniform3f(V),u_globe_pos:new s.Uniform3f(V),u_globe_radius:new s.Uniform1f(V),u_globe_transition:new s.Uniform1f(V),u_is_globe:new s.Uniform1i(V),u_viewport:new s.Uniform2f(V)}))(n))}}setTerrainUniformValues(n,a){if(!this.terrainUniforms)return;const p=this.terrainUniforms;if(!this.failedToCreate){n.program.set(this.program);for(const _ in a)p[_]&&p[_].set(this.program,_,a[_])}}setGlobeUniformValues(n,a){if(!this.globeUniforms)return;const p=this.globeUniforms;if(!this.failedToCreate){n.program.set(this.program);for(const _ in a)p[_]&&p[_].set(this.program,_,a[_])}}setFogUniformValues(n,a){if(!this.fogUniforms)return;const p=this.fogUniforms;if(!this.failedToCreate){n.program.set(this.program);for(const _ in a)p[_].set(this.program,_,a[_])}}draw(n,a,p,_,b,I,M,P,N,z,j,Y,J,te,ee){const ie=n.gl;if(this.failedToCreate)return;n.program.set(this.program),n.setDepthMode(p),n.setStencilMode(_),n.setColorMode(b),n.setCullFace(I);for(const K of Object.keys(this.fixedUniforms))this.fixedUniforms[K].set(this.program,K,M[K]);te&&te.setUniforms(this.program,n,this.binderUniforms,Y,{zoom:J});const V={[ie.LINES]:2,[ie.TRIANGLES]:3,[ie.LINE_STRIP]:1}[a];for(const K of j.get()){const ae=K.vaos||(K.vaos={});(ae[P]||(ae[P]=new xc)).bind(n,this,N,te?te.getPaintVertexBuffers():[],z,K.vertexOffset,ee||[]),ie.drawElements(a,K.primitiveLength*V,ie.UNSIGNED_SHORT,K.primitiveOffset*V*2)}}}function qo(h,n){const a=Math.pow(2,n.tileID.overscaledZ),p=n.tileSize*Math.pow(2,h.transform.tileZoom)/a,_=p*(n.tileID.canonical.x+n.tileID.wrap*a),b=p*n.tileID.canonical.y;return{u_image:0,u_texsize:n.imageAtlasTexture.size,u_tile_units_to_pixels:1/wi(n,1,h.transform.tileZoom),u_pixel_coord_upper:[_>>16,b>>16],u_pixel_coord_lower:[65535&_,65535&b]}}const du=s.create(),_l=(h,n,a,p,_,b,I,M,P,N,z)=>{const j=n.style.light,Y=j.properties.get("position"),J=[Y.x,Y.y,Y.z],te=s.create$1();j.properties.get("anchor")==="viewport"&&(s.fromRotation(te,-n.transform.angle),s.transformMat3(J,J,te));const ee=j.properties.get("color"),ie=n.transform,V={u_matrix:h,u_lightpos:J,u_lightintensity:j.properties.get("intensity"),u_lightcolor:[ee.r,ee.g,ee.b],u_vertical_gradient:+a,u_opacity:p,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:du,u_merc_center:[0,0],u_up_dir:[0,0,0],u_height_lift:0,u_ao:_,u_edge_radius:b};return ie.projection.name==="globe"&&(V.u_tile_id=[I.canonical.x,I.canonical.y,1<<I.canonical.z],V.u_zoom_transition=P,V.u_inv_rot_matrix=z,V.u_merc_center=N,V.u_up_dir=ie.projection.upVector(new s.CanonicalTileID(0,0,0),N[0]*s.EXTENT,N[1]*s.EXTENT),V.u_height_lift=M),V},mu=(h,n,a,p,_,b,I,M,P,N,z,j)=>{const Y=_l(h,n,a,p,_,b,I,P,N,z,j),J={u_height_factor:-Math.pow(2,I.overscaledZ)/M.tileSize/8};return s.extend(Y,qo(n,M),J)},Zo=h=>({u_matrix:h}),yl=(h,n,a)=>s.extend(Zo(h),qo(n,a)),bc=(h,n)=>({u_matrix:h,u_world:n}),wc=(h,n,a,p)=>s.extend(yl(h,n,a),{u_world:p}),Ec=s.create(),Ia=(h,n,a,p,_,b)=>{const I=h.transform,M=I.projection.name==="globe";let P;if(b.paint.get("circle-pitch-alignment")==="map")if(M){const z=s.globePixelsToTileUnits(I.zoom,n.canonical)*I._pixelsPerMercatorPixel;P=Float32Array.from([z,0,0,z])}else P=I.calculatePixelsToTileUnitsMatrix(a);else P=new Float32Array([I.pixelsToGLUnits[0],0,0,I.pixelsToGLUnits[1]]);const N={u_camera_to_center_distance:I.cameraToCenterDistance,u_matrix:h.translatePosMatrix(n.projMatrix,a,b.paint.get("circle-translate"),b.paint.get("circle-translate-anchor")),u_device_pixel_ratio:s.exported.devicePixelRatio,u_extrude_scale:P,u_inv_rot_matrix:Ec,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};if(M){N.u_inv_rot_matrix=p,N.u_merc_center=_,N.u_tile_id=[n.canonical.x,n.canonical.y,1<<n.canonical.z],N.u_zoom_transition=s.globeToMercatorTransition(I.zoom);const z=_[0]*s.EXTENT,j=_[1]*s.EXTENT;N.u_up_dir=I.projection.upVector(new s.CanonicalTileID(0,0,0),z,j)}return N},vl=h=>{const n=[];return h.paint.get("circle-pitch-alignment")==="map"&&n.push("PITCH_WITH_MAP"),h.paint.get("circle-pitch-scale")==="map"&&n.push("SCALE_WITH_MAP"),n},ka=(h,n,a,p)=>{const _=s.EXTENT/a.tileSize;return{u_matrix:h,u_camera_to_center_distance:n.getCameraToCenterDistance(p),u_extrude_scale:[n.pixelsToGLUnits[0]/_,n.pixelsToGLUnits[1]/_]}},Ma=(h,n,a=1)=>({u_matrix:h,u_color:n,u_overlay:0,u_overlay_scale:a}),gu=s.create(),_u=(h,n,a,p,_,b,I)=>{const M=h.transform,P=M.projection.name==="globe",N=P?s.globePixelsToTileUnits(M.zoom,n.canonical)*M._pixelsPerMercatorPixel:wi(a,1,b),z={u_matrix:n.projMatrix,u_extrude_scale:N,u_intensity:I,u_inv_rot_matrix:gu,u_merc_center:[0,0],u_tile_id:[0,0,0],u_zoom_transition:0,u_up_dir:[0,0,0]};if(P){z.u_inv_rot_matrix=p,z.u_merc_center=_,z.u_tile_id=[n.canonical.x,n.canonical.y,1<<n.canonical.z],z.u_zoom_transition=s.globeToMercatorTransition(M.zoom);const j=_[0]*s.EXTENT,Y=_[1]*s.EXTENT;z.u_up_dir=M.projection.upVector(new s.CanonicalTileID(0,0,0),j,Y)}return z},Tc=(h,n,a,p,_,b,I)=>{const M=h.transform,P=M.calculatePixelsToTileUnitsMatrix(n);return{u_matrix:xl(h,n,a,p),u_pixels_to_tile_units:P,u_device_pixel_ratio:b,u_units_to_pixels:[1/M.pixelsToGLUnits[0],1/M.pixelsToGLUnits[1]],u_dash_image:0,u_gradient_image:1,u_image_height:_,u_texsize:xs(a)?n.lineAtlasTexture.size:[0,0],u_tile_units_to_pixels:vs(n,h.transform),u_alpha_discard_threshold:0,u_trim_offset:I}},Hs=(h,n,a,p,_)=>{const b=h.transform;return{u_matrix:xl(h,n,a,p),u_texsize:n.imageAtlasTexture.size,u_pixels_to_tile_units:b.calculatePixelsToTileUnitsMatrix(n),u_device_pixel_ratio:_,u_image:0,u_tile_units_to_pixels:vs(n,b),u_units_to_pixels:[1/b.pixelsToGLUnits[0],1/b.pixelsToGLUnits[1]],u_alpha_discard_threshold:0}};function vs(h,n){return 1/wi(h,1,n.tileZoom)}function xl(h,n,a,p){return h.translatePosMatrix(p||n.tileID.projMatrix,n,a.paint.get("line-translate"),a.paint.get("line-translate-anchor"))}function xs(h){const n=h.paint.get("line-dasharray").value;return n.value||n.kind!=="constant"}const Aa=(h,n,a,p,_,b)=>{return{u_matrix:h,u_tl_parent:n,u_scale_parent:a,u_fade_t:p.mix,u_opacity:p.opacity*_.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:_.paint.get("raster-brightness-min"),u_brightness_high:_.paint.get("raster-brightness-max"),u_saturation_factor:(M=_.paint.get("raster-saturation"),M>0?1-1/(1.001-M):-M),u_contrast_factor:(I=_.paint.get("raster-contrast"),I>0?1/(1-I):1+I),u_spin_weights:jr(_.paint.get("raster-hue-rotate")),u_perspective_transform:b};var I,M};function jr(h){h*=Math.PI/180;const n=Math.sin(h),a=Math.cos(h);return[(2*a+1)/3,(-Math.sqrt(3)*n-a+1)/3,(Math.sqrt(3)*n-a+1)/3]}const Ca=s.create(),Pa=(h,n,a,p,_,b,I,M,P,N,z,j,Y,J,te,ee)=>{const ie=_.transform,V={u_is_size_zoom_constant:+(h==="constant"||h==="source"),u_is_size_feature_constant:+(h==="constant"||h==="camera"),u_size_t:n?n.uSizeT:0,u_size:n?n.uSize:0,u_camera_to_center_distance:ie.cameraToCenterDistance,u_rotate_symbol:+a,u_aspect_ratio:ie.width/ie.height,u_fade_change:_.options.fadeDuration?_.symbolFadeChange:1,u_matrix:b,u_label_plane_matrix:I,u_coord_matrix:M,u_is_text:+P,u_pitch_with_map:+p,u_texsize:N,u_texture:0,u_tile_id:[0,0,0],u_zoom_transition:0,u_inv_rot_matrix:Ca,u_merc_center:[0,0],u_camera_forward:[0,0,0],u_ecef_origin:[0,0,0],u_tile_matrix:Ca,u_up_vector:[0,-1,0]};return ee.name==="globe"&&(V.u_tile_id=[z.canonical.x,z.canonical.y,1<<z.canonical.z],V.u_zoom_transition=j,V.u_inv_rot_matrix=J,V.u_merc_center=Y,V.u_camera_forward=ie._camera.forward(),V.u_ecef_origin=s.globeECEFOrigin(ie.globeMatrix,z.toUnwrapped()),V.u_tile_matrix=Float32Array.from(ie.globeMatrix),V.u_up_vector=te),V},bs=(h,n,a,p,_,b,I,M,P,N,z,j,Y,J,te,ee,ie)=>s.extend(Pa(h,n,a,p,_,b,I,M,P,N,j,Y,J,te,ee,ie),{u_gamma_scale:p?_.transform.cameraToCenterDistance*Math.cos(_.terrain?0:_.transform._pitch):1,u_device_pixel_ratio:s.exported.devicePixelRatio,u_is_halo:+z}),yu=(h,n,a,p,_,b,I,M,P,N,z,j,Y,J,te,ee)=>s.extend(bs(h,n,a,p,_,b,I,M,!0,P,!0,z,j,Y,J,te,ee),{u_texsize_icon:N,u_texture_icon:1}),La=(h,n,a)=>({u_matrix:h,u_opacity:n,u_color:a}),vu=(h,n,a,p,_)=>s.extend(function(b,I,M){const P=I.imageManager.getPattern(b.toString()),{width:N,height:z}=I.imageManager.getPixelSize(),j=Math.pow(2,M.tileID.overscaledZ),Y=M.tileSize*Math.pow(2,I.transform.tileZoom)/j,J=Y*(M.tileID.canonical.x+M.tileID.wrap*j),te=Y*M.tileID.canonical.y;return{u_image:0,u_pattern_tl:P.tl,u_pattern_br:P.br,u_texsize:[N,z],u_pattern_size:P.displaySize,u_tile_units_to_pixels:1/wi(M,1,I.transform.tileZoom),u_pixel_coord_upper:[J>>16,te>>16],u_pixel_coord_lower:[65535&J,65535&te]}}(p,a,_),{u_matrix:h,u_opacity:n}),bl={fillExtrusion:h=>({u_matrix:new s.UniformMatrix4f(h),u_lightpos:new s.Uniform3f(h),u_lightintensity:new s.Uniform1f(h),u_lightcolor:new s.Uniform3f(h),u_vertical_gradient:new s.Uniform1f(h),u_opacity:new s.Uniform1f(h),u_edge_radius:new s.Uniform1f(h),u_ao:new s.Uniform2f(h),u_tile_id:new s.Uniform3f(h),u_zoom_transition:new s.Uniform1f(h),u_inv_rot_matrix:new s.UniformMatrix4f(h),u_merc_center:new s.Uniform2f(h),u_up_dir:new s.Uniform3f(h),u_height_lift:new s.Uniform1f(h)}),fillExtrusionPattern:h=>({u_matrix:new s.UniformMatrix4f(h),u_lightpos:new s.Uniform3f(h),u_lightintensity:new s.Uniform1f(h),u_lightcolor:new s.Uniform3f(h),u_vertical_gradient:new s.Uniform1f(h),u_height_factor:new s.Uniform1f(h),u_edge_radius:new s.Uniform1f(h),u_ao:new s.Uniform2f(h),u_tile_id:new s.Uniform3f(h),u_zoom_transition:new s.Uniform1f(h),u_inv_rot_matrix:new s.UniformMatrix4f(h),u_merc_center:new s.Uniform2f(h),u_up_dir:new s.Uniform3f(h),u_height_lift:new s.Uniform1f(h),u_image:new s.Uniform1i(h),u_texsize:new s.Uniform2f(h),u_pixel_coord_upper:new s.Uniform2f(h),u_pixel_coord_lower:new s.Uniform2f(h),u_tile_units_to_pixels:new s.Uniform1f(h),u_opacity:new s.Uniform1f(h)}),fill:h=>({u_matrix:new s.UniformMatrix4f(h)}),fillPattern:h=>({u_matrix:new s.UniformMatrix4f(h),u_image:new s.Uniform1i(h),u_texsize:new s.Uniform2f(h),u_pixel_coord_upper:new s.Uniform2f(h),u_pixel_coord_lower:new s.Uniform2f(h),u_tile_units_to_pixels:new s.Uniform1f(h)}),fillOutline:h=>({u_matrix:new s.UniformMatrix4f(h),u_world:new s.Uniform2f(h)}),fillOutlinePattern:h=>({u_matrix:new s.UniformMatrix4f(h),u_world:new s.Uniform2f(h),u_image:new s.Uniform1i(h),u_texsize:new s.Uniform2f(h),u_pixel_coord_upper:new s.Uniform2f(h),u_pixel_coord_lower:new s.Uniform2f(h),u_tile_units_to_pixels:new s.Uniform1f(h)}),circle:h=>({u_camera_to_center_distance:new s.Uniform1f(h),u_extrude_scale:new s.UniformMatrix2f(h),u_device_pixel_ratio:new s.Uniform1f(h),u_matrix:new s.UniformMatrix4f(h),u_inv_rot_matrix:new s.UniformMatrix4f(h),u_merc_center:new s.Uniform2f(h),u_tile_id:new s.Uniform3f(h),u_zoom_transition:new s.Uniform1f(h),u_up_dir:new s.Uniform3f(h)}),collisionBox:h=>({u_matrix:new s.UniformMatrix4f(h),u_camera_to_center_distance:new s.Uniform1f(h),u_extrude_scale:new s.Uniform2f(h)}),collisionCircle:h=>({u_matrix:new s.UniformMatrix4f(h),u_inv_matrix:new s.UniformMatrix4f(h),u_camera_to_center_distance:new s.Uniform1f(h),u_viewport_size:new s.Uniform2f(h)}),debug:h=>({u_color:new s.UniformColor(h),u_matrix:new s.UniformMatrix4f(h),u_overlay:new s.Uniform1i(h),u_overlay_scale:new s.Uniform1f(h)}),clippingMask:h=>({u_matrix:new s.UniformMatrix4f(h)}),heatmap:h=>({u_extrude_scale:new s.Uniform1f(h),u_intensity:new s.Uniform1f(h),u_matrix:new s.UniformMatrix4f(h),u_inv_rot_matrix:new s.UniformMatrix4f(h),u_merc_center:new s.Uniform2f(h),u_tile_id:new s.Uniform3f(h),u_zoom_transition:new s.Uniform1f(h),u_up_dir:new s.Uniform3f(h)}),heatmapTexture:h=>({u_image:new s.Uniform1i(h),u_color_ramp:new s.Uniform1i(h),u_opacity:new s.Uniform1f(h)}),hillshade:h=>({u_matrix:new s.UniformMatrix4f(h),u_image:new s.Uniform1i(h),u_latrange:new s.Uniform2f(h),u_light:new s.Uniform2f(h),u_shadow:new s.UniformColor(h),u_highlight:new s.UniformColor(h),u_accent:new s.UniformColor(h)}),hillshadePrepare:h=>({u_matrix:new s.UniformMatrix4f(h),u_image:new s.Uniform1i(h),u_dimension:new s.Uniform2f(h),u_zoom:new s.Uniform1f(h),u_unpack:new s.Uniform4f(h)}),line:h=>({u_matrix:new s.UniformMatrix4f(h),u_pixels_to_tile_units:new s.UniformMatrix2f(h),u_device_pixel_ratio:new s.Uniform1f(h),u_units_to_pixels:new s.Uniform2f(h),u_dash_image:new s.Uniform1i(h),u_gradient_image:new s.Uniform1i(h),u_image_height:new s.Uniform1f(h),u_texsize:new s.Uniform2f(h),u_tile_units_to_pixels:new s.Uniform1f(h),u_alpha_discard_threshold:new s.Uniform1f(h),u_trim_offset:new s.Uniform2f(h)}),linePattern:h=>({u_matrix:new s.UniformMatrix4f(h),u_texsize:new s.Uniform2f(h),u_pixels_to_tile_units:new s.UniformMatrix2f(h),u_device_pixel_ratio:new s.Uniform1f(h),u_image:new s.Uniform1i(h),u_units_to_pixels:new s.Uniform2f(h),u_tile_units_to_pixels:new s.Uniform1f(h),u_alpha_discard_threshold:new s.Uniform1f(h)}),raster:h=>({u_matrix:new s.UniformMatrix4f(h),u_tl_parent:new s.Uniform2f(h),u_scale_parent:new s.Uniform1f(h),u_fade_t:new s.Uniform1f(h),u_opacity:new s.Uniform1f(h),u_image0:new s.Uniform1i(h),u_image1:new s.Uniform1i(h),u_brightness_low:new s.Uniform1f(h),u_brightness_high:new s.Uniform1f(h),u_saturation_factor:new s.Uniform1f(h),u_contrast_factor:new s.Uniform1f(h),u_spin_weights:new s.Uniform3f(h),u_perspective_transform:new s.Uniform2f(h)}),symbolIcon:h=>({u_is_size_zoom_constant:new s.Uniform1i(h),u_is_size_feature_constant:new s.Uniform1i(h),u_size_t:new s.Uniform1f(h),u_size:new s.Uniform1f(h),u_camera_to_center_distance:new s.Uniform1f(h),u_rotate_symbol:new s.Uniform1i(h),u_aspect_ratio:new s.Uniform1f(h),u_fade_change:new s.Uniform1f(h),u_matrix:new s.UniformMatrix4f(h),u_label_plane_matrix:new s.UniformMatrix4f(h),u_coord_matrix:new s.UniformMatrix4f(h),u_is_text:new s.Uniform1i(h),u_pitch_with_map:new s.Uniform1i(h),u_texsize:new s.Uniform2f(h),u_tile_id:new s.Uniform3f(h),u_zoom_transition:new s.Uniform1f(h),u_inv_rot_matrix:new s.UniformMatrix4f(h),u_merc_center:new s.Uniform2f(h),u_camera_forward:new s.Uniform3f(h),u_tile_matrix:new s.UniformMatrix4f(h),u_up_vector:new s.Uniform3f(h),u_ecef_origin:new s.Uniform3f(h),u_texture:new s.Uniform1i(h)}),symbolSDF:h=>({u_is_size_zoom_constant:new s.Uniform1i(h),u_is_size_feature_constant:new s.Uniform1i(h),u_size_t:new s.Uniform1f(h),u_size:new s.Uniform1f(h),u_camera_to_center_distance:new s.Uniform1f(h),u_rotate_symbol:new s.Uniform1i(h),u_aspect_ratio:new s.Uniform1f(h),u_fade_change:new s.Uniform1f(h),u_matrix:new s.UniformMatrix4f(h),u_label_plane_matrix:new s.UniformMatrix4f(h),u_coord_matrix:new s.UniformMatrix4f(h),u_is_text:new s.Uniform1i(h),u_pitch_with_map:new s.Uniform1i(h),u_texsize:new s.Uniform2f(h),u_texture:new s.Uniform1i(h),u_gamma_scale:new s.Uniform1f(h),u_device_pixel_ratio:new s.Uniform1f(h),u_tile_id:new s.Uniform3f(h),u_zoom_transition:new s.Uniform1f(h),u_inv_rot_matrix:new s.UniformMatrix4f(h),u_merc_center:new s.Uniform2f(h),u_camera_forward:new s.Uniform3f(h),u_tile_matrix:new s.UniformMatrix4f(h),u_up_vector:new s.Uniform3f(h),u_ecef_origin:new s.Uniform3f(h),u_is_halo:new s.Uniform1i(h)}),symbolTextAndIcon:h=>({u_is_size_zoom_constant:new s.Uniform1i(h),u_is_size_feature_constant:new s.Uniform1i(h),u_size_t:new s.Uniform1f(h),u_size:new s.Uniform1f(h),u_camera_to_center_distance:new s.Uniform1f(h),u_rotate_symbol:new s.Uniform1i(h),u_aspect_ratio:new s.Uniform1f(h),u_fade_change:new s.Uniform1f(h),u_matrix:new s.UniformMatrix4f(h),u_label_plane_matrix:new s.UniformMatrix4f(h),u_coord_matrix:new s.UniformMatrix4f(h),u_is_text:new s.Uniform1i(h),u_pitch_with_map:new s.Uniform1i(h),u_texsize:new s.Uniform2f(h),u_texsize_icon:new s.Uniform2f(h),u_texture:new s.Uniform1i(h),u_texture_icon:new s.Uniform1i(h),u_gamma_scale:new s.Uniform1f(h),u_device_pixel_ratio:new s.Uniform1f(h),u_is_halo:new s.Uniform1i(h)}),background:h=>({u_matrix:new s.UniformMatrix4f(h),u_opacity:new s.Uniform1f(h),u_color:new s.UniformColor(h)}),backgroundPattern:h=>({u_matrix:new s.UniformMatrix4f(h),u_opacity:new s.Uniform1f(h),u_image:new s.Uniform1i(h),u_pattern_tl:new s.Uniform2f(h),u_pattern_br:new s.Uniform2f(h),u_texsize:new s.Uniform2f(h),u_pattern_size:new s.Uniform2f(h),u_pixel_coord_upper:new s.Uniform2f(h),u_pixel_coord_lower:new s.Uniform2f(h),u_tile_units_to_pixels:new s.Uniform1f(h)}),terrainRaster:gl,terrainDepth:gl,skybox:h=>({u_matrix:new s.UniformMatrix4f(h),u_sun_direction:new s.Uniform3f(h),u_cubemap:new s.Uniform1i(h),u_opacity:new s.Uniform1f(h),u_temporal_offset:new s.Uniform1f(h)}),skyboxGradient:h=>({u_matrix:new s.UniformMatrix4f(h),u_color_ramp:new s.Uniform1i(h),u_center_direction:new s.Uniform3f(h),u_radius:new s.Uniform1f(h),u_opacity:new s.Uniform1f(h),u_temporal_offset:new s.Uniform1f(h)}),skyboxCapture:h=>({u_matrix_3f:new s.UniformMatrix3f(h),u_sun_direction:new s.Uniform3f(h),u_sun_intensity:new s.Uniform1f(h),u_color_tint_r:new s.Uniform4f(h),u_color_tint_m:new s.Uniform4f(h),u_luminance:new s.Uniform1f(h)}),globeRaster:h=>({u_proj_matrix:new s.UniformMatrix4f(h),u_globe_matrix:new s.UniformMatrix4f(h),u_normalize_matrix:new s.UniformMatrix4f(h),u_merc_matrix:new s.UniformMatrix4f(h),u_zoom_transition:new s.Uniform1f(h),u_merc_center:new s.Uniform2f(h),u_image0:new s.Uniform1i(h),u_grid_matrix:new s.UniformMatrix3f(h),u_skirt_height:new s.Uniform1f(h),u_frustum_tl:new s.Uniform3f(h),u_frustum_tr:new s.Uniform3f(h),u_frustum_br:new s.Uniform3f(h),u_frustum_bl:new s.Uniform3f(h),u_globe_pos:new s.Uniform3f(h),u_globe_radius:new s.Uniform1f(h),u_viewport:new s.Uniform2f(h)}),globeAtmosphere:h=>({u_frustum_tl:new s.Uniform3f(h),u_frustum_tr:new s.Uniform3f(h),u_frustum_br:new s.Uniform3f(h),u_frustum_bl:new s.Uniform3f(h),u_horizon:new s.Uniform1f(h),u_transition:new s.Uniform1f(h),u_fadeout_range:new s.Uniform1f(h),u_color:new s.Uniform4f(h),u_high_color:new s.Uniform4f(h),u_space_color:new s.Uniform4f(h),u_star_intensity:new s.Uniform1f(h),u_star_density:new s.Uniform1f(h),u_star_size:new s.Uniform1f(h),u_temporal_offset:new s.Uniform1f(h),u_horizon_angle:new s.Uniform1f(h),u_rotation_matrix:new s.UniformMatrix4f(h)})};let Ra;function Yr(h,n,a,p,_,b,I){const M=h.context,P=M.gl,N=h.transform,z=h.useProgram("collisionBox"),j=[];let Y=0,J=0;for(let le=0;le<p.length;le++){const xe=p[le],Te=n.getTile(xe),be=Te.getBucket(a);if(!be)continue;const Ae=jn(xe,be,N);let ke=Ae;_[0]===0&&_[1]===0||(ke=h.translatePosMatrix(Ae,Te,_,b));const Ne=I?be.textCollisionBox:be.iconCollisionBox,tt=be.collisionCircleArray;if(tt.length>0){const Re=s.create(),We=ke;s.mul(Re,be.placementInvProjMatrix,N.glCoordMatrix),s.mul(Re,Re,be.placementViewportMatrix),j.push({circleArray:tt,circleOffset:J,transform:We,invTransform:Re,projection:be.getProjection()}),Y+=tt.length/4,J=Y}Ne&&(h.terrain&&h.terrain.setupElevationDraw(Te,z),z.draw(M,P.LINES,s.DepthMode.disabled,s.StencilMode.disabled,h.colorModeForRenderPass(),s.CullFaceMode.disabled,ka(ke,N,Te,be.getProjection()),a.id,Ne.layoutVertexBuffer,Ne.indexBuffer,Ne.segments,null,N.zoom,null,[Ne.collisionVertexBuffer,Ne.collisionVertexBufferExt]))}if(!I||!j.length)return;const te=h.useProgram("collisionCircle"),ee=new s.StructArrayLayout2f1f2i16;ee.resize(4*Y),ee._trim();let ie=0;for(const le of j)for(let xe=0;xe<le.circleArray.length/4;xe++){const Te=4*xe,be=le.circleArray[Te+0],Ae=le.circleArray[Te+1],ke=le.circleArray[Te+2],Ne=le.circleArray[Te+3];ee.emplace(ie++,be,Ae,ke,Ne,0),ee.emplace(ie++,be,Ae,ke,Ne,1),ee.emplace(ie++,be,Ae,ke,Ne,2),ee.emplace(ie++,be,Ae,ke,Ne,3)}(!Ra||Ra.length<2*Y)&&(Ra=function(le){const xe=2*le,Te=new s.StructArrayLayout3ui6;Te.resize(xe),Te._trim();for(let be=0;be<xe;be++){const Ae=6*be;Te.uint16[Ae+0]=4*be+0,Te.uint16[Ae+1]=4*be+1,Te.uint16[Ae+2]=4*be+2,Te.uint16[Ae+3]=4*be+2,Te.uint16[Ae+4]=4*be+3,Te.uint16[Ae+5]=4*be+0}return Te}(Y));const V=M.createIndexBuffer(Ra,!0),K=M.createVertexBuffer(ee,s.collisionCircleLayout.members,!0);for(const le of j){const xe={u_matrix:le.transform,u_inv_matrix:le.invTransform,u_camera_to_center_distance:(ae=N).getCameraToCenterDistance(le.projection),u_viewport_size:[ae.width,ae.height]};te.draw(M,P.TRIANGLES,s.DepthMode.disabled,s.StencilMode.disabled,h.colorModeForRenderPass(),s.CullFaceMode.disabled,xe,a.id,K,V,s.SegmentVector.simpleSegment(0,2*le.circleOffset,le.circleArray.length,le.circleArray.length/2),null,N.zoom)}var ae;K.destroy(),V.destroy()}const xu=s.create();function Da({width:h,height:n,anchor:a,textOffset:p,textScale:_},b){const{horizontalAlign:I,verticalAlign:M}=s.getAnchorAlignment(a),P=-(I-.5)*h,N=-(M-.5)*n,z=s.evaluateVariableOffset(a,p);return new s.Point((P/_+z[0])*b,(N/_+z[1])*b)}function Tr(h,n,a,p,_,b,I,M,P,N,z){const j=h.text.placedSymbolArray,Y=h.text.dynamicLayoutVertexArray,J=h.icon.dynamicLayoutVertexArray,te={},ee=h.getProjection(),ie=Zi(M,ee,b),V=b.elevation,K=ee.upVectorScale(M.canonical,b.center.lat,b.worldSize).metersToTile;Y.clear();for(let ae=0;ae<j.length;ae++){const le=j.get(ae),{tileAnchorX:xe,tileAnchorY:Te,numGlyphs:be}=le,Ae=le.hidden||!le.crossTileID||h.allowVerticalPlacement&&!le.placedOrientation?null:p[le.crossTileID];if(Ae){let ke=0,Ne=0,tt=0;if(V){const st=V?V.getAtTileOffset(M,xe,Te):0,[zt,Kt,Pt]=ee.upVector(M.canonical,xe,Te);ke=st*zt*K,Ne=st*Kt*K,tt=st*Pt*K}let[Re,We,je,et]=An(le.projectedAnchorX+ke,le.projectedAnchorY+Ne,le.projectedAnchorZ+tt,a?ie:I);const ze=hu(b.getCameraToCenterDistance(ee),et);let Ze=_.evaluateSizeForFeature(h.textSizeData,N,le)*ze/s.ONE_EM;a&&(Ze*=h.tilePixelRatio/P);const rt=Da(Ae,Ze);a?({x:Re,y:We,z:je}=ee.projectTilePoint(xe+rt.x,Te+rt.y,M.canonical),[Re,We,je]=An(Re+ke,We+Ne,je+tt,I)):(n&&rt._rotate(-b.angle),Re+=rt.x,We+=rt.y,je=0);const Ke=h.allowVerticalPlacement&&le.placedOrientation===s.WritingMode.vertical?Math.PI/2:0;for(let st=0;st<be;st++)s.addDynamicAttributes(Y,Re,We,je,Ke);z&&le.associatedIconIndex>=0&&(te[le.associatedIconIndex]={x:Re,y:We,z:je,angle:Ke})}else zr(be,Y)}if(z){J.clear();const ae=h.icon.placedSymbolArray;for(let le=0;le<ae.length;le++){const xe=ae.get(le),{numGlyphs:Te}=xe,be=te[le];if(xe.hidden||!be)zr(Te,J);else{const{x:Ae,y:ke,z:Ne,angle:tt}=be;for(let Re=0;Re<Te;Re++)s.addDynamicAttributes(J,Ae,ke,Ne,tt)}}h.icon.dynamicLayoutVertexBuffer.updateData(J)}h.text.dynamicLayoutVertexBuffer.updateData(Y)}function Sr(h,n,a){return a.iconsInText&&n?"symbolTextAndIcon":h?"symbolSDF":"symbolIcon"}function v(h,n,a,p,_,b,I,M,P,N,z,j){const Y=h.context,J=Y.gl,te=h.transform,ee=M==="map",ie=P==="map",V=ee&&a.layout.get("symbol-placement")!=="point",K=ee&&!ie&&!V,ae=a.layout.get("symbol-sort-key").constantOr(1)!==void 0;let le=!1;const xe=h.depthModeForSublayer(0,s.DepthMode.ReadOnly),Te=[s.mercatorXfromLng(te.center.lng),s.mercatorYfromLat(te.center.lat)],be=a.layout.get("text-variable-anchor"),Ae=te.projection.name==="globe",ke=[],Ne=[0,-1,0];let tt=Ne;!Ae&&!te.mercatorFromTransition||ee||(tt=function(Re){const We=Re._camera.getWorldToCamera(Re.worldSize,1),je=s.multiply([],We,Re.globeMatrix);s.invert(je,je);const et=[0,0,0],ze=[0,1,0,0];return s.transformMat4$1(ze,ze,je),et[0]=ze[0],et[1]=ze[1],et[2]=ze[2],s.normalize(et,et),et}(te));for(const Re of p){const We=n.getTile(Re),je=We.getBucket(a);if(!je||je.projection.name==="mercator"&&Ae)continue;const et=_?je.text:je.icon;if(!et||je.fullyClipped||!et.segments.get().length)continue;const ze=et.programConfigurations.get(a.id),Ze=_||je.sdfIcons,rt=_?je.textSizeData:je.iconSizeData,Ke=ie||te.pitch!==0,st=s.evaluateSizeForZoom(rt,te.zoom);let zt,Kt,Pt,jt,mi=[0,0],di=null;if(_)Kt=We.glyphAtlasTexture,Pt=J.LINEAR,zt=We.glyphAtlasTexture.size,je.iconsInText&&(mi=We.imageAtlasTexture.size,di=We.imageAtlasTexture,jt=Ke||h.options.rotating||h.options.zooming||rt.kind==="composite"||rt.kind==="camera"?J.LINEAR:J.NEAREST);else{const Ho=a.layout.get("icon-size").constantOr(0)!==1||je.iconsNeedLinear;Kt=We.imageAtlasTexture,Pt=Ze||h.options.rotating||h.options.zooming||Ho||Ke?J.LINEAR:J.NEAREST,zt=We.imageAtlasTexture.size}const Ot=je.projection.name==="globe",Di=Ot?tt:Ne,Bi=Ot?s.globeToMercatorTransition(te.zoom):0,Fi=Zi(Re,je.getProjection(),te),Ui=te.calculatePixelsToTileUnitsMatrix(We),ur=Ge(Fi,We.tileID.canonical,ie,ee,te,je.getProjection(),Ui),$n=h.terrain&&ie&&V?s.invert(s.create(),ur):xu,Jr=sn(Fi,We.tileID.canonical,ie,ee,te,je.getProjection(),Ui),ko=be&&je.hasTextData(),on=a.layout.get("icon-text-fit")!=="none"&&ko&&je.hasIconData();if(V){const Ho=te.elevation,Ts=Ho?Ho.getAtTileOffsetFunc(Re,te.center.lat,te.worldSize,je.getProjection()):null,ta=nr(Fi,We.tileID.canonical,ie,ee,te,je.getProjection(),Ui);ya(je,Fi,h,_,ta,Jr,ie,N,Ts,Re)}const ji=V||_&&be||on,ki=h.translatePosMatrix(Fi,We,b,I),wn=ji?xu:ur,gr=h.translatePosMatrix(Jr,We,b,I,!0),nn=je.getProjection().createInversionMatrix(te,Re.canonical),kr=[];h.terrainRenderModeElevated()&&ie&&kr.push("PITCH_WITH_MAP_TERRAIN"),Ot&&kr.push("PROJECTION_GLOBE_VIEW"),ji&&kr.push("PROJECTED_POS_ON_VIEWPORT");const Au=Ze&&a.paint.get(_?"text-halo-width":"icon-halo-width").constantOr(1)!==0;let ea;ea=Ze?je.iconsInText?yu(rt.kind,st,K,ie,h,ki,wn,gr,zt,mi,Re,Bi,Te,nn,Di,je.getProjection()):bs(rt.kind,st,K,ie,h,ki,wn,gr,_,zt,!0,Re,Bi,Te,nn,Di,je.getProjection()):Pa(rt.kind,st,K,ie,h,ki,wn,gr,_,zt,Re,Bi,Te,nn,Di,je.getProjection());const Al={program:h.useProgram(Sr(Ze,_,je),ze,kr),buffers:et,uniformValues:ea,atlasTexture:Kt,atlasTextureIcon:di,atlasInterpolation:Pt,atlasInterpolationIcon:jt,isSDF:Ze,hasHalo:Au,tile:We,labelPlaneMatrixInv:$n};if(ae&&je.canOverlap){le=!0;const Ho=et.segments.get();for(const Ts of Ho)ke.push({segments:new s.SegmentVector([Ts]),sortKey:Ts.sortKey,state:Al})}else ke.push({segments:et.segments,sortKey:0,state:Al})}le&&ke.sort((Re,We)=>Re.sortKey-We.sortKey);for(const Re of ke){const We=Re.state;if(h.terrain&&h.terrain.setupElevationDraw(We.tile,We.program,{useDepthForOcclusion:!Ae,labelPlaneMatrixInv:We.labelPlaneMatrixInv}),Y.activeTexture.set(J.TEXTURE0),We.atlasTexture.bind(We.atlasInterpolation,J.CLAMP_TO_EDGE),We.atlasTextureIcon&&(Y.activeTexture.set(J.TEXTURE1),We.atlasTextureIcon&&We.atlasTextureIcon.bind(We.atlasInterpolationIcon,J.CLAMP_TO_EDGE)),We.isSDF){const je=We.uniformValues;We.hasHalo&&(je.u_is_halo=1,o(We.buffers,Re.segments,a,h,We.program,xe,z,j,je)),je.u_is_halo=0}o(We.buffers,Re.segments,a,h,We.program,xe,z,j,We.uniformValues)}}function o(h,n,a,p,_,b,I,M,P){const N=p.context,z=[h.dynamicLayoutVertexBuffer,h.opacityVertexBuffer,h.globeExtVertexBuffer];_.draw(N,N.gl.TRIANGLES,b,I,M,s.CullFaceMode.disabled,P,a.id,h.layoutVertexBuffer,h.indexBuffer,n,a.paint,p.transform.zoom,h.programConfigurations.get(a.id),z)}function l(h,n,a,p,_,b,I){const M=h.context.gl,P=a.paint.get("fill-pattern"),N=P&&P.constantOr(1);let z,j,Y,J,te;I?(j=N&&!a.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",z=M.LINES):(j=N?"fillPattern":"fill",z=M.TRIANGLES);for(const ee of p){const ie=n.getTile(ee);if(N&&!ie.patternsLoaded())continue;const V=ie.getBucket(a);if(!V)continue;h.prepareDrawTile();const K=V.programConfigurations.get(a.id),ae=h.useProgram(j,K);N&&(h.context.activeTexture.set(M.TEXTURE0),ie.imageAtlasTexture.bind(M.LINEAR,M.CLAMP_TO_EDGE),K.updatePaintBuffers());const le=P.constantOr(null);if(le&&ie.imageAtlas){const Te=ie.imageAtlas.patternPositions[le.toString()];Te&&K.setConstantPatternPositions(Te)}const xe=h.translatePosMatrix(ee.projMatrix,ie,a.paint.get("fill-translate"),a.paint.get("fill-translate-anchor"));if(I){J=V.indexBuffer2,te=V.segments2;const Te=h.terrain&&h.terrain.renderingToTexture?h.terrain.drapeBufferSize:[M.drawingBufferWidth,M.drawingBufferHeight];Y=j==="fillOutlinePattern"&&N?wc(xe,h,ie,Te):bc(xe,Te)}else J=V.indexBuffer,te=V.segments,Y=N?yl(xe,h,ie):Zo(xe);h.prepareDrawProgram(h.context,ae,ee.toUnwrapped()),ae.draw(h.context,z,_,h.stencilModeForClipping(ee),b,s.CullFaceMode.disabled,Y,a.id,V.layoutVertexBuffer,J,te,a.paint,h.transform.zoom,K)}}function c(h,n,a,p,_,b,I){const M=h.context,P=M.gl,N=h.transform,z=a.paint.get("fill-extrusion-pattern"),j=z.constantOr(1),Y=a.paint.get("fill-extrusion-opacity"),J=[a.paint.get("fill-extrusion-ambient-occlusion-intensity"),a.paint.get("fill-extrusion-ambient-occlusion-radius")],te=a.layout.get("fill-extrusion-edge-radius"),ee=te>0&&!a.paint.get("fill-extrusion-rounded-roof"),ie=ee?0:te,V=N.projection.name==="globe"?s.fillExtrusionHeightLift():0,K=N.projection.name==="globe",ae=K?s.globeToMercatorTransition(N.zoom):0,le=[s.mercatorXfromLng(N.center.lng),s.mercatorYfromLat(N.center.lat)],xe=[];K&&xe.push("PROJECTION_GLOBE_VIEW"),J[0]>0&&xe.push("FAUX_AO"),ee&&xe.push("ZERO_ROOF_RADIUS");for(const Te of p){const be=n.getTile(Te),Ae=be.getBucket(a);if(!Ae||Ae.projection.name!==N.projection.name)continue;const ke=Ae.programConfigurations.get(a.id),Ne=h.useProgram(j?"fillExtrusionPattern":"fillExtrusion",ke,xe);if(h.terrain){const Ze=h.terrain;if(h.style.terrainSetForDrapingOnly())Ze.setupElevationDraw(be,Ne,{useMeterToDem:!0});else{if(!Ae.enableTerrain)continue;if(Ze.setupElevationDraw(be,Ne,{useMeterToDem:!0}),g(M,n,Te,Ae,a,Ze),!Ae.centroidVertexBuffer){const rt=Ne.attributes.a_centroid_pos;rt!==void 0&&P.vertexAttrib2f(rt,0,0)}}}j&&(h.context.activeTexture.set(P.TEXTURE0),be.imageAtlasTexture.bind(P.LINEAR,P.CLAMP_TO_EDGE),ke.updatePaintBuffers());const tt=z.constantOr(null);if(tt&&be.imageAtlas){const Ze=be.imageAtlas.patternPositions[tt.toString()];Ze&&ke.setConstantPatternPositions(Ze)}const Re=h.translatePosMatrix(Te.projMatrix,be,a.paint.get("fill-extrusion-translate"),a.paint.get("fill-extrusion-translate-anchor")),We=N.projection.createInversionMatrix(N,Te.canonical),je=a.paint.get("fill-extrusion-vertical-gradient"),et=j?mu(Re,h,je,Y,J,ie,Te,be,V,ae,le,We):_l(Re,h,je,Y,J,ie,Te,V,ae,le,We);h.prepareDrawProgram(M,Ne,Te.toUnwrapped());const ze=[];h.terrain&&ze.push(Ae.centroidVertexBuffer),K&&ze.push(Ae.layoutVertexExtBuffer),Ne.draw(M,M.gl.TRIANGLES,_,b,I,s.CullFaceMode.backCCW,et,a.id,Ae.layoutVertexBuffer,Ae.indexBuffer,Ae.segments,a.paint,h.transform.zoom,ke,ze)}}function g(h,n,a,p,_,b){const I=[V=>{let K=V.canonical.x-1,ae=V.wrap;return K<0&&(K=(1<<V.canonical.z)-1,ae--),new s.OverscaledTileID(V.overscaledZ,ae,V.canonical.z,K,V.canonical.y)},V=>{let K=V.canonical.x+1,ae=V.wrap;return K===1<<V.canonical.z&&(K=0,ae++),new s.OverscaledTileID(V.overscaledZ,ae,V.canonical.z,K,V.canonical.y)},V=>new s.OverscaledTileID(V.overscaledZ,V.wrap,V.canonical.z,V.canonical.x,(V.canonical.y===0?1<<V.canonical.z:V.canonical.y)-1),V=>new s.OverscaledTileID(V.overscaledZ,V.wrap,V.canonical.z,V.canonical.x,V.canonical.y===(1<<V.canonical.z)-1?0:V.canonical.y+1)],M=V=>{const K=n.getSource().minzoom,ae=xe=>{const Te=n.getTileByID(xe);if(Te&&Te.hasData())return Te.getBucket(_)},le=[0,-1,1];for(const xe of le){if(V.overscaledZ+xe<K)continue;const Te=ae(V.calculateScaledKey(V.overscaledZ+xe));if(Te)return Te}},P=[0,0,0],N=(V,K)=>(P[0]=Math.min(V.min.y,K.min.y),P[1]=Math.max(V.max.y,K.max.y),P[2]=s.EXTENT-K.min.x>V.max.x?K.min.x-s.EXTENT:V.max.x,P),z=(V,K)=>(P[0]=Math.min(V.min.x,K.min.x),P[1]=Math.max(V.max.x,K.max.x),P[2]=s.EXTENT-K.min.y>V.max.y?K.min.y-s.EXTENT:V.max.y,P),j=[(V,K)=>N(V,K),(V,K)=>N(K,V),(V,K)=>z(V,K),(V,K)=>z(K,V)],Y=new s.Point(0,0);let J,te,ee;const ie=(V,K,ae,le,xe)=>{const Te=[[le?ae:V,le?V:ae,0],[le?ae:K,le?K:ae,0]],be=xe<0?s.EXTENT+xe:xe,Ae=[le?be:(V+K)/2,le?(V+K)/2:be,0];return ae===0&&xe<0||ae!==0&&xe>0?b.getForTilePoints(ee,[Ae],!0,te):Te.push(Ae),b.getForTilePoints(a,Te,!0,J),Math.max(Te[0][2],Te[1][2],Ae[2])/b.exaggeration()};for(let V=0;V<4;V++){const K=(V<2?1:5)-V,ae=p.borders[V];if(ae.length===0)continue;const le=ee=I[V](a),xe=M(le);if(!(xe&&xe instanceof s.FillExtrusionBucket&&xe.enableTerrain)||p.borderDoneWithNeighborZ[V]===xe.canonical.z&&xe.borderDoneWithNeighborZ[K]===p.canonical.z||(te=b.findDEMTileFor(le),!te||!te.dem))continue;if(!J){const ke=b.findDEMTileFor(a);if(!ke||!ke.dem)return;J=ke}const Te=xe.borders[K];let be=0;const Ae=xe.borderDoneWithNeighborZ[K]!==p.canonical.z;if(p.canonical.z===xe.canonical.z){for(let ke=0;ke<ae.length;ke++){const Ne=p.featuresOnBorder[ae[ke]],tt=Ne.borders[V];let Re;for(;be<Te.length&&(Re=xe.featuresOnBorder[Te[be]],!(Re.borders[K][1]>tt[0]+3));)Ae&&xe.encodeCentroid(void 0,Re,!1),be++;if(Re&&be<Te.length){const We=be;let je=0;for(;!(Re.borders[K][0]>tt[1]-3)&&(je++,++be!==Te.length);)Re=xe.featuresOnBorder[Te[be]];if(Re=xe.featuresOnBorder[Te[We]],Ne.intersectsCount()>1||Re.intersectsCount()>1||je!==1){je!==1&&(be=We),p.encodeCentroid(void 0,Ne,!1),Ae&&xe.encodeCentroid(void 0,Re,!1);continue}const et=j[V](Ne,Re),ze=V%2?s.EXTENT-1:0;Y.x=ie(et[0],Math.min(s.EXTENT-1,et[1]),ze,V<2,et[2]),Y.y=0,p.encodeCentroid(Y,Ne,!1),Ae&&xe.encodeCentroid(Y,Re,!1)}else p.encodeCentroid(void 0,Ne,!1)}p.borderDoneWithNeighborZ[V]=xe.canonical.z,p.needsCentroidUpdate=!0,Ae&&(xe.borderDoneWithNeighborZ[K]=p.canonical.z,xe.needsCentroidUpdate=!0)}else{for(const ke of ae)p.encodeCentroid(void 0,p.featuresOnBorder[ke],!1);if(Ae){for(const ke of Te)xe.encodeCentroid(void 0,xe.featuresOnBorder[ke],!1);xe.borderDoneWithNeighborZ[K]=p.canonical.z,xe.needsCentroidUpdate=!0}p.borderDoneWithNeighborZ[V]=xe.canonical.z,p.needsCentroidUpdate=!0}}(p.needsCentroidUpdate||!p.centroidVertexBuffer&&p.centroidVertexArray.length!==0)&&p.uploadCentroid(h)}const S=new s.Color(1,0,0,1),R=new s.Color(0,1,0,1),F=new s.Color(0,0,1,1),q=new s.Color(1,0,1,1),Q=new s.Color(0,1,1,1);function Ee(h,n,a){const p=h.context,_=h.transform,b=p.gl,I=_.projection.name==="globe",M=I?["PROJECTION_GLOBE_VIEW"]:null;let P=a.projMatrix;if(I&&s.globeToMercatorTransition(_.zoom)>0){const Ne=s.transitionTileAABBinECEF(a.canonical,_),tt=s.globeDenormalizeECEF(Ne);P=s.multiply(new Float32Array(16),_.globeMatrix,tt),s.multiply(P,_.projMatrix,P)}const N=h.useProgram("debug",null,M),z=n.getTileByID(a.key);h.terrain&&h.terrain.setupElevationDraw(z,N);const j=s.DepthMode.disabled,Y=s.StencilMode.disabled,J=h.colorModeForRenderPass(),te="$debug";p.activeTexture.set(b.TEXTURE0),h.emptyTexture.bind(b.LINEAR,b.CLAMP_TO_EDGE),I?z._makeGlobeTileDebugBuffers(h.context,_):z._makeDebugTileBoundsBuffers(h.context,_.projection);const ee=z._tileDebugBuffer||h.debugBuffer,ie=z._tileDebugIndexBuffer||h.debugIndexBuffer,V=z._tileDebugSegments||h.debugSegments;N.draw(p,b.LINE_STRIP,j,Y,J,s.CullFaceMode.disabled,Ma(P,s.Color.red),te,ee,ie,V,null,null,null,[z._globeTileDebugBorderBuffer]);const K=z.latestRawTileData,ae=Math.floor((K&&K.byteLength||0)/1024),le=n.getTile(a).tileSize,xe=512/Math.min(le,512)*(a.overscaledZ/_.zoom)*.5;let Te=a.canonical.toString();a.overscaledZ!==a.canonical.z&&(Te+=` => ${a.overscaledZ}`),Te+=` ${ae}kb`,function(Ne,tt){Ne.initDebugOverlayCanvas();const Re=Ne.debugOverlayCanvas,We=Ne.context.gl,je=Ne.debugOverlayCanvas.getContext("2d");je.clearRect(0,0,Re.width,Re.height),je.shadowColor="white",je.shadowBlur=2,je.lineWidth=1.5,je.strokeStyle="white",je.textBaseline="top",je.font="bold 36px Open Sans, sans-serif",je.fillText(tt,5,5),je.strokeText(tt,5,5),Ne.debugOverlayTexture.update(Re),Ne.debugOverlayTexture.bind(We.LINEAR,We.CLAMP_TO_EDGE)}(h,Te);const be=z._tileDebugTextBuffer||h.debugBuffer,Ae=z._tileDebugTextIndexBuffer||h.quadTriangleIndexBuffer,ke=z._tileDebugTextSegments||h.debugSegments;N.draw(p,b.TRIANGLES,j,Y,s.ColorMode.alphaBlended,s.CullFaceMode.disabled,Ma(P,s.Color.transparent,xe),te,be,Ae,ke,null,null,null,[z._globeTileDebugTextBuffer])}function Me(h,n,a,p){pt(h,0,n+a/2,h.transform.width,a,p)}function Xe(h,n,a,p){pt(h,n-a/2,0,a,h.transform.height,p)}function pt(h,n,a,p,_,b){const I=h.context,M=I.gl;M.enable(M.SCISSOR_TEST),M.scissor(n*s.exported.devicePixelRatio,a*s.exported.devicePixelRatio,p*s.exported.devicePixelRatio,_*s.exported.devicePixelRatio),I.clear({color:b}),M.disable(M.SCISSOR_TEST)}const dt=s.createLayout([{name:"a_pos_3f",components:3,type:"Float32"}]),{members:Vt}=dt;function Ut(h,n,a,p){h.emplaceBack(n,a,p)}class ei{constructor(n){this.vertexArray=new s.StructArrayLayout3f12,this.indices=new s.StructArrayLayout3ui6,Ut(this.vertexArray,-1,-1,1),Ut(this.vertexArray,1,-1,1),Ut(this.vertexArray,-1,1,1),Ut(this.vertexArray,1,1,1),Ut(this.vertexArray,-1,-1,-1),Ut(this.vertexArray,1,-1,-1),Ut(this.vertexArray,-1,1,-1),Ut(this.vertexArray,1,1,-1),this.indices.emplaceBack(5,1,3),this.indices.emplaceBack(3,7,5),this.indices.emplaceBack(6,2,0),this.indices.emplaceBack(0,4,6),this.indices.emplaceBack(2,6,7),this.indices.emplaceBack(7,3,2),this.indices.emplaceBack(5,4,0),this.indices.emplaceBack(0,1,5),this.indices.emplaceBack(0,2,3),this.indices.emplaceBack(3,1,0),this.indices.emplaceBack(7,6,4),this.indices.emplaceBack(4,5,7),this.vertexBuffer=n.createVertexBuffer(this.vertexArray,Vt),this.indexBuffer=n.createIndexBuffer(this.indices),this.segment=s.SegmentVector.simpleSegment(0,0,36,12)}}function yi(h,n,a,p,_,b){const I=h.gl,M=n.paint.get("sky-atmosphere-color"),P=n.paint.get("sky-atmosphere-halo-color"),N=n.paint.get("sky-atmosphere-sun-intensity"),z=((j,Y,J,te,ee)=>({u_matrix_3f:j,u_sun_direction:Y,u_sun_intensity:J,u_color_tint_r:[te.r,te.g,te.b,te.a],u_color_tint_m:[ee.r,ee.g,ee.b,ee.a],u_luminance:5e-5}))(s.fromMat4(s.create$1(),p),_,N,M,P);I.framebufferTexture2D(I.FRAMEBUFFER,I.COLOR_ATTACHMENT0,I.TEXTURE_CUBE_MAP_POSITIVE_X+b,n.skyboxTexture,0),a.draw(h,I.TRIANGLES,s.DepthMode.disabled,s.StencilMode.disabled,s.ColorMode.unblended,s.CullFaceMode.frontCW,z,"skyboxCapture",n.skyboxGeometry.vertexBuffer,n.skyboxGeometry.indexBuffer,n.skyboxGeometry.segment)}const Xi=s.createLayout([{type:"Float32",name:"a_pos",components:3},{type:"Float32",name:"a_uv",components:2}]);class Fn{constructor(n){const a=new s.StructArrayLayout5f20;a.emplaceBack(-1,1,1,0,0),a.emplaceBack(1,1,1,1,0),a.emplaceBack(1,-1,1,1,1),a.emplaceBack(-1,-1,1,0,1);const p=new s.StructArrayLayout3ui6;p.emplaceBack(0,1,2),p.emplaceBack(2,3,0),this.vertexBuffer=n.createVertexBuffer(a,Xi.members),this.indexBuffer=n.createIndexBuffer(p),this.segments=s.SegmentVector.simpleSegment(0,0,4,2)}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy()}}const bn={symbol:function(h,n,a,p,_){if(h.renderPass!=="translucent")return;const b=s.StencilMode.disabled,I=h.colorModeForRenderPass();a.layout.get("text-variable-anchor")&&function(M,P,N,z,j,Y,J){const te=P.transform,ee=j==="map",ie=Y==="map";for(const V of M){const K=z.getTile(V),ae=K.getBucket(N);if(!ae||!ae.text||!ae.text.segments.get().length)continue;const le=s.evaluateSizeForZoom(ae.textSizeData,te.zoom),xe=Zi(V,ae.getProjection(),te),Te=te.calculatePixelsToTileUnitsMatrix(K),be=Ge(xe,K.tileID.canonical,ie,ee,te,ae.getProjection(),Te),Ae=N.layout.get("icon-text-fit")!=="none"&&ae.hasIconData();if(le){const ke=Math.pow(2,te.zoom-K.tileID.overscaledZ);Tr(ae,ee,ie,J,s.symbolSize,te,be,V,ke,le,Ae)}}}(p,h,a,n,a.layout.get("text-rotation-alignment"),a.layout.get("text-pitch-alignment"),_),a.paint.get("icon-opacity").constantOr(1)!==0&&v(h,n,a,p,!1,a.paint.get("icon-translate"),a.paint.get("icon-translate-anchor"),a.layout.get("icon-rotation-alignment"),a.layout.get("icon-pitch-alignment"),a.layout.get("icon-keep-upright"),b,I),a.paint.get("text-opacity").constantOr(1)!==0&&v(h,n,a,p,!0,a.paint.get("text-translate"),a.paint.get("text-translate-anchor"),a.layout.get("text-rotation-alignment"),a.layout.get("text-pitch-alignment"),a.layout.get("text-keep-upright"),b,I),n.map.showCollisionBoxes&&(Yr(h,n,a,p,a.paint.get("text-translate"),a.paint.get("text-translate-anchor"),!0),Yr(h,n,a,p,a.paint.get("icon-translate"),a.paint.get("icon-translate-anchor"),!1))},circle:function(h,n,a,p){if(h.renderPass!=="translucent")return;const _=a.paint.get("circle-opacity"),b=a.paint.get("circle-stroke-width"),I=a.paint.get("circle-stroke-opacity"),M=a.layout.get("circle-sort-key").constantOr(1)!==void 0;if(_.constantOr(1)===0&&(b.constantOr(1)===0||I.constantOr(1)===0))return;const P=h.context,N=P.gl,z=h.transform,j=h.depthModeForSublayer(0,s.DepthMode.ReadOnly),Y=s.StencilMode.disabled,J=h.colorModeForRenderPass(),te=z.projection.name==="globe",ee=[s.mercatorXfromLng(z.center.lng),s.mercatorYfromLat(z.center.lat)],ie=[];for(let K=0;K<p.length;K++){const ae=p[K],le=n.getTile(ae),xe=le.getBucket(a);if(!xe||xe.projection.name!==z.projection.name)continue;const Te=xe.programConfigurations.get(a.id),be=vl(a);te&&be.push("PROJECTION_GLOBE_VIEW");const Ae=h.useProgram("circle",Te,be),ke=xe.layoutVertexBuffer,Ne=xe.globeExtVertexBuffer,tt=xe.indexBuffer,Re=z.projection.createInversionMatrix(z,ae.canonical),We={programConfiguration:Te,program:Ae,layoutVertexBuffer:ke,globeExtVertexBuffer:Ne,indexBuffer:tt,uniformValues:Ia(h,ae,le,Re,ee,a),tile:le};if(M){const je=xe.segments.get();for(const et of je)ie.push({segments:new s.SegmentVector([et]),sortKey:et.sortKey,state:We})}else ie.push({segments:xe.segments,sortKey:0,state:We})}M&&ie.sort((K,ae)=>K.sortKey-ae.sortKey);const V={useDepthForOcclusion:!te};for(const K of ie){const{programConfiguration:ae,program:le,layoutVertexBuffer:xe,globeExtVertexBuffer:Te,indexBuffer:be,uniformValues:Ae,tile:ke}=K.state,Ne=K.segments;h.terrain&&h.terrain.setupElevationDraw(ke,le,V),h.prepareDrawProgram(P,le,ke.tileID.toUnwrapped()),le.draw(P,N.TRIANGLES,j,Y,J,s.CullFaceMode.disabled,Ae,a.id,xe,be,Ne,a.paint,z.zoom,ae,[Te])}},heatmap:function(h,n,a,p){if(a.paint.get("heatmap-opacity")!==0)if(h.renderPass==="offscreen"){const _=h.context,b=_.gl,I=s.StencilMode.disabled,M=new s.ColorMode([b.ONE,b.ONE],s.Color.transparent,[!0,!0,!0,!0]);(function(J,te,ee,ie){const V=J.gl,K=te.width*ie,ae=te.height*ie;J.activeTexture.set(V.TEXTURE1),J.viewport.set([0,0,K,ae]);let le=ee.heatmapFbo;if(!le||le&&(le.width!==K||le.height!==ae)){le&&le.destroy();const xe=V.createTexture();V.bindTexture(V.TEXTURE_2D,xe),V.texParameteri(V.TEXTURE_2D,V.TEXTURE_WRAP_S,V.CLAMP_TO_EDGE),V.texParameteri(V.TEXTURE_2D,V.TEXTURE_WRAP_T,V.CLAMP_TO_EDGE),V.texParameteri(V.TEXTURE_2D,V.TEXTURE_MIN_FILTER,V.LINEAR),V.texParameteri(V.TEXTURE_2D,V.TEXTURE_MAG_FILTER,V.LINEAR),le=ee.heatmapFbo=J.createFramebuffer(K,ae,!1),function(Te,be,Ae,ke,Ne,tt){const Re=Te.gl;Re.texImage2D(Re.TEXTURE_2D,0,Te.isWebGL2&&Te.extRenderToTextureHalfFloat?Re.RGBA16F:Re.RGBA,Ne,tt,0,Re.RGBA,Te.extRenderToTextureHalfFloat?Te.isWebGL2?Re.HALF_FLOAT:Te.extTextureHalfFloat.HALF_FLOAT_OES:Re.UNSIGNED_BYTE,null),ke.colorAttachment.set(Ae)}(J,0,xe,le,K,ae)}else V.bindTexture(V.TEXTURE_2D,le.colorAttachment.get()),J.bindFramebuffer.set(le.framebuffer)})(_,h,a,h.transform.projection.name==="globe"?.5:.25),_.clear({color:s.Color.transparent});const P=h.transform,N=P.projection.name==="globe",z=N?["PROJECTION_GLOBE_VIEW"]:null,j=N?s.CullFaceMode.frontCCW:s.CullFaceMode.disabled,Y=[s.mercatorXfromLng(P.center.lng),s.mercatorYfromLat(P.center.lat)];for(let J=0;J<p.length;J++){const te=p[J];if(n.hasRenderableParent(te))continue;const ee=n.getTile(te),ie=ee.getBucket(a);if(!ie||ie.projection.name!==P.projection.name)continue;const V=ie.programConfigurations.get(a.id),K=h.useProgram("heatmap",V,z),{zoom:ae}=h.transform;h.terrain&&h.terrain.setupElevationDraw(ee,K),h.prepareDrawProgram(_,K,te.toUnwrapped());const le=P.projection.createInversionMatrix(P,te.canonical);K.draw(_,b.TRIANGLES,s.DepthMode.disabled,I,M,j,_u(h,te,ee,le,Y,ae,a.paint.get("heatmap-intensity")),a.id,ie.layoutVertexBuffer,ie.indexBuffer,ie.segments,a.paint,h.transform.zoom,V,N?[ie.globeExtVertexBuffer]:null)}_.viewport.set([0,0,h.width,h.height])}else h.renderPass==="translucent"&&(h.context.setColorMode(h.colorModeForRenderPass()),function(_,b){const I=_.context,M=I.gl,P=b.heatmapFbo;if(!P)return;I.activeTexture.set(M.TEXTURE0),M.bindTexture(M.TEXTURE_2D,P.colorAttachment.get()),I.activeTexture.set(M.TEXTURE1);let N=b.colorRampTexture;N||(N=b.colorRampTexture=new s.Texture(I,b.colorRamp,M.RGBA)),N.bind(M.LINEAR,M.CLAMP_TO_EDGE),_.useProgram("heatmapTexture").draw(I,M.TRIANGLES,s.DepthMode.disabled,s.StencilMode.disabled,_.colorModeForRenderPass(),s.CullFaceMode.disabled,((z,j,Y,J)=>({u_image:0,u_color_ramp:1,u_opacity:j.paint.get("heatmap-opacity")}))(0,b),b.id,_.viewportBuffer,_.quadTriangleIndexBuffer,_.viewportSegments,b.paint,_.transform.zoom)}(h,a))},line:function(h,n,a,p){if(h.renderPass!=="translucent")return;const _=a.paint.get("line-opacity"),b=a.paint.get("line-width");if(_.constantOr(1)===0||b.constantOr(1)===0)return;const I=h.depthModeForSublayer(0,s.DepthMode.ReadOnly),M=h.colorModeForRenderPass(),P=h.terrain&&h.terrain.renderingToTexture?1:s.exported.devicePixelRatio,N=a.paint.get("line-dasharray"),z=N.constantOr(1),j=a.layout.get("line-cap"),Y=a.paint.get("line-pattern"),J=Y.constantOr(1),te=a.paint.get("line-gradient"),ee=J?"linePattern":"line",ie=h.context,V=ie.gl,K=(le=>{const xe=[];xs(le)&&xe.push("RENDER_LINE_DASH"),le.paint.get("line-gradient")&&xe.push("RENDER_LINE_GRADIENT");const Te=le.paint.get("line-trim-offset");Te[0]===0&&Te[1]===0||xe.push("RENDER_LINE_TRIM_OFFSET");const be=le.paint.get("line-pattern").constantOr(1),Ae=le.paint.get("line-opacity").constantOr(1)!==1;return!be&&Ae&&xe.push("RENDER_LINE_ALPHA_DISCARD"),xe})(a);let ae=K.includes("RENDER_LINE_ALPHA_DISCARD");h.terrain&&h.terrain.clipOrMaskOverlapStencilType()&&(ae=!1);for(const le of p){const xe=n.getTile(le);if(J&&!xe.patternsLoaded())continue;const Te=xe.getBucket(a);if(!Te)continue;h.prepareDrawTile();const be=Te.programConfigurations.get(a.id),Ae=h.useProgram(ee,be,K),ke=Y.constantOr(null);if(ke&&xe.imageAtlas){const Ze=xe.imageAtlas.patternPositions[ke.toString()];Ze&&be.setConstantPatternPositions(Ze)}const Ne=N.constantOr(null),tt=j.constantOr(null);if(!J&&Ne&&tt&&xe.lineAtlas){const Ze=xe.lineAtlas.getDash(Ne,tt);Ze&&be.setConstantPatternPositions(Ze)}let[Re,We]=a.paint.get("line-trim-offset");(tt==="round"||tt==="square")&&Re!==We&&(Re===0&&(Re-=1),We===1&&(We+=1));const je=h.terrain?le.projMatrix:null,et=J?Hs(h,xe,a,je,P):Tc(h,xe,a,je,Te.lineClipsArray.length,P,[Re,We]);if(te){const Ze=Te.gradients[a.id];let rt=Ze.texture;if(a.gradientVersion!==Ze.version){let Ke=256;if(a.stepInterpolant){const st=n.getSource().maxzoom,zt=le.canonical.z===st?Math.ceil(1<<h.transform.maxZoom-le.canonical.z):1;Ke=s.clamp(s.nextPowerOfTwo(Te.maxLineLength/s.EXTENT*1024*zt),256,ie.maxTextureSize)}Ze.gradient=s.renderColorRamp({expression:a.gradientExpression(),evaluationKey:"lineProgress",resolution:Ke,image:Ze.gradient||void 0,clips:Te.lineClipsArray}),Ze.texture?Ze.texture.update(Ze.gradient):Ze.texture=new s.Texture(ie,Ze.gradient,V.RGBA),Ze.version=a.gradientVersion,rt=Ze.texture}ie.activeTexture.set(V.TEXTURE1),rt.bind(a.stepInterpolant?V.NEAREST:V.LINEAR,V.CLAMP_TO_EDGE)}z&&(ie.activeTexture.set(V.TEXTURE0),xe.lineAtlasTexture.bind(V.LINEAR,V.REPEAT),be.updatePaintBuffers()),J&&(ie.activeTexture.set(V.TEXTURE0),xe.imageAtlasTexture.bind(V.LINEAR,V.CLAMP_TO_EDGE),be.updatePaintBuffers()),h.prepareDrawProgram(ie,Ae,le.toUnwrapped());const ze=Ze=>{Ae.draw(ie,V.TRIANGLES,I,Ze,M,s.CullFaceMode.disabled,et,a.id,Te.layoutVertexBuffer,Te.indexBuffer,Te.segments,a.paint,h.transform.zoom,be,[Te.layoutVertexBuffer2])};if(ae){const Ze=h.stencilModeForClipping(le).ref;Ze===0&&h.terrain&&ie.clear({stencil:0});const rt={func:V.EQUAL,mask:255};et.u_alpha_discard_threshold=.8,ze(new s.StencilMode(rt,Ze,255,V.KEEP,V.KEEP,V.INVERT)),et.u_alpha_discard_threshold=0,ze(new s.StencilMode(rt,Ze,255,V.KEEP,V.KEEP,V.KEEP))}else ze(h.stencilModeForClipping(le))}ae&&(h.resetStencilClippingMasks(),h.terrain&&ie.clear({stencil:0}))},fill:function(h,n,a,p){const _=a.paint.get("fill-color"),b=a.paint.get("fill-opacity");if(b.constantOr(1)===0)return;const I=h.colorModeForRenderPass(),M=a.paint.get("fill-pattern"),P=h.opaquePassEnabledForLayer()&&!M.constantOr(1)&&_.constantOr(s.Color.transparent).a===1&&b.constantOr(0)===1?"opaque":"translucent";if(h.renderPass===P){const N=h.depthModeForSublayer(1,h.renderPass==="opaque"?s.DepthMode.ReadWrite:s.DepthMode.ReadOnly);l(h,n,a,p,N,I,!1)}if(h.renderPass==="translucent"&&a.paint.get("fill-antialias")){const N=h.depthModeForSublayer(a.getPaintProperty("fill-outline-color")?2:0,s.DepthMode.ReadOnly);l(h,n,a,p,N,I,!0)}},"fill-extrusion":function(h,n,a,p){const _=a.paint.get("fill-extrusion-opacity");if(_!==0&&h.renderPass==="translucent"){const b=new s.DepthMode(h.context.gl.LEQUAL,s.DepthMode.ReadWrite,h.depthRangeFor3D);if(_!==1||a.paint.get("fill-extrusion-pattern").constantOr(1))c(h,n,a,p,b,s.StencilMode.disabled,s.ColorMode.disabled),c(h,n,a,p,b,h.stencilModeFor3D(),h.colorModeForRenderPass()),h.resetStencilClippingMasks();else{const I=h.colorModeForRenderPass();c(h,n,a,p,b,s.StencilMode.disabled,I)}}},hillshade:function(h,n,a,p){if(h.renderPass!=="offscreen"&&h.renderPass!=="translucent")return;const _=h.context,b=h.depthModeForSublayer(0,s.DepthMode.ReadOnly),I=h.colorModeForRenderPass(),M=h.terrain&&h.terrain.renderingToTexture,[P,N]=h.renderPass!=="translucent"||M?[{},p]:h.stencilConfigForOverlap(p);for(const z of N){const j=n.getTile(z);if(j.needsHillshadePrepare&&h.renderPass==="offscreen")ar(h,j,a,b,s.StencilMode.disabled,I);else if(h.renderPass==="translucent"){const Y=M&&h.terrain?h.terrain.stencilModeForRTTOverlap(z):P[z.overscaledZ];pu(h,z,j,a,b,Y,I)}}_.viewport.set([0,0,h.width,h.height]),h.resetStencilClippingMasks()},raster:function(h,n,a,p,_,b){if(h.renderPass!=="translucent"||a.paint.get("raster-opacity")===0||!p.length)return;const I=h.context,M=I.gl,P=n.getSource(),N=h.useProgram("raster"),z=h.colorModeForRenderPass(),j=h.terrain&&h.terrain.renderingToTexture,[Y,J]=P instanceof li||j?[{},p]:h.stencilConfigForOverlap(p),te=J[J.length-1].overscaledZ,ee=!h.options.moving;for(const ie of J){const V=j?s.DepthMode.disabled:h.depthModeForSublayer(ie.overscaledZ-te,a.paint.get("raster-opacity")===1?s.DepthMode.ReadWrite:s.DepthMode.ReadOnly,M.LESS),K=ie.toUnwrapped(),ae=n.getTile(ie);if(j&&(!ae||!ae.hasData()))continue;const le=j?ie.projMatrix:h.transform.calculateProjMatrix(K,ee),xe=h.terrain&&j?h.terrain.stencilModeForRTTOverlap(ie):Y[ie.overscaledZ],Te=b?0:a.paint.get("raster-fade-duration");ae.registerFadeDuration(Te);const be=n.findLoadedParent(ie,0),Ae=Hn(ae,be,n,h.transform,Te);let ke,Ne;h.terrain&&h.terrain.prepareDrawTile();const tt=a.paint.get("raster-resampling")==="nearest"?M.NEAREST:M.LINEAR;I.activeTexture.set(M.TEXTURE0),ae.texture.bind(tt,M.CLAMP_TO_EDGE),I.activeTexture.set(M.TEXTURE1),be?(be.texture.bind(tt,M.CLAMP_TO_EDGE),ke=Math.pow(2,be.tileID.overscaledZ-ae.tileID.overscaledZ),Ne=[ae.tileID.canonical.x*ke%1,ae.tileID.canonical.y*ke%1]):ae.texture.bind(tt,M.CLAMP_TO_EDGE),ae.texture.useMipmap&&I.extTextureFilterAnisotropic&&h.transform.pitch>20&&M.texParameterf(M.TEXTURE_2D,I.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,I.extTextureFilterAnisotropicMax);const Re=Aa(le,Ne||[0,0],ke||1,Ae,a,P instanceof li?P.perspectiveTransform:[0,0]);if(h.prepareDrawProgram(I,N,K),P instanceof li)P.boundsBuffer&&P.boundsSegments&&N.draw(I,M.TRIANGLES,V,s.StencilMode.disabled,z,s.CullFaceMode.disabled,Re,a.id,P.boundsBuffer,h.quadTriangleIndexBuffer,P.boundsSegments);else{const{tileBoundsBuffer:We,tileBoundsIndexBuffer:je,tileBoundsSegments:et}=h.getTileBoundsBuffers(ae);N.draw(I,M.TRIANGLES,V,xe,z,s.CullFaceMode.disabled,Re,a.id,We,je,et)}}h.resetStencilClippingMasks()},background:function(h,n,a,p){const _=a.paint.get("background-color"),b=a.paint.get("background-opacity");if(b===0)return;const I=h.context,M=I.gl,P=h.transform,N=P.tileSize,z=a.paint.get("background-pattern");if(h.isPatternMissing(z))return;const j=!z&&_.a===1&&b===1&&h.opaquePassEnabledForLayer()?"opaque":"translucent";if(h.renderPass!==j)return;const Y=s.StencilMode.disabled,J=h.depthModeForSublayer(0,j==="opaque"?s.DepthMode.ReadWrite:s.DepthMode.ReadOnly),te=h.colorModeForRenderPass(),ee=h.useProgram(z?"backgroundPattern":"background");let ie,V=p;V||(ie=h.getBackgroundTiles(),V=Object.values(ie).map(K=>K.tileID)),z&&(I.activeTexture.set(M.TEXTURE0),h.imageManager.bind(h.context));for(const K of V){const ae=K.toUnwrapped(),le=p?K.projMatrix:h.transform.calculateProjMatrix(ae);h.prepareDrawTile();const xe=n?n.getTile(K):ie?ie[K.key]:new s.Tile(K,N,P.zoom,h),Te=z?vu(le,b,h,z,{tileID:K,tileSize:N}):La(le,b,_);h.prepareDrawProgram(I,ee,ae);const{tileBoundsBuffer:be,tileBoundsIndexBuffer:Ae,tileBoundsSegments:ke}=h.getTileBoundsBuffers(xe);ee.draw(I,M.TRIANGLES,J,Y,te,s.CullFaceMode.disabled,Te,a.id,be,Ae,ke)}},sky:function(h,n,a){const p=h.transform,_=p.projection.name==="mercator"||p.projection.name==="globe"?1:s.smoothstep(7,8,p.zoom),b=a.paint.get("sky-opacity")*_;if(b===0)return;const I=h.context,M=a.paint.get("sky-type"),P=new s.DepthMode(I.gl.LEQUAL,s.DepthMode.ReadOnly,[0,1]),N=h.frameCounter/1e3%1;M==="atmosphere"?h.renderPass==="offscreen"?a.needsSkyboxCapture(h)&&(function(z,j,Y,J){const te=z.context,ee=te.gl;let ie=j.skyboxFbo;if(!ie){ie=j.skyboxFbo=te.createFramebuffer(32,32,!1),j.skyboxGeometry=new ei(te),j.skyboxTexture=te.gl.createTexture(),ee.bindTexture(ee.TEXTURE_CUBE_MAP,j.skyboxTexture),ee.texParameteri(ee.TEXTURE_CUBE_MAP,ee.TEXTURE_WRAP_S,ee.CLAMP_TO_EDGE),ee.texParameteri(ee.TEXTURE_CUBE_MAP,ee.TEXTURE_WRAP_T,ee.CLAMP_TO_EDGE),ee.texParameteri(ee.TEXTURE_CUBE_MAP,ee.TEXTURE_MIN_FILTER,ee.LINEAR),ee.texParameteri(ee.TEXTURE_CUBE_MAP,ee.TEXTURE_MAG_FILTER,ee.LINEAR);for(let le=0;le<6;++le)ee.texImage2D(ee.TEXTURE_CUBE_MAP_POSITIVE_X+le,0,ee.RGBA,32,32,0,ee.RGBA,ee.UNSIGNED_BYTE,null)}te.bindFramebuffer.set(ie.framebuffer),te.viewport.set([0,0,32,32]);const V=j.getCenter(z,!0),K=z.useProgram("skyboxCapture"),ae=new Float64Array(16);s.identity(ae),s.rotateY(ae,ae,.5*-Math.PI),yi(te,j,K,ae,V,0),s.identity(ae),s.rotateY(ae,ae,.5*Math.PI),yi(te,j,K,ae,V,1),s.identity(ae),s.rotateX(ae,ae,.5*-Math.PI),yi(te,j,K,ae,V,2),s.identity(ae),s.rotateX(ae,ae,.5*Math.PI),yi(te,j,K,ae,V,3),s.identity(ae),yi(te,j,K,ae,V,4),s.identity(ae),s.rotateY(ae,ae,Math.PI),yi(te,j,K,ae,V,5),te.viewport.set([0,0,z.width,z.height])}(h,a),a.markSkyboxValid(h)):h.renderPass==="sky"&&function(z,j,Y,J,te){const ee=z.context,ie=ee.gl,V=z.transform,K=z.useProgram("skybox");ee.activeTexture.set(ie.TEXTURE0),ie.bindTexture(ie.TEXTURE_CUBE_MAP,j.skyboxTexture);const ae=((le,xe,Te,be,Ae)=>({u_matrix:le,u_sun_direction:xe,u_cubemap:0,u_opacity:be,u_temporal_offset:Ae}))(V.skyboxMatrix,j.getCenter(z,!1),0,J,te);z.prepareDrawProgram(ee,K),K.draw(ee,ie.TRIANGLES,Y,s.StencilMode.disabled,z.colorModeForRenderPass(),s.CullFaceMode.backCW,ae,"skybox",j.skyboxGeometry.vertexBuffer,j.skyboxGeometry.indexBuffer,j.skyboxGeometry.segment)}(h,a,P,b,N):M==="gradient"&&h.renderPass==="sky"&&function(z,j,Y,J,te){const ee=z.context,ie=ee.gl,V=z.transform,K=z.useProgram("skyboxGradient");j.skyboxGeometry||(j.skyboxGeometry=new ei(ee)),ee.activeTexture.set(ie.TEXTURE0);let ae=j.colorRampTexture;ae||(ae=j.colorRampTexture=new s.Texture(ee,j.colorRamp,ie.RGBA)),ae.bind(ie.LINEAR,ie.CLAMP_TO_EDGE);const le=((xe,Te,be,Ae,ke)=>({u_matrix:xe,u_color_ramp:0,u_center_direction:Te,u_radius:s.degToRad(be),u_opacity:Ae,u_temporal_offset:ke}))(V.skyboxMatrix,j.getCenter(z,!1),j.paint.get("sky-gradient-radius"),J,te);z.prepareDrawProgram(ee,K),K.draw(ee,ie.TRIANGLES,Y,s.StencilMode.disabled,z.colorModeForRenderPass(),s.CullFaceMode.backCW,le,"skyboxGradient",j.skyboxGeometry.vertexBuffer,j.skyboxGeometry.indexBuffer,j.skyboxGeometry.segment)}(h,a,P,b,N)},debug:function(h,n,a){for(let p=0;p<a.length;p++)Ee(h,n,a[p])},custom:function(h,n,a,p){const _=h.context,b=a.implementation;if(!h.transform.projection.unsupportedLayers||!h.transform.projection.unsupportedLayers.includes("custom")||h.terrain&&(h.terrain.renderingToTexture||h.renderPass==="offscreen")&&a.isLayerDraped()){if(h.renderPass==="offscreen"){const I=b.prerender;if(I){if(h.setCustomLayerDefaults(),_.setColorMode(h.colorModeForRenderPass()),h.transform.projection.name==="globe"){const M=h.transform.pointMerc;I.call(b,_.gl,h.transform.customLayerMatrix(),h.transform.getProjection(),h.transform.globeToMercatorMatrix(),s.globeToMercatorTransition(h.transform.zoom),[M.x,M.y],h.transform.pixelsPerMeterRatio)}else I.call(b,_.gl,h.transform.customLayerMatrix());_.setDirty(),h.setBaseState()}}else if(h.renderPass==="translucent"){if(h.terrain&&h.terrain.renderingToTexture){const M=b.renderToTile;if(M){const P=p[0].canonical,N=new s.MercatorCoordinate(P.x+p[0].wrap*(1<<P.z),P.y,P.z);_.setDepthMode(s.DepthMode.disabled),_.setStencilMode(s.StencilMode.disabled),_.setColorMode(h.colorModeForRenderPass()),h.setCustomLayerDefaults(),M.call(b,_.gl,N),_.setDirty(),h.setBaseState()}return}h.setCustomLayerDefaults(),_.setColorMode(h.colorModeForRenderPass()),_.setStencilMode(s.StencilMode.disabled);const I=b.renderingMode==="3d"?new s.DepthMode(h.context.gl.LEQUAL,s.DepthMode.ReadWrite,h.depthRangeFor3D):h.depthModeForSublayer(0,s.DepthMode.ReadOnly);if(_.setDepthMode(I),h.transform.projection.name==="globe"){const M=h.transform.pointMerc;b.render(_.gl,h.transform.customLayerMatrix(),h.transform.getProjection(),h.transform.globeToMercatorMatrix(),s.globeToMercatorTransition(h.transform.zoom),[M.x,M.y],h.transform.pixelsPerMeterRatio)}else b.render(_.gl,h.transform.customLayerMatrix());_.setDirty(),h.setBaseState(),_.bindFramebuffer.set(null)}}else s.warnOnce("Custom layers are not yet supported with this projection. Use mercator or globe to enable usage of custom layers.")}};class Vn{constructor(n,a,p=!1){this.context=new ot(n,p),this.transform=a,this._tileTextures={},this.frameCopies=[],this.loadTimeStamps=[],this.setup(),this.numSublayers=s.SourceCache.maxUnderzooming+s.SourceCache.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.deferredRenderGpuTimeQueries=[],this.gpuTimers={},this.frameCounter=0,this._backgroundTiles={}}updateTerrain(n,a){const p=!!n&&!!n.terrain&&this.transform.projection.supportsTerrain;if(!(p||this._terrain&&this._terrain.enabled))return;this._terrain||(this._terrain=new Sa(this,n));const _=this._terrain;this.transform.elevation=p?_:null,_.update(n,this.transform,a)}_updateFog(n){const a=n.fog;if(!a||this.transform.projection.name==="globe"||a.getOpacity(this.transform.pitch)<1||a.properties.get("horizon-blend")<.03)return void(this.transform.fogCullDistSq=null);const[p,_]=a.getFovAdjustedRange(this.transform._fov);if(p>_)return void(this.transform.fogCullDistSq=null);const b=p+.78*(_-p);this.transform.fogCullDistSq=b*b}get terrain(){return this.transform._terrainEnabled()&&this._terrain&&this._terrain.enabled?this._terrain:null}resize(n,a){if(this.width=n*s.exported.devicePixelRatio,this.height=a*s.exported.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const p of this.style.order)this.style._layers[p].resize()}setup(){const n=this.context,a=new s.StructArrayLayout2i4;a.emplaceBack(0,0),a.emplaceBack(s.EXTENT,0),a.emplaceBack(0,s.EXTENT),a.emplaceBack(s.EXTENT,s.EXTENT),this.tileExtentBuffer=n.createVertexBuffer(a,s.posAttributes.members),this.tileExtentSegments=s.SegmentVector.simpleSegment(0,0,4,2);const p=new s.StructArrayLayout2i4;p.emplaceBack(0,0),p.emplaceBack(s.EXTENT,0),p.emplaceBack(0,s.EXTENT),p.emplaceBack(s.EXTENT,s.EXTENT),this.debugBuffer=n.createVertexBuffer(p,s.posAttributes.members),this.debugSegments=s.SegmentVector.simpleSegment(0,0,4,5);const _=new s.StructArrayLayout2i4;_.emplaceBack(-1,-1),_.emplaceBack(1,-1),_.emplaceBack(-1,1),_.emplaceBack(1,1),this.viewportBuffer=n.createVertexBuffer(_,s.posAttributes.members),this.viewportSegments=s.SegmentVector.simpleSegment(0,0,4,2);const b=new s.StructArrayLayout4i8;b.emplaceBack(0,0,0,0),b.emplaceBack(s.EXTENT,0,s.EXTENT,0),b.emplaceBack(0,s.EXTENT,0,s.EXTENT),b.emplaceBack(s.EXTENT,s.EXTENT,s.EXTENT,s.EXTENT),this.mercatorBoundsBuffer=n.createVertexBuffer(b,s.boundsAttributes.members),this.mercatorBoundsSegments=s.SegmentVector.simpleSegment(0,0,4,2);const I=new s.StructArrayLayout3ui6;I.emplaceBack(0,1,2),I.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=n.createIndexBuffer(I);const M=new s.StructArrayLayout1ui2;for(const N of[0,1,3,2,0])M.emplaceBack(N);this.debugIndexBuffer=n.createIndexBuffer(M),this.emptyTexture=new s.Texture(n,new s.RGBAImage({width:1,height:1},Uint8Array.of(0,0,0,0)),n.gl.RGBA),this.identityMat=s.create();const P=this.context.gl;this.stencilClearMode=new s.StencilMode({func:P.ALWAYS,mask:0},0,255,P.ZERO,P.ZERO,P.ZERO),this.loadTimeStamps.push(s.window.performance.now()),this.atmosphereBuffer=new Fn(this.context)}getMercatorTileBoundsBuffers(){return{tileBoundsBuffer:this.mercatorBoundsBuffer,tileBoundsIndexBuffer:this.quadTriangleIndexBuffer,tileBoundsSegments:this.mercatorBoundsSegments}}getTileBoundsBuffers(n){return n._makeTileBoundsBuffers(this.context,this.transform.projection),n._tileBoundsBuffer?{tileBoundsBuffer:n._tileBoundsBuffer,tileBoundsIndexBuffer:n._tileBoundsIndexBuffer,tileBoundsSegments:n._tileBoundsSegments}:this.getMercatorTileBoundsBuffers()}clearStencil(){const n=this.context,a=n.gl;this.nextStencilID=1,this.currentStencilSource=void 0,this._tileClippingMaskIDs={},this.useProgram("clippingMask").draw(n,a.TRIANGLES,s.DepthMode.disabled,this.stencilClearMode,s.ColorMode.disabled,s.CullFaceMode.disabled,ys(this.identityMat),"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}resetStencilClippingMasks(){this.terrain||(this.currentStencilSource=void 0,this._tileClippingMaskIDs={})}_renderTileClippingMasks(n,a,p){if(!a||this.currentStencilSource===a.id||!n.isTileClipped()||!p||p.length===0)return;if(this._tileClippingMaskIDs&&!this.terrain){let M=!1;for(const P of p)if(this._tileClippingMaskIDs[P.key]===void 0){M=!0;break}if(!M)return}this.currentStencilSource=a.id;const _=this.context,b=_.gl;this.nextStencilID+p.length>256&&this.clearStencil(),_.setColorMode(s.ColorMode.disabled),_.setDepthMode(s.DepthMode.disabled);const I=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(const M of p){const P=a.getTile(M),N=this._tileClippingMaskIDs[M.key]=this.nextStencilID++,{tileBoundsBuffer:z,tileBoundsIndexBuffer:j,tileBoundsSegments:Y}=this.getTileBoundsBuffers(P);I.draw(_,b.TRIANGLES,s.DepthMode.disabled,new s.StencilMode({func:b.ALWAYS,mask:0},N,255,b.KEEP,b.KEEP,b.REPLACE),s.ColorMode.disabled,s.CullFaceMode.disabled,ys(M.projMatrix),"$clipping",z,j,Y)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const n=this.nextStencilID++,a=this.context.gl;return new s.StencilMode({func:a.NOTEQUAL,mask:255},n,255,a.KEEP,a.KEEP,a.REPLACE)}stencilModeForClipping(n){if(this.terrain)return this.terrain.stencilModeForRTTOverlap(n);const a=this.context.gl;return new s.StencilMode({func:a.EQUAL,mask:255},this._tileClippingMaskIDs[n.key],0,a.KEEP,a.KEEP,a.REPLACE)}stencilConfigForOverlap(n){const a=this.context.gl,p=n.sort((I,M)=>M.overscaledZ-I.overscaledZ),_=p[p.length-1].overscaledZ,b=p[0].overscaledZ-_+1;if(b>1){this.currentStencilSource=void 0,this.nextStencilID+b>256&&this.clearStencil();const I={};for(let M=0;M<b;M++)I[M+_]=new s.StencilMode({func:a.GEQUAL,mask:255},M+this.nextStencilID,255,a.KEEP,a.KEEP,a.REPLACE);return this.nextStencilID+=b,[I,p]}return[{[_]:s.StencilMode.disabled},p]}colorModeForRenderPass(){const n=this.context.gl;return this._showOverdrawInspector?new s.ColorMode([n.CONSTANT_COLOR,n.ONE],new s.Color(.125,.125,.125,0),[!0,!0,!0,!0]):this.renderPass==="opaque"?s.ColorMode.unblended:s.ColorMode.alphaBlended}depthModeForSublayer(n,a,p){if(!this.opaquePassEnabledForLayer())return s.DepthMode.disabled;const _=1-((1+this.currentLayer)*this.numSublayers+n)*this.depthEpsilon;return new s.DepthMode(p||this.context.gl.LEQUAL,a,[_,_])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(n,a){this.style=n,this.options=a,this.imageManager=n.imageManager,this.glyphManager=n.glyphManager,this.symbolFadeChange=n.placement.symbolFadeChange(s.exported.now()),this.imageManager.beginFrame();const p=this.style.order,_=this.style._sourceCaches;for(const N in _){const z=_[N];z.used&&z.prepare(this.context)}const b={},I={},M={};for(const N in _){const z=_[N];b[N]=z.getVisibleCoordinates(),I[N]=b[N].slice().reverse(),M[N]=z.getVisibleCoordinates(!0).reverse()}this.opaquePassCutoff=1/0;for(let N=0;N<p.length;N++)if(this.style._layers[p[N]].is3D()){this.opaquePassCutoff=N;break}if(this.terrain&&(this.terrain.updateTileBinding(M),this.opaquePassCutoff=0),this.transform.projection.name!=="globe"||this.globeSharedBuffers||(this.globeSharedBuffers=new s.GlobeSharedBuffers(this.context)),!s.isMapAuthenticated(this.context.gl))return;this.renderPass="offscreen";for(const N of p){const z=this.style._layers[N],j=n._getLayerSourceCache(z);if(!z.hasOffscreenPass()||z.isHidden(this.transform.zoom))continue;const Y=j?I[j.id]:void 0;(z.type==="custom"||z.isSky()||Y&&Y.length)&&this.renderLayer(this,j,z,Y)}this.depthRangeFor3D=[0,1-(n.order.length+2)*this.numSublayers*this.depthEpsilon];const P=this.terrain;if(P&&(this.style.hasSymbolLayers()||this.style.hasCircleLayers())&&P.drawDepth(),this.context.bindFramebuffer.set(null),this.context.viewport.set([0,0,this.width,this.height]),this.context.clear({color:a.showOverdrawInspector?s.Color.black:s.Color.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=a.showOverdrawInspector,this.renderPass="opaque",!this.terrain)for(this.currentLayer=p.length-1;this.currentLayer>=0;this.currentLayer--){const N=this.style._layers[p[this.currentLayer]],z=n._getLayerSourceCache(N);if(N.isSky())continue;const j=z?I[z.id]:void 0;this._renderTileClippingMasks(N,z,j),this.renderLayer(this,z,N,j)}if(this.style.fog&&this.transform.projection.supportsFog&&function(N,z){const j=N.context,Y=j.gl,J=N.transform,te=new s.DepthMode(Y.LEQUAL,s.DepthMode.ReadOnly,[0,1]),ee=N.useProgram("globeAtmosphere",null,J.projection.name==="globe"?["PROJECTION_GLOBE_VIEW","FOG"]:["FOG"]),ie=s.globeToMercatorTransition(J.zoom),V=z.properties.get("color").toArray01(),K=z.properties.get("high-color").toArray01(),ae=z.properties.get("space-color").toArray01PremultipliedAlpha(),le=s.identity$1([]);s.rotateY$1(le,le,-s.degToRad(J._center.lng)),s.rotateX$1(le,le,s.degToRad(J._center.lat)),s.rotateZ$1(le,le,J.angle),s.rotateX$1(le,le,-J._pitch);const xe=s.fromQuat(new Float32Array(16),le),Te=s.mapValue(z.properties.get("star-intensity"),0,1,0,.25),be=5e-4,Ae=s.mapValue(z.properties.get("horizon-blend"),0,1,be,.25),ke=s.globeUseCustomAntiAliasing(N,j,J)&&Ae===be?J.worldSize/(2*Math.PI*1.025)-1:J.globeRadius,Ne=N.frameCounter/1e3%1,tt=s.length(J.globeCenterInViewSpace),Re=Math.sqrt(Math.pow(tt,2)-Math.pow(ke,2)),We=Math.acos(Re/tt),je=((ze,Ze,rt,Ke,st,zt,Kt,Pt,jt,mi,di,Ot,Di,Bi)=>({u_frustum_tl:ze,u_frustum_tr:Ze,u_frustum_br:rt,u_frustum_bl:Ke,u_horizon:st,u_transition:zt,u_fadeout_range:Kt,u_color:Pt,u_high_color:jt,u_space_color:mi,u_star_intensity:di,u_star_size:5*s.exported.devicePixelRatio,u_star_density:0,u_temporal_offset:Ot,u_horizon_angle:Di,u_rotation_matrix:Bi}))(J.frustumCorners.TL,J.frustumCorners.TR,J.frustumCorners.BR,J.frustumCorners.BL,J.frustumCorners.horizon,ie,Ae,V,K,ae,Te,Ne,We,xe);N.prepareDrawProgram(j,ee);const et=N.atmosphereBuffer;et&&ee.draw(j,Y.TRIANGLES,te,s.StencilMode.disabled,s.ColorMode.alphaBlended,s.CullFaceMode.backCW,je,"skybox",et.vertexBuffer,et.indexBuffer,et.segments)}(this,this.style.fog),this.renderPass="sky",(s.globeToMercatorTransition(this.transform.zoom)>0||this.transform.projection.name!=="globe")&&this.transform.isHorizonVisible())for(this.currentLayer=0;this.currentLayer<p.length;this.currentLayer++){const N=this.style._layers[p[this.currentLayer]],z=n._getLayerSourceCache(N);N.isSky()&&this.renderLayer(this,z,N,z?I[z.id]:void 0)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<p.length;){const N=this.style._layers[p[this.currentLayer]],z=n._getLayerSourceCache(N);if(N.isSky()){++this.currentLayer;continue}if(this.terrain&&this.style.isLayerDraped(N)){if(N.isHidden(this.transform.zoom)){++this.currentLayer;continue}this.currentLayer=this.terrain.renderBatch(this.currentLayer);continue}const j=z?(N.type==="symbol"?M:I)[z.id]:void 0;this._renderTileClippingMasks(N,z,z?b[z.id]:void 0),this.renderLayer(this,z,N,j),++this.currentLayer}if(this.terrain&&this.terrain.postRender(),this.options.showTileBoundaries||this.options.showQueryGeometry||this.options.showTileAABBs){let N=null;s.values(this.style._layers).forEach(z=>{const j=n._getLayerSourceCache(z);j&&!z.isHidden(this.transform.zoom)&&(!N||N.getSource().maxzoom<j.getSource().maxzoom)&&(N=j)}),N&&this.options.showTileBoundaries&&bn.debug(this,N,N.getVisibleCoordinates())}this.options.showPadding&&function(N){const z=N.transform.padding;Me(N,N.transform.height-(z.top||0),3,S),Me(N,z.bottom||0,3,R),Xe(N,z.left||0,3,F),Xe(N,N.transform.width-(z.right||0),3,q);const j=N.transform.centerPoint;(function(Y,J,te,ee){pt(Y,J-1,te-10,2,20,ee),pt(Y,J-10,te-1,20,2,ee)})(N,j.x,N.transform.height-j.y,Q)}(this),this.context.setDefault(),this.frameCounter=(this.frameCounter+1)%Number.MAX_SAFE_INTEGER,this.tileLoaded&&this.options.speedIndexTiming&&(this.loadTimeStamps.push(s.window.performance.now()),this.saveCanvasCopy())}renderLayer(n,a,p,_){p.isHidden(this.transform.zoom)||(p.type==="background"||p.type==="sky"||p.type==="custom"||_&&_.length)&&(this.id=p.id,this.gpuTimingStart(p),(!n.transform.projection.unsupportedLayers||!n.transform.projection.unsupportedLayers.includes(p.type)||n.terrain&&p.type==="custom")&&bn[p.type](n,a,p,_,this.style.placement.variableOffsets,this.options.isInitialLoad),this.gpuTimingEnd())}gpuTimingStart(n){if(!this.options.gpuTiming)return;const a=this.context.extTimerQuery;let p=this.gpuTimers[n.id];p||(p=this.gpuTimers[n.id]={calls:0,cpuTime:0,query:a.createQueryEXT()}),p.calls++,a.beginQueryEXT(a.TIME_ELAPSED_EXT,p.query)}gpuTimingDeferredRenderStart(){if(this.options.gpuTimingDeferredRender){const n=this.context.extTimerQuery,a=n.createQueryEXT();this.deferredRenderGpuTimeQueries.push(a),n.beginQueryEXT(n.TIME_ELAPSED_EXT,a)}}gpuTimingDeferredRenderEnd(){if(!this.options.gpuTimingDeferredRender)return;const n=this.context.extTimerQuery;n.endQueryEXT(n.TIME_ELAPSED_EXT)}gpuTimingEnd(){if(!this.options.gpuTiming)return;const n=this.context.extTimerQuery;n.endQueryEXT(n.TIME_ELAPSED_EXT)}collectGpuTimers(){const n=this.gpuTimers;return this.gpuTimers={},n}collectDeferredRenderGpuQueries(){const n=this.deferredRenderGpuTimeQueries;return this.deferredRenderGpuTimeQueries=[],n}queryGpuTimers(n){const a={};for(const p in n){const _=n[p],b=this.context.extTimerQuery,I=b.getQueryObjectEXT(_.query,b.QUERY_RESULT_EXT)/1e6;b.deleteQueryEXT(_.query),a[p]=I}return a}queryGpuTimeDeferredRender(n){if(!this.options.gpuTimingDeferredRender)return 0;const a=this.context.extTimerQuery;let p=0;for(const _ of n)p+=a.getQueryObjectEXT(_,a.QUERY_RESULT_EXT)/1e6,a.deleteQueryEXT(_);return p}translatePosMatrix(n,a,p,_,b){if(!p[0]&&!p[1])return n;const I=b?_==="map"?this.transform.angle:0:_==="viewport"?-this.transform.angle:0;if(I){const N=Math.sin(I),z=Math.cos(I);p=[p[0]*z-p[1]*N,p[0]*N+p[1]*z]}const M=[b?p[0]:wi(a,p[0],this.transform.zoom),b?p[1]:wi(a,p[1],this.transform.zoom),0],P=new Float32Array(16);return s.translate(P,n,M),P}saveTileTexture(n){const a=this._tileTextures[n.size[0]];a?a.push(n):this._tileTextures[n.size[0]]=[n]}getTileTexture(n){const a=this._tileTextures[n];return a&&a.length>0?a.pop():null}isPatternMissing(n){return n===null||n!==void 0&&!this.imageManager.getPattern(n.toString())}terrainRenderModeElevated(){return this.style&&!!this.style.getTerrain()&&!!this.terrain&&!this.terrain.renderingToTexture}currentGlobalDefines(){const n=this.terrain&&this.terrain.renderingToTexture,a=this.terrain&&this.terrain.exaggeration()===0,p=this.style&&this.style.fog,_=[];return this.terrainRenderModeElevated()&&_.push("TERRAIN"),this.transform.projection.name==="globe"&&_.push("GLOBE"),a&&_.push("ZERO_EXAGGERATION"),p&&!n&&p.getOpacity(this.transform.pitch)!==0&&_.push("FOG"),n&&_.push("RENDER_TO_TEXTURE"),this._showOverdrawInspector&&_.push("OVERDRAW_INSPECTOR"),_}useProgram(n,a,p){this.cache=this.cache||{};const _=p||[],b=this.currentGlobalDefines().concat(_),I=bi.cacheKey(dl[n],n,b,a);return this.cache[I]||(this.cache[I]=new bi(this.context,n,dl[n],a,bl[n],b)),this.cache[I]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.frontFace.setDefault(),this.context.cullFaceSide.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){const n=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(n.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=s.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new s.Texture(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this._terrain&&this._terrain.destroy(),this.globeSharedBuffers&&this.globeSharedBuffers.destroy(),this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.atmosphereBuffer&&this.atmosphereBuffer.destroy()}prepareDrawTile(){this.terrain&&this.terrain.prepareDrawTile()}prepareDrawProgram(n,a,p){if(this.terrain&&this.terrain.renderingToTexture)return;const _=this.style.fog;if(_){const b=_.getOpacity(this.transform.pitch),I=((M,P,N,z,j,Y,J,te,ee,ie,V)=>{const K=M.transform,ae=P.properties.get("color").toArray01();ae[3]=z;const le=M.frameCounter/1e3%1;return{u_fog_matrix:N?K.calculateFogTileMatrix(N):M.identityMat,u_fog_range:P.getFovAdjustedRange(K._fov),u_fog_color:ae,u_fog_horizon_blend:P.properties.get("horizon-blend"),u_fog_temporal_offset:le,u_frustum_tl:j,u_frustum_tr:Y,u_frustum_br:J,u_frustum_bl:te,u_globe_pos:ee,u_globe_radius:ie,u_viewport:V,u_globe_transition:s.globeToMercatorTransition(K.zoom),u_is_globe:+(K.projection.name==="globe")}})(this,_,p,b,this.transform.frustumCorners.TL,this.transform.frustumCorners.TR,this.transform.frustumCorners.BR,this.transform.frustumCorners.BL,this.transform.globeCenterInViewSpace,this.transform.globeRadius,[this.transform.width*s.exported.devicePixelRatio,this.transform.height*s.exported.devicePixelRatio]);a.setFogUniformValues(n,I)}}setTileLoadedFlag(n){this.tileLoaded=n}saveCanvasCopy(){const n=this.canvasCopy();n&&(this.frameCopies.push(n),this.tileLoaded=!1)}canvasCopy(){const n=this.context.gl,a=n.createTexture();return n.bindTexture(n.TEXTURE_2D,a),n.copyTexImage2D(n.TEXTURE_2D,0,n.RGBA,0,0,n.drawingBufferWidth,n.drawingBufferHeight,0),a}getCanvasCopiesAndTimestamps(){return{canvasCopies:this.frameCopies,timeStamps:this.loadTimeStamps}}averageElevationNeedsEasing(){if(!this.transform._elevation)return!1;const n=this.style&&this.style.fog;return!!n&&n.getOpacity(this.transform.pitch)!==0}getBackgroundTiles(){const n=this._backgroundTiles,a=this._backgroundTiles={},p=this.transform.coveringTiles({tileSize:512});for(const _ of p)a[_.key]=n[_.key]||new s.Tile(_,512,this.transform.tileZoom,this);return a}clearBackgroundTiles(){this._backgroundTiles={}}}class Ir{constructor(n=0,a=0,p=0,_=0){if(isNaN(n)||n<0||isNaN(a)||a<0||isNaN(p)||p<0||isNaN(_)||_<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=n,this.bottom=a,this.left=p,this.right=_}interpolate(n,a,p){return a.top!=null&&n.top!=null&&(this.top=s.number(n.top,a.top,p)),a.bottom!=null&&n.bottom!=null&&(this.bottom=s.number(n.bottom,a.bottom,p)),a.left!=null&&n.left!=null&&(this.left=s.number(n.left,a.left,p)),a.right!=null&&n.right!=null&&(this.right=s.number(n.right,a.right,p)),this}getCenter(n,a){const p=s.clamp((this.left+n-this.right)/2,0,n),_=s.clamp((this.top+a-this.bottom)/2,0,a);return new s.Point(p,_)}equals(n){return this.top===n.top&&this.bottom===n.bottom&&this.left===n.left&&this.right===n.right}clone(){return new Ir(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function Hr(h,n){const a=s.getColumn(h,3);s.fromQuat(h,n),s.setColumn(h,3,a)}function vi(h,n){const a=s.identity$1([]);return s.rotateZ$1(a,a,-n),s.rotateX$1(a,a,-h),a}function uo(h,n){const a=[h[0],h[1],0],p=[n[0],n[1],0];if(s.length(a)>=1e-15){const I=s.normalize([],a);s.scale$2(p,I,s.dot(p,I)),n[0]=p[0],n[1]=p[1]}const _=s.cross([],n,h);if(s.len(_)<1e-15)return null;const b=Math.atan2(-_[1],_[0]);return vi(Math.atan2(Math.sqrt(h[0]*h[0]+h[1]*h[1]),-h[2]),b)}class Xo{constructor(n,a){this.position=n,this.orientation=a}get position(){return this._position}set position(n){if(n){const a=n instanceof s.MercatorCoordinate?n:new s.MercatorCoordinate(n[0],n[1],n[2]);this._renderWorldCopies&&(a.x=s.wrap(a.x,0,1)),this._position=a}else this._position=null}lookAtPoint(n,a){if(this.orientation=null,!this.position)return;const p=this.position,_=this._elevation?this._elevation.getAtPointOrZero(s.MercatorCoordinate.fromLngLat(n)):0,b=s.MercatorCoordinate.fromLngLat(n,_),I=[b.x-p.x,b.y-p.y,b.z-p.z];a||(a=[0,0,1]),a[2]=Math.abs(a[2]),this.orientation=uo(I,a)}setPitchBearing(n,a){this.orientation=vi(s.degToRad(n),s.degToRad(-a))}}class Ks{constructor(n,a){this._transform=s.identity([]),this.orientation=a,this.position=n}get mercatorPosition(){const n=this.position;return new s.MercatorCoordinate(n[0],n[1],n[2])}get position(){const n=s.getColumn(this._transform,3);return[n[0],n[1],n[2]]}set position(n){var a;n&&s.setColumn(this._transform,3,[(a=n)[0],a[1],a[2],1])}get orientation(){return this._orientation}set orientation(n){this._orientation=n||s.identity$1([]),n&&Hr(this._transform,this._orientation)}getPitchBearing(){const n=this.forward(),a=this.right();return{bearing:Math.atan2(-a[1],a[0]),pitch:Math.atan2(Math.sqrt(n[0]*n[0]+n[1]*n[1]),-n[2])}}setPitchBearing(n,a){this._orientation=vi(n,a),Hr(this._transform,this._orientation)}forward(){const n=s.getColumn(this._transform,2);return[-n[0],-n[1],-n[2]]}up(){const n=s.getColumn(this._transform,1);return[-n[0],-n[1],-n[2]]}right(){const n=s.getColumn(this._transform,0);return[n[0],n[1],n[2]]}getCameraToWorld(n,a){const p=new Float64Array(16);return s.invert(p,this.getWorldToCamera(n,a)),p}getWorldToCameraPosition(n,a,p){const _=this.position;s.scale$2(_,_,-n);const b=new Float64Array(16);return s.fromScaling(b,[p,p,p]),s.translate(b,b,_),b[10]*=a,b}getWorldToCamera(n,a){const p=new Float64Array(16),_=new Float64Array(4),b=this.position;return s.conjugate(_,this._orientation),s.scale$2(b,b,-n),s.fromQuat(p,_),s.translate(p,p,b),p[1]*=-1,p[5]*=-1,p[9]*=-1,p[13]*=-1,p[8]*=a,p[9]*=a,p[10]*=a,p[11]*=a,p}getCameraToClipPerspective(n,a,p,_){const b=new Float64Array(16);return s.perspective(b,n,a,p,_),b}getDistanceToElevation(n,a=!1){const p=n===0?0:s.mercatorZfromAltitude(n,a?s.latFromMercatorY(this.position[1]):this.position[1]),_=this.forward();return(p-this.position[2])/_[2]}clone(){return new Ks([...this.position],[...this.orientation])}}function Wo(h,n){const a=ws(h.projection,h.zoom,h.width,h.height),p=function(b,I,M,P,N){const z=new s.LngLat(M.lng-180*Yo,M.lat),j=new s.LngLat(M.lng+180*Yo,M.lat),Y=b.project(z.lng,z.lat),J=b.project(j.lng,j.lat),te=-Math.atan2(J.y-Y.y,J.x-Y.x),ee=s.MercatorCoordinate.fromLngLat(M);ee.y=s.clamp(ee.y,-1+Yo,1-Yo);const ie=ee.toLngLat(),V=b.project(ie.lng,ie.lat),K=s.MercatorCoordinate.fromLngLat(ie);K.x+=Yo;const ae=K.toLngLat(),le=b.project(ae.lng,ae.lat),xe=bu(le.x-V.x,le.y-V.y,te),Te=s.MercatorCoordinate.fromLngLat(ie);Te.y+=Yo;const be=Te.toLngLat(),Ae=b.project(be.lng,be.lat),ke=bu(Ae.x-V.x,Ae.y-V.y,te),Ne=Math.abs(xe.x)/Math.abs(ke.y),tt=s.identity([]);s.rotateZ(tt,tt,-te*(1-(N?0:P)));const Re=s.identity([]);return s.scale(Re,Re,[1,1-(1-Ne)*P,1]),Re[4]=-ke.x/ke.y*P,s.rotateZ(Re,Re,te),s.multiply(Re,tt,Re),Re}(h.projection,0,h.center,a,n),_=Oa(h);return s.scale(p,p,[_,_,1]),p}function Oa(h){const n=h.projection,a=ws(h.projection,h.zoom,h.width,h.height),p=bf(n,h.center),_=bf(n,s.LngLat.convert(n.center));return Math.pow(2,p*a+(1-a)*_)}function ws(h,n,a,p,_=1/0){const b=h.range;if(!b)return 0;const I=Math.min(_,Math.max(a,p)),M=Math.log(I/1024)/Math.LN2;return s.smoothstep(b[0]+M,b[1]+M,n)}const Yo=1/4e4;function bf(h,n){const a=s.clamp(n.lat,-s.MAX_MERCATOR_LATITUDE,s.MAX_MERCATOR_LATITUDE),p=new s.LngLat(n.lng-180*Yo,a),_=new s.LngLat(n.lng+180*Yo,a),b=h.project(p.lng,a),I=h.project(_.lng,a),M=s.MercatorCoordinate.fromLngLat(p),P=s.MercatorCoordinate.fromLngLat(_),N=I.x-b.x,z=I.y-b.y,j=P.x-M.x,Y=P.y-M.y,J=Math.sqrt((j*j+Y*Y)/(N*N+z*z));return Math.log(J)/Math.LN2}function bu(h,n,a){const p=Math.cos(a),_=Math.sin(a);return{x:h*p-n*_,y:h*_+n*p}}class za{constructor(n,a,p,_,b,I,M){this.tileSize=512,this._renderWorldCopies=b===void 0||b,this._minZoom=n||0,this._maxZoom=a||22,this._minPitch=p??0,this._maxPitch=_??60,this.setProjection(I),this.setMaxBounds(M),this.width=0,this.height=0,this._center=new s.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._nearZ=0,this._farZ=0,this._unmodified=!0,this._edgeInsets=new Ir,this._projMatrixCache={},this._alignedProjMatrixCache={},this._fogTileMatrixCache={},this._distanceTileDataCache={},this._camera=new Ks,this._centerAltitude=0,this._averageElevation=0,this.cameraElevationReference="ground",this._pixelsPerMercatorPixel=1,this.globeRadius=0,this.globeCenterInViewSpace=[0,0,0],this._horizonShift=.1}clone(){const n=new za(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies,this.getProjection());return n._elevation=this._elevation,n._centerAltitude=this._centerAltitude,n._centerAltitudeValidForExaggeration=this._centerAltitudeValidForExaggeration,n.tileSize=this.tileSize,n.mercatorFromTransition=this.mercatorFromTransition,n.width=this.width,n.height=this.height,n.cameraElevationReference=this.cameraElevationReference,n._center=this._center,n._setZoom(this.zoom),n._seaLevelZoom=this._seaLevelZoom,n.angle=this.angle,n._fov=this._fov,n._pitch=this._pitch,n._nearZ=this._nearZ,n._farZ=this._farZ,n._averageElevation=this._averageElevation,n._unmodified=this._unmodified,n._edgeInsets=this._edgeInsets.clone(),n._camera=this._camera.clone(),n._calcMatrices(),n.freezeTileCoverage=this.freezeTileCoverage,n.frustumCorners=this.frustumCorners,n}get elevation(){return this._elevation}set elevation(n){this._elevation!==n&&(this._elevation=n,this._updateCameraOnTerrain(),this._calcMatrices())}updateElevation(n,a=!1){const p=this._elevation&&this._elevation.exaggeration()!==this._centerAltitudeValidForExaggeration;(this._seaLevelZoom==null||p)&&this._updateCameraOnTerrain(),(n||p)&&this._constrainCamera(a),this._calcMatrices()}getProjection(){return s.pick(this.projection,["name","center","parallels"])}setProjection(n){this.projectionOptions=n||{name:"mercator"};const a=this.projection?this.getProjection():void 0;this.projection=s.getProjection(this.projectionOptions);const p=!Z(a,this.getProjection());return p&&this._calcMatrices(),this.mercatorFromTransition=!1,p}setMercatorFromTransition(){const n=this.projection.name;this.mercatorFromTransition=!0,this.projectionOptions={name:"mercator"},this.projection=s.getProjection({name:"mercator"});const a=n!==this.projection.name;return a&&this._calcMatrices(),a}get minZoom(){return this._minZoom}set minZoom(n){this._minZoom!==n&&(this._minZoom=n,this.zoom=Math.max(this.zoom,n))}get maxZoom(){return this._maxZoom}set maxZoom(n){this._maxZoom!==n&&(this._maxZoom=n,this.zoom=Math.min(this.zoom,n))}get minPitch(){return this._minPitch}set minPitch(n){this._minPitch!==n&&(this._minPitch=n,this.pitch=Math.max(this.pitch,n))}get maxPitch(){return this._maxPitch}set maxPitch(n){this._maxPitch!==n&&(this._maxPitch=n,this.pitch=Math.min(this.pitch,n))}get renderWorldCopies(){return this._renderWorldCopies&&this.projection.supportsWorldCopies===!0}set renderWorldCopies(n){n===void 0?n=!0:n===null&&(n=!1),this._renderWorldCopies=n}get worldSize(){return this.tileSize*this.scale}get cameraWorldSizeForFog(){const n=Math.max(this._camera.getDistanceToElevation(this._averageElevation),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(n))}get cameraWorldSize(){const n=Math.max(this._camera.getDistanceToElevation(this._averageElevation,!0),Number.EPSILON);return this._worldSizeFromZoom(this._zoomFromMercatorZ(n))}get pixelsPerMeter(){return this.projection.pixelsPerMeter(this.center.lat,this.worldSize)}get cameraPixelsPerMeter(){return s.mercatorZfromAltitude(this.center.lat,this.cameraWorldSizeForFog)}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new s.Point(this.width,this.height)}get bearing(){return s.wrap(this.rotation,-180,180)}set bearing(n){this.rotation=n}get rotation(){return-this.angle/Math.PI*180}set rotation(n){const a=-n*Math.PI/180;var p;this.angle!==a&&(this._unmodified=!1,this.angle=a,this._calcMatrices(),this.rotationMatrix=(p=new s.ARRAY_TYPE(4),s.ARRAY_TYPE!=Float32Array&&(p[1]=0,p[2]=0),p[0]=1,p[3]=1,p),function(_,b,I){var M=b[0],P=b[1],N=b[2],z=b[3],j=Math.sin(I),Y=Math.cos(I);_[0]=M*Y+N*j,_[1]=P*Y+z*j,_[2]=M*-j+N*Y,_[3]=P*-j+z*Y}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(n){const a=s.clamp(n,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==a&&(this._unmodified=!1,this._pitch=a,this._calcMatrices())}get aspect(){return this.width/this.height}get fov(){return this._fov/Math.PI*180}get fovX(){return this._fov}get fovY(){const n=1/Math.tan(.5*this.fovX);return 2*Math.atan(1/this.aspect/n)}set fov(n){n=Math.max(.01,Math.min(60,n)),this._fov!==n&&(this._unmodified=!1,this._fov=s.degToRad(n),this._calcMatrices())}get averageElevation(){return this._averageElevation}set averageElevation(n){this._averageElevation=n,this._calcFogMatrices(),this._distanceTileDataCache={}}get zoom(){return this._zoom}set zoom(n){const a=Math.min(Math.max(n,this.minZoom),this.maxZoom);this._zoom!==a&&(this._unmodified=!1,this._setZoom(a),this._updateSeaLevelZoom(),this._constrain(),this._calcMatrices())}_setZoom(n){this._zoom=n,this.scale=this.zoomScale(n),this.tileZoom=Math.floor(n),this.zoomFraction=n-this.tileZoom}_updateCameraOnTerrain(){if(!this._elevation||!this._elevation.isDataAvailableAtPoint(this.locationCoordinate(this.center)))return this._centerAltitude=0,this._seaLevelZoom=null,void(this._centerAltitudeValidForExaggeration=void 0);const n=this._elevation;this._centerAltitude=n.getAtPointOrZero(this.locationCoordinate(this.center)),this._centerAltitudeValidForExaggeration=n.exaggeration(),this._updateSeaLevelZoom()}_updateSeaLevelZoom(){this._centerAltitudeValidForExaggeration!==void 0&&(this._seaLevelZoom=this._zoomFromMercatorZ((this.pixelsPerMeter*this._centerAltitude+this.cameraToCenterDistance)/this.worldSize))}sampleAverageElevation(){if(!this._elevation)return 0;const n=this._elevation,a=[[.5,.2],[.3,.5],[.5,.5],[.7,.5],[.5,.8]],p=this.horizonLineFromTop();let _=0,b=0;for(let I=0;I<a.length;I++){const M=new s.Point(a[I][0]*this.width,p+a[I][1]*(this.height-p)),P=n.pointCoordinate(M);if(!P)continue;const N=1/Math.hypot(P[0]-this._camera.position[0],P[1]-this._camera.position[1]);_+=P[3]*N,b+=N}return b===0?NaN:_/b}get center(){return this._center}set center(n){n.lat===this._center.lat&&n.lng===this._center.lng||(this._unmodified=!1,this._center=n,this._terrainEnabled()&&(this.cameraElevationReference==="ground"?this._updateCameraOnTerrain():this._updateZoomFromElevation()),this._constrain(),this._calcMatrices())}_updateZoomFromElevation(){if(this._seaLevelZoom==null||!this._elevation)return;const n=this._seaLevelZoom,a=this._elevation.getAtPointOrZero(this.locationCoordinate(this.center)),p=this.pixelsPerMeter/this.worldSize*a,_=this._mercatorZfromZoom(n),b=this._mercatorZfromZoom(this._maxZoom),I=Math.max(_-p,b);this._setZoom(this._zoomFromMercatorZ(I))}get padding(){return this._edgeInsets.toJSON()}set padding(n){this._edgeInsets.equals(n)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,n,1),this._calcMatrices())}computeZoomRelativeTo(n){const a=this.rayIntersectionCoordinate(this.pointRayIntersection(this.centerPoint,n.toAltitude()));let p;p=n.z<this._camera.position[2]?[a.x,a.y,a.z]:[n.x,n.y,n.z];const _=s.length(s.sub([],this._camera.position,p));return s.clamp(this._zoomFromMercatorZ(_),this._minZoom,this._maxZoom)}setFreeCameraOptions(n){if(!this.height||!n.position&&!n.orientation)return;this._updateCameraState();let a=!1;if(n.orientation&&!s.exactEquals(n.orientation,this._camera.orientation)&&(a=this._setCameraOrientation(n.orientation)),n.position){const p=[n.position.x,n.position.y,n.position.z];s.exactEquals$1(p,this._camera.position)||(this._setCameraPosition(p),a=!0)}a&&(this._updateStateFromCamera(),this.recenterOnTerrain())}getFreeCameraOptions(){this._updateCameraState();const n=this._camera.position,a=new Xo;return a.position=new s.MercatorCoordinate(n[0],n[1],n[2]),a.orientation=this._camera.orientation,a._elevation=this.elevation,a._renderWorldCopies=this.renderWorldCopies,a}_setCameraOrientation(n){if(!s.length$1(n))return!1;s.normalize$1(n,n);const a=s.transformQuat([],[0,0,-1],n),p=s.transformQuat([],[0,-1,0],n);if(p[2]<0)return!1;const _=uo(a,p);return!!_&&(this._camera.orientation=_,!0)}_setCameraPosition(n){const a=this.zoomScale(this.minZoom)*this.tileSize,p=this.zoomScale(this.maxZoom)*this.tileSize,_=this.cameraToCenterDistance;n[2]=s.clamp(n[2],_/p,_/a),this._camera.position=n}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}get fovAboveCenter(){return this._fov*(.5+this.centerOffset.y/this.height)}isPaddingEqual(n){return this._edgeInsets.equals(n)}interpolatePadding(n,a,p){this._unmodified=!1,this._edgeInsets.interpolate(n,a,p),this._constrain(),this._calcMatrices()}coveringZoomLevel(n){const a=(n.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/n.tileSize));return Math.max(0,a)}getVisibleUnwrappedCoordinates(n){const a=[new s.UnwrappedTileID(0,n)];if(this.renderWorldCopies){const p=this.pointCoordinate(new s.Point(0,0)),_=this.pointCoordinate(new s.Point(this.width,0)),b=this.pointCoordinate(new s.Point(this.width,this.height)),I=this.pointCoordinate(new s.Point(0,this.height)),M=Math.floor(Math.min(p.x,_.x,b.x,I.x)),P=Math.floor(Math.max(p.x,_.x,b.x,I.x)),N=1;for(let z=M-N;z<=P+N;z++)z!==0&&a.push(new s.UnwrappedTileID(z,n))}return a}coveringTiles(n){let a=this.coveringZoomLevel(n);const p=a,_=this.elevation&&!n.isTerrainDEM,b=this.projection.name==="mercator";if(n.minzoom!==void 0&&a<n.minzoom)return[];n.maxzoom!==void 0&&a>n.maxzoom&&(a=n.maxzoom);const I=this.locationCoordinate(this.center),M=this.center.lat,P=1<<a,N=[P*I.x,P*I.y,0],z=this.projection.name==="globe",j=!z,Y=s.Frustum.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,a,j),J=z?this._camera.mercatorPosition:this.pointCoordinate(this.getCameraPoint()),te=P*s.mercatorZfromAltitude(1,this.center.lat),ee=this._camera.position[2]/s.mercatorZfromAltitude(1,this.center.lat),ie=[P*J.x,P*J.y,ee*(j?1:te)],V=this.cameraToCenterDistance/n.tileSize*(n.roundZoom?1:.502),K=this.pitch<=60&&this._edgeInsets.top<=this._edgeInsets.bottom&&!this._elevation&&!this.projection.isReprojectedInTileSpace?a:0,ae=n.isTerrainDEM&&this._elevation?1e4*this._elevation.exaggeration():this._centerAltitude,le=n.isTerrainDEM?-ae:this._elevation?this._elevation.getMinElevationBelowMSL():0,xe=this.projection.isReprojectedInTileSpace?Oa(this):1,Te=ze=>{const rt=new s.MercatorCoordinate(ze.x+25e-6,ze.y,ze.z),Ke=new s.MercatorCoordinate(ze.x,ze.y+25e-6,ze.z),st=ze.toLngLat(),zt=rt.toLngLat(),Kt=Ke.toLngLat(),Pt=this.locationCoordinate(st),jt=this.locationCoordinate(zt),mi=this.locationCoordinate(Kt),di=Math.hypot(jt.x-Pt.x,jt.y-Pt.y),Ot=Math.hypot(mi.x-Pt.x,mi.y-Pt.y);return Math.sqrt(di*Ot)*xe/25e-6},be=ze=>{const Ze=ae,rt=le;return{aabb:s.tileAABB(this,P,0,0,0,ze,rt,Ze,this.projection),zoom:0,x:0,y:0,minZ:rt,maxZ:Ze,wrap:ze,fullyVisible:!1}},Ae=[];let ke=[];const Ne=a,tt=n.reparseOverscaled?p:a,Re=ze=>ze*ze,We=Re((ee-this._centerAltitude)*te),je=ze=>{if(!this._elevation||!ze.tileID||!b)return;const Ze=this._elevation.getMinMaxForTile(ze.tileID),rt=ze.aabb;Ze?(rt.min[2]=Ze.min,rt.max[2]=Ze.max,rt.center[2]=(rt.min[2]+rt.max[2])/2):(ze.shouldSplit=et(ze),ze.shouldSplit||(rt.min[2]=rt.max[2]=rt.center[2]=this._centerAltitude))},et=ze=>{if(ze.zoom<K)return!0;if(ze.zoom===Ne)return!1;if(ze.shouldSplit!=null)return ze.shouldSplit;const Ze=ze.aabb.distanceX(ie),rt=ze.aabb.distanceY(ie);let Ke=We,st=1;if(z){Ke=Re(ze.aabb.distanceZ(ie));const Pt=Math.pow(2,ze.zoom),jt=s.latFromMercatorY((ze.y+1)/Pt),mi=s.latFromMercatorY(ze.y/Pt),di=Math.min(Math.max(M,jt),mi),Ot=s.circumferenceAtLatitude(di)/s.circumferenceAtLatitude(M);if(st=di===M?1/Math.max(1,this._mercatorScaleRatio-.3):Math.min(1,Ot/this._mercatorScaleRatio),this.zoom<=s.GLOBE_ZOOM_THRESHOLD_MIN&&ze.zoom===Ne-1&&Ot>=.9)return!0}else if(_&&(Ke=Re(ze.aabb.distanceZ(ie)*te)),this.projection.isReprojectedInTileSpace&&p<=5){const Pt=Math.pow(2,ze.zoom),jt=Te(new s.MercatorCoordinate((ze.x+.5)/Pt,(ze.y+.5)/Pt));st=jt>.85?1:jt}const zt=Ze*Ze+rt*rt+Ke,Kt=Re((1<<Ne-ze.zoom)*V*st*((Pt,jt)=>{if(jt*Re(.707)<Pt)return 1;const mi=Math.sqrt(jt/Pt);return mi/(1.4144271570014144+(Math.pow(1.1,mi-1.4144271570014144+1)-1)/(1.1-1)-1)})(Math.max(Ke,We),zt));return zt<Kt};if(this.renderWorldCopies)for(let ze=1;ze<=3;ze++)Ae.push(be(-ze)),Ae.push(be(ze));for(Ae.push(be(0));Ae.length>0;){const ze=Ae.pop(),Ze=ze.x,rt=ze.y;let Ke=ze.fullyVisible;if(!Ke){const st=ze.aabb.intersects(Y);if(st===0)continue;Ke=st===2}if(ze.zoom!==Ne&&et(ze))for(let st=0;st<4;st++){const zt=(Ze<<1)+st%2,Kt=(rt<<1)+(st>>1),Pt={aabb:b?ze.aabb.quadrant(st):s.tileAABB(this,P,ze.zoom+1,zt,Kt,ze.wrap,ze.minZ,ze.maxZ,this.projection),zoom:ze.zoom+1,x:zt,y:Kt,wrap:ze.wrap,fullyVisible:Ke,tileID:void 0,shouldSplit:void 0,minZ:ze.minZ,maxZ:ze.maxZ};_&&!z&&(Pt.tileID=new s.OverscaledTileID(ze.zoom+1===Ne?tt:ze.zoom+1,ze.wrap,ze.zoom+1,zt,Kt),je(Pt)),Ae.push(Pt)}else{const st=ze.zoom===Ne?tt:ze.zoom;if(n.minzoom&&n.minzoom>st)continue;const zt=N[0]-(.5+Ze+(ze.wrap<<ze.zoom))*(1<<a-ze.zoom),Kt=N[1]-.5-rt,Pt=ze.tileID?ze.tileID:new s.OverscaledTileID(st,ze.wrap,ze.zoom,Ze,rt);ke.push({tileID:Pt,distanceSq:zt*zt+Kt*Kt})}}if(this.fogCullDistSq){const ze=this.fogCullDistSq,Ze=this.horizonLineFromTop();ke=ke.filter(rt=>{const Ke=[0,0,0,1],st=[s.EXTENT,s.EXTENT,0,1],zt=this.calculateFogTileMatrix(rt.tileID.toUnwrapped());s.transformMat4$1(Ke,Ke,zt),s.transformMat4$1(st,st,zt);const Kt=s.getAABBPointSquareDist(Ke,st);if(Kt===0)return!0;let Pt=!1;const jt=this._elevation;if(jt&&Kt>ze&&Ze!==0){const mi=this.calculateProjMatrix(rt.tileID.toUnwrapped());let di;n.isTerrainDEM||(di=jt.getMinMaxForTile(rt.tileID)),di||(di={min:le,max:ae});const Ot=s.furthestTileCorner(this.rotation),Di=[Ot[0]*s.EXTENT,Ot[1]*s.EXTENT,di.max];s.transformMat4(Di,Di,mi),Pt=(1-Di[1])*this.height*.5<Ze}return Kt<ze||Pt})}return ke.sort((ze,Ze)=>ze.distanceSq-Ze.distanceSq).map(ze=>ze.tileID)}resize(n,a){this.width=n,this.height=a,this.pixelsToGLUnits=[2/n,-2/a],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(n){return Math.pow(2,n)}scaleZoom(n){return Math.log(n)/Math.LN2}project(n){const a=s.clamp(n.lat,-s.MAX_MERCATOR_LATITUDE,s.MAX_MERCATOR_LATITUDE),p=this.projection.project(n.lng,a);return new s.Point(p.x*this.worldSize,p.y*this.worldSize)}unproject(n){return this.projection.unproject(n.x/this.worldSize,n.y/this.worldSize)}get point(){return this.project(this.center)}get pointMerc(){return this.point._div(this.worldSize)}get pixelsPerMeterRatio(){return this.pixelsPerMeter/s.mercatorZfromAltitude(1,this.center.lat)/this.worldSize}setLocationAtPoint(n,a){let p,_;const b=this.centerPoint;if(this.projection.name==="globe"){const M=this.worldSize;p=(a.x-b.x)/M,_=(a.y-b.y)/M}else{const M=this.pointCoordinate(a),P=this.pointCoordinate(b);p=M.x-P.x,_=M.y-P.y}const I=this.locationCoordinate(n);this.setLocation(new s.MercatorCoordinate(I.x-p,I.y-_))}setLocation(n){this.center=this.coordinateLocation(n),this.projection.wrap&&(this.center=this.center.wrap())}locationPoint(n){return this.projection.locationPoint(this,n)}locationPoint3D(n){return this.projection.locationPoint(this,n,!0)}pointLocation(n){return this.coordinateLocation(this.pointCoordinate(n))}pointLocation3D(n){return this.coordinateLocation(this.pointCoordinate3D(n))}locationCoordinate(n,a){const p=a?s.mercatorZfromAltitude(a,n.lat):void 0,_=this.projection.project(n.lng,n.lat);return new s.MercatorCoordinate(_.x,_.y,p)}coordinateLocation(n){return this.projection.unproject(n.x,n.y)}pointRayIntersection(n,a){const p=a??this._centerAltitude,_=[n.x,n.y,0,1],b=[n.x,n.y,1,1];s.transformMat4$1(_,_,this.pixelMatrixInverse),s.transformMat4$1(b,b,this.pixelMatrixInverse);const I=b[3];s.scale$1(_,_,1/_[3]),s.scale$1(b,b,1/I);const M=_[2],P=b[2];return{p0:_,p1:b,t:M===P?0:(p-M)/(P-M)}}screenPointToMercatorRay(n){const a=[n.x,n.y,0,1],p=[n.x,n.y,1,1];return s.transformMat4$1(a,a,this.pixelMatrixInverse),s.transformMat4$1(p,p,this.pixelMatrixInverse),s.scale$1(a,a,1/a[3]),s.scale$1(p,p,1/p[3]),a[2]=s.mercatorZfromAltitude(a[2],this._center.lat)*this.worldSize,p[2]=s.mercatorZfromAltitude(p[2],this._center.lat)*this.worldSize,s.scale$1(a,a,1/this.worldSize),s.scale$1(p,p,1/this.worldSize),new s.Ray([a[0],a[1],a[2]],s.normalize([],s.sub([],p,a)))}rayIntersectionCoordinate(n){const{p0:a,p1:p,t:_}=n,b=s.mercatorZfromAltitude(a[2],this._center.lat),I=s.mercatorZfromAltitude(p[2],this._center.lat);return new s.MercatorCoordinate(s.number(a[0],p[0],_)/this.worldSize,s.number(a[1],p[1],_)/this.worldSize,s.number(b,I,_))}pointCoordinate(n,a=this._centerAltitude){return this.projection.pointCoordinate(this,n.x,n.y,a)}pointCoordinate3D(n){if(!this.elevation)return this.pointCoordinate(n);let a=this.projection.pointCoordinate3D(this,n.x,n.y);if(a)return new s.MercatorCoordinate(a[0],a[1],a[2]);let p=0,_=this.horizonLineFromTop();if(n.y>_)return this.pointCoordinate(n);const b=.02*_,I=n.clone();for(let M=0;M<10&&_-p>b;M++){I.y=s.number(p,_,.66);const P=this.projection.pointCoordinate3D(this,I.x,I.y);P?(_=I.y,a=P):p=I.y}return a?new s.MercatorCoordinate(a[0],a[1],a[2]):this.pointCoordinate(n)}isPointAboveHorizon(n){return this.projection.isPointAboveHorizon(this,n)}isPointOnSurface(n){if(n.y<0||n.y>this.height||n.x<0||n.x>this.width)return!1;if(this.elevation||this.zoom>=s.GLOBE_ZOOM_THRESHOLD_MAX)return!this.isPointAboveHorizon(n);const a=this.pointCoordinate(n);return a.y>=0&&a.y<=1}_coordinatePoint(n,a){const p=a&&this.elevation?this.elevation.getAtPointOrZero(n,this._centerAltitude):this._centerAltitude,_=[n.x*this.worldSize,n.y*this.worldSize,p+n.toAltitude(),1];return s.transformMat4$1(_,_,this.pixelMatrix),_[3]>0?new s.Point(_[0]/_[3],_[1]/_[3]):new s.Point(Number.MAX_VALUE,Number.MAX_VALUE)}_getBoundsNonRectangular(){const{top:n,left:a}=this._edgeInsets,p=this.height-this._edgeInsets.bottom,_=this.width-this._edgeInsets.right,b=this.pointLocation3D(new s.Point(a,n)),I=this.pointLocation3D(new s.Point(_,n)),M=this.pointLocation3D(new s.Point(_,p)),P=this.pointLocation3D(new s.Point(a,p));let N=Math.min(b.lng,I.lng,M.lng,P.lng),z=Math.max(b.lng,I.lng,M.lng,P.lng),j=Math.min(b.lat,I.lat,M.lat,P.lat),Y=Math.max(b.lat,I.lat,M.lat,P.lat);const J=Math.pow(2,-this.zoom)/16*270,te=this.projection.name==="globe"?1:4,ee=(ie,V,K,ae,le)=>{const xe=(ie+K)/2,Te=(V+ae)/2,be=new s.Point(xe,Te),{lng:Ae,lat:ke}=this.pointLocation3D(be),Ne=Math.max(0,N-Ae,j-ke,Ae-z,ke-Y);N=Math.min(N,Ae),z=Math.max(z,Ae),j=Math.min(j,ke),Y=Math.max(Y,ke),(le<te||Ne>J)&&(ee(ie,V,xe,Te,le+1),ee(xe,Te,K,ae,le+1))};if(ee(a,n,_,n,1),ee(_,n,_,p,1),ee(_,p,a,p,1),ee(a,p,a,n,1),this.projection.name==="globe"){const[ie,V]=s.polesInViewport(this);ie?(Y=90,z=180,N=-180):V&&(j=-90,z=180,N=-180)}return new s.LngLatBounds(new s.LngLat(N,j),new s.LngLat(z,Y))}_getBoundsRectangular(n,a){const{top:p,left:_}=this._edgeInsets,b=this.height-this._edgeInsets.bottom,I=this.width-this._edgeInsets.right,M=new s.Point(_,p),P=new s.Point(I,p),N=new s.Point(I,b),z=new s.Point(_,b);let j=this.pointCoordinate(M,n),Y=this.pointCoordinate(P,n);const J=this.pointCoordinate(N,a),te=this.pointCoordinate(z,a),ee=(ie,V)=>(V.y-ie.y)/(V.x-ie.x);return j.y>1&&Y.y>=0?j=new s.MercatorCoordinate((1-te.y)/ee(te,j)+te.x,1):j.y<0&&Y.y<=1&&(j=new s.MercatorCoordinate(-te.y/ee(te,j)+te.x,0)),Y.y>1&&j.y>=0?Y=new s.MercatorCoordinate((1-J.y)/ee(J,Y)+J.x,1):Y.y<0&&j.y<=1&&(Y=new s.MercatorCoordinate(-J.y/ee(J,Y)+J.x,0)),new s.LngLatBounds().extend(this.coordinateLocation(j)).extend(this.coordinateLocation(Y)).extend(this.coordinateLocation(te)).extend(this.coordinateLocation(J))}_getBoundsRectangularTerrain(){const n=this.elevation;if(!n.visibleDemTiles.length||n.isUsingMockSource())return this._getBoundsRectangular(0,0);const a=n.visibleDemTiles.reduce((p,_)=>{if(_.dem){const b=_.dem.tree;p.min=Math.min(p.min,b.minimums[0]),p.max=Math.max(p.max,b.maximums[0])}return p},{min:Number.MAX_VALUE,max:0});return this._getBoundsRectangular(a.min*n.exaggeration(),a.max*n.exaggeration())}getBounds(){return this.projection.name==="mercator"||this.projection.name==="equirectangular"?this._terrainEnabled()?this._getBoundsRectangularTerrain():this._getBoundsRectangular(0,0):this._getBoundsNonRectangular()}horizonLineFromTop(n=!0){const a=this.height/2/Math.tan(this._fov/2)/Math.tan(Math.max(this._pitch,.1))+this.centerOffset.y,p=this.height/2-a*(1-this._horizonShift);return n?Math.max(0,p):p}getMaxBounds(){return this.maxBounds}setMaxBounds(n){this.maxBounds=n,this.minLat=-s.MAX_MERCATOR_LATITUDE,this.maxLat=s.MAX_MERCATOR_LATITUDE,this.minLng=-180,this.maxLng=180,n&&(this.minLat=n.getSouth(),this.maxLat=n.getNorth(),this.minLng=n.getWest(),this.maxLng=n.getEast(),this.maxLng<this.minLng&&(this.maxLng+=360)),this.worldMinX=s.mercatorXfromLng(this.minLng)*this.tileSize,this.worldMaxX=s.mercatorXfromLng(this.maxLng)*this.tileSize,this.worldMinY=s.mercatorYfromLat(this.maxLat)*this.tileSize,this.worldMaxY=s.mercatorYfromLat(this.minLat)*this.tileSize,this._constrain()}calculatePosMatrix(n,a){return this.projection.createTileMatrix(this,a,n)}calculateDistanceTileData(n){const a=n.key,p=this._distanceTileDataCache;if(p[a])return p[a];const _=n.canonical,b=1/this.height,I=this.cameraWorldSize,M=I/this.zoomScale(_.z),P=(_.x+Math.pow(2,_.z)*n.wrap)*M,N=_.y*M,z=this.point;z.x*=I/this.worldSize,z.y*=I/this.worldSize;const j=this.angle,Y=Math.sin(-j),J=-Math.cos(-j);return p[a]={bearing:[Y,J],center:[(z.x-P)*b,(z.y-N)*b],scale:M/s.EXTENT*b},p[a]}calculateFogTileMatrix(n){const a=n.key,p=this._fogTileMatrixCache;if(p[a])return p[a];const _=this.projection.createTileMatrix(this,this.cameraWorldSizeForFog,n);return s.multiply(_,this.worldToFogMatrix,_),p[a]=new Float32Array(_),p[a]}calculateProjMatrix(n,a=!1){const p=n.key,_=a?this._alignedProjMatrixCache:this._projMatrixCache;if(_[p])return _[p];const b=this.calculatePosMatrix(n,this.worldSize);return s.multiply(b,this.projection.isReprojectedInTileSpace?this.mercatorMatrix:a?this.alignedProjMatrix:this.projMatrix,b),_[p]=new Float32Array(b),_[p]}calculatePixelsToTileUnitsMatrix(n){const a=n.tileID.key,p=this._pixelsToTileUnitsCache;if(p[a])return p[a];const _=function(b,I){const{scale:M}=b.tileTransform,P=M*s.EXTENT/(b.tileSize*Math.pow(2,I.zoom-b.tileID.overscaledZ+b.tileID.canonical.z));return N=new Float32Array(4),Y=(z=I.inverseAdjustmentMatrix)[1],J=z[2],te=z[3],ie=(j=[P,P])[1],N[0]=z[0]*(ee=j[0]),N[1]=Y*ee,N[2]=J*ie,N[3]=te*ie,N;var N,z,j,Y,J,te,ee,ie}(n,this);return p[a]=_,p[a]}customLayerMatrix(){return this.mercatorMatrix.slice()}globeToMercatorMatrix(){if(this.projection.name==="globe"){const n=1/this.worldSize,a=s.fromScaling([],[n,n,n]);return s.multiply(a,a,this.globeMatrix),a}}recenterOnTerrain(){if(!this._elevation||this.projection.name==="globe")return;const n=this._elevation;this._updateCameraState();const a=s.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,p=this._computeCameraPosition(a),_=this._camera.forward(),b=s.mercatorZfromAltitude(1,this._center.lat);p[2]/=b,_[2]/=b,s.normalize(_,_);const I=n.raycast(p,_,n.exaggeration());if(I){const M=s.scaleAndAdd([],p,_,I),P=new s.MercatorCoordinate(M[0],M[1],s.mercatorZfromAltitude(M[2],s.latFromMercatorY(M[1]))),N=(P.z+s.length([P.x-p[0],P.y-p[1],P.z-p[2]*b]))*this._pixelsPerMercatorPixel;this._seaLevelZoom=this._zoomFromMercatorZ(N),this._centerAltitude=P.toAltitude(),this._center=this.coordinateLocation(P),this._updateZoomFromElevation(),this._constrain(),this._calcMatrices()}}_constrainCamera(n=!1){if(!this._elevation)return;const a=this._elevation,p=s.mercatorZfromAltitude(1,this._center.lat)*this.worldSize,_=this._computeCameraPosition(p),b=a.getAtPointOrZero(new s.MercatorCoordinate(..._)),I=this.pixelsPerMeter/this.worldSize*b,M=this._minimumHeightOverTerrain(),P=_[2]-I;if(P<=M)if(P<0||n){const N=this.locationCoordinate(this._center,this._centerAltitude),z=[_[0],_[1],N.z-_[2]],j=s.length(z);z[2]-=(M-P)/this._pixelsPerMercatorPixel;const Y=s.length(z);if(Y===0)return;s.scale$2(z,z,j/Y*this._pixelsPerMercatorPixel),this._camera.position=[_[0],_[1],N.z*this._pixelsPerMercatorPixel-z[2]],this._updateStateFromCamera()}else this._isCameraConstrained=!0}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;const n=this.projection.name==="globe"||this.mercatorFromTransition;if(this.projection.isReprojectedInTileSpace||n){const Y=this.center;return Y.lat=s.clamp(Y.lat,this.minLat,this.maxLat),(this.maxBounds||!this.renderWorldCopies&&!n)&&(Y.lng=s.clamp(Y.lng,this.minLng,this.maxLng)),this.center=Y,void(this._constraining=!1)}const a=this._unmodified,{x:p,y:_}=this.point;let b=0,I=p,M=_;const P=this.width/2,N=this.height/2,z=this.worldMinY*this.scale,j=this.worldMaxY*this.scale;if(_-N<z&&(M=z+N),_+N>j&&(M=j-N),j-z<this.height&&(b=Math.max(b,this.height/(j-z)),M=(j+z)/2),this.maxBounds||!this._renderWorldCopies||!this.projection.wrap){const Y=this.worldMinX*this.scale,J=this.worldMaxX*this.scale,te=this.worldSize/2-(Y+J)/2;I=(p+te+this.worldSize)%this.worldSize-te,I-P<Y&&(I=Y+P),I+P>J&&(I=J-P),J-Y<this.width&&(b=Math.max(b,this.width/(J-Y)),I=(J+Y)/2)}I===p&&M===_||(this.center=this.unproject(new s.Point(I,M))),b&&(this.zoom+=this.scaleZoom(b)),this._constrainCamera(),this._unmodified=a,this._constraining=!1}_minZoomForBounds(){let n=Math.max(0,this.scaleZoom(this.height/(this.worldMaxY-this.worldMinY)));return this.maxBounds&&(n=Math.max(n,this.scaleZoom(this.width/(this.worldMaxX-this.worldMinX)))),n}_maxCameraBoundsDistance(){return this._mercatorZfromZoom(this._minZoomForBounds())}_calcMatrices(){if(!this.height)return;const n=this.centerOffset,a=this.pixelsPerMeter;this.projection.name==="globe"&&(this._mercatorScaleRatio=s.mercatorZfromAltitude(1,this.center.lat)/s.mercatorZfromAltitude(1,s.GLOBE_SCALE_MATCH_LATITUDE));const p=ws(this.projection,this.zoom,this.width,this.height,1024);this._pixelsPerMercatorPixel=this.projection.pixelSpaceConversion(this.center.lat,this.worldSize,p),this.cameraToCenterDistance=.5/Math.tan(.5*this._fov)*this.height*this._pixelsPerMercatorPixel,this._updateCameraState(),this._farZ=this.projection.farthestPixelDistance(this),this._nearZ=this.height/50;const _=this.projection.zAxisUnit==="meters"?a:1,b=this._camera.getWorldToCamera(this.worldSize,_),I=this._camera.getCameraToClipPerspective(this._fov,this.width/this.height,this._nearZ,this._farZ);I[8]=2*-n.x/this.width,I[9]=2*n.y/this.height;let M=s.mul([],I,b);if(this.projection.isReprojectedInTileSpace){const Te=this.locationCoordinate(this.center),be=s.identity([]);s.translate(be,be,[Te.x*this.worldSize,Te.y*this.worldSize,0]),s.multiply(be,be,Wo(this)),s.translate(be,be,[-Te.x*this.worldSize,-Te.y*this.worldSize,0]),s.multiply(M,M,be),this.inverseAdjustmentMatrix=function(Ae){const ke=Wo(Ae,!0);return Oe([],[ke[0],ke[1],ke[4],ke[5]])}(this)}else this.inverseAdjustmentMatrix=[1,0,0,1];this.mercatorMatrix=s.scale([],M,[this.worldSize,this.worldSize,this.worldSize/_,1]),this.projMatrix=M,this.invProjMatrix=s.invert(new Float64Array(16),this.projMatrix);const P=s.invert([],I);this.frustumCorners=s.FrustumCorners.fromInvProjectionMatrix(P,this.horizonLineFromTop(),this.height);const N=new Float32Array(16);s.identity(N),s.scale(N,N,[1,-1,1]),s.rotateX(N,N,this._pitch),s.rotateZ(N,N,this.angle);const z=s.perspective(new Float32Array(16),this._fov,this.width/this.height,this._nearZ,this._farZ),j=(Math.PI/2-this._pitch)*(this.height/this._fov)*this._horizonShift;z[8]=2*-n.x/this.width,z[9]=2*(n.y+j)/this.height,this.skyboxMatrix=s.multiply(N,z,N);const Y=this.point,J=Y.x,te=Y.y,ee=this.width%2/2,ie=this.height%2/2,V=Math.cos(this.angle),K=Math.sin(this.angle),ae=J-Math.round(J)+V*ee+K*ie,le=te-Math.round(te)+V*ie+K*ee,xe=new Float64Array(M);if(s.translate(xe,xe,[ae>.5?ae-1:ae,le>.5?le-1:le,0]),this.alignedProjMatrix=xe,M=s.create(),s.scale(M,M,[this.width/2,-this.height/2,1]),s.translate(M,M,[1,-1,0]),this.labelPlaneMatrix=M,M=s.create(),s.scale(M,M,[1,-1,1]),s.translate(M,M,[-1,-1,0]),s.scale(M,M,[2/this.width,2/this.height,1]),this.glCoordMatrix=M,this.pixelMatrix=s.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),this._calcFogMatrices(),this._distanceTileDataCache={},M=s.invert(new Float64Array(16),this.pixelMatrix),!M)throw new Error("failed to invert matrix");if(this.pixelMatrixInverse=M,this.projection.name==="globe"||this.mercatorFromTransition){this.globeMatrix=s.calculateGlobeMatrix(this);const Te=[this.globeMatrix[12],this.globeMatrix[13],this.globeMatrix[14]];this.globeCenterInViewSpace=s.transformMat4(Te,Te,b),this.globeRadius=this.worldSize/2/Math.PI-1}else this.globeMatrix=M;this._projMatrixCache={},this._alignedProjMatrixCache={},this._pixelsToTileUnitsCache={}}_calcFogMatrices(){this._fogTileMatrixCache={};const n=this.cameraWorldSizeForFog,a=this.cameraPixelsPerMeter,p=this._camera.position,_=1/this.height/this._pixelsPerMercatorPixel,b=[n,n,a];s.scale$2(b,b,_),s.scale$2(p,p,-1),s.multiply$2(p,p,b);const I=s.create();s.translate(I,I,p),s.scale(I,I,b),this.mercatorFogMatrix=I,this.worldToFogMatrix=this._camera.getWorldToCameraPosition(n,a,_)}_computeCameraPosition(n){const a=(n=n||this.pixelsPerMeter)/this.pixelsPerMeter,p=this._camera.forward(),_=this.point,b=this._mercatorZfromZoom(this._seaLevelZoom?this._seaLevelZoom:this._zoom)*a-n/this.worldSize*this._centerAltitude;return[_.x/this.worldSize-p[0]*b,_.y/this.worldSize-p[1]*b,n/this.worldSize*this._centerAltitude-p[2]*b]}_updateCameraState(){this.height&&(this._camera.setPitchBearing(this._pitch,this.angle),this._camera.position=this._computeCameraPosition())}_translateCameraConstrained(n){const a=this._maxCameraBoundsDistance()*Math.cos(this._pitch),p=this._camera.position[2],_=n[2];let b=1;this.projection.wrap&&(this.center=this.center.wrap()),_>0&&(b=Math.min((a-p)/_,1)),this._camera.position=s.scaleAndAdd([],this._camera.position,n,b),this._updateStateFromCamera()}_updateStateFromCamera(){const n=this._camera.position,a=this._camera.forward(),{pitch:p,bearing:_}=this._camera.getPitchBearing(),b=s.mercatorZfromAltitude(this._centerAltitude,this.center.lat)*this._pixelsPerMercatorPixel,I=this._mercatorZfromZoom(this._maxZoom)*Math.cos(s.degToRad(this._maxPitch)),M=Math.max((n[2]-b)/Math.cos(p),I),P=this._zoomFromMercatorZ(M);s.scaleAndAdd(n,n,a,M),this._pitch=s.clamp(p,s.degToRad(this.minPitch),s.degToRad(this.maxPitch)),this.angle=s.wrap(_,-Math.PI,Math.PI),this._setZoom(s.clamp(P,this._minZoom,this._maxZoom)),this._updateSeaLevelZoom(),this._center=this.coordinateLocation(new s.MercatorCoordinate(n[0],n[1],n[2])),this._unmodified=!1,this._constrain(),this._calcMatrices()}_worldSizeFromZoom(n){return Math.pow(2,n)*this.tileSize}_mercatorZfromZoom(n){return this.cameraToCenterDistance/this._worldSizeFromZoom(n)}_minimumHeightOverTerrain(){const n=Math.min((this._seaLevelZoom!=null?this._seaLevelZoom:this._zoom)+4,this._maxZoom);return this._mercatorZfromZoom(n)}_zoomFromMercatorZ(n){return this.scaleZoom(this.cameraToCenterDistance/(n*this.tileSize))}zoomFromMercatorZAdjusted(n){let a=0,p=s.GLOBE_ZOOM_THRESHOLD_MAX,_=0,b=1/0;for(;p-a>1e-6&&p>a;){const I=a+.5*(p-a),M=this.tileSize*Math.pow(2,I),P=this.getCameraToCenterDistance(this.projection,I,M),N=this.scaleZoom(P/(n*this.tileSize)),z=Math.abs(I-N);z<b&&(b=z,_=I),I<N?a=I:p=I}return _}_terrainEnabled(){return!(!this._elevation||!this.projection.supportsTerrain&&(s.warnOnce("Terrain is not yet supported with alternate projections. Use mercator or globe to enable terrain."),1))}anyCornerOffEdge(n,a){const p=Math.min(n.x,a.x),_=Math.max(n.x,a.x),b=Math.min(n.y,a.y),I=Math.max(n.y,a.y);if(b<this.horizonLineFromTop(!1))return!0;if(this.projection.name!=="mercator")return!1;const M=[new s.Point(p,b),new s.Point(_,I),new s.Point(p,I),new s.Point(_,b)],P=this.renderWorldCopies?-3:0,N=this.renderWorldCopies?4:1;for(const z of M){const j=this.pointRayIntersection(z);if(j.t<0)return!0;const Y=this.rayIntersectionCoordinate(j);if(Y.x<P||Y.y<0||Y.x>N||Y.y>1)return!0}return!1}isHorizonVisible(){return this.pitch+s.radToDeg(this.fovAboveCenter)>88||this.anyCornerOffEdge(new s.Point(0,0),new s.Point(this.width,this.height))}zoomDeltaToMovement(n,a){const p=s.length(s.sub([],this._camera.position,n)),_=this._zoomFromMercatorZ(p)+a;return p-this._mercatorZfromZoom(_)}getCameraPoint(){if(this.projection.name==="globe"){const n=function([a,p,_],b){const I=[a,p,_,1];s.transformMat4$1(I,I,b);const M=I[3]=Math.max(I[3],1e-6);return I[0]/=M,I[1]/=M,I[2]/=M,I}([this.globeMatrix[12],this.globeMatrix[13],this.globeMatrix[14]],this.pixelMatrix);return new s.Point(n[0],n[1])}{const n=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new s.Point(0,n))}}getCameraToCenterDistance(n,a=this.zoom,p=this.worldSize){const _=ws(n,a,this.width,this.height,1024),b=n.pixelSpaceConversion(this.center.lat,p,_);return .5/Math.tan(.5*this._fov)*this.height*b}getWorldToCameraMatrix(){const n=this._camera.getWorldToCamera(this.worldSize,this.projection.zAxisUnit==="meters"?this.pixelsPerMeter:1);return this.projection.name==="globe"&&s.multiply(n,n,this.globeMatrix),n}}function Na(h,n){let a=!1,p=null;const _=()=>{p=null,a&&(h(),p=setTimeout(_,n),a=!1)};return()=>(a=!0,p||_(),p)}class Sc{constructor(n){this._hashName=n&&encodeURIComponent(n),s.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=Na(this._updateHashUnthrottled.bind(this),300)}addTo(n){return this._map=n,s.window.addEventListener("hashchange",this._onHashChange,!1),n.on("moveend",this._updateHash),this}remove(){return this._map?(this._map.off("moveend",this._updateHash),s.window.removeEventListener("hashchange",this._onHashChange,!1),clearTimeout(this._updateHash()),this._map=void 0,this):this}getHashString(){const n=this._map;if(!n)return"";const a=wl(n);if(this._hashName){const p=this._hashName;let _=!1;const b=s.window.location.hash.slice(1).split("&").map(I=>{const M=I.split("=")[0];return M===p?(_=!0,`${M}=${a}`):I}).filter(I=>I);return _||b.push(`${p}=${a}`),`#${b.join("&")}`}return`#${a}`}_getCurrentHash(){const n=s.window.location.hash.replace("#","");if(this._hashName){let a;return n.split("&").map(p=>p.split("=")).forEach(p=>{p[0]===this._hashName&&(a=p)}),(a&&a[1]||"").split("/")}return n.split("/")}_onHashChange(){const n=this._map;if(!n)return!1;const a=this._getCurrentHash();if(a.length>=3&&!a.some(p=>isNaN(p))){const p=n.dragRotate.isEnabled()&&n.touchZoomRotate.isEnabled()?+(a[3]||0):n.getBearing();return n.jumpTo({center:[+a[2],+a[1]],zoom:+a[0],bearing:p,pitch:+(a[4]||0)}),!0}return!1}_updateHashUnthrottled(){const n=s.window.location.href.replace(/(#.+)?$/,this.getHashString());s.window.history.replaceState(s.window.history.state,null,n)}}function wl(h,n){const a=h.getCenter(),p=Math.round(100*h.getZoom())/100,_=Math.ceil((p*Math.LN2+Math.log(512/360/.5))/Math.LN10),b=Math.pow(10,_),I=Math.round(a.lng*b)/b,M=Math.round(a.lat*b)/b,P=h.getBearing(),N=h.getPitch();let z=n?`/${I}/${M}/${p}`:`${p}/${M}/${I}`;return(P||N)&&(z+="/"+Math.round(10*P)/10),N&&(z+=`/${Math.round(N)}`),z}const El={linearity:.3,easing:s.bezier(0,0,.3,1)},wu=s.extend({deceleration:2500,maxSpeed:1400},El),Eu=s.extend({deceleration:20,maxSpeed:1400},El),kt=s.extend({deceleration:1e3,maxSpeed:360},El),co=s.extend({deceleration:1e3,maxSpeed:90},El);class wf{constructor(n){this._map=n,this.clear()}clear(){this._inertiaBuffer=[]}record(n){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:s.exported.now(),settings:n})}_drainInertiaBuffer(){const n=this._inertiaBuffer,a=s.exported.now();for(;n.length>0&&a-n[0].time>160;)n.shift()}_onMoveEnd(n){if(this._map._prefersReducedMotion()||(this._drainInertiaBuffer(),this._inertiaBuffer.length<2))return;const a={zoom:0,bearing:0,pitch:0,pan:new s.Point(0,0),pinchAround:void 0,around:void 0};for(const{settings:b}of this._inertiaBuffer)a.zoom+=b.zoomDelta||0,a.bearing+=b.bearingDelta||0,a.pitch+=b.pitchDelta||0,b.panDelta&&a.pan._add(b.panDelta),b.around&&(a.around=b.around),b.pinchAround&&(a.pinchAround=b.pinchAround);const p=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,_={};if(a.pan.mag()){const b=Sl(a.pan.mag(),p,s.extend({},wu,n||{}));_.offset=a.pan.mult(b.amount/a.pan.mag()),_.center=this._map.transform.center,Tl(_,b)}if(a.zoom){const b=Sl(a.zoom,p,Eu);_.zoom=this._map.transform.zoom+b.amount,Tl(_,b)}if(a.bearing){const b=Sl(a.bearing,p,kt);_.bearing=this._map.transform.bearing+s.clamp(b.amount,-179,179),Tl(_,b)}if(a.pitch){const b=Sl(a.pitch,p,co);_.pitch=this._map.transform.pitch+b.amount,Tl(_,b)}if(_.zoom||_.bearing){const b=a.pinchAround===void 0?a.around:a.pinchAround;_.around=b?this._map.unproject(b):this._map.getCenter()}return this.clear(),_.noMoveStart=!0,_}}function Tl(h,n){(!h.duration||h.duration<n.duration)&&(h.duration=n.duration,h.easing=n.easing)}function Sl(h,n,a){const{maxSpeed:p,linearity:_,deceleration:b}=a,I=s.clamp(h*_/(n/1e3),-p,p),M=Math.abs(I)/(b*_);return{easing:a.easing,duration:1e3*M,amount:I*(M/2)}}class Gn extends s.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(n,a,p,_={}){const b=ut(a.getCanvasContainer(),p),I=a.unproject(b);super(n,s.extend({point:b,lngLat:I,originalEvent:p},_)),this._defaultPrevented=!1,this.target=a}}class Il extends s.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(n,a,p){const _=n==="touchend"?p.changedTouches:p.touches,b=yt(a.getCanvasContainer(),_),I=b.map(P=>a.unproject(P)),M=b.reduce((P,N,z,j)=>P.add(N.div(j.length)),new s.Point(0,0));super(n,{points:b,point:M,lngLats:I,lngLat:a.unproject(M),originalEvent:p}),this._defaultPrevented=!1}}class Tu extends s.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(n,a,p){super(n,{originalEvent:p}),this._defaultPrevented=!1}}class Ic{constructor(n,a){this._map=n,this._clickTolerance=a.clickTolerance}reset(){this._mousedownPos=void 0}wheel(n){return this._firePreventable(new Tu(n.type,this._map,n))}mousedown(n,a){return this._mousedownPos=a,this._firePreventable(new Gn(n.type,this._map,n))}mouseup(n){this._map.fire(new Gn(n.type,this._map,n))}preclick(n){const a=s.extend({},n);a.type="preclick",this._map.fire(new Gn(a.type,this._map,a))}click(n,a){this._mousedownPos&&this._mousedownPos.dist(a)>=this._clickTolerance||(this.preclick(n),this._map.fire(new Gn(n.type,this._map,n)))}dblclick(n){return this._firePreventable(new Gn(n.type,this._map,n))}mouseover(n){this._map.fire(new Gn(n.type,this._map,n))}mouseout(n){this._map.fire(new Gn(n.type,this._map,n))}touchstart(n){return this._firePreventable(new Il(n.type,this._map,n))}touchmove(n){this._map.fire(new Il(n.type,this._map,n))}touchend(n){this._map.fire(new Il(n.type,this._map,n))}touchcancel(n){this._map.fire(new Il(n.type,this._map,n))}_firePreventable(n){if(this._map.fire(n),n.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Su{constructor(n){this._map=n}reset(){this._delayContextMenu=!1,this._contextMenuEvent=void 0}mousemove(n){this._map.fire(new Gn(n.type,this._map,n))}mousedown(){this._delayContextMenu=!0}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Gn("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(n){this._delayContextMenu?this._contextMenuEvent=n:this._map.fire(new Gn(n.type,this._map,n)),this._map.listens("contextmenu")&&n.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Ef{constructor(n,a){this._map=n,this._el=n.getCanvasContainer(),this._container=n.getContainer(),this._clickTolerance=a.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(n,a){this.isEnabled()&&n.shiftKey&&n.button===0&&(Mt(),this._startPos=this._lastPos=a,this._active=!0)}mousemoveWindow(n,a){if(!this._active)return;const p=a,_=this._startPos,b=this._lastPos;if(!_||!b||b.equals(p)||!this._box&&p.dist(_)<this._clickTolerance)return;this._lastPos=p,this._box||(this._box=we("div","mapboxgl-boxzoom",this._container),this._container.classList.add("mapboxgl-crosshair"),this._fireEvent("boxzoomstart",n));const I=Math.min(_.x,p.x),M=Math.max(_.x,p.x),P=Math.min(_.y,p.y),N=Math.max(_.y,p.y);this._map._requestDomTask(()=>{this._box&&(this._box.style.transform=`translate(${I}px,${P}px)`,this._box.style.width=M-I+"px",this._box.style.height=N-P+"px")})}mouseupWindow(n,a){if(!this._active)return;const p=this._startPos,_=a;if(p&&n.button===0){if(this.reset(),Et(),p.x!==_.x||p.y!==_.y)return this._map.fire(new s.Event("boxzoomend",{originalEvent:n})),{cameraAnimation:b=>b.fitScreenCoordinates(p,_,this._map.getBearing(),{linear:!1})};this._fireEvent("boxzoomcancel",n)}}keydown(n){this._active&&n.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",n))}blur(){this.reset()}reset(){this._active=!1,this._container.classList.remove("mapboxgl-crosshair"),this._box&&(this._box.remove(),this._box=null),Le(),delete this._startPos,delete this._lastPos}_fireEvent(n,a){return this._map.fire(new s.Event(n,{originalEvent:a}))}}function Iu(h,n){const a={};for(let p=0;p<h.length;p++)a[h[p].identifier]=n[p];return a}class Ba{constructor(n){this.reset(),this.numTouches=n.numTouches}reset(){this.centroid=void 0,this.startTime=0,this.touches={},this.aborted=!1}touchstart(n,a,p){(this.centroid||p.length>this.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===0&&(this.startTime=n.timeStamp),p.length===this.numTouches&&(this.centroid=function(_){const b=new s.Point(0,0);for(const I of _)b._add(I);return b.div(_.length)}(a),this.touches=Iu(p,a)))}touchmove(n,a,p){if(this.aborted||!this.centroid)return;const _=Iu(p,a);for(const b in this.touches){const I=_[b];(!I||I.dist(this.touches[b])>30)&&(this.aborted=!0)}}touchend(n,a,p){if((!this.centroid||n.timeStamp-this.startTime>500)&&(this.aborted=!0),p.length===0){const _=!this.aborted&&this.centroid;if(this.reset(),_)return _}}}class kc{constructor(n){this.singleTap=new Ba(n),this.numTaps=n.numTaps,this.reset()}reset(){this.lastTime=1/0,this.lastTap=void 0,this.count=0,this.singleTap.reset()}touchstart(n,a,p){this.singleTap.touchstart(n,a,p)}touchmove(n,a,p){this.singleTap.touchmove(n,a,p)}touchend(n,a,p){const _=this.singleTap.touchend(n,a,p);if(_){const b=n.timeStamp-this.lastTime<500,I=!this.lastTap||this.lastTap.dist(_)<30;if(b&&I||this.reset(),this.count++,this.lastTime=n.timeStamp,this.lastTap=_,this.count===this.numTaps)return this.reset(),_}}}class Xd{constructor(){this._zoomIn=new kc({numTouches:1,numTaps:2}),this._zoomOut=new kc({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(n,a,p){this._zoomIn.touchstart(n,a,p),this._zoomOut.touchstart(n,a,p)}touchmove(n,a,p){this._zoomIn.touchmove(n,a,p),this._zoomOut.touchmove(n,a,p)}touchend(n,a,p){const _=this._zoomIn.touchend(n,a,p),b=this._zoomOut.touchend(n,a,p);return _?(this._active=!0,n.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:I=>I.easeTo({duration:300,zoom:I.getZoom()+1,around:I.unproject(_)},{originalEvent:n})}):b?(this._active=!0,n.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:I=>I.easeTo({duration:300,zoom:I.getZoom()-1,around:I.unproject(b)},{originalEvent:n})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}const Tf={0:1,2:2};class Fa{constructor(n){this.reset(),this._clickTolerance=n.clickTolerance||1}blur(){this.reset()}reset(){this._active=!1,this._moved=!1,this._lastPoint=void 0,this._eventButton=void 0}_correctButton(n,a){return!1}_move(n,a){return{}}mousedown(n,a){if(this._lastPoint)return;const p=_t(n);this._correctButton(n,p)&&(this._lastPoint=a,this._eventButton=p)}mousemoveWindow(n,a){const p=this._lastPoint;if(p){if(n.preventDefault(),this._eventButton!=null&&function(_,b){const I=Tf[b];return _.buttons===void 0||(_.buttons&I)!==I}(n,this._eventButton))this.reset();else if(this._moved||!(a.dist(p)<this._clickTolerance))return this._moved=!0,this._lastPoint=a,this._move(p,a)}}mouseupWindow(n){this._lastPoint&&_t(n)===this._eventButton&&(this._moved&&Et(),this.reset())}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Mc extends Fa{mousedown(n,a){super.mousedown(n,a),this._lastPoint&&(this._active=!0)}_correctButton(n,a){return a===0&&!n.ctrlKey}_move(n,a){return{around:a,panDelta:a.sub(n)}}}class Ac extends Fa{_correctButton(n,a){return a===0&&n.ctrlKey||a===2}_move(n,a){const p=.8*(a.x-n.x);if(p)return this._active=!0,{bearingDelta:p}}contextmenu(n){n.preventDefault()}}class Cc extends Fa{_correctButton(n,a){return a===0&&n.ctrlKey||a===2}_move(n,a){const p=-.5*(a.y-n.y);if(p)return this._active=!0,{pitchDelta:p}}contextmenu(n){n.preventDefault()}}class ku{constructor(n,a){this._map=n,this._el=n.getCanvasContainer(),this._minTouches=1,this._clickTolerance=a.clickTolerance||1,this.reset(),s.bindAll(["_addTouchPanBlocker","_showTouchPanBlockerAlert"],this)}reset(){this._active=!1,this._touches={},this._sum=new s.Point(0,0)}touchstart(n,a,p){return this._calculateTransform(n,a,p)}touchmove(n,a,p){if(this._active&&!(p.length<this._minTouches)){if(this._map._cooperativeGestures&&!this._map.isMoving()){if(p.length===1&&!s.isFullscreen())return void this._showTouchPanBlockerAlert();this._alertContainer.style.visibility!=="hidden"&&(this._alertContainer.style.visibility="hidden",clearTimeout(this._alertTimer))}return n.cancelable&&n.preventDefault(),this._calculateTransform(n,a,p)}}touchend(n,a,p){this._calculateTransform(n,a,p),this._active&&p.length<this._minTouches&&this.reset()}touchcancel(){this.reset()}_calculateTransform(n,a,p){p.length>0&&(this._active=!0);const _=Iu(p,a),b=new s.Point(0,0),I=new s.Point(0,0);let M=0;for(const N in _){const z=_[N],j=this._touches[N];j&&(b._add(z),I._add(z.sub(j)),M++,_[N]=z)}if(this._touches=_,M<this._minTouches||!I.mag())return;const P=I.div(M);return this._sum._add(P),this._sum.mag()<this._clickTolerance?void 0:{around:b.div(M),panDelta:P}}enable(){this._enabled=!0,this._map._cooperativeGestures&&(this._addTouchPanBlocker(),this._el.classList.add("mapboxgl-touch-pan-blocker-override","mapboxgl-scrollable-page"))}disable(){this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove(),this._el.classList.remove("mapboxgl-touch-pan-blocker-override","mapboxgl-scrollable-page")),this.reset()}isEnabled(){return!!this._enabled}isActive(){return!!this._active}_addTouchPanBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=we("div","mapboxgl-touch-pan-blocker",this._map._container),this._alertContainer.textContent=this._map._getUIString("TouchPanBlocker.Message"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`)}_showTouchPanBlockerAlert(){this._alertContainer.style.visibility="visible",this._alertContainer.classList.add("mapboxgl-touch-pan-blocker-show"),this._alertContainer.setAttribute("role","alert"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout(()=>{this._alertContainer.classList.remove("mapboxgl-touch-pan-blocker-show"),this._alertContainer.setAttribute("role","null")},500)}}class kl{constructor(){this.reset()}reset(){this._active=!1,this._firstTwoTouches=void 0}_start(n){}_move(n,a,p){return{}}touchstart(n,a,p){this._firstTwoTouches||p.length<2||(this._firstTwoTouches=[p[0].identifier,p[1].identifier],this._start([a[0],a[1]]))}touchmove(n,a,p){const _=this._firstTwoTouches;if(!_)return;n.preventDefault();const[b,I]=_,M=Ml(p,a,b),P=Ml(p,a,I);if(!M||!P)return;const N=this._aroundCenter?null:M.add(P).div(2);return this._move([M,P],N,n)}touchend(n,a,p){if(!this._firstTwoTouches)return;const[_,b]=this._firstTwoTouches,I=Ml(p,a,_),M=Ml(p,a,b);I&&M||(this._active&&Et(),this.reset())}touchcancel(){this.reset()}enable(n){this._enabled=!0,this._aroundCenter=!!n&&n.around==="center"}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}function Ml(h,n,a){for(let p=0;p<h.length;p++)if(h[p].identifier===a)return n[p]}function Pc(h,n){return Math.log(h/n)/Math.LN2}class Sf extends kl{reset(){super.reset(),this._distance=0,this._startDistance=0}_start(n){this._startDistance=this._distance=n[0].dist(n[1])}_move(n,a){const p=this._distance;if(this._distance=n[0].dist(n[1]),this._active||!(Math.abs(Pc(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:Pc(this._distance,p),pinchAround:a}}}function Lc(h,n){return 180*h.angleWith(n)/Math.PI}class If extends kl{reset(){super.reset(),this._minDiameter=0,this._startVector=void 0,this._vector=void 0}_start(n){this._startVector=this._vector=n[0].sub(n[1]),this._minDiameter=n[0].dist(n[1])}_move(n,a){const p=this._vector;if(this._vector=n[0].sub(n[1]),p&&(this._active||!this._isBelowThreshold(this._vector)))return this._active=!0,{bearingDelta:Lc(this._vector,p),pinchAround:a}}_isBelowThreshold(n){this._minDiameter=Math.min(this._minDiameter,n.mag());const a=25/(Math.PI*this._minDiameter)*360,p=this._startVector;if(!p)return!1;const _=Lc(n,p);return Math.abs(_)<a}}function Es(h){return Math.abs(h.y)>Math.abs(h.x)}class kf extends kl{constructor(n){super(),this._map=n}reset(){super.reset(),this._valid=void 0,this._firstMove=void 0,this._lastPoints=void 0}_start(n){this._lastPoints=n,Es(n[0].sub(n[1]))&&(this._valid=!1)}_move(n,a,p){const _=this._lastPoints;if(!_)return;const b=n[0].sub(_[0]),I=n[1].sub(_[1]);return this._map._cooperativeGestures&&!s.isFullscreen()&&p.touches.length<3||(this._valid=this.gestureBeginsVertically(b,I,p.timeStamp),!this._valid)?void 0:(this._lastPoints=n,this._active=!0,{pitchDelta:(b.y+I.y)/2*-.5})}gestureBeginsVertically(n,a,p){if(this._valid!==void 0)return this._valid;const _=n.mag()>=2,b=a.mag()>=2;if(!_&&!b)return;if(!_||!b)return this._firstMove==null&&(this._firstMove=p),p-this._firstMove<100&&void 0;const I=n.y>0==a.y>0;return Es(n)&&Es(a)&&I}}const Mf={panStep:100,bearingStep:15,pitchStep:10};class Wd{constructor(){const n=Mf;this._panStep=n.panStep,this._bearingStep=n.bearingStep,this._pitchStep=n.pitchStep,this._rotationDisabled=!1}blur(){this.reset()}reset(){this._active=!1}keydown(n){if(n.altKey||n.ctrlKey||n.metaKey)return;let a=0,p=0,_=0,b=0,I=0;switch(n.keyCode){case 61:case 107:case 171:case 187:a=1;break;case 189:case 109:case 173:a=-1;break;case 37:n.shiftKey?p=-1:(n.preventDefault(),b=-1);break;case 39:n.shiftKey?p=1:(n.preventDefault(),b=1);break;case 38:n.shiftKey?_=1:(n.preventDefault(),I=-1);break;case 40:n.shiftKey?_=-1:(n.preventDefault(),I=1);break;default:return}return this._rotationDisabled&&(p=0,_=0),{cameraAnimation:M=>{const P=M.getZoom();M.easeTo({duration:300,easeId:"keyboardHandler",easing:Af,zoom:a?Math.round(P)+a*(n.shiftKey?2:1):P,bearing:M.getBearing()+p*this._bearingStep,pitch:M.getPitch()+_*this._pitchStep,offset:[-b*this._panStep,-I*this._panStep],center:M.getCenter()},{originalEvent:n})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function Af(h){return h*(2-h)}const Rc=4.000244140625;class Cf{constructor(n,a){this._map=n,this._el=n.getCanvasContainer(),this._handler=a,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,s.bindAll(["_onTimeout","_addScrollZoomBlocker","_showBlockerAlert"],this)}setZoomRate(n){this._defaultZoomRate=n}setWheelZoomRate(n){this._wheelZoomRate=n}isEnabled(){return!!this._enabled}isActive(){return this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(n){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!n&&n.around==="center",this._map._cooperativeGestures&&this._addScrollZoomBlocker())}disable(){this.isEnabled()&&(this._enabled=!1,this._map._cooperativeGestures&&(clearTimeout(this._alertTimer),this._alertContainer.remove()))}wheel(n){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!(n.ctrlKey||n.metaKey||this.isZooming()||s.isFullscreen()))return void this._showBlockerAlert();this._alertContainer.style.visibility!=="hidden"&&(this._alertContainer.style.visibility="hidden",clearTimeout(this._alertTimer))}let a=n.deltaMode===s.window.WheelEvent.DOM_DELTA_LINE?40*n.deltaY:n.deltaY;const p=s.exported.now(),_=p-(this._lastWheelEventTime||0);this._lastWheelEventTime=p,a!==0&&a%Rc==0?this._type="wheel":a!==0&&Math.abs(a)<4?this._type="trackpad":_>400?(this._type=null,this._lastValue=a,this._timeout=setTimeout(this._onTimeout,40,n)):this._type||(this._type=Math.abs(_*a)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,a+=this._lastValue)),n.shiftKey&&a&&(a/=4),this._type&&(this._lastWheelEvent=n,this._delta-=a,this._active||this._start(n)),n.preventDefault()}_onTimeout(n){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(n)}_start(n){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const a=ut(this._el,n);this._aroundPoint=this._aroundCenter?this._map.transform.centerPoint:a,this._aroundCoord=this._map.transform.pointCoordinate3D(this._aroundPoint),this._targetZoom=void 0,this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;const n=this._map.transform;this._type==="wheel"&&n.projection.wrap&&(n._center.lng>=180||n._center.lng<=-180)&&(this._prevEase=null,this._easing=null,this._lastWheelEvent=null,this._lastWheelEventTime=0);const a=()=>n._terrainEnabled()&&this._aroundCoord?n.computeZoomRelativeTo(this._aroundCoord):n.zoom;if(this._delta!==0){const P=this._type==="wheel"&&Math.abs(this._delta)>Rc?this._wheelZoomRate:this._defaultZoomRate;let N=2/(1+Math.exp(-Math.abs(this._delta*P)));this._delta<0&&N!==0&&(N=1/N);const z=a(),j=Math.pow(2,z),Y=typeof this._targetZoom=="number"?n.zoomScale(this._targetZoom):j;this._targetZoom=Math.min(n.maxZoom,Math.max(n.minZoom,n.scaleZoom(Y*N))),this._type==="wheel"&&(this._startZoom=z,this._easing=this._smoothOutEasing(200)),this._delta=0}const p=typeof this._targetZoom=="number"?this._targetZoom:a(),_=this._startZoom,b=this._easing;let I,M=!1;if(this._type==="wheel"&&_&&b){const P=Math.min((s.exported.now()-this._lastWheelEventTime)/200,1),N=b(P);I=s.number(_,p,N),P<1?this._frameId||(this._frameId=!0):M=!0}else I=p,M=!0;return this._active=!0,M&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!M,zoomDelta:I-a(),around:this._aroundPoint,aroundCoord:this._aroundCoord,originalEvent:this._lastWheelEvent}}_smoothOutEasing(n){let a=s.ease;if(this._prevEase){const p=this._prevEase,_=(s.exported.now()-p.start)/p.duration,b=p.easing(_+.01)-p.easing(_),I=.27/Math.sqrt(b*b+1e-4)*.01,M=Math.sqrt(.0729-I*I);a=s.bezier(I,M,.25,1)}return this._prevEase={start:s.exported.now(),duration:n,easing:a},a}blur(){this.reset()}reset(){this._active=!1}_addScrollZoomBlocker(){this._map&&!this._alertContainer&&(this._alertContainer=we("div","mapboxgl-scroll-zoom-blocker",this._map._container),this._alertContainer.textContent=/(Mac|iPad)/i.test(s.window.navigator.userAgent)?this._map._getUIString("ScrollZoomBlocker.CmdMessage"):this._map._getUIString("ScrollZoomBlocker.CtrlMessage"),this._alertContainer.style.fontSize=`${Math.max(10,Math.min(24,Math.floor(.05*this._el.clientWidth)))}px`)}_showBlockerAlert(){this._alertContainer.style.visibility="visible",this._alertContainer.classList.add("mapboxgl-scroll-zoom-blocker-show"),this._alertContainer.setAttribute("role","alert"),clearTimeout(this._alertTimer),this._alertTimer=setTimeout(()=>{this._alertContainer.classList.remove("mapboxgl-scroll-zoom-blocker-show"),this._alertContainer.setAttribute("role","null")},200)}}class Pf{constructor(n,a){this._clickZoom=n,this._tapZoom=a}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class lr{constructor(){this.reset()}reset(){this._active=!1}blur(){this.reset()}dblclick(n,a){return n.preventDefault(),{cameraAnimation:p=>{p.easeTo({duration:300,zoom:p.getZoom()+(n.shiftKey?-1:1),around:p.unproject(a)},{originalEvent:n})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Yd{constructor(){this._tap=new kc({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,this._swipePoint=void 0,this._swipeTouch=0,this._tapTime=0,this._tap.reset()}touchstart(n,a,p){this._swipePoint||(this._tapTime&&n.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?p.length>0&&(this._swipePoint=a[0],this._swipeTouch=p[0].identifier):this._tap.touchstart(n,a,p))}touchmove(n,a,p){if(this._tapTime){if(this._swipePoint){if(p[0].identifier!==this._swipeTouch)return;const _=a[0],b=_.y-this._swipePoint.y;return this._swipePoint=_,n.preventDefault(),this._active=!0,{zoomDelta:b/128}}}else this._tap.touchmove(n,a,p)}touchend(n,a,p){this._tapTime?this._swipePoint&&p.length===0&&this.reset():this._tap.touchend(n,a,p)&&(this._tapTime=n.timeStamp)}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Lf{constructor(n,a,p){this._el=n,this._mousePan=a,this._touchPan=p}enable(n){this._inertiaOptions=n||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Hd{constructor(n,a,p){this._pitchWithRotate=n.pitchWithRotate,this._mouseRotate=a,this._mousePitch=p}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Kd{constructor(n,a,p,_){this._el=n,this._touchZoom=a,this._touchRotate=p,this._tapDragZoom=_,this._rotationDisabled=!1,this._enabled=!0}enable(n){this._touchZoom.enable(n),this._rotationDisabled||this._touchRotate.enable(n),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}const Kr=h=>h.zoom||h.drag||h.pitch||h.rotate;class Rf extends s.Event{}class Jd{constructor(){this.constants=[1,1,.01],this.radius=0}setup(n,a){const p=s.sub([],a,n);this.radius=s.length(p[2]<0?s.div([],p,this.constants):[p[0],p[1],0])}projectRay(n){s.div(n,n,this.constants),s.normalize(n,n),s.mul$1(n,n,this.constants);const a=s.scale$2([],n,this.radius);if(a[2]>0){const p=s.scale$2([],[0,0,1],s.dot(a,[0,0,1])),_=s.scale$2([],s.normalize([],[a[0],a[1],0]),this.radius),b=s.add([],a,s.scale$2([],s.sub([],s.add([],_,p),a),2));a[0]=b[0],a[1]=b[1]}return a}}function ho(h){return h.panDelta&&h.panDelta.mag()||h.zoomDelta||h.bearingDelta||h.pitchDelta}class Io{constructor(n,a){this._map=n,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new wf(n),this._bearingSnap=a.bearingSnap,this._previousActiveHandlers={},this._trackingEllipsoid=new Jd,this._dragOrigin=null,this._eventsInProgress={},this._addDefaultHandlers(a),s.bindAll(["handleEvent","handleWindowEvent"],this);const p=this._el;this._listeners=[[p,"touchstart",{passive:!0}],[p,"touchmove",{passive:!1}],[p,"touchend",void 0],[p,"touchcancel",void 0],[p,"mousedown",void 0],[p,"mousemove",void 0],[p,"mouseup",void 0],[s.window.document,"mousemove",{capture:!0}],[s.window.document,"mouseup",void 0],[p,"mouseover",void 0],[p,"mouseout",void 0],[p,"dblclick",void 0],[p,"click",void 0],[p,"keydown",{capture:!1}],[p,"keyup",void 0],[p,"wheel",{passive:!1}],[p,"contextmenu",void 0],[s.window,"blur",void 0]];for(const[_,b,I]of this._listeners)_.addEventListener(b,_===s.window.document?this.handleWindowEvent:this.handleEvent,I)}destroy(){for(const[n,a,p]of this._listeners)n.removeEventListener(a,n===s.window.document?this.handleWindowEvent:this.handleEvent,p)}_addDefaultHandlers(n){const a=this._map,p=a.getCanvasContainer();this._add("mapEvent",new Ic(a,n));const _=a.boxZoom=new Ef(a,n);this._add("boxZoom",_);const b=new Xd,I=new lr;a.doubleClickZoom=new Pf(I,b),this._add("tapZoom",b),this._add("clickZoom",I);const M=new Yd;this._add("tapDragZoom",M);const P=a.touchPitch=new kf(a);this._add("touchPitch",P);const N=new Ac(n),z=new Cc(n);a.dragRotate=new Hd(n,N,z),this._add("mouseRotate",N,["mousePitch"]),this._add("mousePitch",z,["mouseRotate"]);const j=new Mc(n),Y=new ku(a,n);a.dragPan=new Lf(p,j,Y),this._add("mousePan",j),this._add("touchPan",Y,["touchZoom","touchRotate"]);const J=new If,te=new Sf;a.touchZoomRotate=new Kd(p,te,J,M),this._add("touchRotate",J,["touchPan","touchZoom"]),this._add("touchZoom",te,["touchPan","touchRotate"]),this._add("blockableMapEvent",new Su(a));const ee=a.scrollZoom=new Cf(a,this);this._add("scrollZoom",ee,["mousePan"]);const ie=a.keyboard=new Wd;this._add("keyboard",ie);for(const V of["boxZoom","doubleClickZoom","tapDragZoom","touchPitch","dragRotate","dragPan","touchZoomRotate","scrollZoom","keyboard"])n.interactive&&n[V]&&a[V].enable(n[V])}_add(n,a,p){this._handlers.push({handlerName:n,handler:a,allowed:p}),this._handlersById[n]=a}stop(n){if(!this._updatingCamera){for(const{handler:a}of this._handlers)a.reset();this._inertia.clear(),this._fireEvents({},{},n),this._changes=[]}}isActive(){for(const{handler:n}of this._handlers)if(n.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Kr(this._eventsInProgress)||this.isZooming()}_isDragging(){return!!this._eventsInProgress.drag}_blockedByActive(n,a,p){for(const _ in n)if(_!==p&&(!a||a.indexOf(_)<0))return!0;return!1}handleWindowEvent(n){this.handleEvent(n,`${n.type}Window`)}_getMapTouches(n){const a=[];for(const p of n)this._el.contains(p.target)&&a.push(p);return a}handleEvent(n,a){this._updatingCamera=!0;const p=n.type==="renderFrame",_=p?void 0:n,b={needsRenderFrame:!1},I={},M={},P=n.touches?this._getMapTouches(n.touches):void 0,N=P?yt(this._el,P):p?void 0:ut(this._el,n);for(const{handlerName:Y,handler:J,allowed:te}of this._handlers){if(!J.isEnabled())continue;let ee;this._blockedByActive(M,te,Y)?J.reset():J[a||n.type]&&(ee=J[a||n.type](n,N,P),this.mergeHandlerResult(b,I,ee,Y,_),ee&&ee.needsRenderFrame&&this._triggerRenderFrame()),(ee||J.isActive())&&(M[Y]=J)}const z={};for(const Y in this._previousActiveHandlers)M[Y]||(z[Y]=_);this._previousActiveHandlers=M,(Object.keys(z).length||ho(b))&&(this._changes.push([b,I,z]),this._triggerRenderFrame()),(Object.keys(M).length||ho(b))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:j}=b;j&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],j(this._map))}mergeHandlerResult(n,a,p,_,b){if(!p)return;s.extend(n,p);const I={handlerName:_,originalEvent:p.originalEvent||b};p.zoomDelta!==void 0&&(a.zoom=I),p.panDelta!==void 0&&(a.drag=I),p.pitchDelta!==void 0&&(a.pitch=I),p.bearingDelta!==void 0&&(a.rotate=I)}_applyChanges(){const n={},a={},p={};for(const[_,b,I]of this._changes)_.panDelta&&(n.panDelta=(n.panDelta||new s.Point(0,0))._add(_.panDelta)),_.zoomDelta&&(n.zoomDelta=(n.zoomDelta||0)+_.zoomDelta),_.bearingDelta&&(n.bearingDelta=(n.bearingDelta||0)+_.bearingDelta),_.pitchDelta&&(n.pitchDelta=(n.pitchDelta||0)+_.pitchDelta),_.around!==void 0&&(n.around=_.around),_.aroundCoord!==void 0&&(n.aroundCoord=_.aroundCoord),_.pinchAround!==void 0&&(n.pinchAround=_.pinchAround),_.noInertia&&(n.noInertia=_.noInertia),s.extend(a,b),s.extend(p,I);this._updateMapTransform(n,a,p),this._changes=[]}_updateMapTransform(n,a,p){const _=this._map,b=_.transform,I=K=>[K.x,K.y,K.z];if((K=>{const ae=this._eventsInProgress.drag;return ae&&!this._handlersById[ae.handlerName].isActive()})()&&!ho(n)){const K=b.zoom;b.cameraElevationReference="sea",b.recenterOnTerrain(),b.cameraElevationReference="ground",K!==b.zoom&&this._map._update(!0)}if(b._isCameraConstrained&&_._stop(!0),!ho(n))return void this._fireEvents(a,p,!0);let{panDelta:M,zoomDelta:P,bearingDelta:N,pitchDelta:z,around:j,aroundCoord:Y,pinchAround:J}=n;b._isCameraConstrained&&(P>0&&(P=0),b._isCameraConstrained=!1),J!==void 0&&(j=J),(P||(K=>a[K]&&!this._eventsInProgress[K])("drag"))&&j&&(this._dragOrigin=I(b.pointCoordinate3D(j)),this._trackingEllipsoid.setup(b._camera.position,this._dragOrigin)),b.cameraElevationReference="sea",_._stop(!0),j=j||_.transform.centerPoint,N&&(b.bearing+=N),z&&(b.pitch+=z),b._updateCameraState();const te=[0,0,0];if(M)if(b.projection.name==="mercator"){const K=this._trackingEllipsoid.projectRay(b.screenPointToMercatorRay(j).dir),ae=this._trackingEllipsoid.projectRay(b.screenPointToMercatorRay(j.sub(M)).dir);te[0]=ae[0]-K[0],te[1]=ae[1]-K[1]}else{const K=b.pointCoordinate(j);if(b.projection.name==="globe"){M=M.rotate(-b.angle);const ae=b._pixelsPerMercatorPixel/b.worldSize;te[0]=-M.x*s.mercatorScale(s.latFromMercatorY(K.y))*ae,te[1]=-M.y*s.mercatorScale(b.center.lat)*ae}else{const ae=b.pointCoordinate(j.sub(M));K&&ae&&(te[0]=ae.x-K.x,te[1]=ae.y-K.y)}}const ee=b.zoom,ie=[0,0,0];if(P){const K=I(Y||b.pointCoordinate3D(j)),ae={dir:s.normalize([],s.sub([],K,b._camera.position))};if(ae.dir[2]<0){const le=b.zoomDeltaToMovement(K,P);s.scale$2(ie,ae.dir,le)}}const V=s.add(te,te,ie);b._translateCameraConstrained(V),P&&Math.abs(b.zoom-ee)>1e-4&&b.recenterOnTerrain(),b.cameraElevationReference="ground",this._map._update(),n.noInertia||this._inertia.record(n),this._fireEvents(a,p,!0)}_fireEvents(n,a,p){const _=Kr(this._eventsInProgress),b=Kr(n),I={};for(const z in n){const{originalEvent:j}=n[z];this._eventsInProgress[z]||(I[`${z}start`]=j),this._eventsInProgress[z]=n[z]}!_&&b&&this._fireEvent("movestart",b.originalEvent);for(const z in I)this._fireEvent(z,I[z]);b&&this._fireEvent("move",b.originalEvent);for(const z in n){const{originalEvent:j}=n[z];this._fireEvent(z,j)}const M={};let P;for(const z in this._eventsInProgress){const{handlerName:j,originalEvent:Y}=this._eventsInProgress[z];this._handlersById[j].isActive()||(delete this._eventsInProgress[z],P=a[j]||Y,M[`${z}end`]=P)}for(const z in M)this._fireEvent(z,M[z]);const N=Kr(this._eventsInProgress);if(p&&(_||b)&&!N){this._updatingCamera=!0;const z=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),j=Y=>Y!==0&&-this._bearingSnap<Y&&Y<this._bearingSnap;z?(j(z.bearing||this._map.getBearing())&&(z.bearing=0),this._map.easeTo(z,{originalEvent:P})):(this._map.fire(new s.Event("moveend",{originalEvent:P})),j(this._map.getBearing())&&this._map.resetNorth()),this._updatingCamera=!1}}_fireEvent(n,a){this._map.fire(new s.Event(n,a?{originalEvent:a}:{}))}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add(n=>{this._frameId=void 0,this.handleEvent(new Rf("renderFrame",{timeStamp:n})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}const Js="map.setFreeCameraOptions(...) and map.getFreeCameraOptions() are not yet supported for non-mercator projections.";class Mu extends s.Evented{constructor(n,a){super(),this._moving=!1,this._zooming=!1,this.transform=n,this._bearingSnap=a.bearingSnap,this._respectPrefersReducedMotion=a.respectPrefersReducedMotion!==!1,s.bindAll(["_renderFrameCallback"],this)}getCenter(){return new s.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(n,a){return this.jumpTo({center:n},a)}panBy(n,a,p){return n=s.Point.convert(n).mult(-1),this.panTo(this.transform.center,s.extend({offset:n},a),p)}panTo(n,a,p){return this.easeTo(s.extend({center:n},a),p)}getZoom(){return this.transform.zoom}setZoom(n,a){return this.jumpTo({zoom:n},a),this}zoomTo(n,a,p){return this.easeTo(s.extend({zoom:n},a),p)}zoomIn(n,a){return this.zoomTo(this.getZoom()+1,n,a),this}zoomOut(n,a){return this.zoomTo(this.getZoom()-1,n,a),this}getBearing(){return this.transform.bearing}setBearing(n,a){return this.jumpTo({bearing:n},a),this}getPadding(){return this.transform.padding}setPadding(n,a){return this.jumpTo({padding:n},a),this}rotateTo(n,a,p){return this.easeTo(s.extend({bearing:n},a),p)}resetNorth(n,a){return this.rotateTo(0,s.extend({duration:1e3},n),a),this}resetNorthPitch(n,a){return this.easeTo(s.extend({bearing:0,pitch:0,duration:1e3},n),a),this}snapToNorth(n,a){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(n,a):this}getPitch(){return this.transform.pitch}setPitch(n,a){return this.jumpTo({pitch:n},a),this}cameraForBounds(n,a){n=s.LngLatBounds.convert(n);const p=a&&a.bearing||0,_=a&&a.pitch||0,b=n.getNorthWest(),I=n.getSouthEast();return this._cameraForBounds(this.transform,b,I,p,_,a)}_extendCameraOptions(n){const a={top:0,bottom:0,right:0,left:0};if(typeof(n=s.extend({padding:a,offset:[0,0],maxZoom:this.transform.maxZoom},n)).padding=="number"){const p=n.padding;n.padding={top:p,bottom:p,right:p,left:p}}return n.padding=s.extend(a,n.padding),n}_minimumAABBFrustumDistance(n,a){const p=a.max[0]-a.min[0],_=a.max[1]-a.min[1];return p/_>n.aspect?p/(2*Math.tan(.5*n.fovX)*n.aspect):_/(2*Math.tan(.5*n.fovY)*n.aspect)}_cameraForBoundsOnGlobe(n,a,p,_,b,I){const M=n.clone(),P=this._extendCameraOptions(I);M.bearing=_,M.pitch=b;const N=s.LngLat.convert(a),z=s.LngLat.convert(p),j=.5*(N.lat+z.lat),Y=.5*(N.lng+z.lng),J=s.latLngToECEF(j,Y),te=s.normalize([],J),ee=s.normalize([],s.cross([],te,[0,1,0])),ie=s.cross([],ee,te),V=[ee[0],ee[1],ee[2],0,ie[0],ie[1],ie[2],0,te[0],te[1],te[2],0,0,0,0,1],K=[J,s.latLngToECEF(N.lat,N.lng),s.latLngToECEF(z.lat,N.lng),s.latLngToECEF(z.lat,z.lng),s.latLngToECEF(N.lat,z.lng),s.latLngToECEF(j,N.lng),s.latLngToECEF(j,z.lng),s.latLngToECEF(N.lat,Y),s.latLngToECEF(z.lat,Y)];let ae=s.Aabb.fromPoints(K.map(Ke=>[s.dot(ee,Ke),s.dot(ie,Ke),s.dot(te,Ke)]));const le=s.transformMat4([],ae.center,V);s.squaredLength(le)===0&&s.set(le,0,0,1),s.normalize(le,le),s.scale$2(le,le,s.GLOBE_RADIUS),M.center=s.ecefToLatLng(le);const xe=M.getWorldToCameraMatrix(),Te=s.invert(new Float64Array(16),xe);ae=s.Aabb.applyTransform(ae,s.multiply([],xe,V)),s.transformMat4(le,le,xe);const be=.5*(ae.max[2]-ae.min[2]),Ae=this._minimumAABBFrustumDistance(M,ae),ke=s.scale$2([],[0,0,1],be),Ne=s.add(ke,le,ke),tt=Ae+(M.pitch===0?0:s.distance(le,Ne)),Re=M.globeCenterInViewSpace,We=s.sub([],le,[Re[0],Re[1],Re[2]]);s.normalize(We,We),s.scale$2(We,We,tt);const je=s.add([],le,We);s.transformMat4(je,je,Te);const et=s.earthRadius/s.GLOBE_RADIUS,ze=s.length(je),Ze=s.mercatorZfromAltitude(Math.max(ze*et-s.earthRadius,Number.EPSILON),0),rt=Math.min(M.zoomFromMercatorZAdjusted(Ze),P.maxZoom);return rt>.5*(s.GLOBE_ZOOM_THRESHOLD_MIN+s.GLOBE_ZOOM_THRESHOLD_MAX)?(M.setProjection({name:"mercator"}),M.zoom=rt,this._cameraForBounds(M,a,p,_,b,I)):{center:M.center,zoom:rt,bearing:_,pitch:b}}queryTerrainElevation(n,a){const p=this.transform.elevation;return p?(a=s.extend({},{exaggerated:!0},a),p.getAtPoint(s.MercatorCoordinate.fromLngLat(n),null,a.exaggerated)):null}_cameraForBounds(n,a,p,_,b,I){if(n.projection.name==="globe")return this._cameraForBoundsOnGlobe(n,a,p,_,b,I);const M=n.clone(),P=this._extendCameraOptions(I),N=M.padding;M.bearing=_,M.pitch=b;const z=s.LngLat.convert(a),j=s.LngLat.convert(p),Y=new s.LngLat(z.lng,j.lat),J=new s.LngLat(j.lng,z.lat),te=M.project(z),ee=M.project(j),ie=this.queryTerrainElevation(z),V=this.queryTerrainElevation(j),K=this.queryTerrainElevation(Y),ae=this.queryTerrainElevation(J),le=[[te.x,te.y,Math.min(ie||0,V||0,K||0,ae||0)],[ee.x,ee.y,Math.max(ie||0,V||0,K||0,ae||0)]];let xe=s.Aabb.fromPoints(le);const Te=M.getWorldToCameraMatrix(),be=s.invert(new Float64Array(16),Te);xe=s.Aabb.applyTransform(xe,Te);const Ae=s.sub([],xe.max,xe.min),ke=N.left||0,Ne=N.right||0,tt=N.bottom||0,Re=N.top||0,{left:We,right:je,top:et,bottom:ze}=P.padding,Ze=.5*(ke+Ne),rt=.5*(Re+tt),Ke=Math.min(M.scaleZoom(M.scale*Math.min((M.width-(ke+Ne+We+je))/Ae[0],(M.height-(tt+Re+ze+et))/Ae[1])),P.maxZoom),st=M.scale/M.zoomScale(Ke);xe=new s.Aabb([xe.min[0]-(We+Ze)*st,xe.min[1]-(ze+rt)*st,xe.min[2]],[xe.max[0]+(je+Ze)*st,xe.max[1]+(et+rt)*st,xe.max[2]]);const zt=.5*Ae[2],Kt=this._minimumAABBFrustumDistance(M,xe),Pt=[0,0,1,0];s.transformMat4$1(Pt,Pt,Te),s.normalize$2(Pt,Pt);const jt=s.scale$2([],Pt,Kt+zt),mi=s.add([],xe.center,jt),di=(typeof P.offset.x=="number"&&typeof P.offset.y=="number"?new s.Point(P.offset.x,P.offset.y):s.Point.convert(P.offset)).rotate(-s.degToRad(_));xe.center[0]-=di.x*st,xe.center[1]+=di.y*st,s.transformMat4(xe.center,xe.center,be),s.transformMat4(mi,mi,be);const Ot=[xe.center[0],xe.center[1],mi[2]*M.pixelsPerMeter];s.scale$2(Ot,Ot,1/M.worldSize);const Di=s.lngFromMercatorX(Ot[0]),Bi=s.latFromMercatorY(Ot[1]),Fi=Math.min(M._zoomFromMercatorZ(Ot[2]),P.maxZoom),Ui=new s.LngLat(Di,Bi);return M.mercatorFromTransition&&Fi<.5*(s.GLOBE_ZOOM_THRESHOLD_MIN+s.GLOBE_ZOOM_THRESHOLD_MAX)?(M.setProjection({name:"globe"}),M.zoom=Fi,this._cameraForBounds(M,a,p,_,b,I)):{center:Ui,zoom:Fi,bearing:_,pitch:b}}fitBounds(n,a,p){const _=this.cameraForBounds(n,a);return this._fitInternal(_,a,p)}fitScreenCoordinates(n,a,p,_,b){const I=s.Point.convert(n),M=s.Point.convert(a),P=new s.Point(Math.min(I.x,M.x),Math.min(I.y,M.y)),N=new s.Point(Math.max(I.x,M.x),Math.max(I.y,M.y));if(this.transform.projection.name==="mercator"&&this.transform.anyCornerOffEdge(I,M))return this;const z=this.transform.pointLocation3D(P),j=this.transform.pointLocation3D(N),Y=this.transform.pointLocation3D(new s.Point(P.x,N.y)),J=this.transform.pointLocation3D(new s.Point(N.x,P.y)),te=[Math.min(z.lng,j.lng,Y.lng,J.lng),Math.min(z.lat,j.lat,Y.lat,J.lat)],ee=[Math.max(z.lng,j.lng,Y.lng,J.lng),Math.max(z.lat,j.lat,Y.lat,J.lat)],ie=_&&_.pitch?_.pitch:this.getPitch(),V=this._cameraForBounds(this.transform,te,ee,p,ie,_);return this._fitInternal(V,_,b)}_fitInternal(n,a,p){return n?(delete(a=s.extend(n,a)).padding,a.linear?this.easeTo(a,p):this.flyTo(a,p)):this}jumpTo(n,a){this.stop();const p=n.preloadOnly?this.transform.clone():this.transform;let _=!1,b=!1,I=!1;return"zoom"in n&&p.zoom!==+n.zoom&&(_=!0,p.zoom=+n.zoom),n.center!==void 0&&(p.center=s.LngLat.convert(n.center)),"bearing"in n&&p.bearing!==+n.bearing&&(b=!0,p.bearing=+n.bearing),"pitch"in n&&p.pitch!==+n.pitch&&(I=!0,p.pitch=+n.pitch),n.padding==null||p.isPaddingEqual(n.padding)||(p.padding=n.padding),n.preloadOnly?(this._preloadTiles(p),this):(this.fire(new s.Event("movestart",a)).fire(new s.Event("move",a)),_&&this.fire(new s.Event("zoomstart",a)).fire(new s.Event("zoom",a)).fire(new s.Event("zoomend",a)),b&&this.fire(new s.Event("rotatestart",a)).fire(new s.Event("rotate",a)).fire(new s.Event("rotateend",a)),I&&this.fire(new s.Event("pitchstart",a)).fire(new s.Event("pitch",a)).fire(new s.Event("pitchend",a)),this.fire(new s.Event("moveend",a)))}getFreeCameraOptions(){return this.transform.projection.supportsFreeCamera||s.warnOnce(Js),this.transform.getFreeCameraOptions()}setFreeCameraOptions(n,a){const p=this.transform;if(!p.projection.supportsFreeCamera)return s.warnOnce(Js),this;this.stop();const _=p.zoom,b=p.pitch,I=p.bearing;p.setFreeCameraOptions(n);const M=_!==p.zoom,P=b!==p.pitch,N=I!==p.bearing;return this.fire(new s.Event("movestart",a)).fire(new s.Event("move",a)),M&&this.fire(new s.Event("zoomstart",a)).fire(new s.Event("zoom",a)).fire(new s.Event("zoomend",a)),N&&this.fire(new s.Event("rotatestart",a)).fire(new s.Event("rotate",a)).fire(new s.Event("rotateend",a)),P&&this.fire(new s.Event("pitchstart",a)).fire(new s.Event("pitch",a)).fire(new s.Event("pitchend",a)),this.fire(new s.Event("moveend",a)),this}easeTo(n,a){this._stop(!1,n.easeId),((n=s.extend({offset:[0,0],duration:500,easing:s.ease},n)).animate===!1||this._prefersReducedMotion(n))&&(n.duration=0);const p=this.transform,_=this.getZoom(),b=this.getBearing(),I=this.getPitch(),M=this.getPadding(),P="zoom"in n?+n.zoom:_,N="bearing"in n?this._normalizeBearing(n.bearing,b):b,z="pitch"in n?+n.pitch:I,j="padding"in n?n.padding:p.padding,Y=s.Point.convert(n.offset);let J,te,ee;if(p.projection.name==="globe"){const ke=s.MercatorCoordinate.fromLngLat(p.center),Ne=Y.rotate(-p.angle);ke.x+=Ne.x/p.worldSize,ke.y+=Ne.y/p.worldSize;const tt=ke.toLngLat(),Re=s.LngLat.convert(n.center||tt);this._normalizeCenter(Re),J=p.centerPoint.add(Ne),te=new s.Point(ke.x,ke.y).mult(p.worldSize),ee=new s.Point(s.mercatorXfromLng(Re.lng),s.mercatorYfromLat(Re.lat)).mult(p.worldSize).sub(te)}else{J=p.centerPoint.add(Y);const ke=p.pointLocation(J),Ne=s.LngLat.convert(n.center||ke);this._normalizeCenter(Ne),te=p.project(ke),ee=p.project(Ne).sub(te)}const ie=p.zoomScale(P-_);let V,K;n.around&&(V=s.LngLat.convert(n.around),K=p.locationPoint(V));const ae=this._zooming||P!==_,le=this._rotating||b!==N,xe=this._pitching||z!==I,Te=!p.isPaddingEqual(j),be=ke=>Ne=>{if(ae&&(ke.zoom=s.number(_,P,Ne)),le&&(ke.bearing=s.number(b,N,Ne)),xe&&(ke.pitch=s.number(I,z,Ne)),Te&&(ke.interpolatePadding(M,j,Ne),J=ke.centerPoint.add(Y)),V)ke.setLocationAtPoint(V,K);else{const tt=ke.zoomScale(ke.zoom-_),Re=P>_?Math.min(2,ie):Math.max(.5,ie),We=Math.pow(Re,1-Ne),je=ke.unproject(te.add(ee.mult(Ne*We)).mult(tt));ke.setLocationAtPoint(ke.renderWorldCopies?je.wrap():je,J)}return n.preloadOnly||this._fireMoveEvents(a),ke};if(n.preloadOnly){const ke=this._emulate(be,n.duration,p);return this._preloadTiles(ke),this}const Ae={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=ae,this._rotating=le,this._pitching=xe,this._padding=Te,this._easeId=n.easeId,this._prepareEase(a,n.noMoveStart,Ae),this._ease(be(p),ke=>{p.recenterOnTerrain(),this._afterEase(a,ke)},n),this}_prepareEase(n,a,p={}){this._moving=!0,this.transform.cameraElevationReference="sea",a||p.moving||this.fire(new s.Event("movestart",n)),this._zooming&&!p.zooming&&this.fire(new s.Event("zoomstart",n)),this._rotating&&!p.rotating&&this.fire(new s.Event("rotatestart",n)),this._pitching&&!p.pitching&&this.fire(new s.Event("pitchstart",n))}_fireMoveEvents(n){this.fire(new s.Event("move",n)),this._zooming&&this.fire(new s.Event("zoom",n)),this._rotating&&this.fire(new s.Event("rotate",n)),this._pitching&&this.fire(new s.Event("pitch",n))}_afterEase(n,a){if(this._easeId&&a&&this._easeId===a)return;this._easeId=void 0,this.transform.cameraElevationReference="ground";const p=this._zooming,_=this._rotating,b=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,p&&this.fire(new s.Event("zoomend",n)),_&&this.fire(new s.Event("rotateend",n)),b&&this.fire(new s.Event("pitchend",n)),this.fire(new s.Event("moveend",n))}flyTo(n,a){if(this._prefersReducedMotion(n)){const Ke=s.pick(n,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Ke,a)}this.stop(),n=s.extend({offset:[0,0],speed:1.2,curve:1.42,easing:s.ease},n);const p=this.transform,_=this.getZoom(),b=this.getBearing(),I=this.getPitch(),M=this.getPadding(),P="zoom"in n?s.clamp(+n.zoom,p.minZoom,p.maxZoom):_,N="bearing"in n?this._normalizeBearing(n.bearing,b):b,z="pitch"in n?+n.pitch:I,j="padding"in n?n.padding:p.padding,Y=p.zoomScale(P-_),J=s.Point.convert(n.offset);let te=p.centerPoint.add(J);const ee=p.pointLocation(te),ie=s.LngLat.convert(n.center||ee);this._normalizeCenter(ie);const V=p.project(ee),K=p.project(ie).sub(V);let ae=n.curve;const le=Math.max(p.width,p.height),xe=le/Y,Te=K.mag();if("minZoom"in n){const Ke=s.clamp(Math.min(n.minZoom,_,P),p.minZoom,p.maxZoom),st=le/p.zoomScale(Ke-_);ae=Math.sqrt(st/Te*2)}const be=ae*ae;function Ae(Ke){const st=(xe*xe-le*le+(Ke?-1:1)*be*be*Te*Te)/(2*(Ke?xe:le)*be*Te);return Math.log(Math.sqrt(st*st+1)-st)}function ke(Ke){return(Math.exp(Ke)-Math.exp(-Ke))/2}function Ne(Ke){return(Math.exp(Ke)+Math.exp(-Ke))/2}const tt=Ae(0);let Re=function(Ke){return Ne(tt)/Ne(tt+ae*Ke)},We=function(Ke){return le*((Ne(tt)*(ke(st=tt+ae*Ke)/Ne(st))-ke(tt))/be)/Te;var st},je=(Ae(1)-tt)/ae;if(Math.abs(Te)<1e-6||!isFinite(je)){if(Math.abs(le-xe)<1e-6)return this.easeTo(n,a);const Ke=xe<le?-1:1;je=Math.abs(Math.log(xe/le))/ae,We=function(){return 0},Re=function(st){return Math.exp(Ke*ae*st)}}n.duration="duration"in n?+n.duration:1e3*je/("screenSpeed"in n?+n.screenSpeed/ae:+n.speed),n.maxDuration&&n.duration>n.maxDuration&&(n.duration=0);const et=b!==N,ze=z!==I,Ze=!p.isPaddingEqual(j),rt=Ke=>st=>{const zt=st*je,Kt=1/Re(zt);Ke.zoom=st===1?P:_+Ke.scaleZoom(Kt),et&&(Ke.bearing=s.number(b,N,st)),ze&&(Ke.pitch=s.number(I,z,st)),Ze&&(Ke.interpolatePadding(M,j,st),te=Ke.centerPoint.add(J));const Pt=st===1?ie:Ke.unproject(V.add(K.mult(We(zt))).mult(Kt));return Ke.setLocationAtPoint(Ke.renderWorldCopies?Pt.wrap():Pt,te),Ke._updateCameraOnTerrain(),n.preloadOnly||this._fireMoveEvents(a),Ke};if(n.preloadOnly){const Ke=this._emulate(rt,n.duration,p);return this._preloadTiles(Ke),this}return this._zooming=!0,this._rotating=et,this._pitching=ze,this._padding=Ze,this._prepareEase(a,!1),this._ease(rt(p),()=>this._afterEase(a),n),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(n,a){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),this._easeFrameId=void 0,this._onEaseFrame=void 0),this._onEaseEnd){const p=this._onEaseEnd;this._onEaseEnd=void 0,p.call(this,a)}if(!n){const p=this.handlers;p&&p.stop(!1)}return this}_ease(n,a,p){p.animate===!1||p.duration===0?(n(1),a()):(this._easeStart=s.exported.now(),this._easeOptions=p,this._onEaseFrame=n,this._onEaseEnd=a,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_renderFrameCallback(){const n=Math.min((s.exported.now()-this._easeStart)/this._easeOptions.duration,1),a=this._onEaseFrame;a&&a(this._easeOptions.easing(n)),n<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()}_normalizeBearing(n,a){n=s.wrap(n,-180,180);const p=Math.abs(n-a);return Math.abs(n-360-a)<p&&(n-=360),Math.abs(n+360-a)<p&&(n+=360),n}_normalizeCenter(n){const a=this.transform;if(!a.renderWorldCopies||a.maxBounds)return;const p=n.lng-a.center.lng;n.lng+=p>180?-360:p<-180?360:0}_prefersReducedMotion(n){return this._respectPrefersReducedMotion&&s.exported.prefersReducedMotion&&!(n&&n.essential)}_emulate(n,a,p){const _=Math.ceil(15*a/1e3),b=[],I=n(p.clone());for(let M=0;M<=_;M++){const P=I(M/_);b.push(P.clone())}return b}}class Ct{constructor(n={}){this.options=n,s.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)}getDefaultPosition(){return"bottom-right"}onAdd(n){const a=this.options&&this.options.compact;return this._map=n,this._container=we("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=we("button","mapboxgl-ctrl-attrib-button",this._container),we("span","mapboxgl-ctrl-icon",this._compactButton).setAttribute("aria-hidden","true"),this._compactButton.type="button",this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=we("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),a&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),a===void 0&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container}onRemove(){this._container.remove(),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0}_setElementTitle(n,a){const p=this._map._getUIString(`AttributionControl.${a}`);n.setAttribute("aria-label",p),n.removeAttribute("title"),n.firstElementChild&&n.firstElementChild.setAttribute("title",p)}_toggleAttribution(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-expanded","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-expanded","true"))}_updateEditLink(){let n=this._editLink;n||(n=this._editLink=this._container.querySelector(".mapbox-improve-map"));const a=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||s.config.ACCESS_TOKEN}];if(n){const p=a.reduce((_,b,I)=>(b.value&&(_+=`${b.key}=${b.value}${I<a.length-1?"&":""}`),_),"?");n.href=`${s.config.FEEDBACK_URL}/${p}#${wl(this._map,!0)}`,n.rel="noopener nofollow",this._setElementTitle(n,"MapFeedback")}}_updateData(n){!n||n.sourceDataType!=="metadata"&&n.sourceDataType!=="visibility"&&n.dataType!=="style"||(this._updateAttributions(),this._updateEditLink())}_updateAttributions(){if(!this._map.style)return;let n=[];if(this._map.style.stylesheet){const _=this._map.style.stylesheet;this.styleOwner=_.owner,this.styleId=_.id}const a=this._map.style._sourceCaches;for(const _ in a){const b=a[_];if(b.used){const I=b.getSource();I.attribution&&n.indexOf(I.attribution)<0&&n.push(I.attribution)}}n.sort((_,b)=>_.length-b.length),n=n.filter((_,b)=>{for(let I=b+1;I<n.length;I++)if(n[I].indexOf(_)>=0)return!1;return!0}),this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?n=[...this.options.customAttribution,...n]:n.unshift(this.options.customAttribution));const p=n.join(" | ");p!==this._attribHTML&&(this._attribHTML=p,n.length?(this._innerContainer.innerHTML=p,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")}}class Dc{constructor(){s.bindAll(["_updateLogo","_updateCompact"],this)}onAdd(n){this._map=n,this._container=we("div","mapboxgl-ctrl");const a=we("a","mapboxgl-ctrl-logo");return a.target="_blank",a.rel="noopener nofollow",a.href="https://www.mapbox.com/",a.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),a.setAttribute("rel","noopener nofollow"),this._container.appendChild(a),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)}getDefaultPosition(){return"bottom-left"}_updateLogo(n){n&&n.sourceDataType!=="metadata"||(this._container.style.display=this._logoRequired()?"block":"none")}_logoRequired(){if(!this._map.style)return!0;const n=this._map.style._sourceCaches;if(Object.entries(n).length===0)return!0;for(const a in n){const p=n[a].getSource();if(p.hasOwnProperty("mapbox_logo")&&!p.mapbox_logo)return!1}return!0}_updateCompact(){const n=this._container.children;if(n.length){const a=n[0];this._map.getCanvasContainer().offsetWidth<250?a.classList.add("mapboxgl-compact"):a.classList.remove("mapboxgl-compact")}}}class Oc{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(n){const a=++this._id;return this._queue.push({callback:n,id:a,cancelled:!1}),a}remove(n){const a=this._currentlyRunning,p=a?this._queue.concat(a):this._queue;for(const _ of p)if(_.id===n)return void(_.cancelled=!0)}run(n=0){const a=this._currentlyRunning=this._queue;this._queue=[];for(const p of a)if(!p.cancelled&&(p.callback(n),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}function Ua(h,n,a){if(h=new s.LngLat(h.lng,h.lat),n){const p=new s.LngLat(h.lng-360,h.lat),_=new s.LngLat(h.lng+360,h.lat),b=360*Math.ceil(Math.abs(h.lng-a.center.lng)/360),I=a.locationPoint(h).distSqr(n),M=n.x<0||n.y<0||n.x>a.width||n.y>a.height;a.locationPoint(p).distSqr(n)<I&&(M||Math.abs(p.lng-a.center.lng)<b)?h=p:a.locationPoint(_).distSqr(n)<I&&(M||Math.abs(_.lng-a.center.lng)<b)&&(h=_)}for(;Math.abs(h.lng-a.center.lng)>180;){const p=a.locationPoint(h);if(p.x>=0&&p.y>=0&&p.x<=a.width&&p.y<=a.height)break;h.lng>a.center.lng?h.lng-=360:h.lng+=360}return h}const Qs={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};class wt extends s.Evented{constructor(n,a){if(super(),(n instanceof s.window.HTMLElement||a)&&(n=s.extend({element:n},a)),s.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress","_clearFadeTimer"],this),this._anchor=n&&n.anchor||"center",this._color=n&&n.color||"#3FB1CE",this._scale=n&&n.scale||1,this._draggable=n&&n.draggable||!1,this._clickTolerance=n&&n.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=n&&n.rotation||0,this._rotationAlignment=n&&n.rotationAlignment||"auto",this._pitchAlignment=n&&n.pitchAlignment&&n.pitchAlignment||"auto",this._updateMoving=()=>this._update(!0),this._occludedOpacity=n&&n.occludedOpacity||.2,n&&n.element)this._element=n.element,this._offset=s.Point.convert(n&&n.offset||[0,0]);else{this._defaultMarker=!0,this._element=we("div");const _=41,b=27,I=ye("svg",{display:"block",height:_*this._scale+"px",width:b*this._scale+"px",viewBox:`0 0 ${b} ${_}`},this._element),M=ye("radialGradient",{id:"shadowGradient"},ye("defs",{},I));ye("stop",{offset:"10%","stop-opacity":.4},M),ye("stop",{offset:"100%","stop-opacity":.05},M),ye("ellipse",{cx:13.5,cy:34.8,rx:10.5,ry:5.25,fill:"url(#shadowGradient)"},I),ye("path",{fill:this._color,d:"M27,13.5C27,19.07 20.25,27 14.75,34.5C14.02,35.5 12.98,35.5 12.25,34.5C6.75,27 0,19.22 0,13.5C0,6.04 6.04,0 13.5,0C20.96,0 27,6.04 27,13.5Z"},I),ye("path",{opacity:.25,d:"M13.5,0C6.04,0 0,6.04 0,13.5C0,19.22 6.75,27 12.25,34.5C13,35.52 14.02,35.5 14.75,34.5C20.25,27 27,19.07 27,13.5C27,6.04 20.96,0 13.5,0ZM13.5,1C20.42,1 26,6.58 26,13.5C26,15.9 24.5,19.18 22.22,22.74C19.95,26.3 16.71,30.14 13.94,33.91C13.74,34.18 13.61,34.32 13.5,34.44C13.39,34.32 13.26,34.18 13.06,33.91C10.28,30.13 7.41,26.31 5.02,22.77C2.62,19.23 1,15.95 1,13.5C1,6.58 6.58,1 13.5,1Z"},I),ye("circle",{fill:"white",cx:13.5,cy:13.5,r:5.5},I),this._offset=s.Point.convert(n&&n.offset||[0,-14])}this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label","Map marker"),this._element.classList.add("mapboxgl-marker"),this._element.addEventListener("dragstart",_=>{_.preventDefault()}),this._element.addEventListener("mousedown",_=>{_.preventDefault()});const p=this._element.classList;for(const _ in Qs)p.remove(`mapboxgl-marker-anchor-${_}`);p.add(`mapboxgl-marker-anchor-${this._anchor}`),this._popup=null}addTo(n){return n===this._map||(this.remove(),this._map=n,n.getCanvasContainer().appendChild(this._element),n.on("move",this._updateMoving),n.on("moveend",this._update),n.on("remove",this._clearFadeTimer),n._addMarker(this),this.setDraggable(this._draggable),this._update(),n.on("click",this._onMapClick)),this}remove(){const n=this._map;return n&&(n.off("click",this._onMapClick),n.off("move",this._updateMoving),n.off("moveend",this._update),n.off("mousedown",this._addDragHandler),n.off("touchstart",this._addDragHandler),n.off("mouseup",this._onUp),n.off("touchend",this._onUp),n.off("mousemove",this._onMove),n.off("touchmove",this._onMove),n.off("remove",this._clearFadeTimer),n._removeMarker(this),this._map=void 0),this._clearFadeTimer(),this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(n){return this._lngLat=s.LngLat.convert(n),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(!0),this}getElement(){return this._element}setPopup(n){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeAttribute("role"),this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),n){if(!("offset"in n.options)){const _=Math.sqrt(Math.pow(13.5,2)/2);n.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[_,-1*(24.6+_)],"bottom-right":[-_,-1*(24.6+_)],left:[13.5,-24.6],right:[-13.5,-24.6]}:this._offset}this._popup=n,n._marker=this,this._lngLat&&this._popup.setLngLat(this._lngLat),this._element.setAttribute("role","button"),this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress),this._element.setAttribute("aria-expanded","false")}return this}_onKeyPress(n){const a=n.code,p=n.charCode||n.keyCode;a!=="Space"&&a!=="Enter"&&p!==32&&p!==13||this.togglePopup()}_onMapClick(n){const a=n.originalEvent.target,p=this._element;this._popup&&(a===p||p.contains(a))&&this.togglePopup()}getPopup(){return this._popup}togglePopup(){const n=this._popup;return n?(n.isOpen()?(n.remove(),this._element.setAttribute("aria-expanded","false")):this._map&&(n.addTo(this._map),this._element.setAttribute("aria-expanded","true")),this):this}_behindTerrain(){const n=this._map,a=this._pos;if(!n||!a)return!1;const p=n.unproject(a),_=n.getFreeCameraOptions();if(!_.position)return!1;const b=_.position.toLngLat();return b.distanceTo(p)<.9*b.distanceTo(this._lngLat)}_evaluateOpacity(){const n=this._map;if(!n)return;const a=this._pos;if(!a||a.x<0||a.x>n.transform.width||a.y<0||a.y>n.transform.height)return void this._clearFadeTimer();const p=n.unproject(a);let _;n._showingGlobe()&&s.isLngLatBehindGlobe(n.transform,this._lngLat)?_=0:(_=1-n._queryFogOpacity(p),n.transform._terrainEnabled()&&n.getTerrain()&&this._behindTerrain()&&(_*=this._occludedOpacity)),this._element.style.opacity=`${_}`,this._element.style.pointerEvents=_>0?"auto":"none",this._popup&&this._popup._setOpacity(_),this._fadeTimer=null}_clearFadeTimer(){this._fadeTimer&&(clearTimeout(this._fadeTimer),this._fadeTimer=null)}_updateDOM(){const n=this._pos;if(!n||!this._map)return;const a=this._offset.mult(this._scale);this._element.style.transform=`
translate(${n.x}px,${n.y}px)
${Qs[this._anchor]}
${this._calculateXYTransform()} ${this._calculateZTransform()}
translate(${a.x}px,${a.y}px)
`}_calculateXYTransform(){const n=this._pos,a=this._map,p=this.getPitchAlignment();if(!a||!n||p!=="map")return"";if(!a._showingGlobe()){const P=a.getPitch();return P?`rotateX(${P}deg)`:""}const _=s.radToDeg(s.globeTiltAtLngLat(a.transform,this._lngLat)),b=n.sub(s.globeCenterToScreenPoint(a.transform)),I=Math.abs(b.x)+Math.abs(b.y);if(I===0)return"";const M=_/I;return`rotateX(${-b.y*M}deg) rotateY(${b.x*M}deg)`}_calculateZTransform(){const n=this._pos,a=this._map;if(!a||!n)return"";let p=0;const _=this.getRotationAlignment();if(_==="map")if(a._showingGlobe()){const b=a.project(new s.LngLat(this._lngLat.lng,this._lngLat.lat+.001)),I=a.project(new s.LngLat(this._lngLat.lng,this._lngLat.lat-.001)).sub(b);p=s.radToDeg(Math.atan2(I.y,I.x))-90}else p=-a.getBearing();else if(_==="horizon"){const b=s.smoothstep(4,6,a.getZoom()),I=s.globeCenterToScreenPoint(a.transform);I.y+=b*a.transform.height;const M=n.sub(I),P=s.radToDeg(Math.atan2(M.y,M.x));p=(P>90?P-270:P+90)*(1-b)}return p+=this._rotation,p?`rotateZ(${p}deg)`:""}_update(n){s.window.cancelAnimationFrame(this._updateFrameId);const a=this._map;a&&(a.transform.renderWorldCopies&&(this._lngLat=Ua(this._lngLat,this._pos,a.transform)),this._pos=a.project(this._lngLat),n===!0?this._updateFrameId=s.window.requestAnimationFrame(()=>{this._element&&this._pos&&this._anchor&&(this._pos=this._pos.round(),this._updateDOM())}):this._pos=this._pos.round(),a._requestDomTask(()=>{this._map&&(this._element&&this._pos&&this._anchor&&this._updateDOM(),(a._showingGlobe()||a.getTerrain()||a.getFog())&&!this._fadeTimer&&(this._fadeTimer=setTimeout(this._evaluateOpacity.bind(this),60)))}))}getOffset(){return this._offset}setOffset(n){return this._offset=s.Point.convert(n),this._update(),this}_onMove(n){const a=this._map;if(!a)return;const p=this._pointerdownPos,_=this._positionDelta;if(p&&_){if(!this._isDragging){const b=this._clickTolerance||a._clickTolerance;if(n.point.dist(p)<b)return;this._isDragging=!0}this._pos=n.point.sub(_),this._lngLat=a.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new s.Event("dragstart"))),this.fire(new s.Event("drag"))}}_onUp(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1;const n=this._map;n&&(n.off("mousemove",this._onMove),n.off("touchmove",this._onMove)),this._state==="active"&&this.fire(new s.Event("dragend")),this._state="inactive"}_addDragHandler(n){const a=this._map,p=this._pos;a&&p&&this._element.contains(n.originalEvent.target)&&(n.preventDefault(),this._positionDelta=n.point.sub(p),this._pointerdownPos=n.point,this._state="pending",a.on("mousemove",this._onMove),a.on("touchmove",this._onMove),a.once("mouseup",this._onUp),a.once("touchend",this._onUp))}setDraggable(n){this._draggable=!!n;const a=this._map;return a&&(n?(a.on("mousedown",this._addDragHandler),a.on("touchstart",this._addDragHandler)):(a.off("mousedown",this._addDragHandler),a.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(n){return this._rotation=n||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(n){return this._rotationAlignment=n||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment==="auto"||this._rotationAlignment==="horizon"&&this._map&&!this._map._showingGlobe()?"viewport":this._rotationAlignment}setPitchAlignment(n){return this._pitchAlignment=n||"auto",this._update(),this}getPitchAlignment(){return this._pitchAlignment==="auto"?this.getRotationAlignment():this._pitchAlignment}setOccludedOpacity(n){return this._occludedOpacity=n||.2,this._update(),this}getOccludedOpacity(){return this._occludedOpacity}}const zc={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},Qd=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Df(h=new s.Point(0,0),n="bottom"){if(typeof h=="number"){const a=Math.round(Math.sqrt(.5*Math.pow(h,2)));switch(n){case"top":return new s.Point(0,h);case"top-left":return new s.Point(a,a);case"top-right":return new s.Point(-a,a);case"bottom":return new s.Point(0,-h);case"bottom-left":return new s.Point(a,-a);case"bottom-right":return new s.Point(-a,-a);case"left":return new s.Point(h,0);case"right":return new s.Point(-h,0)}return new s.Point(0,0)}return h instanceof s.Point||Array.isArray(h)?s.Point.convert(h):s.Point.convert(h[n]||[0,0])}class Nc{constructor(n){this.jumpTo(n)}getValue(n){if(n<=this._startTime)return this._start;if(n>=this._endTime)return this._end;const a=s.easeCubicInOut((n-this._startTime)/(this._endTime-this._startTime));return this._start*(1-a)+this._end*a}isEasing(n){return n>=this._startTime&&n<=this._endTime}jumpTo(n){this._startTime=-1/0,this._endTime=-1/0,this._start=n,this._end=n}easeTo(n,a,p){this._start=this.getValue(a),this._end=n,this._startTime=a,this._endTime=a+p}}const Of={"AttributionControl.ToggleAttribution":"Toggle attribution","AttributionControl.MapFeedback":"Map feedback","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"Mapbox logo","Map.Title":"Map","NavigationControl.ResetBearing":"Reset bearing to north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","ScrollZoomBlocker.CtrlMessage":"Use ctrl + scroll to zoom the map","ScrollZoomBlocker.CmdMessage":"Use ⌘ + scroll to zoom the map","TouchPanBlocker.Message":"Use two fingers to move the map"},zf={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:85,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,performanceMetricsCollection:!0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,optimizeForTerrain:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,minTileCacheSize:null,maxTileCacheSize:null,localIdeographFontFamily:"sans-serif",localFontFamily:null,transformRequest:null,accessToken:null,fadeDuration:300,respectPrefersReducedMotion:!0,crossSourceCollisions:!0},em={showCompass:!0,showZoom:!0,visualizePitch:!1};class tm{constructor(n,a,p=!1){this._clickTolerance=10,this.element=a,this.mouseRotate=new Ac({clickTolerance:n.dragRotate._mouseRotate._clickTolerance}),this.map=n,p&&(this.mousePitch=new Cc({clickTolerance:n.dragRotate._mousePitch._clickTolerance})),s.bindAll(["mousedown","mousemove","mouseup","touchstart","touchmove","touchend","reset"],this),a.addEventListener("mousedown",this.mousedown),a.addEventListener("touchstart",this.touchstart,{passive:!1}),a.addEventListener("touchmove",this.touchmove),a.addEventListener("touchend",this.touchend),a.addEventListener("touchcancel",this.reset)}down(n,a){this.mouseRotate.mousedown(n,a),this.mousePitch&&this.mousePitch.mousedown(n,a),Mt()}move(n,a){const p=this.map,_=this.mouseRotate.mousemoveWindow(n,a),b=_&&_.bearingDelta;if(b&&p.setBearing(p.getBearing()+b),this.mousePitch){const I=this.mousePitch.mousemoveWindow(n,a),M=I&&I.pitchDelta;M&&p.setPitch(p.getPitch()+M)}}off(){const n=this.element;n.removeEventListener("mousedown",this.mousedown),n.removeEventListener("touchstart",this.touchstart,{passive:!1}),n.removeEventListener("touchmove",this.touchmove),n.removeEventListener("touchend",this.touchend),n.removeEventListener("touchcancel",this.reset),this.offTemp()}offTemp(){Le(),s.window.removeEventListener("mousemove",this.mousemove),s.window.removeEventListener("mouseup",this.mouseup)}mousedown(n){this.down(s.extend({},n,{ctrlKey:!0,preventDefault:()=>n.preventDefault()}),ut(this.element,n)),s.window.addEventListener("mousemove",this.mousemove),s.window.addEventListener("mouseup",this.mouseup)}mousemove(n){this.move(n,ut(this.element,n))}mouseup(n){this.mouseRotate.mouseupWindow(n),this.mousePitch&&this.mousePitch.mouseupWindow(n),this.offTemp()}touchstart(n){n.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=yt(this.element,n.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:()=>n.preventDefault()},this._startPos))}touchmove(n){n.targetTouches.length!==1?this.reset():(this._lastPos=yt(this.element,n.targetTouches)[0],this.move({preventDefault:()=>n.preventDefault()},this._lastPos))}touchend(n){n.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),this.reset()}reset(){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()}}const Bc={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0,showUserHeading:!1},Fc={maxWidth:100,unit:"metric"},Uc={kilometer:"km",meter:"m",mile:"mi",foot:"ft","nautical-mile":"nm"},ja={version:s.version,supported:oe,setRTLTextPlugin:s.setRTLTextPlugin,getRTLTextPluginStatus:s.getRTLTextPluginStatus,Map:class extends Mu{constructor(h){if(s.LivePerformanceUtils.mark(s.PerformanceMarkers.create),(h=s.extend({},zf,h)).minZoom!=null&&h.maxZoom!=null&&h.minZoom>h.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(h.minPitch!=null&&h.maxPitch!=null&&h.minPitch>h.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(h.minPitch!=null&&h.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(h.maxPitch!=null&&h.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(h.antialias&&s.isSafariWithAntialiasingBug(s.window)&&(h.antialias=!1,s.warnOnce("Antialiasing is disabled for this WebGL context to avoid browser bug: https://github.com/mapbox/mapbox-gl-js/issues/11609")),super(new za(h.minZoom,h.maxZoom,h.minPitch,h.maxPitch,h.renderWorldCopies),h),this._interactive=h.interactive,this._minTileCacheSize=h.minTileCacheSize,this._maxTileCacheSize=h.maxTileCacheSize,this._failIfMajorPerformanceCaveat=h.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=h.preserveDrawingBuffer,this._antialias=h.antialias,this._useWebGL2=h.useWebGL2,this._trackResize=h.trackResize,this._bearingSnap=h.bearingSnap,this._refreshExpiredTiles=h.refreshExpiredTiles,this._fadeDuration=h.fadeDuration,this._isInitialLoad=!0,this._crossSourceCollisions=h.crossSourceCollisions,this._collectResourceTiming=h.collectResourceTiming,this._optimizeForTerrain=h.optimizeForTerrain,this._language=this._parseLanguage(h.language),this._worldview=h.worldview,this._renderTaskQueue=new Oc,this._domRenderTaskQueue=new Oc,this._controls=[],this._markers=[],this._popups=[],this._mapId=s.uniqueId(),this._locale=s.extend({},Of,h.locale),this._clickTolerance=h.clickTolerance,this._cooperativeGestures=h.cooperativeGestures,this._performanceMetricsCollection=h.performanceMetricsCollection,this._containerWidth=0,this._containerHeight=0,this._averageElevationLastSampledAt=-1/0,this._averageElevationExaggeration=0,this._averageElevation=new Nc(0),this._interactionRange=[1/0,-1/0],this._visibilityHidden=0,this._useExplicitProjection=!1,this._requestManager=new s.RequestManager(h.transformRequest,h.accessToken,h.testMode),this._silenceAuthErrors=!!h.testMode,typeof h.container=="string"){if(this._container=s.window.document.getElementById(h.container),!this._container)throw new Error(`Container '${h.container}' not found.`)}else{if(!(h.container instanceof s.window.HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=h.container}if(this._container.childNodes.length>0&&s.warnOnce("The map container element should be empty, otherwise the map's interactivity will be negatively impacted. If you want to display a message when WebGL is not supported, use the Mapbox GL Supported plugin instead."),h.maxBounds&&this.setMaxBounds(h.maxBounds),s.bindAll(["_onWindowOnline","_onWindowResize","_onVisibilityChange","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");this.on("move",()=>this._update(!1)),this.on("moveend",()=>this._update(!1)),this.on("zoom",()=>this._update(!0)),s.window!==void 0&&(s.window.addEventListener("online",this._onWindowOnline,!1),s.window.addEventListener("resize",this._onWindowResize,!1),s.window.addEventListener("orientationchange",this._onWindowResize,!1),s.window.addEventListener("webkitfullscreenchange",this._onWindowResize,!1),s.window.addEventListener("visibilitychange",this._onVisibilityChange,!1)),this.handlers=new Io(this,h),this._localFontFamily=h.localFontFamily,this._localIdeographFontFamily=h.localIdeographFontFamily,h.style&&this.setStyle(h.style,{localFontFamily:this._localFontFamily,localIdeographFontFamily:this._localIdeographFontFamily}),h.projection&&this.setProjection(h.projection),this._hash=h.hash&&new Sc(typeof h.hash=="string"&&h.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:h.center,zoom:h.zoom,bearing:h.bearing,pitch:h.pitch}),h.bounds&&(this.resize(),this.fitBounds(h.bounds,s.extend({},h.fitBoundsOptions,{duration:0})))),this.resize(),h.attributionControl&&this.addControl(new Ct({customAttribution:h.customAttribution})),this._logoControl=new Dc,this.addControl(this._logoControl,h.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",n=>{this._update(n.dataType==="style"),this.fire(new s.Event(`${n.dataType}data`,n))}),this.on("dataloading",n=>{this.fire(new s.Event(`${n.dataType}dataloading`,n))})}_getMapId(){return this._mapId}addControl(h,n){if(n===void 0&&(n=h.getDefaultPosition?h.getDefaultPosition():"top-right"),!h||!h.onAdd)return this.fire(new s.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const a=h.onAdd(this);this._controls.push(h);const p=this._controlPositions[n];return n.indexOf("bottom")!==-1?p.insertBefore(a,p.firstChild):p.appendChild(a),this}removeControl(h){if(!h||!h.onRemove)return this.fire(new s.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const n=this._controls.indexOf(h);return n>-1&&this._controls.splice(n,1),h.onRemove(this),this}hasControl(h){return this._controls.indexOf(h)>-1}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}resize(h){if(this._updateContainerDimensions(),this._containerWidth===this.transform.width&&this._containerHeight===this.transform.height)return this;this._resizeCanvas(this._containerWidth,this._containerHeight),this.transform.resize(this._containerWidth,this._containerHeight),this.painter.resize(Math.ceil(this._containerWidth),Math.ceil(this._containerHeight));const n=!this._moving;return n&&this.fire(new s.Event("movestart",h)).fire(new s.Event("move",h)),this.fire(new s.Event("resize",h)),n&&this.fire(new s.Event("moveend",h)),this}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()||null}setMaxBounds(h){return this.transform.setMaxBounds(s.LngLatBounds.convert(h)),this._update()}setMinZoom(h){if((h=h??-2)>=-2&&h<=this.transform.maxZoom)return this.transform.minZoom=h,this._update(),this.getZoom()<h?this.setZoom(h):this.fire(new s.Event("zoomstart")).fire(new s.Event("zoom")).fire(new s.Event("zoomend")),this;throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(h){if((h=h??22)>=this.transform.minZoom)return this.transform.maxZoom=h,this._update(),this.getZoom()>h?this.setZoom(h):this.fire(new s.Event("zoomstart")).fire(new s.Event("zoom")).fire(new s.Event("zoomend")),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(h){if((h=h??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(h>=0&&h<=this.transform.maxPitch)return this.transform.minPitch=h,this._update(),this.getPitch()<h?this.setPitch(h):this.fire(new s.Event("pitchstart")).fire(new s.Event("pitch")).fire(new s.Event("pitchend")),this;throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(h){if((h=h??85)>85)throw new Error("maxPitch must be less than or equal to 85");if(h>=this.transform.minPitch)return this.transform.maxPitch=h,this._update(),this.getPitch()>h?this.setPitch(h):this.fire(new s.Event("pitchstart")).fire(new s.Event("pitch")).fire(new s.Event("pitchend")),this;throw new Error("maxPitch must be greater than or equal to minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(h){return this.transform.renderWorldCopies=h,this.transform.renderWorldCopies||this._forceMarkerAndPopupUpdate(!0),this._update()}getLanguage(){return this._language}_parseLanguage(h){return h==="auto"?s.window.navigator.language:Array.isArray(h)?h.length===0?void 0:h.map(n=>n==="auto"?s.window.navigator.language:n):h}setLanguage(h){const n=this._parseLanguage(h);if(!this.style||n===this._language)return this;this._language=n,this.style._reloadSources();for(const a of this._controls)a._setLanguage&&a._setLanguage(this._language);return this}getWorldview(){return this._worldview}setWorldview(h){return this.style&&h!==this._worldview?(this._worldview=h,this.style._reloadSources(),this):this}getProjection(){return this.transform.mercatorFromTransition?{name:"globe",center:[0,0]}:this.transform.getProjection()}_showingGlobe(){return this.transform.projection.name==="globe"}setProjection(h){return this._lazyInitEmptyStyle(),h?typeof h=="string"&&(h={name:h}):h=null,this._useExplicitProjection=!!h,this._prioritizeAndUpdateProjection(h,this.style.stylesheet?this.style.stylesheet.projection:null)}_updateProjectionTransition(){if(this.getProjection().name!=="globe")return;const h=this.transform,n=h.projection.name;let a;n==="globe"&&h.zoom>=s.GLOBE_ZOOM_THRESHOLD_MAX?(h.setMercatorFromTransition(),a=!0):n==="mercator"&&h.zoom<s.GLOBE_ZOOM_THRESHOLD_MAX&&(h.setProjection({name:"globe"}),a=!0),a&&(this.style.applyProjectionUpdate(),this.style._forceSymbolLayerUpdate())}_prioritizeAndUpdateProjection(h,n){return this._updateProjection(h||n||{name:"mercator"})}_updateProjection(h){let n;if(n=h.name==="globe"&&this.transform.zoom>=s.GLOBE_ZOOM_THRESHOLD_MAX?this.transform.setMercatorFromTransition():this.transform.setProjection(h),this.style.applyProjectionUpdate(),n){this.painter.clearBackgroundTiles();for(const a in this.style._sourceCaches)this.style._sourceCaches[a].clearTiles();this._update(!0),this._forceMarkerAndPopupUpdate(!0)}return this}project(h){return this.transform.locationPoint3D(s.LngLat.convert(h))}unproject(h){return this.transform.pointLocation3D(s.Point.convert(h))}isMoving(){return this._moving||this.handlers&&this.handlers.isMoving()||!1}isZooming(){return this._zooming||this.handlers&&this.handlers.isZooming()||!1}isRotating(){return this._rotating||this.handlers&&this.handlers.isRotating()||!1}_isDragging(){return this.handlers&&this.handlers._isDragging()||!1}_createDelegatedListener(h,n,a){if(h==="mouseenter"||h==="mouseover"){let p=!1;const _=I=>{const M=n.filter(N=>this.getLayer(N)),P=M.length?this.queryRenderedFeatures(I.point,{layers:M}):[];P.length?p||(p=!0,a.call(this,new Gn(h,this,I.originalEvent,{features:P}))):p=!1},b=()=>{p=!1};return{layers:new Set(n),listener:a,delegates:{mousemove:_,mouseout:b}}}if(h==="mouseleave"||h==="mouseout"){let p=!1;const _=I=>{const M=n.filter(P=>this.getLayer(P));(M.length?this.queryRenderedFeatures(I.point,{layers:M}):[]).length?p=!0:p&&(p=!1,a.call(this,new Gn(h,this,I.originalEvent)))},b=I=>{p&&(p=!1,a.call(this,new Gn(h,this,I.originalEvent)))};return{layers:new Set(n),listener:a,delegates:{mousemove:_,mouseout:b}}}{const p=_=>{const b=n.filter(M=>this.getLayer(M)),I=b.length?this.queryRenderedFeatures(_.point,{layers:b}):[];I.length&&(_.features=I,a.call(this,_),delete _.features)};return{layers:new Set(n),listener:a,delegates:{[h]:p}}}}on(h,n,a){if(a===void 0)return super.on(h,n);Array.isArray(n)||(n=[n]);const p=this._createDelegatedListener(h,n,a);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[h]=this._delegatedListeners[h]||[],this._delegatedListeners[h].push(p);for(const _ in p.delegates)this.on(_,p.delegates[_]);return this}once(h,n,a){if(a===void 0)return super.once(h,n);Array.isArray(n)||(n=[n]);const p=this._createDelegatedListener(h,n,a);for(const _ in p.delegates)this.once(_,p.delegates[_]);return this}off(h,n,a){if(a===void 0)return super.off(h,n);n=new Set(Array.isArray(n)?n:[n]);const p=(b,I)=>{if(b.size!==I.size)return!1;for(const M of b)if(!I.has(M))return!1;return!0},_=this._delegatedListeners?this._delegatedListeners[h]:void 0;return _&&(b=>{for(let I=0;I<b.length;I++){const M=b[I];if(M.listener===a&&p(M.layers,n)){for(const P in M.delegates)this.off(P,M.delegates[P]);return b.splice(I,1),this}}})(_),this}queryRenderedFeatures(h,n){return this.style?(n!==void 0||h===void 0||h instanceof s.Point||Array.isArray(h)||(n=h,h=void 0),this.style.queryRenderedFeatures(h=h||[[0,0],[this.transform.width,this.transform.height]],n=n||{},this.transform)):[]}querySourceFeatures(h,n){return this.style.querySourceFeatures(h,n)}isPointOnSurface(h){const{name:n}=this.transform.projection;return n!=="globe"&&n!=="mercator"&&s.warnOnce(`${n} projection does not support isPointOnSurface, this API may behave unexpectedly.`),this.transform.isPointOnSurface(s.Point.convert(h))}setStyle(h,n){return(n=s.extend({},{localIdeographFontFamily:this._localIdeographFontFamily,localFontFamily:this._localFontFamily},n)).diff!==!1&&n.localIdeographFontFamily===this._localIdeographFontFamily&&n.localFontFamily===this._localFontFamily&&this.style&&h?(this._diffStyle(h,n),this):(this._localIdeographFontFamily=n.localIdeographFontFamily,this._localFontFamily=n.localFontFamily,this._updateStyle(h,n))}_getUIString(h){const n=this._locale[h];if(n==null)throw new Error(`Missing UI string '${h}'`);return n}_updateStyle(h,n){return this.style&&(this.style.setEventedParent(null),this.style._remove(),this.style=void 0),h&&(this.style=new mr(this,n||{}),this.style.setEventedParent(this,{style:this.style}),typeof h=="string"?this.style.loadURL(h):this.style.loadJSON(h)),this._updateTerrain(),this}_lazyInitEmptyStyle(){this.style||(this.style=new mr(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(h,n){if(typeof h=="string"){const a=this._requestManager.normalizeStyleURL(h),p=this._requestManager.transformRequest(a,s.ResourceType.Style);s.getJSON(p,(_,b)=>{_?this.fire(new s.ErrorEvent(_)):b&&this._updateDiff(b,n)})}else typeof h=="object"&&this._updateDiff(h,n)}_updateDiff(h,n){try{this.style.setState(h)&&this._update(!0)}catch(a){s.warnOnce(`Unable to perform style diff: ${a.message||a.error||a}. Rebuilding the style from scratch.`),this._updateStyle(h,n)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():(s.warnOnce("There is no style added to the map."),!1)}addSource(h,n){return this._lazyInitEmptyStyle(),this.style.addSource(h,n),this._update(!0)}isSourceLoaded(h){return!!this.style&&this.style._isSourceCacheLoaded(h)}areTilesLoaded(){const h=this.style&&this.style._sourceCaches;for(const n in h){const a=h[n]._tiles;for(const p in a){const _=a[p];if(_.state!=="loaded"&&_.state!=="errored")return!1}}return!0}addSourceType(h,n,a){this._lazyInitEmptyStyle(),this.style.addSourceType(h,n,a)}removeSource(h){return this.style.removeSource(h),this._updateTerrain(),this._update(!0)}getSource(h){return this.style.getSource(h)}addImage(h,n,{pixelRatio:a=1,sdf:p=!1,stretchX:_,stretchY:b,content:I}={}){if(this._lazyInitEmptyStyle(),n instanceof s.window.HTMLImageElement||s.window.ImageBitmap&&n instanceof s.window.ImageBitmap){const{width:M,height:P,data:N}=s.exported.getImageData(n);this.style.addImage(h,{data:new s.RGBAImage({width:M,height:P},N),pixelRatio:a,stretchX:_,stretchY:b,content:I,sdf:p,version:0})}else if(n.width===void 0||n.height===void 0)this.fire(new s.ErrorEvent(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));else{const{width:M,height:P}=n,N=n;this.style.addImage(h,{data:new s.RGBAImage({width:M,height:P},new Uint8Array(N.data)),pixelRatio:a,stretchX:_,stretchY:b,content:I,sdf:p,version:0,userImage:N}),N.onAdd&&N.onAdd(this,h)}}updateImage(h,n){const a=this.style.getImage(h);if(!a)return void this.fire(new s.ErrorEvent(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const p=n instanceof s.window.HTMLImageElement||s.window.ImageBitmap&&n instanceof s.window.ImageBitmap?s.exported.getImageData(n):n,{width:_,height:b}=p;_!==void 0&&b!==void 0?_===a.data.width&&b===a.data.height?(a.data.replace(p.data,!(n instanceof s.window.HTMLImageElement||s.window.ImageBitmap&&n instanceof s.window.ImageBitmap)),this.style.updateImage(h,a)):this.fire(new s.ErrorEvent(new Error(`The width and height of the updated image (${_}, ${b})
must be that same as the previous version of the image
(${a.data.width}, ${a.data.height})`))):this.fire(new s.ErrorEvent(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")))}hasImage(h){return h?!!this.style.getImage(h):(this.fire(new s.ErrorEvent(new Error("Missing required image id"))),!1)}removeImage(h){this.style.removeImage(h)}loadImage(h,n){s.getImage(this._requestManager.transformRequest(h,s.ResourceType.Image),(a,p)=>{n(a,p instanceof s.window.HTMLImageElement?s.exported.getImageData(p):p)})}listImages(){return this.style.listImages()}addLayer(h,n){return this._lazyInitEmptyStyle(),this.style.addLayer(h,n),this._update(!0)}moveLayer(h,n){return this.style.moveLayer(h,n),this._update(!0)}removeLayer(h){return this.style.removeLayer(h),this._update(!0)}getLayer(h){return this.style.getLayer(h)}setLayerZoomRange(h,n,a){return this.style.setLayerZoomRange(h,n,a),this._update(!0)}setFilter(h,n,a={}){return this.style.setFilter(h,n,a),this._update(!0)}getFilter(h){return this.style.getFilter(h)}setPaintProperty(h,n,a,p={}){return this.style.setPaintProperty(h,n,a,p),this._update(!0)}getPaintProperty(h,n){return this.style.getPaintProperty(h,n)}setLayoutProperty(h,n,a,p={}){return this.style.setLayoutProperty(h,n,a,p),this._update(!0)}getLayoutProperty(h,n){return this.style.getLayoutProperty(h,n)}setLight(h,n={}){return this._lazyInitEmptyStyle(),this.style.setLight(h,n),this._update(!0)}getLight(){return this.style.getLight()}setTerrain(h){return this._lazyInitEmptyStyle(),!h&&this.transform.projection.requiresDraping?this.style.setTerrainForDraping():this.style.setTerrain(h),this._averageElevationLastSampledAt=-1/0,this._update(!0)}getTerrain(){return this.style?this.style.getTerrain():null}setFog(h){return this._lazyInitEmptyStyle(),this.style.setFog(h),this._update(!0)}getFog(){return this.style?this.style.getFog():null}_queryFogOpacity(h){return this.style&&this.style.fog?this.style.fog.getOpacityAtLatLng(s.LngLat.convert(h),this.transform):0}setFeatureState(h,n){return this.style.setFeatureState(h,n),this._update()}removeFeatureState(h,n){return this.style.removeFeatureState(h,n),this._update()}getFeatureState(h){return this.style.getFeatureState(h)}_updateContainerDimensions(){if(!this._container)return;const h=this._container.getBoundingClientRect().width||400,n=this._container.getBoundingClientRect().height||300;let a,p,_,b=this._container;for(;b&&(!p||!_);){const I=s.window.getComputedStyle(b).transform;I&&I!=="none"&&(a=I.match(/matrix.*\((.+)\)/)[1].split(", "),a[0]&&a[0]!=="0"&&a[0]!=="1"&&(p=a[0]),a[3]&&a[3]!=="0"&&a[3]!=="1"&&(_=a[3])),b=b.parentElement}this._containerWidth=p?Math.abs(h/p):h,this._containerHeight=_?Math.abs(n/_):n}_detectMissingCSS(){s.window.getComputedStyle(this._missingCSSCanary).getPropertyValue("background-color")!=="rgb(250, 128, 114)"&&s.warnOnce("This page appears to be missing CSS declarations for Mapbox GL JS, which may cause the map to display incorrectly. Please ensure your page includes mapbox-gl.css, as described in https://www.mapbox.com/mapbox-gl-js/api/.")}_setupContainer(){const h=this._container;h.classList.add("mapboxgl-map"),(this._missingCSSCanary=we("div","mapboxgl-canary",h)).style.visibility="hidden",this._detectMissingCSS();const n=this._canvasContainer=we("div","mapboxgl-canvas-container",h);this._interactive&&n.classList.add("mapboxgl-interactive"),this._canvas=we("canvas","mapboxgl-canvas",n),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex","0"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region"),this._updateContainerDimensions(),this._resizeCanvas(this._containerWidth,this._containerHeight);const a=this._controlContainer=we("div","mapboxgl-control-container",h),p=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(_=>{p[_]=we("div",`mapboxgl-ctrl-${_}`,a)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(h,n){const a=s.exported.devicePixelRatio||1;this._canvas.width=a*Math.ceil(h),this._canvas.height=a*Math.ceil(n),this._canvas.style.width=`${h}px`,this._canvas.style.height=`${n}px`}_addMarker(h){this._markers.push(h)}_removeMarker(h){const n=this._markers.indexOf(h);n!==-1&&this._markers.splice(n,1)}_addPopup(h){this._popups.push(h)}_removePopup(h){const n=this._popups.indexOf(h);n!==-1&&this._popups.splice(n,1)}_setupPainter(){const h=s.extend({},oe.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),n=this._useWebGL2&&this._canvas.getContext("webgl2",h),a=n||this._canvas.getContext("webgl",h)||this._canvas.getContext("experimental-webgl",h);a?(this._useWebGL2&&!n&&s.warnOnce("Failed to create WebGL 2 context. Using WebGL 1."),s.storeAuthState(a,!0),this.painter=new Vn(a,this.transform,!!n),this.on("data",p=>{p.dataType==="source"&&this.painter.setTileLoadedFlag(!0)}),s.exported$1.testSupport(a)):this.fire(new s.ErrorEvent(new Error("Failed to initialize WebGL")))}_contextLost(h){h.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new s.Event("webglcontextlost",{originalEvent:h}))}_contextRestored(h){this._setupPainter(),this.resize(),this._update(),this.fire(new s.Event("webglcontextrestored",{originalEvent:h}))}_onMapScroll(h){if(h.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(h){return this.style?(this._styleDirty=this._styleDirty||h,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(h){return this._update(),this._renderTaskQueue.add(h)}_cancelRenderFrame(h){this._renderTaskQueue.remove(h)}_requestDomTask(h){!this.loaded()||this.loaded()&&!this.isMoving()?h():this._domRenderTaskQueue.add(h)}_render(h){let n;const a=this.painter.context.extTimerQuery,p=s.exported.now();if(this.listens("gpu-timing-frame")&&(n=a.createQueryEXT(),a.beginQueryEXT(a.TIME_ELAPSED_EXT,n)),this.painter.context.setDirty(),this.painter.setBaseState(),(this.isMoving()||this.isRotating()||this.isZooming())&&(this._interactionRange[0]=Math.min(this._interactionRange[0],s.window.performance.now()),this._interactionRange[1]=Math.max(this._interactionRange[1],s.window.performance.now())),this._renderTaskQueue.run(h),this._domRenderTaskQueue.run(h),this._removed)return;this._updateProjectionTransition();const _=this._isInitialLoad?0:this._fadeDuration;if(this.style&&this._styleDirty){this._styleDirty=!1;const M=this.transform.zoom,P=this.transform.pitch,N=s.exported.now(),z=new s.EvaluationParameters(M,{now:N,fadeDuration:_,pitch:P,transition:this.style.getTransition()});this.style.update(z)}this.style&&this.style.fog&&this.style.fog.hasTransition()&&(this.style._markersNeedUpdate=!0,this._sourcesDirty=!0);let b=!1;if(this.style&&this._sourcesDirty?(this._sourcesDirty=!1,this.painter._updateFog(this.style),this._updateTerrain(),b=this._updateAverageElevation(p),this.style._updateSources(this.transform),this._forceMarkerAndPopupUpdate()):b=this._updateAverageElevation(p),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,_,this._crossSourceCollisions),this.style&&this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showTerrainWireframe:this.showTerrainWireframe,showOverdrawInspector:this._showOverdrawInspector,showQueryGeometry:!!this._showQueryGeometry,showTileAABBs:this.showTileAABBs,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:_,isInitialLoad:this._isInitialLoad,showPadding:this.showPadding,gpuTiming:!!this.listens("gpu-timing-layer"),gpuTimingDeferredRender:!!this.listens("gpu-timing-deferred-render"),speedIndexTiming:this.speedIndexTiming}),this.fire(new s.Event("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new s.Event("load"))),this.style&&this.style.hasTransitions()&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),n){const M=s.exported.now()-p;a.endQueryEXT(a.TIME_ELAPSED_EXT,n),setTimeout(()=>{const P=a.getQueryObjectEXT(n,a.QUERY_RESULT_EXT)/1e6;a.deleteQueryEXT(n),this.fire(new s.Event("gpu-timing-frame",{cpuTime:M,gpuTime:P})),s.window.performance.mark("frame-gpu",{startTime:p,detail:{gpuTime:P}})},50)}if(this.listens("gpu-timing-layer")){const M=this.painter.collectGpuTimers();setTimeout(()=>{const P=this.painter.queryGpuTimers(M);this.fire(new s.Event("gpu-timing-layer",{layerTimes:P}))},50)}if(this.listens("gpu-timing-deferred-render")){const M=this.painter.collectDeferredRenderGpuQueries();setTimeout(()=>{const P=this.painter.queryGpuTimeDeferredRender(M);this.fire(new s.Event("gpu-timing-deferred-render",{gpuTime:P}))},50)}const I=this._sourcesDirty||this._styleDirty||this._placementDirty||b;if(I||this._repaint)this.triggerRepaint();else{const M=!this.isMoving()&&this.loaded();if(M&&(b=this._updateAverageElevation(p,!0)),b)this.triggerRepaint();else if(this._triggerFrame(!1),M&&(this.fire(new s.Event("idle")),this._isInitialLoad=!1,this.speedIndexTiming)){const P=this._calculateSpeedIndex();this.fire(new s.Event("speedindexcompleted",{speedIndex:P})),this.speedIndexTiming=!1}}!this._loaded||this._fullyLoaded||I||(this._fullyLoaded=!0,s.LivePerformanceUtils.mark(s.PerformanceMarkers.fullLoad),this._performanceMetricsCollection&&s.postPerformanceEvent(this._requestManager._customAccessToken,{width:this.painter.width,height:this.painter.height,interactionRange:this._interactionRange,visibilityHidden:this._visibilityHidden,terrainEnabled:!!this.painter.style.getTerrain(),fogEnabled:!!this.painter.style.getFog(),projection:this.getProjection().name,zoom:this.transform.zoom,renderer:this.painter.context.renderer,vendor:this.painter.context.vendor}),this._authenticate())}_forceMarkerAndPopupUpdate(h){for(const n of this._markers)h&&!this.getRenderWorldCopies()&&(n._lngLat=n._lngLat.wrap()),n._update();for(const n of this._popups)!h||this.getRenderWorldCopies()||n._trackPointer||(n._lngLat=n._lngLat.wrap()),n._update()}_updateAverageElevation(h,n=!1){const a=p=>(this.transform.averageElevation=p,this._update(!1),!0);if(!this.painter.averageElevationNeedsEasing())return this.transform.averageElevation!==0&&a(0);if((n||h-this._averageElevationLastSampledAt>500)&&!this._averageElevation.isEasing(h)){const p=this.transform.averageElevation;let _=this.transform.sampleAverageElevation(),b=!1;this.transform.elevation&&(b=this.transform.elevation.exaggeration()!==this._averageElevationExaggeration,this._averageElevationExaggeration=this.transform.elevation.exaggeration()),isNaN(_)?_=0:this._averageElevationLastSampledAt=h;const I=Math.abs(p-_);if(I>1){if(this._isInitialLoad||b)return this._averageElevation.jumpTo(_),a(_);this._averageElevation.easeTo(_,h,300)}else if(I>1e-4)return this._averageElevation.jumpTo(_),a(_)}return!!this._averageElevation.isEasing(h)&&a(this._averageElevation.getValue(h))}_authenticate(){s.getMapSessionAPI(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,h=>{if(h&&(h.message===s.AUTH_ERR_MSG||h.status===401)){const n=this.painter.context.gl;s.storeAuthState(n,!1),this._logoControl instanceof Dc&&this._logoControl._updateLogo(),n&&n.clear(n.DEPTH_BUFFER_BIT|n.COLOR_BUFFER_BIT|n.STENCIL_BUFFER_BIT),this._silenceAuthErrors||this.fire(new s.ErrorEvent(new Error("A valid Mapbox access token is required to use Mapbox GL JS. To create an account or a new access token, visit https://account.mapbox.com/")))}}),s.postMapLoadEvent(this._getMapId(),this._requestManager._skuToken,this._requestManager._customAccessToken,()=>{})}_updateTerrain(){const h=this._isDragging();this.painter.updateTerrain(this.style,h)}_calculateSpeedIndex(){const h=this.painter.canvasCopy(),n=this.painter.getCanvasCopiesAndTimestamps();n.timeStamps.push(performance.now());const a=this.painter.context.gl,p=a.createFramebuffer();function _(b){a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,b,0);const I=new Uint8Array(a.drawingBufferWidth*a.drawingBufferHeight*4);return a.readPixels(0,0,a.drawingBufferWidth,a.drawingBufferHeight,a.RGBA,a.UNSIGNED_BYTE,I),I}return a.bindFramebuffer(a.FRAMEBUFFER,p),this._canvasPixelComparison(_(h),n.canvasCopies.map(_),n.timeStamps)}_canvasPixelComparison(h,n,a){let p=a[1]-a[0];const _=h.length/4;for(let b=0;b<n.length;b++){const I=n[b];let M=0;for(let P=0;P<I.length;P+=4)I[P]===h[P]&&I[P+1]===h[P+1]&&I[P+2]===h[P+2]&&I[P+3]===h[P+3]&&(M+=1);p+=(a[b+2]-a[b+1])*(1-M/_)}return p}remove(){this._hash&&this._hash.remove();for(const n of this._controls)n.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this._domRenderTaskQueue.clear(),this.style&&this.style.destroy(),this.painter.destroy(),this.handlers&&this.handlers.destroy(),this.handlers=void 0,this.setStyle(null),s.window!==void 0&&(s.window.removeEventListener("resize",this._onWindowResize,!1),s.window.removeEventListener("orientationchange",this._onWindowResize,!1),s.window.removeEventListener("webkitfullscreenchange",this._onWindowResize,!1),s.window.removeEventListener("online",this._onWindowOnline,!1),s.window.removeEventListener("visibilitychange",this._onVisibilityChange,!1));const h=this.painter.context.gl.getExtension("WEBGL_lose_context");h&&h.loseContext(),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvasContainer.remove(),this._controlContainer.remove(),this._missingCSSCanary.remove(),this._canvas=void 0,this._canvasContainer=void 0,this._controlContainer=void 0,this._missingCSSCanary=void 0,this._container.classList.remove("mapboxgl-map"),this._container.removeEventListener("scroll",this._onMapScroll,!1),s.removeAuthState(this.painter.context.gl),this._removed=!0,this.fire(new s.Event("remove"))}triggerRepaint(){this._triggerFrame(!0)}_triggerFrame(h){this._renderNextFrame=this._renderNextFrame||h,this.style&&!this._frame&&(this._frame=s.exported.frame(n=>{const a=!!this._renderNextFrame;this._frame=null,this._renderNextFrame=null,a&&this._render(n)}))}_preloadTiles(h){const n=this.style?Object.values(this.style._sourceCaches):[];return s.asyncAll(n,(a,p)=>a._preloadTiles(h,p),()=>{this.triggerRepaint()}),this}_onWindowOnline(){this._update()}_onWindowResize(h){this._trackResize&&this.resize({originalEvent:h})._update()}_onVisibilityChange(){s.window.document.visibilityState==="hidden"&&this._visibilityHidden++}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(h){this._showTileBoundaries!==h&&(this._showTileBoundaries=h,this._update())}get showTerrainWireframe(){return!!this._showTerrainWireframe}set showTerrainWireframe(h){this._showTerrainWireframe!==h&&(this._showTerrainWireframe=h,this._update())}get speedIndexTiming(){return!!this._speedIndexTiming}set speedIndexTiming(h){this._speedIndexTiming!==h&&(this._speedIndexTiming=h,this._update())}get showPadding(){return!!this._showPadding}set showPadding(h){this._showPadding!==h&&(this._showPadding=h,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(h){this._showCollisionBoxes!==h&&(this._showCollisionBoxes=h,h?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(h){this._showOverdrawInspector!==h&&(this._showOverdrawInspector=h,this._update())}get repaint(){return!!this._repaint}set repaint(h){this._repaint!==h&&(this._repaint=h,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(h){this._vertices=h,this._update()}get showTileAABBs(){return!!this._showTileAABBs}set showTileAABBs(h){this._showTileAABBs!==h&&(this._showTileAABBs=h,h&&this._update())}_setCacheLimits(h,n){s.setCacheLimits(h,n)}get version(){return s.version}},NavigationControl:class{constructor(h){this.options=s.extend({},em,h),this._container=we("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._container.addEventListener("contextmenu",n=>n.preventDefault()),this.options.showZoom&&(s.bindAll(["_setButtonTitle","_updateZoomButtons"],this),this._zoomInButton=this._createButton("mapboxgl-ctrl-zoom-in",n=>{this._map&&this._map.zoomIn({},{originalEvent:n})}),we("span","mapboxgl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("mapboxgl-ctrl-zoom-out",n=>{this._map&&this._map.zoomOut({},{originalEvent:n})}),we("span","mapboxgl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(s.bindAll(["_rotateCompassArrow"],this),this._compass=this._createButton("mapboxgl-ctrl-compass",n=>{const a=this._map;a&&(this.options.visualizePitch?a.resetNorthPitch({},{originalEvent:n}):a.resetNorth({},{originalEvent:n}))}),this._compassIcon=we("span","mapboxgl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}_updateZoomButtons(){const h=this._map;if(!h)return;const n=h.getZoom(),a=n===h.getMaxZoom(),p=n===h.getMinZoom();this._zoomInButton.disabled=a,this._zoomOutButton.disabled=p,this._zoomInButton.setAttribute("aria-disabled",a.toString()),this._zoomOutButton.setAttribute("aria-disabled",p.toString())}_rotateCompassArrow(){const h=this._map;if(!h)return;const n=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(h.transform.pitch*(Math.PI/180)),.5)}) rotateX(${h.transform.pitch}deg) rotateZ(${h.transform.angle*(180/Math.PI)}deg)`:`rotate(${h.transform.angle*(180/Math.PI)}deg)`;h._requestDomTask(()=>{this._compassIcon&&(this._compassIcon.style.transform=n)})}onAdd(h){return this._map=h,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),h.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&h.on("pitch",this._rotateCompassArrow),h.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new tm(h,this._compass,this.options.visualizePitch)),this._container}onRemove(){const h=this._map;h&&(this._container.remove(),this.options.showZoom&&h.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&h.off("pitch",this._rotateCompassArrow),h.off("rotate",this._rotateCompassArrow),this._handler&&this._handler.off(),this._handler=void 0),this._map=void 0)}_createButton(h,n){const a=we("button",h,this._container);return a.type="button",a.addEventListener("click",n),a}_setButtonTitle(h,n){if(!this._map)return;const a=this._map._getUIString(`NavigationControl.${n}`);h.setAttribute("aria-label",a),h.firstElementChild&&h.firstElementChild.setAttribute("title",a)}},GeolocateControl:class extends s.Evented{constructor(h){super(),this.options=s.extend({geolocation:s.window.navigator.geolocation},Bc,h),s.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker","_updateMarkerRotation","_onDeviceOrientation"],this),this._updateMarkerRotationThrottled=Na(this._updateMarkerRotation,20),this._numberOfWatches=0}onAdd(h){return this._map=h,this._container=we("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkGeolocationSupport(this._setupUI),this._container}onRemove(){this._geolocationWatchID!==void 0&&(this.options.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off("zoom",this._onZoom),this._map=void 0,this._numberOfWatches=0,this._noTimeout=!1}_checkGeolocationSupport(h){const n=(a=!!this.options.geolocation)=>{this._supportsGeolocation=a,h(a)};this._supportsGeolocation!==void 0?h(this._supportsGeolocation):s.window.navigator.permissions!==void 0?s.window.navigator.permissions.query({name:"geolocation"}).then(a=>n(a.state!=="denied")).catch(()=>n()):n()}_isOutOfMapMaxBounds(h){const n=this._map.getMaxBounds(),a=h.coords;return!!n&&(a.longitude<n.getWest()||a.longitude>n.getEast()||a.latitude<n.getSouth()||a.latitude>n.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}}_onSuccess(h){if(this._map){if(this._isOutOfMapMaxBounds(h))return this._setErrorState(),this.fire(new s.Event("outofmaxbounds",h)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=h,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(h),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(h),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new s.Event("geolocate",h)),this._finish()}}_updateCamera(h){const n=new s.LngLat(h.coords.longitude,h.coords.latitude),a=h.coords.accuracy,p=this._map.getBearing(),_=s.extend({bearing:p},this.options.fitBoundsOptions);this._map.fitBounds(n.toBounds(a),_,{geolocateSource:!0})}_updateMarker(h){if(h){const n=new s.LngLat(h.coords.longitude,h.coords.latitude);this._accuracyCircleMarker.setLngLat(n).addTo(this._map),this._userLocationDotMarker.setLngLat(n).addTo(this._map),this._accuracy=h.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()}_updateCircleRadius(){const h=this._map.transform,n=s.mercatorZfromAltitude(1,h._center.lat)*h.worldSize,a=Math.ceil(2*this._accuracy*n);this._circleElement.style.width=`${a}px`,this._circleElement.style.height=`${a}px`}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}_updateMarkerRotation(){this._userLocationDotMarker&&typeof this._heading=="number"?(this._userLocationDotMarker.setRotation(this._heading),this._dotElement.classList.add("mapboxgl-user-location-show-heading")):(this._dotElement.classList.remove("mapboxgl-user-location-show-heading"),this._userLocationDotMarker.setRotation(0))}_onError(h){if(this._map){if(this.options.trackUserLocation)if(h.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.setAttribute("aria-label",n),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",n),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(h.code===3&&this._noTimeout)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new s.Event("error",h)),this._finish()}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0}_setupUI(h){if(this._map!==void 0){if(this._container.addEventListener("contextmenu",n=>n.preventDefault()),this._geolocateButton=we("button","mapboxgl-ctrl-geolocate",this._container),we("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",h===!1){s.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");const n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.setAttribute("aria-label",n),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",n)}else{const n=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.setAttribute("aria-label",n),this._geolocateButton.firstElementChild&&this._geolocateButton.firstElementChild.setAttribute("title",n)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=we("div","mapboxgl-user-location"),this._dotElement.appendChild(we("div","mapboxgl-user-location-dot")),this._dotElement.appendChild(we("div","mapboxgl-user-location-heading")),this._userLocationDotMarker=new wt({element:this._dotElement,rotationAlignment:"map",pitchAlignment:"map"}),this._circleElement=we("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new wt({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",n=>{n.geolocateSource||this._watchState!=="ACTIVE_LOCK"||n.originalEvent&&n.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this.fire(new s.Event("trackuserlocationend")))})}}_onDeviceOrientation(h){this._userLocationDotMarker&&(h.webkitCompassHeading?this._heading=h.webkitCompassHeading:h.absolute===!0&&(this._heading=-1*h.alpha),this._updateMarkerRotationThrottled())}trigger(){if(!this._setup)return s.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new s.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":this._numberOfWatches--,this._noTimeout=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new s.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new s.Event("trackuserlocationstart"))}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let h;this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),this._numberOfWatches++,this._numberOfWatches>1?(h={maximumAge:6e5,timeout:0},this._noTimeout=!0):(h=this.options.positionOptions,this._noTimeout=!1),this._geolocationWatchID=this.options.geolocation.watchPosition(this._onSuccess,this._onError,h),this.options.showUserHeading&&this._addDeviceOrientationListener()}}else this.options.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_addDeviceOrientationListener(){const h=()=>{s.window.addEventListener("ondeviceorientationabsolute"in s.window?"deviceorientationabsolute":"deviceorientation",this._onDeviceOrientation)};s.window.DeviceMotionEvent!==void 0&&typeof s.window.DeviceMotionEvent.requestPermission=="function"?DeviceOrientationEvent.requestPermission().then(n=>{n==="granted"&&h()}).catch(console.error):h()}_clearWatch(){this.options.geolocation.clearWatch(this._geolocationWatchID),s.window.removeEventListener("deviceorientation",this._onDeviceOrientation),s.window.removeEventListener("deviceorientationabsolute",this._onDeviceOrientation),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},AttributionControl:Ct,ScaleControl:class{constructor(h){this.options=s.extend({},Fc,h),this._isNumberFormatSupported=function(){try{return new Intl.NumberFormat("en",{style:"unit",unitDisplay:"short",unit:"meter"}),!0}catch{return!1}}(),s.bindAll(["_update","_setScale","setUnit"],this)}getDefaultPosition(){return"bottom-left"}_update(){const h=this.options.maxWidth||100,n=this._map,a=n._containerHeight/2,p=n._containerWidth/2-h/2,_=n.unproject([p,a]),b=n.unproject([p+h,a]),I=_.distanceTo(b);if(this.options.unit==="imperial"){const M=3.2808*I;M>5280?this._setScale(h,M/5280,"mile"):this._setScale(h,M,"foot")}else this.options.unit==="nautical"?this._setScale(h,I/1852,"nautical-mile"):I>=1e3?this._setScale(h,I/1e3,"kilometer"):this._setScale(h,I,"meter")}_setScale(h,n,a){this._map._requestDomTask(()=>{const p=function(b){const I=Math.pow(10,`${Math.floor(b)}`.length-1);let M=b/I;return M=M>=10?10:M>=5?5:M>=3?3:M>=2?2:M>=1?1:function(P){const N=Math.pow(10,Math.ceil(-Math.log(P)/Math.LN10));return Math.round(P*N)/N}(M),I*M}(n),_=p/n;this._container.innerHTML=this._isNumberFormatSupported&&a!=="nautical-mile"?new Intl.NumberFormat(this._language,{style:"unit",unitDisplay:"short",unit:a}).format(p):`${p}&nbsp;${Uc[a]}`,this._container.style.width=h*_+"px"})}onAdd(h){return this._map=h,this._language=h.getLanguage(),this._container=we("div","mapboxgl-ctrl mapboxgl-ctrl-scale",h.getContainer()),this._container.dir="auto",this._map.on("move",this._update),this._update(),this._container}onRemove(){this._container.remove(),this._map.off("move",this._update),this._map=void 0}_setLanguage(h){this._language=h,this._update()}setUnit(h){this.options.unit=h,this._update()}},FullscreenControl:class{constructor(h){this._fullscreen=!1,h&&h.container&&(h.container instanceof s.window.HTMLElement?this._container=h.container:s.warnOnce("Full screen control 'container' must be a DOM element.")),s.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in s.window.document?this._fullscreenchange="fullscreenchange":"onwebkitfullscreenchange"in s.window.document&&(this._fullscreenchange="webkitfullscreenchange")}onAdd(h){return this._map=h,this._container||(this._container=this._map.getContainer()),this._controlContainer=we("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",s.warnOnce("This device does not support fullscreen mode.")),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,s.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)}_checkFullscreenSupport(){return!(!s.window.document.fullscreenEnabled&&!s.window.document.webkitFullscreenEnabled)}_setupUI(){const h=this._fullscreenButton=we("button","mapboxgl-ctrl-fullscreen",this._controlContainer);we("span","mapboxgl-ctrl-icon",h).setAttribute("aria-hidden","true"),h.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),s.window.document.addEventListener(this._fullscreenchange,this._changeIcon)}_updateTitle(){const h=this._getTitle();this._fullscreenButton.setAttribute("aria-label",h),this._fullscreenButton.firstElementChild&&this._fullscreenButton.firstElementChild.setAttribute("title",h)}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_changeIcon(){(s.window.document.fullscreenElement||s.window.document.webkitFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())}_onClickFullscreen(){this._isFullscreen()?s.window.document.exitFullscreen?s.window.document.exitFullscreen():s.window.document.webkitCancelFullScreen&&s.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()}},Popup:class extends s.Evented{constructor(h){super(),this.options=s.extend(Object.create(zc),h),s.bindAll(["_update","_onClose","remove","_onMouseEvent"],this),this._classList=new Set(h&&h.className?h.className.trim().split(/\s+/):[])}addTo(h){return this._map&&this.remove(),this._map=h,this.options.closeOnClick&&h.on("preclick",this._onClose),this.options.closeOnMove&&h.on("move",this._onClose),h.on("remove",this.remove),this._update(),h._addPopup(this),this._focusFirstElement(),this._trackPointer?(h.on("mousemove",this._onMouseEvent),h.on("mouseup",this._onMouseEvent),h._canvasContainer.classList.add("mapboxgl-track-pointer")):h.on("move",this._update),this.fire(new s.Event("open")),this}isOpen(){return!!this._map}remove(){this._content&&this._content.remove(),this._container&&(this._container.remove(),this._container=void 0);const h=this._map;return h&&(h.off("move",this._update),h.off("move",this._onClose),h.off("preclick",this._onClose),h.off("click",this._onClose),h.off("remove",this.remove),h.off("mousemove",this._onMouseEvent),h.off("mouseup",this._onMouseEvent),h.off("drag",this._onMouseEvent),h._canvasContainer&&h._canvasContainer.classList.remove("mapboxgl-track-pointer"),h._removePopup(this),this._map=void 0),this.fire(new s.Event("close")),this}getLngLat(){return this._lngLat}setLngLat(h){this._lngLat=s.LngLat.convert(h),this._pos=null,this._trackPointer=!1,this._update();const n=this._map;return n&&(n.on("move",this._update),n.off("mousemove",this._onMouseEvent),n._canvasContainer.classList.remove("mapboxgl-track-pointer")),this}trackPointer(){this._trackPointer=!0,this._pos=null,this._update();const h=this._map;return h&&(h.off("move",this._update),h.on("mousemove",this._onMouseEvent),h.on("drag",this._onMouseEvent),h._canvasContainer.classList.add("mapboxgl-track-pointer")),this}getElement(){return this._container}setText(h){return this.setDOMContent(s.window.document.createTextNode(h))}setHTML(h){const n=s.window.document.createDocumentFragment(),a=s.window.document.createElement("body");let p;for(a.innerHTML=h;p=a.firstChild,p;)n.appendChild(p);return this.setDOMContent(n)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(h){return this.options.maxWidth=h,this._update(),this}setDOMContent(h){let n=this._content;if(n)for(;n.hasChildNodes();)n.firstChild&&n.removeChild(n.firstChild);else n=this._content=we("div","mapboxgl-popup-content",this._container||void 0);if(n.appendChild(h),this.options.closeButton){const a=this._closeButton=we("button","mapboxgl-popup-close-button",n);a.type="button",a.setAttribute("aria-label","Close popup"),a.setAttribute("aria-hidden","true"),a.innerHTML="&#215;",a.addEventListener("click",this._onClose)}return this._update(),this._focusFirstElement(),this}addClassName(h){return this._classList.add(h),this._updateClassList(),this}removeClassName(h){return this._classList.delete(h),this._updateClassList(),this}setOffset(h){return this.options.offset=h,this._update(),this}toggleClassName(h){let n;return this._classList.delete(h)?n=!1:(this._classList.add(h),n=!0),this._updateClassList(),n}_onMouseEvent(h){this._update(h.point)}_getAnchor(h){if(this.options.anchor)return this.options.anchor;const n=this._map,a=this._container,p=this._pos;if(!n||!a||!p)return"bottom";const _=a.offsetWidth,b=a.offsetHeight,I=p.x<_/2,M=p.x>n.transform.width-_/2;if(p.y+h<b)return I?"top-left":M?"top-right":"top";if(p.y>n.transform.height-b){if(I)return"bottom-left";if(M)return"bottom-right"}return I?"left":M?"right":"bottom"}_updateClassList(){const h=this._container;if(!h)return;const n=[...this._classList];n.push("mapboxgl-popup"),this._anchor&&n.push(`mapboxgl-popup-anchor-${this._anchor}`),this._trackPointer&&n.push("mapboxgl-popup-track-pointer"),h.className=n.join(" ")}_update(h){const n=this._map,a=this._content;if(!n||!this._lngLat&&!this._trackPointer||!a)return;let p=this._container;if(p||(p=this._container=we("div","mapboxgl-popup",n.getContainer()),this._tip=we("div","mapboxgl-popup-tip",p),p.appendChild(a)),this.options.maxWidth&&p.style.maxWidth!==this.options.maxWidth&&(p.style.maxWidth=this.options.maxWidth),n.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=Ua(this._lngLat,this._pos,n.transform)),!this._trackPointer||h){const _=this._pos=this._trackPointer&&h?h:n.project(this._lngLat),b=Df(this.options.offset),I=this._anchor=this._getAnchor(b.y),M=Df(this.options.offset,I),P=_.add(M).round();n._requestDomTask(()=>{this._container&&I&&(this._container.style.transform=`${Qs[I]} translate(${P.x}px,${P.y}px)`)})}if(!this._marker&&n._showingGlobe()){const _=s.isLngLatBehindGlobe(n.transform,this._lngLat)?0:1;this._setOpacity(_)}this._updateClassList()}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const h=this._container.querySelector(Qd);h&&h.focus()}_onClose(){this.remove()}_setOpacity(h){this._container&&(this._container.style.opacity=`${h}`),this._content&&(this._content.style.pointerEvents=h?"auto":"none")}},Marker:wt,Style:mr,LngLat:s.LngLat,LngLatBounds:s.LngLatBounds,Point:s.Point,MercatorCoordinate:s.MercatorCoordinate,FreeCameraOptions:Xo,Evented:s.Evented,config:s.config,prewarm:function(){br().acquire(xr)},clearPrewarmedResources:function(){const h=pn;h&&(h.isPreloaded()&&h.numActive()===1?(h.release(xr),pn=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get accessToken(){return s.config.ACCESS_TOKEN},set accessToken(h){s.config.ACCESS_TOKEN=h},get baseApiUrl(){return s.config.API_URL},set baseApiUrl(h){s.config.API_URL=h},get workerCount(){return cn.workerCount},set workerCount(h){cn.workerCount=h},get maxParallelImageRequests(){return s.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(h){s.config.MAX_PARALLEL_IMAGE_REQUESTS=h},clearStorage(h){s.clearTileCache(h)},workerUrl:"",workerClass:null,setNow:s.exported.setNow,restoreNow:s.exported.restoreNow};return ja});var $=A;return $})})(fg);var k1=fg.exports;const Rr=bp(k1),pg=["17763402f97aa5d363379927f5ce70a6"][0],M1="pk.eyJ1IjoiYWVzcWUiLCJhIjoiY2lmNGVxYnNnMDNrenJya2xzbmQ4M281bCJ9.GfMJ8R2NX1dDcc9Hs2PO3A",dg={TDT_ZXY_IMG:{version:8,sources:{"raster-tiles":{type:"raster",tileSize:256,tiles:["https://t0.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk="+pg]}},layers:[{id:"raster-tiles",type:"raster",source:"raster-tiles",minzoom:0,maxzoom:22,layout:{visibility:"visible"}}]},TDT_WMTS_IMG:{version:8,sources:{"raster-white":{type:"raster",tileSize:256,tiles:["http://t0.tianditu.com/vec_w/wmts?&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=tiles&tk="+pg]}},layers:[{id:"raster-white",type:"raster",source:"raster-white",minzoom:0,maxzoom:22,layout:{visibility:"visible"}}]},SM_WMTS_VEC_WHITE:{version:8,sources:{"raster-supermap-white":{type:"raster",tileSize:256,tiles:["http://172.160.1.206:8090/iserver/services/map-nmjtjt/wmts100/NMjtjtGis/default/GoogleMapsCompatible_NMjtjtGis/{z}/{y}/{x}.png"]}},layers:[{id:"raster-supermap-white",type:"raster",source:"raster-supermap-white",minzoom:0,maxzoom:22,layout:{visibility:"visible"}}]},SM_WMTS_VEC_BLUE:{version:8,sources:{"raster-supermap-blue":{type:"raster",tileSize:256,tiles:["http://172.160.1.206:8090/iserver/services/map-nmjtjtblue/wmts100/NMjtjtGis/default/GoogleMapsCompatible_NMjtjtGis/{z}/{y}/{x}.png"]}},layers:[{id:"raster-supermap-blue",type:"raster",source:"raster-supermap-blue",minzoom:0,maxzoom:22,layout:{visibility:"visible"}}]}},mg={center:[116.39,39.93],zoom:10},A1="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABXUlEQVQ4T6VTu0oDURCdc29cENTEgPoBaiHY+cLaSmyWLEkj1lZi7Rf4AyL4A2KzIZ2VnVhpIVipP6BCTKIgJLn3yC7ZZXfdqJCtdu7MnJkzcwaS+d5dtwStF6D1LEUmAjdEPmnMK415nm40WskURAZF0HHdNXGc+Sxo0qYxT0Xfv4MIB+DhH9qVyhYKhZnfkuNi/f5bsV6/CkDCDtquu/5X5Sxw0EnJ928RcFaOs50KMKYMYE+ApfCdfCB5Llo3k3G2271Ey/NWofVi7DCmLMAxgMkUd/JDyKMkSNAFmtXqjgamomBYeyjARu4syBsqdRL5DNlBq1arQUTHCdaeZavHwwu6UGo/shXZGx0gS0GsPQCwOYTCNZU6TVMYZYjk49A1CrArIssDtd2TvMhdYxDwY5X/kGMspFAno0o5BvG8lZSocjrJPaZkXHTOVqm5MZHxwNcT+VLWvuSd8zcITMKOoWKQ5QAAAABJRU5ErkJggg==",C1="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABTklEQVQ4T6WTzS4EURCFv7o9G/EbCR4AC4mFxF9kjI2V2NuItZVYS/uJhHgBkXgB8QZWdsOKhMQKL4BEMMTC9C3pnumeO60HydzdrXPq1Kl7q4TUGdnSrtYyA16OXixtEWx4D8o8fuS4v9qWFzdFaheVgs+48ehPi7r3csDd2S6XIBrGqwIq0+vMeoae35JjLLA8FXc4DUUigYKvE39VTgtXnMiFhD13KnMuQS3dalgChqrxG7EcieHZ5b0KJ5L3dSznMRgDUbKwJ0J7nahSEmXNFQldSGFT5w10xGQLqwKTWW+hcG5g3+G+ycyGLojgJUHlMF09caeUjLCccC1fzQv8aEFZEWGqQQtFAwd1LTTziIFy2/gbhUVgOKomXIvlOPMbQzzt4j/TmAxShdzkKMcieZ9Rd6iynDRYpho1Xmfj0YelJUIMnzbgIWudvwHMF6CDKyS3NAAAAABJRU5ErkJggg==";class P1{constructor(d={}){if(this._container=d.container,!this._container)throw new Error("请传入地图容器ID才能创建地图。");Rr.accessToken=d.accessToken||M1,this._style=d.styleURL||dg.SM_WMTS_VEC_WHITE,this.map2d=new Rr.Map({container:this._container,style:this._style,center:d.center||mg.center,zoom:d.zoom||mg.zoom}),this.addSymbolImgLoad()}addSymbolImgLoad(){this.map2d.loadImage(C1,(d,w)=>{if(d)throw d;this.map2d.addImage("point",w)}),this.map2d.loadImage(A1,(d,w)=>{if(d)throw d;this.map2d.addImage("pointSelect",w);var k=document.getElementsByClassName("mapboxgl-ctrl-bottom-left");k.length>0&&(k[0].style.display="none")})}addFeaturePoint(d,w,k={}){if(!this.map2d)throw new Error("未加载控件。");if(w.length!==0){var A={type:"FeatureCollection",features:w};this.map2d.addSource(d,{type:"geojson",data:A}),this.map2d.addLayer({id:d,type:k.type?k.type:"circle",source:d,paint:k.paint?k.paint:{"circle-color":"blue","circle-radius":6},layout:k.layout?k.layout:{visibility:"visible"}})}}addFeatureLine(d,w,k={}){if(!this.map2d)throw new Error("未加载控件。");if(w.length!==0){var A={type:"FeatureCollection",features:w};this.map2d.addSource(d,{type:"geojson",data:A}),this.map2d.addLayer({id:d,type:"line",source:d,paint:k.paint?k.paint:{"line-color":"#FFBD76","line-width":4},layout:k.layout?k.layout:{visibility:"visible"}})}}addFeatureFill(d,w,k={}){if(!this.map2d)throw new Error("未加载控件。");if(w.length!==0){var A={type:"FeatureCollection",features:w};this.map2d.addSource(d,{type:"geojson",data:A}),this.map2d.addLayer({id:d,type:"fill",source:d,paint:k.paint?k.paint:{"fill-color":"rgba(93,174,255,0.4)","fill-opacity":.7,"fill-outline-color":"rgba(93,174,255,0.8)"},layout:k.layout?k.layout:{visibility:"visible"}})}}addCluster(d,w,k={clusterStyle:["#51bbd6",100,"#f1f075",750,"#f28cb1"]}){if(!this.map2d)throw new Error("未加载控件。");if(w.length===0)return;var A={type:"FeatureCollection",features:w};this.map2d.addSource(d,{type:"geojson",data:A,cluster:!0,clusterMaxZoom:14,clusterRadius:50});let O=k.clusterStyle||["#51bbd6",100,"#f1f075",750,"#f28cb1"];this.map2d.addLayer({id:d+"-cluster",type:"circle",source:d,filter:["has","point_count"],paint:{"circle-color":["step",["get","point_count"],...O],"circle-radius":["step",["get","point_count"],20,100,30,750,40]}}),this.map2d.addLayer({id:d+"-cluster-count",type:"symbol",source:d,filter:["has","point_count"],layout:{"text-field":"{point_count_abbreviated}","text-font":["Microsoft YaHei Regular"],"text-size":12}}),this.map2d.addLayer({id:d,type:"symbol",source:d,filter:["!",["has","point_count"]],layout:{"icon-image":"point","icon-allow-overlap":!0,visibility:"visible"}})}flyTo(d){this.map2d&&this.map2d.flyTo({center:d.center,zoom:d.zoom,essential:!0,duration:d.duration||2e3,curve:1})}removeLayer(d){this.map2d.getLayer(d)&&(this.map2d.removeLayer(d),this.map2d.removeSource(d))}removeClusterLayer(d){this.map2d.getLayer(d)&&(this.map2d.removeLayer(d),this.map2d.removeLayer(d+"-cluster-count"),this.map2d.removeLayer(d+"-cluster"),this.map2d.removeSource(d))}}const L1="0.1.0";class R1{constructor(d={}){return this.hmap=d.map,this._anchor=d.anchor||"bottom-right",this._zoomcontrol=new Rr.NavigationControl({showZoom:!0,showCompass:!1}),this}addTo(d){this.hmap||(this.hmap=d),this.hmap.map2d.addControl(this._zoomcontrol,this._anchor)}remove(){if(this.hmap||this._zoomcontrol)throw new Error("未加载缩放控件。");this.hmap.map2d.removeControl(this._zoomcontrol)}}class D1{constructor(d={}){return this.hmap=d.map,this._anchor=d.anchor||"bottom-right",this._fullscreen=new Rr.FullscreenControl({container:null}),this}addTo(d){this.hmap||(this.hmap=d),this._fullscreen.container=this.hmap.map2d.getContainer(),this.hmap.map2d.addControl(this._fullscreen,this._anchor)}remove(){if(this.hmap||this._fullscreen)throw new Error("未加载全屏控件。");this.hmap.map2d.removeControl(this._fullscreen)}}class O1{constructor(d={}){return this.hmap=d.map,this._anchor=d.anchor||"bottom-right",this._compass=new Rr.NavigationControl({showCompass:!0,showZoom:!1}),this}addTo(d){this.hmap||(this.hmap=d),this.hmap.map2d.addControl(this._compass,this._anchor)}remove(){if(this.hmap||this._compass)throw new Error("未加载指北针控件。");this.hmap.map2d.removeControl(this._compass)}}class z1{constructor(d={}){return this.hmap=d.map,this._anchor=d.anchor||"bottom-right",this._scaleline=new Rr.ScaleControl({unit:d.unit?d.unit:"metric"}),this}addTo(d){this.hmap||(this.hmap=d),this.hmap.map2d.addControl(this._scaleline,this._anchor)}remove(){if(this.hmap||this._scaleline)throw new Error("未加载比例尺控件。");this.hmap.map2d.removeControl(this._scaleline)}}class N1{constructor(d={closeButton:!1,closeOnClick:!1,className:"mapbox-popup",maxWidth:"350px"}){return this.hmap=d.map,this.popup=new Rr.Popup(d),this.popup}}var gg=Object.prototype.toString,_g=function(d){var w=gg.call(d),k=w==="[object Arguments]";return k||(k=w!=="[object Array]"&&d!==null&&typeof d=="object"&&typeof d.length=="number"&&d.length>=0&&gg.call(d.callee)==="[object Function]"),k},wp,yg;function B1(){if(yg)return wp;yg=1;var x;if(!Object.keys){var d=Object.prototype.hasOwnProperty,w=Object.prototype.toString,k=_g,A=Object.prototype.propertyIsEnumerable,O=!A.call({toString:null},"toString"),$=A.call(function(){},"prototype"),s=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],Z=function(we){var ye=we.constructor;return ye&&ye.prototype===we},oe={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},pe=function(){if(typeof window>"u")return!1;for(var we in window)try{if(!oe["$"+we]&&d.call(window,we)&&window[we]!==null&&typeof window[we]=="object")try{Z(window[we])}catch{return!0}}catch{return!0}return!1}(),he=function(we){if(typeof window>"u"||!pe)return Z(we);try{return Z(we)}catch{return!1}};x=function(ye){var Ie=ye!==null&&typeof ye=="object",Tt=w.call(ye)==="[object Function]",gt=k(ye),Mt=Ie&&w.call(ye)==="[object String]",Le=[];if(!Ie&&!Tt&&!gt)throw new TypeError("Object.keys called on a non-object");var Qe=$&&Tt;if(Mt&&ye.length>0&&!d.call(ye,0))for(var Et=0;Et<ye.length;++Et)Le.push(String(Et));if(gt&&ye.length>0)for(var ut=0;ut<ye.length;++ut)Le.push(String(ut));else for(var yt in ye)!(Qe&&yt==="prototype")&&d.call(ye,yt)&&Le.push(String(yt));if(O)for(var _t=he(ye),It=0;It<s.length;++It)!(_t&&s[It]==="constructor")&&d.call(ye,s[It])&&Le.push(s[It]);return Le}}return wp=x,wp}var F1=Array.prototype.slice,U1=_g,vg=Object.keys,Eh=vg?function(d){return vg(d)}:B1(),xg=Object.keys;Eh.shim=function(){if(Object.keys){var d=function(){var w=Object.keys(arguments);return w&&w.length===arguments.length}(1,2);d||(Object.keys=function(k){return U1(k)?xg(F1.call(k)):xg(k)})}else Object.keys=Eh;return Object.keys||Eh};var Ep=Eh,j1=Error,V1=EvalError,G1=RangeError,$1=ReferenceError,bg=SyntaxError,ua=TypeError,q1=URIError,Th=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var d={},w=Symbol("test"),k=Object(w);if(typeof w=="string"||Object.prototype.toString.call(w)!=="[object Symbol]"||Object.prototype.toString.call(k)!=="[object Symbol]")return!1;var A=42;d[w]=A;for(w in d)return!1;if(typeof Object.keys=="function"&&Object.keys(d).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(d).length!==0)return!1;var O=Object.getOwnPropertySymbols(d);if(O.length!==1||O[0]!==w||!Object.prototype.propertyIsEnumerable.call(d,w))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var $=Object.getOwnPropertyDescriptor(d,w);if($.value!==A||$.enumerable!==!0)return!1}return!0},wg=typeof Symbol<"u"&&Symbol,Z1=Th,Tp=function(){return typeof wg!="function"||typeof Symbol!="function"||typeof wg("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:Z1()},Sp={__proto__:null,foo:{}},X1=Object,W1=function(){return{__proto__:Sp}.foo===Sp.foo&&!(Sp instanceof X1)},Y1="Function.prototype.bind called on incompatible ",H1=Object.prototype.toString,K1=Math.max,J1="[object Function]",Eg=function(d,w){for(var k=[],A=0;A<d.length;A+=1)k[A]=d[A];for(var O=0;O<w.length;O+=1)k[O+d.length]=w[O];return k},Q1=function(d,w){for(var k=[],A=w,O=0;A<d.length;A+=1,O+=1)k[O]=d[A];return k},eb=function(x,d){for(var w="",k=0;k<x.length;k+=1)w+=x[k],k+1<x.length&&(w+=d);return w},tb=function(d){var w=this;if(typeof w!="function"||H1.apply(w)!==J1)throw new TypeError(Y1+w);for(var k=Q1(arguments,1),A,O=function(){if(this instanceof A){var pe=w.apply(this,Eg(k,arguments));return Object(pe)===pe?pe:this}return w.apply(d,Eg(k,arguments))},$=K1(0,w.length-k.length),s=[],Z=0;Z<$;Z++)s[Z]="$"+Z;if(A=Function("binder","return function ("+eb(s,",")+"){ return binder.apply(this,arguments); }")(O),w.prototype){var oe=function(){};oe.prototype=w.prototype,A.prototype=new oe,oe.prototype=null}return A},ib=tb,Ip=Function.prototype.bind||ib,nb=Function.prototype.call,rb=Object.prototype.hasOwnProperty,ob=Ip,Tg=ob.call(nb,rb),Ai,sb=j1,ab=V1,lb=G1,ub=$1,ql=bg,Zl=ua,cb=q1,Sg=Function,kp=function(x){try{return Sg('"use strict"; return ('+x+").constructor;")()}catch{}},Qa=Object.getOwnPropertyDescriptor;if(Qa)try{Qa({},"")}catch{Qa=null}var Mp=function(){throw new Zl},hb=Qa?function(){try{return arguments.callee,Mp}catch{try{return Qa(arguments,"callee").get}catch{return Mp}}}():Mp,Xl=Tp(),fb=W1(),Qn=Object.getPrototypeOf||(fb?function(x){return x.__proto__}:null),Wl={},pb=typeof Uint8Array>"u"||!Qn?Ai:Qn(Uint8Array),el={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?Ai:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Ai:ArrayBuffer,"%ArrayIteratorPrototype%":Xl&&Qn?Qn([][Symbol.iterator]()):Ai,"%AsyncFromSyncIteratorPrototype%":Ai,"%AsyncFunction%":Wl,"%AsyncGenerator%":Wl,"%AsyncGeneratorFunction%":Wl,"%AsyncIteratorPrototype%":Wl,"%Atomics%":typeof Atomics>"u"?Ai:Atomics,"%BigInt%":typeof BigInt>"u"?Ai:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Ai:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Ai:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Ai:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":sb,"%eval%":eval,"%EvalError%":ab,"%Float32Array%":typeof Float32Array>"u"?Ai:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Ai:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Ai:FinalizationRegistry,"%Function%":Sg,"%GeneratorFunction%":Wl,"%Int8Array%":typeof Int8Array>"u"?Ai:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Ai:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Ai:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Xl&&Qn?Qn(Qn([][Symbol.iterator]())):Ai,"%JSON%":typeof JSON=="object"?JSON:Ai,"%Map%":typeof Map>"u"?Ai:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Xl||!Qn?Ai:Qn(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Ai:Promise,"%Proxy%":typeof Proxy>"u"?Ai:Proxy,"%RangeError%":lb,"%ReferenceError%":ub,"%Reflect%":typeof Reflect>"u"?Ai:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Ai:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Xl||!Qn?Ai:Qn(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Ai:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Xl&&Qn?Qn(""[Symbol.iterator]()):Ai,"%Symbol%":Xl?Symbol:Ai,"%SyntaxError%":ql,"%ThrowTypeError%":hb,"%TypedArray%":pb,"%TypeError%":Zl,"%Uint8Array%":typeof Uint8Array>"u"?Ai:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Ai:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Ai:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Ai:Uint32Array,"%URIError%":cb,"%WeakMap%":typeof WeakMap>"u"?Ai:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Ai:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Ai:WeakSet};if(Qn)try{null.error}catch(x){var db=Qn(Qn(x));el["%Error.prototype%"]=db}var mb=function x(d){var w;if(d==="%AsyncFunction%")w=kp("async function () {}");else if(d==="%GeneratorFunction%")w=kp("function* () {}");else if(d==="%AsyncGeneratorFunction%")w=kp("async function* () {}");else if(d==="%AsyncGenerator%"){var k=x("%AsyncGeneratorFunction%");k&&(w=k.prototype)}else if(d==="%AsyncIteratorPrototype%"){var A=x("%AsyncGenerator%");A&&Qn&&(w=Qn(A.prototype))}return el[d]=w,w},Ig={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Ju=Ip,Sh=Tg,gb=Ju.call(Function.call,Array.prototype.concat),_b=Ju.call(Function.apply,Array.prototype.splice),kg=Ju.call(Function.call,String.prototype.replace),Ih=Ju.call(Function.call,String.prototype.slice),yb=Ju.call(Function.call,RegExp.prototype.exec),vb=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,xb=/\\(\\)?/g,bb=function(d){var w=Ih(d,0,1),k=Ih(d,-1);if(w==="%"&&k!=="%")throw new ql("invalid intrinsic syntax, expected closing `%`");if(k==="%"&&w!=="%")throw new ql("invalid intrinsic syntax, expected opening `%`");var A=[];return kg(d,vb,function(O,$,s,Z){A[A.length]=s?kg(Z,xb,"$1"):$||O}),A},wb=function(d,w){var k=d,A;if(Sh(Ig,k)&&(A=Ig[k],k="%"+A[0]+"%"),Sh(el,k)){var O=el[k];if(O===Wl&&(O=mb(k)),typeof O>"u"&&!w)throw new Zl("intrinsic "+d+" exists, but is not available. Please file an issue!");return{alias:A,name:k,value:O}}throw new ql("intrinsic "+d+" does not exist!")},ss=function(d,w){if(typeof d!="string"||d.length===0)throw new Zl("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof w!="boolean")throw new Zl('"allowMissing" argument must be a boolean');if(yb(/^%?[^%]*%?$/,d)===null)throw new ql("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var k=bb(d),A=k.length>0?k[0]:"",O=wb("%"+A+"%",w),$=O.name,s=O.value,Z=!1,oe=O.alias;oe&&(A=oe[0],_b(k,gb([0,1],oe)));for(var pe=1,he=!0;pe<k.length;pe+=1){var we=k[pe],ye=Ih(we,0,1),Ie=Ih(we,-1);if((ye==='"'||ye==="'"||ye==="`"||Ie==='"'||Ie==="'"||Ie==="`")&&ye!==Ie)throw new ql("property names with quotes must have matching quotes");if((we==="constructor"||!he)&&(Z=!0),A+="."+we,$="%"+A+"%",Sh(el,$))s=el[$];else if(s!=null){if(!(we in s)){if(!w)throw new Zl("base intrinsic for "+d+" exists, but the property is not available.");return}if(Qa&&pe+1>=k.length){var Tt=Qa(s,we);he=!!Tt,he&&"get"in Tt&&!("originalValue"in Tt.get)?s=Tt.get:s=s[we]}else he=Sh(s,we),s=s[we];he&&!Z&&(el[$]=s)}}return s},Ap,Mg;function Cp(){if(Mg)return Ap;Mg=1;var x=ss,d=x("%Object.defineProperty%",!0)||!1;if(d)try{d({},"a",{value:1})}catch{d=!1}return Ap=d,Ap}var Eb=ss,kh=Eb("%Object.getOwnPropertyDescriptor%",!0);if(kh)try{kh([],"length")}catch{kh=null}var Pp=kh,Ag=Cp(),Tb=bg,Yl=ua,Cg=Pp,Lp=function(d,w,k){if(!d||typeof d!="object"&&typeof d!="function")throw new Yl("`obj` must be an object or a function`");if(typeof w!="string"&&typeof w!="symbol")throw new Yl("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new Yl("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new Yl("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new Yl("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new Yl("`loose`, if provided, must be a boolean");var A=arguments.length>3?arguments[3]:null,O=arguments.length>4?arguments[4]:null,$=arguments.length>5?arguments[5]:null,s=arguments.length>6?arguments[6]:!1,Z=!!Cg&&Cg(d,w);if(Ag)Ag(d,w,{configurable:$===null&&Z?Z.configurable:!$,enumerable:A===null&&Z?Z.enumerable:!A,value:k,writable:O===null&&Z?Z.writable:!O});else if(s||!A&&!O&&!$)d[w]=k;else throw new Tb("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},Rp=Cp(),Pg=function(){return!!Rp};Pg.hasArrayLengthDefineBug=function(){if(!Rp)return null;try{return Rp([],"length",{value:1}).length!==1}catch{return!0}};var Dp=Pg,Sb=Ep,Ib=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",kb=Object.prototype.toString,Mb=Array.prototype.concat,Lg=Lp,Ab=function(x){return typeof x=="function"&&kb.call(x)==="[object Function]"},Rg=Dp(),Cb=function(x,d,w,k){if(d in x){if(k===!0){if(x[d]===w)return}else if(!Ab(k)||!k())return}Rg?Lg(x,d,w,!0):Lg(x,d,w)},Dg=function(x,d){var w=arguments.length>2?arguments[2]:{},k=Sb(d);Ib&&(k=Mb.call(k,Object.getOwnPropertySymbols(d)));for(var A=0;A<k.length;A+=1)Cb(x,k[A],d[k[A]],w[k[A]])};Dg.supportsDescriptors=!!Rg;var tl=Dg,Og={exports:{}},Pb=ss,zg=Lp,Lb=Dp(),Ng=Pp,Bg=ua,Rb=Pb("%Math.floor%"),Db=function(d,w){if(typeof d!="function")throw new Bg("`fn` is not a function");if(typeof w!="number"||w<0||w>4294967295||Rb(w)!==w)throw new Bg("`length` must be a positive 32-bit integer");var k=arguments.length>2&&!!arguments[2],A=!0,O=!0;if("length"in d&&Ng){var $=Ng(d,"length");$&&!$.configurable&&(A=!1),$&&!$.writable&&(O=!1)}return(A||O||!k)&&(Lb?zg(d,"length",w,!0,!0):zg(d,"length",w)),d};(function(x){var d=Ip,w=ss,k=Db,A=ua,O=w("%Function.prototype.apply%"),$=w("%Function.prototype.call%"),s=w("%Reflect.apply%",!0)||d.call($,O),Z=Cp(),oe=w("%Math.max%");x.exports=function(we){if(typeof we!="function")throw new A("a function is required");var ye=s(d,$,arguments);return k(ye,1+oe(0,we.length-(arguments.length-1)),!0)};var pe=function(){return s(d,O,arguments)};Z?Z(x.exports,"apply",{value:pe}):x.exports.apply=pe})(Og);var Hl=Og.exports,Fg=ss,Ug=Hl,Ob=Ug(Fg("String.prototype.indexOf")),go=function(d,w){var k=Fg(d,!!w);return typeof k=="function"&&Ob(d,".prototype.")>-1?Ug(k):k},zb=Ep,jg=Th(),Vg=go,Gg=Object,Nb=Vg("Array.prototype.push"),$g=Vg("Object.prototype.propertyIsEnumerable"),Bb=jg?Object.getOwnPropertySymbols:null,qg=function(d,w){if(d==null)throw new TypeError("target must be an object");var k=Gg(d);if(arguments.length===1)return k;for(var A=1;A<arguments.length;++A){var O=Gg(arguments[A]),$=zb(O),s=jg&&(Object.getOwnPropertySymbols||Bb);if(s)for(var Z=s(O),oe=0;oe<Z.length;++oe){var pe=Z[oe];$g(O,pe)&&Nb($,pe)}for(var he=0;he<$.length;++he){var we=$[he];if($g(O,we)){var ye=O[we];k[we]=ye}}}return k},Op=qg,Fb=function(){if(!Object.assign)return!1;for(var x="abcdefghijklmnopqrst",d=x.split(""),w={},k=0;k<d.length;++k)w[d[k]]=d[k];var A=Object.assign({},w),O="";for(var $ in A)O+=$;return x!==O},Ub=function(){if(!Object.assign||!Object.preventExtensions)return!1;var x=Object.preventExtensions({1:2});try{Object.assign(x,"xy")}catch{return x[1]==="y"}return!1},Zg=function(){return!Object.assign||Fb()||Ub()?Op:Object.assign},jb=tl,Vb=Zg,Gb=function(){var d=Vb();return jb(Object,{assign:d},{assign:function(){return Object.assign!==d}}),d},$b=tl,qb=Hl,Zb=qg,Xg=Zg,Xb=Gb,Wb=qb.apply(Xg()),Wg=function(d,w){return Wb(Object,arguments)};$b(Wg,{getPolyfill:Xg,implementation:Zb,shim:Xb});var Yb=Wg,Qu=function(){return typeof(function(){}).name=="string"},ec=Object.getOwnPropertyDescriptor;if(ec)try{ec([],"length")}catch{ec=null}Qu.functionsHaveConfigurableNames=function(){if(!Qu()||!ec)return!1;var d=ec(function(){},"name");return!!d&&!!d.configurable};var Hb=Function.prototype.bind;Qu.boundFunctionsHaveNames=function(){return Qu()&&typeof Hb=="function"&&(function(){}).bind().name!==""};var Kb=Qu,Yg=Lp,Jb=Dp(),Qb=Kb.functionsHaveConfigurableNames(),ew=ua,tw=function(d,w){if(typeof d!="function")throw new ew("`fn` is not a function");var k=arguments.length>2&&!!arguments[2];return(!k||Qb)&&(Jb?Yg(d,"name",w,!0,!0):Yg(d,"name",w)),d},iw=tw,nw=ua,rw=Object,Hg=iw(function(){if(this==null||this!==rw(this))throw new nw("RegExp.prototype.flags getter called on non-object");var d="";return this.hasIndices&&(d+="d"),this.global&&(d+="g"),this.ignoreCase&&(d+="i"),this.multiline&&(d+="m"),this.dotAll&&(d+="s"),this.unicode&&(d+="u"),this.unicodeSets&&(d+="v"),this.sticky&&(d+="y"),d},"get flags",!0),ow=Hg,sw=tl.supportsDescriptors,aw=Object.getOwnPropertyDescriptor,Kg=function(){if(sw&&/a/mig.flags==="gim"){var d=aw(RegExp.prototype,"flags");if(d&&typeof d.get=="function"&&typeof RegExp.prototype.dotAll=="boolean"&&typeof RegExp.prototype.hasIndices=="boolean"){var w="",k={};if(Object.defineProperty(k,"hasIndices",{get:function(){w+="d"}}),Object.defineProperty(k,"sticky",{get:function(){w+="y"}}),w==="dy")return d.get}}return ow},lw=tl.supportsDescriptors,uw=Kg,cw=Object.getOwnPropertyDescriptor,hw=Object.defineProperty,fw=TypeError,Jg=Object.getPrototypeOf,pw=/a/,dw=function(){if(!lw||!Jg)throw new fw("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var d=uw(),w=Jg(pw),k=cw(w,"flags");return(!k||k.get!==d)&&hw(w,"flags",{configurable:!0,enumerable:!1,get:d}),d},mw=tl,gw=Hl,_w=Hg,Qg=Kg,yw=dw,e_=gw(Qg());mw(e_,{getPolyfill:Qg,implementation:_w,shim:yw});var vw=e_,Mh={exports:{}},xw=Th,il=function(){return xw()&&!!Symbol.toStringTag},bw=il(),ww=go,zp=ww("Object.prototype.toString"),Ah=function(d){return bw&&d&&typeof d=="object"&&Symbol.toStringTag in d?!1:zp(d)==="[object Arguments]"},t_=function(d){return Ah(d)?!0:d!==null&&typeof d=="object"&&typeof d.length=="number"&&d.length>=0&&zp(d)!=="[object Array]"&&zp(d.callee)==="[object Function]"},Ew=function(){return Ah(arguments)}();Ah.isLegacyArguments=t_;var i_=Ew?Ah:t_;const Tw=I1(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var Np=typeof Map=="function"&&Map.prototype,Bp=Object.getOwnPropertyDescriptor&&Np?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Ch=Np&&Bp&&typeof Bp.get=="function"?Bp.get:null,n_=Np&&Map.prototype.forEach,Fp=typeof Set=="function"&&Set.prototype,Up=Object.getOwnPropertyDescriptor&&Fp?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Ph=Fp&&Up&&typeof Up.get=="function"?Up.get:null,r_=Fp&&Set.prototype.forEach,Sw=typeof WeakMap=="function"&&WeakMap.prototype,tc=Sw?WeakMap.prototype.has:null,Iw=typeof WeakSet=="function"&&WeakSet.prototype,ic=Iw?WeakSet.prototype.has:null,kw=typeof WeakRef=="function"&&WeakRef.prototype,o_=kw?WeakRef.prototype.deref:null,Mw=Boolean.prototype.valueOf,Aw=Object.prototype.toString,Cw=Function.prototype.toString,Pw=String.prototype.match,jp=String.prototype.slice,ca=String.prototype.replace,Lw=String.prototype.toUpperCase,s_=String.prototype.toLowerCase,a_=RegExp.prototype.test,l_=Array.prototype.concat,as=Array.prototype.join,Rw=Array.prototype.slice,u_=Math.floor,Vp=typeof BigInt=="function"?BigInt.prototype.valueOf:null,Gp=Object.getOwnPropertySymbols,$p=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,Kl=typeof Symbol=="function"&&typeof Symbol.iterator=="object",_r=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Kl||!0)?Symbol.toStringTag:null,c_=Object.prototype.propertyIsEnumerable,h_=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(x){return x.__proto__}:null);function f_(x,d){if(x===1/0||x===-1/0||x!==x||x&&x>-1e3&&x<1e3||a_.call(/e/,d))return d;var w=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof x=="number"){var k=x<0?-u_(-x):u_(x);if(k!==x){var A=String(k),O=jp.call(d,A.length+1);return ca.call(A,w,"$&_")+"."+ca.call(ca.call(O,/([0-9]{3})/g,"$&_"),/_$/,"")}}return ca.call(d,w,"$&_")}var qp=Tw,p_=qp.custom,d_=__(p_)?p_:null,Dw=function x(d,w,k,A){var O=w||{};if(ha(O,"quoteStyle")&&O.quoteStyle!=="single"&&O.quoteStyle!=="double")throw new TypeError('option "quoteStyle" must be "single" or "double"');if(ha(O,"maxStringLength")&&(typeof O.maxStringLength=="number"?O.maxStringLength<0&&O.maxStringLength!==1/0:O.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var $=ha(O,"customInspect")?O.customInspect:!0;if(typeof $!="boolean"&&$!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(ha(O,"indent")&&O.indent!==null&&O.indent!==" "&&!(parseInt(O.indent,10)===O.indent&&O.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(ha(O,"numericSeparator")&&typeof O.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var s=O.numericSeparator;if(typeof d>"u")return"undefined";if(d===null)return"null";if(typeof d=="boolean")return d?"true":"false";if(typeof d=="string")return v_(d,O);if(typeof d=="number"){if(d===0)return 1/0/d>0?"0":"-0";var Z=String(d);return s?f_(d,Z):Z}if(typeof d=="bigint"){var oe=String(d)+"n";return s?f_(d,oe):oe}var pe=typeof O.depth>"u"?5:O.depth;if(typeof k>"u"&&(k=0),k>=pe&&pe>0&&typeof d=="object")return Zp(d)?"[Array]":"[Object]";var he=Jw(O,k);if(typeof A>"u")A=[];else if(y_(A,d)>=0)return"[Circular]";function we(Xt,bt,Jt){if(bt&&(A=Rw.call(A),A.push(bt)),Jt){var Bt={depth:O.depth};return ha(O,"quoteStyle")&&(Bt.quoteStyle=O.quoteStyle),x(Xt,Bt,k+1,A)}return x(Xt,O,k+1,A)}if(typeof d=="function"&&!g_(d)){var ye=Gw(d),Ie=Lh(d,we);return"[Function"+(ye?": "+ye:" (anonymous)")+"]"+(Ie.length>0?" { "+as.call(Ie,", ")+" }":"")}if(__(d)){var Tt=Kl?ca.call(String(d),/^(Symbol\(.*\))_[^)]*$/,"$1"):$p.call(d);return typeof d=="object"&&!Kl?nc(Tt):Tt}if(Yw(d)){for(var gt="<"+s_.call(String(d.nodeName)),Mt=d.attributes||[],Le=0;Le<Mt.length;Le++)gt+=" "+Mt[Le].name+"="+m_(Ow(Mt[Le].value),"double",O);return gt+=">",d.childNodes&&d.childNodes.length&&(gt+="..."),gt+="</"+s_.call(String(d.nodeName))+">",gt}if(Zp(d)){if(d.length===0)return"[]";var Qe=Lh(d,we);return he&&!Kw(Qe)?"["+Wp(Qe,he)+"]":"[ "+as.call(Qe,", ")+" ]"}if(Nw(d)){var Et=Lh(d,we);return!("cause"in Error.prototype)&&"cause"in d&&!c_.call(d,"cause")?"{ ["+String(d)+"] "+as.call(l_.call("[cause]: "+we(d.cause),Et),", ")+" }":Et.length===0?"["+String(d)+"]":"{ ["+String(d)+"] "+as.call(Et,", ")+" }"}if(typeof d=="object"&&$){if(d_&&typeof d[d_]=="function"&&qp)return qp(d,{depth:pe-k});if($!=="symbol"&&typeof d.inspect=="function")return d.inspect()}if($w(d)){var ut=[];return n_&&n_.call(d,function(Xt,bt){ut.push(we(bt,d,!0)+" => "+we(Xt,d))}),x_("Map",Ch.call(d),ut,he)}if(Xw(d)){var yt=[];return r_&&r_.call(d,function(Xt){yt.push(we(Xt,d))}),x_("Set",Ph.call(d),yt,he)}if(qw(d))return Xp("WeakMap");if(Ww(d))return Xp("WeakSet");if(Zw(d))return Xp("WeakRef");if(Fw(d))return nc(we(Number(d)));if(jw(d))return nc(we(Vp.call(d)));if(Uw(d))return nc(Mw.call(d));if(Bw(d))return nc(we(String(d)));if(typeof window<"u"&&d===window)return"{ [object Window] }";if(typeof globalThis<"u"&&d===globalThis||typeof $l<"u"&&d===$l)return"{ [object globalThis] }";if(!zw(d)&&!g_(d)){var _t=Lh(d,we),It=h_?h_(d)===Object.prototype:d instanceof Object||d.constructor===Object,Oe=d instanceof Object?"":"null prototype",gi=!It&&_r&&Object(d)===d&&_r in d?jp.call(fa(d),8,-1):Oe?"Object":"",ti=It||typeof d.constructor!="function"?"":d.constructor.name?d.constructor.name+" ":"",At=ti+(gi||Oe?"["+as.call(l_.call([],gi||[],Oe||[]),": ")+"] ":"");return _t.length===0?At+"{}":he?At+"{"+Wp(_t,he)+"}":At+"{ "+as.call(_t,", ")+" }"}return String(d)};function m_(x,d,w){var k=(w.quoteStyle||d)==="double"?'"':"'";return k+x+k}function Ow(x){return ca.call(String(x),/"/g,"&quot;")}function Zp(x){return fa(x)==="[object Array]"&&(!_r||!(typeof x=="object"&&_r in x))}function zw(x){return fa(x)==="[object Date]"&&(!_r||!(typeof x=="object"&&_r in x))}function g_(x){return fa(x)==="[object RegExp]"&&(!_r||!(typeof x=="object"&&_r in x))}function Nw(x){return fa(x)==="[object Error]"&&(!_r||!(typeof x=="object"&&_r in x))}function Bw(x){return fa(x)==="[object String]"&&(!_r||!(typeof x=="object"&&_r in x))}function Fw(x){return fa(x)==="[object Number]"&&(!_r||!(typeof x=="object"&&_r in x))}function Uw(x){return fa(x)==="[object Boolean]"&&(!_r||!(typeof x=="object"&&_r in x))}function __(x){if(Kl)return x&&typeof x=="object"&&x instanceof Symbol;if(typeof x=="symbol")return!0;if(!x||typeof x!="object"||!$p)return!1;try{return $p.call(x),!0}catch{}return!1}function jw(x){if(!x||typeof x!="object"||!Vp)return!1;try{return Vp.call(x),!0}catch{}return!1}var Vw=Object.prototype.hasOwnProperty||function(x){return x in this};function ha(x,d){return Vw.call(x,d)}function fa(x){return Aw.call(x)}function Gw(x){if(x.name)return x.name;var d=Pw.call(Cw.call(x),/^function\s*([\w$]+)/);return d?d[1]:null}function y_(x,d){if(x.indexOf)return x.indexOf(d);for(var w=0,k=x.length;w<k;w++)if(x[w]===d)return w;return-1}function $w(x){if(!Ch||!x||typeof x!="object")return!1;try{Ch.call(x);try{Ph.call(x)}catch{return!0}return x instanceof Map}catch{}return!1}function qw(x){if(!tc||!x||typeof x!="object")return!1;try{tc.call(x,tc);try{ic.call(x,ic)}catch{return!0}return x instanceof WeakMap}catch{}return!1}function Zw(x){if(!o_||!x||typeof x!="object")return!1;try{return o_.call(x),!0}catch{}return!1}function Xw(x){if(!Ph||!x||typeof x!="object")return!1;try{Ph.call(x);try{Ch.call(x)}catch{return!0}return x instanceof Set}catch{}return!1}function Ww(x){if(!ic||!x||typeof x!="object")return!1;try{ic.call(x,ic);try{tc.call(x,tc)}catch{return!0}return x instanceof WeakSet}catch{}return!1}function Yw(x){return!x||typeof x!="object"?!1:typeof HTMLElement<"u"&&x instanceof HTMLElement?!0:typeof x.nodeName=="string"&&typeof x.getAttribute=="function"}function v_(x,d){if(x.length>d.maxStringLength){var w=x.length-d.maxStringLength,k="... "+w+" more character"+(w>1?"s":"");return v_(jp.call(x,0,d.maxStringLength),d)+k}var A=ca.call(ca.call(x,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,Hw);return m_(A,"single",d)}function Hw(x){var d=x.charCodeAt(0),w={8:"b",9:"t",10:"n",12:"f",13:"r"}[d];return w?"\\"+w:"\\x"+(d<16?"0":"")+Lw.call(d.toString(16))}function nc(x){return"Object("+x+")"}function Xp(x){return x+" { ? }"}function x_(x,d,w,k){var A=k?Wp(w,k):as.call(w,", ");return x+" ("+d+") {"+A+"}"}function Kw(x){for(var d=0;d<x.length;d++)if(y_(x[d],`
`)>=0)return!1;return!0}function Jw(x,d){var w;if(x.indent===" ")w=" ";else if(typeof x.indent=="number"&&x.indent>0)w=as.call(Array(x.indent+1)," ");else return null;return{base:w,prev:as.call(Array(d+1),w)}}function Wp(x,d){if(x.length===0)return"";var w=`
`+d.prev+d.base;return w+as.call(x,","+w)+`
`+d.prev}function Lh(x,d){var w=Zp(x),k=[];if(w){k.length=x.length;for(var A=0;A<x.length;A++)k[A]=ha(x,A)?d(x[A],x):""}var O=typeof Gp=="function"?Gp(x):[],$;if(Kl){$={};for(var s=0;s<O.length;s++)$["$"+O[s]]=O[s]}for(var Z in x)ha(x,Z)&&(w&&String(Number(Z))===Z&&Z<x.length||Kl&&$["$"+Z]instanceof Symbol||(a_.call(/[^\w$]/,Z)?k.push(d(Z,x)+": "+d(x[Z],x)):k.push(Z+": "+d(x[Z],x))));if(typeof Gp=="function")for(var oe=0;oe<O.length;oe++)c_.call(x,O[oe])&&k.push("["+d(O[oe])+"]: "+d(x[O[oe]],x));return k}var b_=ss,Jl=go,Qw=Dw,eE=ua,Rh=b_("%WeakMap%",!0),Dh=b_("%Map%",!0),tE=Jl("WeakMap.prototype.get",!0),iE=Jl("WeakMap.prototype.set",!0),nE=Jl("WeakMap.prototype.has",!0),rE=Jl("Map.prototype.get",!0),oE=Jl("Map.prototype.set",!0),sE=Jl("Map.prototype.has",!0),Yp=function(x,d){for(var w=x,k;(k=w.next)!==null;w=k)if(k.key===d)return w.next=k.next,k.next=x.next,x.next=k,k},aE=function(x,d){var w=Yp(x,d);return w&&w.value},lE=function(x,d,w){var k=Yp(x,d);k?k.value=w:x.next={key:d,next:x.next,value:w}},uE=function(x,d){return!!Yp(x,d)},w_=function(){var d,w,k,A={assert:function(O){if(!A.has(O))throw new eE("Side channel does not contain "+Qw(O))},get:function(O){if(Rh&&O&&(typeof O=="object"||typeof O=="function")){if(d)return tE(d,O)}else if(Dh){if(w)return rE(w,O)}else if(k)return aE(k,O)},has:function(O){if(Rh&&O&&(typeof O=="object"||typeof O=="function")){if(d)return nE(d,O)}else if(Dh){if(w)return sE(w,O)}else if(k)return uE(k,O);return!1},set:function(O,$){Rh&&O&&(typeof O=="object"||typeof O=="function")?(d||(d=new Rh),iE(d,O,$)):Dh?(w||(w=new Dh),oE(w,O,$)):(k||(k={key:{},next:null}),lE(k,O,$))}};return A},cE=Tg,rc=w_(),Rs=ua,Hp={assert:function(x,d){if(!x||typeof x!="object"&&typeof x!="function")throw new Rs("`O` is not an object");if(typeof d!="string")throw new Rs("`slot` must be a string");if(rc.assert(x),!Hp.has(x,d))throw new Rs("`"+d+"` is not present on `O`")},get:function(x,d){if(!x||typeof x!="object"&&typeof x!="function")throw new Rs("`O` is not an object");if(typeof d!="string")throw new Rs("`slot` must be a string");var w=rc.get(x);return w&&w["$"+d]},has:function(x,d){if(!x||typeof x!="object"&&typeof x!="function")throw new Rs("`O` is not an object");if(typeof d!="string")throw new Rs("`slot` must be a string");var w=rc.get(x);return!!w&&cE(w,"$"+d)},set:function(x,d,w){if(!x||typeof x!="object"&&typeof x!="function")throw new Rs("`O` is not an object");if(typeof d!="string")throw new Rs("`slot` must be a string");var k=rc.get(x);k||(k={},rc.set(x,k)),k["$"+d]=w}};Object.freeze&&Object.freeze(Hp);var hE=Hp,oc=hE,fE=SyntaxError,E_=typeof StopIteration=="object"?StopIteration:null,pE=function(d){if(!E_)throw new fE("this environment lacks StopIteration");oc.set(d,"[[Done]]",!1);var w={next:function(){var A=oc.get(this,"[[Iterator]]"),O=oc.get(A,"[[Done]]");try{return{done:O,value:O?void 0:A.next()}}catch($){if(oc.set(A,"[[Done]]",!0),$!==E_)throw $;return{done:!0,value:void 0}}}};return oc.set(w,"[[Iterator]]",d),w},dE={}.toString,T_=Array.isArray||function(x){return dE.call(x)=="[object Array]"},mE=String.prototype.valueOf,gE=function(d){try{return mE.call(d),!0}catch{return!1}},_E=Object.prototype.toString,yE="[object String]",vE=il(),S_=function(d){return typeof d=="string"?!0:typeof d!="object"?!1:vE?gE(d):_E.call(d)===yE},Kp=typeof Map=="function"&&Map.prototype?Map:null,xE=typeof Set=="function"&&Set.prototype?Set:null,Oh;Kp||(Oh=function(d){return!1});var I_=Kp?Map.prototype.has:null,k_=xE?Set.prototype.has:null;!Oh&&!I_&&(Oh=function(d){return!1});var M_=Oh||function(d){if(!d||typeof d!="object")return!1;try{if(I_.call(d),k_)try{k_.call(d)}catch{return!0}return d instanceof Kp}catch{}return!1},bE=typeof Map=="function"&&Map.prototype?Map:null,Jp=typeof Set=="function"&&Set.prototype?Set:null,zh;Jp||(zh=function(d){return!1});var A_=bE?Map.prototype.has:null,C_=Jp?Set.prototype.has:null;!zh&&!C_&&(zh=function(d){return!1});var P_=zh||function(d){if(!d||typeof d!="object")return!1;try{if(C_.call(d),A_)try{A_.call(d)}catch{return!0}return d instanceof Jp}catch{}return!1},L_=i_,R_=pE;if(Tp()||Th()){var Qp=Symbol.iterator;Mh.exports=function(d){if(d!=null&&typeof d[Qp]<"u")return d[Qp]();if(L_(d))return Array.prototype[Qp].call(d)}}else{var wE=T_,EE=S_,D_=ss,TE=D_("%Map%",!0),SE=D_("%Set%",!0),Lo=go,O_=Lo("Array.prototype.push"),z_=Lo("String.prototype.charCodeAt"),IE=Lo("String.prototype.slice"),kE=function(d,w){var k=d.length;if(w+1>=k)return w+1;var A=z_(d,w);if(A<55296||A>56319)return w+1;var O=z_(d,w+1);return O<56320||O>57343?w+1:w+2},ed=function(d){var w=0;return{next:function(){var A=w>=d.length,O;return A||(O=d[w],w+=1),{done:A,value:O}}}},N_=function(d,w){if(wE(d)||L_(d))return ed(d);if(EE(d)){var k=0;return{next:function(){var O=kE(d,k),$=IE(d,k,O);return k=O,{done:O>d.length,value:$}}}}if(w&&typeof d["_es6-shim iterator_"]<"u")return d["_es6-shim iterator_"]()};if(!TE&&!SE)Mh.exports=function(d){if(d!=null)return N_(d,!0)};else{var ME=M_,AE=P_,B_=Lo("Map.prototype.forEach",!0),F_=Lo("Set.prototype.forEach",!0);if(typeof process>"u"||!process.versions||!process.versions.node)var U_=Lo("Map.prototype.iterator",!0),j_=Lo("Set.prototype.iterator",!0);var V_=Lo("Map.prototype.@@iterator",!0)||Lo("Map.prototype._es6-shim iterator_",!0),G_=Lo("Set.prototype.@@iterator",!0)||Lo("Set.prototype._es6-shim iterator_",!0),CE=function(d){if(ME(d)){if(U_)return R_(U_(d));if(V_)return V_(d);if(B_){var w=[];return B_(d,function(A,O){O_(w,[O,A])}),ed(w)}}if(AE(d)){if(j_)return R_(j_(d));if(G_)return G_(d);if(F_){var k=[];return F_(d,function(A){O_(k,A)}),ed(k)}}};Mh.exports=function(d){return CE(d)||N_(d)}}}var PE=Mh.exports,$_=function(x){return x!==x},q_=function(d,w){return d===0&&w===0?1/d===1/w:!!(d===w||$_(d)&&$_(w))},LE=q_,Z_=function(){return typeof Object.is=="function"?Object.is:LE},RE=Z_,DE=tl,OE=function(){var d=RE();return DE(Object,{is:d},{is:function(){return Object.is!==d}}),d},zE=tl,NE=Hl,BE=q_,X_=Z_,FE=OE,W_=NE(X_(),Object);zE(W_,{getPolyfill:X_,implementation:BE,shim:FE});var UE=W_,jE=Hl,Y_=go,VE=ss,td=VE("%ArrayBuffer%",!0),Nh=Y_("ArrayBuffer.prototype.byteLength",!0),GE=Y_("Object.prototype.toString"),H_=!!td&&!Nh&&new td(0).slice,K_=!!H_&&jE(H_),J_=Nh||K_?function(d){if(!d||typeof d!="object")return!1;try{return Nh?Nh(d):K_(d,0),!0}catch{return!1}}:td?function(d){return GE(d)==="[object ArrayBuffer]"}:function(d){return!1},$E=Date.prototype.getDay,qE=function(d){try{return $E.call(d),!0}catch{return!1}},ZE=Object.prototype.toString,XE="[object Date]",WE=il(),YE=function(d){return typeof d!="object"||d===null?!1:WE?qE(d):ZE.call(d)===XE},id=go,Q_=il(),ey,ty,nd,rd;if(Q_){ey=id("Object.prototype.hasOwnProperty"),ty=id("RegExp.prototype.exec"),nd={};var od=function(){throw nd};rd={toString:od,valueOf:od},typeof Symbol.toPrimitive=="symbol"&&(rd[Symbol.toPrimitive]=od)}var HE=id("Object.prototype.toString"),KE=Object.getOwnPropertyDescriptor,JE="[object RegExp]",QE=Q_?function(d){if(!d||typeof d!="object")return!1;var w=KE(d,"lastIndex"),k=w&&ey(w,"value");if(!k)return!1;try{ty(d,rd)}catch(A){return A===nd}}:function(d){return!d||typeof d!="object"&&typeof d!="function"?!1:HE(d)===JE},eT=go,iy=eT("SharedArrayBuffer.prototype.byteLength",!0),tT=iy?function(d){if(!d||typeof d!="object")return!1;try{return iy(d),!0}catch{return!1}}:function(d){return!1},iT=Number.prototype.toString,nT=function(d){try{return iT.call(d),!0}catch{return!1}},rT=Object.prototype.toString,oT="[object Number]",sT=il(),aT=function(d){return typeof d=="number"?!0:typeof d!="object"?!1:sT?nT(d):rT.call(d)===oT},ny=go,lT=ny("Boolean.prototype.toString"),uT=ny("Object.prototype.toString"),cT=function(d){try{return lT(d),!0}catch{return!1}},hT="[object Boolean]",fT=il(),pT=function(d){return typeof d=="boolean"?!0:d===null||typeof d!="object"?!1:fT&&Symbol.toStringTag in d?cT(d):uT(d)===hT},sd={exports:{}},dT=Object.prototype.toString,mT=Tp();if(mT){var gT=Symbol.prototype.toString,_T=/^Symbol\(.*\)$/,yT=function(d){return typeof d.valueOf()!="symbol"?!1:_T.test(gT.call(d))};sd.exports=function(d){if(typeof d=="symbol")return!0;if(dT.call(d)!=="[object Symbol]")return!1;try{return yT(d)}catch{return!1}}}else sd.exports=function(d){return!1};var vT=sd.exports,ad={exports:{}},ry=typeof BigInt<"u"&&BigInt,xT=function(){return typeof ry=="function"&&typeof BigInt=="function"&&typeof ry(42)=="bigint"&&typeof BigInt(42)=="bigint"},bT=xT();if(bT){var wT=BigInt.prototype.valueOf,ET=function(d){try{return wT.call(d),!0}catch{}return!1};ad.exports=function(d){return d===null||typeof d>"u"||typeof d=="boolean"||typeof d=="string"||typeof d=="number"||typeof d=="symbol"||typeof d=="function"?!1:typeof d=="bigint"?!0:ET(d)}}else ad.exports=function(d){return!1};var TT=ad.exports,ST=S_,IT=aT,kT=pT,MT=vT,AT=TT,CT=function(d){if(d==null||typeof d!="object"&&typeof d!="function")return null;if(ST(d))return"String";if(IT(d))return"Number";if(kT(d))return"Boolean";if(MT(d))return"Symbol";if(AT(d))return"BigInt"},Bh=typeof WeakMap=="function"&&WeakMap.prototype?WeakMap:null,oy=typeof WeakSet=="function"&&WeakSet.prototype?WeakSet:null,Fh;Bh||(Fh=function(d){return!1});var ld=Bh?Bh.prototype.has:null,ud=oy?oy.prototype.has:null;!Fh&&!ld&&(Fh=function(d){return!1});var PT=Fh||function(d){if(!d||typeof d!="object")return!1;try{if(ld.call(d,ld),ud)try{ud.call(d,ud)}catch{return!0}return d instanceof Bh}catch{}return!1},cd={exports:{}},LT=ss,sy=go,RT=LT("%WeakSet%",!0),hd=sy("WeakSet.prototype.has",!0);if(hd){var fd=sy("WeakMap.prototype.has",!0);cd.exports=function(d){if(!d||typeof d!="object")return!1;try{if(hd(d,hd),fd)try{fd(d,fd)}catch{return!0}return d instanceof RT}catch{}return!1}}else cd.exports=function(d){return!1};var DT=cd.exports,OT=M_,zT=P_,NT=PT,BT=DT,FT=function(d){if(d&&typeof d=="object"){if(OT(d))return"Map";if(zT(d))return"Set";if(NT(d))return"WeakMap";if(BT(d))return"WeakSet"}return!1},ay=Function.prototype.toString,Ql=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,pd,Uh;if(typeof Ql=="function"&&typeof Object.defineProperty=="function")try{pd=Object.defineProperty({},"length",{get:function(){throw Uh}}),Uh={},Ql(function(){throw 42},null,pd)}catch(x){x!==Uh&&(Ql=null)}else Ql=null;var UT=/^\s*class\b/,dd=function(d){try{var w=ay.call(d);return UT.test(w)}catch{return!1}},md=function(d){try{return dd(d)?!1:(ay.call(d),!0)}catch{return!1}},jh=Object.prototype.toString,jT="[object Object]",VT="[object Function]",GT="[object GeneratorFunction]",$T="[object HTMLAllCollection]",qT="[object HTML document.all class]",ZT="[object HTMLCollection]",XT=typeof Symbol=="function"&&!!Symbol.toStringTag,WT=!(0 in[,]),gd=function(){return!1};if(typeof document=="object"){var YT=document.all;jh.call(YT)===jh.call(document.all)&&(gd=function(d){if((WT||!d)&&(typeof d>"u"||typeof d=="object"))try{var w=jh.call(d);return(w===$T||w===qT||w===ZT||w===jT)&&d("")==null}catch{}return!1})}var HT=Ql?function(d){if(gd(d))return!0;if(!d||typeof d!="function"&&typeof d!="object")return!1;try{Ql(d,null,pd)}catch(w){if(w!==Uh)return!1}return!dd(d)&&md(d)}:function(d){if(gd(d))return!0;if(!d||typeof d!="function"&&typeof d!="object")return!1;if(XT)return md(d);if(dd(d))return!1;var w=jh.call(d);return w!==VT&&w!==GT&&!/^\[object HTML/.test(w)?!1:md(d)},KT=HT,JT=Object.prototype.toString,ly=Object.prototype.hasOwnProperty,QT=function(d,w,k){for(var A=0,O=d.length;A<O;A++)ly.call(d,A)&&(k==null?w(d[A],A,d):w.call(k,d[A],A,d))},eS=function(d,w,k){for(var A=0,O=d.length;A<O;A++)k==null?w(d.charAt(A),A,d):w.call(k,d.charAt(A),A,d)},tS=function(d,w,k){for(var A in d)ly.call(d,A)&&(k==null?w(d[A],A,d):w.call(k,d[A],A,d))},iS=function(d,w,k){if(!KT(w))throw new TypeError("iterator must be a function");var A;arguments.length>=3&&(A=k),JT.call(d)==="[object Array]"?QT(d,w,A):typeof d=="string"?eS(d,w,A):tS(d,w,A)},nS=iS,rS=["Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"],_d=rS,oS=typeof globalThis>"u"?$l:globalThis,sS=function(){for(var d=[],w=0;w<_d.length;w++)typeof oS[_d[w]]=="function"&&(d[d.length]=_d[w]);return d},Vh=nS,aS=sS,uy=Hl,yd=go,Gh=Pp,lS=yd("Object.prototype.toString"),cy=il(),hy=typeof globalThis>"u"?$l:globalThis,vd=aS(),xd=yd("String.prototype.slice"),bd=Object.getPrototypeOf,uS=yd("Array.prototype.indexOf",!0)||function(d,w){for(var k=0;k<d.length;k+=1)if(d[k]===w)return k;return-1},$h={__proto__:null};cy&&Gh&&bd?Vh(vd,function(x){var d=new hy[x];if(Symbol.toStringTag in d){var w=bd(d),k=Gh(w,Symbol.toStringTag);if(!k){var A=bd(w);k=Gh(A,Symbol.toStringTag)}$h["$"+x]=uy(k.get)}}):Vh(vd,function(x){var d=new hy[x],w=d.slice||d.set;w&&($h["$"+x]=uy(w))});var cS=function(d){var w=!1;return Vh($h,function(k,A){if(!w)try{"$"+k(d)===A&&(w=xd(A,1))}catch{}}),w},hS=function(d){var w=!1;return Vh($h,function(k,A){if(!w)try{k(d),w=xd(A,1)}catch{}}),w},fS=function(d){if(!d||typeof d!="object")return!1;if(!cy){var w=xd(lS(d),8,-1);return uS(vd,w)>-1?w:w!=="Object"?!1:hS(d)}return Gh?cS(d):null},pS=go,fy=pS("ArrayBuffer.prototype.byteLength",!0),dS=J_,mS=function(d){return dS(d)?fy?fy(d):d.byteLength:NaN},py=Yb,ls=go,dy=vw,gS=ss,eu=PE,_S=w_,my=UE,gy=i_,_y=T_,yy=J_,vy=YE,xy=QE,by=tT,wy=Ep,Ey=CT,Ty=FT,Sy=fS,Iy=mS,ky=ls("SharedArrayBuffer.prototype.byteLength",!0),My=ls("Date.prototype.getTime"),wd=Object.getPrototypeOf,Ay=ls("Object.prototype.toString"),qh=gS("%Set%",!0),Ed=ls("Map.prototype.has",!0),Zh=ls("Map.prototype.get",!0),Cy=ls("Map.prototype.size",!0),Xh=ls("Set.prototype.add",!0),Py=ls("Set.prototype.delete",!0),Wh=ls("Set.prototype.has",!0),Yh=ls("Set.prototype.size",!0);function Ly(x,d,w,k){for(var A=eu(x),O;(O=A.next())&&!O.done;)if(Ro(d,O.value,w,k))return Py(x,O.value),!0;return!1}function Ry(x){if(typeof x>"u")return null;if(typeof x!="object")return typeof x=="symbol"?!1:typeof x=="string"||typeof x=="number"?+x==+x:!0}function yS(x,d,w,k,A,O){var $=Ry(w);if($!=null)return $;var s=Zh(d,$),Z=py({},A,{strict:!1});return typeof s>"u"&&!Ed(d,$)||!Ro(k,s,Z,O)?!1:!Ed(x,$)&&Ro(k,s,Z,O)}function vS(x,d,w){var k=Ry(w);return k??(Wh(d,k)&&!Wh(x,k))}function Dy(x,d,w,k,A,O){for(var $=eu(x),s,Z;(s=$.next())&&!s.done;)if(Z=s.value,Ro(w,Z,A,O)&&Ro(k,Zh(d,Z),A,O))return Py(x,Z),!0;return!1}function Ro(x,d,w,k){var A=w||{};if(A.strict?my(x,d):x===d)return!0;var O=Ey(x),$=Ey(d);if(O!==$)return!1;if(!x||!d||typeof x!="object"&&typeof d!="object")return A.strict?my(x,d):x==d;var s=k.has(x),Z=k.has(d),oe;if(s&&Z){if(k.get(x)===k.get(d))return!0}else oe={};return s||k.set(x,oe),Z||k.set(d,oe),wS(x,d,A,k)}function Oy(x){return!x||typeof x!="object"||typeof x.length!="number"||typeof x.copy!="function"||typeof x.slice!="function"||x.length>0&&typeof x[0]!="number"?!1:!!(x.constructor&&x.constructor.isBuffer&&x.constructor.isBuffer(x))}function xS(x,d,w,k){if(Yh(x)!==Yh(d))return!1;for(var A=eu(x),O=eu(d),$,s,Z;($=A.next())&&!$.done;)if($.value&&typeof $.value=="object")Z||(Z=new qh),Xh(Z,$.value);else if(!Wh(d,$.value)){if(w.strict||!vS(x,d,$.value))return!1;Z||(Z=new qh),Xh(Z,$.value)}if(Z){for(;(s=O.next())&&!s.done;)if(s.value&&typeof s.value=="object"){if(!Ly(Z,s.value,w.strict,k))return!1}else if(!w.strict&&!Wh(x,s.value)&&!Ly(Z,s.value,w.strict,k))return!1;return Yh(Z)===0}return!0}function bS(x,d,w,k){if(Cy(x)!==Cy(d))return!1;for(var A=eu(x),O=eu(d),$,s,Z,oe,pe,he;($=A.next())&&!$.done;)if(oe=$.value[0],pe=$.value[1],oe&&typeof oe=="object")Z||(Z=new qh),Xh(Z,oe);else if(he=Zh(d,oe),typeof he>"u"&&!Ed(d,oe)||!Ro(pe,he,w,k)){if(w.strict||!yS(x,d,oe,pe,w,k))return!1;Z||(Z=new qh),Xh(Z,oe)}if(Z){for(;(s=O.next())&&!s.done;)if(oe=s.value[0],he=s.value[1],oe&&typeof oe=="object"){if(!Dy(Z,x,oe,he,w,k))return!1}else if(!w.strict&&(!x.has(oe)||!Ro(Zh(x,oe),he,w,k))&&!Dy(Z,x,oe,he,py({},w,{strict:!1}),k))return!1;return Yh(Z)===0}return!0}function wS(x,d,w,k){var A,O;if(typeof x!=typeof d||x==null||d==null||Ay(x)!==Ay(d)||gy(x)!==gy(d))return!1;var $=_y(x),s=_y(d);if($!==s)return!1;var Z=x instanceof Error,oe=d instanceof Error;if(Z!==oe||(Z||oe)&&(x.name!==d.name||x.message!==d.message))return!1;var pe=xy(x),he=xy(d);if(pe!==he||(pe||he)&&(x.source!==d.source||dy(x)!==dy(d)))return!1;var we=vy(x),ye=vy(d);if(we!==ye||(we||ye)&&My(x)!==My(d)||w.strict&&wd&&wd(x)!==wd(d))return!1;var Ie=Sy(x),Tt=Sy(d);if(Ie!==Tt)return!1;if(Ie||Tt){if(x.length!==d.length)return!1;for(A=0;A<x.length;A++)if(x[A]!==d[A])return!1;return!0}var gt=Oy(x),Mt=Oy(d);if(gt!==Mt)return!1;if(gt||Mt){if(x.length!==d.length)return!1;for(A=0;A<x.length;A++)if(x[A]!==d[A])return!1;return!0}var Le=yy(x),Qe=yy(d);if(Le!==Qe)return!1;if(Le||Qe)return Iy(x)!==Iy(d)?!1:typeof Uint8Array=="function"&&Ro(new Uint8Array(x),new Uint8Array(d),w,k);var Et=by(x),ut=by(d);if(Et!==ut)return!1;if(Et||ut)return ky(x)!==ky(d)?!1:typeof Uint8Array=="function"&&Ro(new Uint8Array(x),new Uint8Array(d),w,k);if(typeof x!=typeof d)return!1;var yt=wy(x),_t=wy(d);if(yt.length!==_t.length)return!1;for(yt.sort(),_t.sort(),A=yt.length-1;A>=0;A--)if(yt[A]!=_t[A])return!1;for(A=yt.length-1;A>=0;A--)if(O=yt[A],!Ro(x[O],d[O],w,k))return!1;var It=Ty(x),Oe=Ty(d);return It!==Oe?!1:It==="Set"||Oe==="Set"?xS(x,d,w,k):It==="Map"?bS(x,d,w,k):!0}var ES=function(d,w,k){return Ro(d,w,k,_S())};const TS=bp(ES);var SS=Object.defineProperty,en=(x,d)=>SS(x,"name",{value:d,configurable:!0}),IS=class{constructor(d){this.direction=!1,this.compareProperties=!0;var w,k,A;this.precision=10**-((w=d==null?void 0:d.precision)!=null?w:17),this.direction=(k=d==null?void 0:d.direction)!=null?k:!1,this.compareProperties=(A=d==null?void 0:d.compareProperties)!=null?A:!0}compare(d,w){if(d.type!==w.type||!sc(d,w))return!1;switch(d.type){case"Point":return this.compareCoord(d.coordinates,w.coordinates);case"LineString":return this.compareLine(d.coordinates,w.coordinates);case"Polygon":return this.comparePolygon(d,w);case"GeometryCollection":return this.compareGeometryCollection(d,w);case"Feature":return this.compareFeature(d,w);case"FeatureCollection":return this.compareFeatureCollection(d,w);default:if(d.type.startsWith("Multi")){const k=Td(d),A=Td(w);return k.every(O=>A.some($=>this.compare(O,$)))}}return!1}compareCoord(d,w){return d.length===w.length&&d.every((k,A)=>Math.abs(k-w[A])<this.precision)}compareLine(d,w,k=0,A=!1){if(!sc(d,w))return!1;const O=d;let $=w;if(A&&!this.compareCoord(O[0],$[0])){const Z=this.fixStartIndex($,O);if(Z)$=Z;else return!1}const s=this.compareCoord(O[k],$[k]);return this.direction||s?this.comparePath(O,$):this.compareCoord(O[k],$[$.length-(1+k)])?this.comparePath(O.slice().reverse(),$):!1}fixStartIndex(d,w){let k,A=-1;for(let O=0;O<d.length;O++)if(this.compareCoord(d[O],w[0])){A=O;break}return A>=0&&(k=[].concat(d.slice(A,d.length),d.slice(1,A+1))),k}comparePath(d,w){return d.every((k,A)=>this.compareCoord(k,w[A]))}comparePolygon(d,w){if(this.compareLine(d.coordinates[0],w.coordinates[0],1,!0)){const k=d.coordinates.slice(1,d.coordinates.length),A=w.coordinates.slice(1,w.coordinates.length);return k.every(O=>A.some($=>this.compareLine(O,$,1,!0)))}return!1}compareGeometryCollection(d,w){return sc(d.geometries,w.geometries)&&this.compareBBox(d,w)&&d.geometries.every((k,A)=>this.compare(k,w.geometries[A]))}compareFeature(d,w){return d.id===w.id&&(this.compareProperties?TS(d.properties,w.properties):!0)&&this.compareBBox(d,w)&&this.compare(d.geometry,w.geometry)}compareFeatureCollection(d,w){return sc(d.features,w.features)&&this.compareBBox(d,w)&&d.features.every((k,A)=>this.compare(k,w.features[A]))}compareBBox(d,w){return!d.bbox&&!w.bbox||(d.bbox&&w.bbox?this.compareCoord(d.bbox,w.bbox):!1)}};en(IS,"GeojsonEquality");function sc(x,d){return x.coordinates?x.coordinates.length===d.coordinates.length:x.length===d.length}en(sc,"sameLength");function Td(x){return x.coordinates.map(d=>({type:x.type.replace("Multi",""),coordinates:d}))}en(Td,"explode");var yr=63710088e-1,zy={centimeters:yr*100,centimetres:yr*100,degrees:360/(2*Math.PI),feet:yr*3.28084,inches:yr*39.37,kilometers:yr/1e3,kilometres:yr/1e3,meters:yr,metres:yr,miles:yr/1609.344,millimeters:yr*1e3,millimetres:yr*1e3,nauticalmiles:yr/1852,radians:1,yards:yr*1.0936},Ny={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,nauticalmiles:29155334959812285e-23,millimeters:1e6,millimetres:1e6,yards:1.195990046};function _o(x,d,w={}){const k={type:"Feature"};return(w.id===0||w.id)&&(k.id=w.id),w.bbox&&(k.bbox=w.bbox),k.properties=d||{},k.geometry=x,k}en(_o,"feature");function kS(x,d,w={}){switch(x){case"Point":return Xn(d).geometry;case"LineString":return us(d).geometry;case"Polygon":return nl(d).geometry;case"MultiPoint":return Fy(d).geometry;case"MultiLineString":return By(d).geometry;case"MultiPolygon":return Sd(d).geometry;default:throw new Error(x+" is invalid")}}en(kS,"geometry");function Xn(x,d,w={}){if(!x)throw new Error("coordinates is required");if(!Array.isArray(x))throw new Error("coordinates must be an Array");if(x.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!tu(x[0])||!tu(x[1]))throw new Error("coordinates must contain numbers");return _o({type:"Point",coordinates:x},d,w)}en(Xn,"point");function MS(x,d,w={}){return yo(x.map(k=>Xn(k,d)),w)}en(MS,"points");function nl(x,d,w={}){for(const A of x){if(A.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(A[A.length-1].length!==A[0].length)throw new Error("First and last Position are not equivalent.");for(let O=0;O<A[A.length-1].length;O++)if(A[A.length-1][O]!==A[0][O])throw new Error("First and last Position are not equivalent.")}return _o({type:"Polygon",coordinates:x},d,w)}en(nl,"polygon");function AS(x,d,w={}){return yo(x.map(k=>nl(k,d)),w)}en(AS,"polygons");function us(x,d,w={}){if(x.length<2)throw new Error("coordinates must be an array of two or more positions");return _o({type:"LineString",coordinates:x},d,w)}en(us,"lineString");function CS(x,d,w={}){return yo(x.map(k=>us(k,d)),w)}en(CS,"lineStrings");function yo(x,d={}){const w={type:"FeatureCollection"};return d.id&&(w.id=d.id),d.bbox&&(w.bbox=d.bbox),w.features=x,w}en(yo,"featureCollection");function By(x,d,w={}){return _o({type:"MultiLineString",coordinates:x},d,w)}en(By,"multiLineString");function Fy(x,d,w={}){return _o({type:"MultiPoint",coordinates:x},d,w)}en(Fy,"multiPoint");function Sd(x,d,w={}){return _o({type:"MultiPolygon",coordinates:x},d,w)}en(Sd,"multiPolygon");function PS(x,d,w={}){return _o({type:"GeometryCollection",geometries:x},d,w)}en(PS,"geometryCollection");function LS(x,d=0){if(d&&!(d>=0))throw new Error("precision must be a positive number");const w=Math.pow(10,d||0);return Math.round(x*w)/w}en(LS,"round");function Hh(x,d="kilometers"){const w=zy[d];if(!w)throw new Error(d+" units is invalid");return x*w}en(Hh,"radiansToLength");function ac(x,d="kilometers"){const w=zy[d];if(!w)throw new Error(d+" units is invalid");return x/w}en(ac,"lengthToRadians");function RS(x,d){return Kh(ac(x,d))}en(RS,"lengthToDegrees");function DS(x){let d=x%360;return d<0&&(d+=360),d}en(DS,"bearingToAzimuth");function Kh(x){return x%(2*Math.PI)*180/Math.PI}en(Kh,"radiansToDegrees");function pa(x){return x%360*Math.PI/180}en(pa,"degreesToRadians");function OS(x,d="kilometers",w="kilometers"){if(!(x>=0))throw new Error("length must be a positive number");return Hh(ac(x,d),w)}en(OS,"convertLength");function zS(x,d="meters",w="kilometers"){if(!(x>=0))throw new Error("area must be a positive number");const k=Ny[d];if(!k)throw new Error("invalid original units");const A=Ny[w];if(!A)throw new Error("invalid final units");return x/k*A}en(zS,"convertArea");function tu(x){return!isNaN(x)&&x!==null&&!Array.isArray(x)}en(tu,"isNumber");function Id(x){return x!==null&&typeof x=="object"&&!Array.isArray(x)}en(Id,"isObject");function NS(x){if(!x)throw new Error("bbox is required");if(!Array.isArray(x))throw new Error("bbox must be an Array");if(x.length!==4&&x.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");x.forEach(d=>{if(!tu(d))throw new Error("bbox must only contain numbers")})}en(NS,"validateBBox");function BS(x){if(!x)throw new Error("id is required");if(["string","number"].indexOf(typeof x)===-1)throw new Error("id must be a number or a string")}en(BS,"validateId");var FS=Object.defineProperty,da=(x,d)=>FS(x,"name",{value:d,configurable:!0});function lc(x){if(!x)throw new Error("coord is required");if(!Array.isArray(x)){if(x.type==="Feature"&&x.geometry!==null&&x.geometry.type==="Point")return[...x.geometry.coordinates];if(x.type==="Point")return[...x.coordinates]}if(Array.isArray(x)&&x.length>=2&&!Array.isArray(x[0])&&!Array.isArray(x[1]))return[...x];throw new Error("coord must be GeoJSON Point or an Array of numbers")}da(lc,"getCoord");function rl(x){if(Array.isArray(x))return x;if(x.type==="Feature"){if(x.geometry!==null)return x.geometry.coordinates}else if(x.coordinates)return x.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}da(rl,"getCoords");function Uy(x){if(x.length>1&&tu(x[0])&&tu(x[1]))return!0;if(Array.isArray(x[0])&&x[0].length)return Uy(x[0]);throw new Error("coordinates must only contain numbers")}da(Uy,"containsNumber");function US(x,d,w){if(!d||!w)throw new Error("type and name required");if(!x||x.type!==d)throw new Error("Invalid input to "+w+": must be a "+d+", given "+x.type)}da(US,"geojsonType");function jS(x,d,w){if(!x)throw new Error("No feature passed");if(!w)throw new Error(".featureOf() requires a name");if(!x||x.type!=="Feature"||!x.geometry)throw new Error("Invalid input to "+w+", Feature with geometry required");if(!x.geometry||x.geometry.type!==d)throw new Error("Invalid input to "+w+": must be a "+d+", given "+x.geometry.type)}da(jS,"featureOf");function VS(x,d,w){if(!x)throw new Error("No featureCollection passed");if(!w)throw new Error(".collectionOf() requires a name");if(!x||x.type!=="FeatureCollection")throw new Error("Invalid input to "+w+", FeatureCollection required");for(const k of x.features){if(!k||k.type!=="Feature"||!k.geometry)throw new Error("Invalid input to "+w+", Feature with geometry required");if(!k.geometry||k.geometry.type!==d)throw new Error("Invalid input to "+w+": must be a "+d+", given "+k.geometry.type)}}da(VS,"collectionOf");function jy(x){return x.type==="Feature"?x.geometry:x}da(jy,"getGeom");function Vy(x,d){return x.type==="FeatureCollection"?"FeatureCollection":x.type==="GeometryCollection"?"GeometryCollection":x.type==="Feature"&&x.geometry!==null?x.geometry.type:x.type}da(Vy,"getType");var GS=Object.defineProperty,$S=(x,d)=>GS(x,"name",{value:d,configurable:!0});function Gy(x,d,w,k={}){const A=lc(x),O=pa(A[0]),$=pa(A[1]),s=pa(w),Z=ac(d,k.units),oe=Math.asin(Math.sin($)*Math.cos(Z)+Math.cos($)*Math.sin(Z)*Math.cos(s)),pe=O+Math.atan2(Math.sin(s)*Math.sin(Z)*Math.cos($),Math.cos(Z)-Math.sin($)*Math.sin(oe)),he=Kh(pe),we=Kh(oe);return Xn([he,we],k.properties)}$S(Gy,"destination");var qS=Object.defineProperty,ZS=(x,d)=>qS(x,"name",{value:d,configurable:!0});function Jh(x,d,w={}){var k=lc(x),A=lc(d),O=pa(A[1]-k[1]),$=pa(A[0]-k[0]),s=pa(k[1]),Z=pa(A[1]),oe=Math.pow(Math.sin(O/2),2)+Math.pow(Math.sin($/2),2)*Math.cos(s)*Math.cos(Z);return Hh(2*Math.atan2(Math.sqrt(oe),Math.sqrt(1-oe)),w.units)}ZS(Jh,"distance");var XS=Object.defineProperty,fr=(x,d)=>XS(x,"name",{value:d,configurable:!0});function Ds(x,d,w){if(x!==null)for(var k,A,O,$,s,Z,oe,pe=0,he=0,we,ye=x.type,Ie=ye==="FeatureCollection",Tt=ye==="Feature",gt=Ie?x.features.length:1,Mt=0;Mt<gt;Mt++){oe=Ie?x.features[Mt].geometry:Tt?x.geometry:x,we=oe?oe.type==="GeometryCollection":!1,s=we?oe.geometries.length:1;for(var Le=0;Le<s;Le++){var Qe=0,Et=0;if($=we?oe.geometries[Le]:oe,$!==null){Z=$.coordinates;var ut=$.type;switch(pe=w&&(ut==="Polygon"||ut==="MultiPolygon")?1:0,ut){case null:break;case"Point":if(d(Z,he,Mt,Qe,Et)===!1)return!1;he++,Qe++;break;case"LineString":case"MultiPoint":for(k=0;k<Z.length;k++){if(d(Z[k],he,Mt,Qe,Et)===!1)return!1;he++,ut==="MultiPoint"&&Qe++}ut==="LineString"&&Qe++;break;case"Polygon":case"MultiLineString":for(k=0;k<Z.length;k++){for(A=0;A<Z[k].length-pe;A++){if(d(Z[k][A],he,Mt,Qe,Et)===!1)return!1;he++}ut==="MultiLineString"&&Qe++,ut==="Polygon"&&Et++}ut==="Polygon"&&Qe++;break;case"MultiPolygon":for(k=0;k<Z.length;k++){for(Et=0,A=0;A<Z[k].length;A++){for(O=0;O<Z[k][A].length-pe;O++){if(d(Z[k][A][O],he,Mt,Qe,Et)===!1)return!1;he++}Et++}Qe++}break;case"GeometryCollection":for(k=0;k<$.geometries.length;k++)if(Ds($.geometries[k],d,w)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}fr(Ds,"coordEach");function WS(x,d,w,k){var A=w;return Ds(x,function(O,$,s,Z,oe){$===0&&w===void 0?A=O:A=d(A,O,$,s,Z,oe)},k),A}fr(WS,"coordReduce");function $y(x,d){var w;switch(x.type){case"FeatureCollection":for(w=0;w<x.features.length&&d(x.features[w].properties,w)!==!1;w++);break;case"Feature":d(x.properties,0);break}}fr($y,"propEach");function YS(x,d,w){var k=w;return $y(x,function(A,O){O===0&&w===void 0?k=A:k=d(k,A,O)}),k}fr(YS,"propReduce");function cs(x,d){if(x.type==="Feature")d(x,0);else if(x.type==="FeatureCollection")for(var w=0;w<x.features.length&&d(x.features[w],w)!==!1;w++);}fr(cs,"featureEach");function HS(x,d,w){var k=w;return cs(x,function(A,O){O===0&&w===void 0?k=A:k=d(k,A,O)}),k}fr(HS,"featureReduce");function KS(x){var d=[];return Ds(x,function(w){d.push(w)}),d}fr(KS,"coordAll");function uc(x,d){var w,k,A,O,$,s,Z,oe,pe,he,we=0,ye=x.type==="FeatureCollection",Ie=x.type==="Feature",Tt=ye?x.features.length:1;for(w=0;w<Tt;w++){for(s=ye?x.features[w].geometry:Ie?x.geometry:x,oe=ye?x.features[w].properties:Ie?x.properties:{},pe=ye?x.features[w].bbox:Ie?x.bbox:void 0,he=ye?x.features[w].id:Ie?x.id:void 0,Z=s?s.type==="GeometryCollection":!1,$=Z?s.geometries.length:1,A=0;A<$;A++){if(O=Z?s.geometries[A]:s,O===null){if(d(null,we,oe,pe,he)===!1)return!1;continue}switch(O.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":{if(d(O,we,oe,pe,he)===!1)return!1;break}case"GeometryCollection":{for(k=0;k<O.geometries.length;k++)if(d(O.geometries[k],we,oe,pe,he)===!1)return!1;break}default:throw new Error("Unknown Geometry Type")}}we++}}fr(uc,"geomEach");function qy(x,d,w){var k=w;return uc(x,function(A,O,$,s,Z){O===0&&w===void 0?k=A:k=d(k,A,O,$,s,Z)}),k}fr(qy,"geomReduce");function Os(x,d){uc(x,function(w,k,A,O,$){var s=w===null?null:w.type;switch(s){case null:case"Point":case"LineString":case"Polygon":return d(_o(w,A,{bbox:O,id:$}),k,0)===!1?!1:void 0}var Z;switch(s){case"MultiPoint":Z="Point";break;case"MultiLineString":Z="LineString";break;case"MultiPolygon":Z="Polygon";break}for(var oe=0;oe<w.coordinates.length;oe++){var pe=w.coordinates[oe],he={type:Z,coordinates:pe};if(d(_o(he,A),k,oe)===!1)return!1}})}fr(Os,"flattenEach");function JS(x,d,w){var k=w;return Os(x,function(A,O,$){O===0&&$===0&&w===void 0?k=A:k=d(k,A,O,$)}),k}fr(JS,"flattenReduce");function Zy(x,d){Os(x,function(w,k,A){var O=0;if(w.geometry){var $=w.geometry.type;if(!($==="Point"||$==="MultiPoint")){var s,Z=0,oe=0,pe=0;if(Ds(w,function(he,we,ye,Ie,Tt){if(s===void 0||k>Z||Ie>oe||Tt>pe){s=he,Z=k,oe=Ie,pe=Tt,O=0;return}var gt=us([s,he],w.properties);if(d(gt,k,A,Tt,O)===!1)return!1;O++,s=he})===!1)return!1}}})}fr(Zy,"segmentEach");function QS(x,d,w){var k=w,A=!1;return Zy(x,function(O,$,s,Z,oe){A===!1&&w===void 0?k=O:k=d(k,O,$,s,Z,oe),A=!0}),k}fr(QS,"segmentReduce");function Xy(x,d){if(!x)throw new Error("geojson is required");Os(x,function(w,k,A){if(w.geometry!==null){var O=w.geometry.type,$=w.geometry.coordinates;switch(O){case"LineString":if(d(w,k,A,0,0)===!1)return!1;break;case"Polygon":for(var s=0;s<$.length;s++)if(d(us($[s],w.properties),k,A,s)===!1)return!1;break}}})}fr(Xy,"lineEach");function e2(x,d,w){var k=w;return Xy(x,function(A,O,$,s){O===0&&w===void 0?k=A:k=d(k,A,O,$,s)}),k}fr(e2,"lineReduce");function t2(x,d){if(d=d||{},!Id(d))throw new Error("options is invalid");var w=d.featureIndex||0,k=d.multiFeatureIndex||0,A=d.geometryIndex||0,O=d.segmentIndex||0,$=d.properties,s;switch(x.type){case"FeatureCollection":w<0&&(w=x.features.length+w),$=$||x.features[w].properties,s=x.features[w].geometry;break;case"Feature":$=$||x.properties,s=x.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":s=x;break;default:throw new Error("geojson is invalid")}if(s===null)return null;var Z=s.coordinates;switch(s.type){case"Point":case"MultiPoint":return null;case"LineString":return O<0&&(O=Z.length+O-1),us([Z[O],Z[O+1]],$,d);case"Polygon":return A<0&&(A=Z.length+A),O<0&&(O=Z[A].length+O-1),us([Z[A][O],Z[A][O+1]],$,d);case"MultiLineString":return k<0&&(k=Z.length+k),O<0&&(O=Z[k].length+O-1),us([Z[k][O],Z[k][O+1]],$,d);case"MultiPolygon":return k<0&&(k=Z.length+k),A<0&&(A=Z[k].length+A),O<0&&(O=Z[k][A].length-O-1),us([Z[k][A][O],Z[k][A][O+1]],$,d)}throw new Error("geojson is invalid")}fr(t2,"findSegment");function i2(x,d){if(d=d||{},!Id(d))throw new Error("options is invalid");var w=d.featureIndex||0,k=d.multiFeatureIndex||0,A=d.geometryIndex||0,O=d.coordIndex||0,$=d.properties,s;switch(x.type){case"FeatureCollection":w<0&&(w=x.features.length+w),$=$||x.features[w].properties,s=x.features[w].geometry;break;case"Feature":$=$||x.properties,s=x.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":s=x;break;default:throw new Error("geojson is invalid")}if(s===null)return null;var Z=s.coordinates;switch(s.type){case"Point":return Xn(Z,$,d);case"MultiPoint":return k<0&&(k=Z.length+k),Xn(Z[k],$,d);case"LineString":return O<0&&(O=Z.length+O),Xn(Z[O],$,d);case"Polygon":return A<0&&(A=Z.length+A),O<0&&(O=Z[A].length+O),Xn(Z[A][O],$,d);case"MultiLineString":return k<0&&(k=Z.length+k),O<0&&(O=Z[k].length+O),Xn(Z[k][O],$,d);case"MultiPolygon":return k<0&&(k=Z.length+k),A<0&&(A=Z[k].length+A),O<0&&(O=Z[k][A].length-O),Xn(Z[k][A][O],$,d)}throw new Error("geojson is invalid")}fr(i2,"findPoint");var n2=Object.defineProperty,Qh=(x,d)=>n2(x,"name",{value:d,configurable:!0});function kd(x){return qy(x,(d,w)=>d+Wy(w),0)}Qh(kd,"area");function Wy(x){let d=0,w;switch(x.type){case"Polygon":return Md(x.coordinates);case"MultiPolygon":for(w=0;w<x.coordinates.length;w++)d+=Md(x.coordinates[w]);return d;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0}return 0}Qh(Wy,"calculateArea");function Md(x){let d=0;if(x&&x.length>0){d+=Math.abs(Cd(x[0]));for(let w=1;w<x.length;w++)d-=Math.abs(Cd(x[w]))}return d}Qh(Md,"polygonArea");var r2=yr*yr/2,Ad=Math.PI/180;function Cd(x){const d=x.length;if(d<=2)return 0;let w=0,k=0;for(;k<d;){const A=x[k],O=x[k+1===d?0:k+1],$=x[k+2>=d?(k+2)%d:k+2],s=A[0]*Ad,Z=O[1]*Ad,oe=$[0]*Ad;w+=(oe-s)*Math.sin(Z),k++}return w*r2}Qh(Cd,"ringArea");var o2=Object.defineProperty,s2=(x,d)=>o2(x,"name",{value:d,configurable:!0});function Yy(x,d={}){if(x.bbox!=null&&d.recompute!==!0)return x.bbox;const w=[1/0,1/0,-1/0,-1/0];return Ds(x,k=>{w[0]>k[0]&&(w[0]=k[0]),w[1]>k[1]&&(w[1]=k[1]),w[2]<k[0]&&(w[2]=k[0]),w[3]<k[1]&&(w[3]=k[1])}),w}s2(Yy,"bbox");function a2(x,d){var w=0,k=0,A=0,O=0,$=0,s=0,Z=0,oe=0,pe=null,he=null,we=x[0],ye=x[1],Ie=d.length;for(w;w<Ie;w++){k=0;var Tt=d[w].length-1,gt=d[w];if(pe=gt[0],pe[0]!==gt[Tt][0]&&pe[1]!==gt[Tt][1])throw new Error("First and last coordinates in a ring must be the same");for($=pe[0]-we,s=pe[1]-ye,k;k<Tt;k++){if(he=gt[k+1],oe=he[1]-ye,s<0&&oe<0||s>0&&oe>0){pe=he,s=oe,$=pe[0]-we;continue}if(Z=he[0]-x[0],oe>0&&s<=0){if(O=$*oe-Z*s,O>0)A=A+1;else if(O===0)return 0}else if(s>0&&oe<=0){if(O=$*oe-Z*s,O<0)A=A+1;else if(O===0)return 0}else if(oe===0&&s<0){if(O=$*oe-Z*s,O===0)return 0}else if(s===0&&oe<0){if(O=$*oe-Z*s,O===0)return 0}else if(s===0&&oe===0){if(Z<=0&&$>=0)return 0;if($<=0&&Z>=0)return 0}pe=he,s=oe,$=Z}}return A%2!==0}var l2=Object.defineProperty,Hy=(x,d)=>l2(x,"name",{value:d,configurable:!0});function Ky(x,d,w={}){if(!x)throw new Error("point is required");if(!d)throw new Error("polygon is required");const k=lc(x),A=jy(d),O=A.type,$=d.bbox;let s=A.coordinates;if($&&Jy(k,$)===!1)return!1;O==="Polygon"&&(s=[s]);let Z=!1;for(var oe=0;oe<s.length;++oe){const pe=a2(k,s[oe]);if(pe===0)return!w.ignoreBoundary;pe&&(Z=!0)}return Z}Hy(Ky,"booleanPointInPolygon");function Jy(x,d){return d[0]<=x[0]&&d[1]<=x[1]&&d[2]>=x[0]&&d[3]>=x[1]}Hy(Jy,"inBBox");class Qy{constructor(d=[],w=u2){if(this.data=d,this.length=this.data.length,this.compare=w,this.length>0)for(let k=(this.length>>1)-1;k>=0;k--)this._down(k)}push(d){this.data.push(d),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;const d=this.data[0],w=this.data.pop();return this.length--,this.length>0&&(this.data[0]=w,this._down(0)),d}peek(){return this.data[0]}_up(d){const{data:w,compare:k}=this,A=w[d];for(;d>0;){const O=d-1>>1,$=w[O];if(k(A,$)>=0)break;w[d]=$,d=O}w[d]=A}_down(d){const{data:w,compare:k}=this,A=this.length>>1,O=w[d];for(;d<A;){let $=(d<<1)+1,s=w[$];const Z=$+1;if(Z<this.length&&k(w[Z],s)<0&&($=Z,s=w[Z]),k(s,O)>=0)break;w[d]=s,d=$}w[d]=O}}function u2(x,d){return x<d?-1:x>d?1:0}function ev(x,d){return x.p.x>d.p.x?1:x.p.x<d.p.x?-1:x.p.y!==d.p.y?x.p.y>d.p.y?1:-1:1}function c2(x,d){return x.rightSweepEvent.p.x>d.rightSweepEvent.p.x?1:x.rightSweepEvent.p.x<d.rightSweepEvent.p.x?-1:x.rightSweepEvent.p.y!==d.rightSweepEvent.p.y?x.rightSweepEvent.p.y<d.rightSweepEvent.p.y?1:-1:1}class tv{constructor(d,w,k,A){this.p={x:d[0],y:d[1]},this.featureId=w,this.ringId=k,this.eventId=A,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(d){return this.p.x===d.p.x&&this.p.y===d.p.y}}function h2(x,d){if(x.type==="FeatureCollection"){const w=x.features;for(let k=0;k<w.length;k++)iv(w[k],d)}else iv(x,d)}let ef=0,tf=0,nf=0;function iv(x,d){const w=x.type==="Feature"?x.geometry:x;let k=w.coordinates;(w.type==="Polygon"||w.type==="MultiLineString")&&(k=[k]),w.type==="LineString"&&(k=[[k]]);for(let A=0;A<k.length;A++)for(let O=0;O<k[A].length;O++){let $=k[A][O][0],s=null;tf=tf+1;for(let Z=0;Z<k[A][O].length-1;Z++){s=k[A][O][Z+1];const oe=new tv($,ef,tf,nf),pe=new tv(s,ef,tf,nf+1);oe.otherEvent=pe,pe.otherEvent=oe,ev(oe,pe)>0?(pe.isLeftEndpoint=!0,oe.isLeftEndpoint=!1):(oe.isLeftEndpoint=!0,pe.isLeftEndpoint=!1),d.push(oe),d.push(pe),$=s,nf=nf+1}}ef=ef+1}class f2{constructor(d){this.leftSweepEvent=d,this.rightSweepEvent=d.otherEvent}}function p2(x,d){if(x===null||d===null||x.leftSweepEvent.ringId===d.leftSweepEvent.ringId&&(x.rightSweepEvent.isSamePoint(d.leftSweepEvent)||x.rightSweepEvent.isSamePoint(d.leftSweepEvent)||x.rightSweepEvent.isSamePoint(d.rightSweepEvent)||x.leftSweepEvent.isSamePoint(d.leftSweepEvent)||x.leftSweepEvent.isSamePoint(d.rightSweepEvent)))return!1;const w=x.leftSweepEvent.p.x,k=x.leftSweepEvent.p.y,A=x.rightSweepEvent.p.x,O=x.rightSweepEvent.p.y,$=d.leftSweepEvent.p.x,s=d.leftSweepEvent.p.y,Z=d.rightSweepEvent.p.x,oe=d.rightSweepEvent.p.y,pe=(oe-s)*(A-w)-(Z-$)*(O-k),he=(Z-$)*(k-s)-(oe-s)*(w-$),we=(A-w)*(k-s)-(O-k)*(w-$);if(pe===0)return!1;const ye=he/pe,Ie=we/pe;if(ye>=0&&ye<=1&&Ie>=0&&Ie<=1){const Tt=w+ye*(A-w),gt=k+ye*(O-k);return[Tt,gt]}return!1}function d2(x,d){d=d||!1;const w=[],k=new Qy([],c2);for(;x.length;){const A=x.pop();if(A.isLeftEndpoint){const O=new f2(A);for(let $=0;$<k.data.length;$++){const s=k.data[$];if(d&&s.leftSweepEvent.featureId===A.featureId)continue;const Z=p2(O,s);Z!==!1&&w.push(Z)}k.push(O)}else A.isLeftEndpoint===!1&&k.pop()}return w}function m2(x,d){const w=new Qy([],ev);return h2(x,w),d2(w,d)}var g2=Object.defineProperty,rf=(x,d)=>g2(x,"name",{value:d,configurable:!0});function nv(x,d={}){var w=typeof d=="object"?d.mutate:d;if(!x)throw new Error("geojson is required");var k=Vy(x),A=[];switch(k){case"LineString":A=of(x,k);break;case"MultiLineString":case"Polygon":rl(x).forEach(function($){A.push(of($,k))});break;case"MultiPolygon":rl(x).forEach(function($){var s=[];$.forEach(function(Z){s.push(of(Z,k))}),A.push(s)});break;case"Point":return x;case"MultiPoint":var O={};rl(x).forEach(function($){var s=$.join("-");Object.prototype.hasOwnProperty.call(O,s)||(A.push($),O[s]=!0)});break;default:throw new Error(k+" geometry not supported")}return x.coordinates?w===!0?(x.coordinates=A,x):{type:k,coordinates:A}:w===!0?(x.geometry.coordinates=A,x):_o({type:k,coordinates:A},x.properties,{bbox:x.bbox,id:x.id})}rf(nv,"cleanCoords");function of(x,d){var w=rl(x);if(w.length===2&&!Pd(w[0],w[1]))return w;var k=[],A=w.length-1,O=k.length;k.push(w[0]);for(var $=1;$<A;$++){var s=k[k.length-1];w[$][0]===s[0]&&w[$][1]===s[1]||(k.push(w[$]),O=k.length,O>2&&Ld(k[O-3],k[O-1],k[O-2])&&k.splice(k.length-2,1))}if(k.push(w[w.length-1]),O=k.length,(d==="Polygon"||d==="MultiPolygon")&&Pd(w[0],w[w.length-1])&&O<4)throw new Error("invalid polygon");return d==="LineString"&&O<3||Ld(k[O-3],k[O-1],k[O-2])&&k.splice(k.length-2,1),k}rf(of,"cleanLine");function Pd(x,d){return x[0]===d[0]&&x[1]===d[1]}rf(Pd,"equals");function Ld(x,d,w){var k=w[0],A=w[1],O=x[0],$=x[1],s=d[0],Z=d[1],oe=k-O,pe=A-$,he=s-O,we=Z-$,ye=oe*we-pe*he;return ye!==0?!1:Math.abs(he)>=Math.abs(we)?he>0?O<=k&&k<=s:s<=k&&k<=O:we>0?$<=A&&A<=Z:Z<=A&&A<=$}rf(Ld,"isPointOnLineSegment");function _2(x,d,w,k,A){rv(x,d,w||0,k||x.length-1,A||y2)}function rv(x,d,w,k,A){for(;k>w;){if(k-w>600){var O=k-w+1,$=d-w+1,s=Math.log(O),Z=.5*Math.exp(2*s/3),oe=.5*Math.sqrt(s*Z*(O-Z)/O)*($-O/2<0?-1:1),pe=Math.max(w,Math.floor(d-$*Z/O+oe)),he=Math.min(k,Math.floor(d+(O-$)*Z/O+oe));rv(x,d,pe,he,A)}var we=x[d],ye=w,Ie=k;for(cc(x,w,d),A(x[k],we)>0&&cc(x,w,k);ye<Ie;){for(cc(x,ye,Ie),ye++,Ie--;A(x[ye],we)<0;)ye++;for(;A(x[Ie],we)>0;)Ie--}A(x[w],we)===0?cc(x,w,Ie):(Ie++,cc(x,Ie,k)),Ie<=d&&(w=Ie+1),d<=Ie&&(k=Ie-1)}}function cc(x,d,w){var k=x[d];x[d]=x[w],x[w]=k}function y2(x,d){return x<d?-1:x>d?1:0}class ov{constructor(d=9){this._maxEntries=Math.max(4,d),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(d){let w=this.data;const k=[];if(!af(d,w))return k;const A=this.toBBox,O=[];for(;w;){for(let $=0;$<w.children.length;$++){const s=w.children[$],Z=w.leaf?A(s):s;af(d,Z)&&(w.leaf?k.push(s):Dd(d,Z)?this._all(s,k):O.push(s))}w=O.pop()}return k}collides(d){let w=this.data;if(!af(d,w))return!1;const k=[];for(;w;){for(let A=0;A<w.children.length;A++){const O=w.children[A],$=w.leaf?this.toBBox(O):O;if(af(d,$)){if(w.leaf||Dd(d,$))return!0;k.push(O)}}w=k.pop()}return!1}load(d){if(!(d&&d.length))return this;if(d.length<this._minEntries){for(let k=0;k<d.length;k++)this.insert(d[k]);return this}let w=this._build(d.slice(),0,d.length-1,0);if(!this.data.children.length)this.data=w;else if(this.data.height===w.height)this._splitRoot(this.data,w);else{if(this.data.height<w.height){const k=this.data;this.data=w,w=k}this._insert(w,this.data.height-w.height-1,!0)}return this}insert(d){return d&&this._insert(d,this.data.height-1),this}clear(){return this.data=nu([]),this}remove(d,w){if(!d)return this;let k=this.data;const A=this.toBBox(d),O=[],$=[];let s,Z,oe;for(;k||O.length;){if(k||(k=O.pop(),Z=O[O.length-1],s=$.pop(),oe=!0),k.leaf){const pe=v2(d,k.children,w);if(pe!==-1)return k.children.splice(pe,1),O.push(k),this._condense(O),this}!oe&&!k.leaf&&Dd(k,A)?(O.push(k),$.push(s),s=0,Z=k,k=k.children[0]):Z?(s++,k=Z.children[s],oe=!1):k=null}return this}toBBox(d){return d}compareMinX(d,w){return d.minX-w.minX}compareMinY(d,w){return d.minY-w.minY}toJSON(){return this.data}fromJSON(d){return this.data=d,this}_all(d,w){const k=[];for(;d;)d.leaf?w.push(...d.children):k.push(...d.children),d=k.pop();return w}_build(d,w,k,A){const O=k-w+1;let $=this._maxEntries,s;if(O<=$)return s=nu(d.slice(w,k+1)),iu(s,this.toBBox),s;A||(A=Math.ceil(Math.log(O)/Math.log($)),$=Math.ceil(O/Math.pow($,A-1))),s=nu([]),s.leaf=!1,s.height=A;const Z=Math.ceil(O/$),oe=Z*Math.ceil(Math.sqrt($));sv(d,w,k,oe,this.compareMinX);for(let pe=w;pe<=k;pe+=oe){const he=Math.min(pe+oe-1,k);sv(d,pe,he,Z,this.compareMinY);for(let we=pe;we<=he;we+=Z){const ye=Math.min(we+Z-1,he);s.children.push(this._build(d,we,ye,A-1))}}return iu(s,this.toBBox),s}_chooseSubtree(d,w,k,A){for(;A.push(w),!(w.leaf||A.length-1===k);){let O=1/0,$=1/0,s;for(let Z=0;Z<w.children.length;Z++){const oe=w.children[Z],pe=Rd(oe),he=w2(d,oe)-pe;he<$?($=he,O=pe<O?pe:O,s=oe):he===$&&pe<O&&(O=pe,s=oe)}w=s||w.children[0]}return w}_insert(d,w,k){const A=k?d:this.toBBox(d),O=[],$=this._chooseSubtree(A,this.data,w,O);for($.children.push(d),fc($,A);w>=0&&O[w].children.length>this._maxEntries;)this._split(O,w),w--;this._adjustParentBBoxes(A,O,w)}_split(d,w){const k=d[w],A=k.children.length,O=this._minEntries;this._chooseSplitAxis(k,O,A);const $=this._chooseSplitIndex(k,O,A),s=nu(k.children.splice($,k.children.length-$));s.height=k.height,s.leaf=k.leaf,iu(k,this.toBBox),iu(s,this.toBBox),w?d[w-1].children.push(s):this._splitRoot(k,s)}_splitRoot(d,w){this.data=nu([d,w]),this.data.height=d.height+1,this.data.leaf=!1,iu(this.data,this.toBBox)}_chooseSplitIndex(d,w,k){let A,O=1/0,$=1/0;for(let s=w;s<=k-w;s++){const Z=hc(d,0,s,this.toBBox),oe=hc(d,s,k,this.toBBox),pe=E2(Z,oe),he=Rd(Z)+Rd(oe);pe<O?(O=pe,A=s,$=he<$?he:$):pe===O&&he<$&&($=he,A=s)}return A||k-w}_chooseSplitAxis(d,w,k){const A=d.leaf?this.compareMinX:x2,O=d.leaf?this.compareMinY:b2,$=this._allDistMargin(d,w,k,A),s=this._allDistMargin(d,w,k,O);$<s&&d.children.sort(A)}_allDistMargin(d,w,k,A){d.children.sort(A);const O=this.toBBox,$=hc(d,0,w,O),s=hc(d,k-w,k,O);let Z=sf($)+sf(s);for(let oe=w;oe<k-w;oe++){const pe=d.children[oe];fc($,d.leaf?O(pe):pe),Z+=sf($)}for(let oe=k-w-1;oe>=w;oe--){const pe=d.children[oe];fc(s,d.leaf?O(pe):pe),Z+=sf(s)}return Z}_adjustParentBBoxes(d,w,k){for(let A=k;A>=0;A--)fc(w[A],d)}_condense(d){for(let w=d.length-1,k;w>=0;w--)d[w].children.length===0?w>0?(k=d[w-1].children,k.splice(k.indexOf(d[w]),1)):this.clear():iu(d[w],this.toBBox)}}function v2(x,d,w){if(!w)return d.indexOf(x);for(let k=0;k<d.length;k++)if(w(x,d[k]))return k;return-1}function iu(x,d){hc(x,0,x.children.length,d,x)}function hc(x,d,w,k,A){A||(A=nu(null)),A.minX=1/0,A.minY=1/0,A.maxX=-1/0,A.maxY=-1/0;for(let O=d;O<w;O++){const $=x.children[O];fc(A,x.leaf?k($):$)}return A}function fc(x,d){return x.minX=Math.min(x.minX,d.minX),x.minY=Math.min(x.minY,d.minY),x.maxX=Math.max(x.maxX,d.maxX),x.maxY=Math.max(x.maxY,d.maxY),x}function x2(x,d){return x.minX-d.minX}function b2(x,d){return x.minY-d.minY}function Rd(x){return(x.maxX-x.minX)*(x.maxY-x.minY)}function sf(x){return x.maxX-x.minX+(x.maxY-x.minY)}function w2(x,d){return(Math.max(d.maxX,x.maxX)-Math.min(d.minX,x.minX))*(Math.max(d.maxY,x.maxY)-Math.min(d.minY,x.minY))}function E2(x,d){const w=Math.max(x.minX,d.minX),k=Math.max(x.minY,d.minY),A=Math.min(x.maxX,d.maxX),O=Math.min(x.maxY,d.maxY);return Math.max(0,A-w)*Math.max(0,O-k)}function Dd(x,d){return x.minX<=d.minX&&x.minY<=d.minY&&d.maxX<=x.maxX&&d.maxY<=x.maxY}function af(x,d){return d.minX<=x.maxX&&d.minY<=x.maxY&&d.maxX>=x.minX&&d.maxY>=x.minY}function nu(x){return{children:x,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function sv(x,d,w,k,A){const O=[d,w];for(;O.length;){if(w=O.pop(),d=O.pop(),w-d<=k)continue;const $=d+Math.ceil((w-d)/k/2)*k;_2(x,$,d,w,A),O.push(d,$,$,w)}}var T2=Object.defineProperty,lf=(x,d)=>T2(x,"name",{value:d,configurable:!0});function av(x){if(!x)throw new Error("geojson is required");const d=[];return Os(x,w=>{lv(w,d)}),yo(d)}lf(av,"lineSegment");function lv(x,d){let w=[];const k=x.geometry;if(k!==null){switch(k.type){case"Polygon":w=rl(k);break;case"LineString":w=[rl(k)]}w.forEach(A=>{uv(A,x.properties).forEach($=>{$.id=d.length,d.push($)})})}}lf(lv,"lineSegmentFeature");function uv(x,d){const w=[];return x.reduce((k,A)=>{const O=us([k,A],d);return O.bbox=cv(k,A),w.push(O),A}),w}lf(uv,"createSegments");function cv(x,d){const w=x[0],k=x[1],A=d[0],O=d[1],$=w<A?w:A,s=k<O?k:O,Z=w>A?w:A,oe=k>O?k:O;return[$,s,Z,oe]}lf(cv,"bbox");var S2=Object.defineProperty,I2=(x,d)=>S2(x,"name",{value:d,configurable:!0});function uf(x,d={}){const w=Yy(x),k=(w[0]+w[2])/2,A=(w[1]+w[3])/2;return Xn([k,A],d.properties,d)}I2(uf,"center");var hv={exports:{}};(function(x,d){(function(w,k){x.exports=k()})($l,function(){function w(v,o){if(!(v instanceof o))throw new TypeError("Cannot call a class as a function")}function k(v,o){for(var l=0;l<o.length;l++){var c=o[l];c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(v,c.key,c)}}function A(v,o,l){return o&&k(v.prototype,o),l&&k(v,l),v}function O(v,o){if(typeof o!="function"&&o!==null)throw new TypeError("Super expression must either be null or a function");v.prototype=Object.create(o&&o.prototype,{constructor:{value:v,writable:!0,configurable:!0}}),o&&s(v,o)}function $(v){return $=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},$(v)}function s(v,o){return s=Object.setPrototypeOf||function(l,c){return l.__proto__=c,l},s(v,o)}function Z(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function oe(v,o,l){return oe=Z()?Reflect.construct:function(c,g,S){var R=[null];R.push.apply(R,g);var F=new(Function.bind.apply(c,R));return S&&s(F,S.prototype),F},oe.apply(null,arguments)}function pe(v){var o=typeof Map=="function"?new Map:void 0;return pe=function(l){if(l===null||(c=l,Function.toString.call(c).indexOf("[native code]")===-1))return l;var c;if(typeof l!="function")throw new TypeError("Super expression must either be null or a function");if(o!==void 0){if(o.has(l))return o.get(l);o.set(l,g)}function g(){return oe(l,arguments,$(this).constructor)}return g.prototype=Object.create(l.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),s(g,l)},pe(v)}function he(v){if(v===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return v}function we(v,o){if(o&&(typeof o=="object"||typeof o=="function"))return o;if(o!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return he(v)}function ye(v){var o=Z();return function(){var l,c=$(v);if(o){var g=$(this).constructor;l=Reflect.construct(c,arguments,g)}else l=c.apply(this,arguments);return we(this,l)}}function Ie(v,o,l){return Ie=typeof Reflect<"u"&&Reflect.get?Reflect.get:function(c,g,S){var R=function(q,Q){for(;!Object.prototype.hasOwnProperty.call(q,Q)&&(q=$(q))!==null;);return q}(c,g);if(R){var F=Object.getOwnPropertyDescriptor(R,g);return F.get?F.get.call(S):F.value}},Ie(v,o,l||v)}function Tt(v){return function(o){if(Array.isArray(o))return Mt(o)}(v)||function(o){if(typeof Symbol<"u"&&o[Symbol.iterator]!=null||o["@@iterator"]!=null)return Array.from(o)}(v)||gt(v)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function gt(v,o){if(v){if(typeof v=="string")return Mt(v,o);var l=Object.prototype.toString.call(v).slice(8,-1);return l==="Object"&&v.constructor&&(l=v.constructor.name),l==="Map"||l==="Set"?Array.from(v):l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?Mt(v,o):void 0}}function Mt(v,o){(o==null||o>v.length)&&(o=v.length);for(var l=0,c=new Array(o);l<o;l++)c[l]=v[l];return c}function Le(v,o){var l=typeof Symbol<"u"&&v[Symbol.iterator]||v["@@iterator"];if(!l){if(Array.isArray(v)||(l=gt(v))||o){l&&(v=l);var c=0,g=function(){};return{s:g,n:function(){return c>=v.length?{done:!0}:{done:!1,value:v[c++]}},e:function(q){throw q},f:g}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var S,R=!0,F=!1;return{s:function(){l=l.call(v)},n:function(){var q=l.next();return R=q.done,q},e:function(q){F=!0,S=q},f:function(){try{R||l.return==null||l.return()}finally{if(F)throw S}}}}var Qe=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getEndCapStyle",value:function(){return this._endCapStyle}},{key:"isSingleSided",value:function(){return this._isSingleSided}},{key:"setQuadrantSegments",value:function(o){this._quadrantSegments=o,this._quadrantSegments===0&&(this._joinStyle=v.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=v.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),o<=0&&(this._quadrantSegments=1),this._joinStyle!==v.JOIN_ROUND&&(this._quadrantSegments=v.DEFAULT_QUADRANT_SEGMENTS)}},{key:"getJoinStyle",value:function(){return this._joinStyle}},{key:"setJoinStyle",value:function(o){this._joinStyle=o}},{key:"setSimplifyFactor",value:function(o){this._simplifyFactor=o<0?0:o}},{key:"getSimplifyFactor",value:function(){return this._simplifyFactor}},{key:"getQuadrantSegments",value:function(){return this._quadrantSegments}},{key:"setEndCapStyle",value:function(o){this._endCapStyle=o}},{key:"getMitreLimit",value:function(){return this._mitreLimit}},{key:"setMitreLimit",value:function(o){this._mitreLimit=o}},{key:"setSingleSided",value:function(o){this._isSingleSided=o}}],[{key:"constructor_",value:function(){if(this._quadrantSegments=v.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=v.CAP_ROUND,this._joinStyle=v.JOIN_ROUND,this._mitreLimit=v.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=v.DEFAULT_SIMPLIFY_FACTOR,arguments.length!==0){if(arguments.length===1){var o=arguments[0];this.setQuadrantSegments(o)}else if(arguments.length===2){var l=arguments[0],c=arguments[1];this.setQuadrantSegments(l),this.setEndCapStyle(c)}else if(arguments.length===4){var g=arguments[0],S=arguments[1],R=arguments[2],F=arguments[3];this.setQuadrantSegments(g),this.setEndCapStyle(S),this.setJoinStyle(R),this.setMitreLimit(F)}}}},{key:"bufferDistanceError",value:function(o){var l=Math.PI/2/o;return 1-Math.cos(l/2)}}]),v}();Qe.CAP_ROUND=1,Qe.CAP_FLAT=2,Qe.CAP_SQUARE=3,Qe.JOIN_ROUND=1,Qe.JOIN_MITRE=2,Qe.JOIN_BEVEL=3,Qe.DEFAULT_QUADRANT_SEGMENTS=8,Qe.DEFAULT_MITRE_LIMIT=5,Qe.DEFAULT_SIMPLIFY_FACTOR=.01;var Et=function(v){O(l,v);var o=ye(l);function l(c){var g;return w(this,l),(g=o.call(this,c)).name=Object.keys({Exception:l})[0],g}return A(l,[{key:"toString",value:function(){return this.message}}]),l}(pe(Error)),ut=function(v){O(l,v);var o=ye(l);function l(c){var g;return w(this,l),(g=o.call(this,c)).name=Object.keys({IllegalArgumentException:l})[0],g}return l}(Et),yt=function(){function v(){w(this,v)}return A(v,[{key:"filter",value:function(o){}}]),v}();function _t(){}function It(){}function Oe(){}var gi,ti,At,Xt,bt,Jt,Bt,Ri,Rt=function(){function v(){w(this,v)}return A(v,null,[{key:"equalsWithTolerance",value:function(o,l,c){return Math.abs(o-l)<=c}}]),v}(),pi=function(){function v(o,l){w(this,v),this.low=l||0,this.high=o||0}return A(v,null,[{key:"toBinaryString",value:function(o){var l,c="";for(l=2147483648;l>0;l>>>=1)c+=(o.high&l)===l?"1":"0";for(l=2147483648;l>0;l>>>=1)c+=(o.low&l)===l?"1":"0";return c}}]),v}();function St(){}function wi(){}St.NaN=NaN,St.isNaN=function(v){return Number.isNaN(v)},St.isInfinite=function(v){return!Number.isFinite(v)},St.MAX_VALUE=Number.MAX_VALUE,St.POSITIVE_INFINITY=Number.POSITIVE_INFINITY,St.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY,typeof Float64Array=="function"&&typeof Int32Array=="function"?(Jt=2146435072,Bt=new Float64Array(1),Ri=new Int32Array(Bt.buffer),St.doubleToLongBits=function(v){Bt[0]=v;var o=0|Ri[0],l=0|Ri[1];return(l&Jt)===Jt&&1048575&l&&o!==0&&(o=0,l=2146959360),new pi(l,o)},St.longBitsToDouble=function(v){return Ri[0]=v.low,Ri[1]=v.high,Bt[0]}):(gi=1023,ti=Math.log2,At=Math.floor,Xt=Math.pow,bt=function(){for(var v=53;v>0;v--){var o=Xt(2,v)-1;if(At(ti(o))+1===v)return o}return 0}(),St.doubleToLongBits=function(v){var o,l,c,g,S,R,F,q,Q;if(v<0||1/v===Number.NEGATIVE_INFINITY?(R=-2147483648,v=-v):R=0,v===0)return new pi(q=R,Q=0);if(v===1/0)return new pi(q=2146435072|R,Q=0);if(v!=v)return new pi(q=2146959360,Q=0);if(g=0,Q=0,(o=At(v))>1)if(o<=bt)(g=At(ti(o)))<=20?(Q=0,q=o<<20-g&1048575):(Q=o%(l=Xt(2,c=g-20))<<32-c,q=o/l&1048575);else for(c=o,Q=0;(c=At(l=c/2))!==0;)g++,Q>>>=1,Q|=(1&q)<<31,q>>>=1,l!==c&&(q|=524288);if(F=g+gi,S=o===0,o=v-o,g<52&&o!==0)for(c=0;;){if((l=2*o)>=1?(o=l-1,S?(F--,S=!1):(c<<=1,c|=1,g++)):(o=l,S?--F==0&&(g++,S=!1):(c<<=1,g++)),g===20)q|=c,c=0;else if(g===52){Q|=c;break}if(l===1){g<20?q|=c<<20-g:g<52&&(Q|=c<<52-g);break}}return q|=F<<20,new pi(q|=R,Q)},St.longBitsToDouble=function(v){var o,l,c,g,S=v.high,R=v.low,F=S&1<<31?-1:1;for(c=((2146435072&S)>>20)-gi,g=0,l=524288,o=1;o<=20;o++)S&l&&(g+=Xt(2,-o)),l>>>=1;for(l=-2147483648,o=21;o<=52;o++)R&l&&(g+=Xt(2,-o)),l>>>=1;if(c===-1023){if(g===0)return 0*F;c=-1022}else{if(c===1024)return g===0?F/0:NaN;g+=1}return F*g*Xt(2,c)});var Oi=function(v){O(l,v);var o=ye(l);function l(c){var g;return w(this,l),(g=o.call(this,c)).name=Object.keys({RuntimeException:l})[0],g}return l}(Et),Wt=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,null,[{key:"constructor_",value:function(){if(arguments.length===0)Oi.constructor_.call(this);else if(arguments.length===1){var c=arguments[0];Oi.constructor_.call(this,c)}}}]),l}(Oi),Dt=function(){function v(){w(this,v)}return A(v,null,[{key:"shouldNeverReachHere",value:function(){if(arguments.length===0)v.shouldNeverReachHere(null);else if(arguments.length===1){var o=arguments[0];throw new Wt("Should never reach here"+(o!==null?": "+o:""))}}},{key:"isTrue",value:function(){if(arguments.length===1){var o=arguments[0];v.isTrue(o,null)}else if(arguments.length===2){var l=arguments[0],c=arguments[1];if(!l)throw c===null?new Wt:new Wt(c)}}},{key:"equals",value:function(){if(arguments.length===2){var o=arguments[0],l=arguments[1];v.equals(o,l,null)}else if(arguments.length===3){var c=arguments[0],g=arguments[1],S=arguments[2];if(!g.equals(c))throw new Wt("Expected "+c+" but encountered "+g+(S!==null?": "+S:""))}}}]),v}(),Ni=new ArrayBuffer(8),Dn=new Float64Array(Ni),vn=new Int32Array(Ni),Fe=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getM",value:function(){return St.NaN}},{key:"setOrdinate",value:function(o,l){switch(o){case v.X:this.x=l;break;case v.Y:this.y=l;break;case v.Z:this.setZ(l);break;default:throw new ut("Invalid ordinate index: "+o)}}},{key:"equals2D",value:function(){if(arguments.length===1){var o=arguments[0];return this.x===o.x&&this.y===o.y}if(arguments.length===2){var l=arguments[0],c=arguments[1];return!!Rt.equalsWithTolerance(this.x,l.x,c)&&!!Rt.equalsWithTolerance(this.y,l.y,c)}}},{key:"setM",value:function(o){throw new ut("Invalid ordinate index: "+v.M)}},{key:"getZ",value:function(){return this.z}},{key:"getOrdinate",value:function(o){switch(o){case v.X:return this.x;case v.Y:return this.y;case v.Z:return this.getZ()}throw new ut("Invalid ordinate index: "+o)}},{key:"equals3D",value:function(o){return this.x===o.x&&this.y===o.y&&(this.getZ()===o.getZ()||St.isNaN(this.getZ())&&St.isNaN(o.getZ()))}},{key:"equals",value:function(o){return o instanceof v&&this.equals2D(o)}},{key:"equalInZ",value:function(o,l){return Rt.equalsWithTolerance(this.getZ(),o.getZ(),l)}},{key:"setX",value:function(o){this.x=o}},{key:"compareTo",value:function(o){var l=o;return this.x<l.x?-1:this.x>l.x?1:this.y<l.y?-1:this.y>l.y?1:0}},{key:"getX",value:function(){return this.x}},{key:"setZ",value:function(o){this.z=o}},{key:"clone",value:function(){try{return null}catch(o){if(o instanceof CloneNotSupportedException)return Dt.shouldNeverReachHere("this shouldn't happen because this class is Cloneable"),null;throw o}}},{key:"copy",value:function(){return new v(this)}},{key:"toString",value:function(){return"("+this.x+", "+this.y+", "+this.getZ()+")"}},{key:"distance3D",value:function(o){var l=this.x-o.x,c=this.y-o.y,g=this.getZ()-o.getZ();return Math.sqrt(l*l+c*c+g*g)}},{key:"getY",value:function(){return this.y}},{key:"setY",value:function(o){this.y=o}},{key:"distance",value:function(o){var l=this.x-o.x,c=this.y-o.y;return Math.sqrt(l*l+c*c)}},{key:"hashCode",value:function(){var o=17;return o=37*(o=37*o+v.hashCode(this.x))+v.hashCode(this.y)}},{key:"setCoordinate",value:function(o){this.x=o.x,this.y=o.y,this.z=o.getZ()}},{key:"interfaces_",get:function(){return[_t,It,Oe]}}],[{key:"constructor_",value:function(){if(this.x=null,this.y=null,this.z=null,arguments.length===0)v.constructor_.call(this,0,0);else if(arguments.length===1){var o=arguments[0];v.constructor_.call(this,o.x,o.y,o.getZ())}else if(arguments.length===2){var l=arguments[0],c=arguments[1];v.constructor_.call(this,l,c,v.NULL_ORDINATE)}else if(arguments.length===3){var g=arguments[0],S=arguments[1],R=arguments[2];this.x=g,this.y=S,this.z=R}}},{key:"hashCode",value:function(o){return Dn[0]=o,vn[0]^vn[1]}}]),v}(),no=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"compare",value:function(o,l){var c=v.compare(o.x,l.x);if(c!==0)return c;var g=v.compare(o.y,l.y);return g!==0?g:this._dimensionsToTest<=2?0:v.compare(o.getZ(),l.getZ())}},{key:"interfaces_",get:function(){return[wi]}}],[{key:"constructor_",value:function(){if(this._dimensionsToTest=2,arguments.length===0)v.constructor_.call(this,2);else if(arguments.length===1){var o=arguments[0];if(o!==2&&o!==3)throw new ut("only 2 or 3 dimensions may be specified");this._dimensionsToTest=o}}},{key:"compare",value:function(o,l){return o<l?-1:o>l?1:St.isNaN(o)?St.isNaN(l)?0:-1:St.isNaN(l)?1:0}}]),v}();Fe.DimensionalComparator=no,Fe.NULL_ORDINATE=St.NaN,Fe.X=0,Fe.Y=1,Fe.Z=2,Fe.M=3;var Ci=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getArea",value:function(){return this.getWidth()*this.getHeight()}},{key:"equals",value:function(o){if(!(o instanceof v))return!1;var l=o;return this.isNull()?l.isNull():this._maxx===l.getMaxX()&&this._maxy===l.getMaxY()&&this._minx===l.getMinX()&&this._miny===l.getMinY()}},{key:"intersection",value:function(o){if(this.isNull()||o.isNull()||!this.intersects(o))return new v;var l=this._minx>o._minx?this._minx:o._minx,c=this._miny>o._miny?this._miny:o._miny;return new v(l,this._maxx<o._maxx?this._maxx:o._maxx,c,this._maxy<o._maxy?this._maxy:o._maxy)}},{key:"isNull",value:function(){return this._maxx<this._minx}},{key:"getMaxX",value:function(){return this._maxx}},{key:"covers",value:function(){if(arguments.length===1){if(arguments[0]instanceof Fe){var o=arguments[0];return this.covers(o.x,o.y)}if(arguments[0]instanceof v){var l=arguments[0];return!this.isNull()&&!l.isNull()&&l.getMinX()>=this._minx&&l.getMaxX()<=this._maxx&&l.getMinY()>=this._miny&&l.getMaxY()<=this._maxy}}else if(arguments.length===2){var c=arguments[0],g=arguments[1];return!this.isNull()&&c>=this._minx&&c<=this._maxx&&g>=this._miny&&g<=this._maxy}}},{key:"intersects",value:function(){if(arguments.length===1){if(arguments[0]instanceof v){var o=arguments[0];return!this.isNull()&&!o.isNull()&&!(o._minx>this._maxx||o._maxx<this._minx||o._miny>this._maxy||o._maxy<this._miny)}if(arguments[0]instanceof Fe){var l=arguments[0];return this.intersects(l.x,l.y)}}else if(arguments.length===2){if(arguments[0]instanceof Fe&&arguments[1]instanceof Fe){var c=arguments[0],g=arguments[1];if(this.isNull())return!1;var S=c.x<g.x?c.x:g.x;if(S>this._maxx)return!1;var R=c.x>g.x?c.x:g.x;if(R<this._minx)return!1;var F=c.y<g.y?c.y:g.y;if(F>this._maxy)return!1;var q=c.y>g.y?c.y:g.y;return!(q<this._miny)}if(typeof arguments[0]=="number"&&typeof arguments[1]=="number"){var Q=arguments[0],Ee=arguments[1];return!this.isNull()&&!(Q>this._maxx||Q<this._minx||Ee>this._maxy||Ee<this._miny)}}}},{key:"getMinY",value:function(){return this._miny}},{key:"getDiameter",value:function(){if(this.isNull())return 0;var o=this.getWidth(),l=this.getHeight();return Math.sqrt(o*o+l*l)}},{key:"getMinX",value:function(){return this._minx}},{key:"expandToInclude",value:function(){if(arguments.length===1){if(arguments[0]instanceof Fe){var o=arguments[0];this.expandToInclude(o.x,o.y)}else if(arguments[0]instanceof v){var l=arguments[0];if(l.isNull())return null;this.isNull()?(this._minx=l.getMinX(),this._maxx=l.getMaxX(),this._miny=l.getMinY(),this._maxy=l.getMaxY()):(l._minx<this._minx&&(this._minx=l._minx),l._maxx>this._maxx&&(this._maxx=l._maxx),l._miny<this._miny&&(this._miny=l._miny),l._maxy>this._maxy&&(this._maxy=l._maxy))}}else if(arguments.length===2){var c=arguments[0],g=arguments[1];this.isNull()?(this._minx=c,this._maxx=c,this._miny=g,this._maxy=g):(c<this._minx&&(this._minx=c),c>this._maxx&&(this._maxx=c),g<this._miny&&(this._miny=g),g>this._maxy&&(this._maxy=g))}}},{key:"minExtent",value:function(){if(this.isNull())return 0;var o=this.getWidth(),l=this.getHeight();return o<l?o:l}},{key:"getWidth",value:function(){return this.isNull()?0:this._maxx-this._minx}},{key:"compareTo",value:function(o){var l=o;return this.isNull()?l.isNull()?0:-1:l.isNull()?1:this._minx<l._minx?-1:this._minx>l._minx?1:this._miny<l._miny?-1:this._miny>l._miny?1:this._maxx<l._maxx?-1:this._maxx>l._maxx?1:this._maxy<l._maxy?-1:this._maxy>l._maxy?1:0}},{key:"translate",value:function(o,l){if(this.isNull())return null;this.init(this.getMinX()+o,this.getMaxX()+o,this.getMinY()+l,this.getMaxY()+l)}},{key:"copy",value:function(){return new v(this)}},{key:"toString",value:function(){return"Env["+this._minx+" : "+this._maxx+", "+this._miny+" : "+this._maxy+"]"}},{key:"setToNull",value:function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1}},{key:"disjoint",value:function(o){return!(!this.isNull()&&!o.isNull())||o._minx>this._maxx||o._maxx<this._minx||o._miny>this._maxy||o._maxy<this._miny}},{key:"getHeight",value:function(){return this.isNull()?0:this._maxy-this._miny}},{key:"maxExtent",value:function(){if(this.isNull())return 0;var o=this.getWidth(),l=this.getHeight();return o>l?o:l}},{key:"expandBy",value:function(){if(arguments.length===1){var o=arguments[0];this.expandBy(o,o)}else if(arguments.length===2){var l=arguments[0],c=arguments[1];if(this.isNull())return null;this._minx-=l,this._maxx+=l,this._miny-=c,this._maxy+=c,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}}},{key:"contains",value:function(){if(arguments.length===1){if(arguments[0]instanceof v){var o=arguments[0];return this.covers(o)}if(arguments[0]instanceof Fe){var l=arguments[0];return this.covers(l)}}else if(arguments.length===2){var c=arguments[0],g=arguments[1];return this.covers(c,g)}}},{key:"centre",value:function(){return this.isNull()?null:new Fe((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)}},{key:"init",value:function(){if(arguments.length===0)this.setToNull();else if(arguments.length===1){if(arguments[0]instanceof Fe){var o=arguments[0];this.init(o.x,o.x,o.y,o.y)}else if(arguments[0]instanceof v){var l=arguments[0];this._minx=l._minx,this._maxx=l._maxx,this._miny=l._miny,this._maxy=l._maxy}}else if(arguments.length===2){var c=arguments[0],g=arguments[1];this.init(c.x,g.x,c.y,g.y)}else if(arguments.length===4){var S=arguments[0],R=arguments[1],F=arguments[2],q=arguments[3];S<R?(this._minx=S,this._maxx=R):(this._minx=R,this._maxx=S),F<q?(this._miny=F,this._maxy=q):(this._miny=q,this._maxy=F)}}},{key:"getMaxY",value:function(){return this._maxy}},{key:"distance",value:function(o){if(this.intersects(o))return 0;var l=0;this._maxx<o._minx?l=o._minx-this._maxx:this._minx>o._maxx&&(l=this._minx-o._maxx);var c=0;return this._maxy<o._miny?c=o._miny-this._maxy:this._miny>o._maxy&&(c=this._miny-o._maxy),l===0?c:c===0?l:Math.sqrt(l*l+c*c)}},{key:"hashCode",value:function(){var o=17;return o=37*(o=37*(o=37*(o=37*o+Fe.hashCode(this._minx))+Fe.hashCode(this._maxx))+Fe.hashCode(this._miny))+Fe.hashCode(this._maxy)}},{key:"interfaces_",get:function(){return[_t,Oe]}}],[{key:"constructor_",value:function(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,arguments.length===0)this.init();else if(arguments.length===1){if(arguments[0]instanceof Fe){var o=arguments[0];this.init(o.x,o.x,o.y,o.y)}else if(arguments[0]instanceof v){var l=arguments[0];this.init(l)}}else if(arguments.length===2){var c=arguments[0],g=arguments[1];this.init(c.x,g.x,c.y,g.y)}else if(arguments.length===4){var S=arguments[0],R=arguments[1],F=arguments[2],q=arguments[3];this.init(S,R,F,q)}}},{key:"intersects",value:function(){if(arguments.length===3){var o=arguments[0],l=arguments[1],c=arguments[2];return c.x>=(o.x<l.x?o.x:l.x)&&c.x<=(o.x>l.x?o.x:l.x)&&c.y>=(o.y<l.y?o.y:l.y)&&c.y<=(o.y>l.y?o.y:l.y)}if(arguments.length===4){var g=arguments[0],S=arguments[1],R=arguments[2],F=arguments[3],q=Math.min(R.x,F.x),Q=Math.max(R.x,F.x),Ee=Math.min(g.x,S.x),Me=Math.max(g.x,S.x);return!(Ee>Q)&&!(Me<q)&&(q=Math.min(R.y,F.y),Q=Math.max(R.y,F.y),Ee=Math.min(g.y,S.y),Me=Math.max(g.y,S.y),!(Ee>Q)&&!(Me<q))}}}]),v}(),ft=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"isGeometryCollection",value:function(){return this.getTypeCode()===v.TYPECODE_GEOMETRYCOLLECTION}},{key:"getFactory",value:function(){return this._factory}},{key:"getGeometryN",value:function(o){return this}},{key:"getArea",value:function(){return 0}},{key:"isRectangle",value:function(){return!1}},{key:"equalsExact",value:function(o){return this===o||this.equalsExact(o,0)}},{key:"geometryChanged",value:function(){this.apply(v.geometryChangedFilter)}},{key:"geometryChangedAction",value:function(){this._envelope=null}},{key:"equalsNorm",value:function(o){return o!==null&&this.norm().equalsExact(o.norm())}},{key:"getLength",value:function(){return 0}},{key:"getNumGeometries",value:function(){return 1}},{key:"compareTo",value:function(){var o;if(arguments.length===1){var l=arguments[0];return o=l,this.getTypeCode()!==o.getTypeCode()?this.getTypeCode()-o.getTypeCode():this.isEmpty()&&o.isEmpty()?0:this.isEmpty()?-1:o.isEmpty()?1:this.compareToSameClass(l)}if(arguments.length===2){var c=arguments[0],g=arguments[1];return o=c,this.getTypeCode()!==o.getTypeCode()?this.getTypeCode()-o.getTypeCode():this.isEmpty()&&o.isEmpty()?0:this.isEmpty()?-1:o.isEmpty()?1:this.compareToSameClass(c,g)}}},{key:"getUserData",value:function(){return this._userData}},{key:"getSRID",value:function(){return this._SRID}},{key:"getEnvelope",value:function(){return this.getFactory().toGeometry(this.getEnvelopeInternal())}},{key:"checkNotGeometryCollection",value:function(o){if(o.getTypeCode()===v.TYPECODE_GEOMETRYCOLLECTION)throw new ut("This method does not support GeometryCollection arguments")}},{key:"equal",value:function(o,l,c){return c===0?o.equals(l):o.distance(l)<=c}},{key:"norm",value:function(){var o=this.copy();return o.normalize(),o}},{key:"reverse",value:function(){var o=this.reverseInternal();return this.envelope!=null&&(o.envelope=this.envelope.copy()),o.setSRID(this.getSRID()),o}},{key:"copy",value:function(){var o=this.copyInternal();return o.envelope=this._envelope==null?null:this._envelope.copy(),o._SRID=this._SRID,o._userData=this._userData,o}},{key:"getPrecisionModel",value:function(){return this._factory.getPrecisionModel()}},{key:"getEnvelopeInternal",value:function(){return this._envelope===null&&(this._envelope=this.computeEnvelopeInternal()),new Ci(this._envelope)}},{key:"setSRID",value:function(o){this._SRID=o}},{key:"setUserData",value:function(o){this._userData=o}},{key:"compare",value:function(o,l){for(var c=o.iterator(),g=l.iterator();c.hasNext()&&g.hasNext();){var S=c.next(),R=g.next(),F=S.compareTo(R);if(F!==0)return F}return c.hasNext()?1:g.hasNext()?-1:0}},{key:"hashCode",value:function(){return this.getEnvelopeInternal().hashCode()}},{key:"isEquivalentClass",value:function(o){return this.getClass()===o.getClass()}},{key:"isGeometryCollectionOrDerived",value:function(){return this.getTypeCode()===v.TYPECODE_GEOMETRYCOLLECTION||this.getTypeCode()===v.TYPECODE_MULTIPOINT||this.getTypeCode()===v.TYPECODE_MULTILINESTRING||this.getTypeCode()===v.TYPECODE_MULTIPOLYGON}},{key:"interfaces_",get:function(){return[It,_t,Oe]}},{key:"getClass",value:function(){return v}}],[{key:"hasNonEmptyElements",value:function(o){for(var l=0;l<o.length;l++)if(!o[l].isEmpty())return!0;return!1}},{key:"hasNullElements",value:function(o){for(var l=0;l<o.length;l++)if(o[l]===null)return!0;return!1}}]),v}();ft.constructor_=function(v){v&&(this._envelope=null,this._userData=null,this._factory=v,this._SRID=v.getSRID())},ft.TYPECODE_POINT=0,ft.TYPECODE_MULTIPOINT=1,ft.TYPECODE_LINESTRING=2,ft.TYPECODE_LINEARRING=3,ft.TYPECODE_MULTILINESTRING=4,ft.TYPECODE_POLYGON=5,ft.TYPECODE_MULTIPOLYGON=6,ft.TYPECODE_GEOMETRYCOLLECTION=7,ft.TYPENAME_POINT="Point",ft.TYPENAME_MULTIPOINT="MultiPoint",ft.TYPENAME_LINESTRING="LineString",ft.TYPENAME_LINEARRING="LinearRing",ft.TYPENAME_MULTILINESTRING="MultiLineString",ft.TYPENAME_POLYGON="Polygon",ft.TYPENAME_MULTIPOLYGON="MultiPolygon",ft.TYPENAME_GEOMETRYCOLLECTION="GeometryCollection",ft.geometryChangedFilter={get interfaces_(){return[yt]},filter:function(v){v.geometryChangedAction()}};var me=function(){function v(){w(this,v)}return A(v,null,[{key:"toLocationSymbol",value:function(o){switch(o){case v.EXTERIOR:return"e";case v.BOUNDARY:return"b";case v.INTERIOR:return"i";case v.NONE:return"-"}throw new ut("Unknown location value: "+o)}}]),v}();me.INTERIOR=0,me.BOUNDARY=1,me.EXTERIOR=2,me.NONE=-1;var rn=function(){function v(){w(this,v)}return A(v,[{key:"add",value:function(){}},{key:"addAll",value:function(){}},{key:"isEmpty",value:function(){}},{key:"iterator",value:function(){}},{key:"size",value:function(){}},{key:"toArray",value:function(){}},{key:"remove",value:function(){}}]),v}(),$r=function(v){O(l,v);var o=ye(l);function l(c){var g;return w(this,l),(g=o.call(this,c)).name=Object.keys({NoSuchElementException:l})[0],g}return l}(Et),Ti=function(v){O(l,v);var o=ye(l);function l(c){var g;return w(this,l),(g=o.call(this,c)).name=Object.keys({UnsupportedOperationException:l})[0],g}return l}(Et),pr=function(v){O(l,v);var o=ye(l);function l(){return w(this,l),o.apply(this,arguments)}return A(l,[{key:"contains",value:function(){}}]),l}(rn),ps=function(v,o){O(c,v);var l=ye(c);function c(g){var S;return w(this,c),(S=l.call(this)).map=new Map,g instanceof rn&&S.addAll(g),S}return A(c,[{key:"contains",value:function(g){var S=g.hashCode?g.hashCode():g;return!!this.map.has(S)}},{key:"add",value:function(g){var S=g.hashCode?g.hashCode():g;return!this.map.has(S)&&!!this.map.set(S,g)}},{key:"addAll",value:function(g){var S,R=Le(g);try{for(R.s();!(S=R.n()).done;){var F=S.value;this.add(F)}}catch(q){R.e(q)}finally{R.f()}return!0}},{key:"remove",value:function(){throw new Ti}},{key:"size",value:function(){return this.map.size}},{key:"isEmpty",value:function(){return this.map.size===0}},{key:"toArray",value:function(){return Array.from(this.map.values())}},{key:"iterator",value:function(){return new ro(this.map)}},{key:o,value:function(){return this.map}}]),c}(pr,Symbol.iterator),ro=function(){function v(o){w(this,v),this.iterator=o.values();var l=this.iterator.next(),c=l.done,g=l.value;this.done=c,this.value=g}return A(v,[{key:"next",value:function(){if(this.done)throw new $r;var o=this.value,l=this.iterator.next(),c=l.done,g=l.value;return this.done=c,this.value=g,o}},{key:"hasNext",value:function(){return!this.done}},{key:"remove",value:function(){throw new Ti}}]),v}(),ct=function(){function v(){w(this,v)}return A(v,null,[{key:"opposite",value:function(o){return o===v.LEFT?v.RIGHT:o===v.RIGHT?v.LEFT:o}}]),v}();ct.ON=0,ct.LEFT=1,ct.RIGHT=2;var ds=function(v){O(l,v);var o=ye(l);function l(c){var g;return w(this,l),(g=o.call(this,c)).name=Object.keys({EmptyStackException:l})[0],g}return l}(Et),Do=function(v){O(l,v);var o=ye(l);function l(c){var g;return w(this,l),(g=o.call(this,c)).name=Object.keys({IndexOutOfBoundsException:l})[0],g}return l}(Et),Dr=function(v){O(l,v);var o=ye(l);function l(){return w(this,l),o.apply(this,arguments)}return A(l,[{key:"get",value:function(){}},{key:"set",value:function(){}},{key:"isEmpty",value:function(){}}]),l}(rn),xo=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),(c=o.call(this)).array=[],c}return A(l,[{key:"add",value:function(c){return this.array.push(c),!0}},{key:"get",value:function(c){if(c<0||c>=this.size())throw new Do;return this.array[c]}},{key:"push",value:function(c){return this.array.push(c),c}},{key:"pop",value:function(){if(this.array.length===0)throw new ds;return this.array.pop()}},{key:"peek",value:function(){if(this.array.length===0)throw new ds;return this.array[this.array.length-1]}},{key:"empty",value:function(){return this.array.length===0}},{key:"isEmpty",value:function(){return this.empty()}},{key:"search",value:function(c){return this.array.indexOf(c)}},{key:"size",value:function(){return this.array.length}},{key:"toArray",value:function(){return this.array.slice()}}]),l}(Dr);function ii(v,o){return v.interfaces_&&v.interfaces_.indexOf(o)>-1}var bo=function(){function v(o){w(this,v),this.str=o}return A(v,[{key:"append",value:function(o){this.str+=o}},{key:"setCharAt",value:function(o,l){this.str=this.str.substr(0,o)+l+this.str.substr(o+1)}},{key:"toString",value:function(){return this.str}}]),v}(),Oo=function(){function v(o){w(this,v),this.value=o}return A(v,[{key:"intValue",value:function(){return this.value}},{key:"compareTo",value:function(o){return this.value<o?-1:this.value>o?1:0}}],[{key:"compare",value:function(o,l){return o<l?-1:o>l?1:0}},{key:"isNan",value:function(o){return Number.isNaN(o)}},{key:"valueOf",value:function(o){return new v(o)}}]),v}(),tr=function(){function v(){w(this,v)}return A(v,null,[{key:"isWhitespace",value:function(o){return o<=32&&o>=0||o===127}},{key:"toUpperCase",value:function(o){return o.toUpperCase()}}]),v}(),$t=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"le",value:function(o){return this._hi<o._hi||this._hi===o._hi&&this._lo<=o._lo}},{key:"extractSignificantDigits",value:function(o,l){var c=this.abs(),g=v.magnitude(c._hi),S=v.TEN.pow(g);(c=c.divide(S)).gt(v.TEN)?(c=c.divide(v.TEN),g+=1):c.lt(v.ONE)&&(c=c.multiply(v.TEN),g-=1);for(var R=g+1,F=new bo,q=v.MAX_PRINT_DIGITS-1,Q=0;Q<=q;Q++){o&&Q===R&&F.append(".");var Ee=Math.trunc(c._hi);if(Ee<0)break;var Me=!1,Xe=0;Ee>9?(Me=!0,Xe="9"):Xe="0"+Ee,F.append(Xe),c=c.subtract(v.valueOf(Ee)).multiply(v.TEN),Me&&c.selfAdd(v.TEN);var pt=!0,dt=v.magnitude(c._hi);if(dt<0&&Math.abs(dt)>=q-Q&&(pt=!1),!pt)break}return l[0]=g,F.toString()}},{key:"sqr",value:function(){return this.multiply(this)}},{key:"doubleValue",value:function(){return this._hi+this._lo}},{key:"subtract",value:function(){if(arguments[0]instanceof v){var o=arguments[0];return this.add(o.negate())}if(typeof arguments[0]=="number"){var l=arguments[0];return this.add(-l)}}},{key:"equals",value:function(){if(arguments.length===1&&arguments[0]instanceof v){var o=arguments[0];return this._hi===o._hi&&this._lo===o._lo}}},{key:"isZero",value:function(){return this._hi===0&&this._lo===0}},{key:"selfSubtract",value:function(){if(arguments[0]instanceof v){var o=arguments[0];return this.isNaN()?this:this.selfAdd(-o._hi,-o._lo)}if(typeof arguments[0]=="number"){var l=arguments[0];return this.isNaN()?this:this.selfAdd(-l,0)}}},{key:"getSpecialNumberString",value:function(){return this.isZero()?"0.0":this.isNaN()?"NaN ":null}},{key:"min",value:function(o){return this.le(o)?this:o}},{key:"selfDivide",value:function(){if(arguments.length===1){if(arguments[0]instanceof v){var o=arguments[0];return this.selfDivide(o._hi,o._lo)}if(typeof arguments[0]=="number"){var l=arguments[0];return this.selfDivide(l,0)}}else if(arguments.length===2){var c=arguments[0],g=arguments[1],S=null,R=null,F=null,q=null,Q=null,Ee=null,Me=null,Xe=null;return Q=this._hi/c,Xe=(S=(Ee=v.SPLIT*Q)-(S=Ee-Q))*(F=(Xe=v.SPLIT*c)-(F=Xe-c))-(Me=Q*c)+S*(q=c-F)+(R=Q-S)*F+R*q,Xe=Q+(Ee=(this._hi-Me-Xe+this._lo-Q*g)/c),this._hi=Xe,this._lo=Q-Xe+Ee,this}}},{key:"dump",value:function(){return"DD<"+this._hi+", "+this._lo+">"}},{key:"divide",value:function(){if(arguments[0]instanceof v){var o=arguments[0],l=null,c=null,g=null,S=null,R=null,F=null,q=null,Q=null;c=(R=this._hi/o._hi)-(l=(F=v.SPLIT*R)-(l=F-R)),Q=l*(g=(Q=v.SPLIT*o._hi)-(g=Q-o._hi))-(q=R*o._hi)+l*(S=o._hi-g)+c*g+c*S;var Ee=Q=R+(F=(this._hi-q-Q+this._lo-R*o._lo)/o._hi),Me=R-Q+F;return new v(Ee,Me)}if(typeof arguments[0]=="number"){var Xe=arguments[0];return St.isNaN(Xe)?v.createNaN():v.copy(this).selfDivide(Xe,0)}}},{key:"ge",value:function(o){return this._hi>o._hi||this._hi===o._hi&&this._lo>=o._lo}},{key:"pow",value:function(o){if(o===0)return v.valueOf(1);var l=new v(this),c=v.valueOf(1),g=Math.abs(o);if(g>1)for(;g>0;)g%2==1&&c.selfMultiply(l),(g/=2)>0&&(l=l.sqr());else c=l;return o<0?c.reciprocal():c}},{key:"ceil",value:function(){if(this.isNaN())return v.NaN;var o=Math.ceil(this._hi),l=0;return o===this._hi&&(l=Math.ceil(this._lo)),new v(o,l)}},{key:"compareTo",value:function(o){var l=o;return this._hi<l._hi?-1:this._hi>l._hi?1:this._lo<l._lo?-1:this._lo>l._lo?1:0}},{key:"rint",value:function(){return this.isNaN()?this:this.add(.5).floor()}},{key:"setValue",value:function(){if(arguments[0]instanceof v){var o=arguments[0];return this.init(o),this}if(typeof arguments[0]=="number"){var l=arguments[0];return this.init(l),this}}},{key:"max",value:function(o){return this.ge(o)?this:o}},{key:"sqrt",value:function(){if(this.isZero())return v.valueOf(0);if(this.isNegative())return v.NaN;var o=1/Math.sqrt(this._hi),l=this._hi*o,c=v.valueOf(l),g=this.subtract(c.sqr())._hi*(.5*o);return c.add(g)}},{key:"selfAdd",value:function(){if(arguments.length===1){if(arguments[0]instanceof v){var o=arguments[0];return this.selfAdd(o._hi,o._lo)}if(typeof arguments[0]=="number"){var l=arguments[0],c=null,g=null,S=null,R=null,F=null,q=null;return R=(S=this._hi+l)-(F=S-this._hi),g=(q=(R=l-F+(this._hi-R))+this._lo)+(S-(c=S+q)),this._hi=c+g,this._lo=g+(c-this._hi),this}}else if(arguments.length===2){var Q=arguments[0],Ee=arguments[1],Me=null,Xe=null,pt=null,dt=null,Vt=null,Ut=null,ei=null;dt=this._hi+Q,Xe=this._lo+Ee,Vt=dt-(Ut=dt-this._hi),pt=Xe-(ei=Xe-this._lo);var yi=(Me=dt+(Ut=(Vt=Q-Ut+(this._hi-Vt))+Xe))+(Ut=(pt=Ee-ei+(this._lo-pt))+(Ut+(dt-Me))),Xi=Ut+(Me-yi);return this._hi=yi,this._lo=Xi,this}}},{key:"selfMultiply",value:function(){if(arguments.length===1){if(arguments[0]instanceof v){var o=arguments[0];return this.selfMultiply(o._hi,o._lo)}if(typeof arguments[0]=="number"){var l=arguments[0];return this.selfMultiply(l,0)}}else if(arguments.length===2){var c=arguments[0],g=arguments[1],S=null,R=null,F=null,q=null,Q=null,Ee=null;S=(Q=v.SPLIT*this._hi)-this._hi,Ee=v.SPLIT*c,S=Q-S,R=this._hi-S,F=Ee-c;var Me=(Q=this._hi*c)+(Ee=S*(F=Ee-F)-Q+S*(q=c-F)+R*F+R*q+(this._hi*g+this._lo*c)),Xe=Ee+(S=Q-Me);return this._hi=Me,this._lo=Xe,this}}},{key:"selfSqr",value:function(){return this.selfMultiply(this)}},{key:"floor",value:function(){if(this.isNaN())return v.NaN;var o=Math.floor(this._hi),l=0;return o===this._hi&&(l=Math.floor(this._lo)),new v(o,l)}},{key:"negate",value:function(){return this.isNaN()?this:new v(-this._hi,-this._lo)}},{key:"clone",value:function(){try{return null}catch(o){if(o instanceof CloneNotSupportedException)return null;throw o}}},{key:"multiply",value:function(){if(arguments[0]instanceof v){var o=arguments[0];return o.isNaN()?v.createNaN():v.copy(this).selfMultiply(o)}if(typeof arguments[0]=="number"){var l=arguments[0];return St.isNaN(l)?v.createNaN():v.copy(this).selfMultiply(l,0)}}},{key:"isNaN",value:function(){return St.isNaN(this._hi)}},{key:"intValue",value:function(){return Math.trunc(this._hi)}},{key:"toString",value:function(){var o=v.magnitude(this._hi);return o>=-3&&o<=20?this.toStandardNotation():this.toSciNotation()}},{key:"toStandardNotation",value:function(){var o=this.getSpecialNumberString();if(o!==null)return o;var l=new Array(1).fill(null),c=this.extractSignificantDigits(!0,l),g=l[0]+1,S=c;if(c.charAt(0)===".")S="0"+c;else if(g<0)S="0."+v.stringOfChar("0",-g)+c;else if(c.indexOf(".")===-1){var R=g-c.length;S=c+v.stringOfChar("0",R)+".0"}return this.isNegative()?"-"+S:S}},{key:"reciprocal",value:function(){var o,l,c,g,S=null,R=null,F=null,q=null;o=(c=1/this._hi)-(S=(F=v.SPLIT*c)-(S=F-c)),R=(q=v.SPLIT*this._hi)-this._hi;var Q=c+(F=(1-(g=c*this._hi)-(q=S*(R=q-R)-g+S*(l=this._hi-R)+o*R+o*l)-c*this._lo)/this._hi);return new v(Q,c-Q+F)}},{key:"toSciNotation",value:function(){if(this.isZero())return v.SCI_NOT_ZERO;var o=this.getSpecialNumberString();if(o!==null)return o;var l=new Array(1).fill(null),c=this.extractSignificantDigits(!1,l),g=v.SCI_NOT_EXPONENT_CHAR+l[0];if(c.charAt(0)==="0")throw new IllegalStateException("Found leading zero: "+c);var S="";c.length>1&&(S=c.substring(1));var R=c.charAt(0)+"."+S;return this.isNegative()?"-"+R+g:R+g}},{key:"abs",value:function(){return this.isNaN()?v.NaN:this.isNegative()?this.negate():new v(this)}},{key:"isPositive",value:function(){return this._hi>0||this._hi===0&&this._lo>0}},{key:"lt",value:function(o){return this._hi<o._hi||this._hi===o._hi&&this._lo<o._lo}},{key:"add",value:function(){if(arguments[0]instanceof v){var o=arguments[0];return v.copy(this).selfAdd(o)}if(typeof arguments[0]=="number"){var l=arguments[0];return v.copy(this).selfAdd(l)}}},{key:"init",value:function(){if(arguments.length===1){if(typeof arguments[0]=="number"){var o=arguments[0];this._hi=o,this._lo=0}else if(arguments[0]instanceof v){var l=arguments[0];this._hi=l._hi,this._lo=l._lo}}else if(arguments.length===2){var c=arguments[0],g=arguments[1];this._hi=c,this._lo=g}}},{key:"gt",value:function(o){return this._hi>o._hi||this._hi===o._hi&&this._lo>o._lo}},{key:"isNegative",value:function(){return this._hi<0||this._hi===0&&this._lo<0}},{key:"trunc",value:function(){return this.isNaN()?v.NaN:this.isPositive()?this.floor():this.ceil()}},{key:"signum",value:function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0}},{key:"interfaces_",get:function(){return[Oe,_t,It]}}],[{key:"constructor_",value:function(){if(this._hi=0,this._lo=0,arguments.length===0)this.init(0);else if(arguments.length===1){if(typeof arguments[0]=="number"){var o=arguments[0];this.init(o)}else if(arguments[0]instanceof v){var l=arguments[0];this.init(l)}else if(typeof arguments[0]=="string"){var c=arguments[0];v.constructor_.call(this,v.parse(c))}}else if(arguments.length===2){var g=arguments[0],S=arguments[1];this.init(g,S)}}},{key:"determinant",value:function(){if(typeof arguments[3]=="number"&&typeof arguments[2]=="number"&&typeof arguments[0]=="number"&&typeof arguments[1]=="number"){var o=arguments[0],l=arguments[1],c=arguments[2],g=arguments[3];return v.determinant(v.valueOf(o),v.valueOf(l),v.valueOf(c),v.valueOf(g))}if(arguments[3]instanceof v&&arguments[2]instanceof v&&arguments[0]instanceof v&&arguments[1]instanceof v){var S=arguments[0],R=arguments[1],F=arguments[2],q=arguments[3],Q=S.multiply(q).selfSubtract(R.multiply(F));return Q}}},{key:"sqr",value:function(o){return v.valueOf(o).selfMultiply(o)}},{key:"valueOf",value:function(){if(typeof arguments[0]=="string"){var o=arguments[0];return v.parse(o)}if(typeof arguments[0]=="number"){var l=arguments[0];return new v(l)}}},{key:"sqrt",value:function(o){return v.valueOf(o).sqrt()}},{key:"parse",value:function(o){for(var l=0,c=o.length;tr.isWhitespace(o.charAt(l));)l++;var g=!1;if(l<c){var S=o.charAt(l);S!=="-"&&S!=="+"||(l++,S==="-"&&(g=!0))}for(var R=new v,F=0,q=0,Q=0,Ee=!1;!(l>=c);){var Me=o.charAt(l);if(l++,tr.isDigit(Me)){var Xe=Me-"0";R.selfMultiply(v.TEN),R.selfAdd(Xe),F++}else{if(Me!=="."){if(Me==="e"||Me==="E"){var pt=o.substring(l);try{Q=Oo.parseInt(pt)}catch(yi){throw yi instanceof NumberFormatException?new NumberFormatException("Invalid exponent "+pt+" in string "+o):yi}break}throw new NumberFormatException("Unexpected character '"+Me+"' at position "+l+" in string "+o)}q=F,Ee=!0}}var dt=R;Ee||(q=F);var Vt=F-q-Q;if(Vt===0)dt=R;else if(Vt>0){var Ut=v.TEN.pow(Vt);dt=R.divide(Ut)}else if(Vt<0){var ei=v.TEN.pow(-Vt);dt=R.multiply(ei)}return g?dt.negate():dt}},{key:"createNaN",value:function(){return new v(St.NaN,St.NaN)}},{key:"copy",value:function(o){return new v(o)}},{key:"magnitude",value:function(o){var l=Math.abs(o),c=Math.log(l)/Math.log(10),g=Math.trunc(Math.floor(c));return 10*Math.pow(10,g)<=l&&(g+=1),g}},{key:"stringOfChar",value:function(o,l){for(var c=new bo,g=0;g<l;g++)c.append(o);return c.toString()}}]),v}();$t.PI=new $t(3.141592653589793,12246467991473532e-32),$t.TWO_PI=new $t(6.283185307179586,24492935982947064e-32),$t.PI_2=new $t(1.5707963267948966,6123233995736766e-32),$t.E=new $t(2.718281828459045,14456468917292502e-32),$t.NaN=new $t(St.NaN,St.NaN),$t.EPS=123259516440783e-46,$t.SPLIT=134217729,$t.MAX_PRINT_DIGITS=32,$t.TEN=$t.valueOf(10),$t.ONE=$t.valueOf(1),$t.SCI_NOT_EXPONENT_CHAR="E",$t.SCI_NOT_ZERO="0.0E0";var zo=function(){function v(){w(this,v)}return A(v,null,[{key:"orientationIndex",value:function(o,l,c){var g=v.orientationIndexFilter(o,l,c);if(g<=1)return g;var S=$t.valueOf(l.x).selfAdd(-o.x),R=$t.valueOf(l.y).selfAdd(-o.y),F=$t.valueOf(c.x).selfAdd(-l.x),q=$t.valueOf(c.y).selfAdd(-l.y);return S.selfMultiply(q).selfSubtract(R.selfMultiply(F)).signum()}},{key:"signOfDet2x2",value:function(){if(arguments[3]instanceof $t&&arguments[2]instanceof $t&&arguments[0]instanceof $t&&arguments[1]instanceof $t){var o=arguments[0],l=arguments[1],c=arguments[2],g=arguments[3],S=o.multiply(g).selfSubtract(l.multiply(c));return S.signum()}if(typeof arguments[3]=="number"&&typeof arguments[2]=="number"&&typeof arguments[0]=="number"&&typeof arguments[1]=="number"){var R=arguments[0],F=arguments[1],q=arguments[2],Q=arguments[3],Ee=$t.valueOf(R),Me=$t.valueOf(F),Xe=$t.valueOf(q),pt=$t.valueOf(Q),dt=Ee.multiply(pt).selfSubtract(Me.multiply(Xe));return dt.signum()}}},{key:"intersection",value:function(o,l,c,g){var S=new $t(o.y).selfSubtract(l.y),R=new $t(l.x).selfSubtract(o.x),F=new $t(o.x).selfMultiply(l.y).selfSubtract(new $t(l.x).selfMultiply(o.y)),q=new $t(c.y).selfSubtract(g.y),Q=new $t(g.x).selfSubtract(c.x),Ee=new $t(c.x).selfMultiply(g.y).selfSubtract(new $t(g.x).selfMultiply(c.y)),Me=R.multiply(Ee).selfSubtract(Q.multiply(F)),Xe=q.multiply(F).selfSubtract(S.multiply(Ee)),pt=S.multiply(Q).selfSubtract(q.multiply(R)),dt=Me.selfDivide(pt).doubleValue(),Vt=Xe.selfDivide(pt).doubleValue();return St.isNaN(dt)||St.isInfinite(dt)||St.isNaN(Vt)||St.isInfinite(Vt)?null:new Fe(dt,Vt)}},{key:"orientationIndexFilter",value:function(o,l,c){var g=null,S=(o.x-c.x)*(l.y-c.y),R=(o.y-c.y)*(l.x-c.x),F=S-R;if(S>0){if(R<=0)return v.signum(F);g=S+R}else{if(!(S<0)||R>=0)return v.signum(F);g=-S-R}var q=v.DP_SAFE_EPSILON*g;return F>=q||-F>=q?v.signum(F):2}},{key:"signum",value:function(o){return o>0?1:o<0?-1:0}}]),v}();zo.DP_SAFE_EPSILON=1e-15;var _i=function(){function v(){w(this,v)}return A(v,[{key:"getM",value:function(o){if(this.hasM()){var l=this.getDimension()-this.getMeasures();return this.getOrdinate(o,l)}return St.NaN}},{key:"setOrdinate",value:function(o,l,c){}},{key:"getZ",value:function(o){return this.hasZ()?this.getOrdinate(o,2):St.NaN}},{key:"size",value:function(){}},{key:"getOrdinate",value:function(o,l){}},{key:"getCoordinate",value:function(){}},{key:"getCoordinateCopy",value:function(o){}},{key:"createCoordinate",value:function(){}},{key:"getDimension",value:function(){}},{key:"hasM",value:function(){return this.getMeasures()>0}},{key:"getX",value:function(o){}},{key:"hasZ",value:function(){return this.getDimension()-this.getMeasures()>2}},{key:"getMeasures",value:function(){return 0}},{key:"expandEnvelope",value:function(o){}},{key:"copy",value:function(){}},{key:"getY",value:function(o){}},{key:"toCoordinateArray",value:function(){}},{key:"interfaces_",get:function(){return[It]}}]),v}();_i.X=0,_i.Y=1,_i.Z=2,_i.M=3;var Yt=function(){function v(){w(this,v)}return A(v,null,[{key:"index",value:function(o,l,c){return zo.orientationIndex(o,l,c)}},{key:"isCCW",value:function(){if(arguments[0]instanceof Array){var o=arguments[0],l=o.length-1;if(l<3)throw new ut("Ring has fewer than 4 points, so orientation cannot be determined");for(var c=o[0],g=0,S=1;S<=l;S++){var R=o[S];R.y>c.y&&(c=R,g=S)}var F=g;do(F-=1)<0&&(F=l);while(o[F].equals2D(c)&&F!==g);var q=g;do q=(q+1)%l;while(o[q].equals2D(c)&&q!==g);var Q=o[F],Ee=o[q];if(Q.equals2D(c)||Ee.equals2D(c)||Q.equals2D(Ee))return!1;var Me=v.index(Q,c,Ee),Xe=null;return Xe=Me===0?Q.x>Ee.x:Me>0,Xe}if(ii(arguments[0],_i)){var pt=arguments[0],dt=pt.size()-1;if(dt<3)throw new ut("Ring has fewer than 4 points, so orientation cannot be determined");for(var Vt=pt.getCoordinate(0),Ut=0,ei=1;ei<=dt;ei++){var yi=pt.getCoordinate(ei);yi.y>Vt.y&&(Vt=yi,Ut=ei)}var Xi=null,Fn=Ut;do(Fn-=1)<0&&(Fn=dt),Xi=pt.getCoordinate(Fn);while(Xi.equals2D(Vt)&&Fn!==Ut);var bn=null,Vn=Ut;do Vn=(Vn+1)%dt,bn=pt.getCoordinate(Vn);while(bn.equals2D(Vt)&&Vn!==Ut);if(Xi.equals2D(Vt)||bn.equals2D(Vt)||Xi.equals2D(bn))return!1;var Ir=v.index(Xi,Vt,bn);return Ir===0?Xi.x>bn.x:Ir>0}}}]),v}();Yt.CLOCKWISE=-1,Yt.RIGHT=Yt.CLOCKWISE,Yt.COUNTERCLOCKWISE=1,Yt.LEFT=Yt.COUNTERCLOCKWISE,Yt.COLLINEAR=0,Yt.STRAIGHT=Yt.COLLINEAR;var zs=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getCoordinate",value:function(){return this._minCoord}},{key:"getRightmostSide",value:function(o,l){var c=this.getRightmostSideOfSegment(o,l);return c<0&&(c=this.getRightmostSideOfSegment(o,l-1)),c<0&&(this._minCoord=null,this.checkForRightmostCoordinate(o)),c}},{key:"findRightmostEdgeAtVertex",value:function(){var o=this._minDe.getEdge().getCoordinates();Dt.isTrue(this._minIndex>0&&this._minIndex<o.length,"rightmost point expected to be interior vertex of edge");var l=o[this._minIndex-1],c=o[this._minIndex+1],g=Yt.index(this._minCoord,c,l),S=!1;(l.y<this._minCoord.y&&c.y<this._minCoord.y&&g===Yt.COUNTERCLOCKWISE||l.y>this._minCoord.y&&c.y>this._minCoord.y&&g===Yt.CLOCKWISE)&&(S=!0),S&&(this._minIndex=this._minIndex-1)}},{key:"getRightmostSideOfSegment",value:function(o,l){var c=o.getEdge().getCoordinates();if(l<0||l+1>=c.length||c[l].y===c[l+1].y)return-1;var g=ct.LEFT;return c[l].y<c[l+1].y&&(g=ct.RIGHT),g}},{key:"getEdge",value:function(){return this._orientedDe}},{key:"checkForRightmostCoordinate",value:function(o){for(var l=o.getEdge().getCoordinates(),c=0;c<l.length-1;c++)(this._minCoord===null||l[c].x>this._minCoord.x)&&(this._minDe=o,this._minIndex=c,this._minCoord=l[c])}},{key:"findRightmostEdgeAtNode",value:function(){var o=this._minDe.getNode().getEdges();this._minDe=o.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)}},{key:"findEdge",value:function(o){for(var l=o.iterator();l.hasNext();){var c=l.next();c.isForward()&&this.checkForRightmostCoordinate(c)}Dt.isTrue(this._minIndex!==0||this._minCoord.equals(this._minDe.getCoordinate()),"inconsistency in rightmost processing"),this._minIndex===0?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe,this.getRightmostSide(this._minDe,this._minIndex)===ct.LEFT&&(this._orientedDe=this._minDe.getSym())}}],[{key:"constructor_",value:function(){this._minIndex=-1,this._minCoord=null,this._minDe=null,this._orientedDe=null}}]),v}(),Wn=function(v){O(l,v);var o=ye(l);function l(c,g){var S;return w(this,l),(S=o.call(this,g?c+" [ "+g+" ]":c)).pt=g?new Fe(g):void 0,S.name=Object.keys({TopologyException:l})[0],S}return A(l,[{key:"getCoordinate",value:function(){return this.pt}}]),l}(Oi),wo=function(){function v(){w(this,v),this.array=[]}return A(v,[{key:"addLast",value:function(o){this.array.push(o)}},{key:"removeFirst",value:function(){return this.array.shift()}},{key:"isEmpty",value:function(){return this.array.length===0}}]),v}(),qt=function(v,o){O(c,v);var l=ye(c);function c(g){var S;return w(this,c),(S=l.call(this)).array=[],g instanceof rn&&S.addAll(g),S}return A(c,[{key:"interfaces_",get:function(){return[Dr,rn]}},{key:"ensureCapacity",value:function(){}},{key:"add",value:function(g){return arguments.length===1?this.array.push(g):this.array.splice(arguments[0],0,arguments[1]),!0}},{key:"clear",value:function(){this.array=[]}},{key:"addAll",value:function(g){var S,R=Le(g);try{for(R.s();!(S=R.n()).done;){var F=S.value;this.array.push(F)}}catch(q){R.e(q)}finally{R.f()}}},{key:"set",value:function(g,S){var R=this.array[g];return this.array[g]=S,R}},{key:"iterator",value:function(){return new No(this)}},{key:"get",value:function(g){if(g<0||g>=this.size())throw new Do;return this.array[g]}},{key:"isEmpty",value:function(){return this.array.length===0}},{key:"sort",value:function(g){g?this.array.sort(function(S,R){return g.compare(S,R)}):this.array.sort()}},{key:"size",value:function(){return this.array.length}},{key:"toArray",value:function(){return this.array.slice()}},{key:"remove",value:function(g){for(var S=0,R=this.array.length;S<R;S++)if(this.array[S]===g)return!!this.array.splice(S,1);return!1}},{key:o,value:function(){return this.array.values()}}]),c}(Dr,Symbol.iterator),No=function(){function v(o){w(this,v),this.arrayList=o,this.position=0}return A(v,[{key:"next",value:function(){if(this.position===this.arrayList.size())throw new $r;return this.arrayList.get(this.position++)}},{key:"hasNext",value:function(){return this.position<this.arrayList.size()}},{key:"set",value:function(o){return this.arrayList.set(this.position-1,o)}},{key:"remove",value:function(){this.arrayList.remove(this.arrayList.get(this.position))}}]),v}(),ms=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"clearVisitedEdges",value:function(){for(var o=this._dirEdgeList.iterator();o.hasNext();)o.next().setVisited(!1)}},{key:"getRightmostCoordinate",value:function(){return this._rightMostCoord}},{key:"computeNodeDepth",value:function(o){for(var l=null,c=o.getEdges().iterator();c.hasNext();){var g=c.next();if(g.isVisited()||g.getSym().isVisited()){l=g;break}}if(l===null)throw new Wn("unable to find edge to compute depths at "+o.getCoordinate());o.getEdges().computeDepths(l);for(var S=o.getEdges().iterator();S.hasNext();){var R=S.next();R.setVisited(!0),this.copySymDepths(R)}}},{key:"computeDepth",value:function(o){this.clearVisitedEdges();var l=this._finder.getEdge();l.getNode(),l.getLabel(),l.setEdgeDepths(ct.RIGHT,o),this.copySymDepths(l),this.computeDepths(l)}},{key:"create",value:function(o){this.addReachable(o),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()}},{key:"findResultEdges",value:function(){for(var o=this._dirEdgeList.iterator();o.hasNext();){var l=o.next();l.getDepth(ct.RIGHT)>=1&&l.getDepth(ct.LEFT)<=0&&!l.isInteriorAreaEdge()&&l.setInResult(!0)}}},{key:"computeDepths",value:function(o){var l=new ps,c=new wo,g=o.getNode();for(c.addLast(g),l.add(g),o.setVisited(!0);!c.isEmpty();){var S=c.removeFirst();l.add(S),this.computeNodeDepth(S);for(var R=S.getEdges().iterator();R.hasNext();){var F=R.next().getSym();if(!F.isVisited()){var q=F.getNode();l.contains(q)||(c.addLast(q),l.add(q))}}}}},{key:"compareTo",value:function(o){var l=o;return this._rightMostCoord.x<l._rightMostCoord.x?-1:this._rightMostCoord.x>l._rightMostCoord.x?1:0}},{key:"getEnvelope",value:function(){if(this._env===null){for(var o=new Ci,l=this._dirEdgeList.iterator();l.hasNext();)for(var c=l.next().getEdge().getCoordinates(),g=0;g<c.length-1;g++)o.expandToInclude(c[g]);this._env=o}return this._env}},{key:"addReachable",value:function(o){var l=new xo;for(l.add(o);!l.empty();){var c=l.pop();this.add(c,l)}}},{key:"copySymDepths",value:function(o){var l=o.getSym();l.setDepth(ct.LEFT,o.getDepth(ct.RIGHT)),l.setDepth(ct.RIGHT,o.getDepth(ct.LEFT))}},{key:"add",value:function(o,l){o.setVisited(!0),this._nodes.add(o);for(var c=o.getEdges().iterator();c.hasNext();){var g=c.next();this._dirEdgeList.add(g);var S=g.getSym().getNode();S.isVisited()||l.push(S)}}},{key:"getNodes",value:function(){return this._nodes}},{key:"getDirectedEdges",value:function(){return this._dirEdgeList}},{key:"interfaces_",get:function(){return[_t]}}],[{key:"constructor_",value:function(){this._finder=null,this._dirEdgeList=new qt,this._nodes=new qt,this._rightMostCoord=null,this._env=null,this._finder=new zs}}]),v}(),gs=function(){function v(){w(this,v)}return A(v,null,[{key:"intersection",value:function(o,l,c,g){var S=o.x<l.x?o.x:l.x,R=o.y<l.y?o.y:l.y,F=o.x>l.x?o.x:l.x,q=o.y>l.y?o.y:l.y,Q=c.x<g.x?c.x:g.x,Ee=c.y<g.y?c.y:g.y,Me=c.x>g.x?c.x:g.x,Xe=c.y>g.y?c.y:g.y,pt=((S>Q?S:Q)+(F<Me?F:Me))/2,dt=((R>Ee?R:Ee)+(q<Xe?q:Xe))/2,Vt=o.x-pt,Ut=o.y-dt,ei=l.x-pt,yi=l.y-dt,Xi=c.x-pt,Fn=c.y-dt,bn=g.x-pt,Vn=g.y-dt,Ir=Ut-yi,Hr=ei-Vt,vi=Vt*yi-ei*Ut,uo=Fn-Vn,Xo=bn-Xi,Ks=Xi*Vn-bn*Fn,Wo=Ir*Xo-uo*Hr,Oa=(Hr*Ks-Xo*vi)/Wo,ws=(uo*vi-Ir*Ks)/Wo;return St.isNaN(Oa)||St.isInfinite(Oa)||St.isNaN(ws)||St.isInfinite(ws)?null:new Fe(Oa+pt,ws+dt)}}]),v}(),ce=function(){function v(){w(this,v)}return A(v,null,[{key:"arraycopy",value:function(o,l,c,g,S){for(var R=0,F=l;F<l+S;F++)c[g+R]=o[F],R++}},{key:"getProperty",value:function(o){return{"line.separator":`
`}[o]}}]),v}(),X=function(){function v(){w(this,v)}return A(v,null,[{key:"log10",value:function(o){var l=Math.log(o);return St.isInfinite(l)||St.isNaN(l)?l:l/v.LOG_10}},{key:"min",value:function(o,l,c,g){var S=o;return l<S&&(S=l),c<S&&(S=c),g<S&&(S=g),S}},{key:"clamp",value:function(){if(typeof arguments[2]=="number"&&typeof arguments[0]=="number"&&typeof arguments[1]=="number"){var o=arguments[0],l=arguments[1],c=arguments[2];return o<l?l:o>c?c:o}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var g=arguments[0],S=arguments[1],R=arguments[2];return g<S?S:g>R?R:g}}},{key:"wrap",value:function(o,l){return o<0?l- -o%l:o%l}},{key:"max",value:function(){if(arguments.length===3){var o=arguments[0],l=arguments[1],c=arguments[2],g=o;return l>g&&(g=l),c>g&&(g=c),g}if(arguments.length===4){var S=arguments[0],R=arguments[1],F=arguments[2],q=arguments[3],Q=S;return R>Q&&(Q=R),F>Q&&(Q=F),q>Q&&(Q=q),Q}}},{key:"average",value:function(o,l){return(o+l)/2}}]),v}();X.LOG_10=Math.log(10);var W=function(){function v(){w(this,v)}return A(v,null,[{key:"segmentToSegment",value:function(o,l,c,g){if(o.equals(l))return v.pointToSegment(o,c,g);if(c.equals(g))return v.pointToSegment(g,o,l);var S=!1;if(Ci.intersects(o,l,c,g)){var R=(l.x-o.x)*(g.y-c.y)-(l.y-o.y)*(g.x-c.x);if(R===0)S=!0;else{var F=(o.y-c.y)*(g.x-c.x)-(o.x-c.x)*(g.y-c.y),q=((o.y-c.y)*(l.x-o.x)-(o.x-c.x)*(l.y-o.y))/R,Q=F/R;(Q<0||Q>1||q<0||q>1)&&(S=!0)}}else S=!0;return S?X.min(v.pointToSegment(o,c,g),v.pointToSegment(l,c,g),v.pointToSegment(c,o,l),v.pointToSegment(g,o,l)):0}},{key:"pointToSegment",value:function(o,l,c){if(l.x===c.x&&l.y===c.y)return o.distance(l);var g=(c.x-l.x)*(c.x-l.x)+(c.y-l.y)*(c.y-l.y),S=((o.x-l.x)*(c.x-l.x)+(o.y-l.y)*(c.y-l.y))/g;if(S<=0)return o.distance(l);if(S>=1)return o.distance(c);var R=((l.y-o.y)*(c.x-l.x)-(l.x-o.x)*(c.y-l.y))/g;return Math.abs(R)*Math.sqrt(g)}},{key:"pointToLinePerpendicular",value:function(o,l,c){var g=(c.x-l.x)*(c.x-l.x)+(c.y-l.y)*(c.y-l.y),S=((l.y-o.y)*(c.x-l.x)-(l.x-o.x)*(c.y-l.y))/g;return Math.abs(S)*Math.sqrt(g)}},{key:"pointToSegmentString",value:function(o,l){if(l.length===0)throw new ut("Line array must contain at least one vertex");for(var c=o.distance(l[0]),g=0;g<l.length-1;g++){var S=v.pointToSegment(o,l[g],l[g+1]);S<c&&(c=S)}return c}}]),v}(),ue=function(){function v(){w(this,v)}return A(v,[{key:"create",value:function(){if(arguments.length===1)arguments[0]instanceof Array||ii(arguments[0],_i);else if(arguments.length!==2){if(arguments.length===3){var o=arguments[0],l=arguments[1];return this.create(o,l)}}}}]),v}(),_e=function(){function v(){w(this,v)}return A(v,[{key:"filter",value:function(o){}}]),v}(),Se=function(){function v(){w(this,v)}return A(v,null,[{key:"ofLine",value:function(o){var l=o.size();if(l<=1)return 0;var c=0,g=new Fe;o.getCoordinate(0,g);for(var S=g.x,R=g.y,F=1;F<l;F++){o.getCoordinate(F,g);var q=g.x,Q=g.y,Ee=q-S,Me=Q-R;c+=Math.sqrt(Ee*Ee+Me*Me),S=q,R=Q}return c}}]),v}(),Pe=function v(){w(this,v)},Ce=function(){function v(){w(this,v)}return A(v,null,[{key:"copyCoord",value:function(o,l,c,g){for(var S=Math.min(o.getDimension(),c.getDimension()),R=0;R<S;R++)c.setOrdinate(g,R,o.getOrdinate(l,R))}},{key:"isRing",value:function(o){var l=o.size();return l===0||!(l<=3)&&o.getOrdinate(0,_i.X)===o.getOrdinate(l-1,_i.X)&&o.getOrdinate(0,_i.Y)===o.getOrdinate(l-1,_i.Y)}},{key:"scroll",value:function(){if(arguments.length===2){if(ii(arguments[0],_i)&&Number.isInteger(arguments[1])){var o=arguments[0],l=arguments[1];v.scroll(o,l,v.isRing(o))}else if(ii(arguments[0],_i)&&arguments[1]instanceof Fe){var c=arguments[0],g=arguments[1],S=v.indexOf(g,c);if(S<=0)return null;v.scroll(c,S)}}else if(arguments.length===3){var R=arguments[0],F=arguments[1],q=arguments[2],Q=F;if(Q<=0)return null;for(var Ee=R.copy(),Me=q?R.size()-1:R.size(),Xe=0;Xe<Me;Xe++)for(var pt=0;pt<R.getDimension();pt++)R.setOrdinate(Xe,pt,Ee.getOrdinate((F+Xe)%Me,pt));if(q)for(var dt=0;dt<R.getDimension();dt++)R.setOrdinate(Me,dt,R.getOrdinate(0,dt))}}},{key:"isEqual",value:function(o,l){var c=o.size();if(c!==l.size())return!1;for(var g=Math.min(o.getDimension(),l.getDimension()),S=0;S<c;S++)for(var R=0;R<g;R++){var F=o.getOrdinate(S,R),q=l.getOrdinate(S,R);if(o.getOrdinate(S,R)!==l.getOrdinate(S,R)&&(!St.isNaN(F)||!St.isNaN(q)))return!1}return!0}},{key:"minCoordinateIndex",value:function(){if(arguments.length===1){var o=arguments[0];return v.minCoordinateIndex(o,0,o.size()-1)}if(arguments.length===3){for(var l=arguments[0],c=arguments[1],g=arguments[2],S=-1,R=null,F=c;F<=g;F++){var q=l.getCoordinate(F);(R===null||R.compareTo(q)>0)&&(R=q,S=F)}return S}}},{key:"extend",value:function(o,l,c){var g=o.create(c,l.getDimension()),S=l.size();if(v.copy(l,0,g,0,S),S>0)for(var R=S;R<c;R++)v.copy(l,S-1,g,R,1);return g}},{key:"reverse",value:function(o){for(var l=o.size()-1,c=Math.trunc(l/2),g=0;g<=c;g++)v.swap(o,g,l-g)}},{key:"swap",value:function(o,l,c){if(l===c)return null;for(var g=0;g<o.getDimension();g++){var S=o.getOrdinate(l,g);o.setOrdinate(l,g,o.getOrdinate(c,g)),o.setOrdinate(c,g,S)}}},{key:"copy",value:function(o,l,c,g,S){for(var R=0;R<S;R++)v.copyCoord(o,l+R,c,g+R)}},{key:"ensureValidRing",value:function(o,l){var c=l.size();return c===0?l:c<=3?v.createClosedRing(o,l,4):l.getOrdinate(0,_i.X)===l.getOrdinate(c-1,_i.X)&&l.getOrdinate(0,_i.Y)===l.getOrdinate(c-1,_i.Y)?l:v.createClosedRing(o,l,c+1)}},{key:"indexOf",value:function(o,l){for(var c=0;c<l.size();c++)if(o.x===l.getOrdinate(c,_i.X)&&o.y===l.getOrdinate(c,_i.Y))return c;return-1}},{key:"createClosedRing",value:function(o,l,c){var g=o.create(c,l.getDimension()),S=l.size();v.copy(l,0,g,0,S);for(var R=S;R<c;R++)v.copy(l,0,g,R,1);return g}},{key:"minCoordinate",value:function(o){for(var l=null,c=0;c<o.size();c++){var g=o.getCoordinate(c);(l===null||l.compareTo(g)>0)&&(l=g)}return l}}]),v}(),se=function(){function v(){w(this,v)}return A(v,null,[{key:"toDimensionSymbol",value:function(o){switch(o){case v.FALSE:return v.SYM_FALSE;case v.TRUE:return v.SYM_TRUE;case v.DONTCARE:return v.SYM_DONTCARE;case v.P:return v.SYM_P;case v.L:return v.SYM_L;case v.A:return v.SYM_A}throw new ut("Unknown dimension value: "+o)}},{key:"toDimensionValue",value:function(o){switch(tr.toUpperCase(o)){case v.SYM_FALSE:return v.FALSE;case v.SYM_TRUE:return v.TRUE;case v.SYM_DONTCARE:return v.DONTCARE;case v.SYM_P:return v.P;case v.SYM_L:return v.L;case v.SYM_A:return v.A}throw new ut("Unknown dimension symbol: "+o)}}]),v}();se.P=0,se.L=1,se.A=2,se.FALSE=-1,se.TRUE=-2,se.DONTCARE=-3,se.SYM_FALSE="F",se.SYM_TRUE="T",se.SYM_DONTCARE="*",se.SYM_P="0",se.SYM_L="1",se.SYM_A="2";var Ue=function(){function v(){w(this,v)}return A(v,[{key:"filter",value:function(o){}}]),v}(),ot=function(){function v(){w(this,v)}return A(v,[{key:"filter",value:function(o,l){}},{key:"isDone",value:function(){}},{key:"isGeometryChanged",value:function(){}}]),v}(),ht=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"computeEnvelopeInternal",value:function(){return this.isEmpty()?new Ci:this._points.expandEnvelope(new Ci)}},{key:"isRing",value:function(){return this.isClosed()&&this.isSimple()}},{key:"getCoordinates",value:function(){return this._points.toCoordinateArray()}},{key:"copyInternal",value:function(){return new l(this._points.copy(),this._factory)}},{key:"equalsExact",value:function(){if(arguments.length===2&&typeof arguments[1]=="number"&&arguments[0]instanceof ft){var c=arguments[0],g=arguments[1];if(!this.isEquivalentClass(c))return!1;var S=c;if(this._points.size()!==S._points.size())return!1;for(var R=0;R<this._points.size();R++)if(!this.equal(this._points.getCoordinate(R),S._points.getCoordinate(R),g))return!1;return!0}return Ie($(l.prototype),"equalsExact",this).apply(this,arguments)}},{key:"normalize",value:function(){for(var c=0;c<Math.trunc(this._points.size()/2);c++){var g=this._points.size()-1-c;if(!this._points.getCoordinate(c).equals(this._points.getCoordinate(g))){if(this._points.getCoordinate(c).compareTo(this._points.getCoordinate(g))>0){var S=this._points.copy();Ce.reverse(S),this._points=S}return null}}}},{key:"getCoordinate",value:function(){return this.isEmpty()?null:this._points.getCoordinate(0)}},{key:"getBoundaryDimension",value:function(){return this.isClosed()?se.FALSE:0}},{key:"isClosed",value:function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))}},{key:"reverseInternal",value:function(){var c=this._points.copy();return Ce.reverse(c),this.getFactory().createLineString(c)}},{key:"getEndPoint",value:function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)}},{key:"getTypeCode",value:function(){return ft.TYPECODE_LINESTRING}},{key:"getDimension",value:function(){return 1}},{key:"getLength",value:function(){return Se.ofLine(this._points)}},{key:"getNumPoints",value:function(){return this._points.size()}},{key:"compareToSameClass",value:function(){if(arguments.length===1){for(var c=arguments[0],g=c,S=0,R=0;S<this._points.size()&&R<g._points.size();){var F=this._points.getCoordinate(S).compareTo(g._points.getCoordinate(R));if(F!==0)return F;S++,R++}return S<this._points.size()?1:R<g._points.size()?-1:0}if(arguments.length===2){var q=arguments[0],Q=arguments[1],Ee=q;return Q.compare(this._points,Ee._points)}}},{key:"apply",value:function(){if(ii(arguments[0],_e))for(var c=arguments[0],g=0;g<this._points.size();g++)c.filter(this._points.getCoordinate(g));else if(ii(arguments[0],ot)){var S=arguments[0];if(this._points.size()===0)return null;for(var R=0;R<this._points.size()&&(S.filter(this._points,R),!S.isDone());R++);S.isGeometryChanged()&&this.geometryChanged()}else if(ii(arguments[0],Ue)){var F=arguments[0];F.filter(this)}else if(ii(arguments[0],yt)){var q=arguments[0];q.filter(this)}}},{key:"getBoundary",value:function(){throw new Ti}},{key:"isEquivalentClass",value:function(c){return c instanceof l}},{key:"getCoordinateN",value:function(c){return this._points.getCoordinate(c)}},{key:"getGeometryType",value:function(){return ft.TYPENAME_LINESTRING}},{key:"getCoordinateSequence",value:function(){return this._points}},{key:"isEmpty",value:function(){return this._points.size()===0}},{key:"init",value:function(c){if(c===null&&(c=this.getFactory().getCoordinateSequenceFactory().create([])),c.size()===1)throw new ut("Invalid number of points in LineString (found "+c.size()+" - must be 0 or >= 2)");this._points=c}},{key:"isCoordinate",value:function(c){for(var g=0;g<this._points.size();g++)if(this._points.getCoordinate(g).equals(c))return!0;return!1}},{key:"getStartPoint",value:function(){return this.isEmpty()?null:this.getPointN(0)}},{key:"getPointN",value:function(c){return this.getFactory().createPoint(this._points.getCoordinate(c))}},{key:"interfaces_",get:function(){return[Pe]}}],[{key:"constructor_",value:function(){if(this._points=null,arguments.length!==0){if(arguments.length===2){var c=arguments[0],g=arguments[1];ft.constructor_.call(this,g),this.init(c)}}}}]),l}(ft),nt=function v(){w(this,v)},Ht=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"computeEnvelopeInternal",value:function(){if(this.isEmpty())return new Ci;var c=new Ci;return c.expandToInclude(this._coordinates.getX(0),this._coordinates.getY(0)),c}},{key:"getCoordinates",value:function(){return this.isEmpty()?[]:[this.getCoordinate()]}},{key:"copyInternal",value:function(){return new l(this._coordinates.copy(),this._factory)}},{key:"equalsExact",value:function(){if(arguments.length===2&&typeof arguments[1]=="number"&&arguments[0]instanceof ft){var c=arguments[0],g=arguments[1];return!!this.isEquivalentClass(c)&&(!(!this.isEmpty()||!c.isEmpty())||this.isEmpty()===c.isEmpty()&&this.equal(c.getCoordinate(),this.getCoordinate(),g))}return Ie($(l.prototype),"equalsExact",this).apply(this,arguments)}},{key:"normalize",value:function(){}},{key:"getCoordinate",value:function(){return this._coordinates.size()!==0?this._coordinates.getCoordinate(0):null}},{key:"getBoundaryDimension",value:function(){return se.FALSE}},{key:"reverseInternal",value:function(){return this.getFactory().createPoint(this._coordinates.copy())}},{key:"getTypeCode",value:function(){return ft.TYPECODE_POINT}},{key:"getDimension",value:function(){return 0}},{key:"getNumPoints",value:function(){return this.isEmpty()?0:1}},{key:"getX",value:function(){if(this.getCoordinate()===null)throw new IllegalStateException("getX called on empty Point");return this.getCoordinate().x}},{key:"compareToSameClass",value:function(){if(arguments.length===1){var c=arguments[0],g=c;return this.getCoordinate().compareTo(g.getCoordinate())}if(arguments.length===2){var S=arguments[0],R=arguments[1],F=S;return R.compare(this._coordinates,F._coordinates)}}},{key:"apply",value:function(){if(ii(arguments[0],_e)){var c=arguments[0];if(this.isEmpty())return null;c.filter(this.getCoordinate())}else if(ii(arguments[0],ot)){var g=arguments[0];if(this.isEmpty())return null;g.filter(this._coordinates,0),g.isGeometryChanged()&&this.geometryChanged()}else if(ii(arguments[0],Ue)){var S=arguments[0];S.filter(this)}else if(ii(arguments[0],yt)){var R=arguments[0];R.filter(this)}}},{key:"getBoundary",value:function(){return this.getFactory().createGeometryCollection()}},{key:"getGeometryType",value:function(){return ft.TYPENAME_POINT}},{key:"getCoordinateSequence",value:function(){return this._coordinates}},{key:"getY",value:function(){if(this.getCoordinate()===null)throw new IllegalStateException("getY called on empty Point");return this.getCoordinate().y}},{key:"isEmpty",value:function(){return this._coordinates.size()===0}},{key:"init",value:function(c){c===null&&(c=this.getFactory().getCoordinateSequenceFactory().create([])),Dt.isTrue(c.size()<=1),this._coordinates=c}},{key:"isSimple",value:function(){return!0}},{key:"interfaces_",get:function(){return[nt]}}],[{key:"constructor_",value:function(){this._coordinates=null;var c=arguments[0],g=arguments[1];ft.constructor_.call(this,g),this.init(c)}}]),l}(ft),li=function(){function v(){w(this,v)}return A(v,null,[{key:"ofRing",value:function(){if(arguments[0]instanceof Array){var o=arguments[0];return Math.abs(v.ofRingSigned(o))}if(ii(arguments[0],_i)){var l=arguments[0];return Math.abs(v.ofRingSigned(l))}}},{key:"ofRingSigned",value:function(){if(arguments[0]instanceof Array){var o=arguments[0];if(o.length<3)return 0;for(var l=0,c=o[0].x,g=1;g<o.length-1;g++){var S=o[g].x-c,R=o[g+1].y,F=o[g-1].y;l+=S*(F-R)}return l/2}if(ii(arguments[0],_i)){var q=arguments[0],Q=q.size();if(Q<3)return 0;var Ee=new Fe,Me=new Fe,Xe=new Fe;q.getCoordinate(0,Me),q.getCoordinate(1,Xe);var pt=Me.x;Xe.x-=pt;for(var dt=0,Vt=1;Vt<Q-1;Vt++)Ee.y=Me.y,Me.x=Xe.x,Me.y=Xe.y,q.getCoordinate(Vt+1,Xe),Xe.x-=pt,dt+=Me.x*(Ee.y-Xe.y);return dt/2}}}]),v}(),Zt=function(){function v(){w(this,v)}return A(v,null,[{key:"sort",value:function(){var o=arguments,l=arguments[0];if(arguments.length===1)l.sort(function(pt,dt){return pt.compareTo(dt)});else if(arguments.length===2)l.sort(function(pt,dt){return o[1].compare(pt,dt)});else if(arguments.length===3){var c=l.slice(arguments[1],arguments[2]);c.sort();var g=l.slice(0,arguments[1]).concat(c,l.slice(arguments[2],l.length));l.splice(0,l.length);var S,R=Le(g);try{for(R.s();!(S=R.n()).done;){var F=S.value;l.push(F)}}catch(pt){R.e(pt)}finally{R.f()}}else if(arguments.length===4){var q=l.slice(arguments[1],arguments[2]);q.sort(function(pt,dt){return o[3].compare(pt,dt)});var Q=l.slice(0,arguments[1]).concat(q,l.slice(arguments[2],l.length));l.splice(0,l.length);var Ee,Me=Le(Q);try{for(Me.s();!(Ee=Me.n()).done;){var Xe=Ee.value;l.push(Xe)}}catch(pt){Me.e(pt)}finally{Me.f()}}}},{key:"asList",value:function(o){var l,c=new qt,g=Le(o);try{for(g.s();!(l=g.n()).done;){var S=l.value;c.add(S)}}catch(R){g.e(R)}finally{g.f()}return c}},{key:"copyOf",value:function(o,l){return o.slice(0,l)}}]),v}(),ui=function v(){w(this,v)},hi=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"computeEnvelopeInternal",value:function(){return this._shell.getEnvelopeInternal()}},{key:"getCoordinates",value:function(){if(this.isEmpty())return[];for(var c=new Array(this.getNumPoints()).fill(null),g=-1,S=this._shell.getCoordinates(),R=0;R<S.length;R++)c[++g]=S[R];for(var F=0;F<this._holes.length;F++)for(var q=this._holes[F].getCoordinates(),Q=0;Q<q.length;Q++)c[++g]=q[Q];return c}},{key:"getArea",value:function(){var c=0;c+=li.ofRing(this._shell.getCoordinateSequence());for(var g=0;g<this._holes.length;g++)c-=li.ofRing(this._holes[g].getCoordinateSequence());return c}},{key:"copyInternal",value:function(){for(var c=this._shell.copy(),g=new Array(this._holes.length).fill(null),S=0;S<this._holes.length;S++)g[S]=this._holes[S].copy();return new l(c,g,this._factory)}},{key:"isRectangle",value:function(){if(this.getNumInteriorRing()!==0||this._shell===null||this._shell.getNumPoints()!==5)return!1;for(var c=this._shell.getCoordinateSequence(),g=this.getEnvelopeInternal(),S=0;S<5;S++){var R=c.getX(S);if(R!==g.getMinX()&&R!==g.getMaxX())return!1;var F=c.getY(S);if(F!==g.getMinY()&&F!==g.getMaxY())return!1}for(var q=c.getX(0),Q=c.getY(0),Ee=1;Ee<=4;Ee++){var Me=c.getX(Ee),Xe=c.getY(Ee);if(Me!==q==(Xe!==Q))return!1;q=Me,Q=Xe}return!0}},{key:"equalsExact",value:function(){if(arguments.length===2&&typeof arguments[1]=="number"&&arguments[0]instanceof ft){var c=arguments[0],g=arguments[1];if(!this.isEquivalentClass(c))return!1;var S=c,R=this._shell,F=S._shell;if(!R.equalsExact(F,g)||this._holes.length!==S._holes.length)return!1;for(var q=0;q<this._holes.length;q++)if(!this._holes[q].equalsExact(S._holes[q],g))return!1;return!0}return Ie($(l.prototype),"equalsExact",this).apply(this,arguments)}},{key:"normalize",value:function(){if(arguments.length===0){this._shell=this.normalized(this._shell,!0);for(var c=0;c<this._holes.length;c++)this._holes[c]=this.normalized(this._holes[c],!1);Zt.sort(this._holes)}else if(arguments.length===2){var g=arguments[0],S=arguments[1];if(g.isEmpty())return null;var R=g.getCoordinateSequence(),F=Ce.minCoordinateIndex(R,0,R.size()-2);Ce.scroll(R,F,!0),Yt.isCCW(R)===S&&Ce.reverse(R)}}},{key:"getCoordinate",value:function(){return this._shell.getCoordinate()}},{key:"getNumInteriorRing",value:function(){return this._holes.length}},{key:"getBoundaryDimension",value:function(){return 1}},{key:"reverseInternal",value:function(){for(var c=this.getExteriorRing().reverse(),g=new Array(this.getNumInteriorRing()).fill(null),S=0;S<g.length;S++)g[S]=this.getInteriorRingN(S).reverse();return this.getFactory().createPolygon(c,g)}},{key:"getTypeCode",value:function(){return ft.TYPECODE_POLYGON}},{key:"getDimension",value:function(){return 2}},{key:"getLength",value:function(){var c=0;c+=this._shell.getLength();for(var g=0;g<this._holes.length;g++)c+=this._holes[g].getLength();return c}},{key:"getNumPoints",value:function(){for(var c=this._shell.getNumPoints(),g=0;g<this._holes.length;g++)c+=this._holes[g].getNumPoints();return c}},{key:"convexHull",value:function(){return this.getExteriorRing().convexHull()}},{key:"normalized",value:function(c,g){var S=c.copy();return this.normalize(S,g),S}},{key:"compareToSameClass",value:function(){if(arguments.length===1){var c=arguments[0],g=this._shell,S=c._shell;return g.compareToSameClass(S)}if(arguments.length===2){var R=arguments[0],F=arguments[1],q=R,Q=this._shell,Ee=q._shell,Me=Q.compareToSameClass(Ee,F);if(Me!==0)return Me;for(var Xe=this.getNumInteriorRing(),pt=q.getNumInteriorRing(),dt=0;dt<Xe&&dt<pt;){var Vt=this.getInteriorRingN(dt),Ut=q.getInteriorRingN(dt),ei=Vt.compareToSameClass(Ut,F);if(ei!==0)return ei;dt++}return dt<Xe?1:dt<pt?-1:0}}},{key:"apply",value:function(){if(ii(arguments[0],_e)){var c=arguments[0];this._shell.apply(c);for(var g=0;g<this._holes.length;g++)this._holes[g].apply(c)}else if(ii(arguments[0],ot)){var S=arguments[0];if(this._shell.apply(S),!S.isDone())for(var R=0;R<this._holes.length&&(this._holes[R].apply(S),!S.isDone());R++);S.isGeometryChanged()&&this.geometryChanged()}else if(ii(arguments[0],Ue)){var F=arguments[0];F.filter(this)}else if(ii(arguments[0],yt)){var q=arguments[0];q.filter(this),this._shell.apply(q);for(var Q=0;Q<this._holes.length;Q++)this._holes[Q].apply(q)}}},{key:"getBoundary",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();var c=new Array(this._holes.length+1).fill(null);c[0]=this._shell;for(var g=0;g<this._holes.length;g++)c[g+1]=this._holes[g];return c.length<=1?this.getFactory().createLinearRing(c[0].getCoordinateSequence()):this.getFactory().createMultiLineString(c)}},{key:"getGeometryType",value:function(){return ft.TYPENAME_POLYGON}},{key:"getExteriorRing",value:function(){return this._shell}},{key:"isEmpty",value:function(){return this._shell.isEmpty()}},{key:"getInteriorRingN",value:function(c){return this._holes[c]}},{key:"interfaces_",get:function(){return[ui]}}],[{key:"constructor_",value:function(){this._shell=null,this._holes=null;var c=arguments[0],g=arguments[1],S=arguments[2];if(ft.constructor_.call(this,S),c===null&&(c=this.getFactory().createLinearRing()),g===null&&(g=[]),ft.hasNullElements(g))throw new ut("holes must not contain null elements");if(c.isEmpty()&&ft.hasNonEmptyElements(g))throw new ut("shell is empty but holes are not");this._shell=c,this._holes=g}}]),l}(ft),tn=function(v){O(l,v);var o=ye(l);function l(){return w(this,l),o.apply(this,arguments)}return l}(pr),un=function(v){O(l,v);var o=ye(l);function l(c){var g;return w(this,l),(g=o.call(this)).array=[],c instanceof rn&&g.addAll(c),g}return A(l,[{key:"contains",value:function(c){var g,S=Le(this.array);try{for(S.s();!(g=S.n()).done;)if(g.value.compareTo(c)===0)return!0}catch(R){S.e(R)}finally{S.f()}return!1}},{key:"add",value:function(c){if(this.contains(c))return!1;for(var g=0,S=this.array.length;g<S;g++)if(this.array[g].compareTo(c)===1)return!!this.array.splice(g,0,c);return this.array.push(c),!0}},{key:"addAll",value:function(c){var g,S=Le(c);try{for(S.s();!(g=S.n()).done;){var R=g.value;this.add(R)}}catch(F){S.e(F)}finally{S.f()}return!0}},{key:"remove",value:function(){throw new Ti}},{key:"size",value:function(){return this.array.length}},{key:"isEmpty",value:function(){return this.array.length===0}},{key:"toArray",value:function(){return this.array.slice()}},{key:"iterator",value:function(){return new Un(this.array)}}]),l}(tn),Un=function(){function v(o){w(this,v),this.array=o,this.position=0}return A(v,[{key:"next",value:function(){if(this.position===this.array.length)throw new $r;return this.array[this.position++]}},{key:"hasNext",value:function(){return this.position<this.array.length}},{key:"remove",value:function(){throw new Ti}}]),v}(),Pi=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"computeEnvelopeInternal",value:function(){for(var c=new Ci,g=0;g<this._geometries.length;g++)c.expandToInclude(this._geometries[g].getEnvelopeInternal());return c}},{key:"getGeometryN",value:function(c){return this._geometries[c]}},{key:"getCoordinates",value:function(){for(var c=new Array(this.getNumPoints()).fill(null),g=-1,S=0;S<this._geometries.length;S++)for(var R=this._geometries[S].getCoordinates(),F=0;F<R.length;F++)c[++g]=R[F];return c}},{key:"getArea",value:function(){for(var c=0,g=0;g<this._geometries.length;g++)c+=this._geometries[g].getArea();return c}},{key:"copyInternal",value:function(){for(var c=new Array(this._geometries.length).fill(null),g=0;g<c.length;g++)c[g]=this._geometries[g].copy();return new l(c,this._factory)}},{key:"equalsExact",value:function(){if(arguments.length===2&&typeof arguments[1]=="number"&&arguments[0]instanceof ft){var c=arguments[0],g=arguments[1];if(!this.isEquivalentClass(c))return!1;var S=c;if(this._geometries.length!==S._geometries.length)return!1;for(var R=0;R<this._geometries.length;R++)if(!this._geometries[R].equalsExact(S._geometries[R],g))return!1;return!0}return Ie($(l.prototype),"equalsExact",this).apply(this,arguments)}},{key:"normalize",value:function(){for(var c=0;c<this._geometries.length;c++)this._geometries[c].normalize();Zt.sort(this._geometries)}},{key:"getCoordinate",value:function(){return this.isEmpty()?null:this._geometries[0].getCoordinate()}},{key:"getBoundaryDimension",value:function(){for(var c=se.FALSE,g=0;g<this._geometries.length;g++)c=Math.max(c,this._geometries[g].getBoundaryDimension());return c}},{key:"reverseInternal",value:function(){for(var c=this._geometries.length,g=new qt(c),S=0;S<c;S++)g.add(this._geometries[S].reverse());return this.getFactory().buildGeometry(g)}},{key:"getTypeCode",value:function(){return ft.TYPECODE_GEOMETRYCOLLECTION}},{key:"getDimension",value:function(){for(var c=se.FALSE,g=0;g<this._geometries.length;g++)c=Math.max(c,this._geometries[g].getDimension());return c}},{key:"getLength",value:function(){for(var c=0,g=0;g<this._geometries.length;g++)c+=this._geometries[g].getLength();return c}},{key:"getNumPoints",value:function(){for(var c=0,g=0;g<this._geometries.length;g++)c+=this._geometries[g].getNumPoints();return c}},{key:"getNumGeometries",value:function(){return this._geometries.length}},{key:"compareToSameClass",value:function(){if(arguments.length===1){var c=arguments[0],g=new un(Zt.asList(this._geometries)),S=new un(Zt.asList(c._geometries));return this.compare(g,S)}if(arguments.length===2){for(var R=arguments[0],F=arguments[1],q=R,Q=this.getNumGeometries(),Ee=q.getNumGeometries(),Me=0;Me<Q&&Me<Ee;){var Xe=this.getGeometryN(Me),pt=q.getGeometryN(Me),dt=Xe.compareToSameClass(pt,F);if(dt!==0)return dt;Me++}return Me<Q?1:Me<Ee?-1:0}}},{key:"apply",value:function(){if(ii(arguments[0],_e))for(var c=arguments[0],g=0;g<this._geometries.length;g++)this._geometries[g].apply(c);else if(ii(arguments[0],ot)){var S=arguments[0];if(this._geometries.length===0)return null;for(var R=0;R<this._geometries.length&&(this._geometries[R].apply(S),!S.isDone());R++);S.isGeometryChanged()&&this.geometryChanged()}else if(ii(arguments[0],Ue)){var F=arguments[0];F.filter(this);for(var q=0;q<this._geometries.length;q++)this._geometries[q].apply(F)}else if(ii(arguments[0],yt)){var Q=arguments[0];Q.filter(this);for(var Ee=0;Ee<this._geometries.length;Ee++)this._geometries[Ee].apply(Q)}}},{key:"getBoundary",value:function(){return ft.checkNotGeometryCollection(this),Dt.shouldNeverReachHere(),null}},{key:"getGeometryType",value:function(){return ft.TYPENAME_GEOMETRYCOLLECTION}},{key:"isEmpty",value:function(){for(var c=0;c<this._geometries.length;c++)if(!this._geometries[c].isEmpty())return!1;return!0}}],[{key:"constructor_",value:function(){if(this._geometries=null,arguments.length!==0){if(arguments.length===2){var c=arguments[0],g=arguments[1];if(ft.constructor_.call(this,g),c===null&&(c=[]),ft.hasNullElements(c))throw new ut("geometries must not contain null elements");this._geometries=c}}}}]),l}(ft),xr=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"copyInternal",value:function(){for(var c=new Array(this._geometries.length).fill(null),g=0;g<c.length;g++)c[g]=this._geometries[g].copy();return new l(c,this._factory)}},{key:"isValid",value:function(){return!0}},{key:"equalsExact",value:function(){if(arguments.length===2&&typeof arguments[1]=="number"&&arguments[0]instanceof ft){var c=arguments[0],g=arguments[1];return!!this.isEquivalentClass(c)&&Ie($(l.prototype),"equalsExact",this).call(this,c,g)}return Ie($(l.prototype),"equalsExact",this).apply(this,arguments)}},{key:"getCoordinate",value:function(){if(arguments.length===1&&Number.isInteger(arguments[0])){var c=arguments[0];return this._geometries[c].getCoordinate()}return Ie($(l.prototype),"getCoordinate",this).apply(this,arguments)}},{key:"getBoundaryDimension",value:function(){return se.FALSE}},{key:"getTypeCode",value:function(){return ft.TYPECODE_MULTIPOINT}},{key:"getDimension",value:function(){return 0}},{key:"getBoundary",value:function(){return this.getFactory().createGeometryCollection()}},{key:"getGeometryType",value:function(){return ft.TYPENAME_MULTIPOINT}},{key:"interfaces_",get:function(){return[nt]}}],[{key:"constructor_",value:function(){var c=arguments[0],g=arguments[1];Pi.constructor_.call(this,c,g)}}]),l}(Pi),cn=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"copyInternal",value:function(){return new l(this._points.copy(),this._factory)}},{key:"getBoundaryDimension",value:function(){return se.FALSE}},{key:"isClosed",value:function(){return!!this.isEmpty()||Ie($(l.prototype),"isClosed",this).call(this)}},{key:"reverseInternal",value:function(){var c=this._points.copy();return Ce.reverse(c),this.getFactory().createLinearRing(c)}},{key:"getTypeCode",value:function(){return ft.TYPECODE_LINEARRING}},{key:"validateConstruction",value:function(){if(!this.isEmpty()&&!Ie($(l.prototype),"isClosed",this).call(this))throw new ut("Points of LinearRing do not form a closed linestring");if(this.getCoordinateSequence().size()>=1&&this.getCoordinateSequence().size()<l.MINIMUM_VALID_SIZE)throw new ut("Invalid number of points in LinearRing (found "+this.getCoordinateSequence().size()+" - must be 0 or >= 4)")}},{key:"getGeometryType",value:function(){return ft.TYPENAME_LINEARRING}}],[{key:"constructor_",value:function(){var c=arguments[0],g=arguments[1];ht.constructor_.call(this,c,g),this.validateConstruction()}}]),l}(ht);cn.MINIMUM_VALID_SIZE=4;var pn=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"setOrdinate",value:function(c,g){switch(c){case l.X:this.x=g;break;case l.Y:this.y=g;break;default:throw new ut("Invalid ordinate index: "+c)}}},{key:"getZ",value:function(){return Fe.NULL_ORDINATE}},{key:"getOrdinate",value:function(c){switch(c){case l.X:return this.x;case l.Y:return this.y}throw new ut("Invalid ordinate index: "+c)}},{key:"setZ",value:function(c){throw new ut("CoordinateXY dimension 2 does not support z-ordinate")}},{key:"copy",value:function(){return new l(this)}},{key:"toString",value:function(){return"("+this.x+", "+this.y+")"}},{key:"setCoordinate",value:function(c){this.x=c.x,this.y=c.y,this.z=c.getZ()}}],[{key:"constructor_",value:function(){if(arguments.length===0)Fe.constructor_.call(this);else if(arguments.length===1){if(arguments[0]instanceof l){var c=arguments[0];Fe.constructor_.call(this,c.x,c.y)}else if(arguments[0]instanceof Fe){var g=arguments[0];Fe.constructor_.call(this,g.x,g.y)}}else if(arguments.length===2){var S=arguments[0],R=arguments[1];Fe.constructor_.call(this,S,R,Fe.NULL_ORDINATE)}}}]),l}(Fe);pn.X=0,pn.Y=1,pn.Z=-1,pn.M=-1;var br=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"getM",value:function(){return this._m}},{key:"setOrdinate",value:function(c,g){switch(c){case l.X:this.x=g;break;case l.Y:this.y=g;break;case l.M:this._m=g;break;default:throw new ut("Invalid ordinate index: "+c)}}},{key:"setM",value:function(c){this._m=c}},{key:"getZ",value:function(){return Fe.NULL_ORDINATE}},{key:"getOrdinate",value:function(c){switch(c){case l.X:return this.x;case l.Y:return this.y;case l.M:return this._m}throw new ut("Invalid ordinate index: "+c)}},{key:"setZ",value:function(c){throw new ut("CoordinateXY dimension 2 does not support z-ordinate")}},{key:"copy",value:function(){return new l(this)}},{key:"toString",value:function(){return"("+this.x+", "+this.y+" m="+this.getM()+")"}},{key:"setCoordinate",value:function(c){this.x=c.x,this.y=c.y,this.z=c.getZ(),this._m=c.getM()}}],[{key:"constructor_",value:function(){if(this._m=null,arguments.length===0)Fe.constructor_.call(this),this._m=0;else if(arguments.length===1){if(arguments[0]instanceof l){var c=arguments[0];Fe.constructor_.call(this,c.x,c.y),this._m=c._m}else if(arguments[0]instanceof Fe){var g=arguments[0];Fe.constructor_.call(this,g.x,g.y),this._m=this.getM()}}else if(arguments.length===3){var S=arguments[0],R=arguments[1],F=arguments[2];Fe.constructor_.call(this,S,R,Fe.NULL_ORDINATE),this._m=F}}}]),l}(Fe);br.X=0,br.Y=1,br.Z=-1,br.M=2;var al=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"getM",value:function(){return this._m}},{key:"setOrdinate",value:function(c,g){switch(c){case Fe.X:this.x=g;break;case Fe.Y:this.y=g;break;case Fe.Z:this.z=g;break;case Fe.M:this._m=g;break;default:throw new ut("Invalid ordinate index: "+c)}}},{key:"setM",value:function(c){this._m=c}},{key:"getOrdinate",value:function(c){switch(c){case Fe.X:return this.x;case Fe.Y:return this.y;case Fe.Z:return this.getZ();case Fe.M:return this.getM()}throw new ut("Invalid ordinate index: "+c)}},{key:"copy",value:function(){return new l(this)}},{key:"toString",value:function(){return"("+this.x+", "+this.y+", "+this.getZ()+" m="+this.getM()+")"}},{key:"setCoordinate",value:function(c){this.x=c.x,this.y=c.y,this.z=c.getZ(),this._m=c.getM()}}],[{key:"constructor_",value:function(){if(this._m=null,arguments.length===0)Fe.constructor_.call(this),this._m=0;else if(arguments.length===1){if(arguments[0]instanceof l){var c=arguments[0];Fe.constructor_.call(this,c),this._m=c._m}else if(arguments[0]instanceof Fe){var g=arguments[0];Fe.constructor_.call(this,g),this._m=this.getM()}}else if(arguments.length===4){var S=arguments[0],R=arguments[1],F=arguments[2],q=arguments[3];Fe.constructor_.call(this,S,R,F),this._m=q}}}]),l}(Fe),Ns=function(){function v(){w(this,v)}return A(v,null,[{key:"measures",value:function(o){return o instanceof pn?0:o instanceof br||o instanceof al?1:0}},{key:"dimension",value:function(o){return o instanceof pn?2:o instanceof br?3:o instanceof al?4:3}},{key:"create",value:function(){if(arguments.length===1){var o=arguments[0];return v.create(o,0)}if(arguments.length===2){var l=arguments[0],c=arguments[1];return l===2?new pn:l===3&&c===0?new Fe:l===3&&c===1?new br:l===4&&c===1?new al:new Fe}}}]),v}(),xi=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"getCoordinate",value:function(c){return this.get(c)}},{key:"addAll",value:function(){if(arguments.length===2&&typeof arguments[1]=="boolean"&&ii(arguments[0],rn)){for(var c=arguments[0],g=arguments[1],S=!1,R=c.iterator();R.hasNext();)this.add(R.next(),g),S=!0;return S}return Ie($(l.prototype),"addAll",this).apply(this,arguments)}},{key:"clone",value:function(){for(var c=Ie($(l.prototype),"clone",this).call(this),g=0;g<this.size();g++)c.add(g,this.get(g).clone());return c}},{key:"toCoordinateArray",value:function(){if(arguments.length===0)return this.toArray(l.coordArrayType);if(arguments.length===1){var c=arguments[0];if(c)return this.toArray(l.coordArrayType);for(var g=this.size(),S=new Array(g).fill(null),R=0;R<g;R++)S[R]=this.get(g-R-1);return S}}},{key:"add",value:function(){if(arguments.length===1){var c=arguments[0];return Ie($(l.prototype),"add",this).call(this,c)}if(arguments.length===2){if(arguments[0]instanceof Array&&typeof arguments[1]=="boolean"){var g=arguments[0],S=arguments[1];return this.add(g,S,!0),!0}if(arguments[0]instanceof Fe&&typeof arguments[1]=="boolean"){var R=arguments[0],F=arguments[1];if(!F&&this.size()>=1){var q=this.get(this.size()-1);if(q.equals2D(R))return null}Ie($(l.prototype),"add",this).call(this,R)}else if(arguments[0]instanceof Object&&typeof arguments[1]=="boolean"){var Q=arguments[0],Ee=arguments[1];return this.add(Q,Ee),!0}}else if(arguments.length===3){if(typeof arguments[2]=="boolean"&&arguments[0]instanceof Array&&typeof arguments[1]=="boolean"){var Me=arguments[0],Xe=arguments[1],pt=arguments[2];if(pt)for(var dt=0;dt<Me.length;dt++)this.add(Me[dt],Xe);else for(var Vt=Me.length-1;Vt>=0;Vt--)this.add(Me[Vt],Xe);return!0}if(typeof arguments[2]=="boolean"&&Number.isInteger(arguments[0])&&arguments[1]instanceof Fe){var Ut=arguments[0],ei=arguments[1],yi=arguments[2];if(!yi){var Xi=this.size();if(Xi>0){if(Ut>0){var Fn=this.get(Ut-1);if(Fn.equals2D(ei))return null}if(Ut<Xi){var bn=this.get(Ut);if(bn.equals2D(ei))return null}}}Ie($(l.prototype),"add",this).call(this,Ut,ei)}}else if(arguments.length===4){var Vn=arguments[0],Ir=arguments[1],Hr=arguments[2],vi=arguments[3],uo=1;Hr>vi&&(uo=-1);for(var Xo=Hr;Xo!==vi;Xo+=uo)this.add(Vn[Xo],Ir);return!0}}},{key:"closeRing",value:function(){if(this.size()>0){var c=this.get(0).copy();this.add(c,!1)}}}],[{key:"constructor_",value:function(){if(arguments.length!==0){if(arguments.length===1){var c=arguments[0];this.ensureCapacity(c.length),this.add(c,!0)}else if(arguments.length===2){var g=arguments[0],S=arguments[1];this.ensureCapacity(g.length),this.add(g,S)}}}}]),l}(qt);xi.coordArrayType=new Array(0).fill(null);var dn=function(){function v(){w(this,v)}return A(v,null,[{key:"isRing",value:function(o){return!(o.length<4)&&!!o[0].equals2D(o[o.length-1])}},{key:"ptNotInList",value:function(o,l){for(var c=0;c<o.length;c++){var g=o[c];if(v.indexOf(g,l)<0)return g}return null}},{key:"scroll",value:function(o,l){var c=v.indexOf(l,o);if(c<0)return null;var g=new Array(o.length).fill(null);ce.arraycopy(o,c,g,0,o.length-c),ce.arraycopy(o,0,g,o.length-c,c),ce.arraycopy(g,0,o,0,o.length)}},{key:"equals",value:function(){if(arguments.length===2){var o=arguments[0],l=arguments[1];if(o===l)return!0;if(o===null||l===null||o.length!==l.length)return!1;for(var c=0;c<o.length;c++)if(!o[c].equals(l[c]))return!1;return!0}if(arguments.length===3){var g=arguments[0],S=arguments[1],R=arguments[2];if(g===S)return!0;if(g===null||S===null||g.length!==S.length)return!1;for(var F=0;F<g.length;F++)if(R.compare(g[F],S[F])!==0)return!1;return!0}}},{key:"intersection",value:function(o,l){for(var c=new xi,g=0;g<o.length;g++)l.intersects(o[g])&&c.add(o[g],!0);return c.toCoordinateArray()}},{key:"measures",value:function(o){if(o===null||o.length===0)return 0;var l,c=0,g=Le(o);try{for(g.s();!(l=g.n()).done;){var S=l.value;c=Math.max(c,Ns.measures(S))}}catch(R){g.e(R)}finally{g.f()}return c}},{key:"hasRepeatedPoints",value:function(o){for(var l=1;l<o.length;l++)if(o[l-1].equals(o[l]))return!0;return!1}},{key:"removeRepeatedPoints",value:function(o){return v.hasRepeatedPoints(o)?new xi(o,!1).toCoordinateArray():o}},{key:"reverse",value:function(o){for(var l=o.length-1,c=Math.trunc(l/2),g=0;g<=c;g++){var S=o[g];o[g]=o[l-g],o[l-g]=S}}},{key:"removeNull",value:function(o){for(var l=0,c=0;c<o.length;c++)o[c]!==null&&l++;var g=new Array(l).fill(null);if(l===0)return g;for(var S=0,R=0;R<o.length;R++)o[R]!==null&&(g[S++]=o[R]);return g}},{key:"copyDeep",value:function(){if(arguments.length===1){for(var o=arguments[0],l=new Array(o.length).fill(null),c=0;c<o.length;c++)l[c]=o[c].copy();return l}if(arguments.length===5)for(var g=arguments[0],S=arguments[1],R=arguments[2],F=arguments[3],q=arguments[4],Q=0;Q<q;Q++)R[F+Q]=g[S+Q].copy()}},{key:"isEqualReversed",value:function(o,l){for(var c=0;c<o.length;c++){var g=o[c],S=l[o.length-c-1];if(g.compareTo(S)!==0)return!1}return!0}},{key:"envelope",value:function(o){for(var l=new Ci,c=0;c<o.length;c++)l.expandToInclude(o[c]);return l}},{key:"toCoordinateArray",value:function(o){return o.toArray(v.coordArrayType)}},{key:"dimension",value:function(o){if(o===null||o.length===0)return 3;var l,c=0,g=Le(o);try{for(g.s();!(l=g.n()).done;){var S=l.value;c=Math.max(c,Ns.dimension(S))}}catch(R){g.e(R)}finally{g.f()}return c}},{key:"atLeastNCoordinatesOrNothing",value:function(o,l){return l.length>=o?l:[]}},{key:"indexOf",value:function(o,l){for(var c=0;c<l.length;c++)if(o.equals(l[c]))return c;return-1}},{key:"increasingDirection",value:function(o){for(var l=0;l<Math.trunc(o.length/2);l++){var c=o.length-1-l,g=o[l].compareTo(o[c]);if(g!==0)return g}return 1}},{key:"compare",value:function(o,l){for(var c=0;c<o.length&&c<l.length;){var g=o[c].compareTo(l[c]);if(g!==0)return g;c++}return c<l.length?-1:c<o.length?1:0}},{key:"minCoordinate",value:function(o){for(var l=null,c=0;c<o.length;c++)(l===null||l.compareTo(o[c])>0)&&(l=o[c]);return l}},{key:"extract",value:function(o,l,c){l=X.clamp(l,0,o.length);var g=(c=X.clamp(c,-1,o.length))-l+1;c<0&&(g=0),l>=o.length&&(g=0),c<l&&(g=0);var S=new Array(g).fill(null);if(g===0)return S;for(var R=0,F=l;F<=c;F++)S[R++]=o[F];return S}}]),v}(),Bs=function(){function v(){w(this,v)}return A(v,[{key:"compare",value:function(o,l){var c=o,g=l;return dn.compare(c,g)}},{key:"interfaces_",get:function(){return[wi]}}]),v}(),ll=function(){function v(){w(this,v)}return A(v,[{key:"compare",value:function(o,l){var c=o,g=l;if(c.length<g.length)return-1;if(c.length>g.length)return 1;if(c.length===0)return 0;var S=dn.compare(c,g);return dn.isEqualReversed(c,g)?0:S}},{key:"OLDcompare",value:function(o,l){var c=o,g=l;if(c.length<g.length)return-1;if(c.length>g.length)return 1;if(c.length===0)return 0;for(var S=dn.increasingDirection(c),R=dn.increasingDirection(g),F=S>0?0:c.length-1,q=R>0?0:c.length-1,Q=0;Q<c.length;Q++){var Ee=c[F].compareTo(g[q]);if(Ee!==0)return Ee;F+=S,q+=R}return 0}},{key:"interfaces_",get:function(){return[wi]}}]),v}();dn.ForwardComparator=Bs,dn.BidirectionalComparator=ll,dn.coordArrayType=new Array(0).fill(null);var Bo=function(){function v(o){w(this,v),this.str=o}return A(v,[{key:"append",value:function(o){this.str+=o}},{key:"setCharAt",value:function(o,l){this.str=this.str.substr(0,o)+l+this.str.substr(o+1)}},{key:"toString",value:function(){return this.str}}]),v}(),ir=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getM",value:function(o){return this.hasM()?this._coordinates[o].getM():St.NaN}},{key:"setOrdinate",value:function(o,l,c){switch(l){case _i.X:this._coordinates[o].x=c;break;case _i.Y:this._coordinates[o].y=c;break;default:this._coordinates[o].setOrdinate(l,c)}}},{key:"getZ",value:function(o){return this.hasZ()?this._coordinates[o].getZ():St.NaN}},{key:"size",value:function(){return this._coordinates.length}},{key:"getOrdinate",value:function(o,l){switch(l){case _i.X:return this._coordinates[o].x;case _i.Y:return this._coordinates[o].y;default:return this._coordinates[o].getOrdinate(l)}}},{key:"getCoordinate",value:function(){if(arguments.length===1){var o=arguments[0];return this._coordinates[o]}if(arguments.length===2){var l=arguments[0],c=arguments[1];c.setCoordinate(this._coordinates[l])}}},{key:"getCoordinateCopy",value:function(o){var l=this.createCoordinate();return l.setCoordinate(this._coordinates[o]),l}},{key:"createCoordinate",value:function(){return Ns.create(this.getDimension(),this.getMeasures())}},{key:"getDimension",value:function(){return this._dimension}},{key:"getX",value:function(o){return this._coordinates[o].x}},{key:"getMeasures",value:function(){return this._measures}},{key:"expandEnvelope",value:function(o){for(var l=0;l<this._coordinates.length;l++)o.expandToInclude(this._coordinates[l]);return o}},{key:"copy",value:function(){for(var o=new Array(this.size()).fill(null),l=0;l<this._coordinates.length;l++){var c=this.createCoordinate();c.setCoordinate(this._coordinates[l]),o[l]=c}return new v(o,this._dimension,this._measures)}},{key:"toString",value:function(){if(this._coordinates.length>0){var o=new Bo(17*this._coordinates.length);o.append("("),o.append(this._coordinates[0]);for(var l=1;l<this._coordinates.length;l++)o.append(", "),o.append(this._coordinates[l]);return o.append(")"),o.toString()}return"()"}},{key:"getY",value:function(o){return this._coordinates[o].y}},{key:"toCoordinateArray",value:function(){return this._coordinates}},{key:"interfaces_",get:function(){return[_i,Oe]}}],[{key:"constructor_",value:function(){if(this._dimension=3,this._measures=0,this._coordinates=null,arguments.length===1){if(arguments[0]instanceof Array){var o=arguments[0];v.constructor_.call(this,o,dn.dimension(o),dn.measures(o))}else if(Number.isInteger(arguments[0])){var l=arguments[0];this._coordinates=new Array(l).fill(null);for(var c=0;c<l;c++)this._coordinates[c]=new Fe}else if(ii(arguments[0],_i)){var g=arguments[0];if(g===null)return this._coordinates=new Array(0).fill(null),null;this._dimension=g.getDimension(),this._measures=g.getMeasures(),this._coordinates=new Array(g.size()).fill(null);for(var S=0;S<this._coordinates.length;S++)this._coordinates[S]=g.getCoordinateCopy(S)}}else if(arguments.length===2){if(arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var R=arguments[0],F=arguments[1];v.constructor_.call(this,R,F,dn.measures(R))}else if(Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var q=arguments[0],Q=arguments[1];this._coordinates=new Array(q).fill(null),this._dimension=Q;for(var Ee=0;Ee<q;Ee++)this._coordinates[Ee]=Ns.create(Q)}}else if(arguments.length===3){if(Number.isInteger(arguments[2])&&arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var Me=arguments[0],Xe=arguments[1],pt=arguments[2];this._dimension=Xe,this._measures=pt,this._coordinates=Me===null?new Array(0).fill(null):Me}else if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var dt=arguments[0],Vt=arguments[1],Ut=arguments[2];this._coordinates=new Array(dt).fill(null),this._dimension=Vt,this._measures=Ut;for(var ei=0;ei<dt;ei++)this._coordinates[ei]=this.createCoordinate()}}}}]),v}(),Or=function(){function v(){w(this,v)}return A(v,[{key:"readResolve",value:function(){return v.instance()}},{key:"create",value:function(){if(arguments.length===1){if(arguments[0]instanceof Array){var o=arguments[0];return new ir(o)}if(ii(arguments[0],_i)){var l=arguments[0];return new ir(l)}}else{if(arguments.length===2){var c=arguments[0],g=arguments[1];return g>3&&(g=3),g<2&&(g=2),new ir(c,g)}if(arguments.length===3){var S=arguments[0],R=arguments[1],F=arguments[2],q=R-F;return F>1&&(F=1),q>3&&(q=3),q<2&&(q=2),new ir(S,q+F,F)}}}},{key:"interfaces_",get:function(){return[ue,Oe]}}],[{key:"instance",value:function(){return v.instanceObject}}]),v}();Or.instanceObject=new Or;var Fs=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"copyInternal",value:function(){for(var c=new Array(this._geometries.length).fill(null),g=0;g<c.length;g++)c[g]=this._geometries[g].copy();return new l(c,this._factory)}},{key:"equalsExact",value:function(){if(arguments.length===2&&typeof arguments[1]=="number"&&arguments[0]instanceof ft){var c=arguments[0],g=arguments[1];return!!this.isEquivalentClass(c)&&Ie($(l.prototype),"equalsExact",this).call(this,c,g)}return Ie($(l.prototype),"equalsExact",this).apply(this,arguments)}},{key:"getBoundaryDimension",value:function(){return 1}},{key:"getTypeCode",value:function(){return ft.TYPECODE_MULTIPOLYGON}},{key:"getDimension",value:function(){return 2}},{key:"getBoundary",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();for(var c=new qt,g=0;g<this._geometries.length;g++)for(var S=this._geometries[g].getBoundary(),R=0;R<S.getNumGeometries();R++)c.add(S.getGeometryN(R));var F=new Array(c.size()).fill(null);return this.getFactory().createMultiLineString(c.toArray(F))}},{key:"getGeometryType",value:function(){return ft.TYPENAME_MULTIPOLYGON}},{key:"interfaces_",get:function(){return[ui]}}],[{key:"constructor_",value:function(){var c=arguments[0],g=arguments[1];Pi.constructor_.call(this,c,g)}}]),l}(Pi),_a=function(){function v(){w(this,v)}return A(v,[{key:"get",value:function(){}},{key:"put",value:function(){}},{key:"size",value:function(){}},{key:"values",value:function(){}},{key:"entrySet",value:function(){}}]),v}(),Fo=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),(c=o.call(this)).map=new Map,c}return A(l,[{key:"get",value:function(c){return this.map.get(c)||null}},{key:"put",value:function(c,g){return this.map.set(c,g),g}},{key:"values",value:function(){for(var c=new qt,g=this.map.values(),S=g.next();!S.done;)c.add(S.value),S=g.next();return c}},{key:"entrySet",value:function(){var c=new ps;return this.map.entries().forEach(function(g){return c.add(g)}),c}},{key:"size",value:function(){return this.map.size()}}]),l}(_a),xn=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"equals",value:function(o){if(!(o instanceof v))return!1;var l=o;return this._modelType===l._modelType&&this._scale===l._scale}},{key:"compareTo",value:function(o){var l=o,c=this.getMaximumSignificantDigits(),g=l.getMaximumSignificantDigits();return Oo.compare(c,g)}},{key:"getScale",value:function(){return this._scale}},{key:"isFloating",value:function(){return this._modelType===v.FLOATING||this._modelType===v.FLOATING_SINGLE}},{key:"getType",value:function(){return this._modelType}},{key:"toString",value:function(){var o="UNKNOWN";return this._modelType===v.FLOATING?o="Floating":this._modelType===v.FLOATING_SINGLE?o="Floating-Single":this._modelType===v.FIXED&&(o="Fixed (Scale="+this.getScale()+")"),o}},{key:"makePrecise",value:function(){if(typeof arguments[0]=="number"){var o=arguments[0];return St.isNaN(o)||this._modelType===v.FLOATING_SINGLE?o:this._modelType===v.FIXED?Math.round(o*this._scale)/this._scale:o}if(arguments[0]instanceof Fe){var l=arguments[0];if(this._modelType===v.FLOATING)return null;l.x=this.makePrecise(l.x),l.y=this.makePrecise(l.y)}}},{key:"getMaximumSignificantDigits",value:function(){var o=16;return this._modelType===v.FLOATING?o=16:this._modelType===v.FLOATING_SINGLE?o=6:this._modelType===v.FIXED&&(o=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),o}},{key:"setScale",value:function(o){this._scale=Math.abs(o)}},{key:"interfaces_",get:function(){return[Oe,_t]}}],[{key:"constructor_",value:function(){if(this._modelType=null,this._scale=null,arguments.length===0)this._modelType=v.FLOATING;else if(arguments.length===1){if(arguments[0]instanceof qr){var o=arguments[0];this._modelType=o,o===v.FIXED&&this.setScale(1)}else if(typeof arguments[0]=="number"){var l=arguments[0];this._modelType=v.FIXED,this.setScale(l)}else if(arguments[0]instanceof v){var c=arguments[0];this._modelType=c._modelType,this._scale=c._scale}}}},{key:"mostPrecise",value:function(o,l){return o.compareTo(l)>=0?o:l}}]),v}(),qr=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"readResolve",value:function(){return v.nameToTypeMap.get(this._name)}},{key:"toString",value:function(){return this._name}},{key:"interfaces_",get:function(){return[Oe]}}],[{key:"constructor_",value:function(){this._name=null;var o=arguments[0];this._name=o,v.nameToTypeMap.put(o,this)}}]),v}();qr.nameToTypeMap=new Fo,xn.Type=qr,xn.FIXED=new qr("FIXED"),xn.FLOATING=new qr("FLOATING"),xn.FLOATING_SINGLE=new qr("FLOATING SINGLE"),xn.maximumPreciseValue=9007199254740992;var Ge=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"copyInternal",value:function(){for(var c=new Array(this._geometries.length).fill(null),g=0;g<c.length;g++)c[g]=this._geometries[g].copy();return new l(c,this._factory)}},{key:"equalsExact",value:function(){if(arguments.length===2&&typeof arguments[1]=="number"&&arguments[0]instanceof ft){var c=arguments[0],g=arguments[1];return!!this.isEquivalentClass(c)&&Ie($(l.prototype),"equalsExact",this).call(this,c,g)}return Ie($(l.prototype),"equalsExact",this).apply(this,arguments)}},{key:"getBoundaryDimension",value:function(){return this.isClosed()?se.FALSE:0}},{key:"isClosed",value:function(){if(this.isEmpty())return!1;for(var c=0;c<this._geometries.length;c++)if(!this._geometries[c].isClosed())return!1;return!0}},{key:"getTypeCode",value:function(){return ft.TYPECODE_MULTILINESTRING}},{key:"getDimension",value:function(){return 1}},{key:"getBoundary",value:function(){throw new Ti}},{key:"getGeometryType",value:function(){return ft.TYPENAME_MULTILINESTRING}},{key:"interfaces_",get:function(){return[Pe]}}],[{key:"constructor_",value:function(){var c=arguments[0],g=arguments[1];Pi.constructor_.call(this,c,g)}}]),l}(Pi),nr=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"createEmpty",value:function(o){switch(o){case-1:return this.createGeometryCollection();case 0:return this.createPoint();case 1:return this.createLineString();case 2:return this.createPolygon();default:throw new ut("Invalid dimension: "+o)}}},{key:"toGeometry",value:function(o){return o.isNull()?this.createPoint():o.getMinX()===o.getMaxX()&&o.getMinY()===o.getMaxY()?this.createPoint(new Fe(o.getMinX(),o.getMinY())):o.getMinX()===o.getMaxX()||o.getMinY()===o.getMaxY()?this.createLineString([new Fe(o.getMinX(),o.getMinY()),new Fe(o.getMaxX(),o.getMaxY())]):this.createPolygon(this.createLinearRing([new Fe(o.getMinX(),o.getMinY()),new Fe(o.getMinX(),o.getMaxY()),new Fe(o.getMaxX(),o.getMaxY()),new Fe(o.getMaxX(),o.getMinY()),new Fe(o.getMinX(),o.getMinY())]),null)}},{key:"createLineString",value:function(){if(arguments.length===0)return this.createLineString(this.getCoordinateSequenceFactory().create([]));if(arguments.length===1){if(arguments[0]instanceof Array){var o=arguments[0];return this.createLineString(o!==null?this.getCoordinateSequenceFactory().create(o):null)}if(ii(arguments[0],_i)){var l=arguments[0];return new ht(l,this)}}}},{key:"createMultiLineString",value:function(){if(arguments.length===0)return new Ge(null,this);if(arguments.length===1){var o=arguments[0];return new Ge(o,this)}}},{key:"buildGeometry",value:function(o){for(var l=null,c=!1,g=!1,S=o.iterator();S.hasNext();){var R=S.next(),F=R.getTypeCode();l===null&&(l=F),F!==l&&(c=!0),R instanceof Pi&&(g=!0)}if(l===null)return this.createGeometryCollection();if(c||g)return this.createGeometryCollection(v.toGeometryArray(o));var q=o.iterator().next();if(o.size()>1){if(q instanceof hi)return this.createMultiPolygon(v.toPolygonArray(o));if(q instanceof ht)return this.createMultiLineString(v.toLineStringArray(o));if(q instanceof Ht)return this.createMultiPoint(v.toPointArray(o));Dt.shouldNeverReachHere("Unhandled geometry type: "+q.getGeometryType())}return q}},{key:"createMultiPointFromCoords",value:function(o){return this.createMultiPoint(o!==null?this.getCoordinateSequenceFactory().create(o):null)}},{key:"createPoint",value:function(){if(arguments.length===0)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(arguments.length===1){if(arguments[0]instanceof Fe){var o=arguments[0];return this.createPoint(o!==null?this.getCoordinateSequenceFactory().create([o]):null)}if(ii(arguments[0],_i)){var l=arguments[0];return new Ht(l,this)}}}},{key:"getCoordinateSequenceFactory",value:function(){return this._coordinateSequenceFactory}},{key:"createPolygon",value:function(){if(arguments.length===0)return this.createPolygon(null,null);if(arguments.length===1){if(ii(arguments[0],_i)){var o=arguments[0];return this.createPolygon(this.createLinearRing(o))}if(arguments[0]instanceof Array){var l=arguments[0];return this.createPolygon(this.createLinearRing(l))}if(arguments[0]instanceof cn){var c=arguments[0];return this.createPolygon(c,null)}}else if(arguments.length===2){var g=arguments[0],S=arguments[1];return new hi(g,S,this)}}},{key:"getSRID",value:function(){return this._SRID}},{key:"createGeometryCollection",value:function(){if(arguments.length===0)return new Pi(null,this);if(arguments.length===1){var o=arguments[0];return new Pi(o,this)}}},{key:"getPrecisionModel",value:function(){return this._precisionModel}},{key:"createLinearRing",value:function(){if(arguments.length===0)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(arguments.length===1){if(arguments[0]instanceof Array){var o=arguments[0];return this.createLinearRing(o!==null?this.getCoordinateSequenceFactory().create(o):null)}if(ii(arguments[0],_i)){var l=arguments[0];return new cn(l,this)}}}},{key:"createMultiPolygon",value:function(){if(arguments.length===0)return new Fs(null,this);if(arguments.length===1){var o=arguments[0];return new Fs(o,this)}}},{key:"createMultiPoint",value:function(){if(arguments.length===0)return new xr(null,this);if(arguments.length===1){if(arguments[0]instanceof Array){var o=arguments[0];return new xr(o,this)}if(ii(arguments[0],_i)){var l=arguments[0];if(l===null)return this.createMultiPoint(new Array(0).fill(null));for(var c=new Array(l.size()).fill(null),g=0;g<l.size();g++){var S=this.getCoordinateSequenceFactory().create(1,l.getDimension(),l.getMeasures());Ce.copy(l,g,S,0,1),c[g]=this.createPoint(S)}return this.createMultiPoint(c)}}}},{key:"interfaces_",get:function(){return[Oe]}}],[{key:"constructor_",value:function(){if(this._precisionModel=null,this._coordinateSequenceFactory=null,this._SRID=null,arguments.length===0)v.constructor_.call(this,new xn,0);else if(arguments.length===1){if(ii(arguments[0],ue)){var o=arguments[0];v.constructor_.call(this,new xn,0,o)}else if(arguments[0]instanceof xn){var l=arguments[0];v.constructor_.call(this,l,0,v.getDefaultCoordinateSequenceFactory())}}else if(arguments.length===2){var c=arguments[0],g=arguments[1];v.constructor_.call(this,c,g,v.getDefaultCoordinateSequenceFactory())}else if(arguments.length===3){var S=arguments[0],R=arguments[1],F=arguments[2];this._precisionModel=S,this._coordinateSequenceFactory=F,this._SRID=R}}},{key:"toMultiPolygonArray",value:function(o){var l=new Array(o.size()).fill(null);return o.toArray(l)}},{key:"toGeometryArray",value:function(o){if(o===null)return null;var l=new Array(o.size()).fill(null);return o.toArray(l)}},{key:"getDefaultCoordinateSequenceFactory",value:function(){return Or.instance()}},{key:"toMultiLineStringArray",value:function(o){var l=new Array(o.size()).fill(null);return o.toArray(l)}},{key:"toLineStringArray",value:function(o){var l=new Array(o.size()).fill(null);return o.toArray(l)}},{key:"toMultiPointArray",value:function(o){var l=new Array(o.size()).fill(null);return o.toArray(l)}},{key:"toLinearRingArray",value:function(o){var l=new Array(o.size()).fill(null);return o.toArray(l)}},{key:"toPointArray",value:function(o){var l=new Array(o.size()).fill(null);return o.toArray(l)}},{key:"toPolygonArray",value:function(o){var l=new Array(o.size()).fill(null);return o.toArray(l)}},{key:"createPointFromInternalCoord",value:function(o,l){return l.getPrecisionModel().makePrecise(o),l.getFactory().createPoint(o)}}]),v}(),sn="XY",An="XYZ",hu="XYM",Zr="XYZM",ya={POINT:"Point",LINE_STRING:"LineString",LINEAR_RING:"LinearRing",POLYGON:"Polygon",MULTI_POINT:"MultiPoint",MULTI_LINE_STRING:"MultiLineString",MULTI_POLYGON:"MultiPolygon",GEOMETRY_COLLECTION:"GeometryCollection",CIRCLE:"Circle"},ul="EMPTY",oo=1,mt=2,Qt=3,ci=4,Cn=5,zr=6;for(var fi in ya)ya[fi].toUpperCase();var dr=function(){function v(o){w(this,v),this.wkt=o,this.index_=-1}return A(v,[{key:"isAlpha_",value:function(o){return o>="a"&&o<="z"||o>="A"&&o<="Z"}},{key:"isNumeric_",value:function(o,l){return o>="0"&&o<="9"||o=="."&&!(l!==void 0&&l)}},{key:"isWhiteSpace_",value:function(o){return o==" "||o==" "||o=="\r"||o==`
`}},{key:"nextChar_",value:function(){return this.wkt.charAt(++this.index_)}},{key:"nextToken",value:function(){var o,l=this.nextChar_(),c=this.index_,g=l;if(l=="(")o=mt;else if(l==",")o=Cn;else if(l==")")o=Qt;else if(this.isNumeric_(l)||l=="-")o=ci,g=this.readNumber_();else if(this.isAlpha_(l))o=oo,g=this.readText_();else{if(this.isWhiteSpace_(l))return this.nextToken();if(l!=="")throw new Error("Unexpected character: "+l);o=zr}return{position:c,value:g,type:o}}},{key:"readNumber_",value:function(){var o,l=this.index_,c=!1,g=!1;do o=="."?c=!0:o!="e"&&o!="E"||(g=!0),o=this.nextChar_();while(this.isNumeric_(o,c)||!g&&(o=="e"||o=="E")||g&&(o=="-"||o=="+"));return parseFloat(this.wkt.substring(l,this.index_--))}},{key:"readText_",value:function(){var o,l=this.index_;do o=this.nextChar_();while(this.isAlpha_(o));return this.wkt.substring(l,this.index_--).toUpperCase()}}]),v}(),Us=function(){function v(o,l){w(this,v),this.lexer_=o,this.token_,this.layout_=sn,this.factory=l}return A(v,[{key:"consume_",value:function(){this.token_=this.lexer_.nextToken()}},{key:"isTokenType",value:function(o){return this.token_.type==o}},{key:"match",value:function(o){var l=this.isTokenType(o);return l&&this.consume_(),l}},{key:"parse",value:function(){return this.consume_(),this.parseGeometry_()}},{key:"parseGeometryLayout_",value:function(){var o=sn,l=this.token_;if(this.isTokenType(oo)){var c=l.value;c==="Z"?o=An:c==="M"?o=hu:c==="ZM"&&(o=Zr),o!==sn&&this.consume_()}return o}},{key:"parseGeometryCollectionText_",value:function(){if(this.match(mt)){var o=[];do o.push(this.parseGeometry_());while(this.match(Cn));if(this.match(Qt))return o}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parsePointText_",value:function(){if(this.match(mt)){var o=this.parsePoint_();if(this.match(Qt))return o}else if(this.isEmptyGeometry_())return null;throw new Error(this.formatErrorMessage_())}},{key:"parseLineStringText_",value:function(){if(this.match(mt)){var o=this.parsePointList_();if(this.match(Qt))return o}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parsePolygonText_",value:function(){if(this.match(mt)){var o=this.parseLineStringTextList_();if(this.match(Qt))return o}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parseMultiPointText_",value:function(){var o;if(this.match(mt)){if(o=this.token_.type==mt?this.parsePointTextList_():this.parsePointList_(),this.match(Qt))return o}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parseMultiLineStringText_",value:function(){if(this.match(mt)){var o=this.parseLineStringTextList_();if(this.match(Qt))return o}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parseMultiPolygonText_",value:function(){if(this.match(mt)){var o=this.parsePolygonTextList_();if(this.match(Qt))return o}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parsePoint_",value:function(){for(var o=[],l=this.layout_.length,c=0;c<l;++c){var g=this.token_;if(!this.match(ci))break;o.push(g.value)}if(o.length==l)return o;throw new Error(this.formatErrorMessage_())}},{key:"parsePointList_",value:function(){for(var o=[this.parsePoint_()];this.match(Cn);)o.push(this.parsePoint_());return o}},{key:"parsePointTextList_",value:function(){for(var o=[this.parsePointText_()];this.match(Cn);)o.push(this.parsePointText_());return o}},{key:"parseLineStringTextList_",value:function(){for(var o=[this.parseLineStringText_()];this.match(Cn);)o.push(this.parseLineStringText_());return o}},{key:"parsePolygonTextList_",value:function(){for(var o=[this.parsePolygonText_()];this.match(Cn);)o.push(this.parsePolygonText_());return o}},{key:"isEmptyGeometry_",value:function(){var o=this.isTokenType(oo)&&this.token_.value==ul;return o&&this.consume_(),o}},{key:"formatErrorMessage_",value:function(){return"Unexpected `"+this.token_.value+"` at position "+this.token_.position+" in `"+this.lexer_.wkt+"`"}},{key:"parseGeometry_",value:function(){var o=this.factory,l=function(Ut){return oe(Fe,Tt(Ut))},c=function(Ut){var ei=Ut.map(function(yi){return o.createLinearRing(yi.map(l))});return ei.length>1?o.createPolygon(ei[0],ei.slice(1)):o.createPolygon(ei[0])},g=this.token_;if(this.match(oo)){var S=g.value;if(this.layout_=this.parseGeometryLayout_(),S=="GEOMETRYCOLLECTION"){var R=this.parseGeometryCollectionText_();return o.createGeometryCollection(R)}switch(S){case"POINT":var F=this.parsePointText_();return F?o.createPoint(oe(Fe,Tt(F))):o.createPoint();case"LINESTRING":var q=this.parseLineStringText_().map(l);return o.createLineString(q);case"LINEARRING":var Q=this.parseLineStringText_().map(l);return o.createLinearRing(Q);case"POLYGON":var Ee=this.parsePolygonText_();return Ee&&Ee.length!==0?c(Ee):o.createPolygon();case"MULTIPOINT":var Me=this.parseMultiPointText_();if(!Me||Me.length===0)return o.createMultiPoint();var Xe=Me.map(l).map(function(Ut){return o.createPoint(Ut)});return o.createMultiPoint(Xe);case"MULTILINESTRING":var pt=this.parseMultiLineStringText_().map(function(Ut){return o.createLineString(Ut.map(l))});return o.createMultiLineString(pt);case"MULTIPOLYGON":var dt=this.parseMultiPolygonText_();if(!dt||dt.length===0)return o.createMultiPolygon();var Vt=dt.map(c);return o.createMultiPolygon(Vt);default:throw new Error("Invalid geometry type: "+S)}}throw new Error(this.formatErrorMessage_())}}]),v}();function Eo(v){if(v.isEmpty())return"";var o=v.getCoordinate(),l=[o.x,o.y];return o.z===void 0||Number.isNaN(o.z)||l.push(o.z),o.m===void 0||Number.isNaN(o.m)||l.push(o.m),l.join(" ")}function jn(v){for(var o=v.getCoordinates().map(function(S){var R=[S.x,S.y];return S.z===void 0||Number.isNaN(S.z)||R.push(S.z),S.m===void 0||Number.isNaN(S.m)||R.push(S.m),R}),l=[],c=0,g=o.length;c<g;++c)l.push(o[c].join(" "));return l.join(", ")}function Zi(v){var o=[];o.push("("+jn(v.getExteriorRing())+")");for(var l=0,c=v.getNumInteriorRing();l<c;++l)o.push("("+jn(v.getInteriorRingN(l))+")");return o.join(", ")}var fu={Point:Eo,LineString:jn,LinearRing:jn,Polygon:Zi,MultiPoint:function(v){for(var o=[],l=0,c=v.getNumGeometries();l<c;++l)o.push("("+Eo(v.getGeometryN(l))+")");return o.join(", ")},MultiLineString:function(v){for(var o=[],l=0,c=v.getNumGeometries();l<c;++l)o.push("("+jn(v.getGeometryN(l))+")");return o.join(", ")},MultiPolygon:function(v){for(var o=[],l=0,c=v.getNumGeometries();l<c;++l)o.push("("+Zi(v.getGeometryN(l))+")");return o.join(", ")},GeometryCollection:function(v){for(var o=[],l=0,c=v.getNumGeometries();l<c;++l)o.push(Xr(v.getGeometryN(l)));return o.join(", ")}};function Xr(v){var o=v.getGeometryType(),l=fu[o];o=o.toUpperCase();var c=function(g){var S="";if(g.isEmpty())return S;var R=g.getCoordinate();return R.z===void 0||Number.isNaN(R.z)||(S+="Z"),R.m===void 0||Number.isNaN(R.m)||(S+="M"),S}(v);return c.length>0&&(o+=" "+c),v.isEmpty()?o+" "+ul:o+" ("+l(v)+")"}var js=function(){function v(o){w(this,v),this.geometryFactory=o||new nr,this.precisionModel=this.geometryFactory.getPrecisionModel()}return A(v,[{key:"read",value:function(o){var l=new dr(o);return new Us(l,this.geometryFactory).parse()}},{key:"write",value:function(o){return Xr(o)}}]),v}(),Uo=function(){function v(o){w(this,v),this.parser=new js(o)}return A(v,[{key:"write",value:function(o){return this.parser.write(o)}}],[{key:"toLineString",value:function(o,l){if(arguments.length!==2)throw new Error("Not implemented");return"LINESTRING ( "+o.x+" "+o.y+", "+l.x+" "+l.y+" )"}}]),v}(),Ji=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getIndexAlongSegment",value:function(o,l){return this.computeIntLineIndex(),this._intLineIndex[o][l]}},{key:"getTopologySummary",value:function(){var o=new Bo;return this.isEndPoint()&&o.append(" endpoint"),this._isProper&&o.append(" proper"),this.isCollinear()&&o.append(" collinear"),o.toString()}},{key:"computeIntersection",value:function(o,l,c,g){this._inputLines[0][0]=o,this._inputLines[0][1]=l,this._inputLines[1][0]=c,this._inputLines[1][1]=g,this._result=this.computeIntersect(o,l,c,g)}},{key:"getIntersectionNum",value:function(){return this._result}},{key:"computeIntLineIndex",value:function(){if(arguments.length===0)this._intLineIndex===null&&(this._intLineIndex=Array(2).fill().map(function(){return Array(2)}),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(arguments.length===1){var o=arguments[0],l=this.getEdgeDistance(o,0),c=this.getEdgeDistance(o,1);l>c?(this._intLineIndex[o][0]=0,this._intLineIndex[o][1]=1):(this._intLineIndex[o][0]=1,this._intLineIndex[o][1]=0)}}},{key:"isProper",value:function(){return this.hasIntersection()&&this._isProper}},{key:"setPrecisionModel",value:function(o){this._precisionModel=o}},{key:"isInteriorIntersection",value:function(){if(arguments.length===0)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(arguments.length===1){for(var o=arguments[0],l=0;l<this._result;l++)if(!this._intPt[l].equals2D(this._inputLines[o][0])&&!this._intPt[l].equals2D(this._inputLines[o][1]))return!0;return!1}}},{key:"getIntersection",value:function(o){return this._intPt[o]}},{key:"isEndPoint",value:function(){return this.hasIntersection()&&!this._isProper}},{key:"hasIntersection",value:function(){return this._result!==v.NO_INTERSECTION}},{key:"getEdgeDistance",value:function(o,l){return v.computeEdgeDistance(this._intPt[l],this._inputLines[o][0],this._inputLines[o][1])}},{key:"isCollinear",value:function(){return this._result===v.COLLINEAR_INTERSECTION}},{key:"toString",value:function(){return Uo.toLineString(this._inputLines[0][0],this._inputLines[0][1])+" - "+Uo.toLineString(this._inputLines[1][0],this._inputLines[1][1])+this.getTopologySummary()}},{key:"getEndpoint",value:function(o,l){return this._inputLines[o][l]}},{key:"isIntersection",value:function(o){for(var l=0;l<this._result;l++)if(this._intPt[l].equals2D(o))return!0;return!1}},{key:"getIntersectionAlongSegment",value:function(o,l){return this.computeIntLineIndex(),this._intPt[this._intLineIndex[o][l]]}}],[{key:"constructor_",value:function(){this._result=null,this._inputLines=Array(2).fill().map(function(){return Array(2)}),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new Fe,this._intPt[1]=new Fe,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0}},{key:"computeEdgeDistance",value:function(o,l,c){var g=Math.abs(c.x-l.x),S=Math.abs(c.y-l.y),R=-1;if(o.equals(l))R=0;else if(o.equals(c))R=g>S?g:S;else{var F=Math.abs(o.x-l.x),q=Math.abs(o.y-l.y);(R=g>S?F:q)!==0||o.equals(l)||(R=Math.max(F,q))}return Dt.isTrue(!(R===0&&!o.equals(l)),"Bad distance calculation"),R}},{key:"nonRobustComputeEdgeDistance",value:function(o,l,c){var g=o.x-l.x,S=o.y-l.y,R=Math.sqrt(g*g+S*S);return Dt.isTrue(!(R===0&&!o.equals(l)),"Invalid distance calculation"),R}}]),v}();Ji.DONT_INTERSECT=0,Ji.DO_INTERSECT=1,Ji.COLLINEAR=2,Ji.NO_INTERSECTION=0,Ji.POINT_INTERSECTION=1,Ji.COLLINEAR_INTERSECTION=2;var To=function(v){O(l,v);var o=ye(l);function l(){return w(this,l),o.call(this)}return A(l,[{key:"isInSegmentEnvelopes",value:function(c){var g=new Ci(this._inputLines[0][0],this._inputLines[0][1]),S=new Ci(this._inputLines[1][0],this._inputLines[1][1]);return g.contains(c)&&S.contains(c)}},{key:"computeIntersection",value:function(){if(arguments.length!==3)return Ie($(l.prototype),"computeIntersection",this).apply(this,arguments);var c=arguments[0],g=arguments[1],S=arguments[2];if(this._isProper=!1,Ci.intersects(g,S,c)&&Yt.index(g,S,c)===0&&Yt.index(S,g,c)===0)return this._isProper=!0,(c.equals(g)||c.equals(S))&&(this._isProper=!1),this._result=Ji.POINT_INTERSECTION,null;this._result=Ji.NO_INTERSECTION}},{key:"intersection",value:function(c,g,S,R){var F=this.intersectionSafe(c,g,S,R);return this.isInSegmentEnvelopes(F)||(F=new Fe(l.nearestEndpoint(c,g,S,R))),this._precisionModel!==null&&this._precisionModel.makePrecise(F),F}},{key:"checkDD",value:function(c,g,S,R,F){var q=zo.intersection(c,g,S,R),Q=this.isInSegmentEnvelopes(q);ce.out.println("DD in env = "+Q+" --------------------- "+q),F.distance(q)>1e-4&&ce.out.println("Distance = "+F.distance(q))}},{key:"intersectionSafe",value:function(c,g,S,R){var F=gs.intersection(c,g,S,R);return F===null&&(F=l.nearestEndpoint(c,g,S,R)),F}},{key:"computeCollinearIntersection",value:function(c,g,S,R){var F=Ci.intersects(c,g,S),q=Ci.intersects(c,g,R),Q=Ci.intersects(S,R,c),Ee=Ci.intersects(S,R,g);return F&&q?(this._intPt[0]=S,this._intPt[1]=R,Ji.COLLINEAR_INTERSECTION):Q&&Ee?(this._intPt[0]=c,this._intPt[1]=g,Ji.COLLINEAR_INTERSECTION):F&&Q?(this._intPt[0]=S,this._intPt[1]=c,!S.equals(c)||q||Ee?Ji.COLLINEAR_INTERSECTION:Ji.POINT_INTERSECTION):F&&Ee?(this._intPt[0]=S,this._intPt[1]=g,!S.equals(g)||q||Q?Ji.COLLINEAR_INTERSECTION:Ji.POINT_INTERSECTION):q&&Q?(this._intPt[0]=R,this._intPt[1]=c,!R.equals(c)||F||Ee?Ji.COLLINEAR_INTERSECTION:Ji.POINT_INTERSECTION):q&&Ee?(this._intPt[0]=R,this._intPt[1]=g,!R.equals(g)||F||Q?Ji.COLLINEAR_INTERSECTION:Ji.POINT_INTERSECTION):Ji.NO_INTERSECTION}},{key:"computeIntersect",value:function(c,g,S,R){if(this._isProper=!1,!Ci.intersects(c,g,S,R))return Ji.NO_INTERSECTION;var F=Yt.index(c,g,S),q=Yt.index(c,g,R);if(F>0&&q>0||F<0&&q<0)return Ji.NO_INTERSECTION;var Q=Yt.index(S,R,c),Ee=Yt.index(S,R,g);return Q>0&&Ee>0||Q<0&&Ee<0?Ji.NO_INTERSECTION:F===0&&q===0&&Q===0&&Ee===0?this.computeCollinearIntersection(c,g,S,R):(F===0||q===0||Q===0||Ee===0?(this._isProper=!1,c.equals2D(S)||c.equals2D(R)?this._intPt[0]=c:g.equals2D(S)||g.equals2D(R)?this._intPt[0]=g:F===0?this._intPt[0]=new Fe(S):q===0?this._intPt[0]=new Fe(R):Q===0?this._intPt[0]=new Fe(c):Ee===0&&(this._intPt[0]=new Fe(g))):(this._isProper=!0,this._intPt[0]=this.intersection(c,g,S,R)),Ji.POINT_INTERSECTION)}}],[{key:"nearestEndpoint",value:function(c,g,S,R){var F=c,q=W.pointToSegment(c,S,R),Q=W.pointToSegment(g,S,R);return Q<q&&(q=Q,F=g),(Q=W.pointToSegment(S,c,g))<q&&(q=Q,F=S),(Q=W.pointToSegment(R,c,g))<q&&(q=Q,F=R),F}}]),l}(Ji),Vs=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"countSegment",value:function(o,l){if(o.x<this._p.x&&l.x<this._p.x)return null;if(this._p.x===l.x&&this._p.y===l.y)return this._isPointOnSegment=!0,null;if(o.y===this._p.y&&l.y===this._p.y){var c=o.x,g=l.x;return c>g&&(c=l.x,g=o.x),this._p.x>=c&&this._p.x<=g&&(this._isPointOnSegment=!0),null}if(o.y>this._p.y&&l.y<=this._p.y||l.y>this._p.y&&o.y<=this._p.y){var S=Yt.index(o,l,this._p);if(S===Yt.COLLINEAR)return this._isPointOnSegment=!0,null;l.y<o.y&&(S=-S),S===Yt.LEFT&&this._crossingCount++}}},{key:"isPointInPolygon",value:function(){return this.getLocation()!==me.EXTERIOR}},{key:"getLocation",value:function(){return this._isPointOnSegment?me.BOUNDARY:this._crossingCount%2==1?me.INTERIOR:me.EXTERIOR}},{key:"isOnSegment",value:function(){return this._isPointOnSegment}}],[{key:"constructor_",value:function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var o=arguments[0];this._p=o}},{key:"locatePointInRing",value:function(){if(arguments[0]instanceof Fe&&ii(arguments[1],_i)){for(var o=arguments[0],l=arguments[1],c=new v(o),g=new Fe,S=new Fe,R=1;R<l.size();R++)if(l.getCoordinate(R,g),l.getCoordinate(R-1,S),c.countSegment(g,S),c.isOnSegment())return c.getLocation();return c.getLocation()}if(arguments[0]instanceof Fe&&arguments[1]instanceof Array){for(var F=arguments[0],q=arguments[1],Q=new v(F),Ee=1;Ee<q.length;Ee++){var Me=q[Ee],Xe=q[Ee-1];if(Q.countSegment(Me,Xe),Q.isOnSegment())return Q.getLocation()}return Q.getLocation()}}}]),v}(),jo=function(){function v(){w(this,v)}return A(v,null,[{key:"isOnLine",value:function(){if(arguments[0]instanceof Fe&&ii(arguments[1],_i)){for(var o=arguments[0],l=arguments[1],c=new To,g=new Fe,S=new Fe,R=l.size(),F=1;F<R;F++)if(l.getCoordinate(F-1,g),l.getCoordinate(F,S),c.computeIntersection(o,g,S),c.hasIntersection())return!0;return!1}if(arguments[0]instanceof Fe&&arguments[1]instanceof Array){for(var q=arguments[0],Q=arguments[1],Ee=new To,Me=1;Me<Q.length;Me++){var Xe=Q[Me-1],pt=Q[Me];if(Ee.computeIntersection(q,Xe,pt),Ee.hasIntersection())return!0}return!1}}},{key:"locateInRing",value:function(o,l){return Vs.locatePointInRing(o,l)}},{key:"isInRing",value:function(o,l){return v.locateInRing(o,l)!==me.EXTERIOR}}]),v}(),Yn=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"setAllLocations",value:function(o){for(var l=0;l<this.location.length;l++)this.location[l]=o}},{key:"isNull",value:function(){for(var o=0;o<this.location.length;o++)if(this.location[o]!==me.NONE)return!1;return!0}},{key:"setAllLocationsIfNull",value:function(o){for(var l=0;l<this.location.length;l++)this.location[l]===me.NONE&&(this.location[l]=o)}},{key:"isLine",value:function(){return this.location.length===1}},{key:"merge",value:function(o){if(o.location.length>this.location.length){var l=new Array(3).fill(null);l[ct.ON]=this.location[ct.ON],l[ct.LEFT]=me.NONE,l[ct.RIGHT]=me.NONE,this.location=l}for(var c=0;c<this.location.length;c++)this.location[c]===me.NONE&&c<o.location.length&&(this.location[c]=o.location[c])}},{key:"getLocations",value:function(){return this.location}},{key:"flip",value:function(){if(this.location.length<=1)return null;var o=this.location[ct.LEFT];this.location[ct.LEFT]=this.location[ct.RIGHT],this.location[ct.RIGHT]=o}},{key:"toString",value:function(){var o=new bo;return this.location.length>1&&o.append(me.toLocationSymbol(this.location[ct.LEFT])),o.append(me.toLocationSymbol(this.location[ct.ON])),this.location.length>1&&o.append(me.toLocationSymbol(this.location[ct.RIGHT])),o.toString()}},{key:"setLocations",value:function(o,l,c){this.location[ct.ON]=o,this.location[ct.LEFT]=l,this.location[ct.RIGHT]=c}},{key:"get",value:function(o){return o<this.location.length?this.location[o]:me.NONE}},{key:"isArea",value:function(){return this.location.length>1}},{key:"isAnyNull",value:function(){for(var o=0;o<this.location.length;o++)if(this.location[o]===me.NONE)return!0;return!1}},{key:"setLocation",value:function(){if(arguments.length===1){var o=arguments[0];this.setLocation(ct.ON,o)}else if(arguments.length===2){var l=arguments[0],c=arguments[1];this.location[l]=c}}},{key:"init",value:function(o){this.location=new Array(o).fill(null),this.setAllLocations(me.NONE)}},{key:"isEqualOnSide",value:function(o,l){return this.location[l]===o.location[l]}},{key:"allPositionsEqual",value:function(o){for(var l=0;l<this.location.length;l++)if(this.location[l]!==o)return!1;return!0}}],[{key:"constructor_",value:function(){if(this.location=null,arguments.length===1){if(arguments[0]instanceof Array){var o=arguments[0];this.init(o.length)}else if(Number.isInteger(arguments[0])){var l=arguments[0];this.init(1),this.location[ct.ON]=l}else if(arguments[0]instanceof v){var c=arguments[0];if(this.init(c.location.length),c!==null)for(var g=0;g<this.location.length;g++)this.location[g]=c.location[g]}}else if(arguments.length===3){var S=arguments[0],R=arguments[1],F=arguments[2];this.init(3),this.location[ct.ON]=S,this.location[ct.LEFT]=R,this.location[ct.RIGHT]=F}}}]),v}(),On=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getGeometryCount",value:function(){var o=0;return this.elt[0].isNull()||o++,this.elt[1].isNull()||o++,o}},{key:"setAllLocations",value:function(o,l){this.elt[o].setAllLocations(l)}},{key:"isNull",value:function(o){return this.elt[o].isNull()}},{key:"setAllLocationsIfNull",value:function(){if(arguments.length===1){var o=arguments[0];this.setAllLocationsIfNull(0,o),this.setAllLocationsIfNull(1,o)}else if(arguments.length===2){var l=arguments[0],c=arguments[1];this.elt[l].setAllLocationsIfNull(c)}}},{key:"isLine",value:function(o){return this.elt[o].isLine()}},{key:"merge",value:function(o){for(var l=0;l<2;l++)this.elt[l]===null&&o.elt[l]!==null?this.elt[l]=new Yn(o.elt[l]):this.elt[l].merge(o.elt[l])}},{key:"flip",value:function(){this.elt[0].flip(),this.elt[1].flip()}},{key:"getLocation",value:function(){if(arguments.length===1){var o=arguments[0];return this.elt[o].get(ct.ON)}if(arguments.length===2){var l=arguments[0],c=arguments[1];return this.elt[l].get(c)}}},{key:"toString",value:function(){var o=new bo;return this.elt[0]!==null&&(o.append("A:"),o.append(this.elt[0].toString())),this.elt[1]!==null&&(o.append(" B:"),o.append(this.elt[1].toString())),o.toString()}},{key:"isArea",value:function(){if(arguments.length===0)return this.elt[0].isArea()||this.elt[1].isArea();if(arguments.length===1){var o=arguments[0];return this.elt[o].isArea()}}},{key:"isAnyNull",value:function(o){return this.elt[o].isAnyNull()}},{key:"setLocation",value:function(){if(arguments.length===2){var o=arguments[0],l=arguments[1];this.elt[o].setLocation(ct.ON,l)}else if(arguments.length===3){var c=arguments[0],g=arguments[1],S=arguments[2];this.elt[c].setLocation(g,S)}}},{key:"isEqualOnSide",value:function(o,l){return this.elt[0].isEqualOnSide(o.elt[0],l)&&this.elt[1].isEqualOnSide(o.elt[1],l)}},{key:"allPositionsEqual",value:function(o,l){return this.elt[o].allPositionsEqual(l)}},{key:"toLine",value:function(o){this.elt[o].isArea()&&(this.elt[o]=new Yn(this.elt[o].location[0]))}}],[{key:"constructor_",value:function(){if(this.elt=new Array(2).fill(null),arguments.length===1){if(Number.isInteger(arguments[0])){var o=arguments[0];this.elt[0]=new Yn(o),this.elt[1]=new Yn(o)}else if(arguments[0]instanceof v){var l=arguments[0];this.elt[0]=new Yn(l.elt[0]),this.elt[1]=new Yn(l.elt[1])}}else if(arguments.length===2){var c=arguments[0],g=arguments[1];this.elt[0]=new Yn(me.NONE),this.elt[1]=new Yn(me.NONE),this.elt[c].setLocation(g)}else if(arguments.length===3){var S=arguments[0],R=arguments[1],F=arguments[2];this.elt[0]=new Yn(S,R,F),this.elt[1]=new Yn(S,R,F)}else if(arguments.length===4){var q=arguments[0],Q=arguments[1],Ee=arguments[2],Me=arguments[3];this.elt[0]=new Yn(me.NONE,me.NONE,me.NONE),this.elt[1]=new Yn(me.NONE,me.NONE,me.NONE),this.elt[q].setLocations(Q,Ee,Me)}}},{key:"toLineLabel",value:function(o){for(var l=new v(me.NONE),c=0;c<2;c++)l.setLocation(c,o.getLocation(c));return l}}]),v}(),zn=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"computeRing",value:function(){if(this._ring!==null)return null;for(var o=new Array(this._pts.size()).fill(null),l=0;l<this._pts.size();l++)o[l]=this._pts.get(l);this._ring=this._geometryFactory.createLinearRing(o),this._isHole=Yt.isCCW(this._ring.getCoordinates())}},{key:"isIsolated",value:function(){return this._label.getGeometryCount()===1}},{key:"computePoints",value:function(o){this._startDe=o;var l=o,c=!0;do{if(l===null)throw new Wn("Found null DirectedEdge");if(l.getEdgeRing()===this)throw new Wn("Directed Edge visited twice during ring-building at "+l.getCoordinate());this._edges.add(l);var g=l.getLabel();Dt.isTrue(g.isArea()),this.mergeLabel(g),this.addPoints(l.getEdge(),l.isForward(),c),c=!1,this.setEdgeRing(l,this),l=this.getNext(l)}while(l!==this._startDe)}},{key:"getLinearRing",value:function(){return this._ring}},{key:"getCoordinate",value:function(o){return this._pts.get(o)}},{key:"computeMaxNodeDegree",value:function(){this._maxNodeDegree=0;var o=this._startDe;do{var l=o.getNode().getEdges().getOutgoingDegree(this);l>this._maxNodeDegree&&(this._maxNodeDegree=l),o=this.getNext(o)}while(o!==this._startDe);this._maxNodeDegree*=2}},{key:"addPoints",value:function(o,l,c){var g=o.getCoordinates();if(l){var S=1;c&&(S=0);for(var R=S;R<g.length;R++)this._pts.add(g[R])}else{var F=g.length-2;c&&(F=g.length-1);for(var q=F;q>=0;q--)this._pts.add(g[q])}}},{key:"isHole",value:function(){return this._isHole}},{key:"setInResult",value:function(){var o=this._startDe;do o.getEdge().setInResult(!0),o=o.getNext();while(o!==this._startDe)}},{key:"containsPoint",value:function(o){var l=this.getLinearRing();if(!l.getEnvelopeInternal().contains(o)||!jo.isInRing(o,l.getCoordinates()))return!1;for(var c=this._holes.iterator();c.hasNext();)if(c.next().containsPoint(o))return!1;return!0}},{key:"addHole",value:function(o){this._holes.add(o)}},{key:"isShell",value:function(){return this._shell===null}},{key:"getLabel",value:function(){return this._label}},{key:"getEdges",value:function(){return this._edges}},{key:"getMaxNodeDegree",value:function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree}},{key:"getShell",value:function(){return this._shell}},{key:"mergeLabel",value:function(){if(arguments.length===1){var o=arguments[0];this.mergeLabel(o,0),this.mergeLabel(o,1)}else if(arguments.length===2){var l=arguments[0],c=arguments[1],g=l.getLocation(c,ct.RIGHT);if(g===me.NONE)return null;if(this._label.getLocation(c)===me.NONE)return this._label.setLocation(c,g),null}}},{key:"setShell",value:function(o){this._shell=o,o!==null&&o.addHole(this)}},{key:"toPolygon",value:function(o){for(var l=new Array(this._holes.size()).fill(null),c=0;c<this._holes.size();c++)l[c]=this._holes.get(c).getLinearRing();return o.createPolygon(this.getLinearRing(),l)}}],[{key:"constructor_",value:function(){if(this._startDe=null,this._maxNodeDegree=-1,this._edges=new qt,this._pts=new qt,this._label=new On(me.NONE),this._ring=null,this._isHole=null,this._shell=null,this._holes=new qt,this._geometryFactory=null,arguments.length!==0){if(arguments.length===2){var o=arguments[0],l=arguments[1];this._geometryFactory=l,this.computePoints(o),this.computeRing()}}}}]),v}(),hn=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"setEdgeRing",value:function(c,g){c.setMinEdgeRing(g)}},{key:"getNext",value:function(c){return c.getNextMin()}}],[{key:"constructor_",value:function(){var c=arguments[0],g=arguments[1];zn.constructor_.call(this,c,g)}}]),l}(zn),cl=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"buildMinimalRings",value:function(){var c=new qt,g=this._startDe;do{if(g.getMinEdgeRing()===null){var S=new hn(g,this._geometryFactory);c.add(S)}g=g.getNext()}while(g!==this._startDe);return c}},{key:"setEdgeRing",value:function(c,g){c.setEdgeRing(g)}},{key:"linkDirectedEdgesForMinimalEdgeRings",value:function(){var c=this._startDe;do c.getNode().getEdges().linkMinimalDirectedEdges(this),c=c.getNext();while(c!==this._startDe)}},{key:"getNext",value:function(c){return c.getNext()}}],[{key:"constructor_",value:function(){var c=arguments[0],g=arguments[1];zn.constructor_.call(this,c,g)}}]),l}(zn),va=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"setVisited",value:function(o){this._isVisited=o}},{key:"setInResult",value:function(o){this._isInResult=o}},{key:"isCovered",value:function(){return this._isCovered}},{key:"isCoveredSet",value:function(){return this._isCoveredSet}},{key:"setLabel",value:function(o){this._label=o}},{key:"getLabel",value:function(){return this._label}},{key:"setCovered",value:function(o){this._isCovered=o,this._isCoveredSet=!0}},{key:"updateIM",value:function(o){Dt.isTrue(this._label.getGeometryCount()>=2,"found partial label"),this.computeIM(o)}},{key:"isInResult",value:function(){return this._isInResult}},{key:"isVisited",value:function(){return this._isVisited}}],[{key:"constructor_",value:function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,arguments.length!==0){if(arguments.length===1){var o=arguments[0];this._label=o}}}}]),v}(),Nn=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"isIncidentEdgeInResult",value:function(){for(var c=this.getEdges().getEdges().iterator();c.hasNext();)if(c.next().getEdge().isInResult())return!0;return!1}},{key:"isIsolated",value:function(){return this._label.getGeometryCount()===1}},{key:"getCoordinate",value:function(){return this._coord}},{key:"print",value:function(c){c.println("node "+this._coord+" lbl: "+this._label)}},{key:"computeIM",value:function(c){}},{key:"computeMergedLocation",value:function(c,g){var S=me.NONE;if(S=this._label.getLocation(g),!c.isNull(g)){var R=c.getLocation(g);S!==me.BOUNDARY&&(S=R)}return S}},{key:"setLabel",value:function(){if(arguments.length!==2||!Number.isInteger(arguments[1])||!Number.isInteger(arguments[0]))return Ie($(l.prototype),"setLabel",this).apply(this,arguments);var c=arguments[0],g=arguments[1];this._label===null?this._label=new On(c,g):this._label.setLocation(c,g)}},{key:"getEdges",value:function(){return this._edges}},{key:"mergeLabel",value:function(){if(arguments[0]instanceof l){var c=arguments[0];this.mergeLabel(c._label)}else if(arguments[0]instanceof On)for(var g=arguments[0],S=0;S<2;S++){var R=this.computeMergedLocation(g,S),F=this._label.getLocation(S);F===me.NONE&&this._label.setLocation(S,R)}}},{key:"add",value:function(c){this._edges.insert(c),c.setNode(this)}},{key:"setLabelBoundary",value:function(c){if(this._label===null)return null;var g=me.NONE;this._label!==null&&(g=this._label.getLocation(c));var S=null;switch(g){case me.BOUNDARY:S=me.INTERIOR;break;case me.INTERIOR:default:S=me.BOUNDARY}this._label.setLocation(c,S)}}],[{key:"constructor_",value:function(){this._coord=null,this._edges=null;var c=arguments[0],g=arguments[1];this._coord=c,this._edges=g,this._label=new On(0,me.NONE)}}]),l}(va),wr=function(v){O(l,v);var o=ye(l);function l(){return w(this,l),o.apply(this,arguments)}return l}(_a);function hl(v){return v==null?0:v.color}function Ei(v){return v==null?null:v.parent}function Li(v,o){v!==null&&(v.color=o)}function Vo(v){return v==null?null:v.left}function xa(v){return v==null?null:v.right}var Nr=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),(c=o.call(this)).root_=null,c.size_=0,c}return A(l,[{key:"get",value:function(c){for(var g=this.root_;g!==null;){var S=c.compareTo(g.key);if(S<0)g=g.left;else{if(!(S>0))return g.value;g=g.right}}return null}},{key:"put",value:function(c,g){if(this.root_===null)return this.root_={key:c,value:g,left:null,right:null,parent:null,color:0,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var S,R,F=this.root_;do if(S=F,(R=c.compareTo(F.key))<0)F=F.left;else{if(!(R>0)){var q=F.value;return F.value=g,q}F=F.right}while(F!==null);var Q={key:c,left:null,right:null,value:g,parent:S,color:0,getValue:function(){return this.value},getKey:function(){return this.key}};return R<0?S.left=Q:S.right=Q,this.fixAfterInsertion(Q),this.size_++,null}},{key:"fixAfterInsertion",value:function(c){var g;for(c.color=1;c!=null&&c!==this.root_&&c.parent.color===1;)Ei(c)===Vo(Ei(Ei(c)))?hl(g=xa(Ei(Ei(c))))===1?(Li(Ei(c),0),Li(g,0),Li(Ei(Ei(c)),1),c=Ei(Ei(c))):(c===xa(Ei(c))&&(c=Ei(c),this.rotateLeft(c)),Li(Ei(c),0),Li(Ei(Ei(c)),1),this.rotateRight(Ei(Ei(c)))):hl(g=Vo(Ei(Ei(c))))===1?(Li(Ei(c),0),Li(g,0),Li(Ei(Ei(c)),1),c=Ei(Ei(c))):(c===Vo(Ei(c))&&(c=Ei(c),this.rotateRight(c)),Li(Ei(c),0),Li(Ei(Ei(c)),1),this.rotateLeft(Ei(Ei(c))));this.root_.color=0}},{key:"values",value:function(){var c=new qt,g=this.getFirstEntry();if(g!==null)for(c.add(g.value);(g=l.successor(g))!==null;)c.add(g.value);return c}},{key:"entrySet",value:function(){var c=new ps,g=this.getFirstEntry();if(g!==null)for(c.add(g);(g=l.successor(g))!==null;)c.add(g);return c}},{key:"rotateLeft",value:function(c){if(c!=null){var g=c.right;c.right=g.left,g.left!=null&&(g.left.parent=c),g.parent=c.parent,c.parent==null?this.root_=g:c.parent.left===c?c.parent.left=g:c.parent.right=g,g.left=c,c.parent=g}}},{key:"rotateRight",value:function(c){if(c!=null){var g=c.left;c.left=g.right,g.right!=null&&(g.right.parent=c),g.parent=c.parent,c.parent==null?this.root_=g:c.parent.right===c?c.parent.right=g:c.parent.left=g,g.right=c,c.parent=g}}},{key:"getFirstEntry",value:function(){var c=this.root_;if(c!=null)for(;c.left!=null;)c=c.left;return c}},{key:"size",value:function(){return this.size_}},{key:"containsKey",value:function(c){for(var g=this.root_;g!==null;){var S=c.compareTo(g.key);if(S<0)g=g.left;else{if(!(S>0))return!0;g=g.right}}return!1}}],[{key:"successor",value:function(c){var g;if(c===null)return null;if(c.right!==null){for(g=c.right;g.left!==null;)g=g.left;return g}g=c.parent;for(var S=c;g!==null&&S===g.right;)S=g,g=g.parent;return g}}]),l}(wr),Pn=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"find",value:function(o){return this.nodeMap.get(o)}},{key:"addNode",value:function(){if(arguments[0]instanceof Fe){var o=arguments[0],l=this.nodeMap.get(o);return l===null&&(l=this.nodeFact.createNode(o),this.nodeMap.put(o,l)),l}if(arguments[0]instanceof Nn){var c=arguments[0],g=this.nodeMap.get(c.getCoordinate());return g===null?(this.nodeMap.put(c.getCoordinate(),c),c):(g.mergeLabel(c),g)}}},{key:"print",value:function(o){for(var l=this.iterator();l.hasNext();)l.next().print(o)}},{key:"iterator",value:function(){return this.nodeMap.values().iterator()}},{key:"values",value:function(){return this.nodeMap.values()}},{key:"getBoundaryNodes",value:function(o){for(var l=new qt,c=this.iterator();c.hasNext();){var g=c.next();g.getLabel().getLocation(o)===me.BOUNDARY&&l.add(g)}return l}},{key:"add",value:function(o){var l=o.getCoordinate();this.addNode(l).add(o)}}],[{key:"constructor_",value:function(){this.nodeMap=new Nr,this.nodeFact=null;var o=arguments[0];this.nodeFact=o}}]),v}(),Bn=function(){function v(){w(this,v)}return A(v,null,[{key:"isNorthern",value:function(o){return o===v.NE||o===v.NW}},{key:"isOpposite",value:function(o,l){return o!==l&&(o-l+4)%4===2}},{key:"commonHalfPlane",value:function(o,l){if(o===l)return o;if((o-l+4)%4===2)return-1;var c=o<l?o:l;return c===0&&(o>l?o:l)===3?3:c}},{key:"isInHalfPlane",value:function(o,l){return l===v.SE?o===v.SE||o===v.SW:o===l||o===l+1}},{key:"quadrant",value:function(){if(typeof arguments[0]=="number"&&typeof arguments[1]=="number"){var o=arguments[0],l=arguments[1];if(o===0&&l===0)throw new ut("Cannot compute the quadrant for point ( "+o+", "+l+" )");return o>=0?l>=0?v.NE:v.SE:l>=0?v.NW:v.SW}if(arguments[0]instanceof Fe&&arguments[1]instanceof Fe){var c=arguments[0],g=arguments[1];if(g.x===c.x&&g.y===c.y)throw new ut("Cannot compute the quadrant for two identical points "+c);return g.x>=c.x?g.y>=c.y?v.NE:v.SE:g.y>=c.y?v.NW:v.SW}}}]),v}();Bn.NE=0,Bn.NW=1,Bn.SW=2,Bn.SE=3;var ba=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"compareDirection",value:function(o){return this._dx===o._dx&&this._dy===o._dy?0:this._quadrant>o._quadrant?1:this._quadrant<o._quadrant?-1:Yt.index(o._p0,o._p1,this._p1)}},{key:"getDy",value:function(){return this._dy}},{key:"getCoordinate",value:function(){return this._p0}},{key:"setNode",value:function(o){this._node=o}},{key:"print",value:function(o){var l=Math.atan2(this._dy,this._dx),c=this.getClass().getName(),g=c.lastIndexOf("."),S=c.substring(g+1);o.print(" "+S+": "+this._p0+" - "+this._p1+" "+this._quadrant+":"+l+" "+this._label)}},{key:"compareTo",value:function(o){var l=o;return this.compareDirection(l)}},{key:"getDirectedCoordinate",value:function(){return this._p1}},{key:"getDx",value:function(){return this._dx}},{key:"getLabel",value:function(){return this._label}},{key:"getEdge",value:function(){return this._edge}},{key:"getQuadrant",value:function(){return this._quadrant}},{key:"getNode",value:function(){return this._node}},{key:"toString",value:function(){var o=Math.atan2(this._dy,this._dx),l=this.getClass().getName(),c=l.lastIndexOf(".");return" "+l.substring(c+1)+": "+this._p0+" - "+this._p1+" "+this._quadrant+":"+o+" "+this._label}},{key:"computeLabel",value:function(o){}},{key:"init",value:function(o,l){this._p0=o,this._p1=l,this._dx=l.x-o.x,this._dy=l.y-o.y,this._quadrant=Bn.quadrant(this._dx,this._dy),Dt.isTrue(!(this._dx===0&&this._dy===0),"EdgeEnd with identical endpoints found")}},{key:"interfaces_",get:function(){return[_t]}}],[{key:"constructor_",value:function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,arguments.length===1){var o=arguments[0];this._edge=o}else if(arguments.length===3){var l=arguments[0],c=arguments[1],g=arguments[2];v.constructor_.call(this,l,c,g,null)}else if(arguments.length===4){var S=arguments[0],R=arguments[1],F=arguments[2],q=arguments[3];v.constructor_.call(this,S),this.init(R,F),this._label=q}}}]),v}(),Br=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"getNextMin",value:function(){return this._nextMin}},{key:"getDepth",value:function(c){return this._depth[c]}},{key:"setVisited",value:function(c){this._isVisited=c}},{key:"computeDirectedLabel",value:function(){this._label=new On(this._edge.getLabel()),this._isForward||this._label.flip()}},{key:"getNext",value:function(){return this._next}},{key:"setDepth",value:function(c,g){if(this._depth[c]!==-999&&this._depth[c]!==g)throw new Wn("assigned depths do not match",this.getCoordinate());this._depth[c]=g}},{key:"isInteriorAreaEdge",value:function(){for(var c=!0,g=0;g<2;g++)this._label.isArea(g)&&this._label.getLocation(g,ct.LEFT)===me.INTERIOR&&this._label.getLocation(g,ct.RIGHT)===me.INTERIOR||(c=!1);return c}},{key:"setNextMin",value:function(c){this._nextMin=c}},{key:"print",value:function(c){Ie($(l.prototype),"print",this).call(this,c),c.print(" "+this._depth[ct.LEFT]+"/"+this._depth[ct.RIGHT]),c.print(" ("+this.getDepthDelta()+")"),this._isInResult&&c.print(" inResult")}},{key:"setMinEdgeRing",value:function(c){this._minEdgeRing=c}},{key:"isLineEdge",value:function(){var c=this._label.isLine(0)||this._label.isLine(1),g=!this._label.isArea(0)||this._label.allPositionsEqual(0,me.EXTERIOR),S=!this._label.isArea(1)||this._label.allPositionsEqual(1,me.EXTERIOR);return c&&g&&S}},{key:"setEdgeRing",value:function(c){this._edgeRing=c}},{key:"getMinEdgeRing",value:function(){return this._minEdgeRing}},{key:"getDepthDelta",value:function(){var c=this._edge.getDepthDelta();return this._isForward||(c=-c),c}},{key:"setInResult",value:function(c){this._isInResult=c}},{key:"getSym",value:function(){return this._sym}},{key:"isForward",value:function(){return this._isForward}},{key:"getEdge",value:function(){return this._edge}},{key:"printEdge",value:function(c){this.print(c),c.print(" "),this._isForward?this._edge.print(c):this._edge.printReverse(c)}},{key:"setSym",value:function(c){this._sym=c}},{key:"setVisitedEdge",value:function(c){this.setVisited(c),this._sym.setVisited(c)}},{key:"setEdgeDepths",value:function(c,g){var S=this.getEdge().getDepthDelta();this._isForward||(S=-S);var R=1;c===ct.LEFT&&(R=-1);var F=ct.opposite(c),q=g+S*R;this.setDepth(c,g),this.setDepth(F,q)}},{key:"getEdgeRing",value:function(){return this._edgeRing}},{key:"isInResult",value:function(){return this._isInResult}},{key:"setNext",value:function(c){this._next=c}},{key:"isVisited",value:function(){return this._isVisited}}],[{key:"constructor_",value:function(){this._isForward=null,this._isInResult=!1,this._isVisited=!1,this._sym=null,this._next=null,this._nextMin=null,this._edgeRing=null,this._minEdgeRing=null,this._depth=[0,-999,-999];var c=arguments[0],g=arguments[1];if(ba.constructor_.call(this,c),this._isForward=g,g)this.init(c.getCoordinate(0),c.getCoordinate(1));else{var S=c.getNumPoints()-1;this.init(c.getCoordinate(S),c.getCoordinate(S-1))}this.computeDirectedLabel()}},{key:"depthFactor",value:function(c,g){return c===me.EXTERIOR&&g===me.INTERIOR?1:c===me.INTERIOR&&g===me.EXTERIOR?-1:0}}]),l}(ba),so=function(){function v(){w(this,v)}return A(v,[{key:"createNode",value:function(o){return new Nn(o,null)}}]),v}(),Gs=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"printEdges",value:function(o){o.println("Edges:");for(var l=0;l<this._edges.size();l++){o.println("edge "+l+":");var c=this._edges.get(l);c.print(o),c.eiList.print(o)}}},{key:"find",value:function(o){return this._nodes.find(o)}},{key:"addNode",value:function(){if(arguments[0]instanceof Nn){var o=arguments[0];return this._nodes.addNode(o)}if(arguments[0]instanceof Fe){var l=arguments[0];return this._nodes.addNode(l)}}},{key:"getNodeIterator",value:function(){return this._nodes.iterator()}},{key:"linkResultDirectedEdges",value:function(){for(var o=this._nodes.iterator();o.hasNext();)o.next().getEdges().linkResultDirectedEdges()}},{key:"debugPrintln",value:function(o){ce.out.println(o)}},{key:"isBoundaryNode",value:function(o,l){var c=this._nodes.find(l);if(c===null)return!1;var g=c.getLabel();return g!==null&&g.getLocation(o)===me.BOUNDARY}},{key:"linkAllDirectedEdges",value:function(){for(var o=this._nodes.iterator();o.hasNext();)o.next().getEdges().linkAllDirectedEdges()}},{key:"matchInSameDirection",value:function(o,l,c,g){return!!o.equals(c)&&Yt.index(o,l,g)===Yt.COLLINEAR&&Bn.quadrant(o,l)===Bn.quadrant(c,g)}},{key:"getEdgeEnds",value:function(){return this._edgeEndList}},{key:"debugPrint",value:function(o){ce.out.print(o)}},{key:"getEdgeIterator",value:function(){return this._edges.iterator()}},{key:"findEdgeInSameDirection",value:function(o,l){for(var c=0;c<this._edges.size();c++){var g=this._edges.get(c),S=g.getCoordinates();if(this.matchInSameDirection(o,l,S[0],S[1])||this.matchInSameDirection(o,l,S[S.length-1],S[S.length-2]))return g}return null}},{key:"insertEdge",value:function(o){this._edges.add(o)}},{key:"findEdgeEnd",value:function(o){for(var l=this.getEdgeEnds().iterator();l.hasNext();){var c=l.next();if(c.getEdge()===o)return c}return null}},{key:"addEdges",value:function(o){for(var l=o.iterator();l.hasNext();){var c=l.next();this._edges.add(c);var g=new Br(c,!0),S=new Br(c,!1);g.setSym(S),S.setSym(g),this.add(g),this.add(S)}}},{key:"add",value:function(o){this._nodes.add(o),this._edgeEndList.add(o)}},{key:"getNodes",value:function(){return this._nodes.values()}},{key:"findEdge",value:function(o,l){for(var c=0;c<this._edges.size();c++){var g=this._edges.get(c),S=g.getCoordinates();if(o.equals(S[0])&&l.equals(S[1]))return g}return null}}],[{key:"constructor_",value:function(){if(this._edges=new qt,this._nodes=null,this._edgeEndList=new qt,arguments.length===0)this._nodes=new Pn(new so);else if(arguments.length===1){var o=arguments[0];this._nodes=new Pn(o)}}},{key:"linkResultDirectedEdges",value:function(o){for(var l=o.iterator();l.hasNext();)l.next().getEdges().linkResultDirectedEdges()}}]),v}(),vc=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"sortShellsAndHoles",value:function(o,l,c){for(var g=o.iterator();g.hasNext();){var S=g.next();S.isHole()?c.add(S):l.add(S)}}},{key:"computePolygons",value:function(o){for(var l=new qt,c=o.iterator();c.hasNext();){var g=c.next().toPolygon(this._geometryFactory);l.add(g)}return l}},{key:"placeFreeHoles",value:function(o,l){for(var c=l.iterator();c.hasNext();){var g=c.next();if(g.getShell()===null){var S=v.findEdgeRingContaining(g,o);if(S===null)throw new Wn("unable to assign hole to a shell",g.getCoordinate(0));g.setShell(S)}}}},{key:"buildMinimalEdgeRings",value:function(o,l,c){for(var g=new qt,S=o.iterator();S.hasNext();){var R=S.next();if(R.getMaxNodeDegree()>2){R.linkDirectedEdgesForMinimalEdgeRings();var F=R.buildMinimalRings(),q=this.findShell(F);q!==null?(this.placePolygonHoles(q,F),l.add(q)):c.addAll(F)}else g.add(R)}return g}},{key:"buildMaximalEdgeRings",value:function(o){for(var l=new qt,c=o.iterator();c.hasNext();){var g=c.next();if(g.isInResult()&&g.getLabel().isArea()&&g.getEdgeRing()===null){var S=new cl(g,this._geometryFactory);l.add(S),S.setInResult()}}return l}},{key:"placePolygonHoles",value:function(o,l){for(var c=l.iterator();c.hasNext();){var g=c.next();g.isHole()&&g.setShell(o)}}},{key:"getPolygons",value:function(){return this.computePolygons(this._shellList)}},{key:"findShell",value:function(o){for(var l=0,c=null,g=o.iterator();g.hasNext();){var S=g.next();S.isHole()||(c=S,l++)}return Dt.isTrue(l<=1,"found two shells in MinimalEdgeRing list"),c}},{key:"add",value:function(){if(arguments.length===1){var o=arguments[0];this.add(o.getEdgeEnds(),o.getNodes())}else if(arguments.length===2){var l=arguments[0],c=arguments[1];Gs.linkResultDirectedEdges(c);var g=this.buildMaximalEdgeRings(l),S=new qt,R=this.buildMinimalEdgeRings(g,this._shellList,S);this.sortShellsAndHoles(R,this._shellList,S),this.placeFreeHoles(this._shellList,S)}}}],[{key:"constructor_",value:function(){this._geometryFactory=null,this._shellList=new qt;var o=arguments[0];this._geometryFactory=o}},{key:"findEdgeRingContaining",value:function(o,l){for(var c=o.getLinearRing(),g=c.getEnvelopeInternal(),S=c.getCoordinateN(0),R=null,F=null,q=l.iterator();q.hasNext();){var Q=q.next(),Ee=Q.getLinearRing(),Me=Ee.getEnvelopeInternal();if(!Me.equals(g)&&Me.contains(g)){S=dn.ptNotInList(c.getCoordinates(),Ee.getCoordinates());var Xe=!1;jo.isInRing(S,Ee.getCoordinates())&&(Xe=!0),Xe&&(R===null||F.contains(Me))&&(F=(R=Q).getLinearRing().getEnvelopeInternal())}}return R}}]),v}(),wa=function(){function v(){w(this,v)}return A(v,[{key:"getBounds",value:function(){}}]),v}(),rr=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getItem",value:function(){return this._item}},{key:"getBounds",value:function(){return this._bounds}},{key:"interfaces_",get:function(){return[wa,Oe]}}],[{key:"constructor_",value:function(){this._bounds=null,this._item=null;var o=arguments[0],l=arguments[1];this._bounds=o,this._item=l}}]),v}(),mr=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"poll",value:function(){if(this.isEmpty())return null;var o=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),o}},{key:"size",value:function(){return this._size}},{key:"reorder",value:function(o){for(var l=null,c=this._items.get(o);2*o<=this._size&&((l=2*o)!==this._size&&this._items.get(l+1).compareTo(this._items.get(l))<0&&l++,this._items.get(l).compareTo(c)<0);o=l)this._items.set(o,this._items.get(l));this._items.set(o,c)}},{key:"clear",value:function(){this._size=0,this._items.clear()}},{key:"peek",value:function(){return this.isEmpty()?null:this._items.get(1)}},{key:"isEmpty",value:function(){return this._size===0}},{key:"add",value:function(o){this._items.add(null),this._size+=1;var l=this._size;for(this._items.set(0,o);o.compareTo(this._items.get(Math.trunc(l/2)))<0;l/=2)this._items.set(l,this._items.get(Math.trunc(l/2)));this._items.set(l,o)}}],[{key:"constructor_",value:function(){this._size=null,this._items=null,this._size=0,this._items=new qt,this._items.add(null)}}]),v}(),fl=function(){function v(){w(this,v)}return A(v,[{key:"insert",value:function(o,l){}},{key:"remove",value:function(o,l){}},{key:"query",value:function(){}}]),v}(),Ln=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getLevel",value:function(){return this._level}},{key:"size",value:function(){return this._childBoundables.size()}},{key:"getChildBoundables",value:function(){return this._childBoundables}},{key:"addChildBoundable",value:function(o){Dt.isTrue(this._bounds===null),this._childBoundables.add(o)}},{key:"isEmpty",value:function(){return this._childBoundables.isEmpty()}},{key:"getBounds",value:function(){return this._bounds===null&&(this._bounds=this.computeBounds()),this._bounds}},{key:"interfaces_",get:function(){return[wa,Oe]}}],[{key:"constructor_",value:function(){if(this._childBoundables=new qt,this._bounds=null,this._level=null,arguments.length!==0){if(arguments.length===1){var o=arguments[0];this._level=o}}}}]),v}(),or={reverseOrder:function(){return{compare:function(v,o){return o.compareTo(v)}}},min:function(v){return or.sort(v),v.get(0)},sort:function(v,o){var l=v.toArray();o?Zt.sort(l,o):Zt.sort(l);for(var c=v.iterator(),g=0,S=l.length;g<S;g++)c.next(),c.set(l[g])},singletonList:function(v){var o=new qt;return o.add(v),o}},$s=function(){function v(){w(this,v)}return A(v,null,[{key:"maxDistance",value:function(o,l,c,g,S,R,F,q){var Q=v.distance(o,l,S,R);return Q=Math.max(Q,v.distance(o,l,F,q)),Q=Math.max(Q,v.distance(c,g,S,R)),Q=Math.max(Q,v.distance(c,g,F,q))}},{key:"distance",value:function(o,l,c,g){var S=c-o,R=g-l;return Math.sqrt(S*S+R*R)}},{key:"maximumDistance",value:function(o,l){var c=Math.min(o.getMinX(),l.getMinX()),g=Math.min(o.getMinY(),l.getMinY()),S=Math.max(o.getMaxX(),l.getMaxX()),R=Math.max(o.getMaxY(),l.getMaxY());return v.distance(c,g,S,R)}},{key:"minMaxDistance",value:function(o,l){var c=o.getMinX(),g=o.getMinY(),S=o.getMaxX(),R=o.getMaxY(),F=l.getMinX(),q=l.getMinY(),Q=l.getMaxX(),Ee=l.getMaxY(),Me=v.maxDistance(c,g,c,R,F,q,F,Ee);return Me=Math.min(Me,v.maxDistance(c,g,c,R,F,q,Q,q)),Me=Math.min(Me,v.maxDistance(c,g,c,R,Q,Ee,F,Ee)),Me=Math.min(Me,v.maxDistance(c,g,c,R,Q,Ee,Q,q)),Me=Math.min(Me,v.maxDistance(c,g,S,g,F,q,F,Ee)),Me=Math.min(Me,v.maxDistance(c,g,S,g,F,q,Q,q)),Me=Math.min(Me,v.maxDistance(c,g,S,g,Q,Ee,F,Ee)),Me=Math.min(Me,v.maxDistance(c,g,S,g,Q,Ee,Q,q)),Me=Math.min(Me,v.maxDistance(S,R,c,R,F,q,F,Ee)),Me=Math.min(Me,v.maxDistance(S,R,c,R,F,q,Q,q)),Me=Math.min(Me,v.maxDistance(S,R,c,R,Q,Ee,F,Ee)),Me=Math.min(Me,v.maxDistance(S,R,c,R,Q,Ee,Q,q)),Me=Math.min(Me,v.maxDistance(S,R,S,g,F,q,F,Ee)),Me=Math.min(Me,v.maxDistance(S,R,S,g,F,q,Q,q)),Me=Math.min(Me,v.maxDistance(S,R,S,g,Q,Ee,F,Ee)),Me=Math.min(Me,v.maxDistance(S,R,S,g,Q,Ee,Q,q))}}]),v}(),sr=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"maximumDistance",value:function(){return $s.maximumDistance(this._boundable1.getBounds(),this._boundable2.getBounds())}},{key:"expandToQueue",value:function(o,l){var c=v.isComposite(this._boundable1),g=v.isComposite(this._boundable2);if(c&&g)return v.area(this._boundable1)>v.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,!1,o,l),null):(this.expand(this._boundable2,this._boundable1,!0,o,l),null);if(c)return this.expand(this._boundable1,this._boundable2,!1,o,l),null;if(g)return this.expand(this._boundable2,this._boundable1,!0,o,l),null;throw new ut("neither boundable is composite")}},{key:"isLeaves",value:function(){return!(v.isComposite(this._boundable1)||v.isComposite(this._boundable2))}},{key:"compareTo",value:function(o){var l=o;return this._distance<l._distance?-1:this._distance>l._distance?1:0}},{key:"expand",value:function(o,l,c,g,S){for(var R=o.getChildBoundables().iterator();R.hasNext();){var F=R.next(),q=null;(q=c?new v(l,F,this._itemDistance):new v(F,l,this._itemDistance)).getDistance()<S&&g.add(q)}}},{key:"getBoundable",value:function(o){return o===0?this._boundable1:this._boundable2}},{key:"getDistance",value:function(){return this._distance}},{key:"distance",value:function(){return this.isLeaves()?this._itemDistance.distance(this._boundable1,this._boundable2):this._boundable1.getBounds().distance(this._boundable2.getBounds())}},{key:"interfaces_",get:function(){return[_t]}}],[{key:"constructor_",value:function(){this._boundable1=null,this._boundable2=null,this._distance=null,this._itemDistance=null;var o=arguments[0],l=arguments[1],c=arguments[2];this._boundable1=o,this._boundable2=l,this._itemDistance=c,this._distance=this.distance()}},{key:"area",value:function(o){return o.getBounds().getArea()}},{key:"isComposite",value:function(o){return o instanceof Ln}}]),v}(),qs=function(){function v(){w(this,v)}return A(v,[{key:"visitItem",value:function(o){}}]),v}(),Fr=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"queryInternal",value:function(){if(ii(arguments[2],qs)&&arguments[0]instanceof Object&&arguments[1]instanceof Ln)for(var o=arguments[0],l=arguments[1],c=arguments[2],g=l.getChildBoundables(),S=0;S<g.size();S++){var R=g.get(S);this.getIntersectsOp().intersects(R.getBounds(),o)&&(R instanceof Ln?this.queryInternal(o,R,c):R instanceof rr?c.visitItem(R.getItem()):Dt.shouldNeverReachHere())}else if(ii(arguments[2],Dr)&&arguments[0]instanceof Object&&arguments[1]instanceof Ln)for(var F=arguments[0],q=arguments[1],Q=arguments[2],Ee=q.getChildBoundables(),Me=0;Me<Ee.size();Me++){var Xe=Ee.get(Me);this.getIntersectsOp().intersects(Xe.getBounds(),F)&&(Xe instanceof Ln?this.queryInternal(F,Xe,Q):Xe instanceof rr?Q.add(Xe.getItem()):Dt.shouldNeverReachHere())}}},{key:"getNodeCapacity",value:function(){return this._nodeCapacity}},{key:"lastNode",value:function(o){return o.get(o.size()-1)}},{key:"size",value:function(){if(arguments.length===0)return this.isEmpty()?0:(this.build(),this.size(this._root));if(arguments.length===1){for(var o=arguments[0],l=0,c=o.getChildBoundables().iterator();c.hasNext();){var g=c.next();g instanceof Ln?l+=this.size(g):g instanceof rr&&(l+=1)}return l}}},{key:"removeItem",value:function(o,l){for(var c=null,g=o.getChildBoundables().iterator();g.hasNext();){var S=g.next();S instanceof rr&&S.getItem()===l&&(c=S)}return c!==null&&(o.getChildBoundables().remove(c),!0)}},{key:"itemsTree",value:function(){if(arguments.length===0){this.build();var o=this.itemsTree(this._root);return o===null?new qt:o}if(arguments.length===1){for(var l=arguments[0],c=new qt,g=l.getChildBoundables().iterator();g.hasNext();){var S=g.next();if(S instanceof Ln){var R=this.itemsTree(S);R!==null&&c.add(R)}else S instanceof rr?c.add(S.getItem()):Dt.shouldNeverReachHere()}return c.size()<=0?null:c}}},{key:"insert",value:function(o,l){Dt.isTrue(!this._built,"Cannot insert items into an STR packed R-tree after it has been built."),this._itemBoundables.add(new rr(o,l))}},{key:"boundablesAtLevel",value:function(){if(arguments.length===1){var o=arguments[0],l=new qt;return this.boundablesAtLevel(o,this._root,l),l}if(arguments.length===3){var c=arguments[0],g=arguments[1],S=arguments[2];if(Dt.isTrue(c>-2),g.getLevel()===c)return S.add(g),null;for(var R=g.getChildBoundables().iterator();R.hasNext();){var F=R.next();F instanceof Ln?this.boundablesAtLevel(c,F,S):(Dt.isTrue(F instanceof rr),c===-1&&S.add(F))}return null}}},{key:"query",value:function(){if(arguments.length===1){var o=arguments[0];this.build();var l=new qt;return this.isEmpty()||this.getIntersectsOp().intersects(this._root.getBounds(),o)&&this.queryInternal(o,this._root,l),l}if(arguments.length===2){var c=arguments[0],g=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),c)&&this.queryInternal(c,this._root,g)}}},{key:"build",value:function(){if(this._built)return null;this._root=this._itemBoundables.isEmpty()?this.createNode(0):this.createHigherLevels(this._itemBoundables,-1),this._itemBoundables=null,this._built=!0}},{key:"getRoot",value:function(){return this.build(),this._root}},{key:"remove",value:function(){if(arguments.length===2){var o=arguments[0],l=arguments[1];return this.build(),!!this.getIntersectsOp().intersects(this._root.getBounds(),o)&&this.remove(o,this._root,l)}if(arguments.length===3){var c=arguments[0],g=arguments[1],S=arguments[2],R=this.removeItem(g,S);if(R)return!0;for(var F=null,q=g.getChildBoundables().iterator();q.hasNext();){var Q=q.next();if(this.getIntersectsOp().intersects(Q.getBounds(),c)&&Q instanceof Ln&&(R=this.remove(c,Q,S))){F=Q;break}}return F!==null&&F.getChildBoundables().isEmpty()&&g.getChildBoundables().remove(F),R}}},{key:"createHigherLevels",value:function(o,l){Dt.isTrue(!o.isEmpty());var c=this.createParentBoundables(o,l+1);return c.size()===1?c.get(0):this.createHigherLevels(c,l+1)}},{key:"depth",value:function(){if(arguments.length===0)return this.isEmpty()?0:(this.build(),this.depth(this._root));if(arguments.length===1){for(var o=arguments[0],l=0,c=o.getChildBoundables().iterator();c.hasNext();){var g=c.next();if(g instanceof Ln){var S=this.depth(g);S>l&&(l=S)}}return l+1}}},{key:"createParentBoundables",value:function(o,l){Dt.isTrue(!o.isEmpty());var c=new qt;c.add(this.createNode(l));var g=new qt(o);or.sort(g,this.getComparator());for(var S=g.iterator();S.hasNext();){var R=S.next();this.lastNode(c).getChildBoundables().size()===this.getNodeCapacity()&&c.add(this.createNode(l)),this.lastNode(c).addChildBoundable(R)}return c}},{key:"isEmpty",value:function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()}},{key:"interfaces_",get:function(){return[Oe]}}],[{key:"constructor_",value:function(){if(this._root=null,this._built=!1,this._itemBoundables=new qt,this._nodeCapacity=null,arguments.length===0)v.constructor_.call(this,v.DEFAULT_NODE_CAPACITY);else if(arguments.length===1){var o=arguments[0];Dt.isTrue(o>1,"Node capacity must be greater than 1"),this._nodeCapacity=o}}},{key:"compareDoubles",value:function(o,l){return o>l?1:o<l?-1:0}}]),v}();Fr.IntersectsOp=function(){},Fr.DEFAULT_NODE_CAPACITY=10;var Zs=function(){function v(){w(this,v)}return A(v,[{key:"distance",value:function(o,l){}}]),v}(),Ur=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"createParentBoundablesFromVerticalSlices",value:function(c,g){Dt.isTrue(c.length>0);for(var S=new qt,R=0;R<c.length;R++)S.addAll(this.createParentBoundablesFromVerticalSlice(c[R],g));return S}},{key:"nearestNeighbourK",value:function(){if(arguments.length===2){var c=arguments[0],g=arguments[1];return this.nearestNeighbourK(c,St.POSITIVE_INFINITY,g)}if(arguments.length===3){var S=arguments[0],R=arguments[1],F=arguments[2],q=R,Q=new mr;Q.add(S);for(var Ee=new mr;!Q.isEmpty()&&q>=0;){var Me=Q.poll(),Xe=Me.getDistance();if(Xe>=q)break;if(Me.isLeaves())if(Ee.size()<F)Ee.add(Me);else{var pt=Ee.peek();pt.getDistance()>Xe&&(Ee.poll(),Ee.add(Me));var dt=Ee.peek();q=dt.getDistance()}else Me.expandToQueue(Q,q)}return l.getItems(Ee)}}},{key:"createNode",value:function(c){return new Xs(c)}},{key:"size",value:function(){return arguments.length===0?Ie($(l.prototype),"size",this).call(this):Ie($(l.prototype),"size",this).apply(this,arguments)}},{key:"insert",value:function(){if(!(arguments.length===2&&arguments[1]instanceof Object&&arguments[0]instanceof Ci))return Ie($(l.prototype),"insert",this).apply(this,arguments);var c=arguments[0],g=arguments[1];if(c.isNull())return null;Ie($(l.prototype),"insert",this).call(this,c,g)}},{key:"getIntersectsOp",value:function(){return l.intersectsOp}},{key:"verticalSlices",value:function(c,g){for(var S=Math.trunc(Math.ceil(c.size()/g)),R=new Array(g).fill(null),F=c.iterator(),q=0;q<g;q++){R[q]=new qt;for(var Q=0;F.hasNext()&&Q<S;){var Ee=F.next();R[q].add(Ee),Q++}}return R}},{key:"query",value:function(){if(arguments.length===1){var c=arguments[0];return Ie($(l.prototype),"query",this).call(this,c)}if(arguments.length===2){var g=arguments[0],S=arguments[1];Ie($(l.prototype),"query",this).call(this,g,S)}}},{key:"getComparator",value:function(){return l.yComparator}},{key:"createParentBoundablesFromVerticalSlice",value:function(c,g){return Ie($(l.prototype),"createParentBoundables",this).call(this,c,g)}},{key:"remove",value:function(){if(arguments.length===2&&arguments[1]instanceof Object&&arguments[0]instanceof Ci){var c=arguments[0],g=arguments[1];return Ie($(l.prototype),"remove",this).call(this,c,g)}return Ie($(l.prototype),"remove",this).apply(this,arguments)}},{key:"depth",value:function(){return arguments.length===0?Ie($(l.prototype),"depth",this).call(this):Ie($(l.prototype),"depth",this).apply(this,arguments)}},{key:"createParentBoundables",value:function(c,g){Dt.isTrue(!c.isEmpty());var S=Math.trunc(Math.ceil(c.size()/this.getNodeCapacity())),R=new qt(c);or.sort(R,l.xComparator);var F=this.verticalSlices(R,Math.trunc(Math.ceil(Math.sqrt(S))));return this.createParentBoundablesFromVerticalSlices(F,g)}},{key:"nearestNeighbour",value:function(){if(arguments.length===1){if(ii(arguments[0],Zs)){var c=arguments[0];if(this.isEmpty())return null;var g=new sr(this.getRoot(),this.getRoot(),c);return this.nearestNeighbour(g)}if(arguments[0]instanceof sr){var S=arguments[0],R=St.POSITIVE_INFINITY,F=null,q=new mr;for(q.add(S);!q.isEmpty()&&R>0;){var Q=q.poll(),Ee=Q.getDistance();if(Ee>=R)break;Q.isLeaves()?(R=Ee,F=Q):Q.expandToQueue(q,R)}return F===null?null:[F.getBoundable(0).getItem(),F.getBoundable(1).getItem()]}}else{if(arguments.length===2){var Me=arguments[0],Xe=arguments[1];if(this.isEmpty()||Me.isEmpty())return null;var pt=new sr(this.getRoot(),Me.getRoot(),Xe);return this.nearestNeighbour(pt)}if(arguments.length===3){var dt=arguments[0],Vt=arguments[1],Ut=arguments[2],ei=new rr(dt,Vt),yi=new sr(this.getRoot(),ei,Ut);return this.nearestNeighbour(yi)[0]}if(arguments.length===4){var Xi=arguments[0],Fn=arguments[1],bn=arguments[2],Vn=arguments[3],Ir=new rr(Xi,Fn),Hr=new sr(this.getRoot(),Ir,bn);return this.nearestNeighbourK(Hr,Vn)}}}},{key:"isWithinDistance",value:function(){if(arguments.length===2){var c=arguments[0],g=arguments[1],S=St.POSITIVE_INFINITY,R=new mr;for(R.add(c);!R.isEmpty();){var F=R.poll(),q=F.getDistance();if(q>g)return!1;if(F.maximumDistance()<=g)return!0;if(F.isLeaves()){if((S=q)<=g)return!0}else F.expandToQueue(R,S)}return!1}if(arguments.length===3){var Q=arguments[0],Ee=arguments[1],Me=arguments[2],Xe=new sr(this.getRoot(),Q.getRoot(),Ee);return this.isWithinDistance(Xe,Me)}}},{key:"interfaces_",get:function(){return[fl,Oe]}}],[{key:"constructor_",value:function(){if(arguments.length===0)l.constructor_.call(this,l.DEFAULT_NODE_CAPACITY);else if(arguments.length===1){var c=arguments[0];Fr.constructor_.call(this,c)}}},{key:"centreX",value:function(c){return l.avg(c.getMinX(),c.getMaxX())}},{key:"avg",value:function(c,g){return(c+g)/2}},{key:"getItems",value:function(c){for(var g=new Array(c.size()).fill(null),S=0;!c.isEmpty();){var R=c.poll();g[S]=R.getBoundable(0).getItem(),S++}return g}},{key:"centreY",value:function(c){return l.avg(c.getMinY(),c.getMaxY())}}]),l}(Fr),Xs=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"computeBounds",value:function(){for(var c=null,g=this.getChildBoundables().iterator();g.hasNext();){var S=g.next();c===null?c=new Ci(S.getBounds()):c.expandToInclude(S.getBounds())}return c}}],[{key:"constructor_",value:function(){var c=arguments[0];Ln.constructor_.call(this,c)}}]),l}(Ln);Ur.STRtreeNode=Xs,Ur.xComparator=new(function(){function v(){w(this,v)}return A(v,[{key:"interfaces_",get:function(){return[wi]}},{key:"compare",value:function(o,l){return Fr.compareDoubles(Ur.centreX(o.getBounds()),Ur.centreX(l.getBounds()))}}]),v}()),Ur.yComparator=new(function(){function v(){w(this,v)}return A(v,[{key:"interfaces_",get:function(){return[wi]}},{key:"compare",value:function(o,l){return Fr.compareDoubles(Ur.centreY(o.getBounds()),Ur.centreY(l.getBounds()))}}]),v}()),Ur.intersectsOp=new(function(){function v(){w(this,v)}return A(v,[{key:"interfaces_",get:function(){return[IntersectsOp]}},{key:"intersects",value:function(o,l){return o.intersects(l)}}]),v}()),Ur.DEFAULT_NODE_CAPACITY=10;var pl=function(){function v(){w(this,v)}return A(v,null,[{key:"relativeSign",value:function(o,l){return o<l?-1:o>l?1:0}},{key:"compare",value:function(o,l,c){if(l.equals2D(c))return 0;var g=v.relativeSign(l.x,c.x),S=v.relativeSign(l.y,c.y);switch(o){case 0:return v.compareValue(g,S);case 1:return v.compareValue(S,g);case 2:return v.compareValue(S,-g);case 3:return v.compareValue(-g,S);case 4:return v.compareValue(-g,-S);case 5:return v.compareValue(-S,-g);case 6:return v.compareValue(-S,g);case 7:return v.compareValue(g,-S)}return Dt.shouldNeverReachHere("invalid octant value"),0}},{key:"compareValue",value:function(o,l){return o<0?-1:o>0?1:l<0?-1:l>0?1:0}}]),v}(),dl=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getCoordinate",value:function(){return this.coord}},{key:"print",value:function(o){o.print(this.coord),o.print(" seg # = "+this.segmentIndex)}},{key:"compareTo",value:function(o){var l=o;return this.segmentIndex<l.segmentIndex?-1:this.segmentIndex>l.segmentIndex?1:this.coord.equals2D(l.coord)?0:this._isInterior?l._isInterior?pl.compare(this._segmentOctant,this.coord,l.coord):1:-1}},{key:"isEndPoint",value:function(o){return this.segmentIndex===0&&!this._isInterior||this.segmentIndex===o}},{key:"toString",value:function(){return this.segmentIndex+":"+this.coord.toString()}},{key:"isInterior",value:function(){return this._isInterior}},{key:"interfaces_",get:function(){return[_t]}}],[{key:"constructor_",value:function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var o=arguments[0],l=arguments[1],c=arguments[2],g=arguments[3];this._segString=o,this.coord=new Fe(l),this.segmentIndex=c,this._segmentOctant=g,this._isInterior=!l.equals2D(o.getCoordinate(c))}}]),v}(),_s=function(){function v(){w(this,v)}return A(v,[{key:"hasNext",value:function(){}},{key:"next",value:function(){}},{key:"remove",value:function(){}}]),v}(),Si=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getSplitCoordinates",value:function(){var o=new xi;this.addEndpoints();for(var l=this.iterator(),c=l.next();l.hasNext();){var g=l.next();this.addEdgeCoordinates(c,g,o),c=g}return o.toCoordinateArray()}},{key:"addCollapsedNodes",value:function(){var o=new qt;this.findCollapsesFromInsertedNodes(o),this.findCollapsesFromExistingVertices(o);for(var l=o.iterator();l.hasNext();){var c=l.next().intValue();this.add(this._edge.getCoordinate(c),c)}}},{key:"createSplitEdgePts",value:function(o,l){var c=l.segmentIndex-o.segmentIndex+2;if(c===2)return[new Fe(o.coord),new Fe(l.coord)];var g=this._edge.getCoordinate(l.segmentIndex),S=l.isInterior()||!l.coord.equals2D(g);S||c--;var R=new Array(c).fill(null),F=0;R[F++]=new Fe(o.coord);for(var q=o.segmentIndex+1;q<=l.segmentIndex;q++)R[F++]=this._edge.getCoordinate(q);return S&&(R[F]=new Fe(l.coord)),R}},{key:"print",value:function(o){o.println("Intersections:");for(var l=this.iterator();l.hasNext();)l.next().print(o)}},{key:"findCollapsesFromExistingVertices",value:function(o){for(var l=0;l<this._edge.size()-2;l++){var c=this._edge.getCoordinate(l);this._edge.getCoordinate(l+1);var g=this._edge.getCoordinate(l+2);c.equals2D(g)&&o.add(Oo.valueOf(l+1))}}},{key:"addEdgeCoordinates",value:function(o,l,c){var g=this.createSplitEdgePts(o,l);c.add(g,!1)}},{key:"iterator",value:function(){return this._nodeMap.values().iterator()}},{key:"addSplitEdges",value:function(o){this.addEndpoints(),this.addCollapsedNodes();for(var l=this.iterator(),c=l.next();l.hasNext();){var g=l.next(),S=this.createSplitEdge(c,g);o.add(S),c=g}}},{key:"findCollapseIndex",value:function(o,l,c){if(!o.coord.equals2D(l.coord))return!1;var g=l.segmentIndex-o.segmentIndex;return l.isInterior()||g--,g===1&&(c[0]=o.segmentIndex+1,!0)}},{key:"findCollapsesFromInsertedNodes",value:function(o){for(var l=new Array(1).fill(null),c=this.iterator(),g=c.next();c.hasNext();){var S=c.next();this.findCollapseIndex(g,S,l)&&o.add(Oo.valueOf(l[0])),g=S}}},{key:"getEdge",value:function(){return this._edge}},{key:"addEndpoints",value:function(){var o=this._edge.size()-1;this.add(this._edge.getCoordinate(0),0),this.add(this._edge.getCoordinate(o),o)}},{key:"createSplitEdge",value:function(o,l){var c=this.createSplitEdgePts(o,l);return new ao(c,this._edge.getData())}},{key:"add",value:function(o,l){var c=new dl(this._edge,o,l,this._edge.getSegmentOctant(l)),g=this._nodeMap.get(c);return g!==null?(Dt.isTrue(g.coord.equals2D(o),"Found equal nodes with different coordinates"),g):(this._nodeMap.put(c,c),c)}},{key:"checkSplitEdgesCorrectness",value:function(o){var l=this._edge.getCoordinates(),c=o.get(0).getCoordinate(0);if(!c.equals2D(l[0]))throw new Oi("bad split edge start point at "+c);var g=o.get(o.size()-1).getCoordinates(),S=g[g.length-1];if(!S.equals2D(l[l.length-1]))throw new Oi("bad split edge end point at "+S)}}],[{key:"constructor_",value:function(){this._nodeMap=new Nr,this._edge=null;var o=arguments[0];this._edge=o}}]),v}(),xc=function(){function v(){w(this,v)}return A(v,null,[{key:"octant",value:function(){if(typeof arguments[0]=="number"&&typeof arguments[1]=="number"){var o=arguments[0],l=arguments[1];if(o===0&&l===0)throw new ut("Cannot compute the octant for point ( "+o+", "+l+" )");var c=Math.abs(o),g=Math.abs(l);return o>=0?l>=0?c>=g?0:1:c>=g?7:6:l>=0?c>=g?3:2:c>=g?4:5}if(arguments[0]instanceof Fe&&arguments[1]instanceof Fe){var S=arguments[0],R=arguments[1],F=R.x-S.x,q=R.y-S.y;if(F===0&&q===0)throw new ut("Cannot compute the octant for two identical points "+S);return v.octant(F,q)}}}]),v}(),ml=function(){function v(){w(this,v)}return A(v,[{key:"getCoordinates",value:function(){}},{key:"size",value:function(){}},{key:"getCoordinate",value:function(o){}},{key:"isClosed",value:function(){}},{key:"setData",value:function(o){}},{key:"getData",value:function(){}}]),v}(),pu=function(){function v(){w(this,v)}return A(v,[{key:"addIntersection",value:function(o,l){}},{key:"interfaces_",get:function(){return[ml]}}]),v}(),ao=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getCoordinates",value:function(){return this._pts}},{key:"size",value:function(){return this._pts.length}},{key:"getCoordinate",value:function(o){return this._pts[o]}},{key:"isClosed",value:function(){return this._pts[0].equals(this._pts[this._pts.length-1])}},{key:"getSegmentOctant",value:function(o){return o===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(o),this.getCoordinate(o+1))}},{key:"setData",value:function(o){this._data=o}},{key:"safeOctant",value:function(o,l){return o.equals2D(l)?0:xc.octant(o,l)}},{key:"getData",value:function(){return this._data}},{key:"addIntersection",value:function(){if(arguments.length===2){var o=arguments[0],l=arguments[1];this.addIntersectionNode(o,l)}else if(arguments.length===4){var c=arguments[0],g=arguments[1],S=arguments[3],R=new Fe(c.getIntersection(S));this.addIntersection(R,g)}}},{key:"toString",value:function(){return Uo.toLineString(new ir(this._pts))}},{key:"getNodeList",value:function(){return this._nodeList}},{key:"addIntersectionNode",value:function(o,l){var c=l,g=c+1;if(g<this._pts.length){var S=this._pts[g];o.equals2D(S)&&(c=g)}return this._nodeList.add(o,c)}},{key:"addIntersections",value:function(o,l,c){for(var g=0;g<o.getIntersectionNum();g++)this.addIntersection(o,l,c,g)}},{key:"interfaces_",get:function(){return[pu]}}],[{key:"constructor_",value:function(){this._nodeList=new Si(this),this._pts=null,this._data=null;var o=arguments[0],l=arguments[1];this._pts=o,this._data=l}},{key:"getNodedSubstrings",value:function(){if(arguments.length===1){var o=arguments[0],l=new qt;return v.getNodedSubstrings(o,l),l}if(arguments.length===2)for(var c=arguments[0],g=arguments[1],S=c.iterator();S.hasNext();){var R=S.next();R.getNodeList().addSplitEdges(g)}}}]),v}(),ar=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"minX",value:function(){return Math.min(this.p0.x,this.p1.x)}},{key:"orientationIndex",value:function(){if(arguments[0]instanceof v){var o=arguments[0],l=Yt.index(this.p0,this.p1,o.p0),c=Yt.index(this.p0,this.p1,o.p1);return l>=0&&c>=0||l<=0&&c<=0?Math.max(l,c):0}if(arguments[0]instanceof Fe){var g=arguments[0];return Yt.index(this.p0,this.p1,g)}}},{key:"toGeometry",value:function(o){return o.createLineString([this.p0,this.p1])}},{key:"isVertical",value:function(){return this.p0.x===this.p1.x}},{key:"equals",value:function(o){if(!(o instanceof v))return!1;var l=o;return this.p0.equals(l.p0)&&this.p1.equals(l.p1)}},{key:"intersection",value:function(o){var l=new To;return l.computeIntersection(this.p0,this.p1,o.p0,o.p1),l.hasIntersection()?l.getIntersection(0):null}},{key:"project",value:function(){if(arguments[0]instanceof Fe){var o=arguments[0];if(o.equals(this.p0)||o.equals(this.p1))return new Fe(o);var l=this.projectionFactor(o),c=new Fe;return c.x=this.p0.x+l*(this.p1.x-this.p0.x),c.y=this.p0.y+l*(this.p1.y-this.p0.y),c}if(arguments[0]instanceof v){var g=arguments[0],S=this.projectionFactor(g.p0),R=this.projectionFactor(g.p1);if(S>=1&&R>=1||S<=0&&R<=0)return null;var F=this.project(g.p0);S<0&&(F=this.p0),S>1&&(F=this.p1);var q=this.project(g.p1);return R<0&&(q=this.p0),R>1&&(q=this.p1),new v(F,q)}}},{key:"normalize",value:function(){this.p1.compareTo(this.p0)<0&&this.reverse()}},{key:"angle",value:function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)}},{key:"getCoordinate",value:function(o){return o===0?this.p0:this.p1}},{key:"distancePerpendicular",value:function(o){return W.pointToLinePerpendicular(o,this.p0,this.p1)}},{key:"minY",value:function(){return Math.min(this.p0.y,this.p1.y)}},{key:"midPoint",value:function(){return v.midPoint(this.p0,this.p1)}},{key:"projectionFactor",value:function(o){if(o.equals(this.p0))return 0;if(o.equals(this.p1))return 1;var l=this.p1.x-this.p0.x,c=this.p1.y-this.p0.y,g=l*l+c*c;return g<=0?St.NaN:((o.x-this.p0.x)*l+(o.y-this.p0.y)*c)/g}},{key:"closestPoints",value:function(o){var l=this.intersection(o);if(l!==null)return[l,l];var c=new Array(2).fill(null),g=St.MAX_VALUE,S=null,R=this.closestPoint(o.p0);g=R.distance(o.p0),c[0]=R,c[1]=o.p0;var F=this.closestPoint(o.p1);(S=F.distance(o.p1))<g&&(g=S,c[0]=F,c[1]=o.p1);var q=o.closestPoint(this.p0);(S=q.distance(this.p0))<g&&(g=S,c[0]=this.p0,c[1]=q);var Q=o.closestPoint(this.p1);return(S=Q.distance(this.p1))<g&&(g=S,c[0]=this.p1,c[1]=Q),c}},{key:"closestPoint",value:function(o){var l=this.projectionFactor(o);return l>0&&l<1?this.project(o):this.p0.distance(o)<this.p1.distance(o)?this.p0:this.p1}},{key:"maxX",value:function(){return Math.max(this.p0.x,this.p1.x)}},{key:"getLength",value:function(){return this.p0.distance(this.p1)}},{key:"compareTo",value:function(o){var l=o,c=this.p0.compareTo(l.p0);return c!==0?c:this.p1.compareTo(l.p1)}},{key:"reverse",value:function(){var o=this.p0;this.p0=this.p1,this.p1=o}},{key:"equalsTopo",value:function(o){return this.p0.equals(o.p0)&&this.p1.equals(o.p1)||this.p0.equals(o.p1)&&this.p1.equals(o.p0)}},{key:"lineIntersection",value:function(o){return gs.intersection(this.p0,this.p1,o.p0,o.p1)}},{key:"maxY",value:function(){return Math.max(this.p0.y,this.p1.y)}},{key:"pointAlongOffset",value:function(o,l){var c=this.p0.x+o*(this.p1.x-this.p0.x),g=this.p0.y+o*(this.p1.y-this.p0.y),S=this.p1.x-this.p0.x,R=this.p1.y-this.p0.y,F=Math.sqrt(S*S+R*R),q=0,Q=0;if(l!==0){if(F<=0)throw new IllegalStateException("Cannot compute offset from zero-length line segment");q=l*S/F,Q=l*R/F}return new Fe(c-Q,g+q)}},{key:"setCoordinates",value:function(){if(arguments.length===1){var o=arguments[0];this.setCoordinates(o.p0,o.p1)}else if(arguments.length===2){var l=arguments[0],c=arguments[1];this.p0.x=l.x,this.p0.y=l.y,this.p1.x=c.x,this.p1.y=c.y}}},{key:"segmentFraction",value:function(o){var l=this.projectionFactor(o);return l<0?l=0:(l>1||St.isNaN(l))&&(l=1),l}},{key:"toString",value:function(){return"LINESTRING( "+this.p0.x+" "+this.p0.y+", "+this.p1.x+" "+this.p1.y+")"}},{key:"isHorizontal",value:function(){return this.p0.y===this.p1.y}},{key:"reflect",value:function(o){var l=this.p1.getY()-this.p0.getY(),c=this.p0.getX()-this.p1.getX(),g=this.p0.getY()*(this.p1.getX()-this.p0.getX())-this.p0.getX()*(this.p1.getY()-this.p0.getY()),S=l*l+c*c,R=l*l-c*c,F=o.getX(),q=o.getY();return new Fe((-R*F-2*l*c*q-2*l*g)/S,(R*q-2*l*c*F-2*c*g)/S)}},{key:"distance",value:function(){if(arguments[0]instanceof v){var o=arguments[0];return W.segmentToSegment(this.p0,this.p1,o.p0,o.p1)}if(arguments[0]instanceof Fe){var l=arguments[0];return W.pointToSegment(l,this.p0,this.p1)}}},{key:"pointAlong",value:function(o){var l=new Fe;return l.x=this.p0.x+o*(this.p1.x-this.p0.x),l.y=this.p0.y+o*(this.p1.y-this.p0.y),l}},{key:"hashCode",value:function(){var o=St.doubleToLongBits(this.p0.x);o^=31*St.doubleToLongBits(this.p0.y);var l=Math.trunc(o)^Math.trunc(o>>32),c=St.doubleToLongBits(this.p1.x);return c^=31*St.doubleToLongBits(this.p1.y),l^(Math.trunc(c)^Math.trunc(c>>32))}},{key:"interfaces_",get:function(){return[_t,Oe]}}],[{key:"constructor_",value:function(){if(this.p0=null,this.p1=null,arguments.length===0)v.constructor_.call(this,new Fe,new Fe);else if(arguments.length===1){var o=arguments[0];v.constructor_.call(this,o.p0,o.p1)}else if(arguments.length===2){var l=arguments[0],c=arguments[1];this.p0=l,this.p1=c}else if(arguments.length===4){var g=arguments[0],S=arguments[1],R=arguments[2],F=arguments[3];v.constructor_.call(this,new Fe(g,S),new Fe(R,F))}}},{key:"midPoint",value:function(o,l){return new Fe((o.x+l.x)/2,(o.y+l.y)/2)}}]),v}(),gl=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"overlap",value:function(){if(arguments.length!==2){if(arguments.length===4){var o=arguments[0],l=arguments[1],c=arguments[2],g=arguments[3];o.getLineSegment(l,this._overlapSeg1),c.getLineSegment(g,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}}}}],[{key:"constructor_",value:function(){this._overlapSeg1=new ar,this._overlapSeg2=new ar}}]),v}(),Go=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getLineSegment",value:function(o,l){l.p0=this._pts[o],l.p1=this._pts[o+1]}},{key:"computeSelect",value:function(o,l,c,g){var S=this._pts[l],R=this._pts[c];if(c-l==1)return g.select(this,l),null;if(!o.intersects(S,R))return null;var F=Math.trunc((l+c)/2);l<F&&this.computeSelect(o,l,F,g),F<c&&this.computeSelect(o,F,c,g)}},{key:"getCoordinates",value:function(){for(var o=new Array(this._end-this._start+1).fill(null),l=0,c=this._start;c<=this._end;c++)o[l++]=this._pts[c];return o}},{key:"computeOverlaps",value:function(){if(arguments.length===2){var o=arguments[0],l=arguments[1];this.computeOverlaps(this._start,this._end,o,o._start,o._end,l)}else if(arguments.length===6){var c=arguments[0],g=arguments[1],S=arguments[2],R=arguments[3],F=arguments[4],q=arguments[5];if(g-c==1&&F-R==1)return q.overlap(this,c,S,R),null;if(!this.overlaps(c,g,S,R,F))return null;var Q=Math.trunc((c+g)/2),Ee=Math.trunc((R+F)/2);c<Q&&(R<Ee&&this.computeOverlaps(c,Q,S,R,Ee,q),Ee<F&&this.computeOverlaps(c,Q,S,Ee,F,q)),Q<g&&(R<Ee&&this.computeOverlaps(Q,g,S,R,Ee,q),Ee<F&&this.computeOverlaps(Q,g,S,Ee,F,q))}}},{key:"setId",value:function(o){this._id=o}},{key:"select",value:function(o,l){this.computeSelect(o,this._start,this._end,l)}},{key:"getEnvelope",value:function(){if(this._env===null){var o=this._pts[this._start],l=this._pts[this._end];this._env=new Ci(o,l)}return this._env}},{key:"overlaps",value:function(o,l,c,g,S){return Ci.intersects(this._pts[o],this._pts[l],c._pts[g],c._pts[S])}},{key:"getEndIndex",value:function(){return this._end}},{key:"getStartIndex",value:function(){return this._start}},{key:"getContext",value:function(){return this._context}},{key:"getId",value:function(){return this._id}}],[{key:"constructor_",value:function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var o=arguments[0],l=arguments[1],c=arguments[2],g=arguments[3];this._pts=o,this._start=l,this._end=c,this._context=g}}]),v}(),Ea=function(){function v(){w(this,v)}return A(v,null,[{key:"findChainEnd",value:function(o,l){for(var c=l;c<o.length-1&&o[c].equals2D(o[c+1]);)c++;if(c>=o.length-1)return o.length-1;for(var g=Bn.quadrant(o[c],o[c+1]),S=l+1;S<o.length&&!(!o[S-1].equals2D(o[S])&&Bn.quadrant(o[S-1],o[S])!==g);)S++;return S-1}},{key:"getChains",value:function(){if(arguments.length===1){var o=arguments[0];return v.getChains(o,null)}if(arguments.length===2){var l=arguments[0],c=arguments[1],g=new qt,S=0;do{var R=v.findChainEnd(l,S),F=new Go(l,S,R,c);g.add(F),S=R}while(S<l.length-1);return g}}}]),v}(),So=function(){function v(){w(this,v)}return A(v,[{key:"computeNodes",value:function(o){}},{key:"getNodedSubstrings",value:function(){}}]),v}(),Wr=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"setSegmentIntersector",value:function(o){this._segInt=o}},{key:"interfaces_",get:function(){return[So]}}],[{key:"constructor_",value:function(){if(this._segInt=null,arguments.length!==0){if(arguments.length===1){var o=arguments[0];this.setSegmentIntersector(o)}}}}]),v}(),lo=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"getMonotoneChains",value:function(){return this._monoChains}},{key:"getNodedSubstrings",value:function(){return ao.getNodedSubstrings(this._nodedSegStrings)}},{key:"getIndex",value:function(){return this._index}},{key:"add",value:function(c){for(var g=Ea.getChains(c.getCoordinates(),c).iterator();g.hasNext();){var S=g.next();S.setId(this._idCounter++),this._index.insert(S.getEnvelope(),S),this._monoChains.add(S)}}},{key:"computeNodes",value:function(c){this._nodedSegStrings=c;for(var g=c.iterator();g.hasNext();)this.add(g.next());this.intersectChains()}},{key:"intersectChains",value:function(){for(var c=new Ws(this._segInt),g=this._monoChains.iterator();g.hasNext();)for(var S=g.next(),R=this._index.query(S.getEnvelope()).iterator();R.hasNext();){var F=R.next();if(F.getId()>S.getId()&&(S.computeOverlaps(F,c),this._nOverlaps++),this._segInt.isDone())return null}}}],[{key:"constructor_",value:function(){if(this._monoChains=new qt,this._index=new Ur,this._idCounter=0,this._nodedSegStrings=null,this._nOverlaps=0,arguments.length!==0){if(arguments.length===1){var c=arguments[0];Wr.constructor_.call(this,c)}}}}]),l}(Wr),Ws=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"overlap",value:function(){if(arguments.length!==4)return Ie($(l.prototype),"overlap",this).apply(this,arguments);var c=arguments[0],g=arguments[1],S=arguments[2],R=arguments[3],F=c.getContext(),q=S.getContext();this._si.processIntersections(F,g,q,R)}}],[{key:"constructor_",value:function(){this._si=null;var c=arguments[0];this._si=c}}]),l}(gl);lo.SegmentOverlapAction=Ws;var Er=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"isDeletable",value:function(o,l,c,g){var S=this._inputLine[o],R=this._inputLine[l],F=this._inputLine[c];return!!this.isConcave(S,R,F)&&!!this.isShallow(S,R,F,g)&&this.isShallowSampled(S,R,o,c,g)}},{key:"deleteShallowConcavities",value:function(){for(var o=1,l=this.findNextNonDeletedIndex(o),c=this.findNextNonDeletedIndex(l),g=!1;c<this._inputLine.length;){var S=!1;this.isDeletable(o,l,c,this._distanceTol)&&(this._isDeleted[l]=v.DELETE,S=!0,g=!0),o=S?c:l,l=this.findNextNonDeletedIndex(o),c=this.findNextNonDeletedIndex(l)}return g}},{key:"isShallowConcavity",value:function(o,l,c,g){return Yt.index(o,l,c)===this._angleOrientation&&W.pointToSegment(l,o,c)<g}},{key:"isShallowSampled",value:function(o,l,c,g,S){var R=Math.trunc((g-c)/v.NUM_PTS_TO_CHECK);R<=0&&(R=1);for(var F=c;F<g;F+=R)if(!this.isShallow(o,l,this._inputLine[F],S))return!1;return!0}},{key:"isConcave",value:function(o,l,c){var g=Yt.index(o,l,c)===this._angleOrientation;return g}},{key:"simplify",value:function(o){this._distanceTol=Math.abs(o),o<0&&(this._angleOrientation=Yt.CLOCKWISE),this._isDeleted=new Array(this._inputLine.length).fill(null);var l=!1;do l=this.deleteShallowConcavities();while(l);return this.collapseLine()}},{key:"findNextNonDeletedIndex",value:function(o){for(var l=o+1;l<this._inputLine.length&&this._isDeleted[l]===v.DELETE;)l++;return l}},{key:"isShallow",value:function(o,l,c,g){return W.pointToSegment(l,o,c)<g}},{key:"collapseLine",value:function(){for(var o=new xi,l=0;l<this._inputLine.length;l++)this._isDeleted[l]!==v.DELETE&&o.add(this._inputLine[l]);return o.toCoordinateArray()}}],[{key:"constructor_",value:function(){this._inputLine=null,this._distanceTol=null,this._isDeleted=null,this._angleOrientation=Yt.COUNTERCLOCKWISE;var o=arguments[0];this._inputLine=o}},{key:"simplify",value:function(o,l){return new v(o).simplify(l)}}]),v}();Er.INIT=0,Er.DELETE=1,Er.KEEP=1,Er.NUM_PTS_TO_CHECK=10;var ys=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getCoordinates",value:function(){return this._ptList.toArray(v.COORDINATE_ARRAY_TYPE)}},{key:"setPrecisionModel",value:function(o){this._precisionModel=o}},{key:"addPt",value:function(o){var l=new Fe(o);if(this._precisionModel.makePrecise(l),this.isRedundant(l))return null;this._ptList.add(l)}},{key:"reverse",value:function(){}},{key:"addPts",value:function(o,l){if(l)for(var c=0;c<o.length;c++)this.addPt(o[c]);else for(var g=o.length-1;g>=0;g--)this.addPt(o[g])}},{key:"isRedundant",value:function(o){if(this._ptList.size()<1)return!1;var l=this._ptList.get(this._ptList.size()-1);return o.distance(l)<this._minimimVertexDistance}},{key:"toString",value:function(){return new nr().createLineString(this.getCoordinates()).toString()}},{key:"closeRing",value:function(){if(this._ptList.size()<1)return null;var o=new Fe(this._ptList.get(0)),l=this._ptList.get(this._ptList.size()-1);if(o.equals(l))return null;this._ptList.add(o)}},{key:"setMinimumVertexDistance",value:function(o){this._minimimVertexDistance=o}}],[{key:"constructor_",value:function(){this._ptList=null,this._precisionModel=null,this._minimimVertexDistance=0,this._ptList=new qt}}]),v}();ys.COORDINATE_ARRAY_TYPE=new Array(0).fill(null);var Hn=function(){function v(){w(this,v)}return A(v,null,[{key:"toDegrees",value:function(o){return 180*o/Math.PI}},{key:"normalize",value:function(o){for(;o>Math.PI;)o-=v.PI_TIMES_2;for(;o<=-Math.PI;)o+=v.PI_TIMES_2;return o}},{key:"angle",value:function(){if(arguments.length===1){var o=arguments[0];return Math.atan2(o.y,o.x)}if(arguments.length===2){var l=arguments[0],c=arguments[1],g=c.x-l.x,S=c.y-l.y;return Math.atan2(S,g)}}},{key:"isAcute",value:function(o,l,c){var g=o.x-l.x,S=o.y-l.y;return g*(c.x-l.x)+S*(c.y-l.y)>0}},{key:"isObtuse",value:function(o,l,c){var g=o.x-l.x,S=o.y-l.y;return g*(c.x-l.x)+S*(c.y-l.y)<0}},{key:"interiorAngle",value:function(o,l,c){var g=v.angle(l,o),S=v.angle(l,c);return Math.abs(S-g)}},{key:"normalizePositive",value:function(o){if(o<0){for(;o<0;)o+=v.PI_TIMES_2;o>=v.PI_TIMES_2&&(o=0)}else{for(;o>=v.PI_TIMES_2;)o-=v.PI_TIMES_2;o<0&&(o=0)}return o}},{key:"angleBetween",value:function(o,l,c){var g=v.angle(l,o),S=v.angle(l,c);return v.diff(g,S)}},{key:"diff",value:function(o,l){var c=null;return(c=o<l?l-o:o-l)>Math.PI&&(c=2*Math.PI-c),c}},{key:"toRadians",value:function(o){return o*Math.PI/180}},{key:"getTurn",value:function(o,l){var c=Math.sin(l-o);return c>0?v.COUNTERCLOCKWISE:c<0?v.CLOCKWISE:v.NONE}},{key:"angleBetweenOriented",value:function(o,l,c){var g=v.angle(l,o),S=v.angle(l,c)-g;return S<=-Math.PI?S+v.PI_TIMES_2:S>Math.PI?S-v.PI_TIMES_2:S}}]),v}();Hn.PI_TIMES_2=2*Math.PI,Hn.PI_OVER_2=Math.PI/2,Hn.PI_OVER_4=Math.PI/4,Hn.COUNTERCLOCKWISE=Yt.COUNTERCLOCKWISE,Hn.CLOCKWISE=Yt.CLOCKWISE,Hn.NONE=Yt.COLLINEAR;var $o=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"addNextSegment",value:function(o,l){if(this._s0=this._s1,this._s1=this._s2,this._s2=o,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var c=Yt.index(this._s0,this._s1,this._s2),g=c===Yt.CLOCKWISE&&this._side===ct.LEFT||c===Yt.COUNTERCLOCKWISE&&this._side===ct.RIGHT;c===0?this.addCollinear(l):g?this.addOutsideTurn(c,l):this.addInsideTurn(c,l)}},{key:"addLineEndCap",value:function(o,l){var c=new ar(o,l),g=new ar;this.computeOffsetSegment(c,ct.LEFT,this._distance,g);var S=new ar;this.computeOffsetSegment(c,ct.RIGHT,this._distance,S);var R=l.x-o.x,F=l.y-o.y,q=Math.atan2(F,R);switch(this._bufParams.getEndCapStyle()){case Qe.CAP_ROUND:this._segList.addPt(g.p1),this.addDirectedFillet(l,q+Math.PI/2,q-Math.PI/2,Yt.CLOCKWISE,this._distance),this._segList.addPt(S.p1);break;case Qe.CAP_FLAT:this._segList.addPt(g.p1),this._segList.addPt(S.p1);break;case Qe.CAP_SQUARE:var Q=new Fe;Q.x=Math.abs(this._distance)*Math.cos(q),Q.y=Math.abs(this._distance)*Math.sin(q);var Ee=new Fe(g.p1.x+Q.x,g.p1.y+Q.y),Me=new Fe(S.p1.x+Q.x,S.p1.y+Q.y);this._segList.addPt(Ee),this._segList.addPt(Me)}}},{key:"getCoordinates",value:function(){return this._segList.getCoordinates()}},{key:"addMitreJoin",value:function(o,l,c,g){var S=gs.intersection(l.p0,l.p1,c.p0,c.p1);if(S!==null&&(g<=0?1:S.distance(o)/Math.abs(g))<=this._bufParams.getMitreLimit())return this._segList.addPt(S),null;this.addLimitedMitreJoin(l,c,g,this._bufParams.getMitreLimit())}},{key:"addOutsideTurn",value:function(o,l){if(this._offset0.p1.distance(this._offset1.p0)<this._distance*v.OFFSET_SEGMENT_SEPARATION_FACTOR)return this._segList.addPt(this._offset0.p1),null;this._bufParams.getJoinStyle()===Qe.JOIN_MITRE?this.addMitreJoin(this._s1,this._offset0,this._offset1,this._distance):this._bufParams.getJoinStyle()===Qe.JOIN_BEVEL?this.addBevelJoin(this._offset0,this._offset1):(l&&this._segList.addPt(this._offset0.p1),this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,o,this._distance),this._segList.addPt(this._offset1.p0))}},{key:"createSquare",value:function(o){this._segList.addPt(new Fe(o.x+this._distance,o.y+this._distance)),this._segList.addPt(new Fe(o.x+this._distance,o.y-this._distance)),this._segList.addPt(new Fe(o.x-this._distance,o.y-this._distance)),this._segList.addPt(new Fe(o.x-this._distance,o.y+this._distance)),this._segList.closeRing()}},{key:"addSegments",value:function(o,l){this._segList.addPts(o,l)}},{key:"addFirstSegment",value:function(){this._segList.addPt(this._offset1.p0)}},{key:"addCornerFillet",value:function(o,l,c,g,S){var R=l.x-o.x,F=l.y-o.y,q=Math.atan2(F,R),Q=c.x-o.x,Ee=c.y-o.y,Me=Math.atan2(Ee,Q);g===Yt.CLOCKWISE?q<=Me&&(q+=2*Math.PI):q>=Me&&(q-=2*Math.PI),this._segList.addPt(l),this.addDirectedFillet(o,q,Me,g,S),this._segList.addPt(c)}},{key:"addLastSegment",value:function(){this._segList.addPt(this._offset1.p1)}},{key:"initSideSegments",value:function(o,l,c){this._s1=o,this._s2=l,this._side=c,this._seg1.setCoordinates(o,l),this.computeOffsetSegment(this._seg1,c,this._distance,this._offset1)}},{key:"addLimitedMitreJoin",value:function(o,l,c,g){var S=this._seg0.p1,R=Hn.angle(S,this._seg0.p0),F=Hn.angleBetweenOriented(this._seg0.p0,S,this._seg1.p1)/2,q=Hn.normalize(R+F),Q=Hn.normalize(q+Math.PI),Ee=g*c,Me=c-Ee*Math.abs(Math.sin(F)),Xe=S.x+Ee*Math.cos(Q),pt=S.y+Ee*Math.sin(Q),dt=new Fe(Xe,pt),Vt=new ar(S,dt),Ut=Vt.pointAlongOffset(1,Me),ei=Vt.pointAlongOffset(1,-Me);this._side===ct.LEFT?(this._segList.addPt(Ut),this._segList.addPt(ei)):(this._segList.addPt(ei),this._segList.addPt(Ut))}},{key:"addDirectedFillet",value:function(o,l,c,g,S){var R=g===Yt.CLOCKWISE?-1:1,F=Math.abs(l-c),q=Math.trunc(F/this._filletAngleQuantum+.5);if(q<1)return null;for(var Q=F/q,Ee=new Fe,Me=0;Me<q;Me++){var Xe=l+R*Me*Q;Ee.x=o.x+S*Math.cos(Xe),Ee.y=o.y+S*Math.sin(Xe),this._segList.addPt(Ee)}}},{key:"computeOffsetSegment",value:function(o,l,c,g){var S=l===ct.LEFT?1:-1,R=o.p1.x-o.p0.x,F=o.p1.y-o.p0.y,q=Math.sqrt(R*R+F*F),Q=S*c*R/q,Ee=S*c*F/q;g.p0.x=o.p0.x-Ee,g.p0.y=o.p0.y+Q,g.p1.x=o.p1.x-Ee,g.p1.y=o.p1.y+Q}},{key:"addInsideTurn",value:function(o,l){if(this._li.computeIntersection(this._offset0.p0,this._offset0.p1,this._offset1.p0,this._offset1.p1),this._li.hasIntersection())this._segList.addPt(this._li.getIntersection(0));else if(this._hasNarrowConcaveAngle=!0,this._offset0.p1.distance(this._offset1.p0)<this._distance*v.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR)this._segList.addPt(this._offset0.p1);else{if(this._segList.addPt(this._offset0.p1),this._closingSegLengthFactor>0){var c=new Fe((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(c);var g=new Fe((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(g)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}}},{key:"createCircle",value:function(o){var l=new Fe(o.x+this._distance,o.y);this._segList.addPt(l),this.addDirectedFillet(o,0,2*Math.PI,-1,this._distance),this._segList.closeRing()}},{key:"addBevelJoin",value:function(o,l){this._segList.addPt(o.p1),this._segList.addPt(l.p0)}},{key:"init",value:function(o){this._distance=o,this._maxCurveSegmentError=o*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new ys,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(o*v.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)}},{key:"addCollinear",value:function(o){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2),this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===Qe.JOIN_BEVEL||this._bufParams.getJoinStyle()===Qe.JOIN_MITRE?(o&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,Yt.CLOCKWISE,this._distance))}},{key:"closeRing",value:function(){this._segList.closeRing()}},{key:"hasNarrowConcaveAngle",value:function(){return this._hasNarrowConcaveAngle}}],[{key:"constructor_",value:function(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new ar,this._seg1=new ar,this._offset0=new ar,this._offset1=new ar,this._side=0,this._hasNarrowConcaveAngle=!1;var o=arguments[0],l=arguments[1],c=arguments[2];this._precisionModel=o,this._bufParams=l,this._li=new To,this._filletAngleQuantum=Math.PI/2/l.getQuadrantSegments(),l.getQuadrantSegments()>=8&&l.getJoinStyle()===Qe.JOIN_ROUND&&(this._closingSegLengthFactor=v.MAX_CLOSING_SEG_LEN_FACTOR),this.init(c)}}]),v}();$o.OFFSET_SEGMENT_SEPARATION_FACTOR=.001,$o.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR=.001,$o.CURVE_VERTEX_SNAP_DISTANCE_FACTOR=1e-6,$o.MAX_CLOSING_SEG_LEN_FACTOR=80;var Ta=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getOffsetCurve",value:function(o,l){if(this._distance=l,l===0)return null;var c=l<0,g=Math.abs(l),S=this.getSegGen(g);o.length<=1?this.computePointCurve(o[0],S):this.computeOffsetCurve(o,c,S);var R=S.getCoordinates();return c&&dn.reverse(R),R}},{key:"computeSingleSidedBufferCurve",value:function(o,l,c){var g=this.simplifyTolerance(this._distance);if(l){c.addSegments(o,!0);var S=Er.simplify(o,-g),R=S.length-1;c.initSideSegments(S[R],S[R-1],ct.LEFT),c.addFirstSegment();for(var F=R-2;F>=0;F--)c.addNextSegment(S[F],!0)}else{c.addSegments(o,!1);var q=Er.simplify(o,g),Q=q.length-1;c.initSideSegments(q[0],q[1],ct.LEFT),c.addFirstSegment();for(var Ee=2;Ee<=Q;Ee++)c.addNextSegment(q[Ee],!0)}c.addLastSegment(),c.closeRing()}},{key:"computeRingBufferCurve",value:function(o,l,c){var g=this.simplifyTolerance(this._distance);l===ct.RIGHT&&(g=-g);var S=Er.simplify(o,g),R=S.length-1;c.initSideSegments(S[R-1],S[0],l);for(var F=1;F<=R;F++){var q=F!==1;c.addNextSegment(S[F],q)}c.closeRing()}},{key:"computeLineBufferCurve",value:function(o,l){var c=this.simplifyTolerance(this._distance),g=Er.simplify(o,c),S=g.length-1;l.initSideSegments(g[0],g[1],ct.LEFT);for(var R=2;R<=S;R++)l.addNextSegment(g[R],!0);l.addLastSegment(),l.addLineEndCap(g[S-1],g[S]);var F=Er.simplify(o,-c),q=F.length-1;l.initSideSegments(F[q],F[q-1],ct.LEFT);for(var Q=q-2;Q>=0;Q--)l.addNextSegment(F[Q],!0);l.addLastSegment(),l.addLineEndCap(F[1],F[0]),l.closeRing()}},{key:"computePointCurve",value:function(o,l){switch(this._bufParams.getEndCapStyle()){case Qe.CAP_ROUND:l.createCircle(o);break;case Qe.CAP_SQUARE:l.createSquare(o)}}},{key:"getLineCurve",value:function(o,l){if(this._distance=l,this.isLineOffsetEmpty(l))return null;var c=Math.abs(l),g=this.getSegGen(c);if(o.length<=1)this.computePointCurve(o[0],g);else if(this._bufParams.isSingleSided()){var S=l<0;this.computeSingleSidedBufferCurve(o,S,g)}else this.computeLineBufferCurve(o,g);return g.getCoordinates()}},{key:"getBufferParameters",value:function(){return this._bufParams}},{key:"simplifyTolerance",value:function(o){return o*this._bufParams.getSimplifyFactor()}},{key:"getRingCurve",value:function(o,l,c){if(this._distance=c,o.length<=2)return this.getLineCurve(o,c);if(c===0)return v.copyCoordinates(o);var g=this.getSegGen(c);return this.computeRingBufferCurve(o,l,g),g.getCoordinates()}},{key:"computeOffsetCurve",value:function(o,l,c){var g=this.simplifyTolerance(this._distance);if(l){var S=Er.simplify(o,-g),R=S.length-1;c.initSideSegments(S[R],S[R-1],ct.LEFT),c.addFirstSegment();for(var F=R-2;F>=0;F--)c.addNextSegment(S[F],!0)}else{var q=Er.simplify(o,g),Q=q.length-1;c.initSideSegments(q[0],q[1],ct.LEFT),c.addFirstSegment();for(var Ee=2;Ee<=Q;Ee++)c.addNextSegment(q[Ee],!0)}c.addLastSegment()}},{key:"isLineOffsetEmpty",value:function(o){return o===0||o<0&&!this._bufParams.isSingleSided()}},{key:"getSegGen",value:function(o){return new $o(this._precisionModel,this._bufParams,o)}}],[{key:"constructor_",value:function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var o=arguments[0],l=arguments[1];this._precisionModel=o,this._bufParams=l}},{key:"copyCoordinates",value:function(o){for(var l=new Array(o.length).fill(null),c=0;c<l.length;c++)l[c]=new Fe(o[c]);return l}}]),v}(),Ys=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"findStabbedSegments",value:function(){if(arguments.length===1){for(var o=arguments[0],l=new qt,c=this._subgraphs.iterator();c.hasNext();){var g=c.next(),S=g.getEnvelope();o.y<S.getMinY()||o.y>S.getMaxY()||this.findStabbedSegments(o,g.getDirectedEdges(),l)}return l}if(arguments.length===3){if(ii(arguments[2],Dr)&&arguments[0]instanceof Fe&&arguments[1]instanceof Br)for(var R=arguments[0],F=arguments[1],q=arguments[2],Q=F.getEdge().getCoordinates(),Ee=0;Ee<Q.length-1;Ee++){this._seg.p0=Q[Ee],this._seg.p1=Q[Ee+1],this._seg.p0.y>this._seg.p1.y&&this._seg.reverse();var Me=Math.max(this._seg.p0.x,this._seg.p1.x);if(!(Me<R.x)&&!(this._seg.isHorizontal()||R.y<this._seg.p0.y||R.y>this._seg.p1.y||Yt.index(this._seg.p0,this._seg.p1,R)===Yt.RIGHT)){var Xe=F.getDepth(ct.LEFT);this._seg.p0.equals(Q[Ee])||(Xe=F.getDepth(ct.RIGHT));var pt=new Sa(this._seg,Xe);q.add(pt)}}else if(ii(arguments[2],Dr)&&arguments[0]instanceof Fe&&ii(arguments[1],Dr))for(var dt=arguments[0],Vt=arguments[1],Ut=arguments[2],ei=Vt.iterator();ei.hasNext();){var yi=ei.next();yi.isForward()&&this.findStabbedSegments(dt,yi,Ut)}}}},{key:"getDepth",value:function(o){var l=this.findStabbedSegments(o);return l.size()===0?0:or.min(l)._leftDepth}}],[{key:"constructor_",value:function(){this._subgraphs=null,this._seg=new ar;var o=arguments[0];this._subgraphs=o}}]),v}(),Sa=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"compareTo",value:function(o){var l=o;if(this._upwardSeg.minX()>=l._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=l._upwardSeg.minX())return-1;var c=this._upwardSeg.orientationIndex(l._upwardSeg);return c!==0||(c=-1*l._upwardSeg.orientationIndex(this._upwardSeg))!==0?c:this._upwardSeg.compareTo(l._upwardSeg)}},{key:"compareX",value:function(o,l){var c=o.p0.compareTo(l.p0);return c!==0?c:o.p1.compareTo(l.p1)}},{key:"toString",value:function(){return this._upwardSeg.toString()}},{key:"interfaces_",get:function(){return[_t]}}],[{key:"constructor_",value:function(){this._upwardSeg=null,this._leftDepth=null;var o=arguments[0],l=arguments[1];this._upwardSeg=new ar(o),this._leftDepth=l}}]),v}();Ys.DepthSegment=Sa;var bi=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,null,[{key:"constructor_",value:function(){Et.constructor_.call(this,"Projective point not representable on the Cartesian plane.")}}]),l}(Et),qo=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getY",value:function(){var o=this.y/this.w;if(St.isNaN(o)||St.isInfinite(o))throw new bi;return o}},{key:"getX",value:function(){var o=this.x/this.w;if(St.isNaN(o)||St.isInfinite(o))throw new bi;return o}},{key:"getCoordinate",value:function(){var o=new Fe;return o.x=this.getX(),o.y=this.getY(),o}}],[{key:"constructor_",value:function(){if(this.x=null,this.y=null,this.w=null,arguments.length===0)this.x=0,this.y=0,this.w=1;else if(arguments.length===1){var o=arguments[0];this.x=o.x,this.y=o.y,this.w=1}else if(arguments.length===2){if(typeof arguments[0]=="number"&&typeof arguments[1]=="number"){var l=arguments[0],c=arguments[1];this.x=l,this.y=c,this.w=1}else if(arguments[0]instanceof v&&arguments[1]instanceof v){var g=arguments[0],S=arguments[1];this.x=g.y*S.w-S.y*g.w,this.y=S.x*g.w-g.x*S.w,this.w=g.x*S.y-S.x*g.y}else if(arguments[0]instanceof Fe&&arguments[1]instanceof Fe){var R=arguments[0],F=arguments[1];this.x=R.y-F.y,this.y=F.x-R.x,this.w=R.x*F.y-F.x*R.y}}else if(arguments.length===3){var q=arguments[0],Q=arguments[1],Ee=arguments[2];this.x=q,this.y=Q,this.w=Ee}else if(arguments.length===4){var Me=arguments[0],Xe=arguments[1],pt=arguments[2],dt=arguments[3],Vt=Me.y-Xe.y,Ut=Xe.x-Me.x,ei=Me.x*Xe.y-Xe.x*Me.y,yi=pt.y-dt.y,Xi=dt.x-pt.x,Fn=pt.x*dt.y-dt.x*pt.y;this.x=Ut*Fn-Xi*ei,this.y=yi*ei-Vt*Fn,this.w=Vt*Xi-yi*Ut}}}]),v}(),du=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"area",value:function(){return v.area(this.p0,this.p1,this.p2)}},{key:"signedArea",value:function(){return v.signedArea(this.p0,this.p1,this.p2)}},{key:"interpolateZ",value:function(o){if(o===null)throw new ut("Supplied point is null.");return v.interpolateZ(o,this.p0,this.p1,this.p2)}},{key:"longestSideLength",value:function(){return v.longestSideLength(this.p0,this.p1,this.p2)}},{key:"isAcute",value:function(){return v.isAcute(this.p0,this.p1,this.p2)}},{key:"circumcentre",value:function(){return v.circumcentre(this.p0,this.p1,this.p2)}},{key:"area3D",value:function(){return v.area3D(this.p0,this.p1,this.p2)}},{key:"centroid",value:function(){return v.centroid(this.p0,this.p1,this.p2)}},{key:"inCentre",value:function(){return v.inCentre(this.p0,this.p1,this.p2)}}],[{key:"constructor_",value:function(){this.p0=null,this.p1=null,this.p2=null;var o=arguments[0],l=arguments[1],c=arguments[2];this.p0=o,this.p1=l,this.p2=c}},{key:"area",value:function(o,l,c){return Math.abs(((c.x-o.x)*(l.y-o.y)-(l.x-o.x)*(c.y-o.y))/2)}},{key:"signedArea",value:function(o,l,c){return((c.x-o.x)*(l.y-o.y)-(l.x-o.x)*(c.y-o.y))/2}},{key:"det",value:function(o,l,c,g){return o*g-l*c}},{key:"interpolateZ",value:function(o,l,c,g){var S=l.x,R=l.y,F=c.x-S,q=g.x-S,Q=c.y-R,Ee=g.y-R,Me=F*Ee-q*Q,Xe=o.x-S,pt=o.y-R,dt=(Ee*Xe-q*pt)/Me,Vt=(-Q*Xe+F*pt)/Me;return l.getZ()+dt*(c.getZ()-l.getZ())+Vt*(g.getZ()-l.getZ())}},{key:"longestSideLength",value:function(o,l,c){var g=o.distance(l),S=l.distance(c),R=c.distance(o),F=g;return S>F&&(F=S),R>F&&(F=R),F}},{key:"circumcentreDD",value:function(o,l,c){var g=$t.valueOf(o.x).subtract(c.x),S=$t.valueOf(o.y).subtract(c.y),R=$t.valueOf(l.x).subtract(c.x),F=$t.valueOf(l.y).subtract(c.y),q=$t.determinant(g,S,R,F).multiply(2),Q=g.sqr().add(S.sqr()),Ee=R.sqr().add(F.sqr()),Me=$t.determinant(S,Q,F,Ee),Xe=$t.determinant(g,Q,R,Ee),pt=$t.valueOf(c.x).subtract(Me.divide(q)).doubleValue(),dt=$t.valueOf(c.y).add(Xe.divide(q)).doubleValue();return new Fe(pt,dt)}},{key:"isAcute",value:function(o,l,c){return!!Hn.isAcute(o,l,c)&&!!Hn.isAcute(l,c,o)&&!!Hn.isAcute(c,o,l)}},{key:"circumcentre",value:function(o,l,c){var g=c.x,S=c.y,R=o.x-g,F=o.y-S,q=l.x-g,Q=l.y-S,Ee=2*v.det(R,F,q,Q),Me=v.det(F,R*R+F*F,Q,q*q+Q*Q),Xe=v.det(R,R*R+F*F,q,q*q+Q*Q);return new Fe(g-Me/Ee,S+Xe/Ee)}},{key:"perpendicularBisector",value:function(o,l){var c=l.x-o.x,g=l.y-o.y,S=new qo(o.x+c/2,o.y+g/2,1),R=new qo(o.x-g+c/2,o.y+c+g/2,1);return new qo(S,R)}},{key:"angleBisector",value:function(o,l,c){var g=l.distance(o),S=g/(g+l.distance(c)),R=c.x-o.x,F=c.y-o.y;return new Fe(o.x+S*R,o.y+S*F)}},{key:"area3D",value:function(o,l,c){var g=l.x-o.x,S=l.y-o.y,R=l.getZ()-o.getZ(),F=c.x-o.x,q=c.y-o.y,Q=c.getZ()-o.getZ(),Ee=S*Q-R*q,Me=R*F-g*Q,Xe=g*q-S*F,pt=Ee*Ee+Me*Me+Xe*Xe,dt=Math.sqrt(pt)/2;return dt}},{key:"centroid",value:function(o,l,c){var g=(o.x+l.x+c.x)/3,S=(o.y+l.y+c.y)/3;return new Fe(g,S)}},{key:"inCentre",value:function(o,l,c){var g=l.distance(c),S=o.distance(c),R=o.distance(l),F=g+S+R,q=(g*o.x+S*l.x+R*c.x)/F,Q=(g*o.y+S*l.y+R*c.y)/F;return new Fe(q,Q)}}]),v}(),_l=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"addRingSide",value:function(o,l,c,g,S){if(l===0&&o.length<cn.MINIMUM_VALID_SIZE)return null;var R=g,F=S;o.length>=cn.MINIMUM_VALID_SIZE&&Yt.isCCW(o)&&(R=S,F=g,c=ct.opposite(c));var q=this._curveBuilder.getRingCurve(o,c,l);this.addCurve(q,R,F)}},{key:"addRingBothSides",value:function(o,l){this.addRingSide(o,l,ct.LEFT,me.EXTERIOR,me.INTERIOR),this.addRingSide(o,l,ct.RIGHT,me.INTERIOR,me.EXTERIOR)}},{key:"addPoint",value:function(o){if(this._distance<=0)return null;var l=o.getCoordinates(),c=this._curveBuilder.getLineCurve(l,this._distance);this.addCurve(c,me.EXTERIOR,me.INTERIOR)}},{key:"addPolygon",value:function(o){var l=this._distance,c=ct.LEFT;this._distance<0&&(l=-this._distance,c=ct.RIGHT);var g=o.getExteriorRing(),S=dn.removeRepeatedPoints(g.getCoordinates());if(this._distance<0&&this.isErodedCompletely(g,this._distance)||this._distance<=0&&S.length<3)return null;this.addRingSide(S,l,c,me.EXTERIOR,me.INTERIOR);for(var R=0;R<o.getNumInteriorRing();R++){var F=o.getInteriorRingN(R),q=dn.removeRepeatedPoints(F.getCoordinates());this._distance>0&&this.isErodedCompletely(F,-this._distance)||this.addRingSide(q,l,ct.opposite(c),me.INTERIOR,me.EXTERIOR)}}},{key:"isTriangleErodedCompletely",value:function(o,l){var c=new du(o[0],o[1],o[2]),g=c.inCentre();return W.pointToSegment(g,c.p0,c.p1)<Math.abs(l)}},{key:"addLineString",value:function(o){if(this._curveBuilder.isLineOffsetEmpty(this._distance))return null;var l=dn.removeRepeatedPoints(o.getCoordinates());if(dn.isRing(l)&&!this._curveBuilder.getBufferParameters().isSingleSided())this.addRingBothSides(l,this._distance);else{var c=this._curveBuilder.getLineCurve(l,this._distance);this.addCurve(c,me.EXTERIOR,me.INTERIOR)}}},{key:"addCurve",value:function(o,l,c){if(o===null||o.length<2)return null;var g=new ao(o,new On(0,me.BOUNDARY,l,c));this._curveList.add(g)}},{key:"getCurves",value:function(){return this.add(this._inputGeom),this._curveList}},{key:"add",value:function(o){if(o.isEmpty())return null;if(o instanceof hi)this.addPolygon(o);else if(o instanceof ht)this.addLineString(o);else if(o instanceof Ht)this.addPoint(o);else if(o instanceof xr)this.addCollection(o);else if(o instanceof Ge)this.addCollection(o);else if(o instanceof Fs)this.addCollection(o);else{if(!(o instanceof Pi))throw new Ti(o.getGeometryType());this.addCollection(o)}}},{key:"isErodedCompletely",value:function(o,l){var c=o.getCoordinates();if(c.length<4)return l<0;if(c.length===4)return this.isTriangleErodedCompletely(c,l);var g=o.getEnvelopeInternal(),S=Math.min(g.getHeight(),g.getWidth());return l<0&&2*Math.abs(l)>S}},{key:"addCollection",value:function(o){for(var l=0;l<o.getNumGeometries();l++){var c=o.getGeometryN(l);this.add(c)}}}],[{key:"constructor_",value:function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new qt;var o=arguments[0],l=arguments[1],c=arguments[2];this._inputGeom=o,this._distance=l,this._curveBuilder=c}}]),v}(),mu=function(){function v(){w(this,v)}return A(v,[{key:"locate",value:function(o){}}]),v}(),Zo=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"next",value:function(){if(this._atStart)return this._atStart=!1,v.isAtomic(this._parent)&&this._index++,this._parent;if(this._subcollectionIterator!==null){if(this._subcollectionIterator.hasNext())return this._subcollectionIterator.next();this._subcollectionIterator=null}if(this._index>=this._max)throw new $r;var o=this._parent.getGeometryN(this._index++);return o instanceof Pi?(this._subcollectionIterator=new v(o),this._subcollectionIterator.next()):o}},{key:"remove",value:function(){throw new Ti(this.getClass().getName())}},{key:"hasNext",value:function(){if(this._atStart)return!0;if(this._subcollectionIterator!==null){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)}},{key:"interfaces_",get:function(){return[_s]}}],[{key:"constructor_",value:function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;var o=arguments[0];this._parent=o,this._atStart=!0,this._index=0,this._max=o.getNumGeometries()}},{key:"isAtomic",value:function(o){return!(o instanceof Pi)}}]),v}(),yl=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"locate",value:function(o){return v.locate(o,this._geom)}},{key:"interfaces_",get:function(){return[mu]}}],[{key:"constructor_",value:function(){this._geom=null;var o=arguments[0];this._geom=o}},{key:"locatePointInPolygon",value:function(o,l){if(l.isEmpty())return me.EXTERIOR;var c=l.getExteriorRing(),g=v.locatePointInRing(o,c);if(g!==me.INTERIOR)return g;for(var S=0;S<l.getNumInteriorRing();S++){var R=l.getInteriorRingN(S),F=v.locatePointInRing(o,R);if(F===me.BOUNDARY)return me.BOUNDARY;if(F===me.INTERIOR)return me.EXTERIOR}return me.INTERIOR}},{key:"locatePointInRing",value:function(o,l){return l.getEnvelopeInternal().intersects(o)?jo.locateInRing(o,l.getCoordinates()):me.EXTERIOR}},{key:"containsPointInPolygon",value:function(o,l){return me.EXTERIOR!==v.locatePointInPolygon(o,l)}},{key:"locateInGeometry",value:function(o,l){if(l instanceof hi)return v.locatePointInPolygon(o,l);if(l instanceof Pi)for(var c=new Zo(l);c.hasNext();){var g=c.next();if(g!==l){var S=v.locateInGeometry(o,g);if(S!==me.EXTERIOR)return S}}return me.EXTERIOR}},{key:"isContained",value:function(o,l){return me.EXTERIOR!==v.locate(o,l)}},{key:"locate",value:function(o,l){return l.isEmpty()?me.EXTERIOR:l.getEnvelopeInternal().intersects(o)?v.locateInGeometry(o,l):me.EXTERIOR}}]),v}(),bc=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getNextCW",value:function(o){this.getEdges();var l=this._edgeList.indexOf(o),c=l-1;return l===0&&(c=this._edgeList.size()-1),this._edgeList.get(c)}},{key:"propagateSideLabels",value:function(o){for(var l=me.NONE,c=this.iterator();c.hasNext();){var g=c.next().getLabel();g.isArea(o)&&g.getLocation(o,ct.LEFT)!==me.NONE&&(l=g.getLocation(o,ct.LEFT))}if(l===me.NONE)return null;for(var S=l,R=this.iterator();R.hasNext();){var F=R.next(),q=F.getLabel();if(q.getLocation(o,ct.ON)===me.NONE&&q.setLocation(o,ct.ON,S),q.isArea(o)){var Q=q.getLocation(o,ct.LEFT),Ee=q.getLocation(o,ct.RIGHT);if(Ee!==me.NONE){if(Ee!==S)throw new Wn("side location conflict",F.getCoordinate());Q===me.NONE&&Dt.shouldNeverReachHere("found single null side (at "+F.getCoordinate()+")"),S=Q}else Dt.isTrue(q.getLocation(o,ct.LEFT)===me.NONE,"found single null side"),q.setLocation(o,ct.RIGHT,S),q.setLocation(o,ct.LEFT,S)}}}},{key:"getCoordinate",value:function(){var o=this.iterator();return o.hasNext()?o.next().getCoordinate():null}},{key:"print",value:function(o){ce.out.println("EdgeEndStar: "+this.getCoordinate());for(var l=this.iterator();l.hasNext();)l.next().print(o)}},{key:"isAreaLabelsConsistent",value:function(o){return this.computeEdgeEndLabels(o.getBoundaryNodeRule()),this.checkAreaLabelsConsistent(0)}},{key:"checkAreaLabelsConsistent",value:function(o){var l=this.getEdges();if(l.size()<=0)return!0;var c=l.size()-1,g=l.get(c).getLabel().getLocation(o,ct.LEFT);Dt.isTrue(g!==me.NONE,"Found unlabelled area edge");for(var S=g,R=this.iterator();R.hasNext();){var F=R.next().getLabel();Dt.isTrue(F.isArea(o),"Found non-area edge");var q=F.getLocation(o,ct.LEFT),Q=F.getLocation(o,ct.RIGHT);if(q===Q||Q!==S)return!1;S=q}return!0}},{key:"findIndex",value:function(o){this.iterator();for(var l=0;l<this._edgeList.size();l++)if(this._edgeList.get(l)===o)return l;return-1}},{key:"iterator",value:function(){return this.getEdges().iterator()}},{key:"getEdges",value:function(){return this._edgeList===null&&(this._edgeList=new qt(this._edgeMap.values())),this._edgeList}},{key:"getLocation",value:function(o,l,c){return this._ptInAreaLocation[o]===me.NONE&&(this._ptInAreaLocation[o]=yl.locate(l,c[o].getGeometry())),this._ptInAreaLocation[o]}},{key:"toString",value:function(){var o=new bo;o.append("EdgeEndStar: "+this.getCoordinate()),o.append(`
`);for(var l=this.iterator();l.hasNext();){var c=l.next();o.append(c),o.append(`
`)}return o.toString()}},{key:"computeEdgeEndLabels",value:function(o){for(var l=this.iterator();l.hasNext();)l.next().computeLabel(o)}},{key:"computeLabelling",value:function(o){this.computeEdgeEndLabels(o[0].getBoundaryNodeRule()),this.propagateSideLabels(0),this.propagateSideLabels(1);for(var l=[!1,!1],c=this.iterator();c.hasNext();)for(var g=c.next().getLabel(),S=0;S<2;S++)g.isLine(S)&&g.getLocation(S)===me.BOUNDARY&&(l[S]=!0);for(var R=this.iterator();R.hasNext();)for(var F=R.next(),q=F.getLabel(),Q=0;Q<2;Q++)if(q.isAnyNull(Q)){var Ee=me.NONE;if(l[Q])Ee=me.EXTERIOR;else{var Me=F.getCoordinate();Ee=this.getLocation(Q,Me,o)}q.setAllLocationsIfNull(Q,Ee)}}},{key:"getDegree",value:function(){return this._edgeMap.size()}},{key:"insertEdgeEnd",value:function(o,l){this._edgeMap.put(o,l),this._edgeList=null}}],[{key:"constructor_",value:function(){this._edgeMap=new Nr,this._edgeList=null,this._ptInAreaLocation=[me.NONE,me.NONE]}}]),v}(),wc=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"linkResultDirectedEdges",value:function(){this.getResultAreaEdges();for(var c=null,g=null,S=this._SCANNING_FOR_INCOMING,R=0;R<this._resultAreaEdgeList.size();R++){var F=this._resultAreaEdgeList.get(R),q=F.getSym();if(F.getLabel().isArea())switch(c===null&&F.isInResult()&&(c=F),S){case this._SCANNING_FOR_INCOMING:if(!q.isInResult())continue;g=q,S=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(!F.isInResult())continue;g.setNext(F),S=this._SCANNING_FOR_INCOMING}}if(S===this._LINKING_TO_OUTGOING){if(c===null)throw new Wn("no outgoing dirEdge found",this.getCoordinate());Dt.isTrue(c.isInResult(),"unable to link last incoming dirEdge"),g.setNext(c)}}},{key:"insert",value:function(c){var g=c;this.insertEdgeEnd(g,g)}},{key:"getRightmostEdge",value:function(){var c=this.getEdges(),g=c.size();if(g<1)return null;var S=c.get(0);if(g===1)return S;var R=c.get(g-1),F=S.getQuadrant(),q=R.getQuadrant();return Bn.isNorthern(F)&&Bn.isNorthern(q)?S:Bn.isNorthern(F)||Bn.isNorthern(q)?S.getDy()!==0?S:R.getDy()!==0?R:(Dt.shouldNeverReachHere("found two horizontal edges incident on node"),null):R}},{key:"print",value:function(c){ce.out.println("DirectedEdgeStar: "+this.getCoordinate());for(var g=this.iterator();g.hasNext();){var S=g.next();c.print("out "),S.print(c),c.println(),c.print("in "),S.getSym().print(c),c.println()}}},{key:"getResultAreaEdges",value:function(){if(this._resultAreaEdgeList!==null)return this._resultAreaEdgeList;this._resultAreaEdgeList=new qt;for(var c=this.iterator();c.hasNext();){var g=c.next();(g.isInResult()||g.getSym().isInResult())&&this._resultAreaEdgeList.add(g)}return this._resultAreaEdgeList}},{key:"updateLabelling",value:function(c){for(var g=this.iterator();g.hasNext();){var S=g.next().getLabel();S.setAllLocationsIfNull(0,c.getLocation(0)),S.setAllLocationsIfNull(1,c.getLocation(1))}}},{key:"linkAllDirectedEdges",value:function(){this.getEdges();for(var c=null,g=null,S=this._edgeList.size()-1;S>=0;S--){var R=this._edgeList.get(S),F=R.getSym();g===null&&(g=F),c!==null&&F.setNext(c),c=R}g.setNext(c)}},{key:"computeDepths",value:function(){if(arguments.length===1){var c=arguments[0],g=this.findIndex(c),S=c.getDepth(ct.LEFT),R=c.getDepth(ct.RIGHT),F=this.computeDepths(g+1,this._edgeList.size(),S),q=this.computeDepths(0,g,F);if(q!==R)throw new Wn("depth mismatch at "+c.getCoordinate())}else if(arguments.length===3){for(var Q=arguments[0],Ee=arguments[1],Me=arguments[2],Xe=Me,pt=Q;pt<Ee;pt++){var dt=this._edgeList.get(pt);dt.setEdgeDepths(ct.RIGHT,Xe),Xe=dt.getDepth(ct.LEFT)}return Xe}}},{key:"mergeSymLabels",value:function(){for(var c=this.iterator();c.hasNext();){var g=c.next();g.getLabel().merge(g.getSym().getLabel())}}},{key:"linkMinimalDirectedEdges",value:function(c){for(var g=null,S=null,R=this._SCANNING_FOR_INCOMING,F=this._resultAreaEdgeList.size()-1;F>=0;F--){var q=this._resultAreaEdgeList.get(F),Q=q.getSym();switch(g===null&&q.getEdgeRing()===c&&(g=q),R){case this._SCANNING_FOR_INCOMING:if(Q.getEdgeRing()!==c)continue;S=Q,R=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(q.getEdgeRing()!==c)continue;S.setNextMin(q),R=this._SCANNING_FOR_INCOMING}}R===this._LINKING_TO_OUTGOING&&(Dt.isTrue(g!==null,"found null for first outgoing dirEdge"),Dt.isTrue(g.getEdgeRing()===c,"unable to link last incoming dirEdge"),S.setNextMin(g))}},{key:"getOutgoingDegree",value:function(){if(arguments.length===0){for(var c=0,g=this.iterator();g.hasNext();){var S=g.next();S.isInResult()&&c++}return c}if(arguments.length===1){for(var R=arguments[0],F=0,q=this.iterator();q.hasNext();){var Q=q.next();Q.getEdgeRing()===R&&F++}return F}}},{key:"getLabel",value:function(){return this._label}},{key:"findCoveredLineEdges",value:function(){for(var c=me.NONE,g=this.iterator();g.hasNext();){var S=g.next(),R=S.getSym();if(!S.isLineEdge()){if(S.isInResult()){c=me.INTERIOR;break}if(R.isInResult()){c=me.EXTERIOR;break}}}if(c===me.NONE)return null;for(var F=c,q=this.iterator();q.hasNext();){var Q=q.next(),Ee=Q.getSym();Q.isLineEdge()?Q.getEdge().setCovered(F===me.INTERIOR):(Q.isInResult()&&(F=me.EXTERIOR),Ee.isInResult()&&(F=me.INTERIOR))}}},{key:"computeLabelling",value:function(c){Ie($(l.prototype),"computeLabelling",this).call(this,c),this._label=new On(me.NONE);for(var g=this.iterator();g.hasNext();)for(var S=g.next().getEdge().getLabel(),R=0;R<2;R++){var F=S.getLocation(R);F!==me.INTERIOR&&F!==me.BOUNDARY||this._label.setLocation(R,me.INTERIOR)}}}],[{key:"constructor_",value:function(){this._resultAreaEdgeList=null,this._label=null,this._SCANNING_FOR_INCOMING=1,this._LINKING_TO_OUTGOING=2}}]),l}(bc),Ec=function(v){O(l,v);var o=ye(l);function l(){return w(this,l),o.call(this)}return A(l,[{key:"createNode",value:function(c){return new Nn(c,new wc)}}]),l}(so),Ia=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"compareTo",value:function(o){var l=o;return v.compareOriented(this._pts,this._orientation,l._pts,l._orientation)}},{key:"interfaces_",get:function(){return[_t]}}],[{key:"constructor_",value:function(){this._pts=null,this._orientation=null;var o=arguments[0];this._pts=o,this._orientation=v.orientation(o)}},{key:"orientation",value:function(o){return dn.increasingDirection(o)===1}},{key:"compareOriented",value:function(o,l,c,g){for(var S=l?1:-1,R=g?1:-1,F=l?o.length:-1,q=g?c.length:-1,Q=l?0:o.length-1,Ee=g?0:c.length-1;;){var Me=o[Q].compareTo(c[Ee]);if(Me!==0)return Me;var Xe=(Q+=S)===F,pt=(Ee+=R)===q;if(Xe&&!pt)return-1;if(!Xe&&pt)return 1;if(Xe&&pt)return 0}}}]),v}(),vl=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"print",value:function(o){o.print("MULTILINESTRING ( ");for(var l=0;l<this._edges.size();l++){var c=this._edges.get(l);l>0&&o.print(","),o.print("(");for(var g=c.getCoordinates(),S=0;S<g.length;S++)S>0&&o.print(","),o.print(g[S].x+" "+g[S].y);o.println(")")}o.print(") ")}},{key:"addAll",value:function(o){for(var l=o.iterator();l.hasNext();)this.add(l.next())}},{key:"findEdgeIndex",value:function(o){for(var l=0;l<this._edges.size();l++)if(this._edges.get(l).equals(o))return l;return-1}},{key:"iterator",value:function(){return this._edges.iterator()}},{key:"getEdges",value:function(){return this._edges}},{key:"get",value:function(o){return this._edges.get(o)}},{key:"findEqualEdge",value:function(o){var l=new Ia(o.getCoordinates());return this._ocaMap.get(l)}},{key:"add",value:function(o){this._edges.add(o);var l=new Ia(o.getCoordinates());this._ocaMap.put(l,o)}}],[{key:"constructor_",value:function(){this._edges=new qt,this._ocaMap=new Nr}}]),v}(),ka=function(){function v(){w(this,v)}return A(v,[{key:"processIntersections",value:function(o,l,c,g){}},{key:"isDone",value:function(){}}]),v}(),Ma=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"isTrivialIntersection",value:function(o,l,c,g){if(o===c&&this._li.getIntersectionNum()===1){if(v.isAdjacentSegments(l,g))return!0;if(o.isClosed()){var S=o.size()-1;if(l===0&&g===S||g===0&&l===S)return!0}}return!1}},{key:"getProperIntersectionPoint",value:function(){return this._properIntersectionPoint}},{key:"hasProperInteriorIntersection",value:function(){return this._hasProperInterior}},{key:"getLineIntersector",value:function(){return this._li}},{key:"hasProperIntersection",value:function(){return this._hasProper}},{key:"processIntersections",value:function(o,l,c,g){if(o===c&&l===g)return null;this.numTests++;var S=o.getCoordinates()[l],R=o.getCoordinates()[l+1],F=c.getCoordinates()[g],q=c.getCoordinates()[g+1];this._li.computeIntersection(S,R,F,q),this._li.hasIntersection()&&(this.numIntersections++,this._li.isInteriorIntersection()&&(this.numInteriorIntersections++,this._hasInterior=!0),this.isTrivialIntersection(o,l,c,g)||(this._hasIntersection=!0,o.addIntersections(this._li,l,0),c.addIntersections(this._li,g,1),this._li.isProper()&&(this.numProperIntersections++,this._hasProper=!0,this._hasProperInterior=!0)))}},{key:"hasIntersection",value:function(){return this._hasIntersection}},{key:"isDone",value:function(){return!1}},{key:"hasInteriorIntersection",value:function(){return this._hasInterior}},{key:"interfaces_",get:function(){return[ka]}}],[{key:"constructor_",value:function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._hasInterior=!1,this._properIntersectionPoint=null,this._li=null,this._isSelfIntersection=null,this.numIntersections=0,this.numInteriorIntersections=0,this.numProperIntersections=0,this.numTests=0;var o=arguments[0];this._li=o}},{key:"isAdjacentSegments",value:function(o,l){return Math.abs(o-l)===1}}]),v}(),gu=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getSegmentIndex",value:function(){return this.segmentIndex}},{key:"getCoordinate",value:function(){return this.coord}},{key:"print",value:function(o){o.print(this.coord),o.print(" seg # = "+this.segmentIndex),o.println(" dist = "+this.dist)}},{key:"compareTo",value:function(o){var l=o;return this.compare(l.segmentIndex,l.dist)}},{key:"isEndPoint",value:function(o){return this.segmentIndex===0&&this.dist===0||this.segmentIndex===o}},{key:"toString",value:function(){return this.coord+" seg # = "+this.segmentIndex+" dist = "+this.dist}},{key:"getDistance",value:function(){return this.dist}},{key:"compare",value:function(o,l){return this.segmentIndex<o?-1:this.segmentIndex>o?1:this.dist<l?-1:this.dist>l?1:0}},{key:"interfaces_",get:function(){return[_t]}}],[{key:"constructor_",value:function(){this.coord=null,this.segmentIndex=null,this.dist=null;var o=arguments[0],l=arguments[1],c=arguments[2];this.coord=new Fe(o),this.segmentIndex=l,this.dist=c}}]),v}(),_u=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"print",value:function(o){o.println("Intersections:");for(var l=this.iterator();l.hasNext();)l.next().print(o)}},{key:"iterator",value:function(){return this._nodeMap.values().iterator()}},{key:"addSplitEdges",value:function(o){this.addEndpoints();for(var l=this.iterator(),c=l.next();l.hasNext();){var g=l.next(),S=this.createSplitEdge(c,g);o.add(S),c=g}}},{key:"addEndpoints",value:function(){var o=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[o],o,0)}},{key:"createSplitEdge",value:function(o,l){var c=l.segmentIndex-o.segmentIndex+2,g=this.edge.pts[l.segmentIndex],S=l.dist>0||!l.coord.equals2D(g);S||c--;var R=new Array(c).fill(null),F=0;R[F++]=new Fe(o.coord);for(var q=o.segmentIndex+1;q<=l.segmentIndex;q++)R[F++]=this.edge.pts[q];return S&&(R[F]=l.coord),new Aa(R,new On(this.edge._label))}},{key:"add",value:function(o,l,c){var g=new gu(o,l,c),S=this._nodeMap.get(g);return S!==null?S:(this._nodeMap.put(g,g),g)}},{key:"isIntersection",value:function(o){for(var l=this.iterator();l.hasNext();)if(l.next().coord.equals(o))return!0;return!1}}],[{key:"constructor_",value:function(){this._nodeMap=new Nr,this.edge=null;var o=arguments[0];this.edge=o}}]),v}(),Tc=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"isIntersects",value:function(){return!this.isDisjoint()}},{key:"isCovers",value:function(){return(v.isTrue(this._matrix[me.INTERIOR][me.INTERIOR])||v.isTrue(this._matrix[me.INTERIOR][me.BOUNDARY])||v.isTrue(this._matrix[me.BOUNDARY][me.INTERIOR])||v.isTrue(this._matrix[me.BOUNDARY][me.BOUNDARY]))&&this._matrix[me.EXTERIOR][me.INTERIOR]===se.FALSE&&this._matrix[me.EXTERIOR][me.BOUNDARY]===se.FALSE}},{key:"isCoveredBy",value:function(){return(v.isTrue(this._matrix[me.INTERIOR][me.INTERIOR])||v.isTrue(this._matrix[me.INTERIOR][me.BOUNDARY])||v.isTrue(this._matrix[me.BOUNDARY][me.INTERIOR])||v.isTrue(this._matrix[me.BOUNDARY][me.BOUNDARY]))&&this._matrix[me.INTERIOR][me.EXTERIOR]===se.FALSE&&this._matrix[me.BOUNDARY][me.EXTERIOR]===se.FALSE}},{key:"set",value:function(){if(arguments.length===1)for(var o=arguments[0],l=0;l<o.length;l++){var c=Math.trunc(l/3),g=l%3;this._matrix[c][g]=se.toDimensionValue(o.charAt(l))}else if(arguments.length===3){var S=arguments[0],R=arguments[1],F=arguments[2];this._matrix[S][R]=F}}},{key:"isContains",value:function(){return v.isTrue(this._matrix[me.INTERIOR][me.INTERIOR])&&this._matrix[me.EXTERIOR][me.INTERIOR]===se.FALSE&&this._matrix[me.EXTERIOR][me.BOUNDARY]===se.FALSE}},{key:"setAtLeast",value:function(){if(arguments.length===1)for(var o=arguments[0],l=0;l<o.length;l++){var c=Math.trunc(l/3),g=l%3;this.setAtLeast(c,g,se.toDimensionValue(o.charAt(l)))}else if(arguments.length===3){var S=arguments[0],R=arguments[1],F=arguments[2];this._matrix[S][R]<F&&(this._matrix[S][R]=F)}}},{key:"setAtLeastIfValid",value:function(o,l,c){o>=0&&l>=0&&this.setAtLeast(o,l,c)}},{key:"isWithin",value:function(){return v.isTrue(this._matrix[me.INTERIOR][me.INTERIOR])&&this._matrix[me.INTERIOR][me.EXTERIOR]===se.FALSE&&this._matrix[me.BOUNDARY][me.EXTERIOR]===se.FALSE}},{key:"isTouches",value:function(o,l){return o>l?this.isTouches(l,o):(o===se.A&&l===se.A||o===se.L&&l===se.L||o===se.L&&l===se.A||o===se.P&&l===se.A||o===se.P&&l===se.L)&&this._matrix[me.INTERIOR][me.INTERIOR]===se.FALSE&&(v.isTrue(this._matrix[me.INTERIOR][me.BOUNDARY])||v.isTrue(this._matrix[me.BOUNDARY][me.INTERIOR])||v.isTrue(this._matrix[me.BOUNDARY][me.BOUNDARY]))}},{key:"isOverlaps",value:function(o,l){return o===se.P&&l===se.P||o===se.A&&l===se.A?v.isTrue(this._matrix[me.INTERIOR][me.INTERIOR])&&v.isTrue(this._matrix[me.INTERIOR][me.EXTERIOR])&&v.isTrue(this._matrix[me.EXTERIOR][me.INTERIOR]):o===se.L&&l===se.L&&this._matrix[me.INTERIOR][me.INTERIOR]===1&&v.isTrue(this._matrix[me.INTERIOR][me.EXTERIOR])&&v.isTrue(this._matrix[me.EXTERIOR][me.INTERIOR])}},{key:"isEquals",value:function(o,l){return o===l&&v.isTrue(this._matrix[me.INTERIOR][me.INTERIOR])&&this._matrix[me.INTERIOR][me.EXTERIOR]===se.FALSE&&this._matrix[me.BOUNDARY][me.EXTERIOR]===se.FALSE&&this._matrix[me.EXTERIOR][me.INTERIOR]===se.FALSE&&this._matrix[me.EXTERIOR][me.BOUNDARY]===se.FALSE}},{key:"toString",value:function(){for(var o=new Bo("123456789"),l=0;l<3;l++)for(var c=0;c<3;c++)o.setCharAt(3*l+c,se.toDimensionSymbol(this._matrix[l][c]));return o.toString()}},{key:"setAll",value:function(o){for(var l=0;l<3;l++)for(var c=0;c<3;c++)this._matrix[l][c]=o}},{key:"get",value:function(o,l){return this._matrix[o][l]}},{key:"transpose",value:function(){var o=this._matrix[1][0];return this._matrix[1][0]=this._matrix[0][1],this._matrix[0][1]=o,o=this._matrix[2][0],this._matrix[2][0]=this._matrix[0][2],this._matrix[0][2]=o,o=this._matrix[2][1],this._matrix[2][1]=this._matrix[1][2],this._matrix[1][2]=o,this}},{key:"matches",value:function(o){if(o.length!==9)throw new ut("Should be length 9: "+o);for(var l=0;l<3;l++)for(var c=0;c<3;c++)if(!v.matches(this._matrix[l][c],o.charAt(3*l+c)))return!1;return!0}},{key:"add",value:function(o){for(var l=0;l<3;l++)for(var c=0;c<3;c++)this.setAtLeast(l,c,o.get(l,c))}},{key:"isDisjoint",value:function(){return this._matrix[me.INTERIOR][me.INTERIOR]===se.FALSE&&this._matrix[me.INTERIOR][me.BOUNDARY]===se.FALSE&&this._matrix[me.BOUNDARY][me.INTERIOR]===se.FALSE&&this._matrix[me.BOUNDARY][me.BOUNDARY]===se.FALSE}},{key:"isCrosses",value:function(o,l){return o===se.P&&l===se.L||o===se.P&&l===se.A||o===se.L&&l===se.A?v.isTrue(this._matrix[me.INTERIOR][me.INTERIOR])&&v.isTrue(this._matrix[me.INTERIOR][me.EXTERIOR]):o===se.L&&l===se.P||o===se.A&&l===se.P||o===se.A&&l===se.L?v.isTrue(this._matrix[me.INTERIOR][me.INTERIOR])&&v.isTrue(this._matrix[me.EXTERIOR][me.INTERIOR]):o===se.L&&l===se.L&&this._matrix[me.INTERIOR][me.INTERIOR]===0}},{key:"interfaces_",get:function(){return[It]}}],[{key:"constructor_",value:function(){if(this._matrix=null,arguments.length===0)this._matrix=Array(3).fill().map(function(){return Array(3)}),this.setAll(se.FALSE);else if(arguments.length===1){if(typeof arguments[0]=="string"){var o=arguments[0];v.constructor_.call(this),this.set(o)}else if(arguments[0]instanceof v){var l=arguments[0];v.constructor_.call(this),this._matrix[me.INTERIOR][me.INTERIOR]=l._matrix[me.INTERIOR][me.INTERIOR],this._matrix[me.INTERIOR][me.BOUNDARY]=l._matrix[me.INTERIOR][me.BOUNDARY],this._matrix[me.INTERIOR][me.EXTERIOR]=l._matrix[me.INTERIOR][me.EXTERIOR],this._matrix[me.BOUNDARY][me.INTERIOR]=l._matrix[me.BOUNDARY][me.INTERIOR],this._matrix[me.BOUNDARY][me.BOUNDARY]=l._matrix[me.BOUNDARY][me.BOUNDARY],this._matrix[me.BOUNDARY][me.EXTERIOR]=l._matrix[me.BOUNDARY][me.EXTERIOR],this._matrix[me.EXTERIOR][me.INTERIOR]=l._matrix[me.EXTERIOR][me.INTERIOR],this._matrix[me.EXTERIOR][me.BOUNDARY]=l._matrix[me.EXTERIOR][me.BOUNDARY],this._matrix[me.EXTERIOR][me.EXTERIOR]=l._matrix[me.EXTERIOR][me.EXTERIOR]}}}},{key:"matches",value:function(){if(Number.isInteger(arguments[0])&&typeof arguments[1]=="string"){var o=arguments[0],l=arguments[1];return l===se.SYM_DONTCARE||l===se.SYM_TRUE&&(o>=0||o===se.TRUE)||l===se.SYM_FALSE&&o===se.FALSE||l===se.SYM_P&&o===se.P||l===se.SYM_L&&o===se.L||l===se.SYM_A&&o===se.A}if(typeof arguments[0]=="string"&&typeof arguments[1]=="string"){var c=arguments[0],g=arguments[1],S=new v(c);return S.matches(g)}}},{key:"isTrue",value:function(o){return o>=0||o===se.TRUE}}]),v}(),Hs=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"size",value:function(){return this._size}},{key:"addAll",value:function(o){return o===null||o.length===0?null:(this.ensureCapacity(this._size+o.length),ce.arraycopy(o,0,this._data,this._size,o.length),void(this._size+=o.length))}},{key:"ensureCapacity",value:function(o){if(o<=this._data.length)return null;var l=Math.max(o,2*this._data.length);this._data=Zt.copyOf(this._data,l)}},{key:"toArray",value:function(){var o=new Array(this._size).fill(null);return ce.arraycopy(this._data,0,o,0,this._size),o}},{key:"add",value:function(o){this.ensureCapacity(this._size+1),this._data[this._size]=o,++this._size}}],[{key:"constructor_",value:function(){if(this._data=null,this._size=0,arguments.length===0)v.constructor_.call(this,10);else if(arguments.length===1){var o=arguments[0];this._data=new Array(o).fill(null)}}}]),v}(),vs=function(){function v(){w(this,v)}return A(v,[{key:"getChainStartIndices",value:function(o){var l=0,c=new Hs(Math.trunc(o.length/2));c.add(l);do{var g=this.findChainEnd(o,l);c.add(g),l=g}while(l<o.length-1);return c.toArray()}},{key:"findChainEnd",value:function(o,l){for(var c=Bn.quadrant(o[l],o[l+1]),g=l+1;g<o.length&&Bn.quadrant(o[g-1],o[g])===c;)g++;return g-1}},{key:"OLDgetChainStartIndices",value:function(o){var l=0,c=new qt;c.add(l);do{var g=this.findChainEnd(o,l);c.add(g),l=g}while(l<o.length-1);return v.toIntArray(c)}}],[{key:"toIntArray",value:function(o){for(var l=new Array(o.size()).fill(null),c=0;c<l.length;c++)l[c]=o.get(c).intValue();return l}}]),v}(),xl=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getCoordinates",value:function(){return this.pts}},{key:"getMaxX",value:function(o){var l=this.pts[this.startIndex[o]].x,c=this.pts[this.startIndex[o+1]].x;return l>c?l:c}},{key:"getMinX",value:function(o){var l=this.pts[this.startIndex[o]].x,c=this.pts[this.startIndex[o+1]].x;return l<c?l:c}},{key:"computeIntersectsForChain",value:function(){if(arguments.length===4){var o=arguments[0],l=arguments[1],c=arguments[2],g=arguments[3];this.computeIntersectsForChain(this.startIndex[o],this.startIndex[o+1],l,l.startIndex[c],l.startIndex[c+1],g)}else if(arguments.length===6){var S=arguments[0],R=arguments[1],F=arguments[2],q=arguments[3],Q=arguments[4],Ee=arguments[5];if(R-S==1&&Q-q==1)return Ee.addIntersections(this.e,S,F.e,q),null;if(!this.overlaps(S,R,F,q,Q))return null;var Me=Math.trunc((S+R)/2),Xe=Math.trunc((q+Q)/2);S<Me&&(q<Xe&&this.computeIntersectsForChain(S,Me,F,q,Xe,Ee),Xe<Q&&this.computeIntersectsForChain(S,Me,F,Xe,Q,Ee)),Me<R&&(q<Xe&&this.computeIntersectsForChain(Me,R,F,q,Xe,Ee),Xe<Q&&this.computeIntersectsForChain(Me,R,F,Xe,Q,Ee))}}},{key:"overlaps",value:function(o,l,c,g,S){return Ci.intersects(this.pts[o],this.pts[l],c.pts[g],c.pts[S])}},{key:"getStartIndexes",value:function(){return this.startIndex}},{key:"computeIntersects",value:function(o,l){for(var c=0;c<this.startIndex.length-1;c++)for(var g=0;g<o.startIndex.length-1;g++)this.computeIntersectsForChain(c,o,g,l)}}],[{key:"constructor_",value:function(){this.e=null,this.pts=null,this.startIndex=null;var o=arguments[0];this.e=o,this.pts=o.getCoordinates();var l=new vs;this.startIndex=l.getChainStartIndices(this.pts)}}]),v}(),xs=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"getDepth",value:function(o,l){return this._depth[o][l]}},{key:"setDepth",value:function(o,l,c){this._depth[o][l]=c}},{key:"isNull",value:function(){if(arguments.length===0){for(var o=0;o<2;o++)for(var l=0;l<3;l++)if(this._depth[o][l]!==v.NULL_VALUE)return!1;return!0}if(arguments.length===1){var c=arguments[0];return this._depth[c][1]===v.NULL_VALUE}if(arguments.length===2){var g=arguments[0],S=arguments[1];return this._depth[g][S]===v.NULL_VALUE}}},{key:"normalize",value:function(){for(var o=0;o<2;o++)if(!this.isNull(o)){var l=this._depth[o][1];this._depth[o][2]<l&&(l=this._depth[o][2]),l<0&&(l=0);for(var c=1;c<3;c++){var g=0;this._depth[o][c]>l&&(g=1),this._depth[o][c]=g}}}},{key:"getDelta",value:function(o){return this._depth[o][ct.RIGHT]-this._depth[o][ct.LEFT]}},{key:"getLocation",value:function(o,l){return this._depth[o][l]<=0?me.EXTERIOR:me.INTERIOR}},{key:"toString",value:function(){return"A: "+this._depth[0][1]+","+this._depth[0][2]+" B: "+this._depth[1][1]+","+this._depth[1][2]}},{key:"add",value:function(){if(arguments.length===1)for(var o=arguments[0],l=0;l<2;l++)for(var c=1;c<3;c++){var g=o.getLocation(l,c);g!==me.EXTERIOR&&g!==me.INTERIOR||(this.isNull(l,c)?this._depth[l][c]=v.depthAtLocation(g):this._depth[l][c]+=v.depthAtLocation(g))}else if(arguments.length===3){var S=arguments[0],R=arguments[1],F=arguments[2];F===me.INTERIOR&&this._depth[S][R]++}}}],[{key:"constructor_",value:function(){this._depth=Array(2).fill().map(function(){return Array(3)});for(var o=0;o<2;o++)for(var l=0;l<3;l++)this._depth[o][l]=v.NULL_VALUE}},{key:"depthAtLocation",value:function(o){return o===me.EXTERIOR?0:o===me.INTERIOR?1:v.NULL_VALUE}}]),v}();xs.NULL_VALUE=-1;var Aa=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"getDepth",value:function(){return this._depth}},{key:"getCollapsedEdge",value:function(){var c=new Array(2).fill(null);return c[0]=this.pts[0],c[1]=this.pts[1],new l(c,On.toLineLabel(this._label))}},{key:"isIsolated",value:function(){return this._isIsolated}},{key:"getCoordinates",value:function(){return this.pts}},{key:"setIsolated",value:function(c){this._isIsolated=c}},{key:"setName",value:function(c){this._name=c}},{key:"equals",value:function(c){if(!(c instanceof l))return!1;var g=c;if(this.pts.length!==g.pts.length)return!1;for(var S=!0,R=!0,F=this.pts.length,q=0;q<this.pts.length;q++)if(this.pts[q].equals2D(g.pts[q])||(S=!1),this.pts[q].equals2D(g.pts[--F])||(R=!1),!S&&!R)return!1;return!0}},{key:"getCoordinate",value:function(){if(arguments.length===0)return this.pts.length>0?this.pts[0]:null;if(arguments.length===1){var c=arguments[0];return this.pts[c]}}},{key:"print",value:function(c){c.print("edge "+this._name+": "),c.print("LINESTRING (");for(var g=0;g<this.pts.length;g++)g>0&&c.print(","),c.print(this.pts[g].x+" "+this.pts[g].y);c.print(") "+this._label+" "+this._depthDelta)}},{key:"computeIM",value:function(c){l.updateIM(this._label,c)}},{key:"isCollapsed",value:function(){return!!this._label.isArea()&&this.pts.length===3&&!!this.pts[0].equals(this.pts[2])}},{key:"isClosed",value:function(){return this.pts[0].equals(this.pts[this.pts.length-1])}},{key:"getMaximumSegmentIndex",value:function(){return this.pts.length-1}},{key:"getDepthDelta",value:function(){return this._depthDelta}},{key:"getNumPoints",value:function(){return this.pts.length}},{key:"printReverse",value:function(c){c.print("edge "+this._name+": ");for(var g=this.pts.length-1;g>=0;g--)c.print(this.pts[g]+" ");c.println("")}},{key:"getMonotoneChainEdge",value:function(){return this._mce===null&&(this._mce=new xl(this)),this._mce}},{key:"getEnvelope",value:function(){if(this._env===null){this._env=new Ci;for(var c=0;c<this.pts.length;c++)this._env.expandToInclude(this.pts[c])}return this._env}},{key:"addIntersection",value:function(c,g,S,R){var F=new Fe(c.getIntersection(R)),q=g,Q=c.getEdgeDistance(S,R),Ee=q+1;if(Ee<this.pts.length){var Me=this.pts[Ee];F.equals2D(Me)&&(q=Ee,Q=0)}this.eiList.add(F,q,Q)}},{key:"toString",value:function(){var c=new Bo;c.append("edge "+this._name+": "),c.append("LINESTRING (");for(var g=0;g<this.pts.length;g++)g>0&&c.append(","),c.append(this.pts[g].x+" "+this.pts[g].y);return c.append(") "+this._label+" "+this._depthDelta),c.toString()}},{key:"isPointwiseEqual",value:function(c){if(this.pts.length!==c.pts.length)return!1;for(var g=0;g<this.pts.length;g++)if(!this.pts[g].equals2D(c.pts[g]))return!1;return!0}},{key:"setDepthDelta",value:function(c){this._depthDelta=c}},{key:"getEdgeIntersectionList",value:function(){return this.eiList}},{key:"addIntersections",value:function(c,g,S){for(var R=0;R<c.getIntersectionNum();R++)this.addIntersection(c,g,S,R)}}],[{key:"constructor_",value:function(){if(this.pts=null,this._env=null,this.eiList=new _u(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new xs,this._depthDelta=0,arguments.length===1){var c=arguments[0];l.constructor_.call(this,c,null)}else if(arguments.length===2){var g=arguments[0],S=arguments[1];this.pts=g,this._label=S}}},{key:"updateIM",value:function(){if(!(arguments.length===2&&arguments[1]instanceof Tc&&arguments[0]instanceof On))return Ie($(l),"updateIM",this).apply(this,arguments);var c=arguments[0],g=arguments[1];g.setAtLeastIfValid(c.getLocation(0,ct.ON),c.getLocation(1,ct.ON),1),c.isArea()&&(g.setAtLeastIfValid(c.getLocation(0,ct.LEFT),c.getLocation(1,ct.LEFT),2),g.setAtLeastIfValid(c.getLocation(0,ct.RIGHT),c.getLocation(1,ct.RIGHT),2))}}]),l}(va),jr=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"setWorkingPrecisionModel",value:function(o){this._workingPrecisionModel=o}},{key:"insertUniqueEdge",value:function(o){var l=this._edgeList.findEqualEdge(o);if(l!==null){var c=l.getLabel(),g=o.getLabel();l.isPointwiseEqual(o)||(g=new On(o.getLabel())).flip(),c.merge(g);var S=v.depthDelta(g),R=l.getDepthDelta()+S;l.setDepthDelta(R)}else this._edgeList.add(o),o.setDepthDelta(v.depthDelta(o.getLabel()))}},{key:"buildSubgraphs",value:function(o,l){for(var c=new qt,g=o.iterator();g.hasNext();){var S=g.next(),R=S.getRightmostCoordinate(),F=new Ys(c).getDepth(R);S.computeDepth(F),S.findResultEdges(),c.add(S),l.add(S.getDirectedEdges(),S.getNodes())}}},{key:"createSubgraphs",value:function(o){for(var l=new qt,c=o.getNodes().iterator();c.hasNext();){var g=c.next();if(!g.isVisited()){var S=new ms;S.create(g),l.add(S)}}return or.sort(l,or.reverseOrder()),l}},{key:"createEmptyResultGeometry",value:function(){return this._geomFact.createPolygon()}},{key:"getNoder",value:function(o){if(this._workingNoder!==null)return this._workingNoder;var l=new lo,c=new To;return c.setPrecisionModel(o),l.setSegmentIntersector(new Ma(c)),l}},{key:"buffer",value:function(o,l){var c=this._workingPrecisionModel;c===null&&(c=o.getPrecisionModel()),this._geomFact=o.getFactory();var g=new Ta(c,this._bufParams),S=new _l(o,l,g).getCurves();if(S.size()<=0)return this.createEmptyResultGeometry();this.computeNodedEdges(S,c),this._graph=new Gs(new Ec),this._graph.addEdges(this._edgeList.getEdges());var R=this.createSubgraphs(this._graph),F=new vc(this._geomFact);this.buildSubgraphs(R,F);var q=F.getPolygons();return q.size()<=0?this.createEmptyResultGeometry():this._geomFact.buildGeometry(q)}},{key:"computeNodedEdges",value:function(o,l){var c=this.getNoder(l);c.computeNodes(o);for(var g=c.getNodedSubstrings().iterator();g.hasNext();){var S=g.next(),R=S.getCoordinates();if(R.length!==2||!R[0].equals2D(R[1])){var F=S.getData(),q=new Aa(S.getCoordinates(),new On(F));this.insertUniqueEdge(q)}}}},{key:"setNoder",value:function(o){this._workingNoder=o}}],[{key:"constructor_",value:function(){this._bufParams=null,this._workingPrecisionModel=null,this._workingNoder=null,this._geomFact=null,this._graph=null,this._edgeList=new vl;var o=arguments[0];this._bufParams=o}},{key:"depthDelta",value:function(o){var l=o.getLocation(0,ct.LEFT),c=o.getLocation(0,ct.RIGHT);return l===me.INTERIOR&&c===me.EXTERIOR?1:l===me.EXTERIOR&&c===me.INTERIOR?-1:0}},{key:"convertSegStrings",value:function(o){for(var l=new nr,c=new qt;o.hasNext();){var g=o.next(),S=l.createLineString(g.getCoordinates());c.add(S)}return l.buildGeometry(c)}}]),v}(),Ca=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"rescale",value:function(){if(ii(arguments[0],rn))for(var o=arguments[0],l=o.iterator();l.hasNext();){var c=l.next();this.rescale(c.getCoordinates())}else if(arguments[0]instanceof Array){for(var g=arguments[0],S=0;S<g.length;S++)g[S].x=g[S].x/this._scaleFactor+this._offsetX,g[S].y=g[S].y/this._scaleFactor+this._offsetY;g.length===2&&g[0].equals2D(g[1])&&ce.out.println(g)}}},{key:"scale",value:function(){if(ii(arguments[0],rn)){for(var o=arguments[0],l=new qt(o.size()),c=o.iterator();c.hasNext();){var g=c.next();l.add(new ao(this.scale(g.getCoordinates()),g.getData()))}return l}if(arguments[0]instanceof Array){for(var S=arguments[0],R=new Array(S.length).fill(null),F=0;F<S.length;F++)R[F]=new Fe(Math.round((S[F].x-this._offsetX)*this._scaleFactor),Math.round((S[F].y-this._offsetY)*this._scaleFactor),S[F].getZ());var q=dn.removeRepeatedPoints(R);return q}}},{key:"isIntegerPrecision",value:function(){return this._scaleFactor===1}},{key:"getNodedSubstrings",value:function(){var o=this._noder.getNodedSubstrings();return this._isScaled&&this.rescale(o),o}},{key:"computeNodes",value:function(o){var l=o;this._isScaled&&(l=this.scale(o)),this._noder.computeNodes(l)}},{key:"interfaces_",get:function(){return[So]}}],[{key:"constructor_",value:function(){if(this._noder=null,this._scaleFactor=null,this._offsetX=null,this._offsetY=null,this._isScaled=!1,arguments.length===2){var o=arguments[0],l=arguments[1];v.constructor_.call(this,o,l,0,0)}else if(arguments.length===4){var c=arguments[0],g=arguments[1];this._noder=c,this._scaleFactor=g,this._isScaled=!this.isIntegerPrecision()}}}]),v}(),Pa=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"checkEndPtVertexIntersections",value:function(){if(arguments.length===0)for(var o=this._segStrings.iterator();o.hasNext();){var l=o.next(),c=l.getCoordinates();this.checkEndPtVertexIntersections(c[0],this._segStrings),this.checkEndPtVertexIntersections(c[c.length-1],this._segStrings)}else if(arguments.length===2){for(var g=arguments[0],S=arguments[1],R=S.iterator();R.hasNext();)for(var F=R.next(),q=F.getCoordinates(),Q=1;Q<q.length-1;Q++)if(q[Q].equals(g))throw new Oi("found endpt/interior pt intersection at index "+Q+" :pt "+g)}}},{key:"checkInteriorIntersections",value:function(){if(arguments.length===0)for(var o=this._segStrings.iterator();o.hasNext();)for(var l=o.next(),c=this._segStrings.iterator();c.hasNext();){var g=c.next();this.checkInteriorIntersections(l,g)}else if(arguments.length===2)for(var S=arguments[0],R=arguments[1],F=S.getCoordinates(),q=R.getCoordinates(),Q=0;Q<F.length-1;Q++)for(var Ee=0;Ee<q.length-1;Ee++)this.checkInteriorIntersections(S,Q,R,Ee);else if(arguments.length===4){var Me=arguments[0],Xe=arguments[1],pt=arguments[2],dt=arguments[3];if(Me===pt&&Xe===dt)return null;var Vt=Me.getCoordinates()[Xe],Ut=Me.getCoordinates()[Xe+1],ei=pt.getCoordinates()[dt],yi=pt.getCoordinates()[dt+1];if(this._li.computeIntersection(Vt,Ut,ei,yi),this._li.hasIntersection()&&(this._li.isProper()||this.hasInteriorIntersection(this._li,Vt,Ut)||this.hasInteriorIntersection(this._li,ei,yi)))throw new Oi("found non-noded intersection at "+Vt+"-"+Ut+" and "+ei+"-"+yi)}}},{key:"checkValid",value:function(){this.checkEndPtVertexIntersections(),this.checkInteriorIntersections(),this.checkCollapses()}},{key:"checkCollapses",value:function(){if(arguments.length===0)for(var o=this._segStrings.iterator();o.hasNext();){var l=o.next();this.checkCollapses(l)}else if(arguments.length===1)for(var c=arguments[0],g=c.getCoordinates(),S=0;S<g.length-2;S++)this.checkCollapse(g[S],g[S+1],g[S+2])}},{key:"hasInteriorIntersection",value:function(o,l,c){for(var g=0;g<o.getIntersectionNum();g++){var S=o.getIntersection(g);if(!S.equals(l)&&!S.equals(c))return!0}return!1}},{key:"checkCollapse",value:function(o,l,c){if(o.equals(c))throw new Oi("found non-noded collapse at "+v.fact.createLineString([o,l,c]))}}],[{key:"constructor_",value:function(){this._li=new To,this._segStrings=null;var o=arguments[0];this._segStrings=o}}]),v}();Pa.fact=new nr;var bs=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"intersectsScaled",value:function(o,l){var c=Math.min(o.x,l.x),g=Math.max(o.x,l.x),S=Math.min(o.y,l.y),R=Math.max(o.y,l.y),F=this._maxx<c||this._minx>g||this._maxy<S||this._miny>R;if(F)return!1;var q=this.intersectsToleranceSquare(o,l);return Dt.isTrue(!(F&&q),"Found bad envelope test"),q}},{key:"initCorners",value:function(o){var l=.5;this._minx=o.x-l,this._maxx=o.x+l,this._miny=o.y-l,this._maxy=o.y+l,this._corner[0]=new Fe(this._maxx,this._maxy),this._corner[1]=new Fe(this._minx,this._maxy),this._corner[2]=new Fe(this._minx,this._miny),this._corner[3]=new Fe(this._maxx,this._miny)}},{key:"intersects",value:function(o,l){return this._scaleFactor===1?this.intersectsScaled(o,l):(this.copyScaled(o,this._p0Scaled),this.copyScaled(l,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))}},{key:"scale",value:function(o){return Math.round(o*this._scaleFactor)}},{key:"getCoordinate",value:function(){return this._originalPt}},{key:"copyScaled",value:function(o,l){l.x=this.scale(o.x),l.y=this.scale(o.y)}},{key:"getSafeEnvelope",value:function(){if(this._safeEnv===null){var o=v.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new Ci(this._originalPt.x-o,this._originalPt.x+o,this._originalPt.y-o,this._originalPt.y+o)}return this._safeEnv}},{key:"intersectsPixelClosure",value:function(o,l){return this._li.computeIntersection(o,l,this._corner[0],this._corner[1]),!!this._li.hasIntersection()||(this._li.computeIntersection(o,l,this._corner[1],this._corner[2]),!!this._li.hasIntersection()||(this._li.computeIntersection(o,l,this._corner[2],this._corner[3]),!!this._li.hasIntersection()||(this._li.computeIntersection(o,l,this._corner[3],this._corner[0]),!!this._li.hasIntersection())))}},{key:"intersectsToleranceSquare",value:function(o,l){var c=!1,g=!1;return this._li.computeIntersection(o,l,this._corner[0],this._corner[1]),!!this._li.isProper()||(this._li.computeIntersection(o,l,this._corner[1],this._corner[2]),!!this._li.isProper()||(this._li.hasIntersection()&&(c=!0),this._li.computeIntersection(o,l,this._corner[2],this._corner[3]),!!this._li.isProper()||(this._li.hasIntersection()&&(g=!0),this._li.computeIntersection(o,l,this._corner[3],this._corner[0]),!!this._li.isProper()||!(!c||!g)||!!o.equals(this._pt)||!!l.equals(this._pt))))}},{key:"addSnappedNode",value:function(o,l){var c=o.getCoordinate(l),g=o.getCoordinate(l+1);return!!this.intersects(c,g)&&(o.addIntersection(this.getCoordinate(),l),!0)}}],[{key:"constructor_",value:function(){this._li=null,this._pt=null,this._originalPt=null,this._ptScaled=null,this._p0Scaled=null,this._p1Scaled=null,this._scaleFactor=null,this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,this._corner=new Array(4).fill(null),this._safeEnv=null;var o=arguments[0],l=arguments[1],c=arguments[2];if(this._originalPt=o,this._pt=o,this._scaleFactor=l,this._li=c,l<=0)throw new ut("Scale factor must be non-zero");l!==1&&(this._pt=new Fe(this.scale(o.x),this.scale(o.y)),this._p0Scaled=new Fe,this._p1Scaled=new Fe),this.initCorners(this._pt)}}]),v}();bs.SAFE_ENV_EXPANSION_FACTOR=.75;var yu=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"select",value:function(){if(arguments.length!==1){if(arguments.length===2){var o=arguments[0],l=arguments[1];o.getLineSegment(l,this.selectedSegment),this.select(this.selectedSegment)}}}}],[{key:"constructor_",value:function(){this.selectedSegment=new ar}}]),v}(),La=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"snap",value:function(){if(arguments.length===1){var o=arguments[0];return this.snap(o,null,-1)}if(arguments.length===3){var l=arguments[0],c=arguments[1],g=arguments[2],S=l.getSafeEnvelope(),R=new vu(l,c,g);return this._index.query(S,new(function(){function F(){w(this,F)}return A(F,[{key:"interfaces_",get:function(){return[qs]}},{key:"visitItem",value:function(q){q.select(S,R)}}]),F}())),R.isNodeAdded()}}}],[{key:"constructor_",value:function(){this._index=null;var o=arguments[0];this._index=o}}]),v}(),vu=function(v){O(l,v);var o=ye(l);function l(){var c;return w(this,l),c=o.call(this),l.constructor_.apply(he(c),arguments),c}return A(l,[{key:"isNodeAdded",value:function(){return this._isNodeAdded}},{key:"select",value:function(){if(!(arguments.length===2&&Number.isInteger(arguments[1])&&arguments[0]instanceof Go))return Ie($(l.prototype),"select",this).apply(this,arguments);var c=arguments[0],g=arguments[1],S=c.getContext();if(this._parentEdge===S&&(g===this._hotPixelVertexIndex||g+1===this._hotPixelVertexIndex))return null;this._isNodeAdded|=this._hotPixel.addSnappedNode(S,g)}}],[{key:"constructor_",value:function(){this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var c=arguments[0],g=arguments[1],S=arguments[2];this._hotPixel=c,this._parentEdge=g,this._hotPixelVertexIndex=S}}]),l}(yu);La.HotPixelSnapAction=vu;var bl=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"processIntersections",value:function(o,l,c,g){if(o===c&&l===g)return null;var S=o.getCoordinates()[l],R=o.getCoordinates()[l+1],F=c.getCoordinates()[g],q=c.getCoordinates()[g+1];if(this._li.computeIntersection(S,R,F,q),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var Q=0;Q<this._li.getIntersectionNum();Q++)this._interiorIntersections.add(this._li.getIntersection(Q));o.addIntersections(this._li,l,0),c.addIntersections(this._li,g,1)}}},{key:"isDone",value:function(){return!1}},{key:"getInteriorIntersections",value:function(){return this._interiorIntersections}},{key:"interfaces_",get:function(){return[ka]}}],[{key:"constructor_",value:function(){this._li=null,this._interiorIntersections=null;var o=arguments[0];this._li=o,this._interiorIntersections=new qt}}]),v}(),Ra=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"checkCorrectness",value:function(o){var l=ao.getNodedSubstrings(o),c=new Pa(l);try{c.checkValid()}catch(g){if(!(g instanceof Et))throw g;g.printStackTrace()}}},{key:"getNodedSubstrings",value:function(){return ao.getNodedSubstrings(this._nodedSegStrings)}},{key:"snapRound",value:function(o,l){var c=this.findInteriorIntersections(o,l);this.computeIntersectionSnaps(c),this.computeVertexSnaps(o)}},{key:"findInteriorIntersections",value:function(o,l){var c=new bl(l);return this._noder.setSegmentIntersector(c),this._noder.computeNodes(o),c.getInteriorIntersections()}},{key:"computeVertexSnaps",value:function(){if(ii(arguments[0],rn))for(var o=arguments[0],l=o.iterator();l.hasNext();){var c=l.next();this.computeVertexSnaps(c)}else if(arguments[0]instanceof ao)for(var g=arguments[0],S=g.getCoordinates(),R=0;R<S.length;R++){var F=new bs(S[R],this._scaleFactor,this._li),q=this._pointSnapper.snap(F,g,R);q&&g.addIntersection(S[R],R)}}},{key:"computeNodes",value:function(o){this._nodedSegStrings=o,this._noder=new lo,this._pointSnapper=new La(this._noder.getIndex()),this.snapRound(o,this._li)}},{key:"computeIntersectionSnaps",value:function(o){for(var l=o.iterator();l.hasNext();){var c=l.next(),g=new bs(c,this._scaleFactor,this._li);this._pointSnapper.snap(g)}}},{key:"interfaces_",get:function(){return[So]}}],[{key:"constructor_",value:function(){this._pm=null,this._li=null,this._scaleFactor=null,this._noder=null,this._pointSnapper=null,this._nodedSegStrings=null;var o=arguments[0];this._pm=o,this._li=new To,this._li.setPrecisionModel(o),this._scaleFactor=o.getScale()}}]),v}(),Yr=function(){function v(){w(this,v),v.constructor_.apply(this,arguments)}return A(v,[{key:"bufferFixedPrecision",value:function(o){var l=new Ca(new Ra(new xn(1)),o.getScale()),c=new jr(this._bufParams);c.setWorkingPrecisionModel(o),c.setNoder(l),this._resultGeometry=c.buffer(this._argGeom,this._distance)}},{key:"bufferReducedPrecision",value:function(){if(arguments.length===0){for(var o=v.MAX_PRECISION_DIGITS;o>=0;o--){try{this.bufferReducedPrecision(o)}catch(S){if(!(S instanceof Wn))throw S;this._saveException=S}if(this._resultGeometry!==null)return null}throw this._saveException}if(arguments.length===1){var l=arguments[0],c=v.precisionScaleFactor(this._argGeom,this._distance,l),g=new xn(c);this.bufferFixedPrecision(g)}}},{key:"computeGeometry",value:function(){if(this.bufferOriginalPrecision(),this._resultGeometry!==null)return null;var o=this._argGeom.getFactory().getPrecisionModel();o.getType()===xn.FIXED?this.bufferFixedPrecision(o):this.bufferReducedPrecision()}},{key:"setQuadrantSegments",value:function(o){this._bufParams.setQuadrantSegments(o)}},{key:"bufferOriginalPrecision",value:function(){try{var o=new jr(this._bufParams);this._resultGeometry=o.buffer(this._argGeom,this._distance)}catch(l){if(!(l instanceof Oi))throw l;this._saveException=l}}},{key:"getResultGeometry",value:function(o){return this._distance=o,this.computeGeometry(),this._resultGeometry}},{key:"setEndCapStyle",value:function(o){this._bufParams.setEndCapStyle(o)}}],[{key:"constructor_",value:function(){if(this._argGeom=null,this._distance=null,this._bufParams=new Qe,this._resultGeometry=null,this._saveException=null,arguments.length===1){var o=arguments[0];this._argGeom=o}else if(arguments.length===2){var l=arguments[0],c=arguments[1];this._argGeom=l,this._bufParams=c}}},{key:"bufferOp",value:function(){if(arguments.length===2){var o=arguments[0],l=arguments[1],c=new v(o),g=c.getResultGeometry(l);return g}if(arguments.length===3){if(Number.isInteger(arguments[2])&&arguments[0]instanceof ft&&typeof arguments[1]=="number"){var S=arguments[0],R=arguments[1],F=arguments[2],q=new v(S);q.setQuadrantSegments(F);var Q=q.getResultGeometry(R);return Q}if(arguments[2]instanceof Qe&&arguments[0]instanceof ft&&typeof arguments[1]=="number"){var Ee=arguments[0],Me=arguments[1],Xe=arguments[2],pt=new v(Ee,Xe),dt=pt.getResultGeometry(Me);return dt}}else if(arguments.length===4){var Vt=arguments[0],Ut=arguments[1],ei=arguments[2],yi=arguments[3],Xi=new v(Vt);Xi.setQuadrantSegments(ei),Xi.setEndCapStyle(yi);var Fn=Xi.getResultGeometry(Ut);return Fn}}},{key:"precisionScaleFactor",value:function(o,l,c){var g=o.getEnvelopeInternal(),S=X.max(Math.abs(g.getMaxX()),Math.abs(g.getMaxY()),Math.abs(g.getMinX()),Math.abs(g.getMinY()))+2*(l>0?l:0),R=c-Math.trunc(Math.log(S)/Math.log(10)+1);return Math.pow(10,R)}}]),v}();Yr.CAP_ROUND=Qe.CAP_ROUND,Yr.CAP_BUTT=Qe.CAP_FLAT,Yr.CAP_FLAT=Qe.CAP_FLAT,Yr.CAP_SQUARE=Qe.CAP_SQUARE,Yr.MAX_PRECISION_DIGITS=12;var xu=["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],Da=function(){function v(o){w(this,v),this.geometryFactory=o||new nr}return A(v,[{key:"read",value:function(o){var l,c=(l=typeof o=="string"?JSON.parse(o):o).type;if(!Tr[c])throw new Error("Unknown GeoJSON type: "+l.type);return xu.indexOf(c)!==-1?Tr[c].call(this,l.coordinates):c==="GeometryCollection"?Tr[c].call(this,l.geometries):Tr[c].call(this,l)}},{key:"write",value:function(o){var l=o.getGeometryType();if(!Sr[l])throw new Error("Geometry is not supported");return Sr[l].call(this,o)}}]),v}(),Tr={Feature:function(v){var o={};for(var l in v)o[l]=v[l];if(v.geometry){var c=v.geometry.type;if(!Tr[c])throw new Error("Unknown GeoJSON type: "+v.type);o.geometry=this.read(v.geometry)}return v.bbox&&(o.bbox=Tr.bbox.call(this,v.bbox)),o},FeatureCollection:function(v){var o={};if(v.features){o.features=[];for(var l=0;l<v.features.length;++l)o.features.push(this.read(v.features[l]))}return v.bbox&&(o.bbox=this.parse.bbox.call(this,v.bbox)),o},coordinates:function(v){for(var o=[],l=0;l<v.length;++l){var c=v[l];o.push(oe(Fe,Tt(c)))}return o},bbox:function(v){return this.geometryFactory.createLinearRing([new Fe(v[0],v[1]),new Fe(v[2],v[1]),new Fe(v[2],v[3]),new Fe(v[0],v[3]),new Fe(v[0],v[1])])},Point:function(v){var o=oe(Fe,Tt(v));return this.geometryFactory.createPoint(o)},MultiPoint:function(v){for(var o=[],l=0;l<v.length;++l)o.push(Tr.Point.call(this,v[l]));return this.geometryFactory.createMultiPoint(o)},LineString:function(v){var o=Tr.coordinates.call(this,v);return this.geometryFactory.createLineString(o)},MultiLineString:function(v){for(var o=[],l=0;l<v.length;++l)o.push(Tr.LineString.call(this,v[l]));return this.geometryFactory.createMultiLineString(o)},Polygon:function(v){for(var o=Tr.coordinates.call(this,v[0]),l=this.geometryFactory.createLinearRing(o),c=[],g=1;g<v.length;++g){var S=v[g],R=Tr.coordinates.call(this,S),F=this.geometryFactory.createLinearRing(R);c.push(F)}return this.geometryFactory.createPolygon(l,c)},MultiPolygon:function(v){for(var o=[],l=0;l<v.length;++l){var c=v[l];o.push(Tr.Polygon.call(this,c))}return this.geometryFactory.createMultiPolygon(o)},GeometryCollection:function(v){for(var o=[],l=0;l<v.length;++l){var c=v[l];o.push(this.read(c))}return this.geometryFactory.createGeometryCollection(o)}},Sr={coordinate:function(v){var o=[v.x,v.y];return v.z&&o.push(v.z),v.m&&o.push(v.m),o},Point:function(v){return{type:"Point",coordinates:Sr.coordinate.call(this,v.getCoordinate())}},MultiPoint:function(v){for(var o=[],l=0;l<v._geometries.length;++l){var c=v._geometries[l],g=Sr.Point.call(this,c);o.push(g.coordinates)}return{type:"MultiPoint",coordinates:o}},LineString:function(v){for(var o=[],l=v.getCoordinates(),c=0;c<l.length;++c){var g=l[c];o.push(Sr.coordinate.call(this,g))}return{type:"LineString",coordinates:o}},MultiLineString:function(v){for(var o=[],l=0;l<v._geometries.length;++l){var c=v._geometries[l],g=Sr.LineString.call(this,c);o.push(g.coordinates)}return{type:"MultiLineString",coordinates:o}},Polygon:function(v){var o=[],l=Sr.LineString.call(this,v._shell);o.push(l.coordinates);for(var c=0;c<v._holes.length;++c){var g=v._holes[c],S=Sr.LineString.call(this,g);o.push(S.coordinates)}return{type:"Polygon",coordinates:o}},MultiPolygon:function(v){for(var o=[],l=0;l<v._geometries.length;++l){var c=v._geometries[l],g=Sr.Polygon.call(this,c);o.push(g.coordinates)}return{type:"MultiPolygon",coordinates:o}},GeometryCollection:function(v){for(var o=[],l=0;l<v._geometries.length;++l){var c=v._geometries[l],g=c.getGeometryType();o.push(Sr[g].call(this,c))}return{type:"GeometryCollection",geometries:o}}};return{BufferOp:Yr,GeoJSONReader:function(){function v(o){w(this,v),this.parser=new Da(o||new nr)}return A(v,[{key:"read",value:function(o){return this.parser.read(o)}}]),v}(),GeoJSONWriter:function(){function v(){w(this,v),this.parser=new Da(this.geometryFactory)}return A(v,[{key:"write",value:function(o){return this.parser.write(o)}}]),v}()}})})(hv);var k2=hv.exports;const M2=bp(k2);function ma(){return new cf}function cf(){this.reset()}cf.prototype={constructor:cf,reset:function(){this.s=this.t=0},add:function(x){fv(hf,x,this.t),fv(this,hf.s,this.s),this.s?this.t+=hf.t:this.s=hf.t},valueOf:function(){return this.s}};var hf=new cf;function fv(x,d,w){var k=x.s=d+w,A=k-d,O=k-A;x.t=d-O+(w-A)}var ln=1e-6,zi=Math.PI,hs=zi/2,pv=zi/4,fs=zi*2,ga=180/zi,vo=zi/180,er=Math.abs,A2=Math.atan,ru=Math.atan2,_n=Math.cos,yn=Math.sin,ou=Math.sqrt;function dv(x){return x>1?0:x<-1?zi:Math.acos(x)}function ol(x){return x>1?hs:x<-1?-hs:Math.asin(x)}function pc(){}function ff(x,d){x&&gv.hasOwnProperty(x.type)&&gv[x.type](x,d)}var mv={Feature:function(x,d){ff(x.geometry,d)},FeatureCollection:function(x,d){for(var w=x.features,k=-1,A=w.length;++k<A;)ff(w[k].geometry,d)}},gv={Sphere:function(x,d){d.sphere()},Point:function(x,d){x=x.coordinates,d.point(x[0],x[1],x[2])},MultiPoint:function(x,d){for(var w=x.coordinates,k=-1,A=w.length;++k<A;)x=w[k],d.point(x[0],x[1],x[2])},LineString:function(x,d){Od(x.coordinates,d,0)},MultiLineString:function(x,d){for(var w=x.coordinates,k=-1,A=w.length;++k<A;)Od(w[k],d,0)},Polygon:function(x,d){_v(x.coordinates,d)},MultiPolygon:function(x,d){for(var w=x.coordinates,k=-1,A=w.length;++k<A;)_v(w[k],d)},GeometryCollection:function(x,d){for(var w=x.geometries,k=-1,A=w.length;++k<A;)ff(w[k],d)}};function Od(x,d,w){var k=-1,A=x.length-w,O;for(d.lineStart();++k<A;)O=x[k],d.point(O[0],O[1],O[2]);d.lineEnd()}function _v(x,d){var w=-1,k=x.length;for(d.polygonStart();++w<k;)Od(x[w],d,1);d.polygonEnd()}function C2(x,d){x&&mv.hasOwnProperty(x.type)?mv[x.type](x,d):ff(x,d)}ma(),ma();function zd(x){return[ru(x[1],x[0]),ol(x[2])]}function su(x){var d=x[0],w=x[1],k=_n(w);return[k*_n(d),k*yn(d),yn(w)]}function pf(x,d){return x[0]*d[0]+x[1]*d[1]+x[2]*d[2]}function df(x,d){return[x[1]*d[2]-x[2]*d[1],x[2]*d[0]-x[0]*d[2],x[0]*d[1]-x[1]*d[0]]}function Nd(x,d){x[0]+=d[0],x[1]+=d[1],x[2]+=d[2]}function mf(x,d){return[x[0]*d,x[1]*d,x[2]*d]}function Bd(x){var d=ou(x[0]*x[0]+x[1]*x[1]+x[2]*x[2]);x[0]/=d,x[1]/=d,x[2]/=d}ma();function yv(x,d){function w(k,A){return k=x(k,A),d(k[0],k[1])}return x.invert&&d.invert&&(w.invert=function(k,A){return k=d.invert(k,A),k&&x.invert(k[0],k[1])}),w}function Fd(x,d){return[x>zi?x-fs:x<-zi?x+fs:x,d]}Fd.invert=Fd;function P2(x,d,w){return(x%=fs)?d||w?yv(xv(x),bv(d,w)):xv(x):d||w?bv(d,w):Fd}function vv(x){return function(d,w){return d+=x,[d>zi?d-fs:d<-zi?d+fs:d,w]}}function xv(x){var d=vv(x);return d.invert=vv(-x),d}function bv(x,d){var w=_n(x),k=yn(x),A=_n(d),O=yn(d);function $(s,Z){var oe=_n(Z),pe=_n(s)*oe,he=yn(s)*oe,we=yn(Z),ye=we*w+pe*k;return[ru(he*A-ye*O,pe*w-we*k),ol(ye*A+he*O)]}return $.invert=function(s,Z){var oe=_n(Z),pe=_n(s)*oe,he=yn(s)*oe,we=yn(Z),ye=we*A-he*O;return[ru(he*A+we*O,pe*w+ye*k),ol(ye*w-pe*k)]},$}function L2(x,d,w,k,A,O){if(w){var $=_n(d),s=yn(d),Z=k*w;A==null?(A=d+k*fs,O=d-Z/2):(A=wv($,A),O=wv($,O),(k>0?A<O:A>O)&&(A+=k*fs));for(var oe,pe=A;k>0?pe>O:pe<O;pe-=Z)oe=zd([$,-s*_n(pe),-s*yn(pe)]),x.point(oe[0],oe[1])}}function wv(x,d){d=su(d),d[0]-=x,Bd(d);var w=dv(-d[1]);return((-d[2]<0?-w:w)+fs-ln)%fs}function Ev(){var x=[],d;return{point:function(w,k){d.push([w,k])},lineStart:function(){x.push(d=[])},lineEnd:pc,rejoin:function(){x.length>1&&x.push(x.pop().concat(x.shift()))},result:function(){var w=x;return x=[],d=null,w}}}function R2(x,d,w,k,A,O){var $=x[0],s=x[1],Z=d[0],oe=d[1],pe=0,he=1,we=Z-$,ye=oe-s,Ie;if(Ie=w-$,!(!we&&Ie>0)){if(Ie/=we,we<0){if(Ie<pe)return;Ie<he&&(he=Ie)}else if(we>0){if(Ie>he)return;Ie>pe&&(pe=Ie)}if(Ie=A-$,!(!we&&Ie<0)){if(Ie/=we,we<0){if(Ie>he)return;Ie>pe&&(pe=Ie)}else if(we>0){if(Ie<pe)return;Ie<he&&(he=Ie)}if(Ie=k-s,!(!ye&&Ie>0)){if(Ie/=ye,ye<0){if(Ie<pe)return;Ie<he&&(he=Ie)}else if(ye>0){if(Ie>he)return;Ie>pe&&(pe=Ie)}if(Ie=O-s,!(!ye&&Ie<0)){if(Ie/=ye,ye<0){if(Ie>he)return;Ie>pe&&(pe=Ie)}else if(ye>0){if(Ie<pe)return;Ie<he&&(he=Ie)}return pe>0&&(x[0]=$+pe*we,x[1]=s+pe*ye),he<1&&(d[0]=$+he*we,d[1]=s+he*ye),!0}}}}}function gf(x,d){return er(x[0]-d[0])<ln&&er(x[1]-d[1])<ln}function _f(x,d,w,k){this.x=x,this.z=d,this.o=w,this.e=k,this.v=!1,this.n=this.p=null}function Tv(x,d,w,k,A){var O=[],$=[],s,Z;if(x.forEach(function(Ie){if(!((Tt=Ie.length-1)<=0)){var Tt,gt=Ie[0],Mt=Ie[Tt],Le;if(gf(gt,Mt)){for(A.lineStart(),s=0;s<Tt;++s)A.point((gt=Ie[s])[0],gt[1]);A.lineEnd();return}O.push(Le=new _f(gt,Ie,null,!0)),$.push(Le.o=new _f(gt,null,Le,!1)),O.push(Le=new _f(Mt,Ie,null,!1)),$.push(Le.o=new _f(Mt,null,Le,!0))}}),!!O.length){for($.sort(d),Sv(O),Sv($),s=0,Z=$.length;s<Z;++s)$[s].e=w=!w;for(var oe=O[0],pe,he;;){for(var we=oe,ye=!0;we.v;)if((we=we.n)===oe)return;pe=we.z,A.lineStart();do{if(we.v=we.o.v=!0,we.e){if(ye)for(s=0,Z=pe.length;s<Z;++s)A.point((he=pe[s])[0],he[1]);else k(we.x,we.n.x,1,A);we=we.n}else{if(ye)for(pe=we.p.z,s=pe.length-1;s>=0;--s)A.point((he=pe[s])[0],he[1]);else k(we.x,we.p.x,-1,A);we=we.p}we=we.o,pe=we.z,ye=!ye}while(!we.v);A.lineEnd()}}}function Sv(x){if(d=x.length){for(var d,w=0,k=x[0],A;++w<d;)k.n=A=x[w],A.p=k,k=A;k.n=A=x[0],A.p=k}}function Iv(x,d){return x<d?-1:x>d?1:x>=d?0:NaN}function D2(x){return x.length===1&&(x=O2(x)),{left:function(d,w,k,A){for(k==null&&(k=0),A==null&&(A=d.length);k<A;){var O=k+A>>>1;x(d[O],w)<0?k=O+1:A=O}return k},right:function(d,w,k,A){for(k==null&&(k=0),A==null&&(A=d.length);k<A;){var O=k+A>>>1;x(d[O],w)>0?A=O:k=O+1}return k}}}function O2(x){return function(d,w){return Iv(x(d),w)}}D2(Iv);function kv(x){for(var d=x.length,w,k=-1,A=0,O,$;++k<d;)A+=x[k].length;for(O=new Array(A);--d>=0;)for($=x[d],w=$.length;--w>=0;)O[--A]=$[w];return O}var dc=1e9,yf=-dc;function z2(x,d,w,k){function A(oe,pe){return x<=oe&&oe<=w&&d<=pe&&pe<=k}function O(oe,pe,he,we){var ye=0,Ie=0;if(oe==null||(ye=$(oe,he))!==(Ie=$(pe,he))||Z(oe,pe)<0^he>0)do we.point(ye===0||ye===3?x:w,ye>1?k:d);while((ye=(ye+he+4)%4)!==Ie);else we.point(pe[0],pe[1])}function $(oe,pe){return er(oe[0]-x)<ln?pe>0?0:3:er(oe[0]-w)<ln?pe>0?2:1:er(oe[1]-d)<ln?pe>0?1:0:pe>0?3:2}function s(oe,pe){return Z(oe.x,pe.x)}function Z(oe,pe){var he=$(oe,1),we=$(pe,1);return he!==we?he-we:he===0?pe[1]-oe[1]:he===1?oe[0]-pe[0]:he===2?oe[1]-pe[1]:pe[0]-oe[0]}return function(oe){var pe=oe,he=Ev(),we,ye,Ie,Tt,gt,Mt,Le,Qe,Et,ut,yt,_t={point:It,lineStart:At,lineEnd:Xt,polygonStart:gi,polygonEnd:ti};function It(Jt,Bt){A(Jt,Bt)&&pe.point(Jt,Bt)}function Oe(){for(var Jt=0,Bt=0,Ri=ye.length;Bt<Ri;++Bt)for(var Rt=ye[Bt],pi=1,St=Rt.length,wi=Rt[0],Oi,Wt,Dt=wi[0],Ni=wi[1];pi<St;++pi)Oi=Dt,Wt=Ni,wi=Rt[pi],Dt=wi[0],Ni=wi[1],Wt<=k?Ni>k&&(Dt-Oi)*(k-Wt)>(Ni-Wt)*(x-Oi)&&++Jt:Ni<=k&&(Dt-Oi)*(k-Wt)<(Ni-Wt)*(x-Oi)&&--Jt;return Jt}function gi(){pe=he,we=[],ye=[],yt=!0}function ti(){var Jt=Oe(),Bt=yt&&Jt,Ri=(we=kv(we)).length;(Bt||Ri)&&(oe.polygonStart(),Bt&&(oe.lineStart(),O(null,null,1,oe),oe.lineEnd()),Ri&&Tv(we,s,Jt,O,oe),oe.polygonEnd()),pe=oe,we=ye=Ie=null}function At(){_t.point=bt,ye&&ye.push(Ie=[]),ut=!0,Et=!1,Le=Qe=NaN}function Xt(){we&&(bt(Tt,gt),Mt&&Et&&he.rejoin(),we.push(he.result())),_t.point=It,Et&&pe.lineEnd()}function bt(Jt,Bt){var Ri=A(Jt,Bt);if(ye&&Ie.push([Jt,Bt]),ut)Tt=Jt,gt=Bt,Mt=Ri,ut=!1,Ri&&(pe.lineStart(),pe.point(Jt,Bt));else if(Ri&&Et)pe.point(Jt,Bt);else{var Rt=[Le=Math.max(yf,Math.min(dc,Le)),Qe=Math.max(yf,Math.min(dc,Qe))],pi=[Jt=Math.max(yf,Math.min(dc,Jt)),Bt=Math.max(yf,Math.min(dc,Bt))];R2(Rt,pi,x,d,w,k)?(Et||(pe.lineStart(),pe.point(Rt[0],Rt[1])),pe.point(pi[0],pi[1]),Ri||pe.lineEnd(),yt=!1):Ri&&(pe.lineStart(),pe.point(Jt,Bt),yt=!1)}Le=Jt,Qe=Bt,Et=Ri}return _t}}var Ud=ma();function N2(x,d){var w=d[0],k=d[1],A=[yn(w),-_n(w),0],O=0,$=0;Ud.reset();for(var s=0,Z=x.length;s<Z;++s)if(pe=(oe=x[s]).length)for(var oe,pe,he=oe[pe-1],we=he[0],ye=he[1]/2+pv,Ie=yn(ye),Tt=_n(ye),gt=0;gt<pe;++gt,we=Le,Ie=Et,Tt=ut,he=Mt){var Mt=oe[gt],Le=Mt[0],Qe=Mt[1]/2+pv,Et=yn(Qe),ut=_n(Qe),yt=Le-we,_t=yt>=0?1:-1,It=_t*yt,Oe=It>zi,gi=Ie*Et;if(Ud.add(ru(gi*_t*yn(It),Tt*ut+gi*_n(It))),O+=Oe?yt+_t*fs:yt,Oe^we>=w^Le>=w){var ti=df(su(he),su(Mt));Bd(ti);var At=df(A,ti);Bd(At);var Xt=(Oe^yt>=0?-1:1)*ol(At[2]);(k>Xt||k===Xt&&(ti[0]||ti[1]))&&($+=Oe^yt>=0?1:-1)}}return(O<-ln||O<ln&&Ud<-ln)^$&1}ma();function Mv(x){return x}ma(),ma();var au=1/0,vf=au,mc=-au,xf=mc,Av={point:B2,lineStart:pc,lineEnd:pc,polygonStart:pc,polygonEnd:pc,result:function(){var x=[[au,vf],[mc,xf]];return mc=xf=-(vf=au=1/0),x}};function B2(x,d){x<au&&(au=x),x>mc&&(mc=x),d<vf&&(vf=d),d>xf&&(xf=d)}ma();function Cv(x,d,w,k){return function(A,O){var $=d(O),s=A.invert(k[0],k[1]),Z=Ev(),oe=d(Z),pe=!1,he,we,ye,Ie={point:Tt,lineStart:Mt,lineEnd:Le,polygonStart:function(){Ie.point=Qe,Ie.lineStart=Et,Ie.lineEnd=ut,we=[],he=[]},polygonEnd:function(){Ie.point=Tt,Ie.lineStart=Mt,Ie.lineEnd=Le,we=kv(we);var yt=N2(he,s);we.length?(pe||(O.polygonStart(),pe=!0),Tv(we,U2,yt,w,O)):yt&&(pe||(O.polygonStart(),pe=!0),O.lineStart(),w(null,null,1,O),O.lineEnd()),pe&&(O.polygonEnd(),pe=!1),we=he=null},sphere:function(){O.polygonStart(),O.lineStart(),w(null,null,1,O),O.lineEnd(),O.polygonEnd()}};function Tt(yt,_t){var It=A(yt,_t);x(yt=It[0],_t=It[1])&&O.point(yt,_t)}function gt(yt,_t){var It=A(yt,_t);$.point(It[0],It[1])}function Mt(){Ie.point=gt,$.lineStart()}function Le(){Ie.point=Tt,$.lineEnd()}function Qe(yt,_t){ye.push([yt,_t]);var It=A(yt,_t);oe.point(It[0],It[1])}function Et(){oe.lineStart(),ye=[]}function ut(){Qe(ye[0][0],ye[0][1]),oe.lineEnd();var yt=oe.clean(),_t=Z.result(),It,Oe=_t.length,gi,ti,At;if(ye.pop(),he.push(ye),ye=null,!!Oe){if(yt&1){if(ti=_t[0],(gi=ti.length-1)>0){for(pe||(O.polygonStart(),pe=!0),O.lineStart(),It=0;It<gi;++It)O.point((At=ti[It])[0],At[1]);O.lineEnd()}return}Oe>1&&yt&2&&_t.push(_t.pop().concat(_t.shift())),we.push(_t.filter(F2))}}return Ie}}function F2(x){return x.length>1}function U2(x,d){return((x=x.x)[0]<0?x[1]-hs-ln:hs-x[1])-((d=d.x)[0]<0?d[1]-hs-ln:hs-d[1])}const Pv=Cv(function(){return!0},j2,G2,[-zi,-hs]);function j2(x){var d=NaN,w=NaN,k=NaN,A;return{lineStart:function(){x.lineStart(),A=1},point:function(O,$){var s=O>0?zi:-zi,Z=er(O-d);er(Z-zi)<ln?(x.point(d,w=(w+$)/2>0?hs:-hs),x.point(k,w),x.lineEnd(),x.lineStart(),x.point(s,w),x.point(O,w),A=0):k!==s&&Z>=zi&&(er(d-k)<ln&&(d-=k*ln),er(O-s)<ln&&(O-=s*ln),w=V2(d,w,O,$),x.point(k,w),x.lineEnd(),x.lineStart(),x.point(s,w),A=0),x.point(d=O,w=$),k=s},lineEnd:function(){x.lineEnd(),d=w=NaN},clean:function(){return 2-A}}}function V2(x,d,w,k){var A,O,$=yn(x-w);return er($)>ln?A2((yn(d)*(O=_n(k))*yn(w)-yn(k)*(A=_n(d))*yn(x))/(A*O*$)):(d+k)/2}function G2(x,d,w,k){var A;if(x==null)A=w*hs,k.point(-zi,A),k.point(0,A),k.point(zi,A),k.point(zi,0),k.point(zi,-A),k.point(0,-A),k.point(-zi,-A),k.point(-zi,0),k.point(-zi,A);else if(er(x[0]-d[0])>ln){var O=x[0]<d[0]?zi:-zi;A=w*O/2,k.point(-O,A),k.point(0,A),k.point(O,A)}else k.point(d[0],d[1])}function $2(x,d){var w=_n(x),k=w>0,A=er(w)>ln;function O(pe,he,we,ye){L2(ye,x,d,we,pe,he)}function $(pe,he){return _n(pe)*_n(he)>w}function s(pe){var he,we,ye,Ie,Tt;return{lineStart:function(){Ie=ye=!1,Tt=1},point:function(gt,Mt){var Le=[gt,Mt],Qe,Et=$(gt,Mt),ut=k?Et?0:oe(gt,Mt):Et?oe(gt+(gt<0?zi:-zi),Mt):0;if(!he&&(Ie=ye=Et)&&pe.lineStart(),Et!==ye&&(Qe=Z(he,Le),(!Qe||gf(he,Qe)||gf(Le,Qe))&&(Le[0]+=ln,Le[1]+=ln,Et=$(Le[0],Le[1]))),Et!==ye)Tt=0,Et?(pe.lineStart(),Qe=Z(Le,he),pe.point(Qe[0],Qe[1])):(Qe=Z(he,Le),pe.point(Qe[0],Qe[1]),pe.lineEnd()),he=Qe;else if(A&&he&&k^Et){var yt;!(ut&we)&&(yt=Z(Le,he,!0))&&(Tt=0,k?(pe.lineStart(),pe.point(yt[0][0],yt[0][1]),pe.point(yt[1][0],yt[1][1]),pe.lineEnd()):(pe.point(yt[1][0],yt[1][1]),pe.lineEnd(),pe.lineStart(),pe.point(yt[0][0],yt[0][1])))}Et&&(!he||!gf(he,Le))&&pe.point(Le[0],Le[1]),he=Le,ye=Et,we=ut},lineEnd:function(){ye&&pe.lineEnd(),he=null},clean:function(){return Tt|(Ie&&ye)<<1}}}function Z(pe,he,we){var ye=su(pe),Ie=su(he),Tt=[1,0,0],gt=df(ye,Ie),Mt=pf(gt,gt),Le=gt[0],Qe=Mt-Le*Le;if(!Qe)return!we&&pe;var Et=w*Mt/Qe,ut=-w*Le/Qe,yt=df(Tt,gt),_t=mf(Tt,Et),It=mf(gt,ut);Nd(_t,It);var Oe=yt,gi=pf(_t,Oe),ti=pf(Oe,Oe),At=gi*gi-ti*(pf(_t,_t)-1);if(!(At<0)){var Xt=ou(At),bt=mf(Oe,(-gi-Xt)/ti);if(Nd(bt,_t),bt=zd(bt),!we)return bt;var Jt=pe[0],Bt=he[0],Ri=pe[1],Rt=he[1],pi;Bt<Jt&&(pi=Jt,Jt=Bt,Bt=pi);var St=Bt-Jt,wi=er(St-zi)<ln,Oi=wi||St<ln;if(!wi&&Rt<Ri&&(pi=Ri,Ri=Rt,Rt=pi),Oi?wi?Ri+Rt>0^bt[1]<(er(bt[0]-Jt)<ln?Ri:Rt):Ri<=bt[1]&&bt[1]<=Rt:St>zi^(Jt<=bt[0]&&bt[0]<=Bt)){var Wt=mf(Oe,(-gi+Xt)/ti);return Nd(Wt,_t),[bt,zd(Wt)]}}}function oe(pe,he){var we=k?x:zi-x,ye=0;return pe<-we?ye|=1:pe>we&&(ye|=2),he<-we?ye|=4:he>we&&(ye|=8),ye}return Cv($,s,O,k?[0,-x]:[-zi,x-zi])}function Lv(x){return function(d){var w=new jd;for(var k in x)w[k]=x[k];return w.stream=d,w}}function jd(){}jd.prototype={constructor:jd,point:function(x,d){this.stream.point(x,d)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function Rv(x,d,w){var k=d[1][0]-d[0][0],A=d[1][1]-d[0][1],O=x.clipExtent&&x.clipExtent();x.scale(150).translate([0,0]),O!=null&&x.clipExtent(null),C2(w,x.stream(Av));var $=Av.result(),s=Math.min(k/($[1][0]-$[0][0]),A/($[1][1]-$[0][1])),Z=+d[0][0]+(k-s*($[1][0]+$[0][0]))/2,oe=+d[0][1]+(A-s*($[1][1]+$[0][1]))/2;return O!=null&&x.clipExtent(O),x.scale(s*150).translate([Z,oe])}function q2(x,d,w){return Rv(x,[[0,0],d],w)}var Dv=16,Z2=_n(30*vo);function Ov(x,d){return+d?W2(x,d):X2(x)}function X2(x){return Lv({point:function(d,w){d=x(d,w),this.stream.point(d[0],d[1])}})}function W2(x,d){function w(k,A,O,$,s,Z,oe,pe,he,we,ye,Ie,Tt,gt){var Mt=oe-k,Le=pe-A,Qe=Mt*Mt+Le*Le;if(Qe>4*d&&Tt--){var Et=$+we,ut=s+ye,yt=Z+Ie,_t=ou(Et*Et+ut*ut+yt*yt),It=ol(yt/=_t),Oe=er(er(yt)-1)<ln||er(O-he)<ln?(O+he)/2:ru(ut,Et),gi=x(Oe,It),ti=gi[0],At=gi[1],Xt=ti-k,bt=At-A,Jt=Le*Xt-Mt*bt;(Jt*Jt/Qe>d||er((Mt*Xt+Le*bt)/Qe-.5)>.3||$*we+s*ye+Z*Ie<Z2)&&(w(k,A,O,$,s,Z,ti,At,Oe,Et/=_t,ut/=_t,yt,Tt,gt),gt.point(ti,At),w(ti,At,Oe,Et,ut,yt,oe,pe,he,we,ye,Ie,Tt,gt))}}return function(k){var A,O,$,s,Z,oe,pe,he,we,ye,Ie,Tt,gt={point:Mt,lineStart:Le,lineEnd:Et,polygonStart:function(){k.polygonStart(),gt.lineStart=ut},polygonEnd:function(){k.polygonEnd(),gt.lineStart=Le}};function Mt(It,Oe){It=x(It,Oe),k.point(It[0],It[1])}function Le(){he=NaN,gt.point=Qe,k.lineStart()}function Qe(It,Oe){var gi=su([It,Oe]),ti=x(It,Oe);w(he,we,pe,ye,Ie,Tt,he=ti[0],we=ti[1],pe=It,ye=gi[0],Ie=gi[1],Tt=gi[2],Dv,k),k.point(he,we)}function Et(){gt.point=Mt,k.lineEnd()}function ut(){Le(),gt.point=yt,gt.lineEnd=_t}function yt(It,Oe){Qe(A=It,Oe),O=he,$=we,s=ye,Z=Ie,oe=Tt,gt.point=Qe}function _t(){w(he,we,pe,ye,Ie,Tt,O,$,A,s,Z,oe,Dv,k),gt.lineEnd=Et,Et()}return gt}}var Y2=Lv({point:function(x,d){this.stream.point(x*vo,d*vo)}});function H2(x){return K2(function(){return x})()}function K2(x){var d,w=150,k=480,A=250,O,$,s=0,Z=0,oe=0,pe=0,he=0,we,ye,Ie=null,Tt=Pv,gt=null,Mt,Le,Qe,Et=Mv,ut=.5,yt=Ov(ti,ut),_t,It;function Oe(bt){return bt=ye(bt[0]*vo,bt[1]*vo),[bt[0]*w+O,$-bt[1]*w]}function gi(bt){return bt=ye.invert((bt[0]-O)/w,($-bt[1])/w),bt&&[bt[0]*ga,bt[1]*ga]}function ti(bt,Jt){return bt=d(bt,Jt),[bt[0]*w+O,$-bt[1]*w]}Oe.stream=function(bt){return _t&&It===bt?_t:_t=Y2(Tt(we,yt(Et(It=bt))))},Oe.clipAngle=function(bt){return arguments.length?(Tt=+bt?$2(Ie=bt*vo,6*vo):(Ie=null,Pv),Xt()):Ie*ga},Oe.clipExtent=function(bt){return arguments.length?(Et=bt==null?(gt=Mt=Le=Qe=null,Mv):z2(gt=+bt[0][0],Mt=+bt[0][1],Le=+bt[1][0],Qe=+bt[1][1]),Xt()):gt==null?null:[[gt,Mt],[Le,Qe]]},Oe.scale=function(bt){return arguments.length?(w=+bt,At()):w},Oe.translate=function(bt){return arguments.length?(k=+bt[0],A=+bt[1],At()):[k,A]},Oe.center=function(bt){return arguments.length?(s=bt[0]%360*vo,Z=bt[1]%360*vo,At()):[s*ga,Z*ga]},Oe.rotate=function(bt){return arguments.length?(oe=bt[0]%360*vo,pe=bt[1]%360*vo,he=bt.length>2?bt[2]%360*vo:0,At()):[oe*ga,pe*ga,he*ga]},Oe.precision=function(bt){return arguments.length?(yt=Ov(ti,ut=bt*bt),Xt()):ou(ut)},Oe.fitExtent=function(bt,Jt){return Rv(Oe,bt,Jt)},Oe.fitSize=function(bt,Jt){return q2(Oe,bt,Jt)};function At(){ye=yv(we=P2(oe,pe,he),d);var bt=d(s,Z);return O=k-bt[0]*w,$=A+bt[1]*w,Xt()}function Xt(){return _t=It=null,Oe}return function(){return d=x.apply(this,arguments),Oe.invert=d.invert&&gi,At()}}function zv(x){return function(d,w){var k=_n(d),A=_n(w),O=x(k*A);return[O*A*yn(d),O*yn(w)]}}function Nv(x){return function(d,w){var k=ou(d*d+w*w),A=x(k),O=yn(A),$=_n(A);return[ru(d*O,k*$),ol(k&&w*O/k)]}}var J2=zv(function(x){return ou(2/(1+x))});J2.invert=Nv(function(x){return 2*ol(x/2)});var Bv=zv(function(x){return(x=dv(x))&&x/yn(x)});Bv.invert=Nv(function(x){return x});function Q2(){return H2(Bv).scale(79.4188).clipAngle(179.999)}function Fv(x,d){return[x,d]}Fv.invert=Fv;var eI=Object.defineProperty,lu=(x,d)=>eI(x,"name",{value:d,configurable:!0}),{BufferOp:tI,GeoJSONReader:iI,GeoJSONWriter:nI}=M2;function gc(x,d,w){w=w||{};var k=w.units||"kilometers",A=w.steps||8;if(!x)throw new Error("geojson is required");if(typeof w!="object")throw new Error("options must be an object");if(typeof A!="number")throw new Error("steps must be an number");if(d===void 0)throw new Error("radius is required");if(A<=0)throw new Error("steps must be greater than 0");var O=[];switch(x.type){case"GeometryCollection":return uc(x,function($){var s=_c($,d,k,A);s&&O.push(s)}),yo(O);case"FeatureCollection":return cs(x,function($){var s=_c($,d,k,A);s&&cs(s,function(Z){Z&&O.push(Z)})}),yo(O)}return _c(x,d,k,A)}lu(gc,"buffer");function _c(x,d,w,k){var A=x.properties||{},O=x.type==="Feature"?x.geometry:x;if(O.type==="GeometryCollection"){var $=[];return uc(x,function(Tt){var gt=_c(Tt,d,w,k);gt&&$.push(gt)}),yo($)}var s=Uv(O),Z={type:O.type,coordinates:Gd(O.coordinates,s)},oe=new iI,pe=oe.read(Z),he=Hh(ac(d,w),"meters"),we=tI.bufferOp(pe,he,k),ye=new nI;if(we=ye.write(we),!Vd(we.coordinates)){var Ie={type:we.type,coordinates:$d(we.coordinates,s)};return _o(Ie,A)}}lu(_c,"bufferFeature");function Vd(x){return Array.isArray(x[0])?Vd(x[0]):isNaN(x[0])}lu(Vd,"coordsIsNaN");function Gd(x,d){return typeof x[0]!="object"?d(x):x.map(function(w){return Gd(w,d)})}lu(Gd,"projectCoords");function $d(x,d){return typeof x[0]!="object"?d.invert(x):x.map(function(w){return $d(w,d)})}lu($d,"unprojectCoords");function Uv(x){var d=uf(x).geometry.coordinates,w=[-d[0],-d[1]];return Q2().rotate(w).scale(yr)}lu(Uv,"defineProjection");var rI=Object.defineProperty,oI=(x,d)=>rI(x,"name",{value:d,configurable:!0});function qd(x,d,w={}){const k=w.steps||64,A=w.properties?w.properties:!Array.isArray(x)&&x.type==="Feature"&&x.properties?x.properties:{},O=[];for(let $=0;$<k;$++)O.push(Gy(x,d,$*-360/k,w).geometry.coordinates);return O.push(O[0]),nl([O],A)}oI(qd,"circle");var sI=Object.defineProperty,aI=(x,d)=>sI(x,"name",{value:d,configurable:!0}),lI=m2;function Zd(x){const d={type:"FeatureCollection",features:[]};if(x.type==="Feature"&&(x.geometry.type==="Point"||x.geometry.type==="MultiPoint"))throw new Error("Input must be a LineString, MultiLineString, Polygon, or MultiPolygon Feature or Geometry");const w=lI(x,!1);for(let k=0;k<w.length;++k){const A=w[k];d.features.push(Xn([A[0],A[1]]))}return d}aI(Zd,"kinks");var uI=Object.defineProperty,vr=(x,d)=>uI(x,"name",{value:d,configurable:!0});function jv(x,d,w){if(x.geometry.type!=="Polygon")throw new Error("The input feature must be a Polygon");w===void 0&&(w=1);var k=x.geometry.coordinates,A=[],O={};if(w){for(var $=[],s=0;s<k.length;s++)for(var Z=0;Z<k[s].length-1;Z++)$.push(gt(s,Z));var oe=new ov;oe.load($)}for(var pe=0;pe<k.length;pe++)for(var he=0;he<k[pe].length-1;he++)if(w){var we=oe.search(gt(pe,he));we.forEach(function(Mt){var Le=Mt.ring,Qe=Mt.edge;Tt(pe,he,Le,Qe)})}else for(var ye=0;ye<k.length;ye++)for(var Ie=0;Ie<k[ye].length-1;Ie++)Tt(pe,he,ye,Ie);return d||(A={type:"Feature",geometry:{type:"MultiPoint",coordinates:A}}),A;function Tt(Mt,Le,Qe,Et){var ut=k[Mt][Le],yt=k[Mt][Le+1],_t=k[Qe][Et],It=k[Qe][Et+1],Oe=Vv(ut,yt,_t,It);if(Oe!==null){var gi,ti;if(yt[0]!==ut[0]?gi=(Oe[0]-ut[0])/(yt[0]-ut[0]):gi=(Oe[1]-ut[1])/(yt[1]-ut[1]),It[0]!==_t[0]?ti=(Oe[0]-_t[0])/(It[0]-_t[0]):ti=(Oe[1]-_t[1])/(It[1]-_t[1]),!(gi>=1||gi<=0||ti>=1||ti<=0)){var At=Oe,Xt=!O[At];Xt&&(O[At]=!0),d?A.push(d(Oe,Mt,Le,ut,yt,gi,Qe,Et,_t,It,ti,Xt)):A.push(Oe)}}}function gt(Mt,Le){var Qe=k[Mt][Le],Et=k[Mt][Le+1],ut,yt,_t,It;return Qe[0]<Et[0]?(ut=Qe[0],yt=Et[0]):(ut=Et[0],yt=Qe[0]),Qe[1]<Et[1]?(_t=Qe[1],It=Et[1]):(_t=Et[1],It=Qe[1]),{minX:ut,minY:_t,maxX:yt,maxY:It,ring:Mt,edge:Le}}}vr(jv,"geojsonPolygonSelfIntersections");function Vv(x,d,w,k){if(uu(x,w)||uu(x,k)||uu(d,w)||uu(k,w))return null;var A=x[0],O=x[1],$=d[0],s=d[1],Z=w[0],oe=w[1],pe=k[0],he=k[1],we=(A-$)*(oe-he)-(O-s)*(Z-pe);if(we===0)return null;var ye=((A*s-O*$)*(Z-pe)-(A-$)*(Z*he-oe*pe))/we,Ie=((A*s-O*$)*(oe-he)-(O-s)*(Z*he-oe*pe))/we;return[ye,Ie]}vr(Vv,"intersect");function uu(x,d){if(!x||!d||x.length!==d.length)return!1;for(var w=0,k=x.length;w<k;w++)if(x[w]instanceof Array&&d[w]instanceof Array){if(!uu(x[w],d[w]))return!1}else if(x[w]!==d[w])return!1;return!0}vr(uu,"equalArrays");function Gv(x){if(x.type!="Feature")throw new Error("The input must a geojson object of type Feature");if(x.geometry===void 0||x.geometry==null)throw new Error("The input must a geojson object with a non-empty geometry");if(x.geometry.type!="Polygon")throw new Error("The input must be a geojson Polygon");for(var d=x.geometry.coordinates.length,w=[],Le=0;Le<d;Le++){var k=x.geometry.coordinates[Le];cu(k[0],k[k.length-1])||k.push(k[0]);for(var A=0;A<k.length-1;A++)w.push(k[A])}if(!Xv(w))throw new Error("The input polygon may not have duplicate vertices (except for the first and last vertex of each ring)");var O=w.length,$=jv(x,vr(function(Dt,Ni,Dn,vn,Fe,no,Ci,ft,me,rn,$r,Ti){return[Dt,Ni,Dn,vn,Fe,no,Ci,ft,me,rn,$r,Ti]},"filterFn")),s=$.length;if(s==0){for(var _t=[],Le=0;Le<d;Le++)_t.push(nl([x.geometry.coordinates[Le]],{parent:-1,winding:Zv(x.geometry.coordinates[Le])}));var pi=yo(_t);return St(),wi(),pi}for(var Z=[],oe=[],Le=0;Le<d;Le++){Z.push([]);for(var A=0;A<x.geometry.coordinates[Le].length-1;A++)Z[Le].push([new $v(x.geometry.coordinates[Le][sl(A+1,x.geometry.coordinates[Le].length-1)],1,[Le,A],[Le,sl(A+1,x.geometry.coordinates[Le].length-1)],void 0)]),oe.push(new qv(x.geometry.coordinates[Le][A],[Le,sl(A-1,x.geometry.coordinates[Le].length-1)],[Le,A],void 0,void 0,!1,!0))}for(var Le=0;Le<s;Le++)Z[$[Le][1]][$[Le][2]].push(new $v($[Le][0],$[Le][5],[$[Le][1],$[Le][2]],[$[Le][6],$[Le][7]],void 0)),$[Le][11]&&oe.push(new qv($[Le][0],[$[Le][1],$[Le][2]],[$[Le][6],$[Le][7]],void 0,void 0,!0,!0));for(var pe=oe.length,Le=0;Le<Z.length;Le++)for(var A=0;A<Z[Le].length;A++)Z[Le][A].sort(function(Ni,Dn){return Ni.param<Dn.param?-1:1});for(var he=[],Le=0;Le<pe;Le++)he.push({minX:oe[Le].coord[0],minY:oe[Le].coord[1],maxX:oe[Le].coord[0],maxY:oe[Le].coord[1],index:Le});var we=new ov;we.load(he);for(var Le=0;Le<Z.length;Le++)for(var A=0;A<Z[Le].length;A++)for(var ye=0;ye<Z[Le][A].length;ye++){var Ie;ye==Z[Le][A].length-1?Ie=Z[Le][sl(A+1,x.geometry.coordinates[Le].length-1)][0].coord:Ie=Z[Le][A][ye+1].coord;var Tt=we.search({minX:Ie[0],minY:Ie[1],maxX:Ie[0],maxY:Ie[1]})[0];Z[Le][A][ye].nxtIsectAlongEdgeIn=Tt.index}for(var Le=0;Le<Z.length;Le++)for(var A=0;A<Z[Le].length;A++)for(var ye=0;ye<Z[Le][A].length;ye++){var Ie=Z[Le][A][ye].coord,Tt=we.search({minX:Ie[0],minY:Ie[1],maxX:Ie[0],maxY:Ie[1]})[0],gt=Tt.index;gt<O?oe[gt].nxtIsectAlongRingAndEdge2=Z[Le][A][ye].nxtIsectAlongEdgeIn:cu(oe[gt].ringAndEdge1,Z[Le][A][ye].ringAndEdgeIn)?oe[gt].nxtIsectAlongRingAndEdge1=Z[Le][A][ye].nxtIsectAlongEdgeIn:oe[gt].nxtIsectAlongRingAndEdge2=Z[Le][A][ye].nxtIsectAlongEdgeIn}for(var Mt=[],Le=0,A=0;A<d;A++){for(var Qe=Le,ye=0;ye<x.geometry.coordinates[A].length-1;ye++)oe[Le].coord[0]<oe[Qe].coord[0]&&(Qe=Le),Le++;for(var Et=oe[Qe].nxtIsectAlongRingAndEdge2,ye=0;ye<oe.length;ye++)if(oe[ye].nxtIsectAlongRingAndEdge1==Qe||oe[ye].nxtIsectAlongRingAndEdge2==Qe){var ut=ye;break}var yt=yc([oe[ut].coord,oe[Qe].coord,oe[Et].coord],!0)?1:-1;Mt.push({isect:Qe,parent:-1,winding:yt})}Mt.sort(function(Wt,Dt){return oe[Wt.isect].coord>oe[Dt.isect].coord?-1:1});for(var _t=[];Mt.length>0;){var It=Mt.pop(),Oe=It.isect,gi=It.parent,ti=It.winding,At=_t.length,Xt=[oe[Oe].coord],bt=Oe;if(oe[Oe].ringAndEdge1Walkable)var Jt=oe[Oe].ringAndEdge1,Bt=oe[Oe].nxtIsectAlongRingAndEdge1;else var Jt=oe[Oe].ringAndEdge2,Bt=oe[Oe].nxtIsectAlongRingAndEdge2;for(;!cu(oe[Oe].coord,oe[Bt].coord);){Xt.push(oe[Bt].coord);for(var Ri=void 0,Le=0;Le<Mt.length;Le++)if(Mt[Le].isect==Bt){Ri=Le;break}if(Ri!=null&&Mt.splice(Ri,1),cu(Jt,oe[Bt].ringAndEdge1)){if(Jt=oe[Bt].ringAndEdge2,oe[Bt].ringAndEdge2Walkable=!1,oe[Bt].ringAndEdge1Walkable){var Rt={isect:Bt};yc([oe[bt].coord,oe[Bt].coord,oe[oe[Bt].nxtIsectAlongRingAndEdge2].coord],ti==1)?(Rt.parent=gi,Rt.winding=-ti):(Rt.parent=At,Rt.winding=ti),Mt.push(Rt)}bt=Bt,Bt=oe[Bt].nxtIsectAlongRingAndEdge2}else{if(Jt=oe[Bt].ringAndEdge1,oe[Bt].ringAndEdge1Walkable=!1,oe[Bt].ringAndEdge2Walkable){var Rt={isect:Bt};yc([oe[bt].coord,oe[Bt].coord,oe[oe[Bt].nxtIsectAlongRingAndEdge1].coord],ti==1)?(Rt.parent=gi,Rt.winding=-ti):(Rt.parent=At,Rt.winding=ti),Mt.push(Rt)}bt=Bt,Bt=oe[Bt].nxtIsectAlongRingAndEdge1}}Xt.push(oe[Bt].coord),_t.push(nl([Xt],{index:At,parent:gi,winding:ti,netWinding:void 0}))}var pi=yo(_t);St(),wi();function St(){for(var Wt=[],Dt=0;Dt<pi.features.length;Dt++)pi.features[Dt].properties.parent==-1&&Wt.push(Dt);if(Wt.length>1)for(var Dt=0;Dt<Wt.length;Dt++){for(var Ni=-1,Dn=1/0,vn=0;vn<pi.features.length;vn++)Wt[Dt]!=vn&&Ky(pi.features[Wt[Dt]].geometry.coordinates[0][0],pi.features[vn],{ignoreBoundary:!0})&&kd(pi.features[vn])<Dn&&(Ni=vn);pi.features[Wt[Dt]].properties.parent=Ni}}vr(St,"determineParents");function wi(){for(var Wt=0;Wt<pi.features.length;Wt++)if(pi.features[Wt].properties.parent==-1){var Dt=pi.features[Wt].properties.winding;pi.features[Wt].properties.netWinding=Dt,Oi(Wt,Dt)}}vr(wi,"setNetWinding");function Oi(Wt,Dt){for(var Ni=0;Ni<pi.features.length;Ni++)if(pi.features[Ni].properties.parent==Wt){var Dn=Dt+pi.features[Ni].properties.winding;pi.features[Ni].properties.netWinding=Dn,Oi(Ni,Dn)}}return vr(Oi,"setNetWindingOfChildren"),pi}vr(Gv,"simplepolygon");var $v=vr(function(x,d,w,k,A){this.coord=x,this.param=d,this.ringAndEdgeIn=w,this.ringAndEdgeOut=k,this.nxtIsectAlongEdgeIn=A},"PseudoVtx"),qv=vr(function(x,d,w,k,A,O,$){this.coord=x,this.ringAndEdge1=d,this.ringAndEdge2=w,this.nxtIsectAlongRingAndEdge1=k,this.nxtIsectAlongRingAndEdge2=A,this.ringAndEdge1Walkable=O,this.ringAndEdge2Walkable=$},"Isect");function yc(x,d){if(typeof d>"u"&&(d=!0),x.length!=3)throw new Error("This function requires an array of three points [x,y]");var w=(x[1][0]-x[0][0])*(x[2][1]-x[0][1])-(x[1][1]-x[0][1])*(x[2][0]-x[0][0]);return w>=0==d}vr(yc,"isConvex");function Zv(x){for(var d=0,w=0;w<x.length-1;w++)x[w][0]<x[d][0]&&(d=w);if(yc([x[sl(d-1,x.length-1)],x[d],x[sl(d+1,x.length-1)]],!0))var k=1;else var k=-1;return k}vr(Zv,"windingOfRing");function cu(x,d){if(!x||!d||x.length!=d.length)return!1;for(var w=0,k=x.length;w<k;w++)if(x[w]instanceof Array&&d[w]instanceof Array){if(!cu(x[w],d[w]))return!1}else if(x[w]!=d[w])return!1;return!0}vr(cu,"equalArrays");function sl(x,d){return(x%d+d)%d}vr(sl,"modulo");function Xv(x){for(var d={},w=1,k=0,A=x.length;k<A;++k){if(Object.prototype.hasOwnProperty.call(d,x[k])){w=0;break}d[x[k]]=1}return w}vr(Xv,"isUnique");function Wv(x){var d=[];return Os(x,function(w){w.geometry.type==="Polygon"&&cs(Gv(w),function(k){d.push(nl(k.geometry.coordinates,w.properties))})}),yo(d)}vr(Wv,"unkinkPolygon");const cI={circleStrokeWidth:1.5,circleStrokeColor:"#ffffff",circleRadius:4,circleColor:"#ff7500",lineColor:"rgba(255,0,51,0.5)",lineWidth:1.5,fillColor:"rgba(255,102,102,0.1)",markerBackgroundColor:"#CCCCFF"};class hI{constructor(d){this.options={...cI,...d}}addTo(d){return this._map=d.map2d,this._map.on("click",this._onClick.bind(this)),this._map.on("dblclick",this._onDblClick.bind(this)),this._map.on("mousemove",this._onMousemove.bind(this)),this._map.on("mousedown",this._onMousedown.bind(this)),this._map.on("mouseup",this._onMouseup.bind(this)),this.geojson_point={type:"FeatureCollection",features:[]},this.geojson_line={type:"FeatureCollection",features:[]},this.geojson_polygon={type:"FeatureCollection",features:[]},this.temp_line={type:"Feature",geometry:{type:"LineString",coordinates:[]}},this.mode="",this.drawOption={},this.markers=[],this.tooltip=null,this.draging_point=null,this.isActive=!1,this._onMapLoad(),this._callback={},this.timeId=0,this.click_x=0,this.click_y=0,this.dblclick_x=0,this.dblclick_y=0,this.move_x=0,this.move_y=0,this}_onMapLoad(){this._map.addSource("MapTools_geojson",{type:"geojson",data:{type:"FeatureCollection",features:[]}}),this._map.addSource("MapTools_temp_line",{type:"geojson",data:{type:"FeatureCollection",features:[]}}),this._map.addLayer({id:"MapTools_polygon",type:"fill",source:"MapTools_geojson",paint:{"fill-color":this.options.fillColor},filter:["in","$type","Polygon"]}),this._map.addLayer({id:"MapTools_line",type:"line",source:"MapTools_geojson",paint:{"line-color":this.options.lineColor,"line-width":this.options.lineWidth},filter:["in","$type","LineString","Polygon"]}),this._map.addLayer({id:"MapTools_line_temp",type:"line",source:"MapTools_temp_line",paint:{"line-color":this.options.lineColor,"line-width":this.options.lineWidth,"line-dasharray":[4,7]}}),this._map.addLayer({id:"MapTools_point",type:"circle",source:"MapTools_geojson",paint:{"circle-stroke-width":["match",["get","type"],"01",this.options.circleStrokeWidth,1],"circle-stroke-color":this.options.circleStrokeColor,"circle-radius":["match",["get","type"],"01",this.options.circleRadius,3],"circle-color":this.options.circleColor},filter:["in","$type","Point"]})}remove(){for(let d=0;d<this.markers.length;d++)this.markers[d].remove();this._map.getLayer("MapTools_polygon")&&(this._map.removeLayer("MapTools_polygon"),this._map.removeLayer("MapTools_line"),this._map.removeLayer("MapTools_line_temp"),this._map.removeLayer("MapTools_point"),this._map.removeSource("MapTools_geojson"),this._map.removeSource("MapTools_temp_line")),this._map.off("click",this._onClick),this._map.off("dblclick",this._onDblClick),this._map.off("mousemove",this._onMousemove)}on(d,w){this._callback[d]=w}setMode(d,w){if((this.mode===""||this.temp_line.geometry.coordinates.length==0)&&d!=""&&d!="***END***"){if(this.mode=d,this.drawOption=w,this.isActive=!0,this._map.doubleClickZoom.disable(),this.temp_line.geometry.coordinates=[],d==="line"){const k={type:"Feature",properties:{complete:!1,drawOption:w,mode:d},geometry:{type:"LineString",coordinates:[]}};this.geojson_line.features.push(k)}else if(d==="polygon"||d==="rect"||d==="circle"){const k={type:"Feature",properties:{complete:!1,drawOption:w,mode:d},geometry:{type:"Polygon",coordinates:[[]]}};this.geojson_polygon.features.push(k)}}}edit(d,w){d.type==="Point"||d.type==="MultiPoint"?Os(d,k=>{k.properties.drawOption=w,k.properties.complete=!0,this.geojson_point.features.push(k)}):d.type==="LineString"||d.type==="MultiLineString"?Os(d,k=>{k.properties.drawOption=w,k.properties.complete=!0,this.geojson_line.features.push(k)}):(d.type==="Polygon"||d.type==="MultiPolygon")&&Os(d,k=>{k.properties.drawOption=w,k.properties.complete=!0,this.geojson_polygon.features.push(k)}),this.repaint()}_onMousedown(d){const w=[[d.point.x-2,d.point.y-2],[d.point.x+2,d.point.y+2]],k=this._map.queryRenderedFeatures(w,{layers:["MapTools_point"]});if(k.length>0){this.isActive=!0;const A=k[0].properties;d.originalEvent.button===2&&A.type==="01"?A.type==="01"&&(A.source==="geojson_line"&&this.geojson_line.features[A.source_fea_index].geometry.coordinates.length>2?(this.temp_line.geometry.coordinates.length==2&&A.source_coord_index==this.geojson_line.features[A.source_fea_index].geometry.coordinates.length-1&&(this.temp_line.geometry.coordinates[0]=this.geojson_line.features[this.geojson_line.features.length-1].geometry.coordinates[this.geojson_line.features[A.source_fea_index].geometry.coordinates.length-2],this._map.getSource("MapTools_temp_line").setData({type:"FeatureCollection",features:[this.temp_line]})),this.geojson_line.features[A.source_fea_index].geometry.coordinates.splice(A.source_coord_index,1),this.repaint()):A.source==="geojson_polygon"&&this.geojson_polygon.features[A.source_fea_index].geometry.coordinates[A.source_geometry_index].length>4&&(this.temp_line.geometry.coordinates.length==3&&A.source_coord_index==this.geojson_polygon.features[A.source_fea_index].geometry.coordinates[A.source_geometry_index].length-2&&(this.temp_line.geometry.coordinates[0]=this.geojson_polygon.features[this.geojson_polygon.features.length-1].geometry.coordinates[A.source_geometry_index][this.geojson_polygon.features[A.source_fea_index].geometry.coordinates[A.source_geometry_index].length-3],this._map.getSource("MapTools_temp_line").setData({type:"FeatureCollection",features:[this.temp_line]})),this.geojson_polygon.features[A.source_fea_index].geometry.coordinates[A.source_geometry_index].splice(A.source_coord_index,1),this.repaint())):d.originalEvent.button===0&&(A.type==="02"&&(A.source==="geojson_line"?(this.geojson_line.features[A.source_fea_index].geometry.coordinates.splice(A.source_coord_index,0,[d.lngLat.lng,d.lngLat.lat]),this.repaint()):A.source==="geojson_polygon"&&(this.geojson_polygon.features[A.source_fea_index].geometry.coordinates[A.source_geometry_index].splice(A.source_coord_index,0,[d.lngLat.lng,d.lngLat.lat]),this.repaint())),this._map.dragPan.disable(),this.draging_point=A)}}_onMouseup(d){if(this.draging_point!=null){const w=this._callback.Mouseup;w&&(this.draging_point.source==="geojson_point"?w(this.mode,this.drawOption,this.geojson_point.features[this.geojson_point.features.length-1].geometry):this.draging_point.source==="geojson_line"?w(this.mode,this.drawOption,this.geojson_line.features[this.geojson_line.features.length-1].geometry):this.draging_point.source==="geojson_polygon"&&w(this.mode,this.drawOption,this.geojson_polygon.features[this.geojson_polygon.features.length-1].geometry)),this.draging_point=null,this._map.dragPan.enable(),this.isActive=!1}}_onClick(d){this.mode!==""&&(window.clearTimeout(this.timeId),this.timeId=window.setTimeout(()=>{if(this.click_x=d.lngLat.lng,this.click_y=d.lngLat.lat,this.temp_line.geometry.coordinates[0]=[d.lngLat.lng,d.lngLat.lat],this.mode==="point")this.geojson_point.features.push(Xn([d.lngLat.lng,d.lngLat.lat],{drawOption:this.drawOption})),(!this.drawOption||!this.drawOption.multiple)&&this.complate(),this.repaint();else if(this.mode==="line")this.geojson_line.features[this.geojson_line.features.length-1].geometry.coordinates.push([d.lngLat.lng,d.lngLat.lat]),this.repaint();else if(this.mode==="polygon"){const w=this.geojson_polygon.features[this.geojson_polygon.features.length-1];w.geometry.coordinates[0].length==0?w.geometry.coordinates[0].push([d.lngLat.lng,d.lngLat.lat],[d.lngLat.lng,d.lngLat.lat]):w.geometry.coordinates[0].splice(w.geometry.coordinates[0].length-1,0,[d.lngLat.lng,d.lngLat.lat]),this.repaint()}},250))}_onMousemove(d){if(this.draging_point!=null){this.draging_point.source==="geojson_point"?(this.geojson_point.features[this.draging_point.source_fea_index].geometry.coordinates=[d.lngLat.lng,d.lngLat.lat],this.repaint()):this.draging_point.source==="geojson_line"?(this.geojson_line.features[this.draging_point.source_fea_index].geometry.coordinates[this.draging_point.source_coord_index]=[d.lngLat.lng,d.lngLat.lat],this.repaint()):this.draging_point.source==="geojson_polygon"&&(this.draging_point.source_coord_index===0||this.draging_point.source_coord_index===this.geojson_polygon.features[this.draging_point.source_fea_index].geometry.coordinates[this.draging_point.source_geometry_index].length-1?(this.geojson_polygon.features[this.draging_point.source_fea_index].geometry.coordinates[this.draging_point.source_geometry_index][0]=[d.lngLat.lng,d.lngLat.lat],this.geojson_polygon.features[this.draging_point.source_fea_index].geometry.coordinates[this.draging_point.source_geometry_index][this.geojson_polygon.features[this.draging_point.source_fea_index].geometry.coordinates[this.draging_point.source_geometry_index].length-1]=[d.lngLat.lng,d.lngLat.lat]):this.geojson_polygon.features[this.draging_point.source_fea_index].geometry.coordinates[this.draging_point.source_geometry_index][this.draging_point.source_coord_index]=[d.lngLat.lng,d.lngLat.lat],this.repaint());return}if(this.mode!==""){if(this._map.getCanvas().style.cursor="crosshair",this.tooltip)this.tooltip.setLngLat([d.lngLat.lng,d.lngLat.lat]);else{const w=document.createElement("div");w.style.backgroundColor="#FFFFFF",w.style.boxShadow=" 0 3px 8px rgba(107, 108, 124, 0.08);",w.style.borderRadius="8px",w.style.height="32px",w.style.lineHeight="32px",w.style.fontSize="13px",w.style.padding="0 8px",this.mode==="point"&&(!this.drawOption||!this.drawOption.multiple)?(w.innerHTML="单击结束",w.style.width="68px",this.tooltip=new Rr.Marker({element:w,offset:[40,0]}).setLngLat([d.lngLat.lng,d.lngLat.lat]).addTo(this._map)):(w.innerHTML="单击鼠标开始,双击结束",w.style.width="159px",this.tooltip=new Rr.Marker({element:w,offset:[100,0]}).setLngLat([d.lngLat.lng,d.lngLat.lat]).addTo(this._map))}if(this.temp_line.geometry.coordinates.length>0){if(this.mode==="line")this.temp_line.geometry.coordinates[1]=[d.lngLat.lng,d.lngLat.lat],this._map.getSource("MapTools_temp_line").setData({type:"FeatureCollection",features:[this.temp_line]});else if(this.mode==="polygon")this.temp_line.geometry.coordinates[1]=[d.lngLat.lng,d.lngLat.lat],this.temp_line.geometry.coordinates[2]=this.geojson_polygon.features[this.geojson_polygon.features.length-1].geometry.coordinates[0][0],this.geojson_polygon.features[this.geojson_polygon.features.length-1].geometry.coordinates[0].length<=3?this.temp_line.geometry.coordinates[3]=this.geojson_polygon.features[this.geojson_polygon.features.length-1].geometry.coordinates[0][1]:this.temp_line.geometry.coordinates.length==4&&this.temp_line.geometry.coordinates.pop(),this._map.getSource("MapTools_temp_line").setData({type:"FeatureCollection",features:[this.temp_line]});else if(this.mode==="rect")this.temp_line.geometry.coordinates[1]=[this.temp_line.geometry.coordinates[0][0],d.lngLat.lat],this.temp_line.geometry.coordinates[2]=[d.lngLat.lng,d.lngLat.lat],this.temp_line.geometry.coordinates[3]=[d.lngLat.lng,this.temp_line.geometry.coordinates[0][1]],this.temp_line.geometry.coordinates[4]=this.temp_line.geometry.coordinates[0],this._map.getSource("MapTools_temp_line").setData(this.temp_line);else if(this.mode==="circle"){const w=Jh(this.temp_line.geometry.coordinates[0],[d.lngLat.lng,d.lngLat.lat]),k=qd(this.temp_line.geometry.coordinates[0],w);this.temp_line.geometry.coordinates[1]=[d.lngLat.lng,d.lngLat.lat],this._map.getSource("MapTools_temp_line").setData({type:"FeatureCollection",features:[this.temp_line,k]})}}}}_onDblClick(d){if(window.clearTimeout(this.timeId),this.dblclick_x=d.lngLat.lng,this.dblclick_y=d.lngLat.lat,this.mode==="point")this.geojson_point.features.push(Xn([d.lngLat.lng,d.lngLat.lat]));else if(this.mode==="line")this.geojson_line.features[this.geojson_line.features.length-1].geometry.coordinates.push([d.lngLat.lng,d.lngLat.lat]);else if(this.mode==="polygon"){const A=this.geojson_polygon.features[this.geojson_polygon.features.length-1];A.geometry.coordinates[0].length==0?A.geometry.coordinates[0].push([d.lngLat.lng,d.lngLat.lat],[d.lngLat.lng,d.lngLat.lat]):A.geometry.coordinates[0].splice(A.geometry.coordinates[0].length-1,0,[d.lngLat.lng,d.lngLat.lat])}else if(this.mode==="rect"){if(isNaN(this.click_x)||isNaN(this.click_y)||this.click_x==this.dblclick_x||this.click_y==this.dblclick_y)return;const A=this.geojson_polygon.features[this.geojson_polygon.features.length-1];A.geometry.coordinates[0][0]=[this.click_x,this.click_y],A.geometry.coordinates[0][1]=[this.click_x,this.dblclick_y],A.geometry.coordinates[0][2]=[this.dblclick_x,this.dblclick_y],A.geometry.coordinates[0][3]=[this.dblclick_x,this.click_y],A.geometry.coordinates[0][4]=[this.click_x,this.click_y]}else if(this.mode==="circle"){if(isNaN(this.click_x)||isNaN(this.click_y))return;const A=Jh([this.click_x,this.click_y],[this.dblclick_x,this.dblclick_y]),O=qd([this.click_x,this.click_y],A);this.geojson_polygon.features[this.geojson_polygon.features.length-1].geometry=O.geometry,this.geojson_polygon.features[this.geojson_polygon.features.length-1].properties.radius=A}const w=this.geojson_line.features[this.geojson_line.features.length-1];w&&w.geometry.coordinates.length<2?this.geojson_line.features.pop():w&&w.properties.complete==!1&&(w.properties.complete=!0);const k=this.geojson_polygon.features[this.geojson_polygon.features.length-1];k&&k.geometry.coordinates[0].length<4?this.geojson_polygon.features.pop():k&&k.properties.complete==!1&&(k.properties.complete=!0),window.setTimeout(()=>{this._map&&this._map.doubleClickZoom.enable()},0),this.repaint(),this.complate()}complate(){const d=this._callback.complate;d&&(this.mode==="point"?d(this.mode,this.drawOption,this.geojson_point.features[this.geojson_point.features.length-1].geometry):this.mode==="line"?d(this.mode,this.drawOption,this.geojson_line.features[this.geojson_line.features.length-1].geometry):(this.mode==="polygon"||this.mode==="rect"||this.mode==="circle")&&(this.geojson_polygon.features.length||console.log("请正确画"),d(this.mode,this.drawOption,this.geojson_polygon.features[this.geojson_polygon.features.length-1].geometry))),this._map.getCanvas().style.cursor="",this.temp_line.geometry.coordinates=[],this._map.getSource("MapTools_temp_line").setData(this.temp_line),this.tooltip&&(this.tooltip.remove(),this.tooltip=null),this.click_x=Number.NaN,this.click_y=Number.NaN,this.move_x=Number.NaN,this.move_y=Number.NaN,this.dblclick_x=Number.NaN,this.dblclick_y=Number.NaN,this.mode="",this.isActive=!1}repaint(){const d=[];for(let w=0;w<this.markers.length;w++)this.markers[w].remove();cs(this.geojson_point,(w,k)=>{Ds(w,(A,O)=>{const $=Xn(A,{source:"geojson_point",source_fea_index:k,source_coord_index:O,type:"01"});if(d.push($),w.properties.drawOption&&w.properties.drawOption.buffer&&w.properties.drawOption.buffer>0){const s=gc(w,w.properties.drawOption.buffer,{units:"kilometers"});d.push(s)}if(w.properties.drawOption&&w.properties.drawOption.delete){const s=document.createElement("div");s.style.backgroundColor="#FFFFFF",s.style.padding="5px 8px",s.style["border-radius"]="4px",s.style.boxShadow=" 0 3px 8px rgba(107, 108, 124, 0.08);",s.style.fontSize="12px";const Z=document.createElement("a");Z.href="javascript:void(0)",Z.innerHTML="删除",Z.onclick=(function(pe){return(function(){this.delPoint(pe)}).bind(this)}).bind(this)(k),s.appendChild(Z);const oe=new Rr.Marker({element:s,offset:[0,20]}).setLngLat(w.geometry.coordinates).addTo(this._map);this.markers.push(oe)}})}),cs(this.geojson_line,(w,k)=>{if(w.geometry.coordinates.length>=2){if(d.push(w),w.properties.drawOption&&w.properties.drawOption.buffer&&w.properties.drawOption.buffer>0)if(Zd(w).features.length>0){const O=av(w);cs(O,$=>{const s=gc($,w.properties.drawOption.buffer,{units:"kilometers"});d.push(s)})}else{const O=gc(w,w.properties.drawOption.buffer,{units:"kilometers"});d.push(O)}else if(w.properties.drawOption&&w.properties.drawOption.distance){let A=0;Ds(w,(O,$)=>{A+=$==0?0:Jh(O,w.geometry.coordinates[$-1]);const s=document.createElement("div");if(s.style.backgroundColor=this.options.markerBackgroundColor,s.style.border="solid 1px #D1D1D1",s.style.padding="3px",s.style["border-radius"]="5px",$==0)s.innerHTML="起点";else if($==w.geometry.coordinates.length-1&&w.properties.complete==!0){s.innerHTML=`总长 ${A.toLocaleString()}千米&nbsp;&nbsp;`;const oe=document.createElement("a");oe.className="btn",oe.style.width="150px",oe.href="javascript:void(0)",oe.innerHTML="删除",oe.onclick=(function(pe){return(function(){this.delLine(pe)}).bind(this)}).bind(this)(k),s.appendChild(oe)}else s.innerHTML=`${A.toLocaleString()}千米`;const Z=new Rr.Marker({element:s,offset:[0,20]}).setLngLat(O).addTo(this._map);this.markers.push(Z)})}if(w.properties.drawOption&&w.properties.drawOption.delete&&!w.properties.drawOption.distance&&w.properties.complete==!0){const A=document.createElement("div");A.style.backgroundColor="#FFFFFF",A.style.padding="5px 8px",A.style["border-radius"]="4px",A.style.boxShadow=" 0 3px 8px rgba(107, 108, 124, 0.08);",A.style.fontSize="12px";const O=document.createElement("a");O.href="javascript:void(0)",O.className="delIcon",O.innerHTML="删除",O.onclick=(function(Z){return(function(){this.delLine(Z)}).bind(this)}).bind(this)(k),A.appendChild(O);const $=w.geometry.coordinates[w.geometry.coordinates.length-1],s=new Rr.Marker({element:A,offset:[0,20]}).setLngLat($).addTo(this._map);this.markers.push(s)}Ds(w,(A,O)=>{let $=Xn(A,{source:"geojson_line",source_fea_index:k,source_coord_index:O,type:"01"});if(d.push($),O>0){const s=(A[0]+w.geometry.coordinates[O-1][0])/2,Z=(A[1]+w.geometry.coordinates[O-1][1])/2;$=Xn([s,Z],{source:"geojson_line",source_fea_index:k,source_coord_index:O,type:"02"}),d.push($)}})}}),cs(this.geojson_polygon,(w,k)=>{if(w.geometry.coordinates[0].length>=4){const A=this.makevalid(w);if(d.push(A),w.properties.drawOption&&w.properties.drawOption.buffer&&w.properties.drawOption.buffer>0){const O=gc(A,w.properties.drawOption.buffer,{units:"kilometers"});d.push(O)}if(w.properties.mode!="circle")for(let O=0;O<w.geometry.coordinates.length;O++)for(let $=0;$<w.geometry.coordinates[O].length;$++){let s=Xn(w.geometry.coordinates[O][$],{source:"geojson_polygon",source_fea_index:k,source_geometry_index:O,source_coord_index:$,type:"01"});if(d.push(s),$>0){const Z=(w.geometry.coordinates[O][$][0]+w.geometry.coordinates[O][$-1][0])/2,oe=(w.geometry.coordinates[O][$][1]+w.geometry.coordinates[O][$-1][1])/2;s=Xn([Z,oe],{source:"geojson_polygon",source_fea_index:k,source_geometry_index:O,source_coord_index:$,type:"02"}),d.push(s)}}if(w.properties.drawOption&&w.properties.drawOption.area&&w.properties.complete==!0){const O=document.createElement("div");O.style.backgroundColor=this.options.markerBackgroundColor,O.style.border="solid 1px #D1D1D1",O.style.padding="3px",O.style["border-radius"]="5px";const $=kd(w)/1e3/1e3;O.innerHTML=`${$.toLocaleString()}平方千米&nbsp;&nbsp;`;const s=document.createElement("a");s.href="javascript:void(0)",s.innerHTML="删除",s.onclick=(function(pe){return(function(){this.delPolygon(pe)}).bind(this)}).bind(this)(k),O.appendChild(s);const Z=uf(w).geometry.coordinates,oe=new Rr.Marker({element:O,offset:[-20,-10]}).setLngLat(Z).addTo(this._map);this.markers.push(oe)}if(w.properties.drawOption&&w.properties.drawOption.delete&&!w.properties.drawOption.area&&w.properties.complete==!0){const O=document.createElement("div");O.style.backgroundColor=this.options.markerBackgroundColor,O.style.border="solid 1px #D1D1D1",O.style.padding="3px",O.style["border-radius"]="5px";const $=document.createElement("a");$.href="javascript:void(0)",$.innerHTML="删除",$.onclick=(function(oe){return(function(){this.delPolygon(oe)}).bind(this)}).bind(this)(k),O.appendChild($);const s=uf(w).geometry.coordinates,Z=new Rr.Marker({element:O,offset:[0,20]}).setLngLat(s).addTo(this._map);this.markers.push(Z)}}}),this._map.getSource("MapTools_geojson").setData(yo(d))}delPoint(d){this.geojson_point.features.splice(d,1),this.repaint()}delLine(d){this.geojson_line.features.splice(d,1),this.repaint()}delPolygon(d){this.geojson_polygon.features.splice(d,1),this.repaint()}clean(){this.geojson_point.features.length=0,this.geojson_line.features.length=0,this.geojson_polygon.features.length=0,this.completeCallback=null,this._map.getCanvas().style.cursor="",this.temp_line.geometry.coordinates=[],this._map.getSource("MapTools_temp_line").setData(this.temp_line),this.tooltip&&(this.tooltip.remove(),this.tooltip=null),this.click_x=Number.NaN,this.click_y=Number.NaN,this.move_x=Number.NaN,this.move_y=Number.NaN,this.dblclick_x=Number.NaN,this.dblclick_y=Number.NaN,window.setTimeout(()=>{this._map.doubleClickZoom.enable()},0),this.repaint(),this.mode="",this.isActive=!1}getAll(){return{point:this.geojson_point.features,line:this.geojson_line.features,polygon:this.geojson_polygon.features}}makevalid(d){if(d=nv(d),Zd(d).features.length<1)return d;const k=Wv(d),A=[];return cs(k,$=>{A.push($.geometry.coordinates)}),Sd(A)}}const fI={PI:3.141592653589793,x_pi:3.141592653589793*3e3/180,delta:function(x,d){var w=6378245,k=.006693421622965943,A=this.transformLat(d-105,x-35),O=this.transformLon(d-105,x-35),$=x/180*this.PI,s=Math.sin($);s=1-k*s*s;var Z=Math.sqrt(s);return A=A*180/(w*(1-k)/(s*Z)*this.PI),O=O*180/(w/Z*Math.cos($)*this.PI),{lat:A,lon:O}},gcj_encrypt:function(x,d){if(this.outOfChina(x,d))return{lat:x,lon:d};var w=this.delta(x,d);return{lat:x+w.lat,lon:d+w.lon}},gcj_decrypt:function(x,d){if(this.outOfChina(x,d))return{lat:x,lon:d};var w=this.delta(x,d);return{lat:x-w.lat,lon:d-w.lon}},gcj_decrypt_exact:function(x,d){for(var w=.01,k=1e-9,A=w,O=w,$=x-A,s=d-O,Z=x+A,oe=d+O,pe,he,we=0;;){pe=($+Z)/2,he=(s+oe)/2;var ye=this.gcj_encrypt(pe,he);if(A=ye.lat-x,O=ye.lon-d,Math.abs(A)<k&&Math.abs(O)<k||(A>0?Z=pe:$=pe,O>0?oe=he:s=he,++we>1e4))break}return{lat:pe,lon:he}},bd_encrypt:function(x,d){var w=d,k=x,A=Math.sqrt(w*w+k*k)+2e-5*Math.sin(k*this.x_pi),O=Math.atan2(k,w)+3e-6*Math.cos(w*this.x_pi);return bdLon=A*Math.cos(O)+.0065,bdLat=A*Math.sin(O)+.006,{lat:bdLat,lon:bdLon}},bd_decrypt:function(x,d){var w=d-.0065,k=x-.006,A=Math.sqrt(w*w+k*k)-2e-5*Math.sin(k*this.x_pi),O=Math.atan2(k,w)-3e-6*Math.cos(w*this.x_pi),$=A*Math.cos(O),s=A*Math.sin(O);return{lat:s,lon:$}},mercator_encrypt:function(x,d){var w=d*2003750834e-2/180,k=Math.log(Math.tan((90+x)*this.PI/360))/(this.PI/180);return k=k*2003750834e-2/180,{lat:k,lon:w}},mercator_decrypt:function(x,d){var w=d/2003750834e-2*180,k=x/2003750834e-2*180;return k=180/this.PI*(2*Math.atan(Math.exp(k*this.PI/180))-this.PI/2),{lat:k,lon:w}},outOfChina:function(x,d){return d<72.004||d>137.8347||x<.8293||x>55.8271},transformLat:function(x,d){var w=-100+2*x+3*d+.2*d*d+.1*x*d+.2*Math.sqrt(Math.abs(x));return w+=(20*Math.sin(6*x*this.PI)+20*Math.sin(2*x*this.PI))*2/3,w+=(20*Math.sin(d*this.PI)+40*Math.sin(d/3*this.PI))*2/3,w+=(160*Math.sin(d/12*this.PI)+320*Math.sin(d*this.PI/30))*2/3,w},transformLon:function(x,d){var w=300+x+2*d+.1*x*x+.1*x*d+.1*Math.sqrt(Math.abs(x));return w+=(20*Math.sin(6*x*this.PI)+20*Math.sin(2*x*this.PI))*2/3,w+=(20*Math.sin(x*this.PI)+40*Math.sin(x/3*this.PI))*2/3,w+=(150*Math.sin(x/12*this.PI)+300*Math.sin(x/30*this.PI))*2/3,w}},Gr={};return Gr.name="WebGIS SDK",Gr.version=Gr.Version=L1,Gr.MapStyle=dg,Gr.map=P1,Gr.ZoomControl=R1,Gr.FullScreenControl=D1,Gr.CompassControl=O1,Gr.ScalelineControl=z1,Gr.Popup=N1,Gr.MapTools=hI,Gr.Transforms=fI,Gr._defaultMap=Rr,Gr}();