diff --git a/assets/maplibre/package-lock.json b/assets/maplibre/package-lock.json index e11e519..ae52ec5 100644 --- a/assets/maplibre/package-lock.json +++ b/assets/maplibre/package-lock.json @@ -7,7 +7,7 @@ "dependencies": { "@maplibre/maplibre-gl-geocoder": "^1.5.0", "@watergis/maplibre-gl-export": "^3.2.2", - "maplibre-gl": "^4.5.2", + "maplibre-gl": "^4.7.0", "maplibre-gl-vector-text-protocol": "^0.0.5" }, "devDependencies": { @@ -1042,16 +1042,17 @@ "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" }, "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", + "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", + "license": "MIT", "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "ini": "^4.1.3", + "kind-of": "^6.0.3", + "which": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=16" } }, "node_modules/hard-rejection": { @@ -1138,9 +1139,13 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/is-arrayish": { "version": "0.2.1", @@ -1193,9 +1198,13 @@ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", + "engines": { + "node": ">=16" + } }, "node_modules/isobject": { "version": "3.0.1", @@ -1301,9 +1310,9 @@ } }, "node_modules/maplibre-gl": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.5.2.tgz", - "integrity": "sha512-vlWL9EY2bSGg5FAt0mKPfYqlfX15uLW5D3kKv4Xjn54nIVn01MKdfUJMAVIr+8fXVqfSX6c095Iy5XnV+T76kQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.7.0.tgz", + "integrity": "sha512-hkt7je7NxiMQE8EpCxLWP8t6tkK6SkrMe0hIBjYd4Ar/Q7BOCILxthGmGnU993Mwmkvs2mGiXnVUSOK12DeCzg==", "license": "BSD-3-Clause", "dependencies": { "@mapbox/geojson-rewind": "^0.5.2", @@ -1313,7 +1322,7 @@ "@mapbox/unitbezier": "^0.0.1", "@mapbox/vector-tile": "^1.3.1", "@mapbox/whoots-js": "^3.1.0", - "@maplibre/maplibre-gl-style-spec": "^20.3.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", "@types/geojson": "^7946.0.14", "@types/geojson-vt": "3.2.5", "@types/mapbox__point-geometry": "^0.1.4", @@ -1323,7 +1332,7 @@ "earcut": "^3.0.0", "geojson-vt": "^4.0.2", "gl-matrix": "^3.4.3", - "global-prefix": "^3.0.0", + "global-prefix": "^4.0.0", "kdbush": "^4.0.2", "murmurhash-js": "^1.0.0", "pbf": "^3.3.0", @@ -2033,14 +2042,18 @@ } }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", "dependencies": { - "isexe": "^2.0.0" + "isexe": "^3.1.1" }, "bin": { - "which": "bin/which" + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, "node_modules/xtend": { diff --git a/assets/maplibre/package.json b/assets/maplibre/package.json index 973d138..fe1c32a 100644 --- a/assets/maplibre/package.json +++ b/assets/maplibre/package.json @@ -7,7 +7,7 @@ "dependencies": { "@maplibre/maplibre-gl-geocoder": "^1.5.0", "@watergis/maplibre-gl-export": "^3.2.2", - "maplibre-gl": "^4.5.2", + "maplibre-gl": "^4.7.0", "maplibre-gl-vector-text-protocol": "^0.0.5" }, "devDependencies": { diff --git a/lib/assets/maplibre/build/main.js b/lib/assets/maplibre/build/main.js index 4d34bea..df3f082 100644 --- a/lib/assets/maplibre/build/main.js +++ b/lib/assets/maplibre/build/main.js @@ -1,5 +1,5 @@ -var WF=Object.create;var $m=Object.defineProperty;var JF=Object.getOwnPropertyDescriptor;var XF=Object.getOwnPropertyNames;var YF=Object.getPrototypeOf,jF=Object.prototype.hasOwnProperty;var vd=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+n+'" is not supported')});var wd=(n,t)=>()=>(n&&(t=n(n=0)),t);var ua=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),tC=(n,t)=>{for(var r in t)$m(n,r,{get:t[r],enumerable:!0})},qF=(n,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let A of XF(t))!jF.call(n,A)&&A!==r&&$m(n,A,{get:()=>t[A],enumerable:!(o=JF(t,A))||o.enumerable});return n};var Bd=(n,t,r)=>(r=n!=null?WF(YF(n)):{},qF(t||!n||!n.__esModule?$m(r,"default",{value:n,enumerable:!0}):r,n));var rC=ua((eC,iC)=>{(function(n,t){typeof eC=="object"&&typeof iC<"u"?iC.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self,n.maplibregl=t())})(eC,function(){"use strict";var n={},t={};function r(A,s,d){if(t[A]=d,A==="index"){var f="var sharedModule = {}; ("+t.shared+")(sharedModule); ("+t.worker+")(sharedModule);",I={};return t.shared(I),t.index(n,I),typeof window<"u"&&n.setWorkerUrl(window.URL.createObjectURL(new Blob([f],{type:"text/javascript"}))),n}}r("shared",["exports"],function(A){"use strict";function s(a,e,l,h){return new(l||(l=Promise))(function(C,w){function B(Z){try{T(h.next(Z))}catch(M){w(M)}}function F(Z){try{T(h.throw(Z))}catch(M){w(M)}}function T(Z){var M;Z.done?C(Z.value):(M=Z.value,M instanceof l?M:new l(function(D){D(M)})).then(B,F)}T((h=h.apply(a,e||[])).next())})}function d(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}typeof SuppressedError=="function"&&SuppressedError;var f=I;function I(a,e){this.x=a,this.y=e}I.prototype={clone:function(){return new I(this.x,this.y)},add:function(a){return this.clone()._add(a)},sub:function(a){return this.clone()._sub(a)},multByPoint:function(a){return this.clone()._multByPoint(a)},divByPoint:function(a){return this.clone()._divByPoint(a)},mult:function(a){return this.clone()._mult(a)},div:function(a){return this.clone()._div(a)},rotate:function(a){return this.clone()._rotate(a)},rotateAround:function(a,e){return this.clone()._rotateAround(a,e)},matMult:function(a){return this.clone()._matMult(a)},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(a){return this.x===a.x&&this.y===a.y},dist:function(a){return Math.sqrt(this.distSqr(a))},distSqr:function(a){var e=a.x-this.x,l=a.y-this.y;return e*e+l*l},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(a){return Math.atan2(this.y-a.y,this.x-a.x)},angleWith:function(a){return this.angleWithSep(a.x,a.y)},angleWithSep:function(a,e){return Math.atan2(this.x*e-this.y*a,this.x*a+this.y*e)},_matMult:function(a){var e=a[2]*this.x+a[3]*this.y;return this.x=a[0]*this.x+a[1]*this.y,this.y=e,this},_add:function(a){return this.x+=a.x,this.y+=a.y,this},_sub:function(a){return this.x-=a.x,this.y-=a.y,this},_mult:function(a){return this.x*=a,this.y*=a,this},_div:function(a){return this.x/=a,this.y/=a,this},_multByPoint:function(a){return this.x*=a.x,this.y*=a.y,this},_divByPoint:function(a){return this.x/=a.x,this.y/=a.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var a=this.y;return this.y=this.x,this.x=-a,this},_rotate:function(a){var e=Math.cos(a),l=Math.sin(a),h=l*this.x+e*this.y;return this.x=e*this.x-l*this.y,this.y=h,this},_rotateAround:function(a,e){var l=Math.cos(a),h=Math.sin(a),C=e.y+h*(this.x-e.x)+l*(this.y-e.y);return this.x=e.x+l*(this.x-e.x)-h*(this.y-e.y),this.y=C,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},I.convert=function(a){return a instanceof I?a:Array.isArray(a)?new I(a[0],a[1]):a};var _=d(f),S=U;function U(a,e,l,h){this.cx=3*a,this.bx=3*(l-a)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(h-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=a,this.p1y=e,this.p2x=l,this.p2y=h}U.prototype={sampleCurveX:function(a){return((this.ax*a+this.bx)*a+this.cx)*a},sampleCurveY:function(a){return((this.ay*a+this.by)*a+this.cy)*a},sampleCurveDerivativeX:function(a){return(3*this.ax*a+2*this.bx)*a+this.cx},solveCurveX:function(a,e){if(e===void 0&&(e=1e-6),a<0)return 0;if(a>1)return 1;for(var l=a,h=0;h<8;h++){var C=this.sampleCurveX(l)-a;if(Math.abs(C)C?B=l:F=l,l=.5*(F-B)+B;return l},solve:function(a,e){return this.sampleCurveY(this.solveCurveX(a,e))}};var G=d(S);let L,K;function V(){return L==null&&(L=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),L}function q(){if(K==null&&(K=!1,V())){let e=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(e){for(let h=0;h<5*5;h++){let C=4*h;e.fillStyle=`rgb(${C},${C+1},${C+2})`,e.fillRect(h%5,Math.floor(h/5),1,1)}let l=e.getImageData(0,0,5,5).data;for(let h=0;h<5*5*4;h++)if(h%4!=3&&l[h]!==h){K=!0;break}}}return K||!1}function z(a,e,l,h){let C=new G(a,e,l,h);return w=>C.solve(w)}let it=z(.25,.1,.25,1);function At(a,e,l){return Math.min(l,Math.max(e,a))}function _t(a,e,l){let h=l-e,C=((a-e)%h+h)%h+e;return C===e?l:C}function Lt(a,...e){for(let l of e)for(let h in l)a[h]=l[h];return a}let Et=1;function xt(a,e,l){let h={};for(let C in a)h[C]=e.call(this,a[C],C,a);return h}function It(a,e,l){let h={};for(let C in a)e.call(this,a[C],C,a)&&(h[C]=a[C]);return h}function Nt(a){return Array.isArray(a)?a.map(Nt):typeof a=="object"&&a?xt(a,Nt):a}let ie={};function lt(a){ie[a]||(typeof console<"u"&&console.warn(a),ie[a]=!0)}function at(a,e,l){return(l.y-a.y)*(e.x-a.x)>(e.y-a.y)*(l.x-a.x)}function St(a){return typeof WorkerGlobalScope<"u"&&a!==void 0&&a instanceof WorkerGlobalScope}let Bt=null;function se(a){return typeof ImageBitmap<"u"&&a instanceof ImageBitmap}let ee="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function qt(a,e,l,h,C){return s(this,void 0,void 0,function*(){if(typeof VideoFrame>"u")throw new Error("VideoFrame not supported");let w=new VideoFrame(a,{timestamp:0});try{let B=w?.format;if(!B||!B.startsWith("BGR")&&!B.startsWith("RGB"))throw new Error(`Unrecognized format ${B}`);let F=B.startsWith("BGR"),T=new Uint8ClampedArray(h*C*4);if(yield w.copyTo(T,function(Z,M,D,J,$){let st=4*Math.max(-M,0),ut=(Math.max(0,D)-D)*J*4+st,Ft=4*J,Gt=Math.max(0,M),Ae=Math.max(0,D);return{rect:{x:Gt,y:Ae,width:Math.min(Z.width,M+J)-Gt,height:Math.min(Z.height,D+$)-Ae},layout:[{offset:ut,stride:Ft}]}}(a,e,l,h,C)),F)for(let Z=0;ZSt(self)?self.worker&&self.worker.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href,ae=function(a,e){if(/:\/\//.test(a.url)&&!/^https?:|^file:/.test(a.url)){let h=mt(a.url);if(h)return h(a,e);if(St(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:a,targetMapId:yt},e)}if(!(/^file:/.test(l=a.url)||/^file:/.test(Ht())&&!/^\w+:/.test(l))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(h,C){return s(this,void 0,void 0,function*(){let w=new Request(h.url,{method:h.method||"GET",body:h.body,credentials:h.credentials,headers:h.headers,cache:h.cache,referrer:Ht(),signal:C.signal});h.type!=="json"||w.headers.has("Accept")||w.headers.set("Accept","application/json");let B=yield fetch(w);if(!B.ok){let Z=yield B.blob();throw new Qt(B.status,B.statusText,h.url,Z)}let F;F=h.type==="arrayBuffer"||h.type==="image"?B.arrayBuffer():h.type==="json"?B.json():B.text();let T=yield F;if(C.signal.aborted)throw pe();return{data:T,cacheControl:B.headers.get("Cache-Control"),expires:B.headers.get("Expires")}})}(a,e);if(St(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:a,mustQueue:!0,targetMapId:yt},e)}var l;return function(h,C){return new Promise((w,B)=>{var F;let T=new XMLHttpRequest;T.open(h.method||"GET",h.url,!0),h.type!=="arrayBuffer"&&h.type!=="image"||(T.responseType="arraybuffer");for(let Z in h.headers)T.setRequestHeader(Z,h.headers[Z]);h.type==="json"&&(T.responseType="text",!((F=h.headers)===null||F===void 0)&&F.Accept||T.setRequestHeader("Accept","application/json")),T.withCredentials=h.credentials==="include",T.onerror=()=>{B(new Error(T.statusText))},T.onload=()=>{if(!C.signal.aborted)if((T.status>=200&&T.status<300||T.status===0)&&T.response!==null){let Z=T.response;if(h.type==="json")try{Z=JSON.parse(T.response)}catch(M){return void B(M)}w({data:Z,cacheControl:T.getResponseHeader("Cache-Control"),expires:T.getResponseHeader("Expires")})}else{let Z=new Blob([T.response],{type:T.getResponseHeader("Content-Type")});B(new Qt(T.status,T.statusText,h.url,Z))}},C.signal.addEventListener("abort",()=>{T.abort(),B(pe())}),T.send(h.body)})}(a,e)};function ge(a){if(!a||a.indexOf("://")<=0||a.indexOf("data:image/")===0||a.indexOf("blob:")===0)return!0;let e=new URL(a),l=window.location;return e.protocol===l.protocol&&e.host===l.host}function de(a,e,l){l[a]&&l[a].indexOf(e)!==-1||(l[a]=l[a]||[],l[a].push(e))}function Ze(a,e,l){if(l&&l[a]){let h=l[a].indexOf(e);h!==-1&&l[a].splice(h,1)}}class Re{constructor(e,l={}){Lt(this,l),this.type=e}}class Je extends Re{constructor(e,l={}){super("error",Lt({error:e},l))}}class Xe{on(e,l){return this._listeners=this._listeners||{},de(e,l,this._listeners),this}off(e,l){return Ze(e,l,this._listeners),Ze(e,l,this._oneTimeListeners),this}once(e,l){return l?(this._oneTimeListeners=this._oneTimeListeners||{},de(e,l,this._oneTimeListeners),this):new Promise(h=>this.once(e,h))}fire(e,l){typeof e=="string"&&(e=new Re(e,l||{}));let h=e.type;if(this.listens(h)){e.target=this;let C=this._listeners&&this._listeners[h]?this._listeners[h].slice():[];for(let F of C)F.call(this,e);let w=this._oneTimeListeners&&this._oneTimeListeners[h]?this._oneTimeListeners[h].slice():[];for(let F of w)Ze(h,F,this._oneTimeListeners),F.call(this,e);let B=this._eventedParent;B&&(Lt(e,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),B.fire(e))}else e instanceof Je&&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,l){return this._eventedParent=e,this._eventedParentData=l,this}}var Kt={$version:8,$root:{version:{required:!0,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"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,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:!0,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:!1},"*":{type:"*"}},source_raster:{type:{required:!0,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:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,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:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},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_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,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:!1,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"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,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:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,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:!0,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:!1,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:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,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:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,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:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,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:!0,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:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"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:!1,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:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,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:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,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_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},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:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"enum",default:"mercator",values:{mercator:{},globe:{}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,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"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};let Ce=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function Ut(a,e){let l={};for(let h in a)h!=="ref"&&(l[h]=a[h]);return Ce.forEach(h=>{h in e&&(l[h]=e[h])}),l}function Ye(a,e){if(Array.isArray(a)){if(!Array.isArray(e)||a.length!==e.length)return!1;for(let l=0;l`:a.itemType.kind==="value"?"array":`array<${e}>`}return a.kind}let rt=[Gi,le,gi,Ke,or,Ji,Ki,W(ii),wr,ar,wt];function ft(a,e){if(e.kind==="error")return null;if(a.kind==="array"){if(e.kind==="array"&&(e.N===0&&e.itemType.kind==="value"||!ft(a.itemType,e.itemType))&&(typeof a.N!="number"||a.N===e.N))return null}else{if(a.kind===e.kind)return null;if(a.kind==="value"){for(let l of rt)if(!ft(l,e))return null}}return`Expected ${X(a)} but found ${X(e)} instead.`}function Mt(a,e){return e.some(l=>l.kind===a.kind)}function Vt(a,e){return e.some(l=>l==="null"?a===null:l==="array"?Array.isArray(a):l==="object"?a&&!Array.isArray(a)&&typeof a=="object":l===typeof a)}function Yt(a,e){return a.kind==="array"&&e.kind==="array"?a.itemType.kind===e.itemType.kind&&typeof a.N=="number":a.kind===e.kind}let Rt=.96422,Wt=.82521,be=4/29,he=6/29,Le=3*he*he,je=he*he*he,ti=Math.PI/180,_i=180/Math.PI;function $i(a){return(a%=360)<0&&(a+=360),a}function xi([a,e,l,h]){let C,w,B=hr((.2225045*(a=zi(a))+.7168786*(e=zi(e))+.0606169*(l=zi(l)))/1);a===e&&e===l?C=w=B:(C=hr((.4360747*a+.3850649*e+.1430804*l)/Rt),w=hr((.0139322*a+.0971045*e+.7141733*l)/Wt));let F=116*B-16;return[F<0?0:F,500*(C-B),200*(B-w),h]}function zi(a){return a<=.04045?a/12.92:Math.pow((a+.055)/1.055,2.4)}function hr(a){return a>je?Math.pow(a,1/3):a/Le+be}function fr([a,e,l,h]){let C=(a+16)/116,w=isNaN(e)?C:C+e/500,B=isNaN(l)?C:C-l/200;return C=1*Wi(C),w=Rt*Wi(w),B=Wt*Wi(B),[Hi(3.1338561*w-1.6168667*C-.4906146*B),Hi(-.9787684*w+1.9161415*C+.033454*B),Hi(.0719453*w-.2289914*C+1.4052427*B),h]}function Hi(a){return(a=a<=.00304?12.92*a:1.055*Math.pow(a,1/2.4)-.055)<0?0:a>1?1:a}function Wi(a){return a>he?a*a*a:Le*(a-be)}function Ar(a){return parseInt(a.padEnd(2,a),16)/255}function Zt(a,e){return De(e?a/100:a,0,1)}function De(a,e,l){return Math.min(Math.max(e,a),l)}function Te(a){return!a.some(Number.isNaN)}let tr={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Ui{constructor(e,l,h,C=1,w=!0){this.r=e,this.g=l,this.b=h,this.a=C,w||(this.r*=C,this.g*=C,this.b*=C,C||this.overwriteGetter("rgb",[e,l,h,C]))}static parse(e){if(e instanceof Ui)return e;if(typeof e!="string")return;let l=function(h){if((h=h.toLowerCase().trim())==="transparent")return[0,0,0,0];let C=tr[h];if(C){let[B,F,T]=C;return[B/255,F/255,T/255,1]}if(h.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(h)){let B=h.length<6?1:2,F=1;return[Ar(h.slice(F,F+=B)),Ar(h.slice(F,F+=B)),Ar(h.slice(F,F+=B)),Ar(h.slice(F,F+B)||"ff")]}if(h.startsWith("rgb")){let B=h.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(B){let[F,T,Z,M,D,J,$,st,ut,Ft,Gt,Ae]=B,Ot=[M||" ",$||" ",Ft].join("");if(Ot===" "||Ot===" /"||Ot===",,"||Ot===",,,"){let te=[Z,J,ut].join(""),me=te==="%%%"?100:te===""?255:0;if(me){let Pe=[De(+T/me,0,1),De(+D/me,0,1),De(+st/me,0,1),Gt?Zt(+Gt,Ae):1];if(Te(Pe))return Pe}}return}}let w=h.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(w){let[B,F,T,Z,M,D,J,$,st]=w,ut=[T||" ",M||" ",J].join("");if(ut===" "||ut===" /"||ut===",,"||ut===",,,"){let Ft=[+F,De(+Z,0,100),De(+D,0,100),$?Zt(+$,st):1];if(Te(Ft))return function([Gt,Ae,Ot,te]){function me(Pe){let oi=(Pe+Gt/30)%12,Pi=Ae*Math.min(Ot,1-Ot);return Ot-Pi*Math.max(-1,Math.min(oi-3,9-oi,1))}return Gt=$i(Gt),Ae/=100,Ot/=100,[me(0),me(8),me(4),te]}(Ft)}}}(e);return l?new Ui(...l,!1):void 0}get rgb(){let{r:e,g:l,b:h,a:C}=this,w=C||1/0;return this.overwriteGetter("rgb",[e/w,l/w,h/w,C])}get hcl(){return this.overwriteGetter("hcl",function(e){let[l,h,C,w]=xi(e),B=Math.sqrt(h*h+C*C);return[Math.round(1e4*B)?$i(Math.atan2(C,h)*_i):NaN,B,l,w]}(this.rgb))}get lab(){return this.overwriteGetter("lab",xi(this.rgb))}overwriteGetter(e,l){return Object.defineProperty(this,e,{value:l}),l}toString(){let[e,l,h,C]=this.rgb;return`rgba(${[e,l,h].map(w=>Math.round(255*w)).join(",")},${C})`}}Ui.black=new Ui(0,0,0,1),Ui.white=new Ui(1,1,1,1),Ui.transparent=new Ui(0,0,0,0),Ui.red=new Ui(1,0,0,1);class an{constructor(e,l,h){this.sensitivity=e?l?"variant":"case":l?"accent":"base",this.locale=h,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,l){return this.collator.compare(e,l)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Fr{constructor(e,l,h,C,w){this.text=e,this.image=l,this.scale=h,this.fontStack=C,this.textColor=w}}class $r{constructor(e){this.sections=e}static fromString(e){return new $r([new Fr(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 $r?e:$r.fromString(e)}toString(){return this.sections.length===0?"":this.sections.map(e=>e.text).join("")}}class Ir{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Ir)return e;if(typeof e=="number")return new Ir([e,e,e,e]);if(Array.isArray(e)&&!(e.length<1||e.length>4)){for(let l of e)if(typeof l!="number")return;switch(e.length){case 1:e=[e[0],e[0],e[0],e[0]];break;case 2:e=[e[0],e[1],e[0],e[1]];break;case 3:e=[e[0],e[1],e[2],e[1]]}return new Ir(e)}}toString(){return JSON.stringify(this.values)}}let hn=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class pn{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof pn)return e;if(Array.isArray(e)&&!(e.length<1)&&e.length%2==0){for(let l=0;l=0&&a<=255&&typeof e=="number"&&e>=0&&e<=255&&typeof l=="number"&&l>=0&&l<=255?h===void 0||typeof h=="number"&&h>=0&&h<=1?null:`Invalid rgba value [${[a,e,l,h].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof h=="number"?[a,e,l,h]:[a,e,l]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Rs(a){if(a===null||typeof a=="string"||typeof a=="boolean"||typeof a=="number"||a instanceof Ui||a instanceof an||a instanceof $r||a instanceof Ir||a instanceof pn||a instanceof An)return!0;if(Array.isArray(a)){for(let e of a)if(!Rs(e))return!1;return!0}if(typeof a=="object"){for(let e in a)if(!Rs(a[e]))return!1;return!0}return!1}function Or(a){if(a===null)return Gi;if(typeof a=="string")return gi;if(typeof a=="boolean")return Ke;if(typeof a=="number")return le;if(a instanceof Ui)return or;if(a instanceof an)return br;if(a instanceof $r)return Ji;if(a instanceof Ir)return wr;if(a instanceof pn)return wt;if(a instanceof An)return ar;if(Array.isArray(a)){let e=a.length,l;for(let h of a){let C=Or(h);if(l){if(l===C)continue;l=ii;break}l=C}return W(l||ii,e)}return Ki}function vn(a){let e=typeof a;return a===null?"":e==="string"||e==="number"||e==="boolean"?String(a):a instanceof Ui||a instanceof $r||a instanceof Ir||a instanceof pn||a instanceof An?a.toString():JSON.stringify(a)}class io{constructor(e,l){this.type=e,this.value=l}static parse(e,l){if(e.length!==2)return l.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Rs(e[1]))return l.error("invalid value");let h=e[1],C=Or(h),w=l.expectedType;return C.kind!=="array"||C.N!==0||!w||w.kind!=="array"||typeof w.N=="number"&&w.N!==0||(C=w),new io(C,h)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class ir{constructor(e){this.name="ExpressionEvaluationError",this.message=e}toJSON(){return this.message}}let ro={string:gi,number:le,boolean:Ke,object:Ki};class wn{constructor(e,l){this.type=e,this.args=l}static parse(e,l){if(e.length<2)return l.error("Expected at least one argument.");let h,C=1,w=e[0];if(w==="array"){let F,T;if(e.length>2){let Z=e[1];if(typeof Z!="string"||!(Z in ro)||Z==="object")return l.error('The item type argument of "array" must be one of string, number, boolean',1);F=ro[Z],C++}else F=ii;if(e.length>3){if(e[2]!==null&&(typeof e[2]!="number"||e[2]<0||e[2]!==Math.floor(e[2])))return l.error('The length argument to "array" must be a positive integer literal',2);T=e[2],C++}h=W(F,T)}else{if(!ro[w])throw new Error(`Types doesn't contain name = ${w}`);h=ro[w]}let B=[];for(;Ce.outputDefined())}}let no={"to-boolean":Ke,"to-color":or,"to-number":le,"to-string":gi};class ns{constructor(e,l){this.type=e,this.args=l}static parse(e,l){if(e.length<2)return l.error("Expected at least one argument.");let h=e[0];if(!no[h])throw new Error(`Can't parse ${h} as it is not part of the known types`);if((h==="to-boolean"||h==="to-string")&&e.length!==2)return l.error("Expected one argument.");let C=no[h],w=[];for(let B=1;B4?`Invalid rbga value ${JSON.stringify(l)}: expected an array containing either three or four numeric values.`:pa(l[0],l[1],l[2],l[3]),!h))return new Ui(l[0]/255,l[1]/255,l[2]/255,l[3])}throw new ir(h||`Could not parse color from value '${typeof l=="string"?l:JSON.stringify(l)}'`)}case"padding":{let l;for(let h of this.args){l=h.evaluate(e);let C=Ir.parse(l);if(C)return C}throw new ir(`Could not parse padding from value '${typeof l=="string"?l:JSON.stringify(l)}'`)}case"variableAnchorOffsetCollection":{let l;for(let h of this.args){l=h.evaluate(e);let C=pn.parse(l);if(C)return C}throw new ir(`Could not parse variableAnchorOffsetCollection from value '${typeof l=="string"?l:JSON.stringify(l)}'`)}case"number":{let l=null;for(let h of this.args){if(l=h.evaluate(e),l===null)return 0;let C=Number(l);if(!isNaN(C))return C}throw new ir(`Could not convert ${JSON.stringify(l)} to number.`)}case"formatted":return $r.fromString(vn(this.args[0].evaluate(e)));case"resolvedImage":return An.fromString(vn(this.args[0].evaluate(e)));default:return vn(this.args[0].evaluate(e))}}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}let ht=["Unknown","Point","LineString","Polygon"];class Ct{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?ht[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||{}}parseColor(e){let l=this._parseColorCache[e];return l||(l=this._parseColorCache[e]=Ui.parse(e)),l}}class ct{constructor(e,l,h=[],C,w=new mi,B=[]){this.registry=e,this.path=h,this.key=h.map(F=>`[${F}]`).join(""),this.scope=w,this.errors=B,this.expectedType=C,this._isConstant=l}parse(e,l,h,C,w={}){return l?this.concat(l,h,C)._parse(e,w):this._parse(e,w)}_parse(e,l){function h(C,w,B){return B==="assert"?new wn(w,[C]):B==="coerce"?new ns(w,[C]):C}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", []].');let C=e[0];if(typeof C!="string")return this.error(`Expression name must be a string, but found ${typeof C} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let w=this.registry[C];if(w){let B=w.parse(e,this);if(!B)return null;if(this.expectedType){let F=this.expectedType,T=B.type;if(F.kind!=="string"&&F.kind!=="number"&&F.kind!=="boolean"&&F.kind!=="object"&&F.kind!=="array"||T.kind!=="value")if(F.kind!=="color"&&F.kind!=="formatted"&&F.kind!=="resolvedImage"||T.kind!=="value"&&T.kind!=="string")if(F.kind!=="padding"||T.kind!=="value"&&T.kind!=="number"&&T.kind!=="array")if(F.kind!=="variableAnchorOffsetCollection"||T.kind!=="value"&&T.kind!=="array"){if(this.checkSubtype(F,T))return null}else B=h(B,F,l.typeAnnotation||"coerce");else B=h(B,F,l.typeAnnotation||"coerce");else B=h(B,F,l.typeAnnotation||"coerce");else B=h(B,F,l.typeAnnotation||"assert")}if(!(B instanceof io)&&B.type.kind!=="resolvedImage"&&this._isConstant(B)){let F=new Ct;try{B=new io(B.type,B.evaluate(F))}catch(T){return this.error(T.message),null}}return B}return this.error(`Unknown expression "${C}". 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,l,h){let C=typeof e=="number"?this.path.concat(e):this.path,w=h?this.scope.concat(h):this.scope;return new ct(this.registry,this._isConstant,C,l||null,w,this.errors)}error(e,...l){let h=`${this.key}${l.map(C=>`[${C}]`).join("")}`;this.errors.push(new Di(h,e))}checkSubtype(e,l){let h=ft(e,l);return h&&this.error(h),h}}class bt{constructor(e,l){this.type=l.type,this.bindings=[].concat(e),this.result=l}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(let l of this.bindings)e(l[1]);e(this.result)}static parse(e,l){if(e.length<4)return l.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);let h=[];for(let w=1;w=h.length)throw new ir(`Array index out of bounds: ${l} > ${h.length-1}.`);if(l!==Math.floor(l))throw new ir(`Array index must be an integer, but found ${l} instead.`);return h[l]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}}class re{constructor(e,l){this.type=Ke,this.needle=e,this.haystack=l}static parse(e,l){if(e.length!==3)return l.error(`Expected 2 arguments, but found ${e.length-1} instead.`);let h=l.parse(e[1],1,ii),C=l.parse(e[2],2,ii);return h&&C?Mt(h.type,[Ke,gi,le,Gi,ii])?new re(h,C):l.error(`Expected first argument to be of type boolean, string, number or null, but found ${X(h.type)} instead`):null}evaluate(e){let l=this.needle.evaluate(e),h=this.haystack.evaluate(e);if(!h)return!1;if(!Vt(l,["boolean","string","number","null"]))throw new ir(`Expected first argument to be of type boolean, string, number or null, but found ${X(Or(l))} instead.`);if(!Vt(h,["string","array"]))throw new ir(`Expected second argument to be of type array or string, but found ${X(Or(h))} instead.`);return h.indexOf(l)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}}class _e{constructor(e,l,h){this.type=le,this.needle=e,this.haystack=l,this.fromIndex=h}static parse(e,l){if(e.length<=2||e.length>=5)return l.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);let h=l.parse(e[1],1,ii),C=l.parse(e[2],2,ii);if(!h||!C)return null;if(!Mt(h.type,[Ke,gi,le,Gi,ii]))return l.error(`Expected first argument to be of type boolean, string, number or null, but found ${X(h.type)} instead`);if(e.length===4){let w=l.parse(e[3],3,le);return w?new _e(h,C,w):null}return new _e(h,C)}evaluate(e){let l=this.needle.evaluate(e),h=this.haystack.evaluate(e);if(!Vt(l,["boolean","string","number","null"]))throw new ir(`Expected first argument to be of type boolean, string, number or null, but found ${X(Or(l))} instead.`);if(!Vt(h,["string","array"]))throw new ir(`Expected second argument to be of type array or string, but found ${X(Or(h))} instead.`);if(this.fromIndex){let C=this.fromIndex.evaluate(e);return h.indexOf(l,C)}return h.indexOf(l)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}}class Be{constructor(e,l,h,C,w,B){this.inputType=e,this.type=l,this.input=h,this.cases=C,this.outputs=w,this.otherwise=B}static parse(e,l){if(e.length<5)return l.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return l.error("Expected an even number of arguments.");let h,C;l.expectedType&&l.expectedType.kind!=="value"&&(C=l.expectedType);let w={},B=[];for(let Z=2;ZNumber.MAX_SAFE_INTEGER)return J.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof st=="number"&&Math.floor(st)!==st)return J.error("Numeric branch labels must be integer values.");if(h){if(J.checkSubtype(h,Or(st)))return null}else h=Or(st);if(w[String(st)]!==void 0)return J.error("Branch labels must be unique.");w[String(st)]=B.length}let $=l.parse(D,Z,C);if(!$)return null;C=C||$.type,B.push($)}let F=l.parse(e[1],1,ii);if(!F)return null;let T=l.parse(e[e.length-1],e.length-1,C);return T?F.type.kind!=="value"&&l.concat(1).checkSubtype(h,F.type)?null:new Be(h,C,F,w,B,T):null}evaluate(e){let l=this.input.evaluate(e);return(Or(l)===this.inputType&&this.outputs[this.cases[l]]||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()}}class Ie{constructor(e,l,h){this.type=e,this.branches=l,this.otherwise=h}static parse(e,l){if(e.length<4)return l.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return l.error("Expected an odd number of arguments.");let h;l.expectedType&&l.expectedType.kind!=="value"&&(h=l.expectedType);let C=[];for(let B=1;Bl.outputDefined())&&this.otherwise.outputDefined()}}class ne{constructor(e,l,h,C){this.type=e,this.input=l,this.beginIndex=h,this.endIndex=C}static parse(e,l){if(e.length<=2||e.length>=5)return l.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);let h=l.parse(e[1],1,ii),C=l.parse(e[2],2,le);if(!h||!C)return null;if(!Mt(h.type,[W(ii),gi,ii]))return l.error(`Expected first argument to be of type array or string, but found ${X(h.type)} instead`);if(e.length===4){let w=l.parse(e[3],3,le);return w?new ne(h.type,h,C,w):null}return new ne(h.type,h,C)}evaluate(e){let l=this.input.evaluate(e),h=this.beginIndex.evaluate(e);if(!Vt(l,["string","array"]))throw new ir(`Expected first argument to be of type array or string, but found ${X(Or(l))} instead.`);if(this.endIndex){let C=this.endIndex.evaluate(e);return l.slice(h,C)}return l.slice(h)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}}function ye(a,e){let l=a.length-1,h,C,w=0,B=l,F=0;for(;w<=B;)if(F=Math.floor((w+B)/2),h=a[F],C=a[F+1],h<=e){if(F===l||ee))throw new ir("Input is not a number.");B=F-1}return 0}class ve{constructor(e,l,h){this.type=e,this.input=l,this.labels=[],this.outputs=[];for(let[C,w]of h)this.labels.push(C),this.outputs.push(w)}static parse(e,l){if(e.length-1<4)return l.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return l.error("Expected an even number of arguments.");let h=l.parse(e[1],1,le);if(!h)return null;let C=[],w=null;l.expectedType&&l.expectedType.kind!=="value"&&(w=l.expectedType);for(let B=1;B=F)return l.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',Z);let D=l.parse(T,M,w);if(!D)return null;w=w||D.type,C.push([F,D])}return new ve(w,h,C)}evaluate(e){let l=this.labels,h=this.outputs;if(l.length===1)return h[0].evaluate(e);let C=this.input.evaluate(e);if(C<=l[0])return h[0].evaluate(e);let w=l.length;return C>=l[w-1]?h[w-1].evaluate(e):h[ye(l,C)].evaluate(e)}eachChild(e){e(this.input);for(let l of this.outputs)e(l)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function Ge(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var Ri=Qi;function Qi(a,e,l,h){this.cx=3*a,this.bx=3*(l-a)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(h-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=a,this.p1y=e,this.p2x=l,this.p2y=h}Qi.prototype={sampleCurveX:function(a){return((this.ax*a+this.bx)*a+this.cx)*a},sampleCurveY:function(a){return((this.ay*a+this.by)*a+this.cy)*a},sampleCurveDerivativeX:function(a){return(3*this.ax*a+2*this.bx)*a+this.cx},solveCurveX:function(a,e){if(e===void 0&&(e=1e-6),a<0)return 0;if(a>1)return 1;for(var l=a,h=0;h<8;h++){var C=this.sampleCurveX(l)-a;if(Math.abs(C)C?B=l:F=l,l=.5*(F-B)+B;return l},solve:function(a,e){return this.sampleCurveY(this.solveCurveX(a,e))}};var He=Ge(Ri);function Ee(a,e,l){return a+l*(e-a)}function si(a,e,l){return a.map((h,C)=>Ee(h,e[C],l))}let ci={number:Ee,color:function(a,e,l,h="rgb"){switch(h){case"rgb":{let[C,w,B,F]=si(a.rgb,e.rgb,l);return new Ui(C,w,B,F,!1)}case"hcl":{let[C,w,B,F]=a.hcl,[T,Z,M,D]=e.hcl,J,$;if(isNaN(C)||isNaN(T))isNaN(C)?isNaN(T)?J=NaN:(J=T,B!==1&&B!==0||($=Z)):(J=C,M!==1&&M!==0||($=w));else{let Ae=T-C;T>C&&Ae>180?Ae-=360:T180&&(Ae+=360),J=C+l*Ae}let[st,ut,Ft,Gt]=function([Ae,Ot,te,me]){return Ae=isNaN(Ae)?0:Ae*ti,fr([te,Math.cos(Ae)*Ot,Math.sin(Ae)*Ot,me])}([J,$??Ee(w,Z,l),Ee(B,M,l),Ee(F,D,l)]);return new Ui(st,ut,Ft,Gt,!1)}case"lab":{let[C,w,B,F]=fr(si(a.lab,e.lab,l));return new Ui(C,w,B,F,!1)}}},array:si,padding:function(a,e,l){return new Ir(si(a.values,e.values,l))},variableAnchorOffsetCollection:function(a,e,l){let h=a.values,C=e.values;if(h.length!==C.length)throw new ir(`Cannot interpolate values of different length. from: ${a.toString()}, to: ${e.toString()}`);let w=[];for(let B=0;Btypeof M!="number"||M<0||M>1))return l.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);C={name:"cubic-bezier",controlPoints:Z}}}if(e.length-1<4)return l.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return l.error("Expected an even number of arguments.");if(w=l.parse(w,2,le),!w)return null;let F=[],T=null;h==="interpolate-hcl"||h==="interpolate-lab"?T=or:l.expectedType&&l.expectedType.kind!=="value"&&(T=l.expectedType);for(let Z=0;Z=M)return l.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',J);let st=l.parse(D,$,T);if(!st)return null;T=T||st.type,F.push([M,st])}return Yt(T,le)||Yt(T,or)||Yt(T,wr)||Yt(T,wt)||Yt(T,W(le))?new Fi(T,h,C,w,F):l.error(`Type ${X(T)} is not interpolatable.`)}evaluate(e){let l=this.labels,h=this.outputs;if(l.length===1)return h[0].evaluate(e);let C=this.input.evaluate(e);if(C<=l[0])return h[0].evaluate(e);let w=l.length;if(C>=l[w-1])return h[w-1].evaluate(e);let B=ye(l,C),F=Fi.interpolationFactor(this.interpolation,C,l[B],l[B+1]),T=h[B].evaluate(e),Z=h[B+1].evaluate(e);switch(this.operator){case"interpolate":return ci[this.type.kind](T,Z,F);case"interpolate-hcl":return ci.color(T,Z,F,"hcl");case"interpolate-lab":return ci.color(T,Z,F,"lab")}}eachChild(e){e(this.input);for(let l of this.outputs)e(l)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function lr(a,e,l,h){let C=h-l,w=a-l;return C===0?0:e===1?w/C:(Math.pow(e,w)-1)/(Math.pow(e,C)-1)}class ai{constructor(e,l){this.type=e,this.args=l}static parse(e,l){if(e.length<2)return l.error("Expectected at least one argument.");let h=null,C=l.expectedType;C&&C.kind!=="value"&&(h=C);let w=[];for(let F of e.slice(1)){let T=l.parse(F,1+w.length,h,void 0,{typeAnnotation:"omit"});if(!T)return null;h=h||T.type,w.push(T)}if(!h)throw new Error("No output type");let B=C&&w.some(F=>ft(C,F.type));return new ai(B?ii:h,w)}evaluate(e){let l,h=null,C=0;for(let w of this.args)if(C++,h=w.evaluate(e),h&&h instanceof An&&!h.available&&(l||(l=h.name),h=null,C===this.args.length&&(h=l)),h!==null)break;return h}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}function Br(a,e){return a==="=="||a==="!="?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 ln(a,e,l,h){return h.compare(e,l)===0}function yr(a,e,l){let h=a!=="=="&&a!=="!=";return class _b{constructor(w,B,F){this.type=Ke,this.lhs=w,this.rhs=B,this.collator=F,this.hasUntypedArgument=w.type.kind==="value"||B.type.kind==="value"}static parse(w,B){if(w.length!==3&&w.length!==4)return B.error("Expected two or three arguments.");let F=w[0],T=B.parse(w[1],1,ii);if(!T)return null;if(!Br(F,T.type))return B.concat(1).error(`"${F}" comparisons are not supported for type '${X(T.type)}'.`);let Z=B.parse(w[2],2,ii);if(!Z)return null;if(!Br(F,Z.type))return B.concat(2).error(`"${F}" comparisons are not supported for type '${X(Z.type)}'.`);if(T.type.kind!==Z.type.kind&&T.type.kind!=="value"&&Z.type.kind!=="value")return B.error(`Cannot compare types '${X(T.type)}' and '${X(Z.type)}'.`);h&&(T.type.kind==="value"&&Z.type.kind!=="value"?T=new wn(Z.type,[T]):T.type.kind!=="value"&&Z.type.kind==="value"&&(Z=new wn(T.type,[Z])));let M=null;if(w.length===4){if(T.type.kind!=="string"&&Z.type.kind!=="string"&&T.type.kind!=="value"&&Z.type.kind!=="value")return B.error("Cannot use collator to compare non-string types.");if(M=B.parse(w[3],3,br),!M)return null}return new _b(T,Z,M)}evaluate(w){let B=this.lhs.evaluate(w),F=this.rhs.evaluate(w);if(h&&this.hasUntypedArgument){let T=Or(B),Z=Or(F);if(T.kind!==Z.kind||T.kind!=="string"&&T.kind!=="number")throw new ir(`Expected arguments for "${a}" to be (string, string) or (number, number), but found (${T.kind}, ${Z.kind}) instead.`)}if(this.collator&&!h&&this.hasUntypedArgument){let T=Or(B),Z=Or(F);if(T.kind!=="string"||Z.kind!=="string")return e(w,B,F)}return this.collator?l(w,B,F,this.collator.evaluate(w)):e(w,B,F)}eachChild(w){w(this.lhs),w(this.rhs),this.collator&&w(this.collator)}outputDefined(){return!0}}}let ss=yr("==",function(a,e,l){return e===l},ln),$n=yr("!=",function(a,e,l){return e!==l},function(a,e,l,h){return!ln(0,e,l,h)}),zo=yr("<",function(a,e,l){return e",function(a,e,l){return e>l},function(a,e,l,h){return h.compare(e,l)>0}),Ql=yr("<=",function(a,e,l){return e<=l},function(a,e,l,h){return h.compare(e,l)<=0}),Ic=yr(">=",function(a,e,l){return e>=l},function(a,e,l,h){return h.compare(e,l)>=0});class bA{constructor(e,l,h){this.type=br,this.locale=h,this.caseSensitive=e,this.diacriticSensitive=l}static parse(e,l){if(e.length!==2)return l.error("Expected one argument.");let h=e[1];if(typeof h!="object"||Array.isArray(h))return l.error("Collator options argument must be an object.");let C=l.parse(h["case-sensitive"]!==void 0&&h["case-sensitive"],1,Ke);if(!C)return null;let w=l.parse(h["diacritic-sensitive"]!==void 0&&h["diacritic-sensitive"],1,Ke);if(!w)return null;let B=null;return h.locale&&(B=l.parse(h.locale,1,gi),!B)?null:new bA(C,w,B)}evaluate(e){return new an(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}}class Ma{constructor(e,l,h,C,w){this.type=gi,this.number=e,this.locale=l,this.currency=h,this.minFractionDigits=C,this.maxFractionDigits=w}static parse(e,l){if(e.length!==3)return l.error("Expected two arguments.");let h=l.parse(e[1],1,le);if(!h)return null;let C=e[2];if(typeof C!="object"||Array.isArray(C))return l.error("NumberFormat options argument must be an object.");let w=null;if(C.locale&&(w=l.parse(C.locale,1,gi),!w))return null;let B=null;if(C.currency&&(B=l.parse(C.currency,1,gi),!B))return null;let F=null;if(C["min-fraction-digits"]&&(F=l.parse(C["min-fraction-digits"],1,le),!F))return null;let T=null;return C["max-fraction-digits"]&&(T=l.parse(C["max-fraction-digits"],1,le),!T)?null:new Ma(h,w,B,F,T)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.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.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}}class Lo{constructor(e){this.type=Ji,this.sections=e}static parse(e,l){if(e.length<2)return l.error("Expected at least one argument.");let h=e[1];if(!Array.isArray(h)&&typeof h=="object")return l.error("First argument must be an image or text section.");let C=[],w=!1;for(let B=1;B<=e.length-1;++B){let F=e[B];if(w&&typeof F=="object"&&!Array.isArray(F)){w=!1;let T=null;if(F["font-scale"]&&(T=l.parse(F["font-scale"],1,le),!T))return null;let Z=null;if(F["text-font"]&&(Z=l.parse(F["text-font"],1,W(gi)),!Z))return null;let M=null;if(F["text-color"]&&(M=l.parse(F["text-color"],1,or),!M))return null;let D=C[C.length-1];D.scale=T,D.font=Z,D.textColor=M}else{let T=l.parse(e[B],1,ii);if(!T)return null;let Z=T.type.kind;if(Z!=="string"&&Z!=="value"&&Z!=="null"&&Z!=="resolvedImage")return l.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");w=!0,C.push({content:T,scale:null,font:null,textColor:null})}}return new Lo(C)}evaluate(e){return new $r(this.sections.map(l=>{let h=l.content.evaluate(e);return Or(h)===ar?new Fr("",h,null,null,null):new Fr(vn(h),null,l.scale?l.scale.evaluate(e):null,l.font?l.font.evaluate(e).join(","):null,l.textColor?l.textColor.evaluate(e):null)}))}eachChild(e){for(let l of this.sections)e(l.content),l.scale&&e(l.scale),l.font&&e(l.font),l.textColor&&e(l.textColor)}outputDefined(){return!1}}class Eo{constructor(e){this.type=ar,this.input=e}static parse(e,l){if(e.length!==2)return l.error("Expected two arguments.");let h=l.parse(e[1],1,gi);return h?new Eo(h):l.error("No image name provided.")}evaluate(e){let l=this.input.evaluate(e),h=An.fromString(l);return h&&e.availableImages&&(h.available=e.availableImages.indexOf(l)>-1),h}eachChild(e){e(this.input)}outputDefined(){return!1}}class rl{constructor(e){this.type=le,this.input=e}static parse(e,l){if(e.length!==2)return l.error(`Expected 1 argument, but found ${e.length-1} instead.`);let h=l.parse(e[1],1);return h?h.type.kind!=="array"&&h.type.kind!=="string"&&h.type.kind!=="value"?l.error(`Expected argument of type string or array, but found ${X(h.type)} instead.`):new rl(h):null}evaluate(e){let l=this.input.evaluate(e);if(typeof l=="string"||Array.isArray(l))return l.length;throw new ir(`Expected value to be of type string or array, but found ${X(Or(l))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}}let Kn=8192;function Na(a,e){let l=(180+a[0])/360,h=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+a[1]*Math.PI/360)))/360,C=Math.pow(2,e.z);return[Math.round(l*C*Kn),Math.round(h*C*Kn)]}function so(a,e){let l=Math.pow(2,e.z);return[(C=(a[0]/Kn+e.x)/l,360*C-180),(h=(a[1]/Kn+e.y)/l,360/Math.PI*Math.atan(Math.exp((180-360*h)*Math.PI/180))-90)];var h,C}function ur(a,e){a[0]=Math.min(a[0],e[0]),a[1]=Math.min(a[1],e[1]),a[2]=Math.max(a[2],e[0]),a[3]=Math.max(a[3],e[1])}function fa(a,e){return!(a[0]<=e[0]||a[2]>=e[2]||a[1]<=e[1]||a[3]>=e[3])}function Rl(a,e,l){let h=a[0]-e[0],C=a[1]-e[1],w=a[0]-l[0],B=a[1]-l[1];return h*B-w*C==0&&h*w<=0&&C*B<=0}function Va(a,e,l,h){return(C=[h[0]-l[0],h[1]-l[1]])[0]*(w=[e[0]-a[0],e[1]-a[1]])[1]-C[1]*w[0]!=0&&!(!vA(a,e,l,h)||!vA(l,h,a,e));var C,w}function Oo(a,e,l){for(let h of l)for(let C=0;C(C=a)[1]!=(B=F[T+1])[1]>C[1]&&C[0]<(B[0]-w[0])*(C[1]-w[1])/(B[1]-w[1])+w[0]&&(h=!h)}var C,w,B;return h}function yc(a,e){for(let l of e)if(Is(a,l))return!0;return!1}function Wo(a,e){for(let l of a)if(!Is(l,e))return!1;for(let l=0;l0&&F<0||B<0&&F>0}function Jo(a,e,l){let h=[];for(let C=0;Cl[2]){let C=.5*h,w=a[0]-l[0]>C?-h:l[0]-a[0]>C?h:0;w===0&&(w=a[0]-l[2]>C?-h:l[2]-a[0]>C?h:0),a[0]+=w}ur(e,a)}function Zl(a,e,l,h){let C=Math.pow(2,h.z)*Kn,w=[h.x*Kn,h.y*Kn],B=[];for(let F of a)for(let T of F){let Z=[T.x+w[0],T.y+w[1]];Da(Z,e,l,C),B.push(Z)}return B}function wA(a,e,l,h){let C=Math.pow(2,h.z)*Kn,w=[h.x*Kn,h.y*Kn],B=[];for(let T of a){let Z=[];for(let M of T){let D=[M.x+w[0],M.y+w[1]];ur(e,D),Z.push(D)}B.push(Z)}if(e[2]-e[0]<=C/2){(F=e)[0]=F[1]=1/0,F[2]=F[3]=-1/0;for(let T of B)for(let Z of T)Da(Z,e,l,C)}var F;return B}class ao{constructor(e,l){this.type=Ke,this.geojson=e,this.geometries=l}static parse(e,l){if(e.length!==2)return l.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Rs(e[1])){let h=e[1];if(h.type==="FeatureCollection"){let C=[];for(let w of h.features){let{type:B,coordinates:F}=w.geometry;B==="Polygon"&&C.push(F),B==="MultiPolygon"&&C.push(...F)}if(C.length)return new ao(h,{type:"MultiPolygon",coordinates:C})}else if(h.type==="Feature"){let C=h.geometry.type;if(C==="Polygon"||C==="MultiPolygon")return new ao(h,h.geometry)}else if(h.type==="Polygon"||h.type==="MultiPolygon")return new ao(h,h)}return l.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(l,h){let C=[1/0,1/0,-1/0,-1/0],w=[1/0,1/0,-1/0,-1/0],B=l.canonicalID();if(h.type==="Polygon"){let F=Jo(h.coordinates,w,B),T=Zl(l.geometry(),C,w,B);if(!fa(C,w))return!1;for(let Z of T)if(!Is(Z,F))return!1}if(h.type==="MultiPolygon"){let F=Gl(h.coordinates,w,B),T=Zl(l.geometry(),C,w,B);if(!fa(C,w))return!1;for(let Z of T)if(!yc(Z,F))return!1}return!0}(e,this.geometries);if(e.geometryType()==="LineString")return function(l,h){let C=[1/0,1/0,-1/0,-1/0],w=[1/0,1/0,-1/0,-1/0],B=l.canonicalID();if(h.type==="Polygon"){let F=Jo(h.coordinates,w,B),T=wA(l.geometry(),C,w,B);if(!fa(C,w))return!1;for(let Z of T)if(!Wo(Z,F))return!1}if(h.type==="MultiPolygon"){let F=Gl(h.coordinates,w,B),T=wA(l.geometry(),C,w,B);if(!fa(C,w))return!1;for(let Z of T)if(!oo(Z,F))return!1}return!0}(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let nl=class{constructor(a=[],e=BA){if(this.data=a,this.length=this.data.length,this.compare=e,this.length>0)for(let l=(this.length>>1)-1;l>=0;l--)this._down(l)}push(a){this.data.push(a),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;let a=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),a}peek(){return this.data[0]}_up(a){let{data:e,compare:l}=this,h=e[a];for(;a>0;){let C=a-1>>1,w=e[C];if(l(h,w)>=0)break;e[a]=w,a=C}e[a]=h}_down(a){let{data:e,compare:l}=this,h=this.length>>1,C=e[a];for(;a=0)break;e[a]=B,a=w}e[a]=C}};function BA(a,e){return ae?1:0}function sl(a,e,l,h,C){_A(a,e,l,h||a.length-1,C||bc)}function _A(a,e,l,h,C){for(;h>l;){if(h-l>600){var w=h-l+1,B=e-l+1,F=Math.log(w),T=.5*Math.exp(2*F/3),Z=.5*Math.sqrt(F*T*(w-T)/w)*(B-w/2<0?-1:1);_A(a,e,Math.max(l,Math.floor(e-B*T/w+Z)),Math.min(h,Math.floor(e+(w-B)*T/w+Z)),C)}var M=a[e],D=l,J=h;for(ma(a,l,e),C(a[h],M)>0&&ma(a,l,h);D0;)J--}C(a[l],M)===0?ma(a,l,J):ma(a,++J,h),J<=e&&(l=J+1),e<=J&&(h=J-1)}}function ma(a,e,l){var h=a[e];a[e]=a[l],a[l]=h}function bc(a,e){return ae?1:0}function Xo(a,e){if(a.length<=1)return[a];let l=[],h,C;for(let w of a){let B=ol(w);B!==0&&(w.area=Math.abs(B),C===void 0&&(C=B<0),C===B<0?(h&&l.push(h),h=[w]):h.push(w))}if(h&&l.push(h),e>1)for(let w=0;w1?(Z=e[T+1][0],M=e[T+1][1]):$>0&&(Z+=D/this.kx*$,M+=J/this.ky*$)),D=this.wrap(l[0]-Z)*this.kx,J=(l[1]-M)*this.ky;let st=D*D+J*J;st180;)e-=360;return e}}function kt(a,e){return e[0]-a[0]}function zt(a){return a[1]-a[0]+1}function oe(a,e){return a[1]>=a[0]&&a[1]a[1])return[null,null];let l=zt(a);if(e){if(l===2)return[a,null];let C=Math.floor(l/2);return[[a[0],a[0]+C],[a[0]+C,a[1]]]}if(l===1)return[a,null];let h=Math.floor(l/2)-1;return[[a[0],a[0]+h],[a[0]+h+1,a[1]]]}function Me(a,e){if(!oe(e,a.length))return[1/0,1/0,-1/0,-1/0];let l=[1/0,1/0,-1/0,-1/0];for(let h=e[0];h<=e[1];++h)ur(l,a[h]);return l}function ui(a){let e=[1/0,1/0,-1/0,-1/0];for(let l of a)for(let h of l)ur(e,h);return e}function Mi(a){return a[0]!==-1/0&&a[1]!==-1/0&&a[2]!==1/0&&a[3]!==1/0}function Xi(a,e,l){if(!Mi(a)||!Mi(e))return NaN;let h=0,C=0;return a[2]e[2]&&(h=a[0]-e[2]),a[1]>e[3]&&(C=a[1]-e[3]),a[3]=h)return h;if(fa(C,w)){if(cn(a,e))return 0}else if(cn(e,a))return 0;let B=1/0;for(let F of a)for(let T=0,Z=F.length,M=Z-1;T0;){let T=B.pop();if(T[0]>=w)continue;let Z=T[1],M=e?50:100;if(zt(Z)<=M){if(!oe(Z,a.length))return NaN;if(e){let D=nr(a,Z,l,h);if(isNaN(D)||D===0)return D;w=Math.min(w,D)}else for(let D=Z[0];D<=Z[1];++D){let J=er(a[D],l,h);if(w=Math.min(w,J),w===0)return 0}}else{let D=we(Z,e);os(B,w,h,a,F,D[0]),os(B,w,h,a,F,D[1])}}return w}function Ca(a,e,l,h,C,w=1/0){let B=Math.min(w,C.distance(a[0],l[0]));if(B===0)return B;let F=new nl([[0,[0,a.length-1],[0,l.length-1]]],kt);for(;F.length>0;){let T=F.pop();if(T[0]>=B)continue;let Z=T[1],M=T[2],D=e?50:100,J=h?50:100;if(zt(Z)<=D&&zt(M)<=J){if(!oe(Z,a.length)&&oe(M,l.length))return NaN;let $;if(e&&h)$=ki(a,Z,l,M,C),B=Math.min(B,$);else if(e&&!h){let st=a.slice(Z[0],Z[1]+1);for(let ut=M[0];ut<=M[1];++ut)if($=Ii(l[ut],st,C),B=Math.min(B,$),B===0)return B}else if(!e&&h){let st=l.slice(M[0],M[1]+1);for(let ut=Z[0];ut<=Z[1];++ut)if($=Ii(a[ut],st,C),B=Math.min(B,$),B===0)return B}else $=tn(a,Z,l,M,C),B=Math.min(B,$)}else{let $=we(Z,e),st=we(M,h);Zs(F,B,C,a,l,$[0],st[0]),Zs(F,B,C,a,l,$[0],st[1]),Zs(F,B,C,a,l,$[1],st[0]),Zs(F,B,C,a,l,$[1],st[1])}}return B}function Oa(a){return a.type==="MultiPolygon"?a.coordinates.map(e=>({type:"Polygon",coordinates:e})):a.type==="MultiLineString"?a.coordinates.map(e=>({type:"LineString",coordinates:e})):a.type==="MultiPoint"?a.coordinates.map(e=>({type:"Point",coordinates:e})):[a]}class ys{constructor(e,l){this.type=le,this.geojson=e,this.geometries=l}static parse(e,l){if(e.length!==2)return l.error(`'distance' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Rs(e[1])){let h=e[1];if(h.type==="FeatureCollection")return new ys(h,h.features.map(C=>Oa(C.geometry)).flat());if(h.type==="Feature")return new ys(h,Oa(h.geometry));if("type"in h&&"coordinates"in h)return new ys(h,Oa(h))}return l.error("'distance' 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(l,h){let C=l.geometry(),w=C.flat().map(T=>so([T.x,T.y],l.canonical));if(C.length===0)return NaN;let B=new tt(w[0][1]),F=1/0;for(let T of h){switch(T.type){case"Point":F=Math.min(F,Ca(w,!1,[T.coordinates],!1,B,F));break;case"LineString":F=Math.min(F,Ca(w,!1,T.coordinates,!0,B,F));break;case"Polygon":F=Math.min(F,za(w,!1,T.coordinates,B,F))}if(F===0)return F}return F}(e,this.geometries);if(e.geometryType()==="LineString")return function(l,h){let C=l.geometry(),w=C.flat().map(T=>so([T.x,T.y],l.canonical));if(C.length===0)return NaN;let B=new tt(w[0][1]),F=1/0;for(let T of h){switch(T.type){case"Point":F=Math.min(F,Ca(w,!0,[T.coordinates],!1,B,F));break;case"LineString":F=Math.min(F,Ca(w,!0,T.coordinates,!0,B,F));break;case"Polygon":F=Math.min(F,za(w,!0,T.coordinates,B,F))}if(F===0)return F}return F}(e,this.geometries);if(e.geometryType()==="Polygon")return function(l,h){let C=l.geometry();if(C.length===0||C[0].length===0)return NaN;let w=Xo(C,0).map(T=>T.map(Z=>Z.map(M=>so([M.x,M.y],l.canonical)))),B=new tt(w[0][0][0][1]),F=1/0;for(let T of h)for(let Z of w){switch(T.type){case"Point":F=Math.min(F,za([T.coordinates],!1,Z,B,F));break;case"LineString":F=Math.min(F,za(T.coordinates,!0,Z,B,F));break;case"Polygon":F=Math.min(F,Gs(Z,T.coordinates,B,F))}if(F===0)return F}return F}(e,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}let Ao={"==":ss,"!=":$n,">":yA,"<":zo,">=":Ic,"<=":Ql,array:wn,at:Jt,boolean:wn,case:Ie,coalesce:ai,collator:bA,format:Lo,image:Eo,in:re,"index-of":_e,interpolate:Fi,"interpolate-hcl":Fi,"interpolate-lab":Fi,length:rl,let:bt,literal:io,match:Be,number:wn,"number-format":Ma,object:wn,slice:ne,step:ve,string:wn,"to-boolean":ns,"to-color":ns,"to-number":ns,"to-string":ns,var:Pt,within:ao,distance:ys};class Fn{constructor(e,l,h,C){this.name=e,this.type=l,this._evaluate=h,this.args=C}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}static parse(e,l){let h=e[0],C=Fn.definitions[h];if(!C)return l.error(`Unknown expression "${h}". If you wanted a literal array, use ["literal", [...]].`,0);let w=Array.isArray(C)?C[0]:C.type,B=Array.isArray(C)?[[C[1],C[2]]]:C.overloads,F=B.filter(([Z])=>!Array.isArray(Z)||Z.length===e.length-1),T=null;for(let[Z,M]of F){T=new ct(l.registry,jo,l.path,null,l.scope);let D=[],J=!1;for(let $=1;${return J=D,Array.isArray(J)?`(${J.map(X).join(", ")})`:`(${X(J.type)}...)`;var J}).join(" | "),M=[];for(let D=1;D{l=e?l&&jo(h):l&&h instanceof io}),!!l&&ba(a)&&SA(a,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function ba(a){if(a instanceof Fn&&(a.name==="get"&&a.args.length===1||a.name==="feature-state"||a.name==="has"&&a.args.length===1||a.name==="properties"||a.name==="geometry-type"||a.name==="id"||/^filter-/.test(a.name))||a instanceof ao||a instanceof ys)return!1;let e=!0;return a.eachChild(l=>{e&&!ba(l)&&(e=!1)}),e}function Bn(a){if(a instanceof Fn&&a.name==="feature-state")return!1;let e=!0;return a.eachChild(l=>{e&&!Bn(l)&&(e=!1)}),e}function SA(a,e){if(a instanceof Fn&&e.indexOf(a.name)>=0)return!1;let l=!0;return a.eachChild(h=>{l&&!SA(h,e)&&(l=!1)}),l}function FA(a){return{result:"success",value:a}}function qo(a){return{result:"error",value:a}}function Ln(a){return a["property-type"]==="data-driven"||a["property-type"]==="cross-faded-data-driven"}function Wa(a){return!!a.expression&&a.expression.parameters.indexOf("zoom")>-1}function va(a){return!!a.expression&&a.expression.interpolated}function dr(a){return a instanceof Number?"number":a instanceof String?"string":a instanceof Boolean?"boolean":Array.isArray(a)?"array":a===null?"null":typeof a}function Hs(a){return typeof a=="object"&&a!==null&&!Array.isArray(a)}function bs(a){return a}function Ms(a,e){let l=e.type==="color",h=a.stops&&typeof a.stops[0][0]=="object",C=h||!(h||a.property!==void 0),w=a.type||(va(e)?"exponential":"interval");if(l||e.type==="padding"){let M=l?Ui.parse:Ir.parse;(a=Ni({},a)).stops&&(a.stops=a.stops.map(D=>[D[0],M(D[1])])),a.default=M(a.default?a.default:e.default)}if(a.colorSpace&&(B=a.colorSpace)!=="rgb"&&B!=="hcl"&&B!=="lab")throw new Error(`Unknown color space: "${a.colorSpace}"`);var B;let F,T,Z;if(w==="exponential")F=wa;else if(w==="interval")F=Ns;else if(w==="categorical"){F=vs,T=Object.create(null);for(let M of a.stops)T[M[0]]=M[1];Z=typeof a.stops[0][0]}else{if(w!=="identity")throw new Error(`Unknown function type "${w}"`);F=ws}if(h){let M={},D=[];for(let st=0;stst[0]),evaluate:({zoom:st},ut)=>wa({stops:J,base:a.base},e,st).evaluate(st,ut)}}if(C){let M=w==="exponential"?{name:"exponential",base:a.base!==void 0?a.base:1}:null;return{kind:"camera",interpolationType:M,interpolationFactor:Fi.interpolationFactor.bind(void 0,M),zoomStops:a.stops.map(D=>D[0]),evaluate:({zoom:D})=>F(a,e,D,T,Z)}}return{kind:"source",evaluate(M,D){let J=D&&D.properties?D.properties[a.property]:void 0;return J===void 0?as(a.default,e.default):F(a,e,J,T,Z)}}}function as(a,e,l){return a!==void 0?a:e!==void 0?e:l!==void 0?l:void 0}function vs(a,e,l,h,C){return as(typeof l===C?h[l]:void 0,a.default,e.default)}function Ns(a,e,l){if(dr(l)!=="number")return as(a.default,e.default);let h=a.stops.length;if(h===1||l<=a.stops[0][0])return a.stops[0][1];if(l>=a.stops[h-1][0])return a.stops[h-1][1];let C=ye(a.stops.map(w=>w[0]),l);return a.stops[C][1]}function wa(a,e,l){let h=a.base!==void 0?a.base:1;if(dr(l)!=="number")return as(a.default,e.default);let C=a.stops.length;if(C===1||l<=a.stops[0][0])return a.stops[0][1];if(l>=a.stops[C-1][0])return a.stops[C-1][1];let w=ye(a.stops.map(M=>M[0]),l),B=function(M,D,J,$){let st=$-J,ut=M-J;return st===0?0:D===1?ut/st:(Math.pow(D,ut)-1)/(Math.pow(D,st)-1)}(l,h,a.stops[w][0],a.stops[w+1][0]),F=a.stops[w][1],T=a.stops[w+1][1],Z=ci[e.type]||bs;return typeof F.evaluate=="function"?{evaluate(...M){let D=F.evaluate.apply(void 0,M),J=T.evaluate.apply(void 0,M);if(D!==void 0&&J!==void 0)return Z(D,J,B,a.colorSpace)}}:Z(F,T,B,a.colorSpace)}function ws(a,e,l){switch(e.type){case"color":l=Ui.parse(l);break;case"formatted":l=$r.fromString(l.toString());break;case"resolvedImage":l=An.fromString(l.toString());break;case"padding":l=Ir.parse(l);break;default:dr(l)===e.type||e.type==="enum"&&e.values[l]||(l=void 0)}return as(l,a.default,e.default)}Fn.register(Ao,{error:[{kind:"error"},[gi],(a,[e])=>{throw new ir(e.evaluate(a))}],typeof:[gi,[ii],(a,[e])=>X(Or(e.evaluate(a)))],"to-rgba":[W(le,4),[or],(a,[e])=>{let[l,h,C,w]=e.evaluate(a).rgb;return[255*l,255*h,255*C,w]}],rgb:[or,[le,le,le],Ia],rgba:[or,[le,le,le,le],Ia],has:{type:Ke,overloads:[[[gi],(a,[e])=>kn(e.evaluate(a),a.properties())],[[gi,Ki],(a,[e,l])=>kn(e.evaluate(a),l.evaluate(a))]]},get:{type:ii,overloads:[[[gi],(a,[e])=>ya(e.evaluate(a),a.properties())],[[gi,Ki],(a,[e,l])=>ya(e.evaluate(a),l.evaluate(a))]]},"feature-state":[ii,[gi],(a,[e])=>ya(e.evaluate(a),a.featureState||{})],properties:[Ki,[],a=>a.properties()],"geometry-type":[gi,[],a=>a.geometryType()],id:[ii,[],a=>a.id()],zoom:[le,[],a=>a.globals.zoom],"heatmap-density":[le,[],a=>a.globals.heatmapDensity||0],"line-progress":[le,[],a=>a.globals.lineProgress||0],accumulated:[ii,[],a=>a.globals.accumulated===void 0?null:a.globals.accumulated],"+":[le,Ps(le),(a,e)=>{let l=0;for(let h of e)l+=h.evaluate(a);return l}],"*":[le,Ps(le),(a,e)=>{let l=1;for(let h of e)l*=h.evaluate(a);return l}],"-":{type:le,overloads:[[[le,le],(a,[e,l])=>e.evaluate(a)-l.evaluate(a)],[[le],(a,[e])=>-e.evaluate(a)]]},"/":[le,[le,le],(a,[e,l])=>e.evaluate(a)/l.evaluate(a)],"%":[le,[le,le],(a,[e,l])=>e.evaluate(a)%l.evaluate(a)],ln2:[le,[],()=>Math.LN2],pi:[le,[],()=>Math.PI],e:[le,[],()=>Math.E],"^":[le,[le,le],(a,[e,l])=>Math.pow(e.evaluate(a),l.evaluate(a))],sqrt:[le,[le],(a,[e])=>Math.sqrt(e.evaluate(a))],log10:[le,[le],(a,[e])=>Math.log(e.evaluate(a))/Math.LN10],ln:[le,[le],(a,[e])=>Math.log(e.evaluate(a))],log2:[le,[le],(a,[e])=>Math.log(e.evaluate(a))/Math.LN2],sin:[le,[le],(a,[e])=>Math.sin(e.evaluate(a))],cos:[le,[le],(a,[e])=>Math.cos(e.evaluate(a))],tan:[le,[le],(a,[e])=>Math.tan(e.evaluate(a))],asin:[le,[le],(a,[e])=>Math.asin(e.evaluate(a))],acos:[le,[le],(a,[e])=>Math.acos(e.evaluate(a))],atan:[le,[le],(a,[e])=>Math.atan(e.evaluate(a))],min:[le,Ps(le),(a,e)=>Math.min(...e.map(l=>l.evaluate(a)))],max:[le,Ps(le),(a,e)=>Math.max(...e.map(l=>l.evaluate(a)))],abs:[le,[le],(a,[e])=>Math.abs(e.evaluate(a))],round:[le,[le],(a,[e])=>{let l=e.evaluate(a);return l<0?-Math.round(-l):Math.round(l)}],floor:[le,[le],(a,[e])=>Math.floor(e.evaluate(a))],ceil:[le,[le],(a,[e])=>Math.ceil(e.evaluate(a))],"filter-==":[Ke,[gi,ii],(a,[e,l])=>a.properties()[e.value]===l.value],"filter-id-==":[Ke,[ii],(a,[e])=>a.id()===e.value],"filter-type-==":[Ke,[gi],(a,[e])=>a.geometryType()===e.value],"filter-<":[Ke,[gi,ii],(a,[e,l])=>{let h=a.properties()[e.value],C=l.value;return typeof h==typeof C&&h{let l=a.id(),h=e.value;return typeof l==typeof h&&l":[Ke,[gi,ii],(a,[e,l])=>{let h=a.properties()[e.value],C=l.value;return typeof h==typeof C&&h>C}],"filter-id->":[Ke,[ii],(a,[e])=>{let l=a.id(),h=e.value;return typeof l==typeof h&&l>h}],"filter-<=":[Ke,[gi,ii],(a,[e,l])=>{let h=a.properties()[e.value],C=l.value;return typeof h==typeof C&&h<=C}],"filter-id-<=":[Ke,[ii],(a,[e])=>{let l=a.id(),h=e.value;return typeof l==typeof h&&l<=h}],"filter->=":[Ke,[gi,ii],(a,[e,l])=>{let h=a.properties()[e.value],C=l.value;return typeof h==typeof C&&h>=C}],"filter-id->=":[Ke,[ii],(a,[e])=>{let l=a.id(),h=e.value;return typeof l==typeof h&&l>=h}],"filter-has":[Ke,[ii],(a,[e])=>e.value in a.properties()],"filter-has-id":[Ke,[],a=>a.id()!==null&&a.id()!==void 0],"filter-type-in":[Ke,[W(gi)],(a,[e])=>e.value.indexOf(a.geometryType())>=0],"filter-id-in":[Ke,[W(ii)],(a,[e])=>e.value.indexOf(a.id())>=0],"filter-in-small":[Ke,[gi,W(ii)],(a,[e,l])=>l.value.indexOf(a.properties()[e.value])>=0],"filter-in-large":[Ke,[gi,W(ii)],(a,[e,l])=>function(h,C,w,B){for(;w<=B;){let F=w+B>>1;if(C[F]===h)return!0;C[F]>h?B=F-1:w=F+1}return!1}(a.properties()[e.value],l.value,0,l.value.length-1)],all:{type:Ke,overloads:[[[Ke,Ke],(a,[e,l])=>e.evaluate(a)&&l.evaluate(a)],[Ps(Ke),(a,e)=>{for(let l of e)if(!l.evaluate(a))return!1;return!0}]]},any:{type:Ke,overloads:[[[Ke,Ke],(a,[e,l])=>e.evaluate(a)||l.evaluate(a)],[Ps(Ke),(a,e)=>{for(let l of e)if(l.evaluate(a))return!0;return!1}]]},"!":[Ke,[Ke],(a,[e])=>!e.evaluate(a)],"is-supported-script":[Ke,[gi],(a,[e])=>{let l=a.globals&&a.globals.isSupportedScript;return!l||l(e.evaluate(a))}],upcase:[gi,[gi],(a,[e])=>e.evaluate(a).toUpperCase()],downcase:[gi,[gi],(a,[e])=>e.evaluate(a).toLowerCase()],concat:[gi,Ps(ii),(a,e)=>e.map(l=>vn(l.evaluate(a))).join("")],"resolved-locale":[gi,[br],(a,[e])=>e.evaluate(a).resolvedLocale()]});class $o{constructor(e,l){var h;this.expression=e,this._warningHistory={},this._evaluator=new Ct,this._defaultValue=l?(h=l).type==="color"&&Hs(h.default)?new Ui(0,0,0,0):h.type==="color"?Ui.parse(h.default)||null:h.type==="padding"?Ir.parse(h.default)||null:h.type==="variableAnchorOffsetCollection"?pn.parse(h.default)||null:h.default===void 0?null:h.default:null,this._enumValues=l&&l.type==="enum"?l.values:null}evaluateWithoutErrorHandling(e,l,h,C,w,B){return this._evaluator.globals=e,this._evaluator.feature=l,this._evaluator.featureState=h,this._evaluator.canonical=C,this._evaluator.availableImages=w||null,this._evaluator.formattedSection=B,this.expression.evaluate(this._evaluator)}evaluate(e,l,h,C,w,B){this._evaluator.globals=e,this._evaluator.feature=l||null,this._evaluator.featureState=h||null,this._evaluator.canonical=C,this._evaluator.availableImages=w||null,this._evaluator.formattedSection=B||null;try{let F=this.expression.evaluate(this._evaluator);if(F==null||typeof F=="number"&&F!=F)return this._defaultValue;if(this._enumValues&&!(F in this._enumValues))throw new ir(`Expected value to be one of ${Object.keys(this._enumValues).map(T=>JSON.stringify(T)).join(", ")}, but found ${JSON.stringify(F)} instead.`);return F}catch(F){return this._warningHistory[F.message]||(this._warningHistory[F.message]=!0,typeof console<"u"&&console.warn(F.message)),this._defaultValue}}}function ta(a){return Array.isArray(a)&&a.length>0&&typeof a[0]=="string"&&a[0]in Ao}function As(a,e){let l=new ct(Ao,jo,[],e?function(C){let w={color:or,string:gi,number:le,enum:gi,boolean:Ke,formatted:Ji,padding:wr,resolvedImage:ar,variableAnchorOffsetCollection:wt};return C.type==="array"?W(w[C.value]||ii,C.length):w[C.type]}(e):void 0),h=l.parse(a,void 0,void 0,void 0,e&&e.type==="string"?{typeAnnotation:"coerce"}:void 0);return h?FA(new $o(h,e)):qo(l.errors)}class Bs{constructor(e,l){this.kind=e,this._styleExpression=l,this.isStateDependent=e!=="constant"&&!Bn(l.expression)}evaluateWithoutErrorHandling(e,l,h,C,w,B){return this._styleExpression.evaluateWithoutErrorHandling(e,l,h,C,w,B)}evaluate(e,l,h,C,w,B){return this._styleExpression.evaluate(e,l,h,C,w,B)}}class lo{constructor(e,l,h,C){this.kind=e,this.zoomStops=h,this._styleExpression=l,this.isStateDependent=e!=="camera"&&!Bn(l.expression),this.interpolationType=C}evaluateWithoutErrorHandling(e,l,h,C,w,B){return this._styleExpression.evaluateWithoutErrorHandling(e,l,h,C,w,B)}evaluate(e,l,h,C,w,B){return this._styleExpression.evaluate(e,l,h,C,w,B)}interpolationFactor(e,l,h){return this.interpolationType?Fi.interpolationFactor(this.interpolationType,e,l,h):0}}function Ba(a,e){let l=As(a,e);if(l.result==="error")return l;let h=l.value.expression,C=ba(h);if(!C&&!Ln(e))return qo([new Di("","data expressions not supported")]);let w=SA(h,["zoom"]);if(!w&&!Wa(e))return qo([new Di("","zoom expressions not supported")]);let B=To(h);return B||w?B instanceof Di?qo([B]):B instanceof Fi&&!va(e)?qo([new Di("",'"interpolate" expressions cannot be used with this property')]):FA(B?new lo(C?"camera":"composite",l.value,B.labels,B instanceof Fi?B.interpolation:void 0):new Bs(C?"constant":"source",l.value)):qo([new Di("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class ea{constructor(e,l){this._parameters=e,this._specification=l,Ni(this,Ms(this._parameters,this._specification))}static deserialize(e){return new ea(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function To(a){let e=null;if(a instanceof bt)e=To(a.result);else if(a instanceof ai){for(let l of a.args)if(e=To(l),e)break}else(a instanceof ve||a instanceof Fi)&&a.input instanceof Fn&&a.input.name==="zoom"&&(e=a);return e instanceof Di||a.eachChild(l=>{let h=To(l);h instanceof Di?e=h:!e&&h?e=new Di("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&h&&e!==h&&(e=new Di("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),e}function _s(a){if(a===!0||a===!1)return!0;if(!Array.isArray(a)||a.length===0)return!1;switch(a[0]){case"has":return a.length>=2&&a[1]!=="$id"&&a[1]!=="$type";case"in":return a.length>=3&&(typeof a[1]!="string"||Array.isArray(a[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return a.length!==3||Array.isArray(a[1])||Array.isArray(a[2]);case"any":case"all":for(let e of a.slice(1))if(!_s(e)&&typeof e!="boolean")return!1;return!0;default:return!0}}let _a={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Vr(a){if(a==null)return{filter:()=>!0,needGeometry:!1};_s(a)||(a=_r(a));let e=As(a,_a);if(e.result==="error")throw new Error(e.value.map(l=>`${l.key}: ${l.message}`).join(", "));return{filter:(l,h,C)=>e.value.evaluate(l,h,{},C),needGeometry:kr(a)}}function xs(a,e){return ae?1:0}function kr(a){if(!Array.isArray(a))return!1;if(a[0]==="within"||a[0]==="distance")return!0;for(let e=1;e"||e==="<="||e===">="?en(a[1],a[2],e):e==="any"?(l=a.slice(1),["any"].concat(l.map(_r))):e==="all"?["all"].concat(a.slice(1).map(_r)):e==="none"?["all"].concat(a.slice(1).map(_r).map(Ss)):e==="in"?Wr(a[1],a.slice(2)):e==="!in"?Ss(Wr(a[1],a.slice(2))):e==="has"?co(a[1]):e!=="!has"||Ss(co(a[1]));var l}function en(a,e,l){switch(a){case"$type":return[`filter-type-${l}`,e];case"$id":return[`filter-id-${l}`,e];default:return[`filter-${l}`,a,e]}}function Wr(a,e){if(e.length===0)return!1;switch(a){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(l=>typeof l!=typeof e[0])?["filter-in-large",a,["literal",e.sort(xs)]]:["filter-in-small",a,["literal",e]]}}function co(a){switch(a){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",a]}}function Ss(a){return["!",a]}function xa(a){let e=typeof a;if(e==="number"||e==="boolean"||e==="string"||a==null)return JSON.stringify(a);if(Array.isArray(a)){let C="[";for(let w of a)C+=`${xa(w)},`;return`${C}]`}let l=Object.keys(a).sort(),h="{";for(let C=0;Ch.maximum?[new fe(e,l,`${l} is greater than the maximum value ${h.maximum}`)]:[]}function Al(a){let e=a.valueSpec,l=Qr(a.value.type),h,C,w,B={},F=l!=="categorical"&&a.value.property===void 0,T=!F,Z=dr(a.value.stops)==="array"&&dr(a.value.stops[0])==="array"&&dr(a.value.stops[0][0])==="object",M=ts({key:a.key,value:a.value,valueSpec:a.styleSpec.function,validateSpec:a.validateSpec,style:a.style,styleSpec:a.styleSpec,objectElementValidators:{stops:function($){if(l==="identity")return[new fe($.key,$.value,'identity function may not have a "stops" property')];let st=[],ut=$.value;return st=st.concat(al({key:$.key,value:ut,valueSpec:$.valueSpec,validateSpec:$.validateSpec,style:$.style,styleSpec:$.styleSpec,arrayElementValidator:D})),dr(ut)==="array"&&ut.length===0&&st.push(new fe($.key,ut,"array must have at least one stop")),st},default:function($){return $.validateSpec({key:$.key,value:$.value,valueSpec:e,validateSpec:$.validateSpec,style:$.style,styleSpec:$.styleSpec})}}});return l==="identity"&&F&&M.push(new fe(a.key,a.value,'missing required property "property"')),l==="identity"||a.value.stops||M.push(new fe(a.key,a.value,'missing required property "stops"')),l==="exponential"&&a.valueSpec.expression&&!va(a.valueSpec)&&M.push(new fe(a.key,a.value,"exponential functions not supported")),a.styleSpec.$version>=8&&(T&&!Ln(a.valueSpec)?M.push(new fe(a.key,a.value,"property functions not supported")):F&&!Wa(a.valueSpec)&&M.push(new fe(a.key,a.value,"zoom functions not supported"))),l!=="categorical"&&!Z||a.value.property!==void 0||M.push(new fe(a.key,a.value,'"property" property is required')),M;function D($){let st=[],ut=$.value,Ft=$.key;if(dr(ut)!=="array")return[new fe(Ft,ut,`array expected, ${dr(ut)} found`)];if(ut.length!==2)return[new fe(Ft,ut,`array length 2 expected, length ${ut.length} found`)];if(Z){if(dr(ut[0])!=="object")return[new fe(Ft,ut,`object expected, ${dr(ut[0])} found`)];if(ut[0].zoom===void 0)return[new fe(Ft,ut,"object stop key must have zoom")];if(ut[0].value===void 0)return[new fe(Ft,ut,"object stop key must have value")];if(w&&w>Qr(ut[0].zoom))return[new fe(Ft,ut[0].zoom,"stop zoom values must appear in ascending order")];Qr(ut[0].zoom)!==w&&(w=Qr(ut[0].zoom),C=void 0,B={}),st=st.concat(ts({key:`${Ft}[0]`,value:ut[0],valueSpec:{zoom:{}},validateSpec:$.validateSpec,style:$.style,styleSpec:$.styleSpec,objectElementValidators:{zoom:LA,value:J}}))}else st=st.concat(J({key:`${Ft}[0]`,value:ut[0],valueSpec:{},validateSpec:$.validateSpec,style:$.style,styleSpec:$.styleSpec},ut));return ta(Sa(ut[1]))?st.concat([new fe(`${Ft}[1]`,ut[1],"expressions are not allowed in function stops.")]):st.concat($.validateSpec({key:`${Ft}[1]`,value:ut[1],valueSpec:e,validateSpec:$.validateSpec,style:$.style,styleSpec:$.styleSpec}))}function J($,st){let ut=dr($.value),Ft=Qr($.value),Gt=$.value!==null?$.value:st;if(h){if(ut!==h)return[new fe($.key,Gt,`${ut} stop domain type must match previous stop domain type ${h}`)]}else h=ut;if(ut!=="number"&&ut!=="string"&&ut!=="boolean")return[new fe($.key,Gt,"stop domain value must be a number, string, or boolean")];if(ut!=="number"&&l!=="categorical"){let Ae=`number expected, ${ut} found`;return Ln(e)&&l===void 0&&(Ae+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new fe($.key,Gt,Ae)]}return l!=="categorical"||ut!=="number"||isFinite(Ft)&&Math.floor(Ft)===Ft?l!=="categorical"&&ut==="number"&&C!==void 0&&Ftnew fe(`${a.key}${h.key}`,a.value,h.message));let l=e.value.expression||e.value._styleExpression.expression;if(a.expressionContext==="property"&&a.propertyKey==="text-font"&&!l.outputDefined())return[new fe(a.key,a.value,`Invalid data expression for "${a.propertyKey}". Output values must be contained as literals within the expression.`)];if(a.expressionContext==="property"&&a.propertyType==="layout"&&!Bn(l))return[new fe(a.key,a.value,'"feature-state" data expressions are not supported with layout properties.')];if(a.expressionContext==="filter"&&!Bn(l))return[new fe(a.key,a.value,'"feature-state" data expressions are not supported with filters.')];if(a.expressionContext&&a.expressionContext.indexOf("cluster")===0){if(!SA(l,["zoom","feature-state"]))return[new fe(a.key,a.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(a.expressionContext==="cluster-initial"&&!ba(l))return[new fe(a.key,a.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function En(a){let e=a.key,l=a.value,h=a.valueSpec,C=[];return Array.isArray(h.values)?h.values.indexOf(Qr(l))===-1&&C.push(new fe(e,l,`expected one of [${h.values.join(", ")}], ${JSON.stringify(l)} found`)):Object.keys(h.values).indexOf(Qr(l))===-1&&C.push(new fe(e,l,`expected one of [${Object.keys(h.values).join(", ")}], ${JSON.stringify(l)} found`)),C}function zn(a){return _s(Sa(a.value))?Uo(Ni({},a,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Fa(a)}function Fa(a){let e=a.value,l=a.key;if(dr(e)!=="array")return[new fe(l,e,`array expected, ${dr(e)} found`)];let h=a.styleSpec,C,w=[];if(e.length<1)return[new fe(l,e,"filter array must have at least 1 element")];switch(w=w.concat(En({key:`${l}[0]`,value:e[0],valueSpec:h.filter_operator,style:a.style,styleSpec:a.styleSpec})),Qr(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&Qr(e[1])==="$type"&&w.push(new fe(l,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":e.length!==3&&w.push(new fe(l,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(C=dr(e[1]),C!=="string"&&w.push(new fe(`${l}[1]`,e[1],`string expected, ${C} found`)));for(let B=2;B{Z in l&&e.push(new fe(h,l[Z],`"${Z}" is prohibited for ref layers`))}),C.layers.forEach(Z=>{Qr(Z.id)===F&&(T=Z)}),T?T.ref?e.push(new fe(h,l.ref,"ref cannot reference another ref layer")):B=Qr(T.type):e.push(new fe(h,l.ref,`ref layer "${F}" not found`))}else if(B!=="background")if(l.source){let T=C.sources&&C.sources[l.source],Z=T&&Qr(T.type);T?Z==="vector"&&B==="raster"?e.push(new fe(h,l.source,`layer "${l.id}" requires a raster source`)):Z!=="raster-dem"&&B==="hillshade"?e.push(new fe(h,l.source,`layer "${l.id}" requires a raster-dem source`)):Z==="raster"&&B!=="raster"?e.push(new fe(h,l.source,`layer "${l.id}" requires a vector source`)):Z!=="vector"||l["source-layer"]?Z==="raster-dem"&&B!=="hillshade"?e.push(new fe(h,l.source,"raster-dem source can only be used with layer type 'hillshade'.")):B!=="line"||!l.paint||!l.paint["line-gradient"]||Z==="geojson"&&T.lineMetrics||e.push(new fe(h,l,`layer "${l.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new fe(h,l,`layer "${l.id}" must specify a "source-layer"`)):e.push(new fe(h,l.source,`source "${l.source}" not found`))}else e.push(new fe(h,l,'missing required property "source"'));return e=e.concat(ts({key:h,value:l,valueSpec:w.layer,style:a.style,styleSpec:a.styleSpec,validateSpec:a.validateSpec,objectElementValidators:{"*":()=>[],type:()=>a.validateSpec({key:`${h}.type`,value:l.type,valueSpec:w.layer.type,style:a.style,styleSpec:a.styleSpec,validateSpec:a.validateSpec,object:l,objectKey:"type"}),filter:zn,layout:T=>ts({layer:l,key:T.key,value:T.value,style:T.style,styleSpec:T.styleSpec,validateSpec:T.validateSpec,objectElementValidators:{"*":Z=>TA(Ni({layerType:B},Z))}}),paint:T=>ts({layer:l,key:T.key,value:T.value,style:T.style,styleSpec:T.styleSpec,validateSpec:T.validateSpec,objectElementValidators:{"*":Z=>Pl(Ni({layerType:B},Z))}})}})),e}function uo(a){let e=a.value,l=a.key,h=dr(e);return h!=="string"?[new fe(l,e,`string expected, ${h} found`)]:[]}let Hl={promoteId:function({key:a,value:e}){if(dr(e)==="string")return uo({key:a,value:e});{let l=[];for(let h in e)l.push(...uo({key:`${a}.${h}`,value:e[h]}));return l}}};function Ml(a){let e=a.value,l=a.key,h=a.styleSpec,C=a.style,w=a.validateSpec;if(!e.type)return[new fe(l,e,'"type" is required')];let B=Qr(e.type),F;switch(B){case"vector":case"raster":return F=ts({key:l,value:e,valueSpec:h[`source_${B.replace("-","_")}`],style:a.style,styleSpec:h,objectElementValidators:Hl,validateSpec:w}),F;case"raster-dem":return F=function(T){var Z;let M=(Z=T.sourceName)!==null&&Z!==void 0?Z:"",D=T.value,J=T.styleSpec,$=J.source_raster_dem,st=T.style,ut=[],Ft=dr(D);if(D===void 0)return ut;if(Ft!=="object")return ut.push(new fe("source_raster_dem",D,`object expected, ${Ft} found`)),ut;let Gt=Qr(D.encoding)==="custom",Ae=["redFactor","greenFactor","blueFactor","baseShift"],Ot=T.value.encoding?`"${T.value.encoding}"`:"Default";for(let te in D)!Gt&&Ae.includes(te)?ut.push(new fe(te,D[te],`In "${M}": "${te}" is only valid when "encoding" is set to "custom". ${Ot} encoding found`)):$[te]?ut=ut.concat(T.validateSpec({key:te,value:D[te],valueSpec:$[te],validateSpec:T.validateSpec,style:st,styleSpec:J})):ut.push(new fe(te,D[te],`unknown property "${te}"`));return ut}({sourceName:l,value:e,style:a.style,styleSpec:h,validateSpec:w}),F;case"geojson":if(F=ts({key:l,value:e,valueSpec:h.source_geojson,style:C,styleSpec:h,validateSpec:w,objectElementValidators:Hl}),e.cluster)for(let T in e.clusterProperties){let[Z,M]=e.clusterProperties[T],D=typeof Z=="string"?[Z,["accumulated"],["get",T]]:Z;F.push(...Uo({key:`${l}.${T}.map`,value:M,validateSpec:w,expressionContext:"cluster-map"})),F.push(...Uo({key:`${l}.${T}.reduce`,value:D,validateSpec:w,expressionContext:"cluster-reduce"}))}return F;case"video":return ts({key:l,value:e,valueSpec:h.source_video,style:C,validateSpec:w,styleSpec:h});case"image":return ts({key:l,value:e,valueSpec:h.source_image,style:C,validateSpec:w,styleSpec:h});case"canvas":return[new fe(l,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return En({key:`${l}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:C,validateSpec:w,styleSpec:h})}}function ll(a){let e=a.value,l=a.styleSpec,h=l.light,C=a.style,w=[],B=dr(e);if(e===void 0)return w;if(B!=="object")return w=w.concat([new fe("light",e,`object expected, ${B} found`)]),w;for(let F in e){let T=F.match(/^(.*)-transition$/);w=w.concat(T&&h[T[1]]&&h[T[1]].transition?a.validateSpec({key:F,value:e[F],valueSpec:l.transition,validateSpec:a.validateSpec,style:C,styleSpec:l}):h[F]?a.validateSpec({key:F,value:e[F],valueSpec:h[F],validateSpec:a.validateSpec,style:C,styleSpec:l}):[new fe(F,e[F],`unknown property "${F}"`)])}return w}function cl(a){let e=a.value,l=a.styleSpec,h=l.sky,C=a.style,w=dr(e);if(e===void 0)return[];if(w!=="object")return[new fe("sky",e,`object expected, ${w} found`)];let B=[];for(let F in e)B=B.concat(h[F]?a.validateSpec({key:F,value:e[F],valueSpec:h[F],style:C,styleSpec:l}):[new fe(F,e[F],`unknown property "${F}"`)]);return B}function ul(a){let e=a.value,l=a.styleSpec,h=l.terrain,C=a.style,w=[],B=dr(e);if(e===void 0)return w;if(B!=="object")return w=w.concat([new fe("terrain",e,`object expected, ${B} found`)]),w;for(let F in e)w=w.concat(h[F]?a.validateSpec({key:F,value:e[F],valueSpec:h[F],validateSpec:a.validateSpec,style:C,styleSpec:l}):[new fe(F,e[F],`unknown property "${F}"`)]);return w}function wc(a){let e=[],l=a.value,h=a.key;if(Array.isArray(l)){let C=[],w=[];for(let B in l)l[B].id&&C.includes(l[B].id)&&e.push(new fe(h,l,`all the sprites' ids must be unique, but ${l[B].id} is duplicated`)),C.push(l[B].id),l[B].url&&w.includes(l[B].url)&&e.push(new fe(h,l,`all the sprites' URLs must be unique, but ${l[B].url} is duplicated`)),w.push(l[B].url),e=e.concat(ts({key:`${h}[${B}]`,value:l[B],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:a.validateSpec}));return e}return uo({key:h,value:l})}let Bc={"*":()=>[],array:al,boolean:function(a){let e=a.value,l=a.key,h=dr(e);return h!=="boolean"?[new fe(l,e,`boolean expected, ${h} found`)]:[]},number:LA,color:function(a){let e=a.key,l=a.value,h=dr(l);return h!=="string"?[new fe(e,l,`color expected, ${h} found`)]:Ui.parse(String(l))?[]:[new fe(e,l,`color expected, "${l}" found`)]},constants:vc,enum:En,filter:zn,function:Al,layer:UA,object:ts,source:Ml,light:ll,sky:cl,terrain:ul,projection:function(a){let e=a.value,l=a.styleSpec,h=l.projection,C=a.style,w=dr(e);if(e===void 0)return[];if(w!=="object")return[new fe("projection",e,`object expected, ${w} found`)];let B=[];for(let F in e)B=B.concat(h[F]?a.validateSpec({key:F,value:e[F],valueSpec:h[F],style:C,styleSpec:l}):[new fe(F,e[F],`unknown property "${F}"`)]);return B},string:uo,formatted:function(a){return uo(a).length===0?[]:Uo(a)},resolvedImage:function(a){return uo(a).length===0?[]:Uo(a)},padding:function(a){let e=a.key,l=a.value;if(dr(l)==="array"){if(l.length<1||l.length>4)return[new fe(e,l,`padding requires 1 to 4 values; ${l.length} values found`)];let h={type:"number"},C=[];for(let w=0;w[]}})),a.constants&&(l=l.concat(vc({key:"constants",value:a.constants,style:a,styleSpec:e,validateSpec:QA}))),_c(l)}function ho(a){return function(e){return a({...e,validateSpec:QA})}}function _c(a){return[].concat(a).sort((e,l)=>e.line-l.line)}function go(a){return function(...e){return _c(a.apply(this,e))}}Vs.source=go(ho(Ml)),Vs.sprite=go(ho(wc)),Vs.glyphs=go(ho(lu)),Vs.light=go(ho(ll)),Vs.sky=go(ho(cl)),Vs.terrain=go(ho(ul)),Vs.layer=go(ho(UA)),Vs.filter=go(ho(zn)),Vs.paintProperty=go(ho(Pl)),Vs.layoutProperty=go(ho(TA));let po=Vs,xc=po.light,Ja=po.sky,vh=po.paintProperty,wh=po.layoutProperty;function Nl(a,e){let l=!1;if(e&&e.length)for(let h of e)a.fire(new Je(new Error(h.message))),l=!0;return l}class RA{constructor(e,l,h){let C=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;let B=new Int32Array(this.arrayBuffer);e=B[0],this.d=(l=B[1])+2*(h=B[2]);for(let T=0;T=D[st+0]&&C>=D[st+1])?(F[$]=!0,B.push(M[$])):F[$]=!1}}}}_forEachCell(e,l,h,C,w,B,F,T){let Z=this._convertToCellCoord(e),M=this._convertToCellCoord(l),D=this._convertToCellCoord(h),J=this._convertToCellCoord(C);for(let $=Z;$<=D;$++)for(let st=M;st<=J;st++){let ut=this.d*st+$;if((!T||T(this._convertFromCellCoord($),this._convertFromCellCoord(st),this._convertFromCellCoord($+1),this._convertFromCellCoord(st+1)))&&w.call(this,e,l,h,C,ut,B,F,T))return}}_convertFromCellCoord(e){return(e-this.padding)/this.scale}_convertToCellCoord(e){return Math.max(0,Math.min(this.d-1,Math.floor(e*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let e=this.cells,l=3+this.cells.length+1+1,h=0;for(let B=0;B=0)continue;let B=a[w];C[w]=Qo[l].shallow.indexOf(w)>=0?B:Fs(B,e)}a instanceof Error&&(C.message=a.message)}if(C.$name)throw new Error("$name property is reserved for worker serialization logic.");return l!=="Object"&&(C.$name=l),C}function Go(a){if(Ds(a))return a;if(Array.isArray(a))return a.map(Go);if(typeof a!="object")throw new Error("can't deserialize object of type "+typeof a);let e=Ro(a)||"Object";if(!Qo[e])throw new Error(`can't deserialize unregistered class ${e}`);let{klass:l}=Qo[e];if(!l)throw new Error(`can't deserialize unregistered class ${e}`);if(l.deserialize)return l.deserialize(a);let h=Object.create(l.prototype);for(let C of Object.keys(a)){if(C==="$name")continue;let w=a[C];h[C]=Qo[e].shallow.indexOf(C)>=0?w:Go(w)}return h}class Sc{constructor(){this.first=!0}update(e,l){let h=Math.floor(e);return this.first?(this.first=!1,this.lastIntegerZoom=h,this.lastIntegerZoomTime=0,this.lastZoom=e,this.lastFloorZoom=h,!0):(this.lastFloorZoom>h?(this.lastIntegerZoom=h+1,this.lastIntegerZoomTime=l):this.lastFloorZooma>=128&&a<=255,Arabic:a=>a>=1536&&a<=1791,"Arabic Supplement":a=>a>=1872&&a<=1919,"Arabic Extended-A":a=>a>=2208&&a<=2303,"Hangul Jamo":a=>a>=4352&&a<=4607,"Unified Canadian Aboriginal Syllabics":a=>a>=5120&&a<=5759,Khmer:a=>a>=6016&&a<=6143,"Unified Canadian Aboriginal Syllabics Extended":a=>a>=6320&&a<=6399,"General Punctuation":a=>a>=8192&&a<=8303,"Letterlike Symbols":a=>a>=8448&&a<=8527,"Number Forms":a=>a>=8528&&a<=8591,"Miscellaneous Technical":a=>a>=8960&&a<=9215,"Control Pictures":a=>a>=9216&&a<=9279,"Optical Character Recognition":a=>a>=9280&&a<=9311,"Enclosed Alphanumerics":a=>a>=9312&&a<=9471,"Geometric Shapes":a=>a>=9632&&a<=9727,"Miscellaneous Symbols":a=>a>=9728&&a<=9983,"Miscellaneous Symbols and Arrows":a=>a>=11008&&a<=11263,"CJK Radicals Supplement":a=>a>=11904&&a<=12031,"Kangxi Radicals":a=>a>=12032&&a<=12255,"Ideographic Description Characters":a=>a>=12272&&a<=12287,"CJK Symbols and Punctuation":a=>a>=12288&&a<=12351,Hiragana:a=>a>=12352&&a<=12447,Katakana:a=>a>=12448&&a<=12543,Bopomofo:a=>a>=12544&&a<=12591,"Hangul Compatibility Jamo":a=>a>=12592&&a<=12687,Kanbun:a=>a>=12688&&a<=12703,"Bopomofo Extended":a=>a>=12704&&a<=12735,"CJK Strokes":a=>a>=12736&&a<=12783,"Katakana Phonetic Extensions":a=>a>=12784&&a<=12799,"Enclosed CJK Letters and Months":a=>a>=12800&&a<=13055,"CJK Compatibility":a=>a>=13056&&a<=13311,"CJK Unified Ideographs Extension A":a=>a>=13312&&a<=19903,"Yijing Hexagram Symbols":a=>a>=19904&&a<=19967,"CJK Unified Ideographs":a=>a>=19968&&a<=40959,"Yi Syllables":a=>a>=40960&&a<=42127,"Yi Radicals":a=>a>=42128&&a<=42191,"Hangul Jamo Extended-A":a=>a>=43360&&a<=43391,"Hangul Syllables":a=>a>=44032&&a<=55215,"Hangul Jamo Extended-B":a=>a>=55216&&a<=55295,"Private Use Area":a=>a>=57344&&a<=63743,"CJK Compatibility Ideographs":a=>a>=63744&&a<=64255,"Arabic Presentation Forms-A":a=>a>=64336&&a<=65023,"Vertical Forms":a=>a>=65040&&a<=65055,"CJK Compatibility Forms":a=>a>=65072&&a<=65103,"Small Form Variants":a=>a>=65104&&a<=65135,"Arabic Presentation Forms-B":a=>a>=65136&&a<=65279,"Halfwidth and Fullwidth Forms":a=>a>=65280&&a<=65519};function ls(a){for(let e of a)if(Vl(e.charCodeAt(0)))return!0;return!1}function Bh(a){for(let e of a)if(!uu(e.charCodeAt(0)))return!1;return!0}function uu(a){return!(qe.Arabic(a)||qe["Arabic Supplement"](a)||qe["Arabic Extended-A"](a)||qe["Arabic Presentation Forms-A"](a)||qe["Arabic Presentation Forms-B"](a))}function Vl(a){return!(a!==746&&a!==747&&(a<4352||!(qe["Bopomofo Extended"](a)||qe.Bopomofo(a)||qe["CJK Compatibility Forms"](a)&&!(a>=65097&&a<=65103)||qe["CJK Compatibility Ideographs"](a)||qe["CJK Compatibility"](a)||qe["CJK Radicals Supplement"](a)||qe["CJK Strokes"](a)||!(!qe["CJK Symbols and Punctuation"](a)||a>=12296&&a<=12305||a>=12308&&a<=12319||a===12336)||qe["CJK Unified Ideographs Extension A"](a)||qe["CJK Unified Ideographs"](a)||qe["Enclosed CJK Letters and Months"](a)||qe["Hangul Compatibility Jamo"](a)||qe["Hangul Jamo Extended-A"](a)||qe["Hangul Jamo Extended-B"](a)||qe["Hangul Jamo"](a)||qe["Hangul Syllables"](a)||qe.Hiragana(a)||qe["Ideographic Description Characters"](a)||qe.Kanbun(a)||qe["Kangxi Radicals"](a)||qe["Katakana Phonetic Extensions"](a)||qe.Katakana(a)&&a!==12540||!(!qe["Halfwidth and Fullwidth Forms"](a)||a===65288||a===65289||a===65293||a>=65306&&a<=65310||a===65339||a===65341||a===65343||a>=65371&&a<=65503||a===65507||a>=65512&&a<=65519)||!(!qe["Small Form Variants"](a)||a>=65112&&a<=65118||a>=65123&&a<=65126)||qe["Unified Canadian Aboriginal Syllabics"](a)||qe["Unified Canadian Aboriginal Syllabics Extended"](a)||qe["Vertical Forms"](a)||qe["Yijing Hexagram Symbols"](a)||qe["Yi Syllables"](a)||qe["Yi Radicals"](a))))}function Fc(a){return!(Vl(a)||function(e){return!!(qe["Latin-1 Supplement"](e)&&(e===167||e===169||e===174||e===177||e===188||e===189||e===190||e===215||e===247)||qe["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)||qe["Letterlike Symbols"](e)||qe["Number Forms"](e)||qe["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)||qe["Control Pictures"](e)&&e!==9251||qe["Optical Character Recognition"](e)||qe["Enclosed Alphanumerics"](e)||qe["Geometric Shapes"](e)||qe["Miscellaneous Symbols"](e)&&!(e>=9754&&e<=9759)||qe["Miscellaneous Symbols and Arrows"](e)&&(e>=11026&&e<=11055||e>=11088&&e<=11097||e>=11192&&e<=11243)||qe["CJK Symbols and Punctuation"](e)||qe.Katakana(e)||qe["Private Use Area"](e)||qe["CJK Compatibility Forms"](e)||qe["Small Form Variants"](e)||qe["Halfwidth and Fullwidth Forms"](e)||e===8734||e===8756||e===8757||e>=9984&&e<=10087||e>=10102&&e<=10131||e===65532||e===65533)}(a))}function ia(a){return a>=1424&&a<=2303||qe["Arabic Presentation Forms-A"](a)||qe["Arabic Presentation Forms-B"](a)}function kc(a,e){return!(!e&&ia(a)||a>=2304&&a<=3583||a>=3840&&a<=4255||qe.Khmer(a))}function Lc(a){for(let e of a)if(ia(e.charCodeAt(0)))return!0;return!1}let fo=new class{constructor(){this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null}setState(a){this.pluginStatus=a.pluginStatus,this.pluginURL=a.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(a){this.applyArabicShaping=a.applyArabicShaping,this.processBidirectionalText=a.processBidirectionalText,this.processStyledBidirectionalText=a.processStyledBidirectionalText}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getPluginURL(){return this.pluginURL}getRTLTextPluginStatus(){return this.pluginStatus}};class vr{constructor(e,l){this.zoom=e,l?(this.now=l.now,this.fadeDuration=l.fadeDuration,this.zoomHistory=l.zoomHistory,this.transition=l.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Sc,this.transition={})}isSupportedScript(e){return function(l,h){for(let C of l)if(!kc(C.charCodeAt(0),h))return!1;return!0}(e,fo.getRTLTextPluginStatus()==="loaded")}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let e=this.zoom,l=e-Math.floor(e),h=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:l+(1-l)*h}:{fromScale:.5,toScale:1,t:1-(1-h)*l}}}class ka{constructor(e,l){this.property=e,this.value=l,this.expression=function(h,C){if(Hs(h))return new ea(h,C);if(ta(h)){let w=Ba(h,C);if(w.result==="error")throw new Error(w.value.map(B=>`${B.key}: ${B.message}`).join(", "));return w.value}{let w=h;return C.type==="color"&&typeof h=="string"?w=Ui.parse(h):C.type!=="padding"||typeof h!="number"&&!Array.isArray(h)?C.type==="variableAnchorOffsetCollection"&&Array.isArray(h)&&(w=pn.parse(h)):w=Ir.parse(h),{kind:"constant",evaluate:()=>w}}}(l===void 0?e.specification.default:l,e.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(e,l,h){return this.property.possiblyEvaluate(this,e,l,h)}}class La{constructor(e){this.property=e,this.value=new ka(e,void 0)}transitioned(e,l){return new hu(this.property,this.value,l,Lt({},e.transition,this.transition),e.now)}untransitioned(){return new hu(this.property,this.value,null,{},0)}}class Xa{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues)}getValue(e){return Nt(this._values[e].value.value)}setValue(e,l){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new La(this._values[e].property)),this._values[e].value=new ka(this._values[e].property,l===null?void 0:Nt(l))}getTransition(e){return Nt(this._values[e].transition)}setTransition(e,l){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new La(this._values[e].property)),this._values[e].transition=Nt(l)||void 0}serialize(){let e={};for(let l of Object.keys(this._values)){let h=this.getValue(l);h!==void 0&&(e[l]=h);let C=this.getTransition(l);C!==void 0&&(e[`${l}-transition`]=C)}return e}transitioned(e,l){let h=new Dl(this._properties);for(let C of Object.keys(this._values))h._values[C]=this._values[C].transitioned(e,l._values[C]);return h}untransitioned(){let e=new Dl(this._properties);for(let l of Object.keys(this._values))e._values[l]=this._values[l].untransitioned();return e}}class hu{constructor(e,l,h,C,w){this.property=e,this.value=l,this.begin=w+C.delay||0,this.end=this.begin+C.duration||0,e.specification.transition&&(C.delay||C.duration)&&(this.prior=h)}possiblyEvaluate(e,l,h){let C=e.now||0,w=this.value.possiblyEvaluate(e,l,h),B=this.prior;if(B){if(C>this.end)return this.prior=null,w;if(this.value.isDataDriven())return this.prior=null,w;if(C=1)return 1;let Z=T*T,M=Z*T;return 4*(T<.5?M:3*(T-Z)+M-.75)}(F))}}return w}}class Dl{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitioningPropertyValues)}possiblyEvaluate(e,l,h){let C=new Kl(this._properties);for(let w of Object.keys(this._values))C._values[w]=this._values[w].possiblyEvaluate(e,l,h);return C}hasTransition(){for(let e of Object.keys(this._values))if(this._values[e].prior)return!0;return!1}}class hl{constructor(e){this._properties=e,this._values=Object.create(e.defaultPropertyValues)}hasValue(e){return this._values[e].value!==void 0}getValue(e){return Nt(this._values[e].value)}setValue(e,l){this._values[e]=new ka(this._values[e].property,l===null?void 0:Nt(l))}serialize(){let e={};for(let l of Object.keys(this._values)){let h=this.getValue(l);h!==void 0&&(e[l]=h)}return e}possiblyEvaluate(e,l,h){let C=new Kl(this._properties);for(let w of Object.keys(this._values))C._values[w]=this._values[w].possiblyEvaluate(e,l,h);return C}}class Zo{constructor(e,l,h){this.property=e,this.value=l,this.parameters=h}isConstant(){return this.value.kind==="constant"}constantOr(e){return this.value.kind==="constant"?this.value.value:e}evaluate(e,l,h,C){return this.property.evaluate(this.value,this.parameters,e,l,h,C)}}class Kl{constructor(e){this._properties=e,this._values=Object.create(e.defaultPossiblyEvaluatedValues)}get(e){return this._values[e]}}class yi{constructor(e){this.specification=e}possiblyEvaluate(e,l){if(e.isDataDriven())throw new Error("Value should not be data driven");return e.expression.evaluate(l)}interpolate(e,l,h){let C=ci[this.specification.type];return C?C(e,l,h):e}}class Zi{constructor(e,l){this.specification=e,this.overrides=l}possiblyEvaluate(e,l,h,C){return new Zo(this,e.expression.kind==="constant"||e.expression.kind==="camera"?{kind:"constant",value:e.expression.evaluate(l,null,{},h,C)}:e.expression,l)}interpolate(e,l,h){if(e.value.kind!=="constant"||l.value.kind!=="constant")return e;if(e.value.value===void 0||l.value.value===void 0)return new Zo(this,{kind:"constant",value:void 0},e.parameters);let C=ci[this.specification.type];if(C){let w=C(e.value.value,l.value.value,h);return new Zo(this,{kind:"constant",value:w},e.parameters)}return e}evaluate(e,l,h,C,w,B){return e.kind==="constant"?e.value:e.evaluate(l,h,C,w,B)}}class v extends Zi{possiblyEvaluate(e,l,h,C){if(e.value===void 0)return new Zo(this,{kind:"constant",value:void 0},l);if(e.expression.kind==="constant"){let w=e.expression.evaluate(l,null,{},h,C),B=e.property.specification.type==="resolvedImage"&&typeof w!="string"?w.name:w,F=this._calculate(B,B,B,l);return new Zo(this,{kind:"constant",value:F},l)}if(e.expression.kind==="camera"){let w=this._calculate(e.expression.evaluate({zoom:l.zoom-1}),e.expression.evaluate({zoom:l.zoom}),e.expression.evaluate({zoom:l.zoom+1}),l);return new Zo(this,{kind:"constant",value:w},l)}return new Zo(this,e.expression,l)}evaluate(e,l,h,C,w,B){if(e.kind==="source"){let F=e.evaluate(l,h,C,w,B);return this._calculate(F,F,F,l)}return e.kind==="composite"?this._calculate(e.evaluate({zoom:Math.floor(l.zoom)-1},h,C),e.evaluate({zoom:Math.floor(l.zoom)},h,C),e.evaluate({zoom:Math.floor(l.zoom)+1},h,C),l):e.value}_calculate(e,l,h,C){return C.zoom>C.zoomHistory.lastIntegerZoom?{from:e,to:l}:{from:h,to:l}}interpolate(e){return e}}class i{constructor(e){this.specification=e}possiblyEvaluate(e,l,h,C){if(e.value!==void 0){if(e.expression.kind==="constant"){let w=e.expression.evaluate(l,null,{},h,C);return this._calculate(w,w,w,l)}return this._calculate(e.expression.evaluate(new vr(Math.floor(l.zoom-1),l)),e.expression.evaluate(new vr(Math.floor(l.zoom),l)),e.expression.evaluate(new vr(Math.floor(l.zoom+1),l)),l)}}_calculate(e,l,h,C){return C.zoom>C.zoomHistory.lastIntegerZoom?{from:e,to:l}:{from:h,to:l}}interpolate(e){return e}}class c{constructor(e){this.specification=e}possiblyEvaluate(e,l,h,C){return!!e.expression.evaluate(l,null,{},h,C)}interpolate(){return!1}}class p{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let l in e){let h=e[l];h.specification.overridable&&this.overridableProperties.push(l);let C=this.defaultPropertyValues[l]=new ka(h,void 0),w=this.defaultTransitionablePropertyValues[l]=new La(h);this.defaultTransitioningPropertyValues[l]=w.untransitioned(),this.defaultPossiblyEvaluatedValues[l]=C.possiblyEvaluate({})}}}Ai("DataDrivenProperty",Zi),Ai("DataConstantProperty",yi),Ai("CrossFadedDataDrivenProperty",v),Ai("CrossFadedProperty",i),Ai("ColorRampProperty",c);let m="-transition";class b extends Xe{constructor(e,l){if(super(),this.id=e.id,this.type=e.type,this._featureFilter={filter:()=>!0,needGeometry:!1},e.type!=="custom"&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,e.type!=="background"&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),l.layout&&(this._unevaluatedLayout=new hl(l.layout)),l.paint)){this._transitionablePaint=new Xa(l.paint);for(let h in e.paint)this.setPaintProperty(h,e.paint[h],{validate:!1});for(let h in e.layout)this.setLayoutProperty(h,e.layout[h],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Kl(l.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){return e==="visibility"?this.visibility:this._unevaluatedLayout.getValue(e)}setLayoutProperty(e,l,h={}){l!=null&&this._validate(wh,`layers.${this.id}.layout.${e}`,e,l,h)||(e!=="visibility"?this._unevaluatedLayout.setValue(e,l):this.visibility=l)}getPaintProperty(e){return e.endsWith(m)?this._transitionablePaint.getTransition(e.slice(0,-11)):this._transitionablePaint.getValue(e)}setPaintProperty(e,l,h={}){if(l!=null&&this._validate(vh,`layers.${this.id}.paint.${e}`,e,l,h))return!1;if(e.endsWith(m))return this._transitionablePaint.setTransition(e.slice(0,-11),l||void 0),!1;{let C=this._transitionablePaint._values[e],w=C.property.specification["property-type"]==="cross-faded-data-driven",B=C.value.isDataDriven(),F=C.value;this._transitionablePaint.setValue(e,l),this._handleSpecialPaintPropertyUpdate(e);let T=this._transitionablePaint._values[e].value;return T.isDataDriven()||B||w||this._handleOverridablePaintPropertyUpdate(e,F,T)}}_handleSpecialPaintPropertyUpdate(e){}_handleOverridablePaintPropertyUpdate(e,l,h){return!1}isHidden(e){return!!(this.minzoom&&e=this.maxzoom)||this.visibility==="none"}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(e,l){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,l)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,l)}serialize(){let 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),It(e,(l,h)=>!(l===void 0||h==="layout"&&!Object.keys(l).length||h==="paint"&&!Object.keys(l).length))}_validate(e,l,h,C,w={}){return(!w||w.validate!==!1)&&Nl(this,e.call(po,{key:l,layerType:this.type,objectKey:h,value:C,styleSpec:Kt,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let e in this.paint._values){let l=this.paint.get(e);if(l instanceof Zo&&Ln(l.property.specification)&&(l.value.kind==="source"||l.value.kind==="composite")&&l.value.isStateDependent)return!0}return!1}}let u={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class g{constructor(e,l){this._structArray=e,this._pos1=l*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class y{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,l){return e._trim(),l&&(e.isTransferred=!0,l.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){let l=Object.create(this.prototype);return l.arrayBuffer=e.arrayBuffer,l.length=e.length,l.capacity=e.arrayBuffer.byteLength/l.bytesPerElement,l._refreshViews(),l}_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);let l=this.uint8;this._refreshViews(),l&&this.uint8.set(l)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function x(a,e=1){let l=0,h=0;return{members:a.map(C=>{let w=u[C.type].BYTES_PER_ELEMENT,B=l=k(l,Math.max(e,w)),F=C.components||1;return h=Math.max(h,w),l+=w*F,{name:C.name,type:C.type,components:F,offset:B}}),size:k(l,Math.max(h,e)),alignment:e}}function k(a,e){return Math.ceil(a/e)*e}class E extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,l){let h=this.length;return this.resize(h+1),this.emplace(h,e,l)}emplace(e,l,h){let C=2*e;return this.int16[C+0]=l,this.int16[C+1]=h,e}}E.prototype.bytesPerElement=4,Ai("StructArrayLayout2i4",E);class R extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,l,h){let C=this.length;return this.resize(C+1),this.emplace(C,e,l,h)}emplace(e,l,h,C){let w=3*e;return this.int16[w+0]=l,this.int16[w+1]=h,this.int16[w+2]=C,e}}R.prototype.bytesPerElement=6,Ai("StructArrayLayout3i6",R);class P extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,l,h,C){let w=this.length;return this.resize(w+1),this.emplace(w,e,l,h,C)}emplace(e,l,h,C,w){let B=4*e;return this.int16[B+0]=l,this.int16[B+1]=h,this.int16[B+2]=C,this.int16[B+3]=w,e}}P.prototype.bytesPerElement=8,Ai("StructArrayLayout4i8",P);class H extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w,B){let F=this.length;return this.resize(F+1),this.emplace(F,e,l,h,C,w,B)}emplace(e,l,h,C,w,B,F){let T=6*e;return this.int16[T+0]=l,this.int16[T+1]=h,this.int16[T+2]=C,this.int16[T+3]=w,this.int16[T+4]=B,this.int16[T+5]=F,e}}H.prototype.bytesPerElement=12,Ai("StructArrayLayout2i4i12",H);class N extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w,B){let F=this.length;return this.resize(F+1),this.emplace(F,e,l,h,C,w,B)}emplace(e,l,h,C,w,B,F){let T=4*e,Z=8*e;return this.int16[T+0]=l,this.int16[T+1]=h,this.uint8[Z+4]=C,this.uint8[Z+5]=w,this.uint8[Z+6]=B,this.uint8[Z+7]=F,e}}N.prototype.bytesPerElement=8,Ai("StructArrayLayout2i4ub8",N);class O extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,l){let h=this.length;return this.resize(h+1),this.emplace(h,e,l)}emplace(e,l,h){let C=2*e;return this.float32[C+0]=l,this.float32[C+1]=h,e}}O.prototype.bytesPerElement=8,Ai("StructArrayLayout2f8",O);class et extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w,B,F,T,Z,M){let D=this.length;return this.resize(D+1),this.emplace(D,e,l,h,C,w,B,F,T,Z,M)}emplace(e,l,h,C,w,B,F,T,Z,M,D){let J=10*e;return this.uint16[J+0]=l,this.uint16[J+1]=h,this.uint16[J+2]=C,this.uint16[J+3]=w,this.uint16[J+4]=B,this.uint16[J+5]=F,this.uint16[J+6]=T,this.uint16[J+7]=Z,this.uint16[J+8]=M,this.uint16[J+9]=D,e}}et.prototype.bytesPerElement=20,Ai("StructArrayLayout10ui20",et);class nt extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w,B,F,T,Z,M,D,J){let $=this.length;return this.resize($+1),this.emplace($,e,l,h,C,w,B,F,T,Z,M,D,J)}emplace(e,l,h,C,w,B,F,T,Z,M,D,J,$){let st=12*e;return this.int16[st+0]=l,this.int16[st+1]=h,this.int16[st+2]=C,this.int16[st+3]=w,this.uint16[st+4]=B,this.uint16[st+5]=F,this.uint16[st+6]=T,this.uint16[st+7]=Z,this.int16[st+8]=M,this.int16[st+9]=D,this.int16[st+10]=J,this.int16[st+11]=$,e}}nt.prototype.bytesPerElement=24,Ai("StructArrayLayout4i4ui4i24",nt);class Y extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,l,h){let C=this.length;return this.resize(C+1),this.emplace(C,e,l,h)}emplace(e,l,h,C){let w=3*e;return this.float32[w+0]=l,this.float32[w+1]=h,this.float32[w+2]=C,e}}Y.prototype.bytesPerElement=12,Ai("StructArrayLayout3f12",Y);class dt extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){let l=this.length;return this.resize(l+1),this.emplace(l,e)}emplace(e,l){return this.uint32[1*e+0]=l,e}}dt.prototype.bytesPerElement=4,Ai("StructArrayLayout1ul4",dt);class gt extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w,B,F,T,Z){let M=this.length;return this.resize(M+1),this.emplace(M,e,l,h,C,w,B,F,T,Z)}emplace(e,l,h,C,w,B,F,T,Z,M){let D=10*e,J=5*e;return this.int16[D+0]=l,this.int16[D+1]=h,this.int16[D+2]=C,this.int16[D+3]=w,this.int16[D+4]=B,this.int16[D+5]=F,this.uint32[J+3]=T,this.uint16[D+8]=Z,this.uint16[D+9]=M,e}}gt.prototype.bytesPerElement=20,Ai("StructArrayLayout6i1ul2ui20",gt);class ot extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w,B){let F=this.length;return this.resize(F+1),this.emplace(F,e,l,h,C,w,B)}emplace(e,l,h,C,w,B,F){let T=6*e;return this.int16[T+0]=l,this.int16[T+1]=h,this.int16[T+2]=C,this.int16[T+3]=w,this.int16[T+4]=B,this.int16[T+5]=F,e}}ot.prototype.bytesPerElement=12,Ai("StructArrayLayout2i2i2i12",ot);class pt extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w){let B=this.length;return this.resize(B+1),this.emplace(B,e,l,h,C,w)}emplace(e,l,h,C,w,B){let F=4*e,T=8*e;return this.float32[F+0]=l,this.float32[F+1]=h,this.float32[F+2]=C,this.int16[T+6]=w,this.int16[T+7]=B,e}}pt.prototype.bytesPerElement=16,Ai("StructArrayLayout2f1f2i16",pt);class Dt extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w,B){let F=this.length;return this.resize(F+1),this.emplace(F,e,l,h,C,w,B)}emplace(e,l,h,C,w,B,F){let T=16*e,Z=4*e,M=8*e;return this.uint8[T+0]=l,this.uint8[T+1]=h,this.float32[Z+1]=C,this.float32[Z+2]=w,this.int16[M+6]=B,this.int16[M+7]=F,e}}Dt.prototype.bytesPerElement=16,Ai("StructArrayLayout2ub2f2i16",Dt);class $t extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,l,h){let C=this.length;return this.resize(C+1),this.emplace(C,e,l,h)}emplace(e,l,h,C){let w=3*e;return this.uint16[w+0]=l,this.uint16[w+1]=h,this.uint16[w+2]=C,e}}$t.prototype.bytesPerElement=6,Ai("StructArrayLayout3ui6",$t);class jt extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w,B,F,T,Z,M,D,J,$,st,ut,Ft,Gt){let Ae=this.length;return this.resize(Ae+1),this.emplace(Ae,e,l,h,C,w,B,F,T,Z,M,D,J,$,st,ut,Ft,Gt)}emplace(e,l,h,C,w,B,F,T,Z,M,D,J,$,st,ut,Ft,Gt,Ae){let Ot=24*e,te=12*e,me=48*e;return this.int16[Ot+0]=l,this.int16[Ot+1]=h,this.uint16[Ot+2]=C,this.uint16[Ot+3]=w,this.uint32[te+2]=B,this.uint32[te+3]=F,this.uint32[te+4]=T,this.uint16[Ot+10]=Z,this.uint16[Ot+11]=M,this.uint16[Ot+12]=D,this.float32[te+7]=J,this.float32[te+8]=$,this.uint8[me+36]=st,this.uint8[me+37]=ut,this.uint8[me+38]=Ft,this.uint32[te+10]=Gt,this.int16[Ot+22]=Ae,e}}jt.prototype.bytesPerElement=48,Ai("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",jt);class ue extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,l,h,C,w,B,F,T,Z,M,D,J,$,st,ut,Ft,Gt,Ae,Ot,te,me,Pe,oi,Pi,ni,ei,wi,di){let li=this.length;return this.resize(li+1),this.emplace(li,e,l,h,C,w,B,F,T,Z,M,D,J,$,st,ut,Ft,Gt,Ae,Ot,te,me,Pe,oi,Pi,ni,ei,wi,di)}emplace(e,l,h,C,w,B,F,T,Z,M,D,J,$,st,ut,Ft,Gt,Ae,Ot,te,me,Pe,oi,Pi,ni,ei,wi,di,li){let Se=32*e,Si=16*e;return this.int16[Se+0]=l,this.int16[Se+1]=h,this.int16[Se+2]=C,this.int16[Se+3]=w,this.int16[Se+4]=B,this.int16[Se+5]=F,this.int16[Se+6]=T,this.int16[Se+7]=Z,this.uint16[Se+8]=M,this.uint16[Se+9]=D,this.uint16[Se+10]=J,this.uint16[Se+11]=$,this.uint16[Se+12]=st,this.uint16[Se+13]=ut,this.uint16[Se+14]=Ft,this.uint16[Se+15]=Gt,this.uint16[Se+16]=Ae,this.uint16[Se+17]=Ot,this.uint16[Se+18]=te,this.uint16[Se+19]=me,this.uint16[Se+20]=Pe,this.uint16[Se+21]=oi,this.uint16[Se+22]=Pi,this.uint32[Si+12]=ni,this.float32[Si+13]=ei,this.float32[Si+14]=wi,this.uint16[Se+30]=di,this.uint16[Se+31]=li,e}}ue.prototype.bytesPerElement=64,Ai("StructArrayLayout8i15ui1ul2f2ui64",ue);class ce extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){let l=this.length;return this.resize(l+1),this.emplace(l,e)}emplace(e,l){return this.float32[1*e+0]=l,e}}ce.prototype.bytesPerElement=4,Ai("StructArrayLayout1f4",ce);class Fe extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,l,h){let C=this.length;return this.resize(C+1),this.emplace(C,e,l,h)}emplace(e,l,h,C){let w=3*e;return this.uint16[6*e+0]=l,this.float32[w+1]=h,this.float32[w+2]=C,e}}Fe.prototype.bytesPerElement=12,Ai("StructArrayLayout1ui2f12",Fe);class xe extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,l,h){let C=this.length;return this.resize(C+1),this.emplace(C,e,l,h)}emplace(e,l,h,C){let w=4*e;return this.uint32[2*e+0]=l,this.uint16[w+2]=h,this.uint16[w+3]=C,e}}xe.prototype.bytesPerElement=8,Ai("StructArrayLayout1ul2ui8",xe);class ke extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,l){let h=this.length;return this.resize(h+1),this.emplace(h,e,l)}emplace(e,l,h){let C=2*e;return this.uint16[C+0]=l,this.uint16[C+1]=h,e}}ke.prototype.bytesPerElement=4,Ai("StructArrayLayout2ui4",ke);class Ue extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){let l=this.length;return this.resize(l+1),this.emplace(l,e)}emplace(e,l){return this.uint16[1*e+0]=l,e}}Ue.prototype.bytesPerElement=2,Ai("StructArrayLayout1ui2",Ue);class $e extends y{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,l,h,C){let w=this.length;return this.resize(w+1),this.emplace(w,e,l,h,C)}emplace(e,l,h,C,w){let B=4*e;return this.float32[B+0]=l,this.float32[B+1]=h,this.float32[B+2]=C,this.float32[B+3]=w,e}}$e.prototype.bytesPerElement=16,Ai("StructArrayLayout4f16",$e);class Li extends g{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new _(this.anchorPointX,this.anchorPointY)}}Li.prototype.size=20;class pi extends gt{get(e){return new Li(this,e)}}Ai("CollisionBoxArray",pi);class bi extends g{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(e){this._structArray.uint8[this._pos1+37]=e}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(e){this._structArray.uint8[this._pos1+38]=e}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(e){this._structArray.uint32[this._pos4+10]=e}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}bi.prototype.size=48;class Ci extends jt{get(e){return new bi(this,e)}}Ai("PlacedSymbolArray",Ci);class mr extends g{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(e){this._structArray.uint32[this._pos4+12]=e}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}mr.prototype.size=64;class Jr extends ue{get(e){return new mr(this,e)}}Ai("SymbolInstanceArray",Jr);class Yi extends ce{getoffsetX(e){return this.float32[1*e+0]}}Ai("GlyphOffsetArray",Yi);class Rr extends R{getx(e){return this.int16[3*e+0]}gety(e){return this.int16[3*e+1]}gettileUnitDistanceFromAnchor(e){return this.int16[3*e+2]}}Ai("SymbolLineVertexArray",Rr);class rr extends g{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}rr.prototype.size=12;class Lr extends Fe{get(e){return new rr(this,e)}}Ai("TextAnchorOffsetArray",Lr);class Er extends g{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]}}Er.prototype.size=8;class Tr extends xe{get(e){return new Er(this,e)}}Ai("FeatureIndexArray",Tr);class rn extends E{}class _n extends E{}class Tn extends E{}class On extends H{}class gn extends N{}class mo extends O{}class nn extends et{}class Wn extends nt{}class es extends Y{}class Gr extends dt{}class xn extends ot{}class Un extends Dt{}class yn extends $t{}class Zr extends ke{}let Po=x([{name:"a_pos",components:2,type:"Int16"}],4),{members:GA}=Po;class xr{constructor(e=[]){this.segments=e}prepareSegment(e,l,h,C){let w=this.segments[this.segments.length-1];return e>xr.MAX_VERTEX_ARRAY_LENGTH&<(`Max vertices per segment is ${xr.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}`),(!w||w.vertexLength+e>xr.MAX_VERTEX_ARRAY_LENGTH||w.sortKey!==C)&&(w={vertexOffset:l.length,primitiveOffset:h.length,vertexLength:0,primitiveLength:0},C!==void 0&&(w.sortKey=C),this.segments.push(w)),w}get(){return this.segments}destroy(){for(let e of this.segments)for(let l in e.vaos)e.vaos[l].destroy()}static simpleSegment(e,l,h,C){return new xr([{vertexOffset:e,primitiveOffset:l,vertexLength:h,primitiveLength:C,vaos:{},sortKey:0}])}}function Ya(a,e){return 256*(a=At(Math.floor(a),0,255))+At(Math.floor(e),0,255)}xr.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Ai("SegmentVector",xr);let ra=x([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var gl={exports:{}},Co={exports:{}};Co.exports=function(a,e){var l,h,C,w,B,F,T,Z;for(h=a.length-(l=3&a.length),C=e,B=3432918353,F=461845907,Z=0;Z>>16)*B&65535)<<16)&4294967295)<<15|T>>>17))*F+(((T>>>16)*F&65535)<<16)&4294967295)<<13|C>>>19))+((5*(C>>>16)&65535)<<16)&4294967295))+((58964+(w>>>16)&65535)<<16);switch(T=0,l){case 3:T^=(255&a.charCodeAt(Z+2))<<16;case 2:T^=(255&a.charCodeAt(Z+1))<<8;case 1:C^=T=(65535&(T=(T=(65535&(T^=255&a.charCodeAt(Z)))*B+(((T>>>16)*B&65535)<<16)&4294967295)<<15|T>>>17))*F+(((T>>>16)*F&65535)<<16)&4294967295}return C^=a.length,C=2246822507*(65535&(C^=C>>>16))+((2246822507*(C>>>16)&65535)<<16)&4294967295,C=3266489909*(65535&(C^=C>>>13))+((3266489909*(C>>>16)&65535)<<16)&4294967295,(C^=C>>>16)>>>0};var Ec=Co.exports,ZA={exports:{}};ZA.exports=function(a,e){for(var l,h=a.length,C=e^h,w=0;h>=4;)l=1540483477*(65535&(l=255&a.charCodeAt(w)|(255&a.charCodeAt(++w))<<8|(255&a.charCodeAt(++w))<<16|(255&a.charCodeAt(++w))<<24))+((1540483477*(l>>>16)&65535)<<16),C=1540483477*(65535&C)+((1540483477*(C>>>16)&65535)<<16)^(l=1540483477*(65535&(l^=l>>>24))+((1540483477*(l>>>16)&65535)<<16)),h-=4,++w;switch(h){case 3:C^=(255&a.charCodeAt(w+2))<<16;case 2:C^=(255&a.charCodeAt(w+1))<<8;case 1:C=1540483477*(65535&(C^=255&a.charCodeAt(w)))+((1540483477*(C>>>16)&65535)<<16)}return C=1540483477*(65535&(C^=C>>>13))+((1540483477*(C>>>16)&65535)<<16),(C^=C>>>15)>>>0};var dl=Ec,PA=ZA.exports;gl.exports=dl,gl.exports.murmur3=dl,gl.exports.murmur2=PA;var Ea=d(gl.exports);class HA{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,l,h,C){this.ids.push(ed(e)),this.positions.push(l,h,C)}getPositions(e){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let l=ed(e),h=0,C=this.ids.length-1;for(;h>1;this.ids[B]>=l?C=B:h=B+1}let w=[];for(;this.ids[h]===l;)w.push({index:this.positions[3*h],start:this.positions[3*h+1],end:this.positions[3*h+2]}),h++;return w}static serialize(e,l){let h=new Float64Array(e.ids),C=new Uint32Array(e.positions);return Tc(h,C,0,h.length-1),l&&l.push(h.buffer,C.buffer),{ids:h,positions:C}}static deserialize(e){let l=new HA;return l.ids=e.ids,l.positions=e.positions,l.indexed=!0,l}}function ed(a){let e=+a;return!isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:Ea(String(a))}function Tc(a,e,l,h){for(;l>1],w=l-1,B=h+1;for(;;){do w++;while(a[w]C);if(w>=B)break;na(a,w,B),na(e,3*w,3*B),na(e,3*w+1,3*B+1),na(e,3*w+2,3*B+2)}B-l`u_${C}`),this.type=h}setUniform(e,l,h){e.set(h.constantOr(this.value))}getBinding(e,l,h){return this.type==="color"?new _h(e,l):new gu(e,l)}}class ja{constructor(e,l){this.uniformNames=l.map(h=>`u_${h}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,l){this.pixelRatioFrom=l.pixelRatio,this.pixelRatioTo=e.pixelRatio,this.patternFrom=l.tlbr,this.patternTo=e.tlbr}setUniform(e,l,h,C){let w=C==="u_pattern_to"?this.patternTo:C==="u_pattern_from"?this.patternFrom:C==="u_pixel_ratio_to"?this.pixelRatioTo:C==="u_pixel_ratio_from"?this.pixelRatioFrom:null;w&&e.set(w)}getBinding(e,l,h){return h.substr(0,9)==="u_pattern"?new id(e,l):new gu(e,l)}}class sa{constructor(e,l,h,C){this.expression=e,this.type=h,this.maxValue=0,this.paintVertexAttributes=l.map(w=>({name:`a_${w}`,type:"Float32",components:h==="color"?2:1,offset:0})),this.paintVertexArray=new C}populatePaintArray(e,l,h,C,w){let B=this.paintVertexArray.length,F=this.expression.evaluate(new vr(0),l,{},C,[],w);this.paintVertexArray.resize(e),this._setPaintValue(B,e,F)}updatePaintArray(e,l,h,C){let w=this.expression.evaluate({zoom:0},h,C);this._setPaintValue(e,l,w)}_setPaintValue(e,l,h){if(this.type==="color"){let C=pu(h);for(let w=e;w`u_${F}_t`),this.type=h,this.useIntegerZoom=C,this.zoom=w,this.maxValue=0,this.paintVertexAttributes=l.map(F=>({name:`a_${F}`,type:"Float32",components:h==="color"?4:2,offset:0})),this.paintVertexArray=new B}populatePaintArray(e,l,h,C,w){let B=this.expression.evaluate(new vr(this.zoom),l,{},C,[],w),F=this.expression.evaluate(new vr(this.zoom+1),l,{},C,[],w),T=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(T,e,B,F)}updatePaintArray(e,l,h,C){let w=this.expression.evaluate({zoom:this.zoom},h,C),B=this.expression.evaluate({zoom:this.zoom+1},h,C);this._setPaintValue(e,l,w,B)}_setPaintValue(e,l,h,C){if(this.type==="color"){let w=pu(h),B=pu(C);for(let F=e;F`#define HAS_UNIFORM_${C}`))}return e}getBinderAttributes(){let e=[];for(let l in this.binders){let h=this.binders[l];if(h instanceof sa||h instanceof ks)for(let C=0;C!0){this.programConfigurations={};for(let C of e)this.programConfigurations[C.id]=new rd(C,l,h);this.needsUpload=!1,this._featureMap=new HA,this._bufferOffset=0}populatePaintArrays(e,l,h,C,w,B){for(let F in this.programConfigurations)this.programConfigurations[F].populatePaintArrays(e,l,C,w,B);l.id!==void 0&&this._featureMap.add(l.id,h,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,l,h,C){for(let w of h)this.needsUpload=this.programConfigurations[w.id].updatePaintArrays(e,this._featureMap,l,w,C)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(let l in this.programConfigurations)this.programConfigurations[l].upload(e);this.needsUpload=!1}}destroy(){for(let e in this.programConfigurations)this.programConfigurations[e].destroy()}}function nd(a,e){return{"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_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[a]||[a.replace(`${e}-`,"").replace(/-/g,"_")]}function fu(a,e,l){let h={color:{source:O,composite:$e},number:{source:ce,composite:O}},C=function(w){return{"line-pattern":{source:nn,composite:nn},"fill-pattern":{source:nn,composite:nn},"fill-extrusion-pattern":{source:nn,composite:nn}}[w]}(a);return C&&C[l]||h[e][l]}Ai("ConstantBinder",zl),Ai("CrossFadedConstantBinder",ja),Ai("SourceExpressionBinder",sa),Ai("CrossFadedCompositeBinder",qa),Ai("CompositeExpressionBinder",ks),Ai("ProgramConfiguration",rd,{omit:["_buffers"]}),Ai("ProgramConfigurationSet",Ta);let Pr=8192,mu=Math.pow(2,14)-1,xh=-mu-1;function fl(a){let e=Pr/a.extent,l=a.loadGeometry();for(let h=0;hB.x+1||TB.y+1)&<("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return l}function MA(a,e){return{type:a.type,id:a.id,properties:a.properties,geometry:e?fl(a):[]}}function $a(a,e,l,h,C){a.emplaceBack(2*e+(h+1)/2,2*l+(C+1)/2)}class Sh{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(l=>l.id),this.index=e.index,this.hasPattern=!1,this.layoutVertexArray=new _n,this.indexArray=new yn,this.segments=new xr,this.programConfigurations=new Ta(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter(l=>l.isStateDependent()).map(l=>l.id)}populate(e,l,h){let C=this.layers[0],w=[],B=null,F=!1;C.type==="circle"&&(B=C.layout.get("circle-sort-key"),F=!B.isConstant());for(let{feature:T,id:Z,index:M,sourceLayerIndex:D}of e){let J=this.layers[0]._featureFilter.needGeometry,$=MA(T,J);if(!this.layers[0]._featureFilter.filter(new vr(this.zoom),$,h))continue;let st=F?B.evaluate($,{},h):void 0,ut={id:Z,properties:T.properties,type:T.type,sourceLayerIndex:D,index:M,geometry:J?$.geometry:fl(T),patterns:{},sortKey:st};w.push(ut)}F&&w.sort((T,Z)=>T.sortKey-Z.sortKey);for(let T of w){let{geometry:Z,index:M,sourceLayerIndex:D}=T,J=e[M].feature;this.addFeature(T,Z,M,h),l.featureIndex.insert(J,Z,M,D,this.index)}}update(e,l,h){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,l,this.stateDependentLayers,h)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,GA),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())}addFeature(e,l,h,C){for(let w of l)for(let B of w){let F=B.x,T=B.y;if(F<0||F>=Pr||T<0||T>=Pr)continue;let Z=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,e.sortKey),M=Z.vertexLength;$a(this.layoutVertexArray,F,T,-1,-1),$a(this.layoutVertexArray,F,T,1,-1),$a(this.layoutVertexArray,F,T,1,1),$a(this.layoutVertexArray,F,T,-1,1),this.indexArray.emplaceBack(M,M+1,M+2),this.indexArray.emplaceBack(M,M+3,M+2),Z.vertexLength+=4,Z.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,h,{},C)}}function Fh(a,e){for(let l=0;l1){if(ml(a,e))return!0;for(let h=0;h1?l:l.sub(e)._mult(C)._add(e))}function tA(a,e){let l,h,C,w=!1;for(let B=0;Be.y!=C.y>e.y&&e.x<(C.x-h.x)*(e.y-h.y)/(C.y-h.y)+h.x&&(w=!w)}return w}function Io(a,e){let l=!1;for(let h=0,C=a.length-1;he.y!=B.y>e.y&&e.x<(B.x-w.x)*(e.y-w.y)/(B.y-w.y)+w.x&&(l=!l)}return l}function Cu(a,e,l){let h=l[0],C=l[2];if(a.xC.x&&e.x>C.x||a.yC.y&&e.y>C.y)return!1;let w=at(a,e,l[0]);return w!==at(a,e,l[1])||w!==at(a,e,l[2])||w!==at(a,e,l[3])}function Cl(a,e,l){let h=e.paint.get(a).value;return h.kind==="constant"?h.value:l.programConfigurations.get(e.id).getMaxValue(a)}function Uc(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1])}function Iu(a,e,l,h,C){if(!e[0]&&!e[1])return a;let w=_.convert(e)._mult(C);l==="viewport"&&w._rotate(-h);let B=[];for(let F=0;Ft1(Ft,ut))}(Z,T),$=D?M*F:M;for(let st of C)for(let ut of st){let Ft=D?ut:t1(ut,T),Gt=$,Ae=sd([],[ut.x,ut.y,0,1],T);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?Gt*=Ae[3]/B.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(Gt*=B.cameraToCenterDistance/Ae[3]),pm(J,Ft,Gt))return!0}return!1}}function t1(a,e){let l=sd([],[a.x,a.y,0,1],e);return new _(l[0]/l[3],l[1]/l[3])}class e1 extends Sh{}let i1;Ai("HeatmapBucket",e1,{omit:["layers"]});var cS={get paint(){return i1=i1||new p({"heatmap-radius":new Zi(Kt.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Zi(Kt.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new yi(Kt.paint_heatmap["heatmap-intensity"]),"heatmap-color":new c(Kt.paint_heatmap["heatmap-color"]),"heatmap-opacity":new yi(Kt.paint_heatmap["heatmap-opacity"])})}};function Cm(a,{width:e,height:l},h,C){if(C){if(C instanceof Uint8ClampedArray)C=new Uint8Array(C.buffer);else if(C.length!==e*l*h)throw new RangeError(`mismatched image size. expected: ${C.length} but got: ${e*l*h}`)}else C=new Uint8Array(e*l*h);return a.width=e,a.height=l,a.data=C,a}function r1(a,{width:e,height:l},h){if(e===a.width&&l===a.height)return;let C=Cm({},{width:e,height:l},h);Im(a,C,{x:0,y:0},{x:0,y:0},{width:Math.min(a.width,e),height:Math.min(a.height,l)},h),a.width=e,a.height=l,a.data=C.data}function Im(a,e,l,h,C,w){if(C.width===0||C.height===0)return e;if(C.width>a.width||C.height>a.height||l.x>a.width-C.width||l.y>a.height-C.height)throw new RangeError("out of range source coordinates for image copy");if(C.width>e.width||C.height>e.height||h.x>e.width-C.width||h.y>e.height-C.height)throw new RangeError("out of range destination coordinates for image copy");let B=a.data,F=e.data;if(B===F)throw new Error("srcData equals dstData, so image is already copied");for(let T=0;T{e[a.evaluationKey]=T;let Z=a.expression.evaluate(e);C.data[B+F+0]=Math.floor(255*Z.r/Z.a),C.data[B+F+1]=Math.floor(255*Z.g/Z.a),C.data[B+F+2]=Math.floor(255*Z.b/Z.a),C.data[B+F+3]=Math.floor(255*Z.a)};if(a.clips)for(let B=0,F=0;B80*l){F=1/0,T=1/0;let M=-1/0,D=-1/0;for(let J=l;JM&&(M=$),st>D&&(D=st)}Z=Math.max(M-F,D-T),Z=Z!==0?32767/Z:0}return Uh(w,B,l,F,T,Z,0),B}function a1(a,e,l,h,C){let w;if(C===function(B,F,T,Z){let M=0;for(let D=F,J=T-Z;D0)for(let B=e;B=e;B-=h)w=c1(B/h|0,a[B],a[B+1],w);return w&&od(w,w.next)&&(Rh(w),w=w.next),w}function Qc(a,e){if(!a)return a;e||(e=a);let l,h=a;do if(l=!1,h.steiner||!od(h,h.next)&&bn(h.prev,h,h.next)!==0)h=h.next;else{if(Rh(h),h=e=h.prev,h===h.next)break;l=!0}while(l||h!==e);return e}function Uh(a,e,l,h,C,w,B){if(!a)return;!B&&w&&function(T,Z,M,D){let J=T;do J.z===0&&(J.z=ym(J.x,J.y,Z,M,D)),J.prevZ=J.prev,J.nextZ=J.next,J=J.next;while(J!==T);J.prevZ.nextZ=null,J.prevZ=null,function($){let st,ut=1;do{let Ft,Gt=$;$=null;let Ae=null;for(st=0;Gt;){st++;let Ot=Gt,te=0;for(let Pe=0;Pe0||me>0&&Ot;)te!==0&&(me===0||!Ot||Gt.z<=Ot.z)?(Ft=Gt,Gt=Gt.nextZ,te--):(Ft=Ot,Ot=Ot.nextZ,me--),Ae?Ae.nextZ=Ft:$=Ft,Ft.prevZ=Ae,Ae=Ft;Gt=Ot}Ae.nextZ=null,ut*=2}while(st>1)}(J)}(a,h,C,w);let F=a;for(;a.prev!==a.next;){let T=a.prev,Z=a.next;if(w?mS(a,h,C,w):fS(a))e.push(T.i,a.i,Z.i),Rh(a),a=Z.next,F=Z.next;else if((a=Z)===F){B?B===1?Uh(a=CS(Qc(a),e),e,l,h,C,w,2):B===2&&IS(a,e,l,h,C,w):Uh(Qc(a),e,l,h,C,w,1);break}}}function fS(a){let e=a.prev,l=a,h=a.next;if(bn(e,l,h)>=0)return!1;let C=e.x,w=l.x,B=h.x,F=e.y,T=l.y,Z=h.y,M=Cw?C>B?C:B:w>B?w:B,$=F>T?F>Z?F:Z:T>Z?T:Z,st=h.next;for(;st!==e;){if(st.x>=M&&st.x<=J&&st.y>=D&&st.y<=$&&wu(C,F,w,T,B,Z,st.x,st.y)&&bn(st.prev,st,st.next)>=0)return!1;st=st.next}return!0}function mS(a,e,l,h){let C=a.prev,w=a,B=a.next;if(bn(C,w,B)>=0)return!1;let F=C.x,T=w.x,Z=B.x,M=C.y,D=w.y,J=B.y,$=FT?F>Z?F:Z:T>Z?T:Z,Ft=M>D?M>J?M:J:D>J?D:J,Gt=ym($,st,e,l,h),Ae=ym(ut,Ft,e,l,h),Ot=a.prevZ,te=a.nextZ;for(;Ot&&Ot.z>=Gt&&te&&te.z<=Ae;){if(Ot.x>=$&&Ot.x<=ut&&Ot.y>=st&&Ot.y<=Ft&&Ot!==C&&Ot!==B&&wu(F,M,T,D,Z,J,Ot.x,Ot.y)&&bn(Ot.prev,Ot,Ot.next)>=0||(Ot=Ot.prevZ,te.x>=$&&te.x<=ut&&te.y>=st&&te.y<=Ft&&te!==C&&te!==B&&wu(F,M,T,D,Z,J,te.x,te.y)&&bn(te.prev,te,te.next)>=0))return!1;te=te.nextZ}for(;Ot&&Ot.z>=Gt;){if(Ot.x>=$&&Ot.x<=ut&&Ot.y>=st&&Ot.y<=Ft&&Ot!==C&&Ot!==B&&wu(F,M,T,D,Z,J,Ot.x,Ot.y)&&bn(Ot.prev,Ot,Ot.next)>=0)return!1;Ot=Ot.prevZ}for(;te&&te.z<=Ae;){if(te.x>=$&&te.x<=ut&&te.y>=st&&te.y<=Ft&&te!==C&&te!==B&&wu(F,M,T,D,Z,J,te.x,te.y)&&bn(te.prev,te,te.next)>=0)return!1;te=te.nextZ}return!0}function CS(a,e){let l=a;do{let h=l.prev,C=l.next.next;!od(h,C)&&A1(h,l,l.next,C)&&Qh(h,C)&&Qh(C,h)&&(e.push(h.i,l.i,C.i),Rh(l),Rh(l.next),l=a=C),l=l.next}while(l!==a);return Qc(l)}function IS(a,e,l,h,C,w){let B=a;do{let F=B.next.next;for(;F!==B.prev;){if(B.i!==F.i&&BS(B,F)){let T=l1(B,F);return B=Qc(B,B.next),T=Qc(T,T.next),Uh(B,e,l,h,C,w,0),void Uh(T,e,l,h,C,w,0)}F=F.next}B=B.next}while(B!==a)}function yS(a,e){return a.x-e.x}function bS(a,e){let l=function(C,w){let B=w,F=C.x,T=C.y,Z,M=-1/0;do{if(T<=B.y&&T>=B.next.y&&B.next.y!==B.y){let ut=B.x+(T-B.y)*(B.next.x-B.x)/(B.next.y-B.y);if(ut<=F&&ut>M&&(M=ut,Z=B.x=B.x&&B.x>=J&&F!==B.x&&wu(T<$?F:M,T,J,$,T<$?M:F,T,B.x,B.y)){let ut=Math.abs(T-B.y)/(F-B.x);Qh(B,C)&&(utZ.x||B.x===Z.x&&vS(Z,B)))&&(Z=B,st=ut)}B=B.next}while(B!==D);return Z}(a,e);if(!l)return e;let h=l1(l,a);return Qc(h,h.next),Qc(l,l.next)}function vS(a,e){return bn(a.prev,a,e.prev)<0&&bn(e.next,a,a.next)<0}function ym(a,e,l,h,C){return(a=1431655765&((a=858993459&((a=252645135&((a=16711935&((a=(a-l)*C|0)|a<<8))|a<<4))|a<<2))|a<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-h)*C|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function wS(a){let e=a,l=a;do(e.x=(a-B)*(w-F)&&(a-B)*(h-F)>=(l-B)*(e-F)&&(l-B)*(w-F)>=(C-B)*(h-F)}function BS(a,e){return a.next.i!==e.i&&a.prev.i!==e.i&&!function(l,h){let C=l;do{if(C.i!==l.i&&C.next.i!==l.i&&C.i!==h.i&&C.next.i!==h.i&&A1(C,C.next,l,h))return!0;C=C.next}while(C!==l);return!1}(a,e)&&(Qh(a,e)&&Qh(e,a)&&function(l,h){let C=l,w=!1,B=(l.x+h.x)/2,F=(l.y+h.y)/2;do C.y>F!=C.next.y>F&&C.next.y!==C.y&&B<(C.next.x-C.x)*(F-C.y)/(C.next.y-C.y)+C.x&&(w=!w),C=C.next;while(C!==l);return w}(a,e)&&(bn(a.prev,a,e.prev)||bn(a,e.prev,e))||od(a,e)&&bn(a.prev,a,a.next)>0&&bn(e.prev,e,e.next)>0)}function bn(a,e,l){return(e.y-a.y)*(l.x-e.x)-(e.x-a.x)*(l.y-e.y)}function od(a,e){return a.x===e.x&&a.y===e.y}function A1(a,e,l,h){let C=Ad(bn(a,e,l)),w=Ad(bn(a,e,h)),B=Ad(bn(l,h,a)),F=Ad(bn(l,h,e));return C!==w&&B!==F||!(C!==0||!ad(a,l,e))||!(w!==0||!ad(a,h,e))||!(B!==0||!ad(l,a,h))||!(F!==0||!ad(l,e,h))}function ad(a,e,l){return e.x<=Math.max(a.x,l.x)&&e.x>=Math.min(a.x,l.x)&&e.y<=Math.max(a.y,l.y)&&e.y>=Math.min(a.y,l.y)}function Ad(a){return a>0?1:a<0?-1:0}function Qh(a,e){return bn(a.prev,a,a.next)<0?bn(a,e,a.next)>=0&&bn(a,a.prev,e)>=0:bn(a,e,a.prev)<0||bn(a,a.next,e)<0}function l1(a,e){let l=bm(a.i,a.x,a.y),h=bm(e.i,e.x,e.y),C=a.next,w=e.prev;return a.next=e,e.prev=a,l.next=C,C.prev=l,h.next=l,l.prev=h,w.next=h,h.prev=w,h}function c1(a,e,l,h){let C=bm(a,e,l);return h?(C.next=h.next,C.prev=h,h.next.prev=C,h.next=C):(C.prev=C,C.next=C),C}function Rh(a){a.next.prev=a.prev,a.prev.next=a.next,a.prevZ&&(a.prevZ.nextZ=a.nextZ),a.nextZ&&(a.nextZ.prevZ=a.prevZ)}function bm(a,e,l){return{i:a,x:e,y:l,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function vm(a,e,l){let h=l.patternDependencies,C=!1;for(let w of e){let B=w.paint.get(`${a}-pattern`);B.isConstant()||(C=!0);let F=B.constantOr(null);F&&(C=!0,h[F.to]=!0,h[F.from]=!0)}return C}function wm(a,e,l,h,C){let w=C.patternDependencies;for(let B of e){let F=B.paint.get(`${a}-pattern`).value;if(F.kind!=="constant"){let T=F.evaluate({zoom:h-1},l,{},C.availableImages),Z=F.evaluate({zoom:h},l,{},C.availableImages),M=F.evaluate({zoom:h+1},l,{},C.availableImages);T=T&&T.name?T.name:T,Z=Z&&Z.name?Z.name:Z,M=M&&M.name?M.name:M,w[T]=!0,w[Z]=!0,w[M]=!0,l.patterns[B.id]={min:T,mid:Z,max:M}}}return l}class Bm{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(l=>l.id),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Tn,this.indexArray=new yn,this.indexArray2=new Zr,this.programConfigurations=new Ta(e.layers,e.zoom),this.segments=new xr,this.segments2=new xr,this.stateDependentLayerIds=this.layers.filter(l=>l.isStateDependent()).map(l=>l.id)}populate(e,l,h){this.hasPattern=vm("fill",this.layers,l);let C=this.layers[0].layout.get("fill-sort-key"),w=!C.isConstant(),B=[];for(let{feature:F,id:T,index:Z,sourceLayerIndex:M}of e){let D=this.layers[0]._featureFilter.needGeometry,J=MA(F,D);if(!this.layers[0]._featureFilter.filter(new vr(this.zoom),J,h))continue;let $=w?C.evaluate(J,{},h,l.availableImages):void 0,st={id:T,properties:F.properties,type:F.type,sourceLayerIndex:M,index:Z,geometry:D?J.geometry:fl(F),patterns:{},sortKey:$};B.push(st)}w&&B.sort((F,T)=>F.sortKey-T.sortKey);for(let F of B){let{geometry:T,index:Z,sourceLayerIndex:M}=F;if(this.hasPattern){let D=wm("fill",this.layers,F,this.zoom,l);this.patternFeatures.push(D)}else this.addFeature(F,T,Z,h,{});l.featureIndex.insert(e[Z].feature,T,Z,M,this.index)}}update(e,l,h){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,l,this.stateDependentLayers,h)}addFeatures(e,l,h){for(let C of this.patternFeatures)this.addFeature(C,C.geometry,C.index,l,h)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,pS),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,l,h,C,w){for(let B of Xo(l,500)){let F=0;for(let $ of B)F+=$.length;let T=this.segments.prepareSegment(F,this.layoutVertexArray,this.indexArray),Z=T.vertexLength,M=[],D=[];for(let $ of B){if($.length===0)continue;$!==B[0]&&D.push(M.length/2);let st=this.segments2.prepareSegment($.length,this.layoutVertexArray,this.indexArray2),ut=st.vertexLength;this.layoutVertexArray.emplaceBack($[0].x,$[0].y),this.indexArray2.emplaceBack(ut+$.length-1,ut),M.push($[0].x),M.push($[0].y);for(let Ft=1;Ft<$.length;Ft++)this.layoutVertexArray.emplaceBack($[Ft].x,$[Ft].y),this.indexArray2.emplaceBack(ut+Ft-1,ut+Ft),M.push($[Ft].x),M.push($[Ft].y);st.vertexLength+=$.length,st.primitiveLength+=$.length}let J=o1(M,D);for(let $=0;$>3}if(C--,h===1||h===2)w+=a.readSVarint(),B+=a.readSVarint(),h===1&&(e&&F.push(e),e=[]),e.push(new LS(w,B));else{if(h!==7)throw new Error("unknown command "+h);e&&e.push(e[0].clone())}}return e&&F.push(e),F},Bu.prototype.bbox=function(){var a=this._pbf;a.pos=this._geometry;for(var e=a.readVarint()+a.pos,l=1,h=0,C=0,w=0,B=1/0,F=-1/0,T=1/0,Z=-1/0;a.pos>3}if(h--,l===1||l===2)(C+=a.readSVarint())F&&(F=C),(w+=a.readSVarint())Z&&(Z=w);else if(l!==7)throw new Error("unknown command "+l)}return[B,T,F,Z]},Bu.prototype.toGeoJSON=function(a,e,l){var h,C,w=this.extent*Math.pow(2,l),B=this.extent*a,F=this.extent*e,T=this.loadGeometry(),Z=Bu.types[this.type];function M($){for(var st=0;st<$.length;st++){var ut=$[st];$[st]=[360*(ut.x+B)/w-180,360/Math.PI*Math.atan(Math.exp((180-360*(ut.y+F)/w)*Math.PI/180))-90]}}switch(this.type){case 1:var D=[];for(h=0;h>3;C=B===1?h.readString():B===2?h.readFloat():B===3?h.readDouble():B===4?h.readVarint64():B===5?h.readVarint():B===6?h.readSVarint():B===7?h.readBoolean():null}return C}(l))}p1.prototype.feature=function(a){if(a<0||a>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[a];var e=this._pbf.readVarint()+this._pbf.pos;return new US(this._pbf,e,this.extent,this._keys,this._values)};var RS=d1;function GS(a,e,l){if(a===3){var h=new RS(l,l.readVarint()+l.pos);h.length&&(e[h.name]=h)}}Wl.VectorTile=function(a,e){this.layers=a.readFields(GS,{},e)},Wl.VectorTileFeature=g1,Wl.VectorTileLayer=d1;let ZS=Wl.VectorTileFeature.types,_m=Math.pow(2,13);function Gh(a,e,l,h,C,w,B,F){a.emplaceBack(e,l,2*Math.floor(h*_m)+B,C*_m*2,w*_m*2,Math.round(F))}class xm{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(l=>l.id),this.index=e.index,this.hasPattern=!1,this.layoutVertexArray=new On,this.centroidVertexArray=new rn,this.indexArray=new yn,this.programConfigurations=new Ta(e.layers,e.zoom),this.segments=new xr,this.stateDependentLayerIds=this.layers.filter(l=>l.isStateDependent()).map(l=>l.id)}populate(e,l,h){this.features=[],this.hasPattern=vm("fill-extrusion",this.layers,l);for(let{feature:C,id:w,index:B,sourceLayerIndex:F}of e){let T=this.layers[0]._featureFilter.needGeometry,Z=MA(C,T);if(!this.layers[0]._featureFilter.filter(new vr(this.zoom),Z,h))continue;let M={id:w,sourceLayerIndex:F,index:B,geometry:T?Z.geometry:fl(C),properties:C.properties,type:C.type,patterns:{}};this.hasPattern?this.features.push(wm("fill-extrusion",this.layers,M,this.zoom,l)):this.addFeature(M,M.geometry,B,h,{}),l.featureIndex.insert(C,M.geometry,B,F,this.index,!0)}}addFeatures(e,l,h){for(let C of this.features){let{geometry:w}=C;this.addFeature(C,w,C.index,l,h)}}update(e,l,h){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,l,this.stateDependentLayers,h)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,kS),this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,FS.members,!0),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(),this.centroidVertexBuffer.destroy())}addFeature(e,l,h,C,w){for(let B of Xo(l,500)){let F={x:0,y:0,vertexCount:0},T=0;for(let st of B)T+=st.length;let Z=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let st of B){if(st.length===0||HS(st))continue;let ut=0;for(let Ft=0;Ft=1){let Ae=st[Ft-1];if(!PS(Gt,Ae)){Z.vertexLength+4>xr.MAX_VERTEX_ARRAY_LENGTH&&(Z=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let Ot=Gt.sub(Ae)._perp()._unit(),te=Ae.dist(Gt);ut+te>32768&&(ut=0),Gh(this.layoutVertexArray,Gt.x,Gt.y,Ot.x,Ot.y,0,0,ut),Gh(this.layoutVertexArray,Gt.x,Gt.y,Ot.x,Ot.y,0,1,ut),F.x+=2*Gt.x,F.y+=2*Gt.y,F.vertexCount+=2,ut+=te,Gh(this.layoutVertexArray,Ae.x,Ae.y,Ot.x,Ot.y,0,0,ut),Gh(this.layoutVertexArray,Ae.x,Ae.y,Ot.x,Ot.y,0,1,ut),F.x+=2*Ae.x,F.y+=2*Ae.y,F.vertexCount+=2;let me=Z.vertexLength;this.indexArray.emplaceBack(me,me+2,me+1),this.indexArray.emplaceBack(me+1,me+2,me+3),Z.vertexLength+=4,Z.primitiveLength+=2}}}}if(Z.vertexLength+T>xr.MAX_VERTEX_ARRAY_LENGTH&&(Z=this.segments.prepareSegment(T,this.layoutVertexArray,this.indexArray)),ZS[e.type]!=="Polygon")continue;let M=[],D=[],J=Z.vertexLength;for(let st of B)if(st.length!==0){st!==B[0]&&D.push(M.length/2);for(let ut=0;utPr)||a.y===e.y&&(a.y<0||a.y>Pr)}function HS(a){return a.every(e=>e.x<0)||a.every(e=>e.x>Pr)||a.every(e=>e.y<0)||a.every(e=>e.y>Pr)}let f1;Ai("FillExtrusionBucket",xm,{omit:["layers","features"]});var MS={get paint(){return f1=f1||new p({"fill-extrusion-opacity":new yi(Kt["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Zi(Kt["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new yi(Kt["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new yi(Kt["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new v(Kt["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Zi(Kt["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Zi(Kt["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new yi(Kt["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class NS extends b{constructor(e){super(e,MS)}createBucket(e){return new xm(e)}queryRadius(){return Uc(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(e,l,h,C,w,B,F,T){let Z=Iu(e,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),B.angle,F),M=this.paint.get("fill-extrusion-height").evaluate(l,h),D=this.paint.get("fill-extrusion-base").evaluate(l,h),J=function(st,ut,Ft,Gt){let Ae=[];for(let Ot of st){let te=[Ot.x,Ot.y,0,1];sd(te,te,ut),Ae.push(new _(te[0]/te[3],te[1]/te[3]))}return Ae}(Z,T),$=function(st,ut,Ft,Gt){let Ae=[],Ot=[],te=Gt[8]*ut,me=Gt[9]*ut,Pe=Gt[10]*ut,oi=Gt[11]*ut,Pi=Gt[8]*Ft,ni=Gt[9]*Ft,ei=Gt[10]*Ft,wi=Gt[11]*Ft;for(let di of st){let li=[],Se=[];for(let Si of di){let vi=Si.x,Oi=Si.y,Dr=Gt[0]*vi+Gt[4]*Oi+Gt[12],Mr=Gt[1]*vi+Gt[5]*Oi+Gt[13],Jn=Gt[2]*vi+Gt[6]*Oi+Gt[14],Qa=Gt[3]*vi+Gt[7]*Oi+Gt[15],us=Jn+Pe,fn=Qa+oi,zs=Dr+Pi,Os=Mr+ni,Ws=Jn+ei,mn=Qa+wi,Xn=new _((Dr+te)/fn,(Mr+me)/fn);Xn.z=us/fn,li.push(Xn);let Ls=new _(zs/mn,Os/mn);Ls.z=Ws/mn,Se.push(Ls)}Ae.push(li),Ot.push(Se)}return[Ae,Ot]}(C,D,M,T);return function(st,ut,Ft){let Gt=1/0;kh(Ft,ut)&&(Gt=m1(Ft,ut[0]));for(let Ae=0;Ael.id),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(l=>{this.gradients[l.id]={}}),this.layoutVertexArray=new gn,this.layoutVertexArray2=new mo,this.indexArray=new yn,this.programConfigurations=new Ta(e.layers,e.zoom),this.segments=new xr,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(l=>l.isStateDependent()).map(l=>l.id)}populate(e,l,h){this.hasPattern=vm("line",this.layers,l);let C=this.layers[0].layout.get("line-sort-key"),w=!C.isConstant(),B=[];for(let{feature:F,id:T,index:Z,sourceLayerIndex:M}of e){let D=this.layers[0]._featureFilter.needGeometry,J=MA(F,D);if(!this.layers[0]._featureFilter.filter(new vr(this.zoom),J,h))continue;let $=w?C.evaluate(J,{},h):void 0,st={id:T,properties:F.properties,type:F.type,sourceLayerIndex:M,index:Z,geometry:D?J.geometry:fl(F),patterns:{},sortKey:$};B.push(st)}w&&B.sort((F,T)=>F.sortKey-T.sortKey);for(let F of B){let{geometry:T,index:Z,sourceLayerIndex:M}=F;if(this.hasPattern){let D=wm("line",this.layers,F,this.zoom,l);this.patternFeatures.push(D)}else this.addFeature(F,T,Z,h,{});l.featureIndex.insert(e[Z].feature,T,Z,M,this.index)}}update(e,l,h){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,l,this.stateDependentLayers,h)}addFeatures(e,l,h){for(let C of this.patternFeatures)this.addFeature(C,C.geometry,C.index,l,h)}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,zS)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,DS),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&&Object.prototype.hasOwnProperty.call(e.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(e.properties,"mapbox_clip_end"))return{start:+e.properties.mapbox_clip_start,end:+e.properties.mapbox_clip_end}}addFeature(e,l,h,C,w){let B=this.layers[0].layout,F=B.get("line-join").evaluate(e,{}),T=B.get("line-cap"),Z=B.get("line-miter-limit"),M=B.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(let D of l)this.addLine(D,e,F,T,Z,M);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,h,w,C)}addLine(e,l,h,C,w,B){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let Gt=0;Gt=2&&e[T-1].equals(e[T-2]);)T--;let Z=0;for(;Z0;if(oi&&Gt>Z){let wi=J.dist($);if(wi>2*M){let di=J.sub(J.sub($)._mult(M/wi)._round());this.updateDistance($,di),this.addCurrentVertex(di,ut,0,0,D),$=di}}let ni=$&&st,ei=ni?h:F?"butt":C;if(ni&&ei==="round"&&(mew&&(ei="bevel"),ei==="bevel"&&(me>2&&(ei="flipbevel"),me100)Ae=Ft.mult(-1);else{let wi=me*ut.add(Ft).mag()/ut.sub(Ft).mag();Ae._perp()._mult(wi*(Pi?-1:1))}this.addCurrentVertex(J,Ae,0,0,D),this.addCurrentVertex(J,Ae.mult(-1),0,0,D)}else if(ei==="bevel"||ei==="fakeround"){let wi=-Math.sqrt(me*me-1),di=Pi?wi:0,li=Pi?0:wi;if($&&this.addCurrentVertex(J,ut,di,li,D),ei==="fakeround"){let Se=Math.round(180*Pe/Math.PI/20);for(let Si=1;Si2*M){let di=J.add(st.sub(J)._mult(M/wi)._round());this.updateDistance(J,di),this.addCurrentVertex(di,Ft,0,0,D),J=di}}}}addCurrentVertex(e,l,h,C,w,B=!1){let F=l.y*C-l.x,T=-l.y-l.x*C;this.addHalfVertex(e,l.x+l.y*h,l.y-l.x*h,B,!1,h,w),this.addHalfVertex(e,F,T,B,!0,-C,w),this.distance>C1/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(e,l,h,C,w,B))}addHalfVertex({x:e,y:l},h,C,w,B,F,T){let Z=.5*(this.lineClips?this.scaledDistance*(C1-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((e<<1)+(w?1:0),(l<<1)+(B?1:0),Math.round(63*h)+128,Math.round(63*C)+128,1+(F===0?0:F<0?-1:1)|(63&Z)<<2,Z>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let M=T.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,M),T.primitiveLength++),B?this.e2=M:this.e1=M}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(e,l){this.distance+=e.dist(l),this.updateScaledDistance()}}let I1,y1;Ai("LineBucket",Sm,{omit:["layers","patternFeatures"]});var b1={get paint(){return y1=y1||new p({"line-opacity":new Zi(Kt.paint_line["line-opacity"]),"line-color":new Zi(Kt.paint_line["line-color"]),"line-translate":new yi(Kt.paint_line["line-translate"]),"line-translate-anchor":new yi(Kt.paint_line["line-translate-anchor"]),"line-width":new Zi(Kt.paint_line["line-width"]),"line-gap-width":new Zi(Kt.paint_line["line-gap-width"]),"line-offset":new Zi(Kt.paint_line["line-offset"]),"line-blur":new Zi(Kt.paint_line["line-blur"]),"line-dasharray":new i(Kt.paint_line["line-dasharray"]),"line-pattern":new v(Kt.paint_line["line-pattern"]),"line-gradient":new c(Kt.paint_line["line-gradient"])})},get layout(){return I1=I1||new p({"line-cap":new yi(Kt.layout_line["line-cap"]),"line-join":new Zi(Kt.layout_line["line-join"]),"line-miter-limit":new yi(Kt.layout_line["line-miter-limit"]),"line-round-limit":new yi(Kt.layout_line["line-round-limit"]),"line-sort-key":new Zi(Kt.layout_line["line-sort-key"])})}};class JS extends Zi{possiblyEvaluate(e,l){return l=new vr(Math.floor(l.zoom),{now:l.now,fadeDuration:l.fadeDuration,zoomHistory:l.zoomHistory,transition:l.transition}),super.possiblyEvaluate(e,l)}evaluate(e,l,h,C){return l=Lt({},l,{zoom:Math.floor(l.zoom)}),super.evaluate(e,l,h,C)}}let ld;class XS extends b{constructor(e){super(e,b1),this.gradientVersion=0,ld||(ld=new JS(b1.paint.properties["line-width"].specification),ld.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(e){if(e==="line-gradient"){let l=this.gradientExpression();this.stepInterpolant=!!function(h){return h._styleExpression!==void 0}(l)&&l._styleExpression.expression instanceof ve,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(e,l){super.recalculate(e,l),this.paint._values["line-floorwidth"]=ld.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)}createBucket(e){return new Sm(e)}queryRadius(e){let l=e,h=v1(Cl("line-width",this,l),Cl("line-gap-width",this,l)),C=Cl("line-offset",this,l);return h/2+Math.abs(C)+Uc(this.paint.get("line-translate"))}queryIntersectsFeature(e,l,h,C,w,B,F){let T=Iu(e,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),B.angle,F),Z=F/2*v1(this.paint.get("line-width").evaluate(l,h),this.paint.get("line-gap-width").evaluate(l,h)),M=this.paint.get("line-offset").evaluate(l,h);return M&&(C=function(D,J){let $=[];for(let st=0;st=3){for(let Ft=0;Ft0?e+2*a:a}let YS=x([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),jS=x([{name:"a_projected_pos",components:3,type:"Float32"}],4);x([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let qS=x([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);x([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let w1=x([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),$S=x([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function tF(a,e,l){return a.sections.forEach(h=>{h.text=function(C,w,B){let F=w.layout.get("text-transform").evaluate(B,{});return F==="uppercase"?C=C.toLocaleUpperCase():F==="lowercase"&&(C=C.toLocaleLowerCase()),fo.applyArabicShaping&&(C=fo.applyArabicShaping(C)),C}(h.text,e,l)}),a}x([{name:"triangle",components:3,type:"Uint16"}]),x([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{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"}]),x([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{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",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),x([{type:"Float32",name:"offsetX"}]),x([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),x([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);let Ph={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};var Qn=24,B1=Hr,_1=function(a,e,l,h,C){var w,B,F=8*C-h-1,T=(1<>1,M=-7,D=l?C-1:0,J=l?-1:1,$=a[e+D];for(D+=J,w=$&(1<<-M)-1,$>>=-M,M+=F;M>0;w=256*w+a[e+D],D+=J,M-=8);for(B=w&(1<<-M)-1,w>>=-M,M+=h;M>0;B=256*B+a[e+D],D+=J,M-=8);if(w===0)w=1-Z;else{if(w===T)return B?NaN:1/0*($?-1:1);B+=Math.pow(2,h),w-=Z}return($?-1:1)*B*Math.pow(2,w-h)},x1=function(a,e,l,h,C,w){var B,F,T,Z=8*w-C-1,M=(1<>1,J=C===23?Math.pow(2,-24)-Math.pow(2,-77):0,$=h?0:w-1,st=h?1:-1,ut=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(F=isNaN(e)?1:0,B=M):(B=Math.floor(Math.log(e)/Math.LN2),e*(T=Math.pow(2,-B))<1&&(B--,T*=2),(e+=B+D>=1?J/T:J*Math.pow(2,1-D))*T>=2&&(B++,T/=2),B+D>=M?(F=0,B=M):B+D>=1?(F=(e*T-1)*Math.pow(2,C),B+=D):(F=e*Math.pow(2,D-1)*Math.pow(2,C),B=0));C>=8;a[l+$]=255&F,$+=st,F/=256,C-=8);for(B=B<0;a[l+$]=255&B,$+=st,B/=256,Z-=8);a[l+$-st]|=128*ut};function Hr(a){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(a)?a:new Uint8Array(a||0),this.pos=0,this.type=0,this.length=this.buf.length}Hr.Varint=0,Hr.Fixed64=1,Hr.Bytes=2,Hr.Fixed32=5;var Fm=4294967296,S1=1/Fm,F1=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function Il(a){return a.type===Hr.Bytes?a.readVarint()+a.pos:a.pos+1}function _u(a,e,l){return l?4294967296*e+(a>>>0):4294967296*(e>>>0)+(a>>>0)}function k1(a,e,l){var h=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));l.realloc(h);for(var C=l.pos-1;C>=a;C--)l.buf[C+h]=l.buf[C]}function eF(a,e){for(var l=0;l>>8,a[l+2]=e>>>16,a[l+3]=e>>>24}function L1(a,e){return(a[e]|a[e+1]<<8|a[e+2]<<16)+(a[e+3]<<24)}Hr.prototype={destroy:function(){this.buf=null},readFields:function(a,e,l){for(l=l||this.length;this.pos>3,w=this.pos;this.type=7&h,a(C,e,this),this.pos===w&&this.skip(h)}return e},readMessage:function(a,e){return this.readFields(a,e,this.readVarint()+this.pos)},readFixed32:function(){var a=cd(this.buf,this.pos);return this.pos+=4,a},readSFixed32:function(){var a=L1(this.buf,this.pos);return this.pos+=4,a},readFixed64:function(){var a=cd(this.buf,this.pos)+cd(this.buf,this.pos+4)*Fm;return this.pos+=8,a},readSFixed64:function(){var a=cd(this.buf,this.pos)+L1(this.buf,this.pos+4)*Fm;return this.pos+=8,a},readFloat:function(){var a=_1(this.buf,this.pos,!0,23,4);return this.pos+=4,a},readDouble:function(){var a=_1(this.buf,this.pos,!0,52,8);return this.pos+=8,a},readVarint:function(a){var e,l,h=this.buf;return e=127&(l=h[this.pos++]),l<128?e:(e|=(127&(l=h[this.pos++]))<<7,l<128?e:(e|=(127&(l=h[this.pos++]))<<14,l<128?e:(e|=(127&(l=h[this.pos++]))<<21,l<128?e:function(C,w,B){var F,T,Z=B.buf;if(F=(112&(T=Z[B.pos++]))>>4,T<128||(F|=(127&(T=Z[B.pos++]))<<3,T<128)||(F|=(127&(T=Z[B.pos++]))<<10,T<128)||(F|=(127&(T=Z[B.pos++]))<<17,T<128)||(F|=(127&(T=Z[B.pos++]))<<24,T<128)||(F|=(1&(T=Z[B.pos++]))<<31,T<128))return _u(C,F,w);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(l=h[this.pos]))<<28,a,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var a=this.readVarint();return a%2==1?(a+1)/-2:a/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var a=this.readVarint()+this.pos,e=this.pos;return this.pos=a,a-e>=12&&F1?function(l,h,C){return F1.decode(l.subarray(h,C))}(this.buf,e,a):function(l,h,C){for(var w="",B=h;B239?4:M>223?3:M>191?2:1;if(B+J>C)break;J===1?M<128&&(D=M):J===2?(192&(F=l[B+1]))==128&&(D=(31&M)<<6|63&F)<=127&&(D=null):J===3?(T=l[B+2],(192&(F=l[B+1]))==128&&(192&T)==128&&((D=(15&M)<<12|(63&F)<<6|63&T)<=2047||D>=55296&&D<=57343)&&(D=null)):J===4&&(T=l[B+2],Z=l[B+3],(192&(F=l[B+1]))==128&&(192&T)==128&&(192&Z)==128&&((D=(15&M)<<18|(63&F)<<12|(63&T)<<6|63&Z)<=65535||D>=1114112)&&(D=null)),D===null?(D=65533,J=1):D>65535&&(D-=65536,w+=String.fromCharCode(D>>>10&1023|55296),D=56320|1023&D),w+=String.fromCharCode(D),B+=J}return w}(this.buf,e,a)},readBytes:function(){var a=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,a);return this.pos=a,e},readPackedVarint:function(a,e){if(this.type!==Hr.Bytes)return a.push(this.readVarint(e));var l=Il(this);for(a=a||[];this.pos127;);else if(e===Hr.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Hr.Fixed32)this.pos+=4;else{if(e!==Hr.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(a,e){this.writeVarint(a<<3|e)},realloc:function(a){for(var e=this.length||16;e268435455||a<0?function(e,l){var h,C;if(e>=0?(h=e%4294967296|0,C=e/4294967296|0):(C=~(-e/4294967296),4294967295^(h=~(-e%4294967296))?h=h+1|0:(h=0,C=C+1|0)),e>=18446744073709552e3||e<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");l.realloc(10),function(w,B,F){F.buf[F.pos++]=127&w|128,w>>>=7,F.buf[F.pos++]=127&w|128,w>>>=7,F.buf[F.pos++]=127&w|128,w>>>=7,F.buf[F.pos++]=127&w|128,F.buf[F.pos]=127&(w>>>=7)}(h,0,l),function(w,B){var F=(7&w)<<4;B.buf[B.pos++]|=F|((w>>>=3)?128:0),w&&(B.buf[B.pos++]=127&w|((w>>>=7)?128:0),w&&(B.buf[B.pos++]=127&w|((w>>>=7)?128:0),w&&(B.buf[B.pos++]=127&w|((w>>>=7)?128:0),w&&(B.buf[B.pos++]=127&w|((w>>>=7)?128:0),w&&(B.buf[B.pos++]=127&w)))))}(C,l)}(a,this):(this.realloc(4),this.buf[this.pos++]=127&a|(a>127?128:0),a<=127||(this.buf[this.pos++]=127&(a>>>=7)|(a>127?128:0),a<=127||(this.buf[this.pos++]=127&(a>>>=7)|(a>127?128:0),a<=127||(this.buf[this.pos++]=a>>>7&127))))},writeSVarint:function(a){this.writeVarint(a<0?2*-a-1:2*a)},writeBoolean:function(a){this.writeVarint(Boolean(a))},writeString:function(a){a=String(a),this.realloc(4*a.length),this.pos++;var e=this.pos;this.pos=function(h,C,w){for(var B,F,T=0;T55295&&B<57344){if(!F){B>56319||T+1===C.length?(h[w++]=239,h[w++]=191,h[w++]=189):F=B;continue}if(B<56320){h[w++]=239,h[w++]=191,h[w++]=189,F=B;continue}B=F-55296<<10|B-56320|65536,F=null}else F&&(h[w++]=239,h[w++]=191,h[w++]=189,F=null);B<128?h[w++]=B:(B<2048?h[w++]=B>>6|192:(B<65536?h[w++]=B>>12|224:(h[w++]=B>>18|240,h[w++]=B>>12&63|128),h[w++]=B>>6&63|128),h[w++]=63&B|128)}return w}(this.buf,a,this.pos);var l=this.pos-e;l>=128&&k1(e,l,this),this.pos=e-1,this.writeVarint(l),this.pos+=l},writeFloat:function(a){this.realloc(4),x1(this.buf,a,this.pos,!0,23,4),this.pos+=4},writeDouble:function(a){this.realloc(8),x1(this.buf,a,this.pos,!0,52,8),this.pos+=8},writeBytes:function(a){var e=a.length;this.writeVarint(e),this.realloc(e);for(var l=0;l=128&&k1(l,h,this),this.pos=l-1,this.writeVarint(h),this.pos+=h},writeMessage:function(a,e,l){this.writeTag(a,Hr.Bytes),this.writeRawMessage(e,l)},writePackedVarint:function(a,e){e.length&&this.writeMessage(a,eF,e)},writePackedSVarint:function(a,e){e.length&&this.writeMessage(a,iF,e)},writePackedBoolean:function(a,e){e.length&&this.writeMessage(a,sF,e)},writePackedFloat:function(a,e){e.length&&this.writeMessage(a,rF,e)},writePackedDouble:function(a,e){e.length&&this.writeMessage(a,nF,e)},writePackedFixed32:function(a,e){e.length&&this.writeMessage(a,oF,e)},writePackedSFixed32:function(a,e){e.length&&this.writeMessage(a,aF,e)},writePackedFixed64:function(a,e){e.length&&this.writeMessage(a,AF,e)},writePackedSFixed64:function(a,e){e.length&&this.writeMessage(a,lF,e)},writeBytesField:function(a,e){this.writeTag(a,Hr.Bytes),this.writeBytes(e)},writeFixed32Field:function(a,e){this.writeTag(a,Hr.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(a,e){this.writeTag(a,Hr.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(a,e){this.writeTag(a,Hr.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(a,e){this.writeTag(a,Hr.Fixed64),this.writeSFixed64(e)},writeVarintField:function(a,e){this.writeTag(a,Hr.Varint),this.writeVarint(e)},writeSVarintField:function(a,e){this.writeTag(a,Hr.Varint),this.writeSVarint(e)},writeStringField:function(a,e){this.writeTag(a,Hr.Bytes),this.writeString(e)},writeFloatField:function(a,e){this.writeTag(a,Hr.Fixed32),this.writeFloat(e)},writeDoubleField:function(a,e){this.writeTag(a,Hr.Fixed64),this.writeDouble(e)},writeBooleanField:function(a,e){this.writeVarintField(a,Boolean(e))}};var km=d(B1);let Lm=3;function cF(a,e,l){a===1&&l.readMessage(uF,e)}function uF(a,e,l){if(a===3){let{id:h,bitmap:C,width:w,height:B,left:F,top:T,advance:Z}=l.readMessage(hF,{});e.push({id:h,bitmap:new Th({width:w+2*Lm,height:B+2*Lm},C),metrics:{width:w,height:B,left:F,top:T,advance:Z}})}}function hF(a,e,l){a===1?e.id=l.readVarint():a===2?e.bitmap=l.readBytes():a===3?e.width=l.readVarint():a===4?e.height=l.readVarint():a===5?e.left=l.readSVarint():a===6?e.top=l.readSVarint():a===7&&(e.advance=l.readVarint())}let E1=Lm;function T1(a){let e=0,l=0;for(let B of a)e+=B.w*B.h,l=Math.max(l,B.w);a.sort((B,F)=>F.h-B.h);let h=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),l),h:1/0}],C=0,w=0;for(let B of a)for(let F=h.length-1;F>=0;F--){let T=h[F];if(!(B.w>T.w||B.h>T.h)){if(B.x=T.x,B.y=T.y,w=Math.max(w,B.y+B.h),C=Math.max(C,B.x+B.w),B.w===T.w&&B.h===T.h){let Z=h.pop();F=0&&h>=e&&hd[this.text.charCodeAt(h)];h--)l--;this.text=this.text.substring(e,l),this.sectionIndex=this.sectionIndex.slice(e,l)}substring(e,l){let h=new Su;return h.text=this.text.substring(e,l),h.sectionIndex=this.sectionIndex.slice(e,l),h.sections=this.sections,h}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((e,l)=>Math.max(e,this.sections[l].scale),0)}addTextSection(e,l){this.text+=e.text,this.sections.push(Mh.forText(e.scale,e.fontStack||l));let h=this.sections.length-1;for(let C=0;C=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function ud(a,e,l,h,C,w,B,F,T,Z,M,D,J,$,st){let ut=Su.fromFeature(a,C),Ft;D===A.ai.vertical&&ut.verticalizePunctuation();let{processBidirectionalText:Gt,processStyledBidirectionalText:Ae}=fo;if(Gt&&ut.sections.length===1){Ft=[];let me=Gt(ut.toString(),Tm(ut,Z,w,e,h,$));for(let Pe of me){let oi=new Su;oi.text=Pe,oi.sections=ut.sections;for(let Pi=0;Pi0&&yl>gs&&(gs=yl)}else{let la=oi[Cr.fontStack],is=la&&la[Xr];if(is&&is.rect)Eu=is.rect,dn=is.metrics;else{let yl=Pe[Cr.fontStack],zh=yl&&yl[Xr];if(!zh)continue;dn=zh.metrics}Ho=(Xn-Cr.scale)*Qn}Ra?(me.verticalizable=!0,Js.push({glyph:Xr,imageName:VA,x:Oi,y:Dr+Ho,vertical:Ra,scale:Cr.scale,fontStack:Cr.fontStack,sectionIndex:zr,metrics:dn,rect:Eu}),Oi+=DA*Cr.scale+Se):(Js.push({glyph:Xr,imageName:VA,x:Oi,y:Dr+Ho,vertical:Ra,scale:Cr.scale,fontStack:Cr.fontStack,sectionIndex:zr,metrics:dn,rect:Eu}),Oi+=dn.advance*Cr.scale+Se)}Js.length!==0&&(Mr=Math.max(Oi-Se,Mr),fF(Js,0,Js.length-1,Qa,gs)),Oi=0;let Aa=ei*Xn+gs;hs.lineOffset=Math.max(gs,Ls),Dr+=Aa,Jn=Math.max(Aa,Jn),++us}var fn;let zs=Dr-Hh,{horizontalAlign:Os,verticalAlign:Ws}=Um(wi);(function(mn,Xn,Ls,hs,Js,gs,Aa,bo,Cr){let zr=(Xn-Ls)*Js,Xr=0;Xr=gs!==Aa?-bo*hs-Hh:(-hs*Cr+.5)*Aa;for(let Ho of mn)for(let dn of Ho.positionedGlyphs)dn.x+=zr,dn.y+=Xr})(me.positionedLines,Qa,Os,Ws,Mr,Jn,ei,zs,ni.length),me.top+=-Ws*zs,me.bottom=me.top+zs,me.left+=-Os*Mr,me.right=me.left+Mr}(te,e,l,h,Ft,B,F,T,D,Z,J,st),!function(me){for(let Pe of me)if(Pe.positionedGlyphs.length!==0)return!1;return!0}(Ot)&&te}let hd={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},gF={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},dF={40:!0};function Q1(a,e,l,h,C,w){if(e.imageName){let B=h[e.imageName];return B?B.displaySize[0]*e.scale*Qn/w+C:0}{let B=l[e.fontStack],F=B&&B[a];return F?F.metrics.advance*e.scale+C:0}}function R1(a,e,l,h){let C=Math.pow(a-e,2);return h?a=0,Z=0;for(let D=0;DZ){let M=Math.ceil(w/Z);C*=M/B,B=M}return{x1:h,y1:C,x2:h+w,y2:C+B}}function H1(a,e,l,h,C,w){let B=a.image,F;if(B.content){let Ft=B.content,Gt=B.pixelRatio||1;F=[Ft[0]/Gt,Ft[1]/Gt,B.displaySize[0]-Ft[2]/Gt,B.displaySize[1]-Ft[3]/Gt]}let T=e.left*w,Z=e.right*w,M,D,J,$;l==="width"||l==="both"?($=C[0]+T-h[3],D=C[0]+Z+h[1]):($=C[0]+(T+Z-B.displaySize[0])/2,D=$+B.displaySize[0]);let st=e.top*w,ut=e.bottom*w;return l==="height"||l==="both"?(M=C[1]+st-h[0],J=C[1]+ut+h[2]):(M=C[1]+(st+ut-B.displaySize[1])/2,J=M+B.displaySize[1]),{image:B,top:M,right:D,bottom:J,left:$,collisionPadding:F}}let Nh=255,NA=128,Xl=Nh*NA;function M1(a,e){let{expression:l}=e;if(l.kind==="constant")return{kind:"constant",layoutSize:l.evaluate(new vr(a+1))};if(l.kind==="source")return{kind:"source"};{let{zoomStops:h,interpolationType:C}=l,w=0;for(;wB.id),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=mm([]),this.placementViewportMatrix=mm([]);let l=this.layers[0]._unevaluatedLayout._values;this.textSizeData=M1(this.zoom,l["text-size"]),this.iconSizeData=M1(this.zoom,l["icon-size"]);let h=this.layers[0].layout,C=h.get("symbol-sort-key"),w=h.get("symbol-z-order");this.canOverlap=Qm(h,"text-overlap","text-allow-overlap")!=="never"||Qm(h,"icon-overlap","icon-allow-overlap")!=="never"||h.get("text-ignore-placement")||h.get("icon-ignore-placement"),this.sortFeaturesByKey=w!=="viewport-y"&&!C.isConstant(),this.sortFeaturesByY=(w==="viewport-y"||w==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,h.get("symbol-placement")==="point"&&(this.writingModes=h.get("text-writing-mode").map(B=>A.ai[B])),this.stateDependentLayerIds=this.layers.filter(B=>B.isStateDependent()).map(B=>B.id),this.sourceID=e.sourceID}createArrays(){this.text=new Gm(new Ta(this.layers,this.zoom,e=>/^text/.test(e))),this.icon=new Gm(new Ta(this.layers,this.zoom,e=>/^icon/.test(e))),this.glyphOffsetArray=new Yi,this.lineVertexArray=new Rr,this.symbolInstances=new Jr,this.textAnchorOffsets=new Lr}calculateGlyphDependencies(e,l,h,C,w){for(let B=0;B0)&&(B.value.kind!=="constant"||B.value.value.length>0),M=T.value.kind!=="constant"||!!T.value.value||Object.keys(T.parameters).length>0,D=w.get("symbol-sort-key");if(this.features=[],!Z&&!M)return;let J=l.iconDependencies,$=l.glyphDependencies,st=l.availableImages,ut=new vr(this.zoom);for(let{feature:Ft,id:Gt,index:Ae,sourceLayerIndex:Ot}of e){let te=C._featureFilter.needGeometry,me=MA(Ft,te);if(!C._featureFilter.filter(ut,me,h))continue;let Pe,oi;if(te||(me.geometry=fl(Ft)),Z){let ni=C.getValueAndResolveTokens("text-field",me,h,st),ei=$r.factory(ni),wi=this.hasRTLText=this.hasRTLText||yF(ei);(!wi||fo.getRTLTextPluginStatus()==="unavailable"||wi&&fo.isParsed())&&(Pe=tF(ei,C,me))}if(M){let ni=C.getValueAndResolveTokens("icon-image",me,h,st);oi=ni instanceof An?ni:An.fromString(ni)}if(!Pe&&!oi)continue;let Pi=this.sortFeaturesByKey?D.evaluate(me,{},h):void 0;if(this.features.push({id:Gt,text:Pe,icon:oi,index:Ae,sourceLayerIndex:Ot,geometry:me.geometry,properties:Ft.properties,type:CF[Ft.type],sortKey:Pi}),oi&&(J[oi.name]=!0),Pe){let ni=B.evaluate(me,{},h).join(","),ei=w.get("text-rotation-alignment")!=="viewport"&&w.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(A.ai.vertical)>=0;for(let wi of Pe.sections)if(wi.image)J[wi.image.name]=!0;else{let di=ls(Pe.toString()),li=wi.fontStack||ni,Se=$[li]=$[li]||{};this.calculateGlyphDependencies(wi.text,Se,ei,this.allowVerticalPlacement,di)}}}w.get("symbol-placement")==="line"&&(this.features=function(Ft){let Gt={},Ae={},Ot=[],te=0;function me(ni){Ot.push(Ft[ni]),te++}function Pe(ni,ei,wi){let di=Ae[ni];return delete Ae[ni],Ae[ei]=di,Ot[di].geometry[0].pop(),Ot[di].geometry[0]=Ot[di].geometry[0].concat(wi[0]),di}function oi(ni,ei,wi){let di=Gt[ei];return delete Gt[ei],Gt[ni]=di,Ot[di].geometry[0].shift(),Ot[di].geometry[0]=wi[0].concat(Ot[di].geometry[0]),di}function Pi(ni,ei,wi){let di=wi?ei[0][ei[0].length-1]:ei[0][0];return`${ni}:${di.x}:${di.y}`}for(let ni=0;nini.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((Ft,Gt)=>Ft.sortKey-Gt.sortKey)}update(e,l,h){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,l,this.layers,h),this.icon.programConfigurations.updatePaintArrays(e,l,this.layers,h))}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()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(e,l){let h=this.lineVertexArray.length;if(e.segment!==void 0){let C=e.dist(l[e.segment+1]),w=e.dist(l[e.segment]),B={};for(let F=e.segment+1;F=0;F--)B[F]={x:l[F].x,y:l[F].y,tileUnitDistanceFromAnchor:w},F>0&&(w+=l[F-1].dist(l[F]));for(let F=0;F0}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,l){let h=e.placedSymbolArray.get(l),C=h.vertexStartIndex+4*h.numGlyphs;for(let w=h.vertexStartIndex;wC[F]-C[T]||w[T]-w[F]),B}addToSortKeyRanges(e,l){let h=this.sortKeyRanges[this.sortKeyRanges.length-1];h&&h.sortKey===l?h.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:l,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(let l of this.symbolInstanceIndexes){let h=this.symbolInstances.get(l);this.featureSortOrder.push(h.featureIndex),[h.rightJustifiedTextSymbolIndex,h.centerJustifiedTextSymbolIndex,h.leftJustifiedTextSymbolIndex].forEach((C,w,B)=>{C>=0&&B.indexOf(C)===w&&this.addIndicesForPlacedSymbol(this.text,C)}),h.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,h.verticalPlacedTextSymbolIndex),h.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,h.placedIconSymbolIndex),h.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,h.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let N1,V1;Ai("SymbolBucket",Fu,{omit:["layers","collisionBoxArray","features","compareText"]}),Fu.MAX_GLYPHS=65535,Fu.addDynamicAttributes=Rm;var Pm={get paint(){return V1=V1||new p({"icon-opacity":new Zi(Kt.paint_symbol["icon-opacity"]),"icon-color":new Zi(Kt.paint_symbol["icon-color"]),"icon-halo-color":new Zi(Kt.paint_symbol["icon-halo-color"]),"icon-halo-width":new Zi(Kt.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Zi(Kt.paint_symbol["icon-halo-blur"]),"icon-translate":new yi(Kt.paint_symbol["icon-translate"]),"icon-translate-anchor":new yi(Kt.paint_symbol["icon-translate-anchor"]),"text-opacity":new Zi(Kt.paint_symbol["text-opacity"]),"text-color":new Zi(Kt.paint_symbol["text-color"],{runtimeType:or,getOverride:a=>a.textColor,hasOverride:a=>!!a.textColor}),"text-halo-color":new Zi(Kt.paint_symbol["text-halo-color"]),"text-halo-width":new Zi(Kt.paint_symbol["text-halo-width"]),"text-halo-blur":new Zi(Kt.paint_symbol["text-halo-blur"]),"text-translate":new yi(Kt.paint_symbol["text-translate"]),"text-translate-anchor":new yi(Kt.paint_symbol["text-translate-anchor"])})},get layout(){return N1=N1||new p({"symbol-placement":new yi(Kt.layout_symbol["symbol-placement"]),"symbol-spacing":new yi(Kt.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new yi(Kt.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Zi(Kt.layout_symbol["symbol-sort-key"]),"symbol-z-order":new yi(Kt.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new yi(Kt.layout_symbol["icon-allow-overlap"]),"icon-overlap":new yi(Kt.layout_symbol["icon-overlap"]),"icon-ignore-placement":new yi(Kt.layout_symbol["icon-ignore-placement"]),"icon-optional":new yi(Kt.layout_symbol["icon-optional"]),"icon-rotation-alignment":new yi(Kt.layout_symbol["icon-rotation-alignment"]),"icon-size":new Zi(Kt.layout_symbol["icon-size"]),"icon-text-fit":new yi(Kt.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new yi(Kt.layout_symbol["icon-text-fit-padding"]),"icon-image":new Zi(Kt.layout_symbol["icon-image"]),"icon-rotate":new Zi(Kt.layout_symbol["icon-rotate"]),"icon-padding":new Zi(Kt.layout_symbol["icon-padding"]),"icon-keep-upright":new yi(Kt.layout_symbol["icon-keep-upright"]),"icon-offset":new Zi(Kt.layout_symbol["icon-offset"]),"icon-anchor":new Zi(Kt.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new yi(Kt.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new yi(Kt.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new yi(Kt.layout_symbol["text-rotation-alignment"]),"text-field":new Zi(Kt.layout_symbol["text-field"]),"text-font":new Zi(Kt.layout_symbol["text-font"]),"text-size":new Zi(Kt.layout_symbol["text-size"]),"text-max-width":new Zi(Kt.layout_symbol["text-max-width"]),"text-line-height":new yi(Kt.layout_symbol["text-line-height"]),"text-letter-spacing":new Zi(Kt.layout_symbol["text-letter-spacing"]),"text-justify":new Zi(Kt.layout_symbol["text-justify"]),"text-radial-offset":new Zi(Kt.layout_symbol["text-radial-offset"]),"text-variable-anchor":new yi(Kt.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new Zi(Kt.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new Zi(Kt.layout_symbol["text-anchor"]),"text-max-angle":new yi(Kt.layout_symbol["text-max-angle"]),"text-writing-mode":new yi(Kt.layout_symbol["text-writing-mode"]),"text-rotate":new Zi(Kt.layout_symbol["text-rotate"]),"text-padding":new yi(Kt.layout_symbol["text-padding"]),"text-keep-upright":new yi(Kt.layout_symbol["text-keep-upright"]),"text-transform":new Zi(Kt.layout_symbol["text-transform"]),"text-offset":new Zi(Kt.layout_symbol["text-offset"]),"text-allow-overlap":new yi(Kt.layout_symbol["text-allow-overlap"]),"text-overlap":new yi(Kt.layout_symbol["text-overlap"]),"text-ignore-placement":new yi(Kt.layout_symbol["text-ignore-placement"]),"text-optional":new yi(Kt.layout_symbol["text-optional"])})}};class D1{constructor(e){if(e.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=e.property.overrides?e.property.overrides.runtimeType:Gi,this.defaultValue=e}evaluate(e){if(e.formattedSection){let l=this.defaultValue.property.overrides;if(l&&l.hasOverride(e.formattedSection))return l.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}}Ai("FormatSectionOverride",D1,{omit:["defaultValue"]});class dd extends b{constructor(e){super(e,Pm)}recalculate(e,l){if(super.recalculate(e,l),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")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){let h=this.layout.get("text-writing-mode");if(h){let C=[];for(let w of h)C.indexOf(w)<0&&C.push(w);this.layout._values["text-writing-mode"]=C}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(e,l,h,C){let w=this.layout.get(e).evaluate(l,{},h,C),B=this._unevaluatedLayout._values[e];return B.isDataDriven()||ta(B.value)||!w?w:function(F,T){return T.replace(/{([^{}]+)}/g,(Z,M)=>F&&M in F?String(F[M]):"")}(l.properties,w)}createBucket(e){return new Fu(e)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let e of Pm.paint.overridableProperties){if(!dd.hasPaintOverride(this.layout,e))continue;let l=this.paint.get(e),h=new D1(l),C=new $o(h,l.property.specification),w=null;w=l.value.kind==="constant"||l.value.kind==="source"?new Bs("source",C):new lo("composite",C,l.value.zoomStops),this.paint._values[e]=new Zo(l.property,w,l.parameters)}}_handleOverridablePaintPropertyUpdate(e,l,h){return!(!this.layout||l.isDataDriven()||h.isDataDriven())&&dd.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,l){let h=e.get("text-field"),C=Pm.paint.properties[l],w=!1,B=F=>{for(let T of F)if(C.overrides&&C.overrides.hasOverride(T))return void(w=!0)};if(h.value.kind==="constant"&&h.value.value instanceof $r)B(h.value.value.sections);else if(h.value.kind==="source"){let F=Z=>{w||(Z instanceof io&&Or(Z.value)===Ji?B(Z.value.sections):Z instanceof Lo?B(Z.sections):Z.eachChild(F))},T=h.value;T._styleExpression&&F(T._styleExpression.expression)}return w}}let K1;var bF={get paint(){return K1=K1||new p({"background-color":new yi(Kt.paint_background["background-color"]),"background-pattern":new i(Kt.paint_background["background-pattern"]),"background-opacity":new yi(Kt.paint_background["background-opacity"])})}};class vF extends b{constructor(e){super(e,bF)}}let z1;var wF={get paint(){return z1=z1||new p({"raster-opacity":new yi(Kt.paint_raster["raster-opacity"]),"raster-hue-rotate":new yi(Kt.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new yi(Kt.paint_raster["raster-brightness-min"]),"raster-brightness-max":new yi(Kt.paint_raster["raster-brightness-max"]),"raster-saturation":new yi(Kt.paint_raster["raster-saturation"]),"raster-contrast":new yi(Kt.paint_raster["raster-contrast"]),"raster-resampling":new yi(Kt.paint_raster["raster-resampling"]),"raster-fade-duration":new yi(Kt.paint_raster["raster-fade-duration"])})}};class BF extends b{constructor(e){super(e,wF)}}class _F extends b{constructor(e){super(e,{}),this.onAdd=l=>{this.implementation.onAdd&&this.implementation.onAdd(l,l.painter.context.gl)},this.onRemove=l=>{this.implementation.onRemove&&this.implementation.onRemove(l,l.painter.context.gl)},this.implementation=e}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class xF{constructor(e){this._methodToThrottle=e,this._triggered=!1,typeof MessageChannel<"u"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._methodToThrottle()},0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let Hm=63710088e-1;class Yl{constructor(e,l){if(isNaN(e)||isNaN(l))throw new Error(`Invalid LngLat object: (${e}, ${l})`);if(this.lng=+e,this.lat=+l,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Yl(_t(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){let l=Math.PI/180,h=this.lat*l,C=e.lat*l,w=Math.sin(h)*Math.sin(C)+Math.cos(h)*Math.cos(C)*Math.cos((e.lng-this.lng)*l);return Hm*Math.acos(Math.min(w,1))}static convert(e){if(e instanceof Yl)return e;if(Array.isArray(e)&&(e.length===2||e.length===3))return new Yl(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&typeof e=="object"&&e!==null)return new Yl(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: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let O1=2*Math.PI*Hm;function W1(a){return O1*Math.cos(a*Math.PI/180)}function J1(a){return(180+a)/360}function X1(a){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+a*Math.PI/360)))/360}function Y1(a,e){return a/W1(e)}function Mm(a){return 360/Math.PI*Math.atan(Math.exp((180-360*a)*Math.PI/180))-90}class pd{constructor(e,l,h=0){this.x=+e,this.y=+l,this.z=+h}static fromLngLat(e,l=0){let h=Yl.convert(e);return new pd(J1(h.lng),X1(h.lat),Y1(l,h.lat))}toLngLat(){return new Yl(360*this.x-180,Mm(this.y))}toAltitude(){return this.z*W1(Mm(this.y))}meterInMercatorCoordinateUnits(){return 1/O1*(e=Mm(this.y),1/Math.cos(e*Math.PI/180));var e}}function j1(a,e,l){var h=2*Math.PI*6378137/256/Math.pow(2,l);return[a*h-2*Math.PI*6378137/2,e*h-2*Math.PI*6378137/2]}class Nm{constructor(e,l,h){if(e<0||e>25||h<0||h>=Math.pow(2,e)||l<0||l>=Math.pow(2,e))throw new Error(`x=${l}, y=${h}, z=${e} outside of bounds. 0<=x<${Math.pow(2,e)}, 0<=y<${Math.pow(2,e)} 0<=z<=25 `);this.z=e,this.x=l,this.y=h,this.key=Vh(0,e,e,l,h)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,l,h){let C=(B=this.y,F=this.z,T=j1(256*(w=this.x),256*(B=Math.pow(2,F)-B-1),F),Z=j1(256*(w+1),256*(B+1),F),T[0]+","+T[1]+","+Z[0]+","+Z[1]);var w,B,F,T,Z;let M=function(D,J,$){let st,ut="";for(let Ft=D;Ft>0;Ft--)st=1<1?"@2x":"").replace(/{quadkey}/g,M).replace(/{bbox-epsg-3857}/g,C)}isChildOf(e){let l=this.z-e.z;return l>0&&e.x===this.x>>l&&e.y===this.y>>l}getTilePoint(e){let l=Math.pow(2,this.z);return new _((e.x*l-this.x)*Pr,(e.y*l-this.y)*Pr)}toString(){return`${this.z}/${this.x}/${this.y}`}}class q1{constructor(e,l){this.wrap=e,this.canonical=l,this.key=Vh(e,l.z,l.z,l.x,l.y)}}class aa{constructor(e,l,h,C,w){if(e= z; overscaledZ = ${e}; z = ${h}`);this.overscaledZ=e,this.wrap=l,this.canonical=new Nm(h,+C,+w),this.key=Vh(l,e,h,C,w)}clone(){return new aa(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(e){return this.overscaledZ===e.overscaledZ&&this.wrap===e.wrap&&this.canonical.equals(e.canonical)}scaledTo(e){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);let l=this.canonical.z-e;return e>this.canonical.z?new aa(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new aa(e,this.wrap,e,this.canonical.x>>l,this.canonical.y>>l)}calculateScaledKey(e,l){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);let h=this.canonical.z-e;return e>this.canonical.z?Vh(this.wrap*+l,e,this.canonical.z,this.canonical.x,this.canonical.y):Vh(this.wrap*+l,e,e,this.canonical.x>>h,this.canonical.y>>h)}isChildOf(e){if(e.wrap!==this.wrap)return!1;let l=this.canonical.z-e.canonical.z;return e.overscaledZ===0||e.overscaledZ>l&&e.canonical.y===this.canonical.y>>l}children(e){if(this.overscaledZ>=e)return[new aa(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let l=this.canonical.z+1,h=2*this.canonical.x,C=2*this.canonical.y;return[new aa(l,this.wrap,l,h,C),new aa(l,this.wrap,l,h+1,C),new aa(l,this.wrap,l,h,C+1),new aa(l,this.wrap,l,h+1,C+1)]}isLessThan(e){return this.wrape.wrap)&&(this.overscaledZe.overscaledZ)&&(this.canonical.xe.canonical.x)&&this.canonical.ythis.max&&(this.max=D),D=this.dim+1||l<-1||l>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(l+1)*this.stride+(e+1)}unpack(e,l,h){return e*this.redFactor+l*this.greenFactor+h*this.blueFactor-this.baseShift}getPixels(){return new oa({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(e,l,h){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let C=l*this.dim,w=l*this.dim+this.dim,B=h*this.dim,F=h*this.dim+this.dim;switch(l){case-1:C=w-1;break;case 1:w=C+1}switch(h){case-1:B=F-1;break;case 1:F=B+1}let T=-l*this.dim,Z=-h*this.dim;for(let M=B;M=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${e} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[e]}}class eb{constructor(e,l,h,C,w){this.type="Feature",this._vectorTileFeature=e,e._z=l,e._x=h,e._y=C,this.properties=e.properties,this.id=w}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(e){this._geometry=e}toJSON(){let e={geometry:this.geometry};for(let l in this)l!=="_geometry"&&l!=="_vectorTileFeature"&&(e[l]=this[l]);return e}}class ib{constructor(e,l){this.tileID=e,this.x=e.canonical.x,this.y=e.canonical.y,this.z=e.canonical.z,this.grid=new RA(Pr,16,0),this.grid3D=new RA(Pr,16,0),this.featureIndexArray=new Tr,this.promoteId=l}insert(e,l,h,C,w,B){let F=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(h,C,w);let T=B?this.grid3D:this.grid;for(let Z=0;Z=0&&D[3]>=0&&T.insert(F,D[0],D[1],D[2],D[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new Wl.VectorTile(new km(this.rawTileData)).layers,this.sourceLayerCoder=new tb(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(e,l,h,C){this.loadVTLayers();let w=e.params||{},B=Pr/e.tileSize/e.scale,F=Vr(w.filter),T=e.queryGeometry,Z=e.queryPadding*B,M=nb(T),D=this.grid.query(M.minX-Z,M.minY-Z,M.maxX+Z,M.maxY+Z),J=nb(e.cameraQueryGeometry),$=this.grid3D.query(J.minX-Z,J.minY-Z,J.maxX+Z,J.maxY+Z,(Ft,Gt,Ae,Ot)=>function(te,me,Pe,oi,Pi){for(let ei of te)if(me<=ei.x&&Pe<=ei.y&&oi>=ei.x&&Pi>=ei.y)return!0;let ni=[new _(me,Pe),new _(me,Pi),new _(oi,Pi),new _(oi,Pe)];if(te.length>2){for(let ei of ni)if(Io(te,ei))return!0}for(let ei=0;ei(Ot||(Ot=fl(te)),me.queryIntersectsFeature(T,te,Pe,Ot,this.z,e.transform,B,e.pixelPosMatrix)))}return st}loadMatchingFeature(e,l,h,C,w,B,F,T,Z,M,D){let J=this.bucketLayerIDs[l];if(B&&!function(Ft,Gt){for(let Ae=0;Ae=0)return!0;return!1}(B,J))return;let $=this.sourceLayerCoder.decode(h),st=this.vtLayers[$].feature(C);if(w.needGeometry){let Ft=MA(st,!0);if(!w.filter(new vr(this.tileID.overscaledZ),Ft,this.tileID.canonical))return}else if(!w.filter(new vr(this.tileID.overscaledZ),st))return;let ut=this.getId(st,$);for(let Ft=0;Ft{let F=e instanceof Kl?e.get(B):null;return F&&F.evaluate?F.evaluate(l,h,C):F})}function nb(a){let e=1/0,l=1/0,h=-1/0,C=-1/0;for(let w of a)e=Math.min(e,w.x),l=Math.min(l,w.y),h=Math.max(h,w.x),C=Math.max(C,w.y);return{minX:e,minY:l,maxX:h,maxY:C}}function SF(a,e){return e-a}function sb(a,e,l,h,C){let w=[];for(let B=0;B=h&&D.x>=h||(M.x>=h?M=new _(h,M.y+(h-M.x)/(D.x-M.x)*(D.y-M.y))._round():D.x>=h&&(D=new _(h,M.y+(h-M.x)/(D.x-M.x)*(D.y-M.y))._round()),M.y>=C&&D.y>=C||(M.y>=C?M=new _(M.x+(C-M.y)/(D.y-M.y)*(D.x-M.x),C)._round():D.y>=C&&(D=new _(M.x+(C-M.y)/(D.y-M.y)*(D.x-M.x),C)._round()),T&&M.equals(T[T.length-1])||(T=[M],w.push(T)),T.push(D)))))}}return w}Ai("FeatureIndex",ib,{omit:["rawTileData","sourceLayerCoder"]});class jl extends _{constructor(e,l,h,C){super(e,l),this.angle=h,C!==void 0&&(this.segment=C)}clone(){return new jl(this.x,this.y,this.angle,this.segment)}}function ob(a,e,l,h,C){if(e.segment===void 0||l===0)return!0;let w=e,B=e.segment+1,F=0;for(;F>-l/2;){if(B--,B<0)return!1;F-=a[B].dist(w),w=a[B]}F+=a[B].dist(a[B+1]),B++;let T=[],Z=0;for(;Fh;)Z-=T.shift().angleDelta;if(Z>C)return!1;B++,F+=M.dist(D)}return!0}function ab(a){let e=0;for(let l=0;lZ){let st=(Z-T)/$,ut=ci.number(D.x,J.x,st),Ft=ci.number(D.y,J.y,st),Gt=new jl(ut,Ft,J.angleTo(D),M);return Gt._round(),!B||ob(a,Gt,F,B,e)?Gt:void 0}T+=$}}function kF(a,e,l,h,C,w,B,F,T){let Z=Ab(h,w,B),M=lb(h,C),D=M*B,J=a[0].x===0||a[0].x===T||a[0].y===0||a[0].y===T;return e-D=0&&te=0&&me=0&&J+Z<=M){let Pe=new jl(te,me,Ae,st);Pe._round(),h&&!ob(a,Pe,w,h,C)||$.push(Pe)}}D+=Gt}return F||$.length||B||($=cb(a,D/2,l,h,C,w,B,!0,T)),$}Ai("Anchor",jl);let ku=yo;function ub(a,e,l,h){let C=[],w=a.image,B=w.pixelRatio,F=w.paddedRect.w-2*ku,T=w.paddedRect.h-2*ku,Z={x1:a.left,y1:a.top,x2:a.right,y2:a.bottom},M=w.stretchX||[[0,F]],D=w.stretchY||[[0,T]],J=(Se,Si)=>Se+Si[1]-Si[0],$=M.reduce(J,0),st=D.reduce(J,0),ut=F-$,Ft=T-st,Gt=0,Ae=$,Ot=0,te=st,me=0,Pe=ut,oi=0,Pi=Ft;if(w.content&&h){let Se=w.content,Si=Se[2]-Se[0],vi=Se[3]-Se[1];(w.textFitWidth||w.textFitHeight)&&(Z=P1(a)),Gt=fd(M,0,Se[0]),Ot=fd(D,0,Se[1]),Ae=fd(M,Se[0],Se[2]),te=fd(D,Se[1],Se[3]),me=Se[0]-Gt,oi=Se[1]-Ot,Pe=Si-Ae,Pi=vi-te}let ni=Z.x1,ei=Z.y1,wi=Z.x2-ni,di=Z.y2-ei,li=(Se,Si,vi,Oi)=>{let Dr=md(Se.stretch-Gt,Ae,wi,ni),Mr=Cd(Se.fixed-me,Pe,Se.stretch,$),Jn=md(Si.stretch-Ot,te,di,ei),Qa=Cd(Si.fixed-oi,Pi,Si.stretch,st),us=md(vi.stretch-Gt,Ae,wi,ni),fn=Cd(vi.fixed-me,Pe,vi.stretch,$),zs=md(Oi.stretch-Ot,te,di,ei),Os=Cd(Oi.fixed-oi,Pi,Oi.stretch,st),Ws=new _(Dr,Jn),mn=new _(us,Jn),Xn=new _(us,zs),Ls=new _(Dr,zs),hs=new _(Mr/B,Qa/B),Js=new _(fn/B,Os/B),gs=e*Math.PI/180;if(gs){let Cr=Math.sin(gs),zr=Math.cos(gs),Xr=[zr,-Cr,Cr,zr];Ws._matMult(Xr),mn._matMult(Xr),Ls._matMult(Xr),Xn._matMult(Xr)}let Aa=Se.stretch+Se.fixed,bo=Si.stretch+Si.fixed;return{tl:Ws,tr:mn,bl:Ls,br:Xn,tex:{x:w.paddedRect.x+ku+Aa,y:w.paddedRect.y+ku+bo,w:vi.stretch+vi.fixed-Aa,h:Oi.stretch+Oi.fixed-bo},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:hs,pixelOffsetBR:Js,minFontScaleX:Pe/B/wi,minFontScaleY:Pi/B/di,isSDF:l}};if(h&&(w.stretchX||w.stretchY)){let Se=hb(M,ut,$),Si=hb(D,Ft,st);for(let vi=0;vi0&&(ut=Math.max(10,ut),this.circleDiameter=ut)}else{let J=((D=B.image)===null||D===void 0?void 0:D.content)&&(B.image.textFitWidth||B.image.textFitHeight)?P1(B):{x1:B.left,y1:B.top,x2:B.right,y2:B.bottom};J.y1=J.y1*F-T[0],J.y2=J.y2*F+T[2],J.x1=J.x1*F-T[3],J.x2=J.x2*F+T[1];let $=B.collisionPadding;if($&&(J.x1-=$[0]*F,J.y1-=$[1]*F,J.x2+=$[2]*F,J.y2+=$[3]*F),M){let st=new _(J.x1,J.y1),ut=new _(J.x2,J.y1),Ft=new _(J.x1,J.y2),Gt=new _(J.x2,J.y2),Ae=M*Math.PI/180;st._rotate(Ae),ut._rotate(Ae),Ft._rotate(Ae),Gt._rotate(Ae),J.x1=Math.min(st.x,ut.x,Ft.x,Gt.x),J.x2=Math.max(st.x,ut.x,Ft.x,Gt.x),J.y1=Math.min(st.y,ut.y,Ft.y,Gt.y),J.y2=Math.max(st.y,ut.y,Ft.y,Gt.y)}e.emplaceBack(l.x,l.y,J.x1,J.y1,J.x2,J.y2,h,C,w)}this.boxEndIndex=e.length}}class LF{constructor(e=[],l=(h,C)=>hC?1:0){if(this.data=e,this.length=this.data.length,this.compare=l,this.length>0)for(let h=(this.length>>1)-1;h>=0;h--)this._down(h)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;let e=this.data[0],l=this.data.pop();return--this.length>0&&(this.data[0]=l,this._down(0)),e}peek(){return this.data[0]}_up(e){let{data:l,compare:h}=this,C=l[e];for(;e>0;){let w=e-1>>1,B=l[w];if(h(C,B)>=0)break;l[e]=B,e=w}l[e]=C}_down(e){let{data:l,compare:h}=this,C=this.length>>1,w=l[e];for(;e=0)break;l[e]=l[B],e=B}l[e]=w}}function EF(a,e=1,l=!1){let h=1/0,C=1/0,w=-1/0,B=-1/0,F=a[0];for(let $=0;$w)&&(w=st.x),(!$||st.y>B)&&(B=st.y)}let T=Math.min(w-h,B-C),Z=T/2,M=new LF([],TF);if(T===0)return new _(h,C);for(let $=h;$D.d||!D.d)&&(D=$,l&&console.log("found best %d after %d probes",Math.round(1e4*$.d)/1e4,J)),$.max-D.d<=e||(Z=$.h/2,M.push(new Lu($.p.x-Z,$.p.y-Z,Z,a)),M.push(new Lu($.p.x+Z,$.p.y-Z,Z,a)),M.push(new Lu($.p.x-Z,$.p.y+Z,Z,a)),M.push(new Lu($.p.x+Z,$.p.y+Z,Z,a)),J+=4)}return l&&(console.log(`num probes: ${J}`),console.log(`best distance: ${D.d}`)),D.p}function TF(a,e){return e.max-a.max}function Lu(a,e,l,h){this.p=new _(a,e),this.h=l,this.d=function(C,w){let B=!1,F=1/0;for(let T=0;TC.y!=st.y>C.y&&C.x<(st.x-$.x)*(C.y-$.y)/(st.y-$.y)+$.x&&(B=!B),F=Math.min(F,Ua(C,$,st))}}return(B?1:-1)*Math.sqrt(F)}(this.p,h),this.max=this.d+this.h*Math.SQRT2}var cs;A.ar=void 0,(cs=A.ar||(A.ar={}))[cs.center=1]="center",cs[cs.left=2]="left",cs[cs.right=3]="right",cs[cs.top=4]="top",cs[cs.bottom=5]="bottom",cs[cs["top-left"]=6]="top-left",cs[cs["top-right"]=7]="top-right",cs[cs["bottom-left"]=8]="bottom-left",cs[cs["bottom-right"]=9]="bottom-right";let ql=7,Vm=Number.POSITIVE_INFINITY;function gb(a,e){return e[1]!==Vm?function(l,h,C){let w=0,B=0;switch(h=Math.abs(h),C=Math.abs(C),l){case"top-right":case"top-left":case"top":B=C-ql;break;case"bottom-right":case"bottom-left":case"bottom":B=-C+ql}switch(l){case"top-right":case"bottom-right":case"right":w=-h;break;case"top-left":case"bottom-left":case"left":w=h}return[w,B]}(a,e[0],e[1]):function(l,h){let C=0,w=0;h<0&&(h=0);let B=h/Math.SQRT2;switch(l){case"top-right":case"top-left":w=B-ql;break;case"bottom-right":case"bottom-left":w=-B+ql;break;case"bottom":w=-h+ql;break;case"top":w=h-ql}switch(l){case"top-right":case"bottom-right":C=-B;break;case"top-left":case"bottom-left":C=B;break;case"left":C=h;break;case"right":C=-h}return[C,w]}(a,e[0])}function db(a,e,l){var h;let C=a.layout,w=(h=C.get("text-variable-anchor-offset"))===null||h===void 0?void 0:h.evaluate(e,{},l);if(w){let F=w.values,T=[];for(let Z=0;ZJ*Qn);M.startsWith("top")?D[1]-=ql:M.startsWith("bottom")&&(D[1]+=ql),T[Z+1]=D}return new pn(T)}let B=C.get("text-variable-anchor");if(B){let F;F=a._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[C.get("text-radial-offset").evaluate(e,{},l)*Qn,Vm]:C.get("text-offset").evaluate(e,{},l).map(Z=>Z*Qn);let T=[];for(let Z of B)T.push(Z,gb(Z,F));return new pn(T)}return null}function Dm(a){switch(a){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function UF(a,e,l,h,C,w,B,F,T,Z,M){let D=w.textMaxSize.evaluate(e,{});D===void 0&&(D=B);let J=a.layers[0].layout,$=J.get("icon-offset").evaluate(e,{},M),st=fb(l.horizontal),ut=B/24,Ft=a.tilePixelRatio*ut,Gt=a.tilePixelRatio*D/24,Ae=a.tilePixelRatio*F,Ot=a.tilePixelRatio*J.get("symbol-spacing"),te=J.get("text-padding")*a.tilePixelRatio,me=function(Se,Si,vi,Oi=1){let Dr=Se.get("icon-padding").evaluate(Si,{},vi),Mr=Dr&&Dr.values;return[Mr[0]*Oi,Mr[1]*Oi,Mr[2]*Oi,Mr[3]*Oi]}(J,e,M,a.tilePixelRatio),Pe=J.get("text-max-angle")/180*Math.PI,oi=J.get("text-rotation-alignment")!=="viewport"&&J.get("symbol-placement")!=="point",Pi=J.get("icon-rotation-alignment")==="map"&&J.get("symbol-placement")!=="point",ni=J.get("symbol-placement"),ei=Ot/2,wi=J.get("icon-text-fit"),di;h&&wi!=="none"&&(a.allowVerticalPlacement&&l.vertical&&(di=H1(h,l.vertical,wi,J.get("icon-text-fit-padding"),$,ut)),st&&(h=H1(h,st,wi,J.get("icon-text-fit-padding"),$,ut)));let li=(Se,Si)=>{Si.x<0||Si.x>=Pr||Si.y<0||Si.y>=Pr||function(vi,Oi,Dr,Mr,Jn,Qa,us,fn,zs,Os,Ws,mn,Xn,Ls,hs,Js,gs,Aa,bo,Cr,zr,Xr,Ho,dn,Eu){let VA=vi.addToLineVertexArray(Oi,Dr),DA,Ra,la,is,yl=0,zh=0,yb=0,bb=0,jm=-1,qm=-1,bl={},vb=Ea("");if(vi.allowVerticalPlacement&&Mr.vertical){let Es=fn.layout.get("text-rotate").evaluate(zr,{},dn)+90;la=new Id(zs,Oi,Os,Ws,mn,Mr.vertical,Xn,Ls,hs,Es),us&&(is=new Id(zs,Oi,Os,Ws,mn,us,gs,Aa,hs,Es))}if(Jn){let Es=fn.layout.get("icon-rotate").evaluate(zr,{}),ca=fn.layout.get("icon-text-fit")!=="none",Rc=ub(Jn,Es,Ho,ca),iA=us?ub(us,Es,Ho,ca):void 0;Ra=new Id(zs,Oi,Os,Ws,mn,Jn,gs,Aa,!1,Es),yl=4*Rc.length;let Gc=vi.iconSizeData,KA=null;Gc.kind==="source"?(KA=[NA*fn.layout.get("icon-size").evaluate(zr,{})],KA[0]>Xl&<(`${vi.layerIds[0]}: Value for "icon-size" is >= ${Nh}. Reduce your "icon-size".`)):Gc.kind==="composite"&&(KA=[NA*Xr.compositeIconSizes[0].evaluate(zr,{},dn),NA*Xr.compositeIconSizes[1].evaluate(zr,{},dn)],(KA[0]>Xl||KA[1]>Xl)&<(`${vi.layerIds[0]}: Value for "icon-size" is >= ${Nh}. Reduce your "icon-size".`)),vi.addSymbols(vi.icon,Rc,KA,Cr,bo,zr,A.ai.none,Oi,VA.lineStartIndex,VA.lineLength,-1,dn),jm=vi.icon.placedSymbolArray.length-1,iA&&(zh=4*iA.length,vi.addSymbols(vi.icon,iA,KA,Cr,bo,zr,A.ai.vertical,Oi,VA.lineStartIndex,VA.lineLength,-1,dn),qm=vi.icon.placedSymbolArray.length-1)}let wb=Object.keys(Mr.horizontal);for(let Es of wb){let ca=Mr.horizontal[Es];if(!DA){vb=Ea(ca.text);let iA=fn.layout.get("text-rotate").evaluate(zr,{},dn);DA=new Id(zs,Oi,Os,Ws,mn,ca,Xn,Ls,hs,iA)}let Rc=ca.positionedLines.length===1;if(yb+=pb(vi,Oi,ca,Qa,fn,hs,zr,Js,VA,Mr.vertical?A.ai.horizontal:A.ai.horizontalOnly,Rc?wb:[Es],bl,jm,Xr,dn),Rc)break}Mr.vertical&&(bb+=pb(vi,Oi,Mr.vertical,Qa,fn,hs,zr,Js,VA,A.ai.vertical,["vertical"],bl,qm,Xr,dn));let GF=DA?DA.boxStartIndex:vi.collisionBoxArray.length,ZF=DA?DA.boxEndIndex:vi.collisionBoxArray.length,PF=la?la.boxStartIndex:vi.collisionBoxArray.length,HF=la?la.boxEndIndex:vi.collisionBoxArray.length,MF=Ra?Ra.boxStartIndex:vi.collisionBoxArray.length,NF=Ra?Ra.boxEndIndex:vi.collisionBoxArray.length,VF=is?is.boxStartIndex:vi.collisionBoxArray.length,DF=is?is.boxEndIndex:vi.collisionBoxArray.length,eA=-1,bd=(Es,ca)=>Es&&Es.circleDiameter?Math.max(Es.circleDiameter,ca):ca;eA=bd(DA,eA),eA=bd(la,eA),eA=bd(Ra,eA),eA=bd(is,eA);let Bb=eA>-1?1:0;Bb&&(eA*=Eu/Qn),vi.glyphOffsetArray.length>=Fu.MAX_GLYPHS&<("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),zr.sortKey!==void 0&&vi.addToSortKeyRanges(vi.symbolInstances.length,zr.sortKey);let KF=db(fn,zr,dn),[zF,OF]=function(Es,ca){let Rc=Es.length,iA=ca?.values;if(iA?.length>0)for(let Gc=0;Gc=0?bl.right:-1,bl.center>=0?bl.center:-1,bl.left>=0?bl.left:-1,bl.vertical||-1,jm,qm,vb,GF,ZF,PF,HF,MF,NF,VF,DF,Os,yb,bb,yl,zh,Bb,0,Xn,eA,zF,OF)}(a,Si,Se,l,h,C,di,a.layers[0],a.collisionBoxArray,e.index,e.sourceLayerIndex,a.index,Ft,[te,te,te,te],oi,T,Ae,me,Pi,$,e,w,Z,M,B)};if(ni==="line")for(let Se of sb(e.geometry,0,0,Pr,Pr)){let Si=kF(Se,Ot,Pe,l.vertical||st,h,24,Gt,a.overscaling,Pr);for(let vi of Si)st&&QF(a,st.text,ei,vi)||li(Se,vi)}else if(ni==="line-center"){for(let Se of e.geometry)if(Se.length>1){let Si=FF(Se,Pe,l.vertical||st,h,24,Gt);Si&&li(Se,Si)}}else if(e.type==="Polygon")for(let Se of Xo(e.geometry,0)){let Si=EF(Se,16);li(Se[0],new jl(Si.x,Si.y,0))}else if(e.type==="LineString")for(let Se of e.geometry)li(Se,new jl(Se[0].x,Se[0].y,0));else if(e.type==="Point")for(let Se of e.geometry)for(let Si of Se)li([Si],new jl(Si.x,Si.y,0))}function pb(a,e,l,h,C,w,B,F,T,Z,M,D,J,$,st){let ut=function(Ae,Ot,te,me,Pe,oi,Pi,ni){let ei=me.layout.get("text-rotate").evaluate(oi,{})*Math.PI/180,wi=[];for(let di of Ot.positionedLines)for(let li of di.positionedGlyphs){if(!li.rect)continue;let Se=li.rect||{},Si=E1+1,vi=!0,Oi=1,Dr=0,Mr=(Pe||ni)&&li.vertical,Jn=li.metrics.advance*li.scale/2;if(ni&&Ot.verticalizable&&(Dr=di.lineOffset/2-(li.imageName?-(Qn-li.metrics.width*li.scale)/2:(li.scale-1)*Qn)),li.imageName){let Cr=Pi[li.imageName];vi=Cr.sdf,Oi=Cr.pixelRatio,Si=yo/Oi}let Qa=Pe?[li.x+Jn,li.y]:[0,0],us=Pe?[0,0]:[li.x+Jn+te[0],li.y+te[1]-Dr],fn=[0,0];Mr&&(fn=us,us=[0,0]);let zs=li.metrics.isDoubleResolution?2:1,Os=(li.metrics.left-Si)*li.scale-Jn+us[0],Ws=(-li.metrics.top-Si)*li.scale+us[1],mn=Os+Se.w/zs*li.scale/Oi,Xn=Ws+Se.h/zs*li.scale/Oi,Ls=new _(Os,Ws),hs=new _(mn,Ws),Js=new _(Os,Xn),gs=new _(mn,Xn);if(Mr){let Cr=new _(-Jn,Jn-Hh),zr=-Math.PI/2,Xr=Qn/2-Jn,Ho=new _(5-Hh-Xr,-(li.imageName?Xr:0)),dn=new _(...fn);Ls._rotateAround(zr,Cr)._add(Ho)._add(dn),hs._rotateAround(zr,Cr)._add(Ho)._add(dn),Js._rotateAround(zr,Cr)._add(Ho)._add(dn),gs._rotateAround(zr,Cr)._add(Ho)._add(dn)}if(ei){let Cr=Math.sin(ei),zr=Math.cos(ei),Xr=[zr,-Cr,Cr,zr];Ls._matMult(Xr),hs._matMult(Xr),Js._matMult(Xr),gs._matMult(Xr)}let Aa=new _(0,0),bo=new _(0,0);wi.push({tl:Ls,tr:hs,bl:Js,br:gs,tex:Se,writingMode:Ot.writingMode,glyphOffset:Qa,sectionIndex:li.sectionIndex,isSDF:vi,pixelOffsetTL:Aa,pixelOffsetBR:bo,minFontScaleX:0,minFontScaleY:0})}return wi}(0,l,F,C,w,B,h,a.allowVerticalPlacement),Ft=a.textSizeData,Gt=null;Ft.kind==="source"?(Gt=[NA*C.layout.get("text-size").evaluate(B,{})],Gt[0]>Xl&<(`${a.layerIds[0]}: Value for "text-size" is >= ${Nh}. Reduce your "text-size".`)):Ft.kind==="composite"&&(Gt=[NA*$.compositeTextSizes[0].evaluate(B,{},st),NA*$.compositeTextSizes[1].evaluate(B,{},st)],(Gt[0]>Xl||Gt[1]>Xl)&<(`${a.layerIds[0]}: Value for "text-size" is >= ${Nh}. Reduce your "text-size".`)),a.addSymbols(a.text,ut,Gt,F,w,B,Z,e,T.lineStartIndex,T.lineLength,J,st);for(let Ae of M)D[Ae]=a.text.placedSymbolArray.length-1;return 4*ut.length}function fb(a){for(let e in a)return a[e];return null}function QF(a,e,l,h){let C=a.compareText;if(e in C){let w=C[e];for(let B=w.length-1;B>=0;B--)if(h.dist(w[B])>4;if(C!==1)throw new Error(`Got v${C} data when expected v1.`);let w=mb[15&h];if(!w)throw new Error("Unrecognized array type.");let[B]=new Uint16Array(e,2,1),[F]=new Uint32Array(e,4,1);return new Km(F,B,w,e)}constructor(e,l=64,h=Float64Array,C){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+l,2),65535),this.ArrayType=h,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;let w=mb.indexOf(this.ArrayType),B=2*e*this.ArrayType.BYTES_PER_ELEMENT,F=e*this.IndexArrayType.BYTES_PER_ELEMENT,T=(8-F%8)%8;if(w<0)throw new Error(`Unexpected typed array class: ${h}.`);C&&C instanceof ArrayBuffer?(this.data=C,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+F+T,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+B+F+T),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+F+T,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+w]),new Uint16Array(this.data,2,1)[0]=l,new Uint32Array(this.data,4,1)[0]=e)}add(e,l){let h=this._pos>>1;return this.ids[h]=h,this.coords[this._pos++]=e,this.coords[this._pos++]=l,h}finish(){let e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return zm(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,l,h,C){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:w,coords:B,nodeSize:F}=this,T=[0,w.length-1,0],Z=[];for(;T.length;){let M=T.pop()||0,D=T.pop()||0,J=T.pop()||0;if(D-J<=F){for(let Ft=J;Ft<=D;Ft++){let Gt=B[2*Ft],Ae=B[2*Ft+1];Gt>=e&&Gt<=h&&Ae>=l&&Ae<=C&&Z.push(w[Ft])}continue}let $=J+D>>1,st=B[2*$],ut=B[2*$+1];st>=e&&st<=h&&ut>=l&&ut<=C&&Z.push(w[$]),(M===0?e<=st:l<=ut)&&(T.push(J),T.push($-1),T.push(1-M)),(M===0?h>=st:C>=ut)&&(T.push($+1),T.push(D),T.push(1-M))}return Z}within(e,l,h){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:C,coords:w,nodeSize:B}=this,F=[0,C.length-1,0],T=[],Z=h*h;for(;F.length;){let M=F.pop()||0,D=F.pop()||0,J=F.pop()||0;if(D-J<=B){for(let Ft=J;Ft<=D;Ft++)Ib(w[2*Ft],w[2*Ft+1],e,l)<=Z&&T.push(C[Ft]);continue}let $=J+D>>1,st=w[2*$],ut=w[2*$+1];Ib(st,ut,e,l)<=Z&&T.push(C[$]),(M===0?e-h<=st:l-h<=ut)&&(F.push(J),F.push($-1),F.push(1-M)),(M===0?e+h>=st:l+h>=ut)&&(F.push($+1),F.push(D),F.push(1-M))}return T}}function zm(a,e,l,h,C,w){if(C-h<=l)return;let B=h+C>>1;Cb(a,e,B,h,C,w),zm(a,e,l,h,B-1,1-w),zm(a,e,l,B+1,C,1-w)}function Cb(a,e,l,h,C,w){for(;C>h;){if(C-h>600){let Z=C-h+1,M=l-h+1,D=Math.log(Z),J=.5*Math.exp(2*D/3),$=.5*Math.sqrt(D*J*(Z-J)/Z)*(M-Z/2<0?-1:1);Cb(a,e,l,Math.max(h,Math.floor(l-M*J/Z+$)),Math.min(C,Math.floor(l+(Z-M)*J/Z+$)),w)}let B=e[2*l+w],F=h,T=C;for(Dh(a,e,h,l),e[2*C+w]>B&&Dh(a,e,h,C);FB;)T--}e[2*h+w]===B?Dh(a,e,h,T):(T++,Dh(a,e,T,C)),T<=l&&(h=T+1),l<=T&&(C=T-1)}}function Dh(a,e,l,h){Om(a,l,h),Om(e,2*l,2*h),Om(e,2*l+1,2*h+1)}function Om(a,e,l){let h=a[e];a[e]=a[l],a[l]=h}function Ib(a,e,l,h){let C=a-l,w=e-h;return C*C+w*w}var Wm;A.bf=void 0,(Wm=A.bf||(A.bf={})).create="create",Wm.load="load",Wm.fullLoad="fullLoad";let yd=null,Kh=[],Jm=1e3/60,Xm="loadTime",Ym="fullLoadTime",RF={mark(a){performance.mark(a)},frame(a){let e=a;yd!=null&&Kh.push(e-yd),yd=e},clearMetrics(){yd=null,Kh=[],performance.clearMeasures(Xm),performance.clearMeasures(Ym);for(let a in A.bf)performance.clearMarks(A.bf[a])},getPerformanceMetrics(){performance.measure(Xm,A.bf.create,A.bf.load),performance.measure(Ym,A.bf.create,A.bf.fullLoad);let a=performance.getEntriesByName(Xm)[0].duration,e=performance.getEntriesByName(Ym)[0].duration,l=Kh.length,h=1/(Kh.reduce((w,B)=>w+B,0)/l/1e3),C=Kh.filter(w=>w>Jm).reduce((w,B)=>w+(B-Jm)/Jm,0);return{loadTime:a,fullLoadTime:e,fps:h,percentDroppedFrames:C/(l+C)*100,totalFrames:l}}};A.$=class extends P{},A.A=vu,A.B=Ja,A.C=function(a){if(Bt==null){let e=a.navigator?a.navigator.userAgent:null;Bt=!!a.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return Bt},A.D=yi,A.E=Xe,A.F=class{constructor(a,e){this.target=a,this.mapId=e,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new xF(()=>this.process()),this.subscription=function(l,h,C,w){return l.addEventListener(h,C,!1),{unsubscribe:()=>{l.removeEventListener(h,C,!1)}}}(this.target,"message",l=>this.receive(l)),this.globalScope=St(self)?a:window}registerMessageHandler(a,e){this.messageHandlers[a]=e}sendAsync(a,e){return new Promise((l,h)=>{let C=Math.round(1e18*Math.random()).toString(36).substring(0,10);this.resolveRejects[C]={resolve:l,reject:h},e&&e.signal.addEventListener("abort",()=>{delete this.resolveRejects[C];let F={id:C,type:"",origin:location.origin,targetMapId:a.targetMapId,sourceMapId:this.mapId};this.target.postMessage(F)},{once:!0});let w=[],B=Object.assign(Object.assign({},a),{id:C,sourceMapId:this.mapId,origin:location.origin,data:Fs(a.data,w)});this.target.postMessage(B,{transfer:w})})}receive(a){let e=a.data,l=e.id;if(!(e.origin!=="file://"&&location.origin!=="file://"&&e.origin!=="resource://android"&&location.origin!=="resource://android"&&e.origin!==location.origin||e.targetMapId&&this.mapId!==e.targetMapId)){if(e.type===""){delete this.tasks[l];let h=this.abortControllers[l];return delete this.abortControllers[l],void(h&&h.abort())}if(St(self)||e.mustQueue)return this.tasks[l]=e,this.taskQueue.push(l),void this.invoker.trigger();this.processTask(l,e)}}process(){if(this.taskQueue.length===0)return;let a=this.taskQueue.shift(),e=this.tasks[a];delete this.tasks[a],this.taskQueue.length>0&&this.invoker.trigger(),e&&this.processTask(a,e)}processTask(a,e){return s(this,void 0,void 0,function*(){if(e.type===""){let C=this.resolveRejects[a];return delete this.resolveRejects[a],C?void(e.error?C.reject(Go(e.error)):C.resolve(Go(e.data))):void 0}if(!this.messageHandlers[e.type])return void this.completeTask(a,new Error(`Could not find a registered handler for ${e.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let l=Go(e.data),h=new AbortController;this.abortControllers[a]=h;try{let C=yield this.messageHandlers[e.type](e.sourceMapId,l,h);this.completeTask(a,null,C)}catch(C){this.completeTask(a,C)}})}completeTask(a,e,l){let h=[];delete this.abortControllers[a];let C={id:a,type:"",sourceMapId:this.mapId,origin:location.origin,error:e?Fs(e):null,data:Fs(l,h)};this.target.postMessage(C,{transfer:h})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},A.G=yt,A.H=function(){var a=new vu(16);return vu!=Float32Array&&(a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[11]=0,a[12]=0,a[13]=0,a[14]=0),a[0]=1,a[5]=1,a[10]=1,a[15]=1,a},A.I=Em,A.J=function(a,e,l){var h,C,w,B,F,T,Z,M,D,J,$,st,ut=l[0],Ft=l[1],Gt=l[2];return e===a?(a[12]=e[0]*ut+e[4]*Ft+e[8]*Gt+e[12],a[13]=e[1]*ut+e[5]*Ft+e[9]*Gt+e[13],a[14]=e[2]*ut+e[6]*Ft+e[10]*Gt+e[14],a[15]=e[3]*ut+e[7]*Ft+e[11]*Gt+e[15]):(C=e[1],w=e[2],B=e[3],F=e[4],T=e[5],Z=e[6],M=e[7],D=e[8],J=e[9],$=e[10],st=e[11],a[0]=h=e[0],a[1]=C,a[2]=w,a[3]=B,a[4]=F,a[5]=T,a[6]=Z,a[7]=M,a[8]=D,a[9]=J,a[10]=$,a[11]=st,a[12]=h*ut+F*Ft+D*Gt+e[12],a[13]=C*ut+T*Ft+J*Gt+e[13],a[14]=w*ut+Z*Ft+$*Gt+e[14],a[15]=B*ut+M*Ft+st*Gt+e[15]),a},A.K=function(a,e,l){var h=l[0],C=l[1],w=l[2];return a[0]=e[0]*h,a[1]=e[1]*h,a[2]=e[2]*h,a[3]=e[3]*h,a[4]=e[4]*C,a[5]=e[5]*C,a[6]=e[6]*C,a[7]=e[7]*C,a[8]=e[8]*w,a[9]=e[9]*w,a[10]=e[10]*w,a[11]=e[11]*w,a[12]=e[12],a[13]=e[13],a[14]=e[14],a[15]=e[15],a},A.L=$y,A.M=function(a,e){let l={};for(let h=0;h{let e=window.document.createElement("video");return e.muted=!0,new Promise(l=>{e.onloadstart=()=>{l(e)};for(let h of a){let C=window.document.createElement("source");ge(h)||(e.crossOrigin="Anonymous"),C.src=h,e.appendChild(C)}})},A.a4=function(){return Et++},A.a5=pi,A.a6=Fu,A.a7=Vr,A.a8=MA,A.a9=vr,A.aA=function(a){a=a.slice();let e=Object.create(null);for(let l=0;l{"source"in B&&h[B.source]?l.push({command:"removeLayer",args:[B.id]}):w.push(B)}),l=l.concat(C),function(B,F,T){F=F||[];let Z=(B=B||[]).map(hi),M=F.map(hi),D=B.reduce(Ti,{}),J=F.reduce(Ti,{}),$=Z.slice(),st=Object.create(null),ut,Ft,Gt,Ae,Ot;for(let te=0,me=0;te@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(l,h,C,w)=>{let B=C||w;return e[h]=!B||B.toLowerCase(),""}),e["max-age"]){let l=parseInt(e["max-age"],10);isNaN(l)?delete e["max-age"]:e["max-age"]=l}return e},A.ac=function(a,e){let l=[];for(let h in a)h in e||l.push(h);return l},A.ad=At,A.ae=function(a,e,l){var h=Math.sin(l),C=Math.cos(l),w=e[0],B=e[1],F=e[2],T=e[3],Z=e[4],M=e[5],D=e[6],J=e[7];return e!==a&&(a[8]=e[8],a[9]=e[9],a[10]=e[10],a[11]=e[11],a[12]=e[12],a[13]=e[13],a[14]=e[14],a[15]=e[15]),a[0]=w*C+Z*h,a[1]=B*C+M*h,a[2]=F*C+D*h,a[3]=T*C+J*h,a[4]=Z*C-w*h,a[5]=M*C-B*h,a[6]=D*C-F*h,a[7]=J*C-T*h,a},A.af=function(a){var e=new vu(16);return e[0]=a[0],e[1]=a[1],e[2]=a[2],e[3]=a[3],e[4]=a[4],e[5]=a[5],e[6]=a[6],e[7]=a[7],e[8]=a[8],e[9]=a[9],e[10]=a[10],e[11]=a[11],e[12]=a[12],e[13]=a[13],e[14]=a[14],e[15]=a[15],e},A.ag=sd,A.ah=function(a,e){let l=0,h=0;if(a.kind==="constant")h=a.layoutSize;else if(a.kind!=="source"){let{interpolationType:C,minZoom:w,maxZoom:B}=a,F=C?At(Fi.interpolationFactor(C,e,w,B),0,1):0;a.kind==="camera"?h=ci.number(a.minSize,a.maxSize,F):l=F}return{uSizeT:l,uSize:h}},A.aj=function(a,{uSize:e,uSizeT:l},{lowerSize:h,upperSize:C}){return a.kind==="source"?h/NA:a.kind==="composite"?ci.number(h/NA,C/NA,l):e},A.ak=Rm,A.al=function(a,e,l,h){let C=e.y-a.y,w=e.x-a.x,B=h.y-l.y,F=h.x-l.x,T=B*w-F*C;if(T===0)return null;let Z=(F*(a.y-l.y)-B*(a.x-l.x))/T;return new _(a.x+Z*w,a.y+Z*C)},A.am=sb,A.an=Fh,A.ao=mm,A.ap=function(a){let e=1/0,l=1/0,h=-1/0,C=-1/0;for(let w of a)e=Math.min(e,w.x),l=Math.min(l,w.y),h=Math.max(h,w.x),C=Math.max(C,w.y);return[e,l,h,C]},A.aq=Qn,A.as=Qm,A.at=function(a,e){var l=e[0],h=e[1],C=e[2],w=e[3],B=e[4],F=e[5],T=e[6],Z=e[7],M=e[8],D=e[9],J=e[10],$=e[11],st=e[12],ut=e[13],Ft=e[14],Gt=e[15],Ae=l*F-h*B,Ot=l*T-C*B,te=l*Z-w*B,me=h*T-C*F,Pe=h*Z-w*F,oi=C*Z-w*T,Pi=M*ut-D*st,ni=M*Ft-J*st,ei=M*Gt-$*st,wi=D*Ft-J*ut,di=D*Gt-$*ut,li=J*Gt-$*Ft,Se=Ae*li-Ot*di+te*wi+me*ei-Pe*ni+oi*Pi;return Se?(a[0]=(F*li-T*di+Z*wi)*(Se=1/Se),a[1]=(C*di-h*li-w*wi)*Se,a[2]=(ut*oi-Ft*Pe+Gt*me)*Se,a[3]=(J*Pe-D*oi-$*me)*Se,a[4]=(T*ei-B*li-Z*ni)*Se,a[5]=(l*li-C*ei+w*ni)*Se,a[6]=(Ft*te-st*oi-Gt*Ot)*Se,a[7]=(M*oi-J*te+$*Ot)*Se,a[8]=(B*di-F*ei+Z*Pi)*Se,a[9]=(h*ei-l*di-w*Pi)*Se,a[10]=(st*Pe-ut*te+Gt*Ae)*Se,a[11]=(D*te-M*Pe-$*Ae)*Se,a[12]=(F*ni-B*wi-T*Pi)*Se,a[13]=(l*wi-h*ni+C*Pi)*Se,a[14]=(ut*Ot-st*me-Ft*Ae)*Se,a[15]=(M*me-D*Ot+J*Ae)*Se,a):null},A.au=Dm,A.av=Um,A.aw=Km,A.ax=function(){let a={},e=Kt.$version;for(let l in Kt.$root){let h=Kt.$root[l];if(h.required){let C=null;C=l==="version"?e:h.type==="array"?[]:{},C!=null&&(a[l]=C)}}return a},A.ay=Sc,A.az=Ht,A.b=se,A.b0=function(a,e){return a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=e[3],a[4]=e[4],a[5]=e[5],a[6]=e[6],a[7]=e[7],a[8]=e[8],a[9]=e[9],a[10]=e[10],a[11]=e[11],a[12]=e[12],a[13]=e[13],a[14]=e[14],a[15]=e[15],a},A.b1=function(a,e,l){return a[0]=e[0]*l[0],a[1]=e[1]*l[1],a[2]=e[2]*l[2],a[3]=e[3]*l[3],a},A.b2=function(a,e){return a[0]*e[0]+a[1]*e[1]+a[2]*e[2]+a[3]*e[3]},A.b3=_t,A.b4=q1,A.b5=Y1,A.b6=function(a,e,l,h,C){var w,B=1/Math.tan(e/2);return a[0]=B/l,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=B,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[11]=-1,a[12]=0,a[13]=0,a[15]=0,C!=null&&C!==1/0?(a[10]=(C+h)*(w=1/(h-C)),a[14]=2*C*h*w):(a[10]=-1,a[14]=-2*h),a},A.b7=function(a,e,l){var h=Math.sin(l),C=Math.cos(l),w=e[4],B=e[5],F=e[6],T=e[7],Z=e[8],M=e[9],D=e[10],J=e[11];return e!==a&&(a[0]=e[0],a[1]=e[1],a[2]=e[2],a[3]=e[3],a[12]=e[12],a[13]=e[13],a[14]=e[14],a[15]=e[15]),a[4]=w*C+Z*h,a[5]=B*C+M*h,a[6]=F*C+D*h,a[7]=T*C+J*h,a[8]=Z*C-w*h,a[9]=M*C-B*h,a[10]=D*C-F*h,a[11]=J*C-T*h,a},A.b8=z,A.b9=it,A.bA=function(a){return a.message===Tt},A.bB=As,A.bC=fo,A.ba=function(a){return a*Math.PI/180},A.bb=function(a,e){return a[0]=e[0],a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=e[1],a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=e[2],a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},A.bc=class extends R{},A.bd=Hm,A.be=RF,A.bg=Qt,A.bh=function(a,e){j.REGISTERED_PROTOCOLS[a]=e},A.bi=function(a){delete j.REGISTERED_PROTOCOLS[a]},A.bj=function(a,e){let l={};for(let C=0;Cli*Qn)}let ni=B?"center":l.get("text-justify").evaluate(Z,{},a.canonical),ei=l.get("symbol-placement")==="point"?l.get("text-max-width").evaluate(Z,{},a.canonical)*Qn:1/0,wi=()=>{a.bucket.allowVerticalPlacement&&ls(te)&&(st.vertical=ud(ut,a.glyphMap,a.glyphPositions,a.imagePositions,M,ei,w,oi,"left",Pe,Gt,A.ai.vertical,!0,J,D))};if(!B&&Pi){let di=new Set;if(ni==="auto")for(let Se=0;Ses(void 0,void 0,void 0,function*(){if(a.byteLength===0)return createImageBitmap(new ImageData(1,1));let e=new Blob([new Uint8Array(a)],{type:"image/png"});try{return createImageBitmap(e)}catch(l){throw new Error(`Could not load image because of ${l.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),A.e=Lt,A.f=a=>new Promise((e,l)=>{let h=new Image;h.onload=()=>{e(h),URL.revokeObjectURL(h.src),h.onload=null,window.requestAnimationFrame(()=>{h.src=ee})},h.onerror=()=>l(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."));let C=new Blob([new Uint8Array(a)],{type:"image/png"});h.src=a.byteLength?URL.createObjectURL(C):ee}),A.g=mt,A.h=(a,e)=>ae(Lt(a,{type:"json"}),e),A.i=St,A.j=Je,A.k=Re,A.l=(a,e)=>ae(Lt(a,{type:"arrayBuffer"}),e),A.m=ae,A.n=function(a){return new km(a).readFields(cF,[])},A.o=Th,A.p=T1,A.q=p,A.r=xc,A.s=ge,A.t=Nl,A.u=qe,A.v=Kt,A.w=lt,A.x=po,A.y=function([a,e,l]){return e+=90,e*=Math.PI/180,l*=Math.PI/180,{x:a*Math.cos(e)*Math.sin(l),y:a*Math.sin(e)*Math.sin(l),z:a*Math.cos(l)}},A.z=ci}),r("worker",["./shared"],function(A){"use strict";class s{constructor(W){this.keyCache={},W&&this.replace(W)}replace(W){this._layerConfigs={},this._layers={},this.update(W,[])}update(W,X){for(let ft of W){this._layerConfigs[ft.id]=ft;let Mt=this._layers[ft.id]=A.aB(ft);Mt._featureFilter=A.a7(Mt.filter),this.keyCache[ft.id]&&delete this.keyCache[ft.id]}for(let ft of X)delete this.keyCache[ft],delete this._layerConfigs[ft],delete this._layers[ft];this.familiesBySource={};let rt=A.bj(Object.values(this._layerConfigs),this.keyCache);for(let ft of rt){let Mt=ft.map(he=>this._layers[he.id]),Vt=Mt[0];if(Vt.visibility==="none")continue;let Yt=Vt.source||"",Rt=this.familiesBySource[Yt];Rt||(Rt=this.familiesBySource[Yt]={});let Wt=Vt.sourceLayer||"_geojsonTileLayer",be=Rt[Wt];be||(be=Rt[Wt]=[]),be.push(Mt)}}}class d{constructor(W){let X={},rt=[];for(let Yt in W){let Rt=W[Yt],Wt=X[Yt]={};for(let be in Rt){let he=Rt[+be];if(!he||he.bitmap.width===0||he.bitmap.height===0)continue;let Le={x:0,y:0,w:he.bitmap.width+2,h:he.bitmap.height+2};rt.push(Le),Wt[be]={rect:Le,metrics:he.metrics}}}let{w:ft,h:Mt}=A.p(rt),Vt=new A.o({width:ft||1,height:Mt||1});for(let Yt in W){let Rt=W[Yt];for(let Wt in Rt){let be=Rt[+Wt];if(!be||be.bitmap.width===0||be.bitmap.height===0)continue;let he=X[Yt][Wt].rect;A.o.copy(be.bitmap,Vt,{x:0,y:0},{x:he.x+1,y:he.y+1},be.bitmap)}}this.image=Vt,this.positions=X}}A.bk("GlyphAtlas",d);class f{constructor(W){this.tileID=new A.S(W.tileID.overscaledZ,W.tileID.wrap,W.tileID.canonical.z,W.tileID.canonical.x,W.tileID.canonical.y),this.uid=W.uid,this.zoom=W.zoom,this.pixelRatio=W.pixelRatio,this.tileSize=W.tileSize,this.source=W.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=W.showCollisionBoxes,this.collectResourceTiming=!!W.collectResourceTiming,this.returnDependencies=!!W.returnDependencies,this.promoteId=W.promoteId,this.inFlightDependencies=[]}parse(W,X,rt,ft){return A._(this,void 0,void 0,function*(){this.status="parsing",this.data=W,this.collisionBoxArray=new A.a5;let Mt=new A.bl(Object.keys(W.layers).sort()),Vt=new A.bm(this.tileID,this.promoteId);Vt.bucketLayerIDs=[];let Yt={},Rt={featureIndex:Vt,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:rt},Wt=X.familiesBySource[this.source];for(let Hi in Wt){let Wi=W.layers[Hi];if(!Wi)continue;Wi.version===1&&A.w(`Vector tile source "${this.source}" layer "${Hi}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let Ar=Mt.encode(Hi),Zt=[];for(let De=0;De=Te.maxzoom||Te.visibility!=="none"&&(I(De,this.zoom,rt),(Yt[Te.id]=Te.createBucket({index:Vt.bucketLayerIDs.length,layers:De,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Ar,sourceID:this.source})).populate(Zt,Rt,this.tileID.canonical),Vt.bucketLayerIDs.push(De.map(tr=>tr.id)))}}let be=A.aG(Rt.glyphDependencies,Hi=>Object.keys(Hi).map(Number));this.inFlightDependencies.forEach(Hi=>Hi?.abort()),this.inFlightDependencies=[];let he=Promise.resolve({});if(Object.keys(be).length){let Hi=new AbortController;this.inFlightDependencies.push(Hi),he=ft.sendAsync({type:"GG",data:{stacks:be,source:this.source,tileID:this.tileID,type:"glyphs"}},Hi)}let Le=Object.keys(Rt.iconDependencies),je=Promise.resolve({});if(Le.length){let Hi=new AbortController;this.inFlightDependencies.push(Hi),je=ft.sendAsync({type:"GI",data:{icons:Le,source:this.source,tileID:this.tileID,type:"icons"}},Hi)}let ti=Object.keys(Rt.patternDependencies),_i=Promise.resolve({});if(ti.length){let Hi=new AbortController;this.inFlightDependencies.push(Hi),_i=ft.sendAsync({type:"GI",data:{icons:ti,source:this.source,tileID:this.tileID,type:"patterns"}},Hi)}let[$i,xi,zi]=yield Promise.all([he,je,_i]),hr=new d($i),fr=new A.bn(xi,zi);for(let Hi in Yt){let Wi=Yt[Hi];Wi instanceof A.a6?(I(Wi.layers,this.zoom,rt),A.bo({bucket:Wi,glyphMap:$i,glyphPositions:hr.positions,imageMap:xi,imagePositions:fr.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):Wi.hasPattern&&(Wi instanceof A.bp||Wi instanceof A.bq||Wi instanceof A.br)&&(I(Wi.layers,this.zoom,rt),Wi.addFeatures(Rt,this.tileID.canonical,fr.patternPositions))}return this.status="done",{buckets:Object.values(Yt).filter(Hi=>!Hi.isEmpty()),featureIndex:Vt,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:hr.image,imageAtlas:fr,glyphMap:this.returnDependencies?$i:null,iconMap:this.returnDependencies?xi:null,glyphPositions:this.returnDependencies?hr.positions:null}})}}function I(wt,W,X){let rt=new A.a9(W);for(let ft of wt)ft.recalculate(rt,X)}class _{constructor(W,X,rt){this.actor=W,this.layerIndex=X,this.availableImages=rt,this.fetching={},this.loading={},this.loaded={}}loadVectorTile(W,X){return A._(this,void 0,void 0,function*(){let rt=yield A.l(W.request,X);try{return{vectorTile:new A.bs.VectorTile(new A.bt(rt.data)),rawData:rt.data,cacheControl:rt.cacheControl,expires:rt.expires}}catch(ft){let Mt=new Uint8Array(rt.data),Vt=`Unable to parse the tile at ${W.request.url}, `;throw Vt+=Mt[0]===31&&Mt[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${ft.message}`,new Error(Vt)}})}loadTile(W){return A._(this,void 0,void 0,function*(){let X=W.uid,rt=!!(W&&W.request&&W.request.collectResourceTiming)&&new A.bu(W.request),ft=new f(W);this.loading[X]=ft;let Mt=new AbortController;ft.abort=Mt;try{let Vt=yield this.loadVectorTile(W,Mt);if(delete this.loading[X],!Vt)return null;let Yt=Vt.rawData,Rt={};Vt.expires&&(Rt.expires=Vt.expires),Vt.cacheControl&&(Rt.cacheControl=Vt.cacheControl);let Wt={};if(rt){let he=rt.finish();he&&(Wt.resourceTiming=JSON.parse(JSON.stringify(he)))}ft.vectorTile=Vt.vectorTile;let be=ft.parse(Vt.vectorTile,this.layerIndex,this.availableImages,this.actor);this.loaded[X]=ft,this.fetching[X]={rawTileData:Yt,cacheControl:Rt,resourceTiming:Wt};try{let he=yield be;return A.e({rawTileData:Yt.slice(0)},he,Rt,Wt)}finally{delete this.fetching[X]}}catch(Vt){throw delete this.loading[X],ft.status="done",this.loaded[X]=ft,Vt}})}reloadTile(W){return A._(this,void 0,void 0,function*(){let X=W.uid;if(!this.loaded||!this.loaded[X])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");let rt=this.loaded[X];if(rt.showCollisionBoxes=W.showCollisionBoxes,rt.status==="parsing"){let ft=yield rt.parse(rt.vectorTile,this.layerIndex,this.availableImages,this.actor),Mt;if(this.fetching[X]){let{rawTileData:Vt,cacheControl:Yt,resourceTiming:Rt}=this.fetching[X];delete this.fetching[X],Mt=A.e({rawTileData:Vt.slice(0)},ft,Yt,Rt)}else Mt=ft;return Mt}if(rt.status==="done"&&rt.vectorTile)return rt.parse(rt.vectorTile,this.layerIndex,this.availableImages,this.actor)})}abortTile(W){return A._(this,void 0,void 0,function*(){let X=this.loading,rt=W.uid;X&&X[rt]&&X[rt].abort&&(X[rt].abort.abort(),delete X[rt])})}removeTile(W){return A._(this,void 0,void 0,function*(){this.loaded&&this.loaded[W.uid]&&delete this.loaded[W.uid]})}}class S{constructor(){this.loaded={}}loadTile(W){return A._(this,void 0,void 0,function*(){let{uid:X,encoding:rt,rawImageData:ft,redFactor:Mt,greenFactor:Vt,blueFactor:Yt,baseShift:Rt}=W,Wt=ft.width+2,be=ft.height+2,he=A.b(ft)?new A.R({width:Wt,height:be},yield A.bv(ft,-1,-1,Wt,be)):ft,Le=new A.bw(X,he,rt,Mt,Vt,Yt,Rt);return this.loaded=this.loaded||{},this.loaded[X]=Le,Le})}removeTile(W){let X=this.loaded,rt=W.uid;X&&X[rt]&&delete X[rt]}}function U(wt,W){if(wt.length!==0){G(wt[0],W);for(var X=1;X=Math.abs(Yt)?X-Rt+Yt:Yt-Rt+X,X=Rt}X+rt>=0!=!!W&&wt.reverse()}var L=A.bx(function wt(W,X){var rt,ft=W&&W.type;if(ft==="FeatureCollection")for(rt=0;rt>31}function St(wt,W){for(var X=wt.loadGeometry(),rt=wt.type,ft=0,Mt=0,Vt=X.length,Yt=0;Ytwt},qt=Math.fround||(Xt=new Float32Array(1),wt=>(Xt[0]=+wt,Xt[0]));var Xt;let vt=3,Tt=5,pe=6;class j{constructor(W){this.options=Object.assign(Object.create(ee),W),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(W){let{log:X,minZoom:rt,maxZoom:ft}=this.options;X&&console.time("total time");let Mt=`prepare ${W.length} points`;X&&console.time(Mt),this.points=W;let Vt=[];for(let Rt=0;Rt=rt;Rt--){let Wt=+Date.now();Yt=this.trees[Rt]=this._createTree(this._cluster(Yt,Rt)),X&&console.log("z%d: %d clusters in %dms",Rt,Yt.numItems,+Date.now()-Wt)}return X&&console.timeEnd("total time"),this}getClusters(W,X){let rt=((W[0]+180)%360+360)%360-180,ft=Math.max(-90,Math.min(90,W[1])),Mt=W[2]===180?180:((W[2]+180)%360+360)%360-180,Vt=Math.max(-90,Math.min(90,W[3]));if(W[2]-W[0]>=360)rt=-180,Mt=180;else if(rt>Mt){let he=this.getClusters([rt,ft,180,Vt],X),Le=this.getClusters([-180,ft,Mt,Vt],X);return he.concat(Le)}let Yt=this.trees[this._limitZoom(X)],Rt=Yt.range(Qt(rt),Ht(Vt),Qt(Mt),Ht(ft)),Wt=Yt.data,be=[];for(let he of Rt){let Le=this.stride*he;be.push(Wt[Le+Tt]>1?mt(Wt,Le,this.clusterProps):this.points[Wt[Le+vt]])}return be}getChildren(W){let X=this._getOriginId(W),rt=this._getOriginZoom(W),ft="No cluster with the specified id.",Mt=this.trees[rt];if(!Mt)throw new Error(ft);let Vt=Mt.data;if(X*this.stride>=Vt.length)throw new Error(ft);let Yt=this.options.radius/(this.options.extent*Math.pow(2,rt-1)),Rt=Mt.within(Vt[X*this.stride],Vt[X*this.stride+1],Yt),Wt=[];for(let be of Rt){let he=be*this.stride;Vt[he+4]===W&&Wt.push(Vt[he+Tt]>1?mt(Vt,he,this.clusterProps):this.points[Vt[he+vt]])}if(Wt.length===0)throw new Error(ft);return Wt}getLeaves(W,X,rt){let ft=[];return this._appendLeaves(ft,W,X=X||10,rt=rt||0,0),ft}getTile(W,X,rt){let ft=this.trees[this._limitZoom(W)],Mt=Math.pow(2,W),{extent:Vt,radius:Yt}=this.options,Rt=Yt/Vt,Wt=(rt-Rt)/Mt,be=(rt+1+Rt)/Mt,he={features:[]};return this._addTileFeatures(ft.range((X-Rt)/Mt,Wt,(X+1+Rt)/Mt,be),ft.data,X,rt,Mt,he),X===0&&this._addTileFeatures(ft.range(1-Rt/Mt,Wt,1,be),ft.data,Mt,rt,Mt,he),X===Mt-1&&this._addTileFeatures(ft.range(0,Wt,Rt/Mt,be),ft.data,-1,rt,Mt,he),he.features.length?he:null}getClusterExpansionZoom(W){let X=this._getOriginZoom(W)-1;for(;X<=this.options.maxZoom;){let rt=this.getChildren(W);if(X++,rt.length!==1)break;W=rt[0].properties.cluster_id}return X}_appendLeaves(W,X,rt,ft,Mt){let Vt=this.getChildren(X);for(let Yt of Vt){let Rt=Yt.properties;if(Rt&&Rt.cluster?Mt+Rt.point_count<=ft?Mt+=Rt.point_count:Mt=this._appendLeaves(W,Rt.cluster_id,rt,ft,Mt):Mt1,be,he,Le;if(Wt)be=yt(X,Rt,this.clusterProps),he=X[Rt],Le=X[Rt+1];else{let _i=this.points[X[Rt+vt]];be=_i.properties;let[$i,xi]=_i.geometry.coordinates;he=Qt($i),Le=Ht(xi)}let je={type:1,geometry:[[Math.round(this.options.extent*(he*Mt-rt)),Math.round(this.options.extent*(Le*Mt-ft))]],tags:be},ti;ti=Wt||this.options.generateId?X[Rt+vt]:this.points[X[Rt+vt]].id,ti!==void 0&&(je.id=ti),Vt.features.push(je)}}_limitZoom(W){return Math.max(this.options.minZoom,Math.min(Math.floor(+W),this.options.maxZoom+1))}_cluster(W,X){let{radius:rt,extent:ft,reduce:Mt,minPoints:Vt}=this.options,Yt=rt/(ft*Math.pow(2,X)),Rt=W.data,Wt=[],be=this.stride;for(let he=0;heX&&($i+=Rt[zi+Tt])}if($i>_i&&$i>=Vt){let xi,zi=Le*_i,hr=je*_i,fr=-1,Hi=((he/be|0)<<5)+(X+1)+this.points.length;for(let Wi of ti){let Ar=Wi*be;if(Rt[Ar+2]<=X)continue;Rt[Ar+2]=X;let Zt=Rt[Ar+Tt];zi+=Rt[Ar]*Zt,hr+=Rt[Ar+1]*Zt,Rt[Ar+4]=Hi,Mt&&(xi||(xi=this._map(Rt,he,!0),fr=this.clusterProps.length,this.clusterProps.push(xi)),Mt(xi,this._map(Rt,Ar)))}Rt[he+4]=Hi,Wt.push(zi/$i,hr/$i,1/0,Hi,-1,$i),Mt&&Wt.push(fr)}else{for(let xi=0;xi1)for(let xi of ti){let zi=xi*be;if(!(Rt[zi+2]<=X)){Rt[zi+2]=X;for(let hr=0;hr>5}_getOriginZoom(W){return(W-this.points.length)%32}_map(W,X,rt){if(W[X+Tt]>1){let Vt=this.clusterProps[W[X+pe]];return rt?Object.assign({},Vt):Vt}let ft=this.points[W[X+vt]].properties,Mt=this.options.map(ft);return rt&&Mt===ft?Object.assign({},Mt):Mt}}function mt(wt,W,X){return{type:"Feature",id:wt[W+vt],properties:yt(wt,W,X),geometry:{type:"Point",coordinates:[(rt=wt[W],360*(rt-.5)),ae(wt[W+1])]}};var rt}function yt(wt,W,X){let rt=wt[W+Tt],ft=rt>=1e4?`${Math.round(rt/1e3)}k`:rt>=1e3?Math.round(rt/100)/10+"k":rt,Mt=wt[W+pe],Vt=Mt===-1?{}:Object.assign({},X[Mt]);return Object.assign(Vt,{cluster:!0,cluster_id:wt[W+vt],point_count:rt,point_count_abbreviated:ft})}function Qt(wt){return wt/360+.5}function Ht(wt){let W=Math.sin(wt*Math.PI/180),X=.5-.25*Math.log((1+W)/(1-W))/Math.PI;return X<0?0:X>1?1:X}function ae(wt){let W=(180-360*wt)*Math.PI/180;return 360*Math.atan(Math.exp(W))/Math.PI-90}function ge(wt,W,X,rt){let ft=rt,Mt=W+(X-W>>1),Vt,Yt=X-W,Rt=wt[W],Wt=wt[W+1],be=wt[X],he=wt[X+1];for(let Le=W+3;Left)Vt=Le,ft=je;else if(je===ft){let ti=Math.abs(Le-Mt);tirt&&(Vt-W>3&&ge(wt,W,Vt,rt),wt[Vt+2]=ft,X-Vt>3&&ge(wt,Vt,X,rt))}function de(wt,W,X,rt,ft,Mt){let Vt=ft-X,Yt=Mt-rt;if(Vt!==0||Yt!==0){let Rt=((wt-X)*Vt+(W-rt)*Yt)/(Vt*Vt+Yt*Yt);Rt>1?(X=ft,rt=Mt):Rt>0&&(X+=Vt*Rt,rt+=Yt*Rt)}return Vt=wt-X,Yt=W-rt,Vt*Vt+Yt*Yt}function Ze(wt,W,X,rt){let ft={id:wt??null,type:W,geometry:X,tags:rt,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(W==="Point"||W==="MultiPoint"||W==="LineString")Re(ft,X);else if(W==="Polygon")Re(ft,X[0]);else if(W==="MultiLineString")for(let Mt of X)Re(ft,Mt);else if(W==="MultiPolygon")for(let Mt of X)Re(ft,Mt[0]);return ft}function Re(wt,W){for(let X=0;X0&&(Vt+=rt?(ft*be-Wt*Mt)/2:Math.sqrt(Math.pow(Wt-ft,2)+Math.pow(be-Mt,2))),ft=Wt,Mt=be}let Yt=W.length-3;W[2]=1,ge(W,0,Yt,X),W[Yt+2]=1,W.size=Math.abs(Vt),W.start=0,W.end=W.size}function Ce(wt,W,X,rt){for(let ft=0;ft1?1:X}function Oe(wt,W,X,rt,ft,Mt,Vt,Yt){if(rt/=W,Mt>=(X/=W)&&Vt=rt)return null;let Rt=[];for(let Wt of wt){let be=Wt.geometry,he=Wt.type,Le=ft===0?Wt.minX:Wt.minY,je=ft===0?Wt.maxX:Wt.maxY;if(Le>=X&&je=rt)continue;let ti=[];if(he==="Point"||he==="MultiPoint")Qe(be,ti,X,rt,ft);else if(he==="LineString")Ne(be,ti,X,rt,ft,!1,Yt.lineMetrics);else if(he==="MultiLineString")We(be,ti,X,rt,ft,!1);else if(he==="Polygon")We(be,ti,X,rt,ft,!0);else if(he==="MultiPolygon")for(let _i of be){let $i=[];We(_i,$i,X,rt,ft,!0),$i.length&&ti.push($i)}if(ti.length){if(Yt.lineMetrics&&he==="LineString"){for(let _i of ti)Rt.push(Ze(Wt.id,he,_i,Wt.tags));continue}he!=="LineString"&&he!=="MultiLineString"||(ti.length===1?(he="LineString",ti=ti[0]):he="MultiLineString"),he!=="Point"&&he!=="MultiPoint"||(he=ti.length===3?"Point":"MultiPoint"),Rt.push(Ze(Wt.id,he,ti,Wt.tags))}}return Rt.length?Rt:null}function Qe(wt,W,X,rt,ft){for(let Mt=0;Mt=X&&Vt<=rt&&ri(W,wt[Mt],wt[Mt+1],wt[Mt+2])}}function Ne(wt,W,X,rt,ft,Mt,Vt){let Yt=ze(wt),Rt=ft===0?hi:Ti,Wt,be,he=wt.start;for(let $i=0;$iX&&(be=Rt(Yt,xi,zi,fr,Hi,X),Vt&&(Yt.start=he+Wt*be)):Wi>rt?Ar=X&&(be=Rt(Yt,xi,zi,fr,Hi,X),Zt=!0),Ar>rt&&Wi<=rt&&(be=Rt(Yt,xi,zi,fr,Hi,rt),Zt=!0),!Mt&&Zt&&(Vt&&(Yt.end=he+Wt*be),W.push(Yt),Yt=ze(wt)),Vt&&(he+=Wt)}let Le=wt.length-3,je=wt[Le],ti=wt[Le+1],_i=ft===0?je:ti;_i>=X&&_i<=rt&&ri(Yt,je,ti,wt[Le+2]),Le=Yt.length-3,Mt&&Le>=3&&(Yt[Le]!==Yt[0]||Yt[Le+1]!==Yt[1])&&ri(Yt,Yt[0],Yt[1],Yt[2]),Yt.length&&W.push(Yt)}function ze(wt){let W=[];return W.size=wt.size,W.start=wt.start,W.end=wt.end,W}function We(wt,W,X,rt,ft,Mt){for(let Vt of wt)Ne(Vt,W,X,rt,ft,Mt,!1)}function ri(wt,W,X,rt){wt.push(W,X,rt)}function hi(wt,W,X,rt,ft,Mt){let Vt=(Mt-W)/(rt-W);return ri(wt,Mt,X+(ft-X)*Vt,1),Vt}function Ti(wt,W,X,rt,ft,Mt){let Vt=(Mt-X)/(ft-X);return ri(wt,W+(rt-W)*Vt,Mt,1),Vt}function fe(wt,W){let X=[];for(let rt=0;rt0&&W.size<(ft?Vt:rt))return void(X.numPoints+=W.length/3);let Yt=[];for(let Rt=0;RtVt)&&(X.numSimplified++,Yt.push(W[Rt],W[Rt+1])),X.numPoints++;ft&&function(Rt,Wt){let be=0;for(let he=0,Le=Rt.length,je=Le-2;he0===Wt)for(let he=0,Le=Rt.length;he24)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.");let ft=function(Mt,Vt){let Yt=[];if(Mt.type==="FeatureCollection")for(let Rt=0;Rt1&&console.time("creation"),je=this.tiles[Le]=Gi(W,X,rt,ft,Wt),this.tileCoords.push({z:X,x:rt,y:ft}),be)){be>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",X,rt,ft,je.numFeatures,je.numPoints,je.numSimplified),console.timeEnd("creation"));let Zt=`z${X}`;this.stats[Zt]=(this.stats[Zt]||0)+1,this.total++}if(je.source=W,Mt==null){if(X===Wt.indexMaxZoom||je.numPoints<=Wt.indexMaxPoints)continue}else{if(X===Wt.maxZoom||X===Mt)continue;if(Mt!=null){let Zt=Mt-X;if(rt!==Vt>>Zt||ft!==Yt>>Zt)continue}}if(je.source=null,W.length===0)continue;be>1&&console.time("clipping");let ti=.5*Wt.buffer/Wt.extent,_i=.5-ti,$i=.5+ti,xi=1+ti,zi=null,hr=null,fr=null,Hi=null,Wi=Oe(W,he,rt-ti,rt+$i,0,je.minX,je.maxX,Wt),Ar=Oe(W,he,rt+_i,rt+xi,0,je.minX,je.maxX,Wt);W=null,Wi&&(zi=Oe(Wi,he,ft-ti,ft+$i,1,je.minY,je.maxY,Wt),hr=Oe(Wi,he,ft+_i,ft+xi,1,je.minY,je.maxY,Wt),Wi=null),Ar&&(fr=Oe(Ar,he,ft-ti,ft+$i,1,je.minY,je.maxY,Wt),Hi=Oe(Ar,he,ft+_i,ft+xi,1,je.minY,je.maxY,Wt),Ar=null),be>1&&console.timeEnd("clipping"),Rt.push(zi||[],X+1,2*rt,2*ft),Rt.push(hr||[],X+1,2*rt,2*ft+1),Rt.push(fr||[],X+1,2*rt+1,2*ft),Rt.push(Hi||[],X+1,2*rt+1,2*ft+1)}}getTile(W,X,rt){W=+W,X=+X,rt=+rt;let ft=this.options,{extent:Mt,debug:Vt}=ft;if(W<0||W>24)return null;let Yt=1<1&&console.log("drilling down to z%d-%d-%d",W,X,rt);let Wt,be=W,he=X,Le=rt;for(;!Wt&&be>0;)be--,he>>=1,Le>>=1,Wt=this.tiles[Ki(be,he,Le)];return Wt&&Wt.source?(Vt>1&&(console.log("found parent tile z%d-%d-%d",be,he,Le),console.time("drilling down")),this.splitTile(Wt.source,be,he,Le,W,X,rt),Vt>1&&console.timeEnd("drilling down"),this.tiles[Rt]?Di(this.tiles[Rt],Mt):null):null}}function Ki(wt,W,X){return 32*((1<{he.properties=je;let ti={};for(let _i of Le)ti[_i]=Rt[_i].evaluate(be,he);return ti},Vt.reduce=(je,ti)=>{he.properties=ti;for(let _i of Le)be.accumulated=je[_i],je[_i]=Wt[_i].evaluate(be,he)},Vt}(W)).load((yield this._pendingData).features):(ft=yield this._pendingData,new or(ft,W.geojsonVtOptions)),this.loaded={};let Mt={};if(rt){let Vt=rt.finish();Vt&&(Mt.resourceTiming={},Mt.resourceTiming[W.source]=JSON.parse(JSON.stringify(Vt)))}return Mt}catch(Mt){if(delete this._pendingRequest,A.bA(Mt))return{abandoned:!0};throw Mt}var ft})}getData(){return A._(this,void 0,void 0,function*(){return this._pendingData})}reloadTile(W){let X=this.loaded;return X&&X[W.uid]?super.reloadTile(W):this.loadTile(W)}loadAndProcessGeoJSON(W,X){return A._(this,void 0,void 0,function*(){let rt=yield this.loadGeoJSON(W,X);if(delete this._pendingRequest,typeof rt!="object")throw new Error(`Input data given to '${W.source}' is not a valid GeoJSON object.`);if(L(rt,!0),W.filter){let ft=A.bB(W.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(ft.result==="error")throw new Error(ft.value.map(Vt=>`${Vt.key}: ${Vt.message}`).join(", "));rt={type:"FeatureCollection",features:rt.features.filter(Vt=>ft.value.evaluate({zoom:0},Vt))}}return rt})}loadGeoJSON(W,X){return A._(this,void 0,void 0,function*(){let{promoteId:rt}=W;if(W.request){let ft=yield A.h(W.request,X);return this._dataUpdateable=br(ft.data,rt)?Ji(ft.data,rt):void 0,ft.data}if(typeof W.data=="string")try{let ft=JSON.parse(W.data);return this._dataUpdateable=br(ft,rt)?Ji(ft,rt):void 0,ft}catch{throw new Error(`Input data given to '${W.source}' is not a valid GeoJSON object.`)}if(!W.dataDiff)throw new Error(`Input data given to '${W.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${W.source}`);return function(ft,Mt,Vt){var Yt,Rt,Wt,be;if(Mt.removeAll&&ft.clear(),Mt.remove)for(let he of Mt.remove)ft.delete(he);if(Mt.add)for(let he of Mt.add){let Le=ii(he,Vt);Le!=null&&ft.set(Le,he)}if(Mt.update)for(let he of Mt.update){let Le=ft.get(he.id);if(Le==null)continue;let je=!he.removeAllProperties&&(((Yt=he.removeProperties)===null||Yt===void 0?void 0:Yt.length)>0||((Rt=he.addOrUpdateProperties)===null||Rt===void 0?void 0:Rt.length)>0);if((he.newGeometry||he.removeAllProperties||je)&&(Le=Object.assign({},Le),ft.set(he.id,Le),je&&(Le.properties=Object.assign({},Le.properties))),he.newGeometry&&(Le.geometry=he.newGeometry),he.removeAllProperties)Le.properties={};else if(((Wt=he.removeProperties)===null||Wt===void 0?void 0:Wt.length)>0)for(let ti of he.removeProperties)Object.prototype.hasOwnProperty.call(Le.properties,ti)&&delete Le.properties[ti];if(((be=he.addOrUpdateProperties)===null||be===void 0?void 0:be.length)>0)for(let{key:ti,value:_i}of he.addOrUpdateProperties)Le.properties[ti]=_i}}(this._dataUpdateable,W.dataDiff,rt),{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())}})}removeSource(W){return A._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(W){return this._geoJSONIndex.getClusterExpansionZoom(W.clusterId)}getClusterChildren(W){return this._geoJSONIndex.getChildren(W.clusterId)}getClusterLeaves(W){return this._geoJSONIndex.getLeaves(W.clusterId,W.limit,W.offset)}}class ar{constructor(W){this.self=W,this.actor=new A.F(W),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.self.registerWorkerSource=(X,rt)=>{if(this.externalWorkerSourceTypes[X])throw new Error(`Worker source with name "${X}" already registered.`);this.externalWorkerSourceTypes[X]=rt},this.self.addProtocol=A.bh,this.self.removeProtocol=A.bi,this.self.registerRTLTextPlugin=X=>{if(A.bC.isParsed())throw new Error("RTL text plugin already registered.");A.bC.setMethods(X)},this.actor.registerMessageHandler("LDT",(X,rt)=>this._getDEMWorkerSource(X,rt.source).loadTile(rt)),this.actor.registerMessageHandler("RDT",(X,rt)=>A._(this,void 0,void 0,function*(){this._getDEMWorkerSource(X,rt.source).removeTile(rt)})),this.actor.registerMessageHandler("GCEZ",(X,rt)=>A._(this,void 0,void 0,function*(){return this._getWorkerSource(X,rt.type,rt.source).getClusterExpansionZoom(rt)})),this.actor.registerMessageHandler("GCC",(X,rt)=>A._(this,void 0,void 0,function*(){return this._getWorkerSource(X,rt.type,rt.source).getClusterChildren(rt)})),this.actor.registerMessageHandler("GCL",(X,rt)=>A._(this,void 0,void 0,function*(){return this._getWorkerSource(X,rt.type,rt.source).getClusterLeaves(rt)})),this.actor.registerMessageHandler("LD",(X,rt)=>this._getWorkerSource(X,rt.type,rt.source).loadData(rt)),this.actor.registerMessageHandler("GD",(X,rt)=>this._getWorkerSource(X,rt.type,rt.source).getData()),this.actor.registerMessageHandler("LT",(X,rt)=>this._getWorkerSource(X,rt.type,rt.source).loadTile(rt)),this.actor.registerMessageHandler("RT",(X,rt)=>this._getWorkerSource(X,rt.type,rt.source).reloadTile(rt)),this.actor.registerMessageHandler("AT",(X,rt)=>this._getWorkerSource(X,rt.type,rt.source).abortTile(rt)),this.actor.registerMessageHandler("RMT",(X,rt)=>this._getWorkerSource(X,rt.type,rt.source).removeTile(rt)),this.actor.registerMessageHandler("RS",(X,rt)=>A._(this,void 0,void 0,function*(){if(!this.workerSources[X]||!this.workerSources[X][rt.type]||!this.workerSources[X][rt.type][rt.source])return;let ft=this.workerSources[X][rt.type][rt.source];delete this.workerSources[X][rt.type][rt.source],ft.removeSource!==void 0&&ft.removeSource(rt)})),this.actor.registerMessageHandler("RM",X=>A._(this,void 0,void 0,function*(){delete this.layerIndexes[X],delete this.availableImages[X],delete this.workerSources[X],delete this.demWorkerSources[X]})),this.actor.registerMessageHandler("SR",(X,rt)=>A._(this,void 0,void 0,function*(){this.referrer=rt})),this.actor.registerMessageHandler("SRPS",(X,rt)=>this._syncRTLPluginState(X,rt)),this.actor.registerMessageHandler("IS",(X,rt)=>A._(this,void 0,void 0,function*(){this.self.importScripts(rt)})),this.actor.registerMessageHandler("SI",(X,rt)=>this._setImages(X,rt)),this.actor.registerMessageHandler("UL",(X,rt)=>A._(this,void 0,void 0,function*(){this._getLayerIndex(X).update(rt.layers,rt.removedIds)})),this.actor.registerMessageHandler("SL",(X,rt)=>A._(this,void 0,void 0,function*(){this._getLayerIndex(X).replace(rt)}))}_setImages(W,X){return A._(this,void 0,void 0,function*(){this.availableImages[W]=X;for(let rt in this.workerSources[W]){let ft=this.workerSources[W][rt];for(let Mt in ft)ft[Mt].availableImages=X}})}_syncRTLPluginState(W,X){return A._(this,void 0,void 0,function*(){if(A.bC.isParsed())return A.bC.getState();if(X.pluginStatus!=="loading")return A.bC.setState(X),X;let rt=X.pluginURL;if(this.self.importScripts(rt),A.bC.isParsed()){let ft={pluginStatus:"loaded",pluginURL:rt};return A.bC.setState(ft),ft}throw A.bC.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${rt}`)})}_getAvailableImages(W){let X=this.availableImages[W];return X||(X=[]),X}_getLayerIndex(W){let X=this.layerIndexes[W];return X||(X=this.layerIndexes[W]=new s),X}_getWorkerSource(W,X,rt){if(this.workerSources[W]||(this.workerSources[W]={}),this.workerSources[W][X]||(this.workerSources[W][X]={}),!this.workerSources[W][X][rt]){let ft={sendAsync:(Mt,Vt)=>(Mt.targetMapId=W,this.actor.sendAsync(Mt,Vt))};switch(X){case"vector":this.workerSources[W][X][rt]=new _(ft,this._getLayerIndex(W),this._getAvailableImages(W));break;case"geojson":this.workerSources[W][X][rt]=new wr(ft,this._getLayerIndex(W),this._getAvailableImages(W));break;default:this.workerSources[W][X][rt]=new this.externalWorkerSourceTypes[X](ft,this._getLayerIndex(W),this._getAvailableImages(W))}}return this.workerSources[W][X][rt]}_getDEMWorkerSource(W,X){return this.demWorkerSources[W]||(this.demWorkerSources[W]={}),this.demWorkerSources[W][X]||(this.demWorkerSources[W][X]=new S),this.demWorkerSources[W][X]}}return A.i(self)&&(self.worker=new ar(self)),ar}),r("index",["exports","./shared"],function(A,s){"use strict";var d="4.5.2";let f,I,_={now:typeof performance<"u"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frameAsync:v=>new Promise((i,c)=>{let p=requestAnimationFrame(i);v.signal.addEventListener("abort",()=>{cancelAnimationFrame(p),c(s.c())})}),getImageData(v,i=0){return this.getImageCanvasContext(v).getImageData(-i,-i,v.width+2*i,v.height+2*i)},getImageCanvasContext(v){let i=window.document.createElement("canvas"),c=i.getContext("2d",{willReadFrequently:!0});if(!c)throw new Error("failed to create canvas 2d context");return i.width=v.width,i.height=v.height,c.drawImage(v,0,0,v.width,v.height),c},resolveURL:v=>(f||(f=document.createElement("a")),f.href=v,f.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(I==null&&(I=matchMedia("(prefers-reduced-motion: reduce)")),I.matches)}};class S{static testProp(i){if(!S.docStyle)return i[0];for(let c=0;c{window.removeEventListener("click",S.suppressClickInternal,!0)},0)}static getScale(i){let c=i.getBoundingClientRect();return{x:c.width/i.offsetWidth||1,y:c.height/i.offsetHeight||1,boundingClientRect:c}}static getPoint(i,c,p){let m=c.boundingClientRect;return new s.P((p.clientX-m.left)/c.x-i.clientLeft,(p.clientY-m.top)/c.y-i.clientTop)}static mousePos(i,c){let p=S.getScale(i);return S.getPoint(i,p,c)}static touchPos(i,c){let p=[],m=S.getScale(i);for(let b=0;b{G&&q(G),G=null,V=!0},L.onerror=()=>{K=!0,G=null},L.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(v){let i,c,p,m;v.resetRequestQueue=()=>{i=[],c=0,p=0,m={}},v.addThrottleControl=y=>{let x=p++;return m[x]=y,x},v.removeThrottleControl=y=>{delete m[y],u()},v.getImage=(y,x,k=!0)=>new Promise((E,R)=>{U.supported&&(y.headers||(y.headers={}),y.headers.accept="image/webp,*/*"),s.e(y,{type:"image"}),i.push({abortController:x,requestParameters:y,supportImageRefresh:k,state:"queued",onError:P=>{R(P)},onSuccess:P=>{E(P)}}),u()});let b=y=>s._(this,void 0,void 0,function*(){y.state="running";let{requestParameters:x,supportImageRefresh:k,onError:E,onSuccess:R,abortController:P}=y,H=k===!1&&!s.i(self)&&!s.g(x.url)&&(!x.headers||Object.keys(x.headers).reduce((et,nt)=>et&&nt==="accept",!0));c++;let N=H?g(x,P):s.m(x,P);try{let et=yield N;delete y.abortController,y.state="completed",et.data instanceof HTMLImageElement||s.b(et.data)?R(et):et.data&&R({data:yield(O=et.data,typeof createImageBitmap=="function"?s.d(O):s.f(O)),cacheControl:et.cacheControl,expires:et.expires})}catch(et){delete y.abortController,E(et)}finally{c--,u()}var O}),u=()=>{let y=(()=>{for(let x of Object.keys(m))if(m[x]())return!0;return!1})()?s.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:s.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let x=c;x0;x++){let k=i.shift();k.abortController.signal.aborted?x--:b(k)}},g=(y,x)=>new Promise((k,E)=>{let R=new Image,P=y.url,H=y.credentials;H&&H==="include"?R.crossOrigin="use-credentials":(H&&H==="same-origin"||!s.s(P))&&(R.crossOrigin="anonymous"),x.signal.addEventListener("abort",()=>{R.src="",E(s.c())}),R.fetchPriority="high",R.onload=()=>{R.onerror=R.onload=null,k({data:R})},R.onerror=()=>{R.onerror=R.onload=null,x.signal.aborted||E(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."))},R.src=P})}(z||(z={})),z.resetRequestQueue();class it{constructor(i){this._transformRequestFn=i}transformRequest(i,c){return this._transformRequestFn&&this._transformRequestFn(i,c)||{url:i}}setTransformRequest(i){this._transformRequestFn=i}}function At(v){var i=new s.A(3);return i[0]=v[0],i[1]=v[1],i[2]=v[2],i}var _t,Lt=function(v,i,c){return v[0]=i[0]-c[0],v[1]=i[1]-c[1],v[2]=i[2]-c[2],v};_t=new s.A(3),s.A!=Float32Array&&(_t[0]=0,_t[1]=0,_t[2]=0);var Et=function(v){var i=v[0],c=v[1];return i*i+c*c};function xt(v){let i=[];if(typeof v=="string")i.push({id:"default",url:v});else if(v&&v.length>0){let c=[];for(let{id:p,url:m}of v){let b=`${p}${m}`;c.indexOf(b)===-1&&(c.push(b),i.push({id:p,url:m}))}}return i}function It(v,i,c){let p=v.split("?");return p[0]+=`${i}${c}`,p.join("?")}(function(){var v=new s.A(2);s.A!=Float32Array&&(v[0]=0,v[1]=0)})();class Nt{constructor(i,c,p,m){this.context=i,this.format=p,this.texture=i.gl.createTexture(),this.update(c,m)}update(i,c,p){let{width:m,height:b}=i,u=!(this.size&&this.size[0]===m&&this.size[1]===b||p),{context:g}=this,{gl:y}=g;if(this.useMipmap=Boolean(c&&c.useMipmap),y.bindTexture(y.TEXTURE_2D,this.texture),g.pixelStoreUnpackFlipY.set(!1),g.pixelStoreUnpack.set(1),g.pixelStoreUnpackPremultiplyAlpha.set(this.format===y.RGBA&&(!c||c.premultiply!==!1)),u)this.size=[m,b],i instanceof HTMLImageElement||i instanceof HTMLCanvasElement||i instanceof HTMLVideoElement||i instanceof ImageData||s.b(i)?y.texImage2D(y.TEXTURE_2D,0,this.format,this.format,y.UNSIGNED_BYTE,i):y.texImage2D(y.TEXTURE_2D,0,this.format,m,b,0,this.format,y.UNSIGNED_BYTE,i.data);else{let{x,y:k}=p||{x:0,y:0};i instanceof HTMLImageElement||i instanceof HTMLCanvasElement||i instanceof HTMLVideoElement||i instanceof ImageData||s.b(i)?y.texSubImage2D(y.TEXTURE_2D,0,x,k,y.RGBA,y.UNSIGNED_BYTE,i):y.texSubImage2D(y.TEXTURE_2D,0,x,k,m,b,y.RGBA,y.UNSIGNED_BYTE,i.data)}this.useMipmap&&this.isSizePowerOfTwo()&&y.generateMipmap(y.TEXTURE_2D)}bind(i,c,p){let{context:m}=this,{gl:b}=m;b.bindTexture(b.TEXTURE_2D,this.texture),p!==b.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(p=b.LINEAR),i!==this.filter&&(b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,i),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,p||i),this.filter=i),c!==this.wrap&&(b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,c),b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,c),this.wrap=c)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:i}=this.context;i.deleteTexture(this.texture),this.texture=null}}function ie(v){let{userImage:i}=v;return!!(i&&i.render&&i.render())&&(v.data.replace(new Uint8Array(i.data.buffer)),!0)}class lt extends s.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new s.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(i){if(this.loaded!==i&&(this.loaded=i,i)){for(let{ids:c,promiseResolve:p}of this.requestors)p(this._getImagesForIds(c));this.requestors=[]}}getImage(i){let c=this.images[i];if(c&&!c.data&&c.spriteData){let p=c.spriteData;c.data=new s.R({width:p.width,height:p.height},p.context.getImageData(p.x,p.y,p.width,p.height).data),c.spriteData=null}return c}addImage(i,c){if(this.images[i])throw new Error(`Image id ${i} already exist, use updateImage instead`);this._validate(i,c)&&(this.images[i]=c)}_validate(i,c){let p=!0,m=c.data||c.spriteData;return this._validateStretch(c.stretchX,m&&m.width)||(this.fire(new s.j(new Error(`Image "${i}" has invalid "stretchX" value`))),p=!1),this._validateStretch(c.stretchY,m&&m.height)||(this.fire(new s.j(new Error(`Image "${i}" has invalid "stretchY" value`))),p=!1),this._validateContent(c.content,c)||(this.fire(new s.j(new Error(`Image "${i}" has invalid "content" value`))),p=!1),p}_validateStretch(i,c){if(!i)return!0;let p=0;for(let m of i){if(m[0]{let m=!0;if(!this.isLoaded())for(let b of i)this.images[b]||(m=!1);this.isLoaded()||m?c(this._getImagesForIds(i)):this.requestors.push({ids:i,promiseResolve:c})})}_getImagesForIds(i){let c={};for(let p of i){let m=this.getImage(p);m||(this.fire(new s.k("styleimagemissing",{id:p})),m=this.getImage(p)),m?c[p]={data:m.data.clone(),pixelRatio:m.pixelRatio,sdf:m.sdf,version:m.version,stretchX:m.stretchX,stretchY:m.stretchY,content:m.content,textFitWidth:m.textFitWidth,textFitHeight:m.textFitHeight,hasRenderCallback:Boolean(m.userImage&&m.userImage.render)}:s.w(`Image "${p}" 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.`)}return c}getPixelSize(){let{width:i,height:c}=this.atlasImage;return{width:i,height:c}}getPattern(i){let c=this.patterns[i],p=this.getImage(i);if(!p)return null;if(c&&c.position.version===p.version)return c.position;if(c)c.position.version=p.version;else{let m={w:p.data.width+2,h:p.data.height+2,x:0,y:0},b=new s.I(m,p);this.patterns[i]={bin:m,position:b}}return this._updatePatternAtlas(),this.patterns[i].position}bind(i){let c=i.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new Nt(i,this.atlasImage,c.RGBA),this.atlasTexture.bind(c.LINEAR,c.CLAMP_TO_EDGE)}_updatePatternAtlas(){let i=[];for(let b in this.patterns)i.push(this.patterns[b].bin);let{w:c,h:p}=s.p(i),m=this.atlasImage;m.resize({width:c||1,height:p||1});for(let b in this.patterns){let{bin:u}=this.patterns[b],g=u.x+1,y=u.y+1,x=this.getImage(b).data,k=x.width,E=x.height;s.R.copy(x,m,{x:0,y:0},{x:g,y},{width:k,height:E}),s.R.copy(x,m,{x:0,y:E-1},{x:g,y:y-1},{width:k,height:1}),s.R.copy(x,m,{x:0,y:0},{x:g,y:y+E},{width:k,height:1}),s.R.copy(x,m,{x:k-1,y:0},{x:g-1,y},{width:1,height:E}),s.R.copy(x,m,{x:0,y:0},{x:g+k,y},{width:1,height:E})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(i){for(let c of i){if(this.callbackDispatchedThisFrame[c])continue;this.callbackDispatchedThisFrame[c]=!0;let p=this.getImage(c);p||s.w(`Image with ID: "${c}" was not found`),ie(p)&&this.updateImage(c,p)}}}let at=1e20;function St(v,i,c,p,m,b,u,g,y){for(let x=i;x-1);y++,b[y]=g,u[y]=x,u[y+1]=at}for(let g=0,y=0;g65535)throw new Error("glyphs > 65535 not supported");if(p.ranges[b])return{stack:i,id:c,glyph:m};if(!this.url)throw new Error("glyphsUrl is not set");if(!p.requests[b]){let g=se.loadGlyphRange(i,b,this.url,this.requestManager);p.requests[b]=g}let u=yield p.requests[b];for(let g in u)this._doesCharSupportLocalGlyph(+g)||(p.glyphs[+g]=u[+g]);return p.ranges[b]=!0,{stack:i,id:c,glyph:u[c]||null}})}_doesCharSupportLocalGlyph(i){return!!this.localIdeographFontFamily&&(s.u["CJK Unified Ideographs"](i)||s.u["Hangul Syllables"](i)||s.u.Hiragana(i)||s.u.Katakana(i))}_tinySDF(i,c,p){let m=this.localIdeographFontFamily;if(!m||!this._doesCharSupportLocalGlyph(p))return;let b=i.tinySDF;if(!b){let g="400";/bold/i.test(c)?g="900":/medium/i.test(c)?g="500":/light/i.test(c)&&(g="200"),b=i.tinySDF=new se.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:m,fontWeight:g})}let u=b.draw(String.fromCharCode(p));return{id:p,bitmap:new s.o({width:u.width||60,height:u.height||60},u.data),metrics:{width:u.glyphWidth/2||24,height:u.glyphHeight/2||24,left:u.glyphLeft/2+.5||0,top:u.glyphTop/2-27.5||-8,advance:u.glyphAdvance/2||24,isDoubleResolution:!0}}}}se.loadGlyphRange=function(v,i,c,p){return s._(this,void 0,void 0,function*(){let m=256*i,b=m+255,u=p.transformRequest(c.replace("{fontstack}",v).replace("{range}",`${m}-${b}`),"Glyphs"),g=yield s.l(u,new AbortController);if(!g||!g.data)throw new Error(`Could not load glyph range. range: ${i}, ${m}-${b}`);let y={};for(let x of s.n(g.data))y[x.id]=x;return y})},se.TinySDF=class{constructor({fontSize:v=24,buffer:i=3,radius:c=8,cutoff:p=.25,fontFamily:m="sans-serif",fontWeight:b="normal",fontStyle:u="normal"}={}){this.buffer=i,this.cutoff=p,this.radius=c;let g=this.size=v+4*i,y=this._createCanvas(g),x=this.ctx=y.getContext("2d",{willReadFrequently:!0});x.font=`${u} ${b} ${v}px ${m}`,x.textBaseline="alphabetic",x.textAlign="left",x.fillStyle="black",this.gridOuter=new Float64Array(g*g),this.gridInner=new Float64Array(g*g),this.f=new Float64Array(g),this.z=new Float64Array(g+1),this.v=new Uint16Array(g)}_createCanvas(v){let i=document.createElement("canvas");return i.width=i.height=v,i}draw(v){let{width:i,actualBoundingBoxAscent:c,actualBoundingBoxDescent:p,actualBoundingBoxLeft:m,actualBoundingBoxRight:b}=this.ctx.measureText(v),u=Math.ceil(c),g=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(b-m))),y=Math.min(this.size-this.buffer,u+Math.ceil(p)),x=g+2*this.buffer,k=y+2*this.buffer,E=Math.max(x*k,0),R=new Uint8ClampedArray(E),P={data:R,width:x,height:k,glyphWidth:g,glyphHeight:y,glyphTop:u,glyphLeft:0,glyphAdvance:i};if(g===0||y===0)return P;let{ctx:H,buffer:N,gridInner:O,gridOuter:et}=this;H.clearRect(N,N,g,y),H.fillText(v,N,N+u);let nt=H.getImageData(N,N,g,y);et.fill(at,0,E),O.fill(0,0,E);for(let Y=0;Y0?pt*pt:0,O[ot]=pt<0?pt*pt:0}}St(et,0,0,x,k,x,this.f,this.v,this.z),St(O,N,N,g,y,x,this.f,this.v,this.z);for(let Y=0;Y1&&(y=i[++g]);let k=Math.abs(x-y.left),E=Math.abs(x-y.right),R=Math.min(k,E),P,H=b/p*(m+1);if(y.isDash){let N=m-Math.abs(H);P=Math.sqrt(R*R+N*N)}else P=m-Math.sqrt(R*R+H*H);this.data[u+x]=Math.max(0,Math.min(255,P+128))}}}addRegularDash(i){for(let g=i.length-1;g>=0;--g){let y=i[g],x=i[g+1];y.zeroLength?i.splice(g,1):x&&x.isDash===y.isDash&&(x.left=y.left,i.splice(g,1))}let c=i[0],p=i[i.length-1];c.isDash===p.isDash&&(c.left=p.left-this.width,p.right=c.right+this.width);let m=this.width*this.nextRow,b=0,u=i[b];for(let g=0;g1&&(u=i[++b]);let y=Math.abs(g-u.left),x=Math.abs(g-u.right),k=Math.min(y,x);this.data[m+g]=Math.max(0,Math.min(255,(u.isDash?k:-k)+128))}}addDash(i,c){let p=c?7:0,m=2*p+1;if(this.nextRow+m>this.height)return s.w("LineAtlas out of space"),null;let b=0;for(let g=0;g{c.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[j]}numActive(){return Object.keys(this.active).length}}let yt=Math.floor(_.hardwareConcurrency/2),Qt,Ht;function ae(){return Qt||(Qt=new mt),Qt}mt.workerCount=s.C(globalThis)?Math.max(Math.min(yt,3),1):1;class ge{constructor(i,c){this.workerPool=i,this.actors=[],this.currentActor=0,this.id=c;let p=this.workerPool.acquire(c);for(let m=0;m{c.remove()}),this.actors=[],i&&this.workerPool.release(this.id)}registerMessageHandler(i,c){for(let p of this.actors)p.registerMessageHandler(i,c)}}function de(){return Ht||(Ht=new ge(ae(),s.G),Ht.registerMessageHandler("GR",(v,i,c)=>s.m(i,c))),Ht}function Ze(v,i){let c=s.H();return s.J(c,c,[1,1,0]),s.K(c,c,[.5*v.width,.5*v.height,1]),s.L(c,c,v.calculatePosMatrix(i.toUnwrapped()))}function Re(v,i,c,p,m,b){let u=function(E,R,P){if(E)for(let H of E){let N=R[H];if(N&&N.source===P&&N.type==="fill-extrusion")return!0}else for(let H in R){let N=R[H];if(N.source===P&&N.type==="fill-extrusion")return!0}return!1}(m&&m.layers,i,v.id),g=b.maxPitchScaleFactor(),y=v.tilesIn(p,g,u);y.sort(Je);let x=[];for(let E of y)x.push({wrappedTileID:E.tileID.wrapped().key,queryResults:E.tile.queryRenderedFeatures(i,c,v._state,E.queryGeometry,E.cameraQueryGeometry,E.scale,m,b,g,Ze(v.transform,E.tileID))});let k=function(E){let R={},P={};for(let H of E){let N=H.queryResults,O=H.wrappedTileID,et=P[O]=P[O]||{};for(let nt in N){let Y=N[nt],dt=et[nt]=et[nt]||{},gt=R[nt]=R[nt]||[];for(let ot of Y)dt[ot.featureIndex]||(dt[ot.featureIndex]=!0,gt.push(ot))}}return R}(x);for(let E in k)k[E].forEach(R=>{let P=R.feature,H=v.getFeatureState(P.layer["source-layer"],P.id);P.source=P.layer.source,P.layer["source-layer"]&&(P.sourceLayer=P.layer["source-layer"]),P.state=H});return k}function Je(v,i){let c=v.tileID,p=i.tileID;return c.overscaledZ-p.overscaledZ||c.canonical.y-p.canonical.y||c.wrap-p.wrap||c.canonical.x-p.canonical.x}function Xe(v,i,c){return s._(this,void 0,void 0,function*(){let p=v;if(v.url?p=(yield s.h(i.transformRequest(v.url,"Source"),c)).data:yield _.frameAsync(c),!p)return null;let m=s.M(s.e(p,v),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in p&&p.vector_layers&&(m.vectorLayerIds=p.vector_layers.map(b=>b.id)),m})}class Kt{constructor(i,c){i&&(c?this.setSouthWest(i).setNorthEast(c):Array.isArray(i)&&(i.length===4?this.setSouthWest([i[0],i[1]]).setNorthEast([i[2],i[3]]):this.setSouthWest(i[0]).setNorthEast(i[1])))}setNorthEast(i){return this._ne=i instanceof s.N?new s.N(i.lng,i.lat):s.N.convert(i),this}setSouthWest(i){return this._sw=i instanceof s.N?new s.N(i.lng,i.lat):s.N.convert(i),this}extend(i){let c=this._sw,p=this._ne,m,b;if(i instanceof s.N)m=i,b=i;else{if(!(i instanceof Kt))return Array.isArray(i)?i.length===4||i.every(Array.isArray)?this.extend(Kt.convert(i)):this.extend(s.N.convert(i)):i&&("lng"in i||"lon"in i)&&"lat"in i?this.extend(s.N.convert(i)):this;if(m=i._sw,b=i._ne,!m||!b)return this}return c||p?(c.lng=Math.min(m.lng,c.lng),c.lat=Math.min(m.lat,c.lat),p.lng=Math.max(b.lng,p.lng),p.lat=Math.max(b.lat,p.lat)):(this._sw=new s.N(m.lng,m.lat),this._ne=new s.N(b.lng,b.lat)),this}getCenter(){return new s.N((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 s.N(this.getWest(),this.getNorth())}getSouthEast(){return new s.N(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(i){let{lng:c,lat:p}=s.N.convert(i),m=this._sw.lng<=c&&c<=this._ne.lng;return this._sw.lng>this._ne.lng&&(m=this._sw.lng>=c&&c>=this._ne.lng),this._sw.lat<=p&&p<=this._ne.lat&&m}static convert(i){return i instanceof Kt?i:i&&new Kt(i)}static fromLngLat(i,c=0){let p=360*c/40075017,m=p/Math.cos(Math.PI/180*i.lat);return new Kt(new s.N(i.lng-m,i.lat-p),new s.N(i.lng+m,i.lat+p))}}class Ce{constructor(i,c,p){this.bounds=Kt.convert(this.validateBounds(i)),this.minzoom=c||0,this.maxzoom=p||24}validateBounds(i){return Array.isArray(i)&&i.length===4?[Math.max(-180,i[0]),Math.max(-90,i[1]),Math.min(180,i[2]),Math.min(90,i[3])]:[-180,-90,180,90]}contains(i){let c=Math.pow(2,i.z),p=Math.floor(s.O(this.bounds.getWest())*c),m=Math.floor(s.Q(this.bounds.getNorth())*c),b=Math.ceil(s.O(this.bounds.getEast())*c),u=Math.ceil(s.Q(this.bounds.getSouth())*c);return i.x>=p&&i.x=m&&i.y{this._options.tiles=i}),this}setUrl(i){return this.setSourceProperty(()=>{this.url=i,this._options.url=i}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return s.e({},this._options)}loadTile(i){return s._(this,void 0,void 0,function*(){let c=i.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),p={request:this.map._requestManager.transformRequest(c,"Tile"),uid:i.uid,tileID:i.tileID,zoom:i.tileID.overscaledZ,tileSize:this.tileSize*i.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};p.request.collectResourceTiming=this._collectResourceTiming;let m="RT";if(i.actor&&i.state!=="expired"){if(i.state==="loading")return new Promise((b,u)=>{i.reloadPromise={resolve:b,reject:u}})}else i.actor=this.dispatcher.getActor(),m="LT";i.abortController=new AbortController;try{let b=yield i.actor.sendAsync({type:m,data:p},i.abortController);if(delete i.abortController,i.aborted)return;this._afterTileLoadWorkerResponse(i,b)}catch(b){if(delete i.abortController,i.aborted)return;if(b&&b.status!==404)throw b;this._afterTileLoadWorkerResponse(i,null)}})}_afterTileLoadWorkerResponse(i,c){if(c&&c.resourceTiming&&(i.resourceTiming=c.resourceTiming),c&&this.map._refreshExpiredTiles&&i.setExpiryData(c),i.loadVectorData(c,this.map.painter),i.reloadPromise){let p=i.reloadPromise;i.reloadPromise=null,this.loadTile(i).then(p.resolve).catch(p.reject)}}abortTile(i){return s._(this,void 0,void 0,function*(){i.abortController&&(i.abortController.abort(),delete i.abortController),i.actor&&(yield i.actor.sendAsync({type:"AT",data:{uid:i.uid,type:this.type,source:this.id}}))})}unloadTile(i){return s._(this,void 0,void 0,function*(){i.unloadVectorData(),i.actor&&(yield i.actor.sendAsync({type:"RMT",data:{uid:i.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class Ye extends s.E{constructor(i,c,p,m){super(),this.id=i,this.dispatcher=p,this.setEventedParent(m),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=s.e({type:"raster"},c),s.e(this,s.M(c,["url","scheme","tileSize"]))}load(){return s._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new s.k("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let i=yield Xe(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,i&&(s.e(this,i),i.bounds&&(this.tileBounds=new Ce(i.bounds,this.minzoom,this.maxzoom)),this.fire(new s.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new s.k("data",{dataType:"source",sourceDataType:"content"})))}catch(i){this._tileJSONRequest=null,this.fire(new s.j(i))}})}loaded(){return this._loaded}onAdd(i){this.map=i,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(i){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),i(),this.load()}setTiles(i){return this.setSourceProperty(()=>{this._options.tiles=i}),this}setUrl(i){return this.setSourceProperty(()=>{this.url=i,this._options.url=i}),this}serialize(){return s.e({},this._options)}hasTile(i){return!this.tileBounds||this.tileBounds.contains(i.canonical)}loadTile(i){return s._(this,void 0,void 0,function*(){let c=i.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);i.abortController=new AbortController;try{let p=yield z.getImage(this.map._requestManager.transformRequest(c,"Tile"),i.abortController,this.map._refreshExpiredTiles);if(delete i.abortController,i.aborted)return void(i.state="unloaded");if(p&&p.data){this.map._refreshExpiredTiles&&p.cacheControl&&p.expires&&i.setExpiryData({cacheControl:p.cacheControl,expires:p.expires});let m=this.map.painter.context,b=m.gl,u=p.data;i.texture=this.map.painter.getTileTexture(u.width),i.texture?i.texture.update(u,{useMipmap:!0}):(i.texture=new Nt(m,u,b.RGBA,{useMipmap:!0}),i.texture.bind(b.LINEAR,b.CLAMP_TO_EDGE,b.LINEAR_MIPMAP_NEAREST)),i.state="loaded"}}catch(p){if(delete i.abortController,i.aborted)i.state="unloaded";else if(p)throw i.state="errored",p}})}abortTile(i){return s._(this,void 0,void 0,function*(){i.abortController&&(i.abortController.abort(),delete i.abortController)})}unloadTile(i){return s._(this,void 0,void 0,function*(){i.texture&&this.map.painter.saveTileTexture(i.texture)})}hasTransition(){return!1}}class Oe extends Ye{constructor(i,c,p,m){super(i,c,p,m),this.type="raster-dem",this.maxzoom=22,this._options=s.e({type:"raster-dem"},c),this.encoding=c.encoding||"mapbox",this.redFactor=c.redFactor,this.greenFactor=c.greenFactor,this.blueFactor=c.blueFactor,this.baseShift=c.baseShift}loadTile(i){return s._(this,void 0,void 0,function*(){let c=i.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),p=this.map._requestManager.transformRequest(c,"Tile");i.neighboringTiles=this._getNeighboringTiles(i.tileID),i.abortController=new AbortController;try{let m=yield z.getImage(p,i.abortController,this.map._refreshExpiredTiles);if(delete i.abortController,i.aborted)return void(i.state="unloaded");if(m&&m.data){let b=m.data;this.map._refreshExpiredTiles&&m.cacheControl&&m.expires&&i.setExpiryData({cacheControl:m.cacheControl,expires:m.expires});let u=s.b(b)&&s.U()?b:yield this.readImageNow(b),g={type:this.type,uid:i.uid,source:this.id,rawImageData:u,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!i.actor||i.state==="expired"){i.actor=this.dispatcher.getActor();let y=yield i.actor.sendAsync({type:"LDT",data:g});i.dem=y,i.needsHillshadePrepare=!0,i.needsTerrainPrepare=!0,i.state="loaded"}}}catch(m){if(delete i.abortController,i.aborted)i.state="unloaded";else if(m)throw i.state="errored",m}})}readImageNow(i){return s._(this,void 0,void 0,function*(){if(typeof VideoFrame<"u"&&s.V()){let c=i.width+2,p=i.height+2;try{return new s.R({width:c,height:p},yield s.W(i,-1,-1,c,p))}catch{}}return _.getImageData(i,1)})}_getNeighboringTiles(i){let c=i.canonical,p=Math.pow(2,c.z),m=(c.x-1+p)%p,b=c.x===0?i.wrap-1:i.wrap,u=(c.x+1+p)%p,g=c.x+1===p?i.wrap+1:i.wrap,y={};return y[new s.S(i.overscaledZ,b,c.z,m,c.y).key]={backfilled:!1},y[new s.S(i.overscaledZ,g,c.z,u,c.y).key]={backfilled:!1},c.y>0&&(y[new s.S(i.overscaledZ,b,c.z,m,c.y-1).key]={backfilled:!1},y[new s.S(i.overscaledZ,i.wrap,c.z,c.x,c.y-1).key]={backfilled:!1},y[new s.S(i.overscaledZ,g,c.z,u,c.y-1).key]={backfilled:!1}),c.y+10&&s.e(b,{resourceTiming:m}),this.fire(new s.k("data",Object.assign(Object.assign({},b),{sourceDataType:"metadata"}))),this.fire(new s.k("data",Object.assign(Object.assign({},b),{sourceDataType:"content"})))}catch(p){if(this._pendingLoads--,this._removed)return void this.fire(new s.k("dataabort",{dataType:"source"}));this.fire(new s.j(p))}})}loaded(){return this._pendingLoads===0}loadTile(i){return s._(this,void 0,void 0,function*(){let c=i.actor?"RT":"LT";i.actor=this.actor;let p={type:this.type,uid:i.uid,tileID:i.tileID,zoom:i.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};i.abortController=new AbortController;let m=yield this.actor.sendAsync({type:c,data:p},i.abortController);delete i.abortController,i.unloadVectorData(),i.aborted||i.loadVectorData(m,this.map.painter,c==="RT")})}abortTile(i){return s._(this,void 0,void 0,function*(){i.abortController&&(i.abortController.abort(),delete i.abortController),i.aborted=!0})}unloadTile(i){return s._(this,void 0,void 0,function*(){i.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:i.uid,type:this.type,source:this.id}})})}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return s.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var Ne=s.Y([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class ze extends s.E{constructor(i,c,p,m){super(),this.id=i,this.dispatcher=p,this.coordinates=c.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(m),this.options=c}load(i){return s._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new s.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let c=yield z.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,c&&c.data&&(this.image=c.data,i&&(this.coordinates=i),this._finishLoading())}catch(c){this._request=null,this._loaded=!0,this.fire(new s.j(c))}})}loaded(){return this._loaded}updateImage(i){return i.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=i.url,this.load(i.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new s.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(i){this.map=i,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(i){this.coordinates=i;let c=i.map(s.Z.fromLngLat);this.tileID=function(m){let b=1/0,u=1/0,g=-1/0,y=-1/0;for(let R of m)b=Math.min(b,R.x),u=Math.min(u,R.y),g=Math.max(g,R.x),y=Math.max(y,R.y);let x=Math.max(g-b,y-u),k=Math.max(0,Math.floor(-Math.log(x)/Math.LN2)),E=Math.pow(2,k);return new s.a1(k,Math.floor((b+g)/2*E),Math.floor((u+y)/2*E))}(c),this.minzoom=this.maxzoom=this.tileID.z;let p=c.map(m=>this.tileID.getTilePoint(m)._round());return this._boundsArray=new s.$,this._boundsArray.emplaceBack(p[0].x,p[0].y,0,0),this._boundsArray.emplaceBack(p[1].x,p[1].y,s.X,0),this._boundsArray.emplaceBack(p[3].x,p[3].y,0,s.X),this._boundsArray.emplaceBack(p[2].x,p[2].y,s.X,s.X),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new s.k("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let i=this.map.painter.context,c=i.gl;this.boundsBuffer||(this.boundsBuffer=i.createVertexBuffer(this._boundsArray,Ne.members)),this.boundsSegments||(this.boundsSegments=s.a0.simpleSegment(0,0,4,2)),this.texture||(this.texture=new Nt(i,this.image,c.RGBA),this.texture.bind(c.LINEAR,c.CLAMP_TO_EDGE));let p=!1;for(let m in this.tiles){let b=this.tiles[m];b.state!=="loaded"&&(b.state="loaded",b.texture=this.texture,p=!0)}p&&this.fire(new s.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(i){return s._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(i.tileID.canonical)?(this.tiles[String(i.tileID.wrap)]=i,i.buckets={}):i.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class We extends ze{constructor(i,c,p,m){super(i,c,p,m),this.roundZoom=!0,this.type="video",this.options=c}load(){return s._(this,void 0,void 0,function*(){this._loaded=!1;let i=this.options;this.urls=[];for(let c of i.urls)this.urls.push(this.map._requestManager.transformRequest(c,"Source").url);try{let c=yield s.a3(this.urls);if(this._loaded=!0,!c)return;this.video=c,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(c){this.fire(new s.j(c))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(i){if(this.video){let c=this.video.seekable;ic.end(0)?this.fire(new s.j(new s.a2(`sources.${this.id}`,null,`Playback for this video can be set only between the ${c.start(0)} and ${c.end(0)}-second mark.`))):this.video.currentTime=i}}getVideo(){return this.video}onAdd(i){this.map||(this.map=i,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let i=this.map.painter.context,c=i.gl;this.boundsBuffer||(this.boundsBuffer=i.createVertexBuffer(this._boundsArray,Ne.members)),this.boundsSegments||(this.boundsSegments=s.a0.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(c.LINEAR,c.CLAMP_TO_EDGE),c.texSubImage2D(c.TEXTURE_2D,0,0,0,c.RGBA,c.UNSIGNED_BYTE,this.video)):(this.texture=new Nt(i,this.video,c.RGBA),this.texture.bind(c.LINEAR,c.CLAMP_TO_EDGE));let p=!1;for(let m in this.tiles){let b=this.tiles[m];b.state!=="loaded"&&(b.state="loaded",b.texture=this.texture,p=!0)}p&&this.fire(new s.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class ri extends ze{constructor(i,c,p,m){super(i,c,p,m),c.coordinates?Array.isArray(c.coordinates)&&c.coordinates.length===4&&!c.coordinates.some(b=>!Array.isArray(b)||b.length!==2||b.some(u=>typeof u!="number"))||this.fire(new s.j(new s.a2(`sources.${i}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new s.j(new s.a2(`sources.${i}`,null,'missing required property "coordinates"'))),c.animate&&typeof c.animate!="boolean"&&this.fire(new s.j(new s.a2(`sources.${i}`,null,'optional "animate" property must be a boolean value'))),c.canvas?typeof c.canvas=="string"||c.canvas instanceof HTMLCanvasElement||this.fire(new s.j(new s.a2(`sources.${i}`,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.j(new s.a2(`sources.${i}`,null,'missing required property "canvas"'))),this.options=c,this.animate=c.animate===void 0||c.animate}load(){return s._(this,void 0,void 0,function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new s.j(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(i){this.map=i,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let i=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,i=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,i=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let c=this.map.painter.context,p=c.gl;this.boundsBuffer||(this.boundsBuffer=c.createVertexBuffer(this._boundsArray,Ne.members)),this.boundsSegments||(this.boundsSegments=s.a0.simpleSegment(0,0,4,2)),this.texture?(i||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new Nt(c,this.canvas,p.RGBA,{premultiply:!0});let m=!1;for(let b in this.tiles){let u=this.tiles[b];u.state!=="loaded"&&(u.state="loaded",u.texture=this.texture,m=!0)}m&&this.fire(new s.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let i of[this.canvas.width,this.canvas.height])if(isNaN(i)||i<=0)return!0;return!1}}let hi={},Ti=v=>{switch(v){case"geojson":return Qe;case"image":return ze;case"raster":return Ye;case"raster-dem":return Oe;case"vector":return Ut;case"video":return We;case"canvas":return ri}return hi[v]},fe="RTLPluginLoaded";class Ni extends s.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=de()}_syncState(i){return this.status=i,this.dispatcher.broadcast("SRPS",{pluginStatus:i,pluginURL:this.url}).catch(c=>{throw this.status="error",c})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(i){return s._(this,arguments,void 0,function*(c,p=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=_.resolveURL(c),!this.url)throw new Error(`requested url ${c} is invalid`);if(this.status==="unavailable"){if(!p)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()})}_requestImport(){return s._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new s.k(fe))})}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let Di=null;function mi(){return Di||(Di=new Ni),Di}class Gi{constructor(i,c){this.timeAdded=0,this.fadeEndTime=0,this.tileID=i,this.uid=s.a4(),this.uses=0,this.tileSize=c,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(i){let c=i+this.timeAdded;cb.getLayer(x)).filter(Boolean);if(y.length!==0){g.layers=y,g.stateDependentLayerIds&&(g.stateDependentLayers=g.stateDependentLayerIds.map(x=>y.filter(k=>k.id===x)[0]));for(let x of y)u[x.id]=g}}return u}(i.buckets,c.style),this.hasSymbolBuckets=!1;for(let m in this.buckets){let b=this.buckets[m];if(b instanceof s.a6){if(this.hasSymbolBuckets=!0,!p)break;b.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let m in this.buckets){let b=this.buckets[m];if(b instanceof s.a6&&b.hasRTLText){this.hasRTLText=!0,mi().lazyLoad();break}}this.queryPadding=0;for(let m in this.buckets){let b=this.buckets[m];this.queryPadding=Math.max(this.queryPadding,c.style.getLayer(m).queryRadius(b))}i.imageAtlas&&(this.imageAtlas=i.imageAtlas),i.glyphAtlasImage&&(this.glyphAtlasImage=i.glyphAtlasImage)}else this.collisionBoxArray=new s.a5}unloadVectorData(){for(let i in this.buckets)this.buckets[i].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(i){return this.buckets[i.id]}upload(i){for(let p in this.buckets){let m=this.buckets[p];m.uploadPending()&&m.upload(i)}let c=i.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Nt(i,this.imageAtlas.image,c.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Nt(i,this.glyphAtlasImage,c.ALPHA),this.glyphAtlasImage=null)}prepare(i){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(i,this.imageAtlasTexture)}queryRenderedFeatures(i,c,p,m,b,u,g,y,x,k){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:m,cameraQueryGeometry:b,scale:u,tileSize:this.tileSize,pixelPosMatrix:k,transform:y,params:g,queryPadding:this.queryPadding*x},i,c,p):{}}querySourceFeatures(i,c){let p=this.latestFeatureIndex;if(!p||!p.rawTileData)return;let m=p.loadVTLayers(),b=c&&c.sourceLayer?c.sourceLayer:"",u=m._geojsonTileLayer||m[b];if(!u)return;let g=s.a7(c&&c.filter),{z:y,x,y:k}=this.tileID.canonical,E={z:y,x,y:k};for(let R=0;Rp)m=!1;else if(c)if(this.expirationTime{this.remove(i,b)},p)),this.data[m].push(b),this.order.push(m),this.order.length>this.max){let u=this._getAndRemoveByKey(this.order[0]);u&&this.onRemove(u)}return this}has(i){return i.wrapped().key in this.data}getAndRemove(i){return this.has(i)?this._getAndRemoveByKey(i.wrapped().key):null}_getAndRemoveByKey(i){let c=this.data[i].shift();return c.timeout&&clearTimeout(c.timeout),this.data[i].length===0&&delete this.data[i],this.order.splice(this.order.indexOf(i),1),c.value}getByKey(i){let c=this.data[i];return c?c[0].value:null}get(i){return this.has(i)?this.data[i.wrapped().key][0].value:null}remove(i,c){if(!this.has(i))return this;let p=i.wrapped().key,m=c===void 0?0:this.data[p].indexOf(c),b=this.data[p][m];return this.data[p].splice(m,1),b.timeout&&clearTimeout(b.timeout),this.data[p].length===0&&delete this.data[p],this.onRemove(b.value),this.order.splice(this.order.indexOf(p),1),this}setMaxSize(i){for(this.max=i;this.order.length>this.max;){let c=this._getAndRemoveByKey(this.order[0]);c&&this.onRemove(c)}return this}filter(i){let c=[];for(let p in this.data)for(let m of this.data[p])i(m.value)||c.push(m);for(let p of c)this.remove(p.value.tileID,p)}}class gi{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(i,c,p){let m=String(c);if(this.stateChanges[i]=this.stateChanges[i]||{},this.stateChanges[i][m]=this.stateChanges[i][m]||{},s.e(this.stateChanges[i][m],p),this.deletedStates[i]===null){this.deletedStates[i]={};for(let b in this.state[i])b!==m&&(this.deletedStates[i][b]=null)}else if(this.deletedStates[i]&&this.deletedStates[i][m]===null){this.deletedStates[i][m]={};for(let b in this.state[i][m])p[b]||(this.deletedStates[i][m][b]=null)}else for(let b in p)this.deletedStates[i]&&this.deletedStates[i][m]&&this.deletedStates[i][m][b]===null&&delete this.deletedStates[i][m][b]}removeFeatureState(i,c,p){if(this.deletedStates[i]===null)return;let m=String(c);if(this.deletedStates[i]=this.deletedStates[i]||{},p&&c!==void 0)this.deletedStates[i][m]!==null&&(this.deletedStates[i][m]=this.deletedStates[i][m]||{},this.deletedStates[i][m][p]=null);else if(c!==void 0)if(this.stateChanges[i]&&this.stateChanges[i][m])for(p in this.deletedStates[i][m]={},this.stateChanges[i][m])this.deletedStates[i][m][p]=null;else this.deletedStates[i][m]=null;else this.deletedStates[i]=null}getState(i,c){let p=String(c),m=s.e({},(this.state[i]||{})[p],(this.stateChanges[i]||{})[p]);if(this.deletedStates[i]===null)return{};if(this.deletedStates[i]){let b=this.deletedStates[i][c];if(b===null)return{};for(let u in b)delete m[u]}return m}initializeTileState(i,c){i.setFeatureState(this.state,c)}coalesceChanges(i,c){let p={};for(let m in this.stateChanges){this.state[m]=this.state[m]||{};let b={};for(let u in this.stateChanges[m])this.state[m][u]||(this.state[m][u]={}),s.e(this.state[m][u],this.stateChanges[m][u]),b[u]=this.state[m][u];p[m]=b}for(let m in this.deletedStates){this.state[m]=this.state[m]||{};let b={};if(this.deletedStates[m]===null)for(let u in this.state[m])b[u]={},this.state[m][u]={};else for(let u in this.deletedStates[m]){if(this.deletedStates[m][u]===null)this.state[m][u]={};else for(let g of Object.keys(this.deletedStates[m][u]))delete this.state[m][u][g];b[u]=this.state[m][u]}p[m]=p[m]||{},s.e(p[m],b)}if(this.stateChanges={},this.deletedStates={},Object.keys(p).length!==0)for(let m in i)i[m].setFeatureState(p,c)}}class Ke extends s.E{constructor(i,c,p){super(),this.id=i,this.dispatcher=p,this.on("data",m=>this._dataHandler(m)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((m,b,u,g)=>{let y=new(Ti(b.type))(m,b,u,g);if(y.id!==m)throw new Error(`Expected Source id to be ${m} instead of ${y.id}`);return y})(i,c,p,this),this._tiles={},this._cache=new le(0,m=>this._unloadTile(m)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new gi,this._didEmitContent=!1,this._updated=!1}onAdd(i){this.map=i,this._maxTileCacheSize=i?i._maxTileCacheSize:null,this._maxTileCacheZoomLevels=i?i._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(i)}onRemove(i){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(i)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let i in this._tiles){let c=this._tiles[i];if(c.state!=="loaded"&&c.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let i=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,i&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(i,c,p){return s._(this,void 0,void 0,function*(){try{yield this._source.loadTile(i),this._tileLoaded(i,c,p)}catch(m){i.state="errored",m.status!==404?this._source.fire(new s.j(m,{tile:i})):this.update(this.transform,this.terrain)}})}_unloadTile(i){this._source.unloadTile&&this._source.unloadTile(i)}_abortTile(i){this._source.abortTile&&this._source.abortTile(i),this._source.fire(new s.k("dataabort",{tile:i,coord:i.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(i){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let c in this._tiles){let p=this._tiles[c];p.upload(i),p.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(i=>i.tileID).sort(or).map(i=>i.key)}getRenderableIds(i){let c=[];for(let p in this._tiles)this._isIdRenderable(p,i)&&c.push(this._tiles[p]);return i?c.sort((p,m)=>{let b=p.tileID,u=m.tileID,g=new s.P(b.canonical.x,b.canonical.y)._rotate(this.transform.angle),y=new s.P(u.canonical.x,u.canonical.y)._rotate(this.transform.angle);return b.overscaledZ-u.overscaledZ||y.y-g.y||y.x-g.x}).map(p=>p.tileID.key):c.map(p=>p.tileID).sort(or).map(p=>p.key)}hasRenderableParent(i){let c=this.findLoadedParent(i,0);return!!c&&this._isIdRenderable(c.tileID.key)}_isIdRenderable(i,c){return this._tiles[i]&&this._tiles[i].hasData()&&!this._coveredTiles[i]&&(c||!this._tiles[i].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let i in this._tiles)this._tiles[i].state!=="errored"&&this._reloadTile(i,"reloading")}}_reloadTile(i,c){return s._(this,void 0,void 0,function*(){let p=this._tiles[i];p&&(p.state!=="loading"&&(p.state=c),yield this._loadTile(p,i,c))})}_tileLoaded(i,c,p){i.timeAdded=_.now(),p==="expired"&&(i.refreshedUponExpiration=!0),this._setTileReloadTimer(c,i),this.getSource().type==="raster-dem"&&i.dem&&this._backfillDEM(i),this._state.initializeTileState(i,this.map?this.map.painter:null),i.aborted||this._source.fire(new s.k("data",{dataType:"source",tile:i,coord:i.tileID}))}_backfillDEM(i){let c=this.getRenderableIds();for(let m=0;m1||(Math.abs(u)>1&&(Math.abs(u+y)===1?u+=y:Math.abs(u-y)===1&&(u-=y)),b.dem&&m.dem&&(m.dem.backfillBorder(b.dem,u,g),m.neighboringTiles&&m.neighboringTiles[x]&&(m.neighboringTiles[x].backfilled=!0)))}}getTile(i){return this.getTileByID(i.key)}getTileByID(i){return this._tiles[i]}_retainLoadedChildren(i,c,p,m){for(let b in this._tiles){let u=this._tiles[b];if(m[b]||!u.hasData()||u.tileID.overscaledZ<=c||u.tileID.overscaledZ>p)continue;let g=u.tileID;for(;u&&u.tileID.overscaledZ>c+1;){let x=u.tileID.scaledTo(u.tileID.overscaledZ-1);u=this._tiles[x.key],u&&u.hasData()&&(g=x)}let y=g;for(;y.overscaledZ>c;)if(y=y.scaledTo(y.overscaledZ-1),i[y.key]){m[g.key]=g;break}}}findLoadedParent(i,c){if(i.key in this._loadedParentTiles){let p=this._loadedParentTiles[i.key];return p&&p.tileID.overscaledZ>=c?p:null}for(let p=i.overscaledZ-1;p>=c;p--){let m=i.scaledTo(p),b=this._getLoadedTile(m);if(b)return b}}findLoadedSibling(i){return this._getLoadedTile(i)}_getLoadedTile(i){let c=this._tiles[i.key];return c&&c.hasData()?c:this._cache.getByKey(i.wrapped().key)}updateCacheSize(i){let c=Math.ceil(i.width/this._source.tileSize)+1,p=Math.ceil(i.height/this._source.tileSize)+1,m=Math.floor(c*p*(this._maxTileCacheZoomLevels===null?s.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),b=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,m):m;this._cache.setMaxSize(b)}handleWrapJump(i){let c=Math.round((i-(this._prevLng===void 0?i:this._prevLng))/360);if(this._prevLng=i,c){let p={};for(let m in this._tiles){let b=this._tiles[m];b.tileID=b.tileID.unwrapTo(b.tileID.wrap+c),p[b.tileID.key]=b}this._tiles=p;for(let m in this._timers)clearTimeout(this._timers[m]),delete this._timers[m];for(let m in this._tiles)this._setTileReloadTimer(m,this._tiles[m])}}_updateCoveredAndRetainedTiles(i,c,p,m,b,u){let g={},y={},x=Object.keys(i),k=_.now();for(let E of x){let R=i[E],P=this._tiles[E];if(!P||P.fadeEndTime!==0&&P.fadeEndTime<=k)continue;let H=this.findLoadedParent(R,c),N=this.findLoadedSibling(R),O=H||N||null;O&&(this._addTile(O.tileID),g[O.tileID.key]=O.tileID),y[E]=R}this._retainLoadedChildren(y,m,p,i);for(let E in g)i[E]||(this._coveredTiles[E]=!0,i[E]=g[E]);if(u){let E={},R={};for(let P of b)this._tiles[P.key].hasData()?E[P.key]=P:R[P.key]=P;for(let P in R){let H=R[P].children(this._source.maxzoom);this._tiles[H[0].key]&&this._tiles[H[1].key]&&this._tiles[H[2].key]&&this._tiles[H[3].key]&&(E[H[0].key]=i[H[0].key]=H[0],E[H[1].key]=i[H[1].key]=H[1],E[H[2].key]=i[H[2].key]=H[2],E[H[3].key]=i[H[3].key]=H[3],delete R[P])}for(let P in R){let H=R[P],N=this.findLoadedParent(H,this._source.minzoom),O=this.findLoadedSibling(H),et=N||O||null;if(et){E[et.tileID.key]=i[et.tileID.key]=et.tileID;for(let nt in E)E[nt].isChildOf(et.tileID)&&delete E[nt]}}for(let P in this._tiles)E[P]||(this._coveredTiles[P]=!0)}}update(i,c){if(!this._sourceLoaded||this._paused)return;let p;this.transform=i,this.terrain=c,this.updateCacheSize(i),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?p=i.getVisibleUnwrappedCoordinates(this._source.tileID).map(k=>new s.S(k.canonical.z,k.wrap,k.canonical.z,k.canonical.x,k.canonical.y)):(p=i.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:c}),this._source.hasTile&&(p=p.filter(k=>this._source.hasTile(k)))):p=[];let m=i.coveringZoomLevel(this._source),b=Math.max(m-Ke.maxOverzooming,this._source.minzoom),u=Math.max(m+Ke.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let k={};for(let E of p)if(E.canonical.z>this._source.minzoom){let R=E.scaledTo(E.canonical.z-1);k[R.key]=R;let P=E.scaledTo(Math.max(this._source.minzoom,Math.min(E.canonical.z,5)));k[P.key]=P}p=p.concat(Object.values(k))}let g=p.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,g&&this.fire(new s.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let y=this._updateRetainedTiles(p,m);Ki(this._source.type)&&this._updateCoveredAndRetainedTiles(y,b,u,m,p,c);for(let k in y)this._tiles[k].clearFadeHold();let x=s.ac(this._tiles,y);for(let k of x){let E=this._tiles[k];E.hasSymbolBuckets&&!E.holdingForFade()?E.setHoldDuration(this.map._fadeDuration):E.hasSymbolBuckets&&!E.symbolFadeFinished()||this._removeTile(k)}this._updateLoadedParentTileCache(),this._updateLoadedSiblingTileCache()}releaseSymbolFadeTiles(){for(let i in this._tiles)this._tiles[i].holdingForFade()&&this._removeTile(i)}_updateRetainedTiles(i,c){var p;let m={},b={},u=Math.max(c-Ke.maxOverzooming,this._source.minzoom),g=Math.max(c+Ke.maxUnderzooming,this._source.minzoom),y={};for(let x of i){let k=this._addTile(x);m[x.key]=x,k.hasData()||cthis._source.maxzoom){let R=x.children(this._source.maxzoom)[0],P=this.getTile(R);if(P&&P.hasData()){m[R.key]=R;continue}}else{let R=x.children(this._source.maxzoom);if(m[R[0].key]&&m[R[1].key]&&m[R[2].key]&&m[R[3].key])continue}let E=k.wasRequested();for(let R=x.overscaledZ-1;R>=u;--R){let P=x.scaledTo(R);if(b[P.key])break;if(b[P.key]=!0,k=this.getTile(P),!k&&E&&(k=this._addTile(P)),k){let H=k.hasData();if((H||!(!((p=this.map)===null||p===void 0)&&p.cancelPendingTileRequestsWhileZooming)||E)&&(m[P.key]=P),E=k.wasRequested(),H)break}}}return m}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let i in this._tiles){let c=[],p,m=this._tiles[i].tileID;for(;m.overscaledZ>0;){if(m.key in this._loadedParentTiles){p=this._loadedParentTiles[m.key];break}c.push(m.key);let b=m.scaledTo(m.overscaledZ-1);if(p=this._getLoadedTile(b),p)break;m=b}for(let b of c)this._loadedParentTiles[b]=p}}_updateLoadedSiblingTileCache(){this._loadedSiblingTiles={};for(let i in this._tiles){let c=this._tiles[i].tileID,p=this._getLoadedTile(c);this._loadedSiblingTiles[c.key]=p}}_addTile(i){let c=this._tiles[i.key];if(c)return c;c=this._cache.getAndRemove(i),c&&(this._setTileReloadTimer(i.key,c),c.tileID=i,this._state.initializeTileState(c,this.map?this.map.painter:null),this._cacheTimers[i.key]&&(clearTimeout(this._cacheTimers[i.key]),delete this._cacheTimers[i.key],this._setTileReloadTimer(i.key,c)));let p=c;return c||(c=new Gi(i,this._source.tileSize*i.overscaleFactor()),this._loadTile(c,i.key,c.state)),c.uses++,this._tiles[i.key]=c,p||this._source.fire(new s.k("dataloading",{tile:c,coord:c.tileID,dataType:"source"})),c}_setTileReloadTimer(i,c){i in this._timers&&(clearTimeout(this._timers[i]),delete this._timers[i]);let p=c.getExpiryTimeout();p&&(this._timers[i]=setTimeout(()=>{this._reloadTile(i,"expired"),delete this._timers[i]},p))}_removeTile(i){let c=this._tiles[i];c&&(c.uses--,delete this._tiles[i],this._timers[i]&&(clearTimeout(this._timers[i]),delete this._timers[i]),c.uses>0||(c.hasData()&&c.state!=="reloading"?this._cache.add(c.tileID,c,c.getExpiryTimeout()):(c.aborted=!0,this._abortTile(c),this._unloadTile(c))))}_dataHandler(i){let c=i.sourceDataType;i.dataType==="source"&&c==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&i.dataType==="source"&&c==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let i in this._tiles)this._removeTile(i);this._cache.reset()}tilesIn(i,c,p){let m=[],b=this.transform;if(!b)return m;let u=p?b.getCameraQueryGeometry(i):i,g=i.map(H=>b.pointCoordinate(H,this.terrain)),y=u.map(H=>b.pointCoordinate(H,this.terrain)),x=this.getIds(),k=1/0,E=1/0,R=-1/0,P=-1/0;for(let H of y)k=Math.min(k,H.x),E=Math.min(E,H.y),R=Math.max(R,H.x),P=Math.max(P,H.y);for(let H=0;H=0&&Y[1].y+nt>=0){let dt=g.map(ot=>O.getTilePoint(ot)),gt=y.map(ot=>O.getTilePoint(ot));m.push({tile:N,tileID:O,queryGeometry:dt,cameraQueryGeometry:gt,scale:et})}}return m}getVisibleCoordinates(i){let c=this.getRenderableIds(i).map(p=>this._tiles[p].tileID);for(let p of c)p.posMatrix=this.transform.calculatePosMatrix(p.toUnwrapped());return c}hasTransition(){if(this._source.hasTransition())return!0;if(Ki(this._source.type)){let i=_.now();for(let c in this._tiles)if(this._tiles[c].fadeEndTime>=i)return!0}return!1}setFeatureState(i,c,p){this._state.updateState(i=i||"_geojsonTileLayer",c,p)}removeFeatureState(i,c,p){this._state.removeFeatureState(i=i||"_geojsonTileLayer",c,p)}getFeatureState(i,c){return this._state.getState(i=i||"_geojsonTileLayer",c)}setDependencies(i,c,p){let m=this._tiles[i];m&&m.setDependencies(c,p)}reloadTilesForDependencies(i,c){for(let p in this._tiles)this._tiles[p].hasDependency(i,c)&&this._reloadTile(p,"reloading");this._cache.filter(p=>!p.hasDependency(i,c))}}function or(v,i){let c=Math.abs(2*v.wrap)-+(v.wrap<0),p=Math.abs(2*i.wrap)-+(i.wrap<0);return v.overscaledZ-i.overscaledZ||p-c||i.canonical.y-v.canonical.y||i.canonical.x-v.canonical.x}function Ki(v){return v==="raster"||v==="image"||v==="video"}Ke.maxOverzooming=10,Ke.maxUnderzooming=3;class ii{constructor(i,c){this.reset(i,c)}reset(i,c){this.points=i||[],this._distances=[0];for(let p=1;p0?(m-u)/g:0;return this.points[b].mult(1-y).add(this.points[c].mult(y))}}function br(v,i){let c=!0;return v==="always"||v!=="never"&&i!=="never"||(c=!1),c}class Ji{constructor(i,c,p){let m=this.boxCells=[],b=this.circleCells=[];this.xCellCount=Math.ceil(i/p),this.yCellCount=Math.ceil(c/p);for(let u=0;uthis.width||m<0||c>this.height)return[];let y=[];if(i<=0&&c<=0&&this.width<=p&&this.height<=m){if(b)return[{key:null,x1:i,y1:c,x2:p,y2:m}];for(let x=0;x0}hitTestCircle(i,c,p,m,b){let u=i-p,g=i+p,y=c-p,x=c+p;if(g<0||u>this.width||x<0||y>this.height)return!1;let k=[];return this._forEachCell(u,y,g,x,this._queryCellCircle,k,{hitTest:!0,overlapMode:m,circle:{x:i,y:c,radius:p},seenUids:{box:{},circle:{}}},b),k.length>0}_queryCell(i,c,p,m,b,u,g,y){let{seenUids:x,hitTest:k,overlapMode:E}=g,R=this.boxCells[b];if(R!==null){let H=this.bboxes;for(let N of R)if(!x.box[N]){x.box[N]=!0;let O=4*N,et=this.boxKeys[N];if(i<=H[O+2]&&c<=H[O+3]&&p>=H[O+0]&&m>=H[O+1]&&(!y||y(et))&&(!k||!br(E,et.overlapMode))&&(u.push({key:et,x1:H[O],y1:H[O+1],x2:H[O+2],y2:H[O+3]}),k))return!0}}let P=this.circleCells[b];if(P!==null){let H=this.circles;for(let N of P)if(!x.circle[N]){x.circle[N]=!0;let O=3*N,et=this.circleKeys[N];if(this._circleAndRectCollide(H[O],H[O+1],H[O+2],i,c,p,m)&&(!y||y(et))&&(!k||!br(E,et.overlapMode))){let nt=H[O],Y=H[O+1],dt=H[O+2];if(u.push({key:et,x1:nt-dt,y1:Y-dt,x2:nt+dt,y2:Y+dt}),k)return!0}}}return!1}_queryCellCircle(i,c,p,m,b,u,g,y){let{circle:x,seenUids:k,overlapMode:E}=g,R=this.boxCells[b];if(R!==null){let H=this.bboxes;for(let N of R)if(!k.box[N]){k.box[N]=!0;let O=4*N,et=this.boxKeys[N];if(this._circleAndRectCollide(x.x,x.y,x.radius,H[O+0],H[O+1],H[O+2],H[O+3])&&(!y||y(et))&&!br(E,et.overlapMode))return u.push(!0),!0}}let P=this.circleCells[b];if(P!==null){let H=this.circles;for(let N of P)if(!k.circle[N]){k.circle[N]=!0;let O=3*N,et=this.circleKeys[N];if(this._circlesCollide(H[O],H[O+1],H[O+2],x.x,x.y,x.radius)&&(!y||y(et))&&!br(E,et.overlapMode))return u.push(!0),!0}}}_forEachCell(i,c,p,m,b,u,g,y){let x=this._convertToXCellCoord(i),k=this._convertToYCellCoord(c),E=this._convertToXCellCoord(p),R=this._convertToYCellCoord(m);for(let P=x;P<=E;P++)for(let H=k;H<=R;H++)if(b.call(this,i,c,p,m,this.xCellCount*H+P,u,g,y))return}_convertToXCellCoord(i){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(i*this.xScale)))}_convertToYCellCoord(i){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(i*this.yScale)))}_circlesCollide(i,c,p,m,b,u){let g=m-i,y=b-c,x=p+u;return x*x>g*g+y*y}_circleAndRectCollide(i,c,p,m,b,u,g){let y=(u-m)/2,x=Math.abs(i-(m+y));if(x>y+p)return!1;let k=(g-b)/2,E=Math.abs(c-(b+k));if(E>k+p)return!1;if(x<=y||E<=k)return!0;let R=x-y,P=E-k;return R*R+P*P<=p*p}}function wr(v,i,c,p,m){let b=s.H();return i?(s.K(b,b,[1/m,1/m,1]),c||s.ae(b,b,p.angle)):s.L(b,p.labelPlaneMatrix,v),b}function ar(v,i,c,p,m){if(i){let b=s.af(v);return s.K(b,b,[m,m,1]),c||s.ae(b,b,-p.angle),b}return p.glCoordMatrix}function wt(v,i,c){let p;c?(p=[v.x,v.y,c(v.x,v.y),1],s.ag(p,p,i)):(p=[v.x,v.y,0,1],function(b,u,g){let y=u[0],x=u[1];b[0]=g[0]*y+g[4]*x+g[12],b[1]=g[1]*y+g[5]*x+g[13],b[3]=g[3]*y+g[7]*x+g[15]}(p,p,i));let m=p[3];return{point:new s.P(p[0]/m,p[1]/m),signedDistanceFromCamera:m,isOccluded:!1}}function W(v,i){return .5+v/i*.5}function X(v,i){return v.x>=-i[0]&&v.x<=i[0]&&v.y>=-i[1]&&v.y<=i[1]}function rt(v,i,c,p,m,b,u,g,y,x,k,E,R,P,H){let N=p?v.textSizeData:v.iconSizeData,O=s.ah(N,c.transform.zoom),et=[256/c.width*2+1,256/c.height*2+1],nt=p?v.text.dynamicLayoutVertexArray:v.icon.dynamicLayoutVertexArray;nt.clear();let Y=v.lineVertexArray,dt=p?v.text.placedSymbolArray:v.icon.placedSymbolArray,gt=c.transform.width/c.transform.height,ot=!1;for(let pt=0;ptMath.abs(c.x-i.x)*p?{useVertical:!0}:(v===s.ai.vertical?i.yc.x)?{needsFlipping:!0}:null}function Vt(v,i,c,p,m,b,u,g,y,x,k){let E=c/24,R=i.lineOffsetX*E,P=i.lineOffsetY*E,H;if(i.numGlyphs>1){let N=i.glyphStartIndex+i.numGlyphs,O=i.lineStartIndex,et=i.lineStartIndex+i.lineLength,nt=ft(E,g,R,P,p,i,k,v);if(!nt)return{notEnoughRoom:!0};let Y=wt(nt.first.point,u,v.getElevation).point,dt=wt(nt.last.point,u,v.getElevation).point;if(m&&!p){let gt=Mt(i.writingMode,Y,dt,x);if(gt)return gt}H=[nt.first];for(let gt=i.glyphStartIndex+1;gt0?Y.point:function(ot,pt,Dt,$t,jt,ue){return Yt(ot,pt,Dt,1,jt,ue)}(v.tileAnchorPoint,nt,O,0,b,v),gt=Mt(i.writingMode,O,dt,x);if(gt)return gt}let N=Le(E*g.getoffsetX(i.glyphStartIndex),R,P,p,i.segment,i.lineStartIndex,i.lineStartIndex+i.lineLength,v,k);if(!N||v.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};H=[N]}for(let N of H)s.ak(y,N.point,N.angle);return{}}function Yt(v,i,c,p,m,b){let u=v.add(v.sub(i)._unit()),g=m!==void 0?wt(u,m,b.getElevation).point:Wt(u.x,u.y,b).point,y=c.sub(g);return c.add(y._mult(p/y.mag()))}function Rt(v,i,c){let p=i.projectionCache;if(p.projections[v])return p.projections[v];let m=new s.P(i.lineVertexArray.getx(v),i.lineVertexArray.gety(v)),b=Wt(m.x,m.y,i);if(b.signedDistanceFromCamera>0)return p.projections[v]=b.point,p.anyProjectionOccluded=p.anyProjectionOccluded||b.isOccluded,b.point;let u=v-c.direction;return function(g,y,x,k,E){return Yt(g,y,x,k,void 0,E)}(c.distanceFromAnchor===0?i.tileAnchorPoint:new s.P(i.lineVertexArray.getx(u),i.lineVertexArray.gety(u)),m,c.previousVertex,c.absOffsetX-c.distanceFromAnchor+1,i)}function Wt(v,i,c){let p=v+c.translation[0],m=i+c.translation[1],b;return!c.pitchWithMap&&c.projection.useSpecialProjectionForSymbols?(b=c.projection.projectTileCoordinates(p,m,c.unwrappedTileID,c.getElevation),b.point.x=(.5*b.point.x+.5)*c.width,b.point.y=(.5*-b.point.y+.5)*c.height):(b=wt(new s.P(p,m),c.labelPlaneMatrix,c.getElevation),b.isOccluded=!1),b}function be(v,i,c){return v._unit()._perp()._mult(i*c)}function he(v,i,c,p,m,b,u,g,y){if(g.projectionCache.offsets[v])return g.projectionCache.offsets[v];let x=c.add(i);if(v+y.direction=m)return g.projectionCache.offsets[v]=x,x;let k=Rt(v+y.direction,g,y),E=be(k.sub(c),u,y.direction),R=c.add(E),P=k.add(E);return g.projectionCache.offsets[v]=s.al(b,x,R,P)||x,g.projectionCache.offsets[v]}function Le(v,i,c,p,m,b,u,g,y){let x=p?v-i:v+i,k=x>0?1:-1,E=0;p&&(k*=-1,E=Math.PI),k<0&&(E+=Math.PI);let R,P=k>0?b+m:b+m+1;g.projectionCache.cachedAnchorPoint?R=g.projectionCache.cachedAnchorPoint:(R=Wt(g.tileAnchorPoint.x,g.tileAnchorPoint.y,g).point,g.projectionCache.cachedAnchorPoint=R);let H,N,O=R,et=R,nt=0,Y=0,dt=Math.abs(x),gt=[],ot;for(;nt+Y<=dt;){if(P+=k,P=u)return null;nt+=Y,et=O,N=H;let $t={absOffsetX:dt,direction:k,distanceFromAnchor:nt,previousVertex:et};if(O=Rt(P,g,$t),c===0)gt.push(et),ot=O.sub(et);else{let jt,ue=O.sub(et);jt=ue.mag()===0?be(Rt(P+k,g,$t).sub(O),c,k):be(ue,c,k),N||(N=et.add(jt)),H=he(P,jt,O,b,u,N,c,g,$t),gt.push(N),ot=H.sub(N)}Y=ot.mag()}let pt=ot._mult((dt-nt)/Y)._add(N||et),Dt=E+Math.atan2(O.y-et.y,O.x-et.x);return gt.push(pt),{point:pt,angle:y?Dt:0,path:gt}}let je=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ti(v,i){for(let c=0;c=1;pi--)Ue.push(xe.path[pi]);for(let pi=1;pibi.signedDistanceFromCamera<=0)?[]:pi.map(bi=>bi.point)}let Li=[];if(Ue.length>0){let pi=Ue[0].clone(),bi=Ue[0].clone();for(let Ci=1;Ci=ue.x&&bi.x<=ce.x&&pi.y>=ue.y&&bi.y<=ce.y?[Ue]:bi.xce.x||bi.yce.y?[]:s.am([Ue],ue.x,ue.y,ce.x,ce.y)}for(let pi of Li){Fe.reset(pi,.25*jt);let bi=0;bi=Fe.length<=.5*jt?1:Math.ceil(Fe.paddedLength/$e)+1;for(let Ci=0;Ciwt(m,p,c.getElevation))}queryRenderedSymbols(i){if(i.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let c=[],p=1/0,m=1/0,b=-1/0,u=-1/0;for(let k of i){let E=new s.P(k.x+_i,k.y+_i);p=Math.min(p,E.x),m=Math.min(m,E.y),b=Math.max(b,E.x),u=Math.max(u,E.y),c.push(E)}let g=this.grid.query(p,m,b,u).concat(this.ignoredGrid.query(p,m,b,u)),y={},x={};for(let k of g){let E=k.key;if(y[E.bucketInstanceId]===void 0&&(y[E.bucketInstanceId]={}),y[E.bucketInstanceId][E.featureIndex])continue;let R=[new s.P(k.x1,k.y1),new s.P(k.x2,k.y1),new s.P(k.x2,k.y2),new s.P(k.x1,k.y2)];s.an(c,R)&&(y[E.bucketInstanceId][E.featureIndex]=!0,x[E.bucketInstanceId]===void 0&&(x[E.bucketInstanceId]=[]),x[E.bucketInstanceId].push(E.featureIndex))}return x}insertCollisionBox(i,c,p,m,b,u){(p?this.ignoredGrid:this.grid).insert({bucketInstanceId:m,featureIndex:b,collisionGroupID:u,overlapMode:c},i[0],i[1],i[2],i[3])}insertCollisionCircles(i,c,p,m,b,u){let g=p?this.ignoredGrid:this.grid,y={bucketInstanceId:m,featureIndex:b,collisionGroupID:u,overlapMode:c};for(let x=0;x=this.screenRightBoundary||m<_i||c>this.screenBottomBoundary}isInsideGrid(i,c,p,m){return p>=0&&i=0&&cthis.projectAndGetPerspectiveRatio(p,ue.x,ue.y,m,x));$t=jt.some(ue=>!ue.isOccluded),Dt=jt.map(ue=>ue.point)}else $t=!0;return{box:s.ap(Dt),allPointsOccluded:!$t}}}function xi(v,i,c){return i*(s.X/(v.tileSize*Math.pow(2,c-v.tileID.overscaledZ)))}class zi{constructor(i,c,p,m){this.opacity=i?Math.max(0,Math.min(1,i.opacity+(i.placed?c:-c))):m&&p?1:0,this.placed=p}isHidden(){return this.opacity===0&&!this.placed}}class hr{constructor(i,c,p,m,b){this.text=new zi(i?i.text:null,c,p,b),this.icon=new zi(i?i.icon:null,c,m,b)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class fr{constructor(i,c,p){this.text=i,this.icon=c,this.skipFade=p}}class Hi{constructor(){this.invProjMatrix=s.H(),this.viewportMatrix=s.H(),this.circles=[]}}class Wi{constructor(i,c,p,m,b){this.bucketInstanceId=i,this.featureIndex=c,this.sourceLayerIndex=p,this.bucketIndex=m,this.tileID=b}}class Ar{constructor(i){this.crossSourceCollisions=i,this.maxGroupID=0,this.collisionGroups={}}get(i){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[i]){let c=++this.maxGroupID;this.collisionGroups[i]={ID:c,predicate:p=>p.collisionGroupID===c}}return this.collisionGroups[i]}}function Zt(v,i,c,p,m){let{horizontalAlign:b,verticalAlign:u}=s.av(v);return new s.P(-(b-.5)*i+p[0]*m,-(u-.5)*c+p[1]*m)}class De{constructor(i,c,p,m,b,u){this.transform=i.clone(),this.terrain=p,this.collisionIndex=new $i(this.transform,c),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=m,this.retainedQueryData={},this.collisionGroups=new Ar(b),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=u,u&&(u.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(i){let c=this.terrain;return c?(p,m)=>c.getElevation(i,p,m):null}getBucketParts(i,c,p,m){let b=p.getBucket(c),u=p.latestFeatureIndex;if(!b||!u||c.id!==b.layerIds[0])return;let g=p.collisionBoxArray,y=b.layers[0].layout,x=b.layers[0].paint,k=Math.pow(2,this.transform.zoom-p.tileID.overscaledZ),E=p.tileSize/s.X,R=p.tileID.toUnwrapped(),P=this.transform.calculatePosMatrix(R),H=y.get("text-pitch-alignment")==="map",N=y.get("text-rotation-alignment")==="map",O=xi(p,1,this.transform.zoom),et=this.collisionIndex.mapProjection.translatePosition(this.transform,p,x.get("text-translate"),x.get("text-translate-anchor")),nt=this.collisionIndex.mapProjection.translatePosition(this.transform,p,x.get("icon-translate"),x.get("icon-translate-anchor")),Y=wr(P,H,N,this.transform,O),dt=null;if(H){let ot=ar(P,H,N,this.transform,O);dt=s.L([],this.transform.labelPlaneMatrix,ot)}this.retainedQueryData[b.bucketInstanceId]=new Wi(b.bucketInstanceId,u,b.sourceLayerIndex,b.index,p.tileID);let gt={bucket:b,layout:y,translationText:et,translationIcon:nt,posMatrix:P,unwrappedTileID:R,textLabelPlaneMatrix:Y,labelToScreenMatrix:dt,scale:k,textPixelRatio:E,holdingForFade:p.holdingForFade(),collisionBoxArray:g,partiallyEvaluatedTextSize:s.ah(b.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(b.sourceID)};if(m)for(let ot of b.sortKeyRanges){let{sortKey:pt,symbolInstanceStart:Dt,symbolInstanceEnd:$t}=ot;i.push({sortKey:pt,symbolInstanceStart:Dt,symbolInstanceEnd:$t,parameters:gt})}else i.push({symbolInstanceStart:0,symbolInstanceEnd:b.symbolInstances.length,parameters:gt})}attemptAnchorPlacement(i,c,p,m,b,u,g,y,x,k,E,R,P,H,N,O,et,nt,Y){let dt=s.ar[i.textAnchor],gt=[i.textOffset0,i.textOffset1],ot=Zt(dt,p,m,gt,b),pt=this.collisionIndex.placeCollisionBox(c,R,y,x,k,g,u,O,E.predicate,Y,ot);if((!nt||this.collisionIndex.placeCollisionBox(nt,R,y,x,k,g,u,et,E.predicate,Y,ot).placeable)&&pt.placeable){let Dt;if(this.prevPlacement&&this.prevPlacement.variableOffsets[P.crossTileID]&&this.prevPlacement.placements[P.crossTileID]&&this.prevPlacement.placements[P.crossTileID].text&&(Dt=this.prevPlacement.variableOffsets[P.crossTileID].anchor),P.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[P.crossTileID]={textOffset:gt,width:p,height:m,anchor:dt,textBoxScale:b,prevAnchor:Dt},this.markUsedJustification(H,dt,P,N),H.allowVerticalPlacement&&(this.markUsedOrientation(H,N,P),this.placedOrientations[P.crossTileID]=N),{shift:ot,placedGlyphBoxes:pt}}}placeLayerBucketPart(i,c,p){let{bucket:m,layout:b,translationText:u,translationIcon:g,posMatrix:y,unwrappedTileID:x,textLabelPlaneMatrix:k,labelToScreenMatrix:E,textPixelRatio:R,holdingForFade:P,collisionBoxArray:H,partiallyEvaluatedTextSize:N,collisionGroup:O}=i.parameters,et=b.get("text-optional"),nt=b.get("icon-optional"),Y=s.as(b,"text-overlap","text-allow-overlap"),dt=Y==="always",gt=s.as(b,"icon-overlap","icon-allow-overlap"),ot=gt==="always",pt=b.get("text-rotation-alignment")==="map",Dt=b.get("text-pitch-alignment")==="map",$t=b.get("icon-text-fit")!=="none",jt=b.get("symbol-z-order")==="viewport-y",ue=dt&&(ot||!m.hasIconData()||nt),ce=ot&&(dt||!m.hasTextData()||et);!m.collisionArrays&&H&&m.deserializeCollisionBoxes(H);let Fe=this._getTerrainElevationFunc(this.retainedQueryData[m.bucketInstanceId].tileID),xe=(ke,Ue,$e)=>{var Li,pi;if(c[ke.crossTileID])return;if(P)return void(this.placements[ke.crossTileID]=new fr(!1,!1,!1));let bi=!1,Ci=!1,mr=!0,Jr=null,Yi={box:null,placeable:!1,offscreen:null},Rr={box:null,placeable:!1,offscreen:null},rr=null,Lr=null,Er=null,Tr=0,rn=0,_n=0;Ue.textFeatureIndex?Tr=Ue.textFeatureIndex:ke.useRuntimeCollisionCircles&&(Tr=ke.featureIndex),Ue.verticalTextFeatureIndex&&(rn=Ue.verticalTextFeatureIndex);let Tn=Ue.textBox;if(Tn){let nn=xn=>{let Un=s.ai.horizontal;if(m.allowVerticalPlacement&&!xn&&this.prevPlacement){let yn=this.prevPlacement.placedOrientations[ke.crossTileID];yn&&(this.placedOrientations[ke.crossTileID]=yn,Un=yn,this.markUsedOrientation(m,Un,ke))}return Un},Wn=(xn,Un)=>{if(m.allowVerticalPlacement&&ke.numVerticalGlyphVertices>0&&Ue.verticalTextBox){for(let yn of m.writingModes)if(yn===s.ai.vertical?(Yi=Un(),Rr=Yi):Yi=xn(),Yi&&Yi.placeable)break}else Yi=xn()},es=ke.textAnchorOffsetStartIndex,Gr=ke.textAnchorOffsetEndIndex;if(Gr===es){let xn=(Un,yn)=>{let Zr=this.collisionIndex.placeCollisionBox(Un,Y,R,y,x,Dt,pt,u,O.predicate,Fe);return Zr&&Zr.placeable&&(this.markUsedOrientation(m,yn,ke),this.placedOrientations[ke.crossTileID]=yn),Zr};Wn(()=>xn(Tn,s.ai.horizontal),()=>{let Un=Ue.verticalTextBox;return m.allowVerticalPlacement&&ke.numVerticalGlyphVertices>0&&Un?xn(Un,s.ai.vertical):{box:null,offscreen:null}}),nn(Yi&&Yi.placeable)}else{let xn=s.ar[(pi=(Li=this.prevPlacement)===null||Li===void 0?void 0:Li.variableOffsets[ke.crossTileID])===null||pi===void 0?void 0:pi.anchor],Un=(Zr,Po,GA)=>{let xr=Zr.x2-Zr.x1,Ya=Zr.y2-Zr.y1,ra=ke.textBoxScale,gl=$t&>==="never"?Po:null,Co=null,Ec=Y==="never"?1:2,ZA="never";xn&&Ec++;for(let dl=0;dlUn(Tn,Ue.iconBox,s.ai.horizontal),()=>{let Zr=Ue.verticalTextBox;return m.allowVerticalPlacement&&(!Yi||!Yi.placeable)&&ke.numVerticalGlyphVertices>0&&Zr?Un(Zr,Ue.verticalIconBox,s.ai.vertical):{box:null,occluded:!0,offscreen:null}}),Yi&&(bi=Yi.placeable,mr=Yi.offscreen);let yn=nn(Yi&&Yi.placeable);if(!bi&&this.prevPlacement){let Zr=this.prevPlacement.variableOffsets[ke.crossTileID];Zr&&(this.variableOffsets[ke.crossTileID]=Zr,this.markUsedJustification(m,Zr.anchor,ke,yn))}}}if(rr=Yi,bi=rr&&rr.placeable,mr=rr&&rr.offscreen,ke.useRuntimeCollisionCircles){let nn=m.text.placedSymbolArray.get(ke.centerJustifiedTextSymbolIndex),Wn=s.aj(m.textSizeData,N,nn),es=b.get("text-padding");Lr=this.collisionIndex.placeCollisionCircles(Y,nn,m.lineVertexArray,m.glyphOffsetArray,Wn,y,x,k,E,p,Dt,O.predicate,ke.collisionCircleDiameter,es,u,Fe),Lr.circles.length&&Lr.collisionDetected&&!p&&s.w("Collisions detected, but collision boxes are not shown"),bi=dt||Lr.circles.length>0&&!Lr.collisionDetected,mr=mr&&Lr.offscreen}if(Ue.iconFeatureIndex&&(_n=Ue.iconFeatureIndex),Ue.iconBox){let nn=Wn=>this.collisionIndex.placeCollisionBox(Wn,gt,R,y,x,Dt,pt,g,O.predicate,Fe,$t&&Jr?Jr:void 0);Rr&&Rr.placeable&&Ue.verticalIconBox?(Er=nn(Ue.verticalIconBox),Ci=Er.placeable):(Er=nn(Ue.iconBox),Ci=Er.placeable),mr=mr&&Er.offscreen}let On=et||ke.numHorizontalGlyphVertices===0&&ke.numVerticalGlyphVertices===0,gn=nt||ke.numIconVertices===0;On||gn?gn?On||(Ci=Ci&&bi):bi=Ci&&bi:Ci=bi=Ci&&bi;let mo=Ci&&Er.placeable;if(bi&&rr.placeable&&this.collisionIndex.insertCollisionBox(rr.box,Y,b.get("text-ignore-placement"),m.bucketInstanceId,Rr&&Rr.placeable&&rn?rn:Tr,O.ID),mo&&this.collisionIndex.insertCollisionBox(Er.box,gt,b.get("icon-ignore-placement"),m.bucketInstanceId,_n,O.ID),Lr&&bi&&this.collisionIndex.insertCollisionCircles(Lr.circles,Y,b.get("text-ignore-placement"),m.bucketInstanceId,Tr,O.ID),p&&this.storeCollisionData(m.bucketInstanceId,$e,Ue,rr,Er,Lr),ke.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(m.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[ke.crossTileID]=new fr(bi||ue,Ci||ce,mr||m.justReloaded),c[ke.crossTileID]=!0};if(jt){if(i.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");let ke=m.getSortedSymbolIndexes(this.transform.angle);for(let Ue=ke.length-1;Ue>=0;--Ue){let $e=ke[Ue];xe(m.symbolInstances.get($e),m.collisionArrays[$e],$e)}}else for(let ke=i.symbolInstanceStart;ke=0&&(i.text.placedSymbolArray.get(g).crossTileID=b>=0&&g!==b?0:p.crossTileID)}markUsedOrientation(i,c,p){let m=c===s.ai.horizontal||c===s.ai.horizontalOnly?c:0,b=c===s.ai.vertical?c:0,u=[p.leftJustifiedTextSymbolIndex,p.centerJustifiedTextSymbolIndex,p.rightJustifiedTextSymbolIndex];for(let g of u)i.text.placedSymbolArray.get(g).placedOrientation=m;p.verticalPlacedTextSymbolIndex&&(i.text.placedSymbolArray.get(p.verticalPlacedTextSymbolIndex).placedOrientation=b)}commit(i){this.commitTime=i,this.zoomAtLastRecencyCheck=this.transform.zoom;let c=this.prevPlacement,p=!1;this.prevZoomAdjustment=c?c.zoomAdjustment(this.transform.zoom):0;let m=c?c.symbolFadeChange(i):1,b=c?c.opacities:{},u=c?c.variableOffsets:{},g=c?c.placedOrientations:{};for(let y in this.placements){let x=this.placements[y],k=b[y];k?(this.opacities[y]=new hr(k,m,x.text,x.icon),p=p||x.text!==k.text.placed||x.icon!==k.icon.placed):(this.opacities[y]=new hr(null,m,x.text,x.icon,x.skipFade),p=p||x.text||x.icon)}for(let y in b){let x=b[y];if(!this.opacities[y]){let k=new hr(x,m,!1,!1);k.isHidden()||(this.opacities[y]=k,p=p||x.text.placed||x.icon.placed)}}for(let y in u)this.variableOffsets[y]||!this.opacities[y]||this.opacities[y].isHidden()||(this.variableOffsets[y]=u[y]);for(let y in g)this.placedOrientations[y]||!this.opacities[y]||this.opacities[y].isHidden()||(this.placedOrientations[y]=g[y]);if(c&&c.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");p?this.lastPlacementChangeTime=i:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=c?c.lastPlacementChangeTime:i)}updateLayerOpacities(i,c){let p={};for(let m of c){let b=m.getBucket(i);b&&m.latestFeatureIndex&&i.id===b.layerIds[0]&&this.updateBucketOpacities(b,m.tileID,p,m.collisionBoxArray)}}updateBucketOpacities(i,c,p,m){i.hasTextData()&&(i.text.opacityVertexArray.clear(),i.text.hasVisibleVertices=!1),i.hasIconData()&&(i.icon.opacityVertexArray.clear(),i.icon.hasVisibleVertices=!1),i.hasIconCollisionBoxData()&&i.iconCollisionBox.collisionVertexArray.clear(),i.hasTextCollisionBoxData()&&i.textCollisionBox.collisionVertexArray.clear();let b=i.layers[0],u=b.layout,g=new hr(null,0,!1,!1,!0),y=u.get("text-allow-overlap"),x=u.get("icon-allow-overlap"),k=b._unevaluatedLayout.hasValue("text-variable-anchor")||b._unevaluatedLayout.hasValue("text-variable-anchor-offset"),E=u.get("text-rotation-alignment")==="map",R=u.get("text-pitch-alignment")==="map",P=u.get("icon-text-fit")!=="none",H=new hr(null,0,y&&(x||!i.hasIconData()||u.get("icon-optional")),x&&(y||!i.hasTextData()||u.get("text-optional")),!0);!i.collisionArrays&&m&&(i.hasIconCollisionBoxData()||i.hasTextCollisionBoxData())&&i.deserializeCollisionBoxes(m);let N=(et,nt,Y)=>{for(let dt=0;dt0,Dt=this.placedOrientations[nt.crossTileID],$t=Dt===s.ai.vertical,jt=Dt===s.ai.horizontal||Dt===s.ai.horizontalOnly;if(Y>0||dt>0){let ce=pn(ot.text);N(i.text,Y,$t?An:ce),N(i.text,dt,jt?An:ce);let Fe=ot.text.isHidden();[nt.rightJustifiedTextSymbolIndex,nt.centerJustifiedTextSymbolIndex,nt.leftJustifiedTextSymbolIndex].forEach(Ue=>{Ue>=0&&(i.text.placedSymbolArray.get(Ue).hidden=Fe||$t?1:0)}),nt.verticalPlacedTextSymbolIndex>=0&&(i.text.placedSymbolArray.get(nt.verticalPlacedTextSymbolIndex).hidden=Fe||jt?1:0);let xe=this.variableOffsets[nt.crossTileID];xe&&this.markUsedJustification(i,xe.anchor,nt,Dt);let ke=this.placedOrientations[nt.crossTileID];ke&&(this.markUsedJustification(i,"left",nt,ke),this.markUsedOrientation(i,ke,nt))}if(pt){let ce=pn(ot.icon),Fe=!(P&&nt.verticalPlacedIconSymbolIndex&&$t);nt.placedIconSymbolIndex>=0&&(N(i.icon,nt.numIconVertices,Fe?ce:An),i.icon.placedSymbolArray.get(nt.placedIconSymbolIndex).hidden=ot.icon.isHidden()),nt.verticalPlacedIconSymbolIndex>=0&&(N(i.icon,nt.numVerticalIconVertices,Fe?An:ce),i.icon.placedSymbolArray.get(nt.verticalPlacedIconSymbolIndex).hidden=ot.icon.isHidden())}let ue=O&&O.has(et)?O.get(et):{text:null,icon:null};if(i.hasIconCollisionBoxData()||i.hasTextCollisionBoxData()){let ce=i.collisionArrays[et];if(ce){let Fe=new s.P(0,0);if(ce.textBox||ce.verticalTextBox){let xe=!0;if(k){let ke=this.variableOffsets[gt];ke?(Fe=Zt(ke.anchor,ke.width,ke.height,ke.textOffset,ke.textBoxScale),E&&Fe._rotate(R?this.transform.angle:-this.transform.angle)):xe=!1}if(ce.textBox||ce.verticalTextBox){let ke;ce.textBox&&(ke=$t),ce.verticalTextBox&&(ke=jt),Te(i.textCollisionBox.collisionVertexArray,ot.text.placed,!xe||ke,ue.text,Fe.x,Fe.y)}}if(ce.iconBox||ce.verticalIconBox){let xe=Boolean(!jt&&ce.verticalIconBox),ke;ce.iconBox&&(ke=xe),ce.verticalIconBox&&(ke=!xe),Te(i.iconCollisionBox.collisionVertexArray,ot.icon.placed,ke,ue.icon,P?Fe.x:0,P?Fe.y:0)}}}}if(i.sortFeatures(this.transform.angle),this.retainedQueryData[i.bucketInstanceId]&&(this.retainedQueryData[i.bucketInstanceId].featureSortOrder=i.featureSortOrder),i.hasTextData()&&i.text.opacityVertexBuffer&&i.text.opacityVertexBuffer.updateData(i.text.opacityVertexArray),i.hasIconData()&&i.icon.opacityVertexBuffer&&i.icon.opacityVertexBuffer.updateData(i.icon.opacityVertexArray),i.hasIconCollisionBoxData()&&i.iconCollisionBox.collisionVertexBuffer&&i.iconCollisionBox.collisionVertexBuffer.updateData(i.iconCollisionBox.collisionVertexArray),i.hasTextCollisionBoxData()&&i.textCollisionBox.collisionVertexBuffer&&i.textCollisionBox.collisionVertexBuffer.updateData(i.textCollisionBox.collisionVertexArray),i.text.opacityVertexArray.length!==i.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${i.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${i.text.layoutVertexArray.length}) / 4`);if(i.icon.opacityVertexArray.length!==i.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${i.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${i.icon.layoutVertexArray.length}) / 4`);if(i.bucketInstanceId in this.collisionCircleArrays){let et=this.collisionCircleArrays[i.bucketInstanceId];i.placementInvProjMatrix=et.invProjMatrix,i.placementViewportMatrix=et.viewportMatrix,i.collisionCircleArray=et.circles,delete this.collisionCircleArrays[i.bucketInstanceId]}}symbolFadeChange(i){return this.fadeDuration===0?1:(i-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(i){return Math.max(0,(this.transform.zoom-i)/1.5)}hasTransitions(i){return this.stale||i-this.lastPlacementChangeTimei}setStale(){this.stale=!0}}function Te(v,i,c,p,m,b){p&&p.length!==0||(p=[0,0,0,0]);let u=p[0]-_i,g=p[1]-_i,y=p[2]-_i,x=p[3]-_i;v.emplaceBack(i?1:0,c?1:0,m||0,b||0,u,g),v.emplaceBack(i?1:0,c?1:0,m||0,b||0,y,g),v.emplaceBack(i?1:0,c?1:0,m||0,b||0,y,x),v.emplaceBack(i?1:0,c?1:0,m||0,b||0,u,x)}let tr=Math.pow(2,25),Ui=Math.pow(2,24),an=Math.pow(2,17),Fr=Math.pow(2,16),$r=Math.pow(2,9),Ir=Math.pow(2,8),hn=Math.pow(2,1);function pn(v){if(v.opacity===0&&!v.placed)return 0;if(v.opacity===1&&v.placed)return 4294967295;let i=v.placed?1:0,c=Math.floor(127*v.opacity);return c*tr+i*Ui+c*an+i*Fr+c*$r+i*Ir+c*hn+i}let An=0;function pa(){return{isOccluded:(v,i,c)=>!1,getPitchedTextCorrection:(v,i,c)=>1,get useSpecialProjectionForSymbols(){return!1},projectTileCoordinates(v,i,c,p){throw new Error("Not implemented.")},translatePosition:(v,i,c,p)=>function(m,b,u,g,y=!1){if(!u[0]&&!u[1])return[0,0];let x=y?g==="map"?m.angle:0:g==="viewport"?-m.angle:0;if(x){let k=Math.sin(x),E=Math.cos(x);u=[u[0]*E-u[1]*k,u[0]*k+u[1]*E]}return[y?u[0]:xi(b,u[0],m.zoom),y?u[1]:xi(b,u[1],m.zoom)]}(v,i,c,p),getCircleRadiusCorrection:v=>1}}class Rs{constructor(i){this._sortAcrossTiles=i.layout.get("symbol-z-order")!=="viewport-y"&&!i.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(i,c,p,m,b){let u=this._bucketParts;for(;this._currentTileIndexg.sortKey-y.sortKey));this._currentPartIndex!this._forceFullPlacement&&_.now()-m>2;for(;this._currentPlacementIndex>=0;){let u=c[i[this._currentPlacementIndex]],g=this.placement.collisionIndex.transform.zoom;if(u.type==="symbol"&&(!u.minzoom||u.minzoom<=g)&&(!u.maxzoom||u.maxzoom>g)){if(this._inProgressLayer||(this._inProgressLayer=new Rs(u)),this._inProgressLayer.continuePlacement(p[u.source],this.placement,this._showCollisionBoxes,u,b))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(i){return this.placement.commit(i),this.placement}}let vn=512/s.X/2;class io{constructor(i,c,p){this.tileID=i,this.bucketInstanceId=p,this._symbolsByKey={};let m=new Map;for(let b=0;b({x:Math.floor(y.anchorX*vn),y:Math.floor(y.anchorY*vn)})),crossTileIDs:u.map(y=>y.crossTileID)};if(g.positions.length>128){let y=new s.aw(g.positions.length,16,Uint16Array);for(let{x,y:k}of g.positions)y.add(x,k);y.finish(),delete g.positions,g.index=y}this._symbolsByKey[b]=g}}getScaledCoordinates(i,c){let{x:p,y:m,z:b}=this.tileID.canonical,{x:u,y:g,z:y}=c.canonical,x=vn/Math.pow(2,y-b),k=(g*s.X+i.anchorY)*x,E=m*s.X*vn;return{x:Math.floor((u*s.X+i.anchorX)*x-p*s.X*vn),y:Math.floor(k-E)}}findMatches(i,c,p){let m=this.tileID.canonical.zi)}}class ir{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class ro{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(i){let c=Math.round((i-this.lng)/360);if(c!==0)for(let p in this.indexes){let m=this.indexes[p],b={};for(let u in m){let g=m[u];g.tileID=g.tileID.unwrapTo(g.tileID.wrap+c),b[g.tileID.key]=g}this.indexes[p]=b}this.lng=i}addBucket(i,c,p){if(this.indexes[i.overscaledZ]&&this.indexes[i.overscaledZ][i.key]){if(this.indexes[i.overscaledZ][i.key].bucketInstanceId===c.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(i.overscaledZ,this.indexes[i.overscaledZ][i.key])}for(let b=0;bi.overscaledZ)for(let g in u){let y=u[g];y.tileID.isChildOf(i)&&y.findMatches(c.symbolInstances,i,m)}else{let g=u[i.scaledTo(Number(b)).key];g&&g.findMatches(c.symbolInstances,i,m)}}for(let b=0;b{c[p]=!0});for(let p in this.layerIndexes)c[p]||delete this.layerIndexes[p]}}let no=(v,i)=>s.t(v,i&&i.filter(c=>c.identifier!=="source.canvas")),ns=s.ax();class ht extends s.E{constructor(i,c={}){super(),this._rtlPluginLoaded=()=>{for(let p in this.sourceCaches){let m=this.sourceCaches[p].getSource().type;m!=="vector"&&m!=="geojson"||this.sourceCaches[p].reload()}},this.map=i,this.dispatcher=new ge(ae(),i._getMapId()),this.dispatcher.registerMessageHandler("GG",(p,m)=>this.getGlyphs(p,m)),this.dispatcher.registerMessageHandler("GI",(p,m)=>this.getImages(p,m)),this.imageManager=new lt,this.imageManager.setEventedParent(this),this.glyphManager=new se(i._requestManager,c.localIdeographFontFamily),this.lineAtlas=new pe(256,512),this.crossTileSymbolIndex=new wn,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new s.ay,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("SR",s.az()),mi().on(fe,this._rtlPluginLoaded),this.on("data",p=>{if(p.dataType!=="source"||p.sourceDataType!=="metadata")return;let m=this.sourceCaches[p.sourceId];if(!m)return;let b=m.getSource();if(b&&b.vectorLayerIds)for(let u in this._layers){let g=this._layers[u];g.source===b.id&&this._validateLayer(g)}})}loadURL(i,c={},p){this.fire(new s.k("dataloading",{dataType:"style"})),c.validate=typeof c.validate!="boolean"||c.validate;let m=this.map._requestManager.transformRequest(i,"Style");this._loadStyleRequest=new AbortController;let b=this._loadStyleRequest;s.h(m,this._loadStyleRequest).then(u=>{this._loadStyleRequest=null,this._load(u.data,c,p)}).catch(u=>{this._loadStyleRequest=null,u&&!b.signal.aborted&&this.fire(new s.j(u))})}loadJSON(i,c={},p){this.fire(new s.k("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,_.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,c.validate=c.validate!==!1,this._load(i,c,p)}).catch(()=>{})}loadEmpty(){this.fire(new s.k("dataloading",{dataType:"style"})),this._load(ns,{validate:!1})}_load(i,c,p){var m;let b=c.transformStyle?c.transformStyle(p,i):i;if(!c.validate||!no(this,s.x(b))){this._loaded=!0,this.stylesheet=b;for(let u in b.sources)this.addSource(u,b.sources[u],{validate:!1});b.sprite?this._loadSprite(b.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(b.glyphs),this._createLayers(),this.light=new Xt(this.stylesheet.light),this.sky=new Tt(this.stylesheet.sky),this.map.setTerrain((m=this.stylesheet.terrain)!==null&&m!==void 0?m:null),this.fire(new s.k("data",{dataType:"style"})),this.fire(new s.k("style.load"))}}_createLayers(){let i=s.aA(this.stylesheet.layers);this.dispatcher.broadcast("SL",i),this._order=i.map(c=>c.id),this._layers={},this._serializedLayers=null;for(let c of i){let p=s.aB(c);p.setEventedParent(this,{layer:{id:c.id}}),this._layers[c.id]=p}}_loadSprite(i,c=!1,p=void 0){let m;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(b,u,g,y){return s._(this,void 0,void 0,function*(){let x=xt(b),k=g>1?"@2x":"",E={},R={};for(let{id:P,url:H}of x){let N=u.transformRequest(It(H,k,".json"),"SpriteJSON");E[P]=s.h(N,y);let O=u.transformRequest(It(H,k,".png"),"SpriteImage");R[P]=z.getImage(O,y)}return yield Promise.all([...Object.values(E),...Object.values(R)]),function(P,H){return s._(this,void 0,void 0,function*(){let N={};for(let O in P){N[O]={};let et=_.getImageCanvasContext((yield H[O]).data),nt=(yield P[O]).data;for(let Y in nt){let{width:dt,height:gt,x:ot,y:pt,sdf:Dt,pixelRatio:$t,stretchX:jt,stretchY:ue,content:ce,textFitWidth:Fe,textFitHeight:xe}=nt[Y];N[O][Y]={data:null,pixelRatio:$t,sdf:Dt,stretchX:jt,stretchY:ue,content:ce,textFitWidth:Fe,textFitHeight:xe,spriteData:{width:dt,height:gt,x:ot,y:pt,context:et}}}}return N})}(E,R)})}(i,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(b=>{if(this._spriteRequest=null,b)for(let u in b){this._spritesImagesIds[u]=[];let g=this._spritesImagesIds[u]?this._spritesImagesIds[u].filter(y=>!(y in b)):[];for(let y of g)this.imageManager.removeImage(y),this._changedImages[y]=!0;for(let y in b[u]){let x=u==="default"?y:`${u}:${y}`;this._spritesImagesIds[u].push(x),x in this.imageManager.images?this.imageManager.updateImage(x,b[u][y],!1):this.imageManager.addImage(x,b[u][y]),c&&(this._changedImages[x]=!0)}}}).catch(b=>{this._spriteRequest=null,m=b,this.fire(new s.j(m))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),c&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new s.k("data",{dataType:"style"})),p&&p(m)})}_unloadSprite(){for(let i of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(i),this._changedImages[i]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new s.k("data",{dataType:"style"}))}_validateLayer(i){let c=this.sourceCaches[i.source];if(!c)return;let p=i.sourceLayer;if(!p)return;let m=c.getSource();(m.type==="geojson"||m.vectorLayerIds&&m.vectorLayerIds.indexOf(p)===-1)&&this.fire(new s.j(new Error(`Source layer "${p}" does not exist on source "${m.id}" as specified by style layer "${i.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let i in this.sourceCaches)if(!this.sourceCaches[i].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(i){let c=this._serializedAllLayers();if(!i||i.length===0)return Object.values(c);let p=[];for(let m of i)c[m]&&p.push(c[m]);return p}_serializedAllLayers(){let i=this._serializedLayers;if(i)return i;i=this._serializedLayers={};let c=Object.keys(this._layers);for(let p of c){let m=this._layers[p];m.type!=="custom"&&(i[p]=m.serialize())}return i}hasTransitions(){if(this.light&&this.light.hasTransition()||this.sky&&this.sky.hasTransition())return!0;for(let i in this.sourceCaches)if(this.sourceCaches[i].hasTransition())return!0;for(let i in this._layers)if(this._layers[i].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(i){if(!this._loaded)return;let c=this._changed;if(c){let m=Object.keys(this._updatedLayers),b=Object.keys(this._removedLayers);(m.length||b.length)&&this._updateWorkerLayers(m,b);for(let u in this._updatedSources){let g=this._updatedSources[u];if(g==="reload")this._reloadSource(u);else{if(g!=="clear")throw new Error(`Invalid action ${g}`);this._clearSource(u)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let u in this._updatedPaintProps)this._layers[u].updateTransitions(i);this.light.updateTransitions(i),this.sky.updateTransitions(i),this._resetUpdates()}let p={};for(let m in this.sourceCaches){let b=this.sourceCaches[m];p[m]=b.used,b.used=!1}for(let m of this._order){let b=this._layers[m];b.recalculate(i,this._availableImages),!b.isHidden(i.zoom)&&b.source&&(this.sourceCaches[b.source].used=!0)}for(let m in p){let b=this.sourceCaches[m];!!p[m]!=!!b.used&&b.fire(new s.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:m}))}this.light.recalculate(i),this.sky.recalculate(i),this.z=i.zoom,c&&this.fire(new s.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){let i=Object.keys(this._changedImages);if(i.length){for(let c in this.sourceCaches)this.sourceCaches[c].reloadTilesForDependencies(["icons","patterns"],i);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let i in this.sourceCaches)this.sourceCaches[i].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(i,c){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(i),removedIds:c})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(i,c={}){var p;this._checkLoaded();let m=this.serialize();if(i=c.transformStyle?c.transformStyle(m,i):i,((p=c.validate)===null||p===void 0||p)&&no(this,s.x(i)))return!1;(i=s.aC(i)).layers=s.aA(i.layers);let b=s.aD(m,i),u=this._getOperationsToPerform(b);if(u.unimplemented.length>0)throw new Error(`Unimplemented: ${u.unimplemented.join(", ")}.`);if(u.operations.length===0)return!1;for(let g of u.operations)g();return this.stylesheet=i,this._serializedLayers=null,!0}_getOperationsToPerform(i){let c=[],p=[];for(let m of i)switch(m.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":continue;case"addLayer":c.push(()=>this.addLayer.apply(this,m.args));break;case"removeLayer":c.push(()=>this.removeLayer.apply(this,m.args));break;case"setPaintProperty":c.push(()=>this.setPaintProperty.apply(this,m.args));break;case"setLayoutProperty":c.push(()=>this.setLayoutProperty.apply(this,m.args));break;case"setFilter":c.push(()=>this.setFilter.apply(this,m.args));break;case"addSource":c.push(()=>this.addSource.apply(this,m.args));break;case"removeSource":c.push(()=>this.removeSource.apply(this,m.args));break;case"setLayerZoomRange":c.push(()=>this.setLayerZoomRange.apply(this,m.args));break;case"setLight":c.push(()=>this.setLight.apply(this,m.args));break;case"setGeoJSONSourceData":c.push(()=>this.setGeoJSONSourceData.apply(this,m.args));break;case"setGlyphs":c.push(()=>this.setGlyphs.apply(this,m.args));break;case"setSprite":c.push(()=>this.setSprite.apply(this,m.args));break;case"setSky":c.push(()=>this.setSky.apply(this,m.args));break;case"setTerrain":c.push(()=>this.map.setTerrain.apply(this,m.args));break;case"setTransition":c.push(()=>{});break;default:p.push(m.command)}return{operations:c,unimplemented:p}}addImage(i,c){if(this.getImage(i))return this.fire(new s.j(new Error(`An image named "${i}" already exists.`)));this.imageManager.addImage(i,c),this._afterImageUpdated(i)}updateImage(i,c){this.imageManager.updateImage(i,c)}getImage(i){return this.imageManager.getImage(i)}removeImage(i){if(!this.getImage(i))return this.fire(new s.j(new Error(`An image named "${i}" does not exist.`)));this.imageManager.removeImage(i),this._afterImageUpdated(i)}_afterImageUpdated(i){this._availableImages=this.imageManager.listImages(),this._changedImages[i]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new s.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(i,c,p={}){if(this._checkLoaded(),this.sourceCaches[i]!==void 0)throw new Error(`Source "${i}" already exists.`);if(!c.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(c).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(c.type)>=0&&this._validate(s.x.source,`sources.${i}`,c,null,p))return;this.map&&this.map._collectResourceTiming&&(c.collectResourceTiming=!0);let m=this.sourceCaches[i]=new Ke(i,c,this.dispatcher);m.style=this,m.setEventedParent(this,()=>({isSourceLoaded:m.loaded(),source:m.serialize(),sourceId:i})),m.onAdd(this.map),this._changed=!0}removeSource(i){if(this._checkLoaded(),this.sourceCaches[i]===void 0)throw new Error("There is no source with this ID");for(let p in this._layers)if(this._layers[p].source===i)return this.fire(new s.j(new Error(`Source "${i}" cannot be removed while layer "${p}" is using it.`)));let c=this.sourceCaches[i];delete this.sourceCaches[i],delete this._updatedSources[i],c.fire(new s.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:i})),c.setEventedParent(null),c.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(i,c){if(this._checkLoaded(),this.sourceCaches[i]===void 0)throw new Error(`There is no source with this ID=${i}`);let p=this.sourceCaches[i].getSource();if(p.type!=="geojson")throw new Error(`geojsonSource.type is ${p.type}, which is !== 'geojson`);p.setData(c),this._changed=!0}getSource(i){return this.sourceCaches[i]&&this.sourceCaches[i].getSource()}addLayer(i,c,p={}){this._checkLoaded();let m=i.id;if(this.getLayer(m))return void this.fire(new s.j(new Error(`Layer "${m}" already exists on this map.`)));let b;if(i.type==="custom"){if(no(this,s.aE(i)))return;b=s.aB(i)}else{if("source"in i&&typeof i.source=="object"&&(this.addSource(m,i.source),i=s.aC(i),i=s.e(i,{source:m})),this._validate(s.x.layer,`layers.${m}`,i,{arrayIndex:-1},p))return;b=s.aB(i),this._validateLayer(b),b.setEventedParent(this,{layer:{id:m}})}let u=c?this._order.indexOf(c):this._order.length;if(c&&u===-1)this.fire(new s.j(new Error(`Cannot add layer "${m}" before non-existing layer "${c}".`)));else{if(this._order.splice(u,0,m),this._layerOrderChanged=!0,this._layers[m]=b,this._removedLayers[m]&&b.source&&b.type!=="custom"){let g=this._removedLayers[m];delete this._removedLayers[m],g.type!==b.type?this._updatedSources[b.source]="clear":(this._updatedSources[b.source]="reload",this.sourceCaches[b.source].pause())}this._updateLayer(b),b.onAdd&&b.onAdd(this.map)}}moveLayer(i,c){if(this._checkLoaded(),this._changed=!0,!this._layers[i])return void this.fire(new s.j(new Error(`The layer '${i}' does not exist in the map's style and cannot be moved.`)));if(i===c)return;let p=this._order.indexOf(i);this._order.splice(p,1);let m=c?this._order.indexOf(c):this._order.length;c&&m===-1?this.fire(new s.j(new Error(`Cannot move layer "${i}" before non-existing layer "${c}".`))):(this._order.splice(m,0,i),this._layerOrderChanged=!0)}removeLayer(i){this._checkLoaded();let c=this._layers[i];if(!c)return void this.fire(new s.j(new Error(`Cannot remove non-existing layer "${i}".`)));c.setEventedParent(null);let p=this._order.indexOf(i);this._order.splice(p,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[i]=c,delete this._layers[i],this._serializedLayers&&delete this._serializedLayers[i],delete this._updatedLayers[i],delete this._updatedPaintProps[i],c.onRemove&&c.onRemove(this.map)}getLayer(i){return this._layers[i]}getLayersOrder(){return[...this._order]}hasLayer(i){return i in this._layers}setLayerZoomRange(i,c,p){this._checkLoaded();let m=this.getLayer(i);m?m.minzoom===c&&m.maxzoom===p||(c!=null&&(m.minzoom=c),p!=null&&(m.maxzoom=p),this._updateLayer(m)):this.fire(new s.j(new Error(`Cannot set the zoom range of non-existing layer "${i}".`)))}setFilter(i,c,p={}){this._checkLoaded();let m=this.getLayer(i);if(m){if(!s.aF(m.filter,c))return c==null?(m.filter=void 0,void this._updateLayer(m)):void(this._validate(s.x.filter,`layers.${m.id}.filter`,c,null,p)||(m.filter=s.aC(c),this._updateLayer(m)))}else this.fire(new s.j(new Error(`Cannot filter non-existing layer "${i}".`)))}getFilter(i){return s.aC(this.getLayer(i).filter)}setLayoutProperty(i,c,p,m={}){this._checkLoaded();let b=this.getLayer(i);b?s.aF(b.getLayoutProperty(c),p)||(b.setLayoutProperty(c,p,m),this._updateLayer(b)):this.fire(new s.j(new Error(`Cannot style non-existing layer "${i}".`)))}getLayoutProperty(i,c){let p=this.getLayer(i);if(p)return p.getLayoutProperty(c);this.fire(new s.j(new Error(`Cannot get style of non-existing layer "${i}".`)))}setPaintProperty(i,c,p,m={}){this._checkLoaded();let b=this.getLayer(i);b?s.aF(b.getPaintProperty(c),p)||(b.setPaintProperty(c,p,m)&&this._updateLayer(b),this._changed=!0,this._updatedPaintProps[i]=!0,this._serializedLayers=null):this.fire(new s.j(new Error(`Cannot style non-existing layer "${i}".`)))}getPaintProperty(i,c){return this.getLayer(i).getPaintProperty(c)}setFeatureState(i,c){this._checkLoaded();let p=i.source,m=i.sourceLayer,b=this.sourceCaches[p];if(b===void 0)return void this.fire(new s.j(new Error(`The source '${p}' does not exist in the map's style.`)));let u=b.getSource().type;u==="geojson"&&m?this.fire(new s.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):u!=="vector"||m?(i.id===void 0&&this.fire(new s.j(new Error("The feature id parameter must be provided."))),b.setFeatureState(m,i.id,c)):this.fire(new s.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(i,c){this._checkLoaded();let p=i.source,m=this.sourceCaches[p];if(m===void 0)return void this.fire(new s.j(new Error(`The source '${p}' does not exist in the map's style.`)));let b=m.getSource().type,u=b==="vector"?i.sourceLayer:void 0;b!=="vector"||u?c&&typeof i.id!="string"&&typeof i.id!="number"?this.fire(new s.j(new Error("A feature id is required to remove its specific state property."))):m.removeFeatureState(u,i.id,c):this.fire(new s.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(i){this._checkLoaded();let c=i.source,p=i.sourceLayer,m=this.sourceCaches[c];if(m!==void 0)return m.getSource().type!=="vector"||p?(i.id===void 0&&this.fire(new s.j(new Error("The feature id parameter must be provided."))),m.getFeatureState(p,i.id)):void this.fire(new s.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new s.j(new Error(`The source '${c}' does not exist in the map's style.`)))}getTransition(){return s.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let i=s.aG(this.sourceCaches,b=>b.serialize()),c=this._serializeByIds(this._order),p=this.map.getTerrain()||void 0,m=this.stylesheet;return s.aH({version:m.version,name:m.name,metadata:m.metadata,light:m.light,sky:m.sky,center:m.center,zoom:m.zoom,bearing:m.bearing,pitch:m.pitch,sprite:m.sprite,glyphs:m.glyphs,transition:m.transition,sources:i,layers:c,terrain:p},b=>b!==void 0)}_updateLayer(i){this._updatedLayers[i.id]=!0,i.source&&!this._updatedSources[i.source]&&this.sourceCaches[i.source].getSource().type!=="raster"&&(this._updatedSources[i.source]="reload",this.sourceCaches[i.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(i){let c=u=>this._layers[u].type==="fill-extrusion",p={},m=[];for(let u=this._order.length-1;u>=0;u--){let g=this._order[u];if(c(g)){p[g]=u;for(let y of i){let x=y[g];if(x)for(let k of x)m.push(k)}}}m.sort((u,g)=>g.intersectionZ-u.intersectionZ);let b=[];for(let u=this._order.length-1;u>=0;u--){let g=this._order[u];if(c(g))for(let y=m.length-1;y>=0;y--){let x=m[y].feature;if(p[x.layer.id]{let Dt=et.featureSortOrder;if(Dt){let $t=Dt.indexOf(ot.featureIndex);return Dt.indexOf(pt.featureIndex)-$t}return pt.featureIndex-ot.featureIndex});for(let ot of gt)dt.push(ot)}}for(let et in H)H[et].forEach(nt=>{let Y=nt.feature,dt=x[g[et].source].getFeatureState(Y.layer["source-layer"],Y.id);Y.source=Y.layer.source,Y.layer["source-layer"]&&(Y.sourceLayer=Y.layer["source-layer"]),Y.state=dt});return H}(this._layers,u,this.sourceCaches,i,c,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(b)}querySourceFeatures(i,c){c&&c.filter&&this._validate(s.x.filter,"querySourceFeatures.filter",c.filter,null,c);let p=this.sourceCaches[i];return p?function(m,b){let u=m.getRenderableIds().map(x=>m.getTileByID(x)),g=[],y={};for(let x=0;xR.getTileByID(P)).sort((P,H)=>H.tileID.overscaledZ-P.tileID.overscaledZ||(P.tileID.isLessThan(H.tileID)?-1:1))}let E=this.crossTileSymbolIndex.addLayer(k,y[k.source],i.center.lng);u=u||E}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((b=b||this._layerOrderChanged||p===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(_.now(),i.zoom))&&(this.pauseablePlacement=new Or(i,this.map.terrain,this._order,b,c,p,m,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,y),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(_.now()),g=!0),u&&this.pauseablePlacement.placement.setStale()),g||u)for(let x of this._order){let k=this._layers[x];k.type==="symbol"&&this.placement.updateLayerOpacities(k,y[k.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(_.now())}_releaseSymbolFadeTiles(){for(let i in this.sourceCaches)this.sourceCaches[i].releaseSymbolFadeTiles()}getImages(i,c){return s._(this,void 0,void 0,function*(){let p=yield this.imageManager.getImages(c.icons);this._updateTilesForChangedImages();let m=this.sourceCaches[c.source];return m&&m.setDependencies(c.tileID.key,c.type,c.icons),p})}getGlyphs(i,c){return s._(this,void 0,void 0,function*(){let p=yield this.glyphManager.getGlyphs(c.stacks),m=this.sourceCaches[c.source];return m&&m.setDependencies(c.tileID.key,c.type,[""]),p})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(i,c={}){this._checkLoaded(),i&&this._validate(s.x.glyphs,"glyphs",i,null,c)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=i,this.glyphManager.entries={},this.glyphManager.setURL(i))}addSprite(i,c,p={},m){this._checkLoaded();let b=[{id:i,url:c}],u=[...xt(this.stylesheet.sprite),...b];this._validate(s.x.sprite,"sprite",u,null,p)||(this.stylesheet.sprite=u,this._loadSprite(b,!0,m))}removeSprite(i){this._checkLoaded();let c=xt(this.stylesheet.sprite);if(c.find(p=>p.id===i)){if(this._spritesImagesIds[i])for(let p of this._spritesImagesIds[i])this.imageManager.removeImage(p),this._changedImages[p]=!0;c.splice(c.findIndex(p=>p.id===i),1),this.stylesheet.sprite=c.length>0?c:void 0,delete this._spritesImagesIds[i],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new s.k("data",{dataType:"style"}))}else this.fire(new s.j(new Error(`Sprite "${i}" doesn't exists on this map.`)))}getSprite(){return xt(this.stylesheet.sprite)}setSprite(i,c={},p){this._checkLoaded(),i&&this._validate(s.x.sprite,"sprite",i,null,c)||(this.stylesheet.sprite=i,i?this._loadSprite(i,!0,p):(this._unloadSprite(),p&&p(null)))}}var Ct=s.Y([{name:"a_pos",type:"Int16",components:2}]);let ct={prelude:bt(`#ifdef GL_ES +var jF=Object.create;var eC=Object.defineProperty;var qF=Object.getOwnPropertyDescriptor;var $F=Object.getOwnPropertyNames;var t3=Object.getPrototypeOf,e3=Object.prototype.hasOwnProperty;var Bd=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+n+'" is not supported')});var _d=(n,e)=>()=>(n&&(e=n(n=0)),e);var ua=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),iC=(n,e)=>{for(var r in e)eC(n,r,{get:e[r],enumerable:!0})},i3=(n,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of $F(e))!e3.call(n,l)&&l!==r&&eC(n,l,{get:()=>e[l],enumerable:!(o=qF(e,l))||o.enumerable});return n};var xd=(n,e,r)=>(r=n!=null?jF(t3(n)):{},i3(e||!n||!n.__esModule?eC(r,"default",{value:n,enumerable:!0}):r,n));var sC=ua((rC,nC)=>{(function(n,e){typeof rC=="object"&&typeof nC<"u"?nC.exports=e():typeof define=="function"&&define.amd?define(e):(n=typeof globalThis<"u"?globalThis:n||self,n.maplibregl=e())})(rC,function(){"use strict";var n={},e={};function r(l,s,p){if(e[l]=p,l==="index"){var m="var sharedModule = {}; ("+e.shared+")(sharedModule); ("+e.worker+")(sharedModule);",I={};return e.shared(I),e.index(n,I),typeof window<"u"&&n.setWorkerUrl(window.URL.createObjectURL(new Blob([m],{type:"text/javascript"}))),n}}r("shared",["exports"],function(l){"use strict";function s(A,i,c,d){return new(c||(c=Promise))(function(C,b){function v(Q){try{L(d.next(Q))}catch(Z){b(Z)}}function S(Q){try{L(d.throw(Q))}catch(Z){b(Z)}}function L(Q){var Z;Q.done?C(Q.value):(Z=Q.value,Z instanceof c?Z:new c(function(N){N(Z)})).then(v,S)}L((d=d.apply(A,i||[])).next())})}function p(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}typeof SuppressedError=="function"&&SuppressedError;var m=I;function I(A,i){this.x=A,this.y=i}I.prototype={clone:function(){return new I(this.x,this.y)},add:function(A){return this.clone()._add(A)},sub:function(A){return this.clone()._sub(A)},multByPoint:function(A){return this.clone()._multByPoint(A)},divByPoint:function(A){return this.clone()._divByPoint(A)},mult:function(A){return this.clone()._mult(A)},div:function(A){return this.clone()._div(A)},rotate:function(A){return this.clone()._rotate(A)},rotateAround:function(A,i){return this.clone()._rotateAround(A,i)},matMult:function(A){return this.clone()._matMult(A)},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(A){return this.x===A.x&&this.y===A.y},dist:function(A){return Math.sqrt(this.distSqr(A))},distSqr:function(A){var i=A.x-this.x,c=A.y-this.y;return i*i+c*c},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(A){return Math.atan2(this.y-A.y,this.x-A.x)},angleWith:function(A){return this.angleWithSep(A.x,A.y)},angleWithSep:function(A,i){return Math.atan2(this.x*i-this.y*A,this.x*A+this.y*i)},_matMult:function(A){var i=A[2]*this.x+A[3]*this.y;return this.x=A[0]*this.x+A[1]*this.y,this.y=i,this},_add:function(A){return this.x+=A.x,this.y+=A.y,this},_sub:function(A){return this.x-=A.x,this.y-=A.y,this},_mult:function(A){return this.x*=A,this.y*=A,this},_div:function(A){return this.x/=A,this.y/=A,this},_multByPoint:function(A){return this.x*=A.x,this.y*=A.y,this},_divByPoint:function(A){return this.x/=A.x,this.y/=A.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var A=this.y;return this.y=this.x,this.x=-A,this},_rotate:function(A){var i=Math.cos(A),c=Math.sin(A),d=c*this.x+i*this.y;return this.x=i*this.x-c*this.y,this.y=d,this},_rotateAround:function(A,i){var c=Math.cos(A),d=Math.sin(A),C=i.y+d*(this.x-i.x)+c*(this.y-i.y);return this.x=i.x+c*(this.x-i.x)-d*(this.y-i.y),this.y=C,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},I.convert=function(A){return A instanceof I?A:Array.isArray(A)?new I(A[0],A[1]):A};var w=p(m),_=E;function E(A,i,c,d){this.cx=3*A,this.bx=3*(c-A)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*i,this.by=3*(d-i)-this.cy,this.ay=1-this.cy-this.by,this.p1x=A,this.p1y=i,this.p2x=c,this.p2y=d}E.prototype={sampleCurveX:function(A){return((this.ax*A+this.bx)*A+this.cx)*A},sampleCurveY:function(A){return((this.ay*A+this.by)*A+this.cy)*A},sampleCurveDerivativeX:function(A){return(3*this.ax*A+2*this.bx)*A+this.cx},solveCurveX:function(A,i){if(i===void 0&&(i=1e-6),A<0)return 0;if(A>1)return 1;for(var c=A,d=0;d<8;d++){var C=this.sampleCurveX(c)-A;if(Math.abs(C)C?v=c:S=c,c=.5*(S-v)+v;return c},solve:function(A,i){return this.sampleCurveY(this.solveCurveX(A,i))}};var U=p(_);let F,V;function H(){return F==null&&(F=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),F}function Y(){if(V==null&&(V=!1,H())){let i=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(i){for(let d=0;d<5*5;d++){let C=4*d;i.fillStyle=`rgb(${C},${C+1},${C+2})`,i.fillRect(d%5,Math.floor(d/5),1,1)}let c=i.getImageData(0,0,5,5).data;for(let d=0;d<5*5*4;d++)if(d%4!=3&&c[d]!==d){V=!0;break}}}return V||!1}function D(A,i,c,d){let C=new U(A,i,c,d);return b=>C.solve(b)}let tt=D(.25,.1,.25,1);function ot(A,i,c){return Math.min(c,Math.max(i,A))}function bt(A,i,c){let d=c-i,C=((A-i)%d+d)%d+i;return C===i?c:C}function kt(A,...i){for(let c of i)for(let d in c)A[d]=c[d];return A}let Lt=1;function vt(A,i,c){let d={};for(let C in A)d[C]=i.call(this,A[C],C,A);return d}function ft(A,i,c){let d={};for(let C in A)i.call(this,A[C],C,A)&&(d[C]=A[C]);return d}function Mt(A){return Array.isArray(A)?A.map(Mt):typeof A=="object"&&A?vt(A,Mt):A}let qt={};function at(A){qt[A]||(typeof console<"u"&&console.warn(A),qt[A]=!0)}function st(A,i,c){return(c.y-A.y)*(i.x-A.x)>(i.y-A.y)*(c.x-A.x)}function wt(A){return typeof WorkerGlobalScope<"u"&&A!==void 0&&A instanceof WorkerGlobalScope}let yt=null;function te(A){return typeof ImageBitmap<"u"&&A instanceof ImageBitmap}let jt="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function Xt(A,i,c,d,C){return s(this,void 0,void 0,function*(){if(typeof VideoFrame>"u")throw new Error("VideoFrame not supported");let b=new VideoFrame(A,{timestamp:0});try{let v=b?.format;if(!v||!v.startsWith("BGR")&&!v.startsWith("RGB"))throw new Error(`Unrecognized format ${v}`);let S=v.startsWith("BGR"),L=new Uint8ClampedArray(d*C*4);if(yield b.copyTo(L,function(Q,Z,N,O,q){let nt=4*Math.max(-Z,0),lt=(Math.max(0,N)-N)*O*4+nt,Bt=4*O,Gt=Math.max(0,Z),re=Math.max(0,N);return{rect:{x:Gt,y:re,width:Math.min(Q.width,Z+O)-Gt,height:Math.min(Q.height,N+q)-re},layout:[{offset:lt,stride:Bt}]}}(A,i,c,d,C)),S)for(let Q=0;Qwt(self)?self.worker&&self.worker.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href,ie=function(A,i){if(/:\/\//.test(A.url)&&!/^https?:|^file:/.test(A.url)){let d=dt(A.url);if(d)return d(A,i);if(wt(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:A,targetMapId:mt},i)}if(!(/^file:/.test(c=A.url)||/^file:/.test(Pt())&&!/^\w+:/.test(c))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(d,C){return s(this,void 0,void 0,function*(){let b=new Request(d.url,{method:d.method||"GET",body:d.body,credentials:d.credentials,headers:d.headers,cache:d.cache,referrer:Pt(),signal:C.signal});d.type!=="json"||b.headers.has("Accept")||b.headers.set("Accept","application/json");let v=yield fetch(b);if(!v.ok){let Q=yield v.blob();throw new Ut(v.status,v.statusText,d.url,Q)}let S;S=d.type==="arrayBuffer"||d.type==="image"?v.arrayBuffer():d.type==="json"?v.json():v.text();let L=yield S;if(C.signal.aborted)throw ue();return{data:L,cacheControl:v.headers.get("Cache-Control"),expires:v.headers.get("Expires")}})}(A,i);if(wt(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:A,mustQueue:!0,targetMapId:mt},i)}var c;return function(d,C){return new Promise((b,v)=>{var S;let L=new XMLHttpRequest;L.open(d.method||"GET",d.url,!0),d.type!=="arrayBuffer"&&d.type!=="image"||(L.responseType="arraybuffer");for(let Q in d.headers)L.setRequestHeader(Q,d.headers[Q]);d.type==="json"&&(L.responseType="text",!((S=d.headers)===null||S===void 0)&&S.Accept||L.setRequestHeader("Accept","application/json")),L.withCredentials=d.credentials==="include",L.onerror=()=>{v(new Error(L.statusText))},L.onload=()=>{if(!C.signal.aborted)if((L.status>=200&&L.status<300||L.status===0)&&L.response!==null){let Q=L.response;if(d.type==="json")try{Q=JSON.parse(L.response)}catch(Z){return void v(Z)}b({data:Q,cacheControl:L.getResponseHeader("Cache-Control"),expires:L.getResponseHeader("Expires")})}else{let Q=new Blob([L.response],{type:L.getResponseHeader("Content-Type")});v(new Ut(L.status,L.statusText,d.url,Q))}},C.signal.addEventListener("abort",()=>{L.abort(),v(ue())}),L.send(d.body)})}(A,i)};function le(A){if(!A||A.indexOf("://")<=0||A.indexOf("data:image/")===0||A.indexOf("blob:")===0)return!0;let i=new URL(A),c=window.location;return i.protocol===c.protocol&&i.host===c.host}function ce(A,i,c){c[A]&&c[A].indexOf(i)!==-1||(c[A]=c[A]||[],c[A].push(i))}function Qe(A,i,c){if(c&&c[A]){let d=c[A].indexOf(i);d!==-1&&c[A].splice(d,1)}}class Ee{constructor(i,c={}){kt(this,c),this.type=i}}class We extends Ee{constructor(i,c={}){super("error",kt({error:i},c))}}class Je{on(i,c){return this._listeners=this._listeners||{},ce(i,c,this._listeners),this}off(i,c){return Qe(i,c,this._listeners),Qe(i,c,this._oneTimeListeners),this}once(i,c){return c?(this._oneTimeListeners=this._oneTimeListeners||{},ce(i,c,this._oneTimeListeners),this):new Promise(d=>this.once(i,d))}fire(i,c){typeof i=="string"&&(i=new Ee(i,c||{}));let d=i.type;if(this.listens(d)){i.target=this;let C=this._listeners&&this._listeners[d]?this._listeners[d].slice():[];for(let S of C)S.call(this,i);let b=this._oneTimeListeners&&this._oneTimeListeners[d]?this._oneTimeListeners[d].slice():[];for(let S of b)Qe(d,S,this._oneTimeListeners),S.call(this,i);let v=this._eventedParent;v&&(kt(i,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),v.fire(i))}else i instanceof We&&console.error(i.error);return this}listens(i){return this._listeners&&this._listeners[i]&&this._listeners[i].length>0||this._oneTimeListeners&&this._oneTimeListeners[i]&&this._oneTimeListeners[i].length>0||this._eventedParent&&this._eventedParent.listens(i)}setEventedParent(i,c){return this._eventedParent=i,this._eventedParentData=c,this}}var Dt={$version:8,$root:{version:{required:!0,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"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,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:!0,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:!1},"*":{type:"*"}},source_raster:{type:{required:!0,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:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,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:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},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_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,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:!1,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"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,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:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,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:!0,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:!1,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:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,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:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,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:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,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:!0,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:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"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:!1,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:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,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:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,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_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},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:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"enum",default:"mercator",values:{mercator:{},globe:{}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,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"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};let de=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function Tt(A,i){let c={};for(let d in A)d!=="ref"&&(c[d]=A[d]);return de.forEach(d=>{d in i&&(c[d]=i[d])}),c}function Xe(A,i){if(Array.isArray(A)){if(!Array.isArray(i)||A.length!==i.length)return!1;for(let c=0;c`:A.itemType.kind==="value"?"array":`array<${i}>`}return A.kind}let it=[Ei,ne,ui,Ve,rr,zi,Ni,K($e),_r,nr,It];function gt(A,i){if(i.kind==="error")return null;if(A.kind==="array"){if(i.kind==="array"&&(i.N===0&&i.itemType.kind==="value"||!gt(A.itemType,i.itemType))&&(typeof A.N!="number"||A.N===i.N))return null}else{if(A.kind===i.kind)return null;if(A.kind==="value"){for(let c of it)if(!gt(c,i))return null}}return`Expected ${z(A)} but found ${z(i)} instead.`}function Ht(A,i){return i.some(c=>c.kind===A.kind)}function Nt(A,i){return i.some(c=>c==="null"?A===null:c==="array"?Array.isArray(A):c==="object"?A&&!Array.isArray(A)&&typeof A=="object":c===typeof A)}function Jt(A,i){return A.kind==="array"&&i.kind==="array"?A.itemType.kind===i.itemType.kind&&typeof A.N=="number":A.kind===i.kind}let Rt=.96422,Ot=.82521,me=4/29,Ae=6/29,Se=3*Ae*Ae,Ye=Ae*Ae*Ae,je=Math.PI/180,Mi=180/Math.PI;function Ti(A){return(A%=360)<0&&(A+=360),A}function Vi([A,i,c,d]){let C,b,v=pr((.2225045*(A=vi(A))+.7168786*(i=vi(i))+.0606169*(c=vi(c)))/1);A===i&&i===c?C=b=v:(C=pr((.4360747*A+.3850649*i+.1430804*c)/Rt),b=pr((.0139322*A+.0971045*i+.7141733*c)/Ot));let S=116*v-16;return[S<0?0:S,500*(C-v),200*(v-b),d]}function vi(A){return A<=.04045?A/12.92:Math.pow((A+.055)/1.055,2.4)}function pr(A){return A>Ye?Math.pow(A,1/3):A/Se+me}function ur([A,i,c,d]){let C=(A+16)/116,b=isNaN(i)?C:C+i/500,v=isNaN(c)?C:C-c/200;return C=1*Oi(C),b=Rt*Oi(b),v=Ot*Oi(v),[Qi(3.1338561*b-1.6168667*C-.4906146*v),Qi(-.9787684*b+1.9161415*C+.033454*v),Qi(.0719453*b-.2289914*C+1.4052427*v),d]}function Qi(A){return(A=A<=.00304?12.92*A:1.055*Math.pow(A,1/2.4)-.055)<0?0:A>1?1:A}function Oi(A){return A>Ae?A*A*A:Se*(A-me)}function sr(A){return parseInt(A.padEnd(2,A),16)/255}function Zt(A,i){return Ne(i?A/100:A,0,1)}function Ne(A,i,c){return Math.min(Math.max(i,A),c)}function ke(A){return!A.some(Number.isNaN)}let Wi={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Fi{constructor(i,c,d,C=1,b=!0){this.r=i,this.g=c,this.b=d,this.a=C,b||(this.r*=C,this.g*=C,this.b*=C,C||this.overwriteGetter("rgb",[i,c,d,C]))}static parse(i){if(i instanceof Fi)return i;if(typeof i!="string")return;let c=function(d){if((d=d.toLowerCase().trim())==="transparent")return[0,0,0,0];let C=Wi[d];if(C){let[v,S,L]=C;return[v/255,S/255,L/255,1]}if(d.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(d)){let v=d.length<6?1:2,S=1;return[sr(d.slice(S,S+=v)),sr(d.slice(S,S+=v)),sr(d.slice(S,S+=v)),sr(d.slice(S,S+v)||"ff")]}if(d.startsWith("rgb")){let v=d.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(v){let[S,L,Q,Z,N,O,q,nt,lt,Bt,Gt,re]=v,Kt=[Z||" ",q||" ",Bt].join("");if(Kt===" "||Kt===" /"||Kt===",,"||Kt===",,,"){let Yt=[Q,O,lt].join(""),ge=Yt==="%%%"?100:Yt===""?255:0;if(ge){let Re=[Ne(+L/ge,0,1),Ne(+N/ge,0,1),Ne(+nt/ge,0,1),Gt?Zt(+Gt,re):1];if(ke(Re))return Re}}return}}let b=d.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(b){let[v,S,L,Q,Z,N,O,q,nt]=b,lt=[L||" ",Z||" ",O].join("");if(lt===" "||lt===" /"||lt===",,"||lt===",,,"){let Bt=[+S,Ne(+Q,0,100),Ne(+N,0,100),q?Zt(+q,nt):1];if(ke(Bt))return function([Gt,re,Kt,Yt]){function ge(Re){let ni=(Re+Gt/30)%12,Gi=re*Math.min(Kt,1-Kt);return Kt-Gi*Math.max(-1,Math.min(ni-3,9-ni,1))}return Gt=Ti(Gt),re/=100,Kt/=100,[ge(0),ge(8),ge(4),Yt]}(Bt)}}}(i);return c?new Fi(...c,!1):void 0}get rgb(){let{r:i,g:c,b:d,a:C}=this,b=C||1/0;return this.overwriteGetter("rgb",[i/b,c/b,d/b,C])}get hcl(){return this.overwriteGetter("hcl",function(i){let[c,d,C,b]=Vi(i),v=Math.sqrt(d*d+C*C);return[Math.round(1e4*v)?Ti(Math.atan2(C,d)*Mi):NaN,v,c,b]}(this.rgb))}get lab(){return this.overwriteGetter("lab",Vi(this.rgb))}overwriteGetter(i,c){return Object.defineProperty(this,i,{value:c}),c}toString(){let[i,c,d,C]=this.rgb;return`rgba(${[i,c,d].map(b=>Math.round(255*b)).join(",")},${C})`}}Fi.black=new Fi(0,0,0,1),Fi.white=new Fi(1,1,1,1),Fi.transparent=new Fi(0,0,0,0),Fi.red=new Fi(1,0,0,1);class rn{constructor(i,c,d){this.sensitivity=i?c?"variant":"case":c?"accent":"base",this.locale=d,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(i,c){return this.collator.compare(i,c)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Fr{constructor(i,c,d,C,b){this.text=i,this.image=c,this.scale=d,this.fontStack=C,this.textColor=b}}class jr{constructor(i){this.sections=i}static fromString(i){return new jr([new Fr(i,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(i=>i.text.length!==0||i.image&&i.image.name.length!==0)}static factory(i){return i instanceof jr?i:jr.fromString(i)}toString(){return this.sections.length===0?"":this.sections.map(i=>i.text).join("")}}class br{constructor(i){this.values=i.slice()}static parse(i){if(i instanceof br)return i;if(typeof i=="number")return new br([i,i,i,i]);if(Array.isArray(i)&&!(i.length<1||i.length>4)){for(let c of i)if(typeof c!="number")return;switch(i.length){case 1:i=[i[0],i[0],i[0],i[0]];break;case 2:i=[i[0],i[1],i[0],i[1]];break;case 3:i=[i[0],i[1],i[2],i[1]]}return new br(i)}}toString(){return JSON.stringify(this.values)}}let on=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class dn{constructor(i){this.values=i.slice()}static parse(i){if(i instanceof dn)return i;if(Array.isArray(i)&&!(i.length<1)&&i.length%2==0){for(let c=0;c=0&&A<=255&&typeof i=="number"&&i>=0&&i<=255&&typeof c=="number"&&c>=0&&c<=255?d===void 0||typeof d=="number"&&d>=0&&d<=1?null:`Invalid rgba value [${[A,i,c,d].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof d=="number"?[A,i,c,d]:[A,i,c]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function es(A){if(A===null||typeof A=="string"||typeof A=="boolean"||typeof A=="number"||A instanceof Fi||A instanceof rn||A instanceof jr||A instanceof br||A instanceof dn||A instanceof pn)return!0;if(Array.isArray(A)){for(let i of A)if(!es(i))return!1;return!0}if(typeof A=="object"){for(let i in A)if(!es(A[i]))return!1;return!0}return!1}function Or(A){if(A===null)return Ei;if(typeof A=="string")return ui;if(typeof A=="boolean")return Ve;if(typeof A=="number")return ne;if(A instanceof Fi)return rr;if(A instanceof rn)return wr;if(A instanceof jr)return zi;if(A instanceof br)return _r;if(A instanceof dn)return It;if(A instanceof pn)return nr;if(Array.isArray(A)){let i=A.length,c;for(let d of A){let C=Or(d);if(c){if(c===C)continue;c=$e;break}c=C}return K(c||$e,i)}return Ni}function is(A){let i=typeof A;return A===null?"":i==="string"||i==="number"||i==="boolean"?String(A):A instanceof Fi||A instanceof jr||A instanceof br||A instanceof dn||A instanceof pn?A.toString():JSON.stringify(A)}class Jn{constructor(i,c){this.type=i,this.value=c}static parse(i,c){if(i.length!==2)return c.error(`'literal' expression requires exactly one argument, but found ${i.length-1} instead.`);if(!es(i[1]))return c.error("invalid value");let d=i[1],C=Or(d),b=c.expectedType;return C.kind!=="array"||C.N!==0||!b||b.kind!=="array"||typeof b.N=="number"&&b.N!==0||(C=b),new Jn(C,d)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class $i{constructor(i){this.name="ExpressionEvaluationError",this.message=i}toJSON(){return this.message}}let io={string:ui,number:ne,boolean:Ve,object:Ni};class wn{constructor(i,c){this.type=i,this.args=c}static parse(i,c){if(i.length<2)return c.error("Expected at least one argument.");let d,C=1,b=i[0];if(b==="array"){let S,L;if(i.length>2){let Q=i[1];if(typeof Q!="string"||!(Q in io)||Q==="object")return c.error('The item type argument of "array" must be one of string, number, boolean',1);S=io[Q],C++}else S=$e;if(i.length>3){if(i[2]!==null&&(typeof i[2]!="number"||i[2]<0||i[2]!==Math.floor(i[2])))return c.error('The length argument to "array" must be a positive integer literal',2);L=i[2],C++}d=K(S,L)}else{if(!io[b])throw new Error(`Types doesn't contain name = ${b}`);d=io[b]}let v=[];for(;Ci.outputDefined())}}let Wo={"to-boolean":Ve,"to-color":rr,"to-number":ne,"to-string":ui};class Bn{constructor(i,c){this.type=i,this.args=c}static parse(i,c){if(i.length<2)return c.error("Expected at least one argument.");let d=i[0];if(!Wo[d])throw new Error(`Can't parse ${d} as it is not part of the known types`);if((d==="to-boolean"||d==="to-string")&&i.length!==2)return c.error("Expected one argument.");let C=Wo[d],b=[];for(let v=1;v4?`Invalid rbga value ${JSON.stringify(c)}: expected an array containing either three or four numeric values.`:vo(c[0],c[1],c[2],c[3]),!d))return new Fi(c[0]/255,c[1]/255,c[2]/255,c[3])}throw new $i(d||`Could not parse color from value '${typeof c=="string"?c:JSON.stringify(c)}'`)}case"padding":{let c;for(let d of this.args){c=d.evaluate(i);let C=br.parse(c);if(C)return C}throw new $i(`Could not parse padding from value '${typeof c=="string"?c:JSON.stringify(c)}'`)}case"variableAnchorOffsetCollection":{let c;for(let d of this.args){c=d.evaluate(i);let C=dn.parse(c);if(C)return C}throw new $i(`Could not parse variableAnchorOffsetCollection from value '${typeof c=="string"?c:JSON.stringify(c)}'`)}case"number":{let c=null;for(let d of this.args){if(c=d.evaluate(i),c===null)return 0;let C=Number(c);if(!isNaN(C))return C}throw new $i(`Could not convert ${JSON.stringify(c)} to number.`)}case"formatted":return jr.fromString(is(this.args[0].evaluate(i)));case"resolvedImage":return pn.fromString(is(this.args[0].evaluate(i)));default:return is(this.args[0].evaluate(i))}}eachChild(i){this.args.forEach(i)}outputDefined(){return this.args.every(i=>i.outputDefined())}}let ht=["Unknown","Point","LineString","Polygon"];class pt{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?ht[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||{}}parseColor(i){let c=this._parseColorCache[i];return c||(c=this._parseColorCache[i]=Fi.parse(i)),c}}class At{constructor(i,c,d=[],C,b=new pi,v=[]){this.registry=i,this.path=d,this.key=d.map(S=>`[${S}]`).join(""),this.scope=b,this.errors=v,this.expectedType=C,this._isConstant=c}parse(i,c,d,C,b={}){return c?this.concat(c,d,C)._parse(i,b):this._parse(i,b)}_parse(i,c){function d(C,b,v){return v==="assert"?new wn(b,[C]):v==="coerce"?new Bn(b,[C]):C}if(i!==null&&typeof i!="string"&&typeof i!="boolean"&&typeof i!="number"||(i=["literal",i]),Array.isArray(i)){if(i.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');let C=i[0];if(typeof C!="string")return this.error(`Expression name must be a string, but found ${typeof C} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let b=this.registry[C];if(b){let v=b.parse(i,this);if(!v)return null;if(this.expectedType){let S=this.expectedType,L=v.type;if(S.kind!=="string"&&S.kind!=="number"&&S.kind!=="boolean"&&S.kind!=="object"&&S.kind!=="array"||L.kind!=="value")if(S.kind!=="color"&&S.kind!=="formatted"&&S.kind!=="resolvedImage"||L.kind!=="value"&&L.kind!=="string")if(S.kind!=="padding"||L.kind!=="value"&&L.kind!=="number"&&L.kind!=="array")if(S.kind!=="variableAnchorOffsetCollection"||L.kind!=="value"&&L.kind!=="array"){if(this.checkSubtype(S,L))return null}else v=d(v,S,c.typeAnnotation||"coerce");else v=d(v,S,c.typeAnnotation||"coerce");else v=d(v,S,c.typeAnnotation||"coerce");else v=d(v,S,c.typeAnnotation||"assert")}if(!(v instanceof Jn)&&v.type.kind!=="resolvedImage"&&this._isConstant(v)){let S=new pt;try{v=new Jn(v.type,v.evaluate(S))}catch(L){return this.error(L.message),null}}return v}return this.error(`Unknown expression "${C}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(i===void 0?"'undefined' value invalid. Use null instead.":typeof i=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof i} instead.`)}concat(i,c,d){let C=typeof i=="number"?this.path.concat(i):this.path,b=d?this.scope.concat(d):this.scope;return new At(this.registry,this._isConstant,C,c||null,b,this.errors)}error(i,...c){let d=`${this.key}${c.map(C=>`[${C}]`).join("")}`;this.errors.push(new Hi(d,i))}checkSubtype(i,c){let d=gt(i,c);return d&&this.error(d),d}}class St{constructor(i,c){this.type=c.type,this.bindings=[].concat(i),this.result=c}evaluate(i){return this.result.evaluate(i)}eachChild(i){for(let c of this.bindings)i(c[1]);i(this.result)}static parse(i,c){if(i.length<4)return c.error(`Expected at least 3 arguments, but found ${i.length-1} instead.`);let d=[];for(let b=1;b=d.length)throw new $i(`Array index out of bounds: ${c} > ${d.length-1}.`);if(c!==Math.floor(c))throw new $i(`Array index must be an integer, but found ${c} instead.`);return d[c]}eachChild(i){i(this.index),i(this.input)}outputDefined(){return!1}}class ee{constructor(i,c){this.type=Ve,this.needle=i,this.haystack=c}static parse(i,c){if(i.length!==3)return c.error(`Expected 2 arguments, but found ${i.length-1} instead.`);let d=c.parse(i[1],1,$e),C=c.parse(i[2],2,$e);return d&&C?Ht(d.type,[Ve,ui,ne,Ei,$e])?new ee(d,C):c.error(`Expected first argument to be of type boolean, string, number or null, but found ${z(d.type)} instead`):null}evaluate(i){let c=this.needle.evaluate(i),d=this.haystack.evaluate(i);if(!d)return!1;if(!Nt(c,["boolean","string","number","null"]))throw new $i(`Expected first argument to be of type boolean, string, number or null, but found ${z(Or(c))} instead.`);if(!Nt(d,["string","array"]))throw new $i(`Expected second argument to be of type array or string, but found ${z(Or(d))} instead.`);return d.indexOf(c)>=0}eachChild(i){i(this.needle),i(this.haystack)}outputDefined(){return!0}}class be{constructor(i,c,d){this.type=ne,this.needle=i,this.haystack=c,this.fromIndex=d}static parse(i,c){if(i.length<=2||i.length>=5)return c.error(`Expected 3 or 4 arguments, but found ${i.length-1} instead.`);let d=c.parse(i[1],1,$e),C=c.parse(i[2],2,$e);if(!d||!C)return null;if(!Ht(d.type,[Ve,ui,ne,Ei,$e]))return c.error(`Expected first argument to be of type boolean, string, number or null, but found ${z(d.type)} instead`);if(i.length===4){let b=c.parse(i[3],3,ne);return b?new be(d,C,b):null}return new be(d,C)}evaluate(i){let c=this.needle.evaluate(i),d=this.haystack.evaluate(i);if(!Nt(c,["boolean","string","number","null"]))throw new $i(`Expected first argument to be of type boolean, string, number or null, but found ${z(Or(c))} instead.`);let C;if(this.fromIndex&&(C=this.fromIndex.evaluate(i)),Nt(d,["string"])){let b=d.indexOf(c,C);return b===-1?-1:[...d.slice(0,b)].length}if(Nt(d,["array"]))return d.indexOf(c,C);throw new $i(`Expected second argument to be of type array or string, but found ${z(Or(d))} instead.`)}eachChild(i){i(this.needle),i(this.haystack),this.fromIndex&&i(this.fromIndex)}outputDefined(){return!1}}class Ie{constructor(i,c,d,C,b,v){this.inputType=i,this.type=c,this.input=d,this.cases=C,this.outputs=b,this.otherwise=v}static parse(i,c){if(i.length<5)return c.error(`Expected at least 4 arguments, but found only ${i.length-1}.`);if(i.length%2!=1)return c.error("Expected an even number of arguments.");let d,C;c.expectedType&&c.expectedType.kind!=="value"&&(C=c.expectedType);let b={},v=[];for(let Q=2;QNumber.MAX_SAFE_INTEGER)return O.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof nt=="number"&&Math.floor(nt)!==nt)return O.error("Numeric branch labels must be integer values.");if(d){if(O.checkSubtype(d,Or(nt)))return null}else d=Or(nt);if(b[String(nt)]!==void 0)return O.error("Branch labels must be unique.");b[String(nt)]=v.length}let q=c.parse(N,Q,C);if(!q)return null;C=C||q.type,v.push(q)}let S=c.parse(i[1],1,$e);if(!S)return null;let L=c.parse(i[i.length-1],i.length-1,C);return L?S.type.kind!=="value"&&c.concat(1).checkSubtype(d,S.type)?null:new Ie(d,C,S,b,v,L):null}evaluate(i){let c=this.input.evaluate(i);return(Or(c)===this.inputType&&this.outputs[this.cases[c]]||this.otherwise).evaluate(i)}eachChild(i){i(this.input),this.outputs.forEach(i),i(this.otherwise)}outputDefined(){return this.outputs.every(i=>i.outputDefined())&&this.otherwise.outputDefined()}}class pe{constructor(i,c,d){this.type=i,this.branches=c,this.otherwise=d}static parse(i,c){if(i.length<4)return c.error(`Expected at least 3 arguments, but found only ${i.length-1}.`);if(i.length%2!=0)return c.error("Expected an odd number of arguments.");let d;c.expectedType&&c.expectedType.kind!=="value"&&(d=c.expectedType);let C=[];for(let v=1;vc.outputDefined())&&this.otherwise.outputDefined()}}class $t{constructor(i,c,d,C){this.type=i,this.input=c,this.beginIndex=d,this.endIndex=C}static parse(i,c){if(i.length<=2||i.length>=5)return c.error(`Expected 3 or 4 arguments, but found ${i.length-1} instead.`);let d=c.parse(i[1],1,$e),C=c.parse(i[2],2,ne);if(!d||!C)return null;if(!Ht(d.type,[K($e),ui,$e]))return c.error(`Expected first argument to be of type array or string, but found ${z(d.type)} instead`);if(i.length===4){let b=c.parse(i[3],3,ne);return b?new $t(d.type,d,C,b):null}return new $t(d.type,d,C)}evaluate(i){let c=this.input.evaluate(i),d=this.beginIndex.evaluate(i),C;if(this.endIndex&&(C=this.endIndex.evaluate(i)),Nt(c,["string"]))return[...c].slice(d,C).join("");if(Nt(c,["array"]))return c.slice(d,C);throw new $i(`Expected first argument to be of type array or string, but found ${z(Or(c))} instead.`)}eachChild(i){i(this.input),i(this.beginIndex),this.endIndex&&i(this.endIndex)}outputDefined(){return!1}}function fe(A,i){let c=A.length-1,d,C,b=0,v=c,S=0;for(;b<=v;)if(S=Math.floor((b+v)/2),d=A[S],C=A[S+1],d<=i){if(S===c||ii))throw new $i("Input is not a number.");v=S-1}return 0}class Ce{constructor(i,c,d){this.type=i,this.input=c,this.labels=[],this.outputs=[];for(let[C,b]of d)this.labels.push(C),this.outputs.push(b)}static parse(i,c){if(i.length-1<4)return c.error(`Expected at least 4 arguments, but found only ${i.length-1}.`);if((i.length-1)%2!=0)return c.error("Expected an even number of arguments.");let d=c.parse(i[1],1,ne);if(!d)return null;let C=[],b=null;c.expectedType&&c.expectedType.kind!=="value"&&(b=c.expectedType);for(let v=1;v=S)return c.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',Q);let N=c.parse(L,Z,b);if(!N)return null;b=b||N.type,C.push([S,N])}return new Ce(b,d,C)}evaluate(i){let c=this.labels,d=this.outputs;if(c.length===1)return d[0].evaluate(i);let C=this.input.evaluate(i);if(C<=c[0])return d[0].evaluate(i);let b=c.length;return C>=c[b-1]?d[b-1].evaluate(i):d[fe(c,C)].evaluate(i)}eachChild(i){i(this.input);for(let c of this.outputs)i(c)}outputDefined(){return this.outputs.every(i=>i.outputDefined())}}function Te(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var Li=ki;function ki(A,i,c,d){this.cx=3*A,this.bx=3*(c-A)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*i,this.by=3*(d-i)-this.cy,this.ay=1-this.cy-this.by,this.p1x=A,this.p1y=i,this.p2x=c,this.p2y=d}ki.prototype={sampleCurveX:function(A){return((this.ax*A+this.bx)*A+this.cx)*A},sampleCurveY:function(A){return((this.ay*A+this.by)*A+this.cy)*A},sampleCurveDerivativeX:function(A){return(3*this.ax*A+2*this.bx)*A+this.cx},solveCurveX:function(A,i){if(i===void 0&&(i=1e-6),A<0)return 0;if(A>1)return 1;for(var c=A,d=0;d<8;d++){var C=this.sampleCurveX(c)-A;if(Math.abs(C)C?v=c:S=c,c=.5*(S-v)+v;return c},solve:function(A,i){return this.sampleCurveY(this.solveCurveX(A,i))}};var Ze=Te(Li);function Fe(A,i,c){return A+c*(i-A)}function ii(A,i,c){return A.map((d,C)=>Fe(d,i[C],c))}let ai={number:Fe,color:function(A,i,c,d="rgb"){switch(d){case"rgb":{let[C,b,v,S]=ii(A.rgb,i.rgb,c);return new Fi(C,b,v,S,!1)}case"hcl":{let[C,b,v,S]=A.hcl,[L,Q,Z,N]=i.hcl,O,q;if(isNaN(C)||isNaN(L))isNaN(C)?isNaN(L)?O=NaN:(O=L,v!==1&&v!==0||(q=Q)):(O=C,Z!==1&&Z!==0||(q=b));else{let re=L-C;L>C&&re>180?re-=360:L180&&(re+=360),O=C+c*re}let[nt,lt,Bt,Gt]=function([re,Kt,Yt,ge]){return re=isNaN(re)?0:re*je,ur([Yt,Math.cos(re)*Kt,Math.sin(re)*Kt,ge])}([O,q??Fe(b,Q,c),Fe(v,Z,c),Fe(S,N,c)]);return new Fi(nt,lt,Bt,Gt,!1)}case"lab":{let[C,b,v,S]=ur(ii(A.lab,i.lab,c));return new Fi(C,b,v,S,!1)}}},array:ii,padding:function(A,i,c){return new br(ii(A.values,i.values,c))},variableAnchorOffsetCollection:function(A,i,c){let d=A.values,C=i.values;if(d.length!==C.length)throw new $i(`Cannot interpolate values of different length. from: ${A.toString()}, to: ${i.toString()}`);let b=[];for(let v=0;vtypeof Z!="number"||Z<0||Z>1))return c.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);C={name:"cubic-bezier",controlPoints:Q}}}if(i.length-1<4)return c.error(`Expected at least 4 arguments, but found only ${i.length-1}.`);if((i.length-1)%2!=0)return c.error("Expected an even number of arguments.");if(b=c.parse(b,2,ne),!b)return null;let S=[],L=null;d==="interpolate-hcl"||d==="interpolate-lab"?L=rr:c.expectedType&&c.expectedType.kind!=="value"&&(L=c.expectedType);for(let Q=0;Q=Z)return c.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',O);let nt=c.parse(N,q,L);if(!nt)return null;L=L||nt.type,S.push([Z,nt])}return Jt(L,ne)||Jt(L,rr)||Jt(L,_r)||Jt(L,It)||Jt(L,K(ne))?new wi(L,d,C,b,S):c.error(`Type ${z(L)} is not interpolatable.`)}evaluate(i){let c=this.labels,d=this.outputs;if(c.length===1)return d[0].evaluate(i);let C=this.input.evaluate(i);if(C<=c[0])return d[0].evaluate(i);let b=c.length;if(C>=c[b-1])return d[b-1].evaluate(i);let v=fe(c,C),S=wi.interpolationFactor(this.interpolation,C,c[v],c[v+1]),L=d[v].evaluate(i),Q=d[v+1].evaluate(i);switch(this.operator){case"interpolate":return ai[this.type.kind](L,Q,S);case"interpolate-hcl":return ai.color(L,Q,S,"hcl");case"interpolate-lab":return ai.color(L,Q,S,"lab")}}eachChild(i){i(this.input);for(let c of this.outputs)i(c)}outputDefined(){return this.outputs.every(i=>i.outputDefined())}}function ar(A,i,c,d){let C=d-c,b=A-c;return C===0?0:i===1?b/C:(Math.pow(i,b)-1)/(Math.pow(i,C)-1)}class si{constructor(i,c){this.type=i,this.args=c}static parse(i,c){if(i.length<2)return c.error("Expectected at least one argument.");let d=null,C=c.expectedType;C&&C.kind!=="value"&&(d=C);let b=[];for(let S of i.slice(1)){let L=c.parse(S,1+b.length,d,void 0,{typeAnnotation:"omit"});if(!L)return null;d=d||L.type,b.push(L)}if(!d)throw new Error("No output type");let v=C&&b.some(S=>gt(C,S.type));return new si(v?$e:d,b)}evaluate(i){let c,d=null,C=0;for(let b of this.args)if(C++,d=b.evaluate(i),d&&d instanceof pn&&!d.available&&(c||(c=d.name),d=null,C===this.args.length&&(d=c)),d!==null)break;return d}eachChild(i){this.args.forEach(i)}outputDefined(){return this.args.every(i=>i.outputDefined())}}function vr(A,i){return A==="=="||A==="!="?i.kind==="boolean"||i.kind==="string"||i.kind==="number"||i.kind==="null"||i.kind==="value":i.kind==="string"||i.kind==="number"||i.kind==="value"}function nn(A,i,c,d){return d.compare(i,c)===0}function Br(A,i,c){let d=A!=="=="&&A!=="!=";return class kb{constructor(b,v,S){this.type=Ve,this.lhs=b,this.rhs=v,this.collator=S,this.hasUntypedArgument=b.type.kind==="value"||v.type.kind==="value"}static parse(b,v){if(b.length!==3&&b.length!==4)return v.error("Expected two or three arguments.");let S=b[0],L=v.parse(b[1],1,$e);if(!L)return null;if(!vr(S,L.type))return v.concat(1).error(`"${S}" comparisons are not supported for type '${z(L.type)}'.`);let Q=v.parse(b[2],2,$e);if(!Q)return null;if(!vr(S,Q.type))return v.concat(2).error(`"${S}" comparisons are not supported for type '${z(Q.type)}'.`);if(L.type.kind!==Q.type.kind&&L.type.kind!=="value"&&Q.type.kind!=="value")return v.error(`Cannot compare types '${z(L.type)}' and '${z(Q.type)}'.`);d&&(L.type.kind==="value"&&Q.type.kind!=="value"?L=new wn(Q.type,[L]):L.type.kind!=="value"&&Q.type.kind==="value"&&(Q=new wn(L.type,[Q])));let Z=null;if(b.length===4){if(L.type.kind!=="string"&&Q.type.kind!=="string"&&L.type.kind!=="value"&&Q.type.kind!=="value")return v.error("Cannot use collator to compare non-string types.");if(Z=v.parse(b[3],3,wr),!Z)return null}return new kb(L,Q,Z)}evaluate(b){let v=this.lhs.evaluate(b),S=this.rhs.evaluate(b);if(d&&this.hasUntypedArgument){let L=Or(v),Q=Or(S);if(L.kind!==Q.kind||L.kind!=="string"&&L.kind!=="number")throw new $i(`Expected arguments for "${A}" to be (string, string) or (number, number), but found (${L.kind}, ${Q.kind}) instead.`)}if(this.collator&&!d&&this.hasUntypedArgument){let L=Or(v),Q=Or(S);if(L.kind!=="string"||Q.kind!=="string")return i(b,v,S)}return this.collator?c(b,v,S,this.collator.evaluate(b)):i(b,v,S)}eachChild(b){b(this.lhs),b(this.rhs),this.collator&&b(this.collator)}outputDefined(){return!0}}}let ms=Br("==",function(A,i,c){return i===c},nn),Rn=Br("!=",function(A,i,c){return i!==c},function(A,i,c,d){return!nn(0,i,c,d)}),wo=Br("<",function(A,i,c){return i",function(A,i,c){return i>c},function(A,i,c,d){return d.compare(i,c)>0}),Fc=Br("<=",function(A,i,c){return i<=c},function(A,i,c,d){return d.compare(i,c)<=0}),Gl=Br(">=",function(A,i,c){return i>=c},function(A,i,c,d){return d.compare(i,c)>=0});class Fa{constructor(i,c,d){this.type=wr,this.locale=d,this.caseSensitive=i,this.diacriticSensitive=c}static parse(i,c){if(i.length!==2)return c.error("Expected one argument.");let d=i[1];if(typeof d!="object"||Array.isArray(d))return c.error("Collator options argument must be an object.");let C=c.parse(d["case-sensitive"]!==void 0&&d["case-sensitive"],1,Ve);if(!C)return null;let b=c.parse(d["diacritic-sensitive"]!==void 0&&d["diacritic-sensitive"],1,Ve);if(!b)return null;let v=null;return d.locale&&(v=c.parse(d.locale,1,ui),!v)?null:new Fa(C,b,v)}evaluate(i){return new rn(this.caseSensitive.evaluate(i),this.diacriticSensitive.evaluate(i),this.locale?this.locale.evaluate(i):null)}eachChild(i){i(this.caseSensitive),i(this.diacriticSensitive),this.locale&&i(this.locale)}outputDefined(){return!1}}class ka{constructor(i,c,d,C,b){this.type=ui,this.number=i,this.locale=c,this.currency=d,this.minFractionDigits=C,this.maxFractionDigits=b}static parse(i,c){if(i.length!==3)return c.error("Expected two arguments.");let d=c.parse(i[1],1,ne);if(!d)return null;let C=i[2];if(typeof C!="object"||Array.isArray(C))return c.error("NumberFormat options argument must be an object.");let b=null;if(C.locale&&(b=c.parse(C.locale,1,ui),!b))return null;let v=null;if(C.currency&&(v=c.parse(C.currency,1,ui),!v))return null;let S=null;if(C["min-fraction-digits"]&&(S=c.parse(C["min-fraction-digits"],1,ne),!S))return null;let L=null;return C["max-fraction-digits"]&&(L=c.parse(C["max-fraction-digits"],1,ne),!L)?null:new ka(d,b,v,S,L)}evaluate(i){return new Intl.NumberFormat(this.locale?this.locale.evaluate(i):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(i):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(i):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(i):void 0}).format(this.number.evaluate(i))}eachChild(i){i(this.number),this.locale&&i(this.locale),this.currency&&i(this.currency),this.minFractionDigits&&i(this.minFractionDigits),this.maxFractionDigits&&i(this.maxFractionDigits)}outputDefined(){return!1}}class Bo{constructor(i){this.type=zi,this.sections=i}static parse(i,c){if(i.length<2)return c.error("Expected at least one argument.");let d=i[1];if(!Array.isArray(d)&&typeof d=="object")return c.error("First argument must be an image or text section.");let C=[],b=!1;for(let v=1;v<=i.length-1;++v){let S=i[v];if(b&&typeof S=="object"&&!Array.isArray(S)){b=!1;let L=null;if(S["font-scale"]&&(L=c.parse(S["font-scale"],1,ne),!L))return null;let Q=null;if(S["text-font"]&&(Q=c.parse(S["text-font"],1,K(ui)),!Q))return null;let Z=null;if(S["text-color"]&&(Z=c.parse(S["text-color"],1,rr),!Z))return null;let N=C[C.length-1];N.scale=L,N.font=Q,N.textColor=Z}else{let L=c.parse(i[v],1,$e);if(!L)return null;let Q=L.type.kind;if(Q!=="string"&&Q!=="value"&&Q!=="null"&&Q!=="resolvedImage")return c.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");b=!0,C.push({content:L,scale:null,font:null,textColor:null})}}return new Bo(C)}evaluate(i){return new jr(this.sections.map(c=>{let d=c.content.evaluate(i);return Or(d)===nr?new Fr("",d,null,null,null):new Fr(is(d),null,c.scale?c.scale.evaluate(i):null,c.font?c.font.evaluate(i).join(","):null,c.textColor?c.textColor.evaluate(i):null)}))}eachChild(i){for(let c of this.sections)i(c.content),c.scale&&i(c.scale),c.font&&i(c.font),c.textColor&&i(c.textColor)}outputDefined(){return!1}}class _o{constructor(i){this.type=nr,this.input=i}static parse(i,c){if(i.length!==2)return c.error("Expected two arguments.");let d=c.parse(i[1],1,ui);return d?new _o(d):c.error("No image name provided.")}evaluate(i){let c=this.input.evaluate(i),d=pn.fromString(c);return d&&i.availableImages&&(d.available=i.availableImages.indexOf(c)>-1),d}eachChild(i){i(this.input)}outputDefined(){return!1}}class il{constructor(i){this.type=ne,this.input=i}static parse(i,c){if(i.length!==2)return c.error(`Expected 1 argument, but found ${i.length-1} instead.`);let d=c.parse(i[1],1);return d?d.type.kind!=="array"&&d.type.kind!=="string"&&d.type.kind!=="value"?c.error(`Expected argument of type string or array, but found ${z(d.type)} instead.`):new il(d):null}evaluate(i){let c=this.input.evaluate(i);if(typeof c=="string")return[...c].length;if(Array.isArray(c))return c.length;throw new $i(`Expected value to be of type string or array, but found ${z(Or(c))} instead.`)}eachChild(i){i(this.input)}outputDefined(){return!1}}let Gn=8192;function rl(A,i){let c=(180+A[0])/360,d=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+A[1]*Math.PI/360)))/360,C=Math.pow(2,i.z);return[Math.round(c*C*Gn),Math.round(d*C*Gn)]}function pa(A,i){let c=Math.pow(2,i.z);return[(C=(A[0]/Gn+i.x)/c,360*C-180),(d=(A[1]/Gn+i.y)/c,360/Math.PI*Math.atan(Math.exp((180-360*d)*Math.PI/180))-90)];var d,C}function xo(A,i){A[0]=Math.min(A[0],i[0]),A[1]=Math.min(A[1],i[1]),A[2]=Math.max(A[2],i[0]),A[3]=Math.max(A[3],i[1])}function ro(A,i){return!(A[0]<=i[0]||A[2]>=i[2]||A[1]<=i[1]||A[3]>=i[3])}function fr(A,i,c){let d=A[0]-i[0],C=A[1]-i[1],b=A[0]-c[0],v=A[1]-c[1];return d*v-b*C==0&&d*b<=0&&C*v<=0}function La(A,i,c,d){return(C=[d[0]-c[0],d[1]-c[1]])[0]*(b=[i[0]-A[0],i[1]-A[1]])[1]-C[1]*b[0]!=0&&!(!hA(A,i,c,d)||!hA(c,d,A,i));var C,b}function Jo(A,i,c){for(let d of c)for(let C=0;C(C=A)[1]!=(v=S[L+1])[1]>C[1]&&C[0]<(v[0]-b[0])*(C[1]-b[1])/(v[1]-b[1])+b[0]&&(d=!d)}var C,b,v;return d}function kc(A,i){for(let c of i)if(Cs(A,c))return!0;return!1}function Xo(A,i){for(let c of A)if(!Cs(c,i))return!1;for(let c=0;c0&&S<0||v<0&&S>0}function Yo(A,i,c){let d=[];for(let C=0;Cc[2]){let C=.5*d,b=A[0]-c[0]>C?-d:c[0]-A[0]>C?d:0;b===0&&(b=A[0]-c[2]>C?-d:c[2]-A[0]>C?d:0),A[0]+=b}xo(i,A)}function Pl(A,i,c,d){let C=Math.pow(2,d.z)*Gn,b=[d.x*Gn,d.y*Gn],v=[];for(let S of A)for(let L of S){let Q=[L.x+b[0],L.y+b[1]];Ea(Q,i,c,C),v.push(Q)}return v}function gA(A,i,c,d){let C=Math.pow(2,d.z)*Gn,b=[d.x*Gn,d.y*Gn],v=[];for(let L of A){let Q=[];for(let Z of L){let N=[Z.x+b[0],Z.y+b[1]];xo(i,N),Q.push(N)}v.push(Q)}if(i[2]-i[0]<=C/2){(S=i)[0]=S[1]=1/0,S[2]=S[3]=-1/0;for(let L of v)for(let Q of L)Ea(Q,i,c,C)}var S;return v}class so{constructor(i,c){this.type=Ve,this.geojson=i,this.geometries=c}static parse(i,c){if(i.length!==2)return c.error(`'within' expression requires exactly one argument, but found ${i.length-1} instead.`);if(es(i[1])){let d=i[1];if(d.type==="FeatureCollection"){let C=[];for(let b of d.features){let{type:v,coordinates:S}=b.geometry;v==="Polygon"&&C.push(S),v==="MultiPolygon"&&C.push(...S)}if(C.length)return new so(d,{type:"MultiPolygon",coordinates:C})}else if(d.type==="Feature"){let C=d.geometry.type;if(C==="Polygon"||C==="MultiPolygon")return new so(d,d.geometry)}else if(d.type==="Polygon"||d.type==="MultiPolygon")return new so(d,d)}return c.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(i){if(i.geometry()!=null&&i.canonicalID()!=null){if(i.geometryType()==="Point")return function(c,d){let C=[1/0,1/0,-1/0,-1/0],b=[1/0,1/0,-1/0,-1/0],v=c.canonicalID();if(d.type==="Polygon"){let S=Yo(d.coordinates,b,v),L=Pl(c.geometry(),C,b,v);if(!ro(C,b))return!1;for(let Q of L)if(!Cs(Q,S))return!1}if(d.type==="MultiPolygon"){let S=Zl(d.coordinates,b,v),L=Pl(c.geometry(),C,b,v);if(!ro(C,b))return!1;for(let Q of L)if(!kc(Q,S))return!1}return!0}(i,this.geometries);if(i.geometryType()==="LineString")return function(c,d){let C=[1/0,1/0,-1/0,-1/0],b=[1/0,1/0,-1/0,-1/0],v=c.canonicalID();if(d.type==="Polygon"){let S=Yo(d.coordinates,b,v),L=gA(c.geometry(),C,b,v);if(!ro(C,b))return!1;for(let Q of L)if(!Xo(Q,S))return!1}if(d.type==="MultiPolygon"){let S=Zl(d.coordinates,b,v),L=gA(c.geometry(),C,b,v);if(!ro(C,b))return!1;for(let Q of L)if(!no(Q,S))return!1}return!0}(i,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let nl=class{constructor(A=[],i=(c,d)=>cd?1:0){if(this.data=A,this.length=this.data.length,this.compare=i,this.length>0)for(let c=(this.length>>1)-1;c>=0;c--)this._down(c)}push(A){this.data.push(A),this._up(this.length++)}pop(){if(this.length===0)return;let A=this.data[0],i=this.data.pop();return--this.length>0&&(this.data[0]=i,this._down(0)),A}peek(){return this.data[0]}_up(A){let{data:i,compare:c}=this,d=i[A];for(;A>0;){let C=A-1>>1,b=i[C];if(c(d,b)>=0)break;i[A]=b,A=C}i[A]=d}_down(A){let{data:i,compare:c}=this,d=this.length>>1,C=i[A];for(;A=0)break;i[A]=i[b],A=b}i[A]=C}};function dA(A,i,c,d,C){pA(A,i,c,d||A.length-1,C||Hl)}function pA(A,i,c,d,C){for(;d>c;){if(d-c>600){var b=d-c+1,v=i-c+1,S=Math.log(b),L=.5*Math.exp(2*S/3),Q=.5*Math.sqrt(S*L*(b-L)/b)*(v-b/2<0?-1:1);pA(A,i,Math.max(c,Math.floor(i-v*L/b+Q)),Math.min(d,Math.floor(i+(b-v)*L/b+Q)),C)}var Z=A[i],N=c,O=d;for(jo(A,c,i),C(A[d],Z)>0&&jo(A,c,d);N0;)O--}C(A[c],Z)===0?jo(A,c,O):jo(A,++O,d),O<=i&&(c=O+1),i<=O&&(d=O-1)}}function jo(A,i,c){var d=A[i];A[i]=A[c],A[c]=d}function Hl(A,i){return Ai?1:0}function fA(A,i){if(A.length<=1)return[A];let c=[],d,C;for(let b of A){let v=Ta(b);v!==0&&(b.area=Math.abs(v),C===void 0&&(C=v<0),C===v<0?(d&&c.push(d),d=[b]):d.push(b))}if(d&&c.push(d),i>1)for(let b=0;b1?(Q=i[L+1][0],Z=i[L+1][1]):q>0&&(Q+=N/this.kx*q,Z+=O/this.ky*q)),N=this.wrap(c[0]-Q)*this.kx,O=(c[1]-Z)*this.ky;let nt=N*N+O*O;nt180;)i-=360;return i}}function $(A,i){return i[0]-A[0]}function xt(A){return A[1]-A[0]+1}function Vt(A,i){return A[1]>=A[0]&&A[1]A[1])return[null,null];let c=xt(A);if(i){if(c===2)return[A,null];let C=Math.floor(c/2);return[[A[0],A[0]+C],[A[0]+C,A[1]]]}if(c===1)return[A,null];let d=Math.floor(c/2)-1;return[[A[0],A[0]+d],[A[0]+d+1,A[1]]]}function ye(A,i){if(!Vt(i,A.length))return[1/0,1/0,-1/0,-1/0];let c=[1/0,1/0,-1/0,-1/0];for(let d=i[0];d<=i[1];++d)xo(c,A[d]);return c}function Pe(A){let i=[1/0,1/0,-1/0,-1/0];for(let c of A)for(let d of c)xo(i,d);return i}function Ai(A){return A[0]!==-1/0&&A[1]!==-1/0&&A[2]!==1/0&&A[3]!==1/0}function Ri(A,i,c){if(!Ai(A)||!Ai(i))return NaN;let d=0,C=0;return A[2]i[2]&&(d=A[0]-i[2]),A[1]>i[3]&&(C=A[1]-i[3]),A[3]=d)return d;if(ro(C,b)){if(fn(A,i))return 0}else if(fn(i,A))return 0;let v=1/0;for(let S of A)for(let L=0,Q=S.length,Z=Q-1;L0;){let L=v.pop();if(L[0]>=b)continue;let Q=L[1],Z=i?50:100;if(xt(Q)<=Z){if(!Vt(Q,A.length))return NaN;if(i){let N=Bi(A,Q,c,d);if(isNaN(N)||N===0)return N;b=Math.min(b,N)}else for(let N=Q[0];N<=Q[1];++N){let O=an(A[N],c,d);if(b=Math.min(b,O),b===0)return 0}}else{let N=ae(Q,i);Ar(v,b,d,A,S,N[0]),Ar(v,b,d,A,S,N[1])}}return b}function fa(A,i,c,d,C,b=1/0){let v=Math.min(b,C.distance(A[0],c[0]));if(v===0)return v;let S=new nl([[0,[0,A.length-1],[0,c.length-1]]],$);for(;S.length>0;){let L=S.pop();if(L[0]>=v)continue;let Q=L[1],Z=L[2],N=i?50:100,O=d?50:100;if(xt(Q)<=N&&xt(Z)<=O){if(!Vt(Q,A.length)&&Vt(Z,c.length))return NaN;let q;if(i&&d)q=mr(A,Q,c,Z,C),v=Math.min(v,q);else if(i&&!d){let nt=A.slice(Q[0],Q[1]+1);for(let lt=Z[0];lt<=Z[1];++lt)if(q=Ki(c[lt],nt,C),v=Math.min(v,q),v===0)return v}else if(!i&&d){let nt=c.slice(Z[0],Z[1]+1);for(let lt=Q[0];lt<=Q[1];++lt)if(q=Ki(A[lt],nt,C),v=Math.min(v,q),v===0)return v}else q=ji(A,Q,c,Z,C),v=Math.min(v,q)}else{let q=ae(Q,i),nt=ae(Z,d);Cn(S,v,C,A,c,q[0],nt[0]),Cn(S,v,C,A,c,q[0],nt[1]),Cn(S,v,C,A,c,q[1],nt[0]),Cn(S,v,C,A,c,q[1],nt[1])}}return v}function Ua(A){return A.type==="MultiPolygon"?A.coordinates.map(i=>({type:"Polygon",coordinates:i})):A.type==="MultiLineString"?A.coordinates.map(i=>({type:"LineString",coordinates:i})):A.type==="MultiPoint"?A.coordinates.map(i=>({type:"Point",coordinates:i})):[A]}class oo{constructor(i,c){this.type=ne,this.geojson=i,this.geometries=c}static parse(i,c){if(i.length!==2)return c.error(`'distance' expression requires exactly one argument, but found ${i.length-1} instead.`);if(es(i[1])){let d=i[1];if(d.type==="FeatureCollection")return new oo(d,d.features.map(C=>Ua(C.geometry)).flat());if(d.type==="Feature")return new oo(d,Ua(d.geometry));if("type"in d&&"coordinates"in d)return new oo(d,Ua(d))}return c.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(i){if(i.geometry()!=null&&i.canonicalID()!=null){if(i.geometryType()==="Point")return function(c,d){let C=c.geometry(),b=C.flat().map(L=>pa([L.x,L.y],c.canonical));if(C.length===0)return NaN;let v=new T(b[0][1]),S=1/0;for(let L of d){switch(L.type){case"Point":S=Math.min(S,fa(b,!1,[L.coordinates],!1,v,S));break;case"LineString":S=Math.min(S,fa(b,!1,L.coordinates,!0,v,S));break;case"Polygon":S=Math.min(S,Is(b,!1,L.coordinates,v,S))}if(S===0)return S}return S}(i,this.geometries);if(i.geometryType()==="LineString")return function(c,d){let C=c.geometry(),b=C.flat().map(L=>pa([L.x,L.y],c.canonical));if(C.length===0)return NaN;let v=new T(b[0][1]),S=1/0;for(let L of d){switch(L.type){case"Point":S=Math.min(S,fa(b,!0,[L.coordinates],!1,v,S));break;case"LineString":S=Math.min(S,fa(b,!0,L.coordinates,!0,v,S));break;case"Polygon":S=Math.min(S,Is(b,!0,L.coordinates,v,S))}if(S===0)return S}return S}(i,this.geometries);if(i.geometryType()==="Polygon")return function(c,d){let C=c.geometry();if(C.length===0||C[0].length===0)return NaN;let b=fA(C,0).map(L=>L.map(Q=>Q.map(Z=>pa([Z.x,Z.y],c.canonical)))),v=new T(b[0][0][0][1]),S=1/0;for(let L of d)for(let Q of b){switch(L.type){case"Point":S=Math.min(S,Is([L.coordinates],!1,Q,v,S));break;case"LineString":S=Math.min(S,Is(L.coordinates,!0,Q,v,S));break;case"Polygon":S=Math.min(S,qi(Q,L.coordinates,v,S))}if(S===0)return S}return S}(i,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}let ao={"==":ms,"!=":Rn,">":el,"<":wo,">=":Gl,"<=":Fc,array:wn,at:zt,boolean:wn,case:pe,coalesce:si,collator:Fa,format:Bo,image:_o,in:ee,"index-of":be,interpolate:wi,"interpolate-hcl":wi,"interpolate-lab":wi,length:il,let:St,literal:Jn,match:Ie,number:wn,"number-format":ka,object:wn,slice:$t,step:Ce,string:wn,"to-boolean":Bn,"to-color":Bn,"to-number":Bn,"to-string":Bn,var:_t,within:so,distance:oo};class Zn{constructor(i,c,d,C){this.name=i,this.type=c,this._evaluate=d,this.args=C}evaluate(i){return this._evaluate(i,this.args)}eachChild(i){this.args.forEach(i)}outputDefined(){return!1}static parse(i,c){let d=i[0],C=Zn.definitions[d];if(!C)return c.error(`Unknown expression "${d}". If you wanted a literal array, use ["literal", [...]].`,0);let b=Array.isArray(C)?C[0]:C.type,v=Array.isArray(C)?[[C[1],C[2]]]:C.overloads,S=v.filter(([Q])=>!Array.isArray(Q)||Q.length===i.length-1),L=null;for(let[Q,Z]of S){L=new At(c.registry,So,c.path,null,c.scope);let N=[],O=!1;for(let q=1;q{return O=N,Array.isArray(O)?`(${O.map(z).join(", ")})`:`(${z(O.type)}...)`;var O}).join(" | "),Z=[];for(let N=1;N{c=i?c&&So(d):c&&d instanceof Jn}),!!c&&Fo(A)&&In(A,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function Fo(A){if(A instanceof Zn&&(A.name==="get"&&A.args.length===1||A.name==="feature-state"||A.name==="has"&&A.args.length===1||A.name==="properties"||A.name==="geometry-type"||A.name==="id"||/^filter-/.test(A.name))||A instanceof so||A instanceof oo)return!1;let i=!0;return A.eachChild(c=>{i&&!Fo(c)&&(i=!1)}),i}function ko(A){if(A instanceof Zn&&A.name==="feature-state")return!1;let i=!0;return A.eachChild(c=>{i&&!ko(c)&&(i=!1)}),i}function In(A,i){if(A instanceof Zn&&i.indexOf(A.name)>=0)return!1;let c=!0;return A.eachChild(d=>{c&&!In(d,i)&&(c=!1)}),c}function yA(A){return{result:"success",value:A}}function Lo(A){return{result:"error",value:A}}function $o(A){return A["property-type"]==="data-driven"||A["property-type"]==="cross-faded-data-driven"}function Es(A){return!!A.expression&&A.expression.parameters.indexOf("zoom")>-1}function Ra(A){return!!A.expression&&A.expression.interpolated}function gr(A){return A instanceof Number?"number":A instanceof String?"string":A instanceof Boolean?"boolean":Array.isArray(A)?"array":A===null?"null":typeof A}function bA(A){return typeof A=="object"&&A!==null&&!Array.isArray(A)}function Ca(A){return A}function ys(A,i){let c=i.type==="color",d=A.stops&&typeof A.stops[0][0]=="object",C=d||!(d||A.property!==void 0),b=A.type||(Ra(i)?"exponential":"interval");if(c||i.type==="padding"){let Z=c?Fi.parse:br.parse;(A=Zi({},A)).stops&&(A.stops=A.stops.map(N=>[N[0],Z(N[1])])),A.default=Z(A.default?A.default:i.default)}if(A.colorSpace&&(v=A.colorSpace)!=="rgb"&&v!=="hcl"&&v!=="lab")throw new Error(`Unknown color space: "${A.colorSpace}"`);var v;let S,L,Q;if(b==="exponential")S=Eo;else if(b==="interval")S=bs;else if(b==="categorical"){S=ta,L=Object.create(null);for(let Z of A.stops)L[Z[0]]=Z[1];Q=typeof A.stops[0][0]}else{if(b!=="identity")throw new Error(`Unknown function type "${b}"`);S=Ga}if(d){let Z={},N=[];for(let nt=0;ntnt[0]),evaluate:({zoom:nt},lt)=>Eo({stops:O,base:A.base},i,nt).evaluate(nt,lt)}}if(C){let Z=b==="exponential"?{name:"exponential",base:A.base!==void 0?A.base:1}:null;return{kind:"camera",interpolationType:Z,interpolationFactor:wi.interpolationFactor.bind(void 0,Z),zoomStops:A.stops.map(N=>N[0]),evaluate:({zoom:N})=>S(A,i,N,L,Q)}}return{kind:"source",evaluate(Z,N){let O=N&&N.properties?N.properties[A.property]:void 0;return O===void 0?Hn(A.default,i.default):S(A,i,O,L,Q)}}}function Hn(A,i,c){return A!==void 0?A:i!==void 0?i:c!==void 0?c:void 0}function ta(A,i,c,d,C){return Hn(typeof c===C?d[c]:void 0,A.default,i.default)}function bs(A,i,c){if(gr(c)!=="number")return Hn(A.default,i.default);let d=A.stops.length;if(d===1||c<=A.stops[0][0])return A.stops[0][1];if(c>=A.stops[d-1][0])return A.stops[d-1][1];let C=fe(A.stops.map(b=>b[0]),c);return A.stops[C][1]}function Eo(A,i,c){let d=A.base!==void 0?A.base:1;if(gr(c)!=="number")return Hn(A.default,i.default);let C=A.stops.length;if(C===1||c<=A.stops[0][0])return A.stops[0][1];if(c>=A.stops[C-1][0])return A.stops[C-1][1];let b=fe(A.stops.map(Z=>Z[0]),c),v=function(Z,N,O,q){let nt=q-O,lt=Z-O;return nt===0?0:N===1?lt/nt:(Math.pow(N,lt)-1)/(Math.pow(N,nt)-1)}(c,d,A.stops[b][0],A.stops[b+1][0]),S=A.stops[b][1],L=A.stops[b+1][1],Q=ai[i.type]||Ca;return typeof S.evaluate=="function"?{evaluate(...Z){let N=S.evaluate.apply(void 0,Z),O=L.evaluate.apply(void 0,Z);if(N!==void 0&&O!==void 0)return Q(N,O,v,A.colorSpace)}}:Q(S,L,v,A.colorSpace)}function Ga(A,i,c){switch(i.type){case"color":c=Fi.parse(c);break;case"formatted":c=jr.fromString(c.toString());break;case"resolvedImage":c=pn.fromString(c.toString());break;case"padding":c=br.parse(c);break;default:gr(c)===i.type||i.type==="enum"&&i.values[c]||(c=void 0)}return Hn(c,A.default,i.default)}Zn.register(ao,{error:[{kind:"error"},[ui],(A,[i])=>{throw new $i(i.evaluate(A))}],typeof:[ui,[$e],(A,[i])=>z(Or(i.evaluate(A)))],"to-rgba":[K(ne,4),[rr],(A,[i])=>{let[c,d,C,b]=i.evaluate(A).rgb;return[255*c,255*d,255*C,b]}],rgb:[rr,[ne,ne,ne],Qa],rgba:[rr,[ne,ne,ne,ne],Qa],has:{type:Ve,overloads:[[[ui],(A,[i])=>ma(i.evaluate(A),A.properties())],[[ui,Ni],(A,[i,c])=>ma(i.evaluate(A),c.evaluate(A))]]},get:{type:$e,overloads:[[[ui],(A,[i])=>Pn(i.evaluate(A),A.properties())],[[ui,Ni],(A,[i,c])=>Pn(i.evaluate(A),c.evaluate(A))]]},"feature-state":[$e,[ui],(A,[i])=>Pn(i.evaluate(A),A.featureState||{})],properties:[Ni,[],A=>A.properties()],"geometry-type":[ui,[],A=>A.geometryType()],id:[$e,[],A=>A.id()],zoom:[ne,[],A=>A.globals.zoom],"heatmap-density":[ne,[],A=>A.globals.heatmapDensity||0],"line-progress":[ne,[],A=>A.globals.lineProgress||0],accumulated:[$e,[],A=>A.globals.accumulated===void 0?null:A.globals.accumulated],"+":[ne,Ls(ne),(A,i)=>{let c=0;for(let d of i)c+=d.evaluate(A);return c}],"*":[ne,Ls(ne),(A,i)=>{let c=1;for(let d of i)c*=d.evaluate(A);return c}],"-":{type:ne,overloads:[[[ne,ne],(A,[i,c])=>i.evaluate(A)-c.evaluate(A)],[[ne],(A,[i])=>-i.evaluate(A)]]},"/":[ne,[ne,ne],(A,[i,c])=>i.evaluate(A)/c.evaluate(A)],"%":[ne,[ne,ne],(A,[i,c])=>i.evaluate(A)%c.evaluate(A)],ln2:[ne,[],()=>Math.LN2],pi:[ne,[],()=>Math.PI],e:[ne,[],()=>Math.E],"^":[ne,[ne,ne],(A,[i,c])=>Math.pow(i.evaluate(A),c.evaluate(A))],sqrt:[ne,[ne],(A,[i])=>Math.sqrt(i.evaluate(A))],log10:[ne,[ne],(A,[i])=>Math.log(i.evaluate(A))/Math.LN10],ln:[ne,[ne],(A,[i])=>Math.log(i.evaluate(A))],log2:[ne,[ne],(A,[i])=>Math.log(i.evaluate(A))/Math.LN2],sin:[ne,[ne],(A,[i])=>Math.sin(i.evaluate(A))],cos:[ne,[ne],(A,[i])=>Math.cos(i.evaluate(A))],tan:[ne,[ne],(A,[i])=>Math.tan(i.evaluate(A))],asin:[ne,[ne],(A,[i])=>Math.asin(i.evaluate(A))],acos:[ne,[ne],(A,[i])=>Math.acos(i.evaluate(A))],atan:[ne,[ne],(A,[i])=>Math.atan(i.evaluate(A))],min:[ne,Ls(ne),(A,i)=>Math.min(...i.map(c=>c.evaluate(A)))],max:[ne,Ls(ne),(A,i)=>Math.max(...i.map(c=>c.evaluate(A)))],abs:[ne,[ne],(A,[i])=>Math.abs(i.evaluate(A))],round:[ne,[ne],(A,[i])=>{let c=i.evaluate(A);return c<0?-Math.round(-c):Math.round(c)}],floor:[ne,[ne],(A,[i])=>Math.floor(i.evaluate(A))],ceil:[ne,[ne],(A,[i])=>Math.ceil(i.evaluate(A))],"filter-==":[Ve,[ui,$e],(A,[i,c])=>A.properties()[i.value]===c.value],"filter-id-==":[Ve,[$e],(A,[i])=>A.id()===i.value],"filter-type-==":[Ve,[ui],(A,[i])=>A.geometryType()===i.value],"filter-<":[Ve,[ui,$e],(A,[i,c])=>{let d=A.properties()[i.value],C=c.value;return typeof d==typeof C&&d{let c=A.id(),d=i.value;return typeof c==typeof d&&c":[Ve,[ui,$e],(A,[i,c])=>{let d=A.properties()[i.value],C=c.value;return typeof d==typeof C&&d>C}],"filter-id->":[Ve,[$e],(A,[i])=>{let c=A.id(),d=i.value;return typeof c==typeof d&&c>d}],"filter-<=":[Ve,[ui,$e],(A,[i,c])=>{let d=A.properties()[i.value],C=c.value;return typeof d==typeof C&&d<=C}],"filter-id-<=":[Ve,[$e],(A,[i])=>{let c=A.id(),d=i.value;return typeof c==typeof d&&c<=d}],"filter->=":[Ve,[ui,$e],(A,[i,c])=>{let d=A.properties()[i.value],C=c.value;return typeof d==typeof C&&d>=C}],"filter-id->=":[Ve,[$e],(A,[i])=>{let c=A.id(),d=i.value;return typeof c==typeof d&&c>=d}],"filter-has":[Ve,[$e],(A,[i])=>i.value in A.properties()],"filter-has-id":[Ve,[],A=>A.id()!==null&&A.id()!==void 0],"filter-type-in":[Ve,[K(ui)],(A,[i])=>i.value.indexOf(A.geometryType())>=0],"filter-id-in":[Ve,[K($e)],(A,[i])=>i.value.indexOf(A.id())>=0],"filter-in-small":[Ve,[ui,K($e)],(A,[i,c])=>c.value.indexOf(A.properties()[i.value])>=0],"filter-in-large":[Ve,[ui,K($e)],(A,[i,c])=>function(d,C,b,v){for(;b<=v;){let S=b+v>>1;if(C[S]===d)return!0;C[S]>d?v=S-1:b=S+1}return!1}(A.properties()[i.value],c.value,0,c.value.length-1)],all:{type:Ve,overloads:[[[Ve,Ve],(A,[i,c])=>i.evaluate(A)&&c.evaluate(A)],[Ls(Ve),(A,i)=>{for(let c of i)if(!c.evaluate(A))return!1;return!0}]]},any:{type:Ve,overloads:[[[Ve,Ve],(A,[i,c])=>i.evaluate(A)||c.evaluate(A)],[Ls(Ve),(A,i)=>{for(let c of i)if(c.evaluate(A))return!0;return!1}]]},"!":[Ve,[Ve],(A,[i])=>!i.evaluate(A)],"is-supported-script":[Ve,[ui],(A,[i])=>{let c=A.globals&&A.globals.isSupportedScript;return!c||c(i.evaluate(A))}],upcase:[ui,[ui],(A,[i])=>i.evaluate(A).toUpperCase()],downcase:[ui,[ui],(A,[i])=>i.evaluate(A).toLowerCase()],concat:[ui,Ls($e),(A,i)=>i.map(c=>is(c.evaluate(A))).join("")],"resolved-locale":[ui,[wr],(A,[i])=>i.evaluate(A).resolvedLocale()]});class rs{constructor(i,c){var d;this.expression=i,this._warningHistory={},this._evaluator=new pt,this._defaultValue=c?(d=c).type==="color"&&bA(d.default)?new Fi(0,0,0,0):d.type==="color"?Fi.parse(d.default)||null:d.type==="padding"?br.parse(d.default)||null:d.type==="variableAnchorOffsetCollection"?dn.parse(d.default)||null:d.default===void 0?null:d.default:null,this._enumValues=c&&c.type==="enum"?c.values:null}evaluateWithoutErrorHandling(i,c,d,C,b,v){return this._evaluator.globals=i,this._evaluator.feature=c,this._evaluator.featureState=d,this._evaluator.canonical=C,this._evaluator.availableImages=b||null,this._evaluator.formattedSection=v,this.expression.evaluate(this._evaluator)}evaluate(i,c,d,C,b,v){this._evaluator.globals=i,this._evaluator.feature=c||null,this._evaluator.featureState=d||null,this._evaluator.canonical=C,this._evaluator.availableImages=b||null,this._evaluator.formattedSection=v||null;try{let S=this.expression.evaluate(this._evaluator);if(S==null||typeof S=="number"&&S!=S)return this._defaultValue;if(this._enumValues&&!(S in this._enumValues))throw new $i(`Expected value to be one of ${Object.keys(this._enumValues).map(L=>JSON.stringify(L)).join(", ")}, but found ${JSON.stringify(S)} instead.`);return S}catch(S){return this._warningHistory[S.message]||(this._warningHistory[S.message]=!0,typeof console<"u"&&console.warn(S.message)),this._defaultValue}}}function ea(A){return Array.isArray(A)&&A.length>0&&typeof A[0]=="string"&&A[0]in ao}function To(A,i){let c=new At(ao,So,[],i?function(C){let b={color:rr,string:ui,number:ne,enum:ui,boolean:Ve,formatted:zi,padding:_r,resolvedImage:nr,variableAnchorOffsetCollection:It};return C.type==="array"?K(b[C.value]||$e,C.length):b[C.type]}(i):void 0),d=c.parse(A,void 0,void 0,void 0,i&&i.type==="string"?{typeAnnotation:"coerce"}:void 0);return d?yA(new rs(d,i)):Lo(c.errors)}class vs{constructor(i,c){this.kind=i,this._styleExpression=c,this.isStateDependent=i!=="constant"&&!ko(c.expression)}evaluateWithoutErrorHandling(i,c,d,C,b,v){return this._styleExpression.evaluateWithoutErrorHandling(i,c,d,C,b,v)}evaluate(i,c,d,C,b,v){return this._styleExpression.evaluate(i,c,d,C,b,v)}}class Mn{constructor(i,c,d,C){this.kind=i,this.zoomStops=d,this._styleExpression=c,this.isStateDependent=i!=="camera"&&!ko(c.expression),this.interpolationType=C}evaluateWithoutErrorHandling(i,c,d,C,b,v){return this._styleExpression.evaluateWithoutErrorHandling(i,c,d,C,b,v)}evaluate(i,c,d,C,b,v){return this._styleExpression.evaluate(i,c,d,C,b,v)}interpolationFactor(i,c,d){return this.interpolationType?wi.interpolationFactor(this.interpolationType,i,c,d):0}}function Ao(A,i){let c=To(A,i);if(c.result==="error")return c;let d=c.value.expression,C=Fo(d);if(!C&&!$o(i))return Lo([new Hi("","data expressions not supported")]);let b=In(d,["zoom"]);if(!b&&!Es(i))return Lo([new Hi("","zoom expressions not supported")]);let v=Uo(d);return v||b?v instanceof Hi?Lo([v]):v instanceof wi&&!Ra(i)?Lo([new Hi("",'"interpolate" expressions cannot be used with this property')]):yA(v?new Mn(C?"camera":"composite",c.value,v.labels,v instanceof wi?v.interpolation:void 0):new vs(C?"constant":"source",c.value)):Lo([new Hi("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Ts{constructor(i,c){this._parameters=i,this._specification=c,Zi(this,ys(this._parameters,this._specification))}static deserialize(i){return new Ts(i._parameters,i._specification)}static serialize(i){return{_parameters:i._parameters,_specification:i._specification}}}function Uo(A){let i=null;if(A instanceof St)i=Uo(A.result);else if(A instanceof si){for(let c of A.args)if(i=Uo(c),i)break}else(A instanceof Ce||A instanceof wi)&&A.input instanceof Zn&&A.input.name==="zoom"&&(i=A);return i instanceof Hi||A.eachChild(c=>{let d=Uo(c);d instanceof Hi?i=d:!i&&d?i=new Hi("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):i&&d&&i!==d&&(i=new Hi("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),i}function Qo(A){if(A===!0||A===!1)return!0;if(!Array.isArray(A)||A.length===0)return!1;switch(A[0]){case"has":return A.length>=2&&A[1]!=="$id"&&A[1]!=="$type";case"in":return A.length>=3&&(typeof A[1]!="string"||Array.isArray(A[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return A.length!==3||Array.isArray(A[1])||Array.isArray(A[2]);case"any":case"all":for(let i of A.slice(1))if(!Qo(i)&&typeof i!="boolean")return!1;return!0;default:return!0}}let lo={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Za(A){if(A==null)return{filter:()=>!0,needGeometry:!1};Qo(A)||(A=xr(A));let i=To(A,lo);if(i.result==="error")throw new Error(i.value.map(c=>`${c.key}: ${c.message}`).join(", "));return{filter:(c,d,C)=>i.value.evaluate(c,d,{},C),needGeometry:Ro(A)}}function Us(A,i){return Ai?1:0}function Ro(A){if(!Array.isArray(A))return!1;if(A[0]==="within"||A[0]==="distance")return!0;for(let i=1;i"||i==="<="||i===">="?kr(A[1],A[2],i):i==="any"?(c=A.slice(1),["any"].concat(c.map(xr))):i==="all"?["all"].concat(A.slice(1).map(xr)):i==="none"?["all"].concat(A.slice(1).map(xr).map(zr)):i==="in"?Vr(A[1],A.slice(2)):i==="!in"?zr(Vr(A[1],A.slice(2))):i==="has"?qr(A[1]):i!=="!has"||zr(qr(A[1]));var c}function kr(A,i,c){switch(A){case"$type":return[`filter-type-${c}`,i];case"$id":return[`filter-id-${c}`,i];default:return[`filter-${c}`,A,i]}}function Vr(A,i){if(i.length===0)return!1;switch(A){case"$type":return["filter-type-in",["literal",i]];case"$id":return["filter-id-in",["literal",i]];default:return i.length>200&&!i.some(c=>typeof c!=typeof i[0])?["filter-in-large",A,["literal",i.sort(Us)]]:["filter-in-small",A,["literal",i]]}}function qr(A){switch(A){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",A]}}function zr(A){return["!",A]}function ns(A){let i=typeof A;if(i==="number"||i==="boolean"||i==="string"||A==null)return JSON.stringify(A);if(Array.isArray(A)){let C="[";for(let b of A)C+=`${ns(b)},`;return`${C}]`}let c=Object.keys(A).sort(),d="{";for(let C=0;Cd.maximum?[new he(i,c,`${c} is greater than the maximum value ${d.maximum}`)]:[]}function ol(A){let i=A.valueSpec,c=$r(A.value.type),d,C,b,v={},S=c!=="categorical"&&A.value.property===void 0,L=!S,Q=gr(A.value.stops)==="array"&&gr(A.value.stops[0])==="array"&&gr(A.value.stops[0][0])==="object",Z=ss({key:A.key,value:A.value,valueSpec:A.styleSpec.function,validateSpec:A.validateSpec,style:A.style,styleSpec:A.styleSpec,objectElementValidators:{stops:function(q){if(c==="identity")return[new he(q.key,q.value,'identity function may not have a "stops" property')];let nt=[],lt=q.value;return nt=nt.concat(vA({key:q.key,value:lt,valueSpec:q.valueSpec,validateSpec:q.validateSpec,style:q.style,styleSpec:q.styleSpec,arrayElementValidator:N})),gr(lt)==="array"&<.length===0&&nt.push(new he(q.key,lt,"array must have at least one stop")),nt},default:function(q){return q.validateSpec({key:q.key,value:q.value,valueSpec:i,validateSpec:q.validateSpec,style:q.style,styleSpec:q.styleSpec})}}});return c==="identity"&&S&&Z.push(new he(A.key,A.value,'missing required property "property"')),c==="identity"||A.value.stops||Z.push(new he(A.key,A.value,'missing required property "stops"')),c==="exponential"&&A.valueSpec.expression&&!Ra(A.valueSpec)&&Z.push(new he(A.key,A.value,"exponential functions not supported")),A.styleSpec.$version>=8&&(L&&!$o(A.valueSpec)?Z.push(new he(A.key,A.value,"property functions not supported")):S&&!Es(A.valueSpec)&&Z.push(new he(A.key,A.value,"zoom functions not supported"))),c!=="categorical"&&!Q||A.value.property!==void 0||Z.push(new he(A.key,A.value,'"property" property is required')),Z;function N(q){let nt=[],lt=q.value,Bt=q.key;if(gr(lt)!=="array")return[new he(Bt,lt,`array expected, ${gr(lt)} found`)];if(lt.length!==2)return[new he(Bt,lt,`array length 2 expected, length ${lt.length} found`)];if(Q){if(gr(lt[0])!=="object")return[new he(Bt,lt,`object expected, ${gr(lt[0])} found`)];if(lt[0].zoom===void 0)return[new he(Bt,lt,"object stop key must have zoom")];if(lt[0].value===void 0)return[new he(Bt,lt,"object stop key must have value")];if(b&&b>$r(lt[0].zoom))return[new he(Bt,lt[0].zoom,"stop zoom values must appear in ascending order")];$r(lt[0].zoom)!==b&&(b=$r(lt[0].zoom),C=void 0,v={}),nt=nt.concat(ss({key:`${Bt}[0]`,value:lt[0],valueSpec:{zoom:{}},validateSpec:q.validateSpec,style:q.style,styleSpec:q.styleSpec,objectElementValidators:{zoom:Ml,value:O}}))}else nt=nt.concat(O({key:`${Bt}[0]`,value:lt[0],valueSpec:{},validateSpec:q.validateSpec,style:q.style,styleSpec:q.styleSpec},lt));return ea(Qs(lt[1]))?nt.concat([new he(`${Bt}[1]`,lt[1],"expressions are not allowed in function stops.")]):nt.concat(q.validateSpec({key:`${Bt}[1]`,value:lt[1],valueSpec:i,validateSpec:q.validateSpec,style:q.style,styleSpec:q.styleSpec}))}function O(q,nt){let lt=gr(q.value),Bt=$r(q.value),Gt=q.value!==null?q.value:nt;if(d){if(lt!==d)return[new he(q.key,Gt,`${lt} stop domain type must match previous stop domain type ${d}`)]}else d=lt;if(lt!=="number"&<!=="string"&<!=="boolean")return[new he(q.key,Gt,"stop domain value must be a number, string, or boolean")];if(lt!=="number"&&c!=="categorical"){let re=`number expected, ${lt} found`;return $o(i)&&c===void 0&&(re+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new he(q.key,Gt,re)]}return c!=="categorical"||lt!=="number"||isFinite(Bt)&&Math.floor(Bt)===Bt?c!=="categorical"&<==="number"&&C!==void 0&&Btnew he(`${A.key}${d.key}`,A.value,d.message));let c=i.value.expression||i.value._styleExpression.expression;if(A.expressionContext==="property"&&A.propertyKey==="text-font"&&!c.outputDefined())return[new he(A.key,A.value,`Invalid data expression for "${A.propertyKey}". Output values must be contained as literals within the expression.`)];if(A.expressionContext==="property"&&A.propertyType==="layout"&&!ko(c))return[new he(A.key,A.value,'"feature-state" data expressions are not supported with layout properties.')];if(A.expressionContext==="filter"&&!ko(c))return[new he(A.key,A.value,'"feature-state" data expressions are not supported with filters.')];if(A.expressionContext&&A.expressionContext.indexOf("cluster")===0){if(!In(c,["zoom","feature-state"]))return[new he(A.key,A.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(A.expressionContext==="cluster-initial"&&!Fo(c))return[new he(A.key,A.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function Rs(A){let i=A.key,c=A.value,d=A.valueSpec,C=[];return Array.isArray(d.values)?d.values.indexOf($r(c))===-1&&C.push(new he(i,c,`expected one of [${d.values.join(", ")}], ${JSON.stringify(c)} found`)):Object.keys(d.values).indexOf($r(c))===-1&&C.push(new he(i,c,`expected one of [${Object.keys(d.values).join(", ")}], ${JSON.stringify(c)} found`)),C}function Xn(A){return Qo(Qs(A.value))?Ia(Zi({},A,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Yn(A)}function Yn(A){let i=A.value,c=A.key;if(gr(i)!=="array")return[new he(c,i,`array expected, ${gr(i)} found`)];let d=A.styleSpec,C,b=[];if(i.length<1)return[new he(c,i,"filter array must have at least 1 element")];switch(b=b.concat(Rs({key:`${c}[0]`,value:i[0],valueSpec:d.filter_operator,style:A.style,styleSpec:A.styleSpec})),$r(i[0])){case"<":case"<=":case">":case">=":i.length>=2&&$r(i[1])==="$type"&&b.push(new he(c,i,`"$type" cannot be use with operator "${i[0]}"`));case"==":case"!=":i.length!==3&&b.push(new he(c,i,`filter array for operator "${i[0]}" must have 3 elements`));case"in":case"!in":i.length>=2&&(C=gr(i[1]),C!=="string"&&b.push(new he(`${c}[1]`,i[1],`string expected, ${C} found`)));for(let v=2;v{Q in c&&i.push(new he(d,c[Q],`"${Q}" is prohibited for ref layers`))}),C.layers.forEach(Q=>{$r(Q.id)===S&&(L=Q)}),L?L.ref?i.push(new he(d,c.ref,"ref cannot reference another ref layer")):v=$r(L.type):i.push(new he(d,c.ref,`ref layer "${S}" not found`))}else if(v!=="background")if(c.source){let L=C.sources&&C.sources[c.source],Q=L&&$r(L.type);L?Q==="vector"&&v==="raster"?i.push(new he(d,c.source,`layer "${c.id}" requires a raster source`)):Q!=="raster-dem"&&v==="hillshade"?i.push(new he(d,c.source,`layer "${c.id}" requires a raster-dem source`)):Q==="raster"&&v!=="raster"?i.push(new he(d,c.source,`layer "${c.id}" requires a vector source`)):Q!=="vector"||c["source-layer"]?Q==="raster-dem"&&v!=="hillshade"?i.push(new he(d,c.source,"raster-dem source can only be used with layer type 'hillshade'.")):v!=="line"||!c.paint||!c.paint["line-gradient"]||Q==="geojson"&&L.lineMetrics||i.push(new he(d,c,`layer "${c.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):i.push(new he(d,c,`layer "${c.id}" must specify a "source-layer"`)):i.push(new he(d,c.source,`source "${c.source}" not found`))}else i.push(new he(d,c,'missing required property "source"'));return i=i.concat(ss({key:d,value:c,valueSpec:b.layer,style:A.style,styleSpec:A.styleSpec,validateSpec:A.validateSpec,objectElementValidators:{"*":()=>[],type:()=>A.validateSpec({key:`${d}.type`,value:c.type,valueSpec:b.layer.type,style:A.style,styleSpec:A.styleSpec,validateSpec:A.validateSpec,object:c,objectKey:"type"}),filter:Xn,layout:L=>ss({layer:c,key:L.key,value:L.value,style:L.style,styleSpec:L.styleSpec,validateSpec:L.validateSpec,objectElementValidators:{"*":Q=>Nl(Zi({layerType:v},Q))}}),paint:L=>ss({layer:c,key:L.key,value:L.value,style:L.style,styleSpec:L.styleSpec,validateSpec:L.validateSpec,objectElementValidators:{"*":Q=>Ha(Zi({layerType:v},Q))}})}})),i}function Go(A){let i=A.value,c=A.key,d=gr(i);return d!=="string"?[new he(c,i,`string expected, ${d} found`)]:[]}let _A={promoteId:function({key:A,value:i}){if(gr(i)==="string")return Go({key:A,value:i});{let c=[];for(let d in i)c.push(...Go({key:`${A}.${d}`,value:i[d]}));return c}}};function xA(A){let i=A.value,c=A.key,d=A.styleSpec,C=A.style,b=A.validateSpec;if(!i.type)return[new he(c,i,'"type" is required')];let v=$r(i.type),S;switch(v){case"vector":case"raster":return S=ss({key:c,value:i,valueSpec:d[`source_${v.replace("-","_")}`],style:A.style,styleSpec:d,objectElementValidators:_A,validateSpec:b}),S;case"raster-dem":return S=function(L){var Q;let Z=(Q=L.sourceName)!==null&&Q!==void 0?Q:"",N=L.value,O=L.styleSpec,q=O.source_raster_dem,nt=L.style,lt=[],Bt=gr(N);if(N===void 0)return lt;if(Bt!=="object")return lt.push(new he("source_raster_dem",N,`object expected, ${Bt} found`)),lt;let Gt=$r(N.encoding)==="custom",re=["redFactor","greenFactor","blueFactor","baseShift"],Kt=L.value.encoding?`"${L.value.encoding}"`:"Default";for(let Yt in N)!Gt&&re.includes(Yt)?lt.push(new he(Yt,N[Yt],`In "${Z}": "${Yt}" is only valid when "encoding" is set to "custom". ${Kt} encoding found`)):q[Yt]?lt=lt.concat(L.validateSpec({key:Yt,value:N[Yt],valueSpec:q[Yt],validateSpec:L.validateSpec,style:nt,styleSpec:O})):lt.push(new he(Yt,N[Yt],`unknown property "${Yt}"`));return lt}({sourceName:c,value:i,style:A.style,styleSpec:d,validateSpec:b}),S;case"geojson":if(S=ss({key:c,value:i,valueSpec:d.source_geojson,style:C,styleSpec:d,validateSpec:b,objectElementValidators:_A}),i.cluster)for(let L in i.clusterProperties){let[Q,Z]=i.clusterProperties[L],N=typeof Q=="string"?[Q,["accumulated"],["get",L]]:Q;S.push(...Ia({key:`${c}.${L}.map`,value:Z,validateSpec:b,expressionContext:"cluster-map"})),S.push(...Ia({key:`${c}.${L}.reduce`,value:N,validateSpec:b,expressionContext:"cluster-reduce"}))}return S;case"video":return ss({key:c,value:i,valueSpec:d.source_video,style:C,validateSpec:b,styleSpec:d});case"image":return ss({key:c,value:i,valueSpec:d.source_image,style:C,validateSpec:b,styleSpec:d});case"canvas":return[new he(c,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return Rs({key:`${c}.type`,value:i.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:C,validateSpec:b,styleSpec:d})}}function al(A){let i=A.value,c=A.styleSpec,d=c.light,C=A.style,b=[],v=gr(i);if(i===void 0)return b;if(v!=="object")return b=b.concat([new he("light",i,`object expected, ${v} found`)]),b;for(let S in i){let L=S.match(/^(.*)-transition$/);b=b.concat(L&&d[L[1]]&&d[L[1]].transition?A.validateSpec({key:S,value:i[S],valueSpec:c.transition,validateSpec:A.validateSpec,style:C,styleSpec:c}):d[S]?A.validateSpec({key:S,value:i[S],valueSpec:d[S],validateSpec:A.validateSpec,style:C,styleSpec:c}):[new he(S,i[S],`unknown property "${S}"`)])}return b}function Al(A){let i=A.value,c=A.styleSpec,d=c.sky,C=A.style,b=gr(i);if(i===void 0)return[];if(b!=="object")return[new he("sky",i,`object expected, ${b} found`)];let v=[];for(let S in i)v=v.concat(d[S]?A.validateSpec({key:S,value:i[S],valueSpec:d[S],style:C,styleSpec:c}):[new he(S,i[S],`unknown property "${S}"`)]);return v}function SA(A){let i=A.value,c=A.styleSpec,d=c.terrain,C=A.style,b=[],v=gr(i);if(i===void 0)return b;if(v!=="object")return b=b.concat([new he("terrain",i,`object expected, ${v} found`)]),b;for(let S in i)b=b.concat(d[S]?A.validateSpec({key:S,value:i[S],valueSpec:d[S],validateSpec:A.validateSpec,style:C,styleSpec:c}):[new he(S,i[S],`unknown property "${S}"`)]);return b}function ll(A){let i=[],c=A.value,d=A.key;if(Array.isArray(c)){let C=[],b=[];for(let v in c)c[v].id&&C.includes(c[v].id)&&i.push(new he(d,c,`all the sprites' ids must be unique, but ${c[v].id} is duplicated`)),C.push(c[v].id),c[v].url&&b.includes(c[v].url)&&i.push(new he(d,c,`all the sprites' URLs must be unique, but ${c[v].url} is duplicated`)),b.push(c[v].url),i=i.concat(ss({key:`${d}[${v}]`,value:c[v],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:A.validateSpec}));return i}return Go({key:d,value:c})}let Vl={"*":()=>[],array:vA,boolean:function(A){let i=A.value,c=A.key,d=gr(i);return d!=="boolean"?[new he(c,i,`boolean expected, ${d} found`)]:[]},number:Ml,color:function(A){let i=A.key,c=A.value,d=gr(c);return d!=="string"?[new he(i,c,`color expected, ${d} found`)]:Fi.parse(String(c))?[]:[new he(i,c,`color expected, "${c}" found`)]},constants:sl,enum:Rs,filter:Xn,function:ol,layer:BA,object:ss,source:xA,light:al,sky:Al,terrain:SA,projection:function(A){let i=A.value,c=A.styleSpec,d=c.projection,C=A.style,b=gr(i);if(i===void 0)return[];if(b!=="object")return[new he("projection",i,`object expected, ${b} found`)];let v=[];for(let S in i)v=v.concat(d[S]?A.validateSpec({key:S,value:i[S],valueSpec:d[S],style:C,styleSpec:c}):[new he(S,i[S],`unknown property "${S}"`)]);return v},string:Go,formatted:function(A){return Go(A).length===0?[]:Ia(A)},resolvedImage:function(A){return Go(A).length===0?[]:Ia(A)},padding:function(A){let i=A.key,c=A.value;if(gr(c)==="array"){if(c.length<1||c.length>4)return[new he(i,c,`padding requires 1 to 4 values; ${c.length} values found`)];let d={type:"number"},C=[];for(let b=0;b[]}})),A.constants&&(c=c.concat(sl({key:"constants",value:A.constants,style:A,styleSpec:i,validateSpec:FA}))),Ec(c)}function Zo(A){return function(i){return A({...i,validateSpec:FA})}}function Ec(A){return[].concat(A).sort((i,c)=>i.line-c.line)}function co(A){return function(...i){return Ec(A.apply(this,i))}}Gs.source=co(Zo(xA)),Gs.sprite=co(Zo(ll)),Gs.glyphs=co(Zo(Lc)),Gs.light=co(Zo(al)),Gs.sky=co(Zo(Al)),Gs.terrain=co(Zo(SA)),Gs.layer=co(Zo(BA)),Gs.filter=co(Zo(Xn)),Gs.paintProperty=co(Zo(Ha)),Gs.layoutProperty=co(Zo(Nl));let Ma=Gs,Tc=Ma.light,Uc=Ma.sky,kA=Ma.paintProperty,Cu=Ma.layoutProperty;function Qc(A,i){let c=!1;if(i&&i.length)for(let d of i)A.fire(new We(new Error(d.message))),c=!0;return c}class Na{constructor(i,c,d){let C=this.cells=[];if(i instanceof ArrayBuffer){this.arrayBuffer=i;let v=new Int32Array(this.arrayBuffer);i=v[0],this.d=(c=v[1])+2*(d=v[2]);for(let L=0;L=N[nt+0]&&C>=N[nt+1])?(S[q]=!0,v.push(Z[q])):S[q]=!1}}}}_forEachCell(i,c,d,C,b,v,S,L){let Q=this._convertToCellCoord(i),Z=this._convertToCellCoord(c),N=this._convertToCellCoord(d),O=this._convertToCellCoord(C);for(let q=Q;q<=N;q++)for(let nt=Z;nt<=O;nt++){let lt=this.d*nt+q;if((!L||L(this._convertFromCellCoord(q),this._convertFromCellCoord(nt),this._convertFromCellCoord(q+1),this._convertFromCellCoord(nt+1)))&&b.call(this,i,c,d,C,lt,v,S,L))return}}_convertFromCellCoord(i){return(i-this.padding)/this.scale}_convertToCellCoord(i){return Math.max(0,Math.min(this.d-1,Math.floor(i*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let i=this.cells,c=3+this.cells.length+1+1,d=0;for(let v=0;v=0)continue;let v=A[b];C[b]=Zs[c].shallow.indexOf(b)>=0?v:Nn(v,i)}A instanceof Error&&(C.message=A.message)}if(C.$name)throw new Error("$name property is reserved for worker serialization logic.");return c!=="Object"&&(C.$name=c),C}function os(A){if(ia(A))return A;if(Array.isArray(A))return A.map(os);if(typeof A!="object")throw new Error("can't deserialize object of type "+typeof A);let i=Rc(A)||"Object";if(!Zs[i])throw new Error(`can't deserialize unregistered class ${i}`);let{klass:c}=Zs[i];if(!c)throw new Error(`can't deserialize unregistered class ${i}`);if(c.deserialize)return c.deserialize(A);let d=Object.create(c.prototype);for(let C of Object.keys(A)){if(C==="$name")continue;let b=A[C];d[C]=Zs[i].shallow.indexOf(C)>=0?b:os(b)}return d}class Gc{constructor(){this.first=!0}update(i,c){let d=Math.floor(i);return this.first?(this.first=!1,this.lastIntegerZoom=d,this.lastIntegerZoomTime=0,this.lastZoom=i,this.lastFloorZoom=d,!0):(this.lastFloorZoom>d?(this.lastIntegerZoom=d+1,this.lastIntegerZoomTime=c):this.lastFloorZoomA>=128&&A<=255,"Hangul Jamo":A=>A>=4352&&A<=4607,Khmer:A=>A>=6016&&A<=6143,"General Punctuation":A=>A>=8192&&A<=8303,"Letterlike Symbols":A=>A>=8448&&A<=8527,"Number Forms":A=>A>=8528&&A<=8591,"Miscellaneous Technical":A=>A>=8960&&A<=9215,"Control Pictures":A=>A>=9216&&A<=9279,"Optical Character Recognition":A=>A>=9280&&A<=9311,"Enclosed Alphanumerics":A=>A>=9312&&A<=9471,"Geometric Shapes":A=>A>=9632&&A<=9727,"Miscellaneous Symbols":A=>A>=9728&&A<=9983,"Miscellaneous Symbols and Arrows":A=>A>=11008&&A<=11263,"Ideographic Description Characters":A=>A>=12272&&A<=12287,"CJK Symbols and Punctuation":A=>A>=12288&&A<=12351,Katakana:A=>A>=12448&&A<=12543,Kanbun:A=>A>=12688&&A<=12703,"CJK Strokes":A=>A>=12736&&A<=12783,"Enclosed CJK Letters and Months":A=>A>=12800&&A<=13055,"CJK Compatibility":A=>A>=13056&&A<=13311,"Yijing Hexagram Symbols":A=>A>=19904&&A<=19967,"Private Use Area":A=>A>=57344&&A<=63743,"Vertical Forms":A=>A>=65040&&A<=65055,"CJK Compatibility Forms":A=>A>=65072&&A<=65103,"Small Form Variants":A=>A>=65104&&A<=65135,"Halfwidth and Fullwidth Forms":A=>A>=65280&&A<=65519};function Po(A){for(let i of A)if(Kl(i.charCodeAt(0)))return!0;return!1}function Ps(A){for(let i of A)if(!Va(i.charCodeAt(0)))return!1;return!0}function Zc(A){let i=A.map(c=>{try{return new RegExp(`\\p{sc=${c}}`,"u").source}catch{return null}}).filter(c=>c);return new RegExp(i.join("|"),"u")}let kh=Zc(["Arab","Dupl","Mong","Ougr","Syrc"]);function Va(A){return!kh.test(String.fromCodePoint(A))}let Pc=Zc(["Bopo","Hani","Hira","Kana","Kits","Nshu","Tang","Yiii"]);function Kl(A){return!(A!==746&&A!==747&&(A<4352||!(lr["CJK Compatibility Forms"](A)&&!(A>=65097&&A<=65103)||lr["CJK Compatibility"](A)||lr["CJK Strokes"](A)||!(!lr["CJK Symbols and Punctuation"](A)||A>=12296&&A<=12305||A>=12308&&A<=12319||A===12336)||lr["Enclosed CJK Letters and Months"](A)||lr["Ideographic Description Characters"](A)||lr.Kanbun(A)||lr.Katakana(A)&&A!==12540||!(!lr["Halfwidth and Fullwidth Forms"](A)||A===65288||A===65289||A===65293||A>=65306&&A<=65310||A===65339||A===65341||A===65343||A>=65371&&A<=65503||A===65507||A>=65512&&A<=65519)||!(!lr["Small Form Variants"](A)||A>=65112&&A<=65118||A>=65123&&A<=65126)||lr["Vertical Forms"](A)||lr["Yijing Hexagram Symbols"](A)||/\p{sc=Cans}/u.test(String.fromCodePoint(A))||/\p{sc=Hang}/u.test(String.fromCodePoint(A))||Pc.test(String.fromCodePoint(A)))))}function Hc(A){return!(Kl(A)||function(i){return!!(lr["Latin-1 Supplement"](i)&&(i===167||i===169||i===174||i===177||i===188||i===189||i===190||i===215||i===247)||lr["General Punctuation"](i)&&(i===8214||i===8224||i===8225||i===8240||i===8241||i===8251||i===8252||i===8258||i===8263||i===8264||i===8265||i===8273)||lr["Letterlike Symbols"](i)||lr["Number Forms"](i)||lr["Miscellaneous Technical"](i)&&(i>=8960&&i<=8967||i>=8972&&i<=8991||i>=8996&&i<=9e3||i===9003||i>=9085&&i<=9114||i>=9150&&i<=9165||i===9167||i>=9169&&i<=9179||i>=9186&&i<=9215)||lr["Control Pictures"](i)&&i!==9251||lr["Optical Character Recognition"](i)||lr["Enclosed Alphanumerics"](i)||lr["Geometric Shapes"](i)||lr["Miscellaneous Symbols"](i)&&!(i>=9754&&i<=9759)||lr["Miscellaneous Symbols and Arrows"](i)&&(i>=11026&&i<=11055||i>=11088&&i<=11097||i>=11192&&i<=11243)||lr["CJK Symbols and Punctuation"](i)||lr.Katakana(i)||lr["Private Use Area"](i)||lr["CJK Compatibility Forms"](i)||lr["Small Form Variants"](i)||lr["Halfwidth and Fullwidth Forms"](i)||i===8734||i===8756||i===8757||i>=9984&&i<=10087||i>=10102&&i<=10131||i===65532||i===65533)}(A))}let Lh=Zc(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function LA(A){return Lh.test(String.fromCodePoint(A))}function Ol(A,i){return!(!i&&LA(A)||A>=2304&&A<=3583||A>=3840&&A<=4255||lr.Khmer(A))}function cl(A){for(let i of A)if(LA(i.charCodeAt(0)))return!0;return!1}let jn=new class{constructor(){this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null}setState(A){this.pluginStatus=A.pluginStatus,this.pluginURL=A.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(A){this.applyArabicShaping=A.applyArabicShaping,this.processBidirectionalText=A.processBidirectionalText,this.processStyledBidirectionalText=A.processStyledBidirectionalText}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getPluginURL(){return this.pluginURL}getRTLTextPluginStatus(){return this.pluginStatus}};class Qr{constructor(i,c){this.zoom=i,c?(this.now=c.now,this.fadeDuration=c.fadeDuration,this.zoomHistory=c.zoomHistory,this.transition=c.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Gc,this.transition={})}isSupportedScript(i){return function(c,d){for(let C of c)if(!Ol(C.charCodeAt(0),d))return!1;return!0}(i,jn.getRTLTextPluginStatus()==="loaded")}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let i=this.zoom,c=i-Math.floor(i),d=this.crossFadingFactor();return i>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:c+(1-c)*d}:{fromScale:.5,toScale:1,t:1-(1-d)*c}}}class EA{constructor(i,c){this.property=i,this.value=c,this.expression=function(d,C){if(bA(d))return new Ts(d,C);if(ea(d)){let b=Ao(d,C);if(b.result==="error")throw new Error(b.value.map(v=>`${v.key}: ${v.message}`).join(", "));return b.value}{let b=d;return C.type==="color"&&typeof d=="string"?b=Fi.parse(d):C.type!=="padding"||typeof d!="number"&&!Array.isArray(d)?C.type==="variableAnchorOffsetCollection"&&Array.isArray(d)&&(b=dn.parse(d)):b=br.parse(d),{kind:"constant",evaluate:()=>b}}}(c===void 0?i.specification.default:c,i.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(i,c,d){return this.property.possiblyEvaluate(this,i,c,d)}}class ul{constructor(i){this.property=i,this.value=new EA(i,void 0)}transitioned(i,c){return new Iu(this.property,this.value,c,kt({},i.transition,this.transition),i.now)}untransitioned(){return new Iu(this.property,this.value,null,{},0)}}class zl{constructor(i){this._properties=i,this._values=Object.create(i.defaultTransitionablePropertyValues)}getValue(i){return Mt(this._values[i].value.value)}setValue(i,c){Object.prototype.hasOwnProperty.call(this._values,i)||(this._values[i]=new ul(this._values[i].property)),this._values[i].value=new EA(this._values[i].property,c===null?void 0:Mt(c))}getTransition(i){return Mt(this._values[i].transition)}setTransition(i,c){Object.prototype.hasOwnProperty.call(this._values,i)||(this._values[i]=new ul(this._values[i].property)),this._values[i].transition=Mt(c)||void 0}serialize(){let i={};for(let c of Object.keys(this._values)){let d=this.getValue(c);d!==void 0&&(i[c]=d);let C=this.getTransition(c);C!==void 0&&(i[`${c}-transition`]=C)}return i}transitioned(i,c){let d=new hl(this._properties);for(let C of Object.keys(this._values))d._values[C]=this._values[C].transitioned(i,c._values[C]);return d}untransitioned(){let i=new hl(this._properties);for(let c of Object.keys(this._values))i._values[c]=this._values[c].untransitioned();return i}}class Iu{constructor(i,c,d,C,b){this.property=i,this.value=c,this.begin=b+C.delay||0,this.end=this.begin+C.duration||0,i.specification.transition&&(C.delay||C.duration)&&(this.prior=d)}possiblyEvaluate(i,c,d){let C=i.now||0,b=this.value.possiblyEvaluate(i,c,d),v=this.prior;if(v){if(C>this.end)return this.prior=null,b;if(this.value.isDataDriven())return this.prior=null,b;if(C=1)return 1;let Q=L*L,Z=Q*L;return 4*(L<.5?Z:3*(L-Q)+Z-.75)}(S))}}return b}}class hl{constructor(i){this._properties=i,this._values=Object.create(i.defaultTransitioningPropertyValues)}possiblyEvaluate(i,c,d){let C=new dl(this._properties);for(let b of Object.keys(this._values))C._values[b]=this._values[b].possiblyEvaluate(i,c,d);return C}hasTransition(){for(let i of Object.keys(this._values))if(this._values[i].prior)return!0;return!1}}class gl{constructor(i){this._properties=i,this._values=Object.create(i.defaultPropertyValues)}hasValue(i){return this._values[i].value!==void 0}getValue(i){return Mt(this._values[i].value)}setValue(i,c){this._values[i]=new EA(this._values[i].property,c===null?void 0:Mt(c))}serialize(){let i={};for(let c of Object.keys(this._values)){let d=this.getValue(c);d!==void 0&&(i[c]=d)}return i}possiblyEvaluate(i,c,d){let C=new dl(this._properties);for(let b of Object.keys(this._values))C._values[b]=this._values[b].possiblyEvaluate(i,c,d);return C}}class Ho{constructor(i,c,d){this.property=i,this.value=c,this.parameters=d}isConstant(){return this.value.kind==="constant"}constantOr(i){return this.value.kind==="constant"?this.value.value:i}evaluate(i,c,d,C){return this.property.evaluate(this.value,this.parameters,i,c,d,C)}}class dl{constructor(i){this._properties=i,this._values=Object.create(i.defaultPossiblyEvaluatedValues)}get(i){return this._values[i]}}class gi{constructor(i){this.specification=i}possiblyEvaluate(i,c){if(i.isDataDriven())throw new Error("Value should not be data driven");return i.expression.evaluate(c)}interpolate(i,c,d){let C=ai[this.specification.type];return C?C(i,c,d):i}}class _i{constructor(i,c){this.specification=i,this.overrides=c}possiblyEvaluate(i,c,d,C){return new Ho(this,i.expression.kind==="constant"||i.expression.kind==="camera"?{kind:"constant",value:i.expression.evaluate(c,null,{},d,C)}:i.expression,c)}interpolate(i,c,d){if(i.value.kind!=="constant"||c.value.kind!=="constant")return i;if(i.value.value===void 0||c.value.value===void 0)return new Ho(this,{kind:"constant",value:void 0},i.parameters);let C=ai[this.specification.type];if(C){let b=C(i.value.value,c.value.value,d);return new Ho(this,{kind:"constant",value:b},i.parameters)}return i}evaluate(i,c,d,C,b,v){return i.kind==="constant"?i.value:i.evaluate(c,d,C,b,v)}}class Wl extends _i{possiblyEvaluate(i,c,d,C){if(i.value===void 0)return new Ho(this,{kind:"constant",value:void 0},c);if(i.expression.kind==="constant"){let b=i.expression.evaluate(c,null,{},d,C),v=i.property.specification.type==="resolvedImage"&&typeof b!="string"?b.name:b,S=this._calculate(v,v,v,c);return new Ho(this,{kind:"constant",value:S},c)}if(i.expression.kind==="camera"){let b=this._calculate(i.expression.evaluate({zoom:c.zoom-1}),i.expression.evaluate({zoom:c.zoom}),i.expression.evaluate({zoom:c.zoom+1}),c);return new Ho(this,{kind:"constant",value:b},c)}return new Ho(this,i.expression,c)}evaluate(i,c,d,C,b,v){if(i.kind==="source"){let S=i.evaluate(c,d,C,b,v);return this._calculate(S,S,S,c)}return i.kind==="composite"?this._calculate(i.evaluate({zoom:Math.floor(c.zoom)-1},d,C),i.evaluate({zoom:Math.floor(c.zoom)},d,C),i.evaluate({zoom:Math.floor(c.zoom)+1},d,C),c):i.value}_calculate(i,c,d,C){return C.zoom>C.zoomHistory.lastIntegerZoom?{from:i,to:c}:{from:d,to:c}}interpolate(i){return i}}class Jl{constructor(i){this.specification=i}possiblyEvaluate(i,c,d,C){if(i.value!==void 0){if(i.expression.kind==="constant"){let b=i.expression.evaluate(c,null,{},d,C);return this._calculate(b,b,b,c)}return this._calculate(i.expression.evaluate(new Qr(Math.floor(c.zoom-1),c)),i.expression.evaluate(new Qr(Math.floor(c.zoom),c)),i.expression.evaluate(new Qr(Math.floor(c.zoom+1),c)),c)}}_calculate(i,c,d,C){return C.zoom>C.zoomHistory.lastIntegerZoom?{from:i,to:c}:{from:d,to:c}}interpolate(i){return i}}class Xl{constructor(i){this.specification=i}possiblyEvaluate(i,c,d,C){return!!i.expression.evaluate(c,null,{},d,C)}interpolate(){return!1}}class u{constructor(i){this.properties=i,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let c in i){let d=i[c];d.specification.overridable&&this.overridableProperties.push(c);let C=this.defaultPropertyValues[c]=new EA(d,void 0),b=this.defaultTransitionablePropertyValues[c]=new ul(d);this.defaultTransitioningPropertyValues[c]=b.untransitioned(),this.defaultPossiblyEvaluatedValues[c]=C.possiblyEvaluate({})}}}oi("DataDrivenProperty",_i),oi("DataConstantProperty",gi),oi("CrossFadedDataDrivenProperty",Wl),oi("CrossFadedProperty",Jl),oi("ColorRampProperty",Xl);let t="-transition";class a extends Je{constructor(i,c){if(super(),this.id=i.id,this.type=i.type,this._featureFilter={filter:()=>!0,needGeometry:!1},i.type!=="custom"&&(this.metadata=i.metadata,this.minzoom=i.minzoom,this.maxzoom=i.maxzoom,i.type!=="background"&&(this.source=i.source,this.sourceLayer=i["source-layer"],this.filter=i.filter),c.layout&&(this._unevaluatedLayout=new gl(c.layout)),c.paint)){this._transitionablePaint=new zl(c.paint);for(let d in i.paint)this.setPaintProperty(d,i.paint[d],{validate:!1});for(let d in i.layout)this.setLayoutProperty(d,i.layout[d],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new dl(c.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(i){return i==="visibility"?this.visibility:this._unevaluatedLayout.getValue(i)}setLayoutProperty(i,c,d={}){c!=null&&this._validate(Cu,`layers.${this.id}.layout.${i}`,i,c,d)||(i!=="visibility"?this._unevaluatedLayout.setValue(i,c):this.visibility=c)}getPaintProperty(i){return i.endsWith(t)?this._transitionablePaint.getTransition(i.slice(0,-11)):this._transitionablePaint.getValue(i)}setPaintProperty(i,c,d={}){if(c!=null&&this._validate(kA,`layers.${this.id}.paint.${i}`,i,c,d))return!1;if(i.endsWith(t))return this._transitionablePaint.setTransition(i.slice(0,-11),c||void 0),!1;{let C=this._transitionablePaint._values[i],b=C.property.specification["property-type"]==="cross-faded-data-driven",v=C.value.isDataDriven(),S=C.value;this._transitionablePaint.setValue(i,c),this._handleSpecialPaintPropertyUpdate(i);let L=this._transitionablePaint._values[i].value;return L.isDataDriven()||v||b||this._handleOverridablePaintPropertyUpdate(i,S,L)}}_handleSpecialPaintPropertyUpdate(i){}_handleOverridablePaintPropertyUpdate(i,c,d){return!1}isHidden(i){return!!(this.minzoom&&i=this.maxzoom)||this.visibility==="none"}updateTransitions(i){this._transitioningPaint=this._transitionablePaint.transitioned(i,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(i,c){i.getCrossfadeParameters&&(this._crossfadeParameters=i.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(i,void 0,c)),this.paint=this._transitioningPaint.possiblyEvaluate(i,void 0,c)}serialize(){let i={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&&(i.layout=i.layout||{},i.layout.visibility=this.visibility),ft(i,(c,d)=>!(c===void 0||d==="layout"&&!Object.keys(c).length||d==="paint"&&!Object.keys(c).length))}_validate(i,c,d,C,b={}){return(!b||b.validate!==!1)&&Qc(this,i.call(Ma,{key:c,layerType:this.type,objectKey:d,value:C,styleSpec:Dt,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let i in this.paint._values){let c=this.paint.get(i);if(c instanceof Ho&&$o(c.property.specification)&&(c.value.kind==="source"||c.value.kind==="composite")&&c.value.isStateDependent)return!0}return!1}}let h={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class g{constructor(i,c){this._structArray=i,this._pos1=c*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class f{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(i,c){return i._trim(),c&&(i.isTransferred=!0,c.push(i.arrayBuffer)),{length:i.length,arrayBuffer:i.arrayBuffer}}static deserialize(i){let c=Object.create(this.prototype);return c.arrayBuffer=i.arrayBuffer,c.length=i.length,c.capacity=i.arrayBuffer.byteLength/c.bytesPerElement,c._refreshViews(),c}_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(i){this.reserve(i),this.length=i}reserve(i){if(i>this.capacity){this.capacity=Math.max(i,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let c=this.uint8;this._refreshViews(),c&&this.uint8.set(c)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function y(A,i=1){let c=0,d=0;return{members:A.map(C=>{let b=h[C.type].BYTES_PER_ELEMENT,v=c=B(c,Math.max(i,b)),S=C.components||1;return d=Math.max(d,b),c+=b*S,{name:C.name,type:C.type,components:S,offset:v}}),size:B(c,Math.max(d,i)),alignment:i}}function B(A,i){return Math.ceil(A/i)*i}class x extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(i,c){let d=this.length;return this.resize(d+1),this.emplace(d,i,c)}emplace(i,c,d){let C=2*i;return this.int16[C+0]=c,this.int16[C+1]=d,i}}x.prototype.bytesPerElement=4,oi("StructArrayLayout2i4",x);class k extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(i,c,d){let C=this.length;return this.resize(C+1),this.emplace(C,i,c,d)}emplace(i,c,d,C){let b=3*i;return this.int16[b+0]=c,this.int16[b+1]=d,this.int16[b+2]=C,i}}k.prototype.bytesPerElement=6,oi("StructArrayLayout3i6",k);class R extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(i,c,d,C){let b=this.length;return this.resize(b+1),this.emplace(b,i,c,d,C)}emplace(i,c,d,C,b){let v=4*i;return this.int16[v+0]=c,this.int16[v+1]=d,this.int16[v+2]=C,this.int16[v+3]=b,i}}R.prototype.bytesPerElement=8,oi("StructArrayLayout4i8",R);class G extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b,v){let S=this.length;return this.resize(S+1),this.emplace(S,i,c,d,C,b,v)}emplace(i,c,d,C,b,v,S){let L=6*i;return this.int16[L+0]=c,this.int16[L+1]=d,this.int16[L+2]=C,this.int16[L+3]=b,this.int16[L+4]=v,this.int16[L+5]=S,i}}G.prototype.bytesPerElement=12,oi("StructArrayLayout2i4i12",G);class P extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b,v){let S=this.length;return this.resize(S+1),this.emplace(S,i,c,d,C,b,v)}emplace(i,c,d,C,b,v,S){let L=4*i,Q=8*i;return this.int16[L+0]=c,this.int16[L+1]=d,this.uint8[Q+4]=C,this.uint8[Q+5]=b,this.uint8[Q+6]=v,this.uint8[Q+7]=S,i}}P.prototype.bytesPerElement=8,oi("StructArrayLayout2i4ub8",P);class M extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(i,c){let d=this.length;return this.resize(d+1),this.emplace(d,i,c)}emplace(i,c,d){let C=2*i;return this.float32[C+0]=c,this.float32[C+1]=d,i}}M.prototype.bytesPerElement=8,oi("StructArrayLayout2f8",M);class j extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b,v,S,L,Q,Z){let N=this.length;return this.resize(N+1),this.emplace(N,i,c,d,C,b,v,S,L,Q,Z)}emplace(i,c,d,C,b,v,S,L,Q,Z,N){let O=10*i;return this.uint16[O+0]=c,this.uint16[O+1]=d,this.uint16[O+2]=C,this.uint16[O+3]=b,this.uint16[O+4]=v,this.uint16[O+5]=S,this.uint16[O+6]=L,this.uint16[O+7]=Q,this.uint16[O+8]=Z,this.uint16[O+9]=N,i}}j.prototype.bytesPerElement=20,oi("StructArrayLayout10ui20",j);class et extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b,v,S,L,Q,Z,N,O){let q=this.length;return this.resize(q+1),this.emplace(q,i,c,d,C,b,v,S,L,Q,Z,N,O)}emplace(i,c,d,C,b,v,S,L,Q,Z,N,O,q){let nt=12*i;return this.int16[nt+0]=c,this.int16[nt+1]=d,this.int16[nt+2]=C,this.int16[nt+3]=b,this.uint16[nt+4]=v,this.uint16[nt+5]=S,this.uint16[nt+6]=L,this.uint16[nt+7]=Q,this.int16[nt+8]=Z,this.int16[nt+9]=N,this.int16[nt+10]=O,this.int16[nt+11]=q,i}}et.prototype.bytesPerElement=24,oi("StructArrayLayout4i4ui4i24",et);class W extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(i,c,d){let C=this.length;return this.resize(C+1),this.emplace(C,i,c,d)}emplace(i,c,d,C){let b=3*i;return this.float32[b+0]=c,this.float32[b+1]=d,this.float32[b+2]=C,i}}W.prototype.bytesPerElement=12,oi("StructArrayLayout3f12",W);class X extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(i){let c=this.length;return this.resize(c+1),this.emplace(c,i)}emplace(i,c){return this.uint32[1*i+0]=c,i}}X.prototype.bytesPerElement=4,oi("StructArrayLayout1ul4",X);class ct extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b,v,S,L,Q){let Z=this.length;return this.resize(Z+1),this.emplace(Z,i,c,d,C,b,v,S,L,Q)}emplace(i,c,d,C,b,v,S,L,Q,Z){let N=10*i,O=5*i;return this.int16[N+0]=c,this.int16[N+1]=d,this.int16[N+2]=C,this.int16[N+3]=b,this.int16[N+4]=v,this.int16[N+5]=S,this.uint32[O+3]=L,this.uint16[N+8]=Q,this.uint16[N+9]=Z,i}}ct.prototype.bytesPerElement=20,oi("StructArrayLayout6i1ul2ui20",ct);class rt extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b,v){let S=this.length;return this.resize(S+1),this.emplace(S,i,c,d,C,b,v)}emplace(i,c,d,C,b,v,S){let L=6*i;return this.int16[L+0]=c,this.int16[L+1]=d,this.int16[L+2]=C,this.int16[L+3]=b,this.int16[L+4]=v,this.int16[L+5]=S,i}}rt.prototype.bytesPerElement=12,oi("StructArrayLayout2i2i2i12",rt);class ut extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b){let v=this.length;return this.resize(v+1),this.emplace(v,i,c,d,C,b)}emplace(i,c,d,C,b,v){let S=4*i,L=8*i;return this.float32[S+0]=c,this.float32[S+1]=d,this.float32[S+2]=C,this.int16[L+6]=b,this.int16[L+7]=v,i}}ut.prototype.bytesPerElement=16,oi("StructArrayLayout2f1f2i16",ut);class Ft extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b,v){let S=this.length;return this.resize(S+1),this.emplace(S,i,c,d,C,b,v)}emplace(i,c,d,C,b,v,S){let L=16*i,Q=4*i,Z=8*i;return this.uint8[L+0]=c,this.uint8[L+1]=d,this.float32[Q+1]=C,this.float32[Q+2]=b,this.int16[Z+6]=v,this.int16[Z+7]=S,i}}Ft.prototype.bytesPerElement=16,oi("StructArrayLayout2ub2f2i16",Ft);class Qt extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(i,c,d){let C=this.length;return this.resize(C+1),this.emplace(C,i,c,d)}emplace(i,c,d,C){let b=3*i;return this.uint16[b+0]=c,this.uint16[b+1]=d,this.uint16[b+2]=C,i}}Qt.prototype.bytesPerElement=6,oi("StructArrayLayout3ui6",Qt);class se extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b,v,S,L,Q,Z,N,O,q,nt,lt,Bt,Gt){let re=this.length;return this.resize(re+1),this.emplace(re,i,c,d,C,b,v,S,L,Q,Z,N,O,q,nt,lt,Bt,Gt)}emplace(i,c,d,C,b,v,S,L,Q,Z,N,O,q,nt,lt,Bt,Gt,re){let Kt=24*i,Yt=12*i,ge=48*i;return this.int16[Kt+0]=c,this.int16[Kt+1]=d,this.uint16[Kt+2]=C,this.uint16[Kt+3]=b,this.uint32[Yt+2]=v,this.uint32[Yt+3]=S,this.uint32[Yt+4]=L,this.uint16[Kt+10]=Q,this.uint16[Kt+11]=Z,this.uint16[Kt+12]=N,this.float32[Yt+7]=O,this.float32[Yt+8]=q,this.uint8[ge+36]=nt,this.uint8[ge+37]=lt,this.uint8[ge+38]=Bt,this.uint32[Yt+10]=Gt,this.int16[Kt+22]=re,i}}se.prototype.bytesPerElement=48,oi("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",se);class oe extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(i,c,d,C,b,v,S,L,Q,Z,N,O,q,nt,lt,Bt,Gt,re,Kt,Yt,ge,Re,ni,Gi,ei,qe,Ii,hi){let li=this.length;return this.resize(li+1),this.emplace(li,i,c,d,C,b,v,S,L,Q,Z,N,O,q,nt,lt,Bt,Gt,re,Kt,Yt,ge,Re,ni,Gi,ei,qe,Ii,hi)}emplace(i,c,d,C,b,v,S,L,Q,Z,N,O,q,nt,lt,Bt,Gt,re,Kt,Yt,ge,Re,ni,Gi,ei,qe,Ii,hi,li){let we=32*i,bi=16*i;return this.int16[we+0]=c,this.int16[we+1]=d,this.int16[we+2]=C,this.int16[we+3]=b,this.int16[we+4]=v,this.int16[we+5]=S,this.int16[we+6]=L,this.int16[we+7]=Q,this.uint16[we+8]=Z,this.uint16[we+9]=N,this.uint16[we+10]=O,this.uint16[we+11]=q,this.uint16[we+12]=nt,this.uint16[we+13]=lt,this.uint16[we+14]=Bt,this.uint16[we+15]=Gt,this.uint16[we+16]=re,this.uint16[we+17]=Kt,this.uint16[we+18]=Yt,this.uint16[we+19]=ge,this.uint16[we+20]=Re,this.uint16[we+21]=ni,this.uint16[we+22]=Gi,this.uint32[bi+12]=ei,this.float32[bi+13]=qe,this.float32[bi+14]=Ii,this.uint16[we+30]=hi,this.uint16[we+31]=li,i}}oe.prototype.bytesPerElement=64,oi("StructArrayLayout8i15ui1ul2f2ui64",oe);class xe extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(i){let c=this.length;return this.resize(c+1),this.emplace(c,i)}emplace(i,c){return this.float32[1*i+0]=c,i}}xe.prototype.bytesPerElement=4,oi("StructArrayLayout1f4",xe);class Ue extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(i,c,d){let C=this.length;return this.resize(C+1),this.emplace(C,i,c,d)}emplace(i,c,d,C){let b=3*i;return this.uint16[6*i+0]=c,this.float32[b+1]=d,this.float32[b+2]=C,i}}Ue.prototype.bytesPerElement=12,oi("StructArrayLayout1ui2f12",Ue);class _e extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(i,c,d){let C=this.length;return this.resize(C+1),this.emplace(C,i,c,d)}emplace(i,c,d,C){let b=4*i;return this.uint32[2*i+0]=c,this.uint16[b+2]=d,this.uint16[b+3]=C,i}}_e.prototype.bytesPerElement=8,oi("StructArrayLayout1ul2ui8",_e);class Be extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(i,c){let d=this.length;return this.resize(d+1),this.emplace(d,i,c)}emplace(i,c,d){let C=2*i;return this.uint16[C+0]=c,this.uint16[C+1]=d,i}}Be.prototype.bytesPerElement=4,oi("StructArrayLayout2ui4",Be);class De extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(i){let c=this.length;return this.resize(c+1),this.emplace(c,i)}emplace(i,c){return this.uint16[1*i+0]=c,i}}De.prototype.bytesPerElement=2,oi("StructArrayLayout1ui2",De);class ri extends f{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(i,c,d,C){let b=this.length;return this.resize(b+1),this.emplace(b,i,c,d,C)}emplace(i,c,d,C,b){let v=4*i;return this.float32[v+0]=c,this.float32[v+1]=d,this.float32[v+2]=C,this.float32[v+3]=b,i}}ri.prototype.bytesPerElement=16,oi("StructArrayLayout4f16",ri);class ve extends g{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new w(this.anchorPointX,this.anchorPointY)}}ve.prototype.size=20;class Ge extends ct{get(i){return new ve(this,i)}}oi("CollisionBoxArray",Ge);class Ci extends g{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(i){this._structArray.uint8[this._pos1+37]=i}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(i){this._structArray.uint8[this._pos1+38]=i}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(i){this._structArray.uint32[this._pos4+10]=i}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}Ci.prototype.size=48;class Ji extends se{get(i){return new Ci(this,i)}}oi("PlacedSymbolArray",Ji);class Ui extends g{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(i){this._structArray.uint32[this._pos4+12]=i}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}Ui.prototype.size=64;class fi extends oe{get(i){return new Ui(this,i)}}oi("SymbolInstanceArray",fi);class hr extends xe{getoffsetX(i){return this.float32[1*i+0]}}oi("GlyphOffsetArray",hr);class Lr extends k{getx(i){return this.int16[3*i+0]}gety(i){return this.int16[3*i+1]}gettileUnitDistanceFromAnchor(i){return this.int16[3*i+2]}}oi("SymbolLineVertexArray",Lr);class Er extends g{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}Er.prototype.size=12;class er extends Ue{get(i){return new Er(this,i)}}oi("TextAnchorOffsetArray",er);class Tr extends g{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]}}Tr.prototype.size=8;class Hr extends _e{get(i){return new Tr(this,i)}}oi("FeatureIndexArray",Hr);class Dr extends x{}class Ir extends x{}class yn extends x{}class Hs extends G{}class ra extends P{}class ws extends M{}class Cr extends j{}class TA extends et{}class Yl extends W{}class Bs extends X{}class qn extends rt{}class Ms extends Ft{}class as extends Qt{}class Rr extends Be{}let An=y([{name:"a_pos",components:2,type:"Int16"}],4),{members:bn}=An;class cr{constructor(i=[]){this.segments=i}prepareSegment(i,c,d,C){let b=this.segments[this.segments.length-1];return i>cr.MAX_VERTEX_ARRAY_LENGTH&&at(`Max vertices per segment is ${cr.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${i}`),(!b||b.vertexLength+i>cr.MAX_VERTEX_ARRAY_LENGTH||b.sortKey!==C)&&(b={vertexOffset:c.length,primitiveOffset:d.length,vertexLength:0,primitiveLength:0},C!==void 0&&(b.sortKey=C),this.segments.push(b)),b}get(){return this.segments}destroy(){for(let i of this.segments)for(let c in i.vaos)i.vaos[c].destroy()}static simpleSegment(i,c,d,C){return new cr([{vertexOffset:i,primitiveOffset:c,vertexLength:d,primitiveLength:C,vaos:{},sortKey:0}])}}function Mo(A,i){return 256*(A=ot(Math.floor(A),0,255))+ot(Math.floor(i),0,255)}cr.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,oi("SegmentVector",cr);let Da=y([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var na={exports:{}},jl={exports:{}};jl.exports=function(A,i){var c,d,C,b,v,S,L,Q;for(d=A.length-(c=3&A.length),C=i,v=3432918353,S=461845907,Q=0;Q>>16)*v&65535)<<16)&4294967295)<<15|L>>>17))*S+(((L>>>16)*S&65535)<<16)&4294967295)<<13|C>>>19))+((5*(C>>>16)&65535)<<16)&4294967295))+((58964+(b>>>16)&65535)<<16);switch(L=0,c){case 3:L^=(255&A.charCodeAt(Q+2))<<16;case 2:L^=(255&A.charCodeAt(Q+1))<<8;case 1:C^=L=(65535&(L=(L=(65535&(L^=255&A.charCodeAt(Q)))*v+(((L>>>16)*v&65535)<<16)&4294967295)<<15|L>>>17))*S+(((L>>>16)*S&65535)<<16)&4294967295}return C^=A.length,C=2246822507*(65535&(C^=C>>>16))+((2246822507*(C>>>16)&65535)<<16)&4294967295,C=3266489909*(65535&(C^=C>>>13))+((3266489909*(C>>>16)&65535)<<16)&4294967295,(C^=C>>>16)>>>0};var ql=jl.exports,UA={exports:{}};UA.exports=function(A,i){for(var c,d=A.length,C=i^d,b=0;d>=4;)c=1540483477*(65535&(c=255&A.charCodeAt(b)|(255&A.charCodeAt(++b))<<8|(255&A.charCodeAt(++b))<<16|(255&A.charCodeAt(++b))<<24))+((1540483477*(c>>>16)&65535)<<16),C=1540483477*(65535&C)+((1540483477*(C>>>16)&65535)<<16)^(c=1540483477*(65535&(c^=c>>>24))+((1540483477*(c>>>16)&65535)<<16)),d-=4,++b;switch(d){case 3:C^=(255&A.charCodeAt(b+2))<<16;case 2:C^=(255&A.charCodeAt(b+1))<<8;case 1:C=1540483477*(65535&(C^=255&A.charCodeAt(b)))+((1540483477*(C>>>16)&65535)<<16)}return C=1540483477*(65535&(C^=C>>>13))+((1540483477*(C>>>16)&65535)<<16),(C^=C>>>15)>>>0};var ya=ql,yu=UA.exports;na.exports=ya,na.exports.murmur3=ya,na.exports.murmur2=yu;var QA=p(na.exports);class Ns{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(i,c,d,C){this.ids.push($l(i)),this.positions.push(c,d,C)}getPositions(i){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let c=$l(i),d=0,C=this.ids.length-1;for(;d>1;this.ids[v]>=c?C=v:d=v+1}let b=[];for(;this.ids[d]===c;)b.push({index:this.positions[3*d],start:this.positions[3*d+1],end:this.positions[3*d+2]}),d++;return b}static serialize(i,c){let d=new Float64Array(i.ids),C=new Uint32Array(i.positions);return tc(d,C,0,d.length-1),c&&c.push(d.buffer,C.buffer),{ids:d,positions:C}}static deserialize(i){let c=new Ns;return c.ids=i.ids,c.positions=i.positions,c.indexed=!0,c}}function $l(A){let i=+A;return!isNaN(i)&&i<=Number.MAX_SAFE_INTEGER?i:QA(String(A))}function tc(A,i,c,d){for(;c>1],b=c-1,v=d+1;for(;;){do b++;while(A[b]C);if(b>=v)break;RA(A,b,v),RA(i,3*b,3*v),RA(i,3*b+1,3*v+1),RA(i,3*b+2,3*v+2)}v-c`u_${C}`),this.type=d}setUniform(i,c,d){i.set(d.constantOr(this.value))}getBinding(i,c,d){return this.type==="color"?new Th(i,c):new pl(i,c)}}class fl{constructor(i,c){this.uniformNames=c.map(d=>`u_${d}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(i,c){this.pixelRatioFrom=c.pixelRatio,this.pixelRatioTo=i.pixelRatio,this.patternFrom=c.tlbr,this.patternTo=i.tlbr}setUniform(i,c,d,C){let b=C==="u_pattern_to"?this.patternTo:C==="u_pattern_from"?this.patternFrom:C==="u_pixel_ratio_to"?this.pixelRatioTo:C==="u_pixel_ratio_from"?this.pixelRatioFrom:null;b&&i.set(b)}getBinding(i,c,d){return d.substr(0,9)==="u_pattern"?new Eh(i,c):new pl(i,c)}}class Oa{constructor(i,c,d,C){this.expression=i,this.type=d,this.maxValue=0,this.paintVertexAttributes=c.map(b=>({name:`a_${b}`,type:"Float32",components:d==="color"?2:1,offset:0})),this.paintVertexArray=new C}populatePaintArray(i,c,d,C,b){let v=this.paintVertexArray.length,S=this.expression.evaluate(new Qr(0),c,{},C,[],b);this.paintVertexArray.resize(i),this._setPaintValue(v,i,S)}updatePaintArray(i,c,d,C){let b=this.expression.evaluate({zoom:0},d,C);this._setPaintValue(i,c,b)}_setPaintValue(i,c,d){if(this.type==="color"){let C=Mc(d);for(let b=i;b`u_${S}_t`),this.type=d,this.useIntegerZoom=C,this.zoom=b,this.maxValue=0,this.paintVertexAttributes=c.map(S=>({name:`a_${S}`,type:"Float32",components:d==="color"?4:2,offset:0})),this.paintVertexArray=new v}populatePaintArray(i,c,d,C,b){let v=this.expression.evaluate(new Qr(this.zoom),c,{},C,[],b),S=this.expression.evaluate(new Qr(this.zoom+1),c,{},C,[],b),L=this.paintVertexArray.length;this.paintVertexArray.resize(i),this._setPaintValue(L,i,v,S)}updatePaintArray(i,c,d,C){let b=this.expression.evaluate({zoom:this.zoom},d,C),v=this.expression.evaluate({zoom:this.zoom+1},d,C);this._setPaintValue(i,c,b,v)}_setPaintValue(i,c,d,C){if(this.type==="color"){let b=Mc(d),v=Mc(C);for(let S=i;S`#define HAS_UNIFORM_${C}`))}return i}getBinderAttributes(){let i=[];for(let c in this.binders){let d=this.binders[c];if(d instanceof Oa||d instanceof Vs)for(let C=0;C!0){this.programConfigurations={};for(let C of i)this.programConfigurations[C.id]=new vu(C,c,d);this.needsUpload=!1,this._featureMap=new Ns,this._bufferOffset=0}populatePaintArrays(i,c,d,C,b,v){for(let S in this.programConfigurations)this.programConfigurations[S].populatePaintArrays(i,c,C,b,v);c.id!==void 0&&this._featureMap.add(c.id,d,this._bufferOffset,i),this._bufferOffset=i,this.needsUpload=!0}updatePaintArrays(i,c,d,C){for(let b of d)this.needsUpload=this.programConfigurations[b.id].updatePaintArrays(i,this._featureMap,c,b,C)||this.needsUpload}get(i){return this.programConfigurations[i]}upload(i){if(this.needsUpload){for(let c in this.programConfigurations)this.programConfigurations[c].upload(i);this.needsUpload=!1}}destroy(){for(let i in this.programConfigurations)this.programConfigurations[i].destroy()}}function sd(A,i){return{"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_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[A]||[A.replace(`${i}-`,"").replace(/-/g,"_")]}function Uh(A,i,c){let d={color:{source:M,composite:ri},number:{source:xe,composite:M}},C=function(b){return{"line-pattern":{source:Cr,composite:Cr},"fill-pattern":{source:Cr,composite:Cr},"fill-extrusion-pattern":{source:Cr,composite:Cr}}[b]}(A);return C&&C[c]||d[i][c]}oi("ConstantBinder",Ka),oi("CrossFadedConstantBinder",fl),oi("SourceExpressionBinder",Oa),oi("CrossFadedCompositeBinder",za),oi("CompositeExpressionBinder",Vs),oi("ProgramConfiguration",vu,{omit:["_buffers"]}),oi("ProgramConfigurationSet",Ds);let cn=8192,wu=Math.pow(2,14)-1,ml=-wu-1;function Cl(A){let i=cn/A.extent,c=A.loadGeometry();for(let d=0;dv.x+1||Lv.y+1)&&at("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return c}function ZA(A,i){return{type:A.type,id:A.id,properties:A.properties,geometry:i?Cl(A):[]}}function Bu(A,i,c,d,C){A.emplaceBack(2*i+(d+1)/2,2*c+(C+1)/2)}class _u{constructor(i){this.zoom=i.zoom,this.overscaling=i.overscaling,this.layers=i.layers,this.layerIds=this.layers.map(c=>c.id),this.index=i.index,this.hasPattern=!1,this.layoutVertexArray=new Ir,this.indexArray=new as,this.segments=new cr,this.programConfigurations=new Ds(i.layers,i.zoom),this.stateDependentLayerIds=this.layers.filter(c=>c.isStateDependent()).map(c=>c.id)}populate(i,c,d){let C=this.layers[0],b=[],v=null,S=!1;C.type==="circle"&&(v=C.layout.get("circle-sort-key"),S=!v.isConstant());for(let{feature:L,id:Q,index:Z,sourceLayerIndex:N}of i){let O=this.layers[0]._featureFilter.needGeometry,q=ZA(L,O);if(!this.layers[0]._featureFilter.filter(new Qr(this.zoom),q,d))continue;let nt=S?v.evaluate(q,{},d):void 0,lt={id:Q,properties:L.properties,type:L.type,sourceLayerIndex:N,index:Z,geometry:O?q.geometry:Cl(L),patterns:{},sortKey:nt};b.push(lt)}S&&b.sort((L,Q)=>L.sortKey-Q.sortKey);for(let L of b){let{geometry:Q,index:Z,sourceLayerIndex:N}=L,O=i[Z].feature;this.addFeature(L,Q,Z,d),c.featureIndex.insert(O,Q,Z,N,this.index)}}update(i,c,d){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(i,c,this.stateDependentLayers,d)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(i){this.uploaded||(this.layoutVertexBuffer=i.createVertexBuffer(this.layoutVertexArray,bn),this.indexBuffer=i.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(i),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(i,c,d,C){for(let b of c)for(let v of b){let S=v.x,L=v.y;if(S<0||S>=cn||L<0||L>=cn)continue;let Q=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,i.sortKey),Z=Q.vertexLength;Bu(this.layoutVertexArray,S,L,-1,-1),Bu(this.layoutVertexArray,S,L,1,-1),Bu(this.layoutVertexArray,S,L,1,1),Bu(this.layoutVertexArray,S,L,-1,1),this.indexArray.emplaceBack(Z,Z+1,Z+2),this.indexArray.emplaceBack(Z,Z+3,Z+2),Q.vertexLength+=4,Q.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,i,d,{},C)}}function od(A,i){for(let c=0;c1){if(sa(A,i))return!0;for(let d=0;d1?c:c.sub(i)._mult(C)._add(i))}function Fu(A,i){let c,d,C,b=!1;for(let v=0;vi.y!=C.y>i.y&&i.x<(C.x-d.x)*(i.y-d.y)/(C.y-d.y)+d.x&&(b=!b)}return b}function Il(A,i){let c=!1;for(let d=0,C=A.length-1;di.y!=v.y>i.y&&i.x<(v.x-b.x)*(i.y-b.y)/(v.y-b.y)+b.x&&(c=!c)}return c}function mm(A,i,c){let d=c[0],C=c[2];if(A.xC.x&&i.x>C.x||A.yC.y&&i.y>C.y)return!1;let b=st(A,i,c[0]);return b!==st(A,i,c[1])||b!==st(A,i,c[2])||b!==st(A,i,c[3])}function yl(A,i,c){let d=i.paint.get(A).value;return d.kind==="constant"?d.value:c.programConfigurations.get(i.id).getMaxValue(A)}function ec(A){return Math.sqrt(A[0]*A[0]+A[1]*A[1])}function ad(A,i,c,d,C){if(!i[0]&&!i[1])return A;let b=w.convert(i)._mult(C);c==="viewport"&&b._rotate(-d);let v=[];for(let S=0;Sn1(Bt,lt))}(Q,L),q=N?Z*S:Z;for(let nt of C)for(let lt of nt){let Bt=N?lt:n1(lt,L),Gt=q,re=Ad([],[lt.x,lt.y,0,1],L);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?Gt*=re[3]/v.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(Gt*=v.cameraToCenterDistance/re[3]),Nc(O,Bt,Gt))return!0}return!1}}function n1(A,i){let c=Ad([],[A.x,A.y,0,1],i);return new w(c[0]/c[3],c[1]/c[3])}class s1 extends _u{}let o1;oi("HeatmapBucket",s1,{omit:["layers"]});var dS={get paint(){return o1=o1||new u({"heatmap-radius":new _i(Dt.paint_heatmap["heatmap-radius"]),"heatmap-weight":new _i(Dt.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new gi(Dt.paint_heatmap["heatmap-intensity"]),"heatmap-color":new Xl(Dt.paint_heatmap["heatmap-color"]),"heatmap-opacity":new gi(Dt.paint_heatmap["heatmap-opacity"])})}};function Im(A,{width:i,height:c},d,C){if(C){if(C instanceof Uint8ClampedArray)C=new Uint8Array(C.buffer);else if(C.length!==i*c*d)throw new RangeError(`mismatched image size. expected: ${C.length} but got: ${i*c*d}`)}else C=new Uint8Array(i*c*d);return A.width=i,A.height=c,A.data=C,A}function a1(A,{width:i,height:c},d){if(i===A.width&&c===A.height)return;let C=Im({},{width:i,height:c},d);ym(A,C,{x:0,y:0},{x:0,y:0},{width:Math.min(A.width,i),height:Math.min(A.height,c)},d),A.width=i,A.height=c,A.data=C.data}function ym(A,i,c,d,C,b){if(C.width===0||C.height===0)return i;if(C.width>A.width||C.height>A.height||c.x>A.width-C.width||c.y>A.height-C.height)throw new RangeError("out of range source coordinates for image copy");if(C.width>i.width||C.height>i.height||d.x>i.width-C.width||d.y>i.height-C.height)throw new RangeError("out of range destination coordinates for image copy");let v=A.data,S=i.data;if(v===S)throw new Error("srcData equals dstData, so image is already copied");for(let L=0;L{i[A.evaluationKey]=L;let Q=A.expression.evaluate(i);C.data[v+S+0]=Math.floor(255*Q.r/Q.a),C.data[v+S+1]=Math.floor(255*Q.g/Q.a),C.data[v+S+2]=Math.floor(255*Q.b/Q.a),C.data[v+S+3]=Math.floor(255*Q.a)};if(A.clips)for(let v=0,S=0;v80*c){S=1/0,L=1/0;let Z=-1/0,N=-1/0;for(let O=c;OZ&&(Z=q),nt>N&&(N=nt)}Q=Math.max(Z-S,N-L),Q=Q!==0?32767/Q:0}return Gh(b,v,c,S,L,Q,0),v}function u1(A,i,c,d,C){let b;if(C===function(v,S,L,Q){let Z=0;for(let N=S,O=L-Q;N0)for(let v=i;v=i;v-=d)b=d1(v/d|0,A[v],A[v+1],b);return b&&ld(b,b.next)&&(Ph(b),b=b.next),b}function Dc(A,i){if(!A)return A;i||(i=A);let c,d=A;do if(c=!1,d.steiner||!ld(d,d.next)&&mn(d.prev,d,d.next)!==0)d=d.next;else{if(Ph(d),d=i=d.prev,d===d.next)break;c=!0}while(c||d!==i);return i}function Gh(A,i,c,d,C,b,v){if(!A)return;!v&&b&&function(L,Q,Z,N){let O=L;do O.z===0&&(O.z=vm(O.x,O.y,Q,Z,N)),O.prevZ=O.prev,O.nextZ=O.next,O=O.next;while(O!==L);O.prevZ.nextZ=null,O.prevZ=null,function(q){let nt,lt=1;do{let Bt,Gt=q;q=null;let re=null;for(nt=0;Gt;){nt++;let Kt=Gt,Yt=0;for(let Re=0;Re0||ge>0&&Kt;)Yt!==0&&(ge===0||!Kt||Gt.z<=Kt.z)?(Bt=Gt,Gt=Gt.nextZ,Yt--):(Bt=Kt,Kt=Kt.nextZ,ge--),re?re.nextZ=Bt:q=Bt,Bt.prevZ=re,re=Bt;Gt=Kt}re.nextZ=null,lt*=2}while(nt>1)}(O)}(A,d,C,b);let S=A;for(;A.prev!==A.next;){let L=A.prev,Q=A.next;if(b?bS(A,d,C,b):yS(A))i.push(L.i,A.i,Q.i),Ph(A),A=Q.next,S=Q.next;else if((A=Q)===S){v?v===1?Gh(A=vS(Dc(A),i),i,c,d,C,b,2):v===2&&wS(A,i,c,d,C,b):Gh(Dc(A),i,c,d,C,b,1);break}}}function yS(A){let i=A.prev,c=A,d=A.next;if(mn(i,c,d)>=0)return!1;let C=i.x,b=c.x,v=d.x,S=i.y,L=c.y,Q=d.y,Z=Cb?C>v?C:v:b>v?b:v,q=S>L?S>Q?S:Q:L>Q?L:Q,nt=d.next;for(;nt!==i;){if(nt.x>=Z&&nt.x<=O&&nt.y>=N&&nt.y<=q&&Lu(C,S,b,L,v,Q,nt.x,nt.y)&&mn(nt.prev,nt,nt.next)>=0)return!1;nt=nt.next}return!0}function bS(A,i,c,d){let C=A.prev,b=A,v=A.next;if(mn(C,b,v)>=0)return!1;let S=C.x,L=b.x,Q=v.x,Z=C.y,N=b.y,O=v.y,q=SL?S>Q?S:Q:L>Q?L:Q,Bt=Z>N?Z>O?Z:O:N>O?N:O,Gt=vm(q,nt,i,c,d),re=vm(lt,Bt,i,c,d),Kt=A.prevZ,Yt=A.nextZ;for(;Kt&&Kt.z>=Gt&&Yt&&Yt.z<=re;){if(Kt.x>=q&&Kt.x<=lt&&Kt.y>=nt&&Kt.y<=Bt&&Kt!==C&&Kt!==v&&Lu(S,Z,L,N,Q,O,Kt.x,Kt.y)&&mn(Kt.prev,Kt,Kt.next)>=0||(Kt=Kt.prevZ,Yt.x>=q&&Yt.x<=lt&&Yt.y>=nt&&Yt.y<=Bt&&Yt!==C&&Yt!==v&&Lu(S,Z,L,N,Q,O,Yt.x,Yt.y)&&mn(Yt.prev,Yt,Yt.next)>=0))return!1;Yt=Yt.nextZ}for(;Kt&&Kt.z>=Gt;){if(Kt.x>=q&&Kt.x<=lt&&Kt.y>=nt&&Kt.y<=Bt&&Kt!==C&&Kt!==v&&Lu(S,Z,L,N,Q,O,Kt.x,Kt.y)&&mn(Kt.prev,Kt,Kt.next)>=0)return!1;Kt=Kt.prevZ}for(;Yt&&Yt.z<=re;){if(Yt.x>=q&&Yt.x<=lt&&Yt.y>=nt&&Yt.y<=Bt&&Yt!==C&&Yt!==v&&Lu(S,Z,L,N,Q,O,Yt.x,Yt.y)&&mn(Yt.prev,Yt,Yt.next)>=0)return!1;Yt=Yt.nextZ}return!0}function vS(A,i){let c=A;do{let d=c.prev,C=c.next.next;!ld(d,C)&&h1(d,c,c.next,C)&&Zh(d,C)&&Zh(C,d)&&(i.push(d.i,c.i,C.i),Ph(c),Ph(c.next),c=A=C),c=c.next}while(c!==A);return Dc(c)}function wS(A,i,c,d,C,b){let v=A;do{let S=v.next.next;for(;S!==v.prev;){if(v.i!==S.i&&FS(v,S)){let L=g1(v,S);return v=Dc(v,v.next),L=Dc(L,L.next),Gh(v,i,c,d,C,b,0),void Gh(L,i,c,d,C,b,0)}S=S.next}v=v.next}while(v!==A)}function BS(A,i){return A.x-i.x}function _S(A,i){let c=function(C,b){let v=b,S=C.x,L=C.y,Q,Z=-1/0;do{if(L<=v.y&&L>=v.next.y&&v.next.y!==v.y){let lt=v.x+(L-v.y)*(v.next.x-v.x)/(v.next.y-v.y);if(lt<=S&<>Z&&(Z=lt,Q=v.x=v.x&&v.x>=O&&S!==v.x&&Lu(LQ.x||v.x===Q.x&&xS(Q,v)))&&(Q=v,nt=lt)}v=v.next}while(v!==N);return Q}(A,i);if(!c)return i;let d=g1(c,A);return Dc(d,d.next),Dc(c,c.next)}function xS(A,i){return mn(A.prev,A,i.prev)<0&&mn(i.next,A,A.next)<0}function vm(A,i,c,d,C){return(A=1431655765&((A=858993459&((A=252645135&((A=16711935&((A=(A-c)*C|0)|A<<8))|A<<4))|A<<2))|A<<1))|(i=1431655765&((i=858993459&((i=252645135&((i=16711935&((i=(i-d)*C|0)|i<<8))|i<<4))|i<<2))|i<<1))<<1}function SS(A){let i=A,c=A;do(i.x=(A-v)*(b-S)&&(A-v)*(d-S)>=(c-v)*(i-S)&&(c-v)*(b-S)>=(C-v)*(d-S)}function FS(A,i){return A.next.i!==i.i&&A.prev.i!==i.i&&!function(c,d){let C=c;do{if(C.i!==c.i&&C.next.i!==c.i&&C.i!==d.i&&C.next.i!==d.i&&h1(C,C.next,c,d))return!0;C=C.next}while(C!==c);return!1}(A,i)&&(Zh(A,i)&&Zh(i,A)&&function(c,d){let C=c,b=!1,v=(c.x+d.x)/2,S=(c.y+d.y)/2;do C.y>S!=C.next.y>S&&C.next.y!==C.y&&v<(C.next.x-C.x)*(S-C.y)/(C.next.y-C.y)+C.x&&(b=!b),C=C.next;while(C!==c);return b}(A,i)&&(mn(A.prev,A,i.prev)||mn(A,i.prev,i))||ld(A,i)&&mn(A.prev,A,A.next)>0&&mn(i.prev,i,i.next)>0)}function mn(A,i,c){return(i.y-A.y)*(c.x-i.x)-(i.x-A.x)*(c.y-i.y)}function ld(A,i){return A.x===i.x&&A.y===i.y}function h1(A,i,c,d){let C=ud(mn(A,i,c)),b=ud(mn(A,i,d)),v=ud(mn(c,d,A)),S=ud(mn(c,d,i));return C!==b&&v!==S||!(C!==0||!cd(A,c,i))||!(b!==0||!cd(A,d,i))||!(v!==0||!cd(c,A,d))||!(S!==0||!cd(c,i,d))}function cd(A,i,c){return i.x<=Math.max(A.x,c.x)&&i.x>=Math.min(A.x,c.x)&&i.y<=Math.max(A.y,c.y)&&i.y>=Math.min(A.y,c.y)}function ud(A){return A>0?1:A<0?-1:0}function Zh(A,i){return mn(A.prev,A,A.next)<0?mn(A,i,A.next)>=0&&mn(A,A.prev,i)>=0:mn(A,i,A.prev)<0||mn(A,A.next,i)<0}function g1(A,i){let c=wm(A.i,A.x,A.y),d=wm(i.i,i.x,i.y),C=A.next,b=i.prev;return A.next=i,i.prev=A,c.next=C,C.prev=c,d.next=c,c.prev=d,b.next=d,d.prev=b,d}function d1(A,i,c,d){let C=wm(A,i,c);return d?(C.next=d.next,C.prev=d,d.next.prev=C,d.next=C):(C.prev=C,C.next=C),C}function Ph(A){A.next.prev=A.prev,A.prev.next=A.next,A.prevZ&&(A.prevZ.nextZ=A.nextZ),A.nextZ&&(A.nextZ.prevZ=A.prevZ)}function wm(A,i,c){return{i:A,x:i,y:c,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Bm(A,i,c){let d=c.patternDependencies,C=!1;for(let b of i){let v=b.paint.get(`${A}-pattern`);v.isConstant()||(C=!0);let S=v.constantOr(null);S&&(C=!0,d[S.to]=!0,d[S.from]=!0)}return C}function _m(A,i,c,d,C){let b=C.patternDependencies;for(let v of i){let S=v.paint.get(`${A}-pattern`).value;if(S.kind!=="constant"){let L=S.evaluate({zoom:d-1},c,{},C.availableImages),Q=S.evaluate({zoom:d},c,{},C.availableImages),Z=S.evaluate({zoom:d+1},c,{},C.availableImages);L=L&&L.name?L.name:L,Q=Q&&Q.name?Q.name:Q,Z=Z&&Z.name?Z.name:Z,b[L]=!0,b[Q]=!0,b[Z]=!0,c.patterns[v.id]={min:L,mid:Q,max:Z}}}return c}class xm{constructor(i){this.zoom=i.zoom,this.overscaling=i.overscaling,this.layers=i.layers,this.layerIds=this.layers.map(c=>c.id),this.index=i.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new yn,this.indexArray=new as,this.indexArray2=new Rr,this.programConfigurations=new Ds(i.layers,i.zoom),this.segments=new cr,this.segments2=new cr,this.stateDependentLayerIds=this.layers.filter(c=>c.isStateDependent()).map(c=>c.id)}populate(i,c,d){this.hasPattern=Bm("fill",this.layers,c);let C=this.layers[0].layout.get("fill-sort-key"),b=!C.isConstant(),v=[];for(let{feature:S,id:L,index:Q,sourceLayerIndex:Z}of i){let N=this.layers[0]._featureFilter.needGeometry,O=ZA(S,N);if(!this.layers[0]._featureFilter.filter(new Qr(this.zoom),O,d))continue;let q=b?C.evaluate(O,{},d,c.availableImages):void 0,nt={id:L,properties:S.properties,type:S.type,sourceLayerIndex:Z,index:Q,geometry:N?O.geometry:Cl(S),patterns:{},sortKey:q};v.push(nt)}b&&v.sort((S,L)=>S.sortKey-L.sortKey);for(let S of v){let{geometry:L,index:Q,sourceLayerIndex:Z}=S;if(this.hasPattern){let N=_m("fill",this.layers,S,this.zoom,c);this.patternFeatures.push(N)}else this.addFeature(S,L,Q,d,{});c.featureIndex.insert(i[Q].feature,L,Q,Z,this.index)}}update(i,c,d){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(i,c,this.stateDependentLayers,d)}addFeatures(i,c,d){for(let C of this.patternFeatures)this.addFeature(C,C.geometry,C.index,c,d)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(i){this.uploaded||(this.layoutVertexBuffer=i.createVertexBuffer(this.layoutVertexArray,IS),this.indexBuffer=i.createIndexBuffer(this.indexArray),this.indexBuffer2=i.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(i),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(i,c,d,C,b){for(let v of fA(c,500)){let S=0;for(let q of v)S+=q.length;let L=this.segments.prepareSegment(S,this.layoutVertexArray,this.indexArray),Q=L.vertexLength,Z=[],N=[];for(let q of v){if(q.length===0)continue;q!==v[0]&&N.push(Z.length/2);let nt=this.segments2.prepareSegment(q.length,this.layoutVertexArray,this.indexArray2),lt=nt.vertexLength;this.layoutVertexArray.emplaceBack(q[0].x,q[0].y),this.indexArray2.emplaceBack(lt+q.length-1,lt),Z.push(q[0].x),Z.push(q[0].y);for(let Bt=1;Bt>3}if(C--,d===1||d===2)b+=A.readSVarint(),v+=A.readSVarint(),d===1&&(i&&S.push(i),i=[]),i.push(new QS(b,v));else{if(d!==7)throw new Error("unknown command "+d);i&&i.push(i[0].clone())}}return i&&S.push(i),S},Eu.prototype.bbox=function(){var A=this._pbf;A.pos=this._geometry;for(var i=A.readVarint()+A.pos,c=1,d=0,C=0,b=0,v=1/0,S=-1/0,L=1/0,Q=-1/0;A.pos>3}if(d--,c===1||c===2)(C+=A.readSVarint())S&&(S=C),(b+=A.readSVarint())Q&&(Q=b);else if(c!==7)throw new Error("unknown command "+c)}return[v,L,S,Q]},Eu.prototype.toGeoJSON=function(A,i,c){var d,C,b=this.extent*Math.pow(2,c),v=this.extent*A,S=this.extent*i,L=this.loadGeometry(),Q=Eu.types[this.type];function Z(q){for(var nt=0;nt>3;C=v===1?d.readString():v===2?d.readFloat():v===3?d.readDouble():v===4?d.readVarint64():v===5?d.readVarint():v===6?d.readSVarint():v===7?d.readBoolean():null}return C}(c))}I1.prototype.feature=function(A){if(A<0||A>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[A];var i=this._pbf.readVarint()+this._pbf.pos;return new ZS(this._pbf,i,this.extent,this._keys,this._values)};var HS=C1;function MS(A,i,c){if(A===3){var d=new HS(c,c.readVarint()+c.pos);d.length&&(i[d.name]=d)}}ic.VectorTile=function(A,i){this.layers=A.readFields(MS,{},i)},ic.VectorTileFeature=m1,ic.VectorTileLayer=C1;let NS=ic.VectorTileFeature.types,Sm=Math.pow(2,13);function Hh(A,i,c,d,C,b,v,S){A.emplaceBack(i,c,2*Math.floor(d*Sm)+v,C*Sm*2,b*Sm*2,Math.round(S))}class Fm{constructor(i){this.zoom=i.zoom,this.overscaling=i.overscaling,this.layers=i.layers,this.layerIds=this.layers.map(c=>c.id),this.index=i.index,this.hasPattern=!1,this.layoutVertexArray=new Hs,this.centroidVertexArray=new Dr,this.indexArray=new as,this.programConfigurations=new Ds(i.layers,i.zoom),this.segments=new cr,this.stateDependentLayerIds=this.layers.filter(c=>c.isStateDependent()).map(c=>c.id)}populate(i,c,d){this.features=[],this.hasPattern=Bm("fill-extrusion",this.layers,c);for(let{feature:C,id:b,index:v,sourceLayerIndex:S}of i){let L=this.layers[0]._featureFilter.needGeometry,Q=ZA(C,L);if(!this.layers[0]._featureFilter.filter(new Qr(this.zoom),Q,d))continue;let Z={id:b,sourceLayerIndex:S,index:v,geometry:L?Q.geometry:Cl(C),properties:C.properties,type:C.type,patterns:{}};this.hasPattern?this.features.push(_m("fill-extrusion",this.layers,Z,this.zoom,c)):this.addFeature(Z,Z.geometry,v,d,{}),c.featureIndex.insert(C,Z.geometry,v,S,this.index,!0)}}addFeatures(i,c,d){for(let C of this.features){let{geometry:b}=C;this.addFeature(C,b,C.index,c,d)}}update(i,c,d){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(i,c,this.stateDependentLayers,d)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(i){this.uploaded||(this.layoutVertexBuffer=i.createVertexBuffer(this.layoutVertexArray,US),this.centroidVertexBuffer=i.createVertexBuffer(this.centroidVertexArray,TS.members,!0),this.indexBuffer=i.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(i),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(i,c,d,C,b){for(let v of fA(c,500)){let S={x:0,y:0,vertexCount:0},L=0;for(let nt of v)L+=nt.length;let Q=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let nt of v){if(nt.length===0||DS(nt))continue;let lt=0;for(let Bt=0;Bt=1){let re=nt[Bt-1];if(!VS(Gt,re)){Q.vertexLength+4>cr.MAX_VERTEX_ARRAY_LENGTH&&(Q=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let Kt=Gt.sub(re)._perp()._unit(),Yt=re.dist(Gt);lt+Yt>32768&&(lt=0),Hh(this.layoutVertexArray,Gt.x,Gt.y,Kt.x,Kt.y,0,0,lt),Hh(this.layoutVertexArray,Gt.x,Gt.y,Kt.x,Kt.y,0,1,lt),S.x+=2*Gt.x,S.y+=2*Gt.y,S.vertexCount+=2,lt+=Yt,Hh(this.layoutVertexArray,re.x,re.y,Kt.x,Kt.y,0,0,lt),Hh(this.layoutVertexArray,re.x,re.y,Kt.x,Kt.y,0,1,lt),S.x+=2*re.x,S.y+=2*re.y,S.vertexCount+=2;let ge=Q.vertexLength;this.indexArray.emplaceBack(ge,ge+2,ge+1),this.indexArray.emplaceBack(ge+1,ge+2,ge+3),Q.vertexLength+=4,Q.primitiveLength+=2}}}}if(Q.vertexLength+L>cr.MAX_VERTEX_ARRAY_LENGTH&&(Q=this.segments.prepareSegment(L,this.layoutVertexArray,this.indexArray)),NS[i.type]!=="Polygon")continue;let Z=[],N=[],O=Q.vertexLength;for(let nt of v)if(nt.length!==0){nt!==v[0]&&N.push(Z.length/2);for(let lt=0;ltcn)||A.y===i.y&&(A.y<0||A.y>cn)}function DS(A){return A.every(i=>i.x<0)||A.every(i=>i.x>cn)||A.every(i=>i.y<0)||A.every(i=>i.y>cn)}let y1;oi("FillExtrusionBucket",Fm,{omit:["layers","features"]});var KS={get paint(){return y1=y1||new u({"fill-extrusion-opacity":new gi(Dt["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new _i(Dt["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new gi(Dt["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new gi(Dt["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Wl(Dt["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new _i(Dt["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new _i(Dt["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new gi(Dt["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class OS extends a{constructor(i){super(i,KS)}createBucket(i){return new Fm(i)}queryRadius(){return ec(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(i,c,d,C,b,v,S,L){let Q=ad(i,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),v.angle,S),Z=this.paint.get("fill-extrusion-height").evaluate(c,d),N=this.paint.get("fill-extrusion-base").evaluate(c,d),O=function(nt,lt,Bt,Gt){let re=[];for(let Kt of nt){let Yt=[Kt.x,Kt.y,0,1];Ad(Yt,Yt,lt),re.push(new w(Yt[0]/Yt[3],Yt[1]/Yt[3]))}return re}(Q,L),q=function(nt,lt,Bt,Gt){let re=[],Kt=[],Yt=Gt[8]*lt,ge=Gt[9]*lt,Re=Gt[10]*lt,ni=Gt[11]*lt,Gi=Gt[8]*Bt,ei=Gt[9]*Bt,qe=Gt[10]*Bt,Ii=Gt[11]*Bt;for(let hi of nt){let li=[],we=[];for(let bi of hi){let mi=bi.x,Di=bi.y,Mr=Gt[0]*mi+Gt[4]*Di+Gt[12],Zr=Gt[1]*mi+Gt[5]*Di+Gt[13],Vn=Gt[2]*mi+Gt[6]*Di+Gt[14],va=Gt[3]*mi+Gt[7]*Di+Gt[15],ls=Vn+Re,Dn=va+ni,Os=Mr+Gi,zs=Zr+ei,Ws=Vn+qe,un=va+Ii,Kn=new w((Mr+Yt)/Dn,(Zr+ge)/Dn);Kn.z=ls/Dn,li.push(Kn);let _s=new w(Os/un,zs/un);_s.z=Ws/un,we.push(_s)}re.push(li),Kt.push(we)}return[re,Kt]}(C,N,Z,L);return function(nt,lt,Bt){let Gt=1/0;xu(Bt,lt)&&(Gt=b1(Bt,lt[0]));for(let re=0;rec.id),this.index=i.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(c=>{this.gradients[c.id]={}}),this.layoutVertexArray=new ra,this.layoutVertexArray2=new ws,this.indexArray=new as,this.programConfigurations=new Ds(i.layers,i.zoom),this.segments=new cr,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(c=>c.isStateDependent()).map(c=>c.id)}populate(i,c,d){this.hasPattern=Bm("line",this.layers,c);let C=this.layers[0].layout.get("line-sort-key"),b=!C.isConstant(),v=[];for(let{feature:S,id:L,index:Q,sourceLayerIndex:Z}of i){let N=this.layers[0]._featureFilter.needGeometry,O=ZA(S,N);if(!this.layers[0]._featureFilter.filter(new Qr(this.zoom),O,d))continue;let q=b?C.evaluate(O,{},d):void 0,nt={id:L,properties:S.properties,type:S.type,sourceLayerIndex:Z,index:Q,geometry:N?O.geometry:Cl(S),patterns:{},sortKey:q};v.push(nt)}b&&v.sort((S,L)=>S.sortKey-L.sortKey);for(let S of v){let{geometry:L,index:Q,sourceLayerIndex:Z}=S;if(this.hasPattern){let N=_m("line",this.layers,S,this.zoom,c);this.patternFeatures.push(N)}else this.addFeature(S,L,Q,d,{});c.featureIndex.insert(i[Q].feature,L,Q,Z,this.index)}}update(i,c,d){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(i,c,this.stateDependentLayers,d)}addFeatures(i,c,d){for(let C of this.patternFeatures)this.addFeature(C,C.geometry,C.index,c,d)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(i){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=i.createVertexBuffer(this.layoutVertexArray2,XS)),this.layoutVertexBuffer=i.createVertexBuffer(this.layoutVertexArray,WS),this.indexBuffer=i.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(i),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(i){if(i.properties&&Object.prototype.hasOwnProperty.call(i.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(i.properties,"mapbox_clip_end"))return{start:+i.properties.mapbox_clip_start,end:+i.properties.mapbox_clip_end}}addFeature(i,c,d,C,b){let v=this.layers[0].layout,S=v.get("line-join").evaluate(i,{}),L=v.get("line-cap"),Q=v.get("line-miter-limit"),Z=v.get("line-round-limit");this.lineClips=this.lineFeatureClips(i);for(let N of c)this.addLine(N,i,S,L,Q,Z);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,i,d,b,C)}addLine(i,c,d,C,b,v){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let Gt=0;Gt=2&&i[L-1].equals(i[L-2]);)L--;let Q=0;for(;Q0;if(ni&&Gt>Q){let Ii=O.dist(q);if(Ii>2*Z){let hi=O.sub(O.sub(q)._mult(Z/Ii)._round());this.updateDistance(q,hi),this.addCurrentVertex(hi,lt,0,0,N),q=hi}}let ei=q&&nt,qe=ei?d:S?"butt":C;if(ei&&qe==="round"&&(geb&&(qe="bevel"),qe==="bevel"&&(ge>2&&(qe="flipbevel"),ge100)re=Bt.mult(-1);else{let Ii=ge*lt.add(Bt).mag()/lt.sub(Bt).mag();re._perp()._mult(Ii*(Gi?-1:1))}this.addCurrentVertex(O,re,0,0,N),this.addCurrentVertex(O,re.mult(-1),0,0,N)}else if(qe==="bevel"||qe==="fakeround"){let Ii=-Math.sqrt(ge*ge-1),hi=Gi?Ii:0,li=Gi?0:Ii;if(q&&this.addCurrentVertex(O,lt,hi,li,N),qe==="fakeround"){let we=Math.round(180*Re/Math.PI/20);for(let bi=1;bi2*Z){let hi=O.add(nt.sub(O)._mult(Z/Ii)._round());this.updateDistance(O,hi),this.addCurrentVertex(hi,Bt,0,0,N),O=hi}}}}addCurrentVertex(i,c,d,C,b,v=!1){let S=c.y*C-c.x,L=-c.y-c.x*C;this.addHalfVertex(i,c.x+c.y*d,c.y-c.x*d,v,!1,d,b),this.addHalfVertex(i,S,L,v,!0,-C,b),this.distance>v1/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(i,c,d,C,b,v))}addHalfVertex({x:i,y:c},d,C,b,v,S,L){let Q=.5*(this.lineClips?this.scaledDistance*(v1-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((i<<1)+(b?1:0),(c<<1)+(v?1:0),Math.round(63*d)+128,Math.round(63*C)+128,1+(S===0?0:S<0?-1:1)|(63&Q)<<2,Q>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let Z=L.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Z),L.primitiveLength++),v?this.e2=Z:this.e1=Z}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(i,c){this.distance+=i.dist(c),this.updateScaledDistance()}}let w1,B1;oi("LineBucket",km,{omit:["layers","patternFeatures"]});var _1={get paint(){return B1=B1||new u({"line-opacity":new _i(Dt.paint_line["line-opacity"]),"line-color":new _i(Dt.paint_line["line-color"]),"line-translate":new gi(Dt.paint_line["line-translate"]),"line-translate-anchor":new gi(Dt.paint_line["line-translate-anchor"]),"line-width":new _i(Dt.paint_line["line-width"]),"line-gap-width":new _i(Dt.paint_line["line-gap-width"]),"line-offset":new _i(Dt.paint_line["line-offset"]),"line-blur":new _i(Dt.paint_line["line-blur"]),"line-dasharray":new Jl(Dt.paint_line["line-dasharray"]),"line-pattern":new Wl(Dt.paint_line["line-pattern"]),"line-gradient":new Xl(Dt.paint_line["line-gradient"])})},get layout(){return w1=w1||new u({"line-cap":new gi(Dt.layout_line["line-cap"]),"line-join":new _i(Dt.layout_line["line-join"]),"line-miter-limit":new gi(Dt.layout_line["line-miter-limit"]),"line-round-limit":new gi(Dt.layout_line["line-round-limit"]),"line-sort-key":new _i(Dt.layout_line["line-sort-key"])})}};class qS extends _i{possiblyEvaluate(i,c){return c=new Qr(Math.floor(c.zoom),{now:c.now,fadeDuration:c.fadeDuration,zoomHistory:c.zoomHistory,transition:c.transition}),super.possiblyEvaluate(i,c)}evaluate(i,c,d,C){return c=kt({},c,{zoom:Math.floor(c.zoom)}),super.evaluate(i,c,d,C)}}let hd;class $S extends a{constructor(i){super(i,_1),this.gradientVersion=0,hd||(hd=new qS(_1.paint.properties["line-width"].specification),hd.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(i){if(i==="line-gradient"){let c=this.gradientExpression();this.stepInterpolant=!!function(d){return d._styleExpression!==void 0}(c)&&c._styleExpression.expression instanceof Ce,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(i,c){super.recalculate(i,c),this.paint._values["line-floorwidth"]=hd.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,i)}createBucket(i){return new km(i)}queryRadius(i){let c=i,d=x1(yl("line-width",this,c),yl("line-gap-width",this,c)),C=yl("line-offset",this,c);return d/2+Math.abs(C)+ec(this.paint.get("line-translate"))}queryIntersectsFeature(i,c,d,C,b,v,S){let L=ad(i,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),v.angle,S),Q=S/2*x1(this.paint.get("line-width").evaluate(c,d),this.paint.get("line-gap-width").evaluate(c,d)),Z=this.paint.get("line-offset").evaluate(c,d);return Z&&(C=function(N,O){let q=[];for(let nt=0;nt=3){for(let Bt=0;Bt0?i+2*A:A}let tF=y([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),eF=y([{name:"a_projected_pos",components:3,type:"Float32"}],4);y([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let iF=y([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);y([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let S1=y([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),rF=y([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function nF(A,i,c){return A.sections.forEach(d=>{d.text=function(C,b,v){let S=b.layout.get("text-transform").evaluate(v,{});return S==="uppercase"?C=C.toLocaleUpperCase():S==="lowercase"&&(C=C.toLocaleLowerCase()),jn.applyArabicShaping&&(C=jn.applyArabicShaping(C)),C}(d.text,i,c)}),A}y([{name:"triangle",components:3,type:"Uint16"}]),y([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{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"}]),y([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{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",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),y([{type:"Float32",name:"offsetX"}]),y([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),y([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);let Nh={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};var _n=24,F1=Gr,k1=function(A,i,c,d,C){var b,v,S=8*C-d-1,L=(1<>1,Z=-7,N=c?C-1:0,O=c?-1:1,q=A[i+N];for(N+=O,b=q&(1<<-Z)-1,q>>=-Z,Z+=S;Z>0;b=256*b+A[i+N],N+=O,Z-=8);for(v=b&(1<<-Z)-1,b>>=-Z,Z+=d;Z>0;v=256*v+A[i+N],N+=O,Z-=8);if(b===0)b=1-Q;else{if(b===L)return v?NaN:1/0*(q?-1:1);v+=Math.pow(2,d),b-=Q}return(q?-1:1)*v*Math.pow(2,b-d)},L1=function(A,i,c,d,C,b){var v,S,L,Q=8*b-C-1,Z=(1<>1,O=C===23?Math.pow(2,-24)-Math.pow(2,-77):0,q=d?0:b-1,nt=d?1:-1,lt=i<0||i===0&&1/i<0?1:0;for(i=Math.abs(i),isNaN(i)||i===1/0?(S=isNaN(i)?1:0,v=Z):(v=Math.floor(Math.log(i)/Math.LN2),i*(L=Math.pow(2,-v))<1&&(v--,L*=2),(i+=v+N>=1?O/L:O*Math.pow(2,1-N))*L>=2&&(v++,L/=2),v+N>=Z?(S=0,v=Z):v+N>=1?(S=(i*L-1)*Math.pow(2,C),v+=N):(S=i*Math.pow(2,N-1)*Math.pow(2,C),v=0));C>=8;A[c+q]=255&S,q+=nt,S/=256,C-=8);for(v=v<0;A[c+q]=255&v,q+=nt,v/=256,Q-=8);A[c+q-nt]|=128*lt};function Gr(A){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(A)?A:new Uint8Array(A||0),this.pos=0,this.type=0,this.length=this.buf.length}Gr.Varint=0,Gr.Fixed64=1,Gr.Bytes=2,Gr.Fixed32=5;var Lm=4294967296,E1=1/Lm,T1=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function bl(A){return A.type===Gr.Bytes?A.readVarint()+A.pos:A.pos+1}function Tu(A,i,c){return c?4294967296*i+(A>>>0):4294967296*(i>>>0)+(A>>>0)}function U1(A,i,c){var d=i<=16383?1:i<=2097151?2:i<=268435455?3:Math.floor(Math.log(i)/(7*Math.LN2));c.realloc(d);for(var C=c.pos-1;C>=A;C--)c.buf[C+d]=c.buf[C]}function sF(A,i){for(var c=0;c>>8,A[c+2]=i>>>16,A[c+3]=i>>>24}function Q1(A,i){return(A[i]|A[i+1]<<8|A[i+2]<<16)+(A[i+3]<<24)}Gr.prototype={destroy:function(){this.buf=null},readFields:function(A,i,c){for(c=c||this.length;this.pos>3,b=this.pos;this.type=7&d,A(C,i,this),this.pos===b&&this.skip(d)}return i},readMessage:function(A,i){return this.readFields(A,i,this.readVarint()+this.pos)},readFixed32:function(){var A=gd(this.buf,this.pos);return this.pos+=4,A},readSFixed32:function(){var A=Q1(this.buf,this.pos);return this.pos+=4,A},readFixed64:function(){var A=gd(this.buf,this.pos)+gd(this.buf,this.pos+4)*Lm;return this.pos+=8,A},readSFixed64:function(){var A=gd(this.buf,this.pos)+Q1(this.buf,this.pos+4)*Lm;return this.pos+=8,A},readFloat:function(){var A=k1(this.buf,this.pos,!0,23,4);return this.pos+=4,A},readDouble:function(){var A=k1(this.buf,this.pos,!0,52,8);return this.pos+=8,A},readVarint:function(A){var i,c,d=this.buf;return i=127&(c=d[this.pos++]),c<128?i:(i|=(127&(c=d[this.pos++]))<<7,c<128?i:(i|=(127&(c=d[this.pos++]))<<14,c<128?i:(i|=(127&(c=d[this.pos++]))<<21,c<128?i:function(C,b,v){var S,L,Q=v.buf;if(S=(112&(L=Q[v.pos++]))>>4,L<128||(S|=(127&(L=Q[v.pos++]))<<3,L<128)||(S|=(127&(L=Q[v.pos++]))<<10,L<128)||(S|=(127&(L=Q[v.pos++]))<<17,L<128)||(S|=(127&(L=Q[v.pos++]))<<24,L<128)||(S|=(1&(L=Q[v.pos++]))<<31,L<128))return Tu(C,S,b);throw new Error("Expected varint not more than 10 bytes")}(i|=(15&(c=d[this.pos]))<<28,A,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var A=this.readVarint();return A%2==1?(A+1)/-2:A/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var A=this.readVarint()+this.pos,i=this.pos;return this.pos=A,A-i>=12&&T1?function(c,d,C){return T1.decode(c.subarray(d,C))}(this.buf,i,A):function(c,d,C){for(var b="",v=d;v239?4:Z>223?3:Z>191?2:1;if(v+O>C)break;O===1?Z<128&&(N=Z):O===2?(192&(S=c[v+1]))==128&&(N=(31&Z)<<6|63&S)<=127&&(N=null):O===3?(L=c[v+2],(192&(S=c[v+1]))==128&&(192&L)==128&&((N=(15&Z)<<12|(63&S)<<6|63&L)<=2047||N>=55296&&N<=57343)&&(N=null)):O===4&&(L=c[v+2],Q=c[v+3],(192&(S=c[v+1]))==128&&(192&L)==128&&(192&Q)==128&&((N=(15&Z)<<18|(63&S)<<12|(63&L)<<6|63&Q)<=65535||N>=1114112)&&(N=null)),N===null?(N=65533,O=1):N>65535&&(N-=65536,b+=String.fromCharCode(N>>>10&1023|55296),N=56320|1023&N),b+=String.fromCharCode(N),v+=O}return b}(this.buf,i,A)},readBytes:function(){var A=this.readVarint()+this.pos,i=this.buf.subarray(this.pos,A);return this.pos=A,i},readPackedVarint:function(A,i){if(this.type!==Gr.Bytes)return A.push(this.readVarint(i));var c=bl(this);for(A=A||[];this.pos127;);else if(i===Gr.Bytes)this.pos=this.readVarint()+this.pos;else if(i===Gr.Fixed32)this.pos+=4;else{if(i!==Gr.Fixed64)throw new Error("Unimplemented type: "+i);this.pos+=8}},writeTag:function(A,i){this.writeVarint(A<<3|i)},realloc:function(A){for(var i=this.length||16;i268435455||A<0?function(i,c){var d,C;if(i>=0?(d=i%4294967296|0,C=i/4294967296|0):(C=~(-i/4294967296),4294967295^(d=~(-i%4294967296))?d=d+1|0:(d=0,C=C+1|0)),i>=18446744073709552e3||i<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");c.realloc(10),function(b,v,S){S.buf[S.pos++]=127&b|128,b>>>=7,S.buf[S.pos++]=127&b|128,b>>>=7,S.buf[S.pos++]=127&b|128,b>>>=7,S.buf[S.pos++]=127&b|128,S.buf[S.pos]=127&(b>>>=7)}(d,0,c),function(b,v){var S=(7&b)<<4;v.buf[v.pos++]|=S|((b>>>=3)?128:0),b&&(v.buf[v.pos++]=127&b|((b>>>=7)?128:0),b&&(v.buf[v.pos++]=127&b|((b>>>=7)?128:0),b&&(v.buf[v.pos++]=127&b|((b>>>=7)?128:0),b&&(v.buf[v.pos++]=127&b|((b>>>=7)?128:0),b&&(v.buf[v.pos++]=127&b)))))}(C,c)}(A,this):(this.realloc(4),this.buf[this.pos++]=127&A|(A>127?128:0),A<=127||(this.buf[this.pos++]=127&(A>>>=7)|(A>127?128:0),A<=127||(this.buf[this.pos++]=127&(A>>>=7)|(A>127?128:0),A<=127||(this.buf[this.pos++]=A>>>7&127))))},writeSVarint:function(A){this.writeVarint(A<0?2*-A-1:2*A)},writeBoolean:function(A){this.writeVarint(Boolean(A))},writeString:function(A){A=String(A),this.realloc(4*A.length),this.pos++;var i=this.pos;this.pos=function(d,C,b){for(var v,S,L=0;L55295&&v<57344){if(!S){v>56319||L+1===C.length?(d[b++]=239,d[b++]=191,d[b++]=189):S=v;continue}if(v<56320){d[b++]=239,d[b++]=191,d[b++]=189,S=v;continue}v=S-55296<<10|v-56320|65536,S=null}else S&&(d[b++]=239,d[b++]=191,d[b++]=189,S=null);v<128?d[b++]=v:(v<2048?d[b++]=v>>6|192:(v<65536?d[b++]=v>>12|224:(d[b++]=v>>18|240,d[b++]=v>>12&63|128),d[b++]=v>>6&63|128),d[b++]=63&v|128)}return b}(this.buf,A,this.pos);var c=this.pos-i;c>=128&&U1(i,c,this),this.pos=i-1,this.writeVarint(c),this.pos+=c},writeFloat:function(A){this.realloc(4),L1(this.buf,A,this.pos,!0,23,4),this.pos+=4},writeDouble:function(A){this.realloc(8),L1(this.buf,A,this.pos,!0,52,8),this.pos+=8},writeBytes:function(A){var i=A.length;this.writeVarint(i),this.realloc(i);for(var c=0;c=128&&U1(c,d,this),this.pos=c-1,this.writeVarint(d),this.pos+=d},writeMessage:function(A,i,c){this.writeTag(A,Gr.Bytes),this.writeRawMessage(i,c)},writePackedVarint:function(A,i){i.length&&this.writeMessage(A,sF,i)},writePackedSVarint:function(A,i){i.length&&this.writeMessage(A,oF,i)},writePackedBoolean:function(A,i){i.length&&this.writeMessage(A,lF,i)},writePackedFloat:function(A,i){i.length&&this.writeMessage(A,aF,i)},writePackedDouble:function(A,i){i.length&&this.writeMessage(A,AF,i)},writePackedFixed32:function(A,i){i.length&&this.writeMessage(A,cF,i)},writePackedSFixed32:function(A,i){i.length&&this.writeMessage(A,uF,i)},writePackedFixed64:function(A,i){i.length&&this.writeMessage(A,hF,i)},writePackedSFixed64:function(A,i){i.length&&this.writeMessage(A,gF,i)},writeBytesField:function(A,i){this.writeTag(A,Gr.Bytes),this.writeBytes(i)},writeFixed32Field:function(A,i){this.writeTag(A,Gr.Fixed32),this.writeFixed32(i)},writeSFixed32Field:function(A,i){this.writeTag(A,Gr.Fixed32),this.writeSFixed32(i)},writeFixed64Field:function(A,i){this.writeTag(A,Gr.Fixed64),this.writeFixed64(i)},writeSFixed64Field:function(A,i){this.writeTag(A,Gr.Fixed64),this.writeSFixed64(i)},writeVarintField:function(A,i){this.writeTag(A,Gr.Varint),this.writeVarint(i)},writeSVarintField:function(A,i){this.writeTag(A,Gr.Varint),this.writeSVarint(i)},writeStringField:function(A,i){this.writeTag(A,Gr.Bytes),this.writeString(i)},writeFloatField:function(A,i){this.writeTag(A,Gr.Fixed32),this.writeFloat(i)},writeDoubleField:function(A,i){this.writeTag(A,Gr.Fixed64),this.writeDouble(i)},writeBooleanField:function(A,i){this.writeVarintField(A,Boolean(i))}};var Em=p(F1);let Tm=3;function dF(A,i,c){A===1&&c.readMessage(pF,i)}function pF(A,i,c){if(A===3){let{id:d,bitmap:C,width:b,height:v,left:S,top:L,advance:Q}=c.readMessage(fF,{});i.push({id:d,bitmap:new Rh({width:b+2*Tm,height:v+2*Tm},C),metrics:{width:b,height:v,left:S,top:L,advance:Q}})}}function fF(A,i,c){A===1?i.id=c.readVarint():A===2?i.bitmap=c.readBytes():A===3?i.width=c.readVarint():A===4?i.height=c.readVarint():A===5?i.left=c.readSVarint():A===6?i.top=c.readSVarint():A===7&&(i.advance=c.readVarint())}let R1=Tm;function G1(A){let i=0,c=0;for(let v of A)i+=v.w*v.h,c=Math.max(c,v.w);A.sort((v,S)=>S.h-v.h);let d=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(i/.95)),c),h:1/0}],C=0,b=0;for(let v of A)for(let S=d.length-1;S>=0;S--){let L=d[S];if(!(v.w>L.w||v.h>L.h)){if(v.x=L.x,v.y=L.y,b=Math.max(b,v.y+v.h),C=Math.max(C,v.x+v.w),v.w===L.w&&v.h===L.h){let Q=d.pop();S=0&&d>=i&&pd[this.text.charCodeAt(d)];d--)c--;this.text=this.text.substring(i,c),this.sectionIndex=this.sectionIndex.slice(i,c)}substring(i,c){let d=new Qu;return d.text=this.text.substring(i,c),d.sectionIndex=this.sectionIndex.slice(i,c),d.sections=this.sections,d}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((i,c)=>Math.max(i,this.sections[c].scale),0)}addTextSection(i,c){this.text+=i.text,this.sections.push(Dh.forText(i.scale,i.fontStack||c));let d=this.sections.length-1;for(let C=0;C=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function dd(A,i,c,d,C,b,v,S,L,Q,Z,N,O,q,nt){let lt=Qu.fromFeature(A,C),Bt;N===l.ah.vertical&<.verticalizePunctuation();let{processBidirectionalText:Gt,processStyledBidirectionalText:re}=jn;if(Gt&<.sections.length===1){Bt=[];let ge=Gt(lt.toString(),Qm(lt,Q,b,i,d,q));for(let Re of ge){let ni=new Qu;ni.text=Re,ni.sections=lt.sections;for(let Gi=0;Gi0&&vl>us&&(us=vl)}else{let la=ni[yr.fontStack],$n=la&&la[Wr];if($n&&$n.rect)Pu=$n.rect,ln=$n.metrics;else{let vl=Re[yr.fontStack],Xh=vl&&vl[Wr];if(!Xh)continue;ln=Xh.metrics}No=(Kn-yr.scale)*_n}wa?(ge.verticalizable=!0,Js.push({glyph:Wr,imageName:MA,x:Di,y:Mr+No,vertical:wa,scale:yr.scale,fontStack:yr.fontStack,sectionIndex:Kr,metrics:ln,rect:Pu}),Di+=NA*yr.scale+we):(Js.push({glyph:Wr,imageName:MA,x:Di,y:Mr+No,vertical:wa,scale:yr.scale,fontStack:yr.fontStack,sectionIndex:Kr,metrics:ln,rect:Pu}),Di+=ln.advance*yr.scale+we)}Js.length!==0&&(Zr=Math.max(Di-we,Zr),yF(Js,0,Js.length-1,va,us)),Di=0;let Aa=qe*Kn+us;cs.lineOffset=Math.max(us,_s),Mr+=Aa,Vn=Math.max(Aa,Vn),++ls}var Dn;let Os=Mr-Vh,{horizontalAlign:zs,verticalAlign:Ws}=Rm(Ii);(function(un,Kn,_s,cs,Js,us,Aa,ho,yr){let Kr=(Kn-_s)*Js,Wr=0;Wr=us!==Aa?-ho*cs-Vh:(-cs*yr+.5)*Aa;for(let No of un)for(let ln of No.positionedGlyphs)ln.x+=Kr,ln.y+=Wr})(ge.positionedLines,va,zs,Ws,Zr,Vn,qe,Os,ei.length),ge.top+=-Ws*Os,ge.bottom=ge.top+Os,ge.left+=-zs*Zr,ge.right=ge.left+Zr}(Yt,i,c,d,Bt,v,S,L,N,Q,O,nt),!function(ge){for(let Re of ge)if(Re.positionedGlyphs.length!==0)return!1;return!0}(Kt)&&Yt}let pd={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},mF={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},CF={40:!0};function P1(A,i,c,d,C,b){if(i.imageName){let v=d[i.imageName];return v?v.displaySize[0]*i.scale*_n/b+C:0}{let v=c[i.fontStack],S=v&&v[A];return S?S.metrics.advance*i.scale+C:0}}function H1(A,i,c,d){let C=Math.pow(A-i,2);return d?A=0,Q=0;for(let N=0;NQ){let Z=Math.ceil(b/Q);C*=Z/v,v=Z}return{x1:d,y1:C,x2:d+b,y2:C+v}}function D1(A,i,c,d,C,b){let v=A.image,S;if(v.content){let Bt=v.content,Gt=v.pixelRatio||1;S=[Bt[0]/Gt,Bt[1]/Gt,v.displaySize[0]-Bt[2]/Gt,v.displaySize[1]-Bt[3]/Gt]}let L=i.left*b,Q=i.right*b,Z,N,O,q;c==="width"||c==="both"?(q=C[0]+L-d[3],N=C[0]+Q+d[1]):(q=C[0]+(L+Q-v.displaySize[0])/2,N=q+v.displaySize[0]);let nt=i.top*b,lt=i.bottom*b;return c==="height"||c==="both"?(Z=C[1]+nt-d[0],O=C[1]+lt+d[2]):(Z=C[1]+(nt+lt-v.displaySize[1])/2,O=Z+v.displaySize[1]),{image:v,top:Z,right:N,bottom:O,left:q,collisionPadding:S}}let Kh=255,HA=128,nc=Kh*HA;function K1(A,i){let{expression:c}=i;if(c.kind==="constant")return{kind:"constant",layoutSize:c.evaluate(new Qr(A+1))};if(c.kind==="source")return{kind:"source"};{let{zoomStops:d,interpolationType:C}=c,b=0;for(;bv.id),this.index=i.index,this.pixelRatio=i.pixelRatio,this.sourceLayerIndex=i.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Cm([]),this.placementViewportMatrix=Cm([]);let c=this.layers[0]._unevaluatedLayout._values;this.textSizeData=K1(this.zoom,c["text-size"]),this.iconSizeData=K1(this.zoom,c["icon-size"]);let d=this.layers[0].layout,C=d.get("symbol-sort-key"),b=d.get("symbol-z-order");this.canOverlap=Gm(d,"text-overlap","text-allow-overlap")!=="never"||Gm(d,"icon-overlap","icon-allow-overlap")!=="never"||d.get("text-ignore-placement")||d.get("icon-ignore-placement"),this.sortFeaturesByKey=b!=="viewport-y"&&!C.isConstant(),this.sortFeaturesByY=(b==="viewport-y"||b==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,d.get("symbol-placement")==="point"&&(this.writingModes=d.get("text-writing-mode").map(v=>l.ah[v])),this.stateDependentLayerIds=this.layers.filter(v=>v.isStateDependent()).map(v=>v.id),this.sourceID=i.sourceID}createArrays(){this.text=new Pm(new Ds(this.layers,this.zoom,i=>/^text/.test(i))),this.icon=new Pm(new Ds(this.layers,this.zoom,i=>/^icon/.test(i))),this.glyphOffsetArray=new hr,this.lineVertexArray=new Lr,this.symbolInstances=new fi,this.textAnchorOffsets=new er}calculateGlyphDependencies(i,c,d,C,b){for(let v=0;v0)&&(v.value.kind!=="constant"||v.value.value.length>0),Z=L.value.kind!=="constant"||!!L.value.value||Object.keys(L.parameters).length>0,N=b.get("symbol-sort-key");if(this.features=[],!Q&&!Z)return;let O=c.iconDependencies,q=c.glyphDependencies,nt=c.availableImages,lt=new Qr(this.zoom);for(let{feature:Bt,id:Gt,index:re,sourceLayerIndex:Kt}of i){let Yt=C._featureFilter.needGeometry,ge=ZA(Bt,Yt);if(!C._featureFilter.filter(lt,ge,d))continue;let Re,ni;if(Yt||(ge.geometry=Cl(Bt)),Q){let ei=C.getValueAndResolveTokens("text-field",ge,d,nt),qe=jr.factory(ei),Ii=this.hasRTLText=this.hasRTLText||BF(qe);(!Ii||jn.getRTLTextPluginStatus()==="unavailable"||Ii&&jn.isParsed())&&(Re=nF(qe,C,ge))}if(Z){let ei=C.getValueAndResolveTokens("icon-image",ge,d,nt);ni=ei instanceof pn?ei:pn.fromString(ei)}if(!Re&&!ni)continue;let Gi=this.sortFeaturesByKey?N.evaluate(ge,{},d):void 0;if(this.features.push({id:Gt,text:Re,icon:ni,index:re,sourceLayerIndex:Kt,geometry:ge.geometry,properties:Bt.properties,type:vF[Bt.type],sortKey:Gi}),ni&&(O[ni.name]=!0),Re){let ei=v.evaluate(ge,{},d).join(","),qe=b.get("text-rotation-alignment")!=="viewport"&&b.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(l.ah.vertical)>=0;for(let Ii of Re.sections)if(Ii.image)O[Ii.image.name]=!0;else{let hi=Po(Re.toString()),li=Ii.fontStack||ei,we=q[li]=q[li]||{};this.calculateGlyphDependencies(Ii.text,we,qe,this.allowVerticalPlacement,hi)}}}b.get("symbol-placement")==="line"&&(this.features=function(Bt){let Gt={},re={},Kt=[],Yt=0;function ge(ei){Kt.push(Bt[ei]),Yt++}function Re(ei,qe,Ii){let hi=re[ei];return delete re[ei],re[qe]=hi,Kt[hi].geometry[0].pop(),Kt[hi].geometry[0]=Kt[hi].geometry[0].concat(Ii[0]),hi}function ni(ei,qe,Ii){let hi=Gt[qe];return delete Gt[qe],Gt[ei]=hi,Kt[hi].geometry[0].shift(),Kt[hi].geometry[0]=Ii[0].concat(Kt[hi].geometry[0]),hi}function Gi(ei,qe,Ii){let hi=Ii?qe[0][qe[0].length-1]:qe[0][0];return`${ei}:${hi.x}:${hi.y}`}for(let ei=0;eiei.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((Bt,Gt)=>Bt.sortKey-Gt.sortKey)}update(i,c,d){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(i,c,this.layers,d),this.icon.programConfigurations.updatePaintArrays(i,c,this.layers,d))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(i){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(i),this.iconCollisionBox.upload(i)),this.text.upload(i,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(i,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(i,c){let d=this.lineVertexArray.length;if(i.segment!==void 0){let C=i.dist(c[i.segment+1]),b=i.dist(c[i.segment]),v={};for(let S=i.segment+1;S=0;S--)v[S]={x:c[S].x,y:c[S].y,tileUnitDistanceFromAnchor:b},S>0&&(b+=c[S-1].dist(c[S]));for(let S=0;S0}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(i,c){let d=i.placedSymbolArray.get(c),C=d.vertexStartIndex+4*d.numGlyphs;for(let b=d.vertexStartIndex;bC[S]-C[L]||b[L]-b[S]),v}addToSortKeyRanges(i,c){let d=this.sortKeyRanges[this.sortKeyRanges.length-1];d&&d.sortKey===c?d.symbolInstanceEnd=i+1:this.sortKeyRanges.push({sortKey:c,symbolInstanceStart:i,symbolInstanceEnd:i+1})}sortFeatures(i){if(this.sortFeaturesByY&&this.sortedAngle!==i&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(i),this.sortedAngle=i,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let c of this.symbolInstanceIndexes){let d=this.symbolInstances.get(c);this.featureSortOrder.push(d.featureIndex),[d.rightJustifiedTextSymbolIndex,d.centerJustifiedTextSymbolIndex,d.leftJustifiedTextSymbolIndex].forEach((C,b,v)=>{C>=0&&v.indexOf(C)===b&&this.addIndicesForPlacedSymbol(this.text,C)}),d.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,d.verticalPlacedTextSymbolIndex),d.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,d.placedIconSymbolIndex),d.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,d.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let O1,z1;oi("SymbolBucket",Ru,{omit:["layers","collisionBoxArray","features","compareText"]}),Ru.MAX_GLYPHS=65535,Ru.addDynamicAttributes=Zm;var Mm={get paint(){return z1=z1||new u({"icon-opacity":new _i(Dt.paint_symbol["icon-opacity"]),"icon-color":new _i(Dt.paint_symbol["icon-color"]),"icon-halo-color":new _i(Dt.paint_symbol["icon-halo-color"]),"icon-halo-width":new _i(Dt.paint_symbol["icon-halo-width"]),"icon-halo-blur":new _i(Dt.paint_symbol["icon-halo-blur"]),"icon-translate":new gi(Dt.paint_symbol["icon-translate"]),"icon-translate-anchor":new gi(Dt.paint_symbol["icon-translate-anchor"]),"text-opacity":new _i(Dt.paint_symbol["text-opacity"]),"text-color":new _i(Dt.paint_symbol["text-color"],{runtimeType:rr,getOverride:A=>A.textColor,hasOverride:A=>!!A.textColor}),"text-halo-color":new _i(Dt.paint_symbol["text-halo-color"]),"text-halo-width":new _i(Dt.paint_symbol["text-halo-width"]),"text-halo-blur":new _i(Dt.paint_symbol["text-halo-blur"]),"text-translate":new gi(Dt.paint_symbol["text-translate"]),"text-translate-anchor":new gi(Dt.paint_symbol["text-translate-anchor"])})},get layout(){return O1=O1||new u({"symbol-placement":new gi(Dt.layout_symbol["symbol-placement"]),"symbol-spacing":new gi(Dt.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new gi(Dt.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new _i(Dt.layout_symbol["symbol-sort-key"]),"symbol-z-order":new gi(Dt.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new gi(Dt.layout_symbol["icon-allow-overlap"]),"icon-overlap":new gi(Dt.layout_symbol["icon-overlap"]),"icon-ignore-placement":new gi(Dt.layout_symbol["icon-ignore-placement"]),"icon-optional":new gi(Dt.layout_symbol["icon-optional"]),"icon-rotation-alignment":new gi(Dt.layout_symbol["icon-rotation-alignment"]),"icon-size":new _i(Dt.layout_symbol["icon-size"]),"icon-text-fit":new gi(Dt.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new gi(Dt.layout_symbol["icon-text-fit-padding"]),"icon-image":new _i(Dt.layout_symbol["icon-image"]),"icon-rotate":new _i(Dt.layout_symbol["icon-rotate"]),"icon-padding":new _i(Dt.layout_symbol["icon-padding"]),"icon-keep-upright":new gi(Dt.layout_symbol["icon-keep-upright"]),"icon-offset":new _i(Dt.layout_symbol["icon-offset"]),"icon-anchor":new _i(Dt.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new gi(Dt.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new gi(Dt.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new gi(Dt.layout_symbol["text-rotation-alignment"]),"text-field":new _i(Dt.layout_symbol["text-field"]),"text-font":new _i(Dt.layout_symbol["text-font"]),"text-size":new _i(Dt.layout_symbol["text-size"]),"text-max-width":new _i(Dt.layout_symbol["text-max-width"]),"text-line-height":new gi(Dt.layout_symbol["text-line-height"]),"text-letter-spacing":new _i(Dt.layout_symbol["text-letter-spacing"]),"text-justify":new _i(Dt.layout_symbol["text-justify"]),"text-radial-offset":new _i(Dt.layout_symbol["text-radial-offset"]),"text-variable-anchor":new gi(Dt.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new _i(Dt.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new _i(Dt.layout_symbol["text-anchor"]),"text-max-angle":new gi(Dt.layout_symbol["text-max-angle"]),"text-writing-mode":new gi(Dt.layout_symbol["text-writing-mode"]),"text-rotate":new _i(Dt.layout_symbol["text-rotate"]),"text-padding":new gi(Dt.layout_symbol["text-padding"]),"text-keep-upright":new gi(Dt.layout_symbol["text-keep-upright"]),"text-transform":new _i(Dt.layout_symbol["text-transform"]),"text-offset":new _i(Dt.layout_symbol["text-offset"]),"text-allow-overlap":new gi(Dt.layout_symbol["text-allow-overlap"]),"text-overlap":new gi(Dt.layout_symbol["text-overlap"]),"text-ignore-placement":new gi(Dt.layout_symbol["text-ignore-placement"]),"text-optional":new gi(Dt.layout_symbol["text-optional"])})}};class W1{constructor(i){if(i.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=i.property.overrides?i.property.overrides.runtimeType:Ei,this.defaultValue=i}evaluate(i){if(i.formattedSection){let c=this.defaultValue.property.overrides;if(c&&c.hasOverride(i.formattedSection))return c.getOverride(i.formattedSection)}return i.feature&&i.featureState?this.defaultValue.evaluate(i.feature,i.featureState):this.defaultValue.property.specification.default}eachChild(i){this.defaultValue.isConstant()||i(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}oi("FormatSectionOverride",W1,{omit:["defaultValue"]});class md extends a{constructor(i){super(i,Mm)}recalculate(i,c){if(super.recalculate(i,c),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")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){let d=this.layout.get("text-writing-mode");if(d){let C=[];for(let b of d)C.indexOf(b)<0&&C.push(b);this.layout._values["text-writing-mode"]=C}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(i,c,d,C){let b=this.layout.get(i).evaluate(c,{},d,C),v=this._unevaluatedLayout._values[i];return v.isDataDriven()||ea(v.value)||!b?b:function(S,L){return L.replace(/{([^{}]+)}/g,(Q,Z)=>S&&Z in S?String(S[Z]):"")}(c.properties,b)}createBucket(i){return new Ru(i)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let i of Mm.paint.overridableProperties){if(!md.hasPaintOverride(this.layout,i))continue;let c=this.paint.get(i),d=new W1(c),C=new rs(d,c.property.specification),b=null;b=c.value.kind==="constant"||c.value.kind==="source"?new vs("source",C):new Mn("composite",C,c.value.zoomStops),this.paint._values[i]=new Ho(c.property,b,c.parameters)}}_handleOverridablePaintPropertyUpdate(i,c,d){return!(!this.layout||c.isDataDriven()||d.isDataDriven())&&md.hasPaintOverride(this.layout,i)}static hasPaintOverride(i,c){let d=i.get("text-field"),C=Mm.paint.properties[c],b=!1,v=S=>{for(let L of S)if(C.overrides&&C.overrides.hasOverride(L))return void(b=!0)};if(d.value.kind==="constant"&&d.value.value instanceof jr)v(d.value.value.sections);else if(d.value.kind==="source"){let S=Q=>{b||(Q instanceof Jn&&Or(Q.value)===zi?v(Q.value.sections):Q instanceof Bo?v(Q.sections):Q.eachChild(S))},L=d.value;L._styleExpression&&S(L._styleExpression.expression)}return b}}let J1;var _F={get paint(){return J1=J1||new u({"background-color":new gi(Dt.paint_background["background-color"]),"background-pattern":new Jl(Dt.paint_background["background-pattern"]),"background-opacity":new gi(Dt.paint_background["background-opacity"])})}};class xF extends a{constructor(i){super(i,_F)}}let X1;var SF={get paint(){return X1=X1||new u({"raster-opacity":new gi(Dt.paint_raster["raster-opacity"]),"raster-hue-rotate":new gi(Dt.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new gi(Dt.paint_raster["raster-brightness-min"]),"raster-brightness-max":new gi(Dt.paint_raster["raster-brightness-max"]),"raster-saturation":new gi(Dt.paint_raster["raster-saturation"]),"raster-contrast":new gi(Dt.paint_raster["raster-contrast"]),"raster-resampling":new gi(Dt.paint_raster["raster-resampling"]),"raster-fade-duration":new gi(Dt.paint_raster["raster-fade-duration"])})}};class FF extends a{constructor(i){super(i,SF)}}class kF extends a{constructor(i){super(i,{}),this.onAdd=c=>{this.implementation.onAdd&&this.implementation.onAdd(c,c.painter.context.gl)},this.onRemove=c=>{this.implementation.onRemove&&this.implementation.onRemove(c,c.painter.context.gl)},this.implementation=i}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class LF{constructor(i){this._methodToThrottle=i,this._triggered=!1,typeof MessageChannel<"u"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._methodToThrottle()},0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let Nm=63710088e-1;class sc{constructor(i,c){if(isNaN(i)||isNaN(c))throw new Error(`Invalid LngLat object: (${i}, ${c})`);if(this.lng=+i,this.lat=+c,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new sc(bt(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(i){let c=Math.PI/180,d=this.lat*c,C=i.lat*c,b=Math.sin(d)*Math.sin(C)+Math.cos(d)*Math.cos(C)*Math.cos((i.lng-this.lng)*c);return Nm*Math.acos(Math.min(b,1))}static convert(i){if(i instanceof sc)return i;if(Array.isArray(i)&&(i.length===2||i.length===3))return new sc(Number(i[0]),Number(i[1]));if(!Array.isArray(i)&&typeof i=="object"&&i!==null)return new sc(Number("lng"in i?i.lng:i.lon),Number(i.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let Y1=2*Math.PI*Nm;function j1(A){return Y1*Math.cos(A*Math.PI/180)}function q1(A){return(180+A)/360}function $1(A){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+A*Math.PI/360)))/360}function tb(A,i){return A/j1(i)}function Vm(A){return 360/Math.PI*Math.atan(Math.exp((180-360*A)*Math.PI/180))-90}class Oh{constructor(i,c,d=0){this.x=+i,this.y=+c,this.z=+d}static fromLngLat(i,c=0){let d=sc.convert(i);return new Oh(q1(d.lng),$1(d.lat),tb(c,d.lat))}toLngLat(){return new sc(360*this.x-180,Vm(this.y))}toAltitude(){return this.z*j1(Vm(this.y))}meterInMercatorCoordinateUnits(){return 1/Y1*(i=Vm(this.y),1/Math.cos(i*Math.PI/180));var i}}function eb(A,i,c){var d=2*Math.PI*6378137/256/Math.pow(2,c);return[A*d-2*Math.PI*6378137/2,i*d-2*Math.PI*6378137/2]}class Dm{constructor(i,c,d){if(!function(C,b,v){return!(C<0||C>25||v<0||v>=Math.pow(2,C)||b<0||b>=Math.pow(2,C))}(i,c,d))throw new Error(`x=${c}, y=${d}, z=${i} outside of bounds. 0<=x<${Math.pow(2,i)}, 0<=y<${Math.pow(2,i)} 0<=z<=25 `);this.z=i,this.x=c,this.y=d,this.key=zh(0,i,i,c,d)}equals(i){return this.z===i.z&&this.x===i.x&&this.y===i.y}url(i,c,d){let C=(v=this.y,S=this.z,L=eb(256*(b=this.x),256*(v=Math.pow(2,S)-v-1),S),Q=eb(256*(b+1),256*(v+1),S),L[0]+","+L[1]+","+Q[0]+","+Q[1]);var b,v,S,L,Q;let Z=function(N,O,q){let nt,lt="";for(let Bt=N;Bt>0;Bt--)nt=1<1?"@2x":"").replace(/{quadkey}/g,Z).replace(/{bbox-epsg-3857}/g,C)}isChildOf(i){let c=this.z-i.z;return c>0&&i.x===this.x>>c&&i.y===this.y>>c}getTilePoint(i){let c=Math.pow(2,this.z);return new w((i.x*c-this.x)*cn,(i.y*c-this.y)*cn)}toString(){return`${this.z}/${this.x}/${this.y}`}}class ib{constructor(i,c){this.wrap=i,this.canonical=c,this.key=zh(i,c.z,c.z,c.x,c.y)}}class aa{constructor(i,c,d,C,b){if(i= z; overscaledZ = ${i}; z = ${d}`);this.overscaledZ=i,this.wrap=c,this.canonical=new Dm(d,+C,+b),this.key=zh(c,i,d,C,b)}clone(){return new aa(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(i){return this.overscaledZ===i.overscaledZ&&this.wrap===i.wrap&&this.canonical.equals(i.canonical)}scaledTo(i){if(i>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${i}; overscaledZ = ${this.overscaledZ}`);let c=this.canonical.z-i;return i>this.canonical.z?new aa(i,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new aa(i,this.wrap,i,this.canonical.x>>c,this.canonical.y>>c)}calculateScaledKey(i,c){if(i>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${i}; overscaledZ = ${this.overscaledZ}`);let d=this.canonical.z-i;return i>this.canonical.z?zh(this.wrap*+c,i,this.canonical.z,this.canonical.x,this.canonical.y):zh(this.wrap*+c,i,i,this.canonical.x>>d,this.canonical.y>>d)}isChildOf(i){if(i.wrap!==this.wrap)return!1;let c=this.canonical.z-i.canonical.z;return i.overscaledZ===0||i.overscaledZ>c&&i.canonical.y===this.canonical.y>>c}children(i){if(this.overscaledZ>=i)return[new aa(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let c=this.canonical.z+1,d=2*this.canonical.x,C=2*this.canonical.y;return[new aa(c,this.wrap,c,d,C),new aa(c,this.wrap,c,d+1,C),new aa(c,this.wrap,c,d,C+1),new aa(c,this.wrap,c,d+1,C+1)]}isLessThan(i){return this.wrapi.wrap)&&(this.overscaledZi.overscaledZ)&&(this.canonical.xi.canonical.x)&&this.canonical.ythis.max&&(this.max=N),N=this.dim+1||c<-1||c>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(c+1)*this.stride+(i+1)}unpack(i,c,d){return i*this.redFactor+c*this.greenFactor+d*this.blueFactor-this.baseShift}getPixels(){return new oa({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(i,c,d){if(this.dim!==i.dim)throw new Error("dem dimension mismatch");let C=c*this.dim,b=c*this.dim+this.dim,v=d*this.dim,S=d*this.dim+this.dim;switch(c){case-1:C=b-1;break;case 1:b=C+1}switch(d){case-1:v=S-1;break;case 1:S=v+1}let L=-c*this.dim,Q=-d*this.dim;for(let Z=v;Z=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${i} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[i]}}class sb{constructor(i,c,d,C,b){this.type="Feature",this._vectorTileFeature=i,i._z=c,i._x=d,i._y=C,this.properties=i.properties,this.id=b}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(i){this._geometry=i}toJSON(){let i={geometry:this.geometry};for(let c in this)c!=="_geometry"&&c!=="_vectorTileFeature"&&(i[c]=this[c]);return i}}class ob{constructor(i,c){this.tileID=i,this.x=i.canonical.x,this.y=i.canonical.y,this.z=i.canonical.z,this.grid=new Na(cn,16,0),this.grid3D=new Na(cn,16,0),this.featureIndexArray=new Hr,this.promoteId=c}insert(i,c,d,C,b,v){let S=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(d,C,b);let L=v?this.grid3D:this.grid;for(let Q=0;Q=0&&N[3]>=0&&L.insert(S,N[0],N[1],N[2],N[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new ic.VectorTile(new Em(this.rawTileData)).layers,this.sourceLayerCoder=new nb(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(i,c,d,C){this.loadVTLayers();let b=i.params||{},v=cn/i.tileSize/i.scale,S=Za(b.filter),L=i.queryGeometry,Q=i.queryPadding*v,Z=Ab(L),N=this.grid.query(Z.minX-Q,Z.minY-Q,Z.maxX+Q,Z.maxY+Q),O=Ab(i.cameraQueryGeometry),q=this.grid3D.query(O.minX-Q,O.minY-Q,O.maxX+Q,O.maxY+Q,(Bt,Gt,re,Kt)=>function(Yt,ge,Re,ni,Gi){for(let qe of Yt)if(ge<=qe.x&&Re<=qe.y&&ni>=qe.x&&Gi>=qe.y)return!0;let ei=[new w(ge,Re),new w(ge,Gi),new w(ni,Gi),new w(ni,Re)];if(Yt.length>2){for(let qe of ei)if(Il(Yt,qe))return!0}for(let qe=0;qe(Kt||(Kt=Cl(Yt)),ge.queryIntersectsFeature(L,Yt,Re,Kt,this.z,i.transform,v,i.pixelPosMatrix)))}return nt}loadMatchingFeature(i,c,d,C,b,v,S,L,Q,Z,N){let O=this.bucketLayerIDs[c];if(v&&!function(Bt,Gt){for(let re=0;re=0)return!0;return!1}(v,O))return;let q=this.sourceLayerCoder.decode(d),nt=this.vtLayers[q].feature(C);if(b.needGeometry){let Bt=ZA(nt,!0);if(!b.filter(new Qr(this.tileID.overscaledZ),Bt,this.tileID.canonical))return}else if(!b.filter(new Qr(this.tileID.overscaledZ),nt))return;let lt=this.getId(nt,q);for(let Bt=0;Bt{let S=i instanceof dl?i.get(v):null;return S&&S.evaluate?S.evaluate(c,d,C):S})}function Ab(A){let i=1/0,c=1/0,d=-1/0,C=-1/0;for(let b of A)i=Math.min(i,b.x),c=Math.min(c,b.y),d=Math.max(d,b.x),C=Math.max(C,b.y);return{minX:i,minY:c,maxX:d,maxY:C}}function EF(A,i){return i-A}function lb(A,i,c,d,C){let b=[];for(let v=0;v=d&&N.x>=d||(Z.x>=d?Z=new w(d,Z.y+(d-Z.x)/(N.x-Z.x)*(N.y-Z.y))._round():N.x>=d&&(N=new w(d,Z.y+(d-Z.x)/(N.x-Z.x)*(N.y-Z.y))._round()),Z.y>=C&&N.y>=C||(Z.y>=C?Z=new w(Z.x+(C-Z.y)/(N.y-Z.y)*(N.x-Z.x),C)._round():N.y>=C&&(N=new w(Z.x+(C-Z.y)/(N.y-Z.y)*(N.x-Z.x),C)._round()),L&&Z.equals(L[L.length-1])||(L=[Z],b.push(L)),L.push(N)))))}}return b}oi("FeatureIndex",ob,{omit:["rawTileData","sourceLayerCoder"]});class oc extends w{constructor(i,c,d,C){super(i,c),this.angle=d,C!==void 0&&(this.segment=C)}clone(){return new oc(this.x,this.y,this.angle,this.segment)}}function cb(A,i,c,d,C){if(i.segment===void 0||c===0)return!0;let b=i,v=i.segment+1,S=0;for(;S>-c/2;){if(v--,v<0)return!1;S-=A[v].dist(b),b=A[v]}S+=A[v].dist(A[v+1]),v++;let L=[],Q=0;for(;Sd;)Q-=L.shift().angleDelta;if(Q>C)return!1;v++,S+=Z.dist(N)}return!0}function ub(A){let i=0;for(let c=0;cQ){let nt=(Q-L)/q,lt=ai.number(N.x,O.x,nt),Bt=ai.number(N.y,O.y,nt),Gt=new oc(lt,Bt,O.angleTo(N),Z);return Gt._round(),!v||cb(A,Gt,S,v,i)?Gt:void 0}L+=q}}function UF(A,i,c,d,C,b,v,S,L){let Q=hb(d,b,v),Z=gb(d,C),N=Z*v,O=A[0].x===0||A[0].x===L||A[0].y===0||A[0].y===L;return i-N=0&&Yt=0&&ge=0&&O+Q<=Z){let Re=new oc(Yt,ge,re,nt);Re._round(),d&&!cb(A,Re,b,d,C)||q.push(Re)}}N+=Gt}return S||q.length||v||(q=db(A,N/2,c,d,C,b,v,!0,L)),q}oi("Anchor",oc);let Gu=uo;function pb(A,i,c,d){let C=[],b=A.image,v=b.pixelRatio,S=b.paddedRect.w-2*Gu,L=b.paddedRect.h-2*Gu,Q={x1:A.left,y1:A.top,x2:A.right,y2:A.bottom},Z=b.stretchX||[[0,S]],N=b.stretchY||[[0,L]],O=(we,bi)=>we+bi[1]-bi[0],q=Z.reduce(O,0),nt=N.reduce(O,0),lt=S-q,Bt=L-nt,Gt=0,re=q,Kt=0,Yt=nt,ge=0,Re=lt,ni=0,Gi=Bt;if(b.content&&d){let we=b.content,bi=we[2]-we[0],mi=we[3]-we[1];(b.textFitWidth||b.textFitHeight)&&(Q=V1(A)),Gt=Cd(Z,0,we[0]),Kt=Cd(N,0,we[1]),re=Cd(Z,we[0],we[2]),Yt=Cd(N,we[1],we[3]),ge=we[0]-Gt,ni=we[1]-Kt,Re=bi-re,Gi=mi-Yt}let ei=Q.x1,qe=Q.y1,Ii=Q.x2-ei,hi=Q.y2-qe,li=(we,bi,mi,Di)=>{let Mr=Id(we.stretch-Gt,re,Ii,ei),Zr=yd(we.fixed-ge,Re,we.stretch,q),Vn=Id(bi.stretch-Kt,Yt,hi,qe),va=yd(bi.fixed-ni,Gi,bi.stretch,nt),ls=Id(mi.stretch-Gt,re,Ii,ei),Dn=yd(mi.fixed-ge,Re,mi.stretch,q),Os=Id(Di.stretch-Kt,Yt,hi,qe),zs=yd(Di.fixed-ni,Gi,Di.stretch,nt),Ws=new w(Mr,Vn),un=new w(ls,Vn),Kn=new w(ls,Os),_s=new w(Mr,Os),cs=new w(Zr/v,va/v),Js=new w(Dn/v,zs/v),us=i*Math.PI/180;if(us){let yr=Math.sin(us),Kr=Math.cos(us),Wr=[Kr,-yr,yr,Kr];Ws._matMult(Wr),un._matMult(Wr),_s._matMult(Wr),Kn._matMult(Wr)}let Aa=we.stretch+we.fixed,ho=bi.stretch+bi.fixed;return{tl:Ws,tr:un,bl:_s,br:Kn,tex:{x:b.paddedRect.x+Gu+Aa,y:b.paddedRect.y+Gu+ho,w:mi.stretch+mi.fixed-Aa,h:Di.stretch+Di.fixed-ho},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:cs,pixelOffsetBR:Js,minFontScaleX:Re/v/Ii,minFontScaleY:Gi/v/hi,isSDF:c}};if(d&&(b.stretchX||b.stretchY)){let we=fb(Z,lt,q),bi=fb(N,Bt,nt);for(let mi=0;mi0&&(lt=Math.max(10,lt),this.circleDiameter=lt)}else{let O=((N=v.image)===null||N===void 0?void 0:N.content)&&(v.image.textFitWidth||v.image.textFitHeight)?V1(v):{x1:v.left,y1:v.top,x2:v.right,y2:v.bottom};O.y1=O.y1*S-L[0],O.y2=O.y2*S+L[2],O.x1=O.x1*S-L[3],O.x2=O.x2*S+L[1];let q=v.collisionPadding;if(q&&(O.x1-=q[0]*S,O.y1-=q[1]*S,O.x2+=q[2]*S,O.y2+=q[3]*S),Z){let nt=new w(O.x1,O.y1),lt=new w(O.x2,O.y1),Bt=new w(O.x1,O.y2),Gt=new w(O.x2,O.y2),re=Z*Math.PI/180;nt._rotate(re),lt._rotate(re),Bt._rotate(re),Gt._rotate(re),O.x1=Math.min(nt.x,lt.x,Bt.x,Gt.x),O.x2=Math.max(nt.x,lt.x,Bt.x,Gt.x),O.y1=Math.min(nt.y,lt.y,Bt.y,Gt.y),O.y2=Math.max(nt.y,lt.y,Bt.y,Gt.y)}i.emplaceBack(c.x,c.y,O.x1,O.y1,O.x2,O.y2,d,C,b)}this.boxEndIndex=i.length}}class QF{constructor(i=[],c=(d,C)=>dC?1:0){if(this.data=i,this.length=this.data.length,this.compare=c,this.length>0)for(let d=(this.length>>1)-1;d>=0;d--)this._down(d)}push(i){this.data.push(i),this._up(this.length++)}pop(){if(this.length===0)return;let i=this.data[0],c=this.data.pop();return--this.length>0&&(this.data[0]=c,this._down(0)),i}peek(){return this.data[0]}_up(i){let{data:c,compare:d}=this,C=c[i];for(;i>0;){let b=i-1>>1,v=c[b];if(d(C,v)>=0)break;c[i]=v,i=b}c[i]=C}_down(i){let{data:c,compare:d}=this,C=this.length>>1,b=c[i];for(;i=0)break;c[i]=c[v],i=v}c[i]=b}}function RF(A,i=1,c=!1){let d=1/0,C=1/0,b=-1/0,v=-1/0,S=A[0];for(let q=0;qb)&&(b=nt.x),(!q||nt.y>v)&&(v=nt.y)}let L=Math.min(b-d,v-C),Q=L/2,Z=new QF([],GF);if(L===0)return new w(d,C);for(let q=d;qN.d||!N.d)&&(N=q,c&&console.log("found best %d after %d probes",Math.round(1e4*q.d)/1e4,O)),q.max-N.d<=i||(Q=q.h/2,Z.push(new Zu(q.p.x-Q,q.p.y-Q,Q,A)),Z.push(new Zu(q.p.x+Q,q.p.y-Q,Q,A)),Z.push(new Zu(q.p.x-Q,q.p.y+Q,Q,A)),Z.push(new Zu(q.p.x+Q,q.p.y+Q,Q,A)),O+=4)}return c&&(console.log(`num probes: ${O}`),console.log(`best distance: ${N.d}`)),N.p}function GF(A,i){return i.max-A.max}function Zu(A,i,c,d){this.p=new w(A,i),this.h=c,this.d=function(C,b){let v=!1,S=1/0;for(let L=0;LC.y!=nt.y>C.y&&C.x<(nt.x-q.x)*(C.y-q.y)/(nt.y-q.y)+q.x&&(v=!v),S=Math.min(S,Vc(C,q,nt))}}return(v?1:-1)*Math.sqrt(S)}(this.p,d),this.max=this.d+this.h*Math.SQRT2}var As;l.aq=void 0,(As=l.aq||(l.aq={}))[As.center=1]="center",As[As.left=2]="left",As[As.right=3]="right",As[As.top=4]="top",As[As.bottom=5]="bottom",As[As["top-left"]=6]="top-left",As[As["top-right"]=7]="top-right",As[As["bottom-left"]=8]="bottom-left",As[As["bottom-right"]=9]="bottom-right";let ac=7,Km=Number.POSITIVE_INFINITY;function mb(A,i){return i[1]!==Km?function(c,d,C){let b=0,v=0;switch(d=Math.abs(d),C=Math.abs(C),c){case"top-right":case"top-left":case"top":v=C-ac;break;case"bottom-right":case"bottom-left":case"bottom":v=-C+ac}switch(c){case"top-right":case"bottom-right":case"right":b=-d;break;case"top-left":case"bottom-left":case"left":b=d}return[b,v]}(A,i[0],i[1]):function(c,d){let C=0,b=0;d<0&&(d=0);let v=d/Math.SQRT2;switch(c){case"top-right":case"top-left":b=v-ac;break;case"bottom-right":case"bottom-left":b=-v+ac;break;case"bottom":b=-d+ac;break;case"top":b=d-ac}switch(c){case"top-right":case"bottom-right":C=-v;break;case"top-left":case"bottom-left":C=v;break;case"left":C=d;break;case"right":C=-d}return[C,b]}(A,i[0])}function Cb(A,i,c){var d;let C=A.layout,b=(d=C.get("text-variable-anchor-offset"))===null||d===void 0?void 0:d.evaluate(i,{},c);if(b){let S=b.values,L=[];for(let Q=0;QO*_n);Z.startsWith("top")?N[1]-=ac:Z.startsWith("bottom")&&(N[1]+=ac),L[Q+1]=N}return new dn(L)}let v=C.get("text-variable-anchor");if(v){let S;S=A._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[C.get("text-radial-offset").evaluate(i,{},c)*_n,Km]:C.get("text-offset").evaluate(i,{},c).map(Q=>Q*_n);let L=[];for(let Q of v)L.push(Q,mb(Q,S));return new dn(L)}return null}function Om(A){switch(A){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function ZF(A,i,c,d,C,b,v,S,L,Q,Z){let N=b.textMaxSize.evaluate(i,{});N===void 0&&(N=v);let O=A.layers[0].layout,q=O.get("icon-offset").evaluate(i,{},Z),nt=yb(c.horizontal),lt=v/24,Bt=A.tilePixelRatio*lt,Gt=A.tilePixelRatio*N/24,re=A.tilePixelRatio*S,Kt=A.tilePixelRatio*O.get("symbol-spacing"),Yt=O.get("text-padding")*A.tilePixelRatio,ge=function(we,bi,mi,Di=1){let Mr=we.get("icon-padding").evaluate(bi,{},mi),Zr=Mr&&Mr.values;return[Zr[0]*Di,Zr[1]*Di,Zr[2]*Di,Zr[3]*Di]}(O,i,Z,A.tilePixelRatio),Re=O.get("text-max-angle")/180*Math.PI,ni=O.get("text-rotation-alignment")!=="viewport"&&O.get("symbol-placement")!=="point",Gi=O.get("icon-rotation-alignment")==="map"&&O.get("symbol-placement")!=="point",ei=O.get("symbol-placement"),qe=Kt/2,Ii=O.get("icon-text-fit"),hi;d&&Ii!=="none"&&(A.allowVerticalPlacement&&c.vertical&&(hi=D1(d,c.vertical,Ii,O.get("icon-text-fit-padding"),q,lt)),nt&&(d=D1(d,nt,Ii,O.get("icon-text-fit-padding"),q,lt)));let li=(we,bi)=>{bi.x<0||bi.x>=cn||bi.y<0||bi.y>=cn||function(mi,Di,Mr,Zr,Vn,va,ls,Dn,Os,zs,Ws,un,Kn,_s,cs,Js,us,Aa,ho,yr,Kr,Wr,No,ln,Pu){let MA=mi.addToLineVertexArray(Di,Mr),NA,wa,la,$n,vl=0,Xh=0,Bb=0,_b=0,$m=-1,tC=-1,wl={},xb=QA("");if(mi.allowVerticalPlacement&&Zr.vertical){let xs=Dn.layout.get("text-rotate").evaluate(Kr,{},ln)+90;la=new bd(Os,Di,zs,Ws,un,Zr.vertical,Kn,_s,cs,xs),ls&&($n=new bd(Os,Di,zs,Ws,un,ls,us,Aa,cs,xs))}if(Vn){let xs=Dn.layout.get("icon-rotate").evaluate(Kr,{}),ca=Dn.layout.get("icon-text-fit")!=="none",Kc=pb(Vn,xs,No,ca),Ja=ls?pb(ls,xs,No,ca):void 0;wa=new bd(Os,Di,zs,Ws,un,Vn,us,Aa,!1,xs),vl=4*Kc.length;let Oc=mi.iconSizeData,VA=null;Oc.kind==="source"?(VA=[HA*Dn.layout.get("icon-size").evaluate(Kr,{})],VA[0]>nc&&at(`${mi.layerIds[0]}: Value for "icon-size" is >= ${Kh}. Reduce your "icon-size".`)):Oc.kind==="composite"&&(VA=[HA*Wr.compositeIconSizes[0].evaluate(Kr,{},ln),HA*Wr.compositeIconSizes[1].evaluate(Kr,{},ln)],(VA[0]>nc||VA[1]>nc)&&at(`${mi.layerIds[0]}: Value for "icon-size" is >= ${Kh}. Reduce your "icon-size".`)),mi.addSymbols(mi.icon,Kc,VA,yr,ho,Kr,l.ah.none,Di,MA.lineStartIndex,MA.lineLength,-1,ln),$m=mi.icon.placedSymbolArray.length-1,Ja&&(Xh=4*Ja.length,mi.addSymbols(mi.icon,Ja,VA,yr,ho,Kr,l.ah.vertical,Di,MA.lineStartIndex,MA.lineLength,-1,ln),tC=mi.icon.placedSymbolArray.length-1)}let Sb=Object.keys(Zr.horizontal);for(let xs of Sb){let ca=Zr.horizontal[xs];if(!NA){xb=QA(ca.text);let Ja=Dn.layout.get("text-rotate").evaluate(Kr,{},ln);NA=new bd(Os,Di,zs,Ws,un,ca,Kn,_s,cs,Ja)}let Kc=ca.positionedLines.length===1;if(Bb+=Ib(mi,Di,ca,va,Dn,cs,Kr,Js,MA,Zr.vertical?l.ah.horizontal:l.ah.horizontalOnly,Kc?Sb:[xs],wl,$m,Wr,ln),Kc)break}Zr.vertical&&(_b+=Ib(mi,Di,Zr.vertical,va,Dn,cs,Kr,Js,MA,l.ah.vertical,["vertical"],wl,tC,Wr,ln));let MF=NA?NA.boxStartIndex:mi.collisionBoxArray.length,NF=NA?NA.boxEndIndex:mi.collisionBoxArray.length,VF=la?la.boxStartIndex:mi.collisionBoxArray.length,DF=la?la.boxEndIndex:mi.collisionBoxArray.length,KF=wa?wa.boxStartIndex:mi.collisionBoxArray.length,OF=wa?wa.boxEndIndex:mi.collisionBoxArray.length,zF=$n?$n.boxStartIndex:mi.collisionBoxArray.length,WF=$n?$n.boxEndIndex:mi.collisionBoxArray.length,Wa=-1,wd=(xs,ca)=>xs&&xs.circleDiameter?Math.max(xs.circleDiameter,ca):ca;Wa=wd(NA,Wa),Wa=wd(la,Wa),Wa=wd(wa,Wa),Wa=wd($n,Wa);let Fb=Wa>-1?1:0;Fb&&(Wa*=Pu/_n),mi.glyphOffsetArray.length>=Ru.MAX_GLYPHS&&at("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),Kr.sortKey!==void 0&&mi.addToSortKeyRanges(mi.symbolInstances.length,Kr.sortKey);let JF=Cb(Dn,Kr,ln),[XF,YF]=function(xs,ca){let Kc=xs.length,Ja=ca?.values;if(Ja?.length>0)for(let Oc=0;Oc=0?wl.right:-1,wl.center>=0?wl.center:-1,wl.left>=0?wl.left:-1,wl.vertical||-1,$m,tC,xb,MF,NF,VF,DF,KF,OF,zF,WF,zs,Bb,_b,vl,Xh,Fb,0,Kn,Wa,XF,YF)}(A,bi,we,c,d,C,hi,A.layers[0],A.collisionBoxArray,i.index,i.sourceLayerIndex,A.index,Bt,[Yt,Yt,Yt,Yt],ni,L,re,ge,Gi,q,i,b,Q,Z,v)};if(ei==="line")for(let we of lb(i.geometry,0,0,cn,cn)){let bi=UF(we,Kt,Re,c.vertical||nt,d,24,Gt,A.overscaling,cn);for(let mi of bi)nt&&PF(A,nt.text,qe,mi)||li(we,mi)}else if(ei==="line-center"){for(let we of i.geometry)if(we.length>1){let bi=TF(we,Re,c.vertical||nt,d,24,Gt);bi&&li(we,bi)}}else if(i.type==="Polygon")for(let we of fA(i.geometry,0)){let bi=RF(we,16);li(we[0],new oc(bi.x,bi.y,0))}else if(i.type==="LineString")for(let we of i.geometry)li(we,new oc(we[0].x,we[0].y,0));else if(i.type==="Point")for(let we of i.geometry)for(let bi of we)li([bi],new oc(bi.x,bi.y,0))}function Ib(A,i,c,d,C,b,v,S,L,Q,Z,N,O,q,nt){let lt=function(re,Kt,Yt,ge,Re,ni,Gi,ei){let qe=ge.layout.get("text-rotate").evaluate(ni,{})*Math.PI/180,Ii=[];for(let hi of Kt.positionedLines)for(let li of hi.positionedGlyphs){if(!li.rect)continue;let we=li.rect||{},bi=R1+1,mi=!0,Di=1,Mr=0,Zr=(Re||ei)&&li.vertical,Vn=li.metrics.advance*li.scale/2;if(ei&&Kt.verticalizable&&(Mr=hi.lineOffset/2-(li.imageName?-(_n-li.metrics.width*li.scale)/2:(li.scale-1)*_n)),li.imageName){let yr=Gi[li.imageName];mi=yr.sdf,Di=yr.pixelRatio,bi=uo/Di}let va=Re?[li.x+Vn,li.y]:[0,0],ls=Re?[0,0]:[li.x+Vn+Yt[0],li.y+Yt[1]-Mr],Dn=[0,0];Zr&&(Dn=ls,ls=[0,0]);let Os=li.metrics.isDoubleResolution?2:1,zs=(li.metrics.left-bi)*li.scale-Vn+ls[0],Ws=(-li.metrics.top-bi)*li.scale+ls[1],un=zs+we.w/Os*li.scale/Di,Kn=Ws+we.h/Os*li.scale/Di,_s=new w(zs,Ws),cs=new w(un,Ws),Js=new w(zs,Kn),us=new w(un,Kn);if(Zr){let yr=new w(-Vn,Vn-Vh),Kr=-Math.PI/2,Wr=_n/2-Vn,No=new w(5-Vh-Wr,-(li.imageName?Wr:0)),ln=new w(...Dn);_s._rotateAround(Kr,yr)._add(No)._add(ln),cs._rotateAround(Kr,yr)._add(No)._add(ln),Js._rotateAround(Kr,yr)._add(No)._add(ln),us._rotateAround(Kr,yr)._add(No)._add(ln)}if(qe){let yr=Math.sin(qe),Kr=Math.cos(qe),Wr=[Kr,-yr,yr,Kr];_s._matMult(Wr),cs._matMult(Wr),Js._matMult(Wr),us._matMult(Wr)}let Aa=new w(0,0),ho=new w(0,0);Ii.push({tl:_s,tr:cs,bl:Js,br:us,tex:we,writingMode:Kt.writingMode,glyphOffset:va,sectionIndex:li.sectionIndex,isSDF:mi,pixelOffsetTL:Aa,pixelOffsetBR:ho,minFontScaleX:0,minFontScaleY:0})}return Ii}(0,c,S,C,b,v,d,A.allowVerticalPlacement),Bt=A.textSizeData,Gt=null;Bt.kind==="source"?(Gt=[HA*C.layout.get("text-size").evaluate(v,{})],Gt[0]>nc&&at(`${A.layerIds[0]}: Value for "text-size" is >= ${Kh}. Reduce your "text-size".`)):Bt.kind==="composite"&&(Gt=[HA*q.compositeTextSizes[0].evaluate(v,{},nt),HA*q.compositeTextSizes[1].evaluate(v,{},nt)],(Gt[0]>nc||Gt[1]>nc)&&at(`${A.layerIds[0]}: Value for "text-size" is >= ${Kh}. Reduce your "text-size".`)),A.addSymbols(A.text,lt,Gt,S,b,v,Q,i,L.lineStartIndex,L.lineLength,O,nt);for(let re of Z)N[re]=A.text.placedSymbolArray.length-1;return 4*lt.length}function yb(A){for(let i in A)return A[i];return null}function PF(A,i,c,d){let C=A.compareText;if(i in C){let b=C[i];for(let v=b.length-1;v>=0;v--)if(d.dist(b[v])>4;if(C!==1)throw new Error(`Got v${C} data when expected v1.`);let b=bb[15&d];if(!b)throw new Error("Unrecognized array type.");let[v]=new Uint16Array(i,2,1),[S]=new Uint32Array(i,4,1);return new zm(S,v,b,i)}constructor(i,c=64,d=Float64Array,C){if(isNaN(i)||i<0)throw new Error(`Unpexpected numItems value: ${i}.`);this.numItems=+i,this.nodeSize=Math.min(Math.max(+c,2),65535),this.ArrayType=d,this.IndexArrayType=i<65536?Uint16Array:Uint32Array;let b=bb.indexOf(this.ArrayType),v=2*i*this.ArrayType.BYTES_PER_ELEMENT,S=i*this.IndexArrayType.BYTES_PER_ELEMENT,L=(8-S%8)%8;if(b<0)throw new Error(`Unexpected typed array class: ${d}.`);C&&C instanceof ArrayBuffer?(this.data=C,this.ids=new this.IndexArrayType(this.data,8,i),this.coords=new this.ArrayType(this.data,8+S+L,2*i),this._pos=2*i,this._finished=!0):(this.data=new ArrayBuffer(8+v+S+L),this.ids=new this.IndexArrayType(this.data,8,i),this.coords=new this.ArrayType(this.data,8+S+L,2*i),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+b]),new Uint16Array(this.data,2,1)[0]=c,new Uint32Array(this.data,4,1)[0]=i)}add(i,c){let d=this._pos>>1;return this.ids[d]=d,this.coords[this._pos++]=i,this.coords[this._pos++]=c,d}finish(){let i=this._pos>>1;if(i!==this.numItems)throw new Error(`Added ${i} items when expected ${this.numItems}.`);return Wm(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(i,c,d,C){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:b,coords:v,nodeSize:S}=this,L=[0,b.length-1,0],Q=[];for(;L.length;){let Z=L.pop()||0,N=L.pop()||0,O=L.pop()||0;if(N-O<=S){for(let Bt=O;Bt<=N;Bt++){let Gt=v[2*Bt],re=v[2*Bt+1];Gt>=i&&Gt<=d&&re>=c&&re<=C&&Q.push(b[Bt])}continue}let q=O+N>>1,nt=v[2*q],lt=v[2*q+1];nt>=i&&nt<=d&<>=c&<<=C&&Q.push(b[q]),(Z===0?i<=nt:c<=lt)&&(L.push(O),L.push(q-1),L.push(1-Z)),(Z===0?d>=nt:C>=lt)&&(L.push(q+1),L.push(N),L.push(1-Z))}return Q}within(i,c,d){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:C,coords:b,nodeSize:v}=this,S=[0,C.length-1,0],L=[],Q=d*d;for(;S.length;){let Z=S.pop()||0,N=S.pop()||0,O=S.pop()||0;if(N-O<=v){for(let Bt=O;Bt<=N;Bt++)wb(b[2*Bt],b[2*Bt+1],i,c)<=Q&&L.push(C[Bt]);continue}let q=O+N>>1,nt=b[2*q],lt=b[2*q+1];wb(nt,lt,i,c)<=Q&&L.push(C[q]),(Z===0?i-d<=nt:c-d<=lt)&&(S.push(O),S.push(q-1),S.push(1-Z)),(Z===0?i+d>=nt:c+d>=lt)&&(S.push(q+1),S.push(N),S.push(1-Z))}return L}}function Wm(A,i,c,d,C,b){if(C-d<=c)return;let v=d+C>>1;vb(A,i,v,d,C,b),Wm(A,i,c,d,v-1,1-b),Wm(A,i,c,v+1,C,1-b)}function vb(A,i,c,d,C,b){for(;C>d;){if(C-d>600){let Q=C-d+1,Z=c-d+1,N=Math.log(Q),O=.5*Math.exp(2*N/3),q=.5*Math.sqrt(N*O*(Q-O)/Q)*(Z-Q/2<0?-1:1);vb(A,i,c,Math.max(d,Math.floor(c-Z*O/Q+q)),Math.min(C,Math.floor(c+(Q-Z)*O/Q+q)),b)}let v=i[2*c+b],S=d,L=C;for(Wh(A,i,d,c),i[2*C+b]>v&&Wh(A,i,d,C);Sv;)L--}i[2*d+b]===v?Wh(A,i,d,L):(L++,Wh(A,i,L,C)),L<=c&&(d=L+1),c<=L&&(C=L-1)}}function Wh(A,i,c,d){Jm(A,c,d),Jm(i,2*c,2*d),Jm(i,2*c+1,2*d+1)}function Jm(A,i,c){let d=A[i];A[i]=A[c],A[c]=d}function wb(A,i,c,d){let C=A-c,b=i-d;return C*C+b*b}var Xm;l.bg=void 0,(Xm=l.bg||(l.bg={})).create="create",Xm.load="load",Xm.fullLoad="fullLoad";let vd=null,Jh=[],Ym=1e3/60,jm="loadTime",qm="fullLoadTime",HF={mark(A){performance.mark(A)},frame(A){let i=A;vd!=null&&Jh.push(i-vd),vd=i},clearMetrics(){vd=null,Jh=[],performance.clearMeasures(jm),performance.clearMeasures(qm);for(let A in l.bg)performance.clearMarks(l.bg[A])},getPerformanceMetrics(){performance.measure(jm,l.bg.create,l.bg.load),performance.measure(qm,l.bg.create,l.bg.fullLoad);let A=performance.getEntriesByName(jm)[0].duration,i=performance.getEntriesByName(qm)[0].duration,c=Jh.length,d=1/(Jh.reduce((b,v)=>b+v,0)/c/1e3),C=Jh.filter(b=>b>Ym).reduce((b,v)=>b+(v-Ym)/Ym,0);return{loadTime:A,fullLoadTime:i,fps:d,percentDroppedFrames:C/(c+C)*100,totalFrames:c}}};l.$=class extends R{},l.A=ku,l.B=Uc,l.C=function(A){if(yt==null){let i=A.navigator?A.navigator.userAgent:null;yt=!!A.safari||!(!i||!(/\b(iPad|iPhone|iPod)\b/.test(i)||i.match("Safari")&&!i.match("Chrome")))}return yt},l.D=gi,l.E=Je,l.F=class{constructor(A,i){this.target=A,this.mapId=i,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new LF(()=>this.process()),this.subscription=function(c,d,C,b){return c.addEventListener(d,C,!1),{unsubscribe:()=>{c.removeEventListener(d,C,!1)}}}(this.target,"message",c=>this.receive(c)),this.globalScope=wt(self)?A:window}registerMessageHandler(A,i){this.messageHandlers[A]=i}sendAsync(A,i){return new Promise((c,d)=>{let C=Math.round(1e18*Math.random()).toString(36).substring(0,10);this.resolveRejects[C]={resolve:c,reject:d},i&&i.signal.addEventListener("abort",()=>{delete this.resolveRejects[C];let S={id:C,type:"",origin:location.origin,targetMapId:A.targetMapId,sourceMapId:this.mapId};this.target.postMessage(S)},{once:!0});let b=[],v=Object.assign(Object.assign({},A),{id:C,sourceMapId:this.mapId,origin:location.origin,data:Nn(A.data,b)});this.target.postMessage(v,{transfer:b})})}receive(A){let i=A.data,c=i.id;if(!(i.origin!=="file://"&&location.origin!=="file://"&&i.origin!=="resource://android"&&location.origin!=="resource://android"&&i.origin!==location.origin||i.targetMapId&&this.mapId!==i.targetMapId)){if(i.type===""){delete this.tasks[c];let d=this.abortControllers[c];return delete this.abortControllers[c],void(d&&d.abort())}if(wt(self)||i.mustQueue)return this.tasks[c]=i,this.taskQueue.push(c),void this.invoker.trigger();this.processTask(c,i)}}process(){if(this.taskQueue.length===0)return;let A=this.taskQueue.shift(),i=this.tasks[A];delete this.tasks[A],this.taskQueue.length>0&&this.invoker.trigger(),i&&this.processTask(A,i)}processTask(A,i){return s(this,void 0,void 0,function*(){if(i.type===""){let C=this.resolveRejects[A];return delete this.resolveRejects[A],C?void(i.error?C.reject(os(i.error)):C.resolve(os(i.data))):void 0}if(!this.messageHandlers[i.type])return void this.completeTask(A,new Error(`Could not find a registered handler for ${i.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let c=os(i.data),d=new AbortController;this.abortControllers[A]=d;try{let C=yield this.messageHandlers[i.type](i.sourceMapId,c,d);this.completeTask(A,null,C)}catch(C){this.completeTask(A,C)}})}completeTask(A,i,c){let d=[];delete this.abortControllers[A];let C={id:A,type:"",sourceMapId:this.mapId,origin:location.origin,error:i?Nn(i):null,data:Nn(c,d)};this.target.postMessage(C,{transfer:d})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},l.G=mt,l.H=function(){var A=new ku(16);return ku!=Float32Array&&(A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[11]=0,A[12]=0,A[13]=0,A[14]=0),A[0]=1,A[5]=1,A[10]=1,A[15]=1,A},l.I=Um,l.J=function(A,i,c){var d,C,b,v,S,L,Q,Z,N,O,q,nt,lt=c[0],Bt=c[1],Gt=c[2];return i===A?(A[12]=i[0]*lt+i[4]*Bt+i[8]*Gt+i[12],A[13]=i[1]*lt+i[5]*Bt+i[9]*Gt+i[13],A[14]=i[2]*lt+i[6]*Bt+i[10]*Gt+i[14],A[15]=i[3]*lt+i[7]*Bt+i[11]*Gt+i[15]):(C=i[1],b=i[2],v=i[3],S=i[4],L=i[5],Q=i[6],Z=i[7],N=i[8],O=i[9],q=i[10],nt=i[11],A[0]=d=i[0],A[1]=C,A[2]=b,A[3]=v,A[4]=S,A[5]=L,A[6]=Q,A[7]=Z,A[8]=N,A[9]=O,A[10]=q,A[11]=nt,A[12]=d*lt+S*Bt+N*Gt+i[12],A[13]=C*lt+L*Bt+O*Gt+i[13],A[14]=b*lt+Q*Bt+q*Gt+i[14],A[15]=v*lt+Z*Bt+nt*Gt+i[15]),A},l.K=function(A,i,c){var d=c[0],C=c[1],b=c[2];return A[0]=i[0]*d,A[1]=i[1]*d,A[2]=i[2]*d,A[3]=i[3]*d,A[4]=i[4]*C,A[5]=i[5]*C,A[6]=i[6]*C,A[7]=i[7]*C,A[8]=i[8]*b,A[9]=i[9]*b,A[10]=i[10]*b,A[11]=i[11]*b,A[12]=i[12],A[13]=i[13],A[14]=i[14],A[15]=i[15],A},l.L=r1,l.M=function(A,i){let c={};for(let d=0;d{let i=window.document.createElement("video");return i.muted=!0,new Promise(c=>{i.onloadstart=()=>{c(i)};for(let d of A){let C=window.document.createElement("source");le(d)||(i.crossOrigin="Anonymous"),C.src=d,i.appendChild(C)}})},l.a4=function(){return Lt++},l.a5=Ge,l.a6=Ru,l.a7=Za,l.a8=ZA,l.a9=sb,l.aA=function(A){if(A.type==="custom")return new kF(A);switch(A.type){case"background":return new xF(A);case"circle":return new gS(A);case"fill":return new LS(A);case"fill-extrusion":return new OS(A);case"heatmap":return new pS(A);case"hillshade":return new mS(A);case"line":return new $S(A);case"raster":return new FF(A);case"symbol":return new md(A)}},l.aB=Mt,l.aC=function(A,i){if(!A)return[{command:"setStyle",args:[i]}];let c=[];try{if(!Xe(A.version,i.version))return[{command:"setStyle",args:[i]}];Xe(A.center,i.center)||c.push({command:"setCenter",args:[i.center]}),Xe(A.zoom,i.zoom)||c.push({command:"setZoom",args:[i.zoom]}),Xe(A.bearing,i.bearing)||c.push({command:"setBearing",args:[i.bearing]}),Xe(A.pitch,i.pitch)||c.push({command:"setPitch",args:[i.pitch]}),Xe(A.sprite,i.sprite)||c.push({command:"setSprite",args:[i.sprite]}),Xe(A.glyphs,i.glyphs)||c.push({command:"setGlyphs",args:[i.glyphs]}),Xe(A.transition,i.transition)||c.push({command:"setTransition",args:[i.transition]}),Xe(A.light,i.light)||c.push({command:"setLight",args:[i.light]}),Xe(A.terrain,i.terrain)||c.push({command:"setTerrain",args:[i.terrain]}),Xe(A.sky,i.sky)||c.push({command:"setSky",args:[i.sky]}),Xe(A.projection,i.projection)||c.push({command:"setProjection",args:[i.projection]});let d={},C=[];(function(v,S,L,Q){let Z;for(Z in S=S||{},v=v||{})Object.prototype.hasOwnProperty.call(v,Z)&&(Object.prototype.hasOwnProperty.call(S,Z)||He(Z,L,Q));for(Z in S)Object.prototype.hasOwnProperty.call(S,Z)&&(Object.prototype.hasOwnProperty.call(v,Z)?Xe(v[Z],S[Z])||(v[Z].type==="geojson"&&S[Z].type==="geojson"&&ze(v,S,Z)?Oe(L,{command:"setGeoJSONSourceData",args:[Z,S[Z].data]}):Ke(Z,S,L,Q)):Le(Z,S,L))})(A.sources,i.sources,C,d);let b=[];A.layers&&A.layers.forEach(v=>{"source"in v&&d[v.source]?c.push({command:"removeLayer",args:[v.id]}):b.push(v)}),c=c.concat(C),function(v,S,L){S=S||[];let Q=(v=v||[]).map(ci),Z=S.map(ci),N=v.reduce(Si,{}),O=S.reduce(Si,{}),q=Q.slice(),nt=Object.create(null),lt,Bt,Gt,re,Kt;for(let Yt=0,ge=0;Yt@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(c,d,C,b)=>{let v=C||b;return i[d]=!v||v.toLowerCase(),""}),i["max-age"]){let c=parseInt(i["max-age"],10);isNaN(c)?delete i["max-age"]:i["max-age"]=c}return i},l.ab=function(A,i){let c=[];for(let d in A)d in i||c.push(d);return c},l.ac=ot,l.ad=function(A,i,c){var d=Math.sin(c),C=Math.cos(c),b=i[0],v=i[1],S=i[2],L=i[3],Q=i[4],Z=i[5],N=i[6],O=i[7];return i!==A&&(A[8]=i[8],A[9]=i[9],A[10]=i[10],A[11]=i[11],A[12]=i[12],A[13]=i[13],A[14]=i[14],A[15]=i[15]),A[0]=b*C+Q*d,A[1]=v*C+Z*d,A[2]=S*C+N*d,A[3]=L*C+O*d,A[4]=Q*C-b*d,A[5]=Z*C-v*d,A[6]=N*C-S*d,A[7]=O*C-L*d,A},l.ae=function(A){var i=new ku(16);return i[0]=A[0],i[1]=A[1],i[2]=A[2],i[3]=A[3],i[4]=A[4],i[5]=A[5],i[6]=A[6],i[7]=A[7],i[8]=A[8],i[9]=A[9],i[10]=A[10],i[11]=A[11],i[12]=A[12],i[13]=A[13],i[14]=A[14],i[15]=A[15],i},l.af=Ad,l.ag=function(A,i){let c=0,d=0;if(A.kind==="constant")d=A.layoutSize;else if(A.kind!=="source"){let{interpolationType:C,minZoom:b,maxZoom:v}=A,S=C?ot(wi.interpolationFactor(C,i,b,v),0,1):0;A.kind==="camera"?d=ai.number(A.minSize,A.maxSize,S):c=S}return{uSizeT:c,uSize:d}},l.ai=function(A,{uSize:i,uSizeT:c},{lowerSize:d,upperSize:C}){return A.kind==="source"?d/HA:A.kind==="composite"?ai.number(d/HA,C/HA,c):i},l.aj=Zm,l.ak=function(A,i,c,d){let C=i.y-A.y,b=i.x-A.x,v=d.y-c.y,S=d.x-c.x,L=v*b-S*C;if(L===0)return null;let Q=(S*(A.y-c.y)-v*(A.x-c.x))/L;return new w(A.x+Q*b,A.y+Q*C)},l.al=lb,l.am=od,l.an=Cm,l.ao=function(A){let i=1/0,c=1/0,d=-1/0,C=-1/0;for(let b of A)i=Math.min(i,b.x),c=Math.min(c,b.y),d=Math.max(d,b.x),C=Math.max(C,b.y);return[i,c,d,C]},l.ap=_n,l.ar=Gm,l.as=function(A,i){var c=i[0],d=i[1],C=i[2],b=i[3],v=i[4],S=i[5],L=i[6],Q=i[7],Z=i[8],N=i[9],O=i[10],q=i[11],nt=i[12],lt=i[13],Bt=i[14],Gt=i[15],re=c*S-d*v,Kt=c*L-C*v,Yt=c*Q-b*v,ge=d*L-C*S,Re=d*Q-b*S,ni=C*Q-b*L,Gi=Z*lt-N*nt,ei=Z*Bt-O*nt,qe=Z*Gt-q*nt,Ii=N*Bt-O*lt,hi=N*Gt-q*lt,li=O*Gt-q*Bt,we=re*li-Kt*hi+Yt*Ii+ge*qe-Re*ei+ni*Gi;return we?(A[0]=(S*li-L*hi+Q*Ii)*(we=1/we),A[1]=(C*hi-d*li-b*Ii)*we,A[2]=(lt*ni-Bt*Re+Gt*ge)*we,A[3]=(O*Re-N*ni-q*ge)*we,A[4]=(L*qe-v*li-Q*ei)*we,A[5]=(c*li-C*qe+b*ei)*we,A[6]=(Bt*Yt-nt*ni-Gt*Kt)*we,A[7]=(Z*ni-O*Yt+q*Kt)*we,A[8]=(v*hi-S*qe+Q*Gi)*we,A[9]=(d*qe-c*hi-b*Gi)*we,A[10]=(nt*Re-lt*Yt+Gt*re)*we,A[11]=(N*Yt-Z*Re-q*re)*we,A[12]=(S*ei-v*Ii-L*Gi)*we,A[13]=(c*Ii-d*ei+C*Gi)*we,A[14]=(lt*Kt-nt*ge-Bt*re)*we,A[15]=(Z*ge-N*Kt+O*re)*we,A):null},l.at=Om,l.au=Rm,l.av=zm,l.aw=function(){let A={},i=Dt.$version;for(let c in Dt.$root){let d=Dt.$root[c];if(d.required){let C=null;C=c==="version"?i:d.type==="array"?[]:{},C!=null&&(A[c]=C)}}return A},l.ax=Gc,l.ay=Pt,l.az=function(A){A=A.slice();let i=Object.create(null);for(let c=0;c25||d<0||d>=1||c<0||c>=1)},l.bc=function(A,i){return A[0]=i[0],A[1]=0,A[2]=0,A[3]=0,A[4]=0,A[5]=i[1],A[6]=0,A[7]=0,A[8]=0,A[9]=0,A[10]=i[2],A[11]=0,A[12]=0,A[13]=0,A[14]=0,A[15]=1,A},l.bd=class extends k{},l.be=Nm,l.bf=HF,l.bh=Ut,l.bi=function(A,i){J.REGISTERED_PROTOCOLS[A]=i},l.bj=function(A){delete J.REGISTERED_PROTOCOLS[A]},l.bk=function(A,i){let c={};for(let C=0;Cli*_n)}let ei=v?"center":c.get("text-justify").evaluate(Q,{},A.canonical),qe=c.get("symbol-placement")==="point"?c.get("text-max-width").evaluate(Q,{},A.canonical)*_n:1/0,Ii=()=>{A.bucket.allowVerticalPlacement&&Po(Yt)&&(nt.vertical=dd(lt,A.glyphMap,A.glyphPositions,A.imagePositions,Z,qe,b,ni,"left",Re,Gt,l.ah.vertical,!0,O,N))};if(!v&&Gi){let hi=new Set;if(ei==="auto")for(let we=0;wes(void 0,void 0,void 0,function*(){if(A.byteLength===0)return createImageBitmap(new ImageData(1,1));let i=new Blob([new Uint8Array(A)],{type:"image/png"});try{return createImageBitmap(i)}catch(c){throw new Error(`Could not load image because of ${c.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),l.e=kt,l.f=A=>new Promise((i,c)=>{let d=new Image;d.onload=()=>{i(d),URL.revokeObjectURL(d.src),d.onload=null,window.requestAnimationFrame(()=>{d.src=jt})},d.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."));let C=new Blob([new Uint8Array(A)],{type:"image/png"});d.src=A.byteLength?URL.createObjectURL(C):jt}),l.g=dt,l.h=(A,i)=>ie(kt(A,{type:"json"}),i),l.i=wt,l.j=We,l.k=Ee,l.l=(A,i)=>ie(kt(A,{type:"arrayBuffer"}),i),l.m=ie,l.n=function(A){return new Em(A).readFields(dF,[])},l.o=Rh,l.p=G1,l.q=u,l.r=Tc,l.s=le,l.t=Qc,l.u=Ma,l.v=Dt,l.w=at,l.x=function([A,i,c]){return i+=90,i*=Math.PI/180,c*=Math.PI/180,{x:A*Math.cos(i)*Math.sin(c),y:A*Math.sin(i)*Math.sin(c),z:A*Math.cos(c)}},l.y=ai,l.z=Qr}),r("worker",["./shared"],function(l){"use strict";class s{constructor(K){this.keyCache={},K&&this.replace(K)}replace(K){this._layerConfigs={},this._layers={},this.update(K,[])}update(K,z){for(let gt of K){this._layerConfigs[gt.id]=gt;let Ht=this._layers[gt.id]=l.aA(gt);Ht._featureFilter=l.a7(Ht.filter),this.keyCache[gt.id]&&delete this.keyCache[gt.id]}for(let gt of z)delete this.keyCache[gt],delete this._layerConfigs[gt],delete this._layers[gt];this.familiesBySource={};let it=l.bk(Object.values(this._layerConfigs),this.keyCache);for(let gt of it){let Ht=gt.map(Ae=>this._layers[Ae.id]),Nt=Ht[0];if(Nt.visibility==="none")continue;let Jt=Nt.source||"",Rt=this.familiesBySource[Jt];Rt||(Rt=this.familiesBySource[Jt]={});let Ot=Nt.sourceLayer||"_geojsonTileLayer",me=Rt[Ot];me||(me=Rt[Ot]=[]),me.push(Ht)}}}class p{constructor(K){let z={},it=[];for(let Jt in K){let Rt=K[Jt],Ot=z[Jt]={};for(let me in Rt){let Ae=Rt[+me];if(!Ae||Ae.bitmap.width===0||Ae.bitmap.height===0)continue;let Se={x:0,y:0,w:Ae.bitmap.width+2,h:Ae.bitmap.height+2};it.push(Se),Ot[me]={rect:Se,metrics:Ae.metrics}}}let{w:gt,h:Ht}=l.p(it),Nt=new l.o({width:gt||1,height:Ht||1});for(let Jt in K){let Rt=K[Jt];for(let Ot in Rt){let me=Rt[+Ot];if(!me||me.bitmap.width===0||me.bitmap.height===0)continue;let Ae=z[Jt][Ot].rect;l.o.copy(me.bitmap,Nt,{x:0,y:0},{x:Ae.x+1,y:Ae.y+1},me.bitmap)}}this.image=Nt,this.positions=z}}l.bl("GlyphAtlas",p);class m{constructor(K){this.tileID=new l.S(K.tileID.overscaledZ,K.tileID.wrap,K.tileID.canonical.z,K.tileID.canonical.x,K.tileID.canonical.y),this.uid=K.uid,this.zoom=K.zoom,this.pixelRatio=K.pixelRatio,this.tileSize=K.tileSize,this.source=K.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=K.showCollisionBoxes,this.collectResourceTiming=!!K.collectResourceTiming,this.returnDependencies=!!K.returnDependencies,this.promoteId=K.promoteId,this.inFlightDependencies=[]}parse(K,z,it,gt){return l._(this,void 0,void 0,function*(){this.status="parsing",this.data=K,this.collisionBoxArray=new l.a5;let Ht=new l.bm(Object.keys(K.layers).sort()),Nt=new l.bn(this.tileID,this.promoteId);Nt.bucketLayerIDs=[];let Jt={},Rt={featureIndex:Nt,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:it},Ot=z.familiesBySource[this.source];for(let Qi in Ot){let Oi=K.layers[Qi];if(!Oi)continue;Oi.version===1&&l.w(`Vector tile source "${this.source}" layer "${Qi}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let sr=Ht.encode(Qi),Zt=[];for(let Ne=0;Ne=ke.maxzoom||ke.visibility!=="none"&&(I(Ne,this.zoom,it),(Jt[ke.id]=ke.createBucket({index:Nt.bucketLayerIDs.length,layers:Ne,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:sr,sourceID:this.source})).populate(Zt,Rt,this.tileID.canonical),Nt.bucketLayerIDs.push(Ne.map(Wi=>Wi.id)))}}let me=l.aF(Rt.glyphDependencies,Qi=>Object.keys(Qi).map(Number));this.inFlightDependencies.forEach(Qi=>Qi?.abort()),this.inFlightDependencies=[];let Ae=Promise.resolve({});if(Object.keys(me).length){let Qi=new AbortController;this.inFlightDependencies.push(Qi),Ae=gt.sendAsync({type:"GG",data:{stacks:me,source:this.source,tileID:this.tileID,type:"glyphs"}},Qi)}let Se=Object.keys(Rt.iconDependencies),Ye=Promise.resolve({});if(Se.length){let Qi=new AbortController;this.inFlightDependencies.push(Qi),Ye=gt.sendAsync({type:"GI",data:{icons:Se,source:this.source,tileID:this.tileID,type:"icons"}},Qi)}let je=Object.keys(Rt.patternDependencies),Mi=Promise.resolve({});if(je.length){let Qi=new AbortController;this.inFlightDependencies.push(Qi),Mi=gt.sendAsync({type:"GI",data:{icons:je,source:this.source,tileID:this.tileID,type:"patterns"}},Qi)}let[Ti,Vi,vi]=yield Promise.all([Ae,Ye,Mi]),pr=new p(Ti),ur=new l.bo(Vi,vi);for(let Qi in Jt){let Oi=Jt[Qi];Oi instanceof l.a6?(I(Oi.layers,this.zoom,it),l.bp({bucket:Oi,glyphMap:Ti,glyphPositions:pr.positions,imageMap:Vi,imagePositions:ur.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):Oi.hasPattern&&(Oi instanceof l.bq||Oi instanceof l.br||Oi instanceof l.bs)&&(I(Oi.layers,this.zoom,it),Oi.addFeatures(Rt,this.tileID.canonical,ur.patternPositions))}return this.status="done",{buckets:Object.values(Jt).filter(Qi=>!Qi.isEmpty()),featureIndex:Nt,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:pr.image,imageAtlas:ur,glyphMap:this.returnDependencies?Ti:null,iconMap:this.returnDependencies?Vi:null,glyphPositions:this.returnDependencies?pr.positions:null}})}}function I(It,K,z){let it=new l.z(K);for(let gt of It)gt.recalculate(it,z)}class w{constructor(K,z,it){this.actor=K,this.layerIndex=z,this.availableImages=it,this.fetching={},this.loading={},this.loaded={}}loadVectorTile(K,z){return l._(this,void 0,void 0,function*(){let it=yield l.l(K.request,z);try{return{vectorTile:new l.bt.VectorTile(new l.bu(it.data)),rawData:it.data,cacheControl:it.cacheControl,expires:it.expires}}catch(gt){let Ht=new Uint8Array(it.data),Nt=`Unable to parse the tile at ${K.request.url}, `;throw Nt+=Ht[0]===31&&Ht[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${gt.message}`,new Error(Nt)}})}loadTile(K){return l._(this,void 0,void 0,function*(){let z=K.uid,it=!!(K&&K.request&&K.request.collectResourceTiming)&&new l.bv(K.request),gt=new m(K);this.loading[z]=gt;let Ht=new AbortController;gt.abort=Ht;try{let Nt=yield this.loadVectorTile(K,Ht);if(delete this.loading[z],!Nt)return null;let Jt=Nt.rawData,Rt={};Nt.expires&&(Rt.expires=Nt.expires),Nt.cacheControl&&(Rt.cacheControl=Nt.cacheControl);let Ot={};if(it){let Ae=it.finish();Ae&&(Ot.resourceTiming=JSON.parse(JSON.stringify(Ae)))}gt.vectorTile=Nt.vectorTile;let me=gt.parse(Nt.vectorTile,this.layerIndex,this.availableImages,this.actor);this.loaded[z]=gt,this.fetching[z]={rawTileData:Jt,cacheControl:Rt,resourceTiming:Ot};try{let Ae=yield me;return l.e({rawTileData:Jt.slice(0)},Ae,Rt,Ot)}finally{delete this.fetching[z]}}catch(Nt){throw delete this.loading[z],gt.status="done",this.loaded[z]=gt,Nt}})}reloadTile(K){return l._(this,void 0,void 0,function*(){let z=K.uid;if(!this.loaded||!this.loaded[z])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");let it=this.loaded[z];if(it.showCollisionBoxes=K.showCollisionBoxes,it.status==="parsing"){let gt=yield it.parse(it.vectorTile,this.layerIndex,this.availableImages,this.actor),Ht;if(this.fetching[z]){let{rawTileData:Nt,cacheControl:Jt,resourceTiming:Rt}=this.fetching[z];delete this.fetching[z],Ht=l.e({rawTileData:Nt.slice(0)},gt,Jt,Rt)}else Ht=gt;return Ht}if(it.status==="done"&&it.vectorTile)return it.parse(it.vectorTile,this.layerIndex,this.availableImages,this.actor)})}abortTile(K){return l._(this,void 0,void 0,function*(){let z=this.loading,it=K.uid;z&&z[it]&&z[it].abort&&(z[it].abort.abort(),delete z[it])})}removeTile(K){return l._(this,void 0,void 0,function*(){this.loaded&&this.loaded[K.uid]&&delete this.loaded[K.uid]})}}class _{constructor(){this.loaded={}}loadTile(K){return l._(this,void 0,void 0,function*(){let{uid:z,encoding:it,rawImageData:gt,redFactor:Ht,greenFactor:Nt,blueFactor:Jt,baseShift:Rt}=K,Ot=gt.width+2,me=gt.height+2,Ae=l.b(gt)?new l.R({width:Ot,height:me},yield l.bw(gt,-1,-1,Ot,me)):gt,Se=new l.bx(z,Ae,it,Ht,Nt,Jt,Rt);return this.loaded=this.loaded||{},this.loaded[z]=Se,Se})}removeTile(K){let z=this.loaded,it=K.uid;z&&z[it]&&delete z[it]}}function E(It,K){if(It.length!==0){U(It[0],K);for(var z=1;z=Math.abs(Jt)?z-Rt+Jt:Jt-Rt+z,z=Rt}z+it>=0!=!!K&&It.reverse()}var F=l.by(function It(K,z){var it,gt=K&&K.type;if(gt==="FeatureCollection")for(it=0;it>31}function wt(It,K){for(var z=It.loadGeometry(),it=It.type,gt=0,Ht=0,Nt=z.length,Jt=0;JtIt},Xt=Math.fround||(Wt=new Float32Array(1),It=>(Wt[0]=+It,Wt[0]));var Wt;let Ct=3,Et=5,ue=6;class J{constructor(K){this.options=Object.assign(Object.create(jt),K),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(K){let{log:z,minZoom:it,maxZoom:gt}=this.options;z&&console.time("total time");let Ht=`prepare ${K.length} points`;z&&console.time(Ht),this.points=K;let Nt=[];for(let Rt=0;Rt=it;Rt--){let Ot=+Date.now();Jt=this.trees[Rt]=this._createTree(this._cluster(Jt,Rt)),z&&console.log("z%d: %d clusters in %dms",Rt,Jt.numItems,+Date.now()-Ot)}return z&&console.timeEnd("total time"),this}getClusters(K,z){let it=((K[0]+180)%360+360)%360-180,gt=Math.max(-90,Math.min(90,K[1])),Ht=K[2]===180?180:((K[2]+180)%360+360)%360-180,Nt=Math.max(-90,Math.min(90,K[3]));if(K[2]-K[0]>=360)it=-180,Ht=180;else if(it>Ht){let Ae=this.getClusters([it,gt,180,Nt],z),Se=this.getClusters([-180,gt,Ht,Nt],z);return Ae.concat(Se)}let Jt=this.trees[this._limitZoom(z)],Rt=Jt.range(Ut(it),Pt(Nt),Ut(Ht),Pt(gt)),Ot=Jt.data,me=[];for(let Ae of Rt){let Se=this.stride*Ae;me.push(Ot[Se+Et]>1?dt(Ot,Se,this.clusterProps):this.points[Ot[Se+Ct]])}return me}getChildren(K){let z=this._getOriginId(K),it=this._getOriginZoom(K),gt="No cluster with the specified id.",Ht=this.trees[it];if(!Ht)throw new Error(gt);let Nt=Ht.data;if(z*this.stride>=Nt.length)throw new Error(gt);let Jt=this.options.radius/(this.options.extent*Math.pow(2,it-1)),Rt=Ht.within(Nt[z*this.stride],Nt[z*this.stride+1],Jt),Ot=[];for(let me of Rt){let Ae=me*this.stride;Nt[Ae+4]===K&&Ot.push(Nt[Ae+Et]>1?dt(Nt,Ae,this.clusterProps):this.points[Nt[Ae+Ct]])}if(Ot.length===0)throw new Error(gt);return Ot}getLeaves(K,z,it){let gt=[];return this._appendLeaves(gt,K,z=z||10,it=it||0,0),gt}getTile(K,z,it){let gt=this.trees[this._limitZoom(K)],Ht=Math.pow(2,K),{extent:Nt,radius:Jt}=this.options,Rt=Jt/Nt,Ot=(it-Rt)/Ht,me=(it+1+Rt)/Ht,Ae={features:[]};return this._addTileFeatures(gt.range((z-Rt)/Ht,Ot,(z+1+Rt)/Ht,me),gt.data,z,it,Ht,Ae),z===0&&this._addTileFeatures(gt.range(1-Rt/Ht,Ot,1,me),gt.data,Ht,it,Ht,Ae),z===Ht-1&&this._addTileFeatures(gt.range(0,Ot,Rt/Ht,me),gt.data,-1,it,Ht,Ae),Ae.features.length?Ae:null}getClusterExpansionZoom(K){let z=this._getOriginZoom(K)-1;for(;z<=this.options.maxZoom;){let it=this.getChildren(K);if(z++,it.length!==1)break;K=it[0].properties.cluster_id}return z}_appendLeaves(K,z,it,gt,Ht){let Nt=this.getChildren(z);for(let Jt of Nt){let Rt=Jt.properties;if(Rt&&Rt.cluster?Ht+Rt.point_count<=gt?Ht+=Rt.point_count:Ht=this._appendLeaves(K,Rt.cluster_id,it,gt,Ht):Ht1,me,Ae,Se;if(Ot)me=mt(z,Rt,this.clusterProps),Ae=z[Rt],Se=z[Rt+1];else{let Mi=this.points[z[Rt+Ct]];me=Mi.properties;let[Ti,Vi]=Mi.geometry.coordinates;Ae=Ut(Ti),Se=Pt(Vi)}let Ye={type:1,geometry:[[Math.round(this.options.extent*(Ae*Ht-it)),Math.round(this.options.extent*(Se*Ht-gt))]],tags:me},je;je=Ot||this.options.generateId?z[Rt+Ct]:this.points[z[Rt+Ct]].id,je!==void 0&&(Ye.id=je),Nt.features.push(Ye)}}_limitZoom(K){return Math.max(this.options.minZoom,Math.min(Math.floor(+K),this.options.maxZoom+1))}_cluster(K,z){let{radius:it,extent:gt,reduce:Ht,minPoints:Nt}=this.options,Jt=it/(gt*Math.pow(2,z)),Rt=K.data,Ot=[],me=this.stride;for(let Ae=0;Aez&&(Ti+=Rt[vi+Et])}if(Ti>Mi&&Ti>=Nt){let Vi,vi=Se*Mi,pr=Ye*Mi,ur=-1,Qi=((Ae/me|0)<<5)+(z+1)+this.points.length;for(let Oi of je){let sr=Oi*me;if(Rt[sr+2]<=z)continue;Rt[sr+2]=z;let Zt=Rt[sr+Et];vi+=Rt[sr]*Zt,pr+=Rt[sr+1]*Zt,Rt[sr+4]=Qi,Ht&&(Vi||(Vi=this._map(Rt,Ae,!0),ur=this.clusterProps.length,this.clusterProps.push(Vi)),Ht(Vi,this._map(Rt,sr)))}Rt[Ae+4]=Qi,Ot.push(vi/Ti,pr/Ti,1/0,Qi,-1,Ti),Ht&&Ot.push(ur)}else{for(let Vi=0;Vi1)for(let Vi of je){let vi=Vi*me;if(!(Rt[vi+2]<=z)){Rt[vi+2]=z;for(let pr=0;pr>5}_getOriginZoom(K){return(K-this.points.length)%32}_map(K,z,it){if(K[z+Et]>1){let Nt=this.clusterProps[K[z+ue]];return it?Object.assign({},Nt):Nt}let gt=this.points[K[z+Ct]].properties,Ht=this.options.map(gt);return it&&Ht===gt?Object.assign({},Ht):Ht}}function dt(It,K,z){return{type:"Feature",id:It[K+Ct],properties:mt(It,K,z),geometry:{type:"Point",coordinates:[(it=It[K],360*(it-.5)),ie(It[K+1])]}};var it}function mt(It,K,z){let it=It[K+Et],gt=it>=1e4?`${Math.round(it/1e3)}k`:it>=1e3?Math.round(it/100)/10+"k":it,Ht=It[K+ue],Nt=Ht===-1?{}:Object.assign({},z[Ht]);return Object.assign(Nt,{cluster:!0,cluster_id:It[K+Ct],point_count:it,point_count_abbreviated:gt})}function Ut(It){return It/360+.5}function Pt(It){let K=Math.sin(It*Math.PI/180),z=.5-.25*Math.log((1+K)/(1-K))/Math.PI;return z<0?0:z>1?1:z}function ie(It){let K=(180-360*It)*Math.PI/180;return 360*Math.atan(Math.exp(K))/Math.PI-90}function le(It,K,z,it){let gt=it,Ht=K+(z-K>>1),Nt,Jt=z-K,Rt=It[K],Ot=It[K+1],me=It[z],Ae=It[z+1];for(let Se=K+3;Segt)Nt=Se,gt=Ye;else if(Ye===gt){let je=Math.abs(Se-Ht);jeit&&(Nt-K>3&&le(It,K,Nt,it),It[Nt+2]=gt,z-Nt>3&&le(It,Nt,z,it))}function ce(It,K,z,it,gt,Ht){let Nt=gt-z,Jt=Ht-it;if(Nt!==0||Jt!==0){let Rt=((It-z)*Nt+(K-it)*Jt)/(Nt*Nt+Jt*Jt);Rt>1?(z=gt,it=Ht):Rt>0&&(z+=Nt*Rt,it+=Jt*Rt)}return Nt=It-z,Jt=K-it,Nt*Nt+Jt*Jt}function Qe(It,K,z,it){let gt={id:It??null,type:K,geometry:z,tags:it,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(K==="Point"||K==="MultiPoint"||K==="LineString")Ee(gt,z);else if(K==="Polygon")Ee(gt,z[0]);else if(K==="MultiLineString")for(let Ht of z)Ee(gt,Ht);else if(K==="MultiPolygon")for(let Ht of z)Ee(gt,Ht[0]);return gt}function Ee(It,K){for(let z=0;z0&&(Nt+=it?(gt*me-Ot*Ht)/2:Math.sqrt(Math.pow(Ot-gt,2)+Math.pow(me-Ht,2))),gt=Ot,Ht=me}let Jt=K.length-3;K[2]=1,le(K,0,Jt,z),K[Jt+2]=1,K.size=Math.abs(Nt),K.start=0,K.end=K.size}function de(It,K,z,it){for(let gt=0;gt1?1:z}function Oe(It,K,z,it,gt,Ht,Nt,Jt){if(it/=K,Ht>=(z/=K)&&Nt=it)return null;let Rt=[];for(let Ot of It){let me=Ot.geometry,Ae=Ot.type,Se=gt===0?Ot.minX:Ot.minY,Ye=gt===0?Ot.maxX:Ot.maxY;if(Se>=z&&Ye=it)continue;let je=[];if(Ae==="Point"||Ae==="MultiPoint")Le(me,je,z,it,gt);else if(Ae==="LineString")He(me,je,z,it,gt,!1,Jt.lineMetrics);else if(Ae==="MultiLineString")ze(me,je,z,it,gt,!1);else if(Ae==="Polygon")ze(me,je,z,it,gt,!0);else if(Ae==="MultiPolygon")for(let Mi of me){let Ti=[];ze(Mi,Ti,z,it,gt,!0),Ti.length&&je.push(Ti)}if(je.length){if(Jt.lineMetrics&&Ae==="LineString"){for(let Mi of je)Rt.push(Qe(Ot.id,Ae,Mi,Ot.tags));continue}Ae!=="LineString"&&Ae!=="MultiLineString"||(je.length===1?(Ae="LineString",je=je[0]):Ae="MultiLineString"),Ae!=="Point"&&Ae!=="MultiPoint"||(Ae=je.length===3?"Point":"MultiPoint"),Rt.push(Qe(Ot.id,Ae,je,Ot.tags))}}return Rt.length?Rt:null}function Le(It,K,z,it,gt){for(let Ht=0;Ht=z&&Nt<=it&&ti(K,It[Ht],It[Ht+1],It[Ht+2])}}function He(It,K,z,it,gt,Ht,Nt){let Jt=Ke(It),Rt=gt===0?ci:Si,Ot,me,Ae=It.start;for(let Ti=0;Tiz&&(me=Rt(Jt,Vi,vi,ur,Qi,z),Nt&&(Jt.start=Ae+Ot*me)):Oi>it?sr=z&&(me=Rt(Jt,Vi,vi,ur,Qi,z),Zt=!0),sr>it&&Oi<=it&&(me=Rt(Jt,Vi,vi,ur,Qi,it),Zt=!0),!Ht&&Zt&&(Nt&&(Jt.end=Ae+Ot*me),K.push(Jt),Jt=Ke(It)),Nt&&(Ae+=Ot)}let Se=It.length-3,Ye=It[Se],je=It[Se+1],Mi=gt===0?Ye:je;Mi>=z&&Mi<=it&&ti(Jt,Ye,je,It[Se+2]),Se=Jt.length-3,Ht&&Se>=3&&(Jt[Se]!==Jt[0]||Jt[Se+1]!==Jt[1])&&ti(Jt,Jt[0],Jt[1],Jt[2]),Jt.length&&K.push(Jt)}function Ke(It){let K=[];return K.size=It.size,K.start=It.start,K.end=It.end,K}function ze(It,K,z,it,gt,Ht){for(let Nt of It)He(Nt,K,z,it,gt,Ht,!1)}function ti(It,K,z,it){It.push(K,z,it)}function ci(It,K,z,it,gt,Ht){let Nt=(Ht-K)/(it-K);return ti(It,Ht,z+(gt-z)*Nt,1),Nt}function Si(It,K,z,it,gt,Ht){let Nt=(Ht-z)/(gt-z);return ti(It,K+(it-K)*Nt,Ht,1),Nt}function he(It,K){let z=[];for(let it=0;it0&&K.size<(gt?Nt:it))return void(z.numPoints+=K.length/3);let Jt=[];for(let Rt=0;RtNt)&&(z.numSimplified++,Jt.push(K[Rt],K[Rt+1])),z.numPoints++;gt&&function(Rt,Ot){let me=0;for(let Ae=0,Se=Rt.length,Ye=Se-2;Ae0===Ot)for(let Ae=0,Se=Rt.length;Ae24)throw new Error("maxZoom should be in the 0-24 range");if(z.promoteId&&z.generateId)throw new Error("promoteId and generateId cannot be used together.");let gt=function(Ht,Nt){let Jt=[];if(Ht.type==="FeatureCollection")for(let Rt=0;Rt1&&console.time("creation"),Ye=this.tiles[Se]=Ei(K,z,it,gt,Ot),this.tileCoords.push({z,x:it,y:gt}),me)){me>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",z,it,gt,Ye.numFeatures,Ye.numPoints,Ye.numSimplified),console.timeEnd("creation"));let Zt=`z${z}`;this.stats[Zt]=(this.stats[Zt]||0)+1,this.total++}if(Ye.source=K,Ht==null){if(z===Ot.indexMaxZoom||Ye.numPoints<=Ot.indexMaxPoints)continue}else{if(z===Ot.maxZoom||z===Ht)continue;if(Ht!=null){let Zt=Ht-z;if(it!==Nt>>Zt||gt!==Jt>>Zt)continue}}if(Ye.source=null,K.length===0)continue;me>1&&console.time("clipping");let je=.5*Ot.buffer/Ot.extent,Mi=.5-je,Ti=.5+je,Vi=1+je,vi=null,pr=null,ur=null,Qi=null,Oi=Oe(K,Ae,it-je,it+Ti,0,Ye.minX,Ye.maxX,Ot),sr=Oe(K,Ae,it+Mi,it+Vi,0,Ye.minX,Ye.maxX,Ot);K=null,Oi&&(vi=Oe(Oi,Ae,gt-je,gt+Ti,1,Ye.minY,Ye.maxY,Ot),pr=Oe(Oi,Ae,gt+Mi,gt+Vi,1,Ye.minY,Ye.maxY,Ot),Oi=null),sr&&(ur=Oe(sr,Ae,gt-je,gt+Ti,1,Ye.minY,Ye.maxY,Ot),Qi=Oe(sr,Ae,gt+Mi,gt+Vi,1,Ye.minY,Ye.maxY,Ot),sr=null),me>1&&console.timeEnd("clipping"),Rt.push(vi||[],z+1,2*it,2*gt),Rt.push(pr||[],z+1,2*it,2*gt+1),Rt.push(ur||[],z+1,2*it+1,2*gt),Rt.push(Qi||[],z+1,2*it+1,2*gt+1)}}getTile(K,z,it){K=+K,z=+z,it=+it;let gt=this.options,{extent:Ht,debug:Nt}=gt;if(K<0||K>24)return null;let Jt=1<1&&console.log("drilling down to z%d-%d-%d",K,z,it);let Ot,me=K,Ae=z,Se=it;for(;!Ot&&me>0;)me--,Ae>>=1,Se>>=1,Ot=this.tiles[Ni(me,Ae,Se)];return Ot&&Ot.source?(Nt>1&&(console.log("found parent tile z%d-%d-%d",me,Ae,Se),console.time("drilling down")),this.splitTile(Ot.source,me,Ae,Se,K,z,it),Nt>1&&console.timeEnd("drilling down"),this.tiles[Rt]?Hi(this.tiles[Rt],Ht):null):null}}function Ni(It,K,z){return 32*((1<{Ae.properties=Ye;let je={};for(let Mi of Se)je[Mi]=Rt[Mi].evaluate(me,Ae);return je},Nt.reduce=(Ye,je)=>{Ae.properties=je;for(let Mi of Se)me.accumulated=Ye[Mi],Ye[Mi]=Ot[Mi].evaluate(me,Ae)},Nt}(K)).load((yield this._pendingData).features):(gt=yield this._pendingData,new rr(gt,K.geojsonVtOptions)),this.loaded={};let Ht={};if(it){let Nt=it.finish();Nt&&(Ht.resourceTiming={},Ht.resourceTiming[K.source]=JSON.parse(JSON.stringify(Nt)))}return Ht}catch(Ht){if(delete this._pendingRequest,l.bB(Ht))return{abandoned:!0};throw Ht}var gt})}getData(){return l._(this,void 0,void 0,function*(){return this._pendingData})}reloadTile(K){let z=this.loaded;return z&&z[K.uid]?super.reloadTile(K):this.loadTile(K)}loadAndProcessGeoJSON(K,z){return l._(this,void 0,void 0,function*(){let it=yield this.loadGeoJSON(K,z);if(delete this._pendingRequest,typeof it!="object")throw new Error(`Input data given to '${K.source}' is not a valid GeoJSON object.`);if(F(it,!0),K.filter){let gt=l.bC(K.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(gt.result==="error")throw new Error(gt.value.map(Nt=>`${Nt.key}: ${Nt.message}`).join(", "));it={type:"FeatureCollection",features:it.features.filter(Nt=>gt.value.evaluate({zoom:0},Nt))}}return it})}loadGeoJSON(K,z){return l._(this,void 0,void 0,function*(){let{promoteId:it}=K;if(K.request){let gt=yield l.h(K.request,z);return this._dataUpdateable=wr(gt.data,it)?zi(gt.data,it):void 0,gt.data}if(typeof K.data=="string")try{let gt=JSON.parse(K.data);return this._dataUpdateable=wr(gt,it)?zi(gt,it):void 0,gt}catch{throw new Error(`Input data given to '${K.source}' is not a valid GeoJSON object.`)}if(!K.dataDiff)throw new Error(`Input data given to '${K.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${K.source}`);return function(gt,Ht,Nt){var Jt,Rt,Ot,me;if(Ht.removeAll&>.clear(),Ht.remove)for(let Ae of Ht.remove)gt.delete(Ae);if(Ht.add)for(let Ae of Ht.add){let Se=$e(Ae,Nt);Se!=null&>.set(Se,Ae)}if(Ht.update)for(let Ae of Ht.update){let Se=gt.get(Ae.id);if(Se==null)continue;let Ye=!Ae.removeAllProperties&&(((Jt=Ae.removeProperties)===null||Jt===void 0?void 0:Jt.length)>0||((Rt=Ae.addOrUpdateProperties)===null||Rt===void 0?void 0:Rt.length)>0);if((Ae.newGeometry||Ae.removeAllProperties||Ye)&&(Se=Object.assign({},Se),gt.set(Ae.id,Se),Ye&&(Se.properties=Object.assign({},Se.properties))),Ae.newGeometry&&(Se.geometry=Ae.newGeometry),Ae.removeAllProperties)Se.properties={};else if(((Ot=Ae.removeProperties)===null||Ot===void 0?void 0:Ot.length)>0)for(let je of Ae.removeProperties)Object.prototype.hasOwnProperty.call(Se.properties,je)&&delete Se.properties[je];if(((me=Ae.addOrUpdateProperties)===null||me===void 0?void 0:me.length)>0)for(let{key:je,value:Mi}of Ae.addOrUpdateProperties)Se.properties[je]=Mi}}(this._dataUpdateable,K.dataDiff,it),{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())}})}removeSource(K){return l._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(K){return this._geoJSONIndex.getClusterExpansionZoom(K.clusterId)}getClusterChildren(K){return this._geoJSONIndex.getChildren(K.clusterId)}getClusterLeaves(K){return this._geoJSONIndex.getLeaves(K.clusterId,K.limit,K.offset)}}class nr{constructor(K){this.self=K,this.actor=new l.F(K),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.self.registerWorkerSource=(z,it)=>{if(this.externalWorkerSourceTypes[z])throw new Error(`Worker source with name "${z}" already registered.`);this.externalWorkerSourceTypes[z]=it},this.self.addProtocol=l.bi,this.self.removeProtocol=l.bj,this.self.registerRTLTextPlugin=z=>{if(l.bD.isParsed())throw new Error("RTL text plugin already registered.");l.bD.setMethods(z)},this.actor.registerMessageHandler("LDT",(z,it)=>this._getDEMWorkerSource(z,it.source).loadTile(it)),this.actor.registerMessageHandler("RDT",(z,it)=>l._(this,void 0,void 0,function*(){this._getDEMWorkerSource(z,it.source).removeTile(it)})),this.actor.registerMessageHandler("GCEZ",(z,it)=>l._(this,void 0,void 0,function*(){return this._getWorkerSource(z,it.type,it.source).getClusterExpansionZoom(it)})),this.actor.registerMessageHandler("GCC",(z,it)=>l._(this,void 0,void 0,function*(){return this._getWorkerSource(z,it.type,it.source).getClusterChildren(it)})),this.actor.registerMessageHandler("GCL",(z,it)=>l._(this,void 0,void 0,function*(){return this._getWorkerSource(z,it.type,it.source).getClusterLeaves(it)})),this.actor.registerMessageHandler("LD",(z,it)=>this._getWorkerSource(z,it.type,it.source).loadData(it)),this.actor.registerMessageHandler("GD",(z,it)=>this._getWorkerSource(z,it.type,it.source).getData()),this.actor.registerMessageHandler("LT",(z,it)=>this._getWorkerSource(z,it.type,it.source).loadTile(it)),this.actor.registerMessageHandler("RT",(z,it)=>this._getWorkerSource(z,it.type,it.source).reloadTile(it)),this.actor.registerMessageHandler("AT",(z,it)=>this._getWorkerSource(z,it.type,it.source).abortTile(it)),this.actor.registerMessageHandler("RMT",(z,it)=>this._getWorkerSource(z,it.type,it.source).removeTile(it)),this.actor.registerMessageHandler("RS",(z,it)=>l._(this,void 0,void 0,function*(){if(!this.workerSources[z]||!this.workerSources[z][it.type]||!this.workerSources[z][it.type][it.source])return;let gt=this.workerSources[z][it.type][it.source];delete this.workerSources[z][it.type][it.source],gt.removeSource!==void 0&>.removeSource(it)})),this.actor.registerMessageHandler("RM",z=>l._(this,void 0,void 0,function*(){delete this.layerIndexes[z],delete this.availableImages[z],delete this.workerSources[z],delete this.demWorkerSources[z]})),this.actor.registerMessageHandler("SR",(z,it)=>l._(this,void 0,void 0,function*(){this.referrer=it})),this.actor.registerMessageHandler("SRPS",(z,it)=>this._syncRTLPluginState(z,it)),this.actor.registerMessageHandler("IS",(z,it)=>l._(this,void 0,void 0,function*(){this.self.importScripts(it)})),this.actor.registerMessageHandler("SI",(z,it)=>this._setImages(z,it)),this.actor.registerMessageHandler("UL",(z,it)=>l._(this,void 0,void 0,function*(){this._getLayerIndex(z).update(it.layers,it.removedIds)})),this.actor.registerMessageHandler("SL",(z,it)=>l._(this,void 0,void 0,function*(){this._getLayerIndex(z).replace(it)}))}_setImages(K,z){return l._(this,void 0,void 0,function*(){this.availableImages[K]=z;for(let it in this.workerSources[K]){let gt=this.workerSources[K][it];for(let Ht in gt)gt[Ht].availableImages=z}})}_syncRTLPluginState(K,z){return l._(this,void 0,void 0,function*(){if(l.bD.isParsed())return l.bD.getState();if(z.pluginStatus!=="loading")return l.bD.setState(z),z;let it=z.pluginURL;if(this.self.importScripts(it),l.bD.isParsed()){let gt={pluginStatus:"loaded",pluginURL:it};return l.bD.setState(gt),gt}throw l.bD.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${it}`)})}_getAvailableImages(K){let z=this.availableImages[K];return z||(z=[]),z}_getLayerIndex(K){let z=this.layerIndexes[K];return z||(z=this.layerIndexes[K]=new s),z}_getWorkerSource(K,z,it){if(this.workerSources[K]||(this.workerSources[K]={}),this.workerSources[K][z]||(this.workerSources[K][z]={}),!this.workerSources[K][z][it]){let gt={sendAsync:(Ht,Nt)=>(Ht.targetMapId=K,this.actor.sendAsync(Ht,Nt))};switch(z){case"vector":this.workerSources[K][z][it]=new w(gt,this._getLayerIndex(K),this._getAvailableImages(K));break;case"geojson":this.workerSources[K][z][it]=new _r(gt,this._getLayerIndex(K),this._getAvailableImages(K));break;default:this.workerSources[K][z][it]=new this.externalWorkerSourceTypes[z](gt,this._getLayerIndex(K),this._getAvailableImages(K))}}return this.workerSources[K][z][it]}_getDEMWorkerSource(K,z){return this.demWorkerSources[K]||(this.demWorkerSources[K]={}),this.demWorkerSources[K][z]||(this.demWorkerSources[K][z]=new _),this.demWorkerSources[K][z]}}return l.i(self)&&(self.worker=new nr(self)),nr}),r("index",["exports","./shared"],function(l,s){"use strict";var p="4.7.0";let m,I,w={now:typeof performance<"u"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frameAsync:u=>new Promise((t,a)=>{let h=requestAnimationFrame(t);u.signal.addEventListener("abort",()=>{cancelAnimationFrame(h),a(s.c())})}),getImageData(u,t=0){return this.getImageCanvasContext(u).getImageData(-t,-t,u.width+2*t,u.height+2*t)},getImageCanvasContext(u){let t=window.document.createElement("canvas"),a=t.getContext("2d",{willReadFrequently:!0});if(!a)throw new Error("failed to create canvas 2d context");return t.width=u.width,t.height=u.height,a.drawImage(u,0,0,u.width,u.height),a},resolveURL:u=>(m||(m=document.createElement("a")),m.href=u,m.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(I==null&&(I=matchMedia("(prefers-reduced-motion: reduce)")),I.matches)}};class _{static testProp(t){if(!_.docStyle)return t[0];for(let a=0;a{window.removeEventListener("click",_.suppressClickInternal,!0)},0)}static getScale(t){let a=t.getBoundingClientRect();return{x:a.width/t.offsetWidth||1,y:a.height/t.offsetHeight||1,boundingClientRect:a}}static getPoint(t,a,h){let g=a.boundingClientRect;return new s.P((h.clientX-g.left)/a.x-t.clientLeft,(h.clientY-g.top)/a.y-t.clientTop)}static mousePos(t,a){let h=_.getScale(t);return _.getPoint(t,h,a)}static touchPos(t,a){let h=[],g=_.getScale(t);for(let f=0;f{U&&Y(U),U=null,H=!0},F.onerror=()=>{V=!0,U=null},F.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(u){let t,a,h,g;u.resetRequestQueue=()=>{t=[],a=0,h=0,g={}},u.addThrottleControl=x=>{let k=h++;return g[k]=x,k},u.removeThrottleControl=x=>{delete g[x],y()},u.getImage=(x,k,R=!0)=>new Promise((G,P)=>{E.supported&&(x.headers||(x.headers={}),x.headers.accept="image/webp,*/*"),s.e(x,{type:"image"}),t.push({abortController:k,requestParameters:x,supportImageRefresh:R,state:"queued",onError:M=>{P(M)},onSuccess:M=>{G(M)}}),y()});let f=x=>s._(this,void 0,void 0,function*(){x.state="running";let{requestParameters:k,supportImageRefresh:R,onError:G,onSuccess:P,abortController:M}=x,j=R===!1&&!s.i(self)&&!s.g(k.url)&&(!k.headers||Object.keys(k.headers).reduce((X,ct)=>X&&ct==="accept",!0));a++;let et=j?B(k,M):s.m(k,M);try{let X=yield et;delete x.abortController,x.state="completed",X.data instanceof HTMLImageElement||s.b(X.data)?P(X):X.data&&P({data:yield(W=X.data,typeof createImageBitmap=="function"?s.d(W):s.f(W)),cacheControl:X.cacheControl,expires:X.expires})}catch(X){delete x.abortController,G(X)}finally{a--,y()}var W}),y=()=>{let x=(()=>{for(let k of Object.keys(g))if(g[k]())return!0;return!1})()?s.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:s.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let k=a;k0;k++){let R=t.shift();R.abortController.signal.aborted?k--:f(R)}},B=(x,k)=>new Promise((R,G)=>{let P=new Image,M=x.url,j=x.credentials;j&&j==="include"?P.crossOrigin="use-credentials":(j&&j==="same-origin"||!s.s(M))&&(P.crossOrigin="anonymous"),k.signal.addEventListener("abort",()=>{P.src="",G(s.c())}),P.fetchPriority="high",P.onload=()=>{P.onerror=P.onload=null,R({data:P})},P.onerror=()=>{P.onerror=P.onload=null,k.signal.aborted||G(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."))},P.src=M})}(D||(D={})),D.resetRequestQueue();class tt{constructor(t){this._transformRequestFn=t}transformRequest(t,a){return this._transformRequestFn&&this._transformRequestFn(t,a)||{url:t}}setTransformRequest(t){this._transformRequestFn=t}}function ot(u){var t=new s.A(3);return t[0]=u[0],t[1]=u[1],t[2]=u[2],t}var bt,kt=function(u,t,a){return u[0]=t[0]-a[0],u[1]=t[1]-a[1],u[2]=t[2]-a[2],u};bt=new s.A(3),s.A!=Float32Array&&(bt[0]=0,bt[1]=0,bt[2]=0);var Lt=function(u){var t=u[0],a=u[1];return t*t+a*a};function vt(u){let t=[];if(typeof u=="string")t.push({id:"default",url:u});else if(u&&u.length>0){let a=[];for(let{id:h,url:g}of u){let f=`${h}${g}`;a.indexOf(f)===-1&&(a.push(f),t.push({id:h,url:g}))}}return t}function ft(u,t,a){let h=u.split("?");return h[0]+=`${t}${a}`,h.join("?")}(function(){var u=new s.A(2);s.A!=Float32Array&&(u[0]=0,u[1]=0)})();class Mt{constructor(t,a,h,g){this.context=t,this.format=h,this.texture=t.gl.createTexture(),this.update(a,g)}update(t,a,h){let{width:g,height:f}=t,y=!(this.size&&this.size[0]===g&&this.size[1]===f||h),{context:B}=this,{gl:x}=B;if(this.useMipmap=Boolean(a&&a.useMipmap),x.bindTexture(x.TEXTURE_2D,this.texture),B.pixelStoreUnpackFlipY.set(!1),B.pixelStoreUnpack.set(1),B.pixelStoreUnpackPremultiplyAlpha.set(this.format===x.RGBA&&(!a||a.premultiply!==!1)),y)this.size=[g,f],t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||s.b(t)?x.texImage2D(x.TEXTURE_2D,0,this.format,this.format,x.UNSIGNED_BYTE,t):x.texImage2D(x.TEXTURE_2D,0,this.format,g,f,0,this.format,x.UNSIGNED_BYTE,t.data);else{let{x:k,y:R}=h||{x:0,y:0};t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||s.b(t)?x.texSubImage2D(x.TEXTURE_2D,0,k,R,x.RGBA,x.UNSIGNED_BYTE,t):x.texSubImage2D(x.TEXTURE_2D,0,k,R,g,f,x.RGBA,x.UNSIGNED_BYTE,t.data)}this.useMipmap&&this.isSizePowerOfTwo()&&x.generateMipmap(x.TEXTURE_2D)}bind(t,a,h){let{context:g}=this,{gl:f}=g;f.bindTexture(f.TEXTURE_2D,this.texture),h!==f.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(h=f.LINEAR),t!==this.filter&&(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,t),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,h||t),this.filter=t),a!==this.wrap&&(f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,a),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,a),this.wrap=a)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null}}function qt(u){let{userImage:t}=u;return!!(t&&t.render&&t.render())&&(u.data.replace(new Uint8Array(t.data.buffer)),!0)}class at extends s.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new s.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(let{ids:a,promiseResolve:h}of this.requestors)h(this._getImagesForIds(a));this.requestors=[]}}getImage(t){let a=this.images[t];if(a&&!a.data&&a.spriteData){let h=a.spriteData;a.data=new s.R({width:h.width,height:h.height},h.context.getImageData(h.x,h.y,h.width,h.height).data),a.spriteData=null}return a}addImage(t,a){if(this.images[t])throw new Error(`Image id ${t} already exist, use updateImage instead`);this._validate(t,a)&&(this.images[t]=a)}_validate(t,a){let h=!0,g=a.data||a.spriteData;return this._validateStretch(a.stretchX,g&&g.width)||(this.fire(new s.j(new Error(`Image "${t}" has invalid "stretchX" value`))),h=!1),this._validateStretch(a.stretchY,g&&g.height)||(this.fire(new s.j(new Error(`Image "${t}" has invalid "stretchY" value`))),h=!1),this._validateContent(a.content,a)||(this.fire(new s.j(new Error(`Image "${t}" has invalid "content" value`))),h=!1),h}_validateStretch(t,a){if(!t)return!0;let h=0;for(let g of t){if(g[0]{let g=!0;if(!this.isLoaded())for(let f of t)this.images[f]||(g=!1);this.isLoaded()||g?a(this._getImagesForIds(t)):this.requestors.push({ids:t,promiseResolve:a})})}_getImagesForIds(t){let a={};for(let h of t){let g=this.getImage(h);g||(this.fire(new s.k("styleimagemissing",{id:h})),g=this.getImage(h)),g?a[h]={data:g.data.clone(),pixelRatio:g.pixelRatio,sdf:g.sdf,version:g.version,stretchX:g.stretchX,stretchY:g.stretchY,content:g.content,textFitWidth:g.textFitWidth,textFitHeight:g.textFitHeight,hasRenderCallback:Boolean(g.userImage&&g.userImage.render)}:s.w(`Image "${h}" 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.`)}return a}getPixelSize(){let{width:t,height:a}=this.atlasImage;return{width:t,height:a}}getPattern(t){let a=this.patterns[t],h=this.getImage(t);if(!h)return null;if(a&&a.position.version===h.version)return a.position;if(a)a.position.version=h.version;else{let g={w:h.data.width+2,h:h.data.height+2,x:0,y:0},f=new s.I(g,h);this.patterns[t]={bin:g,position:f}}return this._updatePatternAtlas(),this.patterns[t].position}bind(t){let a=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new Mt(t,this.atlasImage,a.RGBA),this.atlasTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE)}_updatePatternAtlas(){let t=[];for(let f in this.patterns)t.push(this.patterns[f].bin);let{w:a,h}=s.p(t),g=this.atlasImage;g.resize({width:a||1,height:h||1});for(let f in this.patterns){let{bin:y}=this.patterns[f],B=y.x+1,x=y.y+1,k=this.getImage(f).data,R=k.width,G=k.height;s.R.copy(k,g,{x:0,y:0},{x:B,y:x},{width:R,height:G}),s.R.copy(k,g,{x:0,y:G-1},{x:B,y:x-1},{width:R,height:1}),s.R.copy(k,g,{x:0,y:0},{x:B,y:x+G},{width:R,height:1}),s.R.copy(k,g,{x:R-1,y:0},{x:B-1,y:x},{width:1,height:G}),s.R.copy(k,g,{x:0,y:0},{x:B+R,y:x},{width:1,height:G})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(t){for(let a of t){if(this.callbackDispatchedThisFrame[a])continue;this.callbackDispatchedThisFrame[a]=!0;let h=this.getImage(a);h||s.w(`Image with ID: "${a}" was not found`),qt(h)&&this.updateImage(a,h)}}}let st=1e20;function wt(u,t,a,h,g,f,y,B,x){for(let k=t;k-1);x++,f[x]=B,y[x]=k,y[x+1]=st}for(let B=0,x=0;B65535)throw new Error("glyphs > 65535 not supported");if(h.ranges[f])return{stack:t,id:a,glyph:g};if(!this.url)throw new Error("glyphsUrl is not set");if(!h.requests[f]){let B=te.loadGlyphRange(t,f,this.url,this.requestManager);h.requests[f]=B}let y=yield h.requests[f];for(let B in y)this._doesCharSupportLocalGlyph(+B)||(h.glyphs[+B]=y[+B]);return h.ranges[f]=!0,{stack:t,id:a,glyph:y[a]||null}})}_doesCharSupportLocalGlyph(t){return!!this.localIdeographFontFamily&&/\p{Ideo}|\p{sc=Hang}|\p{sc=Hira}|\p{sc=Kana}/u.test(String.fromCodePoint(t))}_tinySDF(t,a,h){let g=this.localIdeographFontFamily;if(!g||!this._doesCharSupportLocalGlyph(h))return;let f=t.tinySDF;if(!f){let B="400";/bold/i.test(a)?B="900":/medium/i.test(a)?B="500":/light/i.test(a)&&(B="200"),f=t.tinySDF=new te.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:g,fontWeight:B})}let y=f.draw(String.fromCharCode(h));return{id:h,bitmap:new s.o({width:y.width||60,height:y.height||60},y.data),metrics:{width:y.glyphWidth/2||24,height:y.glyphHeight/2||24,left:y.glyphLeft/2+.5||0,top:y.glyphTop/2-27.5||-8,advance:y.glyphAdvance/2||24,isDoubleResolution:!0}}}}te.loadGlyphRange=function(u,t,a,h){return s._(this,void 0,void 0,function*(){let g=256*t,f=g+255,y=h.transformRequest(a.replace("{fontstack}",u).replace("{range}",`${g}-${f}`),"Glyphs"),B=yield s.l(y,new AbortController);if(!B||!B.data)throw new Error(`Could not load glyph range. range: ${t}, ${g}-${f}`);let x={};for(let k of s.n(B.data))x[k.id]=k;return x})},te.TinySDF=class{constructor({fontSize:u=24,buffer:t=3,radius:a=8,cutoff:h=.25,fontFamily:g="sans-serif",fontWeight:f="normal",fontStyle:y="normal"}={}){this.buffer=t,this.cutoff=h,this.radius=a;let B=this.size=u+4*t,x=this._createCanvas(B),k=this.ctx=x.getContext("2d",{willReadFrequently:!0});k.font=`${y} ${f} ${u}px ${g}`,k.textBaseline="alphabetic",k.textAlign="left",k.fillStyle="black",this.gridOuter=new Float64Array(B*B),this.gridInner=new Float64Array(B*B),this.f=new Float64Array(B),this.z=new Float64Array(B+1),this.v=new Uint16Array(B)}_createCanvas(u){let t=document.createElement("canvas");return t.width=t.height=u,t}draw(u){let{width:t,actualBoundingBoxAscent:a,actualBoundingBoxDescent:h,actualBoundingBoxLeft:g,actualBoundingBoxRight:f}=this.ctx.measureText(u),y=Math.ceil(a),B=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(f-g))),x=Math.min(this.size-this.buffer,y+Math.ceil(h)),k=B+2*this.buffer,R=x+2*this.buffer,G=Math.max(k*R,0),P=new Uint8ClampedArray(G),M={data:P,width:k,height:R,glyphWidth:B,glyphHeight:x,glyphTop:y,glyphLeft:0,glyphAdvance:t};if(B===0||x===0)return M;let{ctx:j,buffer:et,gridInner:W,gridOuter:X}=this;j.clearRect(et,et,B,x),j.fillText(u,et,et+y);let ct=j.getImageData(et,et,B,x);X.fill(st,0,G),W.fill(0,0,G);for(let rt=0;rt0?se*se:0,W[Qt]=se<0?se*se:0}}wt(X,0,0,k,R,k,this.f,this.v,this.z),wt(W,et,et,B,x,k,this.f,this.v,this.z);for(let rt=0;rt1&&(x=t[++B]);let R=Math.abs(k-x.left),G=Math.abs(k-x.right),P=Math.min(R,G),M,j=f/h*(g+1);if(x.isDash){let et=g-Math.abs(j);M=Math.sqrt(P*P+et*et)}else M=g-Math.sqrt(P*P+j*j);this.data[y+k]=Math.max(0,Math.min(255,M+128))}}}addRegularDash(t){for(let B=t.length-1;B>=0;--B){let x=t[B],k=t[B+1];x.zeroLength?t.splice(B,1):k&&k.isDash===x.isDash&&(k.left=x.left,t.splice(B,1))}let a=t[0],h=t[t.length-1];a.isDash===h.isDash&&(a.left=h.left-this.width,h.right=a.right+this.width);let g=this.width*this.nextRow,f=0,y=t[f];for(let B=0;B1&&(y=t[++f]);let x=Math.abs(B-y.left),k=Math.abs(B-y.right),R=Math.min(x,k);this.data[g+B]=Math.max(0,Math.min(255,(y.isDash?R:-R)+128))}}addDash(t,a){let h=a?7:0,g=2*h+1;if(this.nextRow+g>this.height)return s.w("LineAtlas out of space"),null;let f=0;for(let B=0;B{a.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[J]}numActive(){return Object.keys(this.active).length}}let mt=Math.floor(w.hardwareConcurrency/2),Ut,Pt;function ie(){return Ut||(Ut=new dt),Ut}dt.workerCount=s.C(globalThis)?Math.max(Math.min(mt,3),1):1;class le{constructor(t,a){this.workerPool=t,this.actors=[],this.currentActor=0,this.id=a;let h=this.workerPool.acquire(a);for(let g=0;g{a.remove()}),this.actors=[],t&&this.workerPool.release(this.id)}registerMessageHandler(t,a){for(let h of this.actors)h.registerMessageHandler(t,a)}}function ce(){return Pt||(Pt=new le(ie(),s.G),Pt.registerMessageHandler("GR",(u,t,a)=>s.m(t,a))),Pt}function Qe(u,t){let a=s.H();return s.J(a,a,[1,1,0]),s.K(a,a,[.5*u.width,.5*u.height,1]),s.L(a,a,u.calculatePosMatrix(t.toUnwrapped()))}function Ee(u,t,a,h,g,f){let y=function(G,P,M){if(G)for(let j of G){let et=P[j];if(et&&et.source===M&&et.type==="fill-extrusion")return!0}else for(let j in P){let et=P[j];if(et.source===M&&et.type==="fill-extrusion")return!0}return!1}(g&&g.layers,t,u.id),B=f.maxPitchScaleFactor(),x=u.tilesIn(h,B,y);x.sort(We);let k=[];for(let G of x)k.push({wrappedTileID:G.tileID.wrapped().key,queryResults:G.tile.queryRenderedFeatures(t,a,u._state,G.queryGeometry,G.cameraQueryGeometry,G.scale,g,f,B,Qe(u.transform,G.tileID))});let R=function(G){let P={},M={};for(let j of G){let et=j.queryResults,W=j.wrappedTileID,X=M[W]=M[W]||{};for(let ct in et){let rt=et[ct],ut=X[ct]=X[ct]||{},Ft=P[ct]=P[ct]||[];for(let Qt of rt)ut[Qt.featureIndex]||(ut[Qt.featureIndex]=!0,Ft.push(Qt))}}return P}(k);for(let G in R)R[G].forEach(P=>{let M=P.feature,j=u.getFeatureState(M.layer["source-layer"],M.id);M.source=M.layer.source,M.layer["source-layer"]&&(M.sourceLayer=M.layer["source-layer"]),M.state=j});return R}function We(u,t){let a=u.tileID,h=t.tileID;return a.overscaledZ-h.overscaledZ||a.canonical.y-h.canonical.y||a.wrap-h.wrap||a.canonical.x-h.canonical.x}function Je(u,t,a){return s._(this,void 0,void 0,function*(){let h=u;if(u.url?h=(yield s.h(t.transformRequest(u.url,"Source"),a)).data:yield w.frameAsync(a),!h)return null;let g=s.M(s.e(h,u),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in h&&h.vector_layers&&(g.vectorLayerIds=h.vector_layers.map(f=>f.id)),g})}class Dt{constructor(t,a){t&&(a?this.setSouthWest(t).setNorthEast(a):Array.isArray(t)&&(t.length===4?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1])))}setNorthEast(t){return this._ne=t instanceof s.N?new s.N(t.lng,t.lat):s.N.convert(t),this}setSouthWest(t){return this._sw=t instanceof s.N?new s.N(t.lng,t.lat):s.N.convert(t),this}extend(t){let a=this._sw,h=this._ne,g,f;if(t instanceof s.N)g=t,f=t;else{if(!(t instanceof Dt))return Array.isArray(t)?t.length===4||t.every(Array.isArray)?this.extend(Dt.convert(t)):this.extend(s.N.convert(t)):t&&("lng"in t||"lon"in t)&&"lat"in t?this.extend(s.N.convert(t)):this;if(g=t._sw,f=t._ne,!g||!f)return this}return a||h?(a.lng=Math.min(g.lng,a.lng),a.lat=Math.min(g.lat,a.lat),h.lng=Math.max(f.lng,h.lng),h.lat=Math.max(f.lat,h.lat)):(this._sw=new s.N(g.lng,g.lat),this._ne=new s.N(f.lng,f.lat)),this}getCenter(){return new s.N((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 s.N(this.getWest(),this.getNorth())}getSouthEast(){return new s.N(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(t){let{lng:a,lat:h}=s.N.convert(t),g=this._sw.lng<=a&&a<=this._ne.lng;return this._sw.lng>this._ne.lng&&(g=this._sw.lng>=a&&a>=this._ne.lng),this._sw.lat<=h&&h<=this._ne.lat&&g}static convert(t){return t instanceof Dt?t:t&&new Dt(t)}static fromLngLat(t,a=0){let h=360*a/40075017,g=h/Math.cos(Math.PI/180*t.lat);return new Dt(new s.N(t.lng-g,t.lat-h),new s.N(t.lng+g,t.lat+h))}adjustAntiMeridian(){let t=new s.N(this._sw.lng,this._sw.lat),a=new s.N(this._ne.lng,this._ne.lat);return new Dt(t,t.lng>a.lng?new s.N(a.lng+360,a.lat):a)}}class de{constructor(t,a,h){this.bounds=Dt.convert(this.validateBounds(t)),this.minzoom=a||0,this.maxzoom=h||24}validateBounds(t){return Array.isArray(t)&&t.length===4?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(t){let a=Math.pow(2,t.z),h=Math.floor(s.O(this.bounds.getWest())*a),g=Math.floor(s.Q(this.bounds.getNorth())*a),f=Math.ceil(s.O(this.bounds.getEast())*a),y=Math.ceil(s.Q(this.bounds.getSouth())*a);return t.x>=h&&t.x=g&&t.y{this._options.tiles=t}),this}setUrl(t){return this.setSourceProperty(()=>{this.url=t,this._options.url=t}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return s.e({},this._options)}loadTile(t){return s._(this,void 0,void 0,function*(){let a=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),h={request:this.map._requestManager.transformRequest(a,"Tile"),uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};h.request.collectResourceTiming=this._collectResourceTiming;let g="RT";if(t.actor&&t.state!=="expired"){if(t.state==="loading")return new Promise((f,y)=>{t.reloadPromise={resolve:f,reject:y}})}else t.actor=this.dispatcher.getActor(),g="LT";t.abortController=new AbortController;try{let f=yield t.actor.sendAsync({type:g,data:h},t.abortController);if(delete t.abortController,t.aborted)return;this._afterTileLoadWorkerResponse(t,f)}catch(f){if(delete t.abortController,t.aborted)return;if(f&&f.status!==404)throw f;this._afterTileLoadWorkerResponse(t,null)}})}_afterTileLoadWorkerResponse(t,a){if(a&&a.resourceTiming&&(t.resourceTiming=a.resourceTiming),a&&this.map._refreshExpiredTiles&&t.setExpiryData(a),t.loadVectorData(a,this.map.painter),t.reloadPromise){let h=t.reloadPromise;t.reloadPromise=null,this.loadTile(t).then(h.resolve).catch(h.reject)}}abortTile(t){return s._(this,void 0,void 0,function*(){t.abortController&&(t.abortController.abort(),delete t.abortController),t.actor&&(yield t.actor.sendAsync({type:"AT",data:{uid:t.uid,type:this.type,source:this.id}}))})}unloadTile(t){return s._(this,void 0,void 0,function*(){t.unloadVectorData(),t.actor&&(yield t.actor.sendAsync({type:"RMT",data:{uid:t.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class Xe extends s.E{constructor(t,a,h,g){super(),this.id=t,this.dispatcher=h,this.setEventedParent(g),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=s.e({type:"raster"},a),s.e(this,s.M(a,["url","scheme","tileSize"]))}load(){return s._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new s.k("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let t=yield Je(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,t&&(s.e(this,t),t.bounds&&(this.tileBounds=new de(t.bounds,this.minzoom,this.maxzoom)),this.fire(new s.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new s.k("data",{dataType:"source",sourceDataType:"content"})))}catch(t){this._tileJSONRequest=null,this.fire(new s.j(t))}})}loaded(){return this._loaded}onAdd(t){this.map=t,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(t){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),t(),this.load()}setTiles(t){return this.setSourceProperty(()=>{this._options.tiles=t}),this}setUrl(t){return this.setSourceProperty(()=>{this.url=t,this._options.url=t}),this}serialize(){return s.e({},this._options)}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t){return s._(this,void 0,void 0,function*(){let a=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.abortController=new AbortController;try{let h=yield D.getImage(this.map._requestManager.transformRequest(a,"Tile"),t.abortController,this.map._refreshExpiredTiles);if(delete t.abortController,t.aborted)return void(t.state="unloaded");if(h&&h.data){this.map._refreshExpiredTiles&&h.cacheControl&&h.expires&&t.setExpiryData({cacheControl:h.cacheControl,expires:h.expires});let g=this.map.painter.context,f=g.gl,y=h.data;t.texture=this.map.painter.getTileTexture(y.width),t.texture?t.texture.update(y,{useMipmap:!0}):(t.texture=new Mt(g,y,f.RGBA,{useMipmap:!0}),t.texture.bind(f.LINEAR,f.CLAMP_TO_EDGE,f.LINEAR_MIPMAP_NEAREST)),t.state="loaded"}}catch(h){if(delete t.abortController,t.aborted)t.state="unloaded";else if(h)throw t.state="errored",h}})}abortTile(t){return s._(this,void 0,void 0,function*(){t.abortController&&(t.abortController.abort(),delete t.abortController)})}unloadTile(t){return s._(this,void 0,void 0,function*(){t.texture&&this.map.painter.saveTileTexture(t.texture)})}hasTransition(){return!1}}class Oe extends Xe{constructor(t,a,h,g){super(t,a,h,g),this.type="raster-dem",this.maxzoom=22,this._options=s.e({type:"raster-dem"},a),this.encoding=a.encoding||"mapbox",this.redFactor=a.redFactor,this.greenFactor=a.greenFactor,this.blueFactor=a.blueFactor,this.baseShift=a.baseShift}loadTile(t){return s._(this,void 0,void 0,function*(){let a=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),h=this.map._requestManager.transformRequest(a,"Tile");t.neighboringTiles=this._getNeighboringTiles(t.tileID),t.abortController=new AbortController;try{let g=yield D.getImage(h,t.abortController,this.map._refreshExpiredTiles);if(delete t.abortController,t.aborted)return void(t.state="unloaded");if(g&&g.data){let f=g.data;this.map._refreshExpiredTiles&&g.cacheControl&&g.expires&&t.setExpiryData({cacheControl:g.cacheControl,expires:g.expires});let y=s.b(f)&&s.U()?f:yield this.readImageNow(f),B={type:this.type,uid:t.uid,source:this.id,rawImageData:y,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!t.actor||t.state==="expired"){t.actor=this.dispatcher.getActor();let x=yield t.actor.sendAsync({type:"LDT",data:B});t.dem=x,t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0,t.state="loaded"}}}catch(g){if(delete t.abortController,t.aborted)t.state="unloaded";else if(g)throw t.state="errored",g}})}readImageNow(t){return s._(this,void 0,void 0,function*(){if(typeof VideoFrame<"u"&&s.V()){let a=t.width+2,h=t.height+2;try{return new s.R({width:a,height:h},yield s.W(t,-1,-1,a,h))}catch{}}return w.getImageData(t,1)})}_getNeighboringTiles(t){let a=t.canonical,h=Math.pow(2,a.z),g=(a.x-1+h)%h,f=a.x===0?t.wrap-1:t.wrap,y=(a.x+1+h)%h,B=a.x+1===h?t.wrap+1:t.wrap,x={};return x[new s.S(t.overscaledZ,f,a.z,g,a.y).key]={backfilled:!1},x[new s.S(t.overscaledZ,B,a.z,y,a.y).key]={backfilled:!1},a.y>0&&(x[new s.S(t.overscaledZ,f,a.z,g,a.y-1).key]={backfilled:!1},x[new s.S(t.overscaledZ,t.wrap,a.z,a.x,a.y-1).key]={backfilled:!1},x[new s.S(t.overscaledZ,B,a.z,y,a.y-1).key]={backfilled:!1}),a.y+10&&s.e(f,{resourceTiming:g}),this.fire(new s.k("data",Object.assign(Object.assign({},f),{sourceDataType:"metadata"}))),this.fire(new s.k("data",Object.assign(Object.assign({},f),{sourceDataType:"content"})))}catch(h){if(this._pendingLoads--,this._removed)return void this.fire(new s.k("dataabort",{dataType:"source"}));this.fire(new s.j(h))}})}loaded(){return this._pendingLoads===0}loadTile(t){return s._(this,void 0,void 0,function*(){let a=t.actor?"RT":"LT";t.actor=this.actor;let h={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};t.abortController=new AbortController;let g=yield this.actor.sendAsync({type:a,data:h},t.abortController);delete t.abortController,t.unloadVectorData(),t.aborted||t.loadVectorData(g,this.map.painter,a==="RT")})}abortTile(t){return s._(this,void 0,void 0,function*(){t.abortController&&(t.abortController.abort(),delete t.abortController),t.aborted=!0})}unloadTile(t){return s._(this,void 0,void 0,function*(){t.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:t.uid,type:this.type,source:this.id}})})}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return s.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var He=s.Y([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Ke extends s.E{constructor(t,a,h,g){super(),this.id=t,this.dispatcher=h,this.coordinates=a.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(g),this.options=a}load(t){return s._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new s.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let a=yield D.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,a&&a.data&&(this.image=a.data,t&&(this.coordinates=t),this._finishLoading())}catch(a){this._request=null,this._loaded=!0,this.fire(new s.j(a))}})}loaded(){return this._loaded}updateImage(t){return t.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=t.url,this.load(t.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new s.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(t){this.map=t,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(t){this.coordinates=t;let a=t.map(s.Z.fromLngLat);this.tileID=function(g){let f=1/0,y=1/0,B=-1/0,x=-1/0;for(let P of g)f=Math.min(f,P.x),y=Math.min(y,P.y),B=Math.max(B,P.x),x=Math.max(x,P.y);let k=Math.max(B-f,x-y),R=Math.max(0,Math.floor(-Math.log(k)/Math.LN2)),G=Math.pow(2,R);return new s.a1(R,Math.floor((f+B)/2*G),Math.floor((y+x)/2*G))}(a),this.minzoom=this.maxzoom=this.tileID.z;let h=a.map(g=>this.tileID.getTilePoint(g)._round());return this._boundsArray=new s.$,this._boundsArray.emplaceBack(h[0].x,h[0].y,0,0),this._boundsArray.emplaceBack(h[1].x,h[1].y,s.X,0),this._boundsArray.emplaceBack(h[3].x,h[3].y,0,s.X),this._boundsArray.emplaceBack(h[2].x,h[2].y,s.X,s.X),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new s.k("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let t=this.map.painter.context,a=t.gl;this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,He.members)),this.boundsSegments||(this.boundsSegments=s.a0.simpleSegment(0,0,4,2)),this.texture||(this.texture=new Mt(t,this.image,a.RGBA),this.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE));let h=!1;for(let g in this.tiles){let f=this.tiles[g];f.state!=="loaded"&&(f.state="loaded",f.texture=this.texture,h=!0)}h&&this.fire(new s.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(t){return s._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={}):t.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class ze extends Ke{constructor(t,a,h,g){super(t,a,h,g),this.roundZoom=!0,this.type="video",this.options=a}load(){return s._(this,void 0,void 0,function*(){this._loaded=!1;let t=this.options;this.urls=[];for(let a of t.urls)this.urls.push(this.map._requestManager.transformRequest(a,"Source").url);try{let a=yield s.a3(this.urls);if(this._loaded=!0,!a)return;this.video=a,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(a){this.fire(new s.j(a))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(t){if(this.video){let a=this.video.seekable;ta.end(0)?this.fire(new s.j(new s.a2(`sources.${this.id}`,null,`Playback for this video can be set only between the ${a.start(0)} and ${a.end(0)}-second mark.`))):this.video.currentTime=t}}getVideo(){return this.video}onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let t=this.map.painter.context,a=t.gl;this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,He.members)),this.boundsSegments||(this.boundsSegments=s.a0.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE),a.texSubImage2D(a.TEXTURE_2D,0,0,0,a.RGBA,a.UNSIGNED_BYTE,this.video)):(this.texture=new Mt(t,this.video,a.RGBA),this.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE));let h=!1;for(let g in this.tiles){let f=this.tiles[g];f.state!=="loaded"&&(f.state="loaded",f.texture=this.texture,h=!0)}h&&this.fire(new s.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class ti extends Ke{constructor(t,a,h,g){super(t,a,h,g),a.coordinates?Array.isArray(a.coordinates)&&a.coordinates.length===4&&!a.coordinates.some(f=>!Array.isArray(f)||f.length!==2||f.some(y=>typeof y!="number"))||this.fire(new s.j(new s.a2(`sources.${t}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new s.j(new s.a2(`sources.${t}`,null,'missing required property "coordinates"'))),a.animate&&typeof a.animate!="boolean"&&this.fire(new s.j(new s.a2(`sources.${t}`,null,'optional "animate" property must be a boolean value'))),a.canvas?typeof a.canvas=="string"||a.canvas instanceof HTMLCanvasElement||this.fire(new s.j(new s.a2(`sources.${t}`,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.j(new s.a2(`sources.${t}`,null,'missing required property "canvas"'))),this.options=a,this.animate=a.animate===void 0||a.animate}load(){return s._(this,void 0,void 0,function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new s.j(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(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let a=this.map.painter.context,h=a.gl;this.boundsBuffer||(this.boundsBuffer=a.createVertexBuffer(this._boundsArray,He.members)),this.boundsSegments||(this.boundsSegments=s.a0.simpleSegment(0,0,4,2)),this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new Mt(a,this.canvas,h.RGBA,{premultiply:!0});let g=!1;for(let f in this.tiles){let y=this.tiles[f];y.state!=="loaded"&&(y.state="loaded",y.texture=this.texture,g=!0)}g&&this.fire(new s.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let t of[this.canvas.width,this.canvas.height])if(isNaN(t)||t<=0)return!0;return!1}}let ci={},Si=u=>{switch(u){case"geojson":return Le;case"image":return Ke;case"raster":return Xe;case"raster-dem":return Oe;case"vector":return Tt;case"video":return ze;case"canvas":return ti}return ci[u]},he="RTLPluginLoaded";class Zi extends s.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=ce()}_syncState(t){return this.status=t,this.dispatcher.broadcast("SRPS",{pluginStatus:t,pluginURL:this.url}).catch(a=>{throw this.status="error",a})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(t){return s._(this,arguments,void 0,function*(a,h=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=w.resolveURL(a),!this.url)throw new Error(`requested url ${a} is invalid`);if(this.status==="unavailable"){if(!h)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()})}_requestImport(){return s._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new s.k(he))})}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let Hi=null;function pi(){return Hi||(Hi=new Zi),Hi}class Ei{constructor(t,a){this.timeAdded=0,this.fadeEndTime=0,this.tileID=t,this.uid=s.a4(),this.uses=0,this.tileSize=a,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(t){let a=t+this.timeAdded;af.getLayer(k)).filter(Boolean);if(x.length!==0){B.layers=x,B.stateDependentLayerIds&&(B.stateDependentLayers=B.stateDependentLayerIds.map(k=>x.filter(R=>R.id===k)[0]));for(let k of x)y[k.id]=B}}return y}(t.buckets,a.style),this.hasSymbolBuckets=!1;for(let g in this.buckets){let f=this.buckets[g];if(f instanceof s.a6){if(this.hasSymbolBuckets=!0,!h)break;f.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let g in this.buckets){let f=this.buckets[g];if(f instanceof s.a6&&f.hasRTLText){this.hasRTLText=!0,pi().lazyLoad();break}}this.queryPadding=0;for(let g in this.buckets){let f=this.buckets[g];this.queryPadding=Math.max(this.queryPadding,a.style.getLayer(g).queryRadius(f))}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage)}else this.collisionBoxArray=new s.a5}unloadVectorData(){for(let t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(t){return this.buckets[t.id]}upload(t){for(let h in this.buckets){let g=this.buckets[h];g.uploadPending()&&g.upload(t)}let a=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Mt(t,this.imageAtlas.image,a.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Mt(t,this.glyphAtlasImage,a.ALPHA),this.glyphAtlasImage=null)}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture)}queryRenderedFeatures(t,a,h,g,f,y,B,x,k,R){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:g,cameraQueryGeometry:f,scale:y,tileSize:this.tileSize,pixelPosMatrix:R,transform:x,params:B,queryPadding:this.queryPadding*k},t,a,h):{}}querySourceFeatures(t,a){let h=this.latestFeatureIndex;if(!h||!h.rawTileData)return;let g=h.loadVTLayers(),f=a&&a.sourceLayer?a.sourceLayer:"",y=g._geojsonTileLayer||g[f];if(!y)return;let B=s.a7(a&&a.filter),{z:x,x:k,y:R}=this.tileID.canonical,G={z:x,x:k,y:R};for(let P=0;Ph)g=!1;else if(a)if(this.expirationTime{this.remove(t,f)},h)),this.data[g].push(f),this.order.push(g),this.order.length>this.max){let y=this._getAndRemoveByKey(this.order[0]);y&&this.onRemove(y)}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){let a=this.data[t].shift();return a.timeout&&clearTimeout(a.timeout),this.data[t].length===0&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),a.value}getByKey(t){let a=this.data[t];return a?a[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,a){if(!this.has(t))return this;let h=t.wrapped().key,g=a===void 0?0:this.data[h].indexOf(a),f=this.data[h][g];return this.data[h].splice(g,1),f.timeout&&clearTimeout(f.timeout),this.data[h].length===0&&delete this.data[h],this.onRemove(f.value),this.order.splice(this.order.indexOf(h),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){let a=this._getAndRemoveByKey(this.order[0]);a&&this.onRemove(a)}return this}filter(t){let a=[];for(let h in this.data)for(let g of this.data[h])t(g.value)||a.push(g);for(let h of a)this.remove(h.value.tileID,h)}}class ui{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(t,a,h){let g=String(a);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][g]=this.stateChanges[t][g]||{},s.e(this.stateChanges[t][g],h),this.deletedStates[t]===null){this.deletedStates[t]={};for(let f in this.state[t])f!==g&&(this.deletedStates[t][f]=null)}else if(this.deletedStates[t]&&this.deletedStates[t][g]===null){this.deletedStates[t][g]={};for(let f in this.state[t][g])h[f]||(this.deletedStates[t][g][f]=null)}else for(let f in h)this.deletedStates[t]&&this.deletedStates[t][g]&&this.deletedStates[t][g][f]===null&&delete this.deletedStates[t][g][f]}removeFeatureState(t,a,h){if(this.deletedStates[t]===null)return;let g=String(a);if(this.deletedStates[t]=this.deletedStates[t]||{},h&&a!==void 0)this.deletedStates[t][g]!==null&&(this.deletedStates[t][g]=this.deletedStates[t][g]||{},this.deletedStates[t][g][h]=null);else if(a!==void 0)if(this.stateChanges[t]&&this.stateChanges[t][g])for(h in this.deletedStates[t][g]={},this.stateChanges[t][g])this.deletedStates[t][g][h]=null;else this.deletedStates[t][g]=null;else this.deletedStates[t]=null}getState(t,a){let h=String(a),g=s.e({},(this.state[t]||{})[h],(this.stateChanges[t]||{})[h]);if(this.deletedStates[t]===null)return{};if(this.deletedStates[t]){let f=this.deletedStates[t][a];if(f===null)return{};for(let y in f)delete g[y]}return g}initializeTileState(t,a){t.setFeatureState(this.state,a)}coalesceChanges(t,a){let h={};for(let g in this.stateChanges){this.state[g]=this.state[g]||{};let f={};for(let y in this.stateChanges[g])this.state[g][y]||(this.state[g][y]={}),s.e(this.state[g][y],this.stateChanges[g][y]),f[y]=this.state[g][y];h[g]=f}for(let g in this.deletedStates){this.state[g]=this.state[g]||{};let f={};if(this.deletedStates[g]===null)for(let y in this.state[g])f[y]={},this.state[g][y]={};else for(let y in this.deletedStates[g]){if(this.deletedStates[g][y]===null)this.state[g][y]={};else for(let B of Object.keys(this.deletedStates[g][y]))delete this.state[g][y][B];f[y]=this.state[g][y]}h[g]=h[g]||{},s.e(h[g],f)}if(this.stateChanges={},this.deletedStates={},Object.keys(h).length!==0)for(let g in t)t[g].setFeatureState(h,a)}}class Ve extends s.E{constructor(t,a,h){super(),this.id=t,this.dispatcher=h,this.on("data",g=>this._dataHandler(g)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((g,f,y,B)=>{let x=new(Si(f.type))(g,f,y,B);if(x.id!==g)throw new Error(`Expected Source id to be ${g} instead of ${x.id}`);return x})(t,a,h,this),this._tiles={},this._cache=new ne(0,g=>this._unloadTile(g)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new ui,this._didEmitContent=!1,this._updated=!1}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._maxTileCacheZoomLevels=t?t._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(t)}onRemove(t){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(t)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let t in this._tiles){let a=this._tiles[t];if(a.state!=="loaded"&&a.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(t,a,h){return s._(this,void 0,void 0,function*(){try{yield this._source.loadTile(t),this._tileLoaded(t,a,h)}catch(g){t.state="errored",g.status!==404?this._source.fire(new s.j(g,{tile:t})):this.update(this.transform,this.terrain)}})}_unloadTile(t){this._source.unloadTile&&this._source.unloadTile(t)}_abortTile(t){this._source.abortTile&&this._source.abortTile(t),this._source.fire(new s.k("dataabort",{tile:t,coord:t.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let a in this._tiles){let h=this._tiles[a];h.upload(t),h.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(t=>t.tileID).sort(rr).map(t=>t.key)}getRenderableIds(t){let a=[];for(let h in this._tiles)this._isIdRenderable(h,t)&&a.push(this._tiles[h]);return t?a.sort((h,g)=>{let f=h.tileID,y=g.tileID,B=new s.P(f.canonical.x,f.canonical.y)._rotate(this.transform.angle),x=new s.P(y.canonical.x,y.canonical.y)._rotate(this.transform.angle);return f.overscaledZ-y.overscaledZ||x.y-B.y||x.x-B.x}).map(h=>h.tileID.key):a.map(h=>h.tileID).sort(rr).map(h=>h.key)}hasRenderableParent(t){let a=this.findLoadedParent(t,0);return!!a&&this._isIdRenderable(a.tileID.key)}_isIdRenderable(t,a){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(a||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let t in this._tiles)this._tiles[t].state!=="errored"&&this._reloadTile(t,"reloading")}}_reloadTile(t,a){return s._(this,void 0,void 0,function*(){let h=this._tiles[t];h&&(h.state!=="loading"&&(h.state=a),yield this._loadTile(h,t,a))})}_tileLoaded(t,a,h){t.timeAdded=w.now(),h==="expired"&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(a,t),this.getSource().type==="raster-dem"&&t.dem&&this._backfillDEM(t),this._state.initializeTileState(t,this.map?this.map.painter:null),t.aborted||this._source.fire(new s.k("data",{dataType:"source",tile:t,coord:t.tileID}))}_backfillDEM(t){let a=this.getRenderableIds();for(let g=0;g1||(Math.abs(y)>1&&(Math.abs(y+x)===1?y+=x:Math.abs(y-x)===1&&(y-=x)),f.dem&&g.dem&&(g.dem.backfillBorder(f.dem,y,B),g.neighboringTiles&&g.neighboringTiles[k]&&(g.neighboringTiles[k].backfilled=!0)))}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,a,h,g){for(let f in this._tiles){let y=this._tiles[f];if(g[f]||!y.hasData()||y.tileID.overscaledZ<=a||y.tileID.overscaledZ>h)continue;let B=y.tileID;for(;y&&y.tileID.overscaledZ>a+1;){let k=y.tileID.scaledTo(y.tileID.overscaledZ-1);y=this._tiles[k.key],y&&y.hasData()&&(B=k)}let x=B;for(;x.overscaledZ>a;)if(x=x.scaledTo(x.overscaledZ-1),t[x.key]){g[B.key]=B;break}}}findLoadedParent(t,a){if(t.key in this._loadedParentTiles){let h=this._loadedParentTiles[t.key];return h&&h.tileID.overscaledZ>=a?h:null}for(let h=t.overscaledZ-1;h>=a;h--){let g=t.scaledTo(h),f=this._getLoadedTile(g);if(f)return f}}findLoadedSibling(t){return this._getLoadedTile(t)}_getLoadedTile(t){let a=this._tiles[t.key];return a&&a.hasData()?a:this._cache.getByKey(t.wrapped().key)}updateCacheSize(t){let a=Math.ceil(t.width/this._source.tileSize)+1,h=Math.ceil(t.height/this._source.tileSize)+1,g=Math.floor(a*h*(this._maxTileCacheZoomLevels===null?s.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),f=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,g):g;this._cache.setMaxSize(f)}handleWrapJump(t){let a=Math.round((t-(this._prevLng===void 0?t:this._prevLng))/360);if(this._prevLng=t,a){let h={};for(let g in this._tiles){let f=this._tiles[g];f.tileID=f.tileID.unwrapTo(f.tileID.wrap+a),h[f.tileID.key]=f}this._tiles=h;for(let g in this._timers)clearTimeout(this._timers[g]),delete this._timers[g];for(let g in this._tiles)this._setTileReloadTimer(g,this._tiles[g])}}_updateCoveredAndRetainedTiles(t,a,h,g,f,y){let B={},x={},k=Object.keys(t),R=w.now();for(let G of k){let P=t[G],M=this._tiles[G];if(!M||M.fadeEndTime!==0&&M.fadeEndTime<=R)continue;let j=this.findLoadedParent(P,a),et=this.findLoadedSibling(P),W=j||et||null;W&&(this._addTile(W.tileID),B[W.tileID.key]=W.tileID),x[G]=P}this._retainLoadedChildren(x,g,h,t);for(let G in B)t[G]||(this._coveredTiles[G]=!0,t[G]=B[G]);if(y){let G={},P={};for(let M of f)this._tiles[M.key].hasData()?G[M.key]=M:P[M.key]=M;for(let M in P){let j=P[M].children(this._source.maxzoom);this._tiles[j[0].key]&&this._tiles[j[1].key]&&this._tiles[j[2].key]&&this._tiles[j[3].key]&&(G[j[0].key]=t[j[0].key]=j[0],G[j[1].key]=t[j[1].key]=j[1],G[j[2].key]=t[j[2].key]=j[2],G[j[3].key]=t[j[3].key]=j[3],delete P[M])}for(let M in P){let j=P[M],et=this.findLoadedParent(j,this._source.minzoom),W=this.findLoadedSibling(j),X=et||W||null;if(X){G[X.tileID.key]=t[X.tileID.key]=X.tileID;for(let ct in G)G[ct].isChildOf(X.tileID)&&delete G[ct]}}for(let M in this._tiles)G[M]||(this._coveredTiles[M]=!0)}}update(t,a){if(!this._sourceLoaded||this._paused)return;let h;this.transform=t,this.terrain=a,this.updateCacheSize(t),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?h=t.getVisibleUnwrappedCoordinates(this._source.tileID).map(R=>new s.S(R.canonical.z,R.wrap,R.canonical.z,R.canonical.x,R.canonical.y)):(h=t.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:a}),this._source.hasTile&&(h=h.filter(R=>this._source.hasTile(R)))):h=[];let g=t.coveringZoomLevel(this._source),f=Math.max(g-Ve.maxOverzooming,this._source.minzoom),y=Math.max(g+Ve.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let R={};for(let G of h)if(G.canonical.z>this._source.minzoom){let P=G.scaledTo(G.canonical.z-1);R[P.key]=P;let M=G.scaledTo(Math.max(this._source.minzoom,Math.min(G.canonical.z,5)));R[M.key]=M}h=h.concat(Object.values(R))}let B=h.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,B&&this.fire(new s.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let x=this._updateRetainedTiles(h,g);Ni(this._source.type)&&this._updateCoveredAndRetainedTiles(x,f,y,g,h,a);for(let R in x)this._tiles[R].clearFadeHold();let k=s.ab(this._tiles,x);for(let R of k){let G=this._tiles[R];G.hasSymbolBuckets&&!G.holdingForFade()?G.setHoldDuration(this.map._fadeDuration):G.hasSymbolBuckets&&!G.symbolFadeFinished()||this._removeTile(R)}this._updateLoadedParentTileCache(),this._updateLoadedSiblingTileCache()}releaseSymbolFadeTiles(){for(let t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t)}_updateRetainedTiles(t,a){var h;let g={},f={},y=Math.max(a-Ve.maxOverzooming,this._source.minzoom),B=Math.max(a+Ve.maxUnderzooming,this._source.minzoom),x={};for(let k of t){let R=this._addTile(k);g[k.key]=k,R.hasData()||athis._source.maxzoom){let P=k.children(this._source.maxzoom)[0],M=this.getTile(P);if(M&&M.hasData()){g[P.key]=P;continue}}else{let P=k.children(this._source.maxzoom);if(g[P[0].key]&&g[P[1].key]&&g[P[2].key]&&g[P[3].key])continue}let G=R.wasRequested();for(let P=k.overscaledZ-1;P>=y;--P){let M=k.scaledTo(P);if(f[M.key])break;if(f[M.key]=!0,R=this.getTile(M),!R&&G&&(R=this._addTile(M)),R){let j=R.hasData();if((j||!(!((h=this.map)===null||h===void 0)&&h.cancelPendingTileRequestsWhileZooming)||G)&&(g[M.key]=M),G=R.wasRequested(),j)break}}}return g}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let t in this._tiles){let a=[],h,g=this._tiles[t].tileID;for(;g.overscaledZ>0;){if(g.key in this._loadedParentTiles){h=this._loadedParentTiles[g.key];break}a.push(g.key);let f=g.scaledTo(g.overscaledZ-1);if(h=this._getLoadedTile(f),h)break;g=f}for(let f of a)this._loadedParentTiles[f]=h}}_updateLoadedSiblingTileCache(){this._loadedSiblingTiles={};for(let t in this._tiles){let a=this._tiles[t].tileID,h=this._getLoadedTile(a);this._loadedSiblingTiles[a.key]=h}}_addTile(t){let a=this._tiles[t.key];if(a)return a;a=this._cache.getAndRemove(t),a&&(this._setTileReloadTimer(t.key,a),a.tileID=t,this._state.initializeTileState(a,this.map?this.map.painter:null),this._cacheTimers[t.key]&&(clearTimeout(this._cacheTimers[t.key]),delete this._cacheTimers[t.key],this._setTileReloadTimer(t.key,a)));let h=a;return a||(a=new Ei(t,this._source.tileSize*t.overscaleFactor()),this._loadTile(a,t.key,a.state)),a.uses++,this._tiles[t.key]=a,h||this._source.fire(new s.k("dataloading",{tile:a,coord:a.tileID,dataType:"source"})),a}_setTileReloadTimer(t,a){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);let h=a.getExpiryTimeout();h&&(this._timers[t]=setTimeout(()=>{this._reloadTile(t,"expired"),delete this._timers[t]},h))}_removeTile(t){let a=this._tiles[t];a&&(a.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),a.uses>0||(a.hasData()&&a.state!=="reloading"?this._cache.add(a.tileID,a,a.getExpiryTimeout()):(a.aborted=!0,this._abortTile(a),this._unloadTile(a))))}_dataHandler(t){let a=t.sourceDataType;t.dataType==="source"&&a==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&t.dataType==="source"&&a==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let t in this._tiles)this._removeTile(t);this._cache.reset()}tilesIn(t,a,h){let g=[],f=this.transform;if(!f)return g;let y=h?f.getCameraQueryGeometry(t):t,B=t.map(j=>f.pointCoordinate(j,this.terrain)),x=y.map(j=>f.pointCoordinate(j,this.terrain)),k=this.getIds(),R=1/0,G=1/0,P=-1/0,M=-1/0;for(let j of x)R=Math.min(R,j.x),G=Math.min(G,j.y),P=Math.max(P,j.x),M=Math.max(M,j.y);for(let j=0;j=0&&rt[1].y+ct>=0){let ut=B.map(Qt=>W.getTilePoint(Qt)),Ft=x.map(Qt=>W.getTilePoint(Qt));g.push({tile:et,tileID:W,queryGeometry:ut,cameraQueryGeometry:Ft,scale:X})}}return g}getVisibleCoordinates(t){let a=this.getRenderableIds(t).map(h=>this._tiles[h].tileID);for(let h of a)h.posMatrix=this.transform.calculatePosMatrix(h.toUnwrapped());return a}hasTransition(){if(this._source.hasTransition())return!0;if(Ni(this._source.type)){let t=w.now();for(let a in this._tiles)if(this._tiles[a].fadeEndTime>=t)return!0}return!1}setFeatureState(t,a,h){this._state.updateState(t=t||"_geojsonTileLayer",a,h)}removeFeatureState(t,a,h){this._state.removeFeatureState(t=t||"_geojsonTileLayer",a,h)}getFeatureState(t,a){return this._state.getState(t=t||"_geojsonTileLayer",a)}setDependencies(t,a,h){let g=this._tiles[t];g&&g.setDependencies(a,h)}reloadTilesForDependencies(t,a){for(let h in this._tiles)this._tiles[h].hasDependency(t,a)&&this._reloadTile(h,"reloading");this._cache.filter(h=>!h.hasDependency(t,a))}}function rr(u,t){let a=Math.abs(2*u.wrap)-+(u.wrap<0),h=Math.abs(2*t.wrap)-+(t.wrap<0);return u.overscaledZ-t.overscaledZ||h-a||t.canonical.y-u.canonical.y||t.canonical.x-u.canonical.x}function Ni(u){return u==="raster"||u==="image"||u==="video"}Ve.maxOverzooming=10,Ve.maxUnderzooming=3;class $e{constructor(t,a){this.reset(t,a)}reset(t,a){this.points=t||[],this._distances=[0];for(let h=1;h0?(g-y)/B:0;return this.points[f].mult(1-x).add(this.points[a].mult(x))}}function wr(u,t){let a=!0;return u==="always"||u!=="never"&&t!=="never"||(a=!1),a}class zi{constructor(t,a,h){let g=this.boxCells=[],f=this.circleCells=[];this.xCellCount=Math.ceil(t/h),this.yCellCount=Math.ceil(a/h);for(let y=0;ythis.width||g<0||a>this.height)return[];let x=[];if(t<=0&&a<=0&&this.width<=h&&this.height<=g){if(f)return[{key:null,x1:t,y1:a,x2:h,y2:g}];for(let k=0;k0}hitTestCircle(t,a,h,g,f){let y=t-h,B=t+h,x=a-h,k=a+h;if(B<0||y>this.width||k<0||x>this.height)return!1;let R=[];return this._forEachCell(y,x,B,k,this._queryCellCircle,R,{hitTest:!0,overlapMode:g,circle:{x:t,y:a,radius:h},seenUids:{box:{},circle:{}}},f),R.length>0}_queryCell(t,a,h,g,f,y,B,x){let{seenUids:k,hitTest:R,overlapMode:G}=B,P=this.boxCells[f];if(P!==null){let j=this.bboxes;for(let et of P)if(!k.box[et]){k.box[et]=!0;let W=4*et,X=this.boxKeys[et];if(t<=j[W+2]&&a<=j[W+3]&&h>=j[W+0]&&g>=j[W+1]&&(!x||x(X))&&(!R||!wr(G,X.overlapMode))&&(y.push({key:X,x1:j[W],y1:j[W+1],x2:j[W+2],y2:j[W+3]}),R))return!0}}let M=this.circleCells[f];if(M!==null){let j=this.circles;for(let et of M)if(!k.circle[et]){k.circle[et]=!0;let W=3*et,X=this.circleKeys[et];if(this._circleAndRectCollide(j[W],j[W+1],j[W+2],t,a,h,g)&&(!x||x(X))&&(!R||!wr(G,X.overlapMode))){let ct=j[W],rt=j[W+1],ut=j[W+2];if(y.push({key:X,x1:ct-ut,y1:rt-ut,x2:ct+ut,y2:rt+ut}),R)return!0}}}return!1}_queryCellCircle(t,a,h,g,f,y,B,x){let{circle:k,seenUids:R,overlapMode:G}=B,P=this.boxCells[f];if(P!==null){let j=this.bboxes;for(let et of P)if(!R.box[et]){R.box[et]=!0;let W=4*et,X=this.boxKeys[et];if(this._circleAndRectCollide(k.x,k.y,k.radius,j[W+0],j[W+1],j[W+2],j[W+3])&&(!x||x(X))&&!wr(G,X.overlapMode))return y.push(!0),!0}}let M=this.circleCells[f];if(M!==null){let j=this.circles;for(let et of M)if(!R.circle[et]){R.circle[et]=!0;let W=3*et,X=this.circleKeys[et];if(this._circlesCollide(j[W],j[W+1],j[W+2],k.x,k.y,k.radius)&&(!x||x(X))&&!wr(G,X.overlapMode))return y.push(!0),!0}}}_forEachCell(t,a,h,g,f,y,B,x){let k=this._convertToXCellCoord(t),R=this._convertToYCellCoord(a),G=this._convertToXCellCoord(h),P=this._convertToYCellCoord(g);for(let M=k;M<=G;M++)for(let j=R;j<=P;j++)if(f.call(this,t,a,h,g,this.xCellCount*j+M,y,B,x))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,a,h,g,f,y){let B=g-t,x=f-a,k=h+y;return k*k>B*B+x*x}_circleAndRectCollide(t,a,h,g,f,y,B){let x=(y-g)/2,k=Math.abs(t-(g+x));if(k>x+h)return!1;let R=(B-f)/2,G=Math.abs(a-(f+R));if(G>R+h)return!1;if(k<=x||G<=R)return!0;let P=k-x,M=G-R;return P*P+M*M<=h*h}}function _r(u,t,a,h,g){let f=s.H();return t?(s.K(f,f,[1/g,1/g,1]),a||s.ad(f,f,h.angle)):s.L(f,h.labelPlaneMatrix,u),f}function nr(u,t,a,h,g){if(t){let f=s.ae(u);return s.K(f,f,[g,g,1]),a||s.ad(f,f,-h.angle),f}return h.glCoordMatrix}function It(u,t,a,h){let g;h?(g=[u,t,h(u,t),1],s.af(g,g,a)):(g=[u,t,0,1],Mi(g,g,a));let f=g[3];return{point:new s.P(g[0]/f,g[1]/f),signedDistanceFromCamera:f,isOccluded:!1}}function K(u,t){return .5+u/t*.5}function z(u,t){return u.x>=-t[0]&&u.x<=t[0]&&u.y>=-t[1]&&u.y<=t[1]}function it(u,t,a,h,g,f,y,B,x,k,R,G,P,M,j){let et=h?u.textSizeData:u.iconSizeData,W=s.ag(et,a.transform.zoom),X=[256/a.width*2+1,256/a.height*2+1],ct=h?u.text.dynamicLayoutVertexArray:u.icon.dynamicLayoutVertexArray;ct.clear();let rt=u.lineVertexArray,ut=h?u.text.placedSymbolArray:u.icon.placedSymbolArray,Ft=a.transform.width/a.transform.height,Qt=!1;for(let se=0;seMath.abs(a.x-t.x)*h?{useVertical:!0}:(u===s.ah.vertical?t.ya.x)?{needsFlipping:!0}:null}function Nt(u,t,a,h,g,f,y,B,x,k,R){let G=a/24,P=t.lineOffsetX*G,M=t.lineOffsetY*G,j;if(t.numGlyphs>1){let et=t.glyphStartIndex+t.numGlyphs,W=t.lineStartIndex,X=t.lineStartIndex+t.lineLength,ct=gt(G,B,P,M,h,t,R,u);if(!ct)return{notEnoughRoom:!0};let rt=It(ct.first.point.x,ct.first.point.y,y,u.getElevation).point,ut=It(ct.last.point.x,ct.last.point.y,y,u.getElevation).point;if(g&&!h){let Ft=Ht(t.writingMode,rt,ut,k);if(Ft)return Ft}j=[ct.first];for(let Ft=t.glyphStartIndex+1;Ft0?rt.point:function(Qt,se,oe,xe,Ue,_e){return Jt(Qt,se,oe,1,Ue,_e)}(u.tileAnchorPoint,ct,W,0,f,u),Ft=Ht(t.writingMode,W,ut,k);if(Ft)return Ft}let et=Se(G*B.getoffsetX(t.glyphStartIndex),P,M,h,t.segment,t.lineStartIndex,t.lineStartIndex+t.lineLength,u,R);if(!et||u.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};j=[et]}for(let et of j)s.aj(x,et.point,et.angle);return{}}function Jt(u,t,a,h,g,f){let y=u.add(u.sub(t)._unit()),B=g!==void 0?It(y.x,y.y,g,f.getElevation).point:Ot(y.x,y.y,f).point,x=a.sub(B);return a.add(x._mult(h/x.mag()))}function Rt(u,t,a){let h=t.projectionCache;if(h.projections[u])return h.projections[u];let g=new s.P(t.lineVertexArray.getx(u),t.lineVertexArray.gety(u)),f=Ot(g.x,g.y,t);if(f.signedDistanceFromCamera>0)return h.projections[u]=f.point,h.anyProjectionOccluded=h.anyProjectionOccluded||f.isOccluded,f.point;let y=u-a.direction;return function(B,x,k,R,G){return Jt(B,x,k,R,void 0,G)}(a.distanceFromAnchor===0?t.tileAnchorPoint:new s.P(t.lineVertexArray.getx(y),t.lineVertexArray.gety(y)),g,a.previousVertex,a.absOffsetX-a.distanceFromAnchor+1,t)}function Ot(u,t,a){let h=u+a.translation[0],g=t+a.translation[1],f;return!a.pitchWithMap&&a.projection.useSpecialProjectionForSymbols?(f=a.projection.projectTileCoordinates(h,g,a.unwrappedTileID,a.getElevation),f.point.x=(.5*f.point.x+.5)*a.width,f.point.y=(.5*-f.point.y+.5)*a.height):(f=It(h,g,a.labelPlaneMatrix,a.getElevation),f.isOccluded=!1),f}function me(u,t,a){return u._unit()._perp()._mult(t*a)}function Ae(u,t,a,h,g,f,y,B,x){if(B.projectionCache.offsets[u])return B.projectionCache.offsets[u];let k=a.add(t);if(u+x.direction=g)return B.projectionCache.offsets[u]=k,k;let R=Rt(u+x.direction,B,x),G=me(R.sub(a),y,x.direction),P=a.add(G),M=R.add(G);return B.projectionCache.offsets[u]=s.ak(f,k,P,M)||k,B.projectionCache.offsets[u]}function Se(u,t,a,h,g,f,y,B,x){let k=h?u-t:u+t,R=k>0?1:-1,G=0;h&&(R*=-1,G=Math.PI),R<0&&(G+=Math.PI);let P,M=R>0?f+g:f+g+1;B.projectionCache.cachedAnchorPoint?P=B.projectionCache.cachedAnchorPoint:(P=Ot(B.tileAnchorPoint.x,B.tileAnchorPoint.y,B).point,B.projectionCache.cachedAnchorPoint=P);let j,et,W=P,X=P,ct=0,rt=0,ut=Math.abs(k),Ft=[],Qt;for(;ct+rt<=ut;){if(M+=R,M=y)return null;ct+=rt,X=W,et=j;let xe={absOffsetX:ut,direction:R,distanceFromAnchor:ct,previousVertex:X};if(W=Rt(M,B,xe),a===0)Ft.push(X),Qt=W.sub(X);else{let Ue,_e=W.sub(X);Ue=_e.mag()===0?me(Rt(M+R,B,xe).sub(W),a,R):me(_e,a,R),et||(et=X.add(Ue)),j=Ae(M,Ue,W,f,y,et,a,B,xe),Ft.push(et),Qt=j.sub(et)}rt=Qt.mag()}let se=Qt._mult((ut-ct)/rt)._add(et||X),oe=G+Math.atan2(W.y-X.y,W.x-X.x);return Ft.push(se),{point:se,angle:x?oe:0,path:Ft}}let Ye=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function je(u,t){for(let a=0;a=1;Ui--)Ge.push(ri.path[Ui]);for(let Ui=1;Uifi.signedDistanceFromCamera<=0)?[]:Ui.map(fi=>fi.point)}let Ji=[];if(Ge.length>0){let Ui=Ge[0].clone(),fi=Ge[0].clone();for(let hr=1;hr=_e.x&&fi.x<=Be.x&&Ui.y>=_e.y&&fi.y<=Be.y?[Ge]:fi.x<_e.x||Ui.x>Be.x||fi.y<_e.y||Ui.y>Be.y?[]:s.al([Ge],_e.x,_e.y,Be.x,Be.y)}for(let Ui of Ji){De.reset(Ui,.25*Ue);let fi=0;fi=De.length<=.5*Ue?1:Math.ceil(De.paddedLength/Ci)+1;for(let hr=0;hrIt(g.x,g.y,h,a.getElevation))}queryRenderedSymbols(t){if(t.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let a=[],h=1/0,g=1/0,f=-1/0,y=-1/0;for(let R of t){let G=new s.P(R.x+Ti,R.y+Ti);h=Math.min(h,G.x),g=Math.min(g,G.y),f=Math.max(f,G.x),y=Math.max(y,G.y),a.push(G)}let B=this.grid.query(h,g,f,y).concat(this.ignoredGrid.query(h,g,f,y)),x={},k={};for(let R of B){let G=R.key;if(x[G.bucketInstanceId]===void 0&&(x[G.bucketInstanceId]={}),x[G.bucketInstanceId][G.featureIndex])continue;let P=[new s.P(R.x1,R.y1),new s.P(R.x2,R.y1),new s.P(R.x2,R.y2),new s.P(R.x1,R.y2)];s.am(a,P)&&(x[G.bucketInstanceId][G.featureIndex]=!0,k[G.bucketInstanceId]===void 0&&(k[G.bucketInstanceId]=[]),k[G.bucketInstanceId].push(G.featureIndex))}return k}insertCollisionBox(t,a,h,g,f,y){(h?this.ignoredGrid:this.grid).insert({bucketInstanceId:g,featureIndex:f,collisionGroupID:y,overlapMode:a},t[0],t[1],t[2],t[3])}insertCollisionCircles(t,a,h,g,f,y){let B=h?this.ignoredGrid:this.grid,x={bucketInstanceId:g,featureIndex:f,collisionGroupID:y,overlapMode:a};for(let k=0;k=this.screenRightBoundary||gthis.screenBottomBoundary}isInsideGrid(t,a,h,g){return h>=0&&t=0&&athis.projectAndGetPerspectiveRatio(h,Ue.x,Ue.y,g,k));oe=xe.some(Ue=>!Ue.isOccluded),se=xe.map(Ue=>Ue.point)}else oe=!0;return{box:s.ao(se),allPointsOccluded:!oe}}}function vi(u,t,a){return t*(s.X/(u.tileSize*Math.pow(2,a-u.tileID.overscaledZ)))}class pr{constructor(t,a,h,g){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?a:-a))):g&&h?1:0,this.placed=h}isHidden(){return this.opacity===0&&!this.placed}}class ur{constructor(t,a,h,g,f){this.text=new pr(t?t.text:null,a,h,f),this.icon=new pr(t?t.icon:null,a,g,f)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Qi{constructor(t,a,h){this.text=t,this.icon=a,this.skipFade=h}}class Oi{constructor(){this.invProjMatrix=s.H(),this.viewportMatrix=s.H(),this.circles=[]}}class sr{constructor(t,a,h,g,f){this.bucketInstanceId=t,this.featureIndex=a,this.sourceLayerIndex=h,this.bucketIndex=g,this.tileID=f}}class Zt{constructor(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={}}get(t){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[t]){let a=++this.maxGroupID;this.collisionGroups[t]={ID:a,predicate:h=>h.collisionGroupID===a}}return this.collisionGroups[t]}}function Ne(u,t,a,h,g){let{horizontalAlign:f,verticalAlign:y}=s.au(u);return new s.P(-(f-.5)*t+h[0]*g,-(y-.5)*a+h[1]*g)}class ke{constructor(t,a,h,g,f,y){this.transform=t.clone(),this.terrain=h,this.collisionIndex=new Vi(this.transform,a),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=g,this.retainedQueryData={},this.collisionGroups=new Zt(f),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=y,y&&(y.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(t){let a=this.terrain;return a?(h,g)=>a.getElevation(t,h,g):null}getBucketParts(t,a,h,g){let f=h.getBucket(a),y=h.latestFeatureIndex;if(!f||!y||a.id!==f.layerIds[0])return;let B=h.collisionBoxArray,x=f.layers[0].layout,k=f.layers[0].paint,R=Math.pow(2,this.transform.zoom-h.tileID.overscaledZ),G=h.tileSize/s.X,P=h.tileID.toUnwrapped(),M=this.transform.calculatePosMatrix(P),j=x.get("text-pitch-alignment")==="map",et=x.get("text-rotation-alignment")==="map",W=vi(h,1,this.transform.zoom),X=this.collisionIndex.mapProjection.translatePosition(this.transform,h,k.get("text-translate"),k.get("text-translate-anchor")),ct=this.collisionIndex.mapProjection.translatePosition(this.transform,h,k.get("icon-translate"),k.get("icon-translate-anchor")),rt=_r(M,j,et,this.transform,W),ut=null;if(j){let Qt=nr(M,j,et,this.transform,W);ut=s.L([],this.transform.labelPlaneMatrix,Qt)}this.retainedQueryData[f.bucketInstanceId]=new sr(f.bucketInstanceId,y,f.sourceLayerIndex,f.index,h.tileID);let Ft={bucket:f,layout:x,translationText:X,translationIcon:ct,posMatrix:M,unwrappedTileID:P,textLabelPlaneMatrix:rt,labelToScreenMatrix:ut,scale:R,textPixelRatio:G,holdingForFade:h.holdingForFade(),collisionBoxArray:B,partiallyEvaluatedTextSize:s.ag(f.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(f.sourceID)};if(g)for(let Qt of f.sortKeyRanges){let{sortKey:se,symbolInstanceStart:oe,symbolInstanceEnd:xe}=Qt;t.push({sortKey:se,symbolInstanceStart:oe,symbolInstanceEnd:xe,parameters:Ft})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:f.symbolInstances.length,parameters:Ft})}attemptAnchorPlacement(t,a,h,g,f,y,B,x,k,R,G,P,M,j,et,W,X,ct,rt){let ut=s.aq[t.textAnchor],Ft=[t.textOffset0,t.textOffset1],Qt=Ne(ut,h,g,Ft,f),se=this.collisionIndex.placeCollisionBox(a,P,x,k,R,B,y,W,G.predicate,rt,Qt);if((!ct||this.collisionIndex.placeCollisionBox(ct,P,x,k,R,B,y,X,G.predicate,rt,Qt).placeable)&&se.placeable){let oe;if(this.prevPlacement&&this.prevPlacement.variableOffsets[M.crossTileID]&&this.prevPlacement.placements[M.crossTileID]&&this.prevPlacement.placements[M.crossTileID].text&&(oe=this.prevPlacement.variableOffsets[M.crossTileID].anchor),M.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[M.crossTileID]={textOffset:Ft,width:h,height:g,anchor:ut,textBoxScale:f,prevAnchor:oe},this.markUsedJustification(j,ut,M,et),j.allowVerticalPlacement&&(this.markUsedOrientation(j,et,M),this.placedOrientations[M.crossTileID]=et),{shift:Qt,placedGlyphBoxes:se}}}placeLayerBucketPart(t,a,h){let{bucket:g,layout:f,translationText:y,translationIcon:B,posMatrix:x,unwrappedTileID:k,textLabelPlaneMatrix:R,labelToScreenMatrix:G,textPixelRatio:P,holdingForFade:M,collisionBoxArray:j,partiallyEvaluatedTextSize:et,collisionGroup:W}=t.parameters,X=f.get("text-optional"),ct=f.get("icon-optional"),rt=s.ar(f,"text-overlap","text-allow-overlap"),ut=rt==="always",Ft=s.ar(f,"icon-overlap","icon-allow-overlap"),Qt=Ft==="always",se=f.get("text-rotation-alignment")==="map",oe=f.get("text-pitch-alignment")==="map",xe=f.get("icon-text-fit")!=="none",Ue=f.get("symbol-z-order")==="viewport-y",_e=ut&&(Qt||!g.hasIconData()||ct),Be=Qt&&(ut||!g.hasTextData()||X);!g.collisionArrays&&j&&g.deserializeCollisionBoxes(j);let De=this._getTerrainElevationFunc(this.retainedQueryData[g.bucketInstanceId].tileID),ri=(ve,Ge,Ci)=>{var Ji,Ui;if(a[ve.crossTileID])return;if(M)return void(this.placements[ve.crossTileID]=new Qi(!1,!1,!1));let fi=!1,hr=!1,Lr=!0,Er=null,er={box:null,placeable:!1,offscreen:null},Tr={box:null,placeable:!1,offscreen:null},Hr=null,Dr=null,Ir=null,yn=0,Hs=0,ra=0;Ge.textFeatureIndex?yn=Ge.textFeatureIndex:ve.useRuntimeCollisionCircles&&(yn=ve.featureIndex),Ge.verticalTextFeatureIndex&&(Hs=Ge.verticalTextFeatureIndex);let ws=Ge.textBox;if(ws){let Bs=Rr=>{let An=s.ah.horizontal;if(g.allowVerticalPlacement&&!Rr&&this.prevPlacement){let bn=this.prevPlacement.placedOrientations[ve.crossTileID];bn&&(this.placedOrientations[ve.crossTileID]=bn,An=bn,this.markUsedOrientation(g,An,ve))}return An},qn=(Rr,An)=>{if(g.allowVerticalPlacement&&ve.numVerticalGlyphVertices>0&&Ge.verticalTextBox){for(let bn of g.writingModes)if(bn===s.ah.vertical?(er=An(),Tr=er):er=Rr(),er&&er.placeable)break}else er=Rr()},Ms=ve.textAnchorOffsetStartIndex,as=ve.textAnchorOffsetEndIndex;if(as===Ms){let Rr=(An,bn)=>{let cr=this.collisionIndex.placeCollisionBox(An,rt,P,x,k,oe,se,y,W.predicate,De);return cr&&cr.placeable&&(this.markUsedOrientation(g,bn,ve),this.placedOrientations[ve.crossTileID]=bn),cr};qn(()=>Rr(ws,s.ah.horizontal),()=>{let An=Ge.verticalTextBox;return g.allowVerticalPlacement&&ve.numVerticalGlyphVertices>0&&An?Rr(An,s.ah.vertical):{box:null,offscreen:null}}),Bs(er&&er.placeable)}else{let Rr=s.aq[(Ui=(Ji=this.prevPlacement)===null||Ji===void 0?void 0:Ji.variableOffsets[ve.crossTileID])===null||Ui===void 0?void 0:Ui.anchor],An=(cr,Mo,Da)=>{let na=cr.x2-cr.x1,jl=cr.y2-cr.y1,ql=ve.textBoxScale,UA=xe&&Ft==="never"?Mo:null,ya=null,yu=rt==="never"?1:2,QA="never";Rr&&yu++;for(let Ns=0;NsAn(ws,Ge.iconBox,s.ah.horizontal),()=>{let cr=Ge.verticalTextBox;return g.allowVerticalPlacement&&(!er||!er.placeable)&&ve.numVerticalGlyphVertices>0&&cr?An(cr,Ge.verticalIconBox,s.ah.vertical):{box:null,occluded:!0,offscreen:null}}),er&&(fi=er.placeable,Lr=er.offscreen);let bn=Bs(er&&er.placeable);if(!fi&&this.prevPlacement){let cr=this.prevPlacement.variableOffsets[ve.crossTileID];cr&&(this.variableOffsets[ve.crossTileID]=cr,this.markUsedJustification(g,cr.anchor,ve,bn))}}}if(Hr=er,fi=Hr&&Hr.placeable,Lr=Hr&&Hr.offscreen,ve.useRuntimeCollisionCircles){let Bs=g.text.placedSymbolArray.get(ve.centerJustifiedTextSymbolIndex),qn=s.ai(g.textSizeData,et,Bs),Ms=f.get("text-padding");Dr=this.collisionIndex.placeCollisionCircles(rt,Bs,g.lineVertexArray,g.glyphOffsetArray,qn,x,k,R,G,h,oe,W.predicate,ve.collisionCircleDiameter,Ms,y,De),Dr.circles.length&&Dr.collisionDetected&&!h&&s.w("Collisions detected, but collision boxes are not shown"),fi=ut||Dr.circles.length>0&&!Dr.collisionDetected,Lr=Lr&&Dr.offscreen}if(Ge.iconFeatureIndex&&(ra=Ge.iconFeatureIndex),Ge.iconBox){let Bs=qn=>this.collisionIndex.placeCollisionBox(qn,Ft,P,x,k,oe,se,B,W.predicate,De,xe&&Er?Er:void 0);Tr&&Tr.placeable&&Ge.verticalIconBox?(Ir=Bs(Ge.verticalIconBox),hr=Ir.placeable):(Ir=Bs(Ge.iconBox),hr=Ir.placeable),Lr=Lr&&Ir.offscreen}let Cr=X||ve.numHorizontalGlyphVertices===0&&ve.numVerticalGlyphVertices===0,TA=ct||ve.numIconVertices===0;Cr||TA?TA?Cr||(hr=hr&&fi):fi=hr&&fi:hr=fi=hr&&fi;let Yl=hr&&Ir.placeable;if(fi&&Hr.placeable&&this.collisionIndex.insertCollisionBox(Hr.box,rt,f.get("text-ignore-placement"),g.bucketInstanceId,Tr&&Tr.placeable&&Hs?Hs:yn,W.ID),Yl&&this.collisionIndex.insertCollisionBox(Ir.box,Ft,f.get("icon-ignore-placement"),g.bucketInstanceId,ra,W.ID),Dr&&fi&&this.collisionIndex.insertCollisionCircles(Dr.circles,rt,f.get("text-ignore-placement"),g.bucketInstanceId,yn,W.ID),h&&this.storeCollisionData(g.bucketInstanceId,Ci,Ge,Hr,Ir,Dr),ve.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(g.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[ve.crossTileID]=new Qi(fi||_e,hr||Be,Lr||g.justReloaded),a[ve.crossTileID]=!0};if(Ue){if(t.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");let ve=g.getSortedSymbolIndexes(this.transform.angle);for(let Ge=ve.length-1;Ge>=0;--Ge){let Ci=ve[Ge];ri(g.symbolInstances.get(Ci),g.collisionArrays[Ci],Ci)}}else for(let ve=t.symbolInstanceStart;ve=0&&(t.text.placedSymbolArray.get(B).crossTileID=f>=0&&B!==f?0:h.crossTileID)}markUsedOrientation(t,a,h){let g=a===s.ah.horizontal||a===s.ah.horizontalOnly?a:0,f=a===s.ah.vertical?a:0,y=[h.leftJustifiedTextSymbolIndex,h.centerJustifiedTextSymbolIndex,h.rightJustifiedTextSymbolIndex];for(let B of y)t.text.placedSymbolArray.get(B).placedOrientation=g;h.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(h.verticalPlacedTextSymbolIndex).placedOrientation=f)}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;let a=this.prevPlacement,h=!1;this.prevZoomAdjustment=a?a.zoomAdjustment(this.transform.zoom):0;let g=a?a.symbolFadeChange(t):1,f=a?a.opacities:{},y=a?a.variableOffsets:{},B=a?a.placedOrientations:{};for(let x in this.placements){let k=this.placements[x],R=f[x];R?(this.opacities[x]=new ur(R,g,k.text,k.icon),h=h||k.text!==R.text.placed||k.icon!==R.icon.placed):(this.opacities[x]=new ur(null,g,k.text,k.icon,k.skipFade),h=h||k.text||k.icon)}for(let x in f){let k=f[x];if(!this.opacities[x]){let R=new ur(k,g,!1,!1);R.isHidden()||(this.opacities[x]=R,h=h||k.text.placed||k.icon.placed)}}for(let x in y)this.variableOffsets[x]||!this.opacities[x]||this.opacities[x].isHidden()||(this.variableOffsets[x]=y[x]);for(let x in B)this.placedOrientations[x]||!this.opacities[x]||this.opacities[x].isHidden()||(this.placedOrientations[x]=B[x]);if(a&&a.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");h?this.lastPlacementChangeTime=t:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=a?a.lastPlacementChangeTime:t)}updateLayerOpacities(t,a){let h={};for(let g of a){let f=g.getBucket(t);f&&g.latestFeatureIndex&&t.id===f.layerIds[0]&&this.updateBucketOpacities(f,g.tileID,h,g.collisionBoxArray)}}updateBucketOpacities(t,a,h,g){t.hasTextData()&&(t.text.opacityVertexArray.clear(),t.text.hasVisibleVertices=!1),t.hasIconData()&&(t.icon.opacityVertexArray.clear(),t.icon.hasVisibleVertices=!1),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();let f=t.layers[0],y=f.layout,B=new ur(null,0,!1,!1,!0),x=y.get("text-allow-overlap"),k=y.get("icon-allow-overlap"),R=f._unevaluatedLayout.hasValue("text-variable-anchor")||f._unevaluatedLayout.hasValue("text-variable-anchor-offset"),G=y.get("text-rotation-alignment")==="map",P=y.get("text-pitch-alignment")==="map",M=y.get("icon-text-fit")!=="none",j=new ur(null,0,x&&(k||!t.hasIconData()||y.get("icon-optional")),k&&(x||!t.hasTextData()||y.get("text-optional")),!0);!t.collisionArrays&&g&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(g);let et=(X,ct,rt)=>{for(let ut=0;ut0,oe=this.placedOrientations[ct.crossTileID],xe=oe===s.ah.vertical,Ue=oe===s.ah.horizontal||oe===s.ah.horizontalOnly;if(rt>0||ut>0){let Be=pn(Qt.text);et(t.text,rt,xe?vo:Be),et(t.text,ut,Ue?vo:Be);let De=Qt.text.isHidden();[ct.rightJustifiedTextSymbolIndex,ct.centerJustifiedTextSymbolIndex,ct.leftJustifiedTextSymbolIndex].forEach(Ge=>{Ge>=0&&(t.text.placedSymbolArray.get(Ge).hidden=De||xe?1:0)}),ct.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(ct.verticalPlacedTextSymbolIndex).hidden=De||Ue?1:0);let ri=this.variableOffsets[ct.crossTileID];ri&&this.markUsedJustification(t,ri.anchor,ct,oe);let ve=this.placedOrientations[ct.crossTileID];ve&&(this.markUsedJustification(t,"left",ct,ve),this.markUsedOrientation(t,ve,ct))}if(se){let Be=pn(Qt.icon),De=!(M&&ct.verticalPlacedIconSymbolIndex&&xe);ct.placedIconSymbolIndex>=0&&(et(t.icon,ct.numIconVertices,De?Be:vo),t.icon.placedSymbolArray.get(ct.placedIconSymbolIndex).hidden=Qt.icon.isHidden()),ct.verticalPlacedIconSymbolIndex>=0&&(et(t.icon,ct.numVerticalIconVertices,De?vo:Be),t.icon.placedSymbolArray.get(ct.verticalPlacedIconSymbolIndex).hidden=Qt.icon.isHidden())}let _e=W&&W.has(X)?W.get(X):{text:null,icon:null};if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){let Be=t.collisionArrays[X];if(Be){let De=new s.P(0,0);if(Be.textBox||Be.verticalTextBox){let ri=!0;if(R){let ve=this.variableOffsets[Ft];ve?(De=Ne(ve.anchor,ve.width,ve.height,ve.textOffset,ve.textBoxScale),G&&De._rotate(P?this.transform.angle:-this.transform.angle)):ri=!1}if(Be.textBox||Be.verticalTextBox){let ve;Be.textBox&&(ve=xe),Be.verticalTextBox&&(ve=Ue),Wi(t.textCollisionBox.collisionVertexArray,Qt.text.placed,!ri||ve,_e.text,De.x,De.y)}}if(Be.iconBox||Be.verticalIconBox){let ri=Boolean(!Ue&&Be.verticalIconBox),ve;Be.iconBox&&(ve=ri),Be.verticalIconBox&&(ve=!ri),Wi(t.iconCollisionBox.collisionVertexArray,Qt.icon.placed,ve,_e.icon,M?De.x:0,M?De.y:0)}}}}if(t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.text.opacityVertexArray.length!==t.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${t.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${t.text.layoutVertexArray.length}) / 4`);if(t.icon.opacityVertexArray.length!==t.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${t.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${t.icon.layoutVertexArray.length}) / 4`);if(t.bucketInstanceId in this.collisionCircleArrays){let X=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=X.invProjMatrix,t.placementViewportMatrix=X.viewportMatrix,t.collisionCircleArray=X.circles,delete this.collisionCircleArrays[t.bucketInstanceId]}}symbolFadeChange(t){return this.fadeDuration===0?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTimet}setStale(){this.stale=!0}}function Wi(u,t,a,h,g,f){h&&h.length!==0||(h=[0,0,0,0]);let y=h[0]-Ti,B=h[1]-Ti,x=h[2]-Ti,k=h[3]-Ti;u.emplaceBack(t?1:0,a?1:0,g||0,f||0,y,B),u.emplaceBack(t?1:0,a?1:0,g||0,f||0,x,B),u.emplaceBack(t?1:0,a?1:0,g||0,f||0,x,k),u.emplaceBack(t?1:0,a?1:0,g||0,f||0,y,k)}let Fi=Math.pow(2,25),rn=Math.pow(2,24),Fr=Math.pow(2,17),jr=Math.pow(2,16),br=Math.pow(2,9),on=Math.pow(2,8),dn=Math.pow(2,1);function pn(u){if(u.opacity===0&&!u.placed)return 0;if(u.opacity===1&&u.placed)return 4294967295;let t=u.placed?1:0,a=Math.floor(127*u.opacity);return a*Fi+t*rn+a*Fr+t*jr+a*br+t*on+a*dn+t}let vo=0;function es(){return{isOccluded:(u,t,a)=>!1,getPitchedTextCorrection:(u,t,a)=>1,get useSpecialProjectionForSymbols(){return!1},projectTileCoordinates(u,t,a,h){throw new Error("Not implemented.")},translatePosition:(u,t,a,h)=>function(g,f,y,B,x=!1){if(!y[0]&&!y[1])return[0,0];let k=x?B==="map"?g.angle:0:B==="viewport"?-g.angle:0;if(k){let R=Math.sin(k),G=Math.cos(k);y=[y[0]*G-y[1]*R,y[0]*R+y[1]*G]}return[x?y[0]:vi(f,y[0],g.zoom),x?y[1]:vi(f,y[1],g.zoom)]}(u,t,a,h),getCircleRadiusCorrection:u=>1}}class Or{constructor(t){this._sortAcrossTiles=t.layout.get("symbol-z-order")!=="viewport-y"&&!t.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(t,a,h,g,f){let y=this._bucketParts;for(;this._currentTileIndexB.sortKey-x.sortKey));this._currentPartIndex!this._forceFullPlacement&&w.now()-g>2;for(;this._currentPlacementIndex>=0;){let y=a[t[this._currentPlacementIndex]],B=this.placement.collisionIndex.transform.zoom;if(y.type==="symbol"&&(!y.minzoom||y.minzoom<=B)&&(!y.maxzoom||y.maxzoom>B)){if(this._inProgressLayer||(this._inProgressLayer=new Or(y)),this._inProgressLayer.continuePlacement(h[y.source],this.placement,this._showCollisionBoxes,y,f))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(t){return this.placement.commit(t),this.placement}}let Jn=512/s.X/2;class $i{constructor(t,a,h){this.tileID=t,this.bucketInstanceId=h,this._symbolsByKey={};let g=new Map;for(let f=0;f({x:Math.floor(x.anchorX*Jn),y:Math.floor(x.anchorY*Jn)})),crossTileIDs:y.map(x=>x.crossTileID)};if(B.positions.length>128){let x=new s.av(B.positions.length,16,Uint16Array);for(let{x:k,y:R}of B.positions)x.add(k,R);x.finish(),delete B.positions,B.index=x}this._symbolsByKey[f]=B}}getScaledCoordinates(t,a){let{x:h,y:g,z:f}=this.tileID.canonical,{x:y,y:B,z:x}=a.canonical,k=Jn/Math.pow(2,x-f),R=(B*s.X+t.anchorY)*k,G=g*s.X*Jn;return{x:Math.floor((y*s.X+t.anchorX)*k-h*s.X*Jn),y:Math.floor(R-G)}}findMatches(t,a,h){let g=this.tileID.canonical.zt)}}class io{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class wn{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(t){let a=Math.round((t-this.lng)/360);if(a!==0)for(let h in this.indexes){let g=this.indexes[h],f={};for(let y in g){let B=g[y];B.tileID=B.tileID.unwrapTo(B.tileID.wrap+a),f[B.tileID.key]=B}this.indexes[h]=f}this.lng=t}addBucket(t,a,h){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===a.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key])}for(let f=0;ft.overscaledZ)for(let B in y){let x=y[B];x.tileID.isChildOf(t)&&x.findMatches(a.symbolInstances,t,g)}else{let B=y[t.scaledTo(Number(f)).key];B&&B.findMatches(a.symbolInstances,t,g)}}for(let f=0;f{a[h]=!0});for(let h in this.layerIndexes)a[h]||delete this.layerIndexes[h]}}let Bn=(u,t)=>s.t(u,t&&t.filter(a=>a.identifier!=="source.canvas")),ht=s.aw();class pt extends s.E{constructor(t,a={}){super(),this._rtlPluginLoaded=()=>{for(let h in this.sourceCaches){let g=this.sourceCaches[h].getSource().type;g!=="vector"&&g!=="geojson"||this.sourceCaches[h].reload()}},this.map=t,this.dispatcher=new le(ie(),t._getMapId()),this.dispatcher.registerMessageHandler("GG",(h,g)=>this.getGlyphs(h,g)),this.dispatcher.registerMessageHandler("GI",(h,g)=>this.getImages(h,g)),this.imageManager=new at,this.imageManager.setEventedParent(this),this.glyphManager=new te(t._requestManager,a.localIdeographFontFamily),this.lineAtlas=new ue(256,512),this.crossTileSymbolIndex=new Wo,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new s.ax,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("SR",s.ay()),pi().on(he,this._rtlPluginLoaded),this.on("data",h=>{if(h.dataType!=="source"||h.sourceDataType!=="metadata")return;let g=this.sourceCaches[h.sourceId];if(!g)return;let f=g.getSource();if(f&&f.vectorLayerIds)for(let y in this._layers){let B=this._layers[y];B.source===f.id&&this._validateLayer(B)}})}loadURL(t,a={},h){this.fire(new s.k("dataloading",{dataType:"style"})),a.validate=typeof a.validate!="boolean"||a.validate;let g=this.map._requestManager.transformRequest(t,"Style");this._loadStyleRequest=new AbortController;let f=this._loadStyleRequest;s.h(g,this._loadStyleRequest).then(y=>{this._loadStyleRequest=null,this._load(y.data,a,h)}).catch(y=>{this._loadStyleRequest=null,y&&!f.signal.aborted&&this.fire(new s.j(y))})}loadJSON(t,a={},h){this.fire(new s.k("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,w.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,a.validate=a.validate!==!1,this._load(t,a,h)}).catch(()=>{})}loadEmpty(){this.fire(new s.k("dataloading",{dataType:"style"})),this._load(ht,{validate:!1})}_load(t,a,h){var g;let f=a.transformStyle?a.transformStyle(h,t):t;if(!a.validate||!Bn(this,s.u(f))){this._loaded=!0,this.stylesheet=f;for(let y in f.sources)this.addSource(y,f.sources[y],{validate:!1});f.sprite?this._loadSprite(f.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(f.glyphs),this._createLayers(),this.light=new Wt(this.stylesheet.light),this.sky=new Et(this.stylesheet.sky),this.map.setTerrain((g=this.stylesheet.terrain)!==null&&g!==void 0?g:null),this.fire(new s.k("data",{dataType:"style"})),this.fire(new s.k("style.load"))}}_createLayers(){let t=s.az(this.stylesheet.layers);this.dispatcher.broadcast("SL",t),this._order=t.map(a=>a.id),this._layers={},this._serializedLayers=null;for(let a of t){let h=s.aA(a);h.setEventedParent(this,{layer:{id:a.id}}),this._layers[a.id]=h}}_loadSprite(t,a=!1,h=void 0){let g;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(f,y,B,x){return s._(this,void 0,void 0,function*(){let k=vt(f),R=B>1?"@2x":"",G={},P={};for(let{id:M,url:j}of k){let et=y.transformRequest(ft(j,R,".json"),"SpriteJSON");G[M]=s.h(et,x);let W=y.transformRequest(ft(j,R,".png"),"SpriteImage");P[M]=D.getImage(W,x)}return yield Promise.all([...Object.values(G),...Object.values(P)]),function(M,j){return s._(this,void 0,void 0,function*(){let et={};for(let W in M){et[W]={};let X=w.getImageCanvasContext((yield j[W]).data),ct=(yield M[W]).data;for(let rt in ct){let{width:ut,height:Ft,x:Qt,y:se,sdf:oe,pixelRatio:xe,stretchX:Ue,stretchY:_e,content:Be,textFitWidth:De,textFitHeight:ri}=ct[rt];et[W][rt]={data:null,pixelRatio:xe,sdf:oe,stretchX:Ue,stretchY:_e,content:Be,textFitWidth:De,textFitHeight:ri,spriteData:{width:ut,height:Ft,x:Qt,y:se,context:X}}}}return et})}(G,P)})}(t,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(f=>{if(this._spriteRequest=null,f)for(let y in f){this._spritesImagesIds[y]=[];let B=this._spritesImagesIds[y]?this._spritesImagesIds[y].filter(x=>!(x in f)):[];for(let x of B)this.imageManager.removeImage(x),this._changedImages[x]=!0;for(let x in f[y]){let k=y==="default"?x:`${y}:${x}`;this._spritesImagesIds[y].push(k),k in this.imageManager.images?this.imageManager.updateImage(k,f[y][x],!1):this.imageManager.addImage(k,f[y][x]),a&&(this._changedImages[k]=!0)}}}).catch(f=>{this._spriteRequest=null,g=f,this.fire(new s.j(g))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),a&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new s.k("data",{dataType:"style"})),h&&h(g)})}_unloadSprite(){for(let t of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(t),this._changedImages[t]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new s.k("data",{dataType:"style"}))}_validateLayer(t){let a=this.sourceCaches[t.source];if(!a)return;let h=t.sourceLayer;if(!h)return;let g=a.getSource();(g.type==="geojson"||g.vectorLayerIds&&g.vectorLayerIds.indexOf(h)===-1)&&this.fire(new s.j(new Error(`Source layer "${h}" does not exist on source "${g.id}" as specified by style layer "${t.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(t,a=!1){let h=this._serializedAllLayers();if(!t||t.length===0)return Object.values(a?s.aB(h):h);let g=[];for(let f of t)if(h[f]){let y=a?s.aB(h[f]):h[f];g.push(y)}return g}_serializedAllLayers(){let t=this._serializedLayers;if(t)return t;t=this._serializedLayers={};let a=Object.keys(this._layers);for(let h of a){let g=this._layers[h];g.type!=="custom"&&(t[h]=g.serialize())}return t}hasTransitions(){if(this.light&&this.light.hasTransition()||this.sky&&this.sky.hasTransition())return!0;for(let t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return!0;for(let t in this._layers)if(this._layers[t].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(t){if(!this._loaded)return;let a=this._changed;if(a){let g=Object.keys(this._updatedLayers),f=Object.keys(this._removedLayers);(g.length||f.length)&&this._updateWorkerLayers(g,f);for(let y in this._updatedSources){let B=this._updatedSources[y];if(B==="reload")this._reloadSource(y);else{if(B!=="clear")throw new Error(`Invalid action ${B}`);this._clearSource(y)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let y in this._updatedPaintProps)this._layers[y].updateTransitions(t);this.light.updateTransitions(t),this.sky.updateTransitions(t),this._resetUpdates()}let h={};for(let g in this.sourceCaches){let f=this.sourceCaches[g];h[g]=f.used,f.used=!1}for(let g of this._order){let f=this._layers[g];f.recalculate(t,this._availableImages),!f.isHidden(t.zoom)&&f.source&&(this.sourceCaches[f.source].used=!0)}for(let g in h){let f=this.sourceCaches[g];!!h[g]!=!!f.used&&f.fire(new s.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:g}))}this.light.recalculate(t),this.sky.recalculate(t),this.z=t.zoom,a&&this.fire(new s.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){let t=Object.keys(this._changedImages);if(t.length){for(let a in this.sourceCaches)this.sourceCaches[a].reloadTilesForDependencies(["icons","patterns"],t);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let t in this.sourceCaches)this.sourceCaches[t].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(t,a){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(t,!1),removedIds:a})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(t,a={}){var h;this._checkLoaded();let g=this.serialize();if(t=a.transformStyle?a.transformStyle(g,t):t,((h=a.validate)===null||h===void 0||h)&&Bn(this,s.u(t)))return!1;(t=s.aB(t)).layers=s.az(t.layers);let f=s.aC(g,t),y=this._getOperationsToPerform(f);if(y.unimplemented.length>0)throw new Error(`Unimplemented: ${y.unimplemented.join(", ")}.`);if(y.operations.length===0)return!1;for(let B of y.operations)B();return this.stylesheet=t,this._serializedLayers=null,!0}_getOperationsToPerform(t){let a=[],h=[];for(let g of t)switch(g.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":continue;case"addLayer":a.push(()=>this.addLayer.apply(this,g.args));break;case"removeLayer":a.push(()=>this.removeLayer.apply(this,g.args));break;case"setPaintProperty":a.push(()=>this.setPaintProperty.apply(this,g.args));break;case"setLayoutProperty":a.push(()=>this.setLayoutProperty.apply(this,g.args));break;case"setFilter":a.push(()=>this.setFilter.apply(this,g.args));break;case"addSource":a.push(()=>this.addSource.apply(this,g.args));break;case"removeSource":a.push(()=>this.removeSource.apply(this,g.args));break;case"setLayerZoomRange":a.push(()=>this.setLayerZoomRange.apply(this,g.args));break;case"setLight":a.push(()=>this.setLight.apply(this,g.args));break;case"setGeoJSONSourceData":a.push(()=>this.setGeoJSONSourceData.apply(this,g.args));break;case"setGlyphs":a.push(()=>this.setGlyphs.apply(this,g.args));break;case"setSprite":a.push(()=>this.setSprite.apply(this,g.args));break;case"setSky":a.push(()=>this.setSky.apply(this,g.args));break;case"setTerrain":a.push(()=>this.map.setTerrain.apply(this,g.args));break;case"setTransition":a.push(()=>{});break;default:h.push(g.command)}return{operations:a,unimplemented:h}}addImage(t,a){if(this.getImage(t))return this.fire(new s.j(new Error(`An image named "${t}" already exists.`)));this.imageManager.addImage(t,a),this._afterImageUpdated(t)}updateImage(t,a){this.imageManager.updateImage(t,a)}getImage(t){return this.imageManager.getImage(t)}removeImage(t){if(!this.getImage(t))return this.fire(new s.j(new Error(`An image named "${t}" does not exist.`)));this.imageManager.removeImage(t),this._afterImageUpdated(t)}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new s.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(t,a,h={}){if(this._checkLoaded(),this.sourceCaches[t]!==void 0)throw new Error(`Source "${t}" already exists.`);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.u.source,`sources.${t}`,a,null,h))return;this.map&&this.map._collectResourceTiming&&(a.collectResourceTiming=!0);let g=this.sourceCaches[t]=new Ve(t,a,this.dispatcher);g.style=this,g.setEventedParent(this,()=>({isSourceLoaded:g.loaded(),source:g.serialize(),sourceId:t})),g.onAdd(this.map),this._changed=!0}removeSource(t){if(this._checkLoaded(),this.sourceCaches[t]===void 0)throw new Error("There is no source with this ID");for(let h in this._layers)if(this._layers[h].source===t)return this.fire(new s.j(new Error(`Source "${t}" cannot be removed while layer "${h}" is using it.`)));let a=this.sourceCaches[t];delete this.sourceCaches[t],delete this._updatedSources[t],a.fire(new s.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:t})),a.setEventedParent(null),a.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(t,a){if(this._checkLoaded(),this.sourceCaches[t]===void 0)throw new Error(`There is no source with this ID=${t}`);let h=this.sourceCaches[t].getSource();if(h.type!=="geojson")throw new Error(`geojsonSource.type is ${h.type}, which is !== 'geojson`);h.setData(a),this._changed=!0}getSource(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()}addLayer(t,a,h={}){this._checkLoaded();let g=t.id;if(this.getLayer(g))return void this.fire(new s.j(new Error(`Layer "${g}" already exists on this map.`)));let f;if(t.type==="custom"){if(Bn(this,s.aD(t)))return;f=s.aA(t)}else{if("source"in t&&typeof t.source=="object"&&(this.addSource(g,t.source),t=s.aB(t),t=s.e(t,{source:g})),this._validate(s.u.layer,`layers.${g}`,t,{arrayIndex:-1},h))return;f=s.aA(t),this._validateLayer(f),f.setEventedParent(this,{layer:{id:g}})}let y=a?this._order.indexOf(a):this._order.length;if(a&&y===-1)this.fire(new s.j(new Error(`Cannot add layer "${g}" before non-existing layer "${a}".`)));else{if(this._order.splice(y,0,g),this._layerOrderChanged=!0,this._layers[g]=f,this._removedLayers[g]&&f.source&&f.type!=="custom"){let B=this._removedLayers[g];delete this._removedLayers[g],B.type!==f.type?this._updatedSources[f.source]="clear":(this._updatedSources[f.source]="reload",this.sourceCaches[f.source].pause())}this._updateLayer(f),f.onAdd&&f.onAdd(this.map)}}moveLayer(t,a){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new s.j(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===a)return;let h=this._order.indexOf(t);this._order.splice(h,1);let g=a?this._order.indexOf(a):this._order.length;a&&g===-1?this.fire(new s.j(new Error(`Cannot move layer "${t}" before non-existing layer "${a}".`))):(this._order.splice(g,0,t),this._layerOrderChanged=!0)}removeLayer(t){this._checkLoaded();let a=this._layers[t];if(!a)return void this.fire(new s.j(new Error(`Cannot remove non-existing layer "${t}".`)));a.setEventedParent(null);let h=this._order.indexOf(t);this._order.splice(h,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=a,delete this._layers[t],this._serializedLayers&&delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],a.onRemove&&a.onRemove(this.map)}getLayer(t){return this._layers[t]}getLayersOrder(){return[...this._order]}hasLayer(t){return t in this._layers}setLayerZoomRange(t,a,h){this._checkLoaded();let g=this.getLayer(t);g?g.minzoom===a&&g.maxzoom===h||(a!=null&&(g.minzoom=a),h!=null&&(g.maxzoom=h),this._updateLayer(g)):this.fire(new s.j(new Error(`Cannot set the zoom range of non-existing layer "${t}".`)))}setFilter(t,a,h={}){this._checkLoaded();let g=this.getLayer(t);if(g){if(!s.aE(g.filter,a))return a==null?(g.filter=void 0,void this._updateLayer(g)):void(this._validate(s.u.filter,`layers.${g.id}.filter`,a,null,h)||(g.filter=s.aB(a),this._updateLayer(g)))}else this.fire(new s.j(new Error(`Cannot filter non-existing layer "${t}".`)))}getFilter(t){return s.aB(this.getLayer(t).filter)}setLayoutProperty(t,a,h,g={}){this._checkLoaded();let f=this.getLayer(t);f?s.aE(f.getLayoutProperty(a),h)||(f.setLayoutProperty(a,h,g),this._updateLayer(f)):this.fire(new s.j(new Error(`Cannot style non-existing layer "${t}".`)))}getLayoutProperty(t,a){let h=this.getLayer(t);if(h)return h.getLayoutProperty(a);this.fire(new s.j(new Error(`Cannot get style of non-existing layer "${t}".`)))}setPaintProperty(t,a,h,g={}){this._checkLoaded();let f=this.getLayer(t);f?s.aE(f.getPaintProperty(a),h)||(f.setPaintProperty(a,h,g)&&this._updateLayer(f),this._changed=!0,this._updatedPaintProps[t]=!0,this._serializedLayers=null):this.fire(new s.j(new Error(`Cannot style non-existing layer "${t}".`)))}getPaintProperty(t,a){return this.getLayer(t).getPaintProperty(a)}setFeatureState(t,a){this._checkLoaded();let h=t.source,g=t.sourceLayer,f=this.sourceCaches[h];if(f===void 0)return void this.fire(new s.j(new Error(`The source '${h}' does not exist in the map's style.`)));let y=f.getSource().type;y==="geojson"&&g?this.fire(new s.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):y!=="vector"||g?(t.id===void 0&&this.fire(new s.j(new Error("The feature id parameter must be provided."))),f.setFeatureState(g,t.id,a)):this.fire(new s.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(t,a){this._checkLoaded();let h=t.source,g=this.sourceCaches[h];if(g===void 0)return void this.fire(new s.j(new Error(`The source '${h}' does not exist in the map's style.`)));let f=g.getSource().type,y=f==="vector"?t.sourceLayer:void 0;f!=="vector"||y?a&&typeof t.id!="string"&&typeof t.id!="number"?this.fire(new s.j(new Error("A feature id is required to remove its specific state property."))):g.removeFeatureState(y,t.id,a):this.fire(new s.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(t){this._checkLoaded();let a=t.source,h=t.sourceLayer,g=this.sourceCaches[a];if(g!==void 0)return g.getSource().type!=="vector"||h?(t.id===void 0&&this.fire(new s.j(new Error("The feature id parameter must be provided."))),g.getFeatureState(h,t.id)):void this.fire(new s.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new s.j(new Error(`The source '${a}' does not exist in the map's style.`)))}getTransition(){return s.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let t=s.aF(this.sourceCaches,f=>f.serialize()),a=this._serializeByIds(this._order,!0),h=this.map.getTerrain()||void 0,g=this.stylesheet;return s.aG({version:g.version,name:g.name,metadata:g.metadata,light:g.light,sky:g.sky,center:g.center,zoom:g.zoom,bearing:g.bearing,pitch:g.pitch,sprite:g.sprite,glyphs:g.glyphs,transition:g.transition,sources:t,layers:a,terrain:h},f=>f!==void 0)}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&this.sourceCaches[t.source].getSource().type!=="raster"&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(t){let a=y=>this._layers[y].type==="fill-extrusion",h={},g=[];for(let y=this._order.length-1;y>=0;y--){let B=this._order[y];if(a(B)){h[B]=y;for(let x of t){let k=x[B];if(k)for(let R of k)g.push(R)}}}g.sort((y,B)=>B.intersectionZ-y.intersectionZ);let f=[];for(let y=this._order.length-1;y>=0;y--){let B=this._order[y];if(a(B))for(let x=g.length-1;x>=0;x--){let k=g[x].feature;if(h[k.layer.id]{let oe=X.featureSortOrder;if(oe){let xe=oe.indexOf(Qt.featureIndex);return oe.indexOf(se.featureIndex)-xe}return se.featureIndex-Qt.featureIndex});for(let Qt of Ft)ut.push(Qt)}}for(let X in j)j[X].forEach(ct=>{let rt=ct.feature,ut=k[B[X].source].getFeatureState(rt.layer["source-layer"],rt.id);rt.source=rt.layer.source,rt.layer["source-layer"]&&(rt.sourceLayer=rt.layer["source-layer"]),rt.state=ut});return j}(this._layers,y,this.sourceCaches,t,a,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(f)}querySourceFeatures(t,a){a&&a.filter&&this._validate(s.u.filter,"querySourceFeatures.filter",a.filter,null,a);let h=this.sourceCaches[t];return h?function(g,f){let y=g.getRenderableIds().map(k=>g.getTileByID(k)),B=[],x={};for(let k=0;kP.getTileByID(M)).sort((M,j)=>j.tileID.overscaledZ-M.tileID.overscaledZ||(M.tileID.isLessThan(j.tileID)?-1:1))}let G=this.crossTileSymbolIndex.addLayer(R,x[R.source],t.center.lng);y=y||G}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((f=f||this._layerOrderChanged||h===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(w.now(),t.zoom))&&(this.pauseablePlacement=new is(t,this.map.terrain,this._order,f,a,h,g,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,x),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(w.now()),B=!0),y&&this.pauseablePlacement.placement.setStale()),B||y)for(let k of this._order){let R=this._layers[k];R.type==="symbol"&&this.placement.updateLayerOpacities(R,x[R.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(w.now())}_releaseSymbolFadeTiles(){for(let t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles()}getImages(t,a){return s._(this,void 0,void 0,function*(){let h=yield this.imageManager.getImages(a.icons);this._updateTilesForChangedImages();let g=this.sourceCaches[a.source];return g&&g.setDependencies(a.tileID.key,a.type,a.icons),h})}getGlyphs(t,a){return s._(this,void 0,void 0,function*(){let h=yield this.glyphManager.getGlyphs(a.stacks),g=this.sourceCaches[a.source];return g&&g.setDependencies(a.tileID.key,a.type,[""]),h})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(t,a={}){this._checkLoaded(),t&&this._validate(s.u.glyphs,"glyphs",t,null,a)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=t,this.glyphManager.entries={},this.glyphManager.setURL(t))}addSprite(t,a,h={},g){this._checkLoaded();let f=[{id:t,url:a}],y=[...vt(this.stylesheet.sprite),...f];this._validate(s.u.sprite,"sprite",y,null,h)||(this.stylesheet.sprite=y,this._loadSprite(f,!0,g))}removeSprite(t){this._checkLoaded();let a=vt(this.stylesheet.sprite);if(a.find(h=>h.id===t)){if(this._spritesImagesIds[t])for(let h of this._spritesImagesIds[t])this.imageManager.removeImage(h),this._changedImages[h]=!0;a.splice(a.findIndex(h=>h.id===t),1),this.stylesheet.sprite=a.length>0?a:void 0,delete this._spritesImagesIds[t],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new s.k("data",{dataType:"style"}))}else this.fire(new s.j(new Error(`Sprite "${t}" doesn't exists on this map.`)))}getSprite(){return vt(this.stylesheet.sprite)}setSprite(t,a={},h){this._checkLoaded(),t&&this._validate(s.u.sprite,"sprite",t,null,a)||(this.stylesheet.sprite=t,t?this._loadSprite(t,!0,h):(this._unloadSprite(),h&&h(null)))}}var At=s.Y([{name:"a_pos",type:"Int16",components:2}]);let St={prelude:_t(`#ifdef GL_ES precision mediump float; #else #if !defined(lowp) @@ -54,15 +54,15 @@ vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=frac #else return 0.0; #endif -}`),background:bt(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity; +}`),background:_t(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity; #ifdef OVERDRAW_INSPECTOR gl_FragColor=vec4(1.0); #endif -}`,"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:bt(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity; +}`,"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:_t(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity; #ifdef OVERDRAW_INSPECTOR gl_FragColor=vec4(1.0); #endif -}`,"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:bt(`varying vec3 v_data;varying float v_visibility; +}`,"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:_t(`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 @@ -98,7 +98,7 @@ void main(void) { #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);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:bt("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:bt(`uniform highp float u_intensity;varying vec2 v_extrude; +vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:_t("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:_t(`uniform highp float u_intensity;varying vec2 v_extrude; #pragma mapbox: define highp float weight #define GAUSS_COEF 0.3989422804014327 void main() { @@ -115,11 +115,11 @@ const highp float ZERO=1.0/255.0/16.0; 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;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}`),heatmapTexture:bt(`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; +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;vec4 pos=vec4(floor(a_pos*0.5)+extrude,get_elevation(floor(a_pos*0.5)),1);gl_Position=u_matrix*pos;}`),heatmapTexture:_t(`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 -}`,"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:bt("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_anchor_pos;attribute vec2 a_placed;attribute vec2 a_box_real;uniform mat4 u_matrix;uniform vec2 u_pixel_extrude_scale;varying float v_placed;varying float v_notUsed;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:bt("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;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;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:bt("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;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:bt(`#pragma mapbox: define highp vec4 color +}`,"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:_t("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_anchor_pos;attribute vec2 a_placed;attribute vec2 a_box_real;uniform mat4 u_matrix;uniform vec2 u_pixel_extrude_scale;varying float v_placed;varying float v_notUsed;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:_t("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;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;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:_t("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;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:_t(`#pragma mapbox: define highp vec4 color #pragma mapbox: define lowp float opacity void main() { #pragma mapbox: initialize highp vec4 color @@ -134,7 +134,7 @@ gl_FragColor=vec4(1.0); void main() { #pragma mapbox: initialize highp vec4 color #pragma mapbox: initialize lowp float opacity -gl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:bt(`varying vec2 v_pos; +gl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:_t(`varying vec2 v_pos; #pragma mapbox: define highp vec4 outline_color #pragma mapbox: define lowp float opacity void main() { @@ -150,7 +150,7 @@ gl_FragColor=vec4(1.0); 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;}`),fillOutlinePattern:bt(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:_t(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; #pragma mapbox: define lowp float opacity #pragma mapbox: define lowp vec4 pattern_from #pragma mapbox: define lowp vec4 pattern_to @@ -174,7 +174,7 @@ void main() { #pragma mapbox: initialize mediump vec4 pattern_to #pragma mapbox: initialize lowp float pixel_ratio_from #pragma mapbox: initialize lowp float pixel_ratio_to -vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillPattern:bt(`#ifdef GL_ES +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillPattern:_t(`#ifdef GL_ES precision highp float; #endif uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b; @@ -201,7 +201,7 @@ void main() { #pragma mapbox: initialize mediump vec4 pattern_to #pragma mapbox: initialize lowp float pixel_ratio_from #pragma mapbox: initialize lowp float pixel_ratio_to -vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:bt(`varying vec4 v_color;void main() {gl_FragColor=v_color; +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:_t(`varying vec4 v_color;void main() {gl_FragColor=v_color; #ifdef OVERDRAW_INSPECTOR gl_FragColor=vec4(1.0); #endif @@ -223,7 +223,7 @@ float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_off #else float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; #endif -base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:bt(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:_t(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; #pragma mapbox: define lowp float base #pragma mapbox: define lowp float height #pragma mapbox: define lowp vec4 pattern_from @@ -267,20 +267,20 @@ float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; #endif base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 ? a_pos -: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:bt(`#ifdef GL_ES +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:_t(`#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,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);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+f+f+i)-(a+d+d+g),(g+h+h+i)-(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:bt(`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; +}`,"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:_t(`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; #define PI 3.141592653589793 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 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;}"),line:bt(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +}`,"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;}"),line:_t(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; #pragma mapbox: define highp vec4 color #pragma mapbox: define lowp float blur #pragma mapbox: define lowp float opacity @@ -314,7 +314,7 @@ v_gamma_scale=1.0; #else 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; #endif -v_width2=vec2(outset,inset);}`),lineGradient:bt(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; +v_width2=vec2(outset,inset);}`),lineGradient:_t(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; #pragma mapbox: define lowp float blur #pragma mapbox: define lowp float opacity void main() { @@ -344,7 +344,7 @@ v_gamma_scale=1.0; #else 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; #endif -v_width2=vec2(outset,inset);}`),linePattern:bt(`#ifdef GL_ES +v_width2=vec2(outset,inset);}`),linePattern:_t(`#ifdef GL_ES precision highp float; #endif uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;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; @@ -396,7 +396,7 @@ v_gamma_scale=1.0; #else 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; #endif -v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:bt(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:_t(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; #pragma mapbox: define highp vec4 color #pragma mapbox: define lowp float blur #pragma mapbox: define lowp float opacity @@ -437,11 +437,11 @@ v_gamma_scale=1.0; #else 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; #endif -v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:bt(`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);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:_t(`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);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*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 float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:bt(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +}`,"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:_t(`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 @@ -455,7 +455,7 @@ 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_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];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 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.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,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}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);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;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;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:bt(`#define SDF_PX 8.0 +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}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);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;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;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:_t(`#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 @@ -486,7 +486,7 @@ void main() { #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_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];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 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.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,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}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);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:bt(`#define SDF_PX 8.0 +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}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);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:_t(`#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; @@ -523,124 +523,124 @@ void main() { #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_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];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 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.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,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}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);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:bt("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;varying vec2 v_texture_pos;varying float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture2D(u_texture,v_texture_pos);if (v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);gl_FragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {gl_FragColor=surface_color;}}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform mat4 u_fog_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:bt("varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:bt("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);}"),sky:bt("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform float u_horizon;uniform float u_sky_horizon_blend;void main() {float y=gl_FragCoord.y;if (y > u_horizon) {float blend=y-u_horizon;if (blend < u_sky_horizon_blend) {gl_FragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {gl_FragColor=u_sky_color;}}}","attribute vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function bt(v,i){let c=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,p=i.match(/attribute ([\w]+) ([\w]+)/g),m=v.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),b=i.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),u=b?b.concat(m):m,g={};return{fragmentSource:v=v.replace(c,(y,x,k,E,R)=>(g[R]=!0,x==="define"?` -#ifndef HAS_UNIFORM_u_${R} -varying ${k} ${E} ${R}; +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}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);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:_t("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;varying vec2 v_texture_pos;varying float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture2D(u_texture,v_texture_pos);if (v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);gl_FragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {gl_FragColor=surface_color;}}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform mat4 u_fog_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:_t("varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:_t("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);}"),sky:_t("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform float u_horizon;uniform float u_sky_horizon_blend;void main() {float y=gl_FragCoord.y;if (y > u_horizon) {float blend=y-u_horizon;if (blend < u_sky_horizon_blend) {gl_FragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {gl_FragColor=u_sky_color;}}}","attribute vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function _t(u,t){let a=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,h=t.match(/attribute ([\w]+) ([\w]+)/g),g=u.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),f=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),y=f?f.concat(g):g,B={};return{fragmentSource:u=u.replace(a,(x,k,R,G,P)=>(B[P]=!0,k==="define"?` +#ifndef HAS_UNIFORM_u_${P} +varying ${R} ${G} ${P}; #else -uniform ${k} ${E} u_${R}; +uniform ${R} ${G} u_${P}; #endif `:` -#ifdef HAS_UNIFORM_u_${R} - ${k} ${E} ${R} = u_${R}; -#endif -`)),vertexSource:i=i.replace(c,(y,x,k,E,R)=>{let P=E==="float"?"vec2":"vec4",H=R.match(/color/)?"color":P;return g[R]?x==="define"?` -#ifndef HAS_UNIFORM_u_${R} -uniform lowp float u_${R}_t; -attribute ${k} ${P} a_${R}; -varying ${k} ${E} ${R}; +#ifdef HAS_UNIFORM_u_${P} + ${R} ${G} ${P} = u_${P}; +#endif +`)),vertexSource:t=t.replace(a,(x,k,R,G,P)=>{let M=G==="float"?"vec2":"vec4",j=P.match(/color/)?"color":M;return B[P]?k==="define"?` +#ifndef HAS_UNIFORM_u_${P} +uniform lowp float u_${P}_t; +attribute ${R} ${M} a_${P}; +varying ${R} ${G} ${P}; #else -uniform ${k} ${E} u_${R}; +uniform ${R} ${G} u_${P}; #endif -`:H==="vec4"?` -#ifndef HAS_UNIFORM_u_${R} - ${R} = a_${R}; +`:j==="vec4"?` +#ifndef HAS_UNIFORM_u_${P} + ${P} = a_${P}; #else - ${k} ${E} ${R} = u_${R}; + ${R} ${G} ${P} = u_${P}; #endif `:` -#ifndef HAS_UNIFORM_u_${R} - ${R} = unpack_mix_${H}(a_${R}, u_${R}_t); +#ifndef HAS_UNIFORM_u_${P} + ${P} = unpack_mix_${j}(a_${P}, u_${P}_t); #else - ${k} ${E} ${R} = u_${R}; + ${R} ${G} ${P} = u_${P}; #endif -`:x==="define"?` -#ifndef HAS_UNIFORM_u_${R} -uniform lowp float u_${R}_t; -attribute ${k} ${P} a_${R}; +`:k==="define"?` +#ifndef HAS_UNIFORM_u_${P} +uniform lowp float u_${P}_t; +attribute ${R} ${M} a_${P}; #else -uniform ${k} ${E} u_${R}; +uniform ${R} ${G} u_${P}; #endif -`:H==="vec4"?` -#ifndef HAS_UNIFORM_u_${R} - ${k} ${E} ${R} = a_${R}; +`:j==="vec4"?` +#ifndef HAS_UNIFORM_u_${P} + ${R} ${G} ${P} = a_${P}; #else - ${k} ${E} ${R} = u_${R}; + ${R} ${G} ${P} = u_${P}; #endif `:` -#ifndef HAS_UNIFORM_u_${R} - ${k} ${E} ${R} = unpack_mix_${H}(a_${R}, u_${R}_t); +#ifndef HAS_UNIFORM_u_${P} + ${R} ${G} ${P} = unpack_mix_${j}(a_${P}, u_${P}_t); #else - ${k} ${E} ${R} = u_${R}; -#endif -`}),staticAttributes:p,staticUniforms:u}}class Pt{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(i,c,p,m,b,u,g,y,x){this.context=i;let k=this.boundPaintVertexBuffers.length!==m.length;for(let E=0;!k&&E({u_matrix:v,u_texture:0,u_ele_delta:i,u_fog_matrix:c,u_fog_color:p?p.properties.get("fog-color"):s.aN.white,u_fog_ground_blend:p?p.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:p?p.calculateFogBlendOpacity(m):0,u_horizon_color:p?p.properties.get("horizon-color"):s.aN.white,u_horizon_fog_blend:p?p.properties.get("horizon-fog-blend"):1});function re(v){let i=[];for(let c=0;c({u_depth:new s.aI(ot,pt.u_depth),u_terrain:new s.aI(ot,pt.u_terrain),u_terrain_dim:new s.aJ(ot,pt.u_terrain_dim),u_terrain_matrix:new s.aK(ot,pt.u_terrain_matrix),u_terrain_unpack:new s.aL(ot,pt.u_terrain_unpack),u_terrain_exaggeration:new s.aJ(ot,pt.u_terrain_exaggeration)}))(i,gt),this.binderUniforms=p?p.getUniforms(i,gt):[]}draw(i,c,p,m,b,u,g,y,x,k,E,R,P,H,N,O,et,nt){let Y=i.gl;if(this.failedToCreate)return;if(i.program.set(this.program),i.setDepthMode(p),i.setStencilMode(m),i.setColorMode(b),i.setCullFace(u),y){i.activeTexture.set(Y.TEXTURE2),Y.bindTexture(Y.TEXTURE_2D,y.depthTexture),i.activeTexture.set(Y.TEXTURE3),Y.bindTexture(Y.TEXTURE_2D,y.texture);for(let gt in this.terrainUniforms)this.terrainUniforms[gt].set(y[gt])}for(let gt in this.fixedUniforms)this.fixedUniforms[gt].set(g[gt]);N&&N.setUniforms(i,this.binderUniforms,P,{zoom:H});let dt=0;switch(c){case Y.LINES:dt=2;break;case Y.TRIANGLES:dt=3;break;case Y.LINE_STRIP:dt=1}for(let gt of R.get()){let ot=gt.vaos||(gt.vaos={});(ot[x]||(ot[x]=new Pt)).bind(i,this,k,N?N.getPaintVertexBuffers():[],E,gt.vertexOffset,O,et,nt),Y.drawElements(c,gt.primitiveLength*dt,Y.UNSIGNED_SHORT,gt.primitiveOffset*dt*2)}}}function Be(v,i,c){let p=1/xi(c,1,i.transform.tileZoom),m=Math.pow(2,c.tileID.overscaledZ),b=c.tileSize*Math.pow(2,i.transform.tileZoom)/m,u=b*(c.tileID.canonical.x+c.tileID.wrap*m),g=b*c.tileID.canonical.y;return{u_image:0,u_texsize:c.imageAtlasTexture.size,u_scale:[p,v.fromScale,v.toScale],u_fade:v.t,u_pixel_coord_upper:[u>>16,g>>16],u_pixel_coord_lower:[65535&u,65535&g]}}let Ie=(v,i,c,p)=>{let m=i.style.light,b=m.properties.get("position"),u=[b.x,b.y,b.z],g=function(){var x=new s.A(9);return s.A!=Float32Array&&(x[1]=0,x[2]=0,x[3]=0,x[5]=0,x[6]=0,x[7]=0),x[0]=1,x[4]=1,x[8]=1,x}();m.properties.get("anchor")==="viewport"&&function(x,k){var E=Math.sin(k),R=Math.cos(k);x[0]=R,x[1]=E,x[2]=0,x[3]=-E,x[4]=R,x[5]=0,x[6]=0,x[7]=0,x[8]=1}(g,-i.transform.angle),function(x,k,E){var R=k[0],P=k[1],H=k[2];x[0]=R*E[0]+P*E[3]+H*E[6],x[1]=R*E[1]+P*E[4]+H*E[7],x[2]=R*E[2]+P*E[5]+H*E[8]}(u,u,g);let y=m.properties.get("color");return{u_matrix:v,u_lightpos:u,u_lightintensity:m.properties.get("intensity"),u_lightcolor:[y.r,y.g,y.b],u_vertical_gradient:+c,u_opacity:p}},ne=(v,i,c,p,m,b,u)=>s.e(Ie(v,i,c,p),Be(b,i,u),{u_height_factor:-Math.pow(2,m.overscaledZ)/u.tileSize/8}),ye=v=>({u_matrix:v}),ve=(v,i,c,p)=>s.e(ye(v),Be(c,i,p)),Ge=(v,i)=>({u_matrix:v,u_world:i}),Ri=(v,i,c,p,m)=>s.e(ve(v,i,c,p),{u_world:m}),Qi=(v,i,c,p)=>{let m=v.transform,b,u;if(p.paint.get("circle-pitch-alignment")==="map"){let g=xi(c,1,m.zoom);b=!0,u=[g,g]}else b=!1,u=m.pixelsToGLUnits;return{u_camera_to_center_distance:m.cameraToCenterDistance,u_scale_with_map:+(p.paint.get("circle-pitch-scale")==="map"),u_matrix:v.translatePosMatrix(i.posMatrix,c,p.paint.get("circle-translate"),p.paint.get("circle-translate-anchor")),u_pitch_with_map:+b,u_device_pixel_ratio:v.pixelRatio,u_extrude_scale:u}},He=(v,i,c)=>({u_matrix:v,u_inv_matrix:i,u_camera_to_center_distance:c.cameraToCenterDistance,u_viewport_size:[c.width,c.height]}),Ee=(v,i,c=1)=>({u_matrix:v,u_color:i,u_overlay:0,u_overlay_scale:c}),si=v=>({u_matrix:v}),ci=(v,i,c,p)=>({u_matrix:v,u_extrude_scale:xi(i,1,c),u_intensity:p});function Fi(v,i){let c=Math.pow(2,i.canonical.z),p=i.canonical.y;return[new s.Z(0,p/c).toLngLat().lat,new s.Z(0,(p+1)/c).toLngLat().lat]}let lr=(v,i,c,p)=>{let m=v.transform;return{u_matrix:ss(v,i,c,p),u_ratio:1/xi(i,1,m.zoom),u_device_pixel_ratio:v.pixelRatio,u_units_to_pixels:[1/m.pixelsToGLUnits[0],1/m.pixelsToGLUnits[1]]}},ai=(v,i,c,p,m)=>s.e(lr(v,i,c,m),{u_image:0,u_image_height:p}),Br=(v,i,c,p,m)=>{let b=v.transform,u=yr(i,b);return{u_matrix:ss(v,i,c,m),u_texsize:i.imageAtlasTexture.size,u_ratio:1/xi(i,1,b.zoom),u_device_pixel_ratio:v.pixelRatio,u_image:0,u_scale:[u,p.fromScale,p.toScale],u_fade:p.t,u_units_to_pixels:[1/b.pixelsToGLUnits[0],1/b.pixelsToGLUnits[1]]}},ln=(v,i,c,p,m,b)=>{let u=v.lineAtlas,g=yr(i,v.transform),y=c.layout.get("line-cap")==="round",x=u.getDash(p.from,y),k=u.getDash(p.to,y),E=x.width*m.fromScale,R=k.width*m.toScale;return s.e(lr(v,i,c,b),{u_patternscale_a:[g/E,-x.height/2],u_patternscale_b:[g/R,-k.height/2],u_sdfgamma:u.width/(256*Math.min(E,R)*v.pixelRatio)/2,u_image:0,u_tex_y_a:x.y,u_tex_y_b:k.y,u_mix:m.t})};function yr(v,i){return 1/xi(v,1,i.tileZoom)}function ss(v,i,c,p){return v.translatePosMatrix(p?p.posMatrix:i.tileID.posMatrix,i,c.paint.get("line-translate"),c.paint.get("line-translate-anchor"))}let $n=(v,i,c,p,m)=>{return{u_matrix:v,u_tl_parent:i,u_scale_parent:c,u_buffer_scale:1,u_fade_t:p.mix,u_opacity:p.opacity*m.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:m.paint.get("raster-brightness-min"),u_brightness_high:m.paint.get("raster-brightness-max"),u_saturation_factor:(u=m.paint.get("raster-saturation"),u>0?1-1/(1.001-u):-u),u_contrast_factor:(b=m.paint.get("raster-contrast"),b>0?1/(1-b):1+b),u_spin_weights:zo(m.paint.get("raster-hue-rotate"))};var b,u};function zo(v){v*=Math.PI/180;let i=Math.sin(v),c=Math.cos(v);return[(2*c+1)/3,(-Math.sqrt(3)*i-c+1)/3,(Math.sqrt(3)*i-c+1)/3]}let yA=(v,i,c,p,m,b,u,g,y,x,k,E,R,P)=>{let H=u.transform;return{u_is_size_zoom_constant:+(v==="constant"||v==="source"),u_is_size_feature_constant:+(v==="constant"||v==="camera"),u_size_t:i?i.uSizeT:0,u_size:i?i.uSize:0,u_camera_to_center_distance:H.cameraToCenterDistance,u_pitch:H.pitch/360*2*Math.PI,u_rotate_symbol:+c,u_aspect_ratio:H.width/H.height,u_fade_change:u.options.fadeDuration?u.symbolFadeChange:1,u_matrix:g,u_label_plane_matrix:y,u_coord_matrix:x,u_is_text:+E,u_pitch_with_map:+p,u_is_along_line:m,u_is_variable_anchor:b,u_texsize:R,u_texture:0,u_translation:k,u_pitched_scale:P}},Ql=(v,i,c,p,m,b,u,g,y,x,k,E,R,P,H)=>{let N=u.transform;return s.e(yA(v,i,c,p,m,b,u,g,y,x,k,E,R,H),{u_gamma_scale:p?Math.cos(N._pitch)*N.cameraToCenterDistance:1,u_device_pixel_ratio:u.pixelRatio,u_is_halo:+P})},Ic=(v,i,c,p,m,b,u,g,y,x,k,E,R,P)=>s.e(Ql(v,i,c,p,m,b,u,g,y,x,k,!0,E,!0,P),{u_texsize_icon:R,u_texture_icon:1}),bA=(v,i,c)=>({u_matrix:v,u_opacity:i,u_color:c}),Ma=(v,i,c,p,m,b)=>s.e(function(u,g,y,x){let k=y.imageManager.getPattern(u.from.toString()),E=y.imageManager.getPattern(u.to.toString()),{width:R,height:P}=y.imageManager.getPixelSize(),H=Math.pow(2,x.tileID.overscaledZ),N=x.tileSize*Math.pow(2,y.transform.tileZoom)/H,O=N*(x.tileID.canonical.x+x.tileID.wrap*H),et=N*x.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:k.tl,u_pattern_br_a:k.br,u_pattern_tl_b:E.tl,u_pattern_br_b:E.br,u_texsize:[R,P],u_mix:g.t,u_pattern_size_a:k.displaySize,u_pattern_size_b:E.displaySize,u_scale_a:g.fromScale,u_scale_b:g.toScale,u_tile_units_to_pixels:1/xi(x,1,y.transform.tileZoom),u_pixel_coord_upper:[O>>16,et>>16],u_pixel_coord_lower:[65535&O,65535&et]}}(p,b,c,m),{u_matrix:v,u_opacity:i}),Lo={fillExtrusion:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_lightpos:new s.aO(v,i.u_lightpos),u_lightintensity:new s.aJ(v,i.u_lightintensity),u_lightcolor:new s.aO(v,i.u_lightcolor),u_vertical_gradient:new s.aJ(v,i.u_vertical_gradient),u_opacity:new s.aJ(v,i.u_opacity)}),fillExtrusionPattern:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_lightpos:new s.aO(v,i.u_lightpos),u_lightintensity:new s.aJ(v,i.u_lightintensity),u_lightcolor:new s.aO(v,i.u_lightcolor),u_vertical_gradient:new s.aJ(v,i.u_vertical_gradient),u_height_factor:new s.aJ(v,i.u_height_factor),u_image:new s.aI(v,i.u_image),u_texsize:new s.aP(v,i.u_texsize),u_pixel_coord_upper:new s.aP(v,i.u_pixel_coord_upper),u_pixel_coord_lower:new s.aP(v,i.u_pixel_coord_lower),u_scale:new s.aO(v,i.u_scale),u_fade:new s.aJ(v,i.u_fade),u_opacity:new s.aJ(v,i.u_opacity)}),fill:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix)}),fillPattern:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_image:new s.aI(v,i.u_image),u_texsize:new s.aP(v,i.u_texsize),u_pixel_coord_upper:new s.aP(v,i.u_pixel_coord_upper),u_pixel_coord_lower:new s.aP(v,i.u_pixel_coord_lower),u_scale:new s.aO(v,i.u_scale),u_fade:new s.aJ(v,i.u_fade)}),fillOutline:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_world:new s.aP(v,i.u_world)}),fillOutlinePattern:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_world:new s.aP(v,i.u_world),u_image:new s.aI(v,i.u_image),u_texsize:new s.aP(v,i.u_texsize),u_pixel_coord_upper:new s.aP(v,i.u_pixel_coord_upper),u_pixel_coord_lower:new s.aP(v,i.u_pixel_coord_lower),u_scale:new s.aO(v,i.u_scale),u_fade:new s.aJ(v,i.u_fade)}),circle:(v,i)=>({u_camera_to_center_distance:new s.aJ(v,i.u_camera_to_center_distance),u_scale_with_map:new s.aI(v,i.u_scale_with_map),u_pitch_with_map:new s.aI(v,i.u_pitch_with_map),u_extrude_scale:new s.aP(v,i.u_extrude_scale),u_device_pixel_ratio:new s.aJ(v,i.u_device_pixel_ratio),u_matrix:new s.aK(v,i.u_matrix)}),collisionBox:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_pixel_extrude_scale:new s.aP(v,i.u_pixel_extrude_scale)}),collisionCircle:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_inv_matrix:new s.aK(v,i.u_inv_matrix),u_camera_to_center_distance:new s.aJ(v,i.u_camera_to_center_distance),u_viewport_size:new s.aP(v,i.u_viewport_size)}),debug:(v,i)=>({u_color:new s.aM(v,i.u_color),u_matrix:new s.aK(v,i.u_matrix),u_overlay:new s.aI(v,i.u_overlay),u_overlay_scale:new s.aJ(v,i.u_overlay_scale)}),clippingMask:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix)}),heatmap:(v,i)=>({u_extrude_scale:new s.aJ(v,i.u_extrude_scale),u_intensity:new s.aJ(v,i.u_intensity),u_matrix:new s.aK(v,i.u_matrix)}),heatmapTexture:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_world:new s.aP(v,i.u_world),u_image:new s.aI(v,i.u_image),u_color_ramp:new s.aI(v,i.u_color_ramp),u_opacity:new s.aJ(v,i.u_opacity)}),hillshade:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_image:new s.aI(v,i.u_image),u_latrange:new s.aP(v,i.u_latrange),u_light:new s.aP(v,i.u_light),u_shadow:new s.aM(v,i.u_shadow),u_highlight:new s.aM(v,i.u_highlight),u_accent:new s.aM(v,i.u_accent)}),hillshadePrepare:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_image:new s.aI(v,i.u_image),u_dimension:new s.aP(v,i.u_dimension),u_zoom:new s.aJ(v,i.u_zoom),u_unpack:new s.aL(v,i.u_unpack)}),line:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_ratio:new s.aJ(v,i.u_ratio),u_device_pixel_ratio:new s.aJ(v,i.u_device_pixel_ratio),u_units_to_pixels:new s.aP(v,i.u_units_to_pixels)}),lineGradient:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_ratio:new s.aJ(v,i.u_ratio),u_device_pixel_ratio:new s.aJ(v,i.u_device_pixel_ratio),u_units_to_pixels:new s.aP(v,i.u_units_to_pixels),u_image:new s.aI(v,i.u_image),u_image_height:new s.aJ(v,i.u_image_height)}),linePattern:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_texsize:new s.aP(v,i.u_texsize),u_ratio:new s.aJ(v,i.u_ratio),u_device_pixel_ratio:new s.aJ(v,i.u_device_pixel_ratio),u_image:new s.aI(v,i.u_image),u_units_to_pixels:new s.aP(v,i.u_units_to_pixels),u_scale:new s.aO(v,i.u_scale),u_fade:new s.aJ(v,i.u_fade)}),lineSDF:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_ratio:new s.aJ(v,i.u_ratio),u_device_pixel_ratio:new s.aJ(v,i.u_device_pixel_ratio),u_units_to_pixels:new s.aP(v,i.u_units_to_pixels),u_patternscale_a:new s.aP(v,i.u_patternscale_a),u_patternscale_b:new s.aP(v,i.u_patternscale_b),u_sdfgamma:new s.aJ(v,i.u_sdfgamma),u_image:new s.aI(v,i.u_image),u_tex_y_a:new s.aJ(v,i.u_tex_y_a),u_tex_y_b:new s.aJ(v,i.u_tex_y_b),u_mix:new s.aJ(v,i.u_mix)}),raster:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_tl_parent:new s.aP(v,i.u_tl_parent),u_scale_parent:new s.aJ(v,i.u_scale_parent),u_buffer_scale:new s.aJ(v,i.u_buffer_scale),u_fade_t:new s.aJ(v,i.u_fade_t),u_opacity:new s.aJ(v,i.u_opacity),u_image0:new s.aI(v,i.u_image0),u_image1:new s.aI(v,i.u_image1),u_brightness_low:new s.aJ(v,i.u_brightness_low),u_brightness_high:new s.aJ(v,i.u_brightness_high),u_saturation_factor:new s.aJ(v,i.u_saturation_factor),u_contrast_factor:new s.aJ(v,i.u_contrast_factor),u_spin_weights:new s.aO(v,i.u_spin_weights)}),symbolIcon:(v,i)=>({u_is_size_zoom_constant:new s.aI(v,i.u_is_size_zoom_constant),u_is_size_feature_constant:new s.aI(v,i.u_is_size_feature_constant),u_size_t:new s.aJ(v,i.u_size_t),u_size:new s.aJ(v,i.u_size),u_camera_to_center_distance:new s.aJ(v,i.u_camera_to_center_distance),u_pitch:new s.aJ(v,i.u_pitch),u_rotate_symbol:new s.aI(v,i.u_rotate_symbol),u_aspect_ratio:new s.aJ(v,i.u_aspect_ratio),u_fade_change:new s.aJ(v,i.u_fade_change),u_matrix:new s.aK(v,i.u_matrix),u_label_plane_matrix:new s.aK(v,i.u_label_plane_matrix),u_coord_matrix:new s.aK(v,i.u_coord_matrix),u_is_text:new s.aI(v,i.u_is_text),u_pitch_with_map:new s.aI(v,i.u_pitch_with_map),u_is_along_line:new s.aI(v,i.u_is_along_line),u_is_variable_anchor:new s.aI(v,i.u_is_variable_anchor),u_texsize:new s.aP(v,i.u_texsize),u_texture:new s.aI(v,i.u_texture),u_translation:new s.aP(v,i.u_translation),u_pitched_scale:new s.aJ(v,i.u_pitched_scale)}),symbolSDF:(v,i)=>({u_is_size_zoom_constant:new s.aI(v,i.u_is_size_zoom_constant),u_is_size_feature_constant:new s.aI(v,i.u_is_size_feature_constant),u_size_t:new s.aJ(v,i.u_size_t),u_size:new s.aJ(v,i.u_size),u_camera_to_center_distance:new s.aJ(v,i.u_camera_to_center_distance),u_pitch:new s.aJ(v,i.u_pitch),u_rotate_symbol:new s.aI(v,i.u_rotate_symbol),u_aspect_ratio:new s.aJ(v,i.u_aspect_ratio),u_fade_change:new s.aJ(v,i.u_fade_change),u_matrix:new s.aK(v,i.u_matrix),u_label_plane_matrix:new s.aK(v,i.u_label_plane_matrix),u_coord_matrix:new s.aK(v,i.u_coord_matrix),u_is_text:new s.aI(v,i.u_is_text),u_pitch_with_map:new s.aI(v,i.u_pitch_with_map),u_is_along_line:new s.aI(v,i.u_is_along_line),u_is_variable_anchor:new s.aI(v,i.u_is_variable_anchor),u_texsize:new s.aP(v,i.u_texsize),u_texture:new s.aI(v,i.u_texture),u_gamma_scale:new s.aJ(v,i.u_gamma_scale),u_device_pixel_ratio:new s.aJ(v,i.u_device_pixel_ratio),u_is_halo:new s.aI(v,i.u_is_halo),u_translation:new s.aP(v,i.u_translation),u_pitched_scale:new s.aJ(v,i.u_pitched_scale)}),symbolTextAndIcon:(v,i)=>({u_is_size_zoom_constant:new s.aI(v,i.u_is_size_zoom_constant),u_is_size_feature_constant:new s.aI(v,i.u_is_size_feature_constant),u_size_t:new s.aJ(v,i.u_size_t),u_size:new s.aJ(v,i.u_size),u_camera_to_center_distance:new s.aJ(v,i.u_camera_to_center_distance),u_pitch:new s.aJ(v,i.u_pitch),u_rotate_symbol:new s.aI(v,i.u_rotate_symbol),u_aspect_ratio:new s.aJ(v,i.u_aspect_ratio),u_fade_change:new s.aJ(v,i.u_fade_change),u_matrix:new s.aK(v,i.u_matrix),u_label_plane_matrix:new s.aK(v,i.u_label_plane_matrix),u_coord_matrix:new s.aK(v,i.u_coord_matrix),u_is_text:new s.aI(v,i.u_is_text),u_pitch_with_map:new s.aI(v,i.u_pitch_with_map),u_is_along_line:new s.aI(v,i.u_is_along_line),u_is_variable_anchor:new s.aI(v,i.u_is_variable_anchor),u_texsize:new s.aP(v,i.u_texsize),u_texsize_icon:new s.aP(v,i.u_texsize_icon),u_texture:new s.aI(v,i.u_texture),u_texture_icon:new s.aI(v,i.u_texture_icon),u_gamma_scale:new s.aJ(v,i.u_gamma_scale),u_device_pixel_ratio:new s.aJ(v,i.u_device_pixel_ratio),u_is_halo:new s.aI(v,i.u_is_halo),u_translation:new s.aP(v,i.u_translation),u_pitched_scale:new s.aJ(v,i.u_pitched_scale)}),background:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_opacity:new s.aJ(v,i.u_opacity),u_color:new s.aM(v,i.u_color)}),backgroundPattern:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_opacity:new s.aJ(v,i.u_opacity),u_image:new s.aI(v,i.u_image),u_pattern_tl_a:new s.aP(v,i.u_pattern_tl_a),u_pattern_br_a:new s.aP(v,i.u_pattern_br_a),u_pattern_tl_b:new s.aP(v,i.u_pattern_tl_b),u_pattern_br_b:new s.aP(v,i.u_pattern_br_b),u_texsize:new s.aP(v,i.u_texsize),u_mix:new s.aJ(v,i.u_mix),u_pattern_size_a:new s.aP(v,i.u_pattern_size_a),u_pattern_size_b:new s.aP(v,i.u_pattern_size_b),u_scale_a:new s.aJ(v,i.u_scale_a),u_scale_b:new s.aJ(v,i.u_scale_b),u_pixel_coord_upper:new s.aP(v,i.u_pixel_coord_upper),u_pixel_coord_lower:new s.aP(v,i.u_pixel_coord_lower),u_tile_units_to_pixels:new s.aJ(v,i.u_tile_units_to_pixels)}),terrain:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_texture:new s.aI(v,i.u_texture),u_ele_delta:new s.aJ(v,i.u_ele_delta),u_fog_matrix:new s.aK(v,i.u_fog_matrix),u_fog_color:new s.aM(v,i.u_fog_color),u_fog_ground_blend:new s.aJ(v,i.u_fog_ground_blend),u_fog_ground_blend_opacity:new s.aJ(v,i.u_fog_ground_blend_opacity),u_horizon_color:new s.aM(v,i.u_horizon_color),u_horizon_fog_blend:new s.aJ(v,i.u_horizon_fog_blend)}),terrainDepth:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_ele_delta:new s.aJ(v,i.u_ele_delta)}),terrainCoords:(v,i)=>({u_matrix:new s.aK(v,i.u_matrix),u_texture:new s.aI(v,i.u_texture),u_terrain_coords_id:new s.aJ(v,i.u_terrain_coords_id),u_ele_delta:new s.aJ(v,i.u_ele_delta)}),sky:(v,i)=>({u_sky_color:new s.aM(v,i.u_sky_color),u_horizon_color:new s.aM(v,i.u_horizon_color),u_horizon:new s.aJ(v,i.u_horizon),u_sky_horizon_blend:new s.aJ(v,i.u_sky_horizon_blend)})};class Eo{constructor(i,c,p){this.context=i;let m=i.gl;this.buffer=m.createBuffer(),this.dynamicDraw=Boolean(p),this.context.unbindVAO(),i.bindElementBuffer.set(this.buffer),m.bufferData(m.ELEMENT_ARRAY_BUFFER,c.arrayBuffer,this.dynamicDraw?m.DYNAMIC_DRAW:m.STATIC_DRAW),this.dynamicDraw||delete c.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(i){let c=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),c.bufferSubData(c.ELEMENT_ARRAY_BUFFER,0,i.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let rl={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Kn{constructor(i,c,p,m){this.length=c.length,this.attributes=p,this.itemSize=c.bytesPerElement,this.dynamicDraw=m,this.context=i;let b=i.gl;this.buffer=b.createBuffer(),i.bindVertexBuffer.set(this.buffer),b.bufferData(b.ARRAY_BUFFER,c.arrayBuffer,this.dynamicDraw?b.DYNAMIC_DRAW:b.STATIC_DRAW),this.dynamicDraw||delete c.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(i){if(i.length!==this.length)throw new Error(`Length of new data is ${i.length}, which doesn't match current length of ${this.length}`);let c=this.context.gl;this.bind(),c.bufferSubData(c.ARRAY_BUFFER,0,i.arrayBuffer)}enableAttributes(i,c){for(let p=0;p0){let ot=s.H();s.aR(ot,Y.placementInvProjMatrix,v.transform.glCoordMatrix),s.aR(ot,ot,Y.placementViewportMatrix),y.push({circleArray:gt,circleOffset:k,transform:nt.posMatrix,invTransform:ot,coord:nt}),x+=gt.length/4,k=x}dt&&g.draw(b,u.LINES,ki.disabled,er.disabled,v.colorModeForRenderPass(),nr.disabled,{u_matrix:nt.posMatrix,u_pixel_extrude_scale:[1/(E=v.transform).width,1/E.height]},v.style.map.terrain&&v.style.map.terrain.getTerrainData(nt),c.id,dt.layoutVertexBuffer,dt.indexBuffer,dt.segments,null,v.transform.zoom,null,null,dt.collisionVertexBuffer)}var E;if(!m||!y.length)return;let R=v.useProgram("collisionCircle"),P=new s.aS;P.resize(4*x),P._trim();let H=0;for(let et of y)for(let nt=0;nt=0&&(et[Y.associatedIconIndex]={shiftedAnchor:$e,angle:Li})}else ti(Y.numGlyphs,N)}if(x){O.clear();let nt=v.icon.placedSymbolArray;for(let Y=0;Yv.style.map.terrain.getElevation(ue,GA,xr):null,Po=c.layout.get("text-rotation-alignment")==="map";rt(Fe,ue.posMatrix,v,m,rn,Tn,et,x,Po,N,ue.toUnwrapped(),H.width,H.height,On,Zr)}let nn=ue.posMatrix,Wn=m&&Dt||mo,es=nt||Wn?os:rn,Gr=_n,xn=Ue&&c.paint.get(m?"text-halo-width":"icon-halo-width").constantOr(1)!==0,Un;Un=Ue?Fe.iconsInText?Ic($e.kind,bi,Y,et,nt,Wn,v,nn,es,Gr,On,mr,rr,jt):Ql($e.kind,bi,Y,et,nt,Wn,v,nn,es,Gr,On,m,mr,!0,jt):yA($e.kind,bi,Y,et,nt,Wn,v,nn,es,Gr,On,m,mr,jt);let yn={program:pi,buffers:xe,uniformValues:Un,atlasTexture:Jr,atlasTextureIcon:Lr,atlasInterpolation:Yi,atlasInterpolationIcon:Rr,isSDF:Ue,hasHalo:xn};if(gt&&Fe.canOverlap){ot=!0;let Zr=xe.segments.get();for(let Po of Zr)$t.push({segments:new s.a0([Po]),sortKey:Po.sortKey,state:yn,terrainData:Ci})}else $t.push({segments:xe.segments,sortKey:0,state:yn,terrainData:Ci})}ot&&$t.sort((ue,ce)=>ue.sortKey-ce.sortKey);for(let ue of $t){let ce=ue.state;if(R.activeTexture.set(P.TEXTURE0),ce.atlasTexture.bind(ce.atlasInterpolation,P.CLAMP_TO_EDGE),ce.atlasTextureIcon&&(R.activeTexture.set(P.TEXTURE1),ce.atlasTextureIcon&&ce.atlasTextureIcon.bind(ce.atlasInterpolationIcon,P.CLAMP_TO_EDGE)),ce.isSDF){let Fe=ce.uniformValues;ce.hasHalo&&(Fe.u_is_halo=1,Ao(ce.buffers,ue.segments,c,v,ce.program,pt,k,E,Fe,ue.terrainData)),Fe.u_is_halo=0}Ao(ce.buffers,ue.segments,c,v,ce.program,pt,k,E,ce.uniformValues,ue.terrainData)}}function Ao(v,i,c,p,m,b,u,g,y,x){let k=p.context;m.draw(k,k.gl.TRIANGLES,b,u,g,nr.disabled,y,x,c.id,v.layoutVertexBuffer,v.indexBuffer,i,c.paint,p.transform.zoom,v.programConfigurations.get(c.id),v.dynamicLayoutVertexBuffer,v.opacityVertexBuffer)}function Fn(v,i,c,p,m){if(!c||!p||!p.imageAtlas)return;let b=p.imageAtlas.patternPositions,u=b[c.to.toString()],g=b[c.from.toString()];if(!u&&g&&(u=g),!g&&u&&(g=u),!u||!g){let y=m.getPaintProperty(i);u=b[y],g=b[y]}u&&g&&v.setConstantPatternPositions(u,g)}function Ia(v,i,c,p,m,b,u){let g=v.context.gl,y="fill-pattern",x=c.paint.get(y),k=x&&x.constantOr(1),E=c.getCrossfadeParameters(),R,P,H,N,O;u?(P=k&&!c.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",R=g.LINES):(P=k?"fillPattern":"fill",R=g.TRIANGLES);let et=x.constantOr(null);for(let nt of p){let Y=i.getTile(nt);if(k&&!Y.patternsLoaded())continue;let dt=Y.getBucket(c);if(!dt)continue;let gt=dt.programConfigurations.get(c.id),ot=v.useProgram(P,gt),pt=v.style.map.terrain&&v.style.map.terrain.getTerrainData(nt);k&&(v.context.activeTexture.set(g.TEXTURE0),Y.imageAtlasTexture.bind(g.LINEAR,g.CLAMP_TO_EDGE),gt.updatePaintBuffers(E)),Fn(gt,y,et,Y,c);let Dt=pt?nt:null,$t=v.translatePosMatrix(Dt?Dt.posMatrix:nt.posMatrix,Y,c.paint.get("fill-translate"),c.paint.get("fill-translate-anchor"));if(u){N=dt.indexBuffer2,O=dt.segments2;let jt=[g.drawingBufferWidth,g.drawingBufferHeight];H=P==="fillOutlinePattern"&&k?Ri($t,v,E,Y,jt):Ge($t,jt)}else N=dt.indexBuffer,O=dt.segments,H=k?ve($t,v,E,Y):ye($t);ot.draw(v.context,R,m,v.stencilModeForClipping(nt),b,nr.disabled,H,pt,c.id,dt.layoutVertexBuffer,N,O,c.paint,v.transform.zoom,gt)}}function kn(v,i,c,p,m,b,u){let g=v.context,y=g.gl,x="fill-extrusion-pattern",k=c.paint.get(x),E=k.constantOr(1),R=c.getCrossfadeParameters(),P=c.paint.get("fill-extrusion-opacity"),H=k.constantOr(null);for(let N of p){let O=i.getTile(N),et=O.getBucket(c);if(!et)continue;let nt=v.style.map.terrain&&v.style.map.terrain.getTerrainData(N),Y=et.programConfigurations.get(c.id),dt=v.useProgram(E?"fillExtrusionPattern":"fillExtrusion",Y);E&&(v.context.activeTexture.set(y.TEXTURE0),O.imageAtlasTexture.bind(y.LINEAR,y.CLAMP_TO_EDGE),Y.updatePaintBuffers(R)),Fn(Y,x,H,O,c);let gt=v.translatePosMatrix(N.posMatrix,O,c.paint.get("fill-extrusion-translate"),c.paint.get("fill-extrusion-translate-anchor")),ot=c.paint.get("fill-extrusion-vertical-gradient"),pt=E?ne(gt,v,ot,P,N,R,O):Ie(gt,v,ot,P);dt.draw(g,g.gl.TRIANGLES,m,b,u,nr.backCCW,pt,nt,c.id,et.layoutVertexBuffer,et.indexBuffer,et.segments,c.paint,v.transform.zoom,Y,v.style.map.terrain&&et.centroidVertexBuffer)}}function ya(v,i,c,p,m,b,u){let g=v.context,y=g.gl,x=c.fbo;if(!x)return;let k=v.useProgram("hillshade"),E=v.style.map.terrain&&v.style.map.terrain.getTerrainData(i);g.activeTexture.set(y.TEXTURE0),y.bindTexture(y.TEXTURE_2D,x.colorAttachment.get()),k.draw(g,y.TRIANGLES,m,b,u,nr.disabled,((R,P,H,N)=>{let O=H.paint.get("hillshade-shadow-color"),et=H.paint.get("hillshade-highlight-color"),nt=H.paint.get("hillshade-accent-color"),Y=H.paint.get("hillshade-illumination-direction")*(Math.PI/180);H.paint.get("hillshade-illumination-anchor")==="viewport"&&(Y-=R.transform.angle);let dt=!R.options.moving;return{u_matrix:N?N.posMatrix:R.transform.calculatePosMatrix(P.tileID.toUnwrapped(),dt),u_image:0,u_latrange:Fi(0,P.tileID),u_light:[H.paint.get("hillshade-exaggeration"),Y],u_shadow:O,u_highlight:et,u_accent:nt}})(v,c,p,E?i:null),E,p.id,v.rasterBoundsBuffer,v.quadTriangleIndexBuffer,v.rasterBoundsSegments)}function Ps(v,i,c,p,m,b){let u=v.context,g=u.gl,y=i.dem;if(y&&y.data){let x=y.dim,k=y.stride,E=y.getPixels();if(u.activeTexture.set(g.TEXTURE1),u.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||v.getTileTexture(k),i.demTexture){let P=i.demTexture;P.update(E,{premultiply:!1}),P.bind(g.NEAREST,g.CLAMP_TO_EDGE)}else i.demTexture=new Nt(u,E,g.RGBA,{premultiply:!1}),i.demTexture.bind(g.NEAREST,g.CLAMP_TO_EDGE);u.activeTexture.set(g.TEXTURE0);let R=i.fbo;if(!R){let P=new Nt(u,{width:x,height:x,data:null},g.RGBA);P.bind(g.LINEAR,g.CLAMP_TO_EDGE),R=i.fbo=u.createFramebuffer(x,x,!0,!1),R.colorAttachment.set(P.texture)}u.bindFramebuffer.set(R.framebuffer),u.viewport.set([0,0,x,x]),v.useProgram("hillshadePrepare").draw(u,g.TRIANGLES,p,m,b,nr.disabled,((P,H)=>{let N=H.stride,O=s.H();return s.aQ(O,0,s.X,-s.X,0,0,1),s.J(O,O,[0,-s.X,0]),{u_matrix:O,u_image:1,u_dimension:[N,N],u_zoom:P.overscaledZ,u_unpack:H.getUnpackVector()}})(i.tileID,y),null,c.id,v.rasterBoundsBuffer,v.quadTriangleIndexBuffer,v.rasterBoundsSegments),i.needsHillshadePrepare=!1}}function jo(v,i,c,p,m,b){let u=p.paint.get("raster-fade-duration");if(!b&&u>0){let g=_.now(),y=(g-v.timeAdded)/u,x=i?(g-i.timeAdded)/u:-1,k=c.getSource(),E=m.coveringZoomLevel({tileSize:k.tileSize,roundZoom:k.roundZoom}),R=!i||Math.abs(i.tileID.overscaledZ-E)>Math.abs(v.tileID.overscaledZ-E),P=R&&v.refreshedUponExpiration?1:s.ad(R?y:1-x,0,1);return v.refreshedUponExpiration&&y>=1&&(v.refreshedUponExpiration=!1),i?{opacity:1,mix:1-P}:{opacity:P,mix:0}}return{opacity:1,mix:0}}let ba=new s.aN(1,0,0,1),Bn=new s.aN(0,1,0,1),SA=new s.aN(0,0,1,1),FA=new s.aN(1,0,1,1),qo=new s.aN(0,1,1,1);function Ln(v,i,c,p){va(v,0,i+c/2,v.transform.width,c,p)}function Wa(v,i,c,p){va(v,i-c/2,0,c,v.transform.height,p)}function va(v,i,c,p,m,b){let u=v.context,g=u.gl;g.enable(g.SCISSOR_TEST),g.scissor(i*v.pixelRatio,c*v.pixelRatio,p*v.pixelRatio,m*v.pixelRatio),u.clear({color:b}),g.disable(g.SCISSOR_TEST)}function dr(v,i,c){let p=v.context,m=p.gl,b=c.posMatrix,u=v.useProgram("debug"),g=ki.disabled,y=er.disabled,x=v.colorModeForRenderPass(),k="$debug",E=v.style.map.terrain&&v.style.map.terrain.getTerrainData(c);p.activeTexture.set(m.TEXTURE0);let R=i.getTileByID(c.key).latestRawTileData,P=Math.floor((R&&R.byteLength||0)/1024),H=i.getTile(c).tileSize,N=512/Math.min(H,512)*(c.overscaledZ/v.transform.zoom)*.5,O=c.canonical.toString();c.overscaledZ!==c.canonical.z&&(O+=` => ${c.overscaledZ}`),function(et,nt){et.initDebugOverlayCanvas();let Y=et.debugOverlayCanvas,dt=et.context.gl,gt=et.debugOverlayCanvas.getContext("2d");gt.clearRect(0,0,Y.width,Y.height),gt.shadowColor="white",gt.shadowBlur=2,gt.lineWidth=1.5,gt.strokeStyle="white",gt.textBaseline="top",gt.font="bold 36px Open Sans, sans-serif",gt.fillText(nt,5,5),gt.strokeText(nt,5,5),et.debugOverlayTexture.update(Y),et.debugOverlayTexture.bind(dt.LINEAR,dt.CLAMP_TO_EDGE)}(v,`${O} ${P}kB`),u.draw(p,m.TRIANGLES,g,y,Ii.alphaBlended,nr.disabled,Ee(b,s.aN.transparent,N),null,k,v.debugBuffer,v.quadTriangleIndexBuffer,v.debugSegments),u.draw(p,m.LINE_STRIP,g,y,x,nr.disabled,Ee(b,s.aN.red),E,k,v.debugBuffer,v.tileBorderIndexBuffer,v.debugSegments)}function Hs(v,i,c){let p=v.context,m=p.gl,b=v.colorModeForRenderPass(),u=new ki(m.LEQUAL,ki.ReadWrite,v.depthRangeFor3D),g=v.useProgram("terrain"),y=i.getTerrainMesh();p.bindFramebuffer.set(null),p.viewport.set([0,0,v.width,v.height]);for(let x of c){let k=v.renderToTexture.getTexture(x),E=i.getTerrainData(x.tileID);p.activeTexture.set(m.TEXTURE0),m.bindTexture(m.TEXTURE_2D,k.texture);let R=v.transform.calculatePosMatrix(x.tileID.toUnwrapped()),P=i.getMeshFrameDelta(v.transform.zoom),H=v.transform.calculateFogMatrix(x.tileID.toUnwrapped()),N=Jt(R,P,H,v.style.sky,v.transform.pitch);g.draw(p,m.TRIANGLES,u,er.disabled,b,nr.backCCW,N,E,"terrain",y.vertexBuffer,y.indexBuffer,y.segments)}}class bs{constructor(i,c,p){this.vertexBuffer=i,this.indexBuffer=c,this.segments=p}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}class Ms{constructor(i,c){this.context=new gr(i),this.transform=c,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:s.ao(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=Ke.maxUnderzooming+Ke.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new wn}resize(i,c,p){if(this.width=Math.floor(i*p),this.height=Math.floor(c*p),this.pixelRatio=p,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let m of this.style._order)this.style._layers[m].resize()}setup(){let i=this.context,c=new s.aX;c.emplaceBack(0,0),c.emplaceBack(s.X,0),c.emplaceBack(0,s.X),c.emplaceBack(s.X,s.X),this.tileExtentBuffer=i.createVertexBuffer(c,Ct.members),this.tileExtentSegments=s.a0.simpleSegment(0,0,4,2);let p=new s.aX;p.emplaceBack(0,0),p.emplaceBack(s.X,0),p.emplaceBack(0,s.X),p.emplaceBack(s.X,s.X),this.debugBuffer=i.createVertexBuffer(p,Ct.members),this.debugSegments=s.a0.simpleSegment(0,0,4,5);let m=new s.$;m.emplaceBack(0,0,0,0),m.emplaceBack(s.X,0,s.X,0),m.emplaceBack(0,s.X,0,s.X),m.emplaceBack(s.X,s.X,s.X,s.X),this.rasterBoundsBuffer=i.createVertexBuffer(m,Ne.members),this.rasterBoundsSegments=s.a0.simpleSegment(0,0,4,2);let b=new s.aX;b.emplaceBack(0,0),b.emplaceBack(1,0),b.emplaceBack(0,1),b.emplaceBack(1,1),this.viewportBuffer=i.createVertexBuffer(b,Ct.members),this.viewportSegments=s.a0.simpleSegment(0,0,4,2);let u=new s.aZ;u.emplaceBack(0),u.emplaceBack(1),u.emplaceBack(3),u.emplaceBack(2),u.emplaceBack(0),this.tileBorderIndexBuffer=i.createIndexBuffer(u);let g=new s.aY;g.emplaceBack(0,1,2),g.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=i.createIndexBuffer(g);let y=this.context.gl;this.stencilClearMode=new er({func:y.ALWAYS,mask:0},0,255,y.ZERO,y.ZERO,y.ZERO)}clearStencil(){let i=this.context,c=i.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let p=s.H();s.aQ(p,0,this.width,this.height,0,0,1),s.K(p,p,[c.drawingBufferWidth,c.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(i,c.TRIANGLES,ki.disabled,this.stencilClearMode,Ii.disabled,nr.disabled,si(p),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(i,c){if(this.currentStencilSource===i.source||!i.isTileClipped()||!c||!c.length)return;this.currentStencilSource=i.source;let p=this.context,m=p.gl;this.nextStencilID+c.length>256&&this.clearStencil(),p.setColorMode(Ii.disabled),p.setDepthMode(ki.disabled);let b=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(let u of c){let g=this._tileClippingMaskIDs[u.key]=this.nextStencilID++,y=this.style.map.terrain&&this.style.map.terrain.getTerrainData(u);b.draw(p,m.TRIANGLES,ki.disabled,new er({func:m.ALWAYS,mask:0},g,255,m.KEEP,m.KEEP,m.REPLACE),Ii.disabled,nr.disabled,si(u.posMatrix),y,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let i=this.nextStencilID++,c=this.context.gl;return new er({func:c.NOTEQUAL,mask:255},i,255,c.KEEP,c.KEEP,c.REPLACE)}stencilModeForClipping(i){let c=this.context.gl;return new er({func:c.EQUAL,mask:255},this._tileClippingMaskIDs[i.key],0,c.KEEP,c.KEEP,c.REPLACE)}stencilConfigForOverlap(i){let c=this.context.gl,p=i.sort((u,g)=>g.overscaledZ-u.overscaledZ),m=p[p.length-1].overscaledZ,b=p[0].overscaledZ-m+1;if(b>1){this.currentStencilSource=void 0,this.nextStencilID+b>256&&this.clearStencil();let u={};for(let g=0;g({u_sky_color:nt.properties.get("sky-color"),u_horizon_color:nt.properties.get("horizon-color"),u_horizon:(Y.height/2+Y.getHorizon())*dt,u_sky_horizon_blend:nt.properties.get("sky-horizon-blend")*Y.height/2*dt}))(k,x.style.map.transform,x.pixelRatio),H=new ki(R.LEQUAL,ki.ReadWrite,[0,1]),N=er.disabled,O=x.colorModeForRenderPass(),et=x.useProgram("sky");if(!k.mesh){let nt=new s.aX;nt.emplaceBack(-1,-1),nt.emplaceBack(1,-1),nt.emplaceBack(1,1),nt.emplaceBack(-1,1);let Y=new s.aY;Y.emplaceBack(0,1,2),Y.emplaceBack(0,2,3),k.mesh=new bs(E.createVertexBuffer(nt,Ct.members),E.createIndexBuffer(Y),s.a0.simpleSegment(0,0,nt.length,Y.length))}et.draw(E,R.TRIANGLES,H,N,O,nr.disabled,P,void 0,"sky",k.mesh.vertexBuffer,k.mesh.indexBuffer,k.mesh.segments)}(this,this.style.sky),this._showOverdrawInspector=c.showOverdrawInspector,this.depthRangeFor3D=[0,1-(i._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=m.length-1;this.currentLayer>=0;this.currentLayer--){let x=this.style._layers[m[this.currentLayer]],k=b[x.source],E=u[x.source];this._renderTileClippingMasks(x,E),this.renderLayer(this,k,x,E)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayeret.source&&!et.isHidden(E)?[k.sourceCaches[et.source]]:[]),H=P.filter(et=>et.getSource().type==="vector"),N=P.filter(et=>et.getSource().type!=="vector"),O=et=>{(!R||R.getSource().maxzoomO(et)),R||N.forEach(et=>O(et)),R}(this.style,this.transform.zoom);x&&function(k,E,R){for(let P=0;P0),m&&(s.b0(c,p),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(b,u){let g=b.context,y=g.gl,x=Ii.unblended,k=new ki(y.LEQUAL,ki.ReadWrite,[0,1]),E=u.getTerrainMesh(),R=u.sourceCache.getRenderableTiles(),P=b.useProgram("terrainDepth");g.bindFramebuffer.set(u.getFramebuffer("depth").framebuffer),g.viewport.set([0,0,b.width/devicePixelRatio,b.height/devicePixelRatio]),g.clear({color:s.aN.transparent,depth:1});for(let H of R){let N=u.getTerrainData(H.tileID),O={u_matrix:b.transform.calculatePosMatrix(H.tileID.toUnwrapped()),u_ele_delta:u.getMeshFrameDelta(b.transform.zoom)};P.draw(g,y.TRIANGLES,k,er.disabled,x,nr.backCCW,O,N,"terrain",E.vertexBuffer,E.indexBuffer,E.segments)}g.bindFramebuffer.set(null),g.viewport.set([0,0,b.width,b.height])}(this,this.style.map.terrain),function(b,u){let g=b.context,y=g.gl,x=Ii.unblended,k=new ki(y.LEQUAL,ki.ReadWrite,[0,1]),E=u.getTerrainMesh(),R=u.getCoordsTexture(),P=u.sourceCache.getRenderableTiles(),H=b.useProgram("terrainCoords");g.bindFramebuffer.set(u.getFramebuffer("coords").framebuffer),g.viewport.set([0,0,b.width/devicePixelRatio,b.height/devicePixelRatio]),g.clear({color:s.aN.transparent,depth:1}),u.coordsIndex=[];for(let N of P){let O=u.getTerrainData(N.tileID);g.activeTexture.set(y.TEXTURE0),y.bindTexture(y.TEXTURE_2D,R.texture);let et={u_matrix:b.transform.calculatePosMatrix(N.tileID.toUnwrapped()),u_terrain_coords_id:(255-u.coordsIndex.length)/255,u_texture:0,u_ele_delta:u.getMeshFrameDelta(b.transform.zoom)};H.draw(g,y.TRIANGLES,k,er.disabled,x,nr.backCCW,et,O,"terrain",E.vertexBuffer,E.indexBuffer,E.segments),u.coordsIndex.push(N.tileID.key)}g.bindFramebuffer.set(null),g.viewport.set([0,0,b.width,b.height])}(this,this.style.map.terrain))}renderLayer(i,c,p,m){if(!p.isHidden(this.transform.zoom)&&(p.type==="background"||p.type==="custom"||(m||[]).length))switch(this.id=p.id,p.type){case"symbol":(function(b,u,g,y,x){if(b.renderPass!=="translucent")return;let k=er.disabled,E=b.colorModeForRenderPass();(g._unevaluatedLayout.hasValue("text-variable-anchor")||g._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(R,P,H,N,O,et,nt,Y,dt){let gt=P.transform,ot=pa(),pt=O==="map",Dt=et==="map";for(let $t of R){let jt=N.getTile($t),ue=jt.getBucket(H);if(!ue||!ue.text||!ue.text.segments.get().length)continue;let ce=s.ah(ue.textSizeData,gt.zoom),Fe=xi(jt,1,P.transform.zoom),xe=wr($t.posMatrix,Dt,pt,P.transform,Fe),ke=H.layout.get("icon-text-fit")!=="none"&&ue.hasIconData();if(ce){let Ue=Math.pow(2,gt.zoom-jt.tileID.overscaledZ),$e=P.style.map.terrain?(pi,bi)=>P.style.map.terrain.getElevation($t,pi,bi):null,Li=ot.translatePosition(gt,jt,nt,Y);Ca(ue,pt,Dt,dt,gt,xe,$t.posMatrix,Ue,ce,ke,ot,Li,$t.toUnwrapped(),$e)}}}(y,b,g,u,g.layout.get("text-rotation-alignment"),g.layout.get("text-pitch-alignment"),g.paint.get("text-translate"),g.paint.get("text-translate-anchor"),x),g.paint.get("icon-opacity").constantOr(1)!==0&&ys(b,u,g,y,!1,g.paint.get("icon-translate"),g.paint.get("icon-translate-anchor"),g.layout.get("icon-rotation-alignment"),g.layout.get("icon-pitch-alignment"),g.layout.get("icon-keep-upright"),k,E),g.paint.get("text-opacity").constantOr(1)!==0&&ys(b,u,g,y,!0,g.paint.get("text-translate"),g.paint.get("text-translate-anchor"),g.layout.get("text-rotation-alignment"),g.layout.get("text-pitch-alignment"),g.layout.get("text-keep-upright"),k,E),u.map.showCollisionBoxes&&(Gs(b,u,g,y,!0),Gs(b,u,g,y,!1))})(i,c,p,m,this.style.placement.variableOffsets);break;case"circle":(function(b,u,g,y){if(b.renderPass!=="translucent")return;let x=g.paint.get("circle-opacity"),k=g.paint.get("circle-stroke-width"),E=g.paint.get("circle-stroke-opacity"),R=!g.layout.get("circle-sort-key").isConstant();if(x.constantOr(1)===0&&(k.constantOr(1)===0||E.constantOr(1)===0))return;let P=b.context,H=P.gl,N=b.depthModeForSublayer(0,ki.ReadOnly),O=er.disabled,et=b.colorModeForRenderPass(),nt=[];for(let Y=0;YY.sortKey-dt.sortKey);for(let Y of nt){let{programConfiguration:dt,program:gt,layoutVertexBuffer:ot,indexBuffer:pt,uniformValues:Dt,terrainData:$t}=Y.state;gt.draw(P,H.TRIANGLES,N,O,et,nr.disabled,Dt,$t,g.id,ot,pt,Y.segments,g.paint,b.transform.zoom,dt)}})(i,c,p,m);break;case"heatmap":(function(b,u,g,y){if(g.paint.get("heatmap-opacity")!==0)if(b.renderPass==="offscreen"){let x=b.context,k=x.gl,E=er.disabled,R=new Ii([k.ONE,k.ONE],s.aN.transparent,[!0,!0,!0,!0]);(function(P,H,N){let O=P.gl;P.activeTexture.set(O.TEXTURE1),P.viewport.set([0,0,H.width/4,H.height/4]);let et=N.heatmapFbo;if(et)O.bindTexture(O.TEXTURE_2D,et.colorAttachment.get()),P.bindFramebuffer.set(et.framebuffer);else{let nt=O.createTexture();O.bindTexture(O.TEXTURE_2D,nt),O.texParameteri(O.TEXTURE_2D,O.TEXTURE_WRAP_S,O.CLAMP_TO_EDGE),O.texParameteri(O.TEXTURE_2D,O.TEXTURE_WRAP_T,O.CLAMP_TO_EDGE),O.texParameteri(O.TEXTURE_2D,O.TEXTURE_MIN_FILTER,O.LINEAR),O.texParameteri(O.TEXTURE_2D,O.TEXTURE_MAG_FILTER,O.LINEAR),et=N.heatmapFbo=P.createFramebuffer(H.width/4,H.height/4,!1,!1),function(Y,dt,gt,ot){var pt,Dt;let $t=Y.gl,jt=(pt=Y.HALF_FLOAT)!==null&&pt!==void 0?pt:$t.UNSIGNED_BYTE,ue=(Dt=Y.RGBA16F)!==null&&Dt!==void 0?Dt:$t.RGBA;$t.texImage2D($t.TEXTURE_2D,0,ue,dt.width/4,dt.height/4,0,$t.RGBA,jt,null),ot.colorAttachment.set(gt)}(P,H,nt,et)}})(x,b,g),x.clear({color:s.aN.transparent});for(let P=0;P{let Y=s.H();s.aQ(Y,0,N.width,N.height,0,0,1);let dt=N.context.gl;return{u_matrix:Y,u_world:[dt.drawingBufferWidth,dt.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:O.paint.get("heatmap-opacity")}})(x,k),null,k.id,x.viewportBuffer,x.quadTriangleIndexBuffer,x.viewportSegments,k.paint,x.transform.zoom)}(b,g))})(i,c,p,m);break;case"line":(function(b,u,g,y){if(b.renderPass!=="translucent")return;let x=g.paint.get("line-opacity"),k=g.paint.get("line-width");if(x.constantOr(1)===0||k.constantOr(1)===0)return;let E=b.depthModeForSublayer(0,ki.ReadOnly),R=b.colorModeForRenderPass(),P=g.paint.get("line-dasharray"),H=g.paint.get("line-pattern"),N=H.constantOr(1),O=g.paint.get("line-gradient"),et=g.getCrossfadeParameters(),nt=N?"linePattern":P?"lineSDF":O?"lineGradient":"line",Y=b.context,dt=Y.gl,gt=!0;for(let ot of y){let pt=u.getTile(ot);if(N&&!pt.patternsLoaded())continue;let Dt=pt.getBucket(g);if(!Dt)continue;let $t=Dt.programConfigurations.get(g.id),jt=b.context.program.get(),ue=b.useProgram(nt,$t),ce=gt||ue.program!==jt,Fe=b.style.map.terrain&&b.style.map.terrain.getTerrainData(ot),xe=H.constantOr(null);if(xe&&pt.imageAtlas){let $e=pt.imageAtlas,Li=$e.patternPositions[xe.to.toString()],pi=$e.patternPositions[xe.from.toString()];Li&&pi&&$t.setConstantPatternPositions(Li,pi)}let ke=Fe?ot:null,Ue=N?Br(b,pt,g,et,ke):P?ln(b,pt,g,P,et,ke):O?ai(b,pt,g,Dt.lineClipsArray.length,ke):lr(b,pt,g,ke);if(N)Y.activeTexture.set(dt.TEXTURE0),pt.imageAtlasTexture.bind(dt.LINEAR,dt.CLAMP_TO_EDGE),$t.updatePaintBuffers(et);else if(P&&(ce||b.lineAtlas.dirty))Y.activeTexture.set(dt.TEXTURE0),b.lineAtlas.bind(Y);else if(O){let $e=Dt.gradients[g.id],Li=$e.texture;if(g.gradientVersion!==$e.version){let pi=256;if(g.stepInterpolant){let bi=u.getSource().maxzoom,Ci=ot.canonical.z===bi?Math.ceil(1<20&&k.texParameterf(k.TEXTURE_2D,x.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,x.extTextureFilterAnisotropicMax);let ue=b.style.map.terrain&&b.style.map.terrain.getTerrainData(nt),ce=ue?nt:null,Fe=ce?ce.posMatrix:b.transform.calculatePosMatrix(nt.toUnwrapped(),et),xe=$n(Fe,$t||[0,0],Dt||1,pt,g);E instanceof ze?R.draw(x,k.TRIANGLES,Y,er.disabled,P,nr.disabled,xe,ue,g.id,E.boundsBuffer,b.quadTriangleIndexBuffer,E.boundsSegments):R.draw(x,k.TRIANGLES,Y,H[nt.overscaledZ],P,nr.disabled,xe,ue,g.id,b.rasterBoundsBuffer,b.quadTriangleIndexBuffer,b.rasterBoundsSegments)}})(i,c,p,m);break;case"background":(function(b,u,g,y){let x=g.paint.get("background-color"),k=g.paint.get("background-opacity");if(k===0)return;let E=b.context,R=E.gl,P=b.transform,H=P.tileSize,N=g.paint.get("background-pattern");if(b.isPatternMissing(N))return;let O=!N&&x.a===1&&k===1&&b.opaquePassEnabledForLayer()?"opaque":"translucent";if(b.renderPass!==O)return;let et=er.disabled,nt=b.depthModeForSublayer(0,O==="opaque"?ki.ReadWrite:ki.ReadOnly),Y=b.colorModeForRenderPass(),dt=b.useProgram(N?"backgroundPattern":"background"),gt=y||P.coveringTiles({tileSize:H,terrain:b.style.map.terrain});N&&(E.activeTexture.set(R.TEXTURE0),b.imageManager.bind(b.context));let ot=g.getCrossfadeParameters();for(let pt of gt){let Dt=y?pt.posMatrix:b.transform.calculatePosMatrix(pt.toUnwrapped()),$t=N?Ma(Dt,k,b,N,{tileID:pt,tileSize:H},ot):bA(Dt,k,x),jt=b.style.map.terrain&&b.style.map.terrain.getTerrainData(pt);dt.draw(E,R.TRIANGLES,nt,et,Y,nr.disabled,$t,jt,g.id,b.tileExtentBuffer,b.quadTriangleIndexBuffer,b.tileExtentSegments)}})(i,0,p,m);break;case"custom":(function(b,u,g){let y=b.context,x=g.implementation;if(b.renderPass==="offscreen"){let k=x.prerender;k&&(b.setCustomLayerDefaults(),y.setColorMode(b.colorModeForRenderPass()),k.call(x,y.gl,b.transform.customLayerMatrix()),y.setDirty(),b.setBaseState())}else if(b.renderPass==="translucent"){b.setCustomLayerDefaults(),y.setColorMode(b.colorModeForRenderPass()),y.setStencilMode(er.disabled);let k=x.renderingMode==="3d"?new ki(b.context.gl.LEQUAL,ki.ReadWrite,b.depthRangeFor3D):b.depthModeForSublayer(0,ki.ReadOnly);y.setDepthMode(k),x.render(y.gl,b.transform.customLayerMatrix(),{farZ:b.transform.farZ,nearZ:b.transform.nearZ,fov:b.transform._fov,modelViewProjectionMatrix:b.transform.modelViewProjectionMatrix,projectionMatrix:b.transform.projectionMatrix}),y.setDirty(),b.setBaseState(),y.bindFramebuffer.set(null)}})(i,0,p)}}translatePosMatrix(i,c,p,m,b){if(!p[0]&&!p[1])return i;let u=b?m==="map"?this.transform.angle:0:m==="viewport"?-this.transform.angle:0;if(u){let x=Math.sin(u),k=Math.cos(u);p=[p[0]*k-p[1]*x,p[0]*x+p[1]*k]}let g=[b?p[0]:xi(c,p[0],this.transform.zoom),b?p[1]:xi(c,p[1],this.transform.zoom),0],y=new Float32Array(16);return s.J(y,i,g),y}saveTileTexture(i){let c=this._tileTextures[i.size[0]];c?c.push(i):this._tileTextures[i.size[0]]=[i]}getTileTexture(i){let c=this._tileTextures[i];return c&&c.length>0?c.pop():null}isPatternMissing(i){if(!i)return!1;if(!i.from||!i.to)return!0;let c=this.imageManager.getPattern(i.from.toString()),p=this.imageManager.getPattern(i.to.toString());return!c||!p}useProgram(i,c){this.cache=this.cache||{};let p=i+(c?c.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[p]||(this.cache[p]=new _e(this.context,ct[i],c,Lo[i],this._showOverdrawInspector,this.style.map.terrain)),this.cache[p]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let i=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(i.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new Nt(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:i,drawingBufferHeight:c}=this.context.gl;return this.width!==i||this.height!==c}}class as{constructor(i,c){this.points=i,this.planes=c}static fromInvProjectionMatrix(i,c,p){let m=Math.pow(2,p),b=[[-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(g=>{let y=1/(g=s.ag([],g,i))[3]/c*m;return s.b1(g,g,[y,y,1/g[3],y])}),u=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(g=>{let y=function(R,P){var H=P[0],N=P[1],O=P[2],et=H*H+N*N+O*O;return et>0&&(et=1/Math.sqrt(et)),R[0]=P[0]*et,R[1]=P[1]*et,R[2]=P[2]*et,R}([],function(R,P,H){var N=P[0],O=P[1],et=P[2],nt=H[0],Y=H[1],dt=H[2];return R[0]=O*dt-et*Y,R[1]=et*nt-N*dt,R[2]=N*Y-O*nt,R}([],Lt([],b[g[0]],b[g[1]]),Lt([],b[g[2]],b[g[1]]))),x=-((k=y)[0]*(E=b[g[1]])[0]+k[1]*E[1]+k[2]*E[2]);var k,E;return y.concat(x)});return new as(b,u)}}class vs{constructor(i,c){this.min=i,this.max=c,this.center=function(p,m,b){return p[0]=.5*m[0],p[1]=.5*m[1],p[2]=.5*m[2],p}([],function(p,m,b){return p[0]=m[0]+b[0],p[1]=m[1]+b[1],p[2]=m[2]+b[2],p}([],this.min,this.max))}quadrant(i){let c=[i%2==0,i<2],p=At(this.min),m=At(this.max);for(let b=0;b=0&&u++;if(u===0)return 0;u!==c.length&&(p=!1)}if(p)return 2;for(let m=0;m<3;m++){let b=Number.MAX_VALUE,u=-Number.MAX_VALUE;for(let g=0;gthis.max[m]-this.min[m])return 0}return 1}}class Ns{constructor(i=0,c=0,p=0,m=0){if(isNaN(i)||i<0||isNaN(c)||c<0||isNaN(p)||p<0||isNaN(m)||m<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=i,this.bottom=c,this.left=p,this.right=m}interpolate(i,c,p){return c.top!=null&&i.top!=null&&(this.top=s.z.number(i.top,c.top,p)),c.bottom!=null&&i.bottom!=null&&(this.bottom=s.z.number(i.bottom,c.bottom,p)),c.left!=null&&i.left!=null&&(this.left=s.z.number(i.left,c.left,p)),c.right!=null&&i.right!=null&&(this.right=s.z.number(i.right,c.right,p)),this}getCenter(i,c){let p=s.ad((this.left+i-this.right)/2,0,i),m=s.ad((this.top+c-this.bottom)/2,0,c);return new s.P(p,m)}equals(i){return this.top===i.top&&this.bottom===i.bottom&&this.left===i.left&&this.right===i.right}clone(){return new Ns(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}let wa=85.051129;class ws{constructor(i,c,p,m,b){this.tileSize=512,this._renderWorldCopies=b===void 0||!!b,this._minZoom=i||0,this._maxZoom=c||22,this._minPitch=p??0,this._maxPitch=m??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new s.N(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new Ns,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={},this.minElevationForCurrentTile=0}clone(){let i=new ws(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return i.apply(this),i}apply(i){this.tileSize=i.tileSize,this.latRange=i.latRange,this.width=i.width,this.height=i.height,this._center=i._center,this._elevation=i._elevation,this.minElevationForCurrentTile=i.minElevationForCurrentTile,this.zoom=i.zoom,this.angle=i.angle,this._fov=i._fov,this._pitch=i._pitch,this._unmodified=i._unmodified,this._edgeInsets=i._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(i){this._minZoom!==i&&(this._minZoom=i,this.zoom=Math.max(this.zoom,i))}get maxZoom(){return this._maxZoom}set maxZoom(i){this._maxZoom!==i&&(this._maxZoom=i,this.zoom=Math.min(this.zoom,i))}get minPitch(){return this._minPitch}set minPitch(i){this._minPitch!==i&&(this._minPitch=i,this.pitch=Math.max(this.pitch,i))}get maxPitch(){return this._maxPitch}set maxPitch(i){this._maxPitch!==i&&(this._maxPitch=i,this.pitch=Math.min(this.pitch,i))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(i){i===void 0?i=!0:i===null&&(i=!1),this._renderWorldCopies=i}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new s.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(i){let c=-s.b3(i,-180,180)*Math.PI/180;this.angle!==c&&(this._unmodified=!1,this.angle=c,this._calcMatrices(),this.rotationMatrix=function(){var p=new s.A(4);return s.A!=Float32Array&&(p[1]=0,p[2]=0),p[0]=1,p[3]=1,p}(),function(p,m,b){var u=m[0],g=m[1],y=m[2],x=m[3],k=Math.sin(b),E=Math.cos(b);p[0]=u*E+y*k,p[1]=g*E+x*k,p[2]=u*-k+y*E,p[3]=g*-k+x*E}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(i){let c=s.ad(i,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==c&&(this._unmodified=!1,this._pitch=c,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(i){i=Math.max(.01,Math.min(60,i)),this._fov!==i&&(this._unmodified=!1,this._fov=i/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(i){let c=Math.min(Math.max(i,this.minZoom),this.maxZoom);this._zoom!==c&&(this._unmodified=!1,this._zoom=c,this.tileZoom=Math.max(0,Math.floor(c)),this.scale=this.zoomScale(c),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(i){i.lat===this._center.lat&&i.lng===this._center.lng||(this._unmodified=!1,this._center=i,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(i){i!==this._elevation&&(this._elevation=i,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(i){this._edgeInsets.equals(i)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,i,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(i){return this._edgeInsets.equals(i)}interpolatePadding(i,c,p){this._unmodified=!1,this._edgeInsets.interpolate(i,c,p),this._constrain(),this._calcMatrices()}coveringZoomLevel(i){let c=(i.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/i.tileSize));return Math.max(0,c)}getVisibleUnwrappedCoordinates(i){let c=[new s.b4(0,i)];if(this._renderWorldCopies){let p=this.pointCoordinate(new s.P(0,0)),m=this.pointCoordinate(new s.P(this.width,0)),b=this.pointCoordinate(new s.P(this.width,this.height)),u=this.pointCoordinate(new s.P(0,this.height)),g=Math.floor(Math.min(p.x,m.x,b.x,u.x)),y=Math.floor(Math.max(p.x,m.x,b.x,u.x)),x=1;for(let k=g-x;k<=y+x;k++)k!==0&&c.push(new s.b4(k,i))}return c}coveringTiles(i){var c,p;let m=this.coveringZoomLevel(i),b=m;if(i.minzoom!==void 0&&mi.maxzoom&&(m=i.maxzoom);let u=this.pointCoordinate(this.getCameraPoint()),g=s.Z.fromLngLat(this.center),y=Math.pow(2,m),x=[y*u.x,y*u.y,0],k=[y*g.x,y*g.y,0],E=as.fromInvProjectionMatrix(this.invModelViewProjectionMatrix,this.worldSize,m),R=i.minzoom||0;!i.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(R=m);let P=i.terrain?2/Math.min(this.tileSize,i.tileSize)*this.tileSize:3,H=Y=>({aabb:new vs([Y*y,0,0],[(Y+1)*y,y,0]),zoom:0,x:0,y:0,wrap:Y,fullyVisible:!1}),N=[],O=[],et=m,nt=i.reparseOverscaled?b:m;if(this._renderWorldCopies)for(let Y=1;Y<=3;Y++)N.push(H(-Y)),N.push(H(Y));for(N.push(H(0));N.length>0;){let Y=N.pop(),dt=Y.x,gt=Y.y,ot=Y.fullyVisible;if(!ot){let ue=Y.aabb.intersects(E);if(ue===0)continue;ot=ue===2}let pt=i.terrain?x:k,Dt=Y.aabb.distanceX(pt),$t=Y.aabb.distanceY(pt),jt=Math.max(Math.abs(Dt),Math.abs($t));if(Y.zoom===et||jt>P+(1<=R){let ue=et-Y.zoom,ce=x[0]-.5-(dt<>1),xe=Y.zoom+1,ke=Y.aabb.quadrant(ue);if(i.terrain){let Ue=new s.S(xe,Y.wrap,xe,ce,Fe),$e=i.terrain.getMinMaxElevation(Ue),Li=(c=$e.minElevation)!==null&&c!==void 0?c:this.elevation,pi=(p=$e.maxElevation)!==null&&p!==void 0?p:this.elevation;ke=new vs([ke.min[0],ke.min[1],Li],[ke.max[0],ke.max[1],pi])}N.push({aabb:ke,zoom:xe,x:ce,y:Fe,wrap:Y.wrap,fullyVisible:ot})}}return O.sort((Y,dt)=>Y.distanceSq-dt.distanceSq).map(Y=>Y.tileID)}resize(i,c){this.width=i,this.height=c,this.pixelsToGLUnits=[2/i,-2/c],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(i){return Math.pow(2,i)}scaleZoom(i){return Math.log(i)/Math.LN2}project(i){let c=s.ad(i.lat,-85.051129,wa);return new s.P(s.O(i.lng)*this.worldSize,s.Q(c)*this.worldSize)}unproject(i){return new s.Z(i.x/this.worldSize,i.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(i){let c=this.elevation,p=Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter,m=this.pointLocation(this.centerPoint,i),b=i.getElevationForLngLatZoom(m,this.tileZoom);if(!(this.elevation-b))return;let u=p+c-b,g=Math.cos(this._pitch)*this.cameraToCenterDistance/u/s.b5(1,m.lat),y=this.scaleZoom(g/this.tileSize);this._elevation=b,this._center=m,this.zoom=y}setLocationAtPoint(i,c){let p=this.pointCoordinate(c),m=this.pointCoordinate(this.centerPoint),b=this.locationCoordinate(i),u=new s.Z(b.x-(p.x-m.x),b.y-(p.y-m.y));this.center=this.coordinateLocation(u),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(i,c){return c?this.coordinatePoint(this.locationCoordinate(i),c.getElevationForLngLatZoom(i,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(i))}pointLocation(i,c){return this.coordinateLocation(this.pointCoordinate(i,c))}locationCoordinate(i){return s.Z.fromLngLat(i)}coordinateLocation(i){return i&&i.toLngLat()}pointCoordinate(i,c){if(c){let R=c.pointCoordinate(i);if(R!=null)return R}let p=[i.x,i.y,0,1],m=[i.x,i.y,1,1];s.ag(p,p,this.pixelMatrixInverse),s.ag(m,m,this.pixelMatrixInverse);let b=p[3],u=m[3],g=p[1]/b,y=m[1]/u,x=p[2]/b,k=m[2]/u,E=x===k?0:(0-x)/(k-x);return new s.Z(s.z.number(p[0]/b,m[0]/u,E)/this.worldSize,s.z.number(g,y,E)/this.worldSize)}coordinatePoint(i,c=0,p=this.pixelMatrix){let m=[i.x*this.worldSize,i.y*this.worldSize,c,1];return s.ag(m,m,p),new s.P(m[0]/m[3],m[1]/m[3])}getBounds(){let i=Math.max(0,this.height/2-this.getHorizon());return new Kt().extend(this.pointLocation(new s.P(0,i))).extend(this.pointLocation(new s.P(this.width,i))).extend(this.pointLocation(new s.P(this.width,this.height))).extend(this.pointLocation(new s.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new Kt([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(i){i?(this.lngRange=[i.getWest(),i.getEast()],this.latRange=[i.getSouth(),i.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-85.051129,wa])}calculateTileMatrix(i){let c=i.canonical,p=this.worldSize/this.zoomScale(c.z),m=c.x+Math.pow(2,c.z)*i.wrap,b=s.ao(new Float64Array(16));return s.J(b,b,[m*p,c.y*p,0]),s.K(b,b,[p/s.X,p/s.X,1]),b}calculatePosMatrix(i,c=!1){let p=i.key,m=c?this._alignedPosMatrixCache:this._posMatrixCache;if(m[p])return m[p];let b=this.calculateTileMatrix(i);return s.L(b,c?this.alignedModelViewProjectionMatrix:this.modelViewProjectionMatrix,b),m[p]=new Float32Array(b),m[p]}calculateFogMatrix(i){let c=i.key,p=this._fogMatrixCache;if(p[c])return p[c];let m=this.calculateTileMatrix(i);return s.L(m,this.fogMatrix,m),p[c]=new Float32Array(m),p[c]}customLayerMatrix(){return this.mercatorMatrix.slice()}getConstrained(i,c){c=s.ad(+c,this.minZoom,this.maxZoom);let p={center:new s.N(i.lng,i.lat),zoom:c},m=this.lngRange;if(!this._renderWorldCopies&&m===null){let Y=179.9999999999;m=[-Y,Y]}let b=this.tileSize*this.zoomScale(p.zoom),u=0,g=b,y=0,x=b,k=0,E=0,{x:R,y:P}=this.size;if(this.latRange){let Y=this.latRange;u=s.Q(Y[1])*b,g=s.Q(Y[0])*b,g-ug&&(et=g-Y)}if(m){let Y=(y+x)/2,dt=H;this._renderWorldCopies&&(dt=s.b3(H,Y-b/2,Y+b/2));let gt=R/2;dt-gtx&&(O=x-gt)}if(O!==void 0||et!==void 0){let Y=new s.P(O??H,et??N);p.center=this.unproject.call({worldSize:b},Y).wrap()}return p}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let i=this._unmodified,{center:c,zoom:p}=this.getConstrained(this.center,this.zoom);this.center=c,this.zoom=p,this._unmodified=i,this._constraining=!1}_calcMatrices(){if(!this.height)return;let i=this.centerOffset,c=this.point.x,p=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=s.b5(1,this.center.lat)*this.worldSize;let m=s.ao(new Float64Array(16));s.K(m,m,[this.width/2,-this.height/2,1]),s.J(m,m,[1,-1,0]),this.labelPlaneMatrix=m,m=s.ao(new Float64Array(16)),s.K(m,m,[1,-1,1]),s.J(m,m,[-1,-1,0]),s.K(m,m,[2/this.width,2/this.height,1]),this.glCoordMatrix=m;let b=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),u=Math.min(this.elevation,this.minElevationForCurrentTile),g=b-u*this._pixelPerMeter/Math.cos(this._pitch),y=u<0?g:b,x=Math.PI/2+this._pitch,k=this._fov*(.5+i.y/this.height),E=Math.sin(k)*y/Math.sin(s.ad(Math.PI-x-k,.01,Math.PI-.01)),R=this.getHorizon(),P=2*Math.atan(R/this.cameraToCenterDistance)*(.5+i.y/(2*R)),H=Math.sin(P)*y/Math.sin(s.ad(Math.PI-x-P,.01,Math.PI-.01)),N=Math.min(E,H);this.farZ=1.01*(Math.cos(Math.PI/2-this._pitch)*N+y),this.nearZ=this.height/50,m=new Float64Array(16),s.b6(m,this._fov,this.width/this.height,this.nearZ,this.farZ),m[8]=2*-i.x/this.width,m[9]=2*i.y/this.height,this.projectionMatrix=s.af(m),s.K(m,m,[1,-1,1]),s.J(m,m,[0,0,-this.cameraToCenterDistance]),s.b7(m,m,this._pitch),s.ae(m,m,this.angle),s.J(m,m,[-c,-p,0]),this.mercatorMatrix=s.K([],m,[this.worldSize,this.worldSize,this.worldSize]),s.K(m,m,[1,1,this._pixelPerMeter]),this.pixelMatrix=s.L(new Float64Array(16),this.labelPlaneMatrix,m),s.J(m,m,[0,0,-this.elevation]),this.modelViewProjectionMatrix=m,this.invModelViewProjectionMatrix=s.at([],m),this.fogMatrix=new Float64Array(16),s.b6(this.fogMatrix,this._fov,this.width/this.height,b,this.farZ),this.fogMatrix[8]=2*-i.x/this.width,this.fogMatrix[9]=2*i.y/this.height,s.K(this.fogMatrix,this.fogMatrix,[1,-1,1]),s.J(this.fogMatrix,this.fogMatrix,[0,0,-this.cameraToCenterDistance]),s.b7(this.fogMatrix,this.fogMatrix,this._pitch),s.ae(this.fogMatrix,this.fogMatrix,this.angle),s.J(this.fogMatrix,this.fogMatrix,[-c,-p,0]),s.K(this.fogMatrix,this.fogMatrix,[1,1,this._pixelPerMeter]),s.J(this.fogMatrix,this.fogMatrix,[0,0,-this.elevation]),this.pixelMatrix3D=s.L(new Float64Array(16),this.labelPlaneMatrix,m);let O=this.width%2/2,et=this.height%2/2,nt=Math.cos(this.angle),Y=Math.sin(this.angle),dt=c-Math.round(c)+nt*O+Y*et,gt=p-Math.round(p)+nt*et+Y*O,ot=new Float64Array(m);if(s.J(ot,ot,[dt>.5?dt-1:dt,gt>.5?gt-1:gt,0]),this.alignedModelViewProjectionMatrix=ot,m=s.at(new Float64Array(16),this.pixelMatrix),!m)throw new Error("failed to invert matrix");this.pixelMatrixInverse=m,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let i=this.pointCoordinate(new s.P(0,0)),c=[i.x*this.worldSize,i.y*this.worldSize,0,1];return s.ag(c,c,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let i=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new s.P(0,i))}getCameraQueryGeometry(i){let c=this.getCameraPoint();if(i.length===1)return[i[0],c];{let p=c.x,m=c.y,b=c.x,u=c.y;for(let g of i)p=Math.min(p,g.x),m=Math.min(m,g.y),b=Math.max(b,g.x),u=Math.max(u,g.y);return[new s.P(p,m),new s.P(b,m),new s.P(b,u),new s.P(p,u),new s.P(p,m)]}}lngLatToCameraDepth(i,c){let p=this.locationCoordinate(i),m=[p.x*this.worldSize,p.y*this.worldSize,c,1];return s.ag(m,m,this.modelViewProjectionMatrix),m[2]/m[3]}}function $o(v,i){let c,p=!1,m=null,b=null,u=()=>{m=null,p&&(v.apply(b,c),m=setTimeout(u,i),p=!1)};return(...g)=>(p=!0,b=this,c=g,m||u(),m)}class ta{constructor(i){this._getCurrentHash=()=>{let c=window.location.hash.replace("#","");if(this._hashName){let p;return c.split("&").map(m=>m.split("=")).forEach(m=>{m[0]===this._hashName&&(p=m)}),(p&&p[1]||"").split("/")}return c.split("/")},this._onHashChange=()=>{let c=this._getCurrentHash();if(c.length>=3&&!c.some(p=>isNaN(p))){let p=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(c[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+c[2],+c[1]],zoom:+c[0],bearing:p,pitch:+(c[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let c=window.location.href.replace(/(#.+)?$/,this.getHashString());window.history.replaceState(window.history.state,null,c)},this._removeHash=()=>{let c=this._getCurrentHash();if(c.length===0)return;let p=c.join("/"),m=p;m.split("&").length>0&&(m=m.split("&")[0]),this._hashName&&(m=`${this._hashName}=${p}`);let b=window.location.hash.replace(m,"");b.startsWith("#&")?b=b.slice(0,1)+b.slice(2):b==="#"&&(b="");let u=window.location.href.replace(/(#.+)?$/,b);u=u.replace("&&","&"),window.history.replaceState(window.history.state,null,u)},this._updateHash=$o(this._updateHashUnthrottled,300),this._hashName=i&&encodeURIComponent(i)}addTo(i){return this._map=i,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(i){let c=this._map.getCenter(),p=Math.round(100*this._map.getZoom())/100,m=Math.ceil((p*Math.LN2+Math.log(512/360/.5))/Math.LN10),b=Math.pow(10,m),u=Math.round(c.lng*b)/b,g=Math.round(c.lat*b)/b,y=this._map.getBearing(),x=this._map.getPitch(),k="";if(k+=i?`/${u}/${g}/${p}`:`${p}/${g}/${u}`,(y||x)&&(k+="/"+Math.round(10*y)/10),x&&(k+=`/${Math.round(x)}`),this._hashName){let E=this._hashName,R=!1,P=window.location.hash.slice(1).split("&").map(H=>{let N=H.split("=")[0];return N===E?(R=!0,`${N}=${k}`):H}).filter(H=>H);return R||P.push(`${E}=${k}`),`#${P.join("&")}`}return`#${k}`}}let As={linearity:.3,easing:s.b8(0,0,.3,1)},Bs=s.e({deceleration:2500,maxSpeed:1400},As),lo=s.e({deceleration:20,maxSpeed:1400},As),Ba=s.e({deceleration:1e3,maxSpeed:360},As),ea=s.e({deceleration:1e3,maxSpeed:90},As);class To{constructor(i){this._map=i,this.clear()}clear(){this._inertiaBuffer=[]}record(i){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:_.now(),settings:i})}_drainInertiaBuffer(){let i=this._inertiaBuffer,c=_.now();for(;i.length>0&&c-i[0].time>160;)i.shift()}_onMoveEnd(i){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let c={zoom:0,bearing:0,pitch:0,pan:new s.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:b}of this._inertiaBuffer)c.zoom+=b.zoomDelta||0,c.bearing+=b.bearingDelta||0,c.pitch+=b.pitchDelta||0,b.panDelta&&c.pan._add(b.panDelta),b.around&&(c.around=b.around),b.pinchAround&&(c.pinchAround=b.pinchAround);let p=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,m={};if(c.pan.mag()){let b=_a(c.pan.mag(),p,s.e({},Bs,i||{}));m.offset=c.pan.mult(b.amount/c.pan.mag()),m.center=this._map.transform.center,_s(m,b)}if(c.zoom){let b=_a(c.zoom,p,lo);m.zoom=this._map.transform.zoom+b.amount,_s(m,b)}if(c.bearing){let b=_a(c.bearing,p,Ba);m.bearing=this._map.transform.bearing+s.ad(b.amount,-179,179),_s(m,b)}if(c.pitch){let b=_a(c.pitch,p,ea);m.pitch=this._map.transform.pitch+b.amount,_s(m,b)}if(m.zoom||m.bearing){let b=c.pinchAround===void 0?c.around:c.pinchAround;m.around=b?this._map.unproject(b):this._map.getCenter()}return this.clear(),s.e(m,{noMoveStart:!0})}}function _s(v,i){(!v.duration||v.durationc.unproject(y)),g=b.reduce((y,x,k,E)=>y.add(x.div(E.length)),new s.P(0,0));super(i,{points:b,point:g,lngLats:u,lngLat:c.unproject(g),originalEvent:p}),this._defaultPrevented=!1}}class kr extends s.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(i,c,p){super(i,{originalEvent:p}),this._defaultPrevented=!1}}class _r{constructor(i,c){this._map=i,this._clickTolerance=c.clickTolerance}reset(){delete this._mousedownPos}wheel(i){return this._firePreventable(new kr(i.type,this._map,i))}mousedown(i,c){return this._mousedownPos=c,this._firePreventable(new Vr(i.type,this._map,i))}mouseup(i){this._map.fire(new Vr(i.type,this._map,i))}click(i,c){this._mousedownPos&&this._mousedownPos.dist(c)>=this._clickTolerance||this._map.fire(new Vr(i.type,this._map,i))}dblclick(i){return this._firePreventable(new Vr(i.type,this._map,i))}mouseover(i){this._map.fire(new Vr(i.type,this._map,i))}mouseout(i){this._map.fire(new Vr(i.type,this._map,i))}touchstart(i){return this._firePreventable(new xs(i.type,this._map,i))}touchmove(i){this._map.fire(new xs(i.type,this._map,i))}touchend(i){this._map.fire(new xs(i.type,this._map,i))}touchcancel(i){this._map.fire(new xs(i.type,this._map,i))}_firePreventable(i){if(this._map.fire(i),i.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class en{constructor(i){this._map=i}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(i){this._map.fire(new Vr(i.type,this._map,i))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Vr("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(i){this._delayContextMenu?this._contextMenuEvent=i:this._ignoreContextMenu||this._map.fire(new Vr(i.type,this._map,i)),this._map.listens("contextmenu")&&i.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Wr{constructor(i){this._map=i}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(i){return this.transform.pointLocation(s.P.convert(i),this._map.terrain)}}class co{constructor(i,c){this._map=i,this._tr=new Wr(i),this._el=i.getCanvasContainer(),this._container=i.getContainer(),this._clickTolerance=c.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(i,c){this.isEnabled()&&i.shiftKey&&i.button===0&&(S.disableDrag(),this._startPos=this._lastPos=c,this._active=!0)}mousemoveWindow(i,c){if(!this._active)return;let p=c;if(this._lastPos.equals(p)||!this._box&&p.dist(this._startPos)b.fitScreenCoordinates(p,m,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",i)}keydown(i){this._active&&i.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",i))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(S.remove(this._box),this._box=null),S.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(i,c){return this._map.fire(new s.k(i,{originalEvent:c}))}}function Ss(v,i){if(v.length!==i.length)throw new Error(`The number of touches and points are not equal - touches ${v.length}, points ${i.length}`);let c={};for(let p=0;pthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=i.timeStamp),p.length===this.numTouches&&(this.centroid=function(m){let b=new s.P(0,0);for(let u of m)b._add(u);return b.div(m.length)}(c),this.touches=Ss(p,c)))}touchmove(i,c,p){if(this.aborted||!this.centroid)return;let m=Ss(p,c);for(let b in this.touches){let u=m[b];(!u||u.dist(this.touches[b])>30)&&(this.aborted=!0)}}touchend(i,c,p){if((!this.centroid||i.timeStamp-this.startTime>500)&&(this.aborted=!0),p.length===0){let m=!this.aborted&&this.centroid;if(this.reset(),m)return m}}}class kA{constructor(i){this.singleTap=new xa(i),this.numTaps=i.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(i,c,p){this.singleTap.touchstart(i,c,p)}touchmove(i,c,p){this.singleTap.touchmove(i,c,p)}touchend(i,c,p){let m=this.singleTap.touchend(i,c,p);if(m){let b=i.timeStamp-this.lastTime<500,u=!this.lastTap||this.lastTap.dist(m)<30;if(b&&u||this.reset(),this.count++,this.lastTime=i.timeStamp,this.lastTap=m,this.count===this.numTaps)return this.reset(),m}}}class vc{constructor(i){this._tr=new Wr(i),this._zoomIn=new kA({numTouches:1,numTaps:2}),this._zoomOut=new kA({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(i,c,p){this._zoomIn.touchstart(i,c,p),this._zoomOut.touchstart(i,c,p)}touchmove(i,c,p){this._zoomIn.touchmove(i,c,p),this._zoomOut.touchmove(i,c,p)}touchend(i,c,p){let m=this._zoomIn.touchend(i,c,p),b=this._zoomOut.touchend(i,c,p),u=this._tr;return m?(this._active=!0,i.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:g=>g.easeTo({duration:300,zoom:u.zoom+1,around:u.unproject(m)},{originalEvent:i})}):b?(this._active=!0,i.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:g=>g.easeTo({duration:300,zoom:u.zoom-1,around:u.unproject(b)},{originalEvent:i})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Qr{constructor(i){this._enabled=!!i.enable,this._moveStateManager=i.moveStateManager,this._clickTolerance=i.clickTolerance||1,this._moveFunction=i.move,this._activateOnStart=!!i.activateOnStart,i.assignEvents(this),this.reset()}reset(i){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(i)}_move(...i){let c=this._moveFunction(...i);if(c.bearingDelta||c.pitchDelta||c.around||c.panDelta)return this._active=!0,c}dragStart(i,c){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(i)&&(this._moveStateManager.startMove(i),this._lastPoint=c.length?c[0]:c,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(i,c){if(!this.isEnabled())return;let p=this._lastPoint;if(!p)return;if(i.preventDefault(),!this._moveStateManager.isValidMoveEvent(i))return void this.reset(i);let m=c.length?c[0]:c;return!this._moved&&m.dist(p){v.mousedown=v.dragStart,v.mousemoveWindow=v.dragMove,v.mouseup=v.dragEnd,v.contextmenu=i=>{i.preventDefault()}},Al=({enable:v,clickTolerance:i,bearingDegreesPerPixelMoved:c=.8})=>{let p=new ts({checkCorrectEvent:m=>S.mouseButton(m)===0&&m.ctrlKey||S.mouseButton(m)===2});return new Qr({clickTolerance:i,move:(m,b)=>({bearingDelta:(b.x-m.x)*c}),moveStateManager:p,enable:v,assignEvents:LA})},Uo=({enable:v,clickTolerance:i,pitchDegreesPerPixelMoved:c=-.5})=>{let p=new ts({checkCorrectEvent:m=>S.mouseButton(m)===0&&m.ctrlKey||S.mouseButton(m)===2});return new Qr({clickTolerance:i,move:(m,b)=>({pitchDelta:(b.y-m.y)*c}),moveStateManager:p,enable:v,assignEvents:LA})};class En{constructor(i,c){this._clickTolerance=i.clickTolerance||1,this._map=c,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new s.P(0,0)}_shouldBePrevented(i){return i<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(i,c,p){return this._calculateTransform(i,c,p)}touchmove(i,c,p){if(this._active){if(!this._shouldBePrevented(p.length))return i.preventDefault(),this._calculateTransform(i,c,p);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",i)}}touchend(i,c,p){this._calculateTransform(i,c,p),this._active&&this._shouldBePrevented(p.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(i,c,p){p.length>0&&(this._active=!0);let m=Ss(p,c),b=new s.P(0,0),u=new s.P(0,0),g=0;for(let x in m){let k=m[x],E=this._touches[x];E&&(b._add(k),u._add(k.sub(E)),g++,m[x]=k)}if(this._touches=m,this._shouldBePrevented(g)||!u.mag())return;let y=u.div(g);return this._sum._add(y),this._sum.mag()Math.abs(v.x)}class Hl extends zn{constructor(i){super(),this._currentTouchCount=0,this._map=i}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(i,c,p){super.touchstart(i,c,p),this._currentTouchCount=p.length}_start(i){this._lastPoints=i,uo(i[0].sub(i[1]))&&(this._valid=!1)}_move(i,c,p){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let m=i[0].sub(this._lastPoints[0]),b=i[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(m,b,p.timeStamp),this._valid?(this._lastPoints=i,this._active=!0,{pitchDelta:(m.y+b.y)/2*-.5}):void 0}gestureBeginsVertically(i,c,p){if(this._valid!==void 0)return this._valid;let m=i.mag()>=2,b=c.mag()>=2;if(!m&&!b)return;if(!m||!b)return this._firstMove===void 0&&(this._firstMove=p),p-this._firstMove<100&&void 0;let u=i.y>0==c.y>0;return uo(i)&&uo(c)&&u}}let Ml={panStep:100,bearingStep:15,pitchStep:10};class ll{constructor(i){this._tr=new Wr(i);let c=Ml;this._panStep=c.panStep,this._bearingStep=c.bearingStep,this._pitchStep=c.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(i){if(i.altKey||i.ctrlKey||i.metaKey)return;let c=0,p=0,m=0,b=0,u=0;switch(i.keyCode){case 61:case 107:case 171:case 187:c=1;break;case 189:case 109:case 173:c=-1;break;case 37:i.shiftKey?p=-1:(i.preventDefault(),b=-1);break;case 39:i.shiftKey?p=1:(i.preventDefault(),b=1);break;case 38:i.shiftKey?m=1:(i.preventDefault(),u=-1);break;case 40:i.shiftKey?m=-1:(i.preventDefault(),u=1);break;default:return}return this._rotationDisabled&&(p=0,m=0),{cameraAnimation:g=>{let y=this._tr;g.easeTo({duration:300,easeId:"keyboardHandler",easing:cl,zoom:c?Math.round(y.zoom)+c*(i.shiftKey?2:1):y.zoom,bearing:y.bearing+p*this._bearingStep,pitch:y.pitch+m*this._pitchStep,offset:[-b*this._panStep,-u*this._panStep],center:y.center},{originalEvent:i})}}}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 cl(v){return v*(2-v)}let ul=4.000244140625;class wc{constructor(i,c){this._onTimeout=p=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(p)},this._map=i,this._tr=new Wr(i),this._triggerRenderFrame=c,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(i){this._defaultZoomRate=i}setWheelZoomRate(i){this._wheelZoomRate=i}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(i){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!i&&i.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(i){return!!this._map.cooperativeGestures.isEnabled()&&!(i.ctrlKey||this._map.cooperativeGestures.isBypassed(i))}wheel(i){if(!this.isEnabled())return;if(this._shouldBePrevented(i))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",i);let c=i.deltaMode===WheelEvent.DOM_DELTA_LINE?40*i.deltaY:i.deltaY,p=_.now(),m=p-(this._lastWheelEventTime||0);this._lastWheelEventTime=p,c!==0&&c%ul==0?this._type="wheel":c!==0&&Math.abs(c)<4?this._type="trackpad":m>400?(this._type=null,this._lastValue=c,this._timeout=setTimeout(this._onTimeout,40,i)):this._type||(this._type=Math.abs(m*c)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,c+=this._lastValue)),i.shiftKey&&c&&(c/=4),this._type&&(this._lastWheelEvent=i,this._delta-=c,this._active||this._start(i)),i.preventDefault()}_start(i){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);let c=S.mousePos(this._map.getCanvas(),i),p=this._tr;this._around=c.y>p.transform.height/2-p.transform.getHorizon()?s.N.convert(this._aroundCenter?p.center:p.unproject(c)):s.N.convert(p.center),this._aroundPoint=p.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let i=this._tr.transform;if(this._delta!==0){let y=this._type==="wheel"&&Math.abs(this._delta)>ul?this._wheelZoomRate:this._defaultZoomRate,x=2/(1+Math.exp(-Math.abs(this._delta*y)));this._delta<0&&x!==0&&(x=1/x);let k=typeof this._targetZoom=="number"?i.zoomScale(this._targetZoom):i.scale;this._targetZoom=Math.min(i.maxZoom,Math.max(i.minZoom,i.scaleZoom(k*x))),this._type==="wheel"&&(this._startZoom=i.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let c=typeof this._targetZoom=="number"?this._targetZoom:i.zoom,p=this._startZoom,m=this._easing,b,u=!1,g=_.now()-this._lastWheelEventTime;if(this._type==="wheel"&&p&&m&&g){let y=Math.min(g/200,1),x=m(y);b=s.z.number(p,c,x),y<1?this._frameId||(this._frameId=!0):u=!0}else b=c,u=!0;return this._active=!0,u&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!u,zoomDelta:b-i.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(i){let c=s.b9;if(this._prevEase){let p=this._prevEase,m=(_.now()-p.start)/p.duration,b=p.easing(m+.01)-p.easing(m),u=.27/Math.sqrt(b*b+1e-4)*.01,g=Math.sqrt(.0729-u*u);c=s.b8(u,g,.25,1)}return this._prevEase={start:_.now(),duration:i,easing:c},c}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class Bc{constructor(i,c){this._clickZoom=i,this._tapZoom=c}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 QA{constructor(i){this._tr=new Wr(i),this.reset()}reset(){this._active=!1}dblclick(i,c){return i.preventDefault(),{cameraAnimation:p=>{p.easeTo({duration:300,zoom:this._tr.zoom+(i.shiftKey?-1:1),around:this._tr.unproject(c)},{originalEvent:i})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class lu{constructor(){this._tap=new kA({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(i,c,p){if(!this._swipePoint)if(this._tapTime){let m=c[0],b=i.timeStamp-this._tapTime<500,u=this._tapPoint.dist(m)<30;b&&u?p.length>0&&(this._swipePoint=m,this._swipeTouch=p[0].identifier):this.reset()}else this._tap.touchstart(i,c,p)}touchmove(i,c,p){if(this._tapTime){if(this._swipePoint){if(p[0].identifier!==this._swipeTouch)return;let m=c[0],b=m.y-this._swipePoint.y;return this._swipePoint=m,i.preventDefault(),this._active=!0,{zoomDelta:b/128}}}else this._tap.touchmove(i,c,p)}touchend(i,c,p){if(this._tapTime)this._swipePoint&&p.length===0&&this.reset();else{let m=this._tap.touchend(i,c,p);m&&(this._tapTime=i.timeStamp,this._tapPoint=m)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Vs{constructor(i,c,p){this._el=i,this._mousePan=c,this._touchPan=p}enable(i){this._inertiaOptions=i||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class ho{constructor(i,c,p){this._pitchWithRotate=i.pitchWithRotate,this._mouseRotate=c,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 _c{constructor(i,c,p,m){this._el=i,this._touchZoom=c,this._touchRotate=p,this._tapDragZoom=m,this._rotationDisabled=!1,this._enabled=!0}enable(i){this._touchZoom.enable(i),this._rotationDisabled||this._touchRotate.enable(i),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-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()}}class go{constructor(i,c){this._bypassKey=navigator.userAgent.indexOf("Mac")!==-1?"metaKey":"ctrlKey",this._map=i,this._options=c,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let i=this._map.getCanvasContainer();i.classList.add("maplibregl-cooperative-gestures"),this._container=S.create("div","maplibregl-cooperative-gesture-screen",i);let c=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(c=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let p=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),m=document.createElement("div");m.className="maplibregl-desktop-message",m.textContent=c,this._container.appendChild(m);let b=document.createElement("div");b.className="maplibregl-mobile-message",b.textContent=p,this._container.appendChild(b),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(S.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(i){return i[this._bypassKey]}notifyGestureBlocked(i,c){this._enabled&&(this._map.fire(new s.k("cooperativegestureprevented",{gestureType:i,originalEvent:c})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}let po=v=>v.zoom||v.drag||v.pitch||v.rotate;class xc extends s.k{}function Ja(v){return v.panDelta&&v.panDelta.mag()||v.zoomDelta||v.bearingDelta||v.pitchDelta}class vh{constructor(i,c){this.handleWindowEvent=m=>{this.handleEvent(m,`${m.type}Window`)},this.handleEvent=(m,b)=>{if(m.type==="blur")return void this.stop(!0);this._updatingCamera=!0;let u=m.type==="renderFrame"?void 0:m,g={needsRenderFrame:!1},y={},x={},k=m.touches,E=k?this._getMapTouches(k):void 0,R=E?S.touchPos(this._map.getCanvas(),E):S.mousePos(this._map.getCanvas(),m);for(let{handlerName:N,handler:O,allowed:et}of this._handlers){if(!O.isEnabled())continue;let nt;this._blockedByActive(x,et,N)?O.reset():O[b||m.type]&&(nt=O[b||m.type](m,R,E),this.mergeHandlerResult(g,y,nt,N,u),nt&&nt.needsRenderFrame&&this._triggerRenderFrame()),(nt||O.isActive())&&(x[N]=O)}let P={};for(let N in this._previousActiveHandlers)x[N]||(P[N]=u);this._previousActiveHandlers=x,(Object.keys(P).length||Ja(g))&&(this._changes.push([g,y,P]),this._triggerRenderFrame()),(Object.keys(x).length||Ja(g))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:H}=g;H&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],H(this._map))},this._map=i,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new To(i),this._bearingSnap=c.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(c);let 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],[document,"mousemove",{capture:!0}],[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],[window,"blur",void 0]];for(let[m,b,u]of this._listeners)S.addEventListener(m,b,m===document?this.handleWindowEvent:this.handleEvent,u)}destroy(){for(let[i,c,p]of this._listeners)S.removeEventListener(i,c,i===document?this.handleWindowEvent:this.handleEvent,p)}_addDefaultHandlers(i){let c=this._map,p=c.getCanvasContainer();this._add("mapEvent",new _r(c,i));let m=c.boxZoom=new co(c,i);this._add("boxZoom",m),i.interactive&&i.boxZoom&&m.enable();let b=c.cooperativeGestures=new go(c,i.cooperativeGestures);this._add("cooperativeGestures",b),i.cooperativeGestures&&b.enable();let u=new vc(c),g=new QA(c);c.doubleClickZoom=new Bc(g,u),this._add("tapZoom",u),this._add("clickZoom",g),i.interactive&&i.doubleClickZoom&&c.doubleClickZoom.enable();let y=new lu;this._add("tapDragZoom",y);let x=c.touchPitch=new Hl(c);this._add("touchPitch",x),i.interactive&&i.touchPitch&&c.touchPitch.enable(i.touchPitch);let k=Al(i),E=Uo(i);c.dragRotate=new ho(i,k,E),this._add("mouseRotate",k,["mousePitch"]),this._add("mousePitch",E,["mouseRotate"]),i.interactive&&i.dragRotate&&c.dragRotate.enable();let R=(({enable:nt,clickTolerance:Y})=>{let dt=new ts({checkCorrectEvent:gt=>S.mouseButton(gt)===0&&!gt.ctrlKey});return new Qr({clickTolerance:Y,move:(gt,ot)=>({around:ot,panDelta:ot.sub(gt)}),activateOnStart:!0,moveStateManager:dt,enable:nt,assignEvents:LA})})(i),P=new En(i,c);c.dragPan=new Vs(p,R,P),this._add("mousePan",R),this._add("touchPan",P,["touchZoom","touchRotate"]),i.interactive&&i.dragPan&&c.dragPan.enable(i.dragPan);let H=new UA,N=new Pl;c.touchZoomRotate=new _c(p,N,H,y),this._add("touchRotate",H,["touchPan","touchZoom"]),this._add("touchZoom",N,["touchPan","touchRotate"]),i.interactive&&i.touchZoomRotate&&c.touchZoomRotate.enable(i.touchZoomRotate);let O=c.scrollZoom=new wc(c,()=>this._triggerRenderFrame());this._add("scrollZoom",O,["mousePan"]),i.interactive&&i.scrollZoom&&c.scrollZoom.enable(i.scrollZoom);let et=c.keyboard=new ll(c);this._add("keyboard",et),i.interactive&&i.keyboard&&c.keyboard.enable(),this._add("blockableMapEvent",new en(c))}_add(i,c,p){this._handlers.push({handlerName:i,handler:c,allowed:p}),this._handlersById[i]=c}stop(i){if(!this._updatingCamera){for(let{handler:c}of this._handlers)c.reset();this._inertia.clear(),this._fireEvents({},{},i),this._changes=[]}}isActive(){for(let{handler:i}of this._handlers)if(i.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return Boolean(po(this._eventsInProgress))||this.isZooming()}_blockedByActive(i,c,p){for(let m in i)if(m!==p&&(!c||c.indexOf(m)<0))return!0;return!1}_getMapTouches(i){let c=[];for(let p of i)this._el.contains(p.target)&&c.push(p);return c}mergeHandlerResult(i,c,p,m,b){if(!p)return;s.e(i,p);let u={handlerName:m,originalEvent:p.originalEvent||b};p.zoomDelta!==void 0&&(c.zoom=u),p.panDelta!==void 0&&(c.drag=u),p.pitchDelta!==void 0&&(c.pitch=u),p.bearingDelta!==void 0&&(c.rotate=u)}_applyChanges(){let i={},c={},p={};for(let[m,b,u]of this._changes)m.panDelta&&(i.panDelta=(i.panDelta||new s.P(0,0))._add(m.panDelta)),m.zoomDelta&&(i.zoomDelta=(i.zoomDelta||0)+m.zoomDelta),m.bearingDelta&&(i.bearingDelta=(i.bearingDelta||0)+m.bearingDelta),m.pitchDelta&&(i.pitchDelta=(i.pitchDelta||0)+m.pitchDelta),m.around!==void 0&&(i.around=m.around),m.pinchAround!==void 0&&(i.pinchAround=m.pinchAround),m.noInertia&&(i.noInertia=m.noInertia),s.e(c,b),s.e(p,u);this._updateMapTransform(i,c,p),this._changes=[]}_updateMapTransform(i,c,p){let m=this._map,b=m._getTransformForUpdate(),u=m.terrain;if(!(Ja(i)||u&&this._terrainMovement))return this._fireEvents(c,p,!0);let{panDelta:g,zoomDelta:y,bearingDelta:x,pitchDelta:k,around:E,pinchAround:R}=i;R!==void 0&&(E=R),m._stop(!0),E=E||m.transform.centerPoint;let P=b.pointLocation(g?E.sub(g):E);x&&(b.bearing+=x),k&&(b.pitch+=k),y&&(b.zoom+=y),u?this._terrainMovement||!c.drag&&!c.zoom?c.drag&&this._terrainMovement?b.center=b.pointLocation(b.centerPoint.sub(g)):b.setLocationAtPoint(P,E):(this._terrainMovement=!0,this._map._elevationFreeze=!0,b.setLocationAtPoint(P,E)):b.setLocationAtPoint(P,E),m._applyUpdatedTransform(b),this._map._update(),i.noInertia||this._inertia.record(i),this._fireEvents(c,p,!0)}_fireEvents(i,c,p){let m=po(this._eventsInProgress),b=po(i),u={};for(let E in i){let{originalEvent:R}=i[E];this._eventsInProgress[E]||(u[`${E}start`]=R),this._eventsInProgress[E]=i[E]}!m&&b&&this._fireEvent("movestart",b.originalEvent);for(let E in u)this._fireEvent(E,u[E]);b&&this._fireEvent("move",b.originalEvent);for(let E in i){let{originalEvent:R}=i[E];this._fireEvent(E,R)}let g={},y;for(let E in this._eventsInProgress){let{handlerName:R,originalEvent:P}=this._eventsInProgress[E];this._handlersById[R].isActive()||(delete this._eventsInProgress[E],y=c[R]||P,g[`${E}end`]=y)}for(let E in g)this._fireEvent(E,g[E]);let x=po(this._eventsInProgress),k=(m||b)&&!x;if(k&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let E=this._map._getTransformForUpdate();E.recalculateZoom(this._map.terrain),this._map._applyUpdatedTransform(E)}if(p&&k){this._updatingCamera=!0;let E=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),R=P=>P!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new xc("renderFrame",{timeStamp:i})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class wh extends s.E{constructor(i,c){super(),this._renderFrameCallback=()=>{let p=Math.min((_.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(p)),p<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=i,this._bearingSnap=c.bearingSnap,this.on("moveend",()=>{delete this._requestedCameraState})}getCenter(){return new s.N(this.transform.center.lng,this.transform.center.lat)}setCenter(i,c){return this.jumpTo({center:i},c)}panBy(i,c,p){return i=s.P.convert(i).mult(-1),this.panTo(this.transform.center,s.e({offset:i},c),p)}panTo(i,c,p){return this.easeTo(s.e({center:i},c),p)}getZoom(){return this.transform.zoom}setZoom(i,c){return this.jumpTo({zoom:i},c),this}zoomTo(i,c,p){return this.easeTo(s.e({zoom:i},c),p)}zoomIn(i,c){return this.zoomTo(this.getZoom()+1,i,c),this}zoomOut(i,c){return this.zoomTo(this.getZoom()-1,i,c),this}getBearing(){return this.transform.bearing}setBearing(i,c){return this.jumpTo({bearing:i},c),this}getPadding(){return this.transform.padding}setPadding(i,c){return this.jumpTo({padding:i},c),this}rotateTo(i,c,p){return this.easeTo(s.e({bearing:i},c),p)}resetNorth(i,c){return this.rotateTo(0,s.e({duration:1e3},i),c),this}resetNorthPitch(i,c){return this.easeTo(s.e({bearing:0,pitch:0,duration:1e3},i),c),this}snapToNorth(i,c){return Math.abs(this.getBearing()){if(this._zooming&&(m.zoom=s.z.number(b,O,pt)),this._rotating&&(m.bearing=s.z.number(u,x,pt)),this._pitching&&(m.pitch=s.z.number(g,k,pt)),this._padding&&(m.interpolatePadding(y,E,pt),P=m.centerPoint.add(R)),this.terrain&&!i.freezeElevation&&this._updateElevation(pt),dt)m.setLocationAtPoint(dt,gt);else{let Dt=m.zoomScale(m.zoom-b),$t=O>b?Math.min(2,Y):Math.max(.5,Y),jt=Math.pow($t,1-pt),ue=m.unproject(et.add(nt.mult(pt*jt)).mult(Dt));m.setLocationAtPoint(m.renderWorldCopies?ue.wrap():ue,P)}this._applyUpdatedTransform(m),this._fireMoveEvents(c)},pt=>{this.terrain&&i.freezeElevation&&this._finalizeElevation(),this._afterEase(c,pt)},i),this}_prepareEase(i,c,p={}){this._moving=!0,c||p.moving||this.fire(new s.k("movestart",i)),this._zooming&&!p.zooming&&this.fire(new s.k("zoomstart",i)),this._rotating&&!p.rotating&&this.fire(new s.k("rotatestart",i)),this._pitching&&!p.pitching&&this.fire(new s.k("pitchstart",i))}_prepareElevation(i){this._elevationCenter=i,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(i,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(i){this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let c=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(i<1&&c!==this._elevationTarget){let p=this._elevationTarget-this._elevationStart;this._elevationStart+=i*(p-(c-(p*i+this._elevationStart))/(1-i)),this._elevationTarget=c}this.transform.elevation=s.z.number(this._elevationStart,this._elevationTarget,i)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(i){let c=i.getCameraPosition(),p=this.terrain.getElevationForLngLatZoom(c.lngLat,i.zoom);if(c.altitudethis._elevateCameraIfInsideTerrain(m)),this.transformCameraUpdate&&c.push(m=>this.transformCameraUpdate(m)),!c.length)return;let p=i.clone();for(let m of c){let b=p.clone(),{center:u,zoom:g,pitch:y,bearing:x,elevation:k}=m(b);u&&(b.center=u),g!==void 0&&(b.zoom=g),y!==void 0&&(b.pitch=y),x!==void 0&&(b.bearing=x),k!==void 0&&(b.elevation=k),p.apply(b)}this.transform.apply(p)}_fireMoveEvents(i){this.fire(new s.k("move",i)),this._zooming&&this.fire(new s.k("zoom",i)),this._rotating&&this.fire(new s.k("rotate",i)),this._pitching&&this.fire(new s.k("pitch",i))}_afterEase(i,c){if(this._easeId&&c&&this._easeId===c)return;delete this._easeId;let p=this._zooming,m=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.k("zoomend",i)),m&&this.fire(new s.k("rotateend",i)),b&&this.fire(new s.k("pitchend",i)),this.fire(new s.k("moveend",i))}flyTo(i,c){var p;if(!i.essential&&_.prefersReducedMotion){let Ue=s.M(i,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Ue,c)}this.stop(),i=s.e({offset:[0,0],speed:1.2,curve:1.42,easing:s.b9},i);let m=this._getTransformForUpdate(),b=m.zoom,u=m.bearing,g=m.pitch,y=m.padding,x="bearing"in i?this._normalizeBearing(i.bearing,u):u,k="pitch"in i?+i.pitch:g,E="padding"in i?i.padding:m.padding,R=s.P.convert(i.offset),P=m.centerPoint.add(R),H=m.pointLocation(P),{center:N,zoom:O}=m.getConstrained(s.N.convert(i.center||H),(p=i.zoom)!==null&&p!==void 0?p:b);this._normalizeCenter(N,m);let et=m.zoomScale(O-b),nt=m.project(H),Y=m.project(N).sub(nt),dt=i.curve,gt=Math.max(m.width,m.height),ot=gt/et,pt=Y.mag();if("minZoom"in i){let Ue=s.ad(Math.min(i.minZoom,b,O),m.minZoom,m.maxZoom),$e=gt/m.zoomScale(Ue-b);dt=Math.sqrt($e/pt*2)}let Dt=dt*dt;function $t(Ue){let $e=(ot*ot-gt*gt+(Ue?-1:1)*Dt*Dt*pt*pt)/(2*(Ue?ot:gt)*Dt*pt);return Math.log(Math.sqrt($e*$e+1)-$e)}function jt(Ue){return(Math.exp(Ue)-Math.exp(-Ue))/2}function ue(Ue){return(Math.exp(Ue)+Math.exp(-Ue))/2}let ce=$t(!1),Fe=function(Ue){return ue(ce)/ue(ce+dt*Ue)},xe=function(Ue){return gt*((ue(ce)*(jt($e=ce+dt*Ue)/ue($e))-jt(ce))/Dt)/pt;var $e},ke=($t(!0)-ce)/dt;if(Math.abs(pt)<1e-6||!isFinite(ke)){if(Math.abs(gt-ot)<1e-6)return this.easeTo(i,c);let Ue=ot0,Fe=$e=>Math.exp(Ue*dt*$e)}return i.duration="duration"in i?+i.duration:1e3*ke/("screenSpeed"in i?+i.screenSpeed/dt:+i.speed),i.maxDuration&&i.duration>i.maxDuration&&(i.duration=0),this._zooming=!0,this._rotating=u!==x,this._pitching=k!==g,this._padding=!m.isPaddingEqual(E),this._prepareEase(c,!1),this.terrain&&this._prepareElevation(N),this._ease(Ue=>{let $e=Ue*ke,Li=1/Fe($e);m.zoom=Ue===1?O:b+m.scaleZoom(Li),this._rotating&&(m.bearing=s.z.number(u,x,Ue)),this._pitching&&(m.pitch=s.z.number(g,k,Ue)),this._padding&&(m.interpolatePadding(y,E,Ue),P=m.centerPoint.add(R)),this.terrain&&!i.freezeElevation&&this._updateElevation(Ue);let pi=Ue===1?N:m.unproject(nt.add(Y.mult(xe($e))).mult(Li));m.setLocationAtPoint(m.renderWorldCopies?pi.wrap():pi,P),this._applyUpdatedTransform(m),this._fireMoveEvents(c)},()=>{this.terrain&&i.freezeElevation&&this._finalizeElevation(),this._afterEase(c)},i),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(i,c){var p;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let m=this._onEaseEnd;delete this._onEaseEnd,m.call(this,c)}return i||(p=this.handlers)===null||p===void 0||p.stop(!1),this}_ease(i,c,p){p.animate===!1||p.duration===0?(i(1),c()):(this._easeStart=_.now(),this._easeOptions=p,this._onEaseFrame=i,this._onEaseEnd=c,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(i,c){i=s.b3(i,-180,180);let p=Math.abs(i-c);return Math.abs(i-360-c)180?-360:p<-180?360:0}queryTerrainElevation(i){return this.terrain?this.terrain.getElevationForLngLatZoom(s.N.convert(i),this.transform.tileZoom)-this.transform.elevation:null}}let Nl={compact:!0,customAttribution:'MapLibre'};class RA{constructor(i=Nl){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=c=>{!c||c.sourceDataType!=="metadata"&&c.sourceDataType!=="visibility"&&c.dataType!=="style"&&c.type!=="terrain"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=i}getDefaultPosition(){return"bottom-right"}onAdd(i){return this._map=i,this._compact=this.options.compact,this._container=S.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=S.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=S.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){S.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(i,c){let p=this._map._getUIString(`AttributionControl.${c}`);i.title=p,i.setAttribute("aria-label",p)}_updateAttributions(){if(!this._map.style)return;let i=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?i=i.concat(this.options.customAttribution.map(m=>typeof m!="string"?"":m)):typeof this.options.customAttribution=="string"&&i.push(this.options.customAttribution)),this._map.style.stylesheet){let m=this._map.style.stylesheet;this.styleOwner=m.owner,this.styleId=m.id}let c=this._map.style.sourceCaches;for(let m in c){let b=c[m];if(b.used||b.usedForTerrain){let u=b.getSource();u.attribution&&i.indexOf(u.attribution)<0&&i.push(u.attribution)}}i=i.filter(m=>String(m).trim()),i.sort((m,b)=>m.length-b.length),i=i.filter((m,b)=>{for(let u=b+1;u=0)return!1;return!0});let p=i.join(" | ");p!==this._attribHTML&&(this._attribHTML=p,i.length?(this._innerContainer.innerHTML=p,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Qo{constructor(i={}){this._updateCompact=()=>{let c=this._container.children;if(c.length){let p=c[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&p.classList.add("maplibregl-compact"):p.classList.remove("maplibregl-compact")}},this.options=i}getDefaultPosition(){return"bottom-left"}onAdd(i){this._map=i,this._compact=this.options&&this.options.compact,this._container=S.create("div","maplibregl-ctrl");let c=S.create("a","maplibregl-ctrl-logo");return c.target="_blank",c.rel="noopener nofollow",c.href="https://maplibre.org/",c.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),c.setAttribute("rel","noopener nofollow"),this._container.appendChild(c),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){S.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class Ai{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(i){let c=++this._id;return this._queue.push({callback:i,id:c,cancelled:!1}),c}remove(i){let c=this._currentlyRunning,p=c?this._queue.concat(c):this._queue;for(let m of p)if(m.id===i)return void(m.cancelled=!0)}run(i=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let c=this._currentlyRunning=this._queue;this._queue=[];for(let p of c)if(!p.cancelled&&(p.callback(i),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var cu=s.Y([{name:"a_pos3d",type:"Int16",components:3}]);class Ro extends s.E{constructor(i){super(),this.sourceCache=i,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,i.usedForTerrain=!0,i.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(i,c){this.sourceCache.update(i,c),this._renderableTilesKeys=[];let p={};for(let m of i.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:c}))p[m.key]=!0,this._renderableTilesKeys.push(m.key),this._tiles[m.key]||(m.posMatrix=new Float64Array(16),s.aQ(m.posMatrix,0,s.X,0,s.X,0,1),this._tiles[m.key]=new Gi(m,this.tileSize));for(let m in this._tiles)p[m]||delete this._tiles[m]}freeRtt(i){for(let c in this._tiles){let p=this._tiles[c];(!i||p.tileID.equals(i)||p.tileID.isChildOf(i)||i.isChildOf(p.tileID))&&(p.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(i=>this.getTileByID(i))}getTileByID(i){return this._tiles[i]}getTerrainCoords(i){let c={};for(let p of this._renderableTilesKeys){let m=this._tiles[p].tileID;if(m.canonical.equals(i.canonical)){let b=i.clone();b.posMatrix=new Float64Array(16),s.aQ(b.posMatrix,0,s.X,0,s.X,0,1),c[p]=b}else if(m.canonical.isChildOf(i.canonical)){let b=i.clone();b.posMatrix=new Float64Array(16);let u=m.canonical.z-i.canonical.z,g=m.canonical.x-(m.canonical.x>>u<>u<>u;s.aQ(b.posMatrix,0,x,0,x,0,1),s.J(b.posMatrix,b.posMatrix,[-g*x,-y*x,0]),c[p]=b}else if(i.canonical.isChildOf(m.canonical)){let b=i.clone();b.posMatrix=new Float64Array(16);let u=i.canonical.z-m.canonical.z,g=i.canonical.x-(i.canonical.x>>u<>u<>u;s.aQ(b.posMatrix,0,s.X,0,s.X,0,1),s.J(b.posMatrix,b.posMatrix,[g*x,y*x,0]),s.K(b.posMatrix,b.posMatrix,[1/2**u,1/2**u,0]),c[p]=b}}return c}getSourceTile(i,c){let p=this.sourceCache._source,m=i.overscaledZ-this.deltaZoom;if(m>p.maxzoom&&(m=p.maxzoom),m=p.minzoom&&(!b||!b.dem);)b=this.sourceCache.getTileByID(i.scaledTo(m--).key);return b}tilesAfterTime(i=Date.now()){return Object.values(this._tiles).filter(c=>c.timeAdded>=i)}}class Ds{constructor(i,c,p){this.painter=i,this.sourceCache=new Ro(c),this.options=p,this.exaggeration=typeof p.exaggeration=="number"?p.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(i,c,p,m=s.X){var b;if(!(c>=0&&c=0&&pi.canonical.z&&(i.canonical.z>=m?b=i.canonical.z-m:s.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let u=i.canonical.x-(i.canonical.x>>b<>b<>8<<4|b>>8,c[u+3]=0;let p=new s.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(c.buffer)),m=new Nt(i,p,i.gl.RGBA,{premultiply:!1});return m.bind(i.gl.NEAREST,i.gl.CLAMP_TO_EDGE),this._coordsTexture=m,m}pointCoordinate(i){this.painter.maybeDrawDepthAndCoords(!0);let c=new Uint8Array(4),p=this.painter.context,m=p.gl,b=Math.round(i.x*this.painter.pixelRatio/devicePixelRatio),u=Math.round(i.y*this.painter.pixelRatio/devicePixelRatio),g=Math.round(this.painter.height/devicePixelRatio);p.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),m.readPixels(b,g-u-1,1,1,m.RGBA,m.UNSIGNED_BYTE,c),p.bindFramebuffer.set(null);let y=c[0]+(c[2]>>4<<8),x=c[1]+((15&c[2])<<8),k=this.coordsIndex[255-c[3]],E=k&&this.sourceCache.getTileByID(k);if(!E)return null;let R=this._coordsTextureSize,P=(1<i.id!==c),this._recentlyUsed.push(i.id)}stampObject(i){i.stamp=++this._stamp}getOrCreateFreeObject(){for(let c of this._recentlyUsed)if(!this._objects[c].inUse)return this._objects[c];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let i=this._createObject(this._objects.length);return this._objects.push(i),i}freeObject(i){i.inUse=!1}freeAllObjects(){for(let i of this._objects)this.freeObject(i)}isFull(){return!(this._objects.length!i.inUse)===!1}}let Go={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class Sc{constructor(i,c){this.painter=i,this.terrain=c,this.pool=new Fs(i.context,30,c.sourceCache.tileSize*c.qualityFactor)}destruct(){this.pool.destruct()}getTexture(i){return this.pool.getObjectForId(i.rtt[this._stacks.length-1].id).texture}prepareForRender(i,c){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=i._order.filter(p=>!i._layers[p].isHidden(c)),this._coordsDescendingInv={};for(let p in i.sourceCaches){this._coordsDescendingInv[p]={};let m=i.sourceCaches[p].getVisibleCoordinates();for(let b of m){let u=this.terrain.sourceCache.getTerrainCoords(b);for(let g in u)this._coordsDescendingInv[p][g]||(this._coordsDescendingInv[p][g]=[]),this._coordsDescendingInv[p][g].push(u[g])}}this._coordsDescendingInvStr={};for(let p of i._order){let m=i._layers[p],b=m.source;if(Go[m.type]&&!this._coordsDescendingInvStr[b]){this._coordsDescendingInvStr[b]={};for(let u in this._coordsDescendingInv[b])this._coordsDescendingInvStr[b][u]=this._coordsDescendingInv[b][u].map(g=>g.key).sort().join()}}for(let p of this._renderableTiles)for(let m in this._coordsDescendingInvStr){let b=this._coordsDescendingInvStr[m][p.tileID.key];b&&b!==p.rttCoords[m]&&(p.rtt=[])}}renderLayer(i){if(i.isHidden(this.painter.transform.zoom))return!1;let c=i.type,p=this.painter,m=this._renderableLayerIds[this._renderableLayerIds.length-1]===i.id;if(Go[c]&&(this._prevType&&Go[this._prevType]||this._stacks.push([]),this._prevType=c,this._stacks[this._stacks.length-1].push(i.id),!m))return!0;if(Go[this._prevType]||Go[c]&&m){this._prevType=c;let b=this._stacks.length-1,u=this._stacks[b]||[];for(let g of this._renderableTiles){if(this.pool.isFull()&&(Hs(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(g),g.rtt[b]){let x=this.pool.getObjectForId(g.rtt[b].id);if(x.stamp===g.rtt[b].stamp){this.pool.useObject(x);continue}}let y=this.pool.getOrCreateFreeObject();this.pool.useObject(y),this.pool.stampObject(y),g.rtt[b]={id:y.id,stamp:y.stamp},p.context.bindFramebuffer.set(y.fbo.framebuffer),p.context.clear({color:s.aN.transparent,stencil:0}),p.currentStencilSource=void 0;for(let x=0;x{v.touchstart=v.dragStart,v.touchmoveWindow=v.dragMove,v.touchend=v.dragEnd},Vl={showCompass:!0,showZoom:!0,visualizePitch:!1};class Fc{constructor(i,c,p=!1){this.mousedown=u=>{this.startMouse(s.e({},u,{ctrlKey:!0,preventDefault:()=>u.preventDefault()}),S.mousePos(this.element,u)),S.addEventListener(window,"mousemove",this.mousemove),S.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=u=>{this.moveMouse(u,S.mousePos(this.element,u))},this.mouseup=u=>{this.mouseRotate.dragEnd(u),this.mousePitch&&this.mousePitch.dragEnd(u),this.offTemp()},this.touchstart=u=>{u.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=S.touchPos(this.element,u.targetTouches)[0],this.startTouch(u,this._startPos),S.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),S.addEventListener(window,"touchend",this.touchend))},this.touchmove=u=>{u.targetTouches.length!==1?this.reset():(this._lastPos=S.touchPos(this.element,u.targetTouches)[0],this.moveTouch(u,this._lastPos))},this.touchend=u=>{u.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let m=i.dragRotate._mouseRotate.getClickTolerance(),b=i.dragRotate._mousePitch.getClickTolerance();this.element=c,this.mouseRotate=Al({clickTolerance:m,enable:!0}),this.touchRotate=(({enable:u,clickTolerance:g,bearingDegreesPerPixelMoved:y=.8})=>{let x=new al;return new Qr({clickTolerance:g,move:(k,E)=>({bearingDelta:(E.x-k.x)*y}),moveStateManager:x,enable:u,assignEvents:uu})})({clickTolerance:m,enable:!0}),this.map=i,p&&(this.mousePitch=Uo({clickTolerance:b,enable:!0}),this.touchPitch=(({enable:u,clickTolerance:g,pitchDegreesPerPixelMoved:y=-.5})=>{let x=new al;return new Qr({clickTolerance:g,move:(k,E)=>({pitchDelta:(E.y-k.y)*y}),moveStateManager:x,enable:u,assignEvents:uu})})({clickTolerance:b,enable:!0})),S.addEventListener(c,"mousedown",this.mousedown),S.addEventListener(c,"touchstart",this.touchstart,{passive:!1}),S.addEventListener(c,"touchcancel",this.reset)}startMouse(i,c){this.mouseRotate.dragStart(i,c),this.mousePitch&&this.mousePitch.dragStart(i,c),S.disableDrag()}startTouch(i,c){this.touchRotate.dragStart(i,c),this.touchPitch&&this.touchPitch.dragStart(i,c),S.disableDrag()}moveMouse(i,c){let p=this.map,{bearingDelta:m}=this.mouseRotate.dragMove(i,c)||{};if(m&&p.setBearing(p.getBearing()+m),this.mousePitch){let{pitchDelta:b}=this.mousePitch.dragMove(i,c)||{};b&&p.setPitch(p.getPitch()+b)}}moveTouch(i,c){let p=this.map,{bearingDelta:m}=this.touchRotate.dragMove(i,c)||{};if(m&&p.setBearing(p.getBearing()+m),this.touchPitch){let{pitchDelta:b}=this.touchPitch.dragMove(i,c)||{};b&&p.setPitch(p.getPitch()+b)}}off(){let i=this.element;S.removeEventListener(i,"mousedown",this.mousedown),S.removeEventListener(i,"touchstart",this.touchstart,{passive:!1}),S.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),S.removeEventListener(window,"touchend",this.touchend),S.removeEventListener(i,"touchcancel",this.reset),this.offTemp()}offTemp(){S.enableDrag(),S.removeEventListener(window,"mousemove",this.mousemove),S.removeEventListener(window,"mouseup",this.mouseup),S.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),S.removeEventListener(window,"touchend",this.touchend)}}let ia;function kc(v,i,c){let p=new s.N(v.lng,v.lat);if(v=new s.N(v.lng,v.lat),i){let m=new s.N(v.lng-360,v.lat),b=new s.N(v.lng+360,v.lat),u=c.locationPoint(v).distSqr(i);c.locationPoint(m).distSqr(i)180;){let m=c.locationPoint(v);if(m.x>=0&&m.y>=0&&m.x<=c.width&&m.y<=c.height)break;v.lng>c.center.lng?v.lng-=360:v.lng+=360}return v.lng!==p.lng&&c.locationPoint(v).y>c.height/2-c.getHorizon()?v:p}let Lc={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%)"};function fo(v,i,c){let p=v.classList;for(let m in Lc)p.remove(`maplibregl-${c}-anchor-${m}`);p.add(`maplibregl-${c}-anchor-${i}`)}class vr extends s.E{constructor(i){if(super(),this._onKeyPress=c=>{let p=c.code,m=c.charCode||c.keyCode;p!=="Space"&&p!=="Enter"&&m!==32&&m!==13||this.togglePopup()},this._onMapClick=c=>{let p=c.originalEvent.target,m=this._element;this._popup&&(p===m||m.contains(p))&&this.togglePopup()},this._update=c=>{var p;if(!this._map)return;let m=this._map.loaded()&&!this._map.isMoving();(c?.type==="terrain"||c?.type==="render"&&!m)&&this._map.once("render",this._update),this._lngLat=this._map.transform.renderWorldCopies?kc(this._lngLat,this._flatPos,this._map.transform):(p=this._lngLat)===null||p===void 0?void 0:p.wrap(),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationPoint(this._lngLat)._add(this._offset));let b="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?b=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(b=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let u="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?u="rotateX(0deg)":this._pitchAlignment==="map"&&(u=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||c&&c.type!=="moveend"||(this._pos=this._pos.round()),S.setTransform(this._element,`${Lc[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${u} ${b}`),_.frameAsync(new AbortController).then(()=>{this._updateOpacity(c&&c.type==="moveend")}).catch(()=>{})},this._onMove=c=>{if(!this._isDragging){let p=this._clickTolerance||this._map._clickTolerance;this._isDragging=c.point.dist(this._pointerdownPos)>=p}this._isDragging&&(this._pos=c.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new s.k("dragstart"))),this.fire(new s.k("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new s.k("dragend")),this._state="inactive"},this._addDragHandler=c=>{this._element.contains(c.originalEvent.target)&&(c.preventDefault(),this._positionDelta=c.point.sub(this._pos).add(this._offset),this._pointerdownPos=c.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=i&&i.anchor||"center",this._color=i&&i.color||"#3FB1CE",this._scale=i&&i.scale||1,this._draggable=i&&i.draggable||!1,this._clickTolerance=i&&i.clickTolerance||0,this._subpixelPositioning=i&&i.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=i&&i.rotation||0,this._rotationAlignment=i&&i.rotationAlignment||"auto",this._pitchAlignment=i&&i.pitchAlignment&&i.pitchAlignment!=="auto"?i.pitchAlignment:this._rotationAlignment,this.setOpacity(),this.setOpacity(i?.opacity,i?.opacityWhenCovered),i&&i.element)this._element=i.element,this._offset=s.P.convert(i&&i.offset||[0,0]);else{this._defaultMarker=!0,this._element=S.create("div");let c=S.createNS("http://www.w3.org/2000/svg","svg"),p=41,m=27;c.setAttributeNS(null,"display","block"),c.setAttributeNS(null,"height",`${p}px`),c.setAttributeNS(null,"width",`${m}px`),c.setAttributeNS(null,"viewBox",`0 0 ${m} ${p}`);let b=S.createNS("http://www.w3.org/2000/svg","g");b.setAttributeNS(null,"stroke","none"),b.setAttributeNS(null,"stroke-width","1"),b.setAttributeNS(null,"fill","none"),b.setAttributeNS(null,"fill-rule","evenodd");let u=S.createNS("http://www.w3.org/2000/svg","g");u.setAttributeNS(null,"fill-rule","nonzero");let g=S.createNS("http://www.w3.org/2000/svg","g");g.setAttributeNS(null,"transform","translate(3.0, 29.0)"),g.setAttributeNS(null,"fill","#000000");let y=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let et of y){let nt=S.createNS("http://www.w3.org/2000/svg","ellipse");nt.setAttributeNS(null,"opacity","0.04"),nt.setAttributeNS(null,"cx","10.5"),nt.setAttributeNS(null,"cy","5.80029008"),nt.setAttributeNS(null,"rx",et.rx),nt.setAttributeNS(null,"ry",et.ry),g.appendChild(nt)}let x=S.createNS("http://www.w3.org/2000/svg","g");x.setAttributeNS(null,"fill",this._color);let k=S.createNS("http://www.w3.org/2000/svg","path");k.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),x.appendChild(k);let E=S.createNS("http://www.w3.org/2000/svg","g");E.setAttributeNS(null,"opacity","0.25"),E.setAttributeNS(null,"fill","#000000");let R=S.createNS("http://www.w3.org/2000/svg","path");R.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),E.appendChild(R);let P=S.createNS("http://www.w3.org/2000/svg","g");P.setAttributeNS(null,"transform","translate(6.0, 7.0)"),P.setAttributeNS(null,"fill","#FFFFFF");let H=S.createNS("http://www.w3.org/2000/svg","g");H.setAttributeNS(null,"transform","translate(8.0, 8.0)");let N=S.createNS("http://www.w3.org/2000/svg","circle");N.setAttributeNS(null,"fill","#000000"),N.setAttributeNS(null,"opacity","0.25"),N.setAttributeNS(null,"cx","5.5"),N.setAttributeNS(null,"cy","5.5"),N.setAttributeNS(null,"r","5.4999962");let O=S.createNS("http://www.w3.org/2000/svg","circle");O.setAttributeNS(null,"fill","#FFFFFF"),O.setAttributeNS(null,"cx","5.5"),O.setAttributeNS(null,"cy","5.5"),O.setAttributeNS(null,"r","5.4999962"),H.appendChild(N),H.appendChild(O),u.appendChild(g),u.appendChild(x),u.appendChild(E),u.appendChild(P),u.appendChild(H),c.appendChild(u),c.setAttributeNS(null,"height",p*this._scale+"px"),c.setAttributeNS(null,"width",m*this._scale+"px"),this._element.appendChild(c),this._offset=s.P.convert(i&&i.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",c=>{c.preventDefault()}),this._element.addEventListener("mousedown",c=>{c.preventDefault()}),fo(this._element,this._anchor,"marker"),i&&i.className)for(let c of i.className.split(" "))this._element.classList.add(c);this._popup=null}addTo(i){return this.remove(),this._map=i,this._element.setAttribute("aria-label",i._getUIString("Marker.Title")),i.getCanvasContainer().appendChild(this._element),i.on("move",this._update),i.on("moveend",this._update),i.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),S.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(i){return this._lngLat=s.N.convert(i),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(i){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),i){if(!("offset"in i.options)){let m=Math.abs(13.5)/Math.SQRT2;i.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[m,-1*(38.1-13.5+m)],"bottom-right":[-m,-1*(38.1-13.5+m)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=i,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(i){return this._subpixelPositioning=i,this}getPopup(){return this._popup}togglePopup(){let i=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:i?(i.isOpen()?i.remove():(i.setLngLat(this._lngLat),i.addTo(this._map)),this):this}_updateOpacity(i=!1){var c,p;if(!(!((c=this._map)===null||c===void 0)&&c.terrain))return void(this._element.style.opacity!==this._opacity&&(this._element.style.opacity=this._opacity));if(i)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}let m=this._map,b=m.terrain.depthAtPoint(this._pos),u=m.terrain.getElevationForLngLatZoom(this._lngLat,m.transform.tileZoom);if(m.transform.lngLatToCameraDepth(this._lngLat,u)-b<.006)return void(this._element.style.opacity=this._opacity);let g=-this._offset.y/m.transform._pixelPerMeter,y=Math.sin(m.getPitch()*Math.PI/180)*g,x=m.terrain.depthAtPoint(new s.P(this._pos.x,this._pos.y-this._offset.y)),k=m.transform.lngLatToCameraDepth(this._lngLat,u+y)-x>.006;((p=this._popup)===null||p===void 0?void 0:p.isOpen())&&k&&this._popup.remove(),this._element.style.opacity=k?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(i){return this._offset=s.P.convert(i),this._update(),this}addClassName(i){this._element.classList.add(i)}removeClassName(i){this._element.classList.remove(i)}toggleClassName(i){return this._element.classList.toggle(i)}setDraggable(i){return this._draggable=!!i,this._map&&(i?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(i){return this._rotation=i||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(i){return this._rotationAlignment=i||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(i){return this._pitchAlignment=i&&i!=="auto"?i:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(i,c){return i===void 0&&c===void 0&&(this._opacity="1",this._opacityWhenCovered="0.2"),i!==void 0&&(this._opacity=i),c!==void 0&&(this._opacityWhenCovered=c),this._map&&this._updateOpacity(!0),this}}let ka={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},La=0,Xa=!1,hu={maxWidth:100,unit:"metric"};function Dl(v,i,c){let p=c&&c.maxWidth||100,m=v._container.clientHeight/2,b=v.unproject([0,m]),u=v.unproject([p,m]),g=b.distanceTo(u);if(c&&c.unit==="imperial"){let y=3.2808*g;y>5280?hl(i,p,y/5280,v._getUIString("ScaleControl.Miles")):hl(i,p,y,v._getUIString("ScaleControl.Feet"))}else c&&c.unit==="nautical"?hl(i,p,g/1852,v._getUIString("ScaleControl.NauticalMiles")):g>=1e3?hl(i,p,g/1e3,v._getUIString("ScaleControl.Kilometers")):hl(i,p,g,v._getUIString("ScaleControl.Meters"))}function hl(v,i,c,p){let m=function(b){let u=Math.pow(10,`${Math.floor(b)}`.length-1),g=b/u;return g=g>=10?10:g>=5?5:g>=3?3:g>=2?2:g>=1?1:function(y){let x=Math.pow(10,Math.ceil(-Math.log(y)/Math.LN10));return Math.round(y*x)/x}(g),u*g}(c);v.style.width=i*(m/c)+"px",v.innerHTML=`${m} ${p}`}let Zo={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1},Kl=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function yi(v){if(v){if(typeof v=="number"){let i=Math.round(Math.abs(v)/Math.SQRT2);return{center:new s.P(0,0),top:new s.P(0,v),"top-left":new s.P(i,i),"top-right":new s.P(-i,i),bottom:new s.P(0,-v),"bottom-left":new s.P(i,-i),"bottom-right":new s.P(-i,-i),left:new s.P(v,0),right:new s.P(-v,0)}}if(v instanceof s.P||Array.isArray(v)){let i=s.P.convert(v);return{center:i,top:i,"top-left":i,"top-right":i,bottom:i,"bottom-left":i,"bottom-right":i,left:i,right:i}}return{center:s.P.convert(v.center||[0,0]),top:s.P.convert(v.top||[0,0]),"top-left":s.P.convert(v["top-left"]||[0,0]),"top-right":s.P.convert(v["top-right"]||[0,0]),bottom:s.P.convert(v.bottom||[0,0]),"bottom-left":s.P.convert(v["bottom-left"]||[0,0]),"bottom-right":s.P.convert(v["bottom-right"]||[0,0]),left:s.P.convert(v.left||[0,0]),right:s.P.convert(v.right||[0,0])}}return yi(new s.P(0,0))}let Zi=d;A.AJAXError=s.bg,A.Evented=s.E,A.LngLat=s.N,A.MercatorCoordinate=s.Z,A.Point=s.P,A.addProtocol=s.bh,A.config=s.a,A.removeProtocol=s.bi,A.AttributionControl=RA,A.BoxZoomHandler=co,A.CanvasSource=ri,A.CooperativeGesturesHandler=go,A.DoubleClickZoomHandler=Bc,A.DragPanHandler=Vs,A.DragRotateHandler=ho,A.EdgeInsets=Ns,A.FullscreenControl=class extends s.E{constructor(v={}){super(),this._onFullscreenChange=()=>{var i;let c=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;!((i=c?.shadowRoot)===null||i===void 0)&&i.fullscreenElement;)c=c.shadowRoot.fullscreenElement;c===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,v&&v.container&&(v.container instanceof HTMLElement?this._container=v.container:s.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(v){return this._map=v,this._container||(this._container=this._map.getContainer()),this._controlContainer=S.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){S.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let v=this._fullscreenButton=S.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);S.create("span","maplibregl-ctrl-icon",v).setAttribute("aria-hidden","true"),v.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let v=this._getTitle();this._fullscreenButton.setAttribute("aria-label",v),this._fullscreenButton.title=v}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new s.k("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new s.k("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},A.GeoJSONSource=Qe,A.GeolocateControl=class extends s.E{constructor(v){super(),this._onSuccess=i=>{if(this._map){if(this._isOutOfMapMaxBounds(i))return this._setErrorState(),this.fire(new s.k("outofmaxbounds",i)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=i,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(i),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(i),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new s.k("geolocate",i)),this._finish()}},this._updateCamera=i=>{let c=new s.N(i.coords.longitude,i.coords.latitude),p=i.coords.accuracy,m=this._map.getBearing(),b=s.e({bearing:m},this.options.fitBoundsOptions),u=Kt.fromLngLat(c,p);this._map.fitBounds(u,b,{geolocateSource:!0})},this._updateMarker=i=>{if(i){let c=new s.N(i.coords.longitude,i.coords.latitude);this._accuracyCircleMarker.setLngLat(c).addTo(this._map),this._userLocationDotMarker.setLngLat(c).addTo(this._map),this._accuracy=i.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=i=>{if(this._map){if(this.options.trackUserLocation)if(i.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let c=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=c,this._geolocateButton.setAttribute("aria-label",c),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(i.code===3&&Xa)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new s.k("error",i)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",i=>i.preventDefault()),this._geolocateButton=S.create("button","maplibregl-ctrl-geolocate",this._container),S.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=i=>{if(this._map){if(i===!1){s.w("Geolocation support is not available so the GeolocateControl will be disabled.");let c=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=c,this._geolocateButton.setAttribute("aria-label",c)}else{let c=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=c,this._geolocateButton.setAttribute("aria-label",c)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=S.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new vr({element:this._dotElement}),this._circleElement=S.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new vr({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",c=>{c.geolocateSource||this._watchState!=="ACTIVE_LOCK"||c.originalEvent&&c.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new s.k("trackuserlocationend")),this.fire(new s.k("userlocationlostfocus")))})}},this.options=s.e({},ka,v)}onAdd(v){return this._map=v,this._container=S.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return s._(this,arguments,void 0,function*(i=!1){if(ia!==void 0&&!i)return ia;if(window.navigator.permissions===void 0)return ia=!!window.navigator.geolocation,ia;try{ia=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch{ia=!!window.navigator.geolocation}return ia})}().then(i=>this._finishSetupUI(i)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),S.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,La=0,Xa=!1}_isOutOfMapMaxBounds(v){let i=this._map.getMaxBounds(),c=v.coords;return i&&(c.longitudei.getEast()||c.latitudei.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let v=this._map.getBounds(),i=v.getSouthEast(),c=v.getNorthEast(),p=i.distanceTo(c),m=Math.ceil(this._accuracy/(p/this._map._container.clientHeight)*2);this._circleElement.style.width=`${m}px`,this._circleElement.style.height=`${m}px`}trigger(){if(!this._setup)return s.w("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.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":La--,Xa=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new s.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new s.k("trackuserlocationstart")),this.fire(new s.k("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let v;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),La++,La>1?(v={maximumAge:6e5,timeout:0},Xa=!0):(v=this.options.positionOptions,Xa=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,v)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},A.Hash=ta,A.ImageSource=ze,A.KeyboardHandler=ll,A.LngLatBounds=Kt,A.LogoControl=Qo,A.Map=class extends wh{constructor(v){s.be.mark(s.bf.create);let i=Object.assign(Object.assign({},Bh),v);if(i.minZoom!=null&&i.maxZoom!=null&&i.minZoom>i.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(i.minPitch!=null&&i.maxPitch!=null&&i.minPitch>i.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(i.minPitch!=null&&i.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(i.maxPitch!=null&&i.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new ws(i.minZoom,i.maxZoom,i.minPitch,i.maxPitch,i.renderWorldCopies),{bearingSnap:i.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new Ai,this._controls=[],this._mapId=s.a4(),this._contextLost=c=>{c.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new s.k("webglcontextlost",{originalEvent:c}))},this._contextRestored=c=>{this._setupPainter(),this.resize(),this._update(),this.fire(new s.k("webglcontextrestored",{originalEvent:c}))},this._onMapScroll=c=>{if(c.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=i.interactive,this._maxTileCacheSize=i.maxTileCacheSize,this._maxTileCacheZoomLevels=i.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=i.failIfMajorPerformanceCaveat===!0,this._preserveDrawingBuffer=i.preserveDrawingBuffer===!0,this._antialias=i.antialias===!0,this._trackResize=i.trackResize===!0,this._bearingSnap=i.bearingSnap,this._refreshExpiredTiles=i.refreshExpiredTiles===!0,this._fadeDuration=i.fadeDuration,this._crossSourceCollisions=i.crossSourceCollisions===!0,this._collectResourceTiming=i.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},qe),i.locale),this._clickTolerance=i.clickTolerance,this._overridePixelRatio=i.pixelRatio,this._maxCanvasSize=i.maxCanvasSize,this.transformCameraUpdate=i.transformCameraUpdate,this.cancelPendingTileRequestsWhileZooming=i.cancelPendingTileRequestsWhileZooming===!0,this._imageQueueHandle=z.addThrottleControl(()=>this.isMoving()),this._requestManager=new it(i.transformRequest),typeof i.container=="string"){if(this._container=document.getElementById(i.container),!this._container)throw new Error(`Container '${i.container}' not found.`)}else{if(!(i.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=i.container}if(i.maxBounds&&this.setMaxBounds(i.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)).on("moveend",()=>this._update(!1)).on("zoom",()=>this._update(!0)).on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}).once("idle",()=>{this._idleTriggered=!0}),typeof window<"u"){addEventListener("online",this._onWindowOnline,!1);let c=!1,p=$o(m=>{this._trackResize&&!this._removed&&this.resize(m)._update()},50);this._resizeObserver=new ResizeObserver(m=>{c?p(m):c=!0}),this._resizeObserver.observe(this._container)}this.handlers=new vh(this,i),this._hash=i.hash&&new ta(typeof i.hash=="string"&&i.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:i.center,zoom:i.zoom,bearing:i.bearing,pitch:i.pitch}),i.bounds&&(this.resize(),this.fitBounds(i.bounds,s.e({},i.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=i.localIdeographFontFamily,this._validateStyle=i.validateStyle,i.style&&this.setStyle(i.style,{localIdeographFontFamily:i.localIdeographFontFamily}),i.attributionControl&&this.addControl(new RA(typeof i.attributionControl=="boolean"?void 0:i.attributionControl)),i.maplibreLogo&&this.addControl(new Qo,i.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",c=>{this._update(c.dataType==="style"),this.fire(new s.k(`${c.dataType}data`,c))}),this.on("dataloading",c=>{this.fire(new s.k(`${c.dataType}dataloading`,c))}),this.on("dataabort",c=>{this.fire(new s.k("sourcedataabort",c))})}_getMapId(){return this._mapId}addControl(v,i){if(i===void 0&&(i=v.getDefaultPosition?v.getDefaultPosition():"top-right"),!v||!v.onAdd)return this.fire(new s.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let c=v.onAdd(this);this._controls.push(v);let p=this._controlPositions[i];return i.indexOf("bottom")!==-1?p.insertBefore(c,p.firstChild):p.appendChild(c),this}removeControl(v){if(!v||!v.onRemove)return this.fire(new s.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let i=this._controls.indexOf(v);return i>-1&&this._controls.splice(i,1),v.onRemove(this),this}hasControl(v){return this._controls.indexOf(v)>-1}calculateCameraOptionsFromTo(v,i,c,p){return p==null&&this.terrain&&(p=this.terrain.getElevationForLngLatZoom(c,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(v,i,c,p)}resize(v){var i;let c=this._containerDimensions(),p=c[0],m=c[1],b=this._getClampedPixelRatio(p,m);if(this._resizeCanvas(p,m,b),this.painter.resize(p,m,b),this.painter.overLimit()){let g=this.painter.context.gl;this._maxCanvasSize=[g.drawingBufferWidth,g.drawingBufferHeight];let y=this._getClampedPixelRatio(p,m);this._resizeCanvas(p,m,y),this.painter.resize(p,m,y)}this.transform.resize(p,m),(i=this._requestedCameraState)===null||i===void 0||i.resize(p,m);let u=!this._moving;return u&&(this.stop(),this.fire(new s.k("movestart",v)).fire(new s.k("move",v))),this.fire(new s.k("resize",v)),u&&this.fire(new s.k("moveend",v)),this}_getClampedPixelRatio(v,i){let{0:c,1:p}=this._maxCanvasSize,m=this.getPixelRatio(),b=v*m,u=i*m;return Math.min(b>c?c/b:1,u>p?p/u:1)*m}getPixelRatio(){var v;return(v=this._overridePixelRatio)!==null&&v!==void 0?v:devicePixelRatio}setPixelRatio(v){this._overridePixelRatio=v,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(v){return this.transform.setMaxBounds(Kt.convert(v)),this._update()}setMinZoom(v){if((v=v??-2)>=-2&&v<=this.transform.maxZoom)return this.transform.minZoom=v,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=v,this._update(),this.getZoom()>v&&this.setZoom(v),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(v){if((v=v??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(v>=0&&v<=this.transform.maxPitch)return this.transform.minPitch=v,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(v>=this.transform.minPitch)return this.transform.maxPitch=v,this._update(),this.getPitch()>v&&this.setPitch(v),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(v){return this.transform.renderWorldCopies=v,this._update()}project(v){return this.transform.locationPoint(s.N.convert(v),this.style&&this.terrain)}unproject(v){return this.transform.pointLocation(s.P.convert(v),this.terrain)}isMoving(){var v;return this._moving||((v=this.handlers)===null||v===void 0?void 0:v.isMoving())}isZooming(){var v;return this._zooming||((v=this.handlers)===null||v===void 0?void 0:v.isZooming())}isRotating(){var v;return this._rotating||((v=this.handlers)===null||v===void 0?void 0:v.isRotating())}_createDelegatedListener(v,i,c){if(v==="mouseenter"||v==="mouseover"){let p=!1;return{layer:i,listener:c,delegates:{mousemove:b=>{let u=this.getLayer(i)?this.queryRenderedFeatures(b.point,{layers:[i]}):[];u.length?p||(p=!0,c.call(this,new Vr(v,this,b.originalEvent,{features:u}))):p=!1},mouseout:()=>{p=!1}}}}if(v==="mouseleave"||v==="mouseout"){let p=!1;return{layer:i,listener:c,delegates:{mousemove:u=>{(this.getLayer(i)?this.queryRenderedFeatures(u.point,{layers:[i]}):[]).length?p=!0:p&&(p=!1,c.call(this,new Vr(v,this,u.originalEvent)))},mouseout:u=>{p&&(p=!1,c.call(this,new Vr(v,this,u.originalEvent)))}}}}{let p=m=>{let b=this.getLayer(i)?this.queryRenderedFeatures(m.point,{layers:[i]}):[];b.length&&(m.features=b,c.call(this,m),delete m.features)};return{layer:i,listener:c,delegates:{[v]:p}}}}on(v,i,c){if(c===void 0)return super.on(v,i);let p=this._createDelegatedListener(v,i,c);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[v]=this._delegatedListeners[v]||[],this._delegatedListeners[v].push(p);for(let m in p.delegates)this.on(m,p.delegates[m]);return this}once(v,i,c){if(c===void 0)return super.once(v,i);let p=this._createDelegatedListener(v,i,c);for(let m in p.delegates)this.once(m,p.delegates[m]);return this}off(v,i,c){return c===void 0?super.off(v,i):(this._delegatedListeners&&this._delegatedListeners[v]&&(p=>{let m=this._delegatedListeners[v];for(let b=0;bthis._updateStyle(v,i));let c=this.style&&i.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!v)),v?(this.style=new ht(this,i||{}),this.style.setEventedParent(this,{style:this.style}),typeof v=="string"?this.style.loadURL(v,i,c):this.style.loadJSON(v,i,c),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new ht(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(v,i){if(typeof v=="string"){let c=this._requestManager.transformRequest(v,"Style");s.h(c,new AbortController).then(p=>{this._updateDiff(p.data,i)}).catch(p=>{p&&this.fire(new s.j(p))})}else typeof v=="object"&&this._updateDiff(v,i)}_updateDiff(v,i){try{this.style.setState(v,i)&&this._update(!0)}catch(c){s.w(`Unable to perform style diff: ${c.message||c.error||c}. Rebuilding the style from scratch.`),this._updateStyle(v,i)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():s.w("There is no style added to the map.")}addSource(v,i){return this._lazyInitEmptyStyle(),this.style.addSource(v,i),this._update(!0)}isSourceLoaded(v){let i=this.style&&this.style.sourceCaches[v];if(i!==void 0)return i.loaded();this.fire(new s.j(new Error(`There is no source with ID '${v}'`)))}setTerrain(v){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),v){let i=this.style.sourceCaches[v.source];if(!i)throw new Error(`cannot load terrain, because there exists no source with ID: ${v.source}`);this.terrain===null&&i.reload();for(let c in this.style._layers){let p=this.style._layers[c];p.type==="hillshade"&&p.source===v.source&&s.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Ds(this.painter,i,v),this.painter.renderToTexture=new Sc(this.painter,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=c=>{c.dataType==="style"?this.terrain.sourceCache.freeRtt():c.dataType==="source"&&c.tile&&(c.sourceId!==v.source||this._elevationFreeze||(this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(c.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.minElevationForCurrentTile=0,this.transform.elevation=0;return this.fire(new s.k("terrain",{terrain:v})),this}getTerrain(){var v,i;return(i=(v=this.terrain)===null||v===void 0?void 0:v.options)!==null&&i!==void 0?i:null}areTilesLoaded(){let v=this.style&&this.style.sourceCaches;for(let i in v){let c=v[i]._tiles;for(let p in c){let m=c[p];if(m.state!=="loaded"&&m.state!=="errored")return!1}}return!0}removeSource(v){return this.style.removeSource(v),this._update(!0)}getSource(v){return this.style.getSource(v)}addImage(v,i,c={}){let{pixelRatio:p=1,sdf:m=!1,stretchX:b,stretchY:u,content:g,textFitWidth:y,textFitHeight:x}=c;if(this._lazyInitEmptyStyle(),!(i instanceof HTMLImageElement||s.b(i))){if(i.width===void 0||i.height===void 0)return this.fire(new s.j(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`")));{let{width:k,height:E,data:R}=i,P=i;return this.style.addImage(v,{data:new s.R({width:k,height:E},new Uint8Array(R)),pixelRatio:p,stretchX:b,stretchY:u,content:g,textFitWidth:y,textFitHeight:x,sdf:m,version:0,userImage:P}),P.onAdd&&P.onAdd(this,v),this}}{let{width:k,height:E,data:R}=_.getImageData(i);this.style.addImage(v,{data:new s.R({width:k,height:E},R),pixelRatio:p,stretchX:b,stretchY:u,content:g,textFitWidth:y,textFitHeight:x,sdf:m,version:0})}}updateImage(v,i){let c=this.style.getImage(v);if(!c)return this.fire(new s.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let p=i instanceof HTMLImageElement||s.b(i)?_.getImageData(i):i,{width:m,height:b,data:u}=p;if(m===void 0||b===void 0)return this.fire(new s.j(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`")));if(m!==c.data.width||b!==c.data.height)return this.fire(new s.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));let g=!(i instanceof HTMLImageElement||s.b(i));return c.data.replace(u,g),this.style.updateImage(v,c),this}getImage(v){return this.style.getImage(v)}hasImage(v){return v?!!this.style.getImage(v):(this.fire(new s.j(new Error("Missing required image id"))),!1)}removeImage(v){this.style.removeImage(v)}loadImage(v){return z.getImage(this._requestManager.transformRequest(v,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(v,i){return this._lazyInitEmptyStyle(),this.style.addLayer(v,i),this._update(!0)}moveLayer(v,i){return this.style.moveLayer(v,i),this._update(!0)}removeLayer(v){return this.style.removeLayer(v),this._update(!0)}getLayer(v){return this.style.getLayer(v)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(v,i,c){return this.style.setLayerZoomRange(v,i,c),this._update(!0)}setFilter(v,i,c={}){return this.style.setFilter(v,i,c),this._update(!0)}getFilter(v){return this.style.getFilter(v)}setPaintProperty(v,i,c,p={}){return this.style.setPaintProperty(v,i,c,p),this._update(!0)}getPaintProperty(v,i){return this.style.getPaintProperty(v,i)}setLayoutProperty(v,i,c,p={}){return this.style.setLayoutProperty(v,i,c,p),this._update(!0)}getLayoutProperty(v,i){return this.style.getLayoutProperty(v,i)}setGlyphs(v,i={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(v,i),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(v,i,c={}){return this._lazyInitEmptyStyle(),this.style.addSprite(v,i,c,p=>{p||this._update(!0)}),this}removeSprite(v){return this._lazyInitEmptyStyle(),this.style.removeSprite(v),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(v,i={}){return this._lazyInitEmptyStyle(),this.style.setSprite(v,i,c=>{c||this._update(!0)}),this}setLight(v,i={}){return this._lazyInitEmptyStyle(),this.style.setLight(v,i),this._update(!0)}getLight(){return this.style.getLight()}setSky(v){return this._lazyInitEmptyStyle(),this.style.setSky(v),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(v,i){return this.style.setFeatureState(v,i),this._update()}removeFeatureState(v,i){return this.style.removeFeatureState(v,i),this._update()}getFeatureState(v){return this.style.getFeatureState(v)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let v=0,i=0;return this._container&&(v=this._container.clientWidth||400,i=this._container.clientHeight||300),[v,i]}_setupContainer(){let v=this._container;v.classList.add("maplibregl-map");let i=this._canvasContainer=S.create("div","maplibregl-canvas-container",v);this._interactive&&i.classList.add("maplibregl-interactive"),this._canvas=S.create("canvas","maplibregl-canvas",i),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let c=this._containerDimensions(),p=this._getClampedPixelRatio(c[0],c[1]);this._resizeCanvas(c[0],c[1],p);let m=this._controlContainer=S.create("div","maplibregl-control-container",v),b=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(u=>{b[u]=S.create("div",`maplibregl-ctrl-${u} `,m)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(v,i,c){this._canvas.width=Math.floor(c*v),this._canvas.height=Math.floor(c*i),this._canvas.style.width=`${v}px`,this._canvas.style.height=`${i}px`}_setupPainter(){let v={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},i=null;this._canvas.addEventListener("webglcontextcreationerror",p=>{i={requestedAttributes:v},p&&(i.statusMessage=p.statusMessage,i.type=p.type)},{once:!0});let c=this._canvas.getContext("webgl2",v)||this._canvas.getContext("webgl",v);if(!c){let p="Failed to initialize WebGL";throw i?(i.message=p,new Error(JSON.stringify(i))):new Error(p)}this.painter=new Ms(c,this.transform),U.testSupport(c)}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(v){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||v,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(v){return this._update(),this._renderTaskQueue.add(v)}_cancelRenderFrame(v){this._renderTaskQueue.remove(v)}_render(v){let i=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(v),this._removed)return;let c=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let m=this.transform.zoom,b=_.now();this.style.zoomHistory.update(m,b);let u=new s.a9(m,{now:b,fadeDuration:i,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),g=u.crossFadingFactor();g===1&&g===this._crossFadingFactor||(c=!0,this._crossFadingFactor=g),this.style.update(u)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.minElevationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,i,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:i,showPadding:this.showPadding}),this.fire(new s.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,s.be.mark(s.bf.load),this.fire(new s.k("load"))),this.style&&(this.style.hasTransitions()||c)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let p=this._sourcesDirty||this._styleDirty||this._placementDirty;return p||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new s.k("idle")),!this._loaded||this._fullyLoaded||p||(this._fullyLoaded=!0,s.be.mark(s.bf.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var v;this._hash&&this._hash.remove();for(let c of this._controls)c.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<"u"&&removeEventListener("online",this._onWindowOnline,!1),z.removeThrottleControl(this._imageQueueHandle),(v=this._resizeObserver)===null||v===void 0||v.disconnect();let i=this.painter.context.gl.getExtension("WEBGL_lose_context");i?.loseContext&&i.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),S.remove(this._canvasContainer),S.remove(this._controlContainer),this._container.classList.remove("maplibregl-map"),s.be.clearMetrics(),this._removed=!0,this.fire(new s.k("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,_.frameAsync(this._frameRequest).then(v=>{s.be.frame(v),this._frameRequest=null,this._render(v)}).catch(()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(v){this._showTileBoundaries!==v&&(this._showTileBoundaries=v,this._update())}get showPadding(){return!!this._showPadding}set showPadding(v){this._showPadding!==v&&(this._showPadding=v,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(v){this._showCollisionBoxes!==v&&(this._showCollisionBoxes=v,v?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(v){this._showOverdrawInspector!==v&&(this._showOverdrawInspector=v,this._update())}get repaint(){return!!this._repaint}set repaint(v){this._repaint!==v&&(this._repaint=v,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(v){this._vertices=v,this._update()}get version(){return ls}getCameraTargetElevation(){return this.transform.elevation}},A.MapMouseEvent=Vr,A.MapTouchEvent=xs,A.MapWheelEvent=kr,A.Marker=vr,A.NavigationControl=class{constructor(v){this._updateZoomButtons=()=>{let i=this._map.getZoom(),c=i===this._map.getMaxZoom(),p=i===this._map.getMinZoom();this._zoomInButton.disabled=c,this._zoomOutButton.disabled=p,this._zoomInButton.setAttribute("aria-disabled",c.toString()),this._zoomOutButton.setAttribute("aria-disabled",p.toString())},this._rotateCompassArrow=()=>{let i=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=i},this._setButtonTitle=(i,c)=>{let p=this._map._getUIString(`NavigationControl.${c}`);i.title=p,i.setAttribute("aria-label",p)},this.options=s.e({},Vl,v),this._container=S.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",i=>i.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",i=>this._map.zoomIn({},{originalEvent:i})),S.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",i=>this._map.zoomOut({},{originalEvent:i})),S.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",i=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:i}):this._map.resetNorth({},{originalEvent:i})}),this._compassIcon=S.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(v){return this._map=v,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Fc(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){S.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(v,i){let c=S.create("button",v,this._container);return c.type="button",c.addEventListener("click",i),c}},A.Popup=class extends s.E{constructor(v){super(),this.remove=()=>(this._content&&S.remove(this._content),this._container&&(S.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new s.k("close"))),this),this._onMouseUp=i=>{this._update(i.point)},this._onMouseMove=i=>{this._update(i.point)},this._onDrag=i=>{this._update(i.point)},this._update=i=>{var c;if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=S.create("div","maplibregl-popup",this._map.getContainer()),this._tip=S.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let g of this.options.className.split(" "))this._container.classList.add(g);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=this._map.transform.renderWorldCopies&&!this._trackPointer?kc(this._lngLat,this._flatPos,this._map.transform):(c=this._lngLat)===null||c===void 0?void 0:c.wrap(),this._trackPointer&&!i)return;let p=this._flatPos=this._pos=this._trackPointer&&i?i:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&i?i:this._map.transform.locationPoint(this._lngLat));let m=this.options.anchor,b=yi(this.options.offset);if(!m){let g=this._container.offsetWidth,y=this._container.offsetHeight,x;x=p.y+b.bottom.ythis._map.transform.height-y?["bottom"]:[],p.xthis._map.transform.width-g/2&&x.push("right"),m=x.length===0?"bottom":x.join("-")}let u=p.add(b[m]);this.options.subpixelPositioning||(u=u.round()),S.setTransform(this._container,`${Lc[m]} translate(${u.x}px,${u.y}px)`),fo(this._container,m,"popup")},this._onClose=()=>{this.remove()},this.options=s.e(Object.create(Zo),v)}addTo(v){return this._map&&this.remove(),this._map=v,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new s.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(v){return this._lngLat=s.N.convert(v),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(v){return this.setDOMContent(document.createTextNode(v))}setHTML(v){let i=document.createDocumentFragment(),c=document.createElement("body"),p;for(c.innerHTML=v;p=c.firstChild,p;)i.appendChild(p);return this.setDOMContent(i)}getMaxWidth(){var v;return(v=this._container)===null||v===void 0?void 0:v.style.maxWidth}setMaxWidth(v){return this.options.maxWidth=v,this._update(),this}setDOMContent(v){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=S.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(v),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(v){return this._container&&this._container.classList.add(v),this}removeClassName(v){return this._container&&this._container.classList.remove(v),this}setOffset(v){return this.options.offset=v,this._update(),this}toggleClassName(v){if(this._container)return this._container.classList.toggle(v)}setSubpixelPositioning(v){this.options.subpixelPositioning=v}_createCloseButton(){this.options.closeButton&&(this._closeButton=S.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let v=this._container.querySelector(Kl);v&&v.focus()}},A.RasterDEMTileSource=Oe,A.RasterTileSource=Ye,A.ScaleControl=class{constructor(v){this._onMove=()=>{Dl(this._map,this._container,this.options)},this.setUnit=i=>{this.options.unit=i,Dl(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},hu),v)}getDefaultPosition(){return"bottom-left"}onAdd(v){return this._map=v,this._container=S.create("div","maplibregl-ctrl maplibregl-ctrl-scale",v.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){S.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},A.ScrollZoomHandler=wc,A.Style=ht,A.TerrainControl=class{constructor(v){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=v}onAdd(v){return this._map=v,this._container=S.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=S.create("button","maplibregl-ctrl-terrain",this._container),S.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){S.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},A.TwoFingersTouchPitchHandler=Hl,A.TwoFingersTouchRotateHandler=UA,A.TwoFingersTouchZoomHandler=Pl,A.TwoFingersTouchZoomRotateHandler=_c,A.VectorTileSource=Ut,A.VideoSource=We,A.addSourceType=(v,i)=>s._(void 0,void 0,void 0,function*(){if(Ti(v))throw new Error(`A source type called "${v}" already exists.`);((c,p)=>{hi[c]=p})(v,i)}),A.clearPrewarmedResources=function(){let v=Qt;v&&(v.isPreloaded()&&v.numActive()===1?(v.release(j),Qt=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()"))},A.getMaxParallelImageRequests=function(){return s.a.MAX_PARALLEL_IMAGE_REQUESTS},A.getRTLTextPluginStatus=function(){return mi().getRTLTextPluginStatus()},A.getVersion=function(){return Zi},A.getWorkerCount=function(){return mt.workerCount},A.getWorkerUrl=function(){return s.a.WORKER_URL},A.importScriptInWorkers=function(v){return de().broadcast("IS",v)},A.prewarm=function(){ae().acquire(j)},A.setMaxParallelImageRequests=function(v){s.a.MAX_PARALLEL_IMAGE_REQUESTS=v},A.setRTLTextPlugin=function(v,i){return mi().setRTLTextPlugin(v,i)},A.setWorkerCount=function(v){mt.workerCount=v},A.setWorkerUrl=function(v){s.a.WORKER_URL=v}});var o=n;return o})});var xb=ua((_d,xd)=>{(function(n,t){typeof _d=="object"&&typeof xd<"u"?t(_d):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).VectorTextProtocol={})})(_d,function(n){"use strict";function t(ht){return ht&&ht.__esModule&&Object.prototype.hasOwnProperty.call(ht,"default")?ht.default:ht}function r(ht){if(ht.__esModule)return ht;var Ct=ht.default;if(typeof Ct=="function"){var ct=function bt(){return this instanceof bt?Reflect.construct(Ct,arguments,this.constructor):Ct.apply(this,arguments)};ct.prototype=Ct.prototype}else ct={};return Object.defineProperty(ct,"__esModule",{value:!0}),Object.keys(ht).forEach(function(bt){var Pt=Object.getOwnPropertyDescriptor(ht,bt);Object.defineProperty(ct,bt,Pt.get?Pt:{enumerable:!0,get:function(){return ht[bt]}})}),ct}function o(ht){return new Function("d","return {"+ht.map(function(Ct,ct){return JSON.stringify(Ct)+": d["+ct+"]"}).join(",")+"}")}function A(ht){var Ct=new RegExp('["'+ht+` -]`),ct=ht.charCodeAt(0);function bt(re,_e){var Be,Ie,ne={},ye={},ve=[],Ge=re.length,Ri=0,Qi=0;function He(){if(Ri>=Ge)return ye;if(Ie)return Ie=!1,ne;var si,ci=Ri;if(re.charCodeAt(ci)===34){for(var Fi=ci;Fi++=0?0:1],bt=Math.abs(ht),Pt=Math.floor(bt),Jt=60*(bt-Pt),re=Math.floor(Jt);return{whole:Pt,minutes:re,seconds:Math.floor(60*(Jt-re)),dir:ct}}function At(ht,Ct){if(Ct||(Ct="NSEW"),typeof ht!="string")return null;var ct=(ht=ht.toUpperCase()).match(/^[\s\,]*([NSEW])?\s*([\-|—|―]?[0-9.]+)[°º˚]?\s*(?:([0-9.]+)['’′‘]\s*)?(?:([0-9.]+)(?:''|"|”|″)\s*)?([NSEW])?/);if(!ct)return null;var bt,Pt=ct[0];if(ct[1]&&ct[5]?(bt=ct[1],Pt=Pt.slice(0,-1)):bt=ct[1]||ct[5],bt&&Ct.indexOf(bt)===-1)return null;var Jt=ct[2]?parseFloat(ct[2]):0,re=ct[3]?parseFloat(ct[3])/60:0,_e=ct[4]?parseFloat(ct[4])/3600:0,Be=Jt<0?-1:1;return bt!=="S"&&bt!=="W"||(Be*=-1),{val:(Math.abs(Jt)+re+_e)*Be,dim:bt,matched:Pt,remain:ht.slice(Pt.length)}}q.exports=function(ht,Ct){var ct=At(ht,Ct);return ct===null?null:ct.val},q.exports.pair=function(ht,Ct){var ct=At(ht=ht.trim(),Ct);if(!ct)return null;var bt=At(ht=ct.remain.trim(),Ct);return!bt||bt.remain?null:ct.dim?function(Pt,Jt,re){if(re==="N"||re==="S")return[Pt,Jt];if(re==="W"||re==="E")return[Jt,Pt]}(ct.val,bt.val,ct.dim):[ct.val,bt.val]},q.exports.format=z,q.exports.formatPair=function(ht){return z(ht.lat,"lat")+" "+z(ht.lon,"lon")},q.exports.coordToDMS=it;var _t=q.exports,Lt=V,Et=_t,xt=/(Lat)(itude)?/gi,It=/(L)(on|ng)(gitude)?/i;function Nt(ht,Ct){var ct,bt,Pt;for(var Jt in ht)(bt=Jt.match(Ct))&&(!ct||bt[0].length/Jt.length>Pt)&&(Pt=bt[0].length/Jt.length,ct=Jt);return ct}function ie(ht){return Nt(ht,xt)}function lt(ht){return Nt(ht,It)}function at(ht){return typeof ht=="object"?Object.keys(ht).length:0}function St(ht){var Ct=[];return[",",";"," ","|"].forEach(function(ct){var bt=Lt.dsvFormat(ct).parse(ht);if(bt.length>=1){for(var Pt=at(bt[0]),Jt=0;Jt{ct[bt]=Pt});return ct}function Ht(ht){return ht?.nodeType===1}function ae(ht){return pe(ht,"line",Ct=>Object.assign({},j(Ct,"color",ct=>({stroke:`#${ct}`})),mt(Ct,"opacity",ct=>({"stroke-opacity":ct})),mt(Ct,"width",ct=>({"stroke-width":96*ct/25.4}))))}function ge(ht){let Ct=[];if(ht===null)return Ct;for(let ct of Array.from(ht.childNodes)){if(!Ht(ct))continue;let bt=de(ct.nodeName);if(bt==="gpxtpx:TrackPointExtension")Ct=Ct.concat(ge(ct));else{let Pt=vt(ct);Ct.push([bt,Ze(Pt)])}}return Ct}function de(ht){return["heart","gpxtpx:hr","hr"].includes(ht)?"heart":ht}function Ze(ht){let Ct=parseFloat(ht);return isNaN(Ct)?ht:Ct}function Re(ht){let Ct=[parseFloat(ht.getAttribute("lon")||""),parseFloat(ht.getAttribute("lat")||"")];if(isNaN(Ct[0])||isNaN(Ct[1]))return null;yt(ht,"ele",bt=>{Ct.push(bt)});let ct=Tt(ht,"time");return{coordinates:Ct,time:ct?vt(ct):null,extendedValues:ge(Tt(ht,"extensions"))}}function Je(ht){let Ct=Qt(ht,["name","cmt","desc","type","time","keywords"]),ct=Array.from(ht.getElementsByTagNameNS("http://www.garmin.com/xmlschemas/GpxExtensions/v3","*"));for(let Pt of ct)Pt.parentNode?.parentNode===ht&&(Ct[Pt.tagName.replace(":","_")]=vt(Pt));let bt=qt(ht,"link");return bt.length&&(Ct.links=bt.map(Pt=>Object.assign({href:Pt.getAttribute("href")},Qt(Pt,["text","type"])))),Ct}function Xe(ht,Ct){let ct=qt(ht,Ct),bt=[],Pt=[],Jt={};for(let re=0;re1,re=Object.assign({_gpxType:"trk"},Je(ht),ae(Tt(ht,"extensions")),bt.length?{coordinateProperties:{times:Jt?bt:bt[0]}}:{});for(let _e of Pt){ct.push(_e.line),re.coordinateProperties||(re.coordinateProperties={});let Be=re.coordinateProperties,Ie=Object.entries(_e.extendedValues);for(let ne=0;nenew Array(Ge.line.length).fill(null))),Be[ye][ne]=ve):Be[ye]=ve}}return{type:"Feature",properties:re,geometry:Jt?{type:"MultiLineString",coordinates:ct}:{type:"LineString",coordinates:ct[0]}}}function Ut(ht){let Ct=Object.assign(Je(ht),Qt(ht,["sym"])),ct=Re(ht);return ct?{type:"Feature",properties:Ct,geometry:{type:"Point",coordinates:ct.coordinates}}:null}function*Ye(ht){for(let Ct of qt(ht,"trk")){let ct=Ce(Ct);ct&&(yield ct)}for(let Ct of qt(ht,"rte")){let ct=Kt(Ct);ct&&(yield ct)}for(let Ct of qt(ht,"wpt")){let ct=Ut(Ct);ct&&(yield ct)}}let Oe="http://www.garmin.com/xmlschemas/ActivityExtension/v2",Qe=[["heartRate","heartRates"],["Cadence","cadences"],["Speed","speeds"],["Watts","watts"]],Ne=[["TotalTimeSeconds","totalTimeSeconds"],["DistanceMeters","distanceMeters"],["MaximumSpeed","maxSpeed"],["AverageHeartRateBpm","avgHeartRate"],["MaximumHeartRateBpm","maxHeartRate"],["AvgSpeed","avgSpeed"],["AvgWatts","avgWatts"],["MaxWatts","maxWatts"]];function ze(ht,Ct){let ct=[];for(let[bt,Pt]of Ct){let Jt=Tt(ht,bt);if(!Jt){let _e=ht.getElementsByTagNameNS(Oe,bt);_e.length&&(Jt=_e[0])}let re=parseFloat(vt(Jt));isNaN(re)||ct.push([Pt,re])}return ct}function We(ht){let Ct=[yt(ht,"LongitudeDegrees"),yt(ht,"LatitudeDegrees")];if(Ct[0]===void 0||isNaN(Ct[0])||Ct[1]===void 0||isNaN(Ct[1]))return null;let ct=Tt(ht,"HeartRateBpm"),bt=vt(Tt(ht,"Time"));return Tt(ht,"AltitudeMeters",Pt=>{let Jt=parseFloat(vt(Pt));isNaN(Jt)||Ct.push(Jt)}),{coordinates:Ct,time:bt||null,heartRate:ct?parseFloat(vt(ct)):null,extensions:ze(ht,Qe)}}function ri(ht){let Ct=qt(ht,"Trackpoint"),ct=[],bt=[],Pt=[];if(Ct.length<2)return null;let Jt={},re={extendedProperties:Jt};for(let _e=0;_e({name:vt(Be)})));for(let Be of Ct)re=ri(Be),re&&(ct.push(re.line),re.times.length&&bt.push(re.times),re.heartRates.length&&Pt.push(re.heartRates),Jt.push(re.extendedProperties));for(let Be=0;BeArray(ye.length).fill(null))),_e[ne][Be]=Ie[ne])}return ct.length===0?null:((bt.length||Pt.length)&&(_e.coordinateProperties=Object.assign(bt.length?{times:ct.length===1?bt[0]:bt}:{},Pt.length?{heart:ct.length===1?Pt[0]:Pt}:{})),{type:"Feature",properties:_e,geometry:ct.length===1?{type:"LineString",coordinates:ct[0]}:{type:"MultiLineString",coordinates:ct}})}function*Ti(ht){for(let Ct of qt(ht,"Lap")){let ct=hi(Ct);ct&&(yield ct)}for(let Ct of qt(ht,"Courses")){let ct=hi(Ct);ct&&(yield ct)}}function fe(ht,Ct){let ct={},bt=Ct=="stroke"||Ct==="fill"?Ct:Ct+"-color";return ht[0]==="#"&&(ht=ht.substring(1)),ht.length===6||ht.length===3?ct[bt]="#"+ht:ht.length===8&&(ct[Ct+"-opacity"]=parseInt(ht.substring(0,2),16)/255,ct[bt]="#"+ht.substring(6,8)+ht.substring(4,6)+ht.substring(2,4)),ct}function Ni(ht,Ct,ct){let bt={};return yt(ht,Ct,Pt=>{bt[ct]=Pt}),bt}function Di(ht,Ct){return pe(ht,"color",ct=>fe(vt(ct),Ct))}function mi(ht){return pe(ht,"Icon",(Ct,ct)=>(j(Ct,"href",bt=>{ct.icon=bt}),ct))}function Gi(ht){return Object.assign({},function(Ct){return pe(Ct,"PolyStyle",(ct,bt)=>Object.assign(bt,pe(ct,"color",Pt=>fe(vt(Pt),"fill")),j(ct,"fill",Pt=>{if(Pt==="0")return{"fill-opacity":0}}),j(ct,"outline",Pt=>{if(Pt==="0")return{"stroke-opacity":0}})))}(ht),function(Ct){return pe(Ct,"LineStyle",ct=>Object.assign(Di(ct,"stroke"),Ni(ct,"width","stroke-width")))}(ht),function(Ct){return pe(Ct,"LabelStyle",ct=>Object.assign(Di(ct,"label"),Ni(ct,"scale","label-scale")))}(ht),function(Ct){return pe(Ct,"IconStyle",ct=>Object.assign(Di(ct,"icon"),Ni(ct,"scale","icon-scale"),Ni(ct,"heading","icon-heading"),pe(ct,"hotSpot",bt=>{let Pt=parseFloat(bt.getAttribute("x")||""),Jt=parseFloat(bt.getAttribute("y")||""),re=bt.getAttribute("xunits")||"",_e=bt.getAttribute("yunits")||"";return isNaN(Pt)||isNaN(Jt)?{}:{"icon-offset":[Pt,Jt],"icon-offset-units":[re,_e]}}),mi(ct)))}(ht))}let le=ht=>Number(ht),gi={string:ht=>ht,int:le,uint:le,short:le,ushort:le,float:le,double:le,bool:ht=>Boolean(ht)};function Ke(ht,Ct){return pe(ht,"ExtendedData",(ct,bt)=>{for(let Pt of qt(ct,"Data"))bt[Pt.getAttribute("name")||""]=vt(Tt(Pt,"value"));for(let Pt of qt(ct,"SimpleData")){let Jt=Pt.getAttribute("name")||"",re=Ct[Jt]||gi.string;bt[Jt]=re(vt(Pt))}return bt})}function or(ht){let Ct=Tt(ht,"description");for(let ct of Array.from(Ct?.childNodes||[]))if(ct.nodeType===4)return{description:{"@type":"html",value:vt(ct)}};return{}}function Ki(ht){return pe(ht,"TimeSpan",Ct=>({timespan:{begin:vt(Tt(Ct,"begin")),end:vt(Tt(Ct,"end"))}}))}function ii(ht){return pe(ht,"TimeStamp",Ct=>({timestamp:vt(Tt(Ct,"when"))}))}function br(ht,Ct){return j(ht,"styleUrl",ct=>(ct=Xt(ct),Ct[ct]?Object.assign({styleUrl:ct},Ct[ct]):{styleUrl:ct}))}let Ji=/\s*/g,wr=/^\s*|\s*$/g,ar=/\s+/;function wt(ht){return ht.replace(Ji,"").split(",").map(parseFloat).filter(Ct=>!isNaN(Ct)).slice(0,3)}function W(ht){return ht.replace(wr,"").split(ar).map(wt).filter(Ct=>Ct.length>=2)}function X(ht){let Ct=qt(ht,"coord");Ct.length===0&&(Ct=function(bt,Pt,Jt){return Array.from(bt.getElementsByTagNameNS(Jt,Pt))}(ht,"coord","*"));let ct=Ct.map(bt=>vt(bt).split(" ").map(parseFloat));return ct.length===0?null:{geometry:ct.length>2?{type:"LineString",coordinates:ct}:{type:"Point",coordinates:ct[0]},times:qt(ht,"when").map(bt=>vt(bt))}}function rt(ht){if(ht.length===0)return ht;let Ct=ht[0],ct=ht[ht.length-1],bt=!0;for(let Pt=0;Pt=2&&Ct.push({type:"Point",coordinates:Jt});break}case"LinearRing":case"LineString":{let Jt=W(ft(Pt));Jt.length>=2&&Ct.push({type:"LineString",coordinates:Jt});break}case"Polygon":{let Jt=[];for(let re of qt(Pt,"LinearRing")){let _e=rt(W(ft(re)));_e.length>=4&&Jt.push(_e)}Jt.length&&Ct.push({type:"Polygon",coordinates:Jt});break}case"Track":case"gx:Track":{let Jt=X(Pt);if(!Jt)break;let{times:re,geometry:_e}=Jt;Ct.push(_e),re.length&&ct.push(re);break}}}return{geometries:Ct,coordTimes:ct}}function Vt(ht,Ct,ct,bt){let{coordTimes:Pt,geometries:Jt}=Mt(ht),re=function(Ie){return Ie.length===0?null:Ie.length===1?Ie[0]:{type:"GeometryCollection",geometries:Ie}}(Jt);if(!re&&bt.skipNullGeometry)return null;let _e={type:"Feature",geometry:re,properties:Object.assign(Qt(ht,["name","address","visibility","open","phoneNumber","description"]),or(ht),br(ht,Ct),Gi(ht),Ke(ht,ct),Ki(ht),ii(ht),Pt.length?{coordinateProperties:{times:Pt.length===1?Pt[0]:Pt}}:{})};_e.properties?.visibility!==void 0&&(_e.properties.visibility=_e.properties.visibility!=="0");let Be=ht.getAttribute("id");return Be!==null&&Be!==""&&(_e.id=Be),_e}function Yt(ht){return Tt(ht,"gx:LatLonQuad")?{geometry:{type:"Polygon",coordinates:[rt(W(ft(ht)))]}}:function(Ct){let ct=Tt(Ct,"LatLonBox");if(ct){let bt=yt(ct,"north"),Pt=yt(ct,"west"),Jt=yt(ct,"east"),re=yt(ct,"south"),_e=yt(ct,"rotation");if(typeof bt=="number"&&typeof re=="number"&&typeof Pt=="number"&&typeof Jt=="number"){let Be=[Pt,re,Jt,bt],Ie=[[[Pt,bt],[Jt,bt],[Jt,re],[Pt,re],[Pt,bt]]];return typeof _e=="number"&&(Ie=function(ne,ye,ve){let Ge=[(ne[0]+ne[2])/2,(ne[1]+ne[3])/2];return[ye[0].map(Ri=>{let Qi=Ri[1]-Ge[1],He=Ri[0]-Ge[0],Ee=Math.sqrt(Math.pow(Qi,2)+Math.pow(He,2)),si=Math.atan2(Qi,He)+ve*Rt;return[Ge[0]+Math.cos(si)*Ee,Ge[1]+Math.sin(si)*Ee]})]}(Be,Ie,_e)),{bbox:Be,geometry:{type:"Polygon",coordinates:Ie}}}}return null}(ht)}let Rt=Math.PI/180;function Wt(ht,Ct,ct,bt){let Pt=Yt(ht),Jt=Pt?.geometry||null;if(!Jt&&bt.skipNullGeometry)return null;let re={type:"Feature",geometry:Jt,properties:Object.assign({"@geometry-type":"groundoverlay"},Qt(ht,["name","address","visibility","open","phoneNumber","description"]),or(ht),br(ht,Ct),Gi(ht),mi(ht),Ke(ht,ct),Ki(ht),ii(ht))};Pt?.bbox&&(re.bbox=Pt.bbox),re.properties?.visibility!==void 0&&(re.properties.visibility=re.properties.visibility!=="0");let _e=ht.getAttribute("id");return _e!==null&&_e!==""&&(re.id=_e),re}function be(ht){let Ct=ht.getAttribute("id"),ct=ht.parentNode;return!Ct&&Ht(ct)&&ct.localName==="CascadingStyle"&&(Ct=ct.getAttribute("kml:id")||ct.getAttribute("id")),Xt(Ct||"")}function he(ht){let Ct={};for(let ct of qt(ht,"Style"))Ct[be(ct)]=Gi(ct);for(let ct of qt(ht,"StyleMap")){let bt=Xt(ct.getAttribute("id")||"");j(ct,"styleUrl",Pt=>{Pt=Xt(Pt),Ct[Pt]&&(Ct[bt]=Ct[Pt])})}return Ct}function Le(ht){let Ct={};for(let ct of qt(ht,"SimpleField"))Ct[ct.getAttribute("name")||""]=gi[ct.getAttribute("type")||""]||gi.string;return Ct}let je=["name","visibility","open","address","description","phoneNumber","visibility"];function*ti(ht,Ct={skipNullGeometry:!1}){let ct=he(ht),bt=Le(ht);for(let Pt of qt(ht,"Placemark")){let Jt=Vt(Pt,ct,bt,Ct);Jt&&(yield Jt)}for(let Pt of qt(ht,"GroundOverlay")){let Jt=Wt(Pt,ct,bt,Ct);Jt&&(yield Jt)}}var _i=Object.freeze({__proto__:null,gpx:function(ht){return{type:"FeatureCollection",features:Array.from(Ye(ht))}},gpxGen:Ye,kml:function(ht,Ct={skipNullGeometry:!1}){return{type:"FeatureCollection",features:Array.from(ti(ht,Ct))}},kmlGen:ti,kmlWithFolders:function(ht,Ct={skipNullGeometry:!1}){let ct=he(ht),bt=Le(ht),Pt={type:"root",children:[]};return function Jt(re,_e,Be){if(Ht(re))switch(re.tagName){case"GroundOverlay":{let Ie=Wt(re,ct,bt,Be);Ie&&_e.children.push(Ie);break}case"Placemark":{let Ie=Vt(re,ct,bt,Be);Ie&&_e.children.push(Ie);break}case"Folder":{let Ie=function(ne){let ye={};for(let ve of Array.from(ne.childNodes))Ht(ve)&&je.includes(ve.tagName)&&(ye[ve.tagName]=vt(ve));return{type:"folder",meta:ye,children:[]}}(re);_e.children.push(Ie),_e=Ie;break}}if(re.childNodes)for(let Ie=0;Ie=0?1:-1)}function bt(Jt,re,_e){var Be=2*((Jt=ct(Jt*_e))-(re=ct(re*_e)));Be<0&&(Be=-Be-1);for(var Ie="";Be>=32;)Ie+=String.fromCharCode(63+(32|31&Be)),Be/=32;return Ie+=String.fromCharCode(63+(0|Be))}function Pt(Jt){for(var re=[],_e=0;_e=32);_e=1&Ge?(-Ge-1)/2:Ge/2,ve=1,Ge=0;do Ge+=(31&(Ri=Jt.charCodeAt(Be++)-63))*ve,ve*=32;while(Ri>=32);Ie+=_e,ne+=1&Ge?(-Ge-1)/2:Ge/2,ye.push([Ie/Qi,ne/Qi])}return ye},Ct.encode=function(Jt,re){if(!Jt.length)return"";for(var _e=Math.pow(10,Number.isInteger(re)?re:5),Be=bt(Jt[0][0],0,_e)+bt(Jt[0][1],0,_e),Ie=1;Ie{let ht=ne=>ne[0],Ct=ne=>ne[ne.length-1],ct=ne=>ne.join(","),bt=(ne,ye,ve)=>{let Ge=ne[ye];Ge?Ge.push(ve):ne[ye]=[ve]},Pt=(ne,ye,ve)=>{let Ge=ne[ye],Ri=null;Ge&&(Ri=Ge.indexOf(ve))>=0&&Ge.splice(Ri,1)},Jt=(ne,ye)=>{let ve=ne[ye];return ve&&ve.length>0?ve[0]:null},re=ne=>ne.length>3&&ct(ht(ne))===ct(Ct(ne)),_e=(ne,ye,ve)=>{ye=ye||0,ve=ve||1;let Ge=ne.reduce((lr,ai,Br)=>ne[lr][ye]>ai[ye]?lr:Br,0),Ri=Ge<=0?ne.length-2:Ge-1,Qi=Ge>=ne.length-1?1:Ge+1,He=ne[Ri][ye],Ee=ne[Ge][ye],si=ne[Qi][ye],ci=ne[Ri][ve],Fi=ne[Ge][ve];return(Ee-He)*(ne[Qi][ve]-ci)-(si-He)*(Fi-ci)<0?"clockwise":"counterclockwise"},Be=ne=>ne instanceof Array?ne.map(Be):parseFloat(ne);class Ie extends Map{constructor(){super(),this.binders=[]}add(ye,ve){this.has(ye)||this.set(ye,ve)}addBinder(ye){this.binders.push(ye)}bindAll(){this.binders.forEach(ye=>ye.bind())}}return{purgeProps:(ne,ye)=>{if(ne){let ve=Object.assign({},ne);if(ye)for(let Ge of ye)delete ve[Ge];return ve}return{}},mergeProps:(ne,ye)=>(ne=ne||{},ye=ye||{},Object.assign(ne,ye)),first:ht,last:Ct,coordsToKey:ct,addToMap:bt,removeFromMap:Pt,getFirstFromMap:Jt,isRing:re,ringDirection:_e,ptInsidePolygon:(ne,ye,ve,Ge)=>{ve=ve||0,Ge=Ge||1;let Ri=!1;for(let Qi=0,He=ye.length-1;Qi=0){let ve=[ye,1];ne&&ve.push(ne),[].splice.apply(this.container,ve)}}else if(typeof this.container=="object"){let ye=Object.keys(this.container).find(ve=>this.container[ve]===this);ye&&(ne?this.container[ye]=ne:delete this.container[ye])}}},WayCollection:class extends Array{constructor(){super(),this.firstMap={},this.lastMap={}}addWay(ne){(ne=ne.toCoordsArray()).length>0&&(this.push(ne),bt(this.firstMap,ct(ht(ne)),ne),bt(this.lastMap,ct(Ct(ne)),ne))}toStrings(){let ne=[],ye=null;for(;ye=this.shift();){Pt(this.firstMap,ct(ht(ye)),ye),Pt(this.lastMap,ct(Ct(ye)),ye);let ve=ye,Ge=null;do{let Ri=ct(Ct(ve)),Qi=!1;Ge=Jt(this.firstMap,Ri),Ge||(Ge=Jt(this.lastMap,Ri),Qi=!0),Ge&&(this.splice(this.indexOf(Ge),1),Pt(this.firstMap,ct(ht(Ge)),Ge),Pt(this.lastMap,ct(Ct(Ge)),Ge),Qi&&(Ge.length>ve.length&&([ve,Ge]=[Ge,ve]),Ge.reverse()),ve=ve.concat(Ge.slice(1)))}while(Ge);ne.push(Be(ve))}return ne}toRings(ne){let ye=this.toStrings(),ve=[],Ge=null;for(;Ge=ye.shift();)re(Ge)&&(_e(Ge)!==ne&&Ge.reverse(),ve.push(Ge));return ve}}}})(),hr={building:{},highway:{whitelist:["services","rest_area","escape","elevator"]},natural:{blacklist:["coastline","cliff","ridge","arete","tree_row"]},landuse:{},waterway:{whitelist:["riverbank","dock","boatyard","dam"]},amenity:{},leisure:{},barrier:{whitelist:["city_wall","ditch","hedge","retaining_wall","wall","spikes"]},railway:{whitelist:["station","turntable","roundhouse","platform"]},area:{},boundary:{},man_made:{blacklist:["cutline","embankment","pipeline"]},power:{whitelist:["plant","substation","generator","transformer"]},place:{},shop:{},aeroway:{blacklist:["taxiway"]},tourism:{},historic:{},public_transport:{},office:{},"building:part":{},military:{},ruins:{},"area:highway":{},craft:{},golf:{},indoor:{}},fr=(()=>{let{first:ht,last:Ct,coordsToKey:ct,addToMap:bt,removeFromMap:Pt,getFirstFromMap:Jt,isRing:re,ringDirection:_e,ptInsidePolygon:Be,strToFloat:Ie,LateBinder:ne,WayCollection:ye}=zi,ve=hr;class Ge{constructor(Ee,si,ci){this.type=Ee,this.id=si,this.refElems=ci,this.tags={},this.props={id:this.getCompositeId()},this.refCount=0,this.hasTag=!1,ci&&ci.add(this.getCompositeId(),this)}addTags(Ee){this.tags=Object.assign(this.tags,Ee),this.hasTag=!!Ee}addTag(Ee,si){this.tags[Ee]=si,this.hasTag=!!Ee}addProp(Ee,si){this.props[Ee]=si}addProps(Ee){this.props=Object.assign(this.props,Ee)}getCompositeId(){return`${this.type}/${this.id}`}getProps(){return Object.assign(this.props,this.tags)}toFeatureArray(){return[]}}class Ri extends Ge{constructor(Ee,si){super("node",Ee,si),this.latLng=null}setLatLng(Ee){this.latLng=Ee}toFeatureArray(){return this.latLng?[{type:"Feature",id:this.getCompositeId(),properties:this.getProps(),geometry:{type:"Point",coordinates:Ie([this.latLng.lon,this.latLng.lat])}}]:[]}getLatLng(){return this.latLng}}class Qi extends Ge{constructor(Ee,si){super("way",Ee,si),this.latLngArray=[],this.isPolygon=!1}addLatLng(Ee){this.latLngArray.push(Ee)}setLatLngArray(Ee){this.latLngArray=Ee}addNodeRef(Ee){let si=new ne(this.latLngArray,function(ci){let Fi=this.refElems.get(`node/${ci}`);if(Fi)return Fi.refCount++,Fi.getLatLng()},this,[Ee]);this.latLngArray.push(si),this.refElems.addBinder(si)}analyzeGeometryType(Ee,si){let ci=ve[Ee];ci&&(this.isPolygon=!0,ci.whitelist?this.isPolygon=ci.whitelist.indexOf(si)>=0:ci.blacklist&&(this.isPolygon=!(ci.blacklist.indexOf(si)>=0)))}addTags(Ee){super.addTags(Ee);for(let[si,ci]of Object.entries(Ee))this.analyzeGeometryType(si,ci)}addTag(Ee,si){super.addTag(Ee,si),this.analyzeGeometryType(Ee,si)}toCoordsArray(){return this.latLngArray.map(Ee=>[Ee.lon,Ee.lat])}toFeatureArray(){let Ee=this.toCoordsArray();if(Ee.length>1){Ee=Ie(Ee);let si={type:"Feature",id:this.getCompositeId(),properties:this.getProps(),geometry:{type:"LineString",coordinates:Ee}};return this.isPolygon&&re(Ee)?(_e(Ee)!=="counterclockwise"&&Ee.reverse(),si.geometry={type:"Polygon",coordinates:[Ee]},[si]):[si]}return[]}}return{Node:Ri,Way:Qi,Relation:class extends Ge{constructor(He,Ee){super("relation",He,Ee),this.relations=[],this.nodes=[],this.bounds=null}setBounds(He){this.bounds=He}addMember(He){switch(He.type){case"relation":let Ee=new ne(this.relations,function(Fi){let lr=this.refElems.get(`relation/${Fi}`);if(lr)return lr.refCount++,lr},this,[He.ref]);this.relations.push(Ee),this.refElems.addBinder(Ee);break;case"way":He.role||(He.role="");let si=this[He.role];if(si||(si=this[He.role]=[]),He.geometry){let Fi=new Qi(He.ref,this.refElems);Fi.setLatLngArray(He.geometry),Fi.refCount++,si.push(Fi)}else if(He.nodes){let Fi=new Qi(He.ref,this.refElems);for(let lr of He.nodes)Fi.addNodeRef(lr);Fi.refCount++,si.push(Fi)}else{let Fi=new ne(si,function(lr){let ai=this.refElems.get(`way/${lr}`);if(ai)return ai.refCount++,ai},this,[He.ref]);si.push(Fi),this.refElems.addBinder(Fi)}break;case"node":let ci=null;if(He.lat&&He.lon){ci=new Ri(He.ref,this.refElems),ci.setLatLng({lon:He.lon,lat:He.lat}),He.tags&&ci.addTags(He.tags);for(let[Fi,lr]of Object.entries(He))["id","type","lat","lon"].indexOf(Fi)<0&&ci.addProp(Fi,lr);ci.refCount++,this.nodes.push(ci)}else{let Fi=new ne(this.nodes,function(lr){let ai=this.refElems.get(`node/${lr}`);if(ai)return ai.refCount++,ai},this,[He.ref]);this.nodes.push(Fi),this.refElems.addBinder(Fi)}}}toFeatureArray(){let He=[],Ee=[],si=[],ci=["outer","inner",""];for(let ai of this.relations)if(ai)for(let Br of ci){let ln=ai[Br];if(ln){let yr=this[Br];yr?[].splice.apply(yr,[yr.length,0].concat(ln)):this[Br]=ln}}for(let ai of ci){let Br=this[ai];if(Br){this[ai]=new ye;for(let ln of Br)this[ai].addWay(ln)}}let Fi=null,lr={type:"Feature",id:this.getCompositeId(),bbox:this.bounds,properties:this.getProps()};this.bounds||delete lr.bbox,this.outer?(Fi=((ai,Br)=>{let ln=ai?ai.toRings("counterclockwise"):[],yr=Br?Br.toRings("clockwise"):[];if(ln.length>0){let ss=[],$n=null;for($n of ln)ss.push([$n]);for(;$n=yr.shift();)for(let zo in ln)if(Be(ht($n),ln[zo])){ss[zo].push($n);break}return ss.length===1?{type:"Polygon",coordinates:ss[0]}:{type:"MultiPolygon",coordinates:ss}}return null})(this.outer,this.inner),Fi&&(lr.geometry=Fi,He.push(lr))):this[""]&&(Fi=(ai=>{let Br=ai?ai.toStrings():[];return Br.length>0?Br.length===1?{type:"LineString",coordinates:Br[0]}:{type:"MultiLineString",coordinates:Br}:null})(this[""]),Fi&&(lr.geometry=Fi,Ee.push(lr)));for(let ai of this.nodes)si=si.concat(ai.toFeatureArray());return He.concat(Ee).concat(si)}}}})(),Hi=(()=>{function ht(ct){return ct.match(/^(.+?)\[(.+?)\]>$/g)!=null}function Ct(ct){let bt=/^(.+?)\[(.+?)\]>$/g.exec(ct);return bt?{evt:bt[1]+">",exp:bt[2]}:{evt:ct}}return class{constructor(ct){ct&&(this.queryParent=!!ct.queryParent,this.progressive=ct.progressive,this.queryParent&&(this.parentMap=new WeakMap)),this.evtListeners={}}parse(ct,bt,Pt){Pt=Pt?Pt+".":"";let Jt=/<([^ >\/]+)(.*?)>/gm,re=null,_e=[];for(;re=Jt.exec(ct);){let Be=re[1],Ie={$tag:Be},ne=Pt+Be,ye=re[2].trim(),ve=!1;(ye.endsWith("/")||Be.startsWith("?")||Be.startsWith("!"))&&(ve=!0);let Ge=/([^ ]+?)="(.+?)"/g,Ri=/([^ ]+?)='(.+?)'/g,Qi=null,He=!1;for(;Qi=Ge.exec(ye);)He=!0,Ie[Qi[1]]=Qi[2];if(!He)for(;Qi=Ri.exec(ye);)He=!0,Ie[Qi[1]]=Qi[2];if(He||ye===""||(Ie.text=ye),this.progressive&&this.emit(`<${ne}>`,Ie,bt),!ve){let Ee=new RegExp(`([^]+?)`,"g");Ee.lastIndex=Jt.lastIndex;let si=Ee.exec(ct);if(si&&si[1]){Jt.lastIndex=Ee.lastIndex;let ci=this.parse(si[1],Ie,ne);ci.length>0?Ie.$innerNodes=ci:Ie.$innerText=si[1]}}this.queryParent&&bt&&this.parentMap.set(Ie,bt),this.progressive&&this.emit(``,Ie,bt),_e.push(Ie)}return _e}getParent(ct){return this.queryParent?this.parentMap.get(ct):null}#t(ct,bt){let Pt=this.evtListeners[ct];Pt?Pt.push(bt):this.evtListeners[ct]=[bt]}addListener(ct,bt){ht(ct)&&(ct=Ct(ct),bt.condition=function(Pt){let Jt="return "+Pt.replace(/(\$.+?)(?=[=!.])/g,"node.$&")+";";return new Function("node",Jt)}(ct.exp),ct=ct.evt),this.#t(ct,bt)}#e(ct,bt){let Pt=this.evtListeners[ct],Jt=null;Pt&&(Jt=Pt.indexOf(bt))>=0&&Pt.splice(Jt,1)}removeListener(ct,bt){ht(ct)&&(ct=(ct=Ct(ct)).evt),this.#e(ct,bt)}emit(ct,...bt){let Pt=this.evtListeners[ct];if(Pt)for(let Jt of Pt)Jt.condition?Jt.condition.apply(null,bt)===!0&&Jt.apply(null,bt):Jt.apply(null,bt)}on(ct,bt){this.addListener(ct,bt)}off(ct,bt){this.removeListener(ct,bt)}}})();let{Node:Wi,Way:Ar,Relation:Zt}=fr,{purgeProps:De,RefElements:Te}=zi,tr=Hi;var Ui=(ht,Ct)=>{let ct=!1,bt=!1,Pt=!0;(Be=>{if(Be){ct=!(!Be.completeFeature&&!Be.allFeatures),bt=!!Be.renderTagged;let Ie=Be.suppressWay||Be.excludeWay;Ie===void 0||Ie||(Pt=!1)}})(Ct);let Jt=(Be=>Be.elements?"json":Be.indexOf("=0?"xml":Be.trim().startsWith("{")?"json-raw":"invalid")(ht),re=new Te,_e=[];Jt==="json-raw"&&(Jt=(ht=JSON.parse(ht)).elements?"json":"invalid"),Jt==="json"?(Be=>{for(let Ie of Be.elements)switch(Ie.type){case"node":let ne=new Wi(Ie.id,re);Ie.tags&&ne.addTags(Ie.tags),ne.addProps(De(Ie,["id","type","tags","lat","lon"])),ne.setLatLng(Ie);break;case"way":let ye=new Ar(Ie.id,re);if(Ie.tags&&ye.addTags(Ie.tags),ye.addProps(De(Ie,["id","type","tags","nodes","geometry"])),Ie.nodes)for(let Ge of Ie.nodes)ye.addNodeRef(Ge);else Ie.geometry&&ye.setLatLngArray(Ie.geometry);break;case"relation":let ve=new Zt(Ie.id,re);if(Ie.bounds&&ve.setBounds([parseFloat(Ie.bounds.minlon),parseFloat(Ie.bounds.minlat),parseFloat(Ie.bounds.maxlon),parseFloat(Ie.bounds.maxlat)]),Ie.tags&&ve.addTags(Ie.tags),ve.addProps(De(Ie,["id","type","tags","bounds","members"])),Ie.members)for(let Ge of Ie.members)ve.addMember(Ge)}})(ht):Jt==="xml"&&(Be=>{let Ie=new tr({progressive:!0});Ie.on("",ne=>{let ye=new Wi(ne.id,re);for(let[ve,Ge]of Object.entries(ne))!ve.startsWith("$")&&["id","lon","lat"].indexOf(ve)<0&&ye.addProp(ve,Ge);if(ye.setLatLng(ne),ne.$innerNodes)for(let ve of ne.$innerNodes)ve.$tag==="tag"&&ye.addTag(ve.k,ve.v)}),Ie.on("",ne=>{let ye=new Ar(ne.id,re);for(let[ve,Ge]of Object.entries(ne))!ve.startsWith("$")&&["id"].indexOf(ve)<0&&ye.addProp(ve,Ge);if(ne.$innerNodes)for(let ve of ne.$innerNodes)ve.$tag==="nd"?ve.lon&&ve.lat?ye.addLatLng(ve):ve.ref&&ye.addNodeRef(ve.ref):ve.$tag==="tag"&&ye.addTag(ve.k,ve.v)}),Ie.on("",ne=>{new Zt(ne.id,re)}),Ie.on("",(ne,ye)=>{let ve=re.get(`relation/${ye.id}`),Ge={type:ne.type,role:ne.role?ne.role:"",ref:ne.ref};if(ne.lat&&ne.lon){Ge.lat=ne.lat,Ge.lon=ne.lon,Ge.tags={};for(let[Ri,Qi]of Object.entries(ne))!Ri.startsWith("$")&&["type","lat","lon"].indexOf(Ri)<0&&(Ge[Ri]=Qi)}if(ne.$innerNodes){let Ri=[],Qi=[];for(let He of ne.$innerNodes)He.lat&&He.lon?Ri.push(He):Qi.push(He.ref);Ri.length>0?Ge.geometry=Ri:Qi.length>0&&(Ge.nodes=Qi)}ve.addMember(Ge)}),Ie.on("",(ne,ye)=>{re.get(`relation/${ye.id}`).setBounds([parseFloat(ne.minlon),parseFloat(ne.minlat),parseFloat(ne.maxlon),parseFloat(ne.maxlat)])}),Ie.on("",(ne,ye)=>{re.get(`relation/${ye.id}`).addTag(ne.k,ne.v)}),Ie.parse(Be)})(ht),re.bindAll();for(let Be of re.values())if(Be.refCount<=0||Be.hasTag&&bt&&!(Be instanceof Ar&&Pt)){let Ie=Be.toFeatureArray();if(Be instanceof Zt&&!ct&&Ie.length>0)return Ie[0].geometry;_e=_e.concat(Ie)}return{type:"FeatureCollection",features:_e}},an=t(Ui);let Fr=["topojson","osm","kml","gpx","tcx","csv","tsv","polyline"];class $r{constructor(Ct,ct,bt={}){this.blankGeoJSON=()=>({type:"FeatureCollection",features:[]}),this._rawData=ct,this._format=Ct,this._options=bt;let Pt={topojson:this.loadTopoJson,osm:this.loadOsm,kml:this.loadXml,gpx:this.loadXml,tcx:this.loadXml,csv:this.loadCsv,tsv:this.loadCsv,polyline:this.loadPolyline};this._conversionFn=Pt[Ct]}async convert(){return this._conversionFn?this._conversionFn():new Promise((Ct,ct)=>ct(`No converter exists for ${this._format}`))}async loadXml(){return _i[this._format](new DOMParser().parseFromString(this._rawData,"text/xml"))}async loadCsv(){let Ct=this._options.csvOptions||{};return this._format==="tsv"&&(Ct.delimiter=" "),await new Promise((ct,bt)=>{Bt.csv2geojson(this._rawData,Ct,(Pt,Jt)=>{Pt?bt(Pt):ct(Jt)})})}async loadTopoJson(){let Ct={};try{Ct=JSON.parse(this._rawData)}catch{throw"Invalid TopoJson"}let ct=this.blankGeoJSON();return Ct.type==="Topology"&&Ct.objects!==void 0&&(ct={type:"FeatureCollection",features:ct.features=Object.keys(Ct.objects).map(bt=>{return Pt=Ct,typeof(Jt=bt)=="string"&&(Jt=Pt.objects[Jt]),Jt.type==="GeometryCollection"?{type:"FeatureCollection",features:Jt.geometries.map(function(re){return ee(Pt,re)})}:ee(Pt,Jt);var Pt,Jt}).reduce((bt,Pt)=>[...bt,...Pt.features],[])}),ct}async loadOsm(){return an(this._rawData)}async loadPolyline(){let Ct=this._options.polylineOptions||{};return await new Promise((ct,bt)=>{try{let Pt=xi.toGeoJSON(this._rawData,Ct.precision),Jt=Pt;Ct.type==="point"?Pt.coordinates.length===1?Jt={type:"Point",coordinates:Pt.coordinates[0]}:console.warn("Cannot convert polyline to "+Ct.type):Ct.type==="polygon"&&(Pt.coordinates[0][0]===Pt.coordinates[Pt.coordinates.length-1][0]&&Pt.coordinates[0][1]===Pt.coordinates[Pt.coordinates.length-1][1]?Jt={type:"Polygon",coordinates:[Pt.coordinates]}:console.warn("Cannot convert polyline to "+Ct.type)),ct({type:"FeatureCollection",features:[{type:"Feature",geometry:Jt,properties:Ct.properties||{}}]})}catch(Pt){bt(Pt)}})}}var Ir=null;try{var hn=typeof xd<"u"&&typeof xd.require=="function"&&vd("worker_threads")||typeof __non_webpack_require__=="function"&&__non_webpack_require__("worker_threads")||typeof vd=="function"&&vd("worker_threads");Ir=hn.Worker}catch{}function pn(ht,Ct,ct){var bt=function(re,_e){return Buffer.from(re,"base64").toString("utf8")}(ht),Pt=bt.indexOf(` -`,10)+1,Jt=bt.substring(Pt)+"";return function(re){return new Ir(Jt,Object.assign({},re,{eval:!0}))}}function An(ht,Ct,ct){var bt=function(_e,Be){return atob(_e)}(ht),Pt=bt.indexOf(` -`,10)+1,Jt=bt.substring(Pt)+"",re=new Blob([Jt],{type:"application/javascript"});return URL.createObjectURL(re)}var pa=Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]",Rs,Or=(Rs="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewoJJ3VzZSBzdHJpY3QnOwoKCWZ1bmN0aW9uIGdldERlZmF1bHRFeHBvcnRGcm9tQ2pzICh4KSB7CgkJcmV0dXJuIHggJiYgeC5fX2VzTW9kdWxlICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh4LCAnZGVmYXVsdCcpID8geFsnZGVmYXVsdCddIDogeDsKCX0KCglmdW5jdGlvbiBnZXRBdWdtZW50ZWROYW1lc3BhY2UobikgewoJICBpZiAobi5fX2VzTW9kdWxlKSByZXR1cm4gbjsKCSAgdmFyIGYgPSBuLmRlZmF1bHQ7CgkJaWYgKHR5cGVvZiBmID09ICJmdW5jdGlvbiIpIHsKCQkJdmFyIGEgPSBmdW5jdGlvbiBhICgpIHsKCQkJCWlmICh0aGlzIGluc3RhbmNlb2YgYSkgewoJICAgICAgICByZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QoZiwgYXJndW1lbnRzLCB0aGlzLmNvbnN0cnVjdG9yKTsKCQkJCX0KCQkJCXJldHVybiBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgkJCX07CgkJCWEucHJvdG90eXBlID0gZi5wcm90b3R5cGU7CgkgIH0gZWxzZSBhID0ge307CgkgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCAnX19lc01vZHVsZScsIHt2YWx1ZTogdHJ1ZX0pOwoJCU9iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24gKGspIHsKCQkJdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sIGspOwoJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwgaywgZC5nZXQgPyBkIDogewoJCQkJZW51bWVyYWJsZTogdHJ1ZSwKCQkJCWdldDogZnVuY3Rpb24gKCkgewoJCQkJCXJldHVybiBuW2tdOwoJCQkJfQoJCQl9KTsKCQl9KTsKCQlyZXR1cm4gYTsKCX0KCglmdW5jdGlvbiBvYmplY3RDb252ZXJ0ZXIoY29sdW1ucykgewoJICByZXR1cm4gbmV3IEZ1bmN0aW9uKCJkIiwgInJldHVybiB7IiArIGNvbHVtbnMubWFwKGZ1bmN0aW9uKG5hbWUsIGkpIHsKCSAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobmFtZSkgKyAiOiBkWyIgKyBpICsgIl0iOwoJICB9KS5qb2luKCIsIikgKyAifSIpOwoJfQoKCWZ1bmN0aW9uIGN1c3RvbUNvbnZlcnRlcihjb2x1bW5zLCBmKSB7CgkgIHZhciBvYmplY3QgPSBvYmplY3RDb252ZXJ0ZXIoY29sdW1ucyk7CgkgIHJldHVybiBmdW5jdGlvbihyb3csIGkpIHsKCSAgICByZXR1cm4gZihvYmplY3Qocm93KSwgaSwgY29sdW1ucyk7CgkgIH07Cgl9CgoJLy8gQ29tcHV0ZSB1bmlxdWUgY29sdW1ucyBpbiBvcmRlciBvZiBkaXNjb3ZlcnkuCglmdW5jdGlvbiBpbmZlckNvbHVtbnMocm93cykgewoJICB2YXIgY29sdW1uU2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKSwKCSAgICAgIGNvbHVtbnMgPSBbXTsKCgkgIHJvd3MuZm9yRWFjaChmdW5jdGlvbihyb3cpIHsKCSAgICBmb3IgKHZhciBjb2x1bW4gaW4gcm93KSB7CgkgICAgICBpZiAoIShjb2x1bW4gaW4gY29sdW1uU2V0KSkgewoJICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uU2V0W2NvbHVtbl0gPSBjb2x1bW4pOwoJICAgICAgfQoJICAgIH0KCSAgfSk7CgoJICByZXR1cm4gY29sdW1uczsKCX0KCglmdW5jdGlvbiBkc3YkMShkZWxpbWl0ZXIpIHsKCSAgdmFyIHJlRm9ybWF0ID0gbmV3IFJlZ0V4cCgiW1wiIiArIGRlbGltaXRlciArICJcbl0iKSwKCSAgICAgIGRlbGltaXRlckNvZGUgPSBkZWxpbWl0ZXIuY2hhckNvZGVBdCgwKTsKCgkgIGZ1bmN0aW9uIHBhcnNlKHRleHQsIGYpIHsKCSAgICB2YXIgY29udmVydCwgY29sdW1ucywgcm93cyA9IHBhcnNlUm93cyh0ZXh0LCBmdW5jdGlvbihyb3csIGkpIHsKCSAgICAgIGlmIChjb252ZXJ0KSByZXR1cm4gY29udmVydChyb3csIGkgLSAxKTsKCSAgICAgIGNvbHVtbnMgPSByb3csIGNvbnZlcnQgPSBmID8gY3VzdG9tQ29udmVydGVyKHJvdywgZikgOiBvYmplY3RDb252ZXJ0ZXIocm93KTsKCSAgICB9KTsKCSAgICByb3dzLmNvbHVtbnMgPSBjb2x1bW5zOwoJICAgIHJldHVybiByb3dzOwoJICB9CgoJICBmdW5jdGlvbiBwYXJzZVJvd3ModGV4dCwgZikgewoJICAgIHZhciBFT0wgPSB7fSwgLy8gc2VudGluZWwgdmFsdWUgZm9yIGVuZC1vZi1saW5lCgkgICAgICAgIEVPRiA9IHt9LCAvLyBzZW50aW5lbCB2YWx1ZSBmb3IgZW5kLW9mLWZpbGUKCSAgICAgICAgcm93cyA9IFtdLCAvLyBvdXRwdXQgcm93cwoJICAgICAgICBOID0gdGV4dC5sZW5ndGgsCgkgICAgICAgIEkgPSAwLCAvLyBjdXJyZW50IGNoYXJhY3RlciBpbmRleAoJICAgICAgICBuID0gMCwgLy8gdGhlIGN1cnJlbnQgbGluZSBudW1iZXIKCSAgICAgICAgdCwgLy8gdGhlIGN1cnJlbnQgdG9rZW4KCSAgICAgICAgZW9sOyAvLyBpcyB0aGUgY3VycmVudCB0b2tlbiBmb2xsb3dlZCBieSBFT0w/CgoJICAgIGZ1bmN0aW9uIHRva2VuKCkgewoJICAgICAgaWYgKEkgPj0gTikgcmV0dXJuIEVPRjsgLy8gc3BlY2lhbCBjYXNlOiBlbmQgb2YgZmlsZQoJICAgICAgaWYgKGVvbCkgcmV0dXJuIGVvbCA9IGZhbHNlLCBFT0w7IC8vIHNwZWNpYWwgY2FzZTogZW5kIG9mIGxpbmUKCgkgICAgICAvLyBzcGVjaWFsIGNhc2U6IHF1b3RlcwoJICAgICAgdmFyIGogPSBJLCBjOwoJICAgICAgaWYgKHRleHQuY2hhckNvZGVBdChqKSA9PT0gMzQpIHsKCSAgICAgICAgdmFyIGkgPSBqOwoJICAgICAgICB3aGlsZSAoaSsrIDwgTikgewoJICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQoaSkgPT09IDM0KSB7CgkgICAgICAgICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMzQpIGJyZWFrOwoJICAgICAgICAgICAgKytpOwoJICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBJID0gaSArIDI7CgkgICAgICAgIGMgPSB0ZXh0LmNoYXJDb2RlQXQoaSArIDEpOwoJICAgICAgICBpZiAoYyA9PT0gMTMpIHsKCSAgICAgICAgICBlb2wgPSB0cnVlOwoJICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQoaSArIDIpID09PSAxMCkgKytJOwoJICAgICAgICB9IGVsc2UgaWYgKGMgPT09IDEwKSB7CgkgICAgICAgICAgZW9sID0gdHJ1ZTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGV4dC5zbGljZShqICsgMSwgaSkucmVwbGFjZSgvIiIvZywgIlwiIik7CgkgICAgICB9CgoJICAgICAgLy8gY29tbW9uIGNhc2U6IGZpbmQgbmV4dCBkZWxpbWl0ZXIgb3IgbmV3bGluZQoJICAgICAgd2hpbGUgKEkgPCBOKSB7CgkgICAgICAgIHZhciBrID0gMTsKCSAgICAgICAgYyA9IHRleHQuY2hhckNvZGVBdChJKyspOwoJICAgICAgICBpZiAoYyA9PT0gMTApIGVvbCA9IHRydWU7IC8vIFxuCgkgICAgICAgIGVsc2UgaWYgKGMgPT09IDEzKSB7IGVvbCA9IHRydWU7IGlmICh0ZXh0LmNoYXJDb2RlQXQoSSkgPT09IDEwKSArK0ksICsrazsgfSAvLyBccnxcclxuCgkgICAgICAgIGVsc2UgaWYgKGMgIT09IGRlbGltaXRlckNvZGUpIGNvbnRpbnVlOwoJICAgICAgICByZXR1cm4gdGV4dC5zbGljZShqLCBJIC0gayk7CgkgICAgICB9CgoJICAgICAgLy8gc3BlY2lhbCBjYXNlOiBsYXN0IHRva2VuIGJlZm9yZSBFT0YKCSAgICAgIHJldHVybiB0ZXh0LnNsaWNlKGopOwoJICAgIH0KCgkgICAgd2hpbGUgKCh0ID0gdG9rZW4oKSkgIT09IEVPRikgewoJICAgICAgdmFyIGEgPSBbXTsKCSAgICAgIHdoaWxlICh0ICE9PSBFT0wgJiYgdCAhPT0gRU9GKSB7CgkgICAgICAgIGEucHVzaCh0KTsKCSAgICAgICAgdCA9IHRva2VuKCk7CgkgICAgICB9CgkgICAgICBpZiAoZiAmJiAoYSA9IGYoYSwgbisrKSkgPT0gbnVsbCkgY29udGludWU7CgkgICAgICByb3dzLnB1c2goYSk7CgkgICAgfQoKCSAgICByZXR1cm4gcm93czsKCSAgfQoKCSAgZnVuY3Rpb24gZm9ybWF0KHJvd3MsIGNvbHVtbnMpIHsKCSAgICBpZiAoY29sdW1ucyA9PSBudWxsKSBjb2x1bW5zID0gaW5mZXJDb2x1bW5zKHJvd3MpOwoJICAgIHJldHVybiBbY29sdW1ucy5tYXAoZm9ybWF0VmFsdWUpLmpvaW4oZGVsaW1pdGVyKV0uY29uY2F0KHJvd3MubWFwKGZ1bmN0aW9uKHJvdykgewoJICAgICAgcmV0dXJuIGNvbHVtbnMubWFwKGZ1bmN0aW9uKGNvbHVtbikgewoJICAgICAgICByZXR1cm4gZm9ybWF0VmFsdWUocm93W2NvbHVtbl0pOwoJICAgICAgfSkuam9pbihkZWxpbWl0ZXIpOwoJICAgIH0pKS5qb2luKCJcbiIpOwoJICB9CgoJICBmdW5jdGlvbiBmb3JtYXRSb3dzKHJvd3MpIHsKCSAgICByZXR1cm4gcm93cy5tYXAoZm9ybWF0Um93KS5qb2luKCJcbiIpOwoJICB9CgoJICBmdW5jdGlvbiBmb3JtYXRSb3cocm93KSB7CgkgICAgcmV0dXJuIHJvdy5tYXAoZm9ybWF0VmFsdWUpLmpvaW4oZGVsaW1pdGVyKTsKCSAgfQoKCSAgZnVuY3Rpb24gZm9ybWF0VmFsdWUodGV4dCkgewoJICAgIHJldHVybiB0ZXh0ID09IG51bGwgPyAiIgoJICAgICAgICA6IHJlRm9ybWF0LnRlc3QodGV4dCArPSAiIikgPyAiXCIiICsgdGV4dC5yZXBsYWNlKC9cIi9nLCAiXCJcIiIpICsgIlwiIgoJICAgICAgICA6IHRleHQ7CgkgIH0KCgkgIHJldHVybiB7CgkgICAgcGFyc2U6IHBhcnNlLAoJICAgIHBhcnNlUm93czogcGFyc2VSb3dzLAoJICAgIGZvcm1hdDogZm9ybWF0LAoJICAgIGZvcm1hdFJvd3M6IGZvcm1hdFJvd3MKCSAgfTsKCX0KCgl2YXIgY3N2ID0gZHN2JDEoIiwiKTsKCgl2YXIgY3N2UGFyc2UgPSBjc3YucGFyc2U7Cgl2YXIgY3N2UGFyc2VSb3dzID0gY3N2LnBhcnNlUm93czsKCXZhciBjc3ZGb3JtYXQgPSBjc3YuZm9ybWF0OwoJdmFyIGNzdkZvcm1hdFJvd3MgPSBjc3YuZm9ybWF0Um93czsKCgl2YXIgdHN2ID0gZHN2JDEoIlx0Iik7CgoJdmFyIHRzdlBhcnNlID0gdHN2LnBhcnNlOwoJdmFyIHRzdlBhcnNlUm93cyA9IHRzdi5wYXJzZVJvd3M7Cgl2YXIgdHN2Rm9ybWF0ID0gdHN2LmZvcm1hdDsKCXZhciB0c3ZGb3JtYXRSb3dzID0gdHN2LmZvcm1hdFJvd3M7CgoJdmFyIGQzRHN2ID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoewoJCV9fcHJvdG9fXzogbnVsbCwKCQljc3ZGb3JtYXQ6IGNzdkZvcm1hdCwKCQljc3ZGb3JtYXRSb3dzOiBjc3ZGb3JtYXRSb3dzLAoJCWNzdlBhcnNlOiBjc3ZQYXJzZSwKCQljc3ZQYXJzZVJvd3M6IGNzdlBhcnNlUm93cywKCQlkc3ZGb3JtYXQ6IGRzdiQxLAoJCXRzdkZvcm1hdDogdHN2Rm9ybWF0LAoJCXRzdkZvcm1hdFJvd3M6IHRzdkZvcm1hdFJvd3MsCgkJdHN2UGFyc2U6IHRzdlBhcnNlLAoJCXRzdlBhcnNlUm93czogdHN2UGFyc2VSb3dzCgl9KTsKCgl2YXIgcmVxdWlyZSQkMCA9IC8qQF9fUFVSRV9fKi9nZXRBdWdtZW50ZWROYW1lc3BhY2UoZDNEc3YpOwoKCXZhciBzZXhhZ2VzaW1hbCQxID0ge2V4cG9ydHM6IHt9fTsKCglzZXhhZ2VzaW1hbCQxLmV4cG9ydHMgPSBlbGVtZW50OwoJc2V4YWdlc2ltYWwkMS5leHBvcnRzLnBhaXIgPSBwYWlyOwoJc2V4YWdlc2ltYWwkMS5leHBvcnRzLmZvcm1hdCA9IGZvcm1hdDsKCXNleGFnZXNpbWFsJDEuZXhwb3J0cy5mb3JtYXRQYWlyID0gZm9ybWF0UGFpcjsKCXNleGFnZXNpbWFsJDEuZXhwb3J0cy5jb29yZFRvRE1TID0gY29vcmRUb0RNUzsKCgoJZnVuY3Rpb24gZWxlbWVudChpbnB1dCwgZGltcykgewoJICB2YXIgcmVzdWx0ID0gc2VhcmNoKGlucHV0LCBkaW1zKTsKCSAgcmV0dXJuIChyZXN1bHQgPT09IG51bGwpID8gbnVsbCA6IHJlc3VsdC52YWw7Cgl9CgoKCWZ1bmN0aW9uIGZvcm1hdFBhaXIoaW5wdXQpIHsKCSAgcmV0dXJuIGZvcm1hdChpbnB1dC5sYXQsICdsYXQnKSArICcgJyArIGZvcm1hdChpbnB1dC5sb24sICdsb24nKTsKCX0KCgoJLy8gSXMgMCBOb3J0aCBvciBTb3V0aD8KCWZ1bmN0aW9uIGZvcm1hdChpbnB1dCwgZGltKSB7CgkgIHZhciBkbXMgPSBjb29yZFRvRE1TKGlucHV0LCBkaW0pOwoJICByZXR1cm4gZG1zLndob2xlICsgJ8KwICcgKwoJICAgIChkbXMubWludXRlcyA/IGRtcy5taW51dGVzICsgJ1wnICcgOiAnJykgKwoJICAgIChkbXMuc2Vjb25kcyA/IGRtcy5zZWNvbmRzICsgJyIgJyA6ICcnKSArIGRtcy5kaXI7Cgl9CgoKCWZ1bmN0aW9uIGNvb3JkVG9ETVMoaW5wdXQsIGRpbSkgewoJICB2YXIgZGlycyA9IHsgbGF0OiBbJ04nLCAnUyddLCBsb246IFsnRScsICdXJ10gfVtkaW1dIHx8ICcnOwoJICB2YXIgZGlyID0gZGlyc1tpbnB1dCA+PSAwID8gMCA6IDFdOwoJICB2YXIgYWJzID0gTWF0aC5hYnMoaW5wdXQpOwoJICB2YXIgd2hvbGUgPSBNYXRoLmZsb29yKGFicyk7CgkgIHZhciBmcmFjdGlvbiA9IGFicyAtIHdob2xlOwoJICB2YXIgZnJhY3Rpb25NaW51dGVzID0gZnJhY3Rpb24gKiA2MDsKCSAgdmFyIG1pbnV0ZXMgPSBNYXRoLmZsb29yKGZyYWN0aW9uTWludXRlcyk7CgkgIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcigoZnJhY3Rpb25NaW51dGVzIC0gbWludXRlcykgKiA2MCk7CgoJICByZXR1cm4gewoJICAgIHdob2xlOiB3aG9sZSwKCSAgICBtaW51dGVzOiBtaW51dGVzLAoJICAgIHNlY29uZHM6IHNlY29uZHMsCgkgICAgZGlyOiBkaXIKCSAgfTsKCX0KCgoJZnVuY3Rpb24gc2VhcmNoKGlucHV0LCBkaW1zKSB7CgkgIGlmICghZGltcykgZGltcyA9ICdOU0VXJzsKCSAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHJldHVybiBudWxsOwoKCSAgaW5wdXQgPSBpbnB1dC50b1VwcGVyQ2FzZSgpOwoJICB2YXIgcmVnZXggPSAvXltcc1wsXSooW05TRVddKT9ccyooW1wtfFzigJR8XOKAlV0/WzAtOS5dKylbwrDCusuaXT9ccyooPzooWzAtOS5dKylbJ+KAmeKAsuKAmF1ccyopPyg/OihbMC05Ll0rKSg/OicnfCJ84oCdfOKAsylccyopPyhbTlNFV10pPy87CgoJICB2YXIgbSA9IGlucHV0Lm1hdGNoKHJlZ2V4KTsKCSAgaWYgKCFtKSByZXR1cm4gbnVsbDsgIC8vIG5vIG1hdGNoCgoJICB2YXIgbWF0Y2hlZCA9IG1bMF07CgoJICAvLyBleHRyYWN0IGRpbWVuc2lvbi4uIG1bMV0gPSBsZWFkaW5nLCBtWzVdID0gdHJhaWxpbmcKCSAgdmFyIGRpbTsKCSAgaWYgKG1bMV0gJiYgbVs1XSkgeyAgICAgICAgICAgICAgICAgLy8gaWYgbWF0Y2hlZCBib3RoLi4KCSAgICBkaW0gPSBtWzFdOyAgICAgICAgICAgICAgICAgICAgICAgLy8ga2VlcCBsZWFkaW5nCgkgICAgbWF0Y2hlZCA9IG1hdGNoZWQuc2xpY2UoMCwgLTEpOyAgIC8vIHJlbW92ZSB0cmFpbGluZyBkaW1lbnNpb24gZnJvbSBtYXRjaAoJICB9IGVsc2UgewoJICAgIGRpbSA9IG1bMV0gfHwgbVs1XTsKCSAgfQoKCSAgLy8gaWYgdW5yZWNvZ25pemVkIGRpbWVuc2lvbgoJICBpZiAoZGltICYmIGRpbXMuaW5kZXhPZihkaW0pID09PSAtMSkgcmV0dXJuIG51bGw7CgoJICAvLyBleHRyYWN0IERNUwoJICB2YXIgZGVnID0gbVsyXSA/IHBhcnNlRmxvYXQobVsyXSkgOiAwOwoJICB2YXIgbWluID0gbVszXSA/IHBhcnNlRmxvYXQobVszXSkgLyA2MCA6IDA7CgkgIHZhciBzZWMgPSBtWzRdID8gcGFyc2VGbG9hdChtWzRdKSAvIDM2MDAgOiAwOwoJICB2YXIgc2lnbiA9IChkZWcgPCAwKSA/IC0xIDogMTsKCSAgaWYgKGRpbSA9PT0gJ1MnIHx8IGRpbSA9PT0gJ1cnKSBzaWduICo9IC0xOwoKCSAgcmV0dXJuIHsKCSAgICB2YWw6IChNYXRoLmFicyhkZWcpICsgbWluICsgc2VjKSAqIHNpZ24sCgkgICAgZGltOiBkaW0sCgkgICAgbWF0Y2hlZDogbWF0Y2hlZCwKCSAgICByZW1haW46IGlucHV0LnNsaWNlKG1hdGNoZWQubGVuZ3RoKQoJICB9OwoJfQoKCglmdW5jdGlvbiBwYWlyKGlucHV0LCBkaW1zKSB7CgkgIGlucHV0ID0gaW5wdXQudHJpbSgpOwoJICB2YXIgb25lID0gc2VhcmNoKGlucHV0LCBkaW1zKTsKCSAgaWYgKCFvbmUpIHJldHVybiBudWxsOwoKCSAgaW5wdXQgPSBvbmUucmVtYWluLnRyaW0oKTsKCSAgdmFyIHR3byA9IHNlYXJjaChpbnB1dCwgZGltcyk7CgkgIGlmICghdHdvIHx8IHR3by5yZW1haW4pIHJldHVybiBudWxsOwoKCSAgaWYgKG9uZS5kaW0pIHsKCSAgICByZXR1cm4gc3dhcGRpbShvbmUudmFsLCB0d28udmFsLCBvbmUuZGltKTsKCSAgfSBlbHNlIHsKCSAgICByZXR1cm4gW29uZS52YWwsIHR3by52YWxdOwoJICB9Cgl9CgoKCWZ1bmN0aW9uIHN3YXBkaW0oYSwgYiwgZGltKSB7CgkgIGlmIChkaW0gPT09ICdOJyB8fCBkaW0gPT09ICdTJykgcmV0dXJuIFthLCBiXTsKCSAgaWYgKGRpbSA9PT0gJ1cnIHx8IGRpbSA9PT0gJ0UnKSByZXR1cm4gW2IsIGFdOwoJfQoKCXZhciBzZXhhZ2VzaW1hbEV4cG9ydHMgPSBzZXhhZ2VzaW1hbCQxLmV4cG9ydHM7CgoJdmFyIGRzdiA9IHJlcXVpcmUkJDAsCgkgICAgc2V4YWdlc2ltYWwgPSBzZXhhZ2VzaW1hbEV4cG9ydHM7CgoJdmFyIGxhdFJlZ2V4ID0gLyhMYXQpKGl0dWRlKT8vZ2ksCgkgICAgbG9uUmVnZXggPSAvKEwpKG9ufG5nKShnaXR1ZGUpPy9pOwoKCWZ1bmN0aW9uIGd1ZXNzSGVhZGVyKHJvdywgcmVnZXhwKSB7CgkgICAgdmFyIG5hbWUsIG1hdGNoLCBzY29yZTsKCSAgICBmb3IgKHZhciBmIGluIHJvdykgewoJICAgICAgICBtYXRjaCA9IGYubWF0Y2gocmVnZXhwKTsKCSAgICAgICAgaWYgKG1hdGNoICYmICghbmFtZSB8fCBtYXRjaFswXS5sZW5ndGggLyBmLmxlbmd0aCA+IHNjb3JlKSkgewoJICAgICAgICAgICAgc2NvcmUgPSBtYXRjaFswXS5sZW5ndGggLyBmLmxlbmd0aDsKCSAgICAgICAgICAgIG5hbWUgPSBmOwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiBuYW1lOwoJfQoKCWZ1bmN0aW9uIGd1ZXNzTGF0SGVhZGVyKHJvdykgeyByZXR1cm4gZ3Vlc3NIZWFkZXIocm93LCBsYXRSZWdleCk7IH0KCWZ1bmN0aW9uIGd1ZXNzTG9uSGVhZGVyKHJvdykgeyByZXR1cm4gZ3Vlc3NIZWFkZXIocm93LCBsb25SZWdleCk7IH0KCglmdW5jdGlvbiBpc0xhdChmKSB7IHJldHVybiAhIWYubWF0Y2gobGF0UmVnZXgpOyB9CglmdW5jdGlvbiBpc0xvbihmKSB7IHJldHVybiAhIWYubWF0Y2gobG9uUmVnZXgpOyB9CgoJZnVuY3Rpb24ga2V5Q291bnQobykgewoJICAgIHJldHVybiAodHlwZW9mIG8gPT0gJ29iamVjdCcpID8gT2JqZWN0LmtleXMobykubGVuZ3RoIDogMDsKCX0KCglmdW5jdGlvbiBhdXRvRGVsaW1pdGVyKHgpIHsKCSAgICB2YXIgZGVsaW1pdGVycyA9IFsnLCcsICc7JywgJ1x0JywgJ3wnXTsKCSAgICB2YXIgcmVzdWx0cyA9IFtdOwoKCSAgICBkZWxpbWl0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGRlbGltaXRlcikgewoJICAgICAgICB2YXIgcmVzID0gZHN2LmRzdkZvcm1hdChkZWxpbWl0ZXIpLnBhcnNlKHgpOwoJICAgICAgICBpZiAocmVzLmxlbmd0aCA+PSAxKSB7CgkgICAgICAgICAgICB2YXIgY291bnQgPSBrZXlDb3VudChyZXNbMF0pOwoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgICAgICBpZiAoa2V5Q291bnQocmVzW2ldKSAhPT0gY291bnQpIHJldHVybjsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7CgkgICAgICAgICAgICAgICAgZGVsaW1pdGVyOiBkZWxpbWl0ZXIsCgkgICAgICAgICAgICAgICAgYXJpdHk6IE9iamVjdC5rZXlzKHJlc1swXSkubGVuZ3RoLAoJICAgICAgICAgICAgfSk7CgkgICAgICAgIH0KCSAgICB9KTsKCgkgICAgaWYgKHJlc3VsdHMubGVuZ3RoKSB7CgkgICAgICAgIHJldHVybiByZXN1bHRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKCSAgICAgICAgICAgIHJldHVybiBiLmFyaXR5IC0gYS5hcml0eTsKCSAgICAgICAgfSlbMF0uZGVsaW1pdGVyOwoJICAgIH0gZWxzZSB7CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH0KCX0KCgkvKioKCSAqIFNpbGx5IHN0b3BnYXAgZm9yIGRzdiB0byBkMy1kc3YgdXBncmFkZQoJICoKCSAqIEBwYXJhbSB7QXJyYXl9IHggZHN2IG91dHB1dAoJICogQHJldHVybnMge0FycmF5fSBhcnJheSB3aXRob3V0IGNvbHVtbnMgbWVtYmVyCgkgKi8KCWZ1bmN0aW9uIGRlbGV0ZUNvbHVtbnMoeCkgewoJICAgIGRlbGV0ZSB4LmNvbHVtbnM7CgkgICAgcmV0dXJuIHg7Cgl9CgoJZnVuY3Rpb24gYXV0byh4KSB7CgkgICAgdmFyIGRlbGltaXRlciA9IGF1dG9EZWxpbWl0ZXIoeCk7CgkgICAgaWYgKCFkZWxpbWl0ZXIpIHJldHVybiBudWxsOwoJICAgIHJldHVybiBkZWxldGVDb2x1bW5zKGRzdi5kc3ZGb3JtYXQoZGVsaW1pdGVyKS5wYXJzZSh4KSk7Cgl9CgoJZnVuY3Rpb24gY3N2Mmdlb2pzb24oeCwgb3B0aW9ucywgY2FsbGJhY2spIHsKCgkgICAgaWYgKCFjYWxsYmFjaykgewoJICAgICAgICBjYWxsYmFjayA9IG9wdGlvbnM7CgkgICAgICAgIG9wdGlvbnMgPSB7fTsKCSAgICB9CgoJICAgIG9wdGlvbnMuZGVsaW1pdGVyID0gb3B0aW9ucy5kZWxpbWl0ZXIgfHwgJywnOwoKCSAgICB2YXIgbGF0ZmllbGQgPSBvcHRpb25zLmxhdGZpZWxkIHx8ICcnLAoJICAgICAgICBsb25maWVsZCA9IG9wdGlvbnMubG9uZmllbGQgfHwgJycsCgkgICAgICAgIGNycyA9IG9wdGlvbnMuY3JzIHx8ICcnOwoKCSAgICB2YXIgZmVhdHVyZXMgPSBbXSwKCSAgICAgICAgZmVhdHVyZWNvbGxlY3Rpb24gPSB7dHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJywgZmVhdHVyZXM6IGZlYXR1cmVzfTsKCgkgICAgaWYgKGNycyAhPT0gJycpIHsKCSAgICAgICAgZmVhdHVyZWNvbGxlY3Rpb24uY3JzID0ge3R5cGU6ICduYW1lJywgcHJvcGVydGllczoge25hbWU6IGNyc319OwoJICAgIH0KCgkgICAgaWYgKG9wdGlvbnMuZGVsaW1pdGVyID09PSAnYXV0bycgJiYgdHlwZW9mIHggPT0gJ3N0cmluZycpIHsKCSAgICAgICAgb3B0aW9ucy5kZWxpbWl0ZXIgPSBhdXRvRGVsaW1pdGVyKHgpOwoJICAgICAgICBpZiAoIW9wdGlvbnMuZGVsaW1pdGVyKSB7CgkgICAgICAgICAgICBjYWxsYmFjayh7CgkgICAgICAgICAgICAgICAgdHlwZTogJ0Vycm9yJywKCSAgICAgICAgICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGF1dG9kZXRlY3QgZGVsaW1pdGVyJwoJICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICByZXR1cm47CgkgICAgICAgIH0KCSAgICB9CgoJICAgIHZhciBudW1lcmljRmllbGRzID0gb3B0aW9ucy5udW1lcmljRmllbGRzID8gb3B0aW9ucy5udW1lcmljRmllbGRzLnNwbGl0KCcsJykgOiBudWxsOwoKCSAgICB2YXIgcGFyc2VkID0gKHR5cGVvZiB4ID09ICdzdHJpbmcnKSA/CgkgICAgICAgIGRzdi5kc3ZGb3JtYXQob3B0aW9ucy5kZWxpbWl0ZXIpLnBhcnNlKHgsIGZ1bmN0aW9uIChkKSB7CgkgICAgICAgICAgICBpZiAobnVtZXJpY0ZpZWxkcykgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChudW1lcmljRmllbGRzLmluY2x1ZGVzKGtleSkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGRba2V5XSA9ICtkW2tleV07CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXR1cm4gZDsKCSAgICAgICAgfSkgOiB4OwoKCSAgICBpZiAoIXBhcnNlZC5sZW5ndGgpIHsKCSAgICAgICAgY2FsbGJhY2sobnVsbCwgZmVhdHVyZWNvbGxlY3Rpb24pOwoJICAgICAgICByZXR1cm47CgkgICAgfQoKCSAgICB2YXIgZXJyb3JzID0gW107CgkgICAgdmFyIGk7CgoKCSAgICBpZiAoIWxhdGZpZWxkKSBsYXRmaWVsZCA9IGd1ZXNzTGF0SGVhZGVyKHBhcnNlZFswXSk7CgkgICAgaWYgKCFsb25maWVsZCkgbG9uZmllbGQgPSBndWVzc0xvbkhlYWRlcihwYXJzZWRbMF0pOwoJICAgIHZhciBub0dlb21ldHJ5ID0gKCFsYXRmaWVsZCB8fCAhbG9uZmllbGQpOwoKCSAgICBpZiAobm9HZW9tZXRyeSkgewoJICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICBmZWF0dXJlcy5wdXNoKHsKCSAgICAgICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsCgkgICAgICAgICAgICAgICAgcHJvcGVydGllczogcGFyc2VkW2ldLAoJICAgICAgICAgICAgICAgIGdlb21ldHJ5OiBudWxsCgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfQoJICAgICAgICBjYWxsYmFjayhlcnJvcnMubGVuZ3RoID8gZXJyb3JzIDogbnVsbCwgZmVhdHVyZWNvbGxlY3Rpb24pOwoJICAgICAgICByZXR1cm47CgkgICAgfQoKCSAgICBmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIGlmIChwYXJzZWRbaV1bbG9uZmllbGRdICE9PSB1bmRlZmluZWQgJiYKCSAgICAgICAgICAgIHBhcnNlZFtpXVtsYXRmaWVsZF0gIT09IHVuZGVmaW5lZCkgewoKCSAgICAgICAgICAgIHZhciBsb25rID0gcGFyc2VkW2ldW2xvbmZpZWxkXSwKCSAgICAgICAgICAgICAgICBsYXRrID0gcGFyc2VkW2ldW2xhdGZpZWxkXSwKCSAgICAgICAgICAgICAgICBsb25mLCBsYXRmLAoJICAgICAgICAgICAgICAgIGE7CgoJICAgICAgICAgICAgYSA9IHNleGFnZXNpbWFsKGxvbmssICdFVycpOwoJICAgICAgICAgICAgaWYgKGEpIGxvbmsgPSBhOwoJICAgICAgICAgICAgYSA9IHNleGFnZXNpbWFsKGxhdGssICdOUycpOwoJICAgICAgICAgICAgaWYgKGEpIGxhdGsgPSBhOwoKCSAgICAgICAgICAgIGxvbmYgPSBwYXJzZUZsb2F0KGxvbmspOwoJICAgICAgICAgICAgbGF0ZiA9IHBhcnNlRmxvYXQobGF0ayk7CgoJICAgICAgICAgICAgaWYgKGlzTmFOKGxvbmYpIHx8CgkgICAgICAgICAgICAgICAgaXNOYU4obGF0ZikpIHsKCSAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh7CgkgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdBIHJvdyBjb250YWluZWQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgbGF0aXR1ZGUgb3IgbG9uZ2l0dWRlJywKCSAgICAgICAgICAgICAgICAgICAgcm93OiBwYXJzZWRbaV0sCgkgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpCgkgICAgICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pbmNsdWRlTGF0TG9uKSB7CgkgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWRbaV1bbG9uZmllbGRdOwoJICAgICAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkW2ldW2xhdGZpZWxkXTsKCSAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIGZlYXR1cmVzLnB1c2goewoJICAgICAgICAgICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsCgkgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHBhcnNlZFtpXSwKCSAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnk6IHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsCgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogWwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQobG9uZiksCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChsYXRmKQoJICAgICAgICAgICAgICAgICAgICAgICAgXQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9CgoJICAgIGNhbGxiYWNrKGVycm9ycy5sZW5ndGggPyBlcnJvcnMgOiBudWxsLCBmZWF0dXJlY29sbGVjdGlvbik7Cgl9CgoJZnVuY3Rpb24gdG9MaW5lKGdqKSB7CgkgICAgdmFyIGZlYXR1cmVzID0gZ2ouZmVhdHVyZXM7CgkgICAgdmFyIGxpbmUgPSB7CgkgICAgICAgIHR5cGU6ICdGZWF0dXJlJywKCSAgICAgICAgZ2VvbWV0cnk6IHsKCSAgICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJywKCSAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbXQoJICAgICAgICB9CgkgICAgfTsKCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIGxpbmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMucHVzaChmZWF0dXJlc1tpXS5nZW9tZXRyeS5jb29yZGluYXRlcyk7CgkgICAgfQoJICAgIGxpbmUucHJvcGVydGllcyA9IGZlYXR1cmVzLnJlZHVjZShmdW5jdGlvbiAoYWdncmVnYXRlZFByb3BlcnRpZXMsIG5ld0ZlYXR1cmUpIHsKCSAgICAgICAgZm9yICh2YXIga2V5IGluIG5ld0ZlYXR1cmUucHJvcGVydGllcykgewoJICAgICAgICAgICAgaWYgKCFhZ2dyZWdhdGVkUHJvcGVydGllc1trZXldKSB7CgkgICAgICAgICAgICAgICAgYWdncmVnYXRlZFByb3BlcnRpZXNba2V5XSA9IFtdOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgYWdncmVnYXRlZFByb3BlcnRpZXNba2V5XS5wdXNoKG5ld0ZlYXR1cmUucHJvcGVydGllc1trZXldKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gYWdncmVnYXRlZFByb3BlcnRpZXM7CgkgICAgfSwge30pOwoJICAgIHJldHVybiB7CgkgICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsCgkgICAgICAgIGZlYXR1cmVzOiBbbGluZV0KCSAgICB9OwoJfQoKCWZ1bmN0aW9uIHRvUG9seWdvbihnaikgewoJICAgIHZhciBmZWF0dXJlcyA9IGdqLmZlYXR1cmVzOwoJICAgIHZhciBwb2x5ID0gewoJICAgICAgICB0eXBlOiAnRmVhdHVyZScsCgkgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsCgkgICAgICAgICAgICBjb29yZGluYXRlczogW1tdXQoJICAgICAgICB9CgkgICAgfTsKCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIHBvbHkuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ucHVzaChmZWF0dXJlc1tpXS5nZW9tZXRyeS5jb29yZGluYXRlcyk7CgkgICAgfQoJICAgIHBvbHkucHJvcGVydGllcyA9IGZlYXR1cmVzLnJlZHVjZShmdW5jdGlvbiAoYWdncmVnYXRlZFByb3BlcnRpZXMsIG5ld0ZlYXR1cmUpIHsKCSAgICAgICAgZm9yICh2YXIga2V5IGluIG5ld0ZlYXR1cmUucHJvcGVydGllcykgewoJICAgICAgICAgICAgaWYgKCFhZ2dyZWdhdGVkUHJvcGVydGllc1trZXldKSB7CgkgICAgICAgICAgICAgICAgYWdncmVnYXRlZFByb3BlcnRpZXNba2V5XSA9IFtdOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgYWdncmVnYXRlZFByb3BlcnRpZXNba2V5XS5wdXNoKG5ld0ZlYXR1cmUucHJvcGVydGllc1trZXldKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gYWdncmVnYXRlZFByb3BlcnRpZXM7CgkgICAgfSwge30pOwoJICAgIHJldHVybiB7CgkgICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsCgkgICAgICAgIGZlYXR1cmVzOiBbcG9seV0KCSAgICB9OwoJfQoKCXZhciBjc3YyZ2VvanNvbl8xID0gewoJICAgIGlzTG9uOiBpc0xvbiwKCSAgICBpc0xhdDogaXNMYXQsCgkgICAgZ3Vlc3NMYXRIZWFkZXI6IGd1ZXNzTGF0SGVhZGVyLAoJICAgIGd1ZXNzTG9uSGVhZGVyOiBndWVzc0xvbkhlYWRlciwKCSAgICBjc3Y6IGRzdi5jc3ZQYXJzZSwKCSAgICB0c3Y6IGRzdi50c3ZQYXJzZSwKCSAgICBkc3Y6IGRzdiwKCSAgICBhdXRvOiBhdXRvLAoJICAgIGNzdjJnZW9qc29uOiBjc3YyZ2VvanNvbiwKCSAgICB0b0xpbmU6IHRvTGluZSwKCSAgICB0b1BvbHlnb246IHRvUG9seWdvbgoJfTsKCglmdW5jdGlvbiBpZGVudGl0eSh4KSB7CgkgIHJldHVybiB4OwoJfQoKCWZ1bmN0aW9uIHRyYW5zZm9ybSh0cmFuc2Zvcm0pIHsKCSAgaWYgKHRyYW5zZm9ybSA9PSBudWxsKSByZXR1cm4gaWRlbnRpdHk7CgkgIHZhciB4MCwKCSAgICAgIHkwLAoJICAgICAga3ggPSB0cmFuc2Zvcm0uc2NhbGVbMF0sCgkgICAgICBreSA9IHRyYW5zZm9ybS5zY2FsZVsxXSwKCSAgICAgIGR4ID0gdHJhbnNmb3JtLnRyYW5zbGF0ZVswXSwKCSAgICAgIGR5ID0gdHJhbnNmb3JtLnRyYW5zbGF0ZVsxXTsKCSAgcmV0dXJuIGZ1bmN0aW9uKGlucHV0LCBpKSB7CgkgICAgaWYgKCFpKSB4MCA9IHkwID0gMDsKCSAgICB2YXIgaiA9IDIsIG4gPSBpbnB1dC5sZW5ndGgsIG91dHB1dCA9IG5ldyBBcnJheShuKTsKCSAgICBvdXRwdXRbMF0gPSAoeDAgKz0gaW5wdXRbMF0pICoga3ggKyBkeDsKCSAgICBvdXRwdXRbMV0gPSAoeTAgKz0gaW5wdXRbMV0pICoga3kgKyBkeTsKCSAgICB3aGlsZSAoaiA8IG4pIG91dHB1dFtqXSA9IGlucHV0W2pdLCArK2o7CgkgICAgcmV0dXJuIG91dHB1dDsKCSAgfTsKCX0KCglmdW5jdGlvbiByZXZlcnNlKGFycmF5LCBuKSB7CgkgIHZhciB0LCBqID0gYXJyYXkubGVuZ3RoLCBpID0gaiAtIG47CgkgIHdoaWxlIChpIDwgLS1qKSB0ID0gYXJyYXlbaV0sIGFycmF5W2krK10gPSBhcnJheVtqXSwgYXJyYXlbal0gPSB0OwoJfQoKCWZ1bmN0aW9uIHRvcG9qc29uRmVhdHVyZSh0b3BvbG9neSwgbykgewoJICBpZiAodHlwZW9mIG8gPT09ICJzdHJpbmciKSBvID0gdG9wb2xvZ3kub2JqZWN0c1tvXTsKCSAgcmV0dXJuIG8udHlwZSA9PT0gIkdlb21ldHJ5Q29sbGVjdGlvbiIKCSAgICAgID8ge3R5cGU6ICJGZWF0dXJlQ29sbGVjdGlvbiIsIGZlYXR1cmVzOiBvLmdlb21ldHJpZXMubWFwKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIGZlYXR1cmUodG9wb2xvZ3ksIG8pOyB9KX0KCSAgICAgIDogZmVhdHVyZSh0b3BvbG9neSwgbyk7Cgl9CgoJZnVuY3Rpb24gZmVhdHVyZSh0b3BvbG9neSwgbykgewoJICB2YXIgaWQgPSBvLmlkLAoJICAgICAgYmJveCA9IG8uYmJveCwKCSAgICAgIHByb3BlcnRpZXMgPSBvLnByb3BlcnRpZXMgPT0gbnVsbCA/IHt9IDogby5wcm9wZXJ0aWVzLAoJICAgICAgZ2VvbWV0cnkgPSBvYmplY3QodG9wb2xvZ3ksIG8pOwoJICByZXR1cm4gaWQgPT0gbnVsbCAmJiBiYm94ID09IG51bGwgPyB7dHlwZTogIkZlYXR1cmUiLCBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLCBnZW9tZXRyeTogZ2VvbWV0cnl9CgkgICAgICA6IGJib3ggPT0gbnVsbCA/IHt0eXBlOiAiRmVhdHVyZSIsIGlkOiBpZCwgcHJvcGVydGllczogcHJvcGVydGllcywgZ2VvbWV0cnk6IGdlb21ldHJ5fQoJICAgICAgOiB7dHlwZTogIkZlYXR1cmUiLCBpZDogaWQsIGJib3g6IGJib3gsIHByb3BlcnRpZXM6IHByb3BlcnRpZXMsIGdlb21ldHJ5OiBnZW9tZXRyeX07Cgl9CgoJZnVuY3Rpb24gb2JqZWN0KHRvcG9sb2d5LCBvKSB7CgkgIHZhciB0cmFuc2Zvcm1Qb2ludCA9IHRyYW5zZm9ybSh0b3BvbG9neS50cmFuc2Zvcm0pLAoJICAgICAgYXJjcyA9IHRvcG9sb2d5LmFyY3M7CgoJICBmdW5jdGlvbiBhcmMoaSwgcG9pbnRzKSB7CgkgICAgaWYgKHBvaW50cy5sZW5ndGgpIHBvaW50cy5wb3AoKTsKCSAgICBmb3IgKHZhciBhID0gYXJjc1tpIDwgMCA/IH5pIDogaV0sIGsgPSAwLCBuID0gYS5sZW5ndGg7IGsgPCBuOyArK2spIHsKCSAgICAgIHBvaW50cy5wdXNoKHRyYW5zZm9ybVBvaW50KGFba10sIGspKTsKCSAgICB9CgkgICAgaWYgKGkgPCAwKSByZXZlcnNlKHBvaW50cywgbik7CgkgIH0KCgkgIGZ1bmN0aW9uIHBvaW50KHApIHsKCSAgICByZXR1cm4gdHJhbnNmb3JtUG9pbnQocCk7CgkgIH0KCgkgIGZ1bmN0aW9uIGxpbmUoYXJjcykgewoJICAgIHZhciBwb2ludHMgPSBbXTsKCSAgICBmb3IgKHZhciBpID0gMCwgbiA9IGFyY3MubGVuZ3RoOyBpIDwgbjsgKytpKSBhcmMoYXJjc1tpXSwgcG9pbnRzKTsKCSAgICBpZiAocG9pbnRzLmxlbmd0aCA8IDIpIHBvaW50cy5wdXNoKHBvaW50c1swXSk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBwZXIgdGhlIHNwZWNpZmljYXRpb24uCgkgICAgcmV0dXJuIHBvaW50czsKCSAgfQoKCSAgZnVuY3Rpb24gcmluZyhhcmNzKSB7CgkgICAgdmFyIHBvaW50cyA9IGxpbmUoYXJjcyk7CgkgICAgd2hpbGUgKHBvaW50cy5sZW5ndGggPCA0KSBwb2ludHMucHVzaChwb2ludHNbMF0pOyAvLyBUaGlzIG1heSBoYXBwZW4gaWYgYW4gYXJjIGhhcyBvbmx5IHR3byBwb2ludHMuCgkgICAgcmV0dXJuIHBvaW50czsKCSAgfQoKCSAgZnVuY3Rpb24gcG9seWdvbihhcmNzKSB7CgkgICAgcmV0dXJuIGFyY3MubWFwKHJpbmcpOwoJICB9CgoJICBmdW5jdGlvbiBnZW9tZXRyeShvKSB7CgkgICAgdmFyIHR5cGUgPSBvLnR5cGUsIGNvb3JkaW5hdGVzOwoJICAgIHN3aXRjaCAodHlwZSkgewoJICAgICAgY2FzZSAiR2VvbWV0cnlDb2xsZWN0aW9uIjogcmV0dXJuIHt0eXBlOiB0eXBlLCBnZW9tZXRyaWVzOiBvLmdlb21ldHJpZXMubWFwKGdlb21ldHJ5KX07CgkgICAgICBjYXNlICJQb2ludCI6IGNvb3JkaW5hdGVzID0gcG9pbnQoby5jb29yZGluYXRlcyk7IGJyZWFrOwoJICAgICAgY2FzZSAiTXVsdGlQb2ludCI6IGNvb3JkaW5hdGVzID0gby5jb29yZGluYXRlcy5tYXAocG9pbnQpOyBicmVhazsKCSAgICAgIGNhc2UgIkxpbmVTdHJpbmciOiBjb29yZGluYXRlcyA9IGxpbmUoby5hcmNzKTsgYnJlYWs7CgkgICAgICBjYXNlICJNdWx0aUxpbmVTdHJpbmciOiBjb29yZGluYXRlcyA9IG8uYXJjcy5tYXAobGluZSk7IGJyZWFrOwoJICAgICAgY2FzZSAiUG9seWdvbiI6IGNvb3JkaW5hdGVzID0gcG9seWdvbihvLmFyY3MpOyBicmVhazsKCSAgICAgIGNhc2UgIk11bHRpUG9seWdvbiI6IGNvb3JkaW5hdGVzID0gby5hcmNzLm1hcChwb2x5Z29uKTsgYnJlYWs7CgkgICAgICBkZWZhdWx0OiByZXR1cm4gbnVsbDsKCSAgICB9CgkgICAgcmV0dXJuIHt0eXBlOiB0eXBlLCBjb29yZGluYXRlczogY29vcmRpbmF0ZXN9OwoJICB9CgoJICByZXR1cm4gZ2VvbWV0cnkobyk7Cgl9CgoJZnVuY3Rpb24gJChlbGVtZW50LCB0YWdOYW1lKSB7CgkgICAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSk7Cgl9CglmdW5jdGlvbiBub3JtYWxpemVJZChpZCkgewoJICAgIHJldHVybiBpZFswXSA9PT0gIiMiID8gaWQgOiBgIyR7aWR9YDsKCX0KCWZ1bmN0aW9uICRucyhlbGVtZW50LCB0YWdOYW1lLCBucykgewoJICAgIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhucywgdGFnTmFtZSkpOwoJfQoJLyoqCgkgKiBnZXQgdGhlIGNvbnRlbnQgb2YgYSB0ZXh0IG5vZGUsIGlmIGFueQoJICovCglmdW5jdGlvbiBub2RlVmFsKG5vZGUpIHsKCSAgICBub2RlPy5ub3JtYWxpemUoKTsKCSAgICByZXR1cm4gKG5vZGUgJiYgbm9kZS50ZXh0Q29udGVudCkgfHwgIiI7Cgl9CgkvKioKCSAqIEdldCBvbmUgWSBjaGlsZCBvZiBYLCBpZiBhbnksIG90aGVyd2lzZSBudWxsCgkgKi8KCWZ1bmN0aW9uIGdldDEobm9kZSwgdGFnTmFtZSwgY2FsbGJhY2spIHsKCSAgICBjb25zdCBuID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKTsKCSAgICBjb25zdCByZXN1bHQgPSBuLmxlbmd0aCA/IG5bMF0gOiBudWxsOwoJICAgIGlmIChyZXN1bHQgJiYgY2FsbGJhY2spCgkgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CgkgICAgcmV0dXJuIHJlc3VsdDsKCX0KCWZ1bmN0aW9uIGdldChub2RlLCB0YWdOYW1lLCBjYWxsYmFjaykgewoJICAgIGNvbnN0IHByb3BlcnRpZXMgPSB7fTsKCSAgICBpZiAoIW5vZGUpCgkgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzOwoJICAgIGNvbnN0IG4gPSBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpOwoJICAgIGNvbnN0IHJlc3VsdCA9IG4ubGVuZ3RoID8gblswXSA6IG51bGw7CgkgICAgaWYgKHJlc3VsdCAmJiBjYWxsYmFjaykgewoJICAgICAgICByZXR1cm4gY2FsbGJhY2socmVzdWx0LCBwcm9wZXJ0aWVzKTsKCSAgICB9CgkgICAgcmV0dXJuIHByb3BlcnRpZXM7Cgl9CglmdW5jdGlvbiB2YWwxKG5vZGUsIHRhZ05hbWUsIGNhbGxiYWNrKSB7CgkgICAgY29uc3QgdmFsID0gbm9kZVZhbChnZXQxKG5vZGUsIHRhZ05hbWUpKTsKCSAgICBpZiAodmFsICYmIGNhbGxiYWNrKQoJICAgICAgICByZXR1cm4gY2FsbGJhY2sodmFsKSB8fCB7fTsKCSAgICByZXR1cm4ge307Cgl9CglmdW5jdGlvbiAkbnVtKG5vZGUsIHRhZ05hbWUsIGNhbGxiYWNrKSB7CgkgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChub2RlVmFsKGdldDEobm9kZSwgdGFnTmFtZSkpKTsKCSAgICBpZiAoaXNOYU4odmFsKSkKCSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKCSAgICBpZiAodmFsICYmIGNhbGxiYWNrKQoJICAgICAgICByZXR1cm4gY2FsbGJhY2sodmFsKSB8fCB7fTsKCSAgICByZXR1cm4ge307Cgl9CglmdW5jdGlvbiBudW0xKG5vZGUsIHRhZ05hbWUsIGNhbGxiYWNrKSB7CgkgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChub2RlVmFsKGdldDEobm9kZSwgdGFnTmFtZSkpKTsKCSAgICBpZiAoaXNOYU4odmFsKSkKCSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKCSAgICBpZiAoY2FsbGJhY2spCgkgICAgICAgIGNhbGxiYWNrKHZhbCk7CgkgICAgcmV0dXJuIHZhbDsKCX0KCWZ1bmN0aW9uIGdldE11bHRpKG5vZGUsIHByb3BlcnR5TmFtZXMpIHsKCSAgICBjb25zdCBwcm9wZXJ0aWVzID0ge307CgkgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0eU5hbWVzKSB7CgkgICAgICAgIHZhbDEobm9kZSwgcHJvcGVydHksICh2YWwpID0+IHsKCSAgICAgICAgICAgIHByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsOwoJICAgICAgICB9KTsKCSAgICB9CgkgICAgcmV0dXJuIHByb3BlcnRpZXM7Cgl9CglmdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkgewoJICAgIHJldHVybiBub2RlPy5ub2RlVHlwZSA9PT0gMTsKCX0KCglmdW5jdGlvbiBnZXRMaW5lU3R5bGUobm9kZSkgewoJICAgIHJldHVybiBnZXQobm9kZSwgImxpbmUiLCAobGluZVN0eWxlKSA9PiB7CgkgICAgICAgIGNvbnN0IHZhbCA9IE9iamVjdC5hc3NpZ24oe30sIHZhbDEobGluZVN0eWxlLCAiY29sb3IiLCAoY29sb3IpID0+IHsKCSAgICAgICAgICAgIHJldHVybiB7IHN0cm9rZTogYCMke2NvbG9yfWAgfTsKCSAgICAgICAgfSksICRudW0obGluZVN0eWxlLCAib3BhY2l0eSIsIChvcGFjaXR5KSA9PiB7CgkgICAgICAgICAgICByZXR1cm4geyAic3Ryb2tlLW9wYWNpdHkiOiBvcGFjaXR5IH07CgkgICAgICAgIH0pLCAkbnVtKGxpbmVTdHlsZSwgIndpZHRoIiwgKHdpZHRoKSA9PiB7CgkgICAgICAgICAgICAvLyBHUFggd2lkdGggaXMgaW4gbW0sIGNvbnZlcnQgdG8gcHggd2l0aCA5NiBweCBwZXIgaW5jaAoJICAgICAgICAgICAgcmV0dXJuIHsgInN0cm9rZS13aWR0aCI6ICh3aWR0aCAqIDk2KSAvIDI1LjQgfTsKCSAgICAgICAgfSkpOwoJICAgICAgICByZXR1cm4gdmFsOwoJICAgIH0pOwoJfQoKCWZ1bmN0aW9uIGdldEV4dGVuc2lvbnMobm9kZSkgewoJICAgIGxldCB2YWx1ZXMgPSBbXTsKCSAgICBpZiAobm9kZSA9PT0gbnVsbCkKCSAgICAgICAgcmV0dXJuIHZhbHVlczsKCSAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIEFycmF5LmZyb20obm9kZS5jaGlsZE5vZGVzKSkgewoJICAgICAgICBpZiAoIWlzRWxlbWVudChjaGlsZCkpCgkgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgY29uc3QgbmFtZSA9IGFiYnJldmlhdGVOYW1lKGNoaWxkLm5vZGVOYW1lKTsKCSAgICAgICAgaWYgKG5hbWUgPT09ICJncHh0cHg6VHJhY2tQb2ludEV4dGVuc2lvbiIpIHsKCSAgICAgICAgICAgIC8vIGxvb3AgYWdhaW4gZm9yIG5lc3RlZCBnYXJtaW4gZXh0ZW5zaW9ucyAoZWcuICJncHh0cHg6aHIiKQoJICAgICAgICAgICAgdmFsdWVzID0gdmFsdWVzLmNvbmNhdChnZXRFeHRlbnNpb25zKGNoaWxkKSk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAvLyBwdXNoIGN1c3RvbSBleHRlbnNpb24gKGVnLiAicG93ZXIiKQoJICAgICAgICAgICAgY29uc3QgdmFsID0gbm9kZVZhbChjaGlsZCk7CgkgICAgICAgICAgICB2YWx1ZXMucHVzaChbbmFtZSwgcGFyc2VOdW1lcmljKHZhbCldKTsKCSAgICAgICAgfQoJICAgIH0KCSAgICByZXR1cm4gdmFsdWVzOwoJfQoJZnVuY3Rpb24gYWJicmV2aWF0ZU5hbWUobmFtZSkgewoJICAgIHJldHVybiBbImhlYXJ0IiwgImdweHRweDpociIsICJociJdLmluY2x1ZGVzKG5hbWUpID8gImhlYXJ0IiA6IG5hbWU7Cgl9CglmdW5jdGlvbiBwYXJzZU51bWVyaWModmFsKSB7CgkgICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdCh2YWwpOwoJICAgIHJldHVybiBpc05hTihudW0pID8gdmFsIDogbnVtOwoJfQoKCWZ1bmN0aW9uIGNvb3JkUGFpciQxKG5vZGUpIHsKCSAgICBjb25zdCBsbCA9IFsKCSAgICAgICAgcGFyc2VGbG9hdChub2RlLmdldEF0dHJpYnV0ZSgibG9uIikgfHwgIiIpLAoJICAgICAgICBwYXJzZUZsb2F0KG5vZGUuZ2V0QXR0cmlidXRlKCJsYXQiKSB8fCAiIiksCgkgICAgXTsKCSAgICBpZiAoaXNOYU4obGxbMF0pIHx8IGlzTmFOKGxsWzFdKSkgewoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICB9CgkgICAgbnVtMShub2RlLCAiZWxlIiwgKHZhbCkgPT4gewoJICAgICAgICBsbC5wdXNoKHZhbCk7CgkgICAgfSk7CgkgICAgY29uc3QgdGltZSA9IGdldDEobm9kZSwgInRpbWUiKTsKCSAgICByZXR1cm4gewoJICAgICAgICBjb29yZGluYXRlczogbGwsCgkgICAgICAgIHRpbWU6IHRpbWUgPyBub2RlVmFsKHRpbWUpIDogbnVsbCwKCSAgICAgICAgZXh0ZW5kZWRWYWx1ZXM6IGdldEV4dGVuc2lvbnMoZ2V0MShub2RlLCAiZXh0ZW5zaW9ucyIpKSwKCSAgICB9OwoJfQoKCWZ1bmN0aW9uIGV4dHJhY3RQcm9wZXJ0aWVzKG5vZGUpIHsKCSAgICBjb25zdCBwcm9wZXJ0aWVzID0gZ2V0TXVsdGkobm9kZSwgWwoJICAgICAgICAibmFtZSIsCgkgICAgICAgICJjbXQiLAoJICAgICAgICAiZGVzYyIsCgkgICAgICAgICJ0eXBlIiwKCSAgICAgICAgInRpbWUiLAoJICAgICAgICAia2V5d29yZHMiLAoJICAgIF0pOwoJICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBBcnJheS5mcm9tKG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygiaHR0cDovL3d3dy5nYXJtaW4uY29tL3htbHNjaGVtYXMvR3B4RXh0ZW5zaW9ucy92MyIsICIqIikpOwoJICAgIGZvciAoY29uc3QgY2hpbGQgb2YgZXh0ZW5zaW9ucykgewoJICAgICAgICBpZiAoY2hpbGQucGFyZW50Tm9kZT8ucGFyZW50Tm9kZSA9PT0gbm9kZSkgewoJICAgICAgICAgICAgcHJvcGVydGllc1tjaGlsZC50YWdOYW1lLnJlcGxhY2UoIjoiLCAiXyIpXSA9IG5vZGVWYWwoY2hpbGQpOwoJICAgICAgICB9CgkgICAgfQoJICAgIGNvbnN0IGxpbmtzID0gJChub2RlLCAibGluayIpOwoJICAgIGlmIChsaW5rcy5sZW5ndGgpIHsKCSAgICAgICAgcHJvcGVydGllcy5saW5rcyA9IGxpbmtzLm1hcCgobGluaykgPT4gT2JqZWN0LmFzc2lnbih7IGhyZWY6IGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIikgfSwgZ2V0TXVsdGkobGluaywgWyJ0ZXh0IiwgInR5cGUiXSkpKTsKCSAgICB9CgkgICAgcmV0dXJuIHByb3BlcnRpZXM7Cgl9CgoJLyoqCgkgKiBFeHRyYWN0IHBvaW50cyBmcm9tIGEgdHJrc2VnIG9yIHJ0ZSBlbGVtZW50LgoJICovCglmdW5jdGlvbiBnZXRQb2ludHMkMShub2RlLCBwb2ludG5hbWUpIHsKCSAgICBjb25zdCBwdHMgPSAkKG5vZGUsIHBvaW50bmFtZSk7CgkgICAgY29uc3QgbGluZSA9IFtdOwoJICAgIGNvbnN0IHRpbWVzID0gW107CgkgICAgY29uc3QgZXh0ZW5kZWRWYWx1ZXMgPSB7fTsKCSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB0cy5sZW5ndGg7IGkrKykgewoJICAgICAgICBjb25zdCBjID0gY29vcmRQYWlyJDEocHRzW2ldKTsKCSAgICAgICAgaWYgKCFjKSB7CgkgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgfQoJICAgICAgICBsaW5lLnB1c2goYy5jb29yZGluYXRlcyk7CgkgICAgICAgIGlmIChjLnRpbWUpCgkgICAgICAgICAgICB0aW1lcy5wdXNoKGMudGltZSk7CgkgICAgICAgIGZvciAoY29uc3QgW25hbWUsIHZhbF0gb2YgYy5leHRlbmRlZFZhbHVlcykgewoJICAgICAgICAgICAgY29uc3QgcGx1cmFsID0gbmFtZSA9PT0gImhlYXJ0IiA/IG5hbWUgOiBuYW1lLnJlcGxhY2UoImdweHRweDoiLCAiIikgKyAicyI7CgkgICAgICAgICAgICBpZiAoIWV4dGVuZGVkVmFsdWVzW3BsdXJhbF0pIHsKCSAgICAgICAgICAgICAgICBleHRlbmRlZFZhbHVlc1twbHVyYWxdID0gQXJyYXkocHRzLmxlbmd0aCkuZmlsbChudWxsKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGV4dGVuZGVkVmFsdWVzW3BsdXJhbF1baV0gPSB2YWw7CgkgICAgICAgIH0KCSAgICB9CgkgICAgaWYgKGxpbmUubGVuZ3RoIDwgMikKCSAgICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkIGxpbmUgaW4gR2VvSlNPTgoJICAgIHJldHVybiB7CgkgICAgICAgIGxpbmU6IGxpbmUsCgkgICAgICAgIHRpbWVzOiB0aW1lcywKCSAgICAgICAgZXh0ZW5kZWRWYWx1ZXM6IGV4dGVuZGVkVmFsdWVzLAoJICAgIH07Cgl9CgkvKioKCSAqIEV4dHJhY3QgYSBMaW5lU3RyaW5nIGdlb21ldHJ5IGZyb20gYSBydGUKCSAqIGVsZW1lbnQuCgkgKi8KCWZ1bmN0aW9uIGdldFJvdXRlKG5vZGUpIHsKCSAgICBjb25zdCBsaW5lID0gZ2V0UG9pbnRzJDEobm9kZSwgInJ0ZXB0Iik7CgkgICAgaWYgKCFsaW5lKQoJICAgICAgICByZXR1cm47CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmUiLAoJICAgICAgICBwcm9wZXJ0aWVzOiBPYmplY3QuYXNzaWduKHsgX2dweFR5cGU6ICJydGUiIH0sIGV4dHJhY3RQcm9wZXJ0aWVzKG5vZGUpLCBnZXRMaW5lU3R5bGUoZ2V0MShub2RlLCAiZXh0ZW5zaW9ucyIpKSksCgkgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICB0eXBlOiAiTGluZVN0cmluZyIsCgkgICAgICAgICAgICBjb29yZGluYXRlczogbGluZS5saW5lLAoJICAgICAgICB9LAoJICAgIH07Cgl9CglmdW5jdGlvbiBnZXRUcmFjayhub2RlKSB7CgkgICAgY29uc3Qgc2VnbWVudHMgPSAkKG5vZGUsICJ0cmtzZWciKTsKCSAgICBjb25zdCB0cmFjayA9IFtdOwoJICAgIGNvbnN0IHRpbWVzID0gW107CgkgICAgY29uc3QgZXh0cmFjdGVkTGluZXMgPSBbXTsKCSAgICBmb3IgKGNvbnN0IHNlZ21lbnQgb2Ygc2VnbWVudHMpIHsKCSAgICAgICAgY29uc3QgbGluZSA9IGdldFBvaW50cyQxKHNlZ21lbnQsICJ0cmtwdCIpOwoJICAgICAgICBpZiAobGluZSkgewoJICAgICAgICAgICAgZXh0cmFjdGVkTGluZXMucHVzaChsaW5lKTsKCSAgICAgICAgICAgIGlmIChsaW5lLnRpbWVzICYmIGxpbmUudGltZXMubGVuZ3RoKQoJICAgICAgICAgICAgICAgIHRpbWVzLnB1c2gobGluZS50aW1lcyk7CgkgICAgICAgIH0KCSAgICB9CgkgICAgaWYgKGV4dHJhY3RlZExpbmVzLmxlbmd0aCA9PT0gMCkKCSAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgY29uc3QgbXVsdGkgPSBleHRyYWN0ZWRMaW5lcy5sZW5ndGggPiAxOwoJICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3QuYXNzaWduKHsgX2dweFR5cGU6ICJ0cmsiIH0sIGV4dHJhY3RQcm9wZXJ0aWVzKG5vZGUpLCBnZXRMaW5lU3R5bGUoZ2V0MShub2RlLCAiZXh0ZW5zaW9ucyIpKSwgdGltZXMubGVuZ3RoCgkgICAgICAgID8gewoJICAgICAgICAgICAgY29vcmRpbmF0ZVByb3BlcnRpZXM6IHsKCSAgICAgICAgICAgICAgICB0aW1lczogbXVsdGkgPyB0aW1lcyA6IHRpbWVzWzBdLAoJICAgICAgICAgICAgfSwKCSAgICAgICAgfQoJICAgICAgICA6IHt9KTsKCSAgICBmb3IgKGNvbnN0IGxpbmUgb2YgZXh0cmFjdGVkTGluZXMpIHsKCSAgICAgICAgdHJhY2sucHVzaChsaW5lLmxpbmUpOwoJICAgICAgICBpZiAoIXByb3BlcnRpZXMuY29vcmRpbmF0ZVByb3BlcnRpZXMpIHsKCSAgICAgICAgICAgIHByb3BlcnRpZXMuY29vcmRpbmF0ZVByb3BlcnRpZXMgPSB7fTsKCSAgICAgICAgfQoJICAgICAgICBjb25zdCBwcm9wcyA9IHByb3BlcnRpZXMuY29vcmRpbmF0ZVByb3BlcnRpZXM7CgkgICAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhsaW5lLmV4dGVuZGVkVmFsdWVzKTsKCSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICBjb25zdCBbbmFtZSwgdmFsXSA9IGVudHJpZXNbaV07CgkgICAgICAgICAgICBpZiAobXVsdGkpIHsKCSAgICAgICAgICAgICAgICBpZiAoIXByb3BzW25hbWVdKSB7CgkgICAgICAgICAgICAgICAgICAgIHByb3BzW25hbWVdID0gZXh0cmFjdGVkTGluZXMubWFwKChsaW5lKSA9PiBuZXcgQXJyYXkobGluZS5saW5lLmxlbmd0aCkuZmlsbChudWxsKSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHByb3BzW25hbWVdW2ldID0gdmFsOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgcHJvcHNbbmFtZV0gPSB2YWw7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmUiLAoJICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLAoJICAgICAgICBnZW9tZXRyeTogbXVsdGkKCSAgICAgICAgICAgID8gewoJICAgICAgICAgICAgICAgIHR5cGU6ICJNdWx0aUxpbmVTdHJpbmciLAoJICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiB0cmFjaywKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIDogewoJICAgICAgICAgICAgICAgIHR5cGU6ICJMaW5lU3RyaW5nIiwKCSAgICAgICAgICAgICAgICBjb29yZGluYXRlczogdHJhY2tbMF0sCgkgICAgICAgICAgICB9LAoJICAgIH07Cgl9CgkvKioKCSAqIEV4dHJhY3QgYSBwb2ludCwgaWYgcG9zc2libGUsIGZyb20gYSBnaXZlbiBub2RlLAoJICogd2hpY2ggaXMgdXN1YWxseSBhIHdwdCBvciB0cmtwdAoJICovCglmdW5jdGlvbiBnZXRQb2ludChub2RlKSB7CgkgICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5hc3NpZ24oZXh0cmFjdFByb3BlcnRpZXMobm9kZSksIGdldE11bHRpKG5vZGUsIFsic3ltIl0pKTsKCSAgICBjb25zdCBwYWlyID0gY29vcmRQYWlyJDEobm9kZSk7CgkgICAgaWYgKCFwYWlyKQoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICByZXR1cm4gewoJICAgICAgICB0eXBlOiAiRmVhdHVyZSIsCgkgICAgICAgIHByb3BlcnRpZXMsCgkgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICB0eXBlOiAiUG9pbnQiLAoJICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHBhaXIuY29vcmRpbmF0ZXMsCgkgICAgICAgIH0sCgkgICAgfTsKCX0KCS8qKgoJICogQ29udmVydCBHUFggdG8gR2VvSlNPTiBpbmNyZW1lbnRhbGx5LCByZXR1cm5pbmcKCSAqIGEgW0dlbmVyYXRvcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9JdGVyYXRvcnNfYW5kX0dlbmVyYXRvcnMpCgkgKiB0aGF0IHlpZWxkcyBvdXRwdXQgZmVhdHVyZSBieSBmZWF0dXJlLgoJICovCglmdW5jdGlvbiogZ3B4R2VuKG5vZGUpIHsKCSAgICBmb3IgKGNvbnN0IHRyYWNrIG9mICQobm9kZSwgInRyayIpKSB7CgkgICAgICAgIGNvbnN0IGZlYXR1cmUgPSBnZXRUcmFjayh0cmFjayk7CgkgICAgICAgIGlmIChmZWF0dXJlKQoJICAgICAgICAgICAgeWllbGQgZmVhdHVyZTsKCSAgICB9CgkgICAgZm9yIChjb25zdCByb3V0ZSBvZiAkKG5vZGUsICJydGUiKSkgewoJICAgICAgICBjb25zdCBmZWF0dXJlID0gZ2V0Um91dGUocm91dGUpOwoJICAgICAgICBpZiAoZmVhdHVyZSkKCSAgICAgICAgICAgIHlpZWxkIGZlYXR1cmU7CgkgICAgfQoJICAgIGZvciAoY29uc3Qgd2F5cG9pbnQgb2YgJChub2RlLCAid3B0IikpIHsKCSAgICAgICAgY29uc3QgcG9pbnQgPSBnZXRQb2ludCh3YXlwb2ludCk7CgkgICAgICAgIGlmIChwb2ludCkKCSAgICAgICAgICAgIHlpZWxkIHBvaW50OwoJICAgIH0KCX0KCS8qKgoJICoKCSAqIENvbnZlcnQgYSBHUFggZG9jdW1lbnQgdG8gR2VvSlNPTi4gVGhlIGZpcnN0IGFyZ3VtZW50LCBgZG9jYCwgbXVzdCBiZSBhIEdQWAoJICogZG9jdW1lbnQgYXMgYW4gWE1MIERPTSAtIG5vdCBhcyBhIHN0cmluZy4gWW91IGNhbiBnZXQgdGhpcyB1c2luZyBqUXVlcnkncyBkZWZhdWx0CgkgKiBgLmFqYXhgIGZ1bmN0aW9uIG9yIHVzaW5nIGEgYmFyZSBYTUxIdHRwUmVxdWVzdCB3aXRoIHRoZSBgLnJlc3BvbnNlYCBwcm9wZXJ0eQoJICogaG9sZGluZyBhbiBYTUwgRE9NLgoJICoKCSAqIFRoZSBvdXRwdXQgaXMgYSBKYXZhU2NyaXB0IG9iamVjdCBvZiBHZW9KU09OIGRhdGEsIHNhbWUgYXMgYC5rbWxgIG91dHB1dHMsIHdpdGggdGhlCgkgKiBhZGRpdGlvbiBvZiBhIGBfZ3B4VHlwZWAgcHJvcGVydHkgb24gZWFjaCBgTGluZVN0cmluZ2AgZmVhdHVyZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyCgkgKiB0aGUgZmVhdHVyZSB3YXMgZW5jb2RlZCBhcyBhIHJvdXRlIChgcnRlYCkgb3IgdHJhY2sgKGB0cmtgKSBpbiB0aGUgR1BYIGRvY3VtZW50LgoJICovCglmdW5jdGlvbiBncHgobm9kZSkgewoJICAgIHJldHVybiB7CgkgICAgICAgIHR5cGU6ICJGZWF0dXJlQ29sbGVjdGlvbiIsCgkgICAgICAgIGZlYXR1cmVzOiBBcnJheS5mcm9tKGdweEdlbihub2RlKSksCgkgICAgfTsKCX0KCgljb25zdCBFWFRFTlNJT05TX05TID0gImh0dHA6Ly93d3cuZ2FybWluLmNvbS94bWxzY2hlbWFzL0FjdGl2aXR5RXh0ZW5zaW9uL3YyIjsKCWNvbnN0IFRSQUNLUE9JTlRfQVRUUklCVVRFUyA9IFsKCSAgICBbImhlYXJ0UmF0ZSIsICJoZWFydFJhdGVzIl0sCgkgICAgWyJDYWRlbmNlIiwgImNhZGVuY2VzIl0sCgkgICAgLy8gRXh0ZW5kZWQgVHJhY2twb2ludCBhdHRyaWJ1dGVzCgkgICAgWyJTcGVlZCIsICJzcGVlZHMiXSwKCSAgICBbIldhdHRzIiwgIndhdHRzIl0sCgldOwoJY29uc3QgTEFQX0FUVFJJQlVURVMgPSBbCgkgICAgWyJUb3RhbFRpbWVTZWNvbmRzIiwgInRvdGFsVGltZVNlY29uZHMiXSwKCSAgICBbIkRpc3RhbmNlTWV0ZXJzIiwgImRpc3RhbmNlTWV0ZXJzIl0sCgkgICAgWyJNYXhpbXVtU3BlZWQiLCAibWF4U3BlZWQiXSwKCSAgICBbIkF2ZXJhZ2VIZWFydFJhdGVCcG0iLCAiYXZnSGVhcnRSYXRlIl0sCgkgICAgWyJNYXhpbXVtSGVhcnRSYXRlQnBtIiwgIm1heEhlYXJ0UmF0ZSJdLAoJICAgIC8vIEV4dGVuZGVkIExhcCBhdHRyaWJ1dGVzCgkgICAgWyJBdmdTcGVlZCIsICJhdmdTcGVlZCJdLAoJICAgIFsiQXZnV2F0dHMiLCAiYXZnV2F0dHMiXSwKCSAgICBbIk1heFdhdHRzIiwgIm1heFdhdHRzIl0sCgldOwoJZnVuY3Rpb24gZ2V0UHJvcGVydGllcyhub2RlLCBhdHRyaWJ1dGVOYW1lcykgewoJICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbXTsKCSAgICBmb3IgKGNvbnN0IFt0YWcsIGFsaWFzXSBvZiBhdHRyaWJ1dGVOYW1lcykgewoJICAgICAgICBsZXQgZWxlbSA9IGdldDEobm9kZSwgdGFnKTsKCSAgICAgICAgaWYgKCFlbGVtKSB7CgkgICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhFWFRFTlNJT05TX05TLCB0YWcpOwoJICAgICAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCkgewoJICAgICAgICAgICAgICAgIGVsZW0gPSBlbGVtZW50c1swXTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjb25zdCB2YWwgPSBwYXJzZUZsb2F0KG5vZGVWYWwoZWxlbSkpOwoJICAgICAgICBpZiAoIWlzTmFOKHZhbCkpIHsKCSAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChbYWxpYXMsIHZhbF0pOwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiBwcm9wZXJ0aWVzOwoJfQoJZnVuY3Rpb24gY29vcmRQYWlyKG5vZGUpIHsKCSAgICBjb25zdCBsbCA9IFtudW0xKG5vZGUsICJMb25naXR1ZGVEZWdyZWVzIiksIG51bTEobm9kZSwgIkxhdGl0dWRlRGVncmVlcyIpXTsKCSAgICBpZiAobGxbMF0gPT09IHVuZGVmaW5lZCB8fAoJICAgICAgICBpc05hTihsbFswXSkgfHwKCSAgICAgICAgbGxbMV0gPT09IHVuZGVmaW5lZCB8fAoJICAgICAgICBpc05hTihsbFsxXSkpIHsKCSAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgfQoJICAgIGNvbnN0IGhlYXJ0UmF0ZSA9IGdldDEobm9kZSwgIkhlYXJ0UmF0ZUJwbSIpOwoJICAgIGNvbnN0IHRpbWUgPSBub2RlVmFsKGdldDEobm9kZSwgIlRpbWUiKSk7CgkgICAgZ2V0MShub2RlLCAiQWx0aXR1ZGVNZXRlcnMiLCAoYWx0KSA9PiB7CgkgICAgICAgIGNvbnN0IGEgPSBwYXJzZUZsb2F0KG5vZGVWYWwoYWx0KSk7CgkgICAgICAgIGlmICghaXNOYU4oYSkpIHsKCSAgICAgICAgICAgIGxsLnB1c2goYSk7CgkgICAgICAgIH0KCSAgICB9KTsKCSAgICByZXR1cm4gewoJICAgICAgICBjb29yZGluYXRlczogbGwsCgkgICAgICAgIHRpbWU6IHRpbWUgfHwgbnVsbCwKCSAgICAgICAgaGVhcnRSYXRlOiBoZWFydFJhdGUgPyBwYXJzZUZsb2F0KG5vZGVWYWwoaGVhcnRSYXRlKSkgOiBudWxsLAoJICAgICAgICBleHRlbnNpb25zOiBnZXRQcm9wZXJ0aWVzKG5vZGUsIFRSQUNLUE9JTlRfQVRUUklCVVRFUyksCgkgICAgfTsKCX0KCWZ1bmN0aW9uIGdldFBvaW50cyhub2RlKSB7CgkgICAgY29uc3QgcHRzID0gJChub2RlLCAiVHJhY2twb2ludCIpOwoJICAgIGNvbnN0IGxpbmUgPSBbXTsKCSAgICBjb25zdCB0aW1lcyA9IFtdOwoJICAgIGNvbnN0IGhlYXJ0UmF0ZXMgPSBbXTsKCSAgICBpZiAocHRzLmxlbmd0aCA8IDIpCgkgICAgICAgIHJldHVybiBudWxsOyAvLyBJbnZhbGlkIGxpbmUgaW4gR2VvSlNPTgoJICAgIGNvbnN0IGV4dGVuZGVkUHJvcGVydGllcyA9IHt9OwoJICAgIGNvbnN0IHJlc3VsdCA9IHsgZXh0ZW5kZWRQcm9wZXJ0aWVzIH07CgkgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgY29uc3QgYyA9IGNvb3JkUGFpcihwdHNbaV0pOwoJICAgICAgICBpZiAoYyA9PT0gbnVsbCkKCSAgICAgICAgICAgIGNvbnRpbnVlOwoJICAgICAgICBsaW5lLnB1c2goYy5jb29yZGluYXRlcyk7CgkgICAgICAgIGNvbnN0IHsgdGltZSwgaGVhcnRSYXRlLCBleHRlbnNpb25zIH0gPSBjOwoJICAgICAgICBpZiAodGltZSkKCSAgICAgICAgICAgIHRpbWVzLnB1c2godGltZSk7CgkgICAgICAgIGlmIChoZWFydFJhdGUpCgkgICAgICAgICAgICBoZWFydFJhdGVzLnB1c2goaGVhcnRSYXRlKTsKCSAgICAgICAgZm9yIChjb25zdCBbYWxpYXMsIHZhbHVlXSBvZiBleHRlbnNpb25zKSB7CgkgICAgICAgICAgICBpZiAoIWV4dGVuZGVkUHJvcGVydGllc1thbGlhc10pIHsKCSAgICAgICAgICAgICAgICBleHRlbmRlZFByb3BlcnRpZXNbYWxpYXNdID0gQXJyYXkocHRzLmxlbmd0aCkuZmlsbChudWxsKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGV4dGVuZGVkUHJvcGVydGllc1thbGlhc11baV0gPSB2YWx1ZTsKCSAgICAgICAgfQoJICAgIH0KCSAgICBpZiAobGluZS5sZW5ndGggPCAyKQoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihyZXN1bHQsIHsKCSAgICAgICAgbGluZTogbGluZSwKCSAgICAgICAgdGltZXM6IHRpbWVzLAoJICAgICAgICBoZWFydFJhdGVzOiBoZWFydFJhdGVzLAoJICAgIH0pOwoJfQoJZnVuY3Rpb24gZ2V0TGFwKG5vZGUpIHsKCSAgICBjb25zdCBzZWdtZW50cyA9ICQobm9kZSwgIlRyYWNrIik7CgkgICAgY29uc3QgdHJhY2sgPSBbXTsKCSAgICBjb25zdCB0aW1lcyA9IFtdOwoJICAgIGNvbnN0IGhlYXJ0UmF0ZXMgPSBbXTsKCSAgICBjb25zdCBhbGxFeHRlbmRlZFByb3BlcnRpZXMgPSBbXTsKCSAgICBsZXQgbGluZTsKCSAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuZnJvbUVudHJpZXMoZ2V0UHJvcGVydGllcyhub2RlLCBMQVBfQVRUUklCVVRFUykpLCBnZXQobm9kZSwgIk5hbWUiLCAobmFtZUVsZW1lbnQpID0+IHsKCSAgICAgICAgcmV0dXJuIHsgbmFtZTogbm9kZVZhbChuYW1lRWxlbWVudCkgfTsKCSAgICB9KSk7CgkgICAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7CgkgICAgICAgIGxpbmUgPSBnZXRQb2ludHMoc2VnbWVudCk7CgkgICAgICAgIGlmIChsaW5lKSB7CgkgICAgICAgICAgICB0cmFjay5wdXNoKGxpbmUubGluZSk7CgkgICAgICAgICAgICBpZiAobGluZS50aW1lcy5sZW5ndGgpCgkgICAgICAgICAgICAgICAgdGltZXMucHVzaChsaW5lLnRpbWVzKTsKCSAgICAgICAgICAgIGlmIChsaW5lLmhlYXJ0UmF0ZXMubGVuZ3RoKQoJICAgICAgICAgICAgICAgIGhlYXJ0UmF0ZXMucHVzaChsaW5lLmhlYXJ0UmF0ZXMpOwoJICAgICAgICAgICAgYWxsRXh0ZW5kZWRQcm9wZXJ0aWVzLnB1c2gobGluZS5leHRlbmRlZFByb3BlcnRpZXMpOwoJICAgICAgICB9CgkgICAgfQoJICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsRXh0ZW5kZWRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIGNvbnN0IGV4dGVuZGVkUHJvcGVydGllcyA9IGFsbEV4dGVuZGVkUHJvcGVydGllc1tpXTsKCSAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBleHRlbmRlZFByb3BlcnRpZXMpIHsKCSAgICAgICAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDEpIHsKCSAgICAgICAgICAgICAgICBpZiAobGluZSkgewoJICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IGxpbmUuZXh0ZW5kZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXNbcHJvcGVydHldKSB7CgkgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNbcHJvcGVydHldID0gdHJhY2subWFwKCh0cmFjaykgPT4gQXJyYXkodHJhY2subGVuZ3RoKS5maWxsKG51bGwpKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcHJvcGVydGllc1twcm9wZXJ0eV1baV0gPSBleHRlbmRlZFByb3BlcnRpZXNbcHJvcGVydHldOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfQoJICAgIGlmICh0cmFjay5sZW5ndGggPT09IDApCgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIGlmICh0aW1lcy5sZW5ndGggfHwgaGVhcnRSYXRlcy5sZW5ndGgpIHsKCSAgICAgICAgcHJvcGVydGllcy5jb29yZGluYXRlUHJvcGVydGllcyA9IE9iamVjdC5hc3NpZ24odGltZXMubGVuZ3RoCgkgICAgICAgICAgICA/IHsKCSAgICAgICAgICAgICAgICB0aW1lczogdHJhY2subGVuZ3RoID09PSAxID8gdGltZXNbMF0gOiB0aW1lcywKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIDoge30sIGhlYXJ0UmF0ZXMubGVuZ3RoCgkgICAgICAgICAgICA/IHsKCSAgICAgICAgICAgICAgICBoZWFydDogdHJhY2subGVuZ3RoID09PSAxID8gaGVhcnRSYXRlc1swXSA6IGhlYXJ0UmF0ZXMsCgkgICAgICAgICAgICB9CgkgICAgICAgICAgICA6IHt9KTsKCSAgICB9CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmUiLAoJICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLAoJICAgICAgICBnZW9tZXRyeTogdHJhY2subGVuZ3RoID09PSAxCgkgICAgICAgICAgICA/IHsKCSAgICAgICAgICAgICAgICB0eXBlOiAiTGluZVN0cmluZyIsCgkgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHRyYWNrWzBdLAoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgOiB7CgkgICAgICAgICAgICAgICAgdHlwZTogIk11bHRpTGluZVN0cmluZyIsCgkgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHRyYWNrLAoJICAgICAgICAgICAgfSwKCSAgICB9OwoJfQoJLyoqCgkgKiBJbmNyZW1lbnRhbGx5IGNvbnZlcnQgYSBUQ1ggZG9jdW1lbnQgdG8gR2VvSlNPTi4gVGhlCgkgKiBmaXJzdCBhcmd1bWVudCwgYGRvY2AsIG11c3QgYmUgYSBUQ1gKCSAqIGRvY3VtZW50IGFzIGFuIFhNTCBET00gLSBub3QgYXMgYSBzdHJpbmcuCgkgKi8KCWZ1bmN0aW9uKiB0Y3hHZW4obm9kZSkgewoJICAgIGZvciAoY29uc3QgbGFwIG9mICQobm9kZSwgIkxhcCIpKSB7CgkgICAgICAgIGNvbnN0IGZlYXR1cmUgPSBnZXRMYXAobGFwKTsKCSAgICAgICAgaWYgKGZlYXR1cmUpCgkgICAgICAgICAgICB5aWVsZCBmZWF0dXJlOwoJICAgIH0KCSAgICBmb3IgKGNvbnN0IGNvdXJzZSBvZiAkKG5vZGUsICJDb3Vyc2VzIikpIHsKCSAgICAgICAgY29uc3QgZmVhdHVyZSA9IGdldExhcChjb3Vyc2UpOwoJICAgICAgICBpZiAoZmVhdHVyZSkKCSAgICAgICAgICAgIHlpZWxkIGZlYXR1cmU7CgkgICAgfQoJfQoJLyoqCgkgKiBDb252ZXJ0IGEgVENYIGRvY3VtZW50IHRvIEdlb0pTT04uIFRoZSBmaXJzdCBhcmd1bWVudCwgYGRvY2AsIG11c3QgYmUgYSBUQ1gKCSAqIGRvY3VtZW50IGFzIGFuIFhNTCBET00gLSBub3QgYXMgYSBzdHJpbmcuCgkgKi8KCWZ1bmN0aW9uIHRjeChub2RlKSB7CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmVDb2xsZWN0aW9uIiwKCSAgICAgICAgZmVhdHVyZXM6IEFycmF5LmZyb20odGN4R2VuKG5vZGUpKSwKCSAgICB9OwoJfQoKCWZ1bmN0aW9uIGZpeENvbG9yKHYsIHByZWZpeCkgewoJICAgIGNvbnN0IHByb3BlcnRpZXMgPSB7fTsKCSAgICBjb25zdCBjb2xvclByb3AgPSBwcmVmaXggPT0gInN0cm9rZSIgfHwgcHJlZml4ID09PSAiZmlsbCIgPyBwcmVmaXggOiBwcmVmaXggKyAiLWNvbG9yIjsKCSAgICBpZiAodlswXSA9PT0gIiMiKSB7CgkgICAgICAgIHYgPSB2LnN1YnN0cmluZygxKTsKCSAgICB9CgkgICAgaWYgKHYubGVuZ3RoID09PSA2IHx8IHYubGVuZ3RoID09PSAzKSB7CgkgICAgICAgIHByb3BlcnRpZXNbY29sb3JQcm9wXSA9ICIjIiArIHY7CgkgICAgfQoJICAgIGVsc2UgaWYgKHYubGVuZ3RoID09PSA4KSB7CgkgICAgICAgIHByb3BlcnRpZXNbcHJlZml4ICsgIi1vcGFjaXR5Il0gPSBwYXJzZUludCh2LnN1YnN0cmluZygwLCAyKSwgMTYpIC8gMjU1OwoJICAgICAgICBwcm9wZXJ0aWVzW2NvbG9yUHJvcF0gPQoJICAgICAgICAgICAgIiMiICsgdi5zdWJzdHJpbmcoNiwgOCkgKyB2LnN1YnN0cmluZyg0LCA2KSArIHYuc3Vic3RyaW5nKDIsIDQpOwoJICAgIH0KCSAgICByZXR1cm4gcHJvcGVydGllczsKCX0KCglmdW5jdGlvbiBudW1lcmljUHJvcGVydHkobm9kZSwgc291cmNlLCB0YXJnZXQpIHsKCSAgICBjb25zdCBwcm9wZXJ0aWVzID0ge307CgkgICAgbnVtMShub2RlLCBzb3VyY2UsICh2YWwpID0+IHsKCSAgICAgICAgcHJvcGVydGllc1t0YXJnZXRdID0gdmFsOwoJICAgIH0pOwoJICAgIHJldHVybiBwcm9wZXJ0aWVzOwoJfQoJZnVuY3Rpb24gZ2V0Q29sb3Iobm9kZSwgb3V0cHV0KSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiY29sb3IiLCAoZWxlbSkgPT4gZml4Q29sb3Iobm9kZVZhbChlbGVtKSwgb3V0cHV0KSk7Cgl9CglmdW5jdGlvbiBleHRyYWN0SWNvbkhyZWYobm9kZSkgewoJICAgIHJldHVybiBnZXQobm9kZSwgIkljb24iLCAoaWNvbiwgcHJvcGVydGllcykgPT4gewoJICAgICAgICB2YWwxKGljb24sICJocmVmIiwgKGhyZWYpID0+IHsKCSAgICAgICAgICAgIHByb3BlcnRpZXMuaWNvbiA9IGhyZWY7CgkgICAgICAgIH0pOwoJICAgICAgICByZXR1cm4gcHJvcGVydGllczsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RJY29uKG5vZGUpIHsKCSAgICByZXR1cm4gZ2V0KG5vZGUsICJJY29uU3R5bGUiLCAoaWNvblN0eWxlKSA9PiB7CgkgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGdldENvbG9yKGljb25TdHlsZSwgImljb24iKSwgbnVtZXJpY1Byb3BlcnR5KGljb25TdHlsZSwgInNjYWxlIiwgImljb24tc2NhbGUiKSwgbnVtZXJpY1Byb3BlcnR5KGljb25TdHlsZSwgImhlYWRpbmciLCAiaWNvbi1oZWFkaW5nIiksIGdldChpY29uU3R5bGUsICJob3RTcG90IiwgKGhvdHNwb3QpID0+IHsKCSAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUZsb2F0KGhvdHNwb3QuZ2V0QXR0cmlidXRlKCJ4IikgfHwgIiIpOwoJICAgICAgICAgICAgY29uc3QgdG9wID0gcGFyc2VGbG9hdChob3RzcG90LmdldEF0dHJpYnV0ZSgieSIpIHx8ICIiKTsKCSAgICAgICAgICAgIGNvbnN0IHh1bml0cyA9IGhvdHNwb3QuZ2V0QXR0cmlidXRlKCJ4dW5pdHMiKSB8fCAiIjsKCSAgICAgICAgICAgIGNvbnN0IHl1bml0cyA9IGhvdHNwb3QuZ2V0QXR0cmlidXRlKCJ5dW5pdHMiKSB8fCAiIjsKCSAgICAgICAgICAgIGlmICghaXNOYU4obGVmdCkgJiYgIWlzTmFOKHRvcCkpCgkgICAgICAgICAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgICAgICAgICAgImljb24tb2Zmc2V0IjogW2xlZnQsIHRvcF0sCgkgICAgICAgICAgICAgICAgICAgICJpY29uLW9mZnNldC11bml0cyI6IFt4dW5pdHMsIHl1bml0c10sCgkgICAgICAgICAgICAgICAgfTsKCSAgICAgICAgICAgIHJldHVybiB7fTsKCSAgICAgICAgfSksIGV4dHJhY3RJY29uSHJlZihpY29uU3R5bGUpKTsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RMYWJlbChub2RlKSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiTGFiZWxTdHlsZSIsIChsYWJlbFN0eWxlKSA9PiB7CgkgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGdldENvbG9yKGxhYmVsU3R5bGUsICJsYWJlbCIpLCBudW1lcmljUHJvcGVydHkobGFiZWxTdHlsZSwgInNjYWxlIiwgImxhYmVsLXNjYWxlIikpOwoJICAgIH0pOwoJfQoJZnVuY3Rpb24gZXh0cmFjdExpbmUobm9kZSkgewoJICAgIHJldHVybiBnZXQobm9kZSwgIkxpbmVTdHlsZSIsIChsaW5lU3R5bGUpID0+IHsKCSAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oZ2V0Q29sb3IobGluZVN0eWxlLCAic3Ryb2tlIiksIG51bWVyaWNQcm9wZXJ0eShsaW5lU3R5bGUsICJ3aWR0aCIsICJzdHJva2Utd2lkdGgiKSk7CgkgICAgfSk7Cgl9CglmdW5jdGlvbiBleHRyYWN0UG9seShub2RlKSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiUG9seVN0eWxlIiwgKHBvbHlTdHlsZSwgcHJvcGVydGllcykgPT4gewoJICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihwcm9wZXJ0aWVzLCBnZXQocG9seVN0eWxlLCAiY29sb3IiLCAoZWxlbSkgPT4gZml4Q29sb3Iobm9kZVZhbChlbGVtKSwgImZpbGwiKSksIHZhbDEocG9seVN0eWxlLCAiZmlsbCIsIChmaWxsKSA9PiB7CgkgICAgICAgICAgICBpZiAoZmlsbCA9PT0gIjAiKQoJICAgICAgICAgICAgICAgIHJldHVybiB7ICJmaWxsLW9wYWNpdHkiOiAwIH07CgkgICAgICAgIH0pLCB2YWwxKHBvbHlTdHlsZSwgIm91dGxpbmUiLCAob3V0bGluZSkgPT4gewoJICAgICAgICAgICAgaWYgKG91dGxpbmUgPT09ICIwIikKCSAgICAgICAgICAgICAgICByZXR1cm4geyAic3Ryb2tlLW9wYWNpdHkiOiAwIH07CgkgICAgICAgIH0pKTsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RTdHlsZShub2RlKSB7CgkgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGV4dHJhY3RQb2x5KG5vZGUpLCBleHRyYWN0TGluZShub2RlKSwgZXh0cmFjdExhYmVsKG5vZGUpLCBleHRyYWN0SWNvbihub2RlKSk7Cgl9CgoJY29uc3QgdG9OdW1iZXIgPSAoeCkgPT4gTnVtYmVyKHgpOwoJY29uc3QgdHlwZUNvbnZlcnRlcnMgPSB7CgkgICAgc3RyaW5nOiAoeCkgPT4geCwKCSAgICBpbnQ6IHRvTnVtYmVyLAoJICAgIHVpbnQ6IHRvTnVtYmVyLAoJICAgIHNob3J0OiB0b051bWJlciwKCSAgICB1c2hvcnQ6IHRvTnVtYmVyLAoJICAgIGZsb2F0OiB0b051bWJlciwKCSAgICBkb3VibGU6IHRvTnVtYmVyLAoJICAgIGJvb2w6ICh4KSA9PiBCb29sZWFuKHgpLAoJfTsKCWZ1bmN0aW9uIGV4dHJhY3RFeHRlbmRlZERhdGEobm9kZSwgc2NoZW1hKSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiRXh0ZW5kZWREYXRhIiwgKGV4dGVuZGVkRGF0YSwgcHJvcGVydGllcykgPT4gewoJICAgICAgICBmb3IgKGNvbnN0IGRhdGEgb2YgJChleHRlbmRlZERhdGEsICJEYXRhIikpIHsKCSAgICAgICAgICAgIHByb3BlcnRpZXNbZGF0YS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSB8fCAiIl0gPSBub2RlVmFsKGdldDEoZGF0YSwgInZhbHVlIikpOwoJICAgICAgICB9CgkgICAgICAgIGZvciAoY29uc3Qgc2ltcGxlRGF0YSBvZiAkKGV4dGVuZGVkRGF0YSwgIlNpbXBsZURhdGEiKSkgewoJICAgICAgICAgICAgY29uc3QgbmFtZSA9IHNpbXBsZURhdGEuZ2V0QXR0cmlidXRlKCJuYW1lIikgfHwgIiI7CgkgICAgICAgICAgICBjb25zdCB0eXBlQ29udmVydGVyID0gc2NoZW1hW25hbWVdIHx8IHR5cGVDb252ZXJ0ZXJzLnN0cmluZzsKCSAgICAgICAgICAgIHByb3BlcnRpZXNbbmFtZV0gPSB0eXBlQ29udmVydGVyKG5vZGVWYWwoc2ltcGxlRGF0YSkpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzOwoJICAgIH0pOwoJfQoJZnVuY3Rpb24gZ2V0TWF5YmVIVE1MRGVzY3JpcHRpb24obm9kZSkgewoJICAgIGNvbnN0IGRlc2NyaXB0aW9uTm9kZSA9IGdldDEobm9kZSwgImRlc2NyaXB0aW9uIik7CgkgICAgZm9yIChjb25zdCBjIG9mIEFycmF5LmZyb20oZGVzY3JpcHRpb25Ob2RlPy5jaGlsZE5vZGVzIHx8IFtdKSkgewoJICAgICAgICBpZiAoYy5ub2RlVHlwZSA9PT0gNCkgewoJICAgICAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogewoJICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiaHRtbCIsCgkgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBub2RlVmFsKGMpLAoJICAgICAgICAgICAgICAgIH0sCgkgICAgICAgICAgICB9OwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiB7fTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RUaW1lU3Bhbihub2RlKSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiVGltZVNwYW4iLCAodGltZVNwYW4pID0+IHsKCSAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgIHRpbWVzcGFuOiB7CgkgICAgICAgICAgICAgICAgYmVnaW46IG5vZGVWYWwoZ2V0MSh0aW1lU3BhbiwgImJlZ2luIikpLAoJICAgICAgICAgICAgICAgIGVuZDogbm9kZVZhbChnZXQxKHRpbWVTcGFuLCAiZW5kIikpLAoJICAgICAgICAgICAgfSwKCSAgICAgICAgfTsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RUaW1lU3RhbXAobm9kZSkgewoJICAgIHJldHVybiBnZXQobm9kZSwgIlRpbWVTdGFtcCIsICh0aW1lU3RhbXApID0+IHsKCSAgICAgICAgcmV0dXJuIHsgdGltZXN0YW1wOiBub2RlVmFsKGdldDEodGltZVN0YW1wLCAid2hlbiIpKSB9OwoJICAgIH0pOwoJfQoJZnVuY3Rpb24gZXh0cmFjdENhc2NhZGVkU3R5bGUobm9kZSwgc3R5bGVNYXApIHsKCSAgICByZXR1cm4gdmFsMShub2RlLCAic3R5bGVVcmwiLCAoc3R5bGVVcmwpID0+IHsKCSAgICAgICAgc3R5bGVVcmwgPSBub3JtYWxpemVJZChzdHlsZVVybCk7CgkgICAgICAgIGlmIChzdHlsZU1hcFtzdHlsZVVybF0pIHsKCSAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsgc3R5bGVVcmwgfSwgc3R5bGVNYXBbc3R5bGVVcmxdKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4gU2hvdWxkIHdlIHN0aWxsIGluY2x1ZGUKCSAgICAgICAgLy8gc3R5bGVVcmwgZXZlbiBpZiBpdCdzIG5vdCByZXNvbHZlZD8KCSAgICAgICAgcmV0dXJuIHsgc3R5bGVVcmwgfTsKCSAgICB9KTsKCX0KCgljb25zdCByZW1vdmVTcGFjZSA9IC9ccyovZzsKCWNvbnN0IHRyaW1TcGFjZSA9IC9eXHMqfFxzKiQvZzsKCWNvbnN0IHNwbGl0U3BhY2UgPSAvXHMrLzsKCS8qKgoJICogR2V0IG9uZSBjb29yZGluYXRlIGZyb20gYSBjb29yZGluYXRlIGFycmF5LCBpZiBhbnkKCSAqLwoJZnVuY3Rpb24gY29vcmQxKHZhbHVlKSB7CgkgICAgcmV0dXJuIHZhbHVlCgkgICAgICAgIC5yZXBsYWNlKHJlbW92ZVNwYWNlLCAiIikKCSAgICAgICAgLnNwbGl0KCIsIikKCSAgICAgICAgLm1hcChwYXJzZUZsb2F0KQoJICAgICAgICAuZmlsdGVyKChudW0pID0+ICFpc05hTihudW0pKQoJICAgICAgICAuc2xpY2UoMCwgMyk7Cgl9CgkvKioKCSAqIEdldCBhbGwgY29vcmRpbmF0ZXMgZnJvbSBhIGNvb3JkaW5hdGUgYXJyYXkgYXMgW1tdLFtdXQoJICovCglmdW5jdGlvbiBjb29yZCh2YWx1ZSkgewoJICAgIHJldHVybiB2YWx1ZQoJICAgICAgICAucmVwbGFjZSh0cmltU3BhY2UsICIiKQoJICAgICAgICAuc3BsaXQoc3BsaXRTcGFjZSkKCSAgICAgICAgLm1hcChjb29yZDEpCgkgICAgICAgIC5maWx0ZXIoKGNvb3JkKSA9PiB7CgkgICAgICAgIHJldHVybiBjb29yZC5sZW5ndGggPj0gMjsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGd4Q29vcmRzKG5vZGUpIHsKCSAgICBsZXQgZWxlbXMgPSAkKG5vZGUsICJjb29yZCIpOwoJICAgIGlmIChlbGVtcy5sZW5ndGggPT09IDApIHsKCSAgICAgICAgZWxlbXMgPSAkbnMobm9kZSwgImNvb3JkIiwgIioiKTsKCSAgICB9CgkgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBlbGVtcy5tYXAoKGVsZW0pID0+IHsKCSAgICAgICAgcmV0dXJuIG5vZGVWYWwoZWxlbSkuc3BsaXQoIiAiKS5tYXAocGFyc2VGbG9hdCk7CgkgICAgfSk7CgkgICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCA9PT0gMCkgewoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICB9CgkgICAgcmV0dXJuIHsKCSAgICAgICAgZ2VvbWV0cnk6IGNvb3JkaW5hdGVzLmxlbmd0aCA+IDIKCSAgICAgICAgICAgID8gewoJICAgICAgICAgICAgICAgIHR5cGU6ICJMaW5lU3RyaW5nIiwKCSAgICAgICAgICAgICAgICBjb29yZGluYXRlcywKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIDogewoJICAgICAgICAgICAgICAgIHR5cGU6ICJQb2ludCIsCgkgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGNvb3JkaW5hdGVzWzBdLAoJICAgICAgICAgICAgfSwKCSAgICAgICAgdGltZXM6ICQobm9kZSwgIndoZW4iKS5tYXAoKGVsZW0pID0+IG5vZGVWYWwoZWxlbSkpLAoJICAgIH07Cgl9CglmdW5jdGlvbiBmaXhSaW5nKHJpbmcpIHsKCSAgICBpZiAocmluZy5sZW5ndGggPT09IDApCgkgICAgICAgIHJldHVybiByaW5nOwoJICAgIGNvbnN0IGZpcnN0ID0gcmluZ1swXTsKCSAgICBjb25zdCBsYXN0ID0gcmluZ1tyaW5nLmxlbmd0aCAtIDFdOwoJICAgIGxldCBlcXVhbCA9IHRydWU7CgkgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1heChmaXJzdC5sZW5ndGgsIGxhc3QubGVuZ3RoKTsgaSsrKSB7CgkgICAgICAgIGlmIChmaXJzdFtpXSAhPT0gbGFzdFtpXSkgewoJICAgICAgICAgICAgZXF1YWwgPSBmYWxzZTsKCSAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICB9CgkgICAgfQoJICAgIGlmICghZXF1YWwpIHsKCSAgICAgICAgcmV0dXJuIHJpbmcuY29uY2F0KFtyaW5nWzBdXSk7CgkgICAgfQoJICAgIHJldHVybiByaW5nOwoJfQoJZnVuY3Rpb24gZ2V0Q29vcmRpbmF0ZXMobm9kZSkgewoJICAgIHJldHVybiBub2RlVmFsKGdldDEobm9kZSwgImNvb3JkaW5hdGVzIikpOwoJfQoJZnVuY3Rpb24gZ2V0R2VvbWV0cnkobm9kZSkgewoJICAgIGxldCBnZW9tZXRyaWVzID0gW107CgkgICAgbGV0IGNvb3JkVGltZXMgPSBbXTsKCSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgewoJICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGROb2Rlcy5pdGVtKGkpOwoJICAgICAgICBpZiAoaXNFbGVtZW50KGNoaWxkKSkgewoJICAgICAgICAgICAgc3dpdGNoIChjaGlsZC50YWdOYW1lKSB7CgkgICAgICAgICAgICAgICAgY2FzZSAiTXVsdGlHZW9tZXRyeSI6CgkgICAgICAgICAgICAgICAgY2FzZSAiTXVsdGlUcmFjayI6CgkgICAgICAgICAgICAgICAgY2FzZSAiZ3g6TXVsdGlUcmFjayI6IHsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRHZW9tZXRyaWVzID0gZ2V0R2VvbWV0cnkoY2hpbGQpOwoJICAgICAgICAgICAgICAgICAgICBnZW9tZXRyaWVzID0gZ2VvbWV0cmllcy5jb25jYXQoY2hpbGRHZW9tZXRyaWVzLmdlb21ldHJpZXMpOwoJICAgICAgICAgICAgICAgICAgICBjb29yZFRpbWVzID0gY29vcmRUaW1lcy5jb25jYXQoY2hpbGRHZW9tZXRyaWVzLmNvb3JkVGltZXMpOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY2FzZSAiUG9pbnQiOiB7CgkgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gY29vcmQxKGdldENvb3JkaW5hdGVzKGNoaWxkKSk7CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggPj0gMikgewoJICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cmllcy5wdXNoKHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiUG9pbnQiLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzLAoJICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNhc2UgIkxpbmVhclJpbmciOgoJICAgICAgICAgICAgICAgIGNhc2UgIkxpbmVTdHJpbmciOiB7CgkgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gY29vcmQoZ2V0Q29vcmRpbmF0ZXMoY2hpbGQpKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCA+PSAyKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyaWVzLnB1c2goewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJMaW5lU3RyaW5nIiwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlcywKCSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjYXNlICJQb2x5Z29uIjogewoJICAgICAgICAgICAgICAgICAgICBjb25zdCBjb29yZHMgPSBbXTsKCSAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaW5lYXJSaW5nIG9mICQoY2hpbGQsICJMaW5lYXJSaW5nIikpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpbmcgPSBmaXhSaW5nKGNvb3JkKGdldENvb3JkaW5hdGVzKGxpbmVhclJpbmcpKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmluZy5sZW5ndGggPj0gNCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkcy5wdXNoKHJpbmcpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb29yZHMubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyaWVzLnB1c2goewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQb2x5Z29uIiwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogY29vcmRzLAoJICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNhc2UgIlRyYWNrIjoKCSAgICAgICAgICAgICAgICBjYXNlICJneDpUcmFjayI6IHsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3ggPSBneENvb3JkcyhjaGlsZCk7CgkgICAgICAgICAgICAgICAgICAgIGlmICghZ3gpCgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0aW1lcywgZ2VvbWV0cnkgfSA9IGd4OwoJICAgICAgICAgICAgICAgICAgICBnZW9tZXRyaWVzLnB1c2goZ2VvbWV0cnkpOwoJICAgICAgICAgICAgICAgICAgICBpZiAodGltZXMubGVuZ3RoKQoJICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRUaW1lcy5wdXNoKHRpbWVzKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiB7CgkgICAgICAgIGdlb21ldHJpZXMsCgkgICAgICAgIGNvb3JkVGltZXMsCgkgICAgfTsKCX0KCglmdW5jdGlvbiBnZW9tZXRyeUxpc3RUb0dlb21ldHJ5KGdlb21ldHJpZXMpIHsKCSAgICByZXR1cm4gZ2VvbWV0cmllcy5sZW5ndGggPT09IDAKCSAgICAgICAgPyBudWxsCgkgICAgICAgIDogZ2VvbWV0cmllcy5sZW5ndGggPT09IDEKCSAgICAgICAgICAgID8gZ2VvbWV0cmllc1swXQoJICAgICAgICAgICAgOiB7CgkgICAgICAgICAgICAgICAgdHlwZTogIkdlb21ldHJ5Q29sbGVjdGlvbiIsCgkgICAgICAgICAgICAgICAgZ2VvbWV0cmllcywKCSAgICAgICAgICAgIH07Cgl9CglmdW5jdGlvbiBnZXRQbGFjZW1hcmsobm9kZSwgc3R5bGVNYXAsIHNjaGVtYSwgb3B0aW9ucykgewoJICAgIGNvbnN0IHsgY29vcmRUaW1lcywgZ2VvbWV0cmllcyB9ID0gZ2V0R2VvbWV0cnkobm9kZSk7CgkgICAgY29uc3QgZ2VvbWV0cnkgPSBnZW9tZXRyeUxpc3RUb0dlb21ldHJ5KGdlb21ldHJpZXMpOwoJICAgIGlmICghZ2VvbWV0cnkgJiYgb3B0aW9ucy5za2lwTnVsbEdlb21ldHJ5KSB7CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH0KCSAgICBjb25zdCBmZWF0dXJlID0gewoJICAgICAgICB0eXBlOiAiRmVhdHVyZSIsCgkgICAgICAgIGdlb21ldHJ5LAoJICAgICAgICBwcm9wZXJ0aWVzOiBPYmplY3QuYXNzaWduKGdldE11bHRpKG5vZGUsIFsKCSAgICAgICAgICAgICJuYW1lIiwKCSAgICAgICAgICAgICJhZGRyZXNzIiwKCSAgICAgICAgICAgICJ2aXNpYmlsaXR5IiwKCSAgICAgICAgICAgICJvcGVuIiwKCSAgICAgICAgICAgICJwaG9uZU51bWJlciIsCgkgICAgICAgICAgICAiZGVzY3JpcHRpb24iLAoJICAgICAgICBdKSwgZ2V0TWF5YmVIVE1MRGVzY3JpcHRpb24obm9kZSksIGV4dHJhY3RDYXNjYWRlZFN0eWxlKG5vZGUsIHN0eWxlTWFwKSwgZXh0cmFjdFN0eWxlKG5vZGUpLCBleHRyYWN0RXh0ZW5kZWREYXRhKG5vZGUsIHNjaGVtYSksIGV4dHJhY3RUaW1lU3Bhbihub2RlKSwgZXh0cmFjdFRpbWVTdGFtcChub2RlKSwgY29vcmRUaW1lcy5sZW5ndGgKCSAgICAgICAgICAgID8gewoJICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVQcm9wZXJ0aWVzOiB7CgkgICAgICAgICAgICAgICAgICAgIHRpbWVzOiBjb29yZFRpbWVzLmxlbmd0aCA9PT0gMSA/IGNvb3JkVGltZXNbMF0gOiBjb29yZFRpbWVzLAoJICAgICAgICAgICAgICAgIH0sCgkgICAgICAgICAgICB9CgkgICAgICAgICAgICA6IHt9KSwKCSAgICB9OwoJICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXM/LnZpc2liaWxpdHkgIT09IHVuZGVmaW5lZCkgewoJICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMudmlzaWJpbGl0eSA9IGZlYXR1cmUucHJvcGVydGllcy52aXNpYmlsaXR5ICE9PSAiMCI7CgkgICAgfQoJICAgIGNvbnN0IGlkID0gbm9kZS5nZXRBdHRyaWJ1dGUoImlkIik7CgkgICAgaWYgKGlkICE9PSBudWxsICYmIGlkICE9PSAiIikKCSAgICAgICAgZmVhdHVyZS5pZCA9IGlkOwoJICAgIHJldHVybiBmZWF0dXJlOwoJfQoKCWZ1bmN0aW9uIGdldEdyb3VuZE92ZXJsYXlCb3gobm9kZSkgewoJICAgIGNvbnN0IGxhdExvblF1YWQgPSBnZXQxKG5vZGUsICJneDpMYXRMb25RdWFkIik7CgkgICAgaWYgKGxhdExvblF1YWQpIHsKCSAgICAgICAgY29uc3QgcmluZyA9IGZpeFJpbmcoY29vcmQoZ2V0Q29vcmRpbmF0ZXMobm9kZSkpKTsKCSAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICAgICAgdHlwZTogIlBvbHlnb24iLAoJICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbcmluZ10sCgkgICAgICAgICAgICB9LAoJICAgICAgICB9OwoJICAgIH0KCSAgICByZXR1cm4gZ2V0TGF0TG9uQm94KG5vZGUpOwoJfQoJY29uc3QgREVHUkVFU19UT19SQURJQU5TID0gTWF0aC5QSSAvIDE4MDsKCWZ1bmN0aW9uIHJvdGF0ZUJveChiYm94LCBjb29yZGluYXRlcywgcm90YXRpb24pIHsKCSAgICBjb25zdCBjZW50ZXIgPSBbKGJib3hbMF0gKyBiYm94WzJdKSAvIDIsIChiYm94WzFdICsgYmJveFszXSkgLyAyXTsKCSAgICByZXR1cm4gWwoJICAgICAgICBjb29yZGluYXRlc1swXS5tYXAoKGNvb3JkaW5hdGUpID0+IHsKCSAgICAgICAgICAgIGNvbnN0IGR5ID0gY29vcmRpbmF0ZVsxXSAtIGNlbnRlclsxXTsKCSAgICAgICAgICAgIGNvbnN0IGR4ID0gY29vcmRpbmF0ZVswXSAtIGNlbnRlclswXTsKCSAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KE1hdGgucG93KGR5LCAyKSArIE1hdGgucG93KGR4LCAyKSk7CgkgICAgICAgICAgICBjb25zdCBhbmdsZSA9IE1hdGguYXRhbjIoZHksIGR4KSArIHJvdGF0aW9uICogREVHUkVFU19UT19SQURJQU5TOwoJICAgICAgICAgICAgcmV0dXJuIFsKCSAgICAgICAgICAgICAgICBjZW50ZXJbMF0gKyBNYXRoLmNvcyhhbmdsZSkgKiBkaXN0YW5jZSwKCSAgICAgICAgICAgICAgICBjZW50ZXJbMV0gKyBNYXRoLnNpbihhbmdsZSkgKiBkaXN0YW5jZSwKCSAgICAgICAgICAgIF07CgkgICAgICAgIH0pLAoJICAgIF07Cgl9CglmdW5jdGlvbiBnZXRMYXRMb25Cb3gobm9kZSkgewoJICAgIGNvbnN0IGxhdExvbkJveCA9IGdldDEobm9kZSwgIkxhdExvbkJveCIpOwoJICAgIGlmIChsYXRMb25Cb3gpIHsKCSAgICAgICAgY29uc3Qgbm9ydGggPSBudW0xKGxhdExvbkJveCwgIm5vcnRoIik7CgkgICAgICAgIGNvbnN0IHdlc3QgPSBudW0xKGxhdExvbkJveCwgIndlc3QiKTsKCSAgICAgICAgY29uc3QgZWFzdCA9IG51bTEobGF0TG9uQm94LCAiZWFzdCIpOwoJICAgICAgICBjb25zdCBzb3V0aCA9IG51bTEobGF0TG9uQm94LCAic291dGgiKTsKCSAgICAgICAgY29uc3Qgcm90YXRpb24gPSBudW0xKGxhdExvbkJveCwgInJvdGF0aW9uIik7CgkgICAgICAgIGlmICh0eXBlb2Ygbm9ydGggPT09ICJudW1iZXIiICYmCgkgICAgICAgICAgICB0eXBlb2Ygc291dGggPT09ICJudW1iZXIiICYmCgkgICAgICAgICAgICB0eXBlb2Ygd2VzdCA9PT0gIm51bWJlciIgJiYKCSAgICAgICAgICAgIHR5cGVvZiBlYXN0ID09PSAibnVtYmVyIikgewoJICAgICAgICAgICAgY29uc3QgYmJveCA9IFt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGhdOwoJICAgICAgICAgICAgbGV0IGNvb3JkaW5hdGVzID0gWwoJICAgICAgICAgICAgICAgIFsKCSAgICAgICAgICAgICAgICAgICAgW3dlc3QsIG5vcnRoXSwKCSAgICAgICAgICAgICAgICAgICAgW2Vhc3QsIG5vcnRoXSwKCSAgICAgICAgICAgICAgICAgICAgW2Vhc3QsIHNvdXRoXSwKCSAgICAgICAgICAgICAgICAgICAgW3dlc3QsIHNvdXRoXSwKCSAgICAgICAgICAgICAgICAgICAgW3dlc3QsIG5vcnRoXSwgLy8gdG9wIGxlZnQgKGFnYWluKQoJICAgICAgICAgICAgICAgIF0sCgkgICAgICAgICAgICBdOwoJICAgICAgICAgICAgaWYgKHR5cGVvZiByb3RhdGlvbiA9PT0gIm51bWJlciIpIHsKCSAgICAgICAgICAgICAgICBjb29yZGluYXRlcyA9IHJvdGF0ZUJveChiYm94LCBjb29yZGluYXRlcywgcm90YXRpb24pOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgICAgICBiYm94LAoJICAgICAgICAgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQb2x5Z29uIiwKCSAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXMsCgkgICAgICAgICAgICAgICAgfSwKCSAgICAgICAgICAgIH07CgkgICAgICAgIH0KCSAgICB9CgkgICAgcmV0dXJuIG51bGw7Cgl9CglmdW5jdGlvbiBnZXRHcm91bmRPdmVybGF5KG5vZGUsIHN0eWxlTWFwLCBzY2hlbWEsIG9wdGlvbnMpIHsKCSAgICBjb25zdCBib3ggPSBnZXRHcm91bmRPdmVybGF5Qm94KG5vZGUpOwoJICAgIGNvbnN0IGdlb21ldHJ5ID0gYm94Py5nZW9tZXRyeSB8fCBudWxsOwoJICAgIGlmICghZ2VvbWV0cnkgJiYgb3B0aW9ucy5za2lwTnVsbEdlb21ldHJ5KSB7CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH0KCSAgICBjb25zdCBmZWF0dXJlID0gewoJICAgICAgICB0eXBlOiAiRmVhdHVyZSIsCgkgICAgICAgIGdlb21ldHJ5LAoJICAgICAgICBwcm9wZXJ0aWVzOiBPYmplY3QuYXNzaWduKAoJICAgICAgICAvKioKCSAgICAgICAgICogUmVsYXRlZCB0bwoJICAgICAgICAgKiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS90bWN3LzAzN2ExY2I2NjYwZDc0YTM5MmU5ZGE3NDQ2NTQwZjQ2CgkgICAgICAgICAqLwoJICAgICAgICB7ICJAZ2VvbWV0cnktdHlwZSI6ICJncm91bmRvdmVybGF5IiB9LCBnZXRNdWx0aShub2RlLCBbCgkgICAgICAgICAgICAibmFtZSIsCgkgICAgICAgICAgICAiYWRkcmVzcyIsCgkgICAgICAgICAgICAidmlzaWJpbGl0eSIsCgkgICAgICAgICAgICAib3BlbiIsCgkgICAgICAgICAgICAicGhvbmVOdW1iZXIiLAoJICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwKCSAgICAgICAgXSksIGdldE1heWJlSFRNTERlc2NyaXB0aW9uKG5vZGUpLCBleHRyYWN0Q2FzY2FkZWRTdHlsZShub2RlLCBzdHlsZU1hcCksIGV4dHJhY3RTdHlsZShub2RlKSwgZXh0cmFjdEljb25IcmVmKG5vZGUpLCBleHRyYWN0RXh0ZW5kZWREYXRhKG5vZGUsIHNjaGVtYSksIGV4dHJhY3RUaW1lU3Bhbihub2RlKSwgZXh0cmFjdFRpbWVTdGFtcChub2RlKSksCgkgICAgfTsKCSAgICBpZiAoYm94Py5iYm94KSB7CgkgICAgICAgIGZlYXR1cmUuYmJveCA9IGJveC5iYm94OwoJICAgIH0KCSAgICBpZiAoZmVhdHVyZS5wcm9wZXJ0aWVzPy52aXNpYmlsaXR5ICE9PSB1bmRlZmluZWQpIHsKCSAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLnZpc2liaWxpdHkgPSBmZWF0dXJlLnByb3BlcnRpZXMudmlzaWJpbGl0eSAhPT0gIjAiOwoJICAgIH0KCSAgICBjb25zdCBpZCA9IG5vZGUuZ2V0QXR0cmlidXRlKCJpZCIpOwoJICAgIGlmIChpZCAhPT0gbnVsbCAmJiBpZCAhPT0gIiIpCgkgICAgICAgIGZlYXR1cmUuaWQgPSBpZDsKCSAgICByZXR1cm4gZmVhdHVyZTsKCX0KCglmdW5jdGlvbiBnZXRTdHlsZUlkKHN0eWxlKSB7CgkgICAgbGV0IGlkID0gc3R5bGUuZ2V0QXR0cmlidXRlKCJpZCIpOwoJICAgIGNvbnN0IHBhcmVudE5vZGUgPSBzdHlsZS5wYXJlbnROb2RlOwoJICAgIGlmICghaWQgJiYKCSAgICAgICAgaXNFbGVtZW50KHBhcmVudE5vZGUpICYmCgkgICAgICAgIHBhcmVudE5vZGUubG9jYWxOYW1lID09PSAiQ2FzY2FkaW5nU3R5bGUiKSB7CgkgICAgICAgIGlkID0gcGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoImttbDppZCIpIHx8IHBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJpZCIpOwoJICAgIH0KCSAgICByZXR1cm4gbm9ybWFsaXplSWQoaWQgfHwgIiIpOwoJfQoJZnVuY3Rpb24gYnVpbGRTdHlsZU1hcChub2RlKSB7CgkgICAgY29uc3Qgc3R5bGVNYXAgPSB7fTsKCSAgICBmb3IgKGNvbnN0IHN0eWxlIG9mICQobm9kZSwgIlN0eWxlIikpIHsKCSAgICAgICAgc3R5bGVNYXBbZ2V0U3R5bGVJZChzdHlsZSldID0gZXh0cmFjdFN0eWxlKHN0eWxlKTsKCSAgICB9CgkgICAgZm9yIChjb25zdCBtYXAgb2YgJChub2RlLCAiU3R5bGVNYXAiKSkgewoJICAgICAgICBjb25zdCBpZCA9IG5vcm1hbGl6ZUlkKG1hcC5nZXRBdHRyaWJ1dGUoImlkIikgfHwgIiIpOwoJICAgICAgICB2YWwxKG1hcCwgInN0eWxlVXJsIiwgKHN0eWxlVXJsKSA9PiB7CgkgICAgICAgICAgICBzdHlsZVVybCA9IG5vcm1hbGl6ZUlkKHN0eWxlVXJsKTsKCSAgICAgICAgICAgIGlmIChzdHlsZU1hcFtzdHlsZVVybF0pIHsKCSAgICAgICAgICAgICAgICBzdHlsZU1hcFtpZF0gPSBzdHlsZU1hcFtzdHlsZVVybF07CgkgICAgICAgICAgICB9CgkgICAgICAgIH0pOwoJICAgIH0KCSAgICByZXR1cm4gc3R5bGVNYXA7Cgl9CglmdW5jdGlvbiBidWlsZFNjaGVtYShub2RlKSB7CgkgICAgY29uc3Qgc2NoZW1hID0ge307CgkgICAgZm9yIChjb25zdCBmaWVsZCBvZiAkKG5vZGUsICJTaW1wbGVGaWVsZCIpKSB7CgkgICAgICAgIHNjaGVtYVtmaWVsZC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSB8fCAiIl0gPQoJICAgICAgICAgICAgdHlwZUNvbnZlcnRlcnNbZmllbGQuZ2V0QXR0cmlidXRlKCJ0eXBlIikgfHwgIiJdIHx8CgkgICAgICAgICAgICAgICAgdHlwZUNvbnZlcnRlcnNbInN0cmluZyJdOwoJICAgIH0KCSAgICByZXR1cm4gc2NoZW1hOwoJfQoJY29uc3QgRk9MREVSX1BST1BTID0gWwoJICAgICJuYW1lIiwKCSAgICAidmlzaWJpbGl0eSIsCgkgICAgIm9wZW4iLAoJICAgICJhZGRyZXNzIiwKCSAgICAiZGVzY3JpcHRpb24iLAoJICAgICJwaG9uZU51bWJlciIsCgkgICAgInZpc2liaWxpdHkiLAoJXTsKCWZ1bmN0aW9uIGdldEZvbGRlcihub2RlKSB7CgkgICAgY29uc3QgbWV0YSA9IHt9OwoJICAgIGZvciAoY29uc3QgY2hpbGQgb2YgQXJyYXkuZnJvbShub2RlLmNoaWxkTm9kZXMpKSB7CgkgICAgICAgIGlmIChpc0VsZW1lbnQoY2hpbGQpICYmIEZPTERFUl9QUk9QUy5pbmNsdWRlcyhjaGlsZC50YWdOYW1lKSkgewoJICAgICAgICAgICAgbWV0YVtjaGlsZC50YWdOYW1lXSA9IG5vZGVWYWwoY2hpbGQpOwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiB7CgkgICAgICAgIHR5cGU6ICJmb2xkZXIiLAoJICAgICAgICBtZXRhLAoJICAgICAgICBjaGlsZHJlbjogW10sCgkgICAgfTsKCX0KCS8qKgoJICogWWllbGQgYSBuZXN0ZWQgdHJlZSB3aXRoIEtNTCBmb2xkZXIgc3RydWN0dXJlCgkgKgoJICogVGhpcyBnZW5lcmF0ZXMgYSB0cmVlIHdpdGggdGhlIGdpdmVuIHN0cnVjdHVyZToKCSAqCgkgKiBgYGBqcwoJICogewoJICogICAidHlwZSI6ICJyb290IiwKCSAqICAgImNoaWxkcmVuIjogWwoJICogICAgIHsKCSAqICAgICAgICJ0eXBlIjogImZvbGRlciIsCgkgKiAgICAgICAibWV0YSI6IHsKCSAqICAgICAgICAgIm5hbWUiOiAiVGVzdCIKCSAqICAgICAgIH0sCgkgKiAgICAgICAiY2hpbGRyZW4iOiBbCgkgKiAgICAgICAgICAvLyAuLi5mZWF0dXJlcyBhbmQgZm9sZGVycwoJICogICAgICAgXQoJICogICAgIH0KCSAqICAgICAvLyAuLi5mZWF0dXJlcwoJICogICBdCgkgKiB9CgkgKiBgYGAKCSAqCgkgKiAjIyMgR3JvdW5kT3ZlcmxheQoJICoKCSAqIEdyb3VuZE92ZXJsYXkgZWxlbWVudHMgYXJlIGNvbnZlcnRlZCBpbnRvCgkgKiBgRmVhdHVyZWAgb2JqZWN0cyB3aXRoIGBQb2x5Z29uYCBnZW9tZXRyaWVzLAoJICogYSBwcm9wZXJ0eSBsaWtlOgoJICoKCSAqIGBgYGpzb24KCSAqIHsKCSAqICAgIkBnZW9tZXRyeS10eXBlIjogImdyb3VuZG92ZXJsYXkiCgkgKiB9CgkgKiBgYGAKCSAqCgkgKiBBbmQgdGhlIGdyb3VuZCBvdmVybGF5J3MgaW1hZ2UgVVJMIGluIHRoZSBgaHJlZmAKCSAqIHByb3BlcnR5LiBHcm91bmQgb3ZlcmxheXMgd2lsbCBuZWVkIHRvIGJlIGRpc3BsYXllZAoJICogd2l0aCBhIHNlcGFyYXRlIG1ldGhvZCB0byBvdGhlciBmZWF0dXJlcywgZGVwZW5kaW5nCgkgKiBvbiB3aGljaCBtYXAgZnJhbWV3b3JrIHlvdSdyZSB1c2luZy4KCSAqLwoJZnVuY3Rpb24ga21sV2l0aEZvbGRlcnMobm9kZSwgb3B0aW9ucyA9IHsKCSAgICBza2lwTnVsbEdlb21ldHJ5OiBmYWxzZSwKCX0pIHsKCSAgICBjb25zdCBzdHlsZU1hcCA9IGJ1aWxkU3R5bGVNYXAobm9kZSk7CgkgICAgY29uc3Qgc2NoZW1hID0gYnVpbGRTY2hlbWEobm9kZSk7CgkgICAgY29uc3QgdHJlZSA9IHsgdHlwZTogInJvb3QiLCBjaGlsZHJlbjogW10gfTsKCSAgICBmdW5jdGlvbiB0cmF2ZXJzZShub2RlLCBwb2ludGVyLCBvcHRpb25zKSB7CgkgICAgICAgIGlmIChpc0VsZW1lbnQobm9kZSkpIHsKCSAgICAgICAgICAgIHN3aXRjaCAobm9kZS50YWdOYW1lKSB7CgkgICAgICAgICAgICAgICAgY2FzZSAiR3JvdW5kT3ZlcmxheSI6IHsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtYXJrID0gZ2V0R3JvdW5kT3ZlcmxheShub2RlLCBzdHlsZU1hcCwgc2NoZW1hLCBvcHRpb25zKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHBsYWNlbWFyaykgewoJICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlci5jaGlsZHJlbi5wdXNoKHBsYWNlbWFyayk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNhc2UgIlBsYWNlbWFyayI6IHsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtYXJrID0gZ2V0UGxhY2VtYXJrKG5vZGUsIHN0eWxlTWFwLCBzY2hlbWEsIG9wdGlvbnMpOwoJICAgICAgICAgICAgICAgICAgICBpZiAocGxhY2VtYXJrKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLmNoaWxkcmVuLnB1c2gocGxhY2VtYXJrKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY2FzZSAiRm9sZGVyIjogewoJICAgICAgICAgICAgICAgICAgICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXIobm9kZSk7CgkgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIuY2hpbGRyZW4ucHVzaChmb2xkZXIpOwoJICAgICAgICAgICAgICAgICAgICBwb2ludGVyID0gZm9sZGVyOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG5vZGUuY2hpbGROb2RlcykgewoJICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgICAgICB0cmF2ZXJzZShub2RlLmNoaWxkTm9kZXNbaV0sIHBvaW50ZXIsIG9wdGlvbnMpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfQoJICAgIHRyYXZlcnNlKG5vZGUsIHRyZWUsIG9wdGlvbnMpOwoJICAgIHJldHVybiB0cmVlOwoJfQoJLyoqCgkgKiBDb252ZXJ0IEtNTCB0byBHZW9KU09OIGluY3JlbWVudGFsbHksIHJldHVybmluZwoJICogYSBbR2VuZXJhdG9yXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL0l0ZXJhdG9yc19hbmRfR2VuZXJhdG9ycykKCSAqIHRoYXQgeWllbGRzIG91dHB1dCBmZWF0dXJlIGJ5IGZlYXR1cmUuCgkgKi8KCWZ1bmN0aW9uKiBrbWxHZW4obm9kZSwgb3B0aW9ucyA9IHsKCSAgICBza2lwTnVsbEdlb21ldHJ5OiBmYWxzZSwKCX0pIHsKCSAgICBjb25zdCBzdHlsZU1hcCA9IGJ1aWxkU3R5bGVNYXAobm9kZSk7CgkgICAgY29uc3Qgc2NoZW1hID0gYnVpbGRTY2hlbWEobm9kZSk7CgkgICAgZm9yIChjb25zdCBwbGFjZW1hcmsgb2YgJChub2RlLCAiUGxhY2VtYXJrIikpIHsKCSAgICAgICAgY29uc3QgZmVhdHVyZSA9IGdldFBsYWNlbWFyayhwbGFjZW1hcmssIHN0eWxlTWFwLCBzY2hlbWEsIG9wdGlvbnMpOwoJICAgICAgICBpZiAoZmVhdHVyZSkKCSAgICAgICAgICAgIHlpZWxkIGZlYXR1cmU7CgkgICAgfQoJICAgIGZvciAoY29uc3QgZ3JvdW5kT3ZlcmxheSBvZiAkKG5vZGUsICJHcm91bmRPdmVybGF5IikpIHsKCSAgICAgICAgY29uc3QgZmVhdHVyZSA9IGdldEdyb3VuZE92ZXJsYXkoZ3JvdW5kT3ZlcmxheSwgc3R5bGVNYXAsIHNjaGVtYSwgb3B0aW9ucyk7CgkgICAgICAgIGlmIChmZWF0dXJlKQoJICAgICAgICAgICAgeWllbGQgZmVhdHVyZTsKCSAgICB9Cgl9CgkvKioKCSAqIENvbnZlcnQgYSBLTUwgZG9jdW1lbnQgdG8gR2VvSlNPTi4gVGhlIGZpcnN0IGFyZ3VtZW50LCBgZG9jYCwgbXVzdCBiZSBhIEtNTAoJICogZG9jdW1lbnQgYXMgYW4gWE1MIERPTSAtIG5vdCBhcyBhIHN0cmluZy4gWW91IGNhbiBnZXQgdGhpcyB1c2luZyBqUXVlcnkncyBkZWZhdWx0CgkgKiBgLmFqYXhgIGZ1bmN0aW9uIG9yIHVzaW5nIGEgYmFyZSBYTUxIdHRwUmVxdWVzdCB3aXRoIHRoZSBgLnJlc3BvbnNlYCBwcm9wZXJ0eQoJICogaG9sZGluZyBhbiBYTUwgRE9NLgoJICoKCSAqIFRoZSBvdXRwdXQgaXMgYSBKYXZhU2NyaXB0IG9iamVjdCBvZiBHZW9KU09OIGRhdGEuIFlvdSBjYW4gY29udmVydCBpdCB0byBhIHN0cmluZwoJICogd2l0aCBbSlNPTi5zdHJpbmdpZnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0pTT04vc3RyaW5naWZ5KQoJICogb3IgdXNlIGl0IGRpcmVjdGx5IGluIGxpYnJhcmllcy4KCSAqLwoJZnVuY3Rpb24ga21sKG5vZGUsIG9wdGlvbnMgPSB7CgkgICAgc2tpcE51bGxHZW9tZXRyeTogZmFsc2UsCgl9KSB7CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmVDb2xsZWN0aW9uIiwKCSAgICAgICAgZmVhdHVyZXM6IEFycmF5LmZyb20oa21sR2VuKG5vZGUsIG9wdGlvbnMpKSwKCSAgICB9OwoJfQoKCXZhciB0b0dlb0pzb24gPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7CgkJX19wcm90b19fOiBudWxsLAoJCWdweDogZ3B4LAoJCWdweEdlbjogZ3B4R2VuLAoJCWttbDoga21sLAoJCWttbEdlbjoga21sR2VuLAoJCWttbFdpdGhGb2xkZXJzOiBrbWxXaXRoRm9sZGVycywKCQl0Y3g6IHRjeCwKCQl0Y3hHZW46IHRjeEdlbgoJfSk7CgoJdmFyIHBvbHlsaW5lID0ge2V4cG9ydHM6IHt9fTsKCgkoZnVuY3Rpb24gKG1vZHVsZSkgewoKCQkvKioKCQkgKiBCYXNlZCBvZmYgb2YgW3RoZSBvZmZpY2FsIEdvb2dsZSBkb2N1bWVudF0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL3V0aWxpdGllcy9wb2x5bGluZWFsZ29yaXRobSkKCQkgKgoJCSAqIFNvbWUgcGFydHMgZnJvbSBbdGhpcyBpbXBsZW1lbnRhdGlvbl0oaHR0cDovL2ZhY3N0YWZmLnVuY2EuZWR1L21jbWNjbHVyL0dvb2dsZU1hcHMvRW5jb2RlUG9seWxpbmUvUG9seWxpbmVFbmNvZGVyLmpzKQoJCSAqIGJ5IFtNYXJrIE1jQ2x1cmVdKGh0dHA6Ly9mYWNzdGFmZi51bmNhLmVkdS9tY21jY2x1ci8pCgkJICoKCQkgKiBAbW9kdWxlIHBvbHlsaW5lCgkJICovCgoJCXZhciBwb2x5bGluZSA9IHt9OwoKCQlmdW5jdGlvbiBweTJfcm91bmQodmFsdWUpIHsKCQkgICAgLy8gR29vZ2xlJ3MgcG9seWxpbmUgYWxnb3JpdGhtIHVzZXMgdGhlIHNhbWUgcm91bmRpbmcgc3RyYXRlZ3kgYXMgUHl0aG9uIDIsIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIEpTIGZvciBuZWdhdGl2ZSB2YWx1ZXMKCQkgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5hYnModmFsdWUpICsgMC41KSAqICh2YWx1ZSA+PSAwID8gMSA6IC0xKTsKCQl9CgoJCWZ1bmN0aW9uIGVuY29kZShjdXJyZW50LCBwcmV2aW91cywgZmFjdG9yKSB7CgkJICAgIGN1cnJlbnQgPSBweTJfcm91bmQoY3VycmVudCAqIGZhY3Rvcik7CgkJICAgIHByZXZpb3VzID0gcHkyX3JvdW5kKHByZXZpb3VzICogZmFjdG9yKTsKCQkgICAgdmFyIGNvb3JkaW5hdGUgPSAoY3VycmVudCAtIHByZXZpb3VzKSAqIDI7CgkJICAgIGlmIChjb29yZGluYXRlIDwgMCkgewoJCSAgICAgICAgY29vcmRpbmF0ZSA9IC1jb29yZGluYXRlIC0gMTsKCQkgICAgfQoJCSAgICB2YXIgb3V0cHV0ID0gJyc7CgkJICAgIHdoaWxlIChjb29yZGluYXRlID49IDB4MjApIHsKCQkgICAgICAgIG91dHB1dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgweDIwIHwgKGNvb3JkaW5hdGUgJiAweDFmKSkgKyA2Myk7CgkJICAgICAgICBjb29yZGluYXRlIC89IDMyOwoJCSAgICB9CgkJICAgIG91dHB1dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjb29yZGluYXRlIHwgMCkgKyA2Myk7CgkJICAgIHJldHVybiBvdXRwdXQ7CgkJfQoKCQkvKioKCQkgKiBEZWNvZGVzIHRvIGEgW2xhdGl0dWRlLCBsb25naXR1ZGVdIGNvb3JkaW5hdGVzIGFycmF5LgoJCSAqCgkJICogVGhpcyBpcyBhZGFwdGVkIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGluIFByb2plY3QtT1NSTS4KCQkgKgoJCSAqIEBwYXJhbSB7U3RyaW5nfSBzdHIKCQkgKiBAcGFyYW0ge051bWJlcn0gcHJlY2lzaW9uCgkJICogQHJldHVybnMge0FycmF5fQoJCSAqCgkJICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vUHJvamVjdC1PU1JNL29zcm0tZnJvbnRlbmQvYmxvYi9tYXN0ZXIvV2ViQ29udGVudC9yb3V0aW5nL09TUk0uUm91dGluZ0dlb21ldHJ5LmpzCgkJICovCgkJcG9seWxpbmUuZGVjb2RlID0gZnVuY3Rpb24oc3RyLCBwcmVjaXNpb24pIHsKCQkgICAgdmFyIGluZGV4ID0gMCwKCQkgICAgICAgIGxhdCA9IDAsCgkJICAgICAgICBsbmcgPSAwLAoJCSAgICAgICAgY29vcmRpbmF0ZXMgPSBbXSwKCQkgICAgICAgIHNoaWZ0ID0gMCwKCQkgICAgICAgIHJlc3VsdCA9IDAsCgkJICAgICAgICBieXRlID0gbnVsbCwKCQkgICAgICAgIGxhdGl0dWRlX2NoYW5nZSwKCQkgICAgICAgIGxvbmdpdHVkZV9jaGFuZ2UsCgkJICAgICAgICBmYWN0b3IgPSBNYXRoLnBvdygxMCwgTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pID8gcHJlY2lzaW9uIDogNSk7CgoJCSAgICAvLyBDb29yZGluYXRlcyBoYXZlIHZhcmlhYmxlIGxlbmd0aCB3aGVuIGVuY29kZWQsIHNvIGp1c3Qga2VlcAoJCSAgICAvLyB0cmFjayBvZiB3aGV0aGVyIHdlJ3ZlIGhpdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIEluIGVhY2gKCQkgICAgLy8gbG9vcCBpdGVyYXRpb24sIGEgc2luZ2xlIGNvb3JkaW5hdGUgaXMgZGVjb2RlZC4KCQkgICAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkgewoKCQkgICAgICAgIC8vIFJlc2V0IHNoaWZ0LCByZXN1bHQsIGFuZCBieXRlCgkJICAgICAgICBieXRlID0gbnVsbDsKCQkgICAgICAgIHNoaWZ0ID0gMTsKCQkgICAgICAgIHJlc3VsdCA9IDA7CgoJCSAgICAgICAgZG8gewoJCSAgICAgICAgICAgIGJ5dGUgPSBzdHIuY2hhckNvZGVBdChpbmRleCsrKSAtIDYzOwoJCSAgICAgICAgICAgIHJlc3VsdCArPSAoYnl0ZSAmIDB4MWYpICogc2hpZnQ7CgkJICAgICAgICAgICAgc2hpZnQgKj0gMzI7CgkJICAgICAgICB9IHdoaWxlIChieXRlID49IDB4MjApOwoKCQkgICAgICAgIGxhdGl0dWRlX2NoYW5nZSA9IChyZXN1bHQgJiAxKSA/ICgoLXJlc3VsdCAtIDEpIC8gMikgOiAocmVzdWx0IC8gMik7CgoJCSAgICAgICAgc2hpZnQgPSAxOwoJCSAgICAgICAgcmVzdWx0ID0gMDsKCgkJICAgICAgICBkbyB7CgkJICAgICAgICAgICAgYnl0ZSA9IHN0ci5jaGFyQ29kZUF0KGluZGV4KyspIC0gNjM7CgkJICAgICAgICAgICAgcmVzdWx0ICs9IChieXRlICYgMHgxZikgKiBzaGlmdDsKCQkgICAgICAgICAgICBzaGlmdCAqPSAzMjsKCQkgICAgICAgIH0gd2hpbGUgKGJ5dGUgPj0gMHgyMCk7CgoJCSAgICAgICAgbG9uZ2l0dWRlX2NoYW5nZSA9IChyZXN1bHQgJiAxKSA/ICgoLXJlc3VsdCAtIDEpIC8gMikgOiAocmVzdWx0IC8gMik7CgoJCSAgICAgICAgbGF0ICs9IGxhdGl0dWRlX2NoYW5nZTsKCQkgICAgICAgIGxuZyArPSBsb25naXR1ZGVfY2hhbmdlOwoKCQkgICAgICAgIGNvb3JkaW5hdGVzLnB1c2goW2xhdCAvIGZhY3RvciwgbG5nIC8gZmFjdG9yXSk7CgkJICAgIH0KCgkJICAgIHJldHVybiBjb29yZGluYXRlczsKCQl9OwoKCQkvKioKCQkgKiBFbmNvZGVzIHRoZSBnaXZlbiBbbGF0aXR1ZGUsIGxvbmdpdHVkZV0gY29vcmRpbmF0ZXMgYXJyYXkuCgkJICoKCQkgKiBAcGFyYW0ge0FycmF5LjxBcnJheS48TnVtYmVyPj59IGNvb3JkaW5hdGVzCgkJICogQHBhcmFtIHtOdW1iZXJ9IHByZWNpc2lvbgoJCSAqIEByZXR1cm5zIHtTdHJpbmd9CgkJICovCgkJcG9seWxpbmUuZW5jb2RlID0gZnVuY3Rpb24oY29vcmRpbmF0ZXMsIHByZWNpc2lvbikgewoJCSAgICBpZiAoIWNvb3JkaW5hdGVzLmxlbmd0aCkgeyByZXR1cm4gJyc7IH0KCgkJICAgIHZhciBmYWN0b3IgPSBNYXRoLnBvdygxMCwgTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pID8gcHJlY2lzaW9uIDogNSksCgkJICAgICAgICBvdXRwdXQgPSBlbmNvZGUoY29vcmRpbmF0ZXNbMF1bMF0sIDAsIGZhY3RvcikgKyBlbmNvZGUoY29vcmRpbmF0ZXNbMF1bMV0sIDAsIGZhY3Rvcik7CgoJCSAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNvb3JkaW5hdGVzLmxlbmd0aDsgaSsrKSB7CgkJICAgICAgICB2YXIgYSA9IGNvb3JkaW5hdGVzW2ldLCBiID0gY29vcmRpbmF0ZXNbaSAtIDFdOwoJCSAgICAgICAgb3V0cHV0ICs9IGVuY29kZShhWzBdLCBiWzBdLCBmYWN0b3IpOwoJCSAgICAgICAgb3V0cHV0ICs9IGVuY29kZShhWzFdLCBiWzFdLCBmYWN0b3IpOwoJCSAgICB9CgoJCSAgICByZXR1cm4gb3V0cHV0OwoJCX07CgoJCWZ1bmN0aW9uIGZsaXBwZWQoY29vcmRzKSB7CgkJICAgIHZhciBmbGlwcGVkID0gW107CgkJICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29vcmRzLmxlbmd0aDsgaSsrKSB7CgkJICAgICAgICB2YXIgY29vcmQgPSBjb29yZHNbaV0uc2xpY2UoKTsKCQkgICAgICAgIGZsaXBwZWQucHVzaChbY29vcmRbMV0sIGNvb3JkWzBdXSk7CgkJICAgIH0KCQkgICAgcmV0dXJuIGZsaXBwZWQ7CgkJfQoKCQkvKioKCQkgKiBFbmNvZGVzIGEgR2VvSlNPTiBMaW5lU3RyaW5nIGZlYXR1cmUvZ2VvbWV0cnkuCgkJICoKCQkgKiBAcGFyYW0ge09iamVjdH0gZ2VvanNvbgoJCSAqIEBwYXJhbSB7TnVtYmVyfSBwcmVjaXNpb24KCQkgKiBAcmV0dXJucyB7U3RyaW5nfQoJCSAqLwoJCXBvbHlsaW5lLmZyb21HZW9KU09OID0gZnVuY3Rpb24oZ2VvanNvbiwgcHJlY2lzaW9uKSB7CgkJICAgIGlmIChnZW9qc29uICYmIGdlb2pzb24udHlwZSA9PT0gJ0ZlYXR1cmUnKSB7CgkJICAgICAgICBnZW9qc29uID0gZ2VvanNvbi5nZW9tZXRyeTsKCQkgICAgfQoJCSAgICBpZiAoIWdlb2pzb24gfHwgZ2VvanNvbi50eXBlICE9PSAnTGluZVN0cmluZycpIHsKCQkgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgbXVzdCBiZSBhIEdlb0pTT04gTGluZVN0cmluZycpOwoJCSAgICB9CgkJICAgIHJldHVybiBwb2x5bGluZS5lbmNvZGUoZmxpcHBlZChnZW9qc29uLmNvb3JkaW5hdGVzKSwgcHJlY2lzaW9uKTsKCQl9OwoKCQkvKioKCQkgKiBEZWNvZGVzIHRvIGEgR2VvSlNPTiBMaW5lU3RyaW5nIGdlb21ldHJ5LgoJCSAqCgkJICogQHBhcmFtIHtTdHJpbmd9IHN0cgoJCSAqIEBwYXJhbSB7TnVtYmVyfSBwcmVjaXNpb24KCQkgKiBAcmV0dXJucyB7T2JqZWN0fQoJCSAqLwoJCXBvbHlsaW5lLnRvR2VvSlNPTiA9IGZ1bmN0aW9uKHN0ciwgcHJlY2lzaW9uKSB7CgkJICAgIHZhciBjb29yZHMgPSBwb2x5bGluZS5kZWNvZGUoc3RyLCBwcmVjaXNpb24pOwoJCSAgICByZXR1cm4gewoJCSAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLAoJCSAgICAgICAgY29vcmRpbmF0ZXM6IGZsaXBwZWQoY29vcmRzKQoJCSAgICB9OwoJCX07CgoJCWlmIChtb2R1bGUuZXhwb3J0cykgewoJCSAgICBtb2R1bGUuZXhwb3J0cyA9IHBvbHlsaW5lOwoJCX0gCgl9IChwb2x5bGluZSkpOwoKCXZhciBwb2x5bGluZUV4cG9ydHMgPSBwb2x5bGluZS5leHBvcnRzOwoKCXZhciB1dGlscyA9ICgoKSA9PiB7CgoJICAgIGNvbnN0IHB1cmdlUHJvcHMgPSAob2JqLCBibGFja2xpc3QpID0+IHsKCSAgICAgICAgaWYgKG9iaikgewoJICAgICAgICAgICAgbGV0IHJzID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTsKCSAgICAgICAgICAgIGlmIChibGFja2xpc3QpIHsKCSAgICAgICAgICAgICAgICBmb3IgKGxldCBwcm9wIG9mIGJsYWNrbGlzdCkgewoJICAgICAgICAgICAgICAgICAgICBkZWxldGUgcnNbcHJvcF07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIHJzOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB7fTsKCSAgICB9OwoKCSAgICBjb25zdCBtZXJnZVByb3BzID0gKG9iajEsIG9iajIpID0+IHsKCSAgICAgICAgb2JqMSA9IG9iajEgPyBvYmoxIDoge307CgkgICAgICAgIG9iajIgPSBvYmoyID8gb2JqMiA6IHt9OwoJICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihvYmoxLCBvYmoyKTsKCSAgICB9OwoKCSAgICBjb25zdCBmaXJzdCA9IGEgPT4gYVswXTsKCSAgICBjb25zdCBsYXN0ID0gYSA9PiBhW2EubGVuZ3RoIC0gMV07CgkgICAgY29uc3QgY29vcmRzVG9LZXkgPSBhID0+IGEuam9pbignLCcpOwoKCSAgICBjb25zdCBhZGRUb01hcCA9IChtLCBrLCB2KSA9PiB7CgkgICAgICAgIGxldCBhID0gbVtrXTsKCSAgICAgICAgaWYgKGEpIHsKCSAgICAgICAgICAgIGEucHVzaCh2KTsKCSAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgIG1ba10gPSBbdl07CgkgICAgICAgIH0KCSAgICB9OwoKCSAgICBjb25zdCByZW1vdmVGcm9tTWFwID0gKG0sIGssIHYpID0+IHsKCSAgICAgICAgbGV0IGEgPSBtW2tdOwoJICAgICAgICBsZXQgaWR4ID0gbnVsbDsKCSAgICAgICAgaWYgKGEgJiYgKGlkeCA9IGEuaW5kZXhPZih2KSkgPj0gMCkgewoJICAgICAgICAgICAgYS5zcGxpY2UoaWR4LCAxKTsKCSAgICAgICAgfQoJICAgIH07CgoJICAgIGNvbnN0IGdldEZpcnN0RnJvbU1hcCA9IChtLCBrKSA9PiB7CgkgICAgICAgIGxldCBhID0gbVtrXTsKCSAgICAgICAgaWYgKGEgJiYgYS5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICByZXR1cm4gYVswXTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICB9OwoKCSAgICAvLyBuZWVkIDMrIGRpZmZlcmVudCBwb2ludHMgdG8gZm9ybSBhIHJpbmcsIGhlcmUgdXNpbmcgPiAzIGlzICdjb3ogYSB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IHBvaW50cyBhcmUgYWN0dWFsbHkgdGhlIHNhbWUKCSAgICBjb25zdCBpc1JpbmcgPSBhID0+IGEubGVuZ3RoID4gMyAmJiBjb29yZHNUb0tleShmaXJzdChhKSkgPT09IGNvb3Jkc1RvS2V5KGxhc3QoYSkpOwoKCSAgICBjb25zdCByaW5nRGlyZWN0aW9uID0gKGEsIHhJZHgsIHlJZHgpID0+IHsKCSAgICAgICAgeElkeCA9IHhJZHggfHwgMCwgeUlkeCA9IHlJZHggfHwgMTsKCSAgICAgICAgLy8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgcG9pbnQgd2hpY2ggaGFzIHRoZSBtYXhpbXVtIHggdmFsdWUKCSAgICAgICAgbGV0IG0gPSBhLnJlZHVjZSgobWF4eElkeCwgdiwgaWR4KSA9PiBhW21heHhJZHhdW3hJZHhdID4gdlt4SWR4XSA/IG1heHhJZHggOiBpZHgsIDApOwoJICAgICAgICAvLyAnY296IHRoZSBmaXJzdCBwb2ludCBpcyB2aXJ0dWFsbHkgdGhlIHNhbWUgb25lIGFzIHRoZSBsYXN0IHBvaW50LCAKCSAgICAgICAgLy8gd2UgbmVlZCB0byBza2lwIGEubGVuZ3RoIC0gMSBmb3IgbGVmdCB3aGVuIG0gPSAwLAoJICAgICAgICAvLyBhbmQgc2tpcCAwIGZvciByaWdodCB3aGVuIG0gPSBhLmxlbmd0aCAtIDE7CgkgICAgICAgIGxldCBsID0gbSA8PSAwID8gYS5sZW5ndGggLSAyIDogbSAtIDEsIHIgPSBtID49IGEubGVuZ3RoIC0gMSA/IDEgOiBtICsgMTsKCSAgICAgICAgbGV0IHhhID0gYVtsXVt4SWR4XSwgeGIgPSBhW21dW3hJZHhdLCB4YyA9IGFbcl1beElkeF07CgkgICAgICAgIGxldCB5YSA9IGFbbF1beUlkeF0sIHliID0gYVttXVt5SWR4XSwgeWMgPSBhW3JdW3lJZHhdOwoJICAgICAgICBsZXQgZGV0ID0gKHhiIC0geGEpICogKHljIC0geWEpIC0gKHhjIC0geGEpICogKHliIC0geWEpOwoJICAgICAgICByZXR1cm4gZGV0IDwgMCA/ICdjbG9ja3dpc2UnIDogJ2NvdW50ZXJjbG9ja3dpc2UnOwoJICAgIH07CgoJICAgIGNvbnN0IHB0SW5zaWRlUG9seWdvbiA9IChwdCwgcG9seWdvbiwgeElkeCwgeUlkeCkgPT4gewoJICAgICAgICB4SWR4ID0geElkeCB8fCAwLCB5SWR4ID0geUlkeCB8fCAxOwoJICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7CgkgICAgICAgIGZvciAobGV0IGkgPSAwLCBqID0gcG9seWdvbi5sZW5ndGggLSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGogPSBpKyspIHsKCSAgICAgICAgICAgIGlmICgocG9seWdvbltpXVt4SWR4XSA8PSBwdFt4SWR4XSAmJiBwdFt4SWR4XSA8IHBvbHlnb25bal1beElkeF0gfHwKCSAgICAgICAgICAgICAgICBwb2x5Z29uW2pdW3hJZHhdIDw9IHB0W3hJZHhdICYmIHB0W3hJZHhdIDwgcG9seWdvbltpXVt4SWR4XSkgJiYKCSAgICAgICAgICAgICAgICBwdFt5SWR4XSA8IChwb2x5Z29uW2pdW3lJZHhdIC0gcG9seWdvbltpXVt5SWR4XSkgKiAocHRbeElkeF0gLSBwb2x5Z29uW2ldW3hJZHhdKSAvIChwb2x5Z29uW2pdW3hJZHhdIC0gcG9seWdvbltpXVt4SWR4XSkgKyBwb2x5Z29uW2ldW3lJZHhdKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0ID0gIXJlc3VsdDsKCSAgICAgICAgICAgIH0KCgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoKCSAgICBjb25zdCBzdHJUb0Zsb2F0ID0gZWwgPT4gZWwgaW5zdGFuY2VvZiBBcnJheSA/IGVsLm1hcChzdHJUb0Zsb2F0KSA6IHBhcnNlRmxvYXQoZWwpOwoKCSAgICBjbGFzcyBSZWZFbGVtZW50cyBleHRlbmRzIE1hcCB7CgkgICAgICAgIGNvbnN0cnVjdG9yKCkgewoJICAgICAgICAgICAgc3VwZXIoKTsKCSAgICAgICAgICAgIHRoaXMuYmluZGVycyA9IFtdOwoJICAgICAgICB9CgoJICAgICAgICBhZGQoaywgdikgewoJICAgICAgICAgICAgaWYgKCF0aGlzLmhhcyhrKSkgewoJICAgICAgICAgICAgICAgIHRoaXMuc2V0KGssIHYpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gc3VwcHJlc3MgZHVwbGNhdGVkIGtleSBlcnJvcgoJICAgICAgICAgICAgLy8gZWxzZQoJICAgICAgICAgICAgLy8gdGhyb3cgYEVycm9yOiBhZGRpbmcgZHVwbGljYXRlZCBrZXkgJyR7a30nIHRvIFJlZkVsZW1lbnRzYDsKCSAgICAgICAgfQoKCSAgICAgICAgYWRkQmluZGVyKGJpbmRlcikgewoJICAgICAgICAgICAgdGhpcy5iaW5kZXJzLnB1c2goYmluZGVyKTsKCSAgICAgICAgfQoKCSAgICAgICAgYmluZEFsbCgpIHsKCSAgICAgICAgICAgIHRoaXMuYmluZGVycy5mb3JFYWNoKGJpbmRlciA9PiBiaW5kZXIuYmluZCgpKTsKCSAgICAgICAgfQoJICAgIH0KCgkgICAgY2xhc3MgTGF0ZUJpbmRlciB7CgkgICAgICAgIGNvbnN0cnVjdG9yKGNvbnRhaW5lciwgdmFsdWVGdW5jLCBjdHgsIGFyZ3MpIHsKCSAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyOwoJICAgICAgICAgICAgdGhpcy52YWx1ZUZ1bmMgPSB2YWx1ZUZ1bmM7CgkgICAgICAgICAgICB0aGlzLmN0eCA9IGN0eDsKCSAgICAgICAgICAgIHRoaXMuYXJncyA9IGFyZ3M7CgkgICAgICAgIH0KCgkgICAgICAgIGJpbmQoKSB7CgkgICAgICAgICAgICBsZXQgdiA9IHRoaXMudmFsdWVGdW5jLmFwcGx5KHRoaXMuY3R4LCB0aGlzLmFyZ3MpOwoJICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyIGluc3RhbmNlb2YgQXJyYXkpIHsKCSAgICAgICAgICAgICAgICBsZXQgaWR4ID0gdGhpcy5jb250YWluZXIuaW5kZXhPZih0aGlzKTsKCSAgICAgICAgICAgICAgICBpZiAoaWR4ID49IDApIHsKCSAgICAgICAgICAgICAgICAgICAgbGV0IGFyZ3MgPSBbaWR4LCAxXTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaCh2KTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBbXS5zcGxpY2UuYXBwbHkodGhpcy5jb250YWluZXIsIGFyZ3MpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuY29udGFpbmVyID09PSAnb2JqZWN0JykgewoJICAgICAgICAgICAgICAgIGxldCBrID0gT2JqZWN0LmtleXModGhpcy5jb250YWluZXIpLmZpbmQodiA9PiB0aGlzLmNvbnRhaW5lclt2XSA9PT0gdGhpcyk7CgkgICAgICAgICAgICAgICAgaWYgKGspIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyW2tdID0gdjsKCSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNvbnRhaW5lcltrXTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH0KCgkgICAgY2xhc3MgV2F5Q29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHsKCSAgICAgICAgY29uc3RydWN0b3IoKSB7CgkgICAgICAgICAgICBzdXBlcigpOwoJICAgICAgICAgICAgdGhpcy5maXJzdE1hcCA9IHt9OwoJICAgICAgICAgICAgdGhpcy5sYXN0TWFwID0ge307CgkgICAgICAgIH0KCgkgICAgICAgIGFkZFdheSh3YXkpIHsKCSAgICAgICAgICAgIHdheSA9IHdheS50b0Nvb3Jkc0FycmF5KCk7CgkgICAgICAgICAgICBpZiAod2F5Lmxlbmd0aCA+IDApIHsKCSAgICAgICAgICAgICAgICB0aGlzLnB1c2god2F5KTsKCSAgICAgICAgICAgICAgICBhZGRUb01hcCh0aGlzLmZpcnN0TWFwLCBjb29yZHNUb0tleShmaXJzdCh3YXkpKSwgd2F5KTsKCSAgICAgICAgICAgICAgICBhZGRUb01hcCh0aGlzLmxhc3RNYXAsIGNvb3Jkc1RvS2V5KGxhc3Qod2F5KSksIHdheSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCgkgICAgICAgIHRvU3RyaW5ncygpIHsKCSAgICAgICAgICAgIGxldCBzdHJpbmdzID0gW10sIHdheSA9IG51bGw7CgkgICAgICAgICAgICB3aGlsZSAod2F5ID0gdGhpcy5zaGlmdCgpKSB7CgkgICAgICAgICAgICAgICAgcmVtb3ZlRnJvbU1hcCh0aGlzLmZpcnN0TWFwLCBjb29yZHNUb0tleShmaXJzdCh3YXkpKSwgd2F5KTsKCSAgICAgICAgICAgICAgICByZW1vdmVGcm9tTWFwKHRoaXMubGFzdE1hcCwgY29vcmRzVG9LZXkobGFzdCh3YXkpKSwgd2F5KTsKCSAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IHdheSwgbmV4dCA9IG51bGw7CgkgICAgICAgICAgICAgICAgZG8gewoJICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gY29vcmRzVG9LZXkobGFzdChjdXJyZW50KSksIHNob3VsZFJldmVyc2UgPSBmYWxzZTsKCgkgICAgICAgICAgICAgICAgICAgIG5leHQgPSBnZXRGaXJzdEZyb21NYXAodGhpcy5maXJzdE1hcCwga2V5KTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gZ2V0Rmlyc3RGcm9tTWFwKHRoaXMubGFzdE1hcCwga2V5KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFJldmVyc2UgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGxpY2UodGhpcy5pbmRleE9mKG5leHQpLCAxKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUZyb21NYXAodGhpcy5maXJzdE1hcCwgY29vcmRzVG9LZXkoZmlyc3QobmV4dCkpLCBuZXh0KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUZyb21NYXAodGhpcy5sYXN0TWFwLCBjb29yZHNUb0tleShsYXN0KG5leHQpKSwgbmV4dCk7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUmV2ZXJzZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsd2F5cyByZXZlcnNlIHNob3J0ZXIgb25lIHRvIHNhdmUgdGltZQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Lmxlbmd0aCA+IGN1cnJlbnQubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50LCBuZXh0XSA9IFtuZXh0LCBjdXJyZW50XTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5yZXZlcnNlKCk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuY29uY2F0KG5leHQuc2xpY2UoMSkpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfSB3aGlsZSAobmV4dCk7CgkgICAgICAgICAgICAgICAgc3RyaW5ncy5wdXNoKHN0clRvRmxvYXQoY3VycmVudCkpOwoJICAgICAgICAgICAgfQoKCSAgICAgICAgICAgIHJldHVybiBzdHJpbmdzOwoJICAgICAgICB9CgoJICAgICAgICB0b1JpbmdzKGRpcmVjdGlvbikgewoJICAgICAgICAgICAgbGV0IHN0cmluZ3MgPSB0aGlzLnRvU3RyaW5ncygpOwoJICAgICAgICAgICAgbGV0IHJpbmdzID0gW10sIHN0cmluZyA9IG51bGw7CgkgICAgICAgICAgICB3aGlsZSAoc3RyaW5nID0gc3RyaW5ncy5zaGlmdCgpKSB7CgkgICAgICAgICAgICAgICAgaWYgKGlzUmluZyhzdHJpbmcpKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChyaW5nRGlyZWN0aW9uKHN0cmluZykgIT09IGRpcmVjdGlvbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLnJldmVyc2UoKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByaW5ncy5wdXNoKHN0cmluZyk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIHJpbmdzOwoJICAgICAgICB9CgkgICAgfQoKCSAgICByZXR1cm4gewoJICAgICAgICBwdXJnZVByb3BzLCBtZXJnZVByb3BzLAoJICAgICAgICBmaXJzdCwgbGFzdCwgY29vcmRzVG9LZXksCgkgICAgICAgIGFkZFRvTWFwLCByZW1vdmVGcm9tTWFwLCBnZXRGaXJzdEZyb21NYXAsCgkgICAgICAgIGlzUmluZywgcmluZ0RpcmVjdGlvbiwgcHRJbnNpZGVQb2x5Z29uLCBzdHJUb0Zsb2F0LAoJICAgICAgICBSZWZFbGVtZW50cywgTGF0ZUJpbmRlciwgV2F5Q29sbGVjdGlvbgoJICAgIH07Cgl9KSgpOwoKCXZhciBidWlsZGluZyA9IHsKCX07Cgl2YXIgaGlnaHdheSA9IHsKCQl3aGl0ZWxpc3Q6IFsKCQkJInNlcnZpY2VzIiwKCQkJInJlc3RfYXJlYSIsCgkJCSJlc2NhcGUiLAoJCQkiZWxldmF0b3IiCgkJXQoJfTsKCXZhciBuYXR1cmFsID0gewoJCWJsYWNrbGlzdDogWwoJCQkiY29hc3RsaW5lIiwKCQkJImNsaWZmIiwKCQkJInJpZGdlIiwKCQkJImFyZXRlIiwKCQkJInRyZWVfcm93IgoJCV0KCX07Cgl2YXIgbGFuZHVzZSA9IHsKCX07Cgl2YXIgd2F0ZXJ3YXkgPSB7CgkJd2hpdGVsaXN0OiBbCgkJCSJyaXZlcmJhbmsiLAoJCQkiZG9jayIsCgkJCSJib2F0eWFyZCIsCgkJCSJkYW0iCgkJXQoJfTsKCXZhciBhbWVuaXR5ID0gewoJfTsKCXZhciBsZWlzdXJlID0gewoJfTsKCXZhciBiYXJyaWVyID0gewoJCXdoaXRlbGlzdDogWwoJCQkiY2l0eV93YWxsIiwKCQkJImRpdGNoIiwKCQkJImhlZGdlIiwKCQkJInJldGFpbmluZ193YWxsIiwKCQkJIndhbGwiLAoJCQkic3Bpa2VzIgoJCV0KCX07Cgl2YXIgcmFpbHdheSA9IHsKCQl3aGl0ZWxpc3Q6IFsKCQkJInN0YXRpb24iLAoJCQkidHVybnRhYmxlIiwKCQkJInJvdW5kaG91c2UiLAoJCQkicGxhdGZvcm0iCgkJXQoJfTsKCXZhciBhcmVhID0gewoJfTsKCXZhciBib3VuZGFyeSA9IHsKCX07Cgl2YXIgbWFuX21hZGUgPSB7CgkJYmxhY2tsaXN0OiBbCgkJCSJjdXRsaW5lIiwKCQkJImVtYmFua21lbnQiLAoJCQkicGlwZWxpbmUiCgkJXQoJfTsKCXZhciBwb3dlciA9IHsKCQl3aGl0ZWxpc3Q6IFsKCQkJInBsYW50IiwKCQkJInN1YnN0YXRpb24iLAoJCQkiZ2VuZXJhdG9yIiwKCQkJInRyYW5zZm9ybWVyIgoJCV0KCX07Cgl2YXIgcGxhY2UgPSB7Cgl9OwoJdmFyIHNob3AgPSB7Cgl9OwoJdmFyIGFlcm93YXkgPSB7CgkJYmxhY2tsaXN0OiBbCgkJCSJ0YXhpd2F5IgoJCV0KCX07Cgl2YXIgdG91cmlzbSA9IHsKCX07Cgl2YXIgaGlzdG9yaWMgPSB7Cgl9OwoJdmFyIHB1YmxpY190cmFuc3BvcnQgPSB7Cgl9OwoJdmFyIG9mZmljZSA9IHsKCX07Cgl2YXIgbWlsaXRhcnkgPSB7Cgl9OwoJdmFyIHJ1aW5zID0gewoJfTsKCXZhciBjcmFmdCA9IHsKCX07Cgl2YXIgZ29sZiA9IHsKCX07Cgl2YXIgaW5kb29yID0gewoJfTsKCXZhciByZXF1aXJlJCQxID0gewoJCWJ1aWxkaW5nOiBidWlsZGluZywKCQloaWdod2F5OiBoaWdod2F5LAoJCW5hdHVyYWw6IG5hdHVyYWwsCgkJbGFuZHVzZTogbGFuZHVzZSwKCQl3YXRlcndheTogd2F0ZXJ3YXksCgkJYW1lbml0eTogYW1lbml0eSwKCQlsZWlzdXJlOiBsZWlzdXJlLAoJCWJhcnJpZXI6IGJhcnJpZXIsCgkJcmFpbHdheTogcmFpbHdheSwKCQlhcmVhOiBhcmVhLAoJCWJvdW5kYXJ5OiBib3VuZGFyeSwKCQltYW5fbWFkZTogbWFuX21hZGUsCgkJcG93ZXI6IHBvd2VyLAoJCXBsYWNlOiBwbGFjZSwKCQlzaG9wOiBzaG9wLAoJCWFlcm93YXk6IGFlcm93YXksCgkJdG91cmlzbTogdG91cmlzbSwKCQloaXN0b3JpYzogaGlzdG9yaWMsCgkJcHVibGljX3RyYW5zcG9ydDogcHVibGljX3RyYW5zcG9ydCwKCQlvZmZpY2U6IG9mZmljZSwKCQkiYnVpbGRpbmc6cGFydCI6IHsKCX0sCgkJbWlsaXRhcnk6IG1pbGl0YXJ5LAoJCXJ1aW5zOiBydWlucywKCQkiYXJlYTpoaWdod2F5IjogewoJfSwKCQljcmFmdDogY3JhZnQsCgkJZ29sZjogZ29sZiwKCQlpbmRvb3I6IGluZG9vcgoJfTsKCgl2YXIgb3Ntb2JqcyA9ICgoKSA9PiB7CgoJICAgIGNvbnN0IHsgZmlyc3QsIGxhc3QsIGNvb3Jkc1RvS2V5LAoJICAgICAgICBhZGRUb01hcCwgcmVtb3ZlRnJvbU1hcCwgZ2V0Rmlyc3RGcm9tTWFwLAoJICAgICAgICBpc1JpbmcsIHJpbmdEaXJlY3Rpb24sIHB0SW5zaWRlUG9seWdvbiwgc3RyVG9GbG9hdCwKCSAgICAgICAgTGF0ZUJpbmRlciwgV2F5Q29sbGVjdGlvbiB9ID0gdXRpbHMsCgkgICAgICAgIHBvbHlnb25UYWdzID0gcmVxdWlyZSQkMTsKCgkgICAgY2xhc3MgT3NtT2JqZWN0IHsKCSAgICAgICAgY29uc3RydWN0b3IodHlwZSwgaWQsIHJlZkVsZW1zKSB7CgkgICAgICAgICAgICB0aGlzLnR5cGUgPSB0eXBlOwoJICAgICAgICAgICAgdGhpcy5pZCA9IGlkOwoJICAgICAgICAgICAgdGhpcy5yZWZFbGVtcyA9IHJlZkVsZW1zOwoJICAgICAgICAgICAgdGhpcy50YWdzID0ge307CgkgICAgICAgICAgICB0aGlzLnByb3BzID0geyBpZDogdGhpcy5nZXRDb21wb3NpdGVJZCgpIH07CgkgICAgICAgICAgICB0aGlzLnJlZkNvdW50ID0gMDsKCSAgICAgICAgICAgIHRoaXMuaGFzVGFnID0gZmFsc2U7CgkgICAgICAgICAgICBpZiAocmVmRWxlbXMpIHsKCSAgICAgICAgICAgICAgICByZWZFbGVtcy5hZGQodGhpcy5nZXRDb21wb3NpdGVJZCgpLCB0aGlzKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoKCSAgICAgICAgYWRkVGFncyh0YWdzKSB7CgkgICAgICAgICAgICB0aGlzLnRhZ3MgPSBPYmplY3QuYXNzaWduKHRoaXMudGFncywgdGFncyk7CgkgICAgICAgICAgICB0aGlzLmhhc1RhZyA9IHRhZ3MgPyB0cnVlIDogZmFsc2U7CgkgICAgICAgIH0KCgkgICAgICAgIGFkZFRhZyhrLCB2KSB7CgkgICAgICAgICAgICB0aGlzLnRhZ3Nba10gPSB2OwoJICAgICAgICAgICAgdGhpcy5oYXNUYWcgPSBrID8gdHJ1ZSA6IGZhbHNlOwoJICAgICAgICB9CgoJICAgICAgICBhZGRQcm9wKGssIHYpIHsKCSAgICAgICAgICAgIHRoaXMucHJvcHNba10gPSB2OwoJICAgICAgICB9CgoJICAgICAgICBhZGRQcm9wcyhwcm9wcykgewoJICAgICAgICAgICAgdGhpcy5wcm9wcyA9IE9iamVjdC5hc3NpZ24odGhpcy5wcm9wcywgcHJvcHMpOwoJICAgICAgICB9CgoJICAgICAgICBnZXRDb21wb3NpdGVJZCgpIHsKCSAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnR5cGV9LyR7dGhpcy5pZH1gOwoJICAgICAgICB9CgoJICAgICAgICBnZXRQcm9wcygpIHsKCSAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRoaXMucHJvcHMsIHRoaXMudGFncyk7CgkgICAgICAgIH0KCgkgICAgICAgIHRvRmVhdHVyZUFycmF5KCkgewoJICAgICAgICAgICAgcmV0dXJuIFtdOwoJICAgICAgICB9CgkgICAgfQoKCSAgICBjbGFzcyBOb2RlIGV4dGVuZHMgT3NtT2JqZWN0IHsKCSAgICAgICAgY29uc3RydWN0b3IoaWQsIHJlZkVsZW1zKSB7CgkgICAgICAgICAgICBzdXBlcignbm9kZScsIGlkLCByZWZFbGVtcyk7CgkgICAgICAgICAgICB0aGlzLmxhdExuZyA9IG51bGw7CgkgICAgICAgIH0KCgkgICAgICAgIHNldExhdExuZyhsYXRMbmcpIHsKCSAgICAgICAgICAgIHRoaXMubGF0TG5nID0gbGF0TG5nOwoJICAgICAgICB9CgoJICAgICAgICB0b0ZlYXR1cmVBcnJheSgpIHsKCSAgICAgICAgICAgIGlmICh0aGlzLmxhdExuZykgewoJICAgICAgICAgICAgICAgIHJldHVybiBbewoJICAgICAgICAgICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsCgkgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmdldENvbXBvc2l0ZUlkKCksCgkgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMuZ2V0UHJvcHMoKSwKCSAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnk6IHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsCgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogc3RyVG9GbG9hdChbdGhpcy5sYXRMbmcubG9uLCB0aGlzLmxhdExuZy5sYXRdKQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfV07CgkgICAgICAgICAgICB9CgoJICAgICAgICAgICAgcmV0dXJuIFtdOwoJICAgICAgICB9CgoJICAgICAgICBnZXRMYXRMbmcoKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5sYXRMbmc7CgkgICAgICAgIH0KCSAgICB9CgoJICAgIGNsYXNzIFdheSBleHRlbmRzIE9zbU9iamVjdCB7CgkgICAgICAgIGNvbnN0cnVjdG9yKGlkLCByZWZFbGVtcykgewoJICAgICAgICAgICAgc3VwZXIoJ3dheScsIGlkLCByZWZFbGVtcyk7CgkgICAgICAgICAgICB0aGlzLmxhdExuZ0FycmF5ID0gW107CgkgICAgICAgICAgICB0aGlzLmlzUG9seWdvbiA9IGZhbHNlOwoJICAgICAgICB9CgoJICAgICAgICBhZGRMYXRMbmcobGF0TG5nKSB7CgkgICAgICAgICAgICB0aGlzLmxhdExuZ0FycmF5LnB1c2gobGF0TG5nKTsKCSAgICAgICAgfQoKCSAgICAgICAgc2V0TGF0TG5nQXJyYXkobGF0TG5nQXJyYXkpIHsKCSAgICAgICAgICAgIHRoaXMubGF0TG5nQXJyYXkgPSBsYXRMbmdBcnJheTsKCSAgICAgICAgfQoKCSAgICAgICAgYWRkTm9kZVJlZihyZWYpIHsKCSAgICAgICAgICAgIGxldCBiaW5kZXIgPSBuZXcgTGF0ZUJpbmRlcih0aGlzLmxhdExuZ0FycmF5LCBmdW5jdGlvbiAoaWQpIHsKCSAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IHRoaXMucmVmRWxlbXMuZ2V0KGBub2RlLyR7aWR9YCk7CgkgICAgICAgICAgICAgICAgaWYgKG5vZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgbm9kZS5yZWZDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5nZXRMYXRMbmcoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9LCB0aGlzLCBbcmVmXSk7CgoJICAgICAgICAgICAgdGhpcy5sYXRMbmdBcnJheS5wdXNoKGJpbmRlcik7CgkgICAgICAgICAgICB0aGlzLnJlZkVsZW1zLmFkZEJpbmRlcihiaW5kZXIpOwoJICAgICAgICB9CgoJICAgICAgICBhbmFseXplR2VvbWV0cnlUeXBlKGssIHYpIHsKCSAgICAgICAgICAgIGxldCBvID0gcG9seWdvblRhZ3Nba107CgkgICAgICAgICAgICBpZiAobykgewoJICAgICAgICAgICAgICAgIHRoaXMuaXNQb2x5Z29uID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICBpZiAoby53aGl0ZWxpc3QpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1BvbHlnb24gPSBvLndoaXRlbGlzdC5pbmRleE9mKHYpID49IDAgPyB0cnVlIDogZmFsc2U7CgkgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvLmJsYWNrbGlzdCkgewoJICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUG9seWdvbiA9IG8uYmxhY2tsaXN0LmluZGV4T2YodikgPj0gMCA/IGZhbHNlIDogdHJ1ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCgkgICAgICAgIGFkZFRhZ3ModGFncykgewoJICAgICAgICAgICAgc3VwZXIuYWRkVGFncyh0YWdzKTsKCSAgICAgICAgICAgIGZvciAobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyh0YWdzKSkgewoJICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl6ZUdlb21ldHJ5VHlwZShrLCB2KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoKCSAgICAgICAgYWRkVGFnKGssIHYpIHsKCSAgICAgICAgICAgIHN1cGVyLmFkZFRhZyhrLCB2KTsKCSAgICAgICAgICAgIHRoaXMuYW5hbHl6ZUdlb21ldHJ5VHlwZShrLCB2KTsKCSAgICAgICAgfQoKCSAgICAgICAgdG9Db29yZHNBcnJheSgpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmxhdExuZ0FycmF5Lm1hcChsYXRMbmcgPT4gW2xhdExuZy5sb24sIGxhdExuZy5sYXRdKTsKCSAgICAgICAgfQoKCSAgICAgICAgdG9GZWF0dXJlQXJyYXkoKSB7CgkgICAgICAgICAgICBsZXQgY29vcmRzQXJyYXkgPSB0aGlzLnRvQ29vcmRzQXJyYXkoKTsKCSAgICAgICAgICAgIGlmIChjb29yZHNBcnJheS5sZW5ndGggPiAxKSB7CgkgICAgICAgICAgICAgICAgY29vcmRzQXJyYXkgPSBzdHJUb0Zsb2F0KGNvb3Jkc0FycmF5KTsKCSAgICAgICAgICAgICAgICBsZXQgZmVhdHVyZSA9IHsKCSAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLAoJICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5nZXRDb21wb3NpdGVJZCgpLAoJICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLmdldFByb3BzKCksCgkgICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsCgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogY29vcmRzQXJyYXkKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH07CgoJICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUG9seWdvbiAmJiBpc1JpbmcoY29vcmRzQXJyYXkpKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChyaW5nRGlyZWN0aW9uKGNvb3Jkc0FycmF5KSAhPT0gJ2NvdW50ZXJjbG9ja3dpc2UnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZHNBcnJheS5yZXZlcnNlKCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkgPSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsCgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogW2Nvb3Jkc0FycmF5XQoJICAgICAgICAgICAgICAgICAgICB9OwoKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtmZWF0dXJlXTsKCSAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIHJldHVybiBbZmVhdHVyZV07CgkgICAgICAgICAgICB9CgoJICAgICAgICAgICAgcmV0dXJuIFtdOwoJICAgICAgICB9CgkgICAgfQoKCSAgICBjbGFzcyBSZWxhdGlvbiBleHRlbmRzIE9zbU9iamVjdCB7CgkgICAgICAgIGNvbnN0cnVjdG9yKGlkLCByZWZFbGVtcykgewoJICAgICAgICAgICAgc3VwZXIoJ3JlbGF0aW9uJywgaWQsIHJlZkVsZW1zKTsKCSAgICAgICAgICAgIHRoaXMucmVsYXRpb25zID0gW107CgkgICAgICAgICAgICB0aGlzLm5vZGVzID0gW107CgkgICAgICAgICAgICB0aGlzLmJvdW5kcyA9IG51bGw7CgkgICAgICAgIH0KCgkgICAgICAgIHNldEJvdW5kcyhib3VuZHMpIHsKCSAgICAgICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzOwoJICAgICAgICB9CgoJICAgICAgICBhZGRNZW1iZXIobWVtYmVyKSB7CgkgICAgICAgICAgICBzd2l0Y2ggKG1lbWJlci50eXBlKSB7CgkgICAgICAgICAgICAgICAgLy8gc3VwZXIgcmVsYXRpb24sIG5lZWQgdG8gZG8gY29tYmluYXRpb24KCSAgICAgICAgICAgICAgICBjYXNlICdyZWxhdGlvbic6CgkgICAgICAgICAgICAgICAgICAgIGxldCBiaW5kZXIgPSBuZXcgTGF0ZUJpbmRlcih0aGlzLnJlbGF0aW9ucywgZnVuY3Rpb24gKGlkKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVsYXRpb24gPSB0aGlzLnJlZkVsZW1zLmdldChgcmVsYXRpb24vJHtpZH1gKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxhdGlvbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnJlZkNvdW50Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0aW9uOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLCBbbWVtYmVyLnJlZl0pOwoJICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aW9ucy5wdXNoKGJpbmRlcik7CgkgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmRWxlbXMuYWRkQmluZGVyKGJpbmRlcik7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKCSAgICAgICAgICAgICAgICBjYXNlICd3YXknOgoJICAgICAgICAgICAgICAgICAgICBpZiAoIW1lbWJlci5yb2xlKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIucm9sZSA9ICcnOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGxldCB3YXlzID0gdGhpc1ttZW1iZXIucm9sZV07CgkgICAgICAgICAgICAgICAgICAgIGlmICghd2F5cykgewoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5cyA9IHRoaXNbbWVtYmVyLnJvbGVdID0gW107CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci5nZW9tZXRyeSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdheSA9IG5ldyBXYXkobWVtYmVyLnJlZiwgdGhpcy5yZWZFbGVtcyk7CgkgICAgICAgICAgICAgICAgICAgICAgICB3YXkuc2V0TGF0TG5nQXJyYXkobWVtYmVyLmdlb21ldHJ5KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHdheS5yZWZDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5cy5wdXNoKHdheSk7CgkgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVtYmVyLm5vZGVzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2F5ID0gbmV3IFdheShtZW1iZXIucmVmLCB0aGlzLnJlZkVsZW1zKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG5pZCBvZiBtZW1iZXIubm9kZXMpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXkuYWRkTm9kZVJlZihuaWQpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5LnJlZkNvdW50Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICB3YXlzLnB1c2god2F5KTsKCSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiaW5kZXIgPSBuZXcgTGF0ZUJpbmRlcih3YXlzLCBmdW5jdGlvbiAoaWQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2F5ID0gdGhpcy5yZWZFbGVtcy5nZXQoYHdheS8ke2lkfWApOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YXkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F5LnJlZkNvdW50Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3YXk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcywgW21lbWJlci5yZWZdKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHdheXMucHVzaChiaW5kZXIpOwoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZFbGVtcy5hZGRCaW5kZXIoYmluZGVyKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCgkgICAgICAgICAgICAgICAgY2FzZSAnbm9kZSc6CgkgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0gbnVsbDsKCSAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci5sYXQgJiYgbWVtYmVyLmxvbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG5ldyBOb2RlKG1lbWJlci5yZWYsIHRoaXMucmVmRWxlbXMpOwoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRMYXRMbmcoeyBsb246IG1lbWJlci5sb24sIGxhdDogbWVtYmVyLmxhdCB9KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1iZXIudGFncykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuYWRkVGFncyhtZW1iZXIudGFncyk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMobWVtYmVyKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbJ2lkJywgJ3R5cGUnLCAnbGF0JywgJ2xvbiddLmluZGV4T2YoaykgPCAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuYWRkUHJvcChrLCB2KTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5yZWZDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKG5vZGUpOwoJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJpbmRlciA9IG5ldyBMYXRlQmluZGVyKHRoaXMubm9kZXMsIGZ1bmN0aW9uIChpZCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0gdGhpcy5yZWZFbGVtcy5nZXQoYG5vZGUvJHtpZH1gKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJlZkNvdW50Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMsIFttZW1iZXIucmVmXSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGVzLnB1c2goYmluZGVyKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmRWxlbXMuYWRkQmluZGVyKGJpbmRlcik7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCgkgICAgICAgIHRvRmVhdHVyZUFycmF5KCkgewoJICAgICAgICAgICAgY29uc3QgY29uc3RydWN0U3RyaW5nR2VvbWV0cnkgPSAod3MpID0+IHsKCSAgICAgICAgICAgICAgICBsZXQgc3RyaW5ncyA9IHdzID8gd3MudG9TdHJpbmdzKCkgOiBbXTsKCSAgICAgICAgICAgICAgICBpZiAoc3RyaW5ncy5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmdzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJywKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBzdHJpbmdzWzBdCgkgICAgICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTXVsdGlMaW5lU3RyaW5nJywKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBzdHJpbmdzCgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgICAgICB9OwoKCSAgICAgICAgICAgIGNvbnN0IGNvbnN0cnVjdFBvbHlnb25HZW9tZXRyeSA9IChvd3MsIGl3cykgPT4gewoJICAgICAgICAgICAgICAgIGxldCBvdXRlclJpbmdzID0gb3dzID8gb3dzLnRvUmluZ3MoJ2NvdW50ZXJjbG9ja3dpc2UnKSA6IFtdLAoJICAgICAgICAgICAgICAgICAgICBpbm5lclJpbmdzID0gaXdzID8gaXdzLnRvUmluZ3MoJ2Nsb2Nrd2lzZScpIDogW107CgoJICAgICAgICAgICAgICAgIGlmIChvdXRlclJpbmdzLmxlbmd0aCA+IDApIHsKCSAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXBvc2l0UG9seW9ucyA9IFtdOwoKCSAgICAgICAgICAgICAgICAgICAgbGV0IHJpbmcgPSBudWxsOwoJICAgICAgICAgICAgICAgICAgICBmb3IgKHJpbmcgb2Ygb3V0ZXJSaW5ncykKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0UG9seW9ucy5wdXNoKFtyaW5nXSk7CgoJICAgICAgICAgICAgICAgICAgICAvLyBsaW5rIGlubmVyIHBvbHlnb25zIHRvIG91dGVyIGNvbnRhaW5lcnMKCSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHJpbmcgPSBpbm5lclJpbmdzLnNoaWZ0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGlkeCBpbiBvdXRlclJpbmdzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB0SW5zaWRlUG9seWdvbihmaXJzdChyaW5nKSwgb3V0ZXJSaW5nc1tpZHhdKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdFBvbHlvbnNbaWR4XS5wdXNoKHJpbmcpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCB0aGUgUG9seWdvbi9NdWx0aVBvbHlnb24gZ2VvbWV0cnkKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvc2l0UG9seW9ucy5sZW5ndGggPT09IDEpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BvbHlnb24nLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBjb21wb3NpdFBvbHlvbnNbMF0KCSAgICAgICAgICAgICAgICAgICAgICAgIH07CgkgICAgICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTXVsdGlQb2x5Z29uJywKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBjb21wb3NpdFBvbHlvbnMKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgICAgICB9OwoKCSAgICAgICAgICAgIGxldCBwb2x5Z29uRmVhdHVyZXMgPSBbXSwgc3RyaW5nRmVhdHVyZXMgPSBbXSwgcG9pbnRGZWF0dXJlcyA9IFtdOwoJICAgICAgICAgICAgY29uc3Qgd2F5c0ZpZWxkTmFtZXMgPSBbJ291dGVyJywgJ2lubmVyJywgJyddOwoJICAgICAgICAgICAgLy8gbmVlZCB0byBkbyBjb21iaW5hdGlvbiB3aGVuIHRoZXJlJ3JlIG5lc3RlZCByZWxhdGlvbnMKCSAgICAgICAgICAgIGZvciAobGV0IHJlbGF0aW9uIG9mIHRoaXMucmVsYXRpb25zKSB7CgkgICAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uKSB7CgkgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGZpZWxkTmFtZSBvZiB3YXlzRmllbGROYW1lcykgewoJICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdheXMgPSByZWxhdGlvbltmaWVsZE5hbWVdOwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdheXMpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGhpc1dheXMgPSB0aGlzW2ZpZWxkTmFtZV07CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNXYXlzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLnNwbGljZS5hcHBseSh0aGlzV2F5cywgW3RoaXNXYXlzLmxlbmd0aCwgMF0uY29uY2F0KHdheXMpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2ZpZWxkTmFtZV0gPSB3YXlzOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCgkgICAgICAgICAgICBmb3IgKGxldCBmaWVsZE5hbWUgb2Ygd2F5c0ZpZWxkTmFtZXMpIHsKCSAgICAgICAgICAgICAgICBsZXQgd2F5cyA9IHRoaXNbZmllbGROYW1lXTsKCSAgICAgICAgICAgICAgICBpZiAod2F5cykgewoJICAgICAgICAgICAgICAgICAgICB0aGlzW2ZpZWxkTmFtZV0gPSBuZXcgV2F5Q29sbGVjdGlvbigpOwoJICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB3YXkgb2Ygd2F5cykgewoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tmaWVsZE5hbWVdLmFkZFdheSh3YXkpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoKCSAgICAgICAgICAgIGxldCBnZW9tZXRyeSA9IG51bGw7CgoJICAgICAgICAgICAgbGV0IGZlYXR1cmUgPSB7CgkgICAgICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLAoJICAgICAgICAgICAgICAgIGlkOiB0aGlzLmdldENvbXBvc2l0ZUlkKCksCgkgICAgICAgICAgICAgICAgYmJveDogdGhpcy5ib3VuZHMsCgkgICAgICAgICAgICAgICAgcHJvcGVydGllczogdGhpcy5nZXRQcm9wcygpCgkgICAgICAgICAgICB9OwoKCSAgICAgICAgICAgIGlmICghdGhpcy5ib3VuZHMpIHsKCSAgICAgICAgICAgICAgICBkZWxldGUgZmVhdHVyZS5iYm94OwoJICAgICAgICAgICAgfQoKCSAgICAgICAgICAgIGlmICh0aGlzLm91dGVyKSB7CgkgICAgICAgICAgICAgICAgZ2VvbWV0cnkgPSBjb25zdHJ1Y3RQb2x5Z29uR2VvbWV0cnkodGhpcy5vdXRlciwgdGhpcy5pbm5lcik7CgkgICAgICAgICAgICAgICAgaWYgKGdlb21ldHJ5KSB7CgkgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkgPSBnZW9tZXRyeTsKCSAgICAgICAgICAgICAgICAgICAgcG9seWdvbkZlYXR1cmVzLnB1c2goZmVhdHVyZSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAodGhpc1snJ10pIHsKCSAgICAgICAgICAgICAgICBnZW9tZXRyeSA9IGNvbnN0cnVjdFN0cmluZ0dlb21ldHJ5KHRoaXNbJyddKTsKCSAgICAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkpIHsKCSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5nZW9tZXRyeSA9IGdlb21ldHJ5OwoJICAgICAgICAgICAgICAgICAgICBzdHJpbmdGZWF0dXJlcy5wdXNoKGZlYXR1cmUpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCgkgICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIHRoaXMubm9kZXMpIHsKCSAgICAgICAgICAgICAgICBwb2ludEZlYXR1cmVzID0gcG9pbnRGZWF0dXJlcy5jb25jYXQobm9kZS50b0ZlYXR1cmVBcnJheSgpKTsKCSAgICAgICAgICAgIH0KCgkgICAgICAgICAgICByZXR1cm4gcG9seWdvbkZlYXR1cmVzLmNvbmNhdChzdHJpbmdGZWF0dXJlcykuY29uY2F0KHBvaW50RmVhdHVyZXMpOwoJICAgICAgICB9CgkgICAgfQoKCSAgICByZXR1cm4geyBOb2RlLCBXYXksIFJlbGF0aW9uIH07Cgl9KSgpOwoKCXZhciB4bWxwYXJzZXIgPSAoKCkgPT4gewoKCSAgICBmdW5jdGlvbiBjb25kaXRpb25lZChldnQpIHsKCSAgICAgICAgcmV0dXJuIGV2dC5tYXRjaCgvXiguKz8pXFsoLis/KVxdPiQvZykgIT0gbnVsbDsKCSAgICB9CgoJICAgIGZ1bmN0aW9uIHBhcnNlRXZlbnQoZXZ0KSB7CgkgICAgICAgIGxldCBtYXRjaCA9IC9eKC4rPylcWyguKz8pXF0+JC9nLmV4ZWMoZXZ0KTsKCSAgICAgICAgaWYgKG1hdGNoKSB7CgkgICAgICAgICAgICByZXR1cm4geyBldnQ6IG1hdGNoWzFdICsgJz4nLCBleHA6IG1hdGNoWzJdIH07CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHsgZXZ0OiBldnQgfTsKCSAgICB9CgoJICAgIGZ1bmN0aW9uIGdlbkNvbmRpdGlvbkZ1bmMoY29uZCkgewoJICAgICAgICBsZXQgYm9keSA9ICdyZXR1cm4gJyArIGNvbmQucmVwbGFjZSgvKFwkLis/KSg/PVs9IS5dKS9nLCAnbm9kZS4kJicpICsgJzsnOwoJICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKCdub2RlJywgYm9keSk7CgkgICAgfQoKCSAgICByZXR1cm4gY2xhc3MgewoJICAgICAgICBjb25zdHJ1Y3RvcihvcHRzKSB7CgkgICAgICAgICAgICBpZiAob3B0cykgewoJICAgICAgICAgICAgICAgIHRoaXMucXVlcnlQYXJlbnQgPSBvcHRzLnF1ZXJ5UGFyZW50ID8gdHJ1ZSA6IGZhbHNlOwoJICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NpdmUgPSBvcHRzLnByb2dyZXNzaXZlOwoJICAgICAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyZW50KSB7CgkgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50TWFwID0gbmV3IFdlYWtNYXAoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLmV2dExpc3RlbmVycyA9IHt9OwoJICAgICAgICB9CgoJICAgICAgICBwYXJzZSh4bWwsIHBhcmVudCwgZGlyKSB7CgkgICAgICAgICAgICBkaXIgPSBkaXIgPyBkaXIgKyAnLicgOiAnJzsKCSAgICAgICAgICAgIGxldCBub2RlUmVnRXggPSAvPChbXiA+XC9dKykoLio/KT4vbWcsIG5vZGVNYXRjaCA9IG51bGwsIG5vZGVzID0gW107CgkgICAgICAgICAgICB3aGlsZSAobm9kZU1hdGNoID0gbm9kZVJlZ0V4LmV4ZWMoeG1sKSkgewoJICAgICAgICAgICAgICAgIGxldCB0YWcgPSBub2RlTWF0Y2hbMV0sIG5vZGUgPSB7ICR0YWc6IHRhZyB9LCBmdWxsVGFnID0gZGlyICsgdGFnOwoKCSAgICAgICAgICAgICAgICBsZXQgYXR0clRleHQgPSBub2RlTWF0Y2hbMl0udHJpbSgpLCBjbG9zZWQgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICBpZiAoYXR0clRleHQuZW5kc1dpdGgoJy8nKSB8fCB0YWcuc3RhcnRzV2l0aCgnPycpIHx8IHRhZy5zdGFydHNXaXRoKCchJykpIHsKCSAgICAgICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIGxldCBhdHRSZWdFeDEgPSAvKFteIF0rPyk9IiguKz8pIi9nLCBhdHRSZWdFeDIgPSAvKFteIF0rPyk9JyguKz8pJy9nOwoJICAgICAgICAgICAgICAgIGxldCBhdHRNYXRjaCA9IG51bGwsIGhhc0F0dHJzID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgd2hpbGUgKGF0dE1hdGNoID0gYXR0UmVnRXgxLmV4ZWMoYXR0clRleHQpKSB7CgkgICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgbm9kZVthdHRNYXRjaFsxXV0gPSBhdHRNYXRjaFsyXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKCFoYXNBdHRycykKCSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGF0dE1hdGNoID0gYXR0UmVnRXgyLmV4ZWMoYXR0clRleHQpKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBoYXNBdHRycyA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICBub2RlW2F0dE1hdGNoWzFdXSA9IGF0dE1hdGNoWzJdOwoJICAgICAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIGlmICghaGFzQXR0cnMgJiYgYXR0clRleHQgIT09ICcnKSB7CgkgICAgICAgICAgICAgICAgICAgIG5vZGUudGV4dCA9IGF0dHJUZXh0OwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9ncmVzc2l2ZSkgewoJICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoYDwke2Z1bGxUYWd9PmAsIG5vZGUsIHBhcmVudCk7CgkgICAgICAgICAgICAgICAgfQoKCSAgICAgICAgICAgICAgICBpZiAoIWNsb3NlZCkgewoJICAgICAgICAgICAgICAgICAgICBsZXQgaW5uZXJSZWdFeCA9IG5ldyBSZWdFeHAoYChbXl0rPyk8XC8ke3RhZ30+YCwgJ2cnKTsKCSAgICAgICAgICAgICAgICAgICAgaW5uZXJSZWdFeC5sYXN0SW5kZXggPSBub2RlUmVnRXgubGFzdEluZGV4OwoJICAgICAgICAgICAgICAgICAgICBsZXQgaW5uZXJNYXRjaCA9IGlubmVyUmVnRXguZXhlYyh4bWwpOwoJICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXJNYXRjaCAmJiBpbm5lck1hdGNoWzFdKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBub2RlUmVnRXgubGFzdEluZGV4ID0gaW5uZXJSZWdFeC5sYXN0SW5kZXg7CgkgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5uZXJOb2RlcyA9IHRoaXMucGFyc2UoaW5uZXJNYXRjaFsxXSwgbm9kZSwgZnVsbFRhZyk7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXJOb2Rlcy5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS4kaW5uZXJOb2RlcyA9IGlubmVyTm9kZXM7CgkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuJGlubmVyVGV4dCA9IGlubmVyTWF0Y2hbMV07CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJlbnQgJiYgcGFyZW50KSB7CgkgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50TWFwLnNldChub2RlLCBwYXJlbnQpOwoJICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZ3Jlc3NpdmUpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KGA8LyR7ZnVsbFRhZ30+YCwgbm9kZSwgcGFyZW50KTsKCSAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIG5vZGVzLnB1c2gobm9kZSk7CgkgICAgICAgICAgICB9CgoJICAgICAgICAgICAgcmV0dXJuIG5vZGVzOwoJICAgICAgICB9CgoJICAgICAgICBnZXRQYXJlbnQobm9kZSkgewoJICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJlbnQpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnRNYXAuZ2V0KG5vZGUpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCgkgICAgICAgICNhZGRMaXN0ZW5lcihldnQsIGZ1bmMpIHsKCSAgICAgICAgICAgIGxldCBmdW5jcyA9IHRoaXMuZXZ0TGlzdGVuZXJzW2V2dF07CgkgICAgICAgICAgICBpZiAoZnVuY3MpIHsKCSAgICAgICAgICAgICAgICBmdW5jcy5wdXNoKGZ1bmMpOwoJICAgICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAgICB0aGlzLmV2dExpc3RlbmVyc1tldnRdID0gW2Z1bmNdOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgoJICAgICAgICAvLyBzdXBwb3J0IGphdmFzY3JpcHQgY29uZGl0aW9uIGZvciB0aGUgbGFzdCB0YWcKCSAgICAgICAgYWRkTGlzdGVuZXIoZXZ0LCBmdW5jKSB7CgkgICAgICAgICAgICBpZiAoY29uZGl0aW9uZWQoZXZ0KSkgewoJICAgICAgICAgICAgICAgIC8vIGZ1bmMucHJvdG90eXBlID0gZXZ0OwoJICAgICAgICAgICAgICAgIGV2dCA9IHBhcnNlRXZlbnQoZXZ0KTsKCSAgICAgICAgICAgICAgICBmdW5jLmNvbmRpdGlvbiA9IGdlbkNvbmRpdGlvbkZ1bmMoZXZ0LmV4cCk7CgkgICAgICAgICAgICAgICAgZXZ0ID0gZXZ0LmV2dDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHRoaXMuI2FkZExpc3RlbmVyKGV2dCwgZnVuYyk7CgkgICAgICAgIH0KCgkgICAgICAgICNyZW1vdmVMaXN0ZW5lcihldnQsIGZ1bmMpIHsKCSAgICAgICAgICAgIGxldCBmdW5jcyA9IHRoaXMuZXZ0TGlzdGVuZXJzW2V2dF07CgkgICAgICAgICAgICBsZXQgaWR4ID0gbnVsbDsKCSAgICAgICAgICAgIGlmIChmdW5jcyAmJiAoaWR4ID0gZnVuY3MuaW5kZXhPZihmdW5jKSkgPj0gMCkgewoJICAgICAgICAgICAgICAgIGZ1bmNzLnNwbGljZShpZHgsIDEpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgoJICAgICAgICByZW1vdmVMaXN0ZW5lcihldnQsIGZ1bmMpIHsKCSAgICAgICAgICAgIGlmIChjb25kaXRpb25lZChldnQpKSB7CgkgICAgICAgICAgICAgICAgZXZ0ID0gcGFyc2VFdmVudChldnQpOwoJICAgICAgICAgICAgICAgIGV2dCA9IGV2dC5ldnQ7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLiNyZW1vdmVMaXN0ZW5lcihldnQsIGZ1bmMpOwoJICAgICAgICB9CgoJICAgICAgICBlbWl0KGV2dCwgLi4uYXJncykgewoJICAgICAgICAgICAgbGV0IGZ1bmNzID0gdGhpcy5ldnRMaXN0ZW5lcnNbZXZ0XTsKCSAgICAgICAgICAgIGlmIChmdW5jcykgewoJICAgICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmMuY29uZGl0aW9uKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVuYy5jb25kaXRpb24uYXBwbHkobnVsbCwgYXJncykgPT09IHRydWUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLmFwcGx5KG51bGwsIGFyZ3MpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy5hcHBseShudWxsLCBhcmdzKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoKCSAgICAgICAgb24oZXZ0LCBmdW5jKSB7CgkgICAgICAgICAgICB0aGlzLmFkZExpc3RlbmVyKGV2dCwgZnVuYyk7CgkgICAgICAgIH0KCgkgICAgICAgIG9mZihldnQsIGZ1bmMpIHsKCSAgICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoZXZ0LCBmdW5jKTsKCSAgICAgICAgfQoJICAgIH07Cgl9KSgpOwoKCWNvbnN0IHsgTm9kZSwgV2F5LCBSZWxhdGlvbiB9ID0gb3Ntb2JqcywKCSAgICB7IHB1cmdlUHJvcHMsIFJlZkVsZW1lbnRzIH0gPSB1dGlscywKCSAgICBYbWxQYXJzZXIgPSB4bWxwYXJzZXI7CgoJdmFyIGxpYiA9IChvc20sIG9wdHMpID0+IHsKCSAgICBsZXQgY29tcGxldGVGZWF0dXJlID0gZmFsc2UsIHJlbmRlclRhZ2dlZCA9IGZhbHNlLCBleGNsdWRlV2F5ID0gdHJ1ZTsKCgkgICAgY29uc3QgcGFyc2VPcHRzID0gb3B0cyA9PiB7CgkgICAgICAgIGlmIChvcHRzKSB7CgkgICAgICAgICAgICBjb21wbGV0ZUZlYXR1cmUgPSBvcHRzLmNvbXBsZXRlRmVhdHVyZSB8fCBvcHRzLmFsbEZlYXR1cmVzID8gdHJ1ZSA6IGZhbHNlOwoJICAgICAgICAgICAgcmVuZGVyVGFnZ2VkID0gb3B0cy5yZW5kZXJUYWdnZWQgPyB0cnVlIDogZmFsc2U7CgkgICAgICAgICAgICBsZXQgd2F5T3B0ID0gb3B0cy5zdXBwcmVzc1dheSB8fCBvcHRzLmV4Y2x1ZGVXYXk7CgkgICAgICAgICAgICBpZiAod2F5T3B0ICE9PSB1bmRlZmluZWQgJiYgIXdheU9wdCkgewoJICAgICAgICAgICAgICAgIGV4Y2x1ZGVXYXkgPSBmYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgoJICAgIHBhcnNlT3B0cyhvcHRzKTsKCgkgICAgY29uc3QgZGV0ZWN0Rm9ybWF0ID0gb3NtID0+IHsKCSAgICAgICAgaWYgKG9zbS5lbGVtZW50cykgewoJICAgICAgICAgICAgcmV0dXJuICdqc29uJzsKCSAgICAgICAgfQoJICAgICAgICBpZiAob3NtLmluZGV4T2YoJzxvc20nKSA+PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gJ3htbCc7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG9zbS50cmltKCkuc3RhcnRzV2l0aCgneycpKSB7CgkgICAgICAgICAgICByZXR1cm4gJ2pzb24tcmF3JzsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gJ2ludmFsaWQnOwoJICAgIH07CgoJICAgIGxldCBmb3JtYXQgPSBkZXRlY3RGb3JtYXQob3NtKTsKCgkgICAgbGV0IHJlZkVsZW1lbnRzID0gbmV3IFJlZkVsZW1lbnRzKCksIGZlYXR1cmVBcnJheSA9IFtdOwoKCSAgICBjb25zdCBhbmFseXplRmVhdHVyZXNGcm9tSnNvbiA9IG9zbSA9PiB7CgkgICAgICAgIGZvciAobGV0IGVsZW0gb2Ygb3NtLmVsZW1lbnRzKSB7CgkgICAgICAgICAgICBzd2l0Y2ggKGVsZW0udHlwZSkgewoJICAgICAgICAgICAgICAgIGNhc2UgJ25vZGUnOgoJICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IG5ldyBOb2RlKGVsZW0uaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0udGFncykgewoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRUYWdzKGVsZW0udGFncyk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRQcm9wcyhwdXJnZVByb3BzKGVsZW0sIFsnaWQnLCAndHlwZScsICd0YWdzJywgJ2xhdCcsICdsb24nXSkpOwoJICAgICAgICAgICAgICAgICAgICBub2RlLnNldExhdExuZyhlbGVtKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgoJICAgICAgICAgICAgICAgIGNhc2UgJ3dheSc6CgkgICAgICAgICAgICAgICAgICAgIGxldCB3YXkgPSBuZXcgV2F5KGVsZW0uaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0udGFncykgewoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5LmFkZFRhZ3MoZWxlbS50YWdzKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB3YXkuYWRkUHJvcHMocHVyZ2VQcm9wcyhlbGVtLCBbJ2lkJywgJ3R5cGUnLCAndGFncycsICdub2RlcycsICdnZW9tZXRyeSddKSk7CgkgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLm5vZGVzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBuIG9mIGVsZW0ubm9kZXMpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXkuYWRkTm9kZVJlZihuKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtLmdlb21ldHJ5KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB3YXkuc2V0TGF0TG5nQXJyYXkoZWxlbS5nZW9tZXRyeSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgoJICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aW9uJzoKCSAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGF0aW9uID0gbmV3IFJlbGF0aW9uKGVsZW0uaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0uYm91bmRzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5zZXRCb3VuZHMoW3BhcnNlRmxvYXQoZWxlbS5ib3VuZHMubWlubG9uKSwgcGFyc2VGbG9hdChlbGVtLmJvdW5kcy5taW5sYXQpLCBwYXJzZUZsb2F0KGVsZW0uYm91bmRzLm1heGxvbiksIHBhcnNlRmxvYXQoZWxlbS5ib3VuZHMubWF4bGF0KV0pOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLnRhZ3MpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmFkZFRhZ3MoZWxlbS50YWdzKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5hZGRQcm9wcyhwdXJnZVByb3BzKGVsZW0sIFsnaWQnLCAndHlwZScsICd0YWdzJywgJ2JvdW5kcycsICdtZW1iZXJzJ10pKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0ubWVtYmVycykgewoJICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbWVtYmVyIG9mIGVsZW0ubWVtYmVycykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmFkZE1lbWJlcihtZW1iZXIpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCgkgICAgY29uc3QgYW5hbHl6ZUZlYXR1cmVzRnJvbVhtbCA9IG9zbSA9PiB7CgkgICAgICAgIGNvbnN0IHhtbFBhcnNlciA9IG5ldyBYbWxQYXJzZXIoeyBwcm9ncmVzc2l2ZTogdHJ1ZSB9KTsKCgkgICAgICAgIHhtbFBhcnNlci5vbignPC9vc20ubm9kZT4nLCBub2RlID0+IHsKCSAgICAgICAgICAgIGxldCBuZCA9IG5ldyBOb2RlKG5vZGUuaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgIGZvciAobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhub2RlKSkKCSAgICAgICAgICAgICAgICBpZiAoIWsuc3RhcnRzV2l0aCgnJCcpICYmIFsnaWQnLCAnbG9uJywgJ2xhdCddLmluZGV4T2YoaykgPCAwKSB7CgkgICAgICAgICAgICAgICAgICAgIG5kLmFkZFByb3Aoaywgdik7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgbmQuc2V0TGF0TG5nKG5vZGUpOwoJICAgICAgICAgICAgaWYgKG5vZGUuJGlubmVyTm9kZXMpIHsKCSAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmQgb2Ygbm9kZS4kaW5uZXJOb2RlcykgewoJICAgICAgICAgICAgICAgICAgICBpZiAoaW5kLiR0YWcgPT09ICd0YWcnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBuZC5hZGRUYWcoaW5kLmssIGluZC52KTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfSk7CgoJICAgICAgICB4bWxQYXJzZXIub24oJzwvb3NtLndheT4nLCBub2RlID0+IHsKCSAgICAgICAgICAgIGxldCB3YXkgPSBuZXcgV2F5KG5vZGUuaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgIGZvciAobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhub2RlKSkgewoJICAgICAgICAgICAgICAgIGlmICghay5zdGFydHNXaXRoKCckJykgJiYgWydpZCddLmluZGV4T2YoaykgPCAwKSB7CgkgICAgICAgICAgICAgICAgICAgIHdheS5hZGRQcm9wKGssIHYpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChub2RlLiRpbm5lck5vZGVzKSB7CgkgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kIG9mIG5vZGUuJGlubmVyTm9kZXMpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGluZC4kdGFnID09PSAnbmQnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kLmxvbiAmJiBpbmQubGF0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F5LmFkZExhdExuZyhpbmQpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbmQucmVmKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F5LmFkZE5vZGVSZWYoaW5kLnJlZik7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kLiR0YWcgPT09ICd0YWcnKQoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5LmFkZFRhZyhpbmQuaywgaW5kLnYpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfSk7CgoJICAgICAgICB4bWxQYXJzZXIub24oJzxvc20ucmVsYXRpb24+Jywgbm9kZSA9PiB7CgkgICAgICAgICAgICBuZXcgUmVsYXRpb24obm9kZS5pZCwgcmVmRWxlbWVudHMpOwoJICAgICAgICB9KTsKCgkgICAgICAgIHhtbFBhcnNlci5vbignPC9vc20ucmVsYXRpb24ubWVtYmVyPicsIChub2RlLCBwYXJlbnQpID0+IHsKCSAgICAgICAgICAgIGxldCByZWxhdGlvbiA9IHJlZkVsZW1lbnRzLmdldChgcmVsYXRpb24vJHtwYXJlbnQuaWR9YCk7CgkgICAgICAgICAgICBsZXQgbWVtYmVyID0gewoJICAgICAgICAgICAgICAgIHR5cGU6IG5vZGUudHlwZSwKCSAgICAgICAgICAgICAgICByb2xlOiBub2RlLnJvbGUgPyBub2RlLnJvbGUgOiAnJywKCSAgICAgICAgICAgICAgICByZWY6IG5vZGUucmVmCgkgICAgICAgICAgICB9OwoJICAgICAgICAgICAgaWYgKG5vZGUubGF0ICYmIG5vZGUubG9uKSB7CgkgICAgICAgICAgICAgICAgbWVtYmVyLmxhdCA9IG5vZGUubGF0LCBtZW1iZXIubG9uID0gbm9kZS5sb24sIG1lbWJlci50YWdzID0ge307CgkgICAgICAgICAgICAgICAgZm9yIChsZXQgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKG5vZGUpKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmICghay5zdGFydHNXaXRoKCckJykgJiYgWyd0eXBlJywgJ2xhdCcsICdsb24nXS5pbmRleE9mKGspIDwgMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyW2tdID0gdjsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChub2RlLiRpbm5lck5vZGVzKSB7CgkgICAgICAgICAgICAgICAgbGV0IGdlb21ldHJ5ID0gW107CgkgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gW107CgkgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kIG9mIG5vZGUuJGlubmVyTm9kZXMpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGluZC5sYXQgJiYgaW5kLmxvbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnkucHVzaChpbmQpOwoJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChpbmQucmVmKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkubGVuZ3RoID4gMCkgewoJICAgICAgICAgICAgICAgICAgICBtZW1iZXIuZ2VvbWV0cnkgPSBnZW9tZXRyeTsKCSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVzLmxlbmd0aCA+IDApIHsKCSAgICAgICAgICAgICAgICAgICAgbWVtYmVyLm5vZGVzID0gbm9kZXM7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVsYXRpb24uYWRkTWVtYmVyKG1lbWJlcik7CgkgICAgICAgIH0pOwoKCSAgICAgICAgeG1sUGFyc2VyLm9uKCc8L29zbS5yZWxhdGlvbi5ib3VuZHM+JywgKG5vZGUsIHBhcmVudCkgPT4gewoJICAgICAgICAgICAgcmVmRWxlbWVudHMuZ2V0KGByZWxhdGlvbi8ke3BhcmVudC5pZH1gKS5zZXRCb3VuZHMoW3BhcnNlRmxvYXQobm9kZS5taW5sb24pLCBwYXJzZUZsb2F0KG5vZGUubWlubGF0KSwgcGFyc2VGbG9hdChub2RlLm1heGxvbiksIHBhcnNlRmxvYXQobm9kZS5tYXhsYXQpXSk7CgkgICAgICAgIH0pOwoKCSAgICAgICAgeG1sUGFyc2VyLm9uKCc8L29zbS5yZWxhdGlvbi50YWc+JywgKG5vZGUsIHBhcmVudCkgPT4gewoJICAgICAgICAgICAgcmVmRWxlbWVudHMuZ2V0KGByZWxhdGlvbi8ke3BhcmVudC5pZH1gKS5hZGRUYWcobm9kZS5rLCBub2RlLnYpOwoJICAgICAgICB9KTsKCgkgICAgICAgIHhtbFBhcnNlci5wYXJzZShvc20pOwoJICAgIH07CgoJICAgIGlmIChmb3JtYXQgPT09ICdqc29uLXJhdycpIHsKCSAgICAgICAgb3NtID0gSlNPTi5wYXJzZShvc20pOwoJICAgICAgICBpZiAob3NtLmVsZW1lbnRzKSB7CgkgICAgICAgICAgICBmb3JtYXQgPSAnanNvbic7CgkgICAgICAgIH0gZWxzZSB7CgkgICAgICAgICAgICBmb3JtYXQgPSAnaW52YWxpZCc7CgkgICAgICAgIH0KCSAgICB9CgoJICAgIGlmIChmb3JtYXQgPT09ICdqc29uJykgewoJICAgICAgICBhbmFseXplRmVhdHVyZXNGcm9tSnNvbihvc20pOwoJICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAneG1sJykgewoJICAgICAgICBhbmFseXplRmVhdHVyZXNGcm9tWG1sKG9zbSk7CgkgICAgfQoKCSAgICByZWZFbGVtZW50cy5iaW5kQWxsKCk7CgoJICAgIGZvciAobGV0IHYgb2YgcmVmRWxlbWVudHMudmFsdWVzKCkpIHsKCSAgICAgICAgaWYgKHYucmVmQ291bnQgPD0gMCB8fCAodi5oYXNUYWcgJiYgcmVuZGVyVGFnZ2VkICYmICEodiBpbnN0YW5jZW9mIFdheSAmJiBleGNsdWRlV2F5KSkpIHsKCSAgICAgICAgICAgIGxldCBmZWF0dXJlcyA9IHYudG9GZWF0dXJlQXJyYXkoKTsKCSAgICAgICAgICAgIC8vIHJldHVybiB0aGUgZmlyc3QgZ2VvbWV0cnkgb2YgdGhlIGZpcnN0IHJlbGF0aW9uIGVsZW1lbnQKCSAgICAgICAgICAgIGlmICh2IGluc3RhbmNlb2YgUmVsYXRpb24gJiYgIWNvbXBsZXRlRmVhdHVyZSAmJiBmZWF0dXJlcy5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIGZlYXR1cmVzWzBdLmdlb21ldHJ5OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmVhdHVyZUFycmF5ID0gZmVhdHVyZUFycmF5LmNvbmNhdChmZWF0dXJlcyk7CgkgICAgICAgIH0KCSAgICB9CgoJICAgIHJldHVybiB7IHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsIGZlYXR1cmVzOiBmZWF0dXJlQXJyYXkgfTsKCX07CgoJdmFyIG9zbTJnZW9qc29uID0gLypAX19QVVJFX18qL2dldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYik7CgoJY2xhc3MgQ29udmVydGVyIHsKCSAgICBjb25zdHJ1Y3Rvcihmb3JtYXQsIGRhdGEsIG9wdGlvbnMgPSB7fSkgewoJICAgICAgICAvKioKCSAgICAgICAgICogQ3JlYXRlcyBhIGJsYW5rIEdlb0pTT04gZmVhdHVyZSBjb2xsZWN0aW9uLgoJICAgICAgICAgKiBAcmV0dXJucyBBIG5ldyBHZW9KU09OIGZlYXR1cmUgY29sbGVjdGlvbiB3aXRoIG5vIGZlYXR1cmVzLgoJICAgICAgICAgKi8KCSAgICAgICAgdGhpcy5ibGFua0dlb0pTT04gPSAoKSA9PiAoewoJICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJywKCSAgICAgICAgICAgIGZlYXR1cmVzOiBbXSwKCSAgICAgICAgfSk7CgkgICAgICAgIHRoaXMuX3Jhd0RhdGEgPSBkYXRhOwoJICAgICAgICB0aGlzLl9mb3JtYXQgPSBmb3JtYXQ7CgkgICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zOwoJICAgICAgICBjb25zdCBjb252ZXJ0ZXJzID0gewoJICAgICAgICAgICAgJ3RvcG9qc29uJzogdGhpcy5sb2FkVG9wb0pzb24sCgkgICAgICAgICAgICAnb3NtJzogdGhpcy5sb2FkT3NtLAoJICAgICAgICAgICAgJ2ttbCc6IHRoaXMubG9hZFhtbCwKCSAgICAgICAgICAgICdncHgnOiB0aGlzLmxvYWRYbWwsCgkgICAgICAgICAgICAndGN4JzogdGhpcy5sb2FkWG1sLAoJICAgICAgICAgICAgJ2Nzdic6IHRoaXMubG9hZENzdiwKCSAgICAgICAgICAgICd0c3YnOiB0aGlzLmxvYWRDc3YsCgkgICAgICAgICAgICAncG9seWxpbmUnOiB0aGlzLmxvYWRQb2x5bGluZQoJICAgICAgICB9OwoJICAgICAgICB0aGlzLl9jb252ZXJzaW9uRm4gPSBjb252ZXJ0ZXJzW2Zvcm1hdF07CgkgICAgfQoJICAgIGFzeW5jIGNvbnZlcnQoKSB7CgkgICAgICAgIGlmICghdGhpcy5fY29udmVyc2lvbkZuKSB7CgkgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKF8sIHJlaikgPT4gcmVqKGBObyBjb252ZXJ0ZXIgZXhpc3RzIGZvciAke3RoaXMuX2Zvcm1hdH1gKSk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVyc2lvbkZuKCk7CgkgICAgICAgIH0KCSAgICB9CgkgICAgLyoqCgkgICAgICogTG9hZCB0aGUgWE1MIGRhdGEgYXMgR2VvSlNPTgoJICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdG8gYSBHZW9KU09OIEZlYXR1cmVDb2xsZWN0aW9uCgkgICAgICovCgkgICAgYXN5bmMgbG9hZFhtbCgpIHsKCSAgICAgICAgLy8gVXNlIHRoZSBhcHByb3ByaWF0ZSBwYXJzZXIgYmFzZWQgb24gdGhlIGZvcm1hdAoJICAgICAgICBjb25zdCBnZW9qc29uID0gdG9HZW9Kc29uW3RoaXMuX2Zvcm1hdF0obmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh0aGlzLl9yYXdEYXRhLCAidGV4dC94bWwiKSk7CgkgICAgICAgIHJldHVybiBnZW9qc29uOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiBMb2FkcyBhbmQgcGFyc2VzIENTViBkYXRhIGludG8gYSBHZW9KU09OIEZlYXR1cmVDb2xsZWN0aW9uLgoJICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIEdlb0pTT04gRmVhdHVyZUNvbGxlY3Rpb24uCgkgICAgICovCgkgICAgYXN5bmMgbG9hZENzdigpIHsKCSAgICAgICAgLy8gRGVmaW5lIG9wdGlvbnMgZm9yIHRoZSBjc3YyZ2VvanNvbiBsaWJyYXJ5CgkgICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5fb3B0aW9ucy5jc3ZPcHRpb25zIHx8IHt9OyAvLyBUT0RPIGFsbG93IENTViBvcHRpb25zCgkgICAgICAgIGlmICh0aGlzLl9mb3JtYXQgPT09ICd0c3YnKSB7CgkgICAgICAgICAgICBvcHRpb25zLmRlbGltaXRlciA9ICdcdCc7CgkgICAgICAgIH0KCSAgICAgICAgLy8gVXNlIHRoZSBjc3YyZ2VvanNvbiBsaWJyYXJ5IHRvIGNvbnZlcnQgdGhlIENTViB0byBHZW9KU09OCgkgICAgICAgIGNvbnN0IGdlb2pzb24gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CgkgICAgICAgICAgICBjc3YyZ2VvanNvbl8xLmNzdjJnZW9qc29uKHRoaXMuX3Jhd0RhdGEsIG9wdGlvbnMsIChlcnIsIGRhdGEpID0+IHsKCSAgICAgICAgICAgICAgICBpZiAoZXJyKSB7CgkgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgICAgIHJldHVybiBnZW9qc29uOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiBMb2FkcyBUb3BvSlNPTiBkYXRhIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgR2VvSlNPTiBGZWF0dXJlQ29sbGVjdGlvbgoJICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIEdlb0pTT04gRmVhdHVyZUNvbGxlY3Rpb24uCgkgICAgICovCgkgICAgYXN5bmMgbG9hZFRvcG9Kc29uKCkgewoJICAgICAgICBsZXQgdG9wb0pzb25EYXRhID0ge307CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICB0b3BvSnNvbkRhdGEgPSBKU09OLnBhcnNlKHRoaXMuX3Jhd0RhdGEpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlKSB7CgkgICAgICAgICAgICB0aHJvdyAiSW52YWxpZCBUb3BvSnNvbiI7CgkgICAgICAgIH0KCSAgICAgICAgLy8gQ29udmVydCB0aGUgZGF0YQoJICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5ibGFua0dlb0pTT04oKTsKCSAgICAgICAgaWYgKHRvcG9Kc29uRGF0YS50eXBlID09PSAiVG9wb2xvZ3kiICYmIHRvcG9Kc29uRGF0YS5vYmplY3RzICE9PSB1bmRlZmluZWQpIHsKCSAgICAgICAgICAgIHJlc3VsdCA9IHsKCSAgICAgICAgICAgICAgICB0eXBlOiAiRmVhdHVyZUNvbGxlY3Rpb24iLAoJICAgICAgICAgICAgICAgIGZlYXR1cmVzOiByZXN1bHQuZmVhdHVyZXMgPSBPYmplY3Qua2V5cyh0b3BvSnNvbkRhdGEub2JqZWN0cykubWFwKGtleSA9PiB0b3BvanNvbkZlYXR1cmUodG9wb0pzb25EYXRhLCBrZXkpKS5yZWR1Y2UoKGEsIHYpID0+IFsuLi5hLCAuLi52LmZlYXR1cmVzXSwgW10pCgkgICAgICAgICAgICB9OwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfQoJICAgIDsKCSAgICAvKioKCSAgICAgKiBMb2FkcyBPU00gZGF0YSBhbmQgY29udmVydHMgaXQgaW50byBhIEdlb0pTT04gRmVhdHVyZUNvbGxlY3Rpb24KCSAgICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBHZW9KU09OIEZlYXR1cmVDb2xsZWN0aW9uLgoJICAgICAqLwoJICAgIGFzeW5jIGxvYWRPc20oKSB7CgkgICAgICAgIHJldHVybiBvc20yZ2VvanNvbih0aGlzLl9yYXdEYXRhKTsKCSAgICB9CgkgICAgLyoqCgkgICAgICogTG9hZHMgYW5kIHBhcnNlcyBQb2x5bGluZSBkYXRhIGludG8gYSBHZW9KU09OIEZlYXR1cmVDb2xsZWN0aW9uLgoJICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIEdlb0pTT04gRmVhdHVyZUNvbGxlY3Rpb24uCgkgICAgICovCgkgICAgYXN5bmMgbG9hZFBvbHlsaW5lKCkgewoJICAgICAgICBsZXQgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMucG9seWxpbmVPcHRpb25zIHx8IHt9OwoJICAgICAgICAvLyBVc2UgdGhlIEBtYXBib3gvcG9seWxpbmUgbGlicmFyeSB0byBjb252ZXJ0IHRoZSBwb2x5bGluZSB0byBHZW9KU09OCgkgICAgICAgIGNvbnN0IGdlb2pzb24gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVTdHJpbmcgPSBwb2x5bGluZUV4cG9ydHMudG9HZW9KU09OKHRoaXMuX3Jhd0RhdGEsIG9wdGlvbnMucHJlY2lzaW9uKTsKCSAgICAgICAgICAgICAgICBsZXQgZ2VvbWV0cnkgPSBsaW5lU3RyaW5nOwoJICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICdwb2ludCcpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVTdHJpbmcuY29vcmRpbmF0ZXMubGVuZ3RoID09PSAxKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGl0IGEgcG9pbnQKCSAgICAgICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5ID0gewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ1BvaW50JywKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29vcmRpbmF0ZXMnOiBsaW5lU3RyaW5nLmNvb3JkaW5hdGVzWzBdCgkgICAgICAgICAgICAgICAgICAgICAgICB9OwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdDYW5ub3QgY29udmVydCBwb2x5bGluZSB0byAnICsgb3B0aW9ucy50eXBlKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT09ICdwb2x5Z29uJykgewoJICAgICAgICAgICAgICAgICAgICBpZiAobGluZVN0cmluZy5jb29yZGluYXRlc1swXVswXSA9PT0gbGluZVN0cmluZy5jb29yZGluYXRlc1tsaW5lU3RyaW5nLmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdWzBdICYmCgkgICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RyaW5nLmNvb3JkaW5hdGVzWzBdWzFdID09PSBsaW5lU3RyaW5nLmNvb3JkaW5hdGVzW2xpbmVTdHJpbmcuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1bMV0pIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2UgaXQgYSBwb2x5Z29uCgkgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeSA9IHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdQb2x5Z29uJywKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29vcmRpbmF0ZXMnOiBbbGluZVN0cmluZy5jb29yZGluYXRlc10KCSAgICAgICAgICAgICAgICAgICAgICAgIH07CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0Nhbm5vdCBjb252ZXJ0IHBvbHlsaW5lIHRvICcgKyBvcHRpb25zLnR5cGUpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHJlc29sdmUoewoJICAgICAgICAgICAgICAgICAgICB0eXBlOiAiRmVhdHVyZUNvbGxlY3Rpb24iLAoJICAgICAgICAgICAgICAgICAgICBmZWF0dXJlczogW3sKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJGZWF0dXJlIiwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VvbWV0cnkiOiBnZW9tZXRyeSwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IG9wdGlvbnMucHJvcGVydGllcyB8fCB7fQoJICAgICAgICAgICAgICAgICAgICAgICAgfV0KCSAgICAgICAgICAgICAgICB9KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlcnIpIHsKCSAgICAgICAgICAgICAgICByZWplY3QoZXJyKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfSk7CgkgICAgICAgIHJldHVybiBnZW9qc29uOwoJICAgIH0KCX0KCgljb25zdCBsaWJyYXJpZXMgPSB7CgkgICAgJ0NvbnZlcnRlcic6IENvbnZlcnRlcgoJfTsKCWxldCBzdWJDbGFzczsKCXNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGUgPT4gewoJICAgIGNvbnN0IGRhdGEgPSAoZS5kYXRhIHx8IGUpOwoJICAgIGNvbnN0IHBvc3QgPSAoaWQsIGVyciwgcmVzLCB0eXBlKSA9PiB7CgkgICAgICAgIHBvc3RNZXNzYWdlKHsKCSAgICAgICAgICAgIHR5cGU6IHR5cGUgPyB0eXBlIDogKGVyciA/ICdlcnJvcicgOiAncmVzcG9uc2UnKSwKCSAgICAgICAgICAgIGlkOiBpZCwKCSAgICAgICAgICAgIG1lc3NhZ2U6IHJlcywKCSAgICAgICAgICAgIGVycm9yOiBlcnIKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICBjb25zdCBjb21tYW5kcyA9IHsKCSAgICAgICAgJ2luaXQnOiAobXNnKSA9PiB7CgkgICAgICAgICAgICBjb25zdCB7IGlkLCBjb21tYW5kLCBtZXNzYWdlIH0gPSBtc2c7CgkgICAgICAgICAgICBzdWJDbGFzcyA9IG5ldyBsaWJyYXJpZXNbY29tbWFuZF0obWVzc2FnZVswXSwgbWVzc2FnZVsxXSk7CgkgICAgICAgICAgICAvLyByZXR1cm4gdGhlIGNsYXNzJyBtZXRob2RzCgkgICAgICAgICAgICBjb25zdCBmbnMgPSBbCgkgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobGlicmFyaWVzW2NvbW1hbmRdLnByb3RvdHlwZSksCgkgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoc3ViQ2xhc3MpCgkgICAgICAgICAgICBdLm1hcChrZXkgPT4gW2tleSwgdHlwZW9mIGxpYnJhcmllc1tjb21tYW5kXS5wcm90b3R5cGVba2V5XV0pCgkgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYykgPT4gKHsgLi4uYSwgLi4ueyBbY1swXV06IGNbMV0gfSB9KSwge30pOwoJICAgICAgICAgICAgcG9zdChpZCwgdW5kZWZpbmVkLCBmbnMsICdpbml0X3Jlc3BvbnNlJyk7CgkgICAgICAgIH0sCgkgICAgICAgICdnZXQnOiBmdW5jdGlvbiAobXNnKSB7CgkgICAgICAgICAgICBjb25zdCB7IGlkLCBjb21tYW5kIH0gPSBtc2c7CgkgICAgICAgICAgICBpZiAoc3ViQ2xhc3MgJiYgc3ViQ2xhc3NbY29tbWFuZF0pIHsKCSAgICAgICAgICAgICAgICBwb3N0KGlkLCB1bmRlZmluZWQsIHN1YkNsYXNzW2NvbW1hbmRdKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIHBvc3QoaWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfSwKCSAgICAgICAgJ2V4ZWMnOiBmdW5jdGlvbiAobXNnKSB7CgkgICAgICAgICAgICBjb25zdCB7IGlkLCBjb21tYW5kLCBtZXNzYWdlIH0gPSBtc2c7CgkgICAgICAgICAgICBpZiAoc3ViQ2xhc3MgJiYgc3ViQ2xhc3NbY29tbWFuZF0gJiYgdHlwZW9mIHN1YkNsYXNzW2NvbW1hbmRdID09PSAnZnVuY3Rpb24nKSB7CgkgICAgICAgICAgICAgICAgY29uc3QgY21kID0gc3ViQ2xhc3NbY29tbWFuZF0KCSAgICAgICAgICAgICAgICAgICAgLmFwcGx5KHN1YkNsYXNzLCBtZXNzYWdlKTsKCSAgICAgICAgICAgICAgICBpZiAoISFjbWQgJiYgdHlwZW9mIGNtZC50aGVuID09PSAnZnVuY3Rpb24nKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBwcm9taXNlLCBzbyB3YWl0IGZvciBpdAoJICAgICAgICAgICAgICAgICAgICBjbWQKCSAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiBwb3N0KGlkLCB1bmRlZmluZWQsIHJlcykpCgkgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiBwb3N0KGlkLCBlKSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAvLyBOb3QgYSBwcm9taXNlLCBqdXN0IHJldHVybiBpdAoJICAgICAgICAgICAgICAgICAgICBwb3N0KGlkLCB1bmRlZmluZWQsIGNtZCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgLy8gRXJyb3IKCSAgICAgICAgICAgICAgICBwb3N0KGlkLCBuZXcgRXJyb3IoYGNvbW1hbmQgIiR7Y29tbWFuZH0iIG5vdCBmb3VuZGApKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgaWYgKGNvbW1hbmRzW2RhdGEudHlwZV0pIHsKCSAgICAgICAgY29tbWFuZHNbZGF0YS50eXBlXShkYXRhKTsKCSAgICB9Cgl9KTsKCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdvcmtlci5qcy5tYXAKCg==",pa?pn(Rs):function(ht,Ct,ct){var bt;return function(Pt){return bt=bt||An(ht),new Worker(bt,Pt)}}(Rs));let vn=()=>Math.random().toString(36).substring(2);class io{constructor(Ct,ct){this.initId=vn()+"-"+Ct,this.worker=new Or,this.handlers=new Map,this.worker.onmessage=bt=>{let Pt=bt.data,Jt=this.handlers.get(Pt.id),re=this;if(Jt){if(Pt.type==="response"&&Jt.resolve(Pt.message),Pt.type==="error"){let _e=Pt.error||new Error(`Unknown error with ${Ct}`);Jt.reject(_e)}Pt.type==="init_response"&&(this._=Object.keys(Pt.message).map(_e=>{let Be=typeof Pt.message[_e]=="function";return[_e,function(){return Be?re.exec(_e)(...arguments):re.get(_e)}]}).reduce((_e,Be)=>({..._e,[Be[0]]:Be[1]}),{}),Jt.resolve(this._))}},this.worker.postMessage({type:"init",id:this.initId,command:Ct,message:ct})}onLoad(){return new Promise(Ct=>{this._===void 0?this.handlers.set(this.initId,{resolve:Ct,reject:Ct}):Ct(this._)})}exec(Ct){let ct=this;return function(...bt){return new Promise((Pt,Jt)=>{let re=vn()+"-"+Ct;ct.handlers.set(re,{resolve:Pt,reject:Jt}),ct.worker.postMessage({type:"exec",id:re,command:Ct,message:[...bt]})})}}get(Ct){return new Promise((ct,bt)=>{let Pt=vn()+"-"+Ct;this.handlers.set(Pt,{resolve:ct,reject:bt}),this.worker.postMessage({type:"get",id:Pt,command:Ct,message:[]})})}}let ir=new URL("test://http://example.com").href!=="test://http://example.com";async function ro(ht,Ct,ct){let bt=await fetch(ht,ct?{signal:ct.signal}:void 0),Pt={},Jt=new URL(ht,window.location.href);if(Jt.hash.length){let re=Jt.hash,_e=decodeURIComponent(re.slice(1));try{Pt=JSON.parse(_e)}catch(Be){console.warn("Error parsing or reading URL:",Be)}}if(bt.status==200){let re=await bt.text(),_e;return["kml","tcx","gpx"].includes(Ct)||!(()=>{let Be=!1;try{Be=typeof window.Worker=="function"}catch{Be=!1}return Be})()?_e=new $r(Ct,re,Pt).convert():_e=new io("Converter",[Ct,re,Pt]).exec("convert")(),await _e}throw new Error(`Data fetch error: ${bt.statusText}`)}let wn=ht=>{let Ct=ht.split("://")[0],ct=ht.replace(new RegExp(`^${Ct}://`),""),bt=ir?(Pt=>{let Jt=new RegExp("^(https?)(//)");return Pt.replace(Jt,"$1:$2")})(ct):ct;return{prefix:Ct,url:bt}},no=(ht,Ct)=>Ct instanceof AbortController?(async(ct,bt)=>{let{prefix:Pt,url:Jt}=wn(ct.url);if(!Jt)throw new Error("Invalid URL: "+ct.url);try{return{data:await ro(Jt,Pt,bt)}}catch(re){throw new Error(re||"Unknown Error")}})(ht,Ct):((ct,bt)=>{let Pt=new AbortController,{prefix:Jt,url:re}=wn(ct.url);return re&&ro(re,Jt,Pt).then(_e=>bt(null,_e)).catch(_e=>bt(_e)),{cancel:()=>{Pt.abort()}}})(ht,Ct),ns=Fr;n.VectorTextProtocol=no,n.addOptions=(ht,Ct)=>{try{let ct=new URL(ht);return ct.hash=`#${encodeURIComponent(JSON.stringify(Ct))}`,ct.toString()}catch(ct){return console.error("Error parsing or updating URL:",ct),ht}},n.addProtocols=ht=>{Fr.forEach(Ct=>{ht.addProtocol(Ct,no)})},n.processData=ro,n.vectorFormats=ns})});var nC=ua((az,Sb)=>{Sb.exports=t3;var $F=Object.prototype.hasOwnProperty;function t3(){for(var n={},t=0;t{(function(){var n=this,t={};typeof Fb<"u"?kb.exports=t:n.fuzzy=t,t.simpleFilter=function(r,o){return o.filter(function(A){return t.test(r,A)})},t.test=function(r,o){return t.match(r,o)!==null},t.match=function(r,o,A){A=A||{};var s=0,d=[],f=o.length,I=0,_=0,S=A.pre||"",U=A.post||"",G=A.caseSensitive&&o||o.toLowerCase(),L;r=A.caseSensitive&&r||r.toLowerCase();for(var K=0;K{"use strict";var Mo=function(n){return this.component=n,this.items=[],this.active=n.options.noInitialSelection?-1:0,this.wrapper=document.createElement("div"),this.wrapper.className="suggestions-wrapper",this.element=document.createElement("ul"),this.element.className="suggestions",this.wrapper.appendChild(this.element),this.selectingListItem=!1,n.el.parentNode.insertBefore(this.wrapper,n.el.nextSibling),this};Mo.prototype.show=function(){this.element.style.display="block"};Mo.prototype.hide=function(){this.element.style.display="none"};Mo.prototype.add=function(n){this.items.push(n)};Mo.prototype.clear=function(){this.items=[],this.active=this.component.options.noInitialSelection?-1:0};Mo.prototype.isEmpty=function(){return!this.items.length};Mo.prototype.isVisible=function(){return this.element.style.display==="block"};Mo.prototype.draw=function(){if(this.element.innerHTML="",this.items.length===0){this.hide();return}for(var n=0;n=this.items.length-1?0:this.active+1)};Mo.prototype.drawError=function(n){var t=document.createElement("li");t.innerHTML=n,this.element.appendChild(t),this.show()};Eb.exports=Mo});var Qb=ua((lz,Ub)=>{"use strict";var e3=nC(),i3=Lb(),r3=Tb(),Xs=function(n,t,r){return r=r||{},this.options=e3({minLength:2,limit:5,filter:!0,hideOnBlur:!0,noInitialSelection:!0},r),this.el=n,this.data=t||[],this.list=new r3(this),this.query="",this.selected=null,this.list.draw(),this.el.addEventListener("keyup",function(o){this.handleKeyUp(o.keyCode,o)}.bind(this),!1),this.el.addEventListener("keydown",function(o){this.handleKeyDown(o)}.bind(this)),this.el.addEventListener("focus",function(){this.handleFocus()}.bind(this)),this.el.addEventListener("blur",function(){this.handleBlur()}.bind(this)),this.el.addEventListener("paste",function(o){this.handlePaste(o)}.bind(this)),this.render=this.options.render?this.options.render.bind(this):this.render.bind(this),this.getItemValue=this.options.getItemValue?this.options.getItemValue.bind(this):this.getItemValue.bind(this),this};Xs.prototype.handleKeyUp=function(n,t){if(!(n===40||n===38||n===27||n===9)){if(n===13){this.list.items[this.list.active]&&(this.list.handleMouseUp(this.list.items[this.list.active]),t.stopPropagation());return}this.handleInputChange(this.el.value)}};Xs.prototype.handleKeyDown=function(n){switch(n.keyCode){case 13:this.list.active>=0&&(this.list.selectingListItem=!0);break;case 9:this.list.isEmpty()||(this.list.isVisible()&&n.preventDefault(),this.value(this.list.active>=0?this.list.items[this.list.active].original:null),this.list.hide());break;case 27:this.list.isEmpty()||this.list.hide();break;case 38:this.list.previous();break;case 40:this.list.next();break}};Xs.prototype.handleBlur=function(){!this.list.selectingListItem&&this.options.hideOnBlur&&this.list.hide()};Xs.prototype.handlePaste=function(n){if(n.clipboardData)this.handleInputChange(n.clipboardData.getData("Text"));else{var t=this;setTimeout(function(){t.handleInputChange(n.target.value)},100)}};Xs.prototype.handleInputChange=function(n){if(this.query=this.normalize(n),this.list.clear(),this.query.length-1};Xs.prototype.value=function(n){if(this.selected=n,this.el.value=this.getItemValue(n||{place_name:this.query}),document.createEvent){var t=document.createEvent("HTMLEvents");t.initEvent("change",!0,!1),this.el.dispatchEvent(t)}else this.el.fireEvent("onchange")};Xs.prototype.getCandidates=function(n){var t={pre:"",post:"",extract:function(o){return this.getItemValue(o)}.bind(this)},r;this.options.filter?(r=i3.filter(this.query,this.data,t),r=r.map(function(o){return{original:o.original,string:this.render(o.original,o.string)}}.bind(this))):r=this.data.map(function(o){var A=this.render(o);return{original:o,string:A}}.bind(this)),n(r)};Xs.prototype.getItemValue=function(n){return n};Xs.prototype.render=function(n,t){if(t)return t;for(var r=n.original?this.getItemValue(n.original):this.getItemValue(n),o=this.normalize(r),A=o.lastIndexOf(this.query);A>-1;){var s=A+this.query.length;r=r.slice(0,A)+""+r.slice(A,s)+""+r.slice(s),A=o.slice(0,A).lastIndexOf(this.query)}return r};Xs.prototype.renderError=function(n){this.list.drawError(n)};Ub.exports=Xs});var Zb=ua((cz,Gb)=>{"use strict";var Rb=Qb();Gb.exports=Rb;typeof window<"u"&&(window.Suggestions=Rb)});var Nb=ua((uz,Mb)=>{var n3="Expected a function",Pb=NaN,s3="[object Symbol]",o3=/^\s+|\s+$/g,a3=/^[-+]0x[0-9a-f]+$/i,A3=/^0b[01]+$/i,l3=/^0o[0-7]+$/i,c3=parseInt,u3=typeof global=="object"&&global&&global.Object===Object&&global,h3=typeof self=="object"&&self&&self.Object===Object&&self,g3=u3||h3||Function("return this")(),d3=Object.prototype,p3=d3.toString,f3=Math.max,m3=Math.min,sC=function(){return g3.Date.now()};function C3(n,t,r){var o,A,s,d,f,I,_=0,S=!1,U=!1,G=!0;if(typeof n!="function")throw new TypeError(n3);t=Hb(t)||0,oC(r)&&(S=!!r.leading,U="maxWait"in r,s=U?f3(Hb(r.maxWait)||0,t):s,G="trailing"in r?!!r.trailing:G);function L(Et){var xt=o,It=A;return o=A=void 0,_=Et,d=n.apply(It,xt),d}function K(Et){return _=Et,f=setTimeout(z,t),S?L(Et):d}function V(Et){var xt=Et-I,It=Et-_,Nt=t-xt;return U?m3(Nt,s-It):Nt}function q(Et){var xt=Et-I,It=Et-_;return I===void 0||xt>=t||xt<0||U&&It>=s}function z(){var Et=sC();if(q(Et))return it(Et);f=setTimeout(z,V(Et))}function it(Et){return f=void 0,G&&o?L(Et):(o=A=void 0,d)}function At(){f!==void 0&&clearTimeout(f),_=0,o=I=A=f=void 0}function _t(){return f===void 0?d:it(sC())}function Lt(){var Et=sC(),xt=q(Et);if(o=arguments,A=this,I=Et,xt){if(f===void 0)return K(I);if(U)return f=setTimeout(z,t),L(I)}return f===void 0&&(f=setTimeout(z,t)),d}return Lt.cancel=At,Lt.flush=_t,Lt}function oC(n){var t=typeof n;return!!n&&(t=="object"||t=="function")}function I3(n){return!!n&&typeof n=="object"}function y3(n){return typeof n=="symbol"||I3(n)&&p3.call(n)==s3}function Hb(n){if(typeof n=="number")return n;if(y3(n))return Pb;if(oC(n)){var t=typeof n.valueOf=="function"?n.valueOf():n;n=oC(t)?t+"":t}if(typeof n!="string")return n===0?n:+n;n=n.replace(o3,"");var r=A3.test(n);return r||l3.test(n)?c3(n.slice(2),r?2:8):a3.test(n)?Pb:+n}Mb.exports=C3});var qb=ua((hz,aC)=>{"use strict";var Tu=typeof Reflect=="object"?Reflect:null,Vb=Tu&&typeof Tu.apply=="function"?Tu.apply:function(t,r,o){return Function.prototype.apply.call(t,r,o)},Sd;Tu&&typeof Tu.ownKeys=="function"?Sd=Tu.ownKeys:Object.getOwnPropertySymbols?Sd=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Sd=function(t){return Object.getOwnPropertyNames(t)};function b3(n){console&&console.warn&&console.warn(n)}var Kb=Number.isNaN||function(t){return t!==t};function Yr(){Yr.init.call(this)}aC.exports=Yr;aC.exports.once=_3;Yr.EventEmitter=Yr;Yr.prototype._events=void 0;Yr.prototype._eventsCount=0;Yr.prototype._maxListeners=void 0;var Db=10;function Fd(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty(Yr,"defaultMaxListeners",{enumerable:!0,get:function(){return Db},set:function(n){if(typeof n!="number"||n<0||Kb(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");Db=n}});Yr.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Yr.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||Kb(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function zb(n){return n._maxListeners===void 0?Yr.defaultMaxListeners:n._maxListeners}Yr.prototype.getMaxListeners=function(){return zb(this)};Yr.prototype.emit=function(t){for(var r=[],o=1;o0&&(d=r[0]),d instanceof Error)throw d;var f=new Error("Unhandled error."+(d?" ("+d.message+")":""));throw f.context=d,f}var I=s[t];if(I===void 0)return!1;if(typeof I=="function")Vb(I,this,r);else for(var _=I.length,S=Yb(I,_),o=0;o<_;++o)Vb(S[o],this,r);return!0};function Ob(n,t,r,o){var A,s,d;if(Fd(r),s=n._events,s===void 0?(s=n._events=Object.create(null),n._eventsCount=0):(s.newListener!==void 0&&(n.emit("newListener",t,r.listener?r.listener:r),s=n._events),d=s[t]),d===void 0)d=s[t]=r,++n._eventsCount;else if(typeof d=="function"?d=s[t]=o?[r,d]:[d,r]:o?d.unshift(r):d.push(r),A=zb(n),A>0&&d.length>A&&!d.warned){d.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+d.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=n,f.type=t,f.count=d.length,b3(f)}return n}Yr.prototype.addListener=function(t,r){return Ob(this,t,r,!1)};Yr.prototype.on=Yr.prototype.addListener;Yr.prototype.prependListener=function(t,r){return Ob(this,t,r,!0)};function v3(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Wb(n,t,r){var o={fired:!1,wrapFn:void 0,target:n,type:t,listener:r},A=v3.bind(o);return A.listener=r,o.wrapFn=A,A}Yr.prototype.once=function(t,r){return Fd(r),this.on(t,Wb(this,t,r)),this};Yr.prototype.prependOnceListener=function(t,r){return Fd(r),this.prependListener(t,Wb(this,t,r)),this};Yr.prototype.removeListener=function(t,r){var o,A,s,d,f;if(Fd(r),A=this._events,A===void 0)return this;if(o=A[t],o===void 0)return this;if(o===r||o.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete A[t],A.removeListener&&this.emit("removeListener",t,o.listener||r));else if(typeof o!="function"){for(s=-1,d=o.length-1;d>=0;d--)if(o[d]===r||o[d].listener===r){f=o[d].listener,s=d;break}if(s<0)return this;s===0?o.shift():w3(o,s),o.length===1&&(A[t]=o[0]),A.removeListener!==void 0&&this.emit("removeListener",t,f||r)}return this};Yr.prototype.off=Yr.prototype.removeListener;Yr.prototype.removeAllListeners=function(t){var r,o,A;if(o=this._events,o===void 0)return this;if(o.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):o[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete o[t]),this;if(arguments.length===0){var s=Object.keys(o),d;for(A=0;A=0;A--)this.removeListener(t,r[A]);return this};function Jb(n,t,r){var o=n._events;if(o===void 0)return[];var A=o[t];return A===void 0?[]:typeof A=="function"?r?[A.listener||A]:[A]:r?B3(A):Yb(A,A.length)}Yr.prototype.listeners=function(t){return Jb(this,t,!0)};Yr.prototype.rawListeners=function(t){return Jb(this,t,!1)};Yr.listenerCount=function(n,t){return typeof n.listenerCount=="function"?n.listenerCount(t):Xb.call(n,t)};Yr.prototype.listenerCount=Xb;function Xb(n){var t=this._events;if(t!==void 0){var r=t[n];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Yr.prototype.eventNames=function(){return this._eventsCount>0?Sd(this._events):[]};function Yb(n,t){for(var r=new Array(t),o=0;o{$b.exports={fr:{name:"France",bbox:[[-4.59235,41.380007],[9.560016,51.148506]]},us:{name:"United States",bbox:[[-171.791111,18.91619],[-66.96466,71.357764]]},ru:{name:"Russia",bbox:[[19.66064,41.151416],[190.10042,81.2504]]},ca:{name:"Canada",bbox:[[-140.99778,41.675105],[-52.648099,83.23324]]}}});var iv=ua((dz,ev)=>{"use strict";var S3={de:"Suche",it:"Ricerca",en:"Search",nl:"Zoeken",fr:"Chercher",ca:"Cerca",he:"\u05DC\u05D7\u05E4\u05E9",ja:"\u30B5\u30FC\u30C1",lv:"Mekl\u0113t",pt:"Procurar",sr:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430",zh:"\u641C\u7D22",cs:"Vyhled\xE1v\xE1n\xED",hu:"Keres\xE9s",ka:"\u10EB\u10D8\u10D4\u10D1\u10D0",nb:"S\xF8ke",sk:"Vyh\u013Ead\xE1vanie",th:"\u0E04\u0E49\u0E19\u0E2B\u0E32",fi:"Hae",is:"Leita",ko:"\uC218\uC0C9",pl:"Szukaj",sl:"Iskanje",fa:"\u062C\u0633\u062A\u062C\u0648",ru:"\u041F\u043E\u0438\u0441\u043A"};ev.exports={placeholder:S3}});var nv=ua((rv,kd)=>{(function(n,t,r){typeof kd<"u"&&kd.exports?kd.exports=r():n[t]=r()})(rv,"subtag",function(){var n="",t=/^([a-zA-Z]{2,3})(?:[_-]+([a-zA-Z]{3})(?=$|[_-]+))?(?:[_-]+([a-zA-Z]{4})(?=$|[_-]+))?(?:[_-]+([a-zA-Z]{2}|[0-9]{3})(?=$|[_-]+))?/;function r(f){return f.match(t)||[]}function o(f){return r(f).filter(function(I,_){return I&&_})}function A(f){return f=r(f),{language:f[1]||n,extlang:f[2]||n,script:f[3]||n,region:f[4]||n}}function s(f,I,_){Object.defineProperty(f,I,{value:_,enumerable:!0})}function d(f,I,_){function S(U){return r(U)[f]||n}s(S,"pattern",I),s(A,_,S)}return d(1,/^[a-zA-Z]{2,3}$/,"language"),d(2,/^[a-zA-Z]{3}$/,"extlang"),d(3,/^[a-zA-Z]{4}$/,"script"),d(4,/^[a-zA-Z]{2}$|^[0-9]{3}$/,"region"),s(A,"split",o),A})});var Av=ua((pz,av)=>{"use strict";var F3=Zb(),k3=Nb(),ha=nC(),L3=qb().EventEmitter,sv=tv(),E3=iv(),T3=nv();function ov(n,t){this._eventEmitter=new L3,this.options=ha({},this.options,t),this.inputString="",this.fresh=!0,this.lastSelected=null,this.geocoderApi=n}ov.prototype={options:{zoom:16,flyTo:!0,trackProximity:!0,showResultsWhileTyping:!1,minLength:2,reverseGeocode:!1,limit:5,enableEventLogging:!0,marker:!0,popup:!1,maplibregl:null,collapsed:!1,clearAndBlurOnEsc:!1,clearOnBlur:!1,getItemValue:function(n){return n.text!==void 0?n.text:n.place_name},render:function(n){if(n.geometry){var f=n.place_name.split(",");return'
'+f[0]+'
'+f.splice(1,f.length).join(",")+"
"}else{var t=n.text,r=t.toLowerCase().indexOf(this.query.toLowerCase()),o=this.query.length,A=t.substring(0,r),s=t.substring(r,r+o),d=t.substring(r+o);return'
'+A+''+s+""+d+"
"}},popupRender:function(n){var t=n.place_name.split(",");return'"},showResultMarkers:!0,debounceSearch:200},addTo:function(n){function t(o,A){if(!document.body.contains(A))throw new Error("Element provided to #addTo() exists, but is not in the DOM");var s=o.onAdd();A.appendChild(s)}if(n._controlContainer)n.addControl(this);else if(n instanceof HTMLElement)t(this,n);else if(typeof n=="string"){var r=document.querySelectorAll(n);if(r.length===0)throw new Error("Element ",n,"not found.");if(r.length>1)throw new Error("Geocoder can only be added to a single html element");t(this,r[0])}else throw new Error("Error: addTo must be a maplibre-gl-js map, an html element, or a CSS selector query for a single html element")},onAdd:function(n){if(n&&typeof n!="string"&&(this._map=n),this.setLanguage(),this.options.localGeocoderOnly&&!this.options.localGeocoder)throw new Error("A localGeocoder function must be specified to use localGeocoderOnly mode");this._onChange=this._onChange.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onPaste=this._onPaste.bind(this),this._onBlur=this._onBlur.bind(this),this._showButton=this._showButton.bind(this),this._hideButton=this._hideButton.bind(this),this._onQueryResult=this._onQueryResult.bind(this),this.clear=this.clear.bind(this),this._updateProximity=this._updateProximity.bind(this),this._collapse=this._collapse.bind(this),this._unCollapse=this._unCollapse.bind(this),this._clear=this._clear.bind(this),this._clearOnBlur=this._clearOnBlur.bind(this);var t=this.container=document.createElement("div");t.className="mapboxgl-ctrl-geocoder mapboxgl-ctrl maplibregl-ctrl-geocoder maplibregl-ctrl";var r=this.createIcon("search",'');this._inputEl=document.createElement("input"),this._inputEl.type="text",this._inputEl.className="mapboxgl-ctrl-geocoder--input maplibregl-ctrl-geocoder--input",this.setPlaceholder(),this.options.collapsed&&(this._collapse(),this.container.addEventListener("mouseenter",this._unCollapse),this.container.addEventListener("mouseleave",this._collapse),this._inputEl.addEventListener("focus",this._unCollapse)),(this.options.collapsed||this.options.clearOnBlur)&&this._inputEl.addEventListener("blur",this._onBlur),this._inputEl.addEventListener("keydown",k3(this._onKeyDown,this.options.debounceSearch)),this._inputEl.addEventListener("paste",this._onPaste),this._inputEl.addEventListener("change",this._onChange),this.container.addEventListener("mouseenter",this._showButton),this.container.addEventListener("mouseleave",this._hideButton);var o=document.createElement("div");o.classList.add("mapboxgl-ctrl-geocoder--pin-right","maplibregl-ctrl-geocoder--pin-right"),this._clearEl=document.createElement("button"),this._clearEl.setAttribute("aria-label","Clear"),this._clearEl.addEventListener("click",this.clear),this._clearEl.className="mapboxgl-ctrl-geocoder--button maplibregl-ctrl-geocoder--button";var A=this.createIcon("close",'');return this._clearEl.appendChild(A),this._loadingEl=this.createIcon("loading",''),o.appendChild(this._clearEl),o.appendChild(this._loadingEl),t.appendChild(r),t.appendChild(this._inputEl),t.appendChild(o),this._typeahead=new F3(this._inputEl,[],{filter:!1,minLength:this.options.minLength,limit:this.options.limit,noInitialSelection:!0}),this.setRenderFunction(this.options.render),this._typeahead.getItemValue=this.options.getItemValue,this.mapMarker=null,this.resultMarkers=[],this._handleMarker=this._handleMarker.bind(this),this._handleResultMarkers=this._handleResultMarkers.bind(this),this._map&&(this.options.trackProximity&&(this._updateProximity(),this._map.on("moveend",this._updateProximity)),this._maplibregl=this.options.maplibregl,!this._maplibregl&&this.options.marker&&(console.error("No maplibregl detected in options. Map markers are disabled. Please set options.maplibregl."),this.options.marker=!1)),t},createIcon:function(n,t){var r=document.createElementNS("http://www.w3.org/2000/svg","svg");if(r.setAttribute("class","mapboxgl-ctrl-geocoder--icon mapboxgl-ctrl-geocoder--icon-"+n+" maplibregl-ctrl-geocoder--icon maplibregl-ctrl-geocoder--icon-"+n),r.setAttribute("viewBox","0 0 18 18"),r.setAttribute("xml:space","preserve"),r.setAttribute("width",18),r.setAttribute("height",18),"innerHTML"in r)r.innerHTML=t;else{var o=document.createElement("div");o.innerHTML=""+t.valueOf().toString()+"";var A=o.firstChild,s=A.firstChild;r.appendChild(s)}return r},onRemove:function(){return this.container.parentNode.removeChild(this.container),this.options.trackProximity&&this._map&&this._map.off("moveend",this._updateProximity),this._removeMarker(),this._map=null,this},_onPaste:function(n){var t=(n.clipboardData||window.clipboardData).getData("text");t.length>=this.options.minLength&&this.options.showResultsWhileTyping&&this._geocode(t)},_onKeyDown:function(n){var t=27,r=9;if(n.keyCode===t&&this.options.clearAndBlurOnEsc)return this._clear(n),this._inputEl.blur();var o=n.target&&n.target.shadowRoot?n.target.shadowRoot.activeElement:n.target,A=o?o.value:"";if(!A)return this.fresh=!0,n.keyCode!==r&&this.clear(n),this._clearEl.style.display="none";if(!(n.metaKey||[r,t,37,39,38,40].indexOf(n.keyCode)!==-1)){if(n.keyCode===13)if(!this.options.showResultsWhileTyping)this._typeahead.selected||this._geocode(o.value);else{this._typeahead.selected==null&&this.geocoderApi.getSuggestions?this._geocode(o.value,!0):this._typeahead.selected==null&&this.options.showResultMarkers&&this._fitBoundsForMarkers();return}o.value.length>=this.options.minLength&&this.options.showResultsWhileTyping&&this._geocode(o.value)}},_showButton:function(){this._inputEl.value.length>0&&(this._clearEl.style.display="block")},_hideButton:function(){this._typeahead.selected&&(this._clearEl.style.display="none")},_onBlur:function(n){this.options.clearOnBlur&&this._clearOnBlur(n),this.options.collapsed&&this._collapse()},_onChange:function(){var n=this._typeahead.selected;if(n&&!n.geometry)n.placeId?this._geocode(n.placeId,!0,!0):this._geocode(n.text,!0);else if(n&&JSON.stringify(n)!==this.lastSelected){if(this._clearEl.style.display="none",this.options.flyTo){var t;if(this._removeResultMarkers(),n.properties&&sv[n.properties.short_code])t=ha({},this.options.flyTo),this._map&&this._map.fitBounds(sv[n.properties.short_code].bbox,t);else if(n.bbox){var r=n.bbox;t=ha({},this.options.flyTo),this._map&&this._map.fitBounds([[r[0],r[1]],[r[2],r[3]]],t)}else{var o={zoom:this.options.zoom};t=ha({},o,this.options.flyTo),n.center?t.center=n.center:n.geometry&&n.geometry.type&&n.geometry.type==="Point"&&n.geometry.coordinates&&(t.center=n.geometry.coordinates),this._map&&this._map.flyTo(t)}}this.options.marker&&this._maplibregl&&this._handleMarker(n),this._inputEl.focus(),this._inputEl.scrollLeft=0,this._inputEl.setSelectionRange(0,0),this.lastSelected=JSON.stringify(n),this._typeahead.selected=null,this._eventEmitter.emit("result",{result:n})}},_getConfigForRequest:function(){var n=["bbox","limit","proximity","countries","types","language","reverseMode"],t=this,r=n.reduce(function(o,A){return t.options[A]&&(["countries","types","language"].indexOf(A)>-1?o[A]=t.options[A].split(/[\s,]+/):o[A]=t.options[A],A==="proximity"&&t.options[A]&&typeof t.options[A].longitude=="number"&&typeof t.options[A].latitude=="number"&&(o[A]=[t.options[A].longitude,t.options[A].latitude])),o},{});return r},_geocode:function(n,t,r){this._loadingEl.style.display="block",this._eventEmitter.emit("loading",{query:n}),this.inputString=n;var o=null,A=this._getConfigForRequest(),s;if(this.options.localGeocoderOnly)s=Promise.resolve();else if(this.options.reverseGeocode&&/(-?\d+\.?\d*)[, ]+(-?\d+\.?\d*)[ ]*$/.test(n)){var d=n.split(/[\s(,)?]+/).map(function(_){return parseFloat(_,10)}).reverse();A.types&&A.types[0],A=ha(A,{query:d,limit:1}),"proximity"in A&&delete A.proximity,s=this.geocoderApi.reverseGeocode(A)}else A=ha(A,{query:n}),this.geocoderApi.getSuggestions?t?this.geocoderApi.searchByPlaceId&&r?s=this.geocoderApi.searchByPlaceId(A):s=this.geocoderApi.forwardGeocode(A):s=this.geocoderApi.getSuggestions(A):s=this.geocoderApi.forwardGeocode(A);var f=[];this.options.localGeocoder&&(f=this.options.localGeocoder(n),f||(f=[]));var I=[];return s.catch(function(_){o=_}.bind(this)).then(function(_){this._loadingEl.style.display="none";var S={};return _?S=_:S={type:"FeatureCollection",features:[]},S.config=A,this.fresh&&(this.fresh=!1),S.features=S.features?f.concat(S.features):f,this.options.externalGeocoder?(I=this.options.externalGeocoder(n,S.features,A)||[],I.then(function(U){return S.features=S.features?U.concat(S.features):U,S},function(){return S})):S}.bind(this)).then(function(_){if(o)throw o;this.options.filter&&_.features.length&&(_.features=_.features.filter(this.options.filter));var S=[];_.suggestions?S=_.suggestions:_.place?S=[_.place]:S=_.features,S.length?(this._clearEl.style.display="block",this._typeahead.update(S),(!this.options.showResultsWhileTyping||t)&&this.options.showResultMarkers&&(_.features.length>0||_.place)&&this._fitBoundsForMarkers(),this._eventEmitter.emit("results",_)):(this._clearEl.style.display="none",this._typeahead.selected=null,this._renderNoResults(),this._eventEmitter.emit("results",_))}.bind(this)).catch(function(_){this._loadingEl.style.display="none",f.length&&this.options.localGeocoder||I.length&&this.options.externalGeocoder?(this._clearEl.style.display="block",this._typeahead.update(f)):(this._clearEl.style.display="none",this._typeahead.selected=null,this._renderError()),this._eventEmitter.emit("results",{features:f}),this._eventEmitter.emit("error",{error:_})}.bind(this)),s},_clear:function(n){n&&n.preventDefault(),this._inputEl.value="",this._typeahead.selected=null,this._typeahead.clear(),this._onChange(),this._clearEl.style.display="none",this._removeMarker(),this._removeResultMarkers(),this.lastSelected=null,this._eventEmitter.emit("clear"),this.fresh=!0},clear:function(n){this._clear(n),this._inputEl.focus()},_clearOnBlur:function(n){var t=this;n.relatedTarget&&t._clear(n)},_onQueryResult:function(n){var t=n;if(!!t.features.length){var r=t.features[0];this._typeahead.selected=r,this._inputEl.value=r.place_name,this._onChange()}},_updateProximity:function(){if(!!this._map)if(this._map.getZoom()>9){var n=this._map.getCenter().wrap();this.setProximity({longitude:n.lng,latitude:n.lat})}else this.setProximity(null)},_collapse:function(){!this._inputEl.value&&this._inputEl!==document.activeElement&&this.container.classList.add("mapboxgl-ctrl-geocoder--collapsed","maplibregl-ctrl-geocoder--collapsed")},_unCollapse:function(){this.container.classList.remove("mapboxgl-ctrl-geocoder--collapsed","maplibregl-ctrl-geocoder--collapsed")},query:function(n){return this._geocode(n).then(this._onQueryResult),this},_renderError:function(){var n="
There was an error reaching the server
";this._renderMessage(n)},_renderNoResults:function(){var n="
No results found
";this._renderMessage(n)},_renderMessage:function(n){this._typeahead.update([]),this._typeahead.selected=null,this._typeahead.clear(),this._typeahead.renderError(n)},_getPlaceholderText:function(){if(this.options.placeholder)return this.options.placeholder;if(this.options.language){var n=this.options.language.split(",")[0],t=T3.language(n),r=E3.placeholder[t];if(r)return r}return"Search"},_fitBoundsForMarkers:function(){if(!(this._typeahead.data.length<1)){var n=this._typeahead.data.filter(function(A){return typeof A!="string"}).slice(0,this.options.limit);if(this._clearEl.style.display="none",this.options.flyTo&&this._maplibregl&&this._map){var t={padding:100},r=ha({},t,this.options.flyTo),o=new this._maplibregl.LngLatBounds;n.forEach(function(A){o.extend(A.geometry.coordinates)}),this._map.fitBounds(o.toArray(),r)}return n.length>0&&this._maplibregl&&this._handleResultMarkers(n),this}},setInput:function(n){return this._inputEl.value=n,this._typeahead.selected=null,this._typeahead.clear(),n.length>=this.options.minLength&&this.options.showResultsWhileTyping&&this._geocode(n),this},setProximity:function(n){return this.options.proximity=n,this},getProximity:function(){return this.options.proximity},setRenderFunction:function(n){return n&&typeof n=="function"&&(this._typeahead.render=n),this},getRenderFunction:function(){return this._typeahead.render},setLanguage:function(n){var t=navigator.language||navigator.userLanguage||navigator.browserLanguage;return this.options.language=n||this.options.language||t,this},getLanguage:function(){return this.options.language},getZoom:function(){return this.options.zoom},setZoom:function(n){return this.options.zoom=n,this},getFlyTo:function(){return this.options.flyTo},setFlyTo:function(n){return this.options.flyTo=n,this},getPlaceholder:function(){return this.options.placeholder},setPlaceholder:function(n){return this.placeholder=n||this._getPlaceholderText(),this._inputEl.placeholder=this.placeholder,this._inputEl.setAttribute("aria-label",this.placeholder),this},getBbox:function(){return this.options.bbox},setBbox:function(n){return this.options.bbox=n,this},getCountries:function(){return this.options.countries},setCountries:function(n){return this.options.countries=n,this},getTypes:function(){return this.options.types},setTypes:function(n){return this.options.types=n,this},getMinLength:function(){return this.options.minLength},setMinLength:function(n){return this.options.minLength=n,this._typeahead&&(this._typeahead.options.minLength=n),this},getLimit:function(){return this.options.limit},setLimit:function(n){return this.options.limit=n,this._typeahead&&(this._typeahead.options.limit=n),this},getFilter:function(){return this.options.filter},setFilter:function(n){return this.options.filter=n,this},setGeocoderApi:function(n){return this.geocoderApi=n,this},getGeocoderApi:function(){return this.geocoderApi},_handleMarker:function(n){if(!!this._map){this._removeMarker();var t={color:"#4668F2"},r=ha({},t,this.options.marker);this.mapMarker=new this._maplibregl.Marker(r);var o;if(this.options.popup){var A={},s=ha({},A,this.options.popup);o=new this._maplibregl.Popup(s).setHTML(this.options.popupRender(n))}return n.center?(this.mapMarker.setLngLat(n.center).addTo(this._map),this.options.popup&&this.mapMarker.setPopup(o)):n.geometry&&n.geometry.type&&n.geometry.type==="Point"&&n.geometry.coordinates&&(this.mapMarker.setLngLat(n.geometry.coordinates).addTo(this._map),this.options.popup&&this.mapMarker.setPopup(o)),this}},_removeMarker:function(){this.mapMarker&&(this.mapMarker.remove(),this.mapMarker=null)},_handleResultMarkers:function(n){if(!!this._map){this._removeResultMarkers();var t={color:"#4668F2"},r=ha({},t,this.options.showResultMarkers);return n.forEach(function(o){if(this.options.showResultMarkers&&this.options.showResultMarkers.element){var A=this.options.showResultMarkers.element.cloneNode(!0);r=ha(r,{element:A})}var s=new this._maplibregl.Marker(ha({},r,{element:A})),d;if(this.options.popup){var f={},I=ha({},f,this.options.popup);d=new this._maplibregl.Popup(I).setHTML(this.options.popupRender(o))}o.center?(s.setLngLat(o.center).addTo(this._map),this.options.popup&&s.setPopup(d)):o.geometry&&o.geometry.type&&o.geometry.type==="Point"&&o.geometry.coordinates&&(s.setLngLat(o.geometry.coordinates).addTo(this._map),this.options.popup&&s.setPopup(d)),this.resultMarkers.push(s)}.bind(this)),this}},_removeResultMarkers:function(){this.resultMarkers&&this.resultMarkers.length>0&&(this.resultMarkers.forEach(function(n){n.remove()}),this.resultMarkers=[])},on:function(n,t){return this._eventEmitter.on(n,t),this},off:function(n,t){return this._eventEmitter.removeListener(n,t),this}};av.exports=ov});var h2={};tC(h2,{default:()=>eU});function nA(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");FC(n,t);function r(){this.constructor=n}n.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}function wo(n,t,r,o){function A(s){return s instanceof r?s:new r(function(d){d(s)})}return new(r||(r=Promise))(function(s,d){function f(S){try{_(o.next(S))}catch(U){d(U)}}function I(S){try{_(o.throw(S))}catch(U){d(U)}}function _(S){S.done?s(S.value):A(S.value).then(f,I)}_((o=o.apply(n,t||[])).next())})}function Ys(n,t){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},o,A,s,d;return d={next:f(0),throw:f(1),return:f(2)},typeof Symbol=="function"&&(d[Symbol.iterator]=function(){return this}),d;function f(_){return function(S){return I([_,S])}}function I(_){if(o)throw new TypeError("Generator is already executing.");for(;r;)try{if(o=1,A&&(s=_[0]&2?A.return:_[0]?A.throw||((s=A.return)&&s.call(A),0):A.next)&&!(s=s.call(A,_[1])).done)return s;switch(A=0,s&&(_=[_[0]&2,s.value]),_[0]){case 0:case 1:s=_;break;case 4:return r.label++,{value:_[1],done:!1};case 5:r.label++,A=_[1],_=[0];continue;case 7:_=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(_[0]===6||_[0]===2)){r=0;continue}if(_[0]===3&&(!s||_[1]>s[0]&&_[1]=1&&(r-=1),r<1/6?(t-n)*r*6+n:r<1/2?t:r<2/3?(t-n)*6*(2/3-r)+n:n}function Uk(n){return!(n.type===20&&n.value==="none")&&(n.type!==18||!!Mw[n.name])}var FC,kC,_l,Ap,U3,lp,Gn,lv,Q3,Oh,cv,eg,Wh,R3,G3,Z3,Mc,jC,AC,P3,lw,H3,lC,M3,N3,V3,D3,K3,z3,O3,W3,uv,J3,X3,Y3,hv,j3,Jh,q3,gv,$3,cw,uw,t4,e4,dv,hw,pv,ic,LC,fv,EC,i4,ig,TC,Ed,Xh,r4,mv,UC,Yh,cC,Uu,ga,rg,ng,Qu,n4,Nu,s4,Td,Ud,QC,RC,GC,gg,ZC,Jd,Xd,uC,gw,o4,a4,dw,vo,Qd,PC,vl,HC,pw,Cv,A4,Iv,l4,c4,hC,yv,u4,h4,g4,d4,p4,f4,fg,bv,qd,vv,Ag,m4,C4,Rd,jh,I4,y4,b4,Gd,Zd,qh,v4,No,w4,B4,_4,x4,S4,F4,k4,L4,Pd,E4,wv,T4,U4,Bv,gC,Pc,Q4,R4,G4,dg,Z4,P4,H4,M4,N4,V4,zA,fw,mw,Cw,D4,K4,z4,Iw,yw,bw,O4,W4,Bo,J4,Ru,X4,Y4,j4,q4,Hd,$d,_v,$4,ec,Md,dC,tk,ek,ik,rk,nk,sk,ok,ak,Ak,lk,ck,uk,Nd,hk,gk,dk,pk,fk,mk,Ck,Ik,MC,vw,ww,mg,zu,jr,yk,NC,Bw,Ku,OA,bk,ac,Yn,_w,Us,qC,rc,sg,un,xw,Sw,Fw,kw,cp,Lw,Ew,Za,sc,oc,ds,nc,xv,Sv,Fv,vk,lg,Bl,wk,Bk,up,kv,_k,xk,rA,Lv,Sk,Fk,Vd,kk,Tw,Uw,Qw,Rw,Gw,Zw,Pw,Hw,Lk,Dd,Ek,Tk,$C,Mw,Qk,Rk,Gk,Zk,Pk,Du,Hk,Mk,hp,Nk,Vk,Dk,Kk,gp,zk,Ok,Wk,Jk,dp,Xk,Yk,jk,qk,pp,$k,tL,eL,iL,rL,nL,sL,oL,aL,AL,tp,lL,cL,Ev,uL,hL,VC,fp,gL,dL,pL,fL,mL,CL,mp,IL,yL,bL,vL,wL,BL,_L,xL,SL,FL,kL,LL,Tv,EL,TL,UL,cg,QL,RL,Nw,GL,ZL,PL,HL,ML,NL,VL,DL,rs,KL,zL,OL,WL,JL,Uv,XL,YL,jL,qL,$L,tE,Qv,Bi,eE,iE,DC,WA,rE,Rv,og,$h,nE,sE,oE,Nc,t0,fC,aE,Vw,AE,mC,lE,cE,uE,hE,gE,dE,pE,fE,Gv,mE,CE,IE,Zv,yE,tg,bE,CC,IC,Pv,Hv,vE,Mv,yC,bC,Nv,Vv,Dv,Kv,vC,wE,BE,_E,Hc,zv,xE,SE,FE,kE,LE,EE,TE,UE,QE,Ov,RE,KC,Wv,Ts,ug,GE,ZE,Jv,e0,PE,HE,ME,NE,VE,DE,KE,zE,Dw,Kw,zw,Ow,zC,OE,WE,JE,XE,ep,ip,YE,Xv,i0,Ww,Jw,Xw,jE,Yd,Yw,jw,qE,$E,qw,Vu,OC,jd,tT,eT,iT,rT,$w,r0,t2,Yv,WC,e2,jv,nT,rp,np,i2,qv,sT,$v,tw,oT,aT,Gu,r2,Rn,Zc,Hu,$l,tc,ag,wl,ew,iw,rw,wC,pg,n2,nw,hg,AT,lT,cT,uT,hT,BC,gT,dT,pT,fT,mT,JC,XC,sw,CT,IT,s2,yT,bT,vT,wT,BT,_C,_T,xC,xT,fi,Zu,Kd,Ga,ST,Kr,Cn,sp,FT,op,kT,zd,LT,ET,o2,TT,ow,UT,a2,A2,YC,l2,QT,aw,RT,GT,ZT,Od,Pa,c2,ap,PT,HT,SC,Pu,Wd,MT,Mu,NT,VT,Aw,DT,u2,KT,zT,OT,WT,JT,XT,YT,jT,qT,$T,tU,eU,iU,rU,g2=wd(()=>{FC=function(n,t){return FC=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var A in o)Object.prototype.hasOwnProperty.call(o,A)&&(r[A]=o[A])},FC(n,t)};kC=function(){return kC=Object.assign||function(n){for(var t,r=1,o=arguments.length;r=55296&&A<=56319&&r>10)+55296,d%1024+56320)),(A+1===r||o.length>16384)&&(s+=String.fromCharCode.apply(String,o),o.length=0)}return s},lv="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Q3=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(Oh=0;Oh"u"?[]:new Uint8Array(256);for(Wh=0;Wh>4,S[A++]=(d&15)<<4|f>>2,S[A++]=(f&3)<<6|I&63;return _},G3=function(n){for(var t=n.length,r=[],o=0;o>Mc,H3=1<>Mc,N3=lw+M3,V3=N3,D3=32,K3=V3+D3,z3=65536>>jC,O3=1<=0){if(t<55296||t>56319&&t<=65535)return r=this.index[t>>Mc],r=(r<>Mc)],r=(r<>jC),r=this.index[r],r+=t>>Mc&W3,r=this.index[r],r=(r<"u"?[]:new Uint8Array(256);for(Jh=0;Jhgv?(A.push(!0),f-=gv):A.push(!1),["normal","auto","loose"].indexOf(t)!==-1&&[8208,8211,12316,12448].indexOf(s)!==-1)return o.push(d),r.push(TC);if(f===t4||f===LC){if(d===0)return o.push(d),r.push(Nu);var I=r[d-1];return A4.indexOf(I)===-1?(o.push(o[d-1]),r.push(I)):(o.push(d),r.push(Nu))}if(o.push(d),f===s4)return r.push(t==="strict"?UC:gg);if(f===gw||f===n4)return r.push(Nu);if(f===o4)return s>=131072&&s<=196605||s>=196608&&s<=262141?r.push(gg):r.push(Nu);r.push(f)}),[o,r,A]},hC=function(n,t,r,o){var A=o[r];if(Array.isArray(n)?n.indexOf(A)!==-1:n===A)for(var s=r;s<=o.length;){s++;var d=o[s];if(d===t)return!0;if(d!==ic)break}if(A===ic)for(var s=r;s>0;){s--;var f=o[s];if(Array.isArray(n)?n.indexOf(f)!==-1:n===f)for(var I=r;I<=o.length;){I++;var d=o[I];if(d===t)return!0;if(d!==ic)break}if(f!==ic)break}return!1},yv=function(n,t){for(var r=n;r>=0;){var o=t[r];if(o===ic)r--;else return o}return 0},u4=function(n,t,r,o,A){if(r[o]===0)return vo;var s=o-1;if(Array.isArray(A)&&A[s]===!0)return vo;var d=s-1,f=s+1,I=t[s],_=d>=0?t[d]:0,S=t[f];if(I===cw&&S===uw)return vo;if(HC.indexOf(I)!==-1)return dw;if(HC.indexOf(S)!==-1||pw.indexOf(S)!==-1)return vo;if(yv(s,t)===hw)return Qd;if(PC.get(n[s])===LC||(I===Td||I===Ud)&&PC.get(n[f])===LC||I===dv||S===dv||I===pv||[ic,EC,ig].indexOf(I)===-1&&S===pv||[Ed,Xh,r4,Uu,Qu].indexOf(S)!==-1||yv(s,t)===Yh||hC(cC,Yh,s,t)||hC([Ed,Xh],UC,s,t)||hC(fv,fv,s,t))return vo;if(I===ic)return Qd;if(I===cC||S===cC)return vo;if(S===TC||I===TC)return Qd;if([EC,ig,UC].indexOf(S)!==-1||I===i4||_===GC&&l4.indexOf(I)!==-1||I===Qu&&S===GC||S===mv||vl.indexOf(S)!==-1&&I===ga||vl.indexOf(I)!==-1&&S===ga||I===ng&&[gg,Td,Ud].indexOf(S)!==-1||[gg,Td,Ud].indexOf(I)!==-1&&S===rg||vl.indexOf(I)!==-1&&Cv.indexOf(S)!==-1||Cv.indexOf(I)!==-1&&vl.indexOf(S)!==-1||[ng,rg].indexOf(I)!==-1&&(S===ga||[Yh,ig].indexOf(S)!==-1&&t[f+1]===ga)||[Yh,ig].indexOf(I)!==-1&&S===ga||I===ga&&[ga,Qu,Uu].indexOf(S)!==-1)return vo;if([ga,Qu,Uu,Ed,Xh].indexOf(S)!==-1)for(var U=s;U>=0;){var G=t[U];if(G===ga)return vo;if([Qu,Uu].indexOf(G)!==-1)U--;else break}if([ng,rg].indexOf(S)!==-1)for(var U=[Ed,Xh].indexOf(I)!==-1?d:s;U>=0;){var G=t[U];if(G===ga)return vo;if([Qu,Uu].indexOf(G)!==-1)U--;else break}if(ZC===I&&[ZC,Jd,QC,RC].indexOf(S)!==-1||[Jd,QC].indexOf(I)!==-1&&[Jd,Xd].indexOf(S)!==-1||[Xd,RC].indexOf(I)!==-1&&S===Xd||Iv.indexOf(I)!==-1&&[mv,rg].indexOf(S)!==-1||Iv.indexOf(S)!==-1&&I===ng||vl.indexOf(I)!==-1&&vl.indexOf(S)!==-1||I===Uu&&vl.indexOf(S)!==-1||vl.concat(ga).indexOf(I)!==-1&&S===Yh&&a4.indexOf(n[f])===-1||vl.concat(ga).indexOf(S)!==-1&&I===Xh)return vo;if(I===uC&&S===uC){for(var L=r[s],K=1;L>0&&(L--,t[L]===uC);)K++;if(K%2!==0)return vo}return I===Td&&S===Ud?vo:Qd},h4=function(n,t){t||(t={lineBreak:"normal",wordBreak:"normal"});var r=c4(n,t.lineBreak),o=r[0],A=r[1],s=r[2];(t.wordBreak==="break-all"||t.wordBreak==="break-word")&&(A=A.map(function(f){return[ga,Nu,gw].indexOf(f)!==-1?gg:f}));var d=t.wordBreak==="keep-all"?s.map(function(f,I){return f&&n[I]>=19968&&n[I]<=40959}):void 0;return[o,A,d]},g4=function(){function n(t,r,o,A){this.codePoints=t,this.required=r===dw,this.start=o,this.end=A}return n.prototype.slice=function(){return Gn.apply(void 0,this.codePoints.slice(this.start,this.end))},n}(),d4=function(n,t){var r=lp(n),o=h4(r,t),A=o[0],s=o[1],d=o[2],f=r.length,I=0,_=0;return{next:function(){if(_>=f)return{done:!0,value:null};for(var S=vo;_=fw&&n<=57},J4=function(n){return n>=55296&&n<=57343},Ru=function(n){return Bo(n)||n>=Iw&&n<=bw||n>=mw&&n<=D4},X4=function(n){return n>=mw&&n<=z4},Y4=function(n){return n>=Iw&&n<=W4},j4=function(n){return X4(n)||Y4(n)},q4=function(n){return n>=U4},Hd=function(n){return n===qd||n===m4||n===C4},$d=function(n){return j4(n)||q4(n)||n===v4},_v=function(n){return $d(n)||Bo(n)||n===No},$4=function(n){return n>=Z4&&n<=P4||n===H4||n>=M4&&n<=N4||n===V4},ec=function(n,t){return n!==Ag?!1:t!==qd},Md=function(n,t,r){return n===No?$d(t)||ec(t,r):$d(n)?!0:!!(n===Ag&&ec(n,t))},dC=function(n,t,r){return n===Pc||n===No?Bo(t)?!0:t===dg&&Bo(r):Bo(n===dg?t:n)},tk=function(n){var t=0,r=1;(n[t]===Pc||n[t]===No)&&(n[t]===No&&(r=-1),t++);for(var o=[];Bo(n[t]);)o.push(n[t++]);var A=o.length?parseInt(Gn.apply(void 0,o),10):0;n[t]===dg&&t++;for(var s=[];Bo(n[t]);)s.push(n[t++]);var d=s.length,f=d?parseInt(Gn.apply(void 0,s),10):0;(n[t]===yw||n[t]===Cw)&&t++;var I=1;(n[t]===Pc||n[t]===No)&&(n[t]===No&&(I=-1),t++);for(var _=[];Bo(n[t]);)_.push(n[t++]);var S=_.length?parseInt(Gn.apply(void 0,_),10):0;return r*(A+f*Math.pow(10,-d))*Math.pow(10,I*S)},ek={type:2},ik={type:3},rk={type:4},nk={type:13},sk={type:8},ok={type:21},ak={type:9},Ak={type:10},lk={type:11},ck={type:12},uk={type:14},Nd={type:23},hk={type:1},gk={type:25},dk={type:24},pk={type:26},fk={type:27},mk={type:28},Ck={type:29},Ik={type:31},MC={type:32},vw=function(){function n(){this._value=[]}return n.prototype.write=function(t){this._value=this._value.concat(lp(t))},n.prototype.read=function(){for(var t=[],r=this.consumeToken();r!==MC;)t.push(r),r=this.consumeToken();return t},n.prototype.consumeToken=function(){var t=this.consumeCodePoint();switch(t){case Rd:return this.consumeStringToken(Rd);case I4:var r=this.peekCodePoint(0),o=this.peekCodePoint(1),A=this.peekCodePoint(2);if(_v(r)||ec(o,A)){var s=Md(r,o,A)?f4:p4,d=this.consumeName();return{type:5,value:d,flags:s}}break;case y4:if(this.peekCodePoint(0)===jh)return this.consumeCodePoint(),nk;break;case Gd:return this.consumeStringToken(Gd);case Zd:return ek;case qh:return ik;case gC:if(this.peekCodePoint(0)===jh)return this.consumeCodePoint(),uk;break;case Pc:if(dC(t,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(t),this.consumeNumericToken();break;case Q4:return rk;case No:var f=t,I=this.peekCodePoint(0),_=this.peekCodePoint(1);if(dC(f,I,_))return this.reconsumeCodePoint(t),this.consumeNumericToken();if(Md(f,I,_))return this.reconsumeCodePoint(t),this.consumeIdentLikeToken();if(I===No&&_===_4)return this.consumeCodePoint(),this.consumeCodePoint(),dk;break;case dg:if(dC(t,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(t),this.consumeNumericToken();break;case vv:if(this.peekCodePoint(0)===gC)for(this.consumeCodePoint();;){var S=this.consumeCodePoint();if(S===gC&&(S=this.consumeCodePoint(),S===vv))return this.consumeToken();if(S===zA)return this.consumeToken()}break;case R4:return pk;case G4:return fk;case B4:if(this.peekCodePoint(0)===w4&&this.peekCodePoint(1)===No&&this.peekCodePoint(2)===No)return this.consumeCodePoint(),this.consumeCodePoint(),gk;break;case x4:var U=this.peekCodePoint(0),G=this.peekCodePoint(1),L=this.peekCodePoint(2);if(Md(U,G,L)){var d=this.consumeName();return{type:7,value:d}}break;case S4:return mk;case Ag:if(ec(t,this.peekCodePoint(0)))return this.reconsumeCodePoint(t),this.consumeIdentLikeToken();break;case F4:return Ck;case k4:if(this.peekCodePoint(0)===jh)return this.consumeCodePoint(),sk;break;case L4:return lk;case E4:return ck;case K4:case O4:var K=this.peekCodePoint(0),V=this.peekCodePoint(1);return K===Pc&&(Ru(V)||V===Pd)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(t),this.consumeIdentLikeToken();case wv:if(this.peekCodePoint(0)===jh)return this.consumeCodePoint(),ak;if(this.peekCodePoint(0)===wv)return this.consumeCodePoint(),ok;break;case T4:if(this.peekCodePoint(0)===jh)return this.consumeCodePoint(),Ak;break;case zA:return MC}return Hd(t)?(this.consumeWhiteSpace(),Ik):Bo(t)?(this.reconsumeCodePoint(t),this.consumeNumericToken()):$d(t)?(this.reconsumeCodePoint(t),this.consumeIdentLikeToken()):{type:6,value:Gn(t)}},n.prototype.consumeCodePoint=function(){var t=this._value.shift();return typeof t>"u"?-1:t},n.prototype.reconsumeCodePoint=function(t){this._value.unshift(t)},n.prototype.peekCodePoint=function(t){return t>=this._value.length?-1:this._value[t]},n.prototype.consumeUnicodeRangeToken=function(){for(var t=[],r=this.consumeCodePoint();Ru(r)&&t.length<6;)t.push(r),r=this.consumeCodePoint();for(var o=!1;r===Pd&&t.length<6;)t.push(r),r=this.consumeCodePoint(),o=!0;if(o){var A=parseInt(Gn.apply(void 0,t.map(function(I){return I===Pd?fw:I})),16),s=parseInt(Gn.apply(void 0,t.map(function(I){return I===Pd?bw:I})),16);return{type:30,start:A,end:s}}var d=parseInt(Gn.apply(void 0,t),16);if(this.peekCodePoint(0)===No&&Ru(this.peekCodePoint(1))){this.consumeCodePoint(),r=this.consumeCodePoint();for(var f=[];Ru(r)&&f.length<6;)f.push(r),r=this.consumeCodePoint();var s=parseInt(Gn.apply(void 0,f),16);return{type:30,start:d,end:s}}else return{type:30,start:d,end:d}},n.prototype.consumeIdentLikeToken=function(){var t=this.consumeName();return t.toLowerCase()==="url"&&this.peekCodePoint(0)===Zd?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===Zd?(this.consumeCodePoint(),{type:19,value:t}):{type:20,value:t}},n.prototype.consumeUrlToken=function(){var t=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===zA)return{type:22,value:""};var r=this.peekCodePoint(0);if(r===Gd||r===Rd){var o=this.consumeStringToken(this.consumeCodePoint());return o.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===zA||this.peekCodePoint(0)===qh)?(this.consumeCodePoint(),{type:22,value:o.value}):(this.consumeBadUrlRemnants(),Nd)}for(;;){var A=this.consumeCodePoint();if(A===zA||A===qh)return{type:22,value:Gn.apply(void 0,t)};if(Hd(A))return this.consumeWhiteSpace(),this.peekCodePoint(0)===zA||this.peekCodePoint(0)===qh?(this.consumeCodePoint(),{type:22,value:Gn.apply(void 0,t)}):(this.consumeBadUrlRemnants(),Nd);if(A===Rd||A===Gd||A===Zd||$4(A))return this.consumeBadUrlRemnants(),Nd;if(A===Ag)if(ec(A,this.peekCodePoint(0)))t.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),Nd;else t.push(A)}},n.prototype.consumeWhiteSpace=function(){for(;Hd(this.peekCodePoint(0));)this.consumeCodePoint()},n.prototype.consumeBadUrlRemnants=function(){for(;;){var t=this.consumeCodePoint();if(t===qh||t===zA)return;ec(t,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},n.prototype.consumeStringSlice=function(t){for(var r=5e4,o="";t>0;){var A=Math.min(r,t);o+=Gn.apply(void 0,this._value.splice(0,A)),t-=A}return this._value.shift(),o},n.prototype.consumeStringToken=function(t){var r="",o=0;do{var A=this._value[o];if(A===zA||A===void 0||A===t)return r+=this.consumeStringSlice(o),{type:0,value:r};if(A===qd)return this._value.splice(0,o),hk;if(A===Ag){var s=this._value[o+1];s!==zA&&s!==void 0&&(s===qd?(r+=this.consumeStringSlice(o),o=-1,this._value.shift()):ec(A,s)&&(r+=this.consumeStringSlice(o),r+=Gn(this.consumeEscapedCodePoint()),o=-1))}o++}while(!0)},n.prototype.consumeNumber=function(){var t=[],r=fg,o=this.peekCodePoint(0);for((o===Pc||o===No)&&t.push(this.consumeCodePoint());Bo(this.peekCodePoint(0));)t.push(this.consumeCodePoint());o=this.peekCodePoint(0);var A=this.peekCodePoint(1);if(o===dg&&Bo(A))for(t.push(this.consumeCodePoint(),this.consumeCodePoint()),r=bv;Bo(this.peekCodePoint(0));)t.push(this.consumeCodePoint());o=this.peekCodePoint(0),A=this.peekCodePoint(1);var s=this.peekCodePoint(2);if((o===yw||o===Cw)&&((A===Pc||A===No)&&Bo(s)||Bo(A)))for(t.push(this.consumeCodePoint(),this.consumeCodePoint()),r=bv;Bo(this.peekCodePoint(0));)t.push(this.consumeCodePoint());return[tk(t),r]},n.prototype.consumeNumericToken=function(){var t=this.consumeNumber(),r=t[0],o=t[1],A=this.peekCodePoint(0),s=this.peekCodePoint(1),d=this.peekCodePoint(2);if(Md(A,s,d)){var f=this.consumeName();return{type:15,number:r,flags:o,unit:f}}return A===b4?(this.consumeCodePoint(),{type:16,number:r,flags:o}):{type:17,number:r,flags:o}},n.prototype.consumeEscapedCodePoint=function(){var t=this.consumeCodePoint();if(Ru(t)){for(var r=Gn(t);Ru(this.peekCodePoint(0))&&r.length<6;)r+=Gn(this.consumeCodePoint());Hd(this.peekCodePoint(0))&&this.consumeCodePoint();var o=parseInt(r,16);return o===0||J4(o)||o>1114111?Bv:o}return t===zA?Bv:t},n.prototype.consumeName=function(){for(var t="";;){var r=this.consumeCodePoint();if(_v(r))t+=Gn(r);else if(ec(r,this.peekCodePoint(0)))t+=Gn(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(r),t}},n}(),ww=function(){function n(t){this._tokens=t}return n.create=function(t){var r=new vw;return r.write(t),new n(r.read())},n.parseValue=function(t){return n.create(t).parseComponentValue()},n.parseValues=function(t){return n.create(t).parseComponentValues()},n.prototype.parseComponentValue=function(){for(var t=this.consumeToken();t.type===31;)t=this.consumeToken();if(t.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(t);var r=this.consumeComponentValue();do t=this.consumeToken();while(t.type===31);if(t.type===32)return r;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},n.prototype.parseComponentValues=function(){for(var t=[];;){var r=this.consumeComponentValue();if(r.type===32)return t;t.push(r),t.push()}},n.prototype.consumeComponentValue=function(){var t=this.consumeToken();switch(t.type){case 11:case 28:case 2:return this.consumeSimpleBlock(t.type);case 19:return this.consumeFunction(t)}return t},n.prototype.consumeSimpleBlock=function(t){for(var r={type:t,values:[]},o=this.consumeToken();;){if(o.type===32||bk(o,t))return r;this.reconsumeToken(o),r.values.push(this.consumeComponentValue()),o=this.consumeToken()}},n.prototype.consumeFunction=function(t){for(var r={name:t.value,values:[],type:18};;){var o=this.consumeToken();if(o.type===32||o.type===3)return r;this.reconsumeToken(o),r.values.push(this.consumeComponentValue())}},n.prototype.consumeToken=function(){var t=this._tokens.shift();return typeof t>"u"?MC:t},n.prototype.reconsumeToken=function(t){this._tokens.unshift(t)},n}(),mg=function(n){return n.type===15},zu=function(n){return n.type===17},jr=function(n){return n.type===20},yk=function(n){return n.type===0},NC=function(n,t){return jr(n)&&n.value===t},Bw=function(n){return n.type!==31},Ku=function(n){return n.type!==31&&n.type!==4},OA=function(n){var t=[],r=[];return n.forEach(function(o){if(o.type===4){if(r.length===0)throw new Error("Error parsing function args, zero tokens for arg");t.push(r),r=[];return}o.type!==31&&r.push(o)}),r.length&&t.push(r),t},bk=function(n,t){return t===11&&n.type===12||t===28&&n.type===29?!0:t===2&&n.type===3},ac=function(n){return n.type===17||n.type===15},Yn=function(n){return n.type===16||ac(n)},_w=function(n){return n.length>1?[n[0],n[1]]:[n[0]]},Us={type:17,number:0,flags:fg},qC={type:16,number:50,flags:fg},rc={type:16,number:100,flags:fg},sg=function(n,t,r){var o=n[0],A=n[1];return[un(o,t),un(typeof A<"u"?A:o,r)]},un=function(n,t){if(n.type===16)return n.number/100*t;if(mg(n))switch(n.unit){case"rem":case"em":return 16*n.number;case"px":default:return n.number}return n.number},xw="deg",Sw="grad",Fw="rad",kw="turn",cp={name:"angle",parse:function(n,t){if(t.type===15)switch(t.unit){case xw:return Math.PI*t.number/180;case Sw:return Math.PI/200*t.number;case Fw:return t.number;case kw:return Math.PI*2*t.number}throw new Error("Unsupported angle type")}},Lw=function(n){return n.type===15&&(n.unit===xw||n.unit===Sw||n.unit===Fw||n.unit===kw)},Ew=function(n){var t=n.filter(jr).map(function(r){return r.value}).join(" ");switch(t){case"to bottom right":case"to right bottom":case"left top":case"top left":return[Us,Us];case"to top":case"bottom":return Za(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[Us,rc];case"to right":case"left":return Za(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[rc,rc];case"to bottom":case"top":return Za(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[rc,Us];case"to left":case"right":return Za(270)}return 0},Za=function(n){return Math.PI*n/180},sc={name:"color",parse:function(n,t){if(t.type===18){var r=vk[t.name];if(typeof r>"u")throw new Error('Attempting to parse an unsupported color function "'+t.name+'"');return r(n,t.values)}if(t.type===5){if(t.value.length===3){var o=t.value.substring(0,1),A=t.value.substring(1,2),s=t.value.substring(2,3);return nc(parseInt(o+o,16),parseInt(A+A,16),parseInt(s+s,16),1)}if(t.value.length===4){var o=t.value.substring(0,1),A=t.value.substring(1,2),s=t.value.substring(2,3),d=t.value.substring(3,4);return nc(parseInt(o+o,16),parseInt(A+A,16),parseInt(s+s,16),parseInt(d+d,16)/255)}if(t.value.length===6){var o=t.value.substring(0,2),A=t.value.substring(2,4),s=t.value.substring(4,6);return nc(parseInt(o,16),parseInt(A,16),parseInt(s,16),1)}if(t.value.length===8){var o=t.value.substring(0,2),A=t.value.substring(2,4),s=t.value.substring(4,6),d=t.value.substring(6,8);return nc(parseInt(o,16),parseInt(A,16),parseInt(s,16),parseInt(d,16)/255)}}if(t.type===20){var f=Bl[t.value.toUpperCase()];if(typeof f<"u")return f}return Bl.TRANSPARENT}},oc=function(n){return(255&n)===0},ds=function(n){var t=255&n,r=255&n>>8,o=255&n>>16,A=255&n>>24;return t<255?"rgba("+A+","+o+","+r+","+t/255+")":"rgb("+A+","+o+","+r+")"},nc=function(n,t,r,o){return(n<<24|t<<16|r<<8|Math.round(o*255)<<0)>>>0},xv=function(n,t){if(n.type===17)return n.number;if(n.type===16){var r=t===3?1:255;return t===3?n.number/100*r:Math.round(n.number/100*r)}return 0},Sv=function(n,t){var r=t.filter(Ku);if(r.length===3){var o=r.map(xv),A=o[0],s=o[1],d=o[2];return nc(A,s,d,1)}if(r.length===4){var f=r.map(xv),A=f[0],s=f[1],d=f[2],I=f[3];return nc(A,s,d,I)}return 0};Fv=function(n,t){var r=t.filter(Ku),o=r[0],A=r[1],s=r[2],d=r[3],f=(o.type===17?Za(o.number):cp.parse(n,o))/(Math.PI*2),I=Yn(A)?A.number/100:0,_=Yn(s)?s.number/100:0,S=typeof d<"u"&&Yn(d)?un(d,1):1;if(I===0)return nc(_*255,_*255,_*255,1);var U=_<=.5?_*(I+1):_+I-_*I,G=_*2-U,L=pC(G,U,f+1/3),K=pC(G,U,f),V=pC(G,U,f-1/3);return nc(L*255,K*255,V*255,S)},vk={hsl:Fv,hsla:Fv,rgb:Sv,rgba:Sv},lg=function(n,t){return sc.parse(n,ww.create(t).parseComponentValue())},Bl={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},wk={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(n,t){return t.map(function(r){if(jr(r))switch(r.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Bk={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},up=function(n,t){var r=sc.parse(n,t[0]),o=t[1];return o&&Yn(o)?{color:r,stop:o}:{color:r,stop:null}},kv=function(n,t){var r=n[0],o=n[n.length-1];r.stop===null&&(r.stop=Us),o.stop===null&&(o.stop=rc);for(var A=[],s=0,d=0;ds?A.push(I):A.push(s),s=I}else A.push(null)}for(var _=null,d=0;dd.optimumDistance)?{optimumCorner:f,optimumDistance:S}:d},{optimumDistance:A?1/0:-1/0,optimumCorner:null}).optimumCorner},Sk=function(n,t,r,o,A){var s=0,d=0;switch(n.size){case 0:n.shape===0?s=d=Math.min(Math.abs(t),Math.abs(t-o),Math.abs(r),Math.abs(r-A)):n.shape===1&&(s=Math.min(Math.abs(t),Math.abs(t-o)),d=Math.min(Math.abs(r),Math.abs(r-A)));break;case 2:if(n.shape===0)s=d=Math.min(rA(t,r),rA(t,r-A),rA(t-o,r),rA(t-o,r-A));else if(n.shape===1){var f=Math.min(Math.abs(r),Math.abs(r-A))/Math.min(Math.abs(t),Math.abs(t-o)),I=Lv(o,A,t,r,!0),_=I[0],S=I[1];s=rA(_-t,(S-r)/f),d=f*s}break;case 1:n.shape===0?s=d=Math.max(Math.abs(t),Math.abs(t-o),Math.abs(r),Math.abs(r-A)):n.shape===1&&(s=Math.max(Math.abs(t),Math.abs(t-o)),d=Math.max(Math.abs(r),Math.abs(r-A)));break;case 3:if(n.shape===0)s=d=Math.max(rA(t,r),rA(t,r-A),rA(t-o,r),rA(t-o,r-A));else if(n.shape===1){var f=Math.max(Math.abs(r),Math.abs(r-A))/Math.max(Math.abs(t),Math.abs(t-o)),U=Lv(o,A,t,r,!1),_=U[0],S=U[1];s=rA(_-t,(S-r)/f),d=f*s}break}return Array.isArray(n.size)&&(s=un(n.size[0],o),d=n.size.length===2?un(n.size[1],A):s),[s,d]},Fk=function(n,t){var r=Za(180),o=[];return OA(t).forEach(function(A,s){if(s===0){var d=A[0];if(d.type===20&&d.value==="to"){r=Ew(A);return}else if(Lw(d)){r=cp.parse(n,d);return}}var f=up(n,A);o.push(f)}),{angle:r,stops:o,type:1}},Vd=function(n,t){var r=Za(180),o=[];return OA(t).forEach(function(A,s){if(s===0){var d=A[0];if(d.type===20&&["top","left","right","bottom"].indexOf(d.value)!==-1){r=Ew(A);return}else if(Lw(d)){r=(cp.parse(n,d)+Za(270))%Za(360);return}}var f=up(n,A);o.push(f)}),{angle:r,stops:o,type:1}},kk=function(n,t){var r=Za(180),o=[],A=1,s=0,d=3,f=[];return OA(t).forEach(function(I,_){var S=I[0];if(_===0){if(jr(S)&&S.value==="linear"){A=1;return}else if(jr(S)&&S.value==="radial"){A=2;return}}if(S.type===18){if(S.name==="from"){var U=sc.parse(n,S.values[0]);o.push({stop:Us,color:U})}else if(S.name==="to"){var U=sc.parse(n,S.values[0]);o.push({stop:rc,color:U})}else if(S.name==="color-stop"){var G=S.values.filter(Ku);if(G.length===2){var U=sc.parse(n,G[1]),L=G[0];zu(L)&&o.push({stop:{type:16,number:L.number*100,flags:L.flags},color:U})}}}}),A===1?{angle:(r+Za(180))%Za(360),stops:o,type:A}:{size:d,shape:s,stops:o,position:f,type:A}},Tw="closest-side",Uw="farthest-side",Qw="closest-corner",Rw="farthest-corner",Gw="circle",Zw="ellipse",Pw="cover",Hw="contain",Lk=function(n,t){var r=0,o=3,A=[],s=[];return OA(t).forEach(function(d,f){var I=!0;if(f===0){var _=!1;I=d.reduce(function(U,G){if(_)if(jr(G))switch(G.value){case"center":return s.push(qC),U;case"top":case"left":return s.push(Us),U;case"right":case"bottom":return s.push(rc),U}else(Yn(G)||ac(G))&&s.push(G);else if(jr(G))switch(G.value){case Gw:return r=0,!1;case Zw:return r=1,!1;case"at":return _=!0,!1;case Tw:return o=0,!1;case Pw:case Uw:return o=1,!1;case Hw:case Qw:return o=2,!1;case Rw:return o=3,!1}else if(ac(G)||Yn(G))return Array.isArray(o)||(o=[]),o.push(G),!1;return U},I)}if(I){var S=up(n,d);A.push(S)}}),{size:o,shape:r,stops:A,position:s,type:2}},Dd=function(n,t){var r=0,o=3,A=[],s=[];return OA(t).forEach(function(d,f){var I=!0;if(f===0?I=d.reduce(function(S,U){if(jr(U))switch(U.value){case"center":return s.push(qC),!1;case"top":case"left":return s.push(Us),!1;case"right":case"bottom":return s.push(rc),!1}else if(Yn(U)||ac(U))return s.push(U),!1;return S},I):f===1&&(I=d.reduce(function(S,U){if(jr(U))switch(U.value){case Gw:return r=0,!1;case Zw:return r=1,!1;case Hw:case Tw:return o=0,!1;case Uw:return o=1,!1;case Qw:return o=2,!1;case Pw:case Rw:return o=3,!1}else if(ac(U)||Yn(U))return Array.isArray(o)||(o=[]),o.push(U),!1;return S},I)),I){var _=up(n,d);A.push(_)}}),{size:o,shape:r,stops:A,position:s,type:2}},Ek=function(n){return n.type===1},Tk=function(n){return n.type===2},$C={name:"image",parse:function(n,t){if(t.type===22){var r={url:t.value,type:0};return n.cache.addImage(t.value),r}if(t.type===18){var o=Mw[t.name];if(typeof o>"u")throw new Error('Attempting to parse an unsupported image function "'+t.name+'"');return o(n,t.values)}throw new Error("Unsupported image type "+t.type)}};Mw={"linear-gradient":Fk,"-moz-linear-gradient":Vd,"-ms-linear-gradient":Vd,"-o-linear-gradient":Vd,"-webkit-linear-gradient":Vd,"radial-gradient":Lk,"-moz-radial-gradient":Dd,"-ms-radial-gradient":Dd,"-o-radial-gradient":Dd,"-webkit-radial-gradient":Dd,"-webkit-gradient":kk},Qk={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(n,t){if(t.length===0)return[];var r=t[0];return r.type===20&&r.value==="none"?[]:t.filter(function(o){return Ku(o)&&Uk(o)}).map(function(o){return $C.parse(n,o)})}},Rk={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(n,t){return t.map(function(r){if(jr(r))switch(r.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Gk={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(n,t){return OA(t).map(function(r){return r.filter(Yn)}).map(_w)}},Zk={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(n,t){return OA(t).map(function(r){return r.filter(jr).map(function(o){return o.value}).join(" ")}).map(Pk)}},Pk=function(n){switch(n){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}};(function(n){n.AUTO="auto",n.CONTAIN="contain",n.COVER="cover"})(Du||(Du={}));Hk={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(n,t){return OA(t).map(function(r){return r.filter(Mk)})}},Mk=function(n){return jr(n)||Yn(n)},hp=function(n){return{name:"border-"+n+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Nk=hp("top"),Vk=hp("right"),Dk=hp("bottom"),Kk=hp("left"),gp=function(n){return{name:"border-radius-"+n,initialValue:"0 0",prefix:!1,type:1,parse:function(t,r){return _w(r.filter(Yn))}}},zk=gp("top-left"),Ok=gp("top-right"),Wk=gp("bottom-right"),Jk=gp("bottom-left"),dp=function(n){return{name:"border-"+n+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(t,r){switch(r){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},Xk=dp("top"),Yk=dp("right"),jk=dp("bottom"),qk=dp("left"),pp=function(n){return{name:"border-"+n+"-width",initialValue:"0",type:0,prefix:!1,parse:function(t,r){return mg(r)?r.number:0}}},$k=pp("top"),tL=pp("right"),eL=pp("bottom"),iL=pp("left"),rL={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},nL={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(n,t){switch(t){case"rtl":return 1;case"ltr":default:return 0}}},sL={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(n,t){return t.filter(jr).reduce(function(r,o){return r|oL(o.value)},0)}},oL=function(n){switch(n){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},aL={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(n,t){switch(t){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},AL={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(n,t){return t.type===20&&t.value==="normal"?0:t.type===17||t.type===15?t.number:0}};(function(n){n.NORMAL="normal",n.STRICT="strict"})(tp||(tp={}));lL={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(n,t){switch(t){case"strict":return tp.STRICT;case"normal":default:return tp.NORMAL}}},cL={name:"line-height",initialValue:"normal",prefix:!1,type:4},Ev=function(n,t){return jr(n)&&n.value==="normal"?1.2*t:n.type===17?t*n.number:Yn(n)?un(n,t):t},uL={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(n,t){return t.type===20&&t.value==="none"?null:$C.parse(n,t)}},hL={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(n,t){switch(t){case"inside":return 0;case"outside":default:return 1}}},VC={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(n,t){switch(t){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},fp=function(n){return{name:"margin-"+n,initialValue:"0",prefix:!1,type:4}},gL=fp("top"),dL=fp("right"),pL=fp("bottom"),fL=fp("left"),mL={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(n,t){return t.filter(jr).map(function(r){switch(r.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},CL={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(n,t){switch(t){case"break-word":return"break-word";case"normal":default:return"normal"}}},mp=function(n){return{name:"padding-"+n,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},IL=mp("top"),yL=mp("right"),bL=mp("bottom"),vL=mp("left"),wL={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(n,t){switch(t){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},BL={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(n,t){switch(t){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},_L={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(n,t){return t.length===1&&NC(t[0],"none")?[]:OA(t).map(function(r){for(var o={color:Bl.TRANSPARENT,offsetX:Us,offsetY:Us,blur:Us},A=0,s=0;s"u")throw new Error('Attempting to parse an unsupported transform function "'+t.name+'"');return r(t.values)}return null}},FL=function(n){var t=n.filter(function(r){return r.type===17}).map(function(r){return r.number});return t.length===6?t:null},kL=function(n){var t=n.filter(function(I){return I.type===17}).map(function(I){return I.number}),r=t[0],o=t[1];t[2],t[3];var A=t[4],s=t[5];t[6],t[7],t[8],t[9],t[10],t[11];var d=t[12],f=t[13];return t[14],t[15],t.length===16?[r,o,A,s,d,f]:null},LL={matrix:FL,matrix3d:kL},Tv={type:16,number:50,flags:fg},EL=[Tv,Tv],TL={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(n,t){var r=t.filter(Yn);return r.length!==2?EL:[r[0],r[1]]}},UL={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(n,t){switch(t){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}};(function(n){n.NORMAL="normal",n.BREAK_ALL="break-all",n.KEEP_ALL="keep-all"})(cg||(cg={}));QL={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(n,t){switch(t){case"break-all":return cg.BREAK_ALL;case"keep-all":return cg.KEEP_ALL;case"normal":default:return cg.NORMAL}}},RL={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(n,t){if(t.type===20)return{auto:!0,order:0};if(zu(t))return{auto:!1,order:t.number};throw new Error("Invalid z-index number parsed")}},Nw={name:"time",parse:function(n,t){if(t.type===15)switch(t.unit.toLowerCase()){case"s":return 1e3*t.number;case"ms":return t.number}throw new Error("Unsupported time type")}},GL={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(n,t){return zu(t)?t.number:1}},ZL={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},PL={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(n,t){return t.filter(jr).map(function(r){switch(r.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(r){return r!==0})}},HL={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(n,t){var r=[],o=[];return t.forEach(function(A){switch(A.type){case 20:case 0:r.push(A.value);break;case 17:r.push(A.number.toString());break;case 4:o.push(r.join(" ")),r.length=0;break}}),r.length&&o.push(r.join(" ")),o.map(function(A){return A.indexOf(" ")===-1?A:"'"+A+"'"})}},ML={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},NL={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(n,t){if(zu(t))return t.number;if(jr(t))switch(t.value){case"bold":return 700;case"normal":default:return 400}return 400}},VL={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(n,t){return t.filter(jr).map(function(r){return r.value})}},DL={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(n,t){switch(t){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},rs=function(n,t){return(n&t)!==0},KL={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(n,t){if(t.length===0)return[];var r=t[0];return r.type===20&&r.value==="none"?[]:t}},zL={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(n,t){if(t.length===0)return null;var r=t[0];if(r.type===20&&r.value==="none")return null;for(var o=[],A=t.filter(Bw),s=0;s1?1:0],this.overflowWrap=Bi(t,CL,r.overflowWrap),this.paddingTop=Bi(t,IL,r.paddingTop),this.paddingRight=Bi(t,yL,r.paddingRight),this.paddingBottom=Bi(t,bL,r.paddingBottom),this.paddingLeft=Bi(t,vL,r.paddingLeft),this.paintOrder=Bi(t,YL,r.paintOrder),this.position=Bi(t,BL,r.position),this.textAlign=Bi(t,wL,r.textAlign),this.textDecorationColor=Bi(t,ZL,(o=r.textDecorationColor)!==null&&o!==void 0?o:r.color),this.textDecorationLine=Bi(t,PL,(A=r.textDecorationLine)!==null&&A!==void 0?A:r.textDecoration),this.textShadow=Bi(t,_L,r.textShadow),this.textTransform=Bi(t,xL,r.textTransform),this.transform=Bi(t,SL,r.transform),this.transformOrigin=Bi(t,TL,r.transformOrigin),this.visibility=Bi(t,UL,r.visibility),this.webkitTextStrokeColor=Bi(t,jL,r.webkitTextStrokeColor),this.webkitTextStrokeWidth=Bi(t,qL,r.webkitTextStrokeWidth),this.wordBreak=Bi(t,QL,r.wordBreak),this.zIndex=Bi(t,RL,r.zIndex)}return n.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},n.prototype.isTransparent=function(){return oc(this.backgroundColor)},n.prototype.isTransformed=function(){return this.transform!==null},n.prototype.isPositioned=function(){return this.position!==0},n.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},n.prototype.isFloating=function(){return this.float!==0},n.prototype.isInlineLevel=function(){return rs(this.display,4)||rs(this.display,33554432)||rs(this.display,268435456)||rs(this.display,536870912)||rs(this.display,67108864)||rs(this.display,134217728)},n}(),tE=function(){function n(t,r){this.content=Bi(t,KL,r.content),this.quotes=Bi(t,JL,r.quotes)}return n}(),Qv=function(){function n(t,r){this.counterIncrement=Bi(t,zL,r.counterIncrement),this.counterReset=Bi(t,OL,r.counterReset)}return n}(),Bi=function(n,t,r){var o=new vw,A=r!==null&&typeof r<"u"?r.toString():t.initialValue;o.write(A);var s=new ww(o.read());switch(t.type){case 2:var d=s.parseComponentValue();return t.parse(n,jr(d)?d.value:t.initialValue);case 0:return t.parse(n,s.parseComponentValue());case 1:return t.parse(n,s.parseComponentValues());case 4:return s.parseComponentValue();case 3:switch(t.format){case"angle":return cp.parse(n,s.parseComponentValue());case"color":return sc.parse(n,s.parseComponentValue());case"image":return $C.parse(n,s.parseComponentValue());case"length":var f=s.parseComponentValue();return ac(f)?f:Us;case"length-percentage":var I=s.parseComponentValue();return Yn(I)?I:Us;case"time":return Nw.parse(n,s.parseComponentValue())}break}},eE="data-html2canvas-debug",iE=function(n){var t=n.getAttribute(eE);switch(t){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},DC=function(n,t){var r=iE(n);return r===1||t===r},WA=function(){function n(t,r){if(this.context=t,this.textNodes=[],this.elements=[],this.flags=0,DC(r,3))debugger;this.styles=new $L(t,window.getComputedStyle(r,null)),OC(r)&&(this.styles.animationDuration.some(function(o){return o>0})&&(r.style.animationDuration="0s"),this.styles.transform!==null&&(r.style.transform="none")),this.bounds=Ap(this.context,r),DC(r,4)&&(this.flags|=16)}return n}(),rE="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",Rv="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",og=typeof Uint8Array>"u"?[]:new Uint8Array(256);for($h=0;$h>4,S[A++]=(d&15)<<4|f>>2,S[A++]=(f&3)<<6|I&63;return _},sE=function(n){for(var t=n.length,r=[],o=0;o>Nc,AE=1<>Nc,cE=Vw+lE,uE=cE,hE=32,gE=uE+hE,dE=65536>>t0,pE=1<=0){if(t<55296||t>56319&&t<=65535)return r=this.index[t>>Nc],r=(r<>Nc)],r=(r<>t0),r=this.index[r],r+=t>>Nc&fE,r=this.index[r],r=(r<"u"?[]:new Uint8Array(256);for(tg=0;tg=55296&&A<=56319&&r>10)+55296,d%1024+56320)),(A+1===r||o.length>16384)&&(s+=String.fromCharCode.apply(String,o),o.length=0)}return s},_E=CE(rE),Hc="\xD7",zv="\xF7",xE=function(n){return _E.get(n)},SE=function(n,t,r){var o=r-2,A=t[o],s=t[r-1],d=t[r];if(s===CC&&d===IC)return Hc;if(s===CC||s===IC||s===Pv||d===CC||d===IC||d===Pv)return zv;if(s===Mv&&[Mv,yC,Nv,Vv].indexOf(d)!==-1||(s===Nv||s===yC)&&(d===yC||d===bC)||(s===Vv||s===bC)&&d===bC||d===Dv||d===Hv||d===vE||s===bE)return Hc;if(s===Dv&&d===Kv){for(;A===Hv;)A=t[--o];if(A===Kv)return Hc}if(s===vC&&d===vC){for(var f=0;A===vC;)f++,A=t[--o];if(f%2===0)return Hc}return zv},FE=function(n){var t=wE(n),r=t.length,o=0,A=0,s=t.map(xE);return{next:function(){if(o>=r)return{done:!0,value:null};for(var d=Hc;od.x||S.y>d.y;return d=S,_===0?!0:U});return n.body.removeChild(t),f},TE=function(){return typeof new Image().crossOrigin<"u"},UE=function(){return typeof new XMLHttpRequest().responseType=="string"},QE=function(n){var t=new Image,r=n.createElement("canvas"),o=r.getContext("2d");if(!o)return!1;t.src="data:image/svg+xml,";try{o.drawImage(t,0,0),r.toDataURL()}catch{return!1}return!0},Ov=function(n){return n[0]===0&&n[1]===255&&n[2]===0&&n[3]===255},RE=function(n){var t=n.createElement("canvas"),r=100;t.width=r,t.height=r;var o=t.getContext("2d");if(!o)return Promise.reject(!1);o.fillStyle="rgb(0, 255, 0)",o.fillRect(0,0,r,r);var A=new Image,s=t.toDataURL();A.src=s;var d=KC(r,r,0,0,A);return o.fillStyle="red",o.fillRect(0,0,r,r),Wv(d).then(function(f){o.drawImage(f,0,0);var I=o.getImageData(0,0,r,r).data;o.fillStyle="red",o.fillRect(0,0,r,r);var _=n.createElement("div");return _.style.backgroundImage="url("+s+")",_.style.height=r+"px",Ov(I)?Wv(KC(r,r,0,0,_)):Promise.reject(!1)}).then(function(f){return o.drawImage(f,0,0),Ov(o.getImageData(0,0,r,r).data)}).catch(function(){return!1})},KC=function(n,t,r,o,A){var s="http://www.w3.org/2000/svg",d=document.createElementNS(s,"svg"),f=document.createElementNS(s,"foreignObject");return d.setAttributeNS(null,"width",n.toString()),d.setAttributeNS(null,"height",t.toString()),f.setAttributeNS(null,"width","100%"),f.setAttributeNS(null,"height","100%"),f.setAttributeNS(null,"x",r.toString()),f.setAttributeNS(null,"y",o.toString()),f.setAttributeNS(null,"externalResourcesRequired","true"),d.appendChild(f),f.appendChild(A),d},Wv=function(n){return new Promise(function(t,r){var o=new Image;o.onload=function(){return t(o)},o.onerror=r,o.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(n))})},Ts={get SUPPORT_RANGE_BOUNDS(){var n=LE(document);return Object.defineProperty(Ts,"SUPPORT_RANGE_BOUNDS",{value:n}),n},get SUPPORT_WORD_BREAKING(){var n=Ts.SUPPORT_RANGE_BOUNDS&&EE(document);return Object.defineProperty(Ts,"SUPPORT_WORD_BREAKING",{value:n}),n},get SUPPORT_SVG_DRAWING(){var n=QE(document);return Object.defineProperty(Ts,"SUPPORT_SVG_DRAWING",{value:n}),n},get SUPPORT_FOREIGNOBJECT_DRAWING(){var n=typeof Array.from=="function"&&typeof window.fetch=="function"?RE(document):Promise.resolve(!1);return Object.defineProperty(Ts,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:n}),n},get SUPPORT_CORS_IMAGES(){var n=TE();return Object.defineProperty(Ts,"SUPPORT_CORS_IMAGES",{value:n}),n},get SUPPORT_RESPONSE_TYPE(){var n=UE();return Object.defineProperty(Ts,"SUPPORT_RESPONSE_TYPE",{value:n}),n},get SUPPORT_CORS_XHR(){var n="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Ts,"SUPPORT_CORS_XHR",{value:n}),n},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var n=!!(typeof Intl<"u"&&Intl.Segmenter);return Object.defineProperty(Ts,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:n}),n}},ug=function(){function n(t,r){this.text=t,this.bounds=r}return n}(),GE=function(n,t,r,o){var A=HE(t,r),s=[],d=0;return A.forEach(function(f){if(r.textDecorationLine.length||f.trim().length>0)if(Ts.SUPPORT_RANGE_BOUNDS){var I=Jv(o,d,f.length).getClientRects();if(I.length>1){var _=e0(f),S=0;_.forEach(function(G){s.push(new ug(G,_l.fromDOMRectList(n,Jv(o,S+d,G.length).getClientRects()))),S+=G.length})}else s.push(new ug(f,_l.fromDOMRectList(n,I)))}else{var U=o.splitText(f.length);s.push(new ug(f,ZE(n,o))),o=U}else Ts.SUPPORT_RANGE_BOUNDS||(o=o.splitText(f.length));d+=f.length}),s},ZE=function(n,t){var r=t.ownerDocument;if(r){var o=r.createElement("html2canvaswrapper");o.appendChild(t.cloneNode(!0));var A=t.parentNode;if(A){A.replaceChild(o,t);var s=Ap(n,o);return o.firstChild&&A.replaceChild(o.firstChild,o),s}}return _l.EMPTY},Jv=function(n,t,r){var o=n.ownerDocument;if(!o)throw new Error("Node has no owner document");var A=o.createRange();return A.setStart(n,t),A.setEnd(n,t+r),A},e0=function(n){if(Ts.SUPPORT_NATIVE_TEXT_SEGMENTATION){var t=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(t.segment(n)).map(function(r){return r.segment})}return kE(n)},PE=function(n,t){if(Ts.SUPPORT_NATIVE_TEXT_SEGMENTATION){var r=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(r.segment(n)).map(function(o){return o.segment})}return NE(n,t)},HE=function(n,t){return t.letterSpacing!==0?e0(n):PE(n,t)},ME=[32,160,4961,65792,65793,4153,4241],NE=function(n,t){for(var r=d4(n,{lineBreak:t.lineBreak,wordBreak:t.overflowWrap==="break-word"?"break-word":t.wordBreak}),o=[],A,s=function(){if(A.value){var d=A.value.slice(),f=lp(d),I="";f.forEach(function(_){ME.indexOf(_)===-1?I+=Gn(_):(I.length&&o.push(I),o.push(Gn(_)),I="")}),I.length&&o.push(I)}};!(A=r.next()).done;)s();return o},VE=function(){function n(t,r,o){this.text=DE(r.data,o.textTransform),this.textBounds=GE(t,this.text,o,r)}return n}(),DE=function(n,t){switch(t){case 1:return n.toLowerCase();case 3:return n.replace(KE,zE);case 2:return n.toUpperCase();default:return n}},KE=/(^|\s|:|-|\(|\))([a-z])/g,zE=function(n,t,r){return n.length>0?t+r.toUpperCase():n},Dw=function(n){nA(t,n);function t(r,o){var A=n.call(this,r,o)||this;return A.src=o.currentSrc||o.src,A.intrinsicWidth=o.naturalWidth,A.intrinsicHeight=o.naturalHeight,A.context.cache.addImage(A.src),A}return t}(WA),Kw=function(n){nA(t,n);function t(r,o){var A=n.call(this,r,o)||this;return A.canvas=o,A.intrinsicWidth=o.width,A.intrinsicHeight=o.height,A}return t}(WA),zw=function(n){nA(t,n);function t(r,o){var A=n.call(this,r,o)||this,s=new XMLSerializer,d=Ap(r,o);return o.setAttribute("width",d.width+"px"),o.setAttribute("height",d.height+"px"),A.svg="data:image/svg+xml,"+encodeURIComponent(s.serializeToString(o)),A.intrinsicWidth=o.width.baseVal.value,A.intrinsicHeight=o.height.baseVal.value,A.context.cache.addImage(A.svg),A}return t}(WA),Ow=function(n){nA(t,n);function t(r,o){var A=n.call(this,r,o)||this;return A.value=o.value,A}return t}(WA),zC=function(n){nA(t,n);function t(r,o){var A=n.call(this,r,o)||this;return A.start=o.start,A.reversed=typeof o.reversed=="boolean"&&o.reversed===!0,A}return t}(WA),OE=[{type:15,flags:0,unit:"px",number:3}],WE=[{type:16,flags:0,number:50}],JE=function(n){return n.width>n.height?new _l(n.left+(n.width-n.height)/2,n.top,n.height,n.height):n.width0)r.textNodes.push(new VE(n,A,r.styles));else if(Vu(A))if(i2(A)&&A.assignedNodes)A.assignedNodes().forEach(function(f){return Yd(n,f,r,o)});else{var d=Yw(n,A);d.styles.isVisible()&&(qE(A,d,o)?d.flags|=4:$E(d.styles)&&(d.flags|=2),jE.indexOf(A.tagName)!==-1&&(d.flags|=8),r.elements.push(d),A.slot,A.shadowRoot?Yd(n,A.shadowRoot,d,o):!rp(A)&&!$w(A)&&!np(A)&&Yd(n,A,d,o))}},Yw=function(n,t){return WC(t)?new Dw(n,t):t2(t)?new Kw(n,t):$w(t)?new zw(n,t):tT(t)?new Ow(n,t):eT(t)?new zC(n,t):iT(t)?new i0(n,t):np(t)?new Ww(n,t):rp(t)?new Jw(n,t):e2(t)?new Xw(n,t):new WA(n,t)},jw=function(n,t){var r=Yw(n,t);return r.flags|=4,Yd(n,t,r,r),r},qE=function(n,t,r){return t.styles.isPositionedWithZIndex()||t.styles.opacity<1||t.styles.isTransformed()||r0(n)&&r.styles.isTransparent()},$E=function(n){return n.isPositioned()||n.isFloating()},qw=function(n){return n.nodeType===Node.TEXT_NODE},Vu=function(n){return n.nodeType===Node.ELEMENT_NODE},OC=function(n){return Vu(n)&&typeof n.style<"u"&&!jd(n)},jd=function(n){return typeof n.className=="object"},tT=function(n){return n.tagName==="LI"},eT=function(n){return n.tagName==="OL"},iT=function(n){return n.tagName==="INPUT"},rT=function(n){return n.tagName==="HTML"},$w=function(n){return n.tagName==="svg"},r0=function(n){return n.tagName==="BODY"},t2=function(n){return n.tagName==="CANVAS"},Yv=function(n){return n.tagName==="VIDEO"},WC=function(n){return n.tagName==="IMG"},e2=function(n){return n.tagName==="IFRAME"},jv=function(n){return n.tagName==="STYLE"},nT=function(n){return n.tagName==="SCRIPT"},rp=function(n){return n.tagName==="TEXTAREA"},np=function(n){return n.tagName==="SELECT"},i2=function(n){return n.tagName==="SLOT"},qv=function(n){return n.tagName.indexOf("-")>0},sT=function(){function n(){this.counters={}}return n.prototype.getCounterValue=function(t){var r=this.counters[t];return r&&r.length?r[r.length-1]:1},n.prototype.getCounterValues=function(t){var r=this.counters[t];return r||[]},n.prototype.pop=function(t){var r=this;t.forEach(function(o){return r.counters[o].pop()})},n.prototype.parse=function(t){var r=this,o=t.counterIncrement,A=t.counterReset,s=!0;o!==null&&o.forEach(function(f){var I=r.counters[f.counter];I&&f.increment!==0&&(s=!1,I.length||I.push(1),I[Math.max(0,I.length-1)]+=f.increment)});var d=[];return s&&A.forEach(function(f){var I=r.counters[f.counter];d.push(f.counter),I||(I=r.counters[f.counter]=[]),I.push(f.reset)}),d},n}(),$v={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},tw={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u0554","\u0553","\u0552","\u0551","\u0550","\u054F","\u054E","\u054D","\u054C","\u054B","\u054A","\u0549","\u0548","\u0547","\u0546","\u0545","\u0544","\u0543","\u0542","\u0541","\u0540","\u053F","\u053E","\u053D","\u053C","\u053B","\u053A","\u0539","\u0538","\u0537","\u0536","\u0535","\u0534","\u0533","\u0532","\u0531"]},oT={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["\u05D9\u05F3","\u05D8\u05F3","\u05D7\u05F3","\u05D6\u05F3","\u05D5\u05F3","\u05D4\u05F3","\u05D3\u05F3","\u05D2\u05F3","\u05D1\u05F3","\u05D0\u05F3","\u05EA","\u05E9","\u05E8","\u05E7","\u05E6","\u05E4","\u05E2","\u05E1","\u05E0","\u05DE","\u05DC","\u05DB","\u05D9\u05D8","\u05D9\u05D7","\u05D9\u05D6","\u05D8\u05D6","\u05D8\u05D5","\u05D9","\u05D8","\u05D7","\u05D6","\u05D5","\u05D4","\u05D3","\u05D2","\u05D1","\u05D0"]},aT={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u10F5","\u10F0","\u10EF","\u10F4","\u10EE","\u10ED","\u10EC","\u10EB","\u10EA","\u10E9","\u10E8","\u10E7","\u10E6","\u10E5","\u10E4","\u10F3","\u10E2","\u10E1","\u10E0","\u10DF","\u10DE","\u10DD","\u10F2","\u10DC","\u10DB","\u10DA","\u10D9","\u10D8","\u10D7","\u10F1","\u10D6","\u10D5","\u10D4","\u10D3","\u10D2","\u10D1","\u10D0"]},Gu=function(n,t,r,o,A,s){return nr?pg(n,A,s.length>0):o.integers.reduce(function(d,f,I){for(;n>=f;)n-=f,d+=o.values[I];return d},"")+s},r2=function(n,t,r,o){var A="";do r||n--,A=o(n)+A,n/=t;while(n*t>=t);return A},Rn=function(n,t,r,o,A){var s=r-t+1;return(n<0?"-":"")+(r2(Math.abs(n),s,o,function(d){return Gn(Math.floor(d%s)+t)})+A)},Zc=function(n,t,r){r===void 0&&(r=". ");var o=t.length;return r2(Math.abs(n),o,!1,function(A){return t[Math.floor(A%o)]})+r},Hu=1,$l=2,tc=4,ag=8,wl=function(n,t,r,o,A,s){if(n<-9999||n>9999)return pg(n,4,A.length>0);var d=Math.abs(n),f=A;if(d===0)return t[0]+f;for(var I=0;d>0&&I<=4;I++){var _=d%10;_===0&&rs(s,Hu)&&f!==""?f=t[_]+f:_>1||_===1&&I===0||_===1&&I===1&&rs(s,$l)||_===1&&I===1&&rs(s,tc)&&n>100||_===1&&I>1&&rs(s,ag)?f=t[_]+(I>0?r[I-1]:"")+f:_===1&&I>0&&(f=r[I-1]+f),d=Math.floor(d/10)}return(n<0?o:"")+f},ew="\u5341\u767E\u5343\u842C",iw="\u62FE\u4F70\u4EDF\u842C",rw="\u30DE\u30A4\u30CA\u30B9",wC="\uB9C8\uC774\uB108\uC2A4",pg=function(n,t,r){var o=r?". ":"",A=r?"\u3001":"",s=r?", ":"",d=r?" ":"";switch(t){case 0:return"\u2022"+d;case 1:return"\u25E6"+d;case 2:return"\u25FE"+d;case 5:var f=Rn(n,48,57,!0,o);return f.length<4?"0"+f:f;case 4:return Zc(n,"\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",A);case 6:return Gu(n,1,3999,$v,3,o).toLowerCase();case 7:return Gu(n,1,3999,$v,3,o);case 8:return Rn(n,945,969,!1,o);case 9:return Rn(n,97,122,!1,o);case 10:return Rn(n,65,90,!1,o);case 11:return Rn(n,1632,1641,!0,o);case 12:case 49:return Gu(n,1,9999,tw,3,o);case 35:return Gu(n,1,9999,tw,3,o).toLowerCase();case 13:return Rn(n,2534,2543,!0,o);case 14:case 30:return Rn(n,6112,6121,!0,o);case 15:return Zc(n,"\u5B50\u4E11\u5BC5\u536F\u8FB0\u5DF3\u5348\u672A\u7533\u9149\u620C\u4EA5",A);case 16:return Zc(n,"\u7532\u4E59\u4E19\u4E01\u620A\u5DF1\u5E9A\u8F9B\u58EC\u7678",A);case 17:case 48:return wl(n,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",ew,"\u8CA0",A,$l|tc|ag);case 47:return wl(n,"\u96F6\u58F9\u8CB3\u53C3\u8086\u4F0D\u9678\u67D2\u634C\u7396",iw,"\u8CA0",A,Hu|$l|tc|ag);case 42:return wl(n,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",ew,"\u8D1F",A,$l|tc|ag);case 41:return wl(n,"\u96F6\u58F9\u8D30\u53C1\u8086\u4F0D\u9646\u67D2\u634C\u7396",iw,"\u8D1F",A,Hu|$l|tc|ag);case 26:return wl(n,"\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u5341\u767E\u5343\u4E07",rw,A,0);case 25:return wl(n,"\u96F6\u58F1\u5F10\u53C2\u56DB\u4F0D\u516D\u4E03\u516B\u4E5D","\u62FE\u767E\u5343\u4E07",rw,A,Hu|$l|tc);case 31:return wl(n,"\uC601\uC77C\uC774\uC0BC\uC0AC\uC624\uC721\uCE60\uD314\uAD6C","\uC2ED\uBC31\uCC9C\uB9CC",wC,s,Hu|$l|tc);case 33:return wl(n,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u5341\u767E\u5343\u842C",wC,s,0);case 32:return wl(n,"\u96F6\u58F9\u8CB3\u53C3\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u62FE\u767E\u5343",wC,s,Hu|$l|tc);case 18:return Rn(n,2406,2415,!0,o);case 20:return Gu(n,1,19999,aT,3,o);case 21:return Rn(n,2790,2799,!0,o);case 22:return Rn(n,2662,2671,!0,o);case 22:return Gu(n,1,10999,oT,3,o);case 23:return Zc(n,"\u3042\u3044\u3046\u3048\u304A\u304B\u304D\u304F\u3051\u3053\u3055\u3057\u3059\u305B\u305D\u305F\u3061\u3064\u3066\u3068\u306A\u306B\u306C\u306D\u306E\u306F\u3072\u3075\u3078\u307B\u307E\u307F\u3080\u3081\u3082\u3084\u3086\u3088\u3089\u308A\u308B\u308C\u308D\u308F\u3090\u3091\u3092\u3093");case 24:return Zc(n,"\u3044\u308D\u306F\u306B\u307B\u3078\u3068\u3061\u308A\u306C\u308B\u3092\u308F\u304B\u3088\u305F\u308C\u305D\u3064\u306D\u306A\u3089\u3080\u3046\u3090\u306E\u304A\u304F\u3084\u307E\u3051\u3075\u3053\u3048\u3066\u3042\u3055\u304D\u3086\u3081\u307F\u3057\u3091\u3072\u3082\u305B\u3059");case 27:return Rn(n,3302,3311,!0,o);case 28:return Zc(n,"\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30F3",A);case 29:return Zc(n,"\u30A4\u30ED\u30CF\u30CB\u30DB\u30D8\u30C8\u30C1\u30EA\u30CC\u30EB\u30F2\u30EF\u30AB\u30E8\u30BF\u30EC\u30BD\u30C4\u30CD\u30CA\u30E9\u30E0\u30A6\u30F0\u30CE\u30AA\u30AF\u30E4\u30DE\u30B1\u30D5\u30B3\u30A8\u30C6\u30A2\u30B5\u30AD\u30E6\u30E1\u30DF\u30B7\u30F1\u30D2\u30E2\u30BB\u30B9",A);case 34:return Rn(n,3792,3801,!0,o);case 37:return Rn(n,6160,6169,!0,o);case 38:return Rn(n,4160,4169,!0,o);case 39:return Rn(n,2918,2927,!0,o);case 40:return Rn(n,1776,1785,!0,o);case 43:return Rn(n,3046,3055,!0,o);case 44:return Rn(n,3174,3183,!0,o);case 45:return Rn(n,3664,3673,!0,o);case 46:return Rn(n,3872,3881,!0,o);case 3:default:return Rn(n,48,57,!0,o)}},n2="data-html2canvas-ignore",nw=function(){function n(t,r,o){if(this.context=t,this.options=o,this.scrolledElements=[],this.referenceElement=r,this.counters=new sT,this.quoteDepth=0,!r.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(r.ownerDocument.documentElement,!1)}return n.prototype.toIFrame=function(t,r){var o=this,A=AT(t,r);if(!A.contentWindow)return Promise.reject("Unable to find iframe window");var s=t.defaultView.pageXOffset,d=t.defaultView.pageYOffset,f=A.contentWindow,I=f.document,_=uT(A).then(function(){return wo(o,void 0,void 0,function(){var S,U;return Ys(this,function(G){switch(G.label){case 0:return this.scrolledElements.forEach(pT),f&&(f.scrollTo(r.left,r.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(f.scrollY!==r.top||f.scrollX!==r.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(f.scrollX-r.left,f.scrollY-r.top,0,0))),S=this.options.onclone,U=this.clonedReferenceElement,typeof U>"u"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:I.fonts&&I.fonts.ready?[4,I.fonts.ready]:[3,2];case 1:G.sent(),G.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,cT(I)]:[3,4];case 3:G.sent(),G.label=4;case 4:return typeof S=="function"?[2,Promise.resolve().then(function(){return S(I,U)}).then(function(){return A})]:[2,A]}})})});return I.open(),I.write(gT(document.doctype)+""),dT(this.referenceElement.ownerDocument,s,d),I.replaceChild(I.adoptNode(this.documentElement),I.documentElement),I.close(),_},n.prototype.createElementClone=function(t){if(DC(t,2))debugger;if(t2(t))return this.createCanvasClone(t);if(Yv(t))return this.createVideoClone(t);if(jv(t))return this.createStyleClone(t);var r=t.cloneNode(!1);return WC(r)&&(WC(t)&&t.currentSrc&&t.currentSrc!==t.src&&(r.src=t.currentSrc,r.srcset=""),r.loading==="lazy"&&(r.loading="eager")),qv(r)?this.createCustomElementClone(r):r},n.prototype.createCustomElementClone=function(t){var r=document.createElement("html2canvascustomelement");return BC(t.style,r),r},n.prototype.createStyleClone=function(t){try{var r=t.sheet;if(r&&r.cssRules){var o=[].slice.call(r.cssRules,0).reduce(function(s,d){return d&&typeof d.cssText=="string"?s+d.cssText:s},""),A=t.cloneNode(!1);return A.textContent=o,A}}catch(s){if(this.context.logger.error("Unable to access cssRules property",s),s.name!=="SecurityError")throw s}return t.cloneNode(!1)},n.prototype.createCanvasClone=function(t){var r;if(this.options.inlineImages&&t.ownerDocument){var o=t.ownerDocument.createElement("img");try{return o.src=t.toDataURL(),o}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",t)}}var A=t.cloneNode(!1);try{A.width=t.width,A.height=t.height;var s=t.getContext("2d"),d=A.getContext("2d");if(d)if(!this.options.allowTaint&&s)d.putImageData(s.getImageData(0,0,t.width,t.height),0,0);else{var f=(r=t.getContext("webgl2"))!==null&&r!==void 0?r:t.getContext("webgl");if(f){var I=f.getContextAttributes();I?.preserveDrawingBuffer===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",t)}d.drawImage(t,0,0)}return A}catch{this.context.logger.info("Unable to clone canvas as it is tainted",t)}return A},n.prototype.createVideoClone=function(t){var r=t.ownerDocument.createElement("canvas");r.width=t.offsetWidth,r.height=t.offsetHeight;var o=r.getContext("2d");try{return o&&(o.drawImage(t,0,0,r.width,r.height),this.options.allowTaint||o.getImageData(0,0,r.width,r.height)),r}catch{this.context.logger.info("Unable to clone video as it is tainted",t)}var A=t.ownerDocument.createElement("canvas");return A.width=t.offsetWidth,A.height=t.offsetHeight,A},n.prototype.appendChildNode=function(t,r,o){(!Vu(r)||!nT(r)&&!r.hasAttribute(n2)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(r)))&&(!this.options.copyStyles||!Vu(r)||!jv(r))&&t.appendChild(this.cloneNode(r,o))},n.prototype.cloneChildNodes=function(t,r,o){for(var A=this,s=t.shadowRoot?t.shadowRoot.firstChild:t.firstChild;s;s=s.nextSibling)if(Vu(s)&&i2(s)&&typeof s.assignedNodes=="function"){var d=s.assignedNodes();d.length&&d.forEach(function(f){return A.appendChildNode(r,f,o)})}else this.appendChildNode(r,s,o)},n.prototype.cloneNode=function(t,r){if(qw(t))return document.createTextNode(t.data);if(!t.ownerDocument)return t.cloneNode(!1);var o=t.ownerDocument.defaultView;if(o&&Vu(t)&&(OC(t)||jd(t))){var A=this.createElementClone(t);A.style.transitionProperty="none";var s=o.getComputedStyle(t),d=o.getComputedStyle(t,":before"),f=o.getComputedStyle(t,":after");this.referenceElement===t&&OC(A)&&(this.clonedReferenceElement=A),r0(A)&&CT(A);var I=this.counters.parse(new Qv(this.context,s)),_=this.resolvePseudoContent(t,A,d,hg.BEFORE);qv(t)&&(r=!0),Yv(t)||this.cloneChildNodes(t,A,r),_&&A.insertBefore(_,A.firstChild);var S=this.resolvePseudoContent(t,A,f,hg.AFTER);return S&&A.appendChild(S),this.counters.pop(I),(s&&(this.options.copyStyles||jd(t))&&!e2(t)||r)&&BC(s,A),(t.scrollTop!==0||t.scrollLeft!==0)&&this.scrolledElements.push([A,t.scrollLeft,t.scrollTop]),(rp(t)||np(t))&&(rp(A)||np(A))&&(A.value=t.value),A}return t.cloneNode(!1)},n.prototype.resolvePseudoContent=function(t,r,o,A){var s=this;if(o){var d=o.content,f=r.ownerDocument;if(!(!f||!d||d==="none"||d==="-moz-alt-content"||o.display==="none")){this.counters.parse(new Qv(this.context,o));var I=new tE(this.context,o),_=f.createElement("html2canvaspseudoelement");BC(o,_),I.content.forEach(function(U){if(U.type===0)_.appendChild(f.createTextNode(U.value));else if(U.type===22){var G=f.createElement("img");G.src=U.value,G.style.opacity="1",_.appendChild(G)}else if(U.type===18){if(U.name==="attr"){var L=U.values.filter(jr);L.length&&_.appendChild(f.createTextNode(t.getAttribute(L[0].value)||""))}else if(U.name==="counter"){var K=U.values.filter(Ku),V=K[0],q=K[1];if(V&&jr(V)){var z=s.counters.getCounterValue(V.value),it=q&&jr(q)?VC.parse(s.context,q.value):3;_.appendChild(f.createTextNode(pg(z,it,!1)))}}else if(U.name==="counters"){var At=U.values.filter(Ku),V=At[0],_t=At[1],q=At[2];if(V&&jr(V)){var Lt=s.counters.getCounterValues(V.value),Et=q&&jr(q)?VC.parse(s.context,q.value):3,xt=_t&&_t.type===0?_t.value:"",It=Lt.map(function(lt){return pg(lt,Et,!1)}).join(xt);_.appendChild(f.createTextNode(It))}}}else if(U.type===20)switch(U.value){case"open-quote":_.appendChild(f.createTextNode(Uv(I.quotes,s.quoteDepth++,!0)));break;case"close-quote":_.appendChild(f.createTextNode(Uv(I.quotes,--s.quoteDepth,!1)));break;default:_.appendChild(f.createTextNode(U.value))}}),_.className=JC+" "+XC;var S=A===hg.BEFORE?" "+JC:" "+XC;return jd(r)?r.className.baseValue+=S:r.className+=S,_}}},n.destroy=function(t){return t.parentNode?(t.parentNode.removeChild(t),!0):!1},n}();(function(n){n[n.BEFORE=0]="BEFORE",n[n.AFTER=1]="AFTER"})(hg||(hg={}));AT=function(n,t){var r=n.createElement("iframe");return r.className="html2canvas-container",r.style.visibility="hidden",r.style.position="fixed",r.style.left="-10000px",r.style.top="0px",r.style.border="0",r.width=t.width.toString(),r.height=t.height.toString(),r.scrolling="no",r.setAttribute(n2,"true"),n.body.appendChild(r),r},lT=function(n){return new Promise(function(t){if(n.complete){t();return}if(!n.src){t();return}n.onload=t,n.onerror=t})},cT=function(n){return Promise.all([].slice.call(n.images,0).map(lT))},uT=function(n){return new Promise(function(t,r){var o=n.contentWindow;if(!o)return r("No window assigned for iframe");var A=o.document;o.onload=n.onload=function(){o.onload=n.onload=null;var s=setInterval(function(){A.body.childNodes.length>0&&A.readyState==="complete"&&(clearInterval(s),t(n))},50)}})},hT=["all","d","content"],BC=function(n,t){for(var r=n.length-1;r>=0;r--){var o=n.item(r);hT.indexOf(o)===-1&&t.style.setProperty(o,n.getPropertyValue(o))}return t},gT=function(n){var t="";return n&&(t+=""),t},dT=function(n,t,r){n&&n.defaultView&&(t!==n.defaultView.pageXOffset||r!==n.defaultView.pageYOffset)&&n.defaultView.scrollTo(t,r)},pT=function(n){var t=n[0],r=n[1],o=n[2];t.scrollLeft=r,t.scrollTop=o},fT=":before",mT=":after",JC="___html2canvas___pseudoelement_before",XC="___html2canvas___pseudoelement_after",sw=`{ + ${R} ${G} ${P} = u_${P}; +#endif +`}),staticAttributes:h,staticUniforms:y}}class zt{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(t,a,h,g,f,y,B,x,k){this.context=t;let R=this.boundPaintVertexBuffers.length!==g.length;for(let G=0;!R&&G({u_matrix:u,u_texture:0,u_ele_delta:t,u_fog_matrix:a,u_fog_color:h?h.properties.get("fog-color"):s.aM.white,u_fog_ground_blend:h?h.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:h?h.calculateFogBlendOpacity(g):0,u_horizon_color:h?h.properties.get("horizon-color"):s.aM.white,u_horizon_fog_blend:h?h.properties.get("horizon-fog-blend"):1});function be(u){let t=[];for(let a=0;a({u_depth:new s.aH(Qt,se.u_depth),u_terrain:new s.aH(Qt,se.u_terrain),u_terrain_dim:new s.aI(Qt,se.u_terrain_dim),u_terrain_matrix:new s.aJ(Qt,se.u_terrain_matrix),u_terrain_unpack:new s.aK(Qt,se.u_terrain_unpack),u_terrain_exaggeration:new s.aI(Qt,se.u_terrain_exaggeration)}))(t,Ft),this.binderUniforms=h?h.getUniforms(t,Ft):[]}draw(t,a,h,g,f,y,B,x,k,R,G,P,M,j,et,W,X,ct){let rt=t.gl;if(this.failedToCreate)return;if(t.program.set(this.program),t.setDepthMode(h),t.setStencilMode(g),t.setColorMode(f),t.setCullFace(y),x){t.activeTexture.set(rt.TEXTURE2),rt.bindTexture(rt.TEXTURE_2D,x.depthTexture),t.activeTexture.set(rt.TEXTURE3),rt.bindTexture(rt.TEXTURE_2D,x.texture);for(let Ft in this.terrainUniforms)this.terrainUniforms[Ft].set(x[Ft])}for(let Ft in this.fixedUniforms)this.fixedUniforms[Ft].set(B[Ft]);et&&et.setUniforms(t,this.binderUniforms,M,{zoom:j});let ut=0;switch(a){case rt.LINES:ut=2;break;case rt.TRIANGLES:ut=3;break;case rt.LINE_STRIP:ut=1}for(let Ft of P.get()){let Qt=Ft.vaos||(Ft.vaos={});(Qt[k]||(Qt[k]=new zt)).bind(t,this,R,et?et.getPaintVertexBuffers():[],G,Ft.vertexOffset,W,X,ct),rt.drawElements(a,Ft.primitiveLength*ut,rt.UNSIGNED_SHORT,Ft.primitiveOffset*ut*2)}}}function pe(u,t,a){let h=1/vi(a,1,t.transform.tileZoom),g=Math.pow(2,a.tileID.overscaledZ),f=a.tileSize*Math.pow(2,t.transform.tileZoom)/g,y=f*(a.tileID.canonical.x+a.tileID.wrap*g),B=f*a.tileID.canonical.y;return{u_image:0,u_texsize:a.imageAtlasTexture.size,u_scale:[h,u.fromScale,u.toScale],u_fade:u.t,u_pixel_coord_upper:[y>>16,B>>16],u_pixel_coord_lower:[65535&y,65535&B]}}let $t=(u,t,a,h)=>{let g=t.style.light,f=g.properties.get("position"),y=[f.x,f.y,f.z],B=function(){var k=new s.A(9);return s.A!=Float32Array&&(k[1]=0,k[2]=0,k[3]=0,k[5]=0,k[6]=0,k[7]=0),k[0]=1,k[4]=1,k[8]=1,k}();g.properties.get("anchor")==="viewport"&&function(k,R){var G=Math.sin(R),P=Math.cos(R);k[0]=P,k[1]=G,k[2]=0,k[3]=-G,k[4]=P,k[5]=0,k[6]=0,k[7]=0,k[8]=1}(B,-t.transform.angle),function(k,R,G){var P=R[0],M=R[1],j=R[2];k[0]=P*G[0]+M*G[3]+j*G[6],k[1]=P*G[1]+M*G[4]+j*G[7],k[2]=P*G[2]+M*G[5]+j*G[8]}(y,y,B);let x=g.properties.get("color");return{u_matrix:u,u_lightpos:y,u_lightintensity:g.properties.get("intensity"),u_lightcolor:[x.r,x.g,x.b],u_vertical_gradient:+a,u_opacity:h}},fe=(u,t,a,h,g,f,y)=>s.e($t(u,t,a,h),pe(f,t,y),{u_height_factor:-Math.pow(2,g.overscaledZ)/y.tileSize/8}),Ce=u=>({u_matrix:u}),Te=(u,t,a,h)=>s.e(Ce(u),pe(a,t,h)),Li=(u,t)=>({u_matrix:u,u_world:t}),ki=(u,t,a,h,g)=>s.e(Te(u,t,a,h),{u_world:g}),Ze=(u,t,a,h)=>{let g=u.transform,f,y;if(h.paint.get("circle-pitch-alignment")==="map"){let B=vi(a,1,g.zoom);f=!0,y=[B,B]}else f=!1,y=g.pixelsToGLUnits;return{u_camera_to_center_distance:g.cameraToCenterDistance,u_scale_with_map:+(h.paint.get("circle-pitch-scale")==="map"),u_matrix:u.translatePosMatrix(t.posMatrix,a,h.paint.get("circle-translate"),h.paint.get("circle-translate-anchor")),u_pitch_with_map:+f,u_device_pixel_ratio:u.pixelRatio,u_extrude_scale:y}},Fe=(u,t,a)=>({u_matrix:u,u_inv_matrix:t,u_camera_to_center_distance:a.cameraToCenterDistance,u_viewport_size:[a.width,a.height]}),ii=(u,t,a=1)=>({u_matrix:u,u_color:t,u_overlay:0,u_overlay_scale:a}),ai=u=>({u_matrix:u}),wi=(u,t,a,h)=>({u_matrix:u,u_extrude_scale:vi(t,1,a),u_intensity:h}),ar=(u,t,a,h)=>{let g=s.H();s.aP(g,0,u.width,u.height,0,0,1);let f=u.context.gl;return{u_matrix:g,u_world:[f.drawingBufferWidth,f.drawingBufferHeight],u_image:a,u_color_ramp:h,u_opacity:t.paint.get("heatmap-opacity")}};function si(u,t){let a=Math.pow(2,t.canonical.z),h=t.canonical.y;return[new s.Z(0,h/a).toLngLat().lat,new s.Z(0,(h+1)/a).toLngLat().lat]}let vr=(u,t,a,h)=>{let g=u.transform;return{u_matrix:wo(u,t,a,h),u_ratio:1/vi(t,1,g.zoom),u_device_pixel_ratio:u.pixelRatio,u_units_to_pixels:[1/g.pixelsToGLUnits[0],1/g.pixelsToGLUnits[1]]}},nn=(u,t,a,h,g)=>s.e(vr(u,t,a,g),{u_image:0,u_image_height:h}),Br=(u,t,a,h,g)=>{let f=u.transform,y=Rn(t,f);return{u_matrix:wo(u,t,a,g),u_texsize:t.imageAtlasTexture.size,u_ratio:1/vi(t,1,f.zoom),u_device_pixel_ratio:u.pixelRatio,u_image:0,u_scale:[y,h.fromScale,h.toScale],u_fade:h.t,u_units_to_pixels:[1/f.pixelsToGLUnits[0],1/f.pixelsToGLUnits[1]]}},ms=(u,t,a,h,g,f)=>{let y=u.lineAtlas,B=Rn(t,u.transform),x=a.layout.get("line-cap")==="round",k=y.getDash(h.from,x),R=y.getDash(h.to,x),G=k.width*g.fromScale,P=R.width*g.toScale;return s.e(vr(u,t,a,f),{u_patternscale_a:[B/G,-k.height/2],u_patternscale_b:[B/P,-R.height/2],u_sdfgamma:y.width/(256*Math.min(G,P)*u.pixelRatio)/2,u_image:0,u_tex_y_a:k.y,u_tex_y_b:R.y,u_mix:g.t})};function Rn(u,t){return 1/vi(u,1,t.tileZoom)}function wo(u,t,a,h){return u.translatePosMatrix(h?h.posMatrix:t.tileID.posMatrix,t,a.paint.get("line-translate"),a.paint.get("line-translate-anchor"))}let el=(u,t,a,h,g)=>{return{u_matrix:u,u_tl_parent:t,u_scale_parent:a,u_buffer_scale:1,u_fade_t:h.mix,u_opacity:h.opacity*g.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:g.paint.get("raster-brightness-min"),u_brightness_high:g.paint.get("raster-brightness-max"),u_saturation_factor:(y=g.paint.get("raster-saturation"),y>0?1-1/(1.001-y):-y),u_contrast_factor:(f=g.paint.get("raster-contrast"),f>0?1/(1-f):1+f),u_spin_weights:Fc(g.paint.get("raster-hue-rotate"))};var f,y};function Fc(u){u*=Math.PI/180;let t=Math.sin(u),a=Math.cos(u);return[(2*a+1)/3,(-Math.sqrt(3)*t-a+1)/3,(Math.sqrt(3)*t-a+1)/3]}let Gl=(u,t,a,h,g,f,y,B,x,k,R,G,P,M)=>{let j=y.transform;return{u_is_size_zoom_constant:+(u==="constant"||u==="source"),u_is_size_feature_constant:+(u==="constant"||u==="camera"),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:j.cameraToCenterDistance,u_pitch:j.pitch/360*2*Math.PI,u_rotate_symbol:+a,u_aspect_ratio:j.width/j.height,u_fade_change:y.options.fadeDuration?y.symbolFadeChange:1,u_matrix:B,u_label_plane_matrix:x,u_coord_matrix:k,u_is_text:+G,u_pitch_with_map:+h,u_is_along_line:g,u_is_variable_anchor:f,u_texsize:P,u_texture:0,u_translation:R,u_pitched_scale:M}},Fa=(u,t,a,h,g,f,y,B,x,k,R,G,P,M,j)=>{let et=y.transform;return s.e(Gl(u,t,a,h,g,f,y,B,x,k,R,G,P,j),{u_gamma_scale:h?Math.cos(et._pitch)*et.cameraToCenterDistance:1,u_device_pixel_ratio:y.pixelRatio,u_is_halo:+M})},ka=(u,t,a,h,g,f,y,B,x,k,R,G,P,M)=>s.e(Fa(u,t,a,h,g,f,y,B,x,k,R,!0,G,!0,M),{u_texsize_icon:P,u_texture_icon:1}),Bo=(u,t,a)=>({u_matrix:u,u_opacity:t,u_color:a}),_o=(u,t,a,h,g,f)=>s.e(function(y,B,x,k){let R=x.imageManager.getPattern(y.from.toString()),G=x.imageManager.getPattern(y.to.toString()),{width:P,height:M}=x.imageManager.getPixelSize(),j=Math.pow(2,k.tileID.overscaledZ),et=k.tileSize*Math.pow(2,x.transform.tileZoom)/j,W=et*(k.tileID.canonical.x+k.tileID.wrap*j),X=et*k.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:R.tl,u_pattern_br_a:R.br,u_pattern_tl_b:G.tl,u_pattern_br_b:G.br,u_texsize:[P,M],u_mix:B.t,u_pattern_size_a:R.displaySize,u_pattern_size_b:G.displaySize,u_scale_a:B.fromScale,u_scale_b:B.toScale,u_tile_units_to_pixels:1/vi(k,1,x.transform.tileZoom),u_pixel_coord_upper:[W>>16,X>>16],u_pixel_coord_lower:[65535&W,65535&X]}}(h,f,a,g),{u_matrix:u,u_opacity:t}),il={fillExtrusion:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_lightpos:new s.aN(u,t.u_lightpos),u_lightintensity:new s.aI(u,t.u_lightintensity),u_lightcolor:new s.aN(u,t.u_lightcolor),u_vertical_gradient:new s.aI(u,t.u_vertical_gradient),u_opacity:new s.aI(u,t.u_opacity)}),fillExtrusionPattern:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_lightpos:new s.aN(u,t.u_lightpos),u_lightintensity:new s.aI(u,t.u_lightintensity),u_lightcolor:new s.aN(u,t.u_lightcolor),u_vertical_gradient:new s.aI(u,t.u_vertical_gradient),u_height_factor:new s.aI(u,t.u_height_factor),u_image:new s.aH(u,t.u_image),u_texsize:new s.aO(u,t.u_texsize),u_pixel_coord_upper:new s.aO(u,t.u_pixel_coord_upper),u_pixel_coord_lower:new s.aO(u,t.u_pixel_coord_lower),u_scale:new s.aN(u,t.u_scale),u_fade:new s.aI(u,t.u_fade),u_opacity:new s.aI(u,t.u_opacity)}),fill:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix)}),fillPattern:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_image:new s.aH(u,t.u_image),u_texsize:new s.aO(u,t.u_texsize),u_pixel_coord_upper:new s.aO(u,t.u_pixel_coord_upper),u_pixel_coord_lower:new s.aO(u,t.u_pixel_coord_lower),u_scale:new s.aN(u,t.u_scale),u_fade:new s.aI(u,t.u_fade)}),fillOutline:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_world:new s.aO(u,t.u_world)}),fillOutlinePattern:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_world:new s.aO(u,t.u_world),u_image:new s.aH(u,t.u_image),u_texsize:new s.aO(u,t.u_texsize),u_pixel_coord_upper:new s.aO(u,t.u_pixel_coord_upper),u_pixel_coord_lower:new s.aO(u,t.u_pixel_coord_lower),u_scale:new s.aN(u,t.u_scale),u_fade:new s.aI(u,t.u_fade)}),circle:(u,t)=>({u_camera_to_center_distance:new s.aI(u,t.u_camera_to_center_distance),u_scale_with_map:new s.aH(u,t.u_scale_with_map),u_pitch_with_map:new s.aH(u,t.u_pitch_with_map),u_extrude_scale:new s.aO(u,t.u_extrude_scale),u_device_pixel_ratio:new s.aI(u,t.u_device_pixel_ratio),u_matrix:new s.aJ(u,t.u_matrix)}),collisionBox:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_pixel_extrude_scale:new s.aO(u,t.u_pixel_extrude_scale)}),collisionCircle:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_inv_matrix:new s.aJ(u,t.u_inv_matrix),u_camera_to_center_distance:new s.aI(u,t.u_camera_to_center_distance),u_viewport_size:new s.aO(u,t.u_viewport_size)}),debug:(u,t)=>({u_color:new s.aL(u,t.u_color),u_matrix:new s.aJ(u,t.u_matrix),u_overlay:new s.aH(u,t.u_overlay),u_overlay_scale:new s.aI(u,t.u_overlay_scale)}),clippingMask:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix)}),heatmap:(u,t)=>({u_extrude_scale:new s.aI(u,t.u_extrude_scale),u_intensity:new s.aI(u,t.u_intensity),u_matrix:new s.aJ(u,t.u_matrix)}),heatmapTexture:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_world:new s.aO(u,t.u_world),u_image:new s.aH(u,t.u_image),u_color_ramp:new s.aH(u,t.u_color_ramp),u_opacity:new s.aI(u,t.u_opacity)}),hillshade:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_image:new s.aH(u,t.u_image),u_latrange:new s.aO(u,t.u_latrange),u_light:new s.aO(u,t.u_light),u_shadow:new s.aL(u,t.u_shadow),u_highlight:new s.aL(u,t.u_highlight),u_accent:new s.aL(u,t.u_accent)}),hillshadePrepare:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_image:new s.aH(u,t.u_image),u_dimension:new s.aO(u,t.u_dimension),u_zoom:new s.aI(u,t.u_zoom),u_unpack:new s.aK(u,t.u_unpack)}),line:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_ratio:new s.aI(u,t.u_ratio),u_device_pixel_ratio:new s.aI(u,t.u_device_pixel_ratio),u_units_to_pixels:new s.aO(u,t.u_units_to_pixels)}),lineGradient:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_ratio:new s.aI(u,t.u_ratio),u_device_pixel_ratio:new s.aI(u,t.u_device_pixel_ratio),u_units_to_pixels:new s.aO(u,t.u_units_to_pixels),u_image:new s.aH(u,t.u_image),u_image_height:new s.aI(u,t.u_image_height)}),linePattern:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_texsize:new s.aO(u,t.u_texsize),u_ratio:new s.aI(u,t.u_ratio),u_device_pixel_ratio:new s.aI(u,t.u_device_pixel_ratio),u_image:new s.aH(u,t.u_image),u_units_to_pixels:new s.aO(u,t.u_units_to_pixels),u_scale:new s.aN(u,t.u_scale),u_fade:new s.aI(u,t.u_fade)}),lineSDF:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_ratio:new s.aI(u,t.u_ratio),u_device_pixel_ratio:new s.aI(u,t.u_device_pixel_ratio),u_units_to_pixels:new s.aO(u,t.u_units_to_pixels),u_patternscale_a:new s.aO(u,t.u_patternscale_a),u_patternscale_b:new s.aO(u,t.u_patternscale_b),u_sdfgamma:new s.aI(u,t.u_sdfgamma),u_image:new s.aH(u,t.u_image),u_tex_y_a:new s.aI(u,t.u_tex_y_a),u_tex_y_b:new s.aI(u,t.u_tex_y_b),u_mix:new s.aI(u,t.u_mix)}),raster:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_tl_parent:new s.aO(u,t.u_tl_parent),u_scale_parent:new s.aI(u,t.u_scale_parent),u_buffer_scale:new s.aI(u,t.u_buffer_scale),u_fade_t:new s.aI(u,t.u_fade_t),u_opacity:new s.aI(u,t.u_opacity),u_image0:new s.aH(u,t.u_image0),u_image1:new s.aH(u,t.u_image1),u_brightness_low:new s.aI(u,t.u_brightness_low),u_brightness_high:new s.aI(u,t.u_brightness_high),u_saturation_factor:new s.aI(u,t.u_saturation_factor),u_contrast_factor:new s.aI(u,t.u_contrast_factor),u_spin_weights:new s.aN(u,t.u_spin_weights)}),symbolIcon:(u,t)=>({u_is_size_zoom_constant:new s.aH(u,t.u_is_size_zoom_constant),u_is_size_feature_constant:new s.aH(u,t.u_is_size_feature_constant),u_size_t:new s.aI(u,t.u_size_t),u_size:new s.aI(u,t.u_size),u_camera_to_center_distance:new s.aI(u,t.u_camera_to_center_distance),u_pitch:new s.aI(u,t.u_pitch),u_rotate_symbol:new s.aH(u,t.u_rotate_symbol),u_aspect_ratio:new s.aI(u,t.u_aspect_ratio),u_fade_change:new s.aI(u,t.u_fade_change),u_matrix:new s.aJ(u,t.u_matrix),u_label_plane_matrix:new s.aJ(u,t.u_label_plane_matrix),u_coord_matrix:new s.aJ(u,t.u_coord_matrix),u_is_text:new s.aH(u,t.u_is_text),u_pitch_with_map:new s.aH(u,t.u_pitch_with_map),u_is_along_line:new s.aH(u,t.u_is_along_line),u_is_variable_anchor:new s.aH(u,t.u_is_variable_anchor),u_texsize:new s.aO(u,t.u_texsize),u_texture:new s.aH(u,t.u_texture),u_translation:new s.aO(u,t.u_translation),u_pitched_scale:new s.aI(u,t.u_pitched_scale)}),symbolSDF:(u,t)=>({u_is_size_zoom_constant:new s.aH(u,t.u_is_size_zoom_constant),u_is_size_feature_constant:new s.aH(u,t.u_is_size_feature_constant),u_size_t:new s.aI(u,t.u_size_t),u_size:new s.aI(u,t.u_size),u_camera_to_center_distance:new s.aI(u,t.u_camera_to_center_distance),u_pitch:new s.aI(u,t.u_pitch),u_rotate_symbol:new s.aH(u,t.u_rotate_symbol),u_aspect_ratio:new s.aI(u,t.u_aspect_ratio),u_fade_change:new s.aI(u,t.u_fade_change),u_matrix:new s.aJ(u,t.u_matrix),u_label_plane_matrix:new s.aJ(u,t.u_label_plane_matrix),u_coord_matrix:new s.aJ(u,t.u_coord_matrix),u_is_text:new s.aH(u,t.u_is_text),u_pitch_with_map:new s.aH(u,t.u_pitch_with_map),u_is_along_line:new s.aH(u,t.u_is_along_line),u_is_variable_anchor:new s.aH(u,t.u_is_variable_anchor),u_texsize:new s.aO(u,t.u_texsize),u_texture:new s.aH(u,t.u_texture),u_gamma_scale:new s.aI(u,t.u_gamma_scale),u_device_pixel_ratio:new s.aI(u,t.u_device_pixel_ratio),u_is_halo:new s.aH(u,t.u_is_halo),u_translation:new s.aO(u,t.u_translation),u_pitched_scale:new s.aI(u,t.u_pitched_scale)}),symbolTextAndIcon:(u,t)=>({u_is_size_zoom_constant:new s.aH(u,t.u_is_size_zoom_constant),u_is_size_feature_constant:new s.aH(u,t.u_is_size_feature_constant),u_size_t:new s.aI(u,t.u_size_t),u_size:new s.aI(u,t.u_size),u_camera_to_center_distance:new s.aI(u,t.u_camera_to_center_distance),u_pitch:new s.aI(u,t.u_pitch),u_rotate_symbol:new s.aH(u,t.u_rotate_symbol),u_aspect_ratio:new s.aI(u,t.u_aspect_ratio),u_fade_change:new s.aI(u,t.u_fade_change),u_matrix:new s.aJ(u,t.u_matrix),u_label_plane_matrix:new s.aJ(u,t.u_label_plane_matrix),u_coord_matrix:new s.aJ(u,t.u_coord_matrix),u_is_text:new s.aH(u,t.u_is_text),u_pitch_with_map:new s.aH(u,t.u_pitch_with_map),u_is_along_line:new s.aH(u,t.u_is_along_line),u_is_variable_anchor:new s.aH(u,t.u_is_variable_anchor),u_texsize:new s.aO(u,t.u_texsize),u_texsize_icon:new s.aO(u,t.u_texsize_icon),u_texture:new s.aH(u,t.u_texture),u_texture_icon:new s.aH(u,t.u_texture_icon),u_gamma_scale:new s.aI(u,t.u_gamma_scale),u_device_pixel_ratio:new s.aI(u,t.u_device_pixel_ratio),u_is_halo:new s.aH(u,t.u_is_halo),u_translation:new s.aO(u,t.u_translation),u_pitched_scale:new s.aI(u,t.u_pitched_scale)}),background:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_opacity:new s.aI(u,t.u_opacity),u_color:new s.aL(u,t.u_color)}),backgroundPattern:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_opacity:new s.aI(u,t.u_opacity),u_image:new s.aH(u,t.u_image),u_pattern_tl_a:new s.aO(u,t.u_pattern_tl_a),u_pattern_br_a:new s.aO(u,t.u_pattern_br_a),u_pattern_tl_b:new s.aO(u,t.u_pattern_tl_b),u_pattern_br_b:new s.aO(u,t.u_pattern_br_b),u_texsize:new s.aO(u,t.u_texsize),u_mix:new s.aI(u,t.u_mix),u_pattern_size_a:new s.aO(u,t.u_pattern_size_a),u_pattern_size_b:new s.aO(u,t.u_pattern_size_b),u_scale_a:new s.aI(u,t.u_scale_a),u_scale_b:new s.aI(u,t.u_scale_b),u_pixel_coord_upper:new s.aO(u,t.u_pixel_coord_upper),u_pixel_coord_lower:new s.aO(u,t.u_pixel_coord_lower),u_tile_units_to_pixels:new s.aI(u,t.u_tile_units_to_pixels)}),terrain:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_texture:new s.aH(u,t.u_texture),u_ele_delta:new s.aI(u,t.u_ele_delta),u_fog_matrix:new s.aJ(u,t.u_fog_matrix),u_fog_color:new s.aL(u,t.u_fog_color),u_fog_ground_blend:new s.aI(u,t.u_fog_ground_blend),u_fog_ground_blend_opacity:new s.aI(u,t.u_fog_ground_blend_opacity),u_horizon_color:new s.aL(u,t.u_horizon_color),u_horizon_fog_blend:new s.aI(u,t.u_horizon_fog_blend)}),terrainDepth:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_ele_delta:new s.aI(u,t.u_ele_delta)}),terrainCoords:(u,t)=>({u_matrix:new s.aJ(u,t.u_matrix),u_texture:new s.aH(u,t.u_texture),u_terrain_coords_id:new s.aI(u,t.u_terrain_coords_id),u_ele_delta:new s.aI(u,t.u_ele_delta)}),sky:(u,t)=>({u_sky_color:new s.aL(u,t.u_sky_color),u_horizon_color:new s.aL(u,t.u_horizon_color),u_horizon:new s.aI(u,t.u_horizon),u_sky_horizon_blend:new s.aI(u,t.u_sky_horizon_blend)})};class Gn{constructor(t,a,h){this.context=t;let g=t.gl;this.buffer=g.createBuffer(),this.dynamicDraw=Boolean(h),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),g.bufferData(g.ELEMENT_ARRAY_BUFFER,a.arrayBuffer,this.dynamicDraw?g.DYNAMIC_DRAW:g.STATIC_DRAW),this.dynamicDraw||delete a.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(t){let a=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),a.bufferSubData(a.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let rl={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class pa{constructor(t,a,h,g){this.length=a.length,this.attributes=h,this.itemSize=a.bytesPerElement,this.dynamicDraw=g,this.context=t;let f=t.gl;this.buffer=f.createBuffer(),t.bindVertexBuffer.set(this.buffer),f.bufferData(f.ARRAY_BUFFER,a.arrayBuffer,this.dynamicDraw?f.DYNAMIC_DRAW:f.STATIC_DRAW),this.dynamicDraw||delete a.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(t){if(t.length!==this.length)throw new Error(`Length of new data is ${t.length}, which doesn't match current length of ${this.length}`);let a=this.context.gl;this.bind(),a.bufferSubData(a.ARRAY_BUFFER,0,t.arrayBuffer)}enableAttributes(t,a){for(let h=0;h0){let Qt=s.H();s.aQ(Qt,rt.placementInvProjMatrix,u.transform.glCoordMatrix),s.aQ(Qt,Qt,rt.placementViewportMatrix),x.push({circleArray:Ft,circleOffset:R,transform:ct.posMatrix,invTransform:Qt,coord:ct}),k+=Ft.length/4,R=k}ut&&B.draw(f,y.LINES,Bi.disabled,qi.disabled,u.colorModeForRenderPass(),Ar.disabled,{u_matrix:ct.posMatrix,u_pixel_extrude_scale:[1/(G=u.transform).width,1/G.height]},u.style.map.terrain&&u.style.map.terrain.getTerrainData(ct),a.id,ut.layoutVertexBuffer,ut.indexBuffer,ut.segments,null,u.transform.zoom,null,null,ut.collisionVertexBuffer)}var G;if(!g||!x.length)return;let P=u.useProgram("collisionCircle"),M=new s.aR;M.resize(4*k),M._trim();let j=0;for(let X of x)for(let ct=0;ct=0&&(X[rt.associatedIconIndex]={shiftedAnchor:Ci,angle:Ji})}else je(rt.numGlyphs,et)}if(k){W.clear();let ct=u.icon.placedSymbolArray;for(let rt=0;rtu.style.map.terrain.getElevation(_e,Da,na):null,Mo=a.layout.get("text-rotation-alignment")==="map";it(De,_e.posMatrix,u,g,Hs,ws,X,k,Mo,et,_e.toUnwrapped(),j.width,j.height,Cr,cr)}let Bs=_e.posMatrix,qn=g&&oe||Yl,Ms=ct||qn?fa:Hs,as=ra,Rr=Ge&&a.paint.get(g?"text-halo-width":"icon-halo-width").constantOr(1)!==0,An;An=Ge?De.iconsInText?ka(Ci.kind,fi,rt,X,ct,qn,u,Bs,Ms,as,Cr,Lr,Hr,Ue):Fa(Ci.kind,fi,rt,X,ct,qn,u,Bs,Ms,as,Cr,g,Lr,!0,Ue):Gl(Ci.kind,fi,rt,X,ct,qn,u,Bs,Ms,as,Cr,g,Lr,Ue);let bn={program:Ui,buffers:ri,uniformValues:An,atlasTexture:Er,atlasTextureIcon:Dr,atlasInterpolation:er,atlasInterpolationIcon:Tr,isSDF:Ge,hasHalo:Rr};if(Ft&&De.canOverlap){Qt=!0;let cr=ri.segments.get();for(let Mo of cr)xe.push({segments:new s.a0([Mo]),sortKey:Mo.sortKey,state:bn,terrainData:hr})}else xe.push({segments:ri.segments,sortKey:0,state:bn,terrainData:hr})}Qt&&xe.sort((_e,Be)=>_e.sortKey-Be.sortKey);for(let _e of xe){let Be=_e.state;if(P.activeTexture.set(M.TEXTURE0),Be.atlasTexture.bind(Be.atlasInterpolation,M.CLAMP_TO_EDGE),Be.atlasTextureIcon&&(P.activeTexture.set(M.TEXTURE1),Be.atlasTextureIcon&&Be.atlasTextureIcon.bind(Be.atlasInterpolationIcon,M.CLAMP_TO_EDGE)),Be.isSDF){let De=Be.uniformValues;Be.hasHalo&&(De.u_is_halo=1,ma(Be.buffers,_e.segments,a,u,Be.program,se,R,G,De,_e.terrainData)),De.u_is_halo=0}ma(Be.buffers,_e.segments,a,u,Be.program,se,R,G,Be.uniformValues,_e.terrainData)}}function ma(u,t,a,h,g,f,y,B,x,k){let R=h.context;g.draw(R,R.gl.TRIANGLES,f,y,B,Ar.disabled,x,k,a.id,u.layoutVertexBuffer,u.indexBuffer,t,a.paint,h.transform.zoom,u.programConfigurations.get(a.id),u.dynamicLayoutVertexBuffer,u.opacityVertexBuffer)}function Pn(u,t,a,h){let g=u.context,f=g.gl,y=qi.disabled,B=new ji([f.ONE,f.ONE],s.aM.transparent,[!0,!0,!0,!0]),x=t.getBucket(a);if(!x)return;let k=h.key,R=a.heatmapFbos.get(k);R||(R=So(g,t.tileSize,t.tileSize),a.heatmapFbos.set(k,R)),g.bindFramebuffer.set(R.framebuffer),g.viewport.set([0,0,t.tileSize,t.tileSize]),g.clear({color:s.aM.transparent});let G=x.programConfigurations.get(a.id),P=u.useProgram("heatmap",G),M=u.style.map.terrain.getTerrainData(h);P.draw(g,f.TRIANGLES,Bi.disabled,y,B,Ar.disabled,wi(h.posMatrix,t,u.transform.zoom,a.paint.get("heatmap-intensity")),M,a.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,a.paint,u.transform.zoom,G)}function Ls(u,t,a){let h=u.context,g=h.gl;h.setColorMode(u.colorModeForRenderPass());let f=Fo(h,t),y=a.key,B=t.heatmapFbos.get(y);B&&(h.activeTexture.set(g.TEXTURE0),g.bindTexture(g.TEXTURE_2D,B.colorAttachment.get()),h.activeTexture.set(g.TEXTURE1),f.bind(g.LINEAR,g.CLAMP_TO_EDGE),u.useProgram("heatmapTexture").draw(h,g.TRIANGLES,Bi.disabled,qi.disabled,u.colorModeForRenderPass(),Ar.disabled,ar(u,t,0,1),null,t.id,u.rasterBoundsBuffer,u.quadTriangleIndexBuffer,u.rasterBoundsSegments,t.paint,u.transform.zoom),B.destroy(),t.heatmapFbos.delete(y))}function So(u,t,a){var h,g;let f=u.gl,y=f.createTexture();f.bindTexture(f.TEXTURE_2D,y),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,f.CLAMP_TO_EDGE),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,f.CLAMP_TO_EDGE),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,f.LINEAR),f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,f.LINEAR);let B=(h=u.HALF_FLOAT)!==null&&h!==void 0?h:f.UNSIGNED_BYTE,x=(g=u.RGBA16F)!==null&&g!==void 0?g:f.RGBA;f.texImage2D(f.TEXTURE_2D,0,x,t,a,0,f.RGBA,B,null);let k=u.createFramebuffer(t,a,!1,!1);return k.colorAttachment.set(y),k}function Fo(u,t){return t.colorRampTexture||(t.colorRampTexture=new Mt(u,t.colorRamp,u.gl.RGBA)),t.colorRampTexture}function ko(u,t,a,h,g){if(!a||!h||!h.imageAtlas)return;let f=h.imageAtlas.patternPositions,y=f[a.to.toString()],B=f[a.from.toString()];if(!y&&B&&(y=B),!B&&y&&(B=y),!y||!B){let x=g.getPaintProperty(t);y=f[x],B=f[x]}y&&B&&u.setConstantPatternPositions(y,B)}function In(u,t,a,h,g,f,y){let B=u.context.gl,x="fill-pattern",k=a.paint.get(x),R=k&&k.constantOr(1),G=a.getCrossfadeParameters(),P,M,j,et,W;y?(M=R&&!a.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",P=B.LINES):(M=R?"fillPattern":"fill",P=B.TRIANGLES);let X=k.constantOr(null);for(let ct of h){let rt=t.getTile(ct);if(R&&!rt.patternsLoaded())continue;let ut=rt.getBucket(a);if(!ut)continue;let Ft=ut.programConfigurations.get(a.id),Qt=u.useProgram(M,Ft),se=u.style.map.terrain&&u.style.map.terrain.getTerrainData(ct);R&&(u.context.activeTexture.set(B.TEXTURE0),rt.imageAtlasTexture.bind(B.LINEAR,B.CLAMP_TO_EDGE),Ft.updatePaintBuffers(G)),ko(Ft,x,X,rt,a);let oe=se?ct:null,xe=u.translatePosMatrix(oe?oe.posMatrix:ct.posMatrix,rt,a.paint.get("fill-translate"),a.paint.get("fill-translate-anchor"));if(y){et=ut.indexBuffer2,W=ut.segments2;let Ue=[B.drawingBufferWidth,B.drawingBufferHeight];j=M==="fillOutlinePattern"&&R?ki(xe,u,G,rt,Ue):Li(xe,Ue)}else et=ut.indexBuffer,W=ut.segments,j=R?Te(xe,u,G,rt):Ce(xe);Qt.draw(u.context,P,g,u.stencilModeForClipping(ct),f,Ar.disabled,j,se,a.id,ut.layoutVertexBuffer,et,W,a.paint,u.transform.zoom,Ft)}}function yA(u,t,a,h,g,f,y){let B=u.context,x=B.gl,k="fill-extrusion-pattern",R=a.paint.get(k),G=R.constantOr(1),P=a.getCrossfadeParameters(),M=a.paint.get("fill-extrusion-opacity"),j=R.constantOr(null);for(let et of h){let W=t.getTile(et),X=W.getBucket(a);if(!X)continue;let ct=u.style.map.terrain&&u.style.map.terrain.getTerrainData(et),rt=X.programConfigurations.get(a.id),ut=u.useProgram(G?"fillExtrusionPattern":"fillExtrusion",rt);G&&(u.context.activeTexture.set(x.TEXTURE0),W.imageAtlasTexture.bind(x.LINEAR,x.CLAMP_TO_EDGE),rt.updatePaintBuffers(P)),ko(rt,k,j,W,a);let Ft=u.translatePosMatrix(et.posMatrix,W,a.paint.get("fill-extrusion-translate"),a.paint.get("fill-extrusion-translate-anchor")),Qt=a.paint.get("fill-extrusion-vertical-gradient"),se=G?fe(Ft,u,Qt,M,et,P,W):$t(Ft,u,Qt,M);ut.draw(B,B.gl.TRIANGLES,g,f,y,Ar.backCCW,se,ct,a.id,X.layoutVertexBuffer,X.indexBuffer,X.segments,a.paint,u.transform.zoom,rt,u.style.map.terrain&&X.centroidVertexBuffer)}}function Lo(u,t,a,h,g,f,y){let B=u.context,x=B.gl,k=a.fbo;if(!k)return;let R=u.useProgram("hillshade"),G=u.style.map.terrain&&u.style.map.terrain.getTerrainData(t);B.activeTexture.set(x.TEXTURE0),x.bindTexture(x.TEXTURE_2D,k.colorAttachment.get()),R.draw(B,x.TRIANGLES,g,f,y,Ar.disabled,((P,M,j,et)=>{let W=j.paint.get("hillshade-shadow-color"),X=j.paint.get("hillshade-highlight-color"),ct=j.paint.get("hillshade-accent-color"),rt=j.paint.get("hillshade-illumination-direction")*(Math.PI/180);j.paint.get("hillshade-illumination-anchor")==="viewport"&&(rt-=P.transform.angle);let ut=!P.options.moving;return{u_matrix:et?et.posMatrix:P.transform.calculatePosMatrix(M.tileID.toUnwrapped(),ut),u_image:0,u_latrange:si(0,M.tileID),u_light:[j.paint.get("hillshade-exaggeration"),rt],u_shadow:W,u_highlight:X,u_accent:ct}})(u,a,h,G?t:null),G,h.id,u.rasterBoundsBuffer,u.quadTriangleIndexBuffer,u.rasterBoundsSegments)}function $o(u,t,a,h,g,f){let y=u.context,B=y.gl,x=t.dem;if(x&&x.data){let k=x.dim,R=x.stride,G=x.getPixels();if(y.activeTexture.set(B.TEXTURE1),y.pixelStoreUnpackPremultiplyAlpha.set(!1),t.demTexture=t.demTexture||u.getTileTexture(R),t.demTexture){let M=t.demTexture;M.update(G,{premultiply:!1}),M.bind(B.NEAREST,B.CLAMP_TO_EDGE)}else t.demTexture=new Mt(y,G,B.RGBA,{premultiply:!1}),t.demTexture.bind(B.NEAREST,B.CLAMP_TO_EDGE);y.activeTexture.set(B.TEXTURE0);let P=t.fbo;if(!P){let M=new Mt(y,{width:k,height:k,data:null},B.RGBA);M.bind(B.LINEAR,B.CLAMP_TO_EDGE),P=t.fbo=y.createFramebuffer(k,k,!0,!1),P.colorAttachment.set(M.texture)}y.bindFramebuffer.set(P.framebuffer),y.viewport.set([0,0,k,k]),u.useProgram("hillshadePrepare").draw(y,B.TRIANGLES,h,g,f,Ar.disabled,((M,j)=>{let et=j.stride,W=s.H();return s.aP(W,0,s.X,-s.X,0,0,1),s.J(W,W,[0,-s.X,0]),{u_matrix:W,u_image:1,u_dimension:[et,et],u_zoom:M.overscaledZ,u_unpack:j.getUnpackVector()}})(t.tileID,x),null,a.id,u.rasterBoundsBuffer,u.quadTriangleIndexBuffer,u.rasterBoundsSegments),t.needsHillshadePrepare=!1}}function Es(u,t,a,h,g,f){let y=h.paint.get("raster-fade-duration");if(!f&&y>0){let B=w.now(),x=(B-u.timeAdded)/y,k=t?(B-t.timeAdded)/y:-1,R=a.getSource(),G=g.coveringZoomLevel({tileSize:R.tileSize,roundZoom:R.roundZoom}),P=!t||Math.abs(t.tileID.overscaledZ-G)>Math.abs(u.tileID.overscaledZ-G),M=P&&u.refreshedUponExpiration?1:s.ac(P?x:1-k,0,1);return u.refreshedUponExpiration&&x>=1&&(u.refreshedUponExpiration=!1),t?{opacity:1,mix:1-M}:{opacity:M,mix:0}}return{opacity:1,mix:0}}let Ra=new s.aM(1,0,0,1),gr=new s.aM(0,1,0,1),bA=new s.aM(0,0,1,1),Ca=new s.aM(1,0,1,1),ys=new s.aM(0,1,1,1);function Hn(u,t,a,h){bs(u,0,t+a/2,u.transform.width,a,h)}function ta(u,t,a,h){bs(u,t-a/2,0,a,u.transform.height,h)}function bs(u,t,a,h,g,f){let y=u.context,B=y.gl;B.enable(B.SCISSOR_TEST),B.scissor(t*u.pixelRatio,a*u.pixelRatio,h*u.pixelRatio,g*u.pixelRatio),y.clear({color:f}),B.disable(B.SCISSOR_TEST)}function Eo(u,t,a){let h=u.context,g=h.gl,f=a.posMatrix,y=u.useProgram("debug"),B=Bi.disabled,x=qi.disabled,k=u.colorModeForRenderPass(),R="$debug",G=u.style.map.terrain&&u.style.map.terrain.getTerrainData(a);h.activeTexture.set(g.TEXTURE0);let P=t.getTileByID(a.key).latestRawTileData,M=Math.floor((P&&P.byteLength||0)/1024),j=t.getTile(a).tileSize,et=512/Math.min(j,512)*(a.overscaledZ/u.transform.zoom)*.5,W=a.canonical.toString();a.overscaledZ!==a.canonical.z&&(W+=` => ${a.overscaledZ}`),function(X,ct){X.initDebugOverlayCanvas();let rt=X.debugOverlayCanvas,ut=X.context.gl,Ft=X.debugOverlayCanvas.getContext("2d");Ft.clearRect(0,0,rt.width,rt.height),Ft.shadowColor="white",Ft.shadowBlur=2,Ft.lineWidth=1.5,Ft.strokeStyle="white",Ft.textBaseline="top",Ft.font="bold 36px Open Sans, sans-serif",Ft.fillText(ct,5,5),Ft.strokeText(ct,5,5),X.debugOverlayTexture.update(rt),X.debugOverlayTexture.bind(ut.LINEAR,ut.CLAMP_TO_EDGE)}(u,`${W} ${M}kB`),y.draw(h,g.TRIANGLES,B,x,ji.alphaBlended,Ar.disabled,ii(f,s.aM.transparent,et),null,R,u.debugBuffer,u.quadTriangleIndexBuffer,u.debugSegments),y.draw(h,g.LINE_STRIP,B,x,k,Ar.disabled,ii(f,s.aM.red),G,R,u.debugBuffer,u.tileBorderIndexBuffer,u.debugSegments)}function Ga(u,t,a){let h=u.context,g=h.gl,f=u.colorModeForRenderPass(),y=new Bi(g.LEQUAL,Bi.ReadWrite,u.depthRangeFor3D),B=u.useProgram("terrain"),x=t.getTerrainMesh();h.bindFramebuffer.set(null),h.viewport.set([0,0,u.width,u.height]);for(let k of a){let R=u.renderToTexture.getTexture(k),G=t.getTerrainData(k.tileID);h.activeTexture.set(g.TEXTURE0),g.bindTexture(g.TEXTURE_2D,R.texture);let P=u.transform.calculatePosMatrix(k.tileID.toUnwrapped()),M=t.getMeshFrameDelta(u.transform.zoom),j=u.transform.calculateFogMatrix(k.tileID.toUnwrapped()),et=ee(P,M,j,u.style.sky,u.transform.pitch);B.draw(h,g.TRIANGLES,y,qi.disabled,f,Ar.backCCW,et,G,"terrain",x.vertexBuffer,x.indexBuffer,x.segments)}}class rs{constructor(t,a,h){this.vertexBuffer=t,this.indexBuffer=a,this.segments=h}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}class ea{constructor(t,a){this.context=new an(t),this.transform=a,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:s.an(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=Ve.maxUnderzooming+Ve.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Wo}resize(t,a,h){if(this.width=Math.floor(t*h),this.height=Math.floor(a*h),this.pixelRatio=h,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let g of this.style._order)this.style._layers[g].resize()}setup(){let t=this.context,a=new s.aX;a.emplaceBack(0,0),a.emplaceBack(s.X,0),a.emplaceBack(0,s.X),a.emplaceBack(s.X,s.X),this.tileExtentBuffer=t.createVertexBuffer(a,At.members),this.tileExtentSegments=s.a0.simpleSegment(0,0,4,2);let h=new s.aX;h.emplaceBack(0,0),h.emplaceBack(s.X,0),h.emplaceBack(0,s.X),h.emplaceBack(s.X,s.X),this.debugBuffer=t.createVertexBuffer(h,At.members),this.debugSegments=s.a0.simpleSegment(0,0,4,5);let g=new s.$;g.emplaceBack(0,0,0,0),g.emplaceBack(s.X,0,s.X,0),g.emplaceBack(0,s.X,0,s.X),g.emplaceBack(s.X,s.X,s.X,s.X),this.rasterBoundsBuffer=t.createVertexBuffer(g,He.members),this.rasterBoundsSegments=s.a0.simpleSegment(0,0,4,2);let f=new s.aX;f.emplaceBack(0,0),f.emplaceBack(1,0),f.emplaceBack(0,1),f.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(f,At.members),this.viewportSegments=s.a0.simpleSegment(0,0,4,2);let y=new s.aZ;y.emplaceBack(0),y.emplaceBack(1),y.emplaceBack(3),y.emplaceBack(2),y.emplaceBack(0),this.tileBorderIndexBuffer=t.createIndexBuffer(y);let B=new s.aY;B.emplaceBack(0,1,2),B.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(B);let x=this.context.gl;this.stencilClearMode=new qi({func:x.ALWAYS,mask:0},0,255,x.ZERO,x.ZERO,x.ZERO)}clearStencil(){let t=this.context,a=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let h=s.H();s.aP(h,0,this.width,this.height,0,0,1),s.K(h,h,[a.drawingBufferWidth,a.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(t,a.TRIANGLES,Bi.disabled,this.stencilClearMode,ji.disabled,Ar.disabled,ai(h),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(t,a){if(this.currentStencilSource===t.source||!t.isTileClipped()||!a||!a.length)return;this.currentStencilSource=t.source;let h=this.context,g=h.gl;this.nextStencilID+a.length>256&&this.clearStencil(),h.setColorMode(ji.disabled),h.setDepthMode(Bi.disabled);let f=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(let y of a){let B=this._tileClippingMaskIDs[y.key]=this.nextStencilID++,x=this.style.map.terrain&&this.style.map.terrain.getTerrainData(y);f.draw(h,g.TRIANGLES,Bi.disabled,new qi({func:g.ALWAYS,mask:0},B,255,g.KEEP,g.KEEP,g.REPLACE),ji.disabled,Ar.disabled,ai(y.posMatrix),x,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let t=this.nextStencilID++,a=this.context.gl;return new qi({func:a.NOTEQUAL,mask:255},t,255,a.KEEP,a.KEEP,a.REPLACE)}stencilModeForClipping(t){let a=this.context.gl;return new qi({func:a.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,a.KEEP,a.KEEP,a.REPLACE)}stencilConfigForOverlap(t){let a=this.context.gl,h=t.sort((y,B)=>B.overscaledZ-y.overscaledZ),g=h[h.length-1].overscaledZ,f=h[0].overscaledZ-g+1;if(f>1){this.currentStencilSource=void 0,this.nextStencilID+f>256&&this.clearStencil();let y={};for(let B=0;B({u_sky_color:X.properties.get("sky-color"),u_horizon_color:X.properties.get("horizon-color"),u_horizon:(ct.height/2+ct.getHorizon())*rt,u_sky_horizon_blend:X.properties.get("sky-horizon-blend")*ct.height/2*rt}))(k,x.style.map.transform,x.pixelRatio),M=new Bi(G.LEQUAL,Bi.ReadWrite,[0,1]),j=qi.disabled,et=x.colorModeForRenderPass(),W=x.useProgram("sky");if(!k.mesh){let X=new s.aX;X.emplaceBack(-1,-1),X.emplaceBack(1,-1),X.emplaceBack(1,1),X.emplaceBack(-1,1);let ct=new s.aY;ct.emplaceBack(0,1,2),ct.emplaceBack(0,2,3),k.mesh=new rs(R.createVertexBuffer(X,At.members),R.createIndexBuffer(ct),s.a0.simpleSegment(0,0,X.length,ct.length))}W.draw(R,G.TRIANGLES,M,j,et,Ar.disabled,P,void 0,"sky",k.mesh.vertexBuffer,k.mesh.indexBuffer,k.mesh.segments)}(this,this.style.sky),this._showOverdrawInspector=a.showOverdrawInspector,this.depthRangeFor3D=[0,1-(t._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=h.length-1;this.currentLayer>=0;this.currentLayer--){let x=this.style._layers[h[this.currentLayer]],k=g[x.source],R=f[x.source];this._renderTileClippingMasks(x,R),this.renderLayer(this,k,x,R)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayerW.source&&!W.isHidden(R)?[k.sourceCaches[W.source]]:[]),M=P.filter(W=>W.getSource().type==="vector"),j=P.filter(W=>W.getSource().type!=="vector"),et=W=>{(!G||G.getSource().maxzoomet(W)),G||j.forEach(W=>et(W)),G}(this.style,this.transform.zoom);x&&function(k,R,G){for(let P=0;P0),g&&(s.b0(a,h),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(f,y){let B=f.context,x=B.gl,k=ji.unblended,R=new Bi(x.LEQUAL,Bi.ReadWrite,[0,1]),G=y.getTerrainMesh(),P=y.sourceCache.getRenderableTiles(),M=f.useProgram("terrainDepth");B.bindFramebuffer.set(y.getFramebuffer("depth").framebuffer),B.viewport.set([0,0,f.width/devicePixelRatio,f.height/devicePixelRatio]),B.clear({color:s.aM.transparent,depth:1});for(let j of P){let et=y.getTerrainData(j.tileID),W={u_matrix:f.transform.calculatePosMatrix(j.tileID.toUnwrapped()),u_ele_delta:y.getMeshFrameDelta(f.transform.zoom)};M.draw(B,x.TRIANGLES,R,qi.disabled,k,Ar.backCCW,W,et,"terrain",G.vertexBuffer,G.indexBuffer,G.segments)}B.bindFramebuffer.set(null),B.viewport.set([0,0,f.width,f.height])}(this,this.style.map.terrain),function(f,y){let B=f.context,x=B.gl,k=ji.unblended,R=new Bi(x.LEQUAL,Bi.ReadWrite,[0,1]),G=y.getTerrainMesh(),P=y.getCoordsTexture(),M=y.sourceCache.getRenderableTiles(),j=f.useProgram("terrainCoords");B.bindFramebuffer.set(y.getFramebuffer("coords").framebuffer),B.viewport.set([0,0,f.width/devicePixelRatio,f.height/devicePixelRatio]),B.clear({color:s.aM.transparent,depth:1}),y.coordsIndex=[];for(let et of M){let W=y.getTerrainData(et.tileID);B.activeTexture.set(x.TEXTURE0),x.bindTexture(x.TEXTURE_2D,P.texture);let X={u_matrix:f.transform.calculatePosMatrix(et.tileID.toUnwrapped()),u_terrain_coords_id:(255-y.coordsIndex.length)/255,u_texture:0,u_ele_delta:y.getMeshFrameDelta(f.transform.zoom)};j.draw(B,x.TRIANGLES,R,qi.disabled,k,Ar.backCCW,X,W,"terrain",G.vertexBuffer,G.indexBuffer,G.segments),y.coordsIndex.push(et.tileID.key)}B.bindFramebuffer.set(null),B.viewport.set([0,0,f.width,f.height])}(this,this.style.map.terrain))}renderLayer(t,a,h,g){if(!h.isHidden(this.transform.zoom)&&(h.type==="background"||h.type==="custom"||(g||[]).length))switch(this.id=h.id,h.type){case"symbol":(function(f,y,B,x,k){if(f.renderPass!=="translucent")return;let R=qi.disabled,G=f.colorModeForRenderPass();(B._unevaluatedLayout.hasValue("text-variable-anchor")||B._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(P,M,j,et,W,X,ct,rt,ut){let Ft=M.transform,Qt=es(),se=W==="map",oe=X==="map";for(let xe of P){let Ue=et.getTile(xe),_e=Ue.getBucket(j);if(!_e||!_e.text||!_e.text.segments.get().length)continue;let Be=s.ag(_e.textSizeData,Ft.zoom),De=vi(Ue,1,M.transform.zoom),ri=_r(xe.posMatrix,oe,se,M.transform,De),ve=j.layout.get("icon-text-fit")!=="none"&&_e.hasIconData();if(Be){let Ge=Math.pow(2,Ft.zoom-Ue.tileID.overscaledZ),Ci=M.style.map.terrain?(Ui,fi)=>M.style.map.terrain.getElevation(xe,Ui,fi):null,Ji=Qt.translatePosition(Ft,Ue,ct,rt);ao(_e,se,oe,ut,Ft,ri,xe.posMatrix,Ge,Be,ve,Qt,Ji,xe.toUnwrapped(),Ci)}}}(x,f,B,y,B.layout.get("text-rotation-alignment"),B.layout.get("text-pitch-alignment"),B.paint.get("text-translate"),B.paint.get("text-translate-anchor"),k),B.paint.get("icon-opacity").constantOr(1)!==0&&Qa(f,y,B,x,!1,B.paint.get("icon-translate"),B.paint.get("icon-translate-anchor"),B.layout.get("icon-rotation-alignment"),B.layout.get("icon-pitch-alignment"),B.layout.get("icon-keep-upright"),R,G),B.paint.get("text-opacity").constantOr(1)!==0&&Qa(f,y,B,x,!0,B.paint.get("text-translate"),B.paint.get("text-translate-anchor"),B.layout.get("text-rotation-alignment"),B.layout.get("text-pitch-alignment"),B.layout.get("text-keep-upright"),R,G),y.map.showCollisionBoxes&&(Is(f,y,B,x,!0),Is(f,y,B,x,!1))})(t,a,h,g,this.style.placement.variableOffsets);break;case"circle":(function(f,y,B,x){if(f.renderPass!=="translucent")return;let k=B.paint.get("circle-opacity"),R=B.paint.get("circle-stroke-width"),G=B.paint.get("circle-stroke-opacity"),P=!B.layout.get("circle-sort-key").isConstant();if(k.constantOr(1)===0&&(R.constantOr(1)===0||G.constantOr(1)===0))return;let M=f.context,j=M.gl,et=f.depthModeForSublayer(0,Bi.ReadOnly),W=qi.disabled,X=f.colorModeForRenderPass(),ct=[];for(let rt=0;rtrt.sortKey-ut.sortKey);for(let rt of ct){let{programConfiguration:ut,program:Ft,layoutVertexBuffer:Qt,indexBuffer:se,uniformValues:oe,terrainData:xe}=rt.state;Ft.draw(M,j.TRIANGLES,et,W,X,Ar.disabled,oe,xe,B.id,Qt,se,rt.segments,B.paint,f.transform.zoom,ut)}})(t,a,h,g);break;case"heatmap":(function(f,y,B,x){if(B.paint.get("heatmap-opacity")===0)return;let k=f.context;if(f.style.map.terrain){for(let R of x){let G=y.getTile(R);y.hasRenderableParent(R)||(f.renderPass==="offscreen"?Pn(f,G,B,R):f.renderPass==="translucent"&&Ls(f,B,R))}k.viewport.set([0,0,f.width,f.height])}else f.renderPass==="offscreen"?function(R,G,P,M){let j=R.context,et=j.gl,W=qi.disabled,X=new ji([et.ONE,et.ONE],s.aM.transparent,[!0,!0,!0,!0]);(function(ct,rt,ut){let Ft=ct.gl;ct.activeTexture.set(Ft.TEXTURE1),ct.viewport.set([0,0,rt.width/4,rt.height/4]);let Qt=ut.heatmapFbos.get(s.aU);Qt?(Ft.bindTexture(Ft.TEXTURE_2D,Qt.colorAttachment.get()),ct.bindFramebuffer.set(Qt.framebuffer)):(Qt=So(ct,rt.width/4,rt.height/4),ut.heatmapFbos.set(s.aU,Qt))})(j,R,P),j.clear({color:s.aM.transparent});for(let ct=0;ct20&&R.texParameterf(R.TEXTURE_2D,k.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,k.extTextureFilterAnisotropicMax);let _e=f.style.map.terrain&&f.style.map.terrain.getTerrainData(ct),Be=_e?ct:null,De=Be?Be.posMatrix:f.transform.calculatePosMatrix(ct.toUnwrapped(),X),ri=el(De,xe||[0,0],oe||1,se,B);G instanceof Ke?P.draw(k,R.TRIANGLES,rt,qi.disabled,M,Ar.disabled,ri,_e,B.id,G.boundsBuffer,f.quadTriangleIndexBuffer,G.boundsSegments):P.draw(k,R.TRIANGLES,rt,j[ct.overscaledZ],M,Ar.disabled,ri,_e,B.id,f.rasterBoundsBuffer,f.quadTriangleIndexBuffer,f.rasterBoundsSegments)}})(t,a,h,g);break;case"background":(function(f,y,B,x){let k=B.paint.get("background-color"),R=B.paint.get("background-opacity");if(R===0)return;let G=f.context,P=G.gl,M=f.transform,j=M.tileSize,et=B.paint.get("background-pattern");if(f.isPatternMissing(et))return;let W=!et&&k.a===1&&R===1&&f.opaquePassEnabledForLayer()?"opaque":"translucent";if(f.renderPass!==W)return;let X=qi.disabled,ct=f.depthModeForSublayer(0,W==="opaque"?Bi.ReadWrite:Bi.ReadOnly),rt=f.colorModeForRenderPass(),ut=f.useProgram(et?"backgroundPattern":"background"),Ft=x||M.coveringTiles({tileSize:j,terrain:f.style.map.terrain});et&&(G.activeTexture.set(P.TEXTURE0),f.imageManager.bind(f.context));let Qt=B.getCrossfadeParameters();for(let se of Ft){let oe=x?se.posMatrix:f.transform.calculatePosMatrix(se.toUnwrapped()),xe=et?_o(oe,R,f,et,{tileID:se,tileSize:j},Qt):Bo(oe,R,k),Ue=f.style.map.terrain&&f.style.map.terrain.getTerrainData(se);ut.draw(G,P.TRIANGLES,ct,X,rt,Ar.disabled,xe,Ue,B.id,f.tileExtentBuffer,f.quadTriangleIndexBuffer,f.tileExtentSegments)}})(t,0,h,g);break;case"custom":(function(f,y,B){let x=f.context,k=B.implementation;if(f.renderPass==="offscreen"){let R=k.prerender;R&&(f.setCustomLayerDefaults(),x.setColorMode(f.colorModeForRenderPass()),R.call(k,x.gl,f.transform.customLayerMatrix()),x.setDirty(),f.setBaseState())}else if(f.renderPass==="translucent"){f.setCustomLayerDefaults(),x.setColorMode(f.colorModeForRenderPass()),x.setStencilMode(qi.disabled);let R=k.renderingMode==="3d"?new Bi(f.context.gl.LEQUAL,Bi.ReadWrite,f.depthRangeFor3D):f.depthModeForSublayer(0,Bi.ReadOnly);x.setDepthMode(R),k.render(x.gl,f.transform.customLayerMatrix(),{farZ:f.transform.farZ,nearZ:f.transform.nearZ,fov:f.transform._fov,modelViewProjectionMatrix:f.transform.modelViewProjectionMatrix,projectionMatrix:f.transform.projectionMatrix}),x.setDirty(),f.setBaseState(),x.bindFramebuffer.set(null)}})(t,0,h)}}translatePosMatrix(t,a,h,g,f){if(!h[0]&&!h[1])return t;let y=f?g==="map"?this.transform.angle:0:g==="viewport"?-this.transform.angle:0;if(y){let k=Math.sin(y),R=Math.cos(y);h=[h[0]*R-h[1]*k,h[0]*k+h[1]*R]}let B=[f?h[0]:vi(a,h[0],this.transform.zoom),f?h[1]:vi(a,h[1],this.transform.zoom),0],x=new Float32Array(16);return s.J(x,t,B),x}saveTileTexture(t){let a=this._tileTextures[t.size[0]];a?a.push(t):this._tileTextures[t.size[0]]=[t]}getTileTexture(t){let a=this._tileTextures[t];return a&&a.length>0?a.pop():null}isPatternMissing(t){if(!t)return!1;if(!t.from||!t.to)return!0;let a=this.imageManager.getPattern(t.from.toString()),h=this.imageManager.getPattern(t.to.toString());return!a||!h}useProgram(t,a){this.cache=this.cache||{};let h=t+(a?a.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[h]||(this.cache[h]=new Ie(this.context,St[t],a,il[t],this._showOverdrawInspector,this.style.map.terrain)),this.cache[h]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new Mt(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:t,drawingBufferHeight:a}=this.context.gl;return this.width!==t||this.height!==a}}class To{constructor(t,a){this.points=t,this.planes=a}static fromInvProjectionMatrix(t,a,h){let g=Math.pow(2,h),f=[[-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(B=>{let x=1/(B=s.af([],B,t))[3]/a*g;return s.b1(B,B,[x,x,1/B[3],x])}),y=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(B=>{let x=function(P,M){var j=M[0],et=M[1],W=M[2],X=j*j+et*et+W*W;return X>0&&(X=1/Math.sqrt(X)),P[0]=M[0]*X,P[1]=M[1]*X,P[2]=M[2]*X,P}([],function(P,M,j){var et=M[0],W=M[1],X=M[2],ct=j[0],rt=j[1],ut=j[2];return P[0]=W*ut-X*rt,P[1]=X*ct-et*ut,P[2]=et*rt-W*ct,P}([],kt([],f[B[0]],f[B[1]]),kt([],f[B[2]],f[B[1]]))),k=-((R=x)[0]*(G=f[B[1]])[0]+R[1]*G[1]+R[2]*G[2]);var R,G;return x.concat(k)});return new To(f,y)}}class vs{constructor(t,a){this.min=t,this.max=a,this.center=function(h,g,f){return h[0]=.5*g[0],h[1]=.5*g[1],h[2]=.5*g[2],h}([],function(h,g,f){return h[0]=g[0]+f[0],h[1]=g[1]+f[1],h[2]=g[2]+f[2],h}([],this.min,this.max))}quadrant(t){let a=[t%2==0,t<2],h=ot(this.min),g=ot(this.max);for(let f=0;f=0&&y++;if(y===0)return 0;y!==a.length&&(h=!1)}if(h)return 2;for(let g=0;g<3;g++){let f=Number.MAX_VALUE,y=-Number.MAX_VALUE;for(let B=0;Bthis.max[g]-this.min[g])return 0}return 1}}class Mn{constructor(t=0,a=0,h=0,g=0){if(isNaN(t)||t<0||isNaN(a)||a<0||isNaN(h)||h<0||isNaN(g)||g<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=a,this.left=h,this.right=g}interpolate(t,a,h){return a.top!=null&&t.top!=null&&(this.top=s.y.number(t.top,a.top,h)),a.bottom!=null&&t.bottom!=null&&(this.bottom=s.y.number(t.bottom,a.bottom,h)),a.left!=null&&t.left!=null&&(this.left=s.y.number(t.left,a.left,h)),a.right!=null&&t.right!=null&&(this.right=s.y.number(t.right,a.right,h)),this}getCenter(t,a){let h=s.ac((this.left+t-this.right)/2,0,t),g=s.ac((this.top+a-this.bottom)/2,0,a);return new s.P(h,g)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new Mn(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}let Ao=85.051129;class Ts{constructor(t,a,h,g,f){this.tileSize=512,this._renderWorldCopies=f===void 0||!!f,this._minZoom=t||0,this._maxZoom=a||22,this._minPitch=h??0,this._maxPitch=g??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new s.N(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new Mn,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={},this.minElevationForCurrentTile=0}clone(){let t=new Ts(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.apply(this),t}apply(t){this.tileSize=t.tileSize,this.latRange=t.latRange,this.lngRange=t.lngRange,this.width=t.width,this.height=t.height,this._center=t._center,this._elevation=t._elevation,this.minElevationForCurrentTile=t.minElevationForCurrentTile,this.zoom=t.zoom,this.angle=t.angle,this._fov=t._fov,this._pitch=t._pitch,this._unmodified=t._unmodified,this._edgeInsets=t._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))}get maxZoom(){return this._maxZoom}set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))}get minPitch(){return this._minPitch}set minPitch(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))}get maxPitch(){return this._maxPitch}set maxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(t){t===void 0?t=!0:t===null&&(t=!1),this._renderWorldCopies=t}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new s.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(t){let a=-s.b3(t,-180,180)*Math.PI/180;this.angle!==a&&(this._unmodified=!1,this.angle=a,this._calcMatrices(),this.rotationMatrix=function(){var h=new s.A(4);return s.A!=Float32Array&&(h[1]=0,h[2]=0),h[0]=1,h[3]=1,h}(),function(h,g,f){var y=g[0],B=g[1],x=g[2],k=g[3],R=Math.sin(f),G=Math.cos(f);h[0]=y*G+x*R,h[1]=B*G+k*R,h[2]=y*-R+x*G,h[3]=B*-R+k*G}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(t){let a=s.ac(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==a&&(this._unmodified=!1,this._pitch=a,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(t){let a=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==a&&(this._unmodified=!1,this._zoom=a,this.tileZoom=Math.max(0,Math.floor(a)),this.scale=this.zoomScale(a),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(t){t!==this._elevation&&(this._elevation=t,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,a,h){this._unmodified=!1,this._edgeInsets.interpolate(t,a,h),this._constrain(),this._calcMatrices()}coveringZoomLevel(t){let a=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,a)}getVisibleUnwrappedCoordinates(t){let a=[new s.b4(0,t)];if(this._renderWorldCopies){let h=this.pointCoordinate(new s.P(0,0)),g=this.pointCoordinate(new s.P(this.width,0)),f=this.pointCoordinate(new s.P(this.width,this.height)),y=this.pointCoordinate(new s.P(0,this.height)),B=Math.floor(Math.min(h.x,g.x,f.x,y.x)),x=Math.floor(Math.max(h.x,g.x,f.x,y.x)),k=1;for(let R=B-k;R<=x+k;R++)R!==0&&a.push(new s.b4(R,t))}return a}coveringTiles(t){var a,h;let g=this.coveringZoomLevel(t),f=g;if(t.minzoom!==void 0&&gt.maxzoom&&(g=t.maxzoom);let y=this.pointCoordinate(this.getCameraPoint()),B=s.Z.fromLngLat(this.center),x=Math.pow(2,g),k=[x*y.x,x*y.y,0],R=[x*B.x,x*B.y,0],G=To.fromInvProjectionMatrix(this.invModelViewProjectionMatrix,this.worldSize,g),P=t.minzoom||0;!t.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(P=g);let M=t.terrain?2/Math.min(this.tileSize,t.tileSize)*this.tileSize:3,j=rt=>({aabb:new vs([rt*x,0,0],[(rt+1)*x,x,0]),zoom:0,x:0,y:0,wrap:rt,fullyVisible:!1}),et=[],W=[],X=g,ct=t.reparseOverscaled?f:g;if(this._renderWorldCopies)for(let rt=1;rt<=3;rt++)et.push(j(-rt)),et.push(j(rt));for(et.push(j(0));et.length>0;){let rt=et.pop(),ut=rt.x,Ft=rt.y,Qt=rt.fullyVisible;if(!Qt){let _e=rt.aabb.intersects(G);if(_e===0)continue;Qt=_e===2}let se=t.terrain?k:R,oe=rt.aabb.distanceX(se),xe=rt.aabb.distanceY(se),Ue=Math.max(Math.abs(oe),Math.abs(xe));if(rt.zoom===X||Ue>M+(1<=P){let _e=X-rt.zoom,Be=k[0]-.5-(ut<<_e),De=k[1]-.5-(Ft<<_e);W.push({tileID:new s.S(rt.zoom===X?ct:rt.zoom,rt.wrap,rt.zoom,ut,Ft),distanceSq:Lt([R[0]-.5-ut,R[1]-.5-Ft]),tileDistanceToCamera:Math.sqrt(Be*Be+De*De)})}else for(let _e=0;_e<4;_e++){let Be=(ut<<1)+_e%2,De=(Ft<<1)+(_e>>1),ri=rt.zoom+1,ve=rt.aabb.quadrant(_e);if(t.terrain){let Ge=new s.S(ri,rt.wrap,ri,Be,De),Ci=t.terrain.getMinMaxElevation(Ge),Ji=(a=Ci.minElevation)!==null&&a!==void 0?a:this.elevation,Ui=(h=Ci.maxElevation)!==null&&h!==void 0?h:this.elevation;ve=new vs([ve.min[0],ve.min[1],Ji],[ve.max[0],ve.max[1],Ui])}et.push({aabb:ve,zoom:ri,x:Be,y:De,wrap:rt.wrap,fullyVisible:Qt})}}return W.sort((rt,ut)=>rt.distanceSq-ut.distanceSq).map(rt=>rt.tileID)}resize(t,a){this.width=t,this.height=a,this.pixelsToGLUnits=[2/t,-2/a],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(t){return Math.pow(2,t)}scaleZoom(t){return Math.log(t)/Math.LN2}project(t){let a=s.ac(t.lat,-85.051129,Ao);return new s.P(s.O(t.lng)*this.worldSize,s.Q(a)*this.worldSize)}unproject(t){return new s.Z(t.x/this.worldSize,t.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(t){let a=this.elevation,h=Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter,g=this.pointLocation(this.centerPoint,t),f=t.getElevationForLngLatZoom(g,this.tileZoom);if(!(this.elevation-f))return;let y=h+a-f,B=Math.cos(this._pitch)*this.cameraToCenterDistance/y/s.b5(1,g.lat),x=this.scaleZoom(B/this.tileSize);this._elevation=f,this._center=g,this.zoom=x}setLocationAtPoint(t,a){let h=this.pointCoordinate(a),g=this.pointCoordinate(this.centerPoint),f=this.locationCoordinate(t),y=new s.Z(f.x-(h.x-g.x),f.y-(h.y-g.y));this.center=this.coordinateLocation(y),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(t,a){return a?this.coordinatePoint(this.locationCoordinate(t),a.getElevationForLngLatZoom(t,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(t))}pointLocation(t,a){return this.coordinateLocation(this.pointCoordinate(t,a))}locationCoordinate(t){return s.Z.fromLngLat(t)}coordinateLocation(t){return t&&t.toLngLat()}pointCoordinate(t,a){if(a){let P=a.pointCoordinate(t);if(P!=null)return P}let h=[t.x,t.y,0,1],g=[t.x,t.y,1,1];s.af(h,h,this.pixelMatrixInverse),s.af(g,g,this.pixelMatrixInverse);let f=h[3],y=g[3],B=h[1]/f,x=g[1]/y,k=h[2]/f,R=g[2]/y,G=k===R?0:(0-k)/(R-k);return new s.Z(s.y.number(h[0]/f,g[0]/y,G)/this.worldSize,s.y.number(B,x,G)/this.worldSize)}coordinatePoint(t,a=0,h=this.pixelMatrix){let g=[t.x*this.worldSize,t.y*this.worldSize,a,1];return s.af(g,g,h),new s.P(g[0]/g[3],g[1]/g[3])}getBounds(){let t=Math.max(0,this.height/2-this.getHorizon());return new Dt().extend(this.pointLocation(new s.P(0,t))).extend(this.pointLocation(new s.P(this.width,t))).extend(this.pointLocation(new s.P(this.width,this.height))).extend(this.pointLocation(new s.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new Dt([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-85.051129,Ao])}calculateTileMatrix(t){let a=t.canonical,h=this.worldSize/this.zoomScale(a.z),g=a.x+Math.pow(2,a.z)*t.wrap,f=s.an(new Float64Array(16));return s.J(f,f,[g*h,a.y*h,0]),s.K(f,f,[h/s.X,h/s.X,1]),f}calculatePosMatrix(t,a=!1){let h=t.key,g=a?this._alignedPosMatrixCache:this._posMatrixCache;if(g[h])return g[h];let f=this.calculateTileMatrix(t);return s.L(f,a?this.alignedModelViewProjectionMatrix:this.modelViewProjectionMatrix,f),g[h]=new Float32Array(f),g[h]}calculateFogMatrix(t){let a=t.key,h=this._fogMatrixCache;if(h[a])return h[a];let g=this.calculateTileMatrix(t);return s.L(g,this.fogMatrix,g),h[a]=new Float32Array(g),h[a]}customLayerMatrix(){return this.mercatorMatrix.slice()}getConstrained(t,a){a=s.ac(+a,this.minZoom,this.maxZoom);let h={center:new s.N(t.lng,t.lat),zoom:a},g=this.lngRange;if(!this._renderWorldCopies&&g===null){let rt=179.9999999999;g=[-rt,rt]}let f=this.tileSize*this.zoomScale(h.zoom),y=0,B=f,x=0,k=f,R=0,G=0,{x:P,y:M}=this.size;if(this.latRange){let rt=this.latRange;y=s.Q(rt[1])*f,B=s.Q(rt[0])*f,B-yB&&(X=B-rt)}if(g){let rt=(x+k)/2,ut=j;this._renderWorldCopies&&(ut=s.b3(j,rt-f/2,rt+f/2));let Ft=P/2;ut-Ftk&&(W=k-Ft)}if(W!==void 0||X!==void 0){let rt=new s.P(W??j,X??et);h.center=this.unproject.call({worldSize:f},rt).wrap()}return h}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let t=this._unmodified,{center:a,zoom:h}=this.getConstrained(this.center,this.zoom);this.center=a,this.zoom=h,this._unmodified=t,this._constraining=!1}_calcMatrices(){if(!this.height)return;let t=this.centerOffset,a=this.point.x,h=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=s.b5(1,this.center.lat)*this.worldSize;let g=s.an(new Float64Array(16));s.K(g,g,[this.width/2,-this.height/2,1]),s.J(g,g,[1,-1,0]),this.labelPlaneMatrix=g,g=s.an(new Float64Array(16)),s.K(g,g,[1,-1,1]),s.J(g,g,[-1,-1,0]),s.K(g,g,[2/this.width,2/this.height,1]),this.glCoordMatrix=g;let f=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),y=Math.min(this.elevation,this.minElevationForCurrentTile),B=f-y*this._pixelPerMeter/Math.cos(this._pitch),x=y<0?B:f,k=Math.PI/2+this._pitch,R=this._fov*(.5+t.y/this.height),G=Math.sin(R)*x/Math.sin(s.ac(Math.PI-k-R,.01,Math.PI-.01)),P=this.getHorizon(),M=2*Math.atan(P/this.cameraToCenterDistance)*(.5+t.y/(2*P)),j=Math.sin(M)*x/Math.sin(s.ac(Math.PI-k-M,.01,Math.PI-.01)),et=Math.min(G,j);this.farZ=1.01*(Math.cos(Math.PI/2-this._pitch)*et+x),this.nearZ=this.height/50,g=new Float64Array(16),s.b6(g,this._fov,this.width/this.height,this.nearZ,this.farZ),g[8]=2*-t.x/this.width,g[9]=2*t.y/this.height,this.projectionMatrix=s.ae(g),s.K(g,g,[1,-1,1]),s.J(g,g,[0,0,-this.cameraToCenterDistance]),s.b7(g,g,this._pitch),s.ad(g,g,this.angle),s.J(g,g,[-a,-h,0]),this.mercatorMatrix=s.K([],g,[this.worldSize,this.worldSize,this.worldSize]),s.K(g,g,[1,1,this._pixelPerMeter]),this.pixelMatrix=s.L(new Float64Array(16),this.labelPlaneMatrix,g),s.J(g,g,[0,0,-this.elevation]),this.modelViewProjectionMatrix=g,this.invModelViewProjectionMatrix=s.as([],g),this.fogMatrix=new Float64Array(16),s.b6(this.fogMatrix,this._fov,this.width/this.height,f,this.farZ),this.fogMatrix[8]=2*-t.x/this.width,this.fogMatrix[9]=2*t.y/this.height,s.K(this.fogMatrix,this.fogMatrix,[1,-1,1]),s.J(this.fogMatrix,this.fogMatrix,[0,0,-this.cameraToCenterDistance]),s.b7(this.fogMatrix,this.fogMatrix,this._pitch),s.ad(this.fogMatrix,this.fogMatrix,this.angle),s.J(this.fogMatrix,this.fogMatrix,[-a,-h,0]),s.K(this.fogMatrix,this.fogMatrix,[1,1,this._pixelPerMeter]),s.J(this.fogMatrix,this.fogMatrix,[0,0,-this.elevation]),this.pixelMatrix3D=s.L(new Float64Array(16),this.labelPlaneMatrix,g);let W=this.width%2/2,X=this.height%2/2,ct=Math.cos(this.angle),rt=Math.sin(this.angle),ut=a-Math.round(a)+ct*W+rt*X,Ft=h-Math.round(h)+ct*X+rt*W,Qt=new Float64Array(g);if(s.J(Qt,Qt,[ut>.5?ut-1:ut,Ft>.5?Ft-1:Ft,0]),this.alignedModelViewProjectionMatrix=Qt,g=s.as(new Float64Array(16),this.pixelMatrix),!g)throw new Error("failed to invert matrix");this.pixelMatrixInverse=g,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let t=this.pointCoordinate(new s.P(0,0)),a=[t.x*this.worldSize,t.y*this.worldSize,0,1];return s.af(a,a,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new s.P(0,t))}getCameraQueryGeometry(t){let a=this.getCameraPoint();if(t.length===1)return[t[0],a];{let h=a.x,g=a.y,f=a.x,y=a.y;for(let B of t)h=Math.min(h,B.x),g=Math.min(g,B.y),f=Math.max(f,B.x),y=Math.max(y,B.y);return[new s.P(h,g),new s.P(f,g),new s.P(f,y),new s.P(h,y),new s.P(h,g)]}}lngLatToCameraDepth(t,a){let h=this.locationCoordinate(t),g=[h.x*this.worldSize,h.y*this.worldSize,a,1];return s.af(g,g,this.modelViewProjectionMatrix),g[2]/g[3]}}function Uo(u,t){let a,h=!1,g=null,f=null,y=()=>{g=null,h&&(u.apply(f,a),g=setTimeout(y,t),h=!1)};return(...B)=>(h=!0,f=this,a=B,g||y(),g)}class Qo{constructor(t){this._getCurrentHash=()=>{let a=window.location.hash.replace("#","");if(this._hashName){let h;return a.split("&").map(g=>g.split("=")).forEach(g=>{g[0]===this._hashName&&(h=g)}),(h&&h[1]||"").split("/")}return a.split("/")},this._onHashChange=()=>{let a=this._getCurrentHash();if(a.length>=3&&!a.some(h=>isNaN(h))){let h=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(a[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+a[2],+a[1]],zoom:+a[0],bearing:h,pitch:+(a[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let a=window.location.href.replace(/(#.+)?$/,this.getHashString());window.history.replaceState(window.history.state,null,a)},this._removeHash=()=>{let a=this._getCurrentHash();if(a.length===0)return;let h=a.join("/"),g=h;g.split("&").length>0&&(g=g.split("&")[0]),this._hashName&&(g=`${this._hashName}=${h}`);let f=window.location.hash.replace(g,"");f.startsWith("#&")?f=f.slice(0,1)+f.slice(2):f==="#"&&(f="");let y=window.location.href.replace(/(#.+)?$/,f);y=y.replace("&&","&"),window.history.replaceState(window.history.state,null,y)},this._updateHash=Uo(this._updateHashUnthrottled,300),this._hashName=t&&encodeURIComponent(t)}addTo(t){return this._map=t,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(t){let a=this._map.getCenter(),h=Math.round(100*this._map.getZoom())/100,g=Math.ceil((h*Math.LN2+Math.log(512/360/.5))/Math.LN10),f=Math.pow(10,g),y=Math.round(a.lng*f)/f,B=Math.round(a.lat*f)/f,x=this._map.getBearing(),k=this._map.getPitch(),R="";if(R+=t?`/${y}/${B}/${h}`:`${h}/${B}/${y}`,(x||k)&&(R+="/"+Math.round(10*x)/10),k&&(R+=`/${Math.round(k)}`),this._hashName){let G=this._hashName,P=!1,M=window.location.hash.slice(1).split("&").map(j=>{let et=j.split("=")[0];return et===G?(P=!0,`${et}=${R}`):j}).filter(j=>j);return P||M.push(`${G}=${R}`),`#${M.join("&")}`}return`#${R}`}}let lo={linearity:.3,easing:s.b8(0,0,.3,1)},Za=s.e({deceleration:2500,maxSpeed:1400},lo),Us=s.e({deceleration:20,maxSpeed:1400},lo),Ro=s.e({deceleration:1e3,maxSpeed:360},lo),xr=s.e({deceleration:1e3,maxSpeed:90},lo);class kr{constructor(t){this._map=t,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:w.now(),settings:t})}_drainInertiaBuffer(){let t=this._inertiaBuffer,a=w.now();for(;t.length>0&&a-t[0].time>160;)t.shift()}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let a={zoom:0,bearing:0,pitch:0,pan:new s.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:f}of this._inertiaBuffer)a.zoom+=f.zoomDelta||0,a.bearing+=f.bearingDelta||0,a.pitch+=f.pitchDelta||0,f.panDelta&&a.pan._add(f.panDelta),f.around&&(a.around=f.around),f.pinchAround&&(a.pinchAround=f.pinchAround);let h=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,g={};if(a.pan.mag()){let f=qr(a.pan.mag(),h,s.e({},Za,t||{}));g.offset=a.pan.mult(f.amount/a.pan.mag()),g.center=this._map.transform.center,Vr(g,f)}if(a.zoom){let f=qr(a.zoom,h,Us);g.zoom=this._map.transform.zoom+f.amount,Vr(g,f)}if(a.bearing){let f=qr(a.bearing,h,Ro);g.bearing=this._map.transform.bearing+s.ac(f.amount,-179,179),Vr(g,f)}if(a.pitch){let f=qr(a.pitch,h,xr);g.pitch=this._map.transform.pitch+f.amount,Vr(g,f)}if(g.zoom||g.bearing){let f=a.pinchAround===void 0?a.around:a.pinchAround;g.around=f?this._map.unproject(f):this._map.getCenter()}return this.clear(),s.e(g,{noMoveStart:!0})}}function Vr(u,t){(!u.duration||u.durationa.unproject(x)),B=f.reduce((x,k,R,G)=>x.add(k.div(G.length)),new s.P(0,0));super(t,{points:f,point:B,lngLats:y,lngLat:a.unproject(B),originalEvent:h}),this._defaultPrevented=!1}}class Pa extends s.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,a,h){super(t,{originalEvent:h}),this._defaultPrevented=!1}}class sl{constructor(t,a){this._map=t,this._clickTolerance=a.clickTolerance}reset(){delete this._mousedownPos}wheel(t){return this._firePreventable(new Pa(t.type,this._map,t))}mousedown(t,a){return this._mousedownPos=a,this._firePreventable(new zr(t.type,this._map,t))}mouseup(t){this._map.fire(new zr(t.type,this._map,t))}click(t,a){this._mousedownPos&&this._mousedownPos.dist(a)>=this._clickTolerance||this._map.fire(new zr(t.type,this._map,t))}dblclick(t){return this._firePreventable(new zr(t.type,this._map,t))}mouseover(t){this._map.fire(new zr(t.type,this._map,t))}mouseout(t){this._map.fire(new zr(t.type,this._map,t))}touchstart(t){return this._firePreventable(new ns(t.type,this._map,t))}touchmove(t){this._map.fire(new ns(t.type,this._map,t))}touchend(t){this._map.fire(new ns(t.type,this._map,t))}touchcancel(t){this._map.fire(new ns(t.type,this._map,t))}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class $r{constructor(t){this._map=t}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(t){this._map.fire(new zr(t.type,this._map,t))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new zr("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new zr(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Qs{constructor(t){this._map=t}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(t){return this.transform.pointLocation(s.P.convert(t),this._map.terrain)}}class ss{constructor(t,a){this._map=t,this._tr=new Qs(t),this._el=t.getCanvasContainer(),this._container=t.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(t,a){this.isEnabled()&&t.shiftKey&&t.button===0&&(_.disableDrag(),this._startPos=this._lastPos=a,this._active=!0)}mousemoveWindow(t,a){if(!this._active)return;let h=a;if(this._lastPos.equals(h)||!this._box&&h.dist(this._startPos)f.fitScreenCoordinates(h,g,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",t)}keydown(t){this._active&&t.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",t))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(_.remove(this._box),this._box=null),_.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(t,a){return this._map.fire(new s.k(t,{originalEvent:a}))}}function vA(u,t){if(u.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${u.length}, points ${t.length}`);let a={};for(let h=0;hthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=t.timeStamp),h.length===this.numTouches&&(this.centroid=function(g){let f=new s.P(0,0);for(let y of g)f._add(y);return f.div(g.length)}(a),this.touches=vA(h,a)))}touchmove(t,a,h){if(this.aborted||!this.centroid)return;let g=vA(h,a);for(let f in this.touches){let y=g[f];(!y||y.dist(this.touches[f])>30)&&(this.aborted=!0)}}touchend(t,a,h){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),h.length===0){let g=!this.aborted&&this.centroid;if(this.reset(),g)return g}}}class ol{constructor(t){this.singleTap=new Ml(t),this.numTaps=t.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(t,a,h){this.singleTap.touchstart(t,a,h)}touchmove(t,a,h){this.singleTap.touchmove(t,a,h)}touchend(t,a,h){let g=this.singleTap.touchend(t,a,h);if(g){let f=t.timeStamp-this.lastTime<500,y=!this.lastTap||this.lastTap.dist(g)<30;if(f&&y||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=g,this.count===this.numTaps)return this.reset(),g}}}class Ia{constructor(t){this._tr=new Qs(t),this._zoomIn=new ol({numTouches:1,numTaps:2}),this._zoomOut=new ol({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(t,a,h){this._zoomIn.touchstart(t,a,h),this._zoomOut.touchstart(t,a,h)}touchmove(t,a,h){this._zoomIn.touchmove(t,a,h),this._zoomOut.touchmove(t,a,h)}touchend(t,a,h){let g=this._zoomIn.touchend(t,a,h),f=this._zoomOut.touchend(t,a,h),y=this._tr;return g?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:B=>B.easeTo({duration:300,zoom:y.zoom+1,around:y.unproject(g)},{originalEvent:t})}):f?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:B=>B.easeTo({duration:300,zoom:y.zoom-1,around:y.unproject(f)},{originalEvent:t})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Rs{constructor(t){this._enabled=!!t.enable,this._moveStateManager=t.moveStateManager,this._clickTolerance=t.clickTolerance||1,this._moveFunction=t.move,this._activateOnStart=!!t.activateOnStart,t.assignEvents(this),this.reset()}reset(t){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(t)}_move(...t){let a=this._moveFunction(...t);if(a.bearingDelta||a.pitchDelta||a.around||a.panDelta)return this._active=!0,a}dragStart(t,a){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(t)&&(this._moveStateManager.startMove(t),this._lastPoint=a.length?a[0]:a,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(t,a){if(!this.isEnabled())return;let h=this._lastPoint;if(!h)return;if(t.preventDefault(),!this._moveStateManager.isValidMoveEvent(t))return void this.reset(t);let g=a.length?a[0]:a;return!this._moved&&g.dist(h){u.mousedown=u.dragStart,u.mousemoveWindow=u.dragMove,u.mouseup=u.dragEnd,u.contextmenu=t=>{t.preventDefault()}},Nl=({enable:u,clickTolerance:t,bearingDegreesPerPixelMoved:a=.8})=>{let h=new Yn({checkCorrectEvent:g=>_.mouseButton(g)===0&&g.ctrlKey||_.mouseButton(g)===2});return new Rs({clickTolerance:t,move:(g,f)=>({bearingDelta:(f.x-g.x)*a}),moveStateManager:h,enable:u,assignEvents:Ha})},BA=({enable:u,clickTolerance:t,pitchDegreesPerPixelMoved:a=-.5})=>{let h=new Yn({checkCorrectEvent:g=>_.mouseButton(g)===0&&g.ctrlKey||_.mouseButton(g)===2});return new Rs({clickTolerance:t,move:(g,f)=>({pitchDelta:(f.y-g.y)*a}),moveStateManager:h,enable:u,assignEvents:Ha})};class Go{constructor(t,a){this._clickTolerance=t.clickTolerance||1,this._map=a,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new s.P(0,0)}_shouldBePrevented(t){return t<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(t,a,h){return this._calculateTransform(t,a,h)}touchmove(t,a,h){if(this._active){if(!this._shouldBePrevented(h.length))return t.preventDefault(),this._calculateTransform(t,a,h);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",t)}}touchend(t,a,h){this._calculateTransform(t,a,h),this._active&&this._shouldBePrevented(h.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(t,a,h){h.length>0&&(this._active=!0);let g=vA(h,a),f=new s.P(0,0),y=new s.P(0,0),B=0;for(let k in g){let R=g[k],G=this._touches[k];G&&(f._add(R),y._add(R.sub(G)),B++,g[k]=R)}if(this._touches=g,this._shouldBePrevented(B)||!y.mag())return;let x=y.div(B);return this._sum._add(x),this._sum.mag()Math.abs(u.x)}class FA extends _A{constructor(t){super(),this._currentTouchCount=0,this._map=t}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(t,a,h){super.touchstart(t,a,h),this._currentTouchCount=h.length}_start(t){this._lastPoints=t,Vl(t[0].sub(t[1]))&&(this._valid=!1)}_move(t,a,h){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let g=t[0].sub(this._lastPoints[0]),f=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(g,f,h.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(g.y+f.y)/2*-.5}):void 0}gestureBeginsVertically(t,a,h){if(this._valid!==void 0)return this._valid;let g=t.mag()>=2,f=a.mag()>=2;if(!g&&!f)return;if(!g||!f)return this._firstMove===void 0&&(this._firstMove=h),h-this._firstMove<100&&void 0;let y=t.y>0==a.y>0;return Vl(t)&&Vl(a)&&y}}let Lc={panStep:100,bearingStep:15,pitchStep:10};class Gs{constructor(t){this._tr=new Qs(t);let a=Lc;this._panStep=a.panStep,this._bearingStep=a.bearingStep,this._pitchStep=a.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let a=0,h=0,g=0,f=0,y=0;switch(t.keyCode){case 61:case 107:case 171:case 187:a=1;break;case 189:case 109:case 173:a=-1;break;case 37:t.shiftKey?h=-1:(t.preventDefault(),f=-1);break;case 39:t.shiftKey?h=1:(t.preventDefault(),f=1);break;case 38:t.shiftKey?g=1:(t.preventDefault(),y=-1);break;case 40:t.shiftKey?g=-1:(t.preventDefault(),y=1);break;default:return}return this._rotationDisabled&&(h=0,g=0),{cameraAnimation:B=>{let x=this._tr;B.easeTo({duration:300,easeId:"keyboardHandler",easing:Zo,zoom:a?Math.round(x.zoom)+a*(t.shiftKey?2:1):x.zoom,bearing:x.bearing+h*this._bearingStep,pitch:x.pitch+g*this._pitchStep,offset:[-f*this._panStep,-y*this._panStep],center:x.center},{originalEvent:t})}}}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 Zo(u){return u*(2-u)}let Ec=4.000244140625;class co{constructor(t,a){this._onTimeout=h=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(h)},this._map=t,this._tr=new Qs(t),this._triggerRenderFrame=a,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(t){this._defaultZoomRate=t}setWheelZoomRate(t){this._wheelZoomRate=t}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!t&&t.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(t){return!!this._map.cooperativeGestures.isEnabled()&&!(t.ctrlKey||this._map.cooperativeGestures.isBypassed(t))}wheel(t){if(!this.isEnabled())return;if(this._shouldBePrevented(t))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",t);let a=t.deltaMode===WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY,h=w.now(),g=h-(this._lastWheelEventTime||0);this._lastWheelEventTime=h,a!==0&&a%Ec==0?this._type="wheel":a!==0&&Math.abs(a)<4?this._type="trackpad":g>400?(this._type=null,this._lastValue=a,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(g*a)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,a+=this._lastValue)),t.shiftKey&&a&&(a/=4),this._type&&(this._lastWheelEvent=t,this._delta-=a,this._active||this._start(t)),t.preventDefault()}_start(t){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);let a=_.mousePos(this._map.getCanvas(),t),h=this._tr;this._around=a.y>h.transform.height/2-h.transform.getHorizon()?s.N.convert(this._aroundCenter?h.center:h.unproject(a)):s.N.convert(h.center),this._aroundPoint=h.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let t=this._tr.transform;if(this._delta!==0){let x=this._type==="wheel"&&Math.abs(this._delta)>Ec?this._wheelZoomRate:this._defaultZoomRate,k=2/(1+Math.exp(-Math.abs(this._delta*x)));this._delta<0&&k!==0&&(k=1/k);let R=typeof this._targetZoom=="number"?t.zoomScale(this._targetZoom):t.scale;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(R*k))),this._type==="wheel"&&(this._startZoom=t.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let a=typeof this._targetZoom=="number"?this._targetZoom:t.zoom,h=this._startZoom,g=this._easing,f,y=!1,B=w.now()-this._lastWheelEventTime;if(this._type==="wheel"&&h&&g&&B){let x=Math.min(B/200,1),k=g(x);f=s.y.number(h,a,k),x<1?this._frameId||(this._frameId=!0):y=!0}else f=a,y=!0;return this._active=!0,y&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!y,zoomDelta:f-t.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let a=s.b9;if(this._prevEase){let h=this._prevEase,g=(w.now()-h.start)/h.duration,f=h.easing(g+.01)-h.easing(g),y=.27/Math.sqrt(f*f+1e-4)*.01,B=Math.sqrt(.0729-y*y);a=s.b8(y,B,.25,1)}return this._prevEase={start:w.now(),duration:t,easing:a},a}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class Ma{constructor(t,a){this._clickZoom=t,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 Tc{constructor(t){this._tr=new Qs(t),this.reset()}reset(){this._active=!1}dblclick(t,a){return t.preventDefault(),{cameraAnimation:h=>{h.easeTo({duration:300,zoom:this._tr.zoom+(t.shiftKey?-1:1),around:this._tr.unproject(a)},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Uc{constructor(){this._tap=new ol({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(t,a,h){if(!this._swipePoint)if(this._tapTime){let g=a[0],f=t.timeStamp-this._tapTime<500,y=this._tapPoint.dist(g)<30;f&&y?h.length>0&&(this._swipePoint=g,this._swipeTouch=h[0].identifier):this.reset()}else this._tap.touchstart(t,a,h)}touchmove(t,a,h){if(this._tapTime){if(this._swipePoint){if(h[0].identifier!==this._swipeTouch)return;let g=a[0],f=g.y-this._swipePoint.y;return this._swipePoint=g,t.preventDefault(),this._active=!0,{zoomDelta:f/128}}}else this._tap.touchmove(t,a,h)}touchend(t,a,h){if(this._tapTime)this._swipePoint&&h.length===0&&this.reset();else{let g=this._tap.touchend(t,a,h);g&&(this._tapTime=t.timeStamp,this._tapPoint=g)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class kA{constructor(t,a,h){this._el=t,this._mousePan=a,this._touchPan=h}enable(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Cu{constructor(t,a,h){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=a,this._mousePitch=h}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 Qc{constructor(t,a,h,g){this._el=t,this._touchZoom=a,this._touchRotate=h,this._tapDragZoom=g,this._rotationDisabled=!1,this._enabled=!0}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-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()}}class Na{constructor(t,a){this._bypassKey=navigator.userAgent.indexOf("Mac")!==-1?"metaKey":"ctrlKey",this._map=t,this._options=a,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let t=this._map.getCanvasContainer();t.classList.add("maplibregl-cooperative-gestures"),this._container=_.create("div","maplibregl-cooperative-gesture-screen",t);let a=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(a=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let h=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),g=document.createElement("div");g.className="maplibregl-desktop-message",g.textContent=a,this._container.appendChild(g);let f=document.createElement("div");f.className="maplibregl-mobile-message",f.textContent=h,this._container.appendChild(f),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(_.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(t){return t[this._bypassKey]}notifyGestureBlocked(t,a){this._enabled&&(this._map.fire(new s.k("cooperativegestureprevented",{gestureType:t,originalEvent:a})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}let Zs=u=>u.zoom||u.drag||u.pitch||u.rotate;class oi extends s.k{}function Dl(u){return u.panDelta&&u.panDelta.mag()||u.zoomDelta||u.bearingDelta||u.pitchDelta}class Rc{constructor(t,a){this.handleWindowEvent=g=>{this.handleEvent(g,`${g.type}Window`)},this.handleEvent=(g,f)=>{if(g.type==="blur")return void this.stop(!0);this._updatingCamera=!0;let y=g.type==="renderFrame"?void 0:g,B={needsRenderFrame:!1},x={},k={},R=g.touches,G=R?this._getMapTouches(R):void 0,P=G?_.touchPos(this._map.getCanvas(),G):_.mousePos(this._map.getCanvas(),g);for(let{handlerName:et,handler:W,allowed:X}of this._handlers){if(!W.isEnabled())continue;let ct;this._blockedByActive(k,X,et)?W.reset():W[f||g.type]&&(ct=W[f||g.type](g,P,G),this.mergeHandlerResult(B,x,ct,et,y),ct&&ct.needsRenderFrame&&this._triggerRenderFrame()),(ct||W.isActive())&&(k[et]=W)}let M={};for(let et in this._previousActiveHandlers)k[et]||(M[et]=y);this._previousActiveHandlers=k,(Object.keys(M).length||Dl(B))&&(this._changes.push([B,x,M]),this._triggerRenderFrame()),(Object.keys(k).length||Dl(B))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:j}=B;j&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],j(this._map))},this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new kr(t),this._bearingSnap=a.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(a);let h=this._el;this._listeners=[[h,"touchstart",{passive:!0}],[h,"touchmove",{passive:!1}],[h,"touchend",void 0],[h,"touchcancel",void 0],[h,"mousedown",void 0],[h,"mousemove",void 0],[h,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[h,"mouseover",void 0],[h,"mouseout",void 0],[h,"dblclick",void 0],[h,"click",void 0],[h,"keydown",{capture:!1}],[h,"keyup",void 0],[h,"wheel",{passive:!1}],[h,"contextmenu",void 0],[window,"blur",void 0]];for(let[g,f,y]of this._listeners)_.addEventListener(g,f,g===document?this.handleWindowEvent:this.handleEvent,y)}destroy(){for(let[t,a,h]of this._listeners)_.removeEventListener(t,a,t===document?this.handleWindowEvent:this.handleEvent,h)}_addDefaultHandlers(t){let a=this._map,h=a.getCanvasContainer();this._add("mapEvent",new sl(a,t));let g=a.boxZoom=new ss(a,t);this._add("boxZoom",g),t.interactive&&t.boxZoom&&g.enable();let f=a.cooperativeGestures=new Na(a,t.cooperativeGestures);this._add("cooperativeGestures",f),t.cooperativeGestures&&f.enable();let y=new Ia(a),B=new Tc(a);a.doubleClickZoom=new Ma(B,y),this._add("tapZoom",y),this._add("clickZoom",B),t.interactive&&t.doubleClickZoom&&a.doubleClickZoom.enable();let x=new Uc;this._add("tapDragZoom",x);let k=a.touchPitch=new FA(a);this._add("touchPitch",k),t.interactive&&t.touchPitch&&a.touchPitch.enable(t.touchPitch);let R=Nl(t),G=BA(t);a.dragRotate=new Cu(t,R,G),this._add("mouseRotate",R,["mousePitch"]),this._add("mousePitch",G,["mouseRotate"]),t.interactive&&t.dragRotate&&a.dragRotate.enable();let P=(({enable:ct,clickTolerance:rt})=>{let ut=new Yn({checkCorrectEvent:Ft=>_.mouseButton(Ft)===0&&!Ft.ctrlKey});return new Rs({clickTolerance:rt,move:(Ft,Qt)=>({around:Qt,panDelta:Qt.sub(Ft)}),activateOnStart:!0,moveStateManager:ut,enable:ct,assignEvents:Ha})})(t),M=new Go(t,a);a.dragPan=new kA(h,P,M),this._add("mousePan",P),this._add("touchPan",M,["touchZoom","touchRotate"]),t.interactive&&t.dragPan&&a.dragPan.enable(t.dragPan);let j=new ll,et=new Al;a.touchZoomRotate=new Qc(h,et,j,x),this._add("touchRotate",j,["touchPan","touchZoom"]),this._add("touchZoom",et,["touchPan","touchRotate"]),t.interactive&&t.touchZoomRotate&&a.touchZoomRotate.enable(t.touchZoomRotate);let W=a.scrollZoom=new co(a,()=>this._triggerRenderFrame());this._add("scrollZoom",W,["mousePan"]),t.interactive&&t.scrollZoom&&a.scrollZoom.enable(t.scrollZoom);let X=a.keyboard=new Gs(a);this._add("keyboard",X),t.interactive&&t.keyboard&&a.keyboard.enable(),this._add("blockableMapEvent",new $r(a))}_add(t,a,h){this._handlers.push({handlerName:t,handler:a,allowed:h}),this._handlersById[t]=a}stop(t){if(!this._updatingCamera){for(let{handler:a}of this._handlers)a.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[]}}isActive(){for(let{handler:t}of this._handlers)if(t.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return Boolean(Zs(this._eventsInProgress))||this.isZooming()}_blockedByActive(t,a,h){for(let g in t)if(g!==h&&(!a||a.indexOf(g)<0))return!0;return!1}_getMapTouches(t){let a=[];for(let h of t)this._el.contains(h.target)&&a.push(h);return a}mergeHandlerResult(t,a,h,g,f){if(!h)return;s.e(t,h);let y={handlerName:g,originalEvent:h.originalEvent||f};h.zoomDelta!==void 0&&(a.zoom=y),h.panDelta!==void 0&&(a.drag=y),h.pitchDelta!==void 0&&(a.pitch=y),h.bearingDelta!==void 0&&(a.rotate=y)}_applyChanges(){let t={},a={},h={};for(let[g,f,y]of this._changes)g.panDelta&&(t.panDelta=(t.panDelta||new s.P(0,0))._add(g.panDelta)),g.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+g.zoomDelta),g.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+g.bearingDelta),g.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+g.pitchDelta),g.around!==void 0&&(t.around=g.around),g.pinchAround!==void 0&&(t.pinchAround=g.pinchAround),g.noInertia&&(t.noInertia=g.noInertia),s.e(a,f),s.e(h,y);this._updateMapTransform(t,a,h),this._changes=[]}_updateMapTransform(t,a,h){let g=this._map,f=g._getTransformForUpdate(),y=g.terrain;if(!(Dl(t)||y&&this._terrainMovement))return this._fireEvents(a,h,!0);let{panDelta:B,zoomDelta:x,bearingDelta:k,pitchDelta:R,around:G,pinchAround:P}=t;P!==void 0&&(G=P),g._stop(!0),G=G||g.transform.centerPoint;let M=f.pointLocation(B?G.sub(B):G);k&&(f.bearing+=k),R&&(f.pitch+=R),x&&(f.zoom+=x),y?this._terrainMovement||!a.drag&&!a.zoom?a.drag&&this._terrainMovement?f.center=f.pointLocation(f.centerPoint.sub(B)):f.setLocationAtPoint(M,G):(this._terrainMovement=!0,this._map._elevationFreeze=!0,f.setLocationAtPoint(M,G)):f.setLocationAtPoint(M,G),g._applyUpdatedTransform(f),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(a,h,!0)}_fireEvents(t,a,h){let g=Zs(this._eventsInProgress),f=Zs(t),y={};for(let G in t){let{originalEvent:P}=t[G];this._eventsInProgress[G]||(y[`${G}start`]=P),this._eventsInProgress[G]=t[G]}!g&&f&&this._fireEvent("movestart",f.originalEvent);for(let G in y)this._fireEvent(G,y[G]);f&&this._fireEvent("move",f.originalEvent);for(let G in t){let{originalEvent:P}=t[G];this._fireEvent(G,P)}let B={},x;for(let G in this._eventsInProgress){let{handlerName:P,originalEvent:M}=this._eventsInProgress[G];this._handlersById[P].isActive()||(delete this._eventsInProgress[G],x=a[P]||M,B[`${G}end`]=x)}for(let G in B)this._fireEvent(G,B[G]);let k=Zs(this._eventsInProgress),R=(g||f)&&!k;if(R&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let G=this._map._getTransformForUpdate();G.recalculateZoom(this._map.terrain),this._map._applyUpdatedTransform(G)}if(h&&R){this._updatingCamera=!0;let G=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),P=M=>M!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new oi("renderFrame",{timeStamp:t})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class ia extends s.E{constructor(t,a){super(),this._renderFrameCallback=()=>{let h=Math.min((w.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(h)),h<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=a.bearingSnap,this.on("moveend",()=>{delete this._requestedCameraState})}getCenter(){return new s.N(this.transform.center.lng,this.transform.center.lat)}setCenter(t,a){return this.jumpTo({center:t},a)}panBy(t,a,h){return t=s.P.convert(t).mult(-1),this.panTo(this.transform.center,s.e({offset:t},a),h)}panTo(t,a,h){return this.easeTo(s.e({center:t},a),h)}getZoom(){return this.transform.zoom}setZoom(t,a){return this.jumpTo({zoom:t},a),this}zoomTo(t,a,h){return this.easeTo(s.e({zoom:t},a),h)}zoomIn(t,a){return this.zoomTo(this.getZoom()+1,t,a),this}zoomOut(t,a){return this.zoomTo(this.getZoom()-1,t,a),this}getBearing(){return this.transform.bearing}setBearing(t,a){return this.jumpTo({bearing:t},a),this}getPadding(){return this.transform.padding}setPadding(t,a){return this.jumpTo({padding:t},a),this}rotateTo(t,a,h){return this.easeTo(s.e({bearing:t},a),h)}resetNorth(t,a){return this.rotateTo(0,s.e({duration:1e3},t),a),this}resetNorthPitch(t,a){return this.easeTo(s.e({bearing:0,pitch:0,duration:1e3},t),a),this}snapToNorth(t,a){return Math.abs(this.getBearing()){if(this._zooming&&(g.zoom=s.y.number(f,W,se)),this._rotating&&(g.bearing=s.y.number(y,k,se)),this._pitching&&(g.pitch=s.y.number(B,R,se)),this._padding&&(g.interpolatePadding(x,G,se),M=g.centerPoint.add(P)),this.terrain&&!t.freezeElevation&&this._updateElevation(se),ut)g.setLocationAtPoint(ut,Ft);else{let oe=g.zoomScale(g.zoom-f),xe=W>f?Math.min(2,rt):Math.max(.5,rt),Ue=Math.pow(xe,1-se),_e=g.unproject(X.add(ct.mult(se*Ue)).mult(oe));g.setLocationAtPoint(g.renderWorldCopies?_e.wrap():_e,M)}this._applyUpdatedTransform(g),this._fireMoveEvents(a)},se=>{this.terrain&&t.freezeElevation&&this._finalizeElevation(),this._afterEase(a,se)},t),this}_prepareEase(t,a,h={}){this._moving=!0,a||h.moving||this.fire(new s.k("movestart",t)),this._zooming&&!h.zooming&&this.fire(new s.k("zoomstart",t)),this._rotating&&!h.rotating&&this.fire(new s.k("rotatestart",t)),this._pitching&&!h.pitching&&this.fire(new s.k("pitchstart",t))}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(t,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(t){this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let a=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(t<1&&a!==this._elevationTarget){let h=this._elevationTarget-this._elevationStart;this._elevationStart+=t*(h-(a-(h*t+this._elevationStart))/(1-t)),this._elevationTarget=a}this.transform.elevation=s.y.number(this._elevationStart,this._elevationTarget,t)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(t){let a=t.getCameraPosition(),h=this.terrain.getElevationForLngLatZoom(a.lngLat,t.zoom);if(a.altitudethis._elevateCameraIfInsideTerrain(g)),this.transformCameraUpdate&&a.push(g=>this.transformCameraUpdate(g)),!a.length)return;let h=t.clone();for(let g of a){let f=h.clone(),{center:y,zoom:B,pitch:x,bearing:k,elevation:R}=g(f);y&&(f.center=y),B!==void 0&&(f.zoom=B),x!==void 0&&(f.pitch=x),k!==void 0&&(f.bearing=k),R!==void 0&&(f.elevation=R),h.apply(f)}this.transform.apply(h)}_fireMoveEvents(t){this.fire(new s.k("move",t)),this._zooming&&this.fire(new s.k("zoom",t)),this._rotating&&this.fire(new s.k("rotate",t)),this._pitching&&this.fire(new s.k("pitch",t))}_afterEase(t,a){if(this._easeId&&a&&this._easeId===a)return;delete this._easeId;let h=this._zooming,g=this._rotating,f=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,h&&this.fire(new s.k("zoomend",t)),g&&this.fire(new s.k("rotateend",t)),f&&this.fire(new s.k("pitchend",t)),this.fire(new s.k("moveend",t))}flyTo(t,a){var h;if(!t.essential&&w.prefersReducedMotion){let Ge=s.M(t,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Ge,a)}this.stop(),t=s.e({offset:[0,0],speed:1.2,curve:1.42,easing:s.b9},t);let g=this._getTransformForUpdate(),f=g.zoom,y=g.bearing,B=g.pitch,x=g.padding,k="bearing"in t?this._normalizeBearing(t.bearing,y):y,R="pitch"in t?+t.pitch:B,G="padding"in t?t.padding:g.padding,P=s.P.convert(t.offset),M=g.centerPoint.add(P),j=g.pointLocation(M),{center:et,zoom:W}=g.getConstrained(s.N.convert(t.center||j),(h=t.zoom)!==null&&h!==void 0?h:f);this._normalizeCenter(et,g);let X=g.zoomScale(W-f),ct=g.project(j),rt=g.project(et).sub(ct),ut=t.curve,Ft=Math.max(g.width,g.height),Qt=Ft/X,se=rt.mag();if("minZoom"in t){let Ge=s.ac(Math.min(t.minZoom,f,W),g.minZoom,g.maxZoom),Ci=Ft/g.zoomScale(Ge-f);ut=Math.sqrt(Ci/se*2)}let oe=ut*ut;function xe(Ge){let Ci=(Qt*Qt-Ft*Ft+(Ge?-1:1)*oe*oe*se*se)/(2*(Ge?Qt:Ft)*oe*se);return Math.log(Math.sqrt(Ci*Ci+1)-Ci)}function Ue(Ge){return(Math.exp(Ge)-Math.exp(-Ge))/2}function _e(Ge){return(Math.exp(Ge)+Math.exp(-Ge))/2}let Be=xe(!1),De=function(Ge){return _e(Be)/_e(Be+ut*Ge)},ri=function(Ge){return Ft*((_e(Be)*(Ue(Ci=Be+ut*Ge)/_e(Ci))-Ue(Be))/oe)/se;var Ci},ve=(xe(!0)-Be)/ut;if(Math.abs(se)<1e-6||!isFinite(ve)){if(Math.abs(Ft-Qt)<1e-6)return this.easeTo(t,a);let Ge=Qt0,De=Ci=>Math.exp(Ge*ut*Ci)}return t.duration="duration"in t?+t.duration:1e3*ve/("screenSpeed"in t?+t.screenSpeed/ut:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0),this._zooming=!0,this._rotating=y!==k,this._pitching=R!==B,this._padding=!g.isPaddingEqual(G),this._prepareEase(a,!1),this.terrain&&this._prepareElevation(et),this._ease(Ge=>{let Ci=Ge*ve,Ji=1/De(Ci);g.zoom=Ge===1?W:f+g.scaleZoom(Ji),this._rotating&&(g.bearing=s.y.number(y,k,Ge)),this._pitching&&(g.pitch=s.y.number(B,R,Ge)),this._padding&&(g.interpolatePadding(x,G,Ge),M=g.centerPoint.add(P)),this.terrain&&!t.freezeElevation&&this._updateElevation(Ge);let Ui=Ge===1?et:g.unproject(ct.add(rt.mult(ri(Ci))).mult(Ji));g.setLocationAtPoint(g.renderWorldCopies?Ui.wrap():Ui,M),this._applyUpdatedTransform(g),this._fireMoveEvents(a)},()=>{this.terrain&&t.freezeElevation&&this._finalizeElevation(),this._afterEase(a)},t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(t,a){var h;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let g=this._onEaseEnd;delete this._onEaseEnd,g.call(this,a)}return t||(h=this.handlers)===null||h===void 0||h.stop(!1),this}_ease(t,a,h){h.animate===!1||h.duration===0?(t(1),a()):(this._easeStart=w.now(),this._easeOptions=h,this._onEaseFrame=t,this._onEaseEnd=a,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(t,a){t=s.b3(t,-180,180);let h=Math.abs(t-a);return Math.abs(t-360-a)180?-360:h<-180?360:0}queryTerrainElevation(t){return this.terrain?this.terrain.getElevationForLngLatZoom(s.N.convert(t),this.transform.tileZoom)-this.transform.elevation:null}}let Nn={compact:!0,customAttribution:'MapLibre'};class os{constructor(t=Nn){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=a=>{!a||a.sourceDataType!=="metadata"&&a.sourceDataType!=="visibility"&&a.dataType!=="style"&&a.type!=="terrain"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=t}getDefaultPosition(){return"bottom-right"}onAdd(t){return this._map=t,this._compact=this.options.compact,this._container=_.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=_.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=_.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){_.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(t,a){let h=this._map._getUIString(`AttributionControl.${a}`);t.title=h,t.setAttribute("aria-label",h)}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map(g=>typeof g!="string"?"":g)):typeof this.options.customAttribution=="string"&&t.push(this.options.customAttribution)),this._map.style.stylesheet){let g=this._map.style.stylesheet;this.styleOwner=g.owner,this.styleId=g.id}let a=this._map.style.sourceCaches;for(let g in a){let f=a[g];if(f.used||f.usedForTerrain){let y=f.getSource();y.attribution&&t.indexOf(y.attribution)<0&&t.push(y.attribution)}}t=t.filter(g=>String(g).trim()),t.sort((g,f)=>g.length-f.length),t=t.filter((g,f)=>{for(let y=f+1;y=0)return!1;return!0});let h=t.join(" | ");h!==this._attribHTML&&(this._attribHTML=h,t.length?(this._innerContainer.innerHTML=h,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Gc{constructor(t={}){this._updateCompact=()=>{let a=this._container.children;if(a.length){let h=a[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&h.classList.add("maplibregl-compact"):h.classList.remove("maplibregl-compact")}},this.options=t}getDefaultPosition(){return"bottom-left"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=_.create("div","maplibregl-ctrl");let a=_.create("a","maplibregl-ctrl-logo");return a.target="_blank",a.rel="noopener nofollow",a.href="https://maplibre.org/",a.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),a.setAttribute("rel","noopener nofollow"),this._container.appendChild(a),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){_.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class lr{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(t){let a=++this._id;return this._queue.push({callback:t,id:a,cancelled:!1}),a}remove(t){let a=this._currentlyRunning,h=a?this._queue.concat(a):this._queue;for(let g of h)if(g.id===t)return void(g.cancelled=!0)}run(t=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let a=this._currentlyRunning=this._queue;this._queue=[];for(let h of a)if(!h.cancelled&&(h.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var Po=s.Y([{name:"a_pos3d",type:"Int16",components:3}]);class Ps extends s.E{constructor(t){super(),this.sourceCache=t,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,t.usedForTerrain=!0,t.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(t,a){this.sourceCache.update(t,a),this._renderableTilesKeys=[];let h={};for(let g of t.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:a}))h[g.key]=!0,this._renderableTilesKeys.push(g.key),this._tiles[g.key]||(g.posMatrix=new Float64Array(16),s.aP(g.posMatrix,0,s.X,0,s.X,0,1),this._tiles[g.key]=new Ei(g,this.tileSize));for(let g in this._tiles)h[g]||delete this._tiles[g]}freeRtt(t){for(let a in this._tiles){let h=this._tiles[a];(!t||h.tileID.equals(t)||h.tileID.isChildOf(t)||t.isChildOf(h.tileID))&&(h.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(t=>this.getTileByID(t))}getTileByID(t){return this._tiles[t]}getTerrainCoords(t){let a={};for(let h of this._renderableTilesKeys){let g=this._tiles[h].tileID;if(g.canonical.equals(t.canonical)){let f=t.clone();f.posMatrix=new Float64Array(16),s.aP(f.posMatrix,0,s.X,0,s.X,0,1),a[h]=f}else if(g.canonical.isChildOf(t.canonical)){let f=t.clone();f.posMatrix=new Float64Array(16);let y=g.canonical.z-t.canonical.z,B=g.canonical.x-(g.canonical.x>>y<>y<>y;s.aP(f.posMatrix,0,k,0,k,0,1),s.J(f.posMatrix,f.posMatrix,[-B*k,-x*k,0]),a[h]=f}else if(t.canonical.isChildOf(g.canonical)){let f=t.clone();f.posMatrix=new Float64Array(16);let y=t.canonical.z-g.canonical.z,B=t.canonical.x-(t.canonical.x>>y<>y<>y;s.aP(f.posMatrix,0,s.X,0,s.X,0,1),s.J(f.posMatrix,f.posMatrix,[B*k,x*k,0]),s.K(f.posMatrix,f.posMatrix,[1/2**y,1/2**y,0]),a[h]=f}}return a}getSourceTile(t,a){let h=this.sourceCache._source,g=t.overscaledZ-this.deltaZoom;if(g>h.maxzoom&&(g=h.maxzoom),g=h.minzoom&&(!f||!f.dem);)f=this.sourceCache.getTileByID(t.scaledTo(g--).key);return f}tilesAfterTime(t=Date.now()){return Object.values(this._tiles).filter(a=>a.timeAdded>=t)}}class Zc{constructor(t,a,h){this.painter=t,this.sourceCache=new Ps(a),this.options=h,this.exaggeration=typeof h.exaggeration=="number"?h.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(t,a,h,g=s.X){var f;if(!(a>=0&&a=0&&ht.canonical.z&&(t.canonical.z>=g?f=t.canonical.z-g:s.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let y=t.canonical.x-(t.canonical.x>>f<>f<>8<<4|f>>8,a[y+3]=0;let h=new s.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(a.buffer)),g=new Mt(t,h,t.gl.RGBA,{premultiply:!1});return g.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),this._coordsTexture=g,g}pointCoordinate(t){this.painter.maybeDrawDepthAndCoords(!0);let a=new Uint8Array(4),h=this.painter.context,g=h.gl,f=Math.round(t.x*this.painter.pixelRatio/devicePixelRatio),y=Math.round(t.y*this.painter.pixelRatio/devicePixelRatio),B=Math.round(this.painter.height/devicePixelRatio);h.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),g.readPixels(f,B-y-1,1,1,g.RGBA,g.UNSIGNED_BYTE,a),h.bindFramebuffer.set(null);let x=a[0]+(a[2]>>4<<8),k=a[1]+((15&a[2])<<8),R=this.coordsIndex[255-a[3]],G=R&&this.sourceCache.getTileByID(R);if(!G)return null;let P=this._coordsTextureSize,M=(1<t.id!==a),this._recentlyUsed.push(t.id)}stampObject(t){t.stamp=++this._stamp}getOrCreateFreeObject(){for(let a of this._recentlyUsed)if(!this._objects[a].inUse)return this._objects[a];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let t=this._createObject(this._objects.length);return this._objects.push(t),t}freeObject(t){t.inUse=!1}freeAllObjects(){for(let t of this._objects)this.freeObject(t)}isFull(){return!(this._objects.length!t.inUse)===!1}}let Va={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class Pc{constructor(t,a){this.painter=t,this.terrain=a,this.pool=new kh(t.context,30,a.sourceCache.tileSize*a.qualityFactor)}destruct(){this.pool.destruct()}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,a){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=t._order.filter(h=>!t._layers[h].isHidden(a)),this._coordsDescendingInv={};for(let h in t.sourceCaches){this._coordsDescendingInv[h]={};let g=t.sourceCaches[h].getVisibleCoordinates();for(let f of g){let y=this.terrain.sourceCache.getTerrainCoords(f);for(let B in y)this._coordsDescendingInv[h][B]||(this._coordsDescendingInv[h][B]=[]),this._coordsDescendingInv[h][B].push(y[B])}}this._coordsDescendingInvStr={};for(let h of t._order){let g=t._layers[h],f=g.source;if(Va[g.type]&&!this._coordsDescendingInvStr[f]){this._coordsDescendingInvStr[f]={};for(let y in this._coordsDescendingInv[f])this._coordsDescendingInvStr[f][y]=this._coordsDescendingInv[f][y].map(B=>B.key).sort().join()}}for(let h of this._renderableTiles)for(let g in this._coordsDescendingInvStr){let f=this._coordsDescendingInvStr[g][h.tileID.key];f&&f!==h.rttCoords[g]&&(h.rtt=[])}}renderLayer(t){if(t.isHidden(this.painter.transform.zoom))return!1;let a=t.type,h=this.painter,g=this._renderableLayerIds[this._renderableLayerIds.length-1]===t.id;if(Va[a]&&(this._prevType&&Va[this._prevType]||this._stacks.push([]),this._prevType=a,this._stacks[this._stacks.length-1].push(t.id),!g))return!0;if(Va[this._prevType]||Va[a]&&g){this._prevType=a;let f=this._stacks.length-1,y=this._stacks[f]||[];for(let B of this._renderableTiles){if(this.pool.isFull()&&(Ga(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(B),B.rtt[f]){let k=this.pool.getObjectForId(B.rtt[f].id);if(k.stamp===B.rtt[f].stamp){this.pool.useObject(k);continue}}let x=this.pool.getOrCreateFreeObject();this.pool.useObject(x),this.pool.stampObject(x),B.rtt[f]={id:x.id,stamp:x.stamp},h.context.bindFramebuffer.set(x.fbo.framebuffer),h.context.clear({color:s.aM.transparent,stencil:0}),h.currentStencilSource=void 0;for(let k=0;k{u.touchstart=u.dragStart,u.touchmoveWindow=u.dragMove,u.touchend=u.dragEnd},Ol={showCompass:!0,showZoom:!0,visualizePitch:!1};class cl{constructor(t,a,h=!1){this.mousedown=y=>{this.startMouse(s.e({},y,{ctrlKey:!0,preventDefault:()=>y.preventDefault()}),_.mousePos(this.element,y)),_.addEventListener(window,"mousemove",this.mousemove),_.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=y=>{this.moveMouse(y,_.mousePos(this.element,y))},this.mouseup=y=>{this.mouseRotate.dragEnd(y),this.mousePitch&&this.mousePitch.dragEnd(y),this.offTemp()},this.touchstart=y=>{y.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=_.touchPos(this.element,y.targetTouches)[0],this.startTouch(y,this._startPos),_.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),_.addEventListener(window,"touchend",this.touchend))},this.touchmove=y=>{y.targetTouches.length!==1?this.reset():(this._lastPos=_.touchPos(this.element,y.targetTouches)[0],this.moveTouch(y,this._lastPos))},this.touchend=y=>{y.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let g=t.dragRotate._mouseRotate.getClickTolerance(),f=t.dragRotate._mousePitch.getClickTolerance();this.element=a,this.mouseRotate=Nl({clickTolerance:g,enable:!0}),this.touchRotate=(({enable:y,clickTolerance:B,bearingDegreesPerPixelMoved:x=.8})=>{let k=new wA;return new Rs({clickTolerance:B,move:(R,G)=>({bearingDelta:(G.x-R.x)*x}),moveStateManager:k,enable:y,assignEvents:LA})})({clickTolerance:g,enable:!0}),this.map=t,h&&(this.mousePitch=BA({clickTolerance:f,enable:!0}),this.touchPitch=(({enable:y,clickTolerance:B,pitchDegreesPerPixelMoved:x=-.5})=>{let k=new wA;return new Rs({clickTolerance:B,move:(R,G)=>({pitchDelta:(G.y-R.y)*x}),moveStateManager:k,enable:y,assignEvents:LA})})({clickTolerance:f,enable:!0})),_.addEventListener(a,"mousedown",this.mousedown),_.addEventListener(a,"touchstart",this.touchstart,{passive:!1}),_.addEventListener(a,"touchcancel",this.reset)}startMouse(t,a){this.mouseRotate.dragStart(t,a),this.mousePitch&&this.mousePitch.dragStart(t,a),_.disableDrag()}startTouch(t,a){this.touchRotate.dragStart(t,a),this.touchPitch&&this.touchPitch.dragStart(t,a),_.disableDrag()}moveMouse(t,a){let h=this.map,{bearingDelta:g}=this.mouseRotate.dragMove(t,a)||{};if(g&&h.setBearing(h.getBearing()+g),this.mousePitch){let{pitchDelta:f}=this.mousePitch.dragMove(t,a)||{};f&&h.setPitch(h.getPitch()+f)}}moveTouch(t,a){let h=this.map,{bearingDelta:g}=this.touchRotate.dragMove(t,a)||{};if(g&&h.setBearing(h.getBearing()+g),this.touchPitch){let{pitchDelta:f}=this.touchPitch.dragMove(t,a)||{};f&&h.setPitch(h.getPitch()+f)}}off(){let t=this.element;_.removeEventListener(t,"mousedown",this.mousedown),_.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),_.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),_.removeEventListener(window,"touchend",this.touchend),_.removeEventListener(t,"touchcancel",this.reset),this.offTemp()}offTemp(){_.enableDrag(),_.removeEventListener(window,"mousemove",this.mousemove),_.removeEventListener(window,"mouseup",this.mouseup),_.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),_.removeEventListener(window,"touchend",this.touchend)}}let jn;function Qr(u,t,a){let h=new s.N(u.lng,u.lat);if(u=new s.N(u.lng,u.lat),t){let g=new s.N(u.lng-360,u.lat),f=new s.N(u.lng+360,u.lat),y=a.locationPoint(u).distSqr(t);a.locationPoint(g).distSqr(t)180;){let g=a.locationPoint(u);if(g.x>=0&&g.y>=0&&g.x<=a.width&&g.y<=a.height)break;u.lng>a.center.lng?u.lng-=360:u.lng+=360}return u.lng!==h.lng&&a.locationPoint(u).y>a.height/2-a.getHorizon()?u:h}let EA={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%)"};function ul(u,t,a){let h=u.classList;for(let g in EA)h.remove(`maplibregl-${a}-anchor-${g}`);h.add(`maplibregl-${a}-anchor-${t}`)}class zl extends s.E{constructor(t){if(super(),this._onKeyPress=a=>{let h=a.code,g=a.charCode||a.keyCode;h!=="Space"&&h!=="Enter"&&g!==32&&g!==13||this.togglePopup()},this._onMapClick=a=>{let h=a.originalEvent.target,g=this._element;this._popup&&(h===g||g.contains(h))&&this.togglePopup()},this._update=a=>{var h;if(!this._map)return;let g=this._map.loaded()&&!this._map.isMoving();(a?.type==="terrain"||a?.type==="render"&&!g)&&this._map.once("render",this._update),this._lngLat=this._map.transform.renderWorldCopies?Qr(this._lngLat,this._flatPos,this._map.transform):(h=this._lngLat)===null||h===void 0?void 0:h.wrap(),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationPoint(this._lngLat)._add(this._offset));let f="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?f=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(f=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let y="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?y="rotateX(0deg)":this._pitchAlignment==="map"&&(y=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||a&&a.type!=="moveend"||(this._pos=this._pos.round()),_.setTransform(this._element,`${EA[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${y} ${f}`),w.frameAsync(new AbortController).then(()=>{this._updateOpacity(a&&a.type==="moveend")}).catch(()=>{})},this._onMove=a=>{if(!this._isDragging){let h=this._clickTolerance||this._map._clickTolerance;this._isDragging=a.point.dist(this._pointerdownPos)>=h}this._isDragging&&(this._pos=a.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new s.k("dragstart"))),this.fire(new s.k("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new s.k("dragend")),this._state="inactive"},this._addDragHandler=a=>{this._element.contains(a.originalEvent.target)&&(a.preventDefault(),this._positionDelta=a.point.sub(this._pos).add(this._offset),this._pointerdownPos=a.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=t&&t.anchor||"center",this._color=t&&t.color||"#3FB1CE",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._subpixelPositioning=t&&t.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||"auto",this._pitchAlignment=t&&t.pitchAlignment&&t.pitchAlignment!=="auto"?t.pitchAlignment:this._rotationAlignment,this.setOpacity(),this.setOpacity(t?.opacity,t?.opacityWhenCovered),t&&t.element)this._element=t.element,this._offset=s.P.convert(t&&t.offset||[0,0]);else{this._defaultMarker=!0,this._element=_.create("div");let a=_.createNS("http://www.w3.org/2000/svg","svg"),h=41,g=27;a.setAttributeNS(null,"display","block"),a.setAttributeNS(null,"height",`${h}px`),a.setAttributeNS(null,"width",`${g}px`),a.setAttributeNS(null,"viewBox",`0 0 ${g} ${h}`);let f=_.createNS("http://www.w3.org/2000/svg","g");f.setAttributeNS(null,"stroke","none"),f.setAttributeNS(null,"stroke-width","1"),f.setAttributeNS(null,"fill","none"),f.setAttributeNS(null,"fill-rule","evenodd");let y=_.createNS("http://www.w3.org/2000/svg","g");y.setAttributeNS(null,"fill-rule","nonzero");let B=_.createNS("http://www.w3.org/2000/svg","g");B.setAttributeNS(null,"transform","translate(3.0, 29.0)"),B.setAttributeNS(null,"fill","#000000");let x=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let X of x){let ct=_.createNS("http://www.w3.org/2000/svg","ellipse");ct.setAttributeNS(null,"opacity","0.04"),ct.setAttributeNS(null,"cx","10.5"),ct.setAttributeNS(null,"cy","5.80029008"),ct.setAttributeNS(null,"rx",X.rx),ct.setAttributeNS(null,"ry",X.ry),B.appendChild(ct)}let k=_.createNS("http://www.w3.org/2000/svg","g");k.setAttributeNS(null,"fill",this._color);let R=_.createNS("http://www.w3.org/2000/svg","path");R.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),k.appendChild(R);let G=_.createNS("http://www.w3.org/2000/svg","g");G.setAttributeNS(null,"opacity","0.25"),G.setAttributeNS(null,"fill","#000000");let P=_.createNS("http://www.w3.org/2000/svg","path");P.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),G.appendChild(P);let M=_.createNS("http://www.w3.org/2000/svg","g");M.setAttributeNS(null,"transform","translate(6.0, 7.0)"),M.setAttributeNS(null,"fill","#FFFFFF");let j=_.createNS("http://www.w3.org/2000/svg","g");j.setAttributeNS(null,"transform","translate(8.0, 8.0)");let et=_.createNS("http://www.w3.org/2000/svg","circle");et.setAttributeNS(null,"fill","#000000"),et.setAttributeNS(null,"opacity","0.25"),et.setAttributeNS(null,"cx","5.5"),et.setAttributeNS(null,"cy","5.5"),et.setAttributeNS(null,"r","5.4999962");let W=_.createNS("http://www.w3.org/2000/svg","circle");W.setAttributeNS(null,"fill","#FFFFFF"),W.setAttributeNS(null,"cx","5.5"),W.setAttributeNS(null,"cy","5.5"),W.setAttributeNS(null,"r","5.4999962"),j.appendChild(et),j.appendChild(W),y.appendChild(B),y.appendChild(k),y.appendChild(G),y.appendChild(M),y.appendChild(j),a.appendChild(y),a.setAttributeNS(null,"height",h*this._scale+"px"),a.setAttributeNS(null,"width",g*this._scale+"px"),this._element.appendChild(a),this._offset=s.P.convert(t&&t.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",a=>{a.preventDefault()}),this._element.addEventListener("mousedown",a=>{a.preventDefault()}),ul(this._element,this._anchor,"marker"),t&&t.className)for(let a of t.className.split(" "))this._element.classList.add(a);this._popup=null}addTo(t){return this.remove(),this._map=t,this._element.setAttribute("aria-label",t._getUIString("Marker.Title")),t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),t.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),_.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=s.N.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),t){if(!("offset"in t.options)){let g=Math.abs(13.5)/Math.SQRT2;t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[g,-1*(38.1-13.5+g)],"bottom-right":[-g,-1*(38.1-13.5+g)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=t,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(t){return this._subpixelPositioning=t,this}getPopup(){return this._popup}togglePopup(){let t=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:t?(t.isOpen()?t.remove():(t.setLngLat(this._lngLat),t.addTo(this._map)),this):this}_updateOpacity(t=!1){var a,h;if(!(!((a=this._map)===null||a===void 0)&&a.terrain))return void(this._element.style.opacity!==this._opacity&&(this._element.style.opacity=this._opacity));if(t)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}let g=this._map,f=g.terrain.depthAtPoint(this._pos),y=g.terrain.getElevationForLngLatZoom(this._lngLat,g.transform.tileZoom);if(g.transform.lngLatToCameraDepth(this._lngLat,y)-f<.006)return void(this._element.style.opacity=this._opacity);let B=-this._offset.y/g.transform._pixelPerMeter,x=Math.sin(g.getPitch()*Math.PI/180)*B,k=g.terrain.depthAtPoint(new s.P(this._pos.x,this._pos.y-this._offset.y)),R=g.transform.lngLatToCameraDepth(this._lngLat,y+x)-k>.006;((h=this._popup)===null||h===void 0?void 0:h.isOpen())&&R&&this._popup.remove(),this._element.style.opacity=R?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(t){return this._offset=s.P.convert(t),this._update(),this}addClassName(t){this._element.classList.add(t)}removeClassName(t){this._element.classList.remove(t)}toggleClassName(t){return this._element.classList.toggle(t)}setDraggable(t){return this._draggable=!!t,this._map&&(t?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&t!=="auto"?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(t,a){return t===void 0&&a===void 0&&(this._opacity="1",this._opacityWhenCovered="0.2"),t!==void 0&&(this._opacity=t),a!==void 0&&(this._opacityWhenCovered=a),this._map&&this._updateOpacity(!0),this}}let Iu={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},hl=0,gl=!1,Ho={maxWidth:100,unit:"metric"};function dl(u,t,a){let h=a&&a.maxWidth||100,g=u._container.clientHeight/2,f=u.unproject([0,g]),y=u.unproject([h,g]),B=f.distanceTo(y);if(a&&a.unit==="imperial"){let x=3.2808*B;x>5280?gi(t,h,x/5280,u._getUIString("ScaleControl.Miles")):gi(t,h,x,u._getUIString("ScaleControl.Feet"))}else a&&a.unit==="nautical"?gi(t,h,B/1852,u._getUIString("ScaleControl.NauticalMiles")):B>=1e3?gi(t,h,B/1e3,u._getUIString("ScaleControl.Kilometers")):gi(t,h,B,u._getUIString("ScaleControl.Meters"))}function gi(u,t,a,h){let g=function(f){let y=Math.pow(10,`${Math.floor(f)}`.length-1),B=f/y;return B=B>=10?10:B>=5?5:B>=3?3:B>=2?2:B>=1?1:function(x){let k=Math.pow(10,Math.ceil(-Math.log(x)/Math.LN10));return Math.round(x*k)/k}(B),y*B}(a);u.style.width=t*(g/a)+"px",u.innerHTML=`${g} ${h}`}let _i={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1},Wl=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Jl(u){if(u){if(typeof u=="number"){let t=Math.round(Math.abs(u)/Math.SQRT2);return{center:new s.P(0,0),top:new s.P(0,u),"top-left":new s.P(t,t),"top-right":new s.P(-t,t),bottom:new s.P(0,-u),"bottom-left":new s.P(t,-t),"bottom-right":new s.P(-t,-t),left:new s.P(u,0),right:new s.P(-u,0)}}if(u instanceof s.P||Array.isArray(u)){let t=s.P.convert(u);return{center:t,top:t,"top-left":t,"top-right":t,bottom:t,"bottom-left":t,"bottom-right":t,left:t,right:t}}return{center:s.P.convert(u.center||[0,0]),top:s.P.convert(u.top||[0,0]),"top-left":s.P.convert(u["top-left"]||[0,0]),"top-right":s.P.convert(u["top-right"]||[0,0]),bottom:s.P.convert(u.bottom||[0,0]),"bottom-left":s.P.convert(u["bottom-left"]||[0,0]),"bottom-right":s.P.convert(u["bottom-right"]||[0,0]),left:s.P.convert(u.left||[0,0]),right:s.P.convert(u.right||[0,0])}}return Jl(new s.P(0,0))}let Xl=p;l.AJAXError=s.bh,l.Evented=s.E,l.LngLat=s.N,l.MercatorCoordinate=s.Z,l.Point=s.P,l.addProtocol=s.bi,l.config=s.a,l.removeProtocol=s.bj,l.AttributionControl=os,l.BoxZoomHandler=ss,l.CanvasSource=ti,l.CooperativeGesturesHandler=Na,l.DoubleClickZoomHandler=Ma,l.DragPanHandler=kA,l.DragRotateHandler=Cu,l.EdgeInsets=Mn,l.FullscreenControl=class extends s.E{constructor(u={}){super(),this._onFullscreenChange=()=>{var t;let a=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;!((t=a?.shadowRoot)===null||t===void 0)&&t.fullscreenElement;)a=a.shadowRoot.fullscreenElement;a===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,u&&u.container&&(u.container instanceof HTMLElement?this._container=u.container:s.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(u){return this._map=u,this._container||(this._container=this._map.getContainer()),this._controlContainer=_.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){_.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let u=this._fullscreenButton=_.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);_.create("span","maplibregl-ctrl-icon",u).setAttribute("aria-hidden","true"),u.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let u=this._getTitle();this._fullscreenButton.setAttribute("aria-label",u),this._fullscreenButton.title=u}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new s.k("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new s.k("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},l.GeoJSONSource=Le,l.GeolocateControl=class extends s.E{constructor(u){super(),this._onSuccess=t=>{if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new s.k("outofmaxbounds",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(t),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new s.k("geolocate",t)),this._finish()}},this._updateCamera=t=>{let a=new s.N(t.coords.longitude,t.coords.latitude),h=t.coords.accuracy,g=this._map.getBearing(),f=s.e({bearing:g},this.options.fitBoundsOptions),y=Dt.fromLngLat(a,h);this._map.fitBounds(y,f,{geolocateSource:!0})},this._updateMarker=t=>{if(t){let a=new s.N(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(a).addTo(this._map),this._userLocationDotMarker.setLngLat(a).addTo(this._map),this._accuracy=t.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=t=>{if(this._map){if(this.options.trackUserLocation)if(t.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let a=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=a,this._geolocateButton.setAttribute("aria-label",a),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(t.code===3&&gl)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new s.k("error",t)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",t=>t.preventDefault()),this._geolocateButton=_.create("button","maplibregl-ctrl-geolocate",this._container),_.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=t=>{if(this._map){if(t===!1){s.w("Geolocation support is not available so the GeolocateControl will be disabled.");let a=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=a,this._geolocateButton.setAttribute("aria-label",a)}else{let a=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=a,this._geolocateButton.setAttribute("aria-label",a)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=_.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new zl({element:this._dotElement}),this._circleElement=_.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new zl({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",a=>{a.geolocateSource||this._watchState!=="ACTIVE_LOCK"||a.originalEvent&&a.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new s.k("trackuserlocationend")),this.fire(new s.k("userlocationlostfocus")))})}},this.options=s.e({},Iu,u)}onAdd(u){return this._map=u,this._container=_.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return s._(this,arguments,void 0,function*(t=!1){if(jn!==void 0&&!t)return jn;if(window.navigator.permissions===void 0)return jn=!!window.navigator.geolocation,jn;try{jn=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch{jn=!!window.navigator.geolocation}return jn})}().then(t=>this._finishSetupUI(t)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),_.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,hl=0,gl=!1}_isOutOfMapMaxBounds(u){let t=this._map.getMaxBounds(),a=u.coords;return t&&(a.longitudet.getEast()||a.latitudet.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let u=this._map.getBounds(),t=u.getSouthEast(),a=u.getNorthEast(),h=t.distanceTo(a),g=Math.ceil(this._accuracy/(h/this._map._container.clientHeight)*2);this._circleElement.style.width=`${g}px`,this._circleElement.style.height=`${g}px`}trigger(){if(!this._setup)return s.w("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.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":hl--,gl=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new s.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new s.k("trackuserlocationstart")),this.fire(new s.k("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let u;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),hl++,hl>1?(u={maximumAge:6e5,timeout:0},gl=!0):(u=this.options.positionOptions,gl=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,u)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},l.Hash=Qo,l.ImageSource=Ke,l.KeyboardHandler=Gs,l.LngLatBounds=Dt,l.LogoControl=Gc,l.Map=class extends ia{constructor(u){s.bf.mark(s.bg.create);let t=Object.assign(Object.assign({},Lh),u);if(t.minZoom!=null&&t.maxZoom!=null&&t.minZoom>t.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(t.minPitch!=null&&t.maxPitch!=null&&t.minPitch>t.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(t.minPitch!=null&&t.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(t.maxPitch!=null&&t.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new Ts(t.minZoom,t.maxZoom,t.minPitch,t.maxPitch,t.renderWorldCopies),{bearingSnap:t.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new lr,this._controls=[],this._mapId=s.a4(),this._contextLost=a=>{a.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new s.k("webglcontextlost",{originalEvent:a}))},this._contextRestored=a=>{this._setupPainter(),this.resize(),this._update(),this.fire(new s.k("webglcontextrestored",{originalEvent:a}))},this._onMapScroll=a=>{if(a.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=t.interactive,this._maxTileCacheSize=t.maxTileCacheSize,this._maxTileCacheZoomLevels=t.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat===!0,this._preserveDrawingBuffer=t.preserveDrawingBuffer===!0,this._antialias=t.antialias===!0,this._trackResize=t.trackResize===!0,this._bearingSnap=t.bearingSnap,this._refreshExpiredTiles=t.refreshExpiredTiles===!0,this._fadeDuration=t.fadeDuration,this._crossSourceCollisions=t.crossSourceCollisions===!0,this._collectResourceTiming=t.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},Kl),t.locale),this._clickTolerance=t.clickTolerance,this._overridePixelRatio=t.pixelRatio,this._maxCanvasSize=t.maxCanvasSize,this.transformCameraUpdate=t.transformCameraUpdate,this.cancelPendingTileRequestsWhileZooming=t.cancelPendingTileRequestsWhileZooming===!0,this._imageQueueHandle=D.addThrottleControl(()=>this.isMoving()),this._requestManager=new tt(t.transformRequest),typeof t.container=="string"){if(this._container=document.getElementById(t.container),!this._container)throw new Error(`Container '${t.container}' not found.`)}else{if(!(t.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=t.container}if(t.maxBounds&&this.setMaxBounds(t.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)).on("moveend",()=>this._update(!1)).on("zoom",()=>this._update(!0)).on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}).once("idle",()=>{this._idleTriggered=!0}),typeof window<"u"){addEventListener("online",this._onWindowOnline,!1);let a=!1,h=Uo(g=>{this._trackResize&&!this._removed&&(this.resize(g),this.redraw())},50);this._resizeObserver=new ResizeObserver(g=>{a?h(g):a=!0}),this._resizeObserver.observe(this._container)}this.handlers=new Rc(this,t),this._hash=t.hash&&new Qo(typeof t.hash=="string"&&t.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:t.center,zoom:t.zoom,bearing:t.bearing,pitch:t.pitch}),t.bounds&&(this.resize(),this.fitBounds(t.bounds,s.e({},t.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=t.localIdeographFontFamily,this._validateStyle=t.validateStyle,t.style&&this.setStyle(t.style,{localIdeographFontFamily:t.localIdeographFontFamily}),t.attributionControl&&this.addControl(new os(typeof t.attributionControl=="boolean"?void 0:t.attributionControl)),t.maplibreLogo&&this.addControl(new Gc,t.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",a=>{this._update(a.dataType==="style"),this.fire(new s.k(`${a.dataType}data`,a))}),this.on("dataloading",a=>{this.fire(new s.k(`${a.dataType}dataloading`,a))}),this.on("dataabort",a=>{this.fire(new s.k("sourcedataabort",a))})}_getMapId(){return this._mapId}addControl(u,t){if(t===void 0&&(t=u.getDefaultPosition?u.getDefaultPosition():"top-right"),!u||!u.onAdd)return this.fire(new s.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let a=u.onAdd(this);this._controls.push(u);let h=this._controlPositions[t];return t.indexOf("bottom")!==-1?h.insertBefore(a,h.firstChild):h.appendChild(a),this}removeControl(u){if(!u||!u.onRemove)return this.fire(new s.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let t=this._controls.indexOf(u);return t>-1&&this._controls.splice(t,1),u.onRemove(this),this}hasControl(u){return this._controls.indexOf(u)>-1}calculateCameraOptionsFromTo(u,t,a,h){return h==null&&this.terrain&&(h=this.terrain.getElevationForLngLatZoom(a,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(u,t,a,h)}resize(u){var t;let a=this._containerDimensions(),h=a[0],g=a[1],f=this._getClampedPixelRatio(h,g);if(this._resizeCanvas(h,g,f),this.painter.resize(h,g,f),this.painter.overLimit()){let B=this.painter.context.gl;this._maxCanvasSize=[B.drawingBufferWidth,B.drawingBufferHeight];let x=this._getClampedPixelRatio(h,g);this._resizeCanvas(h,g,x),this.painter.resize(h,g,x)}this.transform.resize(h,g),(t=this._requestedCameraState)===null||t===void 0||t.resize(h,g);let y=!this._moving;return y&&(this.stop(),this.fire(new s.k("movestart",u)).fire(new s.k("move",u))),this.fire(new s.k("resize",u)),y&&this.fire(new s.k("moveend",u)),this}_getClampedPixelRatio(u,t){let{0:a,1:h}=this._maxCanvasSize,g=this.getPixelRatio(),f=u*g,y=t*g;return Math.min(f>a?a/f:1,y>h?h/y:1)*g}getPixelRatio(){var u;return(u=this._overridePixelRatio)!==null&&u!==void 0?u:devicePixelRatio}setPixelRatio(u){this._overridePixelRatio=u,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(u){return this.transform.setMaxBounds(Dt.convert(u)),this._update()}setMinZoom(u){if((u=u??-2)>=-2&&u<=this.transform.maxZoom)return this.transform.minZoom=u,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=u,this._update(),this.getZoom()>u&&this.setZoom(u),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(u){if((u=u??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(u>=0&&u<=this.transform.maxPitch)return this.transform.minPitch=u,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(u>=this.transform.minPitch)return this.transform.maxPitch=u,this._update(),this.getPitch()>u&&this.setPitch(u),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(u){return this.transform.renderWorldCopies=u,this._update()}project(u){return this.transform.locationPoint(s.N.convert(u),this.style&&this.terrain)}unproject(u){return this.transform.pointLocation(s.P.convert(u),this.terrain)}isMoving(){var u;return this._moving||((u=this.handlers)===null||u===void 0?void 0:u.isMoving())}isZooming(){var u;return this._zooming||((u=this.handlers)===null||u===void 0?void 0:u.isZooming())}isRotating(){var u;return this._rotating||((u=this.handlers)===null||u===void 0?void 0:u.isRotating())}_createDelegatedListener(u,t,a){if(u==="mouseenter"||u==="mouseover"){let h=!1;return{layers:t,listener:a,delegates:{mousemove:f=>{let y=t.filter(x=>this.getLayer(x)),B=y.length!==0?this.queryRenderedFeatures(f.point,{layers:y}):[];B.length?h||(h=!0,a.call(this,new zr(u,this,f.originalEvent,{features:B}))):h=!1},mouseout:()=>{h=!1}}}}if(u==="mouseleave"||u==="mouseout"){let h=!1;return{layers:t,listener:a,delegates:{mousemove:y=>{let B=t.filter(x=>this.getLayer(x));(B.length!==0?this.queryRenderedFeatures(y.point,{layers:B}):[]).length?h=!0:h&&(h=!1,a.call(this,new zr(u,this,y.originalEvent)))},mouseout:y=>{h&&(h=!1,a.call(this,new zr(u,this,y.originalEvent)))}}}}{let h=g=>{let f=t.filter(B=>this.getLayer(B)),y=f.length!==0?this.queryRenderedFeatures(g.point,{layers:f}):[];y.length&&(g.features=y,a.call(this,g),delete g.features)};return{layers:t,listener:a,delegates:{[u]:h}}}}_saveDelegatedListener(u,t){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[u]=this._delegatedListeners[u]||[],this._delegatedListeners[u].push(t)}_removeDelegatedListener(u,t,a){if(!this._delegatedListeners||!this._delegatedListeners[u])return;let h=this._delegatedListeners[u];for(let g=0;gt.includes(y))){for(let y in f.delegates)this.off(y,f.delegates[y]);return void h.splice(g,1)}}}on(u,t,a){if(a===void 0)return super.on(u,t);let h=this._createDelegatedListener(u,typeof t=="string"?[t]:t,a);this._saveDelegatedListener(u,h);for(let g in h.delegates)this.on(g,h.delegates[g]);return this}once(u,t,a){if(a===void 0)return super.once(u,t);let h=typeof t=="string"?[t]:t,g=this._createDelegatedListener(u,h,a);for(let f in g.delegates){let y=g.delegates[f];g.delegates[f]=(...B)=>{this._removeDelegatedListener(u,h,a),y(...B)}}this._saveDelegatedListener(u,g);for(let f in g.delegates)this.once(f,g.delegates[f]);return this}off(u,t,a){return a===void 0?super.off(u,t):(this._removeDelegatedListener(u,typeof t=="string"?[t]:t,a),this)}queryRenderedFeatures(u,t){if(!this.style)return[];let a,h=u instanceof s.P||Array.isArray(u),g=h?u:[[0,0],[this.transform.width,this.transform.height]];if(t=t||(h?{}:u)||{},g instanceof s.P||typeof g[0]=="number")a=[s.P.convert(g)];else{let f=s.P.convert(g[0]),y=s.P.convert(g[1]);a=[f,new s.P(y.x,f.y),y,new s.P(f.x,y.y),f]}return this.style.queryRenderedFeatures(a,t,this.transform)}querySourceFeatures(u,t){return this.style.querySourceFeatures(u,t)}setStyle(u,t){return(t=s.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},t)).diff!==!1&&t.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&u?(this._diffStyle(u,t),this):(this._localIdeographFontFamily=t.localIdeographFontFamily,this._updateStyle(u,t))}setTransformRequest(u){return this._requestManager.setTransformRequest(u),this}_getUIString(u){let t=this._locale[u];if(t==null)throw new Error(`Missing UI string '${u}'`);return t}_updateStyle(u,t){if(t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(u,t));let a=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!u)),u?(this.style=new pt(this,t||{}),this.style.setEventedParent(this,{style:this.style}),typeof u=="string"?this.style.loadURL(u,t,a):this.style.loadJSON(u,t,a),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new pt(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(u,t){if(typeof u=="string"){let a=this._requestManager.transformRequest(u,"Style");s.h(a,new AbortController).then(h=>{this._updateDiff(h.data,t)}).catch(h=>{h&&this.fire(new s.j(h))})}else typeof u=="object"&&this._updateDiff(u,t)}_updateDiff(u,t){try{this.style.setState(u,t)&&this._update(!0)}catch(a){s.w(`Unable to perform style diff: ${a.message||a.error||a}. Rebuilding the style from scratch.`),this._updateStyle(u,t)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():s.w("There is no style added to the map.")}addSource(u,t){return this._lazyInitEmptyStyle(),this.style.addSource(u,t),this._update(!0)}isSourceLoaded(u){let t=this.style&&this.style.sourceCaches[u];if(t!==void 0)return t.loaded();this.fire(new s.j(new Error(`There is no source with ID '${u}'`)))}setTerrain(u){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),u){let t=this.style.sourceCaches[u.source];if(!t)throw new Error(`cannot load terrain, because there exists no source with ID: ${u.source}`);this.terrain===null&&t.reload();for(let a in this.style._layers){let h=this.style._layers[a];h.type==="hillshade"&&h.source===u.source&&s.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Zc(this.painter,t,u),this.painter.renderToTexture=new Pc(this.painter,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=a=>{a.dataType==="style"?this.terrain.sourceCache.freeRtt():a.dataType==="source"&&a.tile&&(a.sourceId!==u.source||this._elevationFreeze||(this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(a.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.minElevationForCurrentTile=0,this.transform.elevation=0;return this.fire(new s.k("terrain",{terrain:u})),this}getTerrain(){var u,t;return(t=(u=this.terrain)===null||u===void 0?void 0:u.options)!==null&&t!==void 0?t:null}areTilesLoaded(){let u=this.style&&this.style.sourceCaches;for(let t in u){let a=u[t]._tiles;for(let h in a){let g=a[h];if(g.state!=="loaded"&&g.state!=="errored")return!1}}return!0}removeSource(u){return this.style.removeSource(u),this._update(!0)}getSource(u){return this.style.getSource(u)}addImage(u,t,a={}){let{pixelRatio:h=1,sdf:g=!1,stretchX:f,stretchY:y,content:B,textFitWidth:x,textFitHeight:k}=a;if(this._lazyInitEmptyStyle(),!(t instanceof HTMLImageElement||s.b(t))){if(t.width===void 0||t.height===void 0)return this.fire(new s.j(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`")));{let{width:R,height:G,data:P}=t,M=t;return this.style.addImage(u,{data:new s.R({width:R,height:G},new Uint8Array(P)),pixelRatio:h,stretchX:f,stretchY:y,content:B,textFitWidth:x,textFitHeight:k,sdf:g,version:0,userImage:M}),M.onAdd&&M.onAdd(this,u),this}}{let{width:R,height:G,data:P}=w.getImageData(t);this.style.addImage(u,{data:new s.R({width:R,height:G},P),pixelRatio:h,stretchX:f,stretchY:y,content:B,textFitWidth:x,textFitHeight:k,sdf:g,version:0})}}updateImage(u,t){let a=this.style.getImage(u);if(!a)return this.fire(new s.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let h=t instanceof HTMLImageElement||s.b(t)?w.getImageData(t):t,{width:g,height:f,data:y}=h;if(g===void 0||f===void 0)return this.fire(new s.j(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`")));if(g!==a.data.width||f!==a.data.height)return this.fire(new s.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));let B=!(t instanceof HTMLImageElement||s.b(t));return a.data.replace(y,B),this.style.updateImage(u,a),this}getImage(u){return this.style.getImage(u)}hasImage(u){return u?!!this.style.getImage(u):(this.fire(new s.j(new Error("Missing required image id"))),!1)}removeImage(u){this.style.removeImage(u)}loadImage(u){return D.getImage(this._requestManager.transformRequest(u,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(u,t){return this._lazyInitEmptyStyle(),this.style.addLayer(u,t),this._update(!0)}moveLayer(u,t){return this.style.moveLayer(u,t),this._update(!0)}removeLayer(u){return this.style.removeLayer(u),this._update(!0)}getLayer(u){return this.style.getLayer(u)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(u,t,a){return this.style.setLayerZoomRange(u,t,a),this._update(!0)}setFilter(u,t,a={}){return this.style.setFilter(u,t,a),this._update(!0)}getFilter(u){return this.style.getFilter(u)}setPaintProperty(u,t,a,h={}){return this.style.setPaintProperty(u,t,a,h),this._update(!0)}getPaintProperty(u,t){return this.style.getPaintProperty(u,t)}setLayoutProperty(u,t,a,h={}){return this.style.setLayoutProperty(u,t,a,h),this._update(!0)}getLayoutProperty(u,t){return this.style.getLayoutProperty(u,t)}setGlyphs(u,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(u,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(u,t,a={}){return this._lazyInitEmptyStyle(),this.style.addSprite(u,t,a,h=>{h||this._update(!0)}),this}removeSprite(u){return this._lazyInitEmptyStyle(),this.style.removeSprite(u),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(u,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(u,t,a=>{a||this._update(!0)}),this}setLight(u,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(u,t),this._update(!0)}getLight(){return this.style.getLight()}setSky(u){return this._lazyInitEmptyStyle(),this.style.setSky(u),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(u,t){return this.style.setFeatureState(u,t),this._update()}removeFeatureState(u,t){return this.style.removeFeatureState(u,t),this._update()}getFeatureState(u){return this.style.getFeatureState(u)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let u=0,t=0;return this._container&&(u=this._container.clientWidth||400,t=this._container.clientHeight||300),[u,t]}_setupContainer(){let u=this._container;u.classList.add("maplibregl-map");let t=this._canvasContainer=_.create("div","maplibregl-canvas-container",u);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=_.create("canvas","maplibregl-canvas",t),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let a=this._containerDimensions(),h=this._getClampedPixelRatio(a[0],a[1]);this._resizeCanvas(a[0],a[1],h);let g=this._controlContainer=_.create("div","maplibregl-control-container",u),f=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(y=>{f[y]=_.create("div",`maplibregl-ctrl-${y} `,g)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(u,t,a){this._canvas.width=Math.floor(a*u),this._canvas.height=Math.floor(a*t),this._canvas.style.width=`${u}px`,this._canvas.style.height=`${t}px`}_setupPainter(){let u={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},t=null;this._canvas.addEventListener("webglcontextcreationerror",h=>{t={requestedAttributes:u},h&&(t.statusMessage=h.statusMessage,t.type=h.type)},{once:!0});let a=this._canvas.getContext("webgl2",u)||this._canvas.getContext("webgl",u);if(!a){let h="Failed to initialize WebGL";throw t?(t.message=h,new Error(JSON.stringify(t))):new Error(h)}this.painter=new ea(a,this.transform),E.testSupport(a)}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(u){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||u,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(u){return this._update(),this._renderTaskQueue.add(u)}_cancelRenderFrame(u){this._renderTaskQueue.remove(u)}_render(u){let t=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(u),this._removed)return;let a=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let g=this.transform.zoom,f=w.now();this.style.zoomHistory.update(g,f);let y=new s.z(g,{now:f,fadeDuration:t,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),B=y.crossFadingFactor();B===1&&B===this._crossFadingFactor||(a=!0,this._crossFadingFactor=B),this.style.update(y)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.minElevationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,t,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:t,showPadding:this.showPadding}),this.fire(new s.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,s.bf.mark(s.bg.load),this.fire(new s.k("load"))),this.style&&(this.style.hasTransitions()||a)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let h=this._sourcesDirty||this._styleDirty||this._placementDirty;return h||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new s.k("idle")),!this._loaded||this._fullyLoaded||h||(this._fullyLoaded=!0,s.bf.mark(s.bg.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var u;this._hash&&this._hash.remove();for(let a of this._controls)a.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<"u"&&removeEventListener("online",this._onWindowOnline,!1),D.removeThrottleControl(this._imageQueueHandle),(u=this._resizeObserver)===null||u===void 0||u.disconnect();let t=this.painter.context.gl.getExtension("WEBGL_lose_context");t?.loseContext&&t.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),_.remove(this._canvasContainer),_.remove(this._controlContainer),this._container.classList.remove("maplibregl-map"),s.bf.clearMetrics(),this._removed=!0,this.fire(new s.k("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,w.frameAsync(this._frameRequest).then(u=>{s.bf.frame(u),this._frameRequest=null,this._render(u)}).catch(()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(u){this._showTileBoundaries!==u&&(this._showTileBoundaries=u,this._update())}get showPadding(){return!!this._showPadding}set showPadding(u){this._showPadding!==u&&(this._showPadding=u,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(u){this._showCollisionBoxes!==u&&(this._showCollisionBoxes=u,u?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(u){this._showOverdrawInspector!==u&&(this._showOverdrawInspector=u,this._update())}get repaint(){return!!this._repaint}set repaint(u){this._repaint!==u&&(this._repaint=u,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(u){this._vertices=u,this._update()}get version(){return Hc}getCameraTargetElevation(){return this.transform.elevation}},l.MapMouseEvent=zr,l.MapTouchEvent=ns,l.MapWheelEvent=Pa,l.Marker=zl,l.NavigationControl=class{constructor(u){this._updateZoomButtons=()=>{let t=this._map.getZoom(),a=t===this._map.getMaxZoom(),h=t===this._map.getMinZoom();this._zoomInButton.disabled=a,this._zoomOutButton.disabled=h,this._zoomInButton.setAttribute("aria-disabled",a.toString()),this._zoomOutButton.setAttribute("aria-disabled",h.toString())},this._rotateCompassArrow=()=>{let t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=t},this._setButtonTitle=(t,a)=>{let h=this._map._getUIString(`NavigationControl.${a}`);t.title=h,t.setAttribute("aria-label",h)},this.options=s.e({},Ol,u),this._container=_.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",t=>t.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",t=>this._map.zoomIn({},{originalEvent:t})),_.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",t=>this._map.zoomOut({},{originalEvent:t})),_.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t})}),this._compassIcon=_.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(u){return this._map=u,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new cl(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){_.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(u,t){let a=_.create("button",u,this._container);return a.type="button",a.addEventListener("click",t),a}},l.Popup=class extends s.E{constructor(u){super(),this.remove=()=>(this._content&&_.remove(this._content),this._container&&(_.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new s.k("close"))),this),this._onMouseUp=t=>{this._update(t.point)},this._onMouseMove=t=>{this._update(t.point)},this._onDrag=t=>{this._update(t.point)},this._update=t=>{var a;if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=_.create("div","maplibregl-popup",this._map.getContainer()),this._tip=_.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let B of this.options.className.split(" "))this._container.classList.add(B);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=this._map.transform.renderWorldCopies&&!this._trackPointer?Qr(this._lngLat,this._flatPos,this._map.transform):(a=this._lngLat)===null||a===void 0?void 0:a.wrap(),this._trackPointer&&!t)return;let h=this._flatPos=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&t?t:this._map.transform.locationPoint(this._lngLat));let g=this.options.anchor,f=Jl(this.options.offset);if(!g){let B=this._container.offsetWidth,x=this._container.offsetHeight,k;k=h.y+f.bottom.ythis._map.transform.height-x?["bottom"]:[],h.xthis._map.transform.width-B/2&&k.push("right"),g=k.length===0?"bottom":k.join("-")}let y=h.add(f[g]);this.options.subpixelPositioning||(y=y.round()),_.setTransform(this._container,`${EA[g]} translate(${y.x}px,${y.y}px)`),ul(this._container,g,"popup")},this._onClose=()=>{this.remove()},this.options=s.e(Object.create(_i),u)}addTo(u){return this._map&&this.remove(),this._map=u,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new s.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(u){return this._lngLat=s.N.convert(u),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(u){return this.setDOMContent(document.createTextNode(u))}setHTML(u){let t=document.createDocumentFragment(),a=document.createElement("body"),h;for(a.innerHTML=u;h=a.firstChild,h;)t.appendChild(h);return this.setDOMContent(t)}getMaxWidth(){var u;return(u=this._container)===null||u===void 0?void 0:u.style.maxWidth}setMaxWidth(u){return this.options.maxWidth=u,this._update(),this}setDOMContent(u){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=_.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(u),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(u){return this._container&&this._container.classList.add(u),this}removeClassName(u){return this._container&&this._container.classList.remove(u),this}setOffset(u){return this.options.offset=u,this._update(),this}toggleClassName(u){if(this._container)return this._container.classList.toggle(u)}setSubpixelPositioning(u){this.options.subpixelPositioning=u}_createCloseButton(){this.options.closeButton&&(this._closeButton=_.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let u=this._container.querySelector(Wl);u&&u.focus()}},l.RasterDEMTileSource=Oe,l.RasterTileSource=Xe,l.ScaleControl=class{constructor(u){this._onMove=()=>{dl(this._map,this._container,this.options)},this.setUnit=t=>{this.options.unit=t,dl(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},Ho),u)}getDefaultPosition(){return"bottom-left"}onAdd(u){return this._map=u,this._container=_.create("div","maplibregl-ctrl maplibregl-ctrl-scale",u.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){_.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},l.ScrollZoomHandler=co,l.Style=pt,l.TerrainControl=class{constructor(u){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=u}onAdd(u){return this._map=u,this._container=_.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=_.create("button","maplibregl-ctrl-terrain",this._container),_.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){_.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},l.TwoFingersTouchPitchHandler=FA,l.TwoFingersTouchRotateHandler=ll,l.TwoFingersTouchZoomHandler=Al,l.TwoFingersTouchZoomRotateHandler=Qc,l.VectorTileSource=Tt,l.VideoSource=ze,l.addSourceType=(u,t)=>s._(void 0,void 0,void 0,function*(){if(Si(u))throw new Error(`A source type called "${u}" already exists.`);((a,h)=>{ci[a]=h})(u,t)}),l.clearPrewarmedResources=function(){let u=Ut;u&&(u.isPreloaded()&&u.numActive()===1?(u.release(J),Ut=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()"))},l.getMaxParallelImageRequests=function(){return s.a.MAX_PARALLEL_IMAGE_REQUESTS},l.getRTLTextPluginStatus=function(){return pi().getRTLTextPluginStatus()},l.getVersion=function(){return Xl},l.getWorkerCount=function(){return dt.workerCount},l.getWorkerUrl=function(){return s.a.WORKER_URL},l.importScriptInWorkers=function(u){return ce().broadcast("IS",u)},l.prewarm=function(){ie().acquire(J)},l.setMaxParallelImageRequests=function(u){s.a.MAX_PARALLEL_IMAGE_REQUESTS=u},l.setRTLTextPlugin=function(u,t){return pi().setRTLTextPlugin(u,t)},l.setWorkerCount=function(u){dt.workerCount=u},l.setWorkerUrl=function(u){s.a.WORKER_URL=u}});var o=n;return o})});var Lb=ua((Sd,Fd)=>{(function(n,e){typeof Sd=="object"&&typeof Fd<"u"?e(Sd):typeof define=="function"&&define.amd?define(["exports"],e):e((n=typeof globalThis<"u"?globalThis:n||self).VectorTextProtocol={})})(Sd,function(n){"use strict";function e(ht){return ht&&ht.__esModule&&Object.prototype.hasOwnProperty.call(ht,"default")?ht.default:ht}function r(ht){if(ht.__esModule)return ht;var pt=ht.default;if(typeof pt=="function"){var At=function St(){return this instanceof St?Reflect.construct(pt,arguments,this.constructor):pt.apply(this,arguments)};At.prototype=pt.prototype}else At={};return Object.defineProperty(At,"__esModule",{value:!0}),Object.keys(ht).forEach(function(St){var _t=Object.getOwnPropertyDescriptor(ht,St);Object.defineProperty(At,St,_t.get?_t:{enumerable:!0,get:function(){return ht[St]}})}),At}function o(ht){return new Function("d","return {"+ht.map(function(pt,At){return JSON.stringify(pt)+": d["+At+"]"}).join(",")+"}")}function l(ht){var pt=new RegExp('["'+ht+` +]`),At=ht.charCodeAt(0);function St(ee,be){var Ie,pe,$t={},fe={},Ce=[],Te=ee.length,Li=0,ki=0;function Ze(){if(Li>=Te)return fe;if(pe)return pe=!1,$t;var ii,ai=Li;if(ee.charCodeAt(ai)===34){for(var wi=ai;wi++=0?0:1],St=Math.abs(ht),_t=Math.floor(St),zt=60*(St-_t),ee=Math.floor(zt);return{whole:_t,minutes:ee,seconds:Math.floor(60*(zt-ee)),dir:At}}function ot(ht,pt){if(pt||(pt="NSEW"),typeof ht!="string")return null;var At=(ht=ht.toUpperCase()).match(/^[\s\,]*([NSEW])?\s*([\-|—|―]?[0-9.]+)[°º˚]?\s*(?:([0-9.]+)['’′‘]\s*)?(?:([0-9.]+)(?:''|"|”|″)\s*)?([NSEW])?/);if(!At)return null;var St,_t=At[0];if(At[1]&&At[5]?(St=At[1],_t=_t.slice(0,-1)):St=At[1]||At[5],St&&pt.indexOf(St)===-1)return null;var zt=At[2]?parseFloat(At[2]):0,ee=At[3]?parseFloat(At[3])/60:0,be=At[4]?parseFloat(At[4])/3600:0,Ie=zt<0?-1:1;return St!=="S"&&St!=="W"||(Ie*=-1),{val:(Math.abs(zt)+ee+be)*Ie,dim:St,matched:_t,remain:ht.slice(_t.length)}}Y.exports=function(ht,pt){var At=ot(ht,pt);return At===null?null:At.val},Y.exports.pair=function(ht,pt){var At=ot(ht=ht.trim(),pt);if(!At)return null;var St=ot(ht=At.remain.trim(),pt);return!St||St.remain?null:At.dim?function(_t,zt,ee){if(ee==="N"||ee==="S")return[_t,zt];if(ee==="W"||ee==="E")return[zt,_t]}(At.val,St.val,At.dim):[At.val,St.val]},Y.exports.format=D,Y.exports.formatPair=function(ht){return D(ht.lat,"lat")+" "+D(ht.lon,"lon")},Y.exports.coordToDMS=tt;var bt=Y.exports,kt=H,Lt=bt,vt=/(Lat)(itude)?/gi,ft=/(L)(on|ng)(gitude)?/i;function Mt(ht,pt){var At,St,_t;for(var zt in ht)(St=zt.match(pt))&&(!At||St[0].length/zt.length>_t)&&(_t=St[0].length/zt.length,At=zt);return At}function qt(ht){return Mt(ht,vt)}function at(ht){return Mt(ht,ft)}function st(ht){return typeof ht=="object"?Object.keys(ht).length:0}function wt(ht){var pt=[];return[",",";"," ","|"].forEach(function(At){var St=kt.dsvFormat(At).parse(ht);if(St.length>=1){for(var _t=st(St[0]),zt=0;zt{At[St]=_t});return At}function Pt(ht){return ht?.nodeType===1}function ie(ht){return ue(ht,"line",pt=>Object.assign({},J(pt,"color",At=>({stroke:`#${At}`})),dt(pt,"opacity",At=>({"stroke-opacity":At})),dt(pt,"width",At=>({"stroke-width":96*At/25.4}))))}function le(ht){let pt=[];if(ht===null)return pt;for(let At of Array.from(ht.childNodes)){if(!Pt(At))continue;let St=ce(At.nodeName);if(St==="gpxtpx:TrackPointExtension")pt=pt.concat(le(At));else{let _t=Ct(At);pt.push([St,Qe(_t)])}}return pt}function ce(ht){return["heart","gpxtpx:hr","hr"].includes(ht)?"heart":ht}function Qe(ht){let pt=parseFloat(ht);return isNaN(pt)?ht:pt}function Ee(ht){let pt=[parseFloat(ht.getAttribute("lon")||""),parseFloat(ht.getAttribute("lat")||"")];if(isNaN(pt[0])||isNaN(pt[1]))return null;mt(ht,"ele",St=>{pt.push(St)});let At=Et(ht,"time");return{coordinates:pt,time:At?Ct(At):null,extendedValues:le(Et(ht,"extensions"))}}function We(ht){let pt=Ut(ht,["name","cmt","desc","type","time","keywords"]),At=Array.from(ht.getElementsByTagNameNS("http://www.garmin.com/xmlschemas/GpxExtensions/v3","*"));for(let _t of At)_t.parentNode?.parentNode===ht&&(pt[_t.tagName.replace(":","_")]=Ct(_t));let St=Xt(ht,"link");return St.length&&(pt.links=St.map(_t=>Object.assign({href:_t.getAttribute("href")},Ut(_t,["text","type"])))),pt}function Je(ht,pt){let At=Xt(ht,pt),St=[],_t=[],zt={};for(let ee=0;ee1,ee=Object.assign({_gpxType:"trk"},We(ht),ie(Et(ht,"extensions")),St.length?{coordinateProperties:{times:zt?St:St[0]}}:{});for(let be of _t){At.push(be.line),ee.coordinateProperties||(ee.coordinateProperties={});let Ie=ee.coordinateProperties,pe=Object.entries(be.extendedValues);for(let $t=0;$tnew Array(Te.line.length).fill(null))),Ie[fe][$t]=Ce):Ie[fe]=Ce}}return{type:"Feature",properties:ee,geometry:zt?{type:"MultiLineString",coordinates:At}:{type:"LineString",coordinates:At[0]}}}function Tt(ht){let pt=Object.assign(We(ht),Ut(ht,["sym"])),At=Ee(ht);return At?{type:"Feature",properties:pt,geometry:{type:"Point",coordinates:At.coordinates}}:null}function*Xe(ht){for(let pt of Xt(ht,"trk")){let At=de(pt);At&&(yield At)}for(let pt of Xt(ht,"rte")){let At=Dt(pt);At&&(yield At)}for(let pt of Xt(ht,"wpt")){let At=Tt(pt);At&&(yield At)}}let Oe="http://www.garmin.com/xmlschemas/ActivityExtension/v2",Le=[["heartRate","heartRates"],["Cadence","cadences"],["Speed","speeds"],["Watts","watts"]],He=[["TotalTimeSeconds","totalTimeSeconds"],["DistanceMeters","distanceMeters"],["MaximumSpeed","maxSpeed"],["AverageHeartRateBpm","avgHeartRate"],["MaximumHeartRateBpm","maxHeartRate"],["AvgSpeed","avgSpeed"],["AvgWatts","avgWatts"],["MaxWatts","maxWatts"]];function Ke(ht,pt){let At=[];for(let[St,_t]of pt){let zt=Et(ht,St);if(!zt){let be=ht.getElementsByTagNameNS(Oe,St);be.length&&(zt=be[0])}let ee=parseFloat(Ct(zt));isNaN(ee)||At.push([_t,ee])}return At}function ze(ht){let pt=[mt(ht,"LongitudeDegrees"),mt(ht,"LatitudeDegrees")];if(pt[0]===void 0||isNaN(pt[0])||pt[1]===void 0||isNaN(pt[1]))return null;let At=Et(ht,"HeartRateBpm"),St=Ct(Et(ht,"Time"));return Et(ht,"AltitudeMeters",_t=>{let zt=parseFloat(Ct(_t));isNaN(zt)||pt.push(zt)}),{coordinates:pt,time:St||null,heartRate:At?parseFloat(Ct(At)):null,extensions:Ke(ht,Le)}}function ti(ht){let pt=Xt(ht,"Trackpoint"),At=[],St=[],_t=[];if(pt.length<2)return null;let zt={},ee={extendedProperties:zt};for(let be=0;be({name:Ct(Ie)})));for(let Ie of pt)ee=ti(Ie),ee&&(At.push(ee.line),ee.times.length&&St.push(ee.times),ee.heartRates.length&&_t.push(ee.heartRates),zt.push(ee.extendedProperties));for(let Ie=0;IeArray(fe.length).fill(null))),be[$t][Ie]=pe[$t])}return At.length===0?null:((St.length||_t.length)&&(be.coordinateProperties=Object.assign(St.length?{times:At.length===1?St[0]:St}:{},_t.length?{heart:At.length===1?_t[0]:_t}:{})),{type:"Feature",properties:be,geometry:At.length===1?{type:"LineString",coordinates:At[0]}:{type:"MultiLineString",coordinates:At}})}function*Si(ht){for(let pt of Xt(ht,"Lap")){let At=ci(pt);At&&(yield At)}for(let pt of Xt(ht,"Courses")){let At=ci(pt);At&&(yield At)}}function he(ht,pt){let At={},St=pt=="stroke"||pt==="fill"?pt:pt+"-color";return ht[0]==="#"&&(ht=ht.substring(1)),ht.length===6||ht.length===3?At[St]="#"+ht:ht.length===8&&(At[pt+"-opacity"]=parseInt(ht.substring(0,2),16)/255,At[St]="#"+ht.substring(6,8)+ht.substring(4,6)+ht.substring(2,4)),At}function Zi(ht,pt,At){let St={};return mt(ht,pt,_t=>{St[At]=_t}),St}function Hi(ht,pt){return ue(ht,"color",At=>he(Ct(At),pt))}function pi(ht){return ue(ht,"Icon",(pt,At)=>(J(pt,"href",St=>{At.icon=St}),At))}function Ei(ht){return Object.assign({},function(pt){return ue(pt,"PolyStyle",(At,St)=>Object.assign(St,ue(At,"color",_t=>he(Ct(_t),"fill")),J(At,"fill",_t=>{if(_t==="0")return{"fill-opacity":0}}),J(At,"outline",_t=>{if(_t==="0")return{"stroke-opacity":0}})))}(ht),function(pt){return ue(pt,"LineStyle",At=>Object.assign(Hi(At,"stroke"),Zi(At,"width","stroke-width")))}(ht),function(pt){return ue(pt,"LabelStyle",At=>Object.assign(Hi(At,"label"),Zi(At,"scale","label-scale")))}(ht),function(pt){return ue(pt,"IconStyle",At=>Object.assign(Hi(At,"icon"),Zi(At,"scale","icon-scale"),Zi(At,"heading","icon-heading"),ue(At,"hotSpot",St=>{let _t=parseFloat(St.getAttribute("x")||""),zt=parseFloat(St.getAttribute("y")||""),ee=St.getAttribute("xunits")||"",be=St.getAttribute("yunits")||"";return isNaN(_t)||isNaN(zt)?{}:{"icon-offset":[_t,zt],"icon-offset-units":[ee,be]}}),pi(At)))}(ht))}let ne=ht=>Number(ht),ui={string:ht=>ht,int:ne,uint:ne,short:ne,ushort:ne,float:ne,double:ne,bool:ht=>Boolean(ht)};function Ve(ht,pt){return ue(ht,"ExtendedData",(At,St)=>{for(let _t of Xt(At,"Data"))St[_t.getAttribute("name")||""]=Ct(Et(_t,"value"));for(let _t of Xt(At,"SimpleData")){let zt=_t.getAttribute("name")||"",ee=pt[zt]||ui.string;St[zt]=ee(Ct(_t))}return St})}function rr(ht){let pt=Et(ht,"description");for(let At of Array.from(pt?.childNodes||[]))if(At.nodeType===4)return{description:{"@type":"html",value:Ct(At)}};return{}}function Ni(ht){return ue(ht,"TimeSpan",pt=>({timespan:{begin:Ct(Et(pt,"begin")),end:Ct(Et(pt,"end"))}}))}function $e(ht){return ue(ht,"TimeStamp",pt=>({timestamp:Ct(Et(pt,"when"))}))}function wr(ht,pt){return J(ht,"styleUrl",At=>(At=Wt(At),pt[At]?Object.assign({styleUrl:At},pt[At]):{styleUrl:At}))}let zi=/\s*/g,_r=/^\s*|\s*$/g,nr=/\s+/;function It(ht){return ht.replace(zi,"").split(",").map(parseFloat).filter(pt=>!isNaN(pt)).slice(0,3)}function K(ht){return ht.replace(_r,"").split(nr).map(It).filter(pt=>pt.length>=2)}function z(ht){let pt=Xt(ht,"coord");pt.length===0&&(pt=function(St,_t,zt){return Array.from(St.getElementsByTagNameNS(zt,_t))}(ht,"coord","*"));let At=pt.map(St=>Ct(St).split(" ").map(parseFloat));return At.length===0?null:{geometry:At.length>2?{type:"LineString",coordinates:At}:{type:"Point",coordinates:At[0]},times:Xt(ht,"when").map(St=>Ct(St))}}function it(ht){if(ht.length===0)return ht;let pt=ht[0],At=ht[ht.length-1],St=!0;for(let _t=0;_t=2&&pt.push({type:"Point",coordinates:zt});break}case"LinearRing":case"LineString":{let zt=K(gt(_t));zt.length>=2&&pt.push({type:"LineString",coordinates:zt});break}case"Polygon":{let zt=[];for(let ee of Xt(_t,"LinearRing")){let be=it(K(gt(ee)));be.length>=4&&zt.push(be)}zt.length&&pt.push({type:"Polygon",coordinates:zt});break}case"Track":case"gx:Track":{let zt=z(_t);if(!zt)break;let{times:ee,geometry:be}=zt;pt.push(be),ee.length&&At.push(ee);break}}}return{geometries:pt,coordTimes:At}}function Nt(ht,pt,At,St){let{coordTimes:_t,geometries:zt}=Ht(ht),ee=function(pe){return pe.length===0?null:pe.length===1?pe[0]:{type:"GeometryCollection",geometries:pe}}(zt);if(!ee&&St.skipNullGeometry)return null;let be={type:"Feature",geometry:ee,properties:Object.assign(Ut(ht,["name","address","visibility","open","phoneNumber","description"]),rr(ht),wr(ht,pt),Ei(ht),Ve(ht,At),Ni(ht),$e(ht),_t.length?{coordinateProperties:{times:_t.length===1?_t[0]:_t}}:{})};be.properties?.visibility!==void 0&&(be.properties.visibility=be.properties.visibility!=="0");let Ie=ht.getAttribute("id");return Ie!==null&&Ie!==""&&(be.id=Ie),be}function Jt(ht){return Et(ht,"gx:LatLonQuad")?{geometry:{type:"Polygon",coordinates:[it(K(gt(ht)))]}}:function(pt){let At=Et(pt,"LatLonBox");if(At){let St=mt(At,"north"),_t=mt(At,"west"),zt=mt(At,"east"),ee=mt(At,"south"),be=mt(At,"rotation");if(typeof St=="number"&&typeof ee=="number"&&typeof _t=="number"&&typeof zt=="number"){let Ie=[_t,ee,zt,St],pe=[[[_t,St],[zt,St],[zt,ee],[_t,ee],[_t,St]]];return typeof be=="number"&&(pe=function($t,fe,Ce){let Te=[($t[0]+$t[2])/2,($t[1]+$t[3])/2];return[fe[0].map(Li=>{let ki=Li[1]-Te[1],Ze=Li[0]-Te[0],Fe=Math.sqrt(Math.pow(ki,2)+Math.pow(Ze,2)),ii=Math.atan2(ki,Ze)+Ce*Rt;return[Te[0]+Math.cos(ii)*Fe,Te[1]+Math.sin(ii)*Fe]})]}(Ie,pe,be)),{bbox:Ie,geometry:{type:"Polygon",coordinates:pe}}}}return null}(ht)}let Rt=Math.PI/180;function Ot(ht,pt,At,St){let _t=Jt(ht),zt=_t?.geometry||null;if(!zt&&St.skipNullGeometry)return null;let ee={type:"Feature",geometry:zt,properties:Object.assign({"@geometry-type":"groundoverlay"},Ut(ht,["name","address","visibility","open","phoneNumber","description"]),rr(ht),wr(ht,pt),Ei(ht),pi(ht),Ve(ht,At),Ni(ht),$e(ht))};_t?.bbox&&(ee.bbox=_t.bbox),ee.properties?.visibility!==void 0&&(ee.properties.visibility=ee.properties.visibility!=="0");let be=ht.getAttribute("id");return be!==null&&be!==""&&(ee.id=be),ee}function me(ht){let pt=ht.getAttribute("id"),At=ht.parentNode;return!pt&&Pt(At)&&At.localName==="CascadingStyle"&&(pt=At.getAttribute("kml:id")||At.getAttribute("id")),Wt(pt||"")}function Ae(ht){let pt={};for(let At of Xt(ht,"Style"))pt[me(At)]=Ei(At);for(let At of Xt(ht,"StyleMap")){let St=Wt(At.getAttribute("id")||"");J(At,"styleUrl",_t=>{_t=Wt(_t),pt[_t]&&(pt[St]=pt[_t])})}return pt}function Se(ht){let pt={};for(let At of Xt(ht,"SimpleField"))pt[At.getAttribute("name")||""]=ui[At.getAttribute("type")||""]||ui.string;return pt}let Ye=["name","visibility","open","address","description","phoneNumber","visibility"];function*je(ht,pt={skipNullGeometry:!1}){let At=Ae(ht),St=Se(ht);for(let _t of Xt(ht,"Placemark")){let zt=Nt(_t,At,St,pt);zt&&(yield zt)}for(let _t of Xt(ht,"GroundOverlay")){let zt=Ot(_t,At,St,pt);zt&&(yield zt)}}var Mi=Object.freeze({__proto__:null,gpx:function(ht){return{type:"FeatureCollection",features:Array.from(Xe(ht))}},gpxGen:Xe,kml:function(ht,pt={skipNullGeometry:!1}){return{type:"FeatureCollection",features:Array.from(je(ht,pt))}},kmlGen:je,kmlWithFolders:function(ht,pt={skipNullGeometry:!1}){let At=Ae(ht),St=Se(ht),_t={type:"root",children:[]};return function zt(ee,be,Ie){if(Pt(ee))switch(ee.tagName){case"GroundOverlay":{let pe=Ot(ee,At,St,Ie);pe&&be.children.push(pe);break}case"Placemark":{let pe=Nt(ee,At,St,Ie);pe&&be.children.push(pe);break}case"Folder":{let pe=function($t){let fe={};for(let Ce of Array.from($t.childNodes))Pt(Ce)&&Ye.includes(Ce.tagName)&&(fe[Ce.tagName]=Ct(Ce));return{type:"folder",meta:fe,children:[]}}(ee);be.children.push(pe),be=pe;break}}if(ee.childNodes)for(let pe=0;pe=0?1:-1)}function St(zt,ee,be){var Ie=2*((zt=At(zt*be))-(ee=At(ee*be)));Ie<0&&(Ie=-Ie-1);for(var pe="";Ie>=32;)pe+=String.fromCharCode(63+(32|31&Ie)),Ie/=32;return pe+=String.fromCharCode(63+(0|Ie))}function _t(zt){for(var ee=[],be=0;be=32);be=1&Te?(-Te-1)/2:Te/2,Ce=1,Te=0;do Te+=(31&(Li=zt.charCodeAt(Ie++)-63))*Ce,Ce*=32;while(Li>=32);pe+=be,$t+=1&Te?(-Te-1)/2:Te/2,fe.push([pe/ki,$t/ki])}return fe},pt.encode=function(zt,ee){if(!zt.length)return"";for(var be=Math.pow(10,Number.isInteger(ee)?ee:5),Ie=St(zt[0][0],0,be)+St(zt[0][1],0,be),pe=1;pe{let ht=$t=>$t[0],pt=$t=>$t[$t.length-1],At=$t=>$t.join(","),St=($t,fe,Ce)=>{let Te=$t[fe];Te?Te.push(Ce):$t[fe]=[Ce]},_t=($t,fe,Ce)=>{let Te=$t[fe],Li=null;Te&&(Li=Te.indexOf(Ce))>=0&&Te.splice(Li,1)},zt=($t,fe)=>{let Ce=$t[fe];return Ce&&Ce.length>0?Ce[0]:null},ee=$t=>$t.length>3&&At(ht($t))===At(pt($t)),be=($t,fe,Ce)=>{fe=fe||0,Ce=Ce||1;let Te=$t.reduce((ar,si,vr)=>$t[ar][fe]>si[fe]?ar:vr,0),Li=Te<=0?$t.length-2:Te-1,ki=Te>=$t.length-1?1:Te+1,Ze=$t[Li][fe],Fe=$t[Te][fe],ii=$t[ki][fe],ai=$t[Li][Ce],wi=$t[Te][Ce];return(Fe-Ze)*($t[ki][Ce]-ai)-(ii-Ze)*(wi-ai)<0?"clockwise":"counterclockwise"},Ie=$t=>$t instanceof Array?$t.map(Ie):parseFloat($t);class pe extends Map{constructor(){super(),this.binders=[]}add(fe,Ce){this.has(fe)||this.set(fe,Ce)}addBinder(fe){this.binders.push(fe)}bindAll(){this.binders.forEach(fe=>fe.bind())}}return{purgeProps:($t,fe)=>{if($t){let Ce=Object.assign({},$t);if(fe)for(let Te of fe)delete Ce[Te];return Ce}return{}},mergeProps:($t,fe)=>($t=$t||{},fe=fe||{},Object.assign($t,fe)),first:ht,last:pt,coordsToKey:At,addToMap:St,removeFromMap:_t,getFirstFromMap:zt,isRing:ee,ringDirection:be,ptInsidePolygon:($t,fe,Ce,Te)=>{Ce=Ce||0,Te=Te||1;let Li=!1;for(let ki=0,Ze=fe.length-1;ki=0){let Ce=[fe,1];$t&&Ce.push($t),[].splice.apply(this.container,Ce)}}else if(typeof this.container=="object"){let fe=Object.keys(this.container).find(Ce=>this.container[Ce]===this);fe&&($t?this.container[fe]=$t:delete this.container[fe])}}},WayCollection:class extends Array{constructor(){super(),this.firstMap={},this.lastMap={}}addWay($t){($t=$t.toCoordsArray()).length>0&&(this.push($t),St(this.firstMap,At(ht($t)),$t),St(this.lastMap,At(pt($t)),$t))}toStrings(){let $t=[],fe=null;for(;fe=this.shift();){_t(this.firstMap,At(ht(fe)),fe),_t(this.lastMap,At(pt(fe)),fe);let Ce=fe,Te=null;do{let Li=At(pt(Ce)),ki=!1;Te=zt(this.firstMap,Li),Te||(Te=zt(this.lastMap,Li),ki=!0),Te&&(this.splice(this.indexOf(Te),1),_t(this.firstMap,At(ht(Te)),Te),_t(this.lastMap,At(pt(Te)),Te),ki&&(Te.length>Ce.length&&([Ce,Te]=[Te,Ce]),Te.reverse()),Ce=Ce.concat(Te.slice(1)))}while(Te);$t.push(Ie(Ce))}return $t}toRings($t){let fe=this.toStrings(),Ce=[],Te=null;for(;Te=fe.shift();)ee(Te)&&(be(Te)!==$t&&Te.reverse(),Ce.push(Te));return Ce}}}})(),pr={building:{},highway:{whitelist:["services","rest_area","escape","elevator"]},natural:{blacklist:["coastline","cliff","ridge","arete","tree_row"]},landuse:{},waterway:{whitelist:["riverbank","dock","boatyard","dam"]},amenity:{},leisure:{},barrier:{whitelist:["city_wall","ditch","hedge","retaining_wall","wall","spikes"]},railway:{whitelist:["station","turntable","roundhouse","platform"]},area:{},boundary:{},man_made:{blacklist:["cutline","embankment","pipeline"]},power:{whitelist:["plant","substation","generator","transformer"]},place:{},shop:{},aeroway:{blacklist:["taxiway"]},tourism:{},historic:{},public_transport:{},office:{},"building:part":{},military:{},ruins:{},"area:highway":{},craft:{},golf:{},indoor:{}},ur=(()=>{let{first:ht,last:pt,coordsToKey:At,addToMap:St,removeFromMap:_t,getFirstFromMap:zt,isRing:ee,ringDirection:be,ptInsidePolygon:Ie,strToFloat:pe,LateBinder:$t,WayCollection:fe}=vi,Ce=pr;class Te{constructor(Fe,ii,ai){this.type=Fe,this.id=ii,this.refElems=ai,this.tags={},this.props={id:this.getCompositeId()},this.refCount=0,this.hasTag=!1,ai&&ai.add(this.getCompositeId(),this)}addTags(Fe){this.tags=Object.assign(this.tags,Fe),this.hasTag=!!Fe}addTag(Fe,ii){this.tags[Fe]=ii,this.hasTag=!!Fe}addProp(Fe,ii){this.props[Fe]=ii}addProps(Fe){this.props=Object.assign(this.props,Fe)}getCompositeId(){return`${this.type}/${this.id}`}getProps(){return Object.assign(this.props,this.tags)}toFeatureArray(){return[]}}class Li extends Te{constructor(Fe,ii){super("node",Fe,ii),this.latLng=null}setLatLng(Fe){this.latLng=Fe}toFeatureArray(){return this.latLng?[{type:"Feature",id:this.getCompositeId(),properties:this.getProps(),geometry:{type:"Point",coordinates:pe([this.latLng.lon,this.latLng.lat])}}]:[]}getLatLng(){return this.latLng}}class ki extends Te{constructor(Fe,ii){super("way",Fe,ii),this.latLngArray=[],this.isPolygon=!1}addLatLng(Fe){this.latLngArray.push(Fe)}setLatLngArray(Fe){this.latLngArray=Fe}addNodeRef(Fe){let ii=new $t(this.latLngArray,function(ai){let wi=this.refElems.get(`node/${ai}`);if(wi)return wi.refCount++,wi.getLatLng()},this,[Fe]);this.latLngArray.push(ii),this.refElems.addBinder(ii)}analyzeGeometryType(Fe,ii){let ai=Ce[Fe];ai&&(this.isPolygon=!0,ai.whitelist?this.isPolygon=ai.whitelist.indexOf(ii)>=0:ai.blacklist&&(this.isPolygon=!(ai.blacklist.indexOf(ii)>=0)))}addTags(Fe){super.addTags(Fe);for(let[ii,ai]of Object.entries(Fe))this.analyzeGeometryType(ii,ai)}addTag(Fe,ii){super.addTag(Fe,ii),this.analyzeGeometryType(Fe,ii)}toCoordsArray(){return this.latLngArray.map(Fe=>[Fe.lon,Fe.lat])}toFeatureArray(){let Fe=this.toCoordsArray();if(Fe.length>1){Fe=pe(Fe);let ii={type:"Feature",id:this.getCompositeId(),properties:this.getProps(),geometry:{type:"LineString",coordinates:Fe}};return this.isPolygon&&ee(Fe)?(be(Fe)!=="counterclockwise"&&Fe.reverse(),ii.geometry={type:"Polygon",coordinates:[Fe]},[ii]):[ii]}return[]}}return{Node:Li,Way:ki,Relation:class extends Te{constructor(Ze,Fe){super("relation",Ze,Fe),this.relations=[],this.nodes=[],this.bounds=null}setBounds(Ze){this.bounds=Ze}addMember(Ze){switch(Ze.type){case"relation":let Fe=new $t(this.relations,function(wi){let ar=this.refElems.get(`relation/${wi}`);if(ar)return ar.refCount++,ar},this,[Ze.ref]);this.relations.push(Fe),this.refElems.addBinder(Fe);break;case"way":Ze.role||(Ze.role="");let ii=this[Ze.role];if(ii||(ii=this[Ze.role]=[]),Ze.geometry){let wi=new ki(Ze.ref,this.refElems);wi.setLatLngArray(Ze.geometry),wi.refCount++,ii.push(wi)}else if(Ze.nodes){let wi=new ki(Ze.ref,this.refElems);for(let ar of Ze.nodes)wi.addNodeRef(ar);wi.refCount++,ii.push(wi)}else{let wi=new $t(ii,function(ar){let si=this.refElems.get(`way/${ar}`);if(si)return si.refCount++,si},this,[Ze.ref]);ii.push(wi),this.refElems.addBinder(wi)}break;case"node":let ai=null;if(Ze.lat&&Ze.lon){ai=new Li(Ze.ref,this.refElems),ai.setLatLng({lon:Ze.lon,lat:Ze.lat}),Ze.tags&&ai.addTags(Ze.tags);for(let[wi,ar]of Object.entries(Ze))["id","type","lat","lon"].indexOf(wi)<0&&ai.addProp(wi,ar);ai.refCount++,this.nodes.push(ai)}else{let wi=new $t(this.nodes,function(ar){let si=this.refElems.get(`node/${ar}`);if(si)return si.refCount++,si},this,[Ze.ref]);this.nodes.push(wi),this.refElems.addBinder(wi)}}}toFeatureArray(){let Ze=[],Fe=[],ii=[],ai=["outer","inner",""];for(let si of this.relations)if(si)for(let vr of ai){let nn=si[vr];if(nn){let Br=this[vr];Br?[].splice.apply(Br,[Br.length,0].concat(nn)):this[vr]=nn}}for(let si of ai){let vr=this[si];if(vr){this[si]=new fe;for(let nn of vr)this[si].addWay(nn)}}let wi=null,ar={type:"Feature",id:this.getCompositeId(),bbox:this.bounds,properties:this.getProps()};this.bounds||delete ar.bbox,this.outer?(wi=((si,vr)=>{let nn=si?si.toRings("counterclockwise"):[],Br=vr?vr.toRings("clockwise"):[];if(nn.length>0){let ms=[],Rn=null;for(Rn of nn)ms.push([Rn]);for(;Rn=Br.shift();)for(let wo in nn)if(Ie(ht(Rn),nn[wo])){ms[wo].push(Rn);break}return ms.length===1?{type:"Polygon",coordinates:ms[0]}:{type:"MultiPolygon",coordinates:ms}}return null})(this.outer,this.inner),wi&&(ar.geometry=wi,Ze.push(ar))):this[""]&&(wi=(si=>{let vr=si?si.toStrings():[];return vr.length>0?vr.length===1?{type:"LineString",coordinates:vr[0]}:{type:"MultiLineString",coordinates:vr}:null})(this[""]),wi&&(ar.geometry=wi,Fe.push(ar)));for(let si of this.nodes)ii=ii.concat(si.toFeatureArray());return Ze.concat(Fe).concat(ii)}}}})(),Qi=(()=>{function ht(At){return At.match(/^(.+?)\[(.+?)\]>$/g)!=null}function pt(At){let St=/^(.+?)\[(.+?)\]>$/g.exec(At);return St?{evt:St[1]+">",exp:St[2]}:{evt:At}}return class{constructor(At){At&&(this.queryParent=!!At.queryParent,this.progressive=At.progressive,this.queryParent&&(this.parentMap=new WeakMap)),this.evtListeners={}}parse(At,St,_t){_t=_t?_t+".":"";let zt=/<([^ >\/]+)(.*?)>/gm,ee=null,be=[];for(;ee=zt.exec(At);){let Ie=ee[1],pe={$tag:Ie},$t=_t+Ie,fe=ee[2].trim(),Ce=!1;(fe.endsWith("/")||Ie.startsWith("?")||Ie.startsWith("!"))&&(Ce=!0);let Te=/([^ ]+?)="(.+?)"/g,Li=/([^ ]+?)='(.+?)'/g,ki=null,Ze=!1;for(;ki=Te.exec(fe);)Ze=!0,pe[ki[1]]=ki[2];if(!Ze)for(;ki=Li.exec(fe);)Ze=!0,pe[ki[1]]=ki[2];if(Ze||fe===""||(pe.text=fe),this.progressive&&this.emit(`<${$t}>`,pe,St),!Ce){let Fe=new RegExp(`([^]+?)`,"g");Fe.lastIndex=zt.lastIndex;let ii=Fe.exec(At);if(ii&&ii[1]){zt.lastIndex=Fe.lastIndex;let ai=this.parse(ii[1],pe,$t);ai.length>0?pe.$innerNodes=ai:pe.$innerText=ii[1]}}this.queryParent&&St&&this.parentMap.set(pe,St),this.progressive&&this.emit(``,pe,St),be.push(pe)}return be}getParent(At){return this.queryParent?this.parentMap.get(At):null}#t(At,St){let _t=this.evtListeners[At];_t?_t.push(St):this.evtListeners[At]=[St]}addListener(At,St){ht(At)&&(At=pt(At),St.condition=function(_t){let zt="return "+_t.replace(/(\$.+?)(?=[=!.])/g,"node.$&")+";";return new Function("node",zt)}(At.exp),At=At.evt),this.#t(At,St)}#e(At,St){let _t=this.evtListeners[At],zt=null;_t&&(zt=_t.indexOf(St))>=0&&_t.splice(zt,1)}removeListener(At,St){ht(At)&&(At=(At=pt(At)).evt),this.#e(At,St)}emit(At,...St){let _t=this.evtListeners[At];if(_t)for(let zt of _t)zt.condition?zt.condition.apply(null,St)===!0&&zt.apply(null,St):zt.apply(null,St)}on(At,St){this.addListener(At,St)}off(At,St){this.removeListener(At,St)}}})();let{Node:Oi,Way:sr,Relation:Zt}=ur,{purgeProps:Ne,RefElements:ke}=vi,Wi=Qi;var Fi=(ht,pt)=>{let At=!1,St=!1,_t=!0;(Ie=>{if(Ie){At=!(!Ie.completeFeature&&!Ie.allFeatures),St=!!Ie.renderTagged;let pe=Ie.suppressWay||Ie.excludeWay;pe===void 0||pe||(_t=!1)}})(pt);let zt=(Ie=>Ie.elements?"json":Ie.indexOf("=0?"xml":Ie.trim().startsWith("{")?"json-raw":"invalid")(ht),ee=new ke,be=[];zt==="json-raw"&&(zt=(ht=JSON.parse(ht)).elements?"json":"invalid"),zt==="json"?(Ie=>{for(let pe of Ie.elements)switch(pe.type){case"node":let $t=new Oi(pe.id,ee);pe.tags&&$t.addTags(pe.tags),$t.addProps(Ne(pe,["id","type","tags","lat","lon"])),$t.setLatLng(pe);break;case"way":let fe=new sr(pe.id,ee);if(pe.tags&&fe.addTags(pe.tags),fe.addProps(Ne(pe,["id","type","tags","nodes","geometry"])),pe.nodes)for(let Te of pe.nodes)fe.addNodeRef(Te);else pe.geometry&&fe.setLatLngArray(pe.geometry);break;case"relation":let Ce=new Zt(pe.id,ee);if(pe.bounds&&Ce.setBounds([parseFloat(pe.bounds.minlon),parseFloat(pe.bounds.minlat),parseFloat(pe.bounds.maxlon),parseFloat(pe.bounds.maxlat)]),pe.tags&&Ce.addTags(pe.tags),Ce.addProps(Ne(pe,["id","type","tags","bounds","members"])),pe.members)for(let Te of pe.members)Ce.addMember(Te)}})(ht):zt==="xml"&&(Ie=>{let pe=new Wi({progressive:!0});pe.on("",$t=>{let fe=new Oi($t.id,ee);for(let[Ce,Te]of Object.entries($t))!Ce.startsWith("$")&&["id","lon","lat"].indexOf(Ce)<0&&fe.addProp(Ce,Te);if(fe.setLatLng($t),$t.$innerNodes)for(let Ce of $t.$innerNodes)Ce.$tag==="tag"&&fe.addTag(Ce.k,Ce.v)}),pe.on("",$t=>{let fe=new sr($t.id,ee);for(let[Ce,Te]of Object.entries($t))!Ce.startsWith("$")&&["id"].indexOf(Ce)<0&&fe.addProp(Ce,Te);if($t.$innerNodes)for(let Ce of $t.$innerNodes)Ce.$tag==="nd"?Ce.lon&&Ce.lat?fe.addLatLng(Ce):Ce.ref&&fe.addNodeRef(Ce.ref):Ce.$tag==="tag"&&fe.addTag(Ce.k,Ce.v)}),pe.on("",$t=>{new Zt($t.id,ee)}),pe.on("",($t,fe)=>{let Ce=ee.get(`relation/${fe.id}`),Te={type:$t.type,role:$t.role?$t.role:"",ref:$t.ref};if($t.lat&&$t.lon){Te.lat=$t.lat,Te.lon=$t.lon,Te.tags={};for(let[Li,ki]of Object.entries($t))!Li.startsWith("$")&&["type","lat","lon"].indexOf(Li)<0&&(Te[Li]=ki)}if($t.$innerNodes){let Li=[],ki=[];for(let Ze of $t.$innerNodes)Ze.lat&&Ze.lon?Li.push(Ze):ki.push(Ze.ref);Li.length>0?Te.geometry=Li:ki.length>0&&(Te.nodes=ki)}Ce.addMember(Te)}),pe.on("",($t,fe)=>{ee.get(`relation/${fe.id}`).setBounds([parseFloat($t.minlon),parseFloat($t.minlat),parseFloat($t.maxlon),parseFloat($t.maxlat)])}),pe.on("",($t,fe)=>{ee.get(`relation/${fe.id}`).addTag($t.k,$t.v)}),pe.parse(Ie)})(ht),ee.bindAll();for(let Ie of ee.values())if(Ie.refCount<=0||Ie.hasTag&&St&&!(Ie instanceof sr&&_t)){let pe=Ie.toFeatureArray();if(Ie instanceof Zt&&!At&&pe.length>0)return pe[0].geometry;be=be.concat(pe)}return{type:"FeatureCollection",features:be}},rn=e(Fi);let Fr=["topojson","osm","kml","gpx","tcx","csv","tsv","polyline"];class jr{constructor(pt,At,St={}){this.blankGeoJSON=()=>({type:"FeatureCollection",features:[]}),this._rawData=At,this._format=pt,this._options=St;let _t={topojson:this.loadTopoJson,osm:this.loadOsm,kml:this.loadXml,gpx:this.loadXml,tcx:this.loadXml,csv:this.loadCsv,tsv:this.loadCsv,polyline:this.loadPolyline};this._conversionFn=_t[pt]}async convert(){return this._conversionFn?this._conversionFn():new Promise((pt,At)=>At(`No converter exists for ${this._format}`))}async loadXml(){return Mi[this._format](new DOMParser().parseFromString(this._rawData,"text/xml"))}async loadCsv(){let pt=this._options.csvOptions||{};return this._format==="tsv"&&(pt.delimiter=" "),await new Promise((At,St)=>{yt.csv2geojson(this._rawData,pt,(_t,zt)=>{_t?St(_t):At(zt)})})}async loadTopoJson(){let pt={};try{pt=JSON.parse(this._rawData)}catch{throw"Invalid TopoJson"}let At=this.blankGeoJSON();return pt.type==="Topology"&&pt.objects!==void 0&&(At={type:"FeatureCollection",features:At.features=Object.keys(pt.objects).map(St=>{return _t=pt,typeof(zt=St)=="string"&&(zt=_t.objects[zt]),zt.type==="GeometryCollection"?{type:"FeatureCollection",features:zt.geometries.map(function(ee){return jt(_t,ee)})}:jt(_t,zt);var _t,zt}).reduce((St,_t)=>[...St,..._t.features],[])}),At}async loadOsm(){return rn(this._rawData)}async loadPolyline(){let pt=this._options.polylineOptions||{};return await new Promise((At,St)=>{try{let _t=Vi.toGeoJSON(this._rawData,pt.precision),zt=_t;pt.type==="point"?_t.coordinates.length===1?zt={type:"Point",coordinates:_t.coordinates[0]}:console.warn("Cannot convert polyline to "+pt.type):pt.type==="polygon"&&(_t.coordinates[0][0]===_t.coordinates[_t.coordinates.length-1][0]&&_t.coordinates[0][1]===_t.coordinates[_t.coordinates.length-1][1]?zt={type:"Polygon",coordinates:[_t.coordinates]}:console.warn("Cannot convert polyline to "+pt.type)),At({type:"FeatureCollection",features:[{type:"Feature",geometry:zt,properties:pt.properties||{}}]})}catch(_t){St(_t)}})}}var br=null;try{var on=typeof Fd<"u"&&typeof Fd.require=="function"&&Bd("worker_threads")||typeof __non_webpack_require__=="function"&&__non_webpack_require__("worker_threads")||typeof Bd=="function"&&Bd("worker_threads");br=on.Worker}catch{}function dn(ht,pt,At){var St=function(ee,be){return Buffer.from(ee,"base64").toString("utf8")}(ht),_t=St.indexOf(` +`,10)+1,zt=St.substring(_t)+"";return function(ee){return new br(zt,Object.assign({},ee,{eval:!0}))}}function pn(ht,pt,At){var St=function(be,Ie){return atob(be)}(ht),_t=St.indexOf(` +`,10)+1,zt=St.substring(_t)+"",ee=new Blob([zt],{type:"application/javascript"});return URL.createObjectURL(ee)}var vo=Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]",es,Or=(es="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewoJJ3VzZSBzdHJpY3QnOwoKCWZ1bmN0aW9uIGdldERlZmF1bHRFeHBvcnRGcm9tQ2pzICh4KSB7CgkJcmV0dXJuIHggJiYgeC5fX2VzTW9kdWxlICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh4LCAnZGVmYXVsdCcpID8geFsnZGVmYXVsdCddIDogeDsKCX0KCglmdW5jdGlvbiBnZXRBdWdtZW50ZWROYW1lc3BhY2UobikgewoJICBpZiAobi5fX2VzTW9kdWxlKSByZXR1cm4gbjsKCSAgdmFyIGYgPSBuLmRlZmF1bHQ7CgkJaWYgKHR5cGVvZiBmID09ICJmdW5jdGlvbiIpIHsKCQkJdmFyIGEgPSBmdW5jdGlvbiBhICgpIHsKCQkJCWlmICh0aGlzIGluc3RhbmNlb2YgYSkgewoJICAgICAgICByZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QoZiwgYXJndW1lbnRzLCB0aGlzLmNvbnN0cnVjdG9yKTsKCQkJCX0KCQkJCXJldHVybiBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgkJCX07CgkJCWEucHJvdG90eXBlID0gZi5wcm90b3R5cGU7CgkgIH0gZWxzZSBhID0ge307CgkgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCAnX19lc01vZHVsZScsIHt2YWx1ZTogdHJ1ZX0pOwoJCU9iamVjdC5rZXlzKG4pLmZvckVhY2goZnVuY3Rpb24gKGspIHsKCQkJdmFyIGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sIGspOwoJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwgaywgZC5nZXQgPyBkIDogewoJCQkJZW51bWVyYWJsZTogdHJ1ZSwKCQkJCWdldDogZnVuY3Rpb24gKCkgewoJCQkJCXJldHVybiBuW2tdOwoJCQkJfQoJCQl9KTsKCQl9KTsKCQlyZXR1cm4gYTsKCX0KCglmdW5jdGlvbiBvYmplY3RDb252ZXJ0ZXIoY29sdW1ucykgewoJICByZXR1cm4gbmV3IEZ1bmN0aW9uKCJkIiwgInJldHVybiB7IiArIGNvbHVtbnMubWFwKGZ1bmN0aW9uKG5hbWUsIGkpIHsKCSAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobmFtZSkgKyAiOiBkWyIgKyBpICsgIl0iOwoJICB9KS5qb2luKCIsIikgKyAifSIpOwoJfQoKCWZ1bmN0aW9uIGN1c3RvbUNvbnZlcnRlcihjb2x1bW5zLCBmKSB7CgkgIHZhciBvYmplY3QgPSBvYmplY3RDb252ZXJ0ZXIoY29sdW1ucyk7CgkgIHJldHVybiBmdW5jdGlvbihyb3csIGkpIHsKCSAgICByZXR1cm4gZihvYmplY3Qocm93KSwgaSwgY29sdW1ucyk7CgkgIH07Cgl9CgoJLy8gQ29tcHV0ZSB1bmlxdWUgY29sdW1ucyBpbiBvcmRlciBvZiBkaXNjb3ZlcnkuCglmdW5jdGlvbiBpbmZlckNvbHVtbnMocm93cykgewoJICB2YXIgY29sdW1uU2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKSwKCSAgICAgIGNvbHVtbnMgPSBbXTsKCgkgIHJvd3MuZm9yRWFjaChmdW5jdGlvbihyb3cpIHsKCSAgICBmb3IgKHZhciBjb2x1bW4gaW4gcm93KSB7CgkgICAgICBpZiAoIShjb2x1bW4gaW4gY29sdW1uU2V0KSkgewoJICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uU2V0W2NvbHVtbl0gPSBjb2x1bW4pOwoJICAgICAgfQoJICAgIH0KCSAgfSk7CgoJICByZXR1cm4gY29sdW1uczsKCX0KCglmdW5jdGlvbiBkc3YkMShkZWxpbWl0ZXIpIHsKCSAgdmFyIHJlRm9ybWF0ID0gbmV3IFJlZ0V4cCgiW1wiIiArIGRlbGltaXRlciArICJcbl0iKSwKCSAgICAgIGRlbGltaXRlckNvZGUgPSBkZWxpbWl0ZXIuY2hhckNvZGVBdCgwKTsKCgkgIGZ1bmN0aW9uIHBhcnNlKHRleHQsIGYpIHsKCSAgICB2YXIgY29udmVydCwgY29sdW1ucywgcm93cyA9IHBhcnNlUm93cyh0ZXh0LCBmdW5jdGlvbihyb3csIGkpIHsKCSAgICAgIGlmIChjb252ZXJ0KSByZXR1cm4gY29udmVydChyb3csIGkgLSAxKTsKCSAgICAgIGNvbHVtbnMgPSByb3csIGNvbnZlcnQgPSBmID8gY3VzdG9tQ29udmVydGVyKHJvdywgZikgOiBvYmplY3RDb252ZXJ0ZXIocm93KTsKCSAgICB9KTsKCSAgICByb3dzLmNvbHVtbnMgPSBjb2x1bW5zOwoJICAgIHJldHVybiByb3dzOwoJICB9CgoJICBmdW5jdGlvbiBwYXJzZVJvd3ModGV4dCwgZikgewoJICAgIHZhciBFT0wgPSB7fSwgLy8gc2VudGluZWwgdmFsdWUgZm9yIGVuZC1vZi1saW5lCgkgICAgICAgIEVPRiA9IHt9LCAvLyBzZW50aW5lbCB2YWx1ZSBmb3IgZW5kLW9mLWZpbGUKCSAgICAgICAgcm93cyA9IFtdLCAvLyBvdXRwdXQgcm93cwoJICAgICAgICBOID0gdGV4dC5sZW5ndGgsCgkgICAgICAgIEkgPSAwLCAvLyBjdXJyZW50IGNoYXJhY3RlciBpbmRleAoJICAgICAgICBuID0gMCwgLy8gdGhlIGN1cnJlbnQgbGluZSBudW1iZXIKCSAgICAgICAgdCwgLy8gdGhlIGN1cnJlbnQgdG9rZW4KCSAgICAgICAgZW9sOyAvLyBpcyB0aGUgY3VycmVudCB0b2tlbiBmb2xsb3dlZCBieSBFT0w/CgoJICAgIGZ1bmN0aW9uIHRva2VuKCkgewoJICAgICAgaWYgKEkgPj0gTikgcmV0dXJuIEVPRjsgLy8gc3BlY2lhbCBjYXNlOiBlbmQgb2YgZmlsZQoJICAgICAgaWYgKGVvbCkgcmV0dXJuIGVvbCA9IGZhbHNlLCBFT0w7IC8vIHNwZWNpYWwgY2FzZTogZW5kIG9mIGxpbmUKCgkgICAgICAvLyBzcGVjaWFsIGNhc2U6IHF1b3RlcwoJICAgICAgdmFyIGogPSBJLCBjOwoJICAgICAgaWYgKHRleHQuY2hhckNvZGVBdChqKSA9PT0gMzQpIHsKCSAgICAgICAgdmFyIGkgPSBqOwoJICAgICAgICB3aGlsZSAoaSsrIDwgTikgewoJICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQoaSkgPT09IDM0KSB7CgkgICAgICAgICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KGkgKyAxKSAhPT0gMzQpIGJyZWFrOwoJICAgICAgICAgICAgKytpOwoJICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBJID0gaSArIDI7CgkgICAgICAgIGMgPSB0ZXh0LmNoYXJDb2RlQXQoaSArIDEpOwoJICAgICAgICBpZiAoYyA9PT0gMTMpIHsKCSAgICAgICAgICBlb2wgPSB0cnVlOwoJICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQoaSArIDIpID09PSAxMCkgKytJOwoJICAgICAgICB9IGVsc2UgaWYgKGMgPT09IDEwKSB7CgkgICAgICAgICAgZW9sID0gdHJ1ZTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gdGV4dC5zbGljZShqICsgMSwgaSkucmVwbGFjZSgvIiIvZywgIlwiIik7CgkgICAgICB9CgoJICAgICAgLy8gY29tbW9uIGNhc2U6IGZpbmQgbmV4dCBkZWxpbWl0ZXIgb3IgbmV3bGluZQoJICAgICAgd2hpbGUgKEkgPCBOKSB7CgkgICAgICAgIHZhciBrID0gMTsKCSAgICAgICAgYyA9IHRleHQuY2hhckNvZGVBdChJKyspOwoJICAgICAgICBpZiAoYyA9PT0gMTApIGVvbCA9IHRydWU7IC8vIFxuCgkgICAgICAgIGVsc2UgaWYgKGMgPT09IDEzKSB7IGVvbCA9IHRydWU7IGlmICh0ZXh0LmNoYXJDb2RlQXQoSSkgPT09IDEwKSArK0ksICsrazsgfSAvLyBccnxcclxuCgkgICAgICAgIGVsc2UgaWYgKGMgIT09IGRlbGltaXRlckNvZGUpIGNvbnRpbnVlOwoJICAgICAgICByZXR1cm4gdGV4dC5zbGljZShqLCBJIC0gayk7CgkgICAgICB9CgoJICAgICAgLy8gc3BlY2lhbCBjYXNlOiBsYXN0IHRva2VuIGJlZm9yZSBFT0YKCSAgICAgIHJldHVybiB0ZXh0LnNsaWNlKGopOwoJICAgIH0KCgkgICAgd2hpbGUgKCh0ID0gdG9rZW4oKSkgIT09IEVPRikgewoJICAgICAgdmFyIGEgPSBbXTsKCSAgICAgIHdoaWxlICh0ICE9PSBFT0wgJiYgdCAhPT0gRU9GKSB7CgkgICAgICAgIGEucHVzaCh0KTsKCSAgICAgICAgdCA9IHRva2VuKCk7CgkgICAgICB9CgkgICAgICBpZiAoZiAmJiAoYSA9IGYoYSwgbisrKSkgPT0gbnVsbCkgY29udGludWU7CgkgICAgICByb3dzLnB1c2goYSk7CgkgICAgfQoKCSAgICByZXR1cm4gcm93czsKCSAgfQoKCSAgZnVuY3Rpb24gZm9ybWF0KHJvd3MsIGNvbHVtbnMpIHsKCSAgICBpZiAoY29sdW1ucyA9PSBudWxsKSBjb2x1bW5zID0gaW5mZXJDb2x1bW5zKHJvd3MpOwoJICAgIHJldHVybiBbY29sdW1ucy5tYXAoZm9ybWF0VmFsdWUpLmpvaW4oZGVsaW1pdGVyKV0uY29uY2F0KHJvd3MubWFwKGZ1bmN0aW9uKHJvdykgewoJICAgICAgcmV0dXJuIGNvbHVtbnMubWFwKGZ1bmN0aW9uKGNvbHVtbikgewoJICAgICAgICByZXR1cm4gZm9ybWF0VmFsdWUocm93W2NvbHVtbl0pOwoJICAgICAgfSkuam9pbihkZWxpbWl0ZXIpOwoJICAgIH0pKS5qb2luKCJcbiIpOwoJICB9CgoJICBmdW5jdGlvbiBmb3JtYXRSb3dzKHJvd3MpIHsKCSAgICByZXR1cm4gcm93cy5tYXAoZm9ybWF0Um93KS5qb2luKCJcbiIpOwoJICB9CgoJICBmdW5jdGlvbiBmb3JtYXRSb3cocm93KSB7CgkgICAgcmV0dXJuIHJvdy5tYXAoZm9ybWF0VmFsdWUpLmpvaW4oZGVsaW1pdGVyKTsKCSAgfQoKCSAgZnVuY3Rpb24gZm9ybWF0VmFsdWUodGV4dCkgewoJICAgIHJldHVybiB0ZXh0ID09IG51bGwgPyAiIgoJICAgICAgICA6IHJlRm9ybWF0LnRlc3QodGV4dCArPSAiIikgPyAiXCIiICsgdGV4dC5yZXBsYWNlKC9cIi9nLCAiXCJcIiIpICsgIlwiIgoJICAgICAgICA6IHRleHQ7CgkgIH0KCgkgIHJldHVybiB7CgkgICAgcGFyc2U6IHBhcnNlLAoJICAgIHBhcnNlUm93czogcGFyc2VSb3dzLAoJICAgIGZvcm1hdDogZm9ybWF0LAoJICAgIGZvcm1hdFJvd3M6IGZvcm1hdFJvd3MKCSAgfTsKCX0KCgl2YXIgY3N2ID0gZHN2JDEoIiwiKTsKCgl2YXIgY3N2UGFyc2UgPSBjc3YucGFyc2U7Cgl2YXIgY3N2UGFyc2VSb3dzID0gY3N2LnBhcnNlUm93czsKCXZhciBjc3ZGb3JtYXQgPSBjc3YuZm9ybWF0OwoJdmFyIGNzdkZvcm1hdFJvd3MgPSBjc3YuZm9ybWF0Um93czsKCgl2YXIgdHN2ID0gZHN2JDEoIlx0Iik7CgoJdmFyIHRzdlBhcnNlID0gdHN2LnBhcnNlOwoJdmFyIHRzdlBhcnNlUm93cyA9IHRzdi5wYXJzZVJvd3M7Cgl2YXIgdHN2Rm9ybWF0ID0gdHN2LmZvcm1hdDsKCXZhciB0c3ZGb3JtYXRSb3dzID0gdHN2LmZvcm1hdFJvd3M7CgoJdmFyIGQzRHN2ID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoewoJCV9fcHJvdG9fXzogbnVsbCwKCQljc3ZGb3JtYXQ6IGNzdkZvcm1hdCwKCQljc3ZGb3JtYXRSb3dzOiBjc3ZGb3JtYXRSb3dzLAoJCWNzdlBhcnNlOiBjc3ZQYXJzZSwKCQljc3ZQYXJzZVJvd3M6IGNzdlBhcnNlUm93cywKCQlkc3ZGb3JtYXQ6IGRzdiQxLAoJCXRzdkZvcm1hdDogdHN2Rm9ybWF0LAoJCXRzdkZvcm1hdFJvd3M6IHRzdkZvcm1hdFJvd3MsCgkJdHN2UGFyc2U6IHRzdlBhcnNlLAoJCXRzdlBhcnNlUm93czogdHN2UGFyc2VSb3dzCgl9KTsKCgl2YXIgcmVxdWlyZSQkMCA9IC8qQF9fUFVSRV9fKi9nZXRBdWdtZW50ZWROYW1lc3BhY2UoZDNEc3YpOwoKCXZhciBzZXhhZ2VzaW1hbCQxID0ge2V4cG9ydHM6IHt9fTsKCglzZXhhZ2VzaW1hbCQxLmV4cG9ydHMgPSBlbGVtZW50OwoJc2V4YWdlc2ltYWwkMS5leHBvcnRzLnBhaXIgPSBwYWlyOwoJc2V4YWdlc2ltYWwkMS5leHBvcnRzLmZvcm1hdCA9IGZvcm1hdDsKCXNleGFnZXNpbWFsJDEuZXhwb3J0cy5mb3JtYXRQYWlyID0gZm9ybWF0UGFpcjsKCXNleGFnZXNpbWFsJDEuZXhwb3J0cy5jb29yZFRvRE1TID0gY29vcmRUb0RNUzsKCgoJZnVuY3Rpb24gZWxlbWVudChpbnB1dCwgZGltcykgewoJICB2YXIgcmVzdWx0ID0gc2VhcmNoKGlucHV0LCBkaW1zKTsKCSAgcmV0dXJuIChyZXN1bHQgPT09IG51bGwpID8gbnVsbCA6IHJlc3VsdC52YWw7Cgl9CgoKCWZ1bmN0aW9uIGZvcm1hdFBhaXIoaW5wdXQpIHsKCSAgcmV0dXJuIGZvcm1hdChpbnB1dC5sYXQsICdsYXQnKSArICcgJyArIGZvcm1hdChpbnB1dC5sb24sICdsb24nKTsKCX0KCgoJLy8gSXMgMCBOb3J0aCBvciBTb3V0aD8KCWZ1bmN0aW9uIGZvcm1hdChpbnB1dCwgZGltKSB7CgkgIHZhciBkbXMgPSBjb29yZFRvRE1TKGlucHV0LCBkaW0pOwoJICByZXR1cm4gZG1zLndob2xlICsgJ8KwICcgKwoJICAgIChkbXMubWludXRlcyA/IGRtcy5taW51dGVzICsgJ1wnICcgOiAnJykgKwoJICAgIChkbXMuc2Vjb25kcyA/IGRtcy5zZWNvbmRzICsgJyIgJyA6ICcnKSArIGRtcy5kaXI7Cgl9CgoKCWZ1bmN0aW9uIGNvb3JkVG9ETVMoaW5wdXQsIGRpbSkgewoJICB2YXIgZGlycyA9IHsgbGF0OiBbJ04nLCAnUyddLCBsb246IFsnRScsICdXJ10gfVtkaW1dIHx8ICcnOwoJICB2YXIgZGlyID0gZGlyc1tpbnB1dCA+PSAwID8gMCA6IDFdOwoJICB2YXIgYWJzID0gTWF0aC5hYnMoaW5wdXQpOwoJICB2YXIgd2hvbGUgPSBNYXRoLmZsb29yKGFicyk7CgkgIHZhciBmcmFjdGlvbiA9IGFicyAtIHdob2xlOwoJICB2YXIgZnJhY3Rpb25NaW51dGVzID0gZnJhY3Rpb24gKiA2MDsKCSAgdmFyIG1pbnV0ZXMgPSBNYXRoLmZsb29yKGZyYWN0aW9uTWludXRlcyk7CgkgIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcigoZnJhY3Rpb25NaW51dGVzIC0gbWludXRlcykgKiA2MCk7CgoJICByZXR1cm4gewoJICAgIHdob2xlOiB3aG9sZSwKCSAgICBtaW51dGVzOiBtaW51dGVzLAoJICAgIHNlY29uZHM6IHNlY29uZHMsCgkgICAgZGlyOiBkaXIKCSAgfTsKCX0KCgoJZnVuY3Rpb24gc2VhcmNoKGlucHV0LCBkaW1zKSB7CgkgIGlmICghZGltcykgZGltcyA9ICdOU0VXJzsKCSAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHJldHVybiBudWxsOwoKCSAgaW5wdXQgPSBpbnB1dC50b1VwcGVyQ2FzZSgpOwoJICB2YXIgcmVnZXggPSAvXltcc1wsXSooW05TRVddKT9ccyooW1wtfFzigJR8XOKAlV0/WzAtOS5dKylbwrDCusuaXT9ccyooPzooWzAtOS5dKylbJ+KAmeKAsuKAmF1ccyopPyg/OihbMC05Ll0rKSg/OicnfCJ84oCdfOKAsylccyopPyhbTlNFV10pPy87CgoJICB2YXIgbSA9IGlucHV0Lm1hdGNoKHJlZ2V4KTsKCSAgaWYgKCFtKSByZXR1cm4gbnVsbDsgIC8vIG5vIG1hdGNoCgoJICB2YXIgbWF0Y2hlZCA9IG1bMF07CgoJICAvLyBleHRyYWN0IGRpbWVuc2lvbi4uIG1bMV0gPSBsZWFkaW5nLCBtWzVdID0gdHJhaWxpbmcKCSAgdmFyIGRpbTsKCSAgaWYgKG1bMV0gJiYgbVs1XSkgeyAgICAgICAgICAgICAgICAgLy8gaWYgbWF0Y2hlZCBib3RoLi4KCSAgICBkaW0gPSBtWzFdOyAgICAgICAgICAgICAgICAgICAgICAgLy8ga2VlcCBsZWFkaW5nCgkgICAgbWF0Y2hlZCA9IG1hdGNoZWQuc2xpY2UoMCwgLTEpOyAgIC8vIHJlbW92ZSB0cmFpbGluZyBkaW1lbnNpb24gZnJvbSBtYXRjaAoJICB9IGVsc2UgewoJICAgIGRpbSA9IG1bMV0gfHwgbVs1XTsKCSAgfQoKCSAgLy8gaWYgdW5yZWNvZ25pemVkIGRpbWVuc2lvbgoJICBpZiAoZGltICYmIGRpbXMuaW5kZXhPZihkaW0pID09PSAtMSkgcmV0dXJuIG51bGw7CgoJICAvLyBleHRyYWN0IERNUwoJICB2YXIgZGVnID0gbVsyXSA/IHBhcnNlRmxvYXQobVsyXSkgOiAwOwoJICB2YXIgbWluID0gbVszXSA/IHBhcnNlRmxvYXQobVszXSkgLyA2MCA6IDA7CgkgIHZhciBzZWMgPSBtWzRdID8gcGFyc2VGbG9hdChtWzRdKSAvIDM2MDAgOiAwOwoJICB2YXIgc2lnbiA9IChkZWcgPCAwKSA/IC0xIDogMTsKCSAgaWYgKGRpbSA9PT0gJ1MnIHx8IGRpbSA9PT0gJ1cnKSBzaWduICo9IC0xOwoKCSAgcmV0dXJuIHsKCSAgICB2YWw6IChNYXRoLmFicyhkZWcpICsgbWluICsgc2VjKSAqIHNpZ24sCgkgICAgZGltOiBkaW0sCgkgICAgbWF0Y2hlZDogbWF0Y2hlZCwKCSAgICByZW1haW46IGlucHV0LnNsaWNlKG1hdGNoZWQubGVuZ3RoKQoJICB9OwoJfQoKCglmdW5jdGlvbiBwYWlyKGlucHV0LCBkaW1zKSB7CgkgIGlucHV0ID0gaW5wdXQudHJpbSgpOwoJICB2YXIgb25lID0gc2VhcmNoKGlucHV0LCBkaW1zKTsKCSAgaWYgKCFvbmUpIHJldHVybiBudWxsOwoKCSAgaW5wdXQgPSBvbmUucmVtYWluLnRyaW0oKTsKCSAgdmFyIHR3byA9IHNlYXJjaChpbnB1dCwgZGltcyk7CgkgIGlmICghdHdvIHx8IHR3by5yZW1haW4pIHJldHVybiBudWxsOwoKCSAgaWYgKG9uZS5kaW0pIHsKCSAgICByZXR1cm4gc3dhcGRpbShvbmUudmFsLCB0d28udmFsLCBvbmUuZGltKTsKCSAgfSBlbHNlIHsKCSAgICByZXR1cm4gW29uZS52YWwsIHR3by52YWxdOwoJICB9Cgl9CgoKCWZ1bmN0aW9uIHN3YXBkaW0oYSwgYiwgZGltKSB7CgkgIGlmIChkaW0gPT09ICdOJyB8fCBkaW0gPT09ICdTJykgcmV0dXJuIFthLCBiXTsKCSAgaWYgKGRpbSA9PT0gJ1cnIHx8IGRpbSA9PT0gJ0UnKSByZXR1cm4gW2IsIGFdOwoJfQoKCXZhciBzZXhhZ2VzaW1hbEV4cG9ydHMgPSBzZXhhZ2VzaW1hbCQxLmV4cG9ydHM7CgoJdmFyIGRzdiA9IHJlcXVpcmUkJDAsCgkgICAgc2V4YWdlc2ltYWwgPSBzZXhhZ2VzaW1hbEV4cG9ydHM7CgoJdmFyIGxhdFJlZ2V4ID0gLyhMYXQpKGl0dWRlKT8vZ2ksCgkgICAgbG9uUmVnZXggPSAvKEwpKG9ufG5nKShnaXR1ZGUpPy9pOwoKCWZ1bmN0aW9uIGd1ZXNzSGVhZGVyKHJvdywgcmVnZXhwKSB7CgkgICAgdmFyIG5hbWUsIG1hdGNoLCBzY29yZTsKCSAgICBmb3IgKHZhciBmIGluIHJvdykgewoJICAgICAgICBtYXRjaCA9IGYubWF0Y2gocmVnZXhwKTsKCSAgICAgICAgaWYgKG1hdGNoICYmICghbmFtZSB8fCBtYXRjaFswXS5sZW5ndGggLyBmLmxlbmd0aCA+IHNjb3JlKSkgewoJICAgICAgICAgICAgc2NvcmUgPSBtYXRjaFswXS5sZW5ndGggLyBmLmxlbmd0aDsKCSAgICAgICAgICAgIG5hbWUgPSBmOwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiBuYW1lOwoJfQoKCWZ1bmN0aW9uIGd1ZXNzTGF0SGVhZGVyKHJvdykgeyByZXR1cm4gZ3Vlc3NIZWFkZXIocm93LCBsYXRSZWdleCk7IH0KCWZ1bmN0aW9uIGd1ZXNzTG9uSGVhZGVyKHJvdykgeyByZXR1cm4gZ3Vlc3NIZWFkZXIocm93LCBsb25SZWdleCk7IH0KCglmdW5jdGlvbiBpc0xhdChmKSB7IHJldHVybiAhIWYubWF0Y2gobGF0UmVnZXgpOyB9CglmdW5jdGlvbiBpc0xvbihmKSB7IHJldHVybiAhIWYubWF0Y2gobG9uUmVnZXgpOyB9CgoJZnVuY3Rpb24ga2V5Q291bnQobykgewoJICAgIHJldHVybiAodHlwZW9mIG8gPT0gJ29iamVjdCcpID8gT2JqZWN0LmtleXMobykubGVuZ3RoIDogMDsKCX0KCglmdW5jdGlvbiBhdXRvRGVsaW1pdGVyKHgpIHsKCSAgICB2YXIgZGVsaW1pdGVycyA9IFsnLCcsICc7JywgJ1x0JywgJ3wnXTsKCSAgICB2YXIgcmVzdWx0cyA9IFtdOwoKCSAgICBkZWxpbWl0ZXJzLmZvckVhY2goZnVuY3Rpb24gKGRlbGltaXRlcikgewoJICAgICAgICB2YXIgcmVzID0gZHN2LmRzdkZvcm1hdChkZWxpbWl0ZXIpLnBhcnNlKHgpOwoJICAgICAgICBpZiAocmVzLmxlbmd0aCA+PSAxKSB7CgkgICAgICAgICAgICB2YXIgY291bnQgPSBrZXlDb3VudChyZXNbMF0pOwoJICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgICAgICBpZiAoa2V5Q291bnQocmVzW2ldKSAhPT0gY291bnQpIHJldHVybjsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7CgkgICAgICAgICAgICAgICAgZGVsaW1pdGVyOiBkZWxpbWl0ZXIsCgkgICAgICAgICAgICAgICAgYXJpdHk6IE9iamVjdC5rZXlzKHJlc1swXSkubGVuZ3RoLAoJICAgICAgICAgICAgfSk7CgkgICAgICAgIH0KCSAgICB9KTsKCgkgICAgaWYgKHJlc3VsdHMubGVuZ3RoKSB7CgkgICAgICAgIHJldHVybiByZXN1bHRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKCSAgICAgICAgICAgIHJldHVybiBiLmFyaXR5IC0gYS5hcml0eTsKCSAgICAgICAgfSlbMF0uZGVsaW1pdGVyOwoJICAgIH0gZWxzZSB7CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH0KCX0KCgkvKioKCSAqIFNpbGx5IHN0b3BnYXAgZm9yIGRzdiB0byBkMy1kc3YgdXBncmFkZQoJICoKCSAqIEBwYXJhbSB7QXJyYXl9IHggZHN2IG91dHB1dAoJICogQHJldHVybnMge0FycmF5fSBhcnJheSB3aXRob3V0IGNvbHVtbnMgbWVtYmVyCgkgKi8KCWZ1bmN0aW9uIGRlbGV0ZUNvbHVtbnMoeCkgewoJICAgIGRlbGV0ZSB4LmNvbHVtbnM7CgkgICAgcmV0dXJuIHg7Cgl9CgoJZnVuY3Rpb24gYXV0byh4KSB7CgkgICAgdmFyIGRlbGltaXRlciA9IGF1dG9EZWxpbWl0ZXIoeCk7CgkgICAgaWYgKCFkZWxpbWl0ZXIpIHJldHVybiBudWxsOwoJICAgIHJldHVybiBkZWxldGVDb2x1bW5zKGRzdi5kc3ZGb3JtYXQoZGVsaW1pdGVyKS5wYXJzZSh4KSk7Cgl9CgoJZnVuY3Rpb24gY3N2Mmdlb2pzb24oeCwgb3B0aW9ucywgY2FsbGJhY2spIHsKCgkgICAgaWYgKCFjYWxsYmFjaykgewoJICAgICAgICBjYWxsYmFjayA9IG9wdGlvbnM7CgkgICAgICAgIG9wdGlvbnMgPSB7fTsKCSAgICB9CgoJICAgIG9wdGlvbnMuZGVsaW1pdGVyID0gb3B0aW9ucy5kZWxpbWl0ZXIgfHwgJywnOwoKCSAgICB2YXIgbGF0ZmllbGQgPSBvcHRpb25zLmxhdGZpZWxkIHx8ICcnLAoJICAgICAgICBsb25maWVsZCA9IG9wdGlvbnMubG9uZmllbGQgfHwgJycsCgkgICAgICAgIGNycyA9IG9wdGlvbnMuY3JzIHx8ICcnOwoKCSAgICB2YXIgZmVhdHVyZXMgPSBbXSwKCSAgICAgICAgZmVhdHVyZWNvbGxlY3Rpb24gPSB7dHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJywgZmVhdHVyZXM6IGZlYXR1cmVzfTsKCgkgICAgaWYgKGNycyAhPT0gJycpIHsKCSAgICAgICAgZmVhdHVyZWNvbGxlY3Rpb24uY3JzID0ge3R5cGU6ICduYW1lJywgcHJvcGVydGllczoge25hbWU6IGNyc319OwoJICAgIH0KCgkgICAgaWYgKG9wdGlvbnMuZGVsaW1pdGVyID09PSAnYXV0bycgJiYgdHlwZW9mIHggPT0gJ3N0cmluZycpIHsKCSAgICAgICAgb3B0aW9ucy5kZWxpbWl0ZXIgPSBhdXRvRGVsaW1pdGVyKHgpOwoJICAgICAgICBpZiAoIW9wdGlvbnMuZGVsaW1pdGVyKSB7CgkgICAgICAgICAgICBjYWxsYmFjayh7CgkgICAgICAgICAgICAgICAgdHlwZTogJ0Vycm9yJywKCSAgICAgICAgICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGF1dG9kZXRlY3QgZGVsaW1pdGVyJwoJICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICByZXR1cm47CgkgICAgICAgIH0KCSAgICB9CgoJICAgIHZhciBudW1lcmljRmllbGRzID0gb3B0aW9ucy5udW1lcmljRmllbGRzID8gb3B0aW9ucy5udW1lcmljRmllbGRzLnNwbGl0KCcsJykgOiBudWxsOwoKCSAgICB2YXIgcGFyc2VkID0gKHR5cGVvZiB4ID09ICdzdHJpbmcnKSA/CgkgICAgICAgIGRzdi5kc3ZGb3JtYXQob3B0aW9ucy5kZWxpbWl0ZXIpLnBhcnNlKHgsIGZ1bmN0aW9uIChkKSB7CgkgICAgICAgICAgICBpZiAobnVtZXJpY0ZpZWxkcykgewoJICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChudW1lcmljRmllbGRzLmluY2x1ZGVzKGtleSkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGRba2V5XSA9ICtkW2tleV07CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICByZXR1cm4gZDsKCSAgICAgICAgfSkgOiB4OwoKCSAgICBpZiAoIXBhcnNlZC5sZW5ndGgpIHsKCSAgICAgICAgY2FsbGJhY2sobnVsbCwgZmVhdHVyZWNvbGxlY3Rpb24pOwoJICAgICAgICByZXR1cm47CgkgICAgfQoKCSAgICB2YXIgZXJyb3JzID0gW107CgkgICAgdmFyIGk7CgoKCSAgICBpZiAoIWxhdGZpZWxkKSBsYXRmaWVsZCA9IGd1ZXNzTGF0SGVhZGVyKHBhcnNlZFswXSk7CgkgICAgaWYgKCFsb25maWVsZCkgbG9uZmllbGQgPSBndWVzc0xvbkhlYWRlcihwYXJzZWRbMF0pOwoJICAgIHZhciBub0dlb21ldHJ5ID0gKCFsYXRmaWVsZCB8fCAhbG9uZmllbGQpOwoKCSAgICBpZiAobm9HZW9tZXRyeSkgewoJICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICBmZWF0dXJlcy5wdXNoKHsKCSAgICAgICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsCgkgICAgICAgICAgICAgICAgcHJvcGVydGllczogcGFyc2VkW2ldLAoJICAgICAgICAgICAgICAgIGdlb21ldHJ5OiBudWxsCgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfQoJICAgICAgICBjYWxsYmFjayhlcnJvcnMubGVuZ3RoID8gZXJyb3JzIDogbnVsbCwgZmVhdHVyZWNvbGxlY3Rpb24pOwoJICAgICAgICByZXR1cm47CgkgICAgfQoKCSAgICBmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIGlmIChwYXJzZWRbaV1bbG9uZmllbGRdICE9PSB1bmRlZmluZWQgJiYKCSAgICAgICAgICAgIHBhcnNlZFtpXVtsYXRmaWVsZF0gIT09IHVuZGVmaW5lZCkgewoKCSAgICAgICAgICAgIHZhciBsb25rID0gcGFyc2VkW2ldW2xvbmZpZWxkXSwKCSAgICAgICAgICAgICAgICBsYXRrID0gcGFyc2VkW2ldW2xhdGZpZWxkXSwKCSAgICAgICAgICAgICAgICBsb25mLCBsYXRmLAoJICAgICAgICAgICAgICAgIGE7CgoJICAgICAgICAgICAgYSA9IHNleGFnZXNpbWFsKGxvbmssICdFVycpOwoJICAgICAgICAgICAgaWYgKGEpIGxvbmsgPSBhOwoJICAgICAgICAgICAgYSA9IHNleGFnZXNpbWFsKGxhdGssICdOUycpOwoJICAgICAgICAgICAgaWYgKGEpIGxhdGsgPSBhOwoKCSAgICAgICAgICAgIGxvbmYgPSBwYXJzZUZsb2F0KGxvbmspOwoJICAgICAgICAgICAgbGF0ZiA9IHBhcnNlRmxvYXQobGF0ayk7CgoJICAgICAgICAgICAgaWYgKGlzTmFOKGxvbmYpIHx8CgkgICAgICAgICAgICAgICAgaXNOYU4obGF0ZikpIHsKCSAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh7CgkgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdBIHJvdyBjb250YWluZWQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgbGF0aXR1ZGUgb3IgbG9uZ2l0dWRlJywKCSAgICAgICAgICAgICAgICAgICAgcm93OiBwYXJzZWRbaV0sCgkgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpCgkgICAgICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pbmNsdWRlTGF0TG9uKSB7CgkgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWRbaV1bbG9uZmllbGRdOwoJICAgICAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkW2ldW2xhdGZpZWxkXTsKCSAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIGZlYXR1cmVzLnB1c2goewoJICAgICAgICAgICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsCgkgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHBhcnNlZFtpXSwKCSAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnk6IHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsCgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogWwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQobG9uZiksCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChsYXRmKQoJICAgICAgICAgICAgICAgICAgICAgICAgXQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9CgoJICAgIGNhbGxiYWNrKGVycm9ycy5sZW5ndGggPyBlcnJvcnMgOiBudWxsLCBmZWF0dXJlY29sbGVjdGlvbik7Cgl9CgoJZnVuY3Rpb24gdG9MaW5lKGdqKSB7CgkgICAgdmFyIGZlYXR1cmVzID0gZ2ouZmVhdHVyZXM7CgkgICAgdmFyIGxpbmUgPSB7CgkgICAgICAgIHR5cGU6ICdGZWF0dXJlJywKCSAgICAgICAgZ2VvbWV0cnk6IHsKCSAgICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJywKCSAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbXQoJICAgICAgICB9CgkgICAgfTsKCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIGxpbmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMucHVzaChmZWF0dXJlc1tpXS5nZW9tZXRyeS5jb29yZGluYXRlcyk7CgkgICAgfQoJICAgIGxpbmUucHJvcGVydGllcyA9IGZlYXR1cmVzLnJlZHVjZShmdW5jdGlvbiAoYWdncmVnYXRlZFByb3BlcnRpZXMsIG5ld0ZlYXR1cmUpIHsKCSAgICAgICAgZm9yICh2YXIga2V5IGluIG5ld0ZlYXR1cmUucHJvcGVydGllcykgewoJICAgICAgICAgICAgaWYgKCFhZ2dyZWdhdGVkUHJvcGVydGllc1trZXldKSB7CgkgICAgICAgICAgICAgICAgYWdncmVnYXRlZFByb3BlcnRpZXNba2V5XSA9IFtdOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgYWdncmVnYXRlZFByb3BlcnRpZXNba2V5XS5wdXNoKG5ld0ZlYXR1cmUucHJvcGVydGllc1trZXldKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gYWdncmVnYXRlZFByb3BlcnRpZXM7CgkgICAgfSwge30pOwoJICAgIHJldHVybiB7CgkgICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsCgkgICAgICAgIGZlYXR1cmVzOiBbbGluZV0KCSAgICB9OwoJfQoKCWZ1bmN0aW9uIHRvUG9seWdvbihnaikgewoJICAgIHZhciBmZWF0dXJlcyA9IGdqLmZlYXR1cmVzOwoJICAgIHZhciBwb2x5ID0gewoJICAgICAgICB0eXBlOiAnRmVhdHVyZScsCgkgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsCgkgICAgICAgICAgICBjb29yZGluYXRlczogW1tdXQoJICAgICAgICB9CgkgICAgfTsKCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIHBvbHkuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ucHVzaChmZWF0dXJlc1tpXS5nZW9tZXRyeS5jb29yZGluYXRlcyk7CgkgICAgfQoJICAgIHBvbHkucHJvcGVydGllcyA9IGZlYXR1cmVzLnJlZHVjZShmdW5jdGlvbiAoYWdncmVnYXRlZFByb3BlcnRpZXMsIG5ld0ZlYXR1cmUpIHsKCSAgICAgICAgZm9yICh2YXIga2V5IGluIG5ld0ZlYXR1cmUucHJvcGVydGllcykgewoJICAgICAgICAgICAgaWYgKCFhZ2dyZWdhdGVkUHJvcGVydGllc1trZXldKSB7CgkgICAgICAgICAgICAgICAgYWdncmVnYXRlZFByb3BlcnRpZXNba2V5XSA9IFtdOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgYWdncmVnYXRlZFByb3BlcnRpZXNba2V5XS5wdXNoKG5ld0ZlYXR1cmUucHJvcGVydGllc1trZXldKTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gYWdncmVnYXRlZFByb3BlcnRpZXM7CgkgICAgfSwge30pOwoJICAgIHJldHVybiB7CgkgICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsCgkgICAgICAgIGZlYXR1cmVzOiBbcG9seV0KCSAgICB9OwoJfQoKCXZhciBjc3YyZ2VvanNvbl8xID0gewoJICAgIGlzTG9uOiBpc0xvbiwKCSAgICBpc0xhdDogaXNMYXQsCgkgICAgZ3Vlc3NMYXRIZWFkZXI6IGd1ZXNzTGF0SGVhZGVyLAoJICAgIGd1ZXNzTG9uSGVhZGVyOiBndWVzc0xvbkhlYWRlciwKCSAgICBjc3Y6IGRzdi5jc3ZQYXJzZSwKCSAgICB0c3Y6IGRzdi50c3ZQYXJzZSwKCSAgICBkc3Y6IGRzdiwKCSAgICBhdXRvOiBhdXRvLAoJICAgIGNzdjJnZW9qc29uOiBjc3YyZ2VvanNvbiwKCSAgICB0b0xpbmU6IHRvTGluZSwKCSAgICB0b1BvbHlnb246IHRvUG9seWdvbgoJfTsKCglmdW5jdGlvbiBpZGVudGl0eSh4KSB7CgkgIHJldHVybiB4OwoJfQoKCWZ1bmN0aW9uIHRyYW5zZm9ybSh0cmFuc2Zvcm0pIHsKCSAgaWYgKHRyYW5zZm9ybSA9PSBudWxsKSByZXR1cm4gaWRlbnRpdHk7CgkgIHZhciB4MCwKCSAgICAgIHkwLAoJICAgICAga3ggPSB0cmFuc2Zvcm0uc2NhbGVbMF0sCgkgICAgICBreSA9IHRyYW5zZm9ybS5zY2FsZVsxXSwKCSAgICAgIGR4ID0gdHJhbnNmb3JtLnRyYW5zbGF0ZVswXSwKCSAgICAgIGR5ID0gdHJhbnNmb3JtLnRyYW5zbGF0ZVsxXTsKCSAgcmV0dXJuIGZ1bmN0aW9uKGlucHV0LCBpKSB7CgkgICAgaWYgKCFpKSB4MCA9IHkwID0gMDsKCSAgICB2YXIgaiA9IDIsIG4gPSBpbnB1dC5sZW5ndGgsIG91dHB1dCA9IG5ldyBBcnJheShuKTsKCSAgICBvdXRwdXRbMF0gPSAoeDAgKz0gaW5wdXRbMF0pICoga3ggKyBkeDsKCSAgICBvdXRwdXRbMV0gPSAoeTAgKz0gaW5wdXRbMV0pICoga3kgKyBkeTsKCSAgICB3aGlsZSAoaiA8IG4pIG91dHB1dFtqXSA9IGlucHV0W2pdLCArK2o7CgkgICAgcmV0dXJuIG91dHB1dDsKCSAgfTsKCX0KCglmdW5jdGlvbiByZXZlcnNlKGFycmF5LCBuKSB7CgkgIHZhciB0LCBqID0gYXJyYXkubGVuZ3RoLCBpID0gaiAtIG47CgkgIHdoaWxlIChpIDwgLS1qKSB0ID0gYXJyYXlbaV0sIGFycmF5W2krK10gPSBhcnJheVtqXSwgYXJyYXlbal0gPSB0OwoJfQoKCWZ1bmN0aW9uIHRvcG9qc29uRmVhdHVyZSh0b3BvbG9neSwgbykgewoJICBpZiAodHlwZW9mIG8gPT09ICJzdHJpbmciKSBvID0gdG9wb2xvZ3kub2JqZWN0c1tvXTsKCSAgcmV0dXJuIG8udHlwZSA9PT0gIkdlb21ldHJ5Q29sbGVjdGlvbiIKCSAgICAgID8ge3R5cGU6ICJGZWF0dXJlQ29sbGVjdGlvbiIsIGZlYXR1cmVzOiBvLmdlb21ldHJpZXMubWFwKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIGZlYXR1cmUodG9wb2xvZ3ksIG8pOyB9KX0KCSAgICAgIDogZmVhdHVyZSh0b3BvbG9neSwgbyk7Cgl9CgoJZnVuY3Rpb24gZmVhdHVyZSh0b3BvbG9neSwgbykgewoJICB2YXIgaWQgPSBvLmlkLAoJICAgICAgYmJveCA9IG8uYmJveCwKCSAgICAgIHByb3BlcnRpZXMgPSBvLnByb3BlcnRpZXMgPT0gbnVsbCA/IHt9IDogby5wcm9wZXJ0aWVzLAoJICAgICAgZ2VvbWV0cnkgPSBvYmplY3QodG9wb2xvZ3ksIG8pOwoJICByZXR1cm4gaWQgPT0gbnVsbCAmJiBiYm94ID09IG51bGwgPyB7dHlwZTogIkZlYXR1cmUiLCBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLCBnZW9tZXRyeTogZ2VvbWV0cnl9CgkgICAgICA6IGJib3ggPT0gbnVsbCA/IHt0eXBlOiAiRmVhdHVyZSIsIGlkOiBpZCwgcHJvcGVydGllczogcHJvcGVydGllcywgZ2VvbWV0cnk6IGdlb21ldHJ5fQoJICAgICAgOiB7dHlwZTogIkZlYXR1cmUiLCBpZDogaWQsIGJib3g6IGJib3gsIHByb3BlcnRpZXM6IHByb3BlcnRpZXMsIGdlb21ldHJ5OiBnZW9tZXRyeX07Cgl9CgoJZnVuY3Rpb24gb2JqZWN0KHRvcG9sb2d5LCBvKSB7CgkgIHZhciB0cmFuc2Zvcm1Qb2ludCA9IHRyYW5zZm9ybSh0b3BvbG9neS50cmFuc2Zvcm0pLAoJICAgICAgYXJjcyA9IHRvcG9sb2d5LmFyY3M7CgoJICBmdW5jdGlvbiBhcmMoaSwgcG9pbnRzKSB7CgkgICAgaWYgKHBvaW50cy5sZW5ndGgpIHBvaW50cy5wb3AoKTsKCSAgICBmb3IgKHZhciBhID0gYXJjc1tpIDwgMCA/IH5pIDogaV0sIGsgPSAwLCBuID0gYS5sZW5ndGg7IGsgPCBuOyArK2spIHsKCSAgICAgIHBvaW50cy5wdXNoKHRyYW5zZm9ybVBvaW50KGFba10sIGspKTsKCSAgICB9CgkgICAgaWYgKGkgPCAwKSByZXZlcnNlKHBvaW50cywgbik7CgkgIH0KCgkgIGZ1bmN0aW9uIHBvaW50KHApIHsKCSAgICByZXR1cm4gdHJhbnNmb3JtUG9pbnQocCk7CgkgIH0KCgkgIGZ1bmN0aW9uIGxpbmUoYXJjcykgewoJICAgIHZhciBwb2ludHMgPSBbXTsKCSAgICBmb3IgKHZhciBpID0gMCwgbiA9IGFyY3MubGVuZ3RoOyBpIDwgbjsgKytpKSBhcmMoYXJjc1tpXSwgcG9pbnRzKTsKCSAgICBpZiAocG9pbnRzLmxlbmd0aCA8IDIpIHBvaW50cy5wdXNoKHBvaW50c1swXSk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBwZXIgdGhlIHNwZWNpZmljYXRpb24uCgkgICAgcmV0dXJuIHBvaW50czsKCSAgfQoKCSAgZnVuY3Rpb24gcmluZyhhcmNzKSB7CgkgICAgdmFyIHBvaW50cyA9IGxpbmUoYXJjcyk7CgkgICAgd2hpbGUgKHBvaW50cy5sZW5ndGggPCA0KSBwb2ludHMucHVzaChwb2ludHNbMF0pOyAvLyBUaGlzIG1heSBoYXBwZW4gaWYgYW4gYXJjIGhhcyBvbmx5IHR3byBwb2ludHMuCgkgICAgcmV0dXJuIHBvaW50czsKCSAgfQoKCSAgZnVuY3Rpb24gcG9seWdvbihhcmNzKSB7CgkgICAgcmV0dXJuIGFyY3MubWFwKHJpbmcpOwoJICB9CgoJICBmdW5jdGlvbiBnZW9tZXRyeShvKSB7CgkgICAgdmFyIHR5cGUgPSBvLnR5cGUsIGNvb3JkaW5hdGVzOwoJICAgIHN3aXRjaCAodHlwZSkgewoJICAgICAgY2FzZSAiR2VvbWV0cnlDb2xsZWN0aW9uIjogcmV0dXJuIHt0eXBlOiB0eXBlLCBnZW9tZXRyaWVzOiBvLmdlb21ldHJpZXMubWFwKGdlb21ldHJ5KX07CgkgICAgICBjYXNlICJQb2ludCI6IGNvb3JkaW5hdGVzID0gcG9pbnQoby5jb29yZGluYXRlcyk7IGJyZWFrOwoJICAgICAgY2FzZSAiTXVsdGlQb2ludCI6IGNvb3JkaW5hdGVzID0gby5jb29yZGluYXRlcy5tYXAocG9pbnQpOyBicmVhazsKCSAgICAgIGNhc2UgIkxpbmVTdHJpbmciOiBjb29yZGluYXRlcyA9IGxpbmUoby5hcmNzKTsgYnJlYWs7CgkgICAgICBjYXNlICJNdWx0aUxpbmVTdHJpbmciOiBjb29yZGluYXRlcyA9IG8uYXJjcy5tYXAobGluZSk7IGJyZWFrOwoJICAgICAgY2FzZSAiUG9seWdvbiI6IGNvb3JkaW5hdGVzID0gcG9seWdvbihvLmFyY3MpOyBicmVhazsKCSAgICAgIGNhc2UgIk11bHRpUG9seWdvbiI6IGNvb3JkaW5hdGVzID0gby5hcmNzLm1hcChwb2x5Z29uKTsgYnJlYWs7CgkgICAgICBkZWZhdWx0OiByZXR1cm4gbnVsbDsKCSAgICB9CgkgICAgcmV0dXJuIHt0eXBlOiB0eXBlLCBjb29yZGluYXRlczogY29vcmRpbmF0ZXN9OwoJICB9CgoJICByZXR1cm4gZ2VvbWV0cnkobyk7Cgl9CgoJZnVuY3Rpb24gJChlbGVtZW50LCB0YWdOYW1lKSB7CgkgICAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSk7Cgl9CglmdW5jdGlvbiBub3JtYWxpemVJZChpZCkgewoJICAgIHJldHVybiBpZFswXSA9PT0gIiMiID8gaWQgOiBgIyR7aWR9YDsKCX0KCWZ1bmN0aW9uICRucyhlbGVtZW50LCB0YWdOYW1lLCBucykgewoJICAgIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhucywgdGFnTmFtZSkpOwoJfQoJLyoqCgkgKiBnZXQgdGhlIGNvbnRlbnQgb2YgYSB0ZXh0IG5vZGUsIGlmIGFueQoJICovCglmdW5jdGlvbiBub2RlVmFsKG5vZGUpIHsKCSAgICBub2RlPy5ub3JtYWxpemUoKTsKCSAgICByZXR1cm4gKG5vZGUgJiYgbm9kZS50ZXh0Q29udGVudCkgfHwgIiI7Cgl9CgkvKioKCSAqIEdldCBvbmUgWSBjaGlsZCBvZiBYLCBpZiBhbnksIG90aGVyd2lzZSBudWxsCgkgKi8KCWZ1bmN0aW9uIGdldDEobm9kZSwgdGFnTmFtZSwgY2FsbGJhY2spIHsKCSAgICBjb25zdCBuID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKTsKCSAgICBjb25zdCByZXN1bHQgPSBuLmxlbmd0aCA/IG5bMF0gOiBudWxsOwoJICAgIGlmIChyZXN1bHQgJiYgY2FsbGJhY2spCgkgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CgkgICAgcmV0dXJuIHJlc3VsdDsKCX0KCWZ1bmN0aW9uIGdldChub2RlLCB0YWdOYW1lLCBjYWxsYmFjaykgewoJICAgIGNvbnN0IHByb3BlcnRpZXMgPSB7fTsKCSAgICBpZiAoIW5vZGUpCgkgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzOwoJICAgIGNvbnN0IG4gPSBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpOwoJICAgIGNvbnN0IHJlc3VsdCA9IG4ubGVuZ3RoID8gblswXSA6IG51bGw7CgkgICAgaWYgKHJlc3VsdCAmJiBjYWxsYmFjaykgewoJICAgICAgICByZXR1cm4gY2FsbGJhY2socmVzdWx0LCBwcm9wZXJ0aWVzKTsKCSAgICB9CgkgICAgcmV0dXJuIHByb3BlcnRpZXM7Cgl9CglmdW5jdGlvbiB2YWwxKG5vZGUsIHRhZ05hbWUsIGNhbGxiYWNrKSB7CgkgICAgY29uc3QgdmFsID0gbm9kZVZhbChnZXQxKG5vZGUsIHRhZ05hbWUpKTsKCSAgICBpZiAodmFsICYmIGNhbGxiYWNrKQoJICAgICAgICByZXR1cm4gY2FsbGJhY2sodmFsKSB8fCB7fTsKCSAgICByZXR1cm4ge307Cgl9CglmdW5jdGlvbiAkbnVtKG5vZGUsIHRhZ05hbWUsIGNhbGxiYWNrKSB7CgkgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChub2RlVmFsKGdldDEobm9kZSwgdGFnTmFtZSkpKTsKCSAgICBpZiAoaXNOYU4odmFsKSkKCSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKCSAgICBpZiAodmFsICYmIGNhbGxiYWNrKQoJICAgICAgICByZXR1cm4gY2FsbGJhY2sodmFsKSB8fCB7fTsKCSAgICByZXR1cm4ge307Cgl9CglmdW5jdGlvbiBudW0xKG5vZGUsIHRhZ05hbWUsIGNhbGxiYWNrKSB7CgkgICAgY29uc3QgdmFsID0gcGFyc2VGbG9hdChub2RlVmFsKGdldDEobm9kZSwgdGFnTmFtZSkpKTsKCSAgICBpZiAoaXNOYU4odmFsKSkKCSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKCSAgICBpZiAoY2FsbGJhY2spCgkgICAgICAgIGNhbGxiYWNrKHZhbCk7CgkgICAgcmV0dXJuIHZhbDsKCX0KCWZ1bmN0aW9uIGdldE11bHRpKG5vZGUsIHByb3BlcnR5TmFtZXMpIHsKCSAgICBjb25zdCBwcm9wZXJ0aWVzID0ge307CgkgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0eU5hbWVzKSB7CgkgICAgICAgIHZhbDEobm9kZSwgcHJvcGVydHksICh2YWwpID0+IHsKCSAgICAgICAgICAgIHByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsOwoJICAgICAgICB9KTsKCSAgICB9CgkgICAgcmV0dXJuIHByb3BlcnRpZXM7Cgl9CglmdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkgewoJICAgIHJldHVybiBub2RlPy5ub2RlVHlwZSA9PT0gMTsKCX0KCglmdW5jdGlvbiBnZXRMaW5lU3R5bGUobm9kZSkgewoJICAgIHJldHVybiBnZXQobm9kZSwgImxpbmUiLCAobGluZVN0eWxlKSA9PiB7CgkgICAgICAgIGNvbnN0IHZhbCA9IE9iamVjdC5hc3NpZ24oe30sIHZhbDEobGluZVN0eWxlLCAiY29sb3IiLCAoY29sb3IpID0+IHsKCSAgICAgICAgICAgIHJldHVybiB7IHN0cm9rZTogYCMke2NvbG9yfWAgfTsKCSAgICAgICAgfSksICRudW0obGluZVN0eWxlLCAib3BhY2l0eSIsIChvcGFjaXR5KSA9PiB7CgkgICAgICAgICAgICByZXR1cm4geyAic3Ryb2tlLW9wYWNpdHkiOiBvcGFjaXR5IH07CgkgICAgICAgIH0pLCAkbnVtKGxpbmVTdHlsZSwgIndpZHRoIiwgKHdpZHRoKSA9PiB7CgkgICAgICAgICAgICAvLyBHUFggd2lkdGggaXMgaW4gbW0sIGNvbnZlcnQgdG8gcHggd2l0aCA5NiBweCBwZXIgaW5jaAoJICAgICAgICAgICAgcmV0dXJuIHsgInN0cm9rZS13aWR0aCI6ICh3aWR0aCAqIDk2KSAvIDI1LjQgfTsKCSAgICAgICAgfSkpOwoJICAgICAgICByZXR1cm4gdmFsOwoJICAgIH0pOwoJfQoKCWZ1bmN0aW9uIGdldEV4dGVuc2lvbnMobm9kZSkgewoJICAgIGxldCB2YWx1ZXMgPSBbXTsKCSAgICBpZiAobm9kZSA9PT0gbnVsbCkKCSAgICAgICAgcmV0dXJuIHZhbHVlczsKCSAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIEFycmF5LmZyb20obm9kZS5jaGlsZE5vZGVzKSkgewoJICAgICAgICBpZiAoIWlzRWxlbWVudChjaGlsZCkpCgkgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgY29uc3QgbmFtZSA9IGFiYnJldmlhdGVOYW1lKGNoaWxkLm5vZGVOYW1lKTsKCSAgICAgICAgaWYgKG5hbWUgPT09ICJncHh0cHg6VHJhY2tQb2ludEV4dGVuc2lvbiIpIHsKCSAgICAgICAgICAgIC8vIGxvb3AgYWdhaW4gZm9yIG5lc3RlZCBnYXJtaW4gZXh0ZW5zaW9ucyAoZWcuICJncHh0cHg6aHIiKQoJICAgICAgICAgICAgdmFsdWVzID0gdmFsdWVzLmNvbmNhdChnZXRFeHRlbnNpb25zKGNoaWxkKSk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAvLyBwdXNoIGN1c3RvbSBleHRlbnNpb24gKGVnLiAicG93ZXIiKQoJICAgICAgICAgICAgY29uc3QgdmFsID0gbm9kZVZhbChjaGlsZCk7CgkgICAgICAgICAgICB2YWx1ZXMucHVzaChbbmFtZSwgcGFyc2VOdW1lcmljKHZhbCldKTsKCSAgICAgICAgfQoJICAgIH0KCSAgICByZXR1cm4gdmFsdWVzOwoJfQoJZnVuY3Rpb24gYWJicmV2aWF0ZU5hbWUobmFtZSkgewoJICAgIHJldHVybiBbImhlYXJ0IiwgImdweHRweDpociIsICJociJdLmluY2x1ZGVzKG5hbWUpID8gImhlYXJ0IiA6IG5hbWU7Cgl9CglmdW5jdGlvbiBwYXJzZU51bWVyaWModmFsKSB7CgkgICAgY29uc3QgbnVtID0gcGFyc2VGbG9hdCh2YWwpOwoJICAgIHJldHVybiBpc05hTihudW0pID8gdmFsIDogbnVtOwoJfQoKCWZ1bmN0aW9uIGNvb3JkUGFpciQxKG5vZGUpIHsKCSAgICBjb25zdCBsbCA9IFsKCSAgICAgICAgcGFyc2VGbG9hdChub2RlLmdldEF0dHJpYnV0ZSgibG9uIikgfHwgIiIpLAoJICAgICAgICBwYXJzZUZsb2F0KG5vZGUuZ2V0QXR0cmlidXRlKCJsYXQiKSB8fCAiIiksCgkgICAgXTsKCSAgICBpZiAoaXNOYU4obGxbMF0pIHx8IGlzTmFOKGxsWzFdKSkgewoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICB9CgkgICAgbnVtMShub2RlLCAiZWxlIiwgKHZhbCkgPT4gewoJICAgICAgICBsbC5wdXNoKHZhbCk7CgkgICAgfSk7CgkgICAgY29uc3QgdGltZSA9IGdldDEobm9kZSwgInRpbWUiKTsKCSAgICByZXR1cm4gewoJICAgICAgICBjb29yZGluYXRlczogbGwsCgkgICAgICAgIHRpbWU6IHRpbWUgPyBub2RlVmFsKHRpbWUpIDogbnVsbCwKCSAgICAgICAgZXh0ZW5kZWRWYWx1ZXM6IGdldEV4dGVuc2lvbnMoZ2V0MShub2RlLCAiZXh0ZW5zaW9ucyIpKSwKCSAgICB9OwoJfQoKCWZ1bmN0aW9uIGV4dHJhY3RQcm9wZXJ0aWVzKG5vZGUpIHsKCSAgICBjb25zdCBwcm9wZXJ0aWVzID0gZ2V0TXVsdGkobm9kZSwgWwoJICAgICAgICAibmFtZSIsCgkgICAgICAgICJjbXQiLAoJICAgICAgICAiZGVzYyIsCgkgICAgICAgICJ0eXBlIiwKCSAgICAgICAgInRpbWUiLAoJICAgICAgICAia2V5d29yZHMiLAoJICAgIF0pOwoJICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBBcnJheS5mcm9tKG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygiaHR0cDovL3d3dy5nYXJtaW4uY29tL3htbHNjaGVtYXMvR3B4RXh0ZW5zaW9ucy92MyIsICIqIikpOwoJICAgIGZvciAoY29uc3QgY2hpbGQgb2YgZXh0ZW5zaW9ucykgewoJICAgICAgICBpZiAoY2hpbGQucGFyZW50Tm9kZT8ucGFyZW50Tm9kZSA9PT0gbm9kZSkgewoJICAgICAgICAgICAgcHJvcGVydGllc1tjaGlsZC50YWdOYW1lLnJlcGxhY2UoIjoiLCAiXyIpXSA9IG5vZGVWYWwoY2hpbGQpOwoJICAgICAgICB9CgkgICAgfQoJICAgIGNvbnN0IGxpbmtzID0gJChub2RlLCAibGluayIpOwoJICAgIGlmIChsaW5rcy5sZW5ndGgpIHsKCSAgICAgICAgcHJvcGVydGllcy5saW5rcyA9IGxpbmtzLm1hcCgobGluaykgPT4gT2JqZWN0LmFzc2lnbih7IGhyZWY6IGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIikgfSwgZ2V0TXVsdGkobGluaywgWyJ0ZXh0IiwgInR5cGUiXSkpKTsKCSAgICB9CgkgICAgcmV0dXJuIHByb3BlcnRpZXM7Cgl9CgoJLyoqCgkgKiBFeHRyYWN0IHBvaW50cyBmcm9tIGEgdHJrc2VnIG9yIHJ0ZSBlbGVtZW50LgoJICovCglmdW5jdGlvbiBnZXRQb2ludHMkMShub2RlLCBwb2ludG5hbWUpIHsKCSAgICBjb25zdCBwdHMgPSAkKG5vZGUsIHBvaW50bmFtZSk7CgkgICAgY29uc3QgbGluZSA9IFtdOwoJICAgIGNvbnN0IHRpbWVzID0gW107CgkgICAgY29uc3QgZXh0ZW5kZWRWYWx1ZXMgPSB7fTsKCSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB0cy5sZW5ndGg7IGkrKykgewoJICAgICAgICBjb25zdCBjID0gY29vcmRQYWlyJDEocHRzW2ldKTsKCSAgICAgICAgaWYgKCFjKSB7CgkgICAgICAgICAgICBjb250aW51ZTsKCSAgICAgICAgfQoJICAgICAgICBsaW5lLnB1c2goYy5jb29yZGluYXRlcyk7CgkgICAgICAgIGlmIChjLnRpbWUpCgkgICAgICAgICAgICB0aW1lcy5wdXNoKGMudGltZSk7CgkgICAgICAgIGZvciAoY29uc3QgW25hbWUsIHZhbF0gb2YgYy5leHRlbmRlZFZhbHVlcykgewoJICAgICAgICAgICAgY29uc3QgcGx1cmFsID0gbmFtZSA9PT0gImhlYXJ0IiA/IG5hbWUgOiBuYW1lLnJlcGxhY2UoImdweHRweDoiLCAiIikgKyAicyI7CgkgICAgICAgICAgICBpZiAoIWV4dGVuZGVkVmFsdWVzW3BsdXJhbF0pIHsKCSAgICAgICAgICAgICAgICBleHRlbmRlZFZhbHVlc1twbHVyYWxdID0gQXJyYXkocHRzLmxlbmd0aCkuZmlsbChudWxsKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGV4dGVuZGVkVmFsdWVzW3BsdXJhbF1baV0gPSB2YWw7CgkgICAgICAgIH0KCSAgICB9CgkgICAgaWYgKGxpbmUubGVuZ3RoIDwgMikKCSAgICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkIGxpbmUgaW4gR2VvSlNPTgoJICAgIHJldHVybiB7CgkgICAgICAgIGxpbmU6IGxpbmUsCgkgICAgICAgIHRpbWVzOiB0aW1lcywKCSAgICAgICAgZXh0ZW5kZWRWYWx1ZXM6IGV4dGVuZGVkVmFsdWVzLAoJICAgIH07Cgl9CgkvKioKCSAqIEV4dHJhY3QgYSBMaW5lU3RyaW5nIGdlb21ldHJ5IGZyb20gYSBydGUKCSAqIGVsZW1lbnQuCgkgKi8KCWZ1bmN0aW9uIGdldFJvdXRlKG5vZGUpIHsKCSAgICBjb25zdCBsaW5lID0gZ2V0UG9pbnRzJDEobm9kZSwgInJ0ZXB0Iik7CgkgICAgaWYgKCFsaW5lKQoJICAgICAgICByZXR1cm47CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmUiLAoJICAgICAgICBwcm9wZXJ0aWVzOiBPYmplY3QuYXNzaWduKHsgX2dweFR5cGU6ICJydGUiIH0sIGV4dHJhY3RQcm9wZXJ0aWVzKG5vZGUpLCBnZXRMaW5lU3R5bGUoZ2V0MShub2RlLCAiZXh0ZW5zaW9ucyIpKSksCgkgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICB0eXBlOiAiTGluZVN0cmluZyIsCgkgICAgICAgICAgICBjb29yZGluYXRlczogbGluZS5saW5lLAoJICAgICAgICB9LAoJICAgIH07Cgl9CglmdW5jdGlvbiBnZXRUcmFjayhub2RlKSB7CgkgICAgY29uc3Qgc2VnbWVudHMgPSAkKG5vZGUsICJ0cmtzZWciKTsKCSAgICBjb25zdCB0cmFjayA9IFtdOwoJICAgIGNvbnN0IHRpbWVzID0gW107CgkgICAgY29uc3QgZXh0cmFjdGVkTGluZXMgPSBbXTsKCSAgICBmb3IgKGNvbnN0IHNlZ21lbnQgb2Ygc2VnbWVudHMpIHsKCSAgICAgICAgY29uc3QgbGluZSA9IGdldFBvaW50cyQxKHNlZ21lbnQsICJ0cmtwdCIpOwoJICAgICAgICBpZiAobGluZSkgewoJICAgICAgICAgICAgZXh0cmFjdGVkTGluZXMucHVzaChsaW5lKTsKCSAgICAgICAgICAgIGlmIChsaW5lLnRpbWVzICYmIGxpbmUudGltZXMubGVuZ3RoKQoJICAgICAgICAgICAgICAgIHRpbWVzLnB1c2gobGluZS50aW1lcyk7CgkgICAgICAgIH0KCSAgICB9CgkgICAgaWYgKGV4dHJhY3RlZExpbmVzLmxlbmd0aCA9PT0gMCkKCSAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgY29uc3QgbXVsdGkgPSBleHRyYWN0ZWRMaW5lcy5sZW5ndGggPiAxOwoJICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3QuYXNzaWduKHsgX2dweFR5cGU6ICJ0cmsiIH0sIGV4dHJhY3RQcm9wZXJ0aWVzKG5vZGUpLCBnZXRMaW5lU3R5bGUoZ2V0MShub2RlLCAiZXh0ZW5zaW9ucyIpKSwgdGltZXMubGVuZ3RoCgkgICAgICAgID8gewoJICAgICAgICAgICAgY29vcmRpbmF0ZVByb3BlcnRpZXM6IHsKCSAgICAgICAgICAgICAgICB0aW1lczogbXVsdGkgPyB0aW1lcyA6IHRpbWVzWzBdLAoJICAgICAgICAgICAgfSwKCSAgICAgICAgfQoJICAgICAgICA6IHt9KTsKCSAgICBmb3IgKGNvbnN0IGxpbmUgb2YgZXh0cmFjdGVkTGluZXMpIHsKCSAgICAgICAgdHJhY2sucHVzaChsaW5lLmxpbmUpOwoJICAgICAgICBpZiAoIXByb3BlcnRpZXMuY29vcmRpbmF0ZVByb3BlcnRpZXMpIHsKCSAgICAgICAgICAgIHByb3BlcnRpZXMuY29vcmRpbmF0ZVByb3BlcnRpZXMgPSB7fTsKCSAgICAgICAgfQoJICAgICAgICBjb25zdCBwcm9wcyA9IHByb3BlcnRpZXMuY29vcmRpbmF0ZVByb3BlcnRpZXM7CgkgICAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhsaW5lLmV4dGVuZGVkVmFsdWVzKTsKCSAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgICAgICBjb25zdCBbbmFtZSwgdmFsXSA9IGVudHJpZXNbaV07CgkgICAgICAgICAgICBpZiAobXVsdGkpIHsKCSAgICAgICAgICAgICAgICBpZiAoIXByb3BzW25hbWVdKSB7CgkgICAgICAgICAgICAgICAgICAgIHByb3BzW25hbWVdID0gZXh0cmFjdGVkTGluZXMubWFwKChsaW5lKSA9PiBuZXcgQXJyYXkobGluZS5saW5lLmxlbmd0aCkuZmlsbChudWxsKSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHByb3BzW25hbWVdW2ldID0gdmFsOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgcHJvcHNbbmFtZV0gPSB2YWw7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICB9CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmUiLAoJICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLAoJICAgICAgICBnZW9tZXRyeTogbXVsdGkKCSAgICAgICAgICAgID8gewoJICAgICAgICAgICAgICAgIHR5cGU6ICJNdWx0aUxpbmVTdHJpbmciLAoJICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiB0cmFjaywKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIDogewoJICAgICAgICAgICAgICAgIHR5cGU6ICJMaW5lU3RyaW5nIiwKCSAgICAgICAgICAgICAgICBjb29yZGluYXRlczogdHJhY2tbMF0sCgkgICAgICAgICAgICB9LAoJICAgIH07Cgl9CgkvKioKCSAqIEV4dHJhY3QgYSBwb2ludCwgaWYgcG9zc2libGUsIGZyb20gYSBnaXZlbiBub2RlLAoJICogd2hpY2ggaXMgdXN1YWxseSBhIHdwdCBvciB0cmtwdAoJICovCglmdW5jdGlvbiBnZXRQb2ludChub2RlKSB7CgkgICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5hc3NpZ24oZXh0cmFjdFByb3BlcnRpZXMobm9kZSksIGdldE11bHRpKG5vZGUsIFsic3ltIl0pKTsKCSAgICBjb25zdCBwYWlyID0gY29vcmRQYWlyJDEobm9kZSk7CgkgICAgaWYgKCFwYWlyKQoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICByZXR1cm4gewoJICAgICAgICB0eXBlOiAiRmVhdHVyZSIsCgkgICAgICAgIHByb3BlcnRpZXMsCgkgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICB0eXBlOiAiUG9pbnQiLAoJICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHBhaXIuY29vcmRpbmF0ZXMsCgkgICAgICAgIH0sCgkgICAgfTsKCX0KCS8qKgoJICogQ29udmVydCBHUFggdG8gR2VvSlNPTiBpbmNyZW1lbnRhbGx5LCByZXR1cm5pbmcKCSAqIGEgW0dlbmVyYXRvcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9JdGVyYXRvcnNfYW5kX0dlbmVyYXRvcnMpCgkgKiB0aGF0IHlpZWxkcyBvdXRwdXQgZmVhdHVyZSBieSBmZWF0dXJlLgoJICovCglmdW5jdGlvbiogZ3B4R2VuKG5vZGUpIHsKCSAgICBmb3IgKGNvbnN0IHRyYWNrIG9mICQobm9kZSwgInRyayIpKSB7CgkgICAgICAgIGNvbnN0IGZlYXR1cmUgPSBnZXRUcmFjayh0cmFjayk7CgkgICAgICAgIGlmIChmZWF0dXJlKQoJICAgICAgICAgICAgeWllbGQgZmVhdHVyZTsKCSAgICB9CgkgICAgZm9yIChjb25zdCByb3V0ZSBvZiAkKG5vZGUsICJydGUiKSkgewoJICAgICAgICBjb25zdCBmZWF0dXJlID0gZ2V0Um91dGUocm91dGUpOwoJICAgICAgICBpZiAoZmVhdHVyZSkKCSAgICAgICAgICAgIHlpZWxkIGZlYXR1cmU7CgkgICAgfQoJICAgIGZvciAoY29uc3Qgd2F5cG9pbnQgb2YgJChub2RlLCAid3B0IikpIHsKCSAgICAgICAgY29uc3QgcG9pbnQgPSBnZXRQb2ludCh3YXlwb2ludCk7CgkgICAgICAgIGlmIChwb2ludCkKCSAgICAgICAgICAgIHlpZWxkIHBvaW50OwoJICAgIH0KCX0KCS8qKgoJICoKCSAqIENvbnZlcnQgYSBHUFggZG9jdW1lbnQgdG8gR2VvSlNPTi4gVGhlIGZpcnN0IGFyZ3VtZW50LCBgZG9jYCwgbXVzdCBiZSBhIEdQWAoJICogZG9jdW1lbnQgYXMgYW4gWE1MIERPTSAtIG5vdCBhcyBhIHN0cmluZy4gWW91IGNhbiBnZXQgdGhpcyB1c2luZyBqUXVlcnkncyBkZWZhdWx0CgkgKiBgLmFqYXhgIGZ1bmN0aW9uIG9yIHVzaW5nIGEgYmFyZSBYTUxIdHRwUmVxdWVzdCB3aXRoIHRoZSBgLnJlc3BvbnNlYCBwcm9wZXJ0eQoJICogaG9sZGluZyBhbiBYTUwgRE9NLgoJICoKCSAqIFRoZSBvdXRwdXQgaXMgYSBKYXZhU2NyaXB0IG9iamVjdCBvZiBHZW9KU09OIGRhdGEsIHNhbWUgYXMgYC5rbWxgIG91dHB1dHMsIHdpdGggdGhlCgkgKiBhZGRpdGlvbiBvZiBhIGBfZ3B4VHlwZWAgcHJvcGVydHkgb24gZWFjaCBgTGluZVN0cmluZ2AgZmVhdHVyZSB0aGF0IGluZGljYXRlcyB3aGV0aGVyCgkgKiB0aGUgZmVhdHVyZSB3YXMgZW5jb2RlZCBhcyBhIHJvdXRlIChgcnRlYCkgb3IgdHJhY2sgKGB0cmtgKSBpbiB0aGUgR1BYIGRvY3VtZW50LgoJICovCglmdW5jdGlvbiBncHgobm9kZSkgewoJICAgIHJldHVybiB7CgkgICAgICAgIHR5cGU6ICJGZWF0dXJlQ29sbGVjdGlvbiIsCgkgICAgICAgIGZlYXR1cmVzOiBBcnJheS5mcm9tKGdweEdlbihub2RlKSksCgkgICAgfTsKCX0KCgljb25zdCBFWFRFTlNJT05TX05TID0gImh0dHA6Ly93d3cuZ2FybWluLmNvbS94bWxzY2hlbWFzL0FjdGl2aXR5RXh0ZW5zaW9uL3YyIjsKCWNvbnN0IFRSQUNLUE9JTlRfQVRUUklCVVRFUyA9IFsKCSAgICBbImhlYXJ0UmF0ZSIsICJoZWFydFJhdGVzIl0sCgkgICAgWyJDYWRlbmNlIiwgImNhZGVuY2VzIl0sCgkgICAgLy8gRXh0ZW5kZWQgVHJhY2twb2ludCBhdHRyaWJ1dGVzCgkgICAgWyJTcGVlZCIsICJzcGVlZHMiXSwKCSAgICBbIldhdHRzIiwgIndhdHRzIl0sCgldOwoJY29uc3QgTEFQX0FUVFJJQlVURVMgPSBbCgkgICAgWyJUb3RhbFRpbWVTZWNvbmRzIiwgInRvdGFsVGltZVNlY29uZHMiXSwKCSAgICBbIkRpc3RhbmNlTWV0ZXJzIiwgImRpc3RhbmNlTWV0ZXJzIl0sCgkgICAgWyJNYXhpbXVtU3BlZWQiLCAibWF4U3BlZWQiXSwKCSAgICBbIkF2ZXJhZ2VIZWFydFJhdGVCcG0iLCAiYXZnSGVhcnRSYXRlIl0sCgkgICAgWyJNYXhpbXVtSGVhcnRSYXRlQnBtIiwgIm1heEhlYXJ0UmF0ZSJdLAoJICAgIC8vIEV4dGVuZGVkIExhcCBhdHRyaWJ1dGVzCgkgICAgWyJBdmdTcGVlZCIsICJhdmdTcGVlZCJdLAoJICAgIFsiQXZnV2F0dHMiLCAiYXZnV2F0dHMiXSwKCSAgICBbIk1heFdhdHRzIiwgIm1heFdhdHRzIl0sCgldOwoJZnVuY3Rpb24gZ2V0UHJvcGVydGllcyhub2RlLCBhdHRyaWJ1dGVOYW1lcykgewoJICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbXTsKCSAgICBmb3IgKGNvbnN0IFt0YWcsIGFsaWFzXSBvZiBhdHRyaWJ1dGVOYW1lcykgewoJICAgICAgICBsZXQgZWxlbSA9IGdldDEobm9kZSwgdGFnKTsKCSAgICAgICAgaWYgKCFlbGVtKSB7CgkgICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhFWFRFTlNJT05TX05TLCB0YWcpOwoJICAgICAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCkgewoJICAgICAgICAgICAgICAgIGVsZW0gPSBlbGVtZW50c1swXTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgICAgICBjb25zdCB2YWwgPSBwYXJzZUZsb2F0KG5vZGVWYWwoZWxlbSkpOwoJICAgICAgICBpZiAoIWlzTmFOKHZhbCkpIHsKCSAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaChbYWxpYXMsIHZhbF0pOwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiBwcm9wZXJ0aWVzOwoJfQoJZnVuY3Rpb24gY29vcmRQYWlyKG5vZGUpIHsKCSAgICBjb25zdCBsbCA9IFtudW0xKG5vZGUsICJMb25naXR1ZGVEZWdyZWVzIiksIG51bTEobm9kZSwgIkxhdGl0dWRlRGVncmVlcyIpXTsKCSAgICBpZiAobGxbMF0gPT09IHVuZGVmaW5lZCB8fAoJICAgICAgICBpc05hTihsbFswXSkgfHwKCSAgICAgICAgbGxbMV0gPT09IHVuZGVmaW5lZCB8fAoJICAgICAgICBpc05hTihsbFsxXSkpIHsKCSAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgfQoJICAgIGNvbnN0IGhlYXJ0UmF0ZSA9IGdldDEobm9kZSwgIkhlYXJ0UmF0ZUJwbSIpOwoJICAgIGNvbnN0IHRpbWUgPSBub2RlVmFsKGdldDEobm9kZSwgIlRpbWUiKSk7CgkgICAgZ2V0MShub2RlLCAiQWx0aXR1ZGVNZXRlcnMiLCAoYWx0KSA9PiB7CgkgICAgICAgIGNvbnN0IGEgPSBwYXJzZUZsb2F0KG5vZGVWYWwoYWx0KSk7CgkgICAgICAgIGlmICghaXNOYU4oYSkpIHsKCSAgICAgICAgICAgIGxsLnB1c2goYSk7CgkgICAgICAgIH0KCSAgICB9KTsKCSAgICByZXR1cm4gewoJICAgICAgICBjb29yZGluYXRlczogbGwsCgkgICAgICAgIHRpbWU6IHRpbWUgfHwgbnVsbCwKCSAgICAgICAgaGVhcnRSYXRlOiBoZWFydFJhdGUgPyBwYXJzZUZsb2F0KG5vZGVWYWwoaGVhcnRSYXRlKSkgOiBudWxsLAoJICAgICAgICBleHRlbnNpb25zOiBnZXRQcm9wZXJ0aWVzKG5vZGUsIFRSQUNLUE9JTlRfQVRUUklCVVRFUyksCgkgICAgfTsKCX0KCWZ1bmN0aW9uIGdldFBvaW50cyhub2RlKSB7CgkgICAgY29uc3QgcHRzID0gJChub2RlLCAiVHJhY2twb2ludCIpOwoJICAgIGNvbnN0IGxpbmUgPSBbXTsKCSAgICBjb25zdCB0aW1lcyA9IFtdOwoJICAgIGNvbnN0IGhlYXJ0UmF0ZXMgPSBbXTsKCSAgICBpZiAocHRzLmxlbmd0aCA8IDIpCgkgICAgICAgIHJldHVybiBudWxsOyAvLyBJbnZhbGlkIGxpbmUgaW4gR2VvSlNPTgoJICAgIGNvbnN0IGV4dGVuZGVkUHJvcGVydGllcyA9IHt9OwoJICAgIGNvbnN0IHJlc3VsdCA9IHsgZXh0ZW5kZWRQcm9wZXJ0aWVzIH07CgkgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgY29uc3QgYyA9IGNvb3JkUGFpcihwdHNbaV0pOwoJICAgICAgICBpZiAoYyA9PT0gbnVsbCkKCSAgICAgICAgICAgIGNvbnRpbnVlOwoJICAgICAgICBsaW5lLnB1c2goYy5jb29yZGluYXRlcyk7CgkgICAgICAgIGNvbnN0IHsgdGltZSwgaGVhcnRSYXRlLCBleHRlbnNpb25zIH0gPSBjOwoJICAgICAgICBpZiAodGltZSkKCSAgICAgICAgICAgIHRpbWVzLnB1c2godGltZSk7CgkgICAgICAgIGlmIChoZWFydFJhdGUpCgkgICAgICAgICAgICBoZWFydFJhdGVzLnB1c2goaGVhcnRSYXRlKTsKCSAgICAgICAgZm9yIChjb25zdCBbYWxpYXMsIHZhbHVlXSBvZiBleHRlbnNpb25zKSB7CgkgICAgICAgICAgICBpZiAoIWV4dGVuZGVkUHJvcGVydGllc1thbGlhc10pIHsKCSAgICAgICAgICAgICAgICBleHRlbmRlZFByb3BlcnRpZXNbYWxpYXNdID0gQXJyYXkocHRzLmxlbmd0aCkuZmlsbChudWxsKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGV4dGVuZGVkUHJvcGVydGllc1thbGlhc11baV0gPSB2YWx1ZTsKCSAgICAgICAgfQoJICAgIH0KCSAgICBpZiAobGluZS5sZW5ndGggPCAyKQoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihyZXN1bHQsIHsKCSAgICAgICAgbGluZTogbGluZSwKCSAgICAgICAgdGltZXM6IHRpbWVzLAoJICAgICAgICBoZWFydFJhdGVzOiBoZWFydFJhdGVzLAoJICAgIH0pOwoJfQoJZnVuY3Rpb24gZ2V0TGFwKG5vZGUpIHsKCSAgICBjb25zdCBzZWdtZW50cyA9ICQobm9kZSwgIlRyYWNrIik7CgkgICAgY29uc3QgdHJhY2sgPSBbXTsKCSAgICBjb25zdCB0aW1lcyA9IFtdOwoJICAgIGNvbnN0IGhlYXJ0UmF0ZXMgPSBbXTsKCSAgICBjb25zdCBhbGxFeHRlbmRlZFByb3BlcnRpZXMgPSBbXTsKCSAgICBsZXQgbGluZTsKCSAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuZnJvbUVudHJpZXMoZ2V0UHJvcGVydGllcyhub2RlLCBMQVBfQVRUUklCVVRFUykpLCBnZXQobm9kZSwgIk5hbWUiLCAobmFtZUVsZW1lbnQpID0+IHsKCSAgICAgICAgcmV0dXJuIHsgbmFtZTogbm9kZVZhbChuYW1lRWxlbWVudCkgfTsKCSAgICB9KSk7CgkgICAgZm9yIChjb25zdCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7CgkgICAgICAgIGxpbmUgPSBnZXRQb2ludHMoc2VnbWVudCk7CgkgICAgICAgIGlmIChsaW5lKSB7CgkgICAgICAgICAgICB0cmFjay5wdXNoKGxpbmUubGluZSk7CgkgICAgICAgICAgICBpZiAobGluZS50aW1lcy5sZW5ndGgpCgkgICAgICAgICAgICAgICAgdGltZXMucHVzaChsaW5lLnRpbWVzKTsKCSAgICAgICAgICAgIGlmIChsaW5lLmhlYXJ0UmF0ZXMubGVuZ3RoKQoJICAgICAgICAgICAgICAgIGhlYXJ0UmF0ZXMucHVzaChsaW5lLmhlYXJ0UmF0ZXMpOwoJICAgICAgICAgICAgYWxsRXh0ZW5kZWRQcm9wZXJ0aWVzLnB1c2gobGluZS5leHRlbmRlZFByb3BlcnRpZXMpOwoJICAgICAgICB9CgkgICAgfQoJICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsRXh0ZW5kZWRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7CgkgICAgICAgIGNvbnN0IGV4dGVuZGVkUHJvcGVydGllcyA9IGFsbEV4dGVuZGVkUHJvcGVydGllc1tpXTsKCSAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBleHRlbmRlZFByb3BlcnRpZXMpIHsKCSAgICAgICAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDEpIHsKCSAgICAgICAgICAgICAgICBpZiAobGluZSkgewoJICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IGxpbmUuZXh0ZW5kZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnRpZXNbcHJvcGVydHldKSB7CgkgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNbcHJvcGVydHldID0gdHJhY2subWFwKCh0cmFjaykgPT4gQXJyYXkodHJhY2subGVuZ3RoKS5maWxsKG51bGwpKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcHJvcGVydGllc1twcm9wZXJ0eV1baV0gPSBleHRlbmRlZFByb3BlcnRpZXNbcHJvcGVydHldOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfQoJICAgIGlmICh0cmFjay5sZW5ndGggPT09IDApCgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIGlmICh0aW1lcy5sZW5ndGggfHwgaGVhcnRSYXRlcy5sZW5ndGgpIHsKCSAgICAgICAgcHJvcGVydGllcy5jb29yZGluYXRlUHJvcGVydGllcyA9IE9iamVjdC5hc3NpZ24odGltZXMubGVuZ3RoCgkgICAgICAgICAgICA/IHsKCSAgICAgICAgICAgICAgICB0aW1lczogdHJhY2subGVuZ3RoID09PSAxID8gdGltZXNbMF0gOiB0aW1lcywKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIDoge30sIGhlYXJ0UmF0ZXMubGVuZ3RoCgkgICAgICAgICAgICA/IHsKCSAgICAgICAgICAgICAgICBoZWFydDogdHJhY2subGVuZ3RoID09PSAxID8gaGVhcnRSYXRlc1swXSA6IGhlYXJ0UmF0ZXMsCgkgICAgICAgICAgICB9CgkgICAgICAgICAgICA6IHt9KTsKCSAgICB9CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmUiLAoJICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLAoJICAgICAgICBnZW9tZXRyeTogdHJhY2subGVuZ3RoID09PSAxCgkgICAgICAgICAgICA/IHsKCSAgICAgICAgICAgICAgICB0eXBlOiAiTGluZVN0cmluZyIsCgkgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHRyYWNrWzBdLAoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgOiB7CgkgICAgICAgICAgICAgICAgdHlwZTogIk11bHRpTGluZVN0cmluZyIsCgkgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHRyYWNrLAoJICAgICAgICAgICAgfSwKCSAgICB9OwoJfQoJLyoqCgkgKiBJbmNyZW1lbnRhbGx5IGNvbnZlcnQgYSBUQ1ggZG9jdW1lbnQgdG8gR2VvSlNPTi4gVGhlCgkgKiBmaXJzdCBhcmd1bWVudCwgYGRvY2AsIG11c3QgYmUgYSBUQ1gKCSAqIGRvY3VtZW50IGFzIGFuIFhNTCBET00gLSBub3QgYXMgYSBzdHJpbmcuCgkgKi8KCWZ1bmN0aW9uKiB0Y3hHZW4obm9kZSkgewoJICAgIGZvciAoY29uc3QgbGFwIG9mICQobm9kZSwgIkxhcCIpKSB7CgkgICAgICAgIGNvbnN0IGZlYXR1cmUgPSBnZXRMYXAobGFwKTsKCSAgICAgICAgaWYgKGZlYXR1cmUpCgkgICAgICAgICAgICB5aWVsZCBmZWF0dXJlOwoJICAgIH0KCSAgICBmb3IgKGNvbnN0IGNvdXJzZSBvZiAkKG5vZGUsICJDb3Vyc2VzIikpIHsKCSAgICAgICAgY29uc3QgZmVhdHVyZSA9IGdldExhcChjb3Vyc2UpOwoJICAgICAgICBpZiAoZmVhdHVyZSkKCSAgICAgICAgICAgIHlpZWxkIGZlYXR1cmU7CgkgICAgfQoJfQoJLyoqCgkgKiBDb252ZXJ0IGEgVENYIGRvY3VtZW50IHRvIEdlb0pTT04uIFRoZSBmaXJzdCBhcmd1bWVudCwgYGRvY2AsIG11c3QgYmUgYSBUQ1gKCSAqIGRvY3VtZW50IGFzIGFuIFhNTCBET00gLSBub3QgYXMgYSBzdHJpbmcuCgkgKi8KCWZ1bmN0aW9uIHRjeChub2RlKSB7CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmVDb2xsZWN0aW9uIiwKCSAgICAgICAgZmVhdHVyZXM6IEFycmF5LmZyb20odGN4R2VuKG5vZGUpKSwKCSAgICB9OwoJfQoKCWZ1bmN0aW9uIGZpeENvbG9yKHYsIHByZWZpeCkgewoJICAgIGNvbnN0IHByb3BlcnRpZXMgPSB7fTsKCSAgICBjb25zdCBjb2xvclByb3AgPSBwcmVmaXggPT0gInN0cm9rZSIgfHwgcHJlZml4ID09PSAiZmlsbCIgPyBwcmVmaXggOiBwcmVmaXggKyAiLWNvbG9yIjsKCSAgICBpZiAodlswXSA9PT0gIiMiKSB7CgkgICAgICAgIHYgPSB2LnN1YnN0cmluZygxKTsKCSAgICB9CgkgICAgaWYgKHYubGVuZ3RoID09PSA2IHx8IHYubGVuZ3RoID09PSAzKSB7CgkgICAgICAgIHByb3BlcnRpZXNbY29sb3JQcm9wXSA9ICIjIiArIHY7CgkgICAgfQoJICAgIGVsc2UgaWYgKHYubGVuZ3RoID09PSA4KSB7CgkgICAgICAgIHByb3BlcnRpZXNbcHJlZml4ICsgIi1vcGFjaXR5Il0gPSBwYXJzZUludCh2LnN1YnN0cmluZygwLCAyKSwgMTYpIC8gMjU1OwoJICAgICAgICBwcm9wZXJ0aWVzW2NvbG9yUHJvcF0gPQoJICAgICAgICAgICAgIiMiICsgdi5zdWJzdHJpbmcoNiwgOCkgKyB2LnN1YnN0cmluZyg0LCA2KSArIHYuc3Vic3RyaW5nKDIsIDQpOwoJICAgIH0KCSAgICByZXR1cm4gcHJvcGVydGllczsKCX0KCglmdW5jdGlvbiBudW1lcmljUHJvcGVydHkobm9kZSwgc291cmNlLCB0YXJnZXQpIHsKCSAgICBjb25zdCBwcm9wZXJ0aWVzID0ge307CgkgICAgbnVtMShub2RlLCBzb3VyY2UsICh2YWwpID0+IHsKCSAgICAgICAgcHJvcGVydGllc1t0YXJnZXRdID0gdmFsOwoJICAgIH0pOwoJICAgIHJldHVybiBwcm9wZXJ0aWVzOwoJfQoJZnVuY3Rpb24gZ2V0Q29sb3Iobm9kZSwgb3V0cHV0KSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiY29sb3IiLCAoZWxlbSkgPT4gZml4Q29sb3Iobm9kZVZhbChlbGVtKSwgb3V0cHV0KSk7Cgl9CglmdW5jdGlvbiBleHRyYWN0SWNvbkhyZWYobm9kZSkgewoJICAgIHJldHVybiBnZXQobm9kZSwgIkljb24iLCAoaWNvbiwgcHJvcGVydGllcykgPT4gewoJICAgICAgICB2YWwxKGljb24sICJocmVmIiwgKGhyZWYpID0+IHsKCSAgICAgICAgICAgIHByb3BlcnRpZXMuaWNvbiA9IGhyZWY7CgkgICAgICAgIH0pOwoJICAgICAgICByZXR1cm4gcHJvcGVydGllczsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RJY29uKG5vZGUpIHsKCSAgICByZXR1cm4gZ2V0KG5vZGUsICJJY29uU3R5bGUiLCAoaWNvblN0eWxlKSA9PiB7CgkgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGdldENvbG9yKGljb25TdHlsZSwgImljb24iKSwgbnVtZXJpY1Byb3BlcnR5KGljb25TdHlsZSwgInNjYWxlIiwgImljb24tc2NhbGUiKSwgbnVtZXJpY1Byb3BlcnR5KGljb25TdHlsZSwgImhlYWRpbmciLCAiaWNvbi1oZWFkaW5nIiksIGdldChpY29uU3R5bGUsICJob3RTcG90IiwgKGhvdHNwb3QpID0+IHsKCSAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUZsb2F0KGhvdHNwb3QuZ2V0QXR0cmlidXRlKCJ4IikgfHwgIiIpOwoJICAgICAgICAgICAgY29uc3QgdG9wID0gcGFyc2VGbG9hdChob3RzcG90LmdldEF0dHJpYnV0ZSgieSIpIHx8ICIiKTsKCSAgICAgICAgICAgIGNvbnN0IHh1bml0cyA9IGhvdHNwb3QuZ2V0QXR0cmlidXRlKCJ4dW5pdHMiKSB8fCAiIjsKCSAgICAgICAgICAgIGNvbnN0IHl1bml0cyA9IGhvdHNwb3QuZ2V0QXR0cmlidXRlKCJ5dW5pdHMiKSB8fCAiIjsKCSAgICAgICAgICAgIGlmICghaXNOYU4obGVmdCkgJiYgIWlzTmFOKHRvcCkpCgkgICAgICAgICAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgICAgICAgICAgImljb24tb2Zmc2V0IjogW2xlZnQsIHRvcF0sCgkgICAgICAgICAgICAgICAgICAgICJpY29uLW9mZnNldC11bml0cyI6IFt4dW5pdHMsIHl1bml0c10sCgkgICAgICAgICAgICAgICAgfTsKCSAgICAgICAgICAgIHJldHVybiB7fTsKCSAgICAgICAgfSksIGV4dHJhY3RJY29uSHJlZihpY29uU3R5bGUpKTsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RMYWJlbChub2RlKSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiTGFiZWxTdHlsZSIsIChsYWJlbFN0eWxlKSA9PiB7CgkgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGdldENvbG9yKGxhYmVsU3R5bGUsICJsYWJlbCIpLCBudW1lcmljUHJvcGVydHkobGFiZWxTdHlsZSwgInNjYWxlIiwgImxhYmVsLXNjYWxlIikpOwoJICAgIH0pOwoJfQoJZnVuY3Rpb24gZXh0cmFjdExpbmUobm9kZSkgewoJICAgIHJldHVybiBnZXQobm9kZSwgIkxpbmVTdHlsZSIsIChsaW5lU3R5bGUpID0+IHsKCSAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oZ2V0Q29sb3IobGluZVN0eWxlLCAic3Ryb2tlIiksIG51bWVyaWNQcm9wZXJ0eShsaW5lU3R5bGUsICJ3aWR0aCIsICJzdHJva2Utd2lkdGgiKSk7CgkgICAgfSk7Cgl9CglmdW5jdGlvbiBleHRyYWN0UG9seShub2RlKSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiUG9seVN0eWxlIiwgKHBvbHlTdHlsZSwgcHJvcGVydGllcykgPT4gewoJICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihwcm9wZXJ0aWVzLCBnZXQocG9seVN0eWxlLCAiY29sb3IiLCAoZWxlbSkgPT4gZml4Q29sb3Iobm9kZVZhbChlbGVtKSwgImZpbGwiKSksIHZhbDEocG9seVN0eWxlLCAiZmlsbCIsIChmaWxsKSA9PiB7CgkgICAgICAgICAgICBpZiAoZmlsbCA9PT0gIjAiKQoJICAgICAgICAgICAgICAgIHJldHVybiB7ICJmaWxsLW9wYWNpdHkiOiAwIH07CgkgICAgICAgIH0pLCB2YWwxKHBvbHlTdHlsZSwgIm91dGxpbmUiLCAob3V0bGluZSkgPT4gewoJICAgICAgICAgICAgaWYgKG91dGxpbmUgPT09ICIwIikKCSAgICAgICAgICAgICAgICByZXR1cm4geyAic3Ryb2tlLW9wYWNpdHkiOiAwIH07CgkgICAgICAgIH0pKTsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RTdHlsZShub2RlKSB7CgkgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGV4dHJhY3RQb2x5KG5vZGUpLCBleHRyYWN0TGluZShub2RlKSwgZXh0cmFjdExhYmVsKG5vZGUpLCBleHRyYWN0SWNvbihub2RlKSk7Cgl9CgoJY29uc3QgdG9OdW1iZXIgPSAoeCkgPT4gTnVtYmVyKHgpOwoJY29uc3QgdHlwZUNvbnZlcnRlcnMgPSB7CgkgICAgc3RyaW5nOiAoeCkgPT4geCwKCSAgICBpbnQ6IHRvTnVtYmVyLAoJICAgIHVpbnQ6IHRvTnVtYmVyLAoJICAgIHNob3J0OiB0b051bWJlciwKCSAgICB1c2hvcnQ6IHRvTnVtYmVyLAoJICAgIGZsb2F0OiB0b051bWJlciwKCSAgICBkb3VibGU6IHRvTnVtYmVyLAoJICAgIGJvb2w6ICh4KSA9PiBCb29sZWFuKHgpLAoJfTsKCWZ1bmN0aW9uIGV4dHJhY3RFeHRlbmRlZERhdGEobm9kZSwgc2NoZW1hKSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiRXh0ZW5kZWREYXRhIiwgKGV4dGVuZGVkRGF0YSwgcHJvcGVydGllcykgPT4gewoJICAgICAgICBmb3IgKGNvbnN0IGRhdGEgb2YgJChleHRlbmRlZERhdGEsICJEYXRhIikpIHsKCSAgICAgICAgICAgIHByb3BlcnRpZXNbZGF0YS5nZXRBdHRyaWJ1dGUoIm5hbWUiKSB8fCAiIl0gPSBub2RlVmFsKGdldDEoZGF0YSwgInZhbHVlIikpOwoJICAgICAgICB9CgkgICAgICAgIGZvciAoY29uc3Qgc2ltcGxlRGF0YSBvZiAkKGV4dGVuZGVkRGF0YSwgIlNpbXBsZURhdGEiKSkgewoJICAgICAgICAgICAgY29uc3QgbmFtZSA9IHNpbXBsZURhdGEuZ2V0QXR0cmlidXRlKCJuYW1lIikgfHwgIiI7CgkgICAgICAgICAgICBjb25zdCB0eXBlQ29udmVydGVyID0gc2NoZW1hW25hbWVdIHx8IHR5cGVDb252ZXJ0ZXJzLnN0cmluZzsKCSAgICAgICAgICAgIHByb3BlcnRpZXNbbmFtZV0gPSB0eXBlQ29udmVydGVyKG5vZGVWYWwoc2ltcGxlRGF0YSkpOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzOwoJICAgIH0pOwoJfQoJZnVuY3Rpb24gZ2V0TWF5YmVIVE1MRGVzY3JpcHRpb24obm9kZSkgewoJICAgIGNvbnN0IGRlc2NyaXB0aW9uTm9kZSA9IGdldDEobm9kZSwgImRlc2NyaXB0aW9uIik7CgkgICAgZm9yIChjb25zdCBjIG9mIEFycmF5LmZyb20oZGVzY3JpcHRpb25Ob2RlPy5jaGlsZE5vZGVzIHx8IFtdKSkgewoJICAgICAgICBpZiAoYy5ub2RlVHlwZSA9PT0gNCkgewoJICAgICAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogewoJICAgICAgICAgICAgICAgICAgICAiQHR5cGUiOiAiaHRtbCIsCgkgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBub2RlVmFsKGMpLAoJICAgICAgICAgICAgICAgIH0sCgkgICAgICAgICAgICB9OwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiB7fTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RUaW1lU3Bhbihub2RlKSB7CgkgICAgcmV0dXJuIGdldChub2RlLCAiVGltZVNwYW4iLCAodGltZVNwYW4pID0+IHsKCSAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgIHRpbWVzcGFuOiB7CgkgICAgICAgICAgICAgICAgYmVnaW46IG5vZGVWYWwoZ2V0MSh0aW1lU3BhbiwgImJlZ2luIikpLAoJICAgICAgICAgICAgICAgIGVuZDogbm9kZVZhbChnZXQxKHRpbWVTcGFuLCAiZW5kIikpLAoJICAgICAgICAgICAgfSwKCSAgICAgICAgfTsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGV4dHJhY3RUaW1lU3RhbXAobm9kZSkgewoJICAgIHJldHVybiBnZXQobm9kZSwgIlRpbWVTdGFtcCIsICh0aW1lU3RhbXApID0+IHsKCSAgICAgICAgcmV0dXJuIHsgdGltZXN0YW1wOiBub2RlVmFsKGdldDEodGltZVN0YW1wLCAid2hlbiIpKSB9OwoJICAgIH0pOwoJfQoJZnVuY3Rpb24gZXh0cmFjdENhc2NhZGVkU3R5bGUobm9kZSwgc3R5bGVNYXApIHsKCSAgICByZXR1cm4gdmFsMShub2RlLCAic3R5bGVVcmwiLCAoc3R5bGVVcmwpID0+IHsKCSAgICAgICAgc3R5bGVVcmwgPSBub3JtYWxpemVJZChzdHlsZVVybCk7CgkgICAgICAgIGlmIChzdHlsZU1hcFtzdHlsZVVybF0pIHsKCSAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHsgc3R5bGVVcmwgfSwgc3R5bGVNYXBbc3R5bGVVcmxdKTsKCSAgICAgICAgfQoJICAgICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4gU2hvdWxkIHdlIHN0aWxsIGluY2x1ZGUKCSAgICAgICAgLy8gc3R5bGVVcmwgZXZlbiBpZiBpdCdzIG5vdCByZXNvbHZlZD8KCSAgICAgICAgcmV0dXJuIHsgc3R5bGVVcmwgfTsKCSAgICB9KTsKCX0KCgljb25zdCByZW1vdmVTcGFjZSA9IC9ccyovZzsKCWNvbnN0IHRyaW1TcGFjZSA9IC9eXHMqfFxzKiQvZzsKCWNvbnN0IHNwbGl0U3BhY2UgPSAvXHMrLzsKCS8qKgoJICogR2V0IG9uZSBjb29yZGluYXRlIGZyb20gYSBjb29yZGluYXRlIGFycmF5LCBpZiBhbnkKCSAqLwoJZnVuY3Rpb24gY29vcmQxKHZhbHVlKSB7CgkgICAgcmV0dXJuIHZhbHVlCgkgICAgICAgIC5yZXBsYWNlKHJlbW92ZVNwYWNlLCAiIikKCSAgICAgICAgLnNwbGl0KCIsIikKCSAgICAgICAgLm1hcChwYXJzZUZsb2F0KQoJICAgICAgICAuZmlsdGVyKChudW0pID0+ICFpc05hTihudW0pKQoJICAgICAgICAuc2xpY2UoMCwgMyk7Cgl9CgkvKioKCSAqIEdldCBhbGwgY29vcmRpbmF0ZXMgZnJvbSBhIGNvb3JkaW5hdGUgYXJyYXkgYXMgW1tdLFtdXQoJICovCglmdW5jdGlvbiBjb29yZCh2YWx1ZSkgewoJICAgIHJldHVybiB2YWx1ZQoJICAgICAgICAucmVwbGFjZSh0cmltU3BhY2UsICIiKQoJICAgICAgICAuc3BsaXQoc3BsaXRTcGFjZSkKCSAgICAgICAgLm1hcChjb29yZDEpCgkgICAgICAgIC5maWx0ZXIoKGNvb3JkKSA9PiB7CgkgICAgICAgIHJldHVybiBjb29yZC5sZW5ndGggPj0gMjsKCSAgICB9KTsKCX0KCWZ1bmN0aW9uIGd4Q29vcmRzKG5vZGUpIHsKCSAgICBsZXQgZWxlbXMgPSAkKG5vZGUsICJjb29yZCIpOwoJICAgIGlmIChlbGVtcy5sZW5ndGggPT09IDApIHsKCSAgICAgICAgZWxlbXMgPSAkbnMobm9kZSwgImNvb3JkIiwgIioiKTsKCSAgICB9CgkgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBlbGVtcy5tYXAoKGVsZW0pID0+IHsKCSAgICAgICAgcmV0dXJuIG5vZGVWYWwoZWxlbSkuc3BsaXQoIiAiKS5tYXAocGFyc2VGbG9hdCk7CgkgICAgfSk7CgkgICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCA9PT0gMCkgewoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICB9CgkgICAgcmV0dXJuIHsKCSAgICAgICAgZ2VvbWV0cnk6IGNvb3JkaW5hdGVzLmxlbmd0aCA+IDIKCSAgICAgICAgICAgID8gewoJICAgICAgICAgICAgICAgIHR5cGU6ICJMaW5lU3RyaW5nIiwKCSAgICAgICAgICAgICAgICBjb29yZGluYXRlcywKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIDogewoJICAgICAgICAgICAgICAgIHR5cGU6ICJQb2ludCIsCgkgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGNvb3JkaW5hdGVzWzBdLAoJICAgICAgICAgICAgfSwKCSAgICAgICAgdGltZXM6ICQobm9kZSwgIndoZW4iKS5tYXAoKGVsZW0pID0+IG5vZGVWYWwoZWxlbSkpLAoJICAgIH07Cgl9CglmdW5jdGlvbiBmaXhSaW5nKHJpbmcpIHsKCSAgICBpZiAocmluZy5sZW5ndGggPT09IDApCgkgICAgICAgIHJldHVybiByaW5nOwoJICAgIGNvbnN0IGZpcnN0ID0gcmluZ1swXTsKCSAgICBjb25zdCBsYXN0ID0gcmluZ1tyaW5nLmxlbmd0aCAtIDFdOwoJICAgIGxldCBlcXVhbCA9IHRydWU7CgkgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1heChmaXJzdC5sZW5ndGgsIGxhc3QubGVuZ3RoKTsgaSsrKSB7CgkgICAgICAgIGlmIChmaXJzdFtpXSAhPT0gbGFzdFtpXSkgewoJICAgICAgICAgICAgZXF1YWwgPSBmYWxzZTsKCSAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICB9CgkgICAgfQoJICAgIGlmICghZXF1YWwpIHsKCSAgICAgICAgcmV0dXJuIHJpbmcuY29uY2F0KFtyaW5nWzBdXSk7CgkgICAgfQoJICAgIHJldHVybiByaW5nOwoJfQoJZnVuY3Rpb24gZ2V0Q29vcmRpbmF0ZXMobm9kZSkgewoJICAgIHJldHVybiBub2RlVmFsKGdldDEobm9kZSwgImNvb3JkaW5hdGVzIikpOwoJfQoJZnVuY3Rpb24gZ2V0R2VvbWV0cnkobm9kZSkgewoJICAgIGxldCBnZW9tZXRyaWVzID0gW107CgkgICAgbGV0IGNvb3JkVGltZXMgPSBbXTsKCSAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgewoJICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGROb2Rlcy5pdGVtKGkpOwoJICAgICAgICBpZiAoaXNFbGVtZW50KGNoaWxkKSkgewoJICAgICAgICAgICAgc3dpdGNoIChjaGlsZC50YWdOYW1lKSB7CgkgICAgICAgICAgICAgICAgY2FzZSAiTXVsdGlHZW9tZXRyeSI6CgkgICAgICAgICAgICAgICAgY2FzZSAiTXVsdGlUcmFjayI6CgkgICAgICAgICAgICAgICAgY2FzZSAiZ3g6TXVsdGlUcmFjayI6IHsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRHZW9tZXRyaWVzID0gZ2V0R2VvbWV0cnkoY2hpbGQpOwoJICAgICAgICAgICAgICAgICAgICBnZW9tZXRyaWVzID0gZ2VvbWV0cmllcy5jb25jYXQoY2hpbGRHZW9tZXRyaWVzLmdlb21ldHJpZXMpOwoJICAgICAgICAgICAgICAgICAgICBjb29yZFRpbWVzID0gY29vcmRUaW1lcy5jb25jYXQoY2hpbGRHZW9tZXRyaWVzLmNvb3JkVGltZXMpOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY2FzZSAiUG9pbnQiOiB7CgkgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gY29vcmQxKGdldENvb3JkaW5hdGVzKGNoaWxkKSk7CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggPj0gMikgewoJICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cmllcy5wdXNoKHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiUG9pbnQiLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzLAoJICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNhc2UgIkxpbmVhclJpbmciOgoJICAgICAgICAgICAgICAgIGNhc2UgIkxpbmVTdHJpbmciOiB7CgkgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gY29vcmQoZ2V0Q29vcmRpbmF0ZXMoY2hpbGQpKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCA+PSAyKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyaWVzLnB1c2goewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJMaW5lU3RyaW5nIiwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlcywKCSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBjYXNlICJQb2x5Z29uIjogewoJICAgICAgICAgICAgICAgICAgICBjb25zdCBjb29yZHMgPSBbXTsKCSAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaW5lYXJSaW5nIG9mICQoY2hpbGQsICJMaW5lYXJSaW5nIikpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpbmcgPSBmaXhSaW5nKGNvb3JkKGdldENvb3JkaW5hdGVzKGxpbmVhclJpbmcpKSk7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmluZy5sZW5ndGggPj0gNCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkcy5wdXNoKHJpbmcpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGlmIChjb29yZHMubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyaWVzLnB1c2goewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQb2x5Z29uIiwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogY29vcmRzLAoJICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNhc2UgIlRyYWNrIjoKCSAgICAgICAgICAgICAgICBjYXNlICJneDpUcmFjayI6IHsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3ggPSBneENvb3JkcyhjaGlsZCk7CgkgICAgICAgICAgICAgICAgICAgIGlmICghZ3gpCgkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0aW1lcywgZ2VvbWV0cnkgfSA9IGd4OwoJICAgICAgICAgICAgICAgICAgICBnZW9tZXRyaWVzLnB1c2goZ2VvbWV0cnkpOwoJICAgICAgICAgICAgICAgICAgICBpZiAodGltZXMubGVuZ3RoKQoJICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRUaW1lcy5wdXNoKHRpbWVzKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiB7CgkgICAgICAgIGdlb21ldHJpZXMsCgkgICAgICAgIGNvb3JkVGltZXMsCgkgICAgfTsKCX0KCglmdW5jdGlvbiBnZW9tZXRyeUxpc3RUb0dlb21ldHJ5KGdlb21ldHJpZXMpIHsKCSAgICByZXR1cm4gZ2VvbWV0cmllcy5sZW5ndGggPT09IDAKCSAgICAgICAgPyBudWxsCgkgICAgICAgIDogZ2VvbWV0cmllcy5sZW5ndGggPT09IDEKCSAgICAgICAgICAgID8gZ2VvbWV0cmllc1swXQoJICAgICAgICAgICAgOiB7CgkgICAgICAgICAgICAgICAgdHlwZTogIkdlb21ldHJ5Q29sbGVjdGlvbiIsCgkgICAgICAgICAgICAgICAgZ2VvbWV0cmllcywKCSAgICAgICAgICAgIH07Cgl9CglmdW5jdGlvbiBnZXRQbGFjZW1hcmsobm9kZSwgc3R5bGVNYXAsIHNjaGVtYSwgb3B0aW9ucykgewoJICAgIGNvbnN0IHsgY29vcmRUaW1lcywgZ2VvbWV0cmllcyB9ID0gZ2V0R2VvbWV0cnkobm9kZSk7CgkgICAgY29uc3QgZ2VvbWV0cnkgPSBnZW9tZXRyeUxpc3RUb0dlb21ldHJ5KGdlb21ldHJpZXMpOwoJICAgIGlmICghZ2VvbWV0cnkgJiYgb3B0aW9ucy5za2lwTnVsbEdlb21ldHJ5KSB7CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH0KCSAgICBjb25zdCBmZWF0dXJlID0gewoJICAgICAgICB0eXBlOiAiRmVhdHVyZSIsCgkgICAgICAgIGdlb21ldHJ5LAoJICAgICAgICBwcm9wZXJ0aWVzOiBPYmplY3QuYXNzaWduKGdldE11bHRpKG5vZGUsIFsKCSAgICAgICAgICAgICJuYW1lIiwKCSAgICAgICAgICAgICJhZGRyZXNzIiwKCSAgICAgICAgICAgICJ2aXNpYmlsaXR5IiwKCSAgICAgICAgICAgICJvcGVuIiwKCSAgICAgICAgICAgICJwaG9uZU51bWJlciIsCgkgICAgICAgICAgICAiZGVzY3JpcHRpb24iLAoJICAgICAgICBdKSwgZ2V0TWF5YmVIVE1MRGVzY3JpcHRpb24obm9kZSksIGV4dHJhY3RDYXNjYWRlZFN0eWxlKG5vZGUsIHN0eWxlTWFwKSwgZXh0cmFjdFN0eWxlKG5vZGUpLCBleHRyYWN0RXh0ZW5kZWREYXRhKG5vZGUsIHNjaGVtYSksIGV4dHJhY3RUaW1lU3Bhbihub2RlKSwgZXh0cmFjdFRpbWVTdGFtcChub2RlKSwgY29vcmRUaW1lcy5sZW5ndGgKCSAgICAgICAgICAgID8gewoJICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVQcm9wZXJ0aWVzOiB7CgkgICAgICAgICAgICAgICAgICAgIHRpbWVzOiBjb29yZFRpbWVzLmxlbmd0aCA9PT0gMSA/IGNvb3JkVGltZXNbMF0gOiBjb29yZFRpbWVzLAoJICAgICAgICAgICAgICAgIH0sCgkgICAgICAgICAgICB9CgkgICAgICAgICAgICA6IHt9KSwKCSAgICB9OwoJICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXM/LnZpc2liaWxpdHkgIT09IHVuZGVmaW5lZCkgewoJICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMudmlzaWJpbGl0eSA9IGZlYXR1cmUucHJvcGVydGllcy52aXNpYmlsaXR5ICE9PSAiMCI7CgkgICAgfQoJICAgIGNvbnN0IGlkID0gbm9kZS5nZXRBdHRyaWJ1dGUoImlkIik7CgkgICAgaWYgKGlkICE9PSBudWxsICYmIGlkICE9PSAiIikKCSAgICAgICAgZmVhdHVyZS5pZCA9IGlkOwoJICAgIHJldHVybiBmZWF0dXJlOwoJfQoKCWZ1bmN0aW9uIGdldEdyb3VuZE92ZXJsYXlCb3gobm9kZSkgewoJICAgIGNvbnN0IGxhdExvblF1YWQgPSBnZXQxKG5vZGUsICJneDpMYXRMb25RdWFkIik7CgkgICAgaWYgKGxhdExvblF1YWQpIHsKCSAgICAgICAgY29uc3QgcmluZyA9IGZpeFJpbmcoY29vcmQoZ2V0Q29vcmRpbmF0ZXMobm9kZSkpKTsKCSAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICAgICAgdHlwZTogIlBvbHlnb24iLAoJICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbcmluZ10sCgkgICAgICAgICAgICB9LAoJICAgICAgICB9OwoJICAgIH0KCSAgICByZXR1cm4gZ2V0TGF0TG9uQm94KG5vZGUpOwoJfQoJY29uc3QgREVHUkVFU19UT19SQURJQU5TID0gTWF0aC5QSSAvIDE4MDsKCWZ1bmN0aW9uIHJvdGF0ZUJveChiYm94LCBjb29yZGluYXRlcywgcm90YXRpb24pIHsKCSAgICBjb25zdCBjZW50ZXIgPSBbKGJib3hbMF0gKyBiYm94WzJdKSAvIDIsIChiYm94WzFdICsgYmJveFszXSkgLyAyXTsKCSAgICByZXR1cm4gWwoJICAgICAgICBjb29yZGluYXRlc1swXS5tYXAoKGNvb3JkaW5hdGUpID0+IHsKCSAgICAgICAgICAgIGNvbnN0IGR5ID0gY29vcmRpbmF0ZVsxXSAtIGNlbnRlclsxXTsKCSAgICAgICAgICAgIGNvbnN0IGR4ID0gY29vcmRpbmF0ZVswXSAtIGNlbnRlclswXTsKCSAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5zcXJ0KE1hdGgucG93KGR5LCAyKSArIE1hdGgucG93KGR4LCAyKSk7CgkgICAgICAgICAgICBjb25zdCBhbmdsZSA9IE1hdGguYXRhbjIoZHksIGR4KSArIHJvdGF0aW9uICogREVHUkVFU19UT19SQURJQU5TOwoJICAgICAgICAgICAgcmV0dXJuIFsKCSAgICAgICAgICAgICAgICBjZW50ZXJbMF0gKyBNYXRoLmNvcyhhbmdsZSkgKiBkaXN0YW5jZSwKCSAgICAgICAgICAgICAgICBjZW50ZXJbMV0gKyBNYXRoLnNpbihhbmdsZSkgKiBkaXN0YW5jZSwKCSAgICAgICAgICAgIF07CgkgICAgICAgIH0pLAoJICAgIF07Cgl9CglmdW5jdGlvbiBnZXRMYXRMb25Cb3gobm9kZSkgewoJICAgIGNvbnN0IGxhdExvbkJveCA9IGdldDEobm9kZSwgIkxhdExvbkJveCIpOwoJICAgIGlmIChsYXRMb25Cb3gpIHsKCSAgICAgICAgY29uc3Qgbm9ydGggPSBudW0xKGxhdExvbkJveCwgIm5vcnRoIik7CgkgICAgICAgIGNvbnN0IHdlc3QgPSBudW0xKGxhdExvbkJveCwgIndlc3QiKTsKCSAgICAgICAgY29uc3QgZWFzdCA9IG51bTEobGF0TG9uQm94LCAiZWFzdCIpOwoJICAgICAgICBjb25zdCBzb3V0aCA9IG51bTEobGF0TG9uQm94LCAic291dGgiKTsKCSAgICAgICAgY29uc3Qgcm90YXRpb24gPSBudW0xKGxhdExvbkJveCwgInJvdGF0aW9uIik7CgkgICAgICAgIGlmICh0eXBlb2Ygbm9ydGggPT09ICJudW1iZXIiICYmCgkgICAgICAgICAgICB0eXBlb2Ygc291dGggPT09ICJudW1iZXIiICYmCgkgICAgICAgICAgICB0eXBlb2Ygd2VzdCA9PT0gIm51bWJlciIgJiYKCSAgICAgICAgICAgIHR5cGVvZiBlYXN0ID09PSAibnVtYmVyIikgewoJICAgICAgICAgICAgY29uc3QgYmJveCA9IFt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGhdOwoJICAgICAgICAgICAgbGV0IGNvb3JkaW5hdGVzID0gWwoJICAgICAgICAgICAgICAgIFsKCSAgICAgICAgICAgICAgICAgICAgW3dlc3QsIG5vcnRoXSwKCSAgICAgICAgICAgICAgICAgICAgW2Vhc3QsIG5vcnRoXSwKCSAgICAgICAgICAgICAgICAgICAgW2Vhc3QsIHNvdXRoXSwKCSAgICAgICAgICAgICAgICAgICAgW3dlc3QsIHNvdXRoXSwKCSAgICAgICAgICAgICAgICAgICAgW3dlc3QsIG5vcnRoXSwgLy8gdG9wIGxlZnQgKGFnYWluKQoJICAgICAgICAgICAgICAgIF0sCgkgICAgICAgICAgICBdOwoJICAgICAgICAgICAgaWYgKHR5cGVvZiByb3RhdGlvbiA9PT0gIm51bWJlciIpIHsKCSAgICAgICAgICAgICAgICBjb29yZGluYXRlcyA9IHJvdGF0ZUJveChiYm94LCBjb29yZGluYXRlcywgcm90YXRpb24pOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIHsKCSAgICAgICAgICAgICAgICBiYm94LAoJICAgICAgICAgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQb2x5Z29uIiwKCSAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXMsCgkgICAgICAgICAgICAgICAgfSwKCSAgICAgICAgICAgIH07CgkgICAgICAgIH0KCSAgICB9CgkgICAgcmV0dXJuIG51bGw7Cgl9CglmdW5jdGlvbiBnZXRHcm91bmRPdmVybGF5KG5vZGUsIHN0eWxlTWFwLCBzY2hlbWEsIG9wdGlvbnMpIHsKCSAgICBjb25zdCBib3ggPSBnZXRHcm91bmRPdmVybGF5Qm94KG5vZGUpOwoJICAgIGNvbnN0IGdlb21ldHJ5ID0gYm94Py5nZW9tZXRyeSB8fCBudWxsOwoJICAgIGlmICghZ2VvbWV0cnkgJiYgb3B0aW9ucy5za2lwTnVsbEdlb21ldHJ5KSB7CgkgICAgICAgIHJldHVybiBudWxsOwoJICAgIH0KCSAgICBjb25zdCBmZWF0dXJlID0gewoJICAgICAgICB0eXBlOiAiRmVhdHVyZSIsCgkgICAgICAgIGdlb21ldHJ5LAoJICAgICAgICBwcm9wZXJ0aWVzOiBPYmplY3QuYXNzaWduKAoJICAgICAgICAvKioKCSAgICAgICAgICogUmVsYXRlZCB0bwoJICAgICAgICAgKiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS90bWN3LzAzN2ExY2I2NjYwZDc0YTM5MmU5ZGE3NDQ2NTQwZjQ2CgkgICAgICAgICAqLwoJICAgICAgICB7ICJAZ2VvbWV0cnktdHlwZSI6ICJncm91bmRvdmVybGF5IiB9LCBnZXRNdWx0aShub2RlLCBbCgkgICAgICAgICAgICAibmFtZSIsCgkgICAgICAgICAgICAiYWRkcmVzcyIsCgkgICAgICAgICAgICAidmlzaWJpbGl0eSIsCgkgICAgICAgICAgICAib3BlbiIsCgkgICAgICAgICAgICAicGhvbmVOdW1iZXIiLAoJICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwKCSAgICAgICAgXSksIGdldE1heWJlSFRNTERlc2NyaXB0aW9uKG5vZGUpLCBleHRyYWN0Q2FzY2FkZWRTdHlsZShub2RlLCBzdHlsZU1hcCksIGV4dHJhY3RTdHlsZShub2RlKSwgZXh0cmFjdEljb25IcmVmKG5vZGUpLCBleHRyYWN0RXh0ZW5kZWREYXRhKG5vZGUsIHNjaGVtYSksIGV4dHJhY3RUaW1lU3Bhbihub2RlKSwgZXh0cmFjdFRpbWVTdGFtcChub2RlKSksCgkgICAgfTsKCSAgICBpZiAoYm94Py5iYm94KSB7CgkgICAgICAgIGZlYXR1cmUuYmJveCA9IGJveC5iYm94OwoJICAgIH0KCSAgICBpZiAoZmVhdHVyZS5wcm9wZXJ0aWVzPy52aXNpYmlsaXR5ICE9PSB1bmRlZmluZWQpIHsKCSAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLnZpc2liaWxpdHkgPSBmZWF0dXJlLnByb3BlcnRpZXMudmlzaWJpbGl0eSAhPT0gIjAiOwoJICAgIH0KCSAgICBjb25zdCBpZCA9IG5vZGUuZ2V0QXR0cmlidXRlKCJpZCIpOwoJICAgIGlmIChpZCAhPT0gbnVsbCAmJiBpZCAhPT0gIiIpCgkgICAgICAgIGZlYXR1cmUuaWQgPSBpZDsKCSAgICByZXR1cm4gZmVhdHVyZTsKCX0KCglmdW5jdGlvbiBnZXRTdHlsZUlkKHN0eWxlKSB7CgkgICAgbGV0IGlkID0gc3R5bGUuZ2V0QXR0cmlidXRlKCJpZCIpOwoJICAgIGNvbnN0IHBhcmVudE5vZGUgPSBzdHlsZS5wYXJlbnROb2RlOwoJICAgIGlmICghaWQgJiYKCSAgICAgICAgaXNFbGVtZW50KHBhcmVudE5vZGUpICYmCgkgICAgICAgIHBhcmVudE5vZGUubG9jYWxOYW1lID09PSAiQ2FzY2FkaW5nU3R5bGUiKSB7CgkgICAgICAgIGlkID0gcGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoImttbDppZCIpIHx8IHBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJpZCIpOwoJICAgIH0KCSAgICByZXR1cm4gbm9ybWFsaXplSWQoaWQgfHwgIiIpOwoJfQoJZnVuY3Rpb24gYnVpbGRTdHlsZU1hcChub2RlKSB7CgkgICAgY29uc3Qgc3R5bGVNYXAgPSB7fTsKCSAgICBmb3IgKGNvbnN0IHN0eWxlIG9mICQobm9kZSwgIlN0eWxlIikpIHsKCSAgICAgICAgc3R5bGVNYXBbZ2V0U3R5bGVJZChzdHlsZSldID0gZXh0cmFjdFN0eWxlKHN0eWxlKTsKCSAgICB9CgkgICAgZm9yIChjb25zdCBtYXAgb2YgJChub2RlLCAiU3R5bGVNYXAiKSkgewoJICAgICAgICBjb25zdCBpZCA9IG5vcm1hbGl6ZUlkKG1hcC5nZXRBdHRyaWJ1dGUoImlkIikgfHwgIiIpOwoJICAgICAgICB2YWwxKG1hcCwgInN0eWxlVXJsIiwgKHN0eWxlVXJsKSA9PiB7CgkgICAgICAgICAgICBzdHlsZVVybCA9IG5vcm1hbGl6ZUlkKHN0eWxlVXJsKTsKCSAgICAgICAgICAgIGlmIChzdHlsZU1hcFtzdHlsZVVybF0pIHsKCSAgICAgICAgICAgICAgICBzdHlsZU1hcFtpZF0gPSBzdHlsZU1hcFtzdHlsZVVybF07CgkgICAgICAgICAgICB9CgkgICAgICAgIH0pOwoJICAgIH0KCSAgICByZXR1cm4gc3R5bGVNYXA7Cgl9CglmdW5jdGlvbiBidWlsZFNjaGVtYShub2RlKSB7CgkgICAgY29uc3Qgc2NoZW1hID0ge307CgkgICAgZm9yIChjb25zdCBmaWVsZCBvZiAkKG5vZGUsICJTaW1wbGVGaWVsZCIpKSB7CgkgICAgICAgIHNjaGVtYVtmaWVsZC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSB8fCAiIl0gPQoJICAgICAgICAgICAgdHlwZUNvbnZlcnRlcnNbZmllbGQuZ2V0QXR0cmlidXRlKCJ0eXBlIikgfHwgIiJdIHx8CgkgICAgICAgICAgICAgICAgdHlwZUNvbnZlcnRlcnNbInN0cmluZyJdOwoJICAgIH0KCSAgICByZXR1cm4gc2NoZW1hOwoJfQoJY29uc3QgRk9MREVSX1BST1BTID0gWwoJICAgICJuYW1lIiwKCSAgICAidmlzaWJpbGl0eSIsCgkgICAgIm9wZW4iLAoJICAgICJhZGRyZXNzIiwKCSAgICAiZGVzY3JpcHRpb24iLAoJICAgICJwaG9uZU51bWJlciIsCgkgICAgInZpc2liaWxpdHkiLAoJXTsKCWZ1bmN0aW9uIGdldEZvbGRlcihub2RlKSB7CgkgICAgY29uc3QgbWV0YSA9IHt9OwoJICAgIGZvciAoY29uc3QgY2hpbGQgb2YgQXJyYXkuZnJvbShub2RlLmNoaWxkTm9kZXMpKSB7CgkgICAgICAgIGlmIChpc0VsZW1lbnQoY2hpbGQpICYmIEZPTERFUl9QUk9QUy5pbmNsdWRlcyhjaGlsZC50YWdOYW1lKSkgewoJICAgICAgICAgICAgbWV0YVtjaGlsZC50YWdOYW1lXSA9IG5vZGVWYWwoY2hpbGQpOwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiB7CgkgICAgICAgIHR5cGU6ICJmb2xkZXIiLAoJICAgICAgICBtZXRhLAoJICAgICAgICBjaGlsZHJlbjogW10sCgkgICAgfTsKCX0KCS8qKgoJICogWWllbGQgYSBuZXN0ZWQgdHJlZSB3aXRoIEtNTCBmb2xkZXIgc3RydWN0dXJlCgkgKgoJICogVGhpcyBnZW5lcmF0ZXMgYSB0cmVlIHdpdGggdGhlIGdpdmVuIHN0cnVjdHVyZToKCSAqCgkgKiBgYGBqcwoJICogewoJICogICAidHlwZSI6ICJyb290IiwKCSAqICAgImNoaWxkcmVuIjogWwoJICogICAgIHsKCSAqICAgICAgICJ0eXBlIjogImZvbGRlciIsCgkgKiAgICAgICAibWV0YSI6IHsKCSAqICAgICAgICAgIm5hbWUiOiAiVGVzdCIKCSAqICAgICAgIH0sCgkgKiAgICAgICAiY2hpbGRyZW4iOiBbCgkgKiAgICAgICAgICAvLyAuLi5mZWF0dXJlcyBhbmQgZm9sZGVycwoJICogICAgICAgXQoJICogICAgIH0KCSAqICAgICAvLyAuLi5mZWF0dXJlcwoJICogICBdCgkgKiB9CgkgKiBgYGAKCSAqCgkgKiAjIyMgR3JvdW5kT3ZlcmxheQoJICoKCSAqIEdyb3VuZE92ZXJsYXkgZWxlbWVudHMgYXJlIGNvbnZlcnRlZCBpbnRvCgkgKiBgRmVhdHVyZWAgb2JqZWN0cyB3aXRoIGBQb2x5Z29uYCBnZW9tZXRyaWVzLAoJICogYSBwcm9wZXJ0eSBsaWtlOgoJICoKCSAqIGBgYGpzb24KCSAqIHsKCSAqICAgIkBnZW9tZXRyeS10eXBlIjogImdyb3VuZG92ZXJsYXkiCgkgKiB9CgkgKiBgYGAKCSAqCgkgKiBBbmQgdGhlIGdyb3VuZCBvdmVybGF5J3MgaW1hZ2UgVVJMIGluIHRoZSBgaHJlZmAKCSAqIHByb3BlcnR5LiBHcm91bmQgb3ZlcmxheXMgd2lsbCBuZWVkIHRvIGJlIGRpc3BsYXllZAoJICogd2l0aCBhIHNlcGFyYXRlIG1ldGhvZCB0byBvdGhlciBmZWF0dXJlcywgZGVwZW5kaW5nCgkgKiBvbiB3aGljaCBtYXAgZnJhbWV3b3JrIHlvdSdyZSB1c2luZy4KCSAqLwoJZnVuY3Rpb24ga21sV2l0aEZvbGRlcnMobm9kZSwgb3B0aW9ucyA9IHsKCSAgICBza2lwTnVsbEdlb21ldHJ5OiBmYWxzZSwKCX0pIHsKCSAgICBjb25zdCBzdHlsZU1hcCA9IGJ1aWxkU3R5bGVNYXAobm9kZSk7CgkgICAgY29uc3Qgc2NoZW1hID0gYnVpbGRTY2hlbWEobm9kZSk7CgkgICAgY29uc3QgdHJlZSA9IHsgdHlwZTogInJvb3QiLCBjaGlsZHJlbjogW10gfTsKCSAgICBmdW5jdGlvbiB0cmF2ZXJzZShub2RlLCBwb2ludGVyLCBvcHRpb25zKSB7CgkgICAgICAgIGlmIChpc0VsZW1lbnQobm9kZSkpIHsKCSAgICAgICAgICAgIHN3aXRjaCAobm9kZS50YWdOYW1lKSB7CgkgICAgICAgICAgICAgICAgY2FzZSAiR3JvdW5kT3ZlcmxheSI6IHsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtYXJrID0gZ2V0R3JvdW5kT3ZlcmxheShub2RlLCBzdHlsZU1hcCwgc2NoZW1hLCBvcHRpb25zKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHBsYWNlbWFyaykgewoJICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlci5jaGlsZHJlbi5wdXNoKHBsYWNlbWFyayk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGNhc2UgIlBsYWNlbWFyayI6IHsKCSAgICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtYXJrID0gZ2V0UGxhY2VtYXJrKG5vZGUsIHN0eWxlTWFwLCBzY2hlbWEsIG9wdGlvbnMpOwoJICAgICAgICAgICAgICAgICAgICBpZiAocGxhY2VtYXJrKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLmNoaWxkcmVuLnB1c2gocGxhY2VtYXJrKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgY2FzZSAiRm9sZGVyIjogewoJICAgICAgICAgICAgICAgICAgICBjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXIobm9kZSk7CgkgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIuY2hpbGRyZW4ucHVzaChmb2xkZXIpOwoJICAgICAgICAgICAgICAgICAgICBwb2ludGVyID0gZm9sZGVyOwoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG5vZGUuY2hpbGROb2RlcykgewoJICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsKCSAgICAgICAgICAgICAgICB0cmF2ZXJzZShub2RlLmNoaWxkTm9kZXNbaV0sIHBvaW50ZXIsIG9wdGlvbnMpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfQoJICAgIHRyYXZlcnNlKG5vZGUsIHRyZWUsIG9wdGlvbnMpOwoJICAgIHJldHVybiB0cmVlOwoJfQoJLyoqCgkgKiBDb252ZXJ0IEtNTCB0byBHZW9KU09OIGluY3JlbWVudGFsbHksIHJldHVybmluZwoJICogYSBbR2VuZXJhdG9yXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL0l0ZXJhdG9yc19hbmRfR2VuZXJhdG9ycykKCSAqIHRoYXQgeWllbGRzIG91dHB1dCBmZWF0dXJlIGJ5IGZlYXR1cmUuCgkgKi8KCWZ1bmN0aW9uKiBrbWxHZW4obm9kZSwgb3B0aW9ucyA9IHsKCSAgICBza2lwTnVsbEdlb21ldHJ5OiBmYWxzZSwKCX0pIHsKCSAgICBjb25zdCBzdHlsZU1hcCA9IGJ1aWxkU3R5bGVNYXAobm9kZSk7CgkgICAgY29uc3Qgc2NoZW1hID0gYnVpbGRTY2hlbWEobm9kZSk7CgkgICAgZm9yIChjb25zdCBwbGFjZW1hcmsgb2YgJChub2RlLCAiUGxhY2VtYXJrIikpIHsKCSAgICAgICAgY29uc3QgZmVhdHVyZSA9IGdldFBsYWNlbWFyayhwbGFjZW1hcmssIHN0eWxlTWFwLCBzY2hlbWEsIG9wdGlvbnMpOwoJICAgICAgICBpZiAoZmVhdHVyZSkKCSAgICAgICAgICAgIHlpZWxkIGZlYXR1cmU7CgkgICAgfQoJICAgIGZvciAoY29uc3QgZ3JvdW5kT3ZlcmxheSBvZiAkKG5vZGUsICJHcm91bmRPdmVybGF5IikpIHsKCSAgICAgICAgY29uc3QgZmVhdHVyZSA9IGdldEdyb3VuZE92ZXJsYXkoZ3JvdW5kT3ZlcmxheSwgc3R5bGVNYXAsIHNjaGVtYSwgb3B0aW9ucyk7CgkgICAgICAgIGlmIChmZWF0dXJlKQoJICAgICAgICAgICAgeWllbGQgZmVhdHVyZTsKCSAgICB9Cgl9CgkvKioKCSAqIENvbnZlcnQgYSBLTUwgZG9jdW1lbnQgdG8gR2VvSlNPTi4gVGhlIGZpcnN0IGFyZ3VtZW50LCBgZG9jYCwgbXVzdCBiZSBhIEtNTAoJICogZG9jdW1lbnQgYXMgYW4gWE1MIERPTSAtIG5vdCBhcyBhIHN0cmluZy4gWW91IGNhbiBnZXQgdGhpcyB1c2luZyBqUXVlcnkncyBkZWZhdWx0CgkgKiBgLmFqYXhgIGZ1bmN0aW9uIG9yIHVzaW5nIGEgYmFyZSBYTUxIdHRwUmVxdWVzdCB3aXRoIHRoZSBgLnJlc3BvbnNlYCBwcm9wZXJ0eQoJICogaG9sZGluZyBhbiBYTUwgRE9NLgoJICoKCSAqIFRoZSBvdXRwdXQgaXMgYSBKYXZhU2NyaXB0IG9iamVjdCBvZiBHZW9KU09OIGRhdGEuIFlvdSBjYW4gY29udmVydCBpdCB0byBhIHN0cmluZwoJICogd2l0aCBbSlNPTi5zdHJpbmdpZnldKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0pTT04vc3RyaW5naWZ5KQoJICogb3IgdXNlIGl0IGRpcmVjdGx5IGluIGxpYnJhcmllcy4KCSAqLwoJZnVuY3Rpb24ga21sKG5vZGUsIG9wdGlvbnMgPSB7CgkgICAgc2tpcE51bGxHZW9tZXRyeTogZmFsc2UsCgl9KSB7CgkgICAgcmV0dXJuIHsKCSAgICAgICAgdHlwZTogIkZlYXR1cmVDb2xsZWN0aW9uIiwKCSAgICAgICAgZmVhdHVyZXM6IEFycmF5LmZyb20oa21sR2VuKG5vZGUsIG9wdGlvbnMpKSwKCSAgICB9OwoJfQoKCXZhciB0b0dlb0pzb24gPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7CgkJX19wcm90b19fOiBudWxsLAoJCWdweDogZ3B4LAoJCWdweEdlbjogZ3B4R2VuLAoJCWttbDoga21sLAoJCWttbEdlbjoga21sR2VuLAoJCWttbFdpdGhGb2xkZXJzOiBrbWxXaXRoRm9sZGVycywKCQl0Y3g6IHRjeCwKCQl0Y3hHZW46IHRjeEdlbgoJfSk7CgoJdmFyIHBvbHlsaW5lID0ge2V4cG9ydHM6IHt9fTsKCgkoZnVuY3Rpb24gKG1vZHVsZSkgewoKCQkvKioKCQkgKiBCYXNlZCBvZmYgb2YgW3RoZSBvZmZpY2FsIEdvb2dsZSBkb2N1bWVudF0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL3V0aWxpdGllcy9wb2x5bGluZWFsZ29yaXRobSkKCQkgKgoJCSAqIFNvbWUgcGFydHMgZnJvbSBbdGhpcyBpbXBsZW1lbnRhdGlvbl0oaHR0cDovL2ZhY3N0YWZmLnVuY2EuZWR1L21jbWNjbHVyL0dvb2dsZU1hcHMvRW5jb2RlUG9seWxpbmUvUG9seWxpbmVFbmNvZGVyLmpzKQoJCSAqIGJ5IFtNYXJrIE1jQ2x1cmVdKGh0dHA6Ly9mYWNzdGFmZi51bmNhLmVkdS9tY21jY2x1ci8pCgkJICoKCQkgKiBAbW9kdWxlIHBvbHlsaW5lCgkJICovCgoJCXZhciBwb2x5bGluZSA9IHt9OwoKCQlmdW5jdGlvbiBweTJfcm91bmQodmFsdWUpIHsKCQkgICAgLy8gR29vZ2xlJ3MgcG9seWxpbmUgYWxnb3JpdGhtIHVzZXMgdGhlIHNhbWUgcm91bmRpbmcgc3RyYXRlZ3kgYXMgUHl0aG9uIDIsIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIEpTIGZvciBuZWdhdGl2ZSB2YWx1ZXMKCQkgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5hYnModmFsdWUpICsgMC41KSAqICh2YWx1ZSA+PSAwID8gMSA6IC0xKTsKCQl9CgoJCWZ1bmN0aW9uIGVuY29kZShjdXJyZW50LCBwcmV2aW91cywgZmFjdG9yKSB7CgkJICAgIGN1cnJlbnQgPSBweTJfcm91bmQoY3VycmVudCAqIGZhY3Rvcik7CgkJICAgIHByZXZpb3VzID0gcHkyX3JvdW5kKHByZXZpb3VzICogZmFjdG9yKTsKCQkgICAgdmFyIGNvb3JkaW5hdGUgPSAoY3VycmVudCAtIHByZXZpb3VzKSAqIDI7CgkJICAgIGlmIChjb29yZGluYXRlIDwgMCkgewoJCSAgICAgICAgY29vcmRpbmF0ZSA9IC1jb29yZGluYXRlIC0gMTsKCQkgICAgfQoJCSAgICB2YXIgb3V0cHV0ID0gJyc7CgkJICAgIHdoaWxlIChjb29yZGluYXRlID49IDB4MjApIHsKCQkgICAgICAgIG91dHB1dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgweDIwIHwgKGNvb3JkaW5hdGUgJiAweDFmKSkgKyA2Myk7CgkJICAgICAgICBjb29yZGluYXRlIC89IDMyOwoJCSAgICB9CgkJICAgIG91dHB1dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjb29yZGluYXRlIHwgMCkgKyA2Myk7CgkJICAgIHJldHVybiBvdXRwdXQ7CgkJfQoKCQkvKioKCQkgKiBEZWNvZGVzIHRvIGEgW2xhdGl0dWRlLCBsb25naXR1ZGVdIGNvb3JkaW5hdGVzIGFycmF5LgoJCSAqCgkJICogVGhpcyBpcyBhZGFwdGVkIGZyb20gdGhlIGltcGxlbWVudGF0aW9uIGluIFByb2plY3QtT1NSTS4KCQkgKgoJCSAqIEBwYXJhbSB7U3RyaW5nfSBzdHIKCQkgKiBAcGFyYW0ge051bWJlcn0gcHJlY2lzaW9uCgkJICogQHJldHVybnMge0FycmF5fQoJCSAqCgkJICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vUHJvamVjdC1PU1JNL29zcm0tZnJvbnRlbmQvYmxvYi9tYXN0ZXIvV2ViQ29udGVudC9yb3V0aW5nL09TUk0uUm91dGluZ0dlb21ldHJ5LmpzCgkJICovCgkJcG9seWxpbmUuZGVjb2RlID0gZnVuY3Rpb24oc3RyLCBwcmVjaXNpb24pIHsKCQkgICAgdmFyIGluZGV4ID0gMCwKCQkgICAgICAgIGxhdCA9IDAsCgkJICAgICAgICBsbmcgPSAwLAoJCSAgICAgICAgY29vcmRpbmF0ZXMgPSBbXSwKCQkgICAgICAgIHNoaWZ0ID0gMCwKCQkgICAgICAgIHJlc3VsdCA9IDAsCgkJICAgICAgICBieXRlID0gbnVsbCwKCQkgICAgICAgIGxhdGl0dWRlX2NoYW5nZSwKCQkgICAgICAgIGxvbmdpdHVkZV9jaGFuZ2UsCgkJICAgICAgICBmYWN0b3IgPSBNYXRoLnBvdygxMCwgTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pID8gcHJlY2lzaW9uIDogNSk7CgoJCSAgICAvLyBDb29yZGluYXRlcyBoYXZlIHZhcmlhYmxlIGxlbmd0aCB3aGVuIGVuY29kZWQsIHNvIGp1c3Qga2VlcAoJCSAgICAvLyB0cmFjayBvZiB3aGV0aGVyIHdlJ3ZlIGhpdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIEluIGVhY2gKCQkgICAgLy8gbG9vcCBpdGVyYXRpb24sIGEgc2luZ2xlIGNvb3JkaW5hdGUgaXMgZGVjb2RlZC4KCQkgICAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkgewoKCQkgICAgICAgIC8vIFJlc2V0IHNoaWZ0LCByZXN1bHQsIGFuZCBieXRlCgkJICAgICAgICBieXRlID0gbnVsbDsKCQkgICAgICAgIHNoaWZ0ID0gMTsKCQkgICAgICAgIHJlc3VsdCA9IDA7CgoJCSAgICAgICAgZG8gewoJCSAgICAgICAgICAgIGJ5dGUgPSBzdHIuY2hhckNvZGVBdChpbmRleCsrKSAtIDYzOwoJCSAgICAgICAgICAgIHJlc3VsdCArPSAoYnl0ZSAmIDB4MWYpICogc2hpZnQ7CgkJICAgICAgICAgICAgc2hpZnQgKj0gMzI7CgkJICAgICAgICB9IHdoaWxlIChieXRlID49IDB4MjApOwoKCQkgICAgICAgIGxhdGl0dWRlX2NoYW5nZSA9IChyZXN1bHQgJiAxKSA/ICgoLXJlc3VsdCAtIDEpIC8gMikgOiAocmVzdWx0IC8gMik7CgoJCSAgICAgICAgc2hpZnQgPSAxOwoJCSAgICAgICAgcmVzdWx0ID0gMDsKCgkJICAgICAgICBkbyB7CgkJICAgICAgICAgICAgYnl0ZSA9IHN0ci5jaGFyQ29kZUF0KGluZGV4KyspIC0gNjM7CgkJICAgICAgICAgICAgcmVzdWx0ICs9IChieXRlICYgMHgxZikgKiBzaGlmdDsKCQkgICAgICAgICAgICBzaGlmdCAqPSAzMjsKCQkgICAgICAgIH0gd2hpbGUgKGJ5dGUgPj0gMHgyMCk7CgoJCSAgICAgICAgbG9uZ2l0dWRlX2NoYW5nZSA9IChyZXN1bHQgJiAxKSA/ICgoLXJlc3VsdCAtIDEpIC8gMikgOiAocmVzdWx0IC8gMik7CgoJCSAgICAgICAgbGF0ICs9IGxhdGl0dWRlX2NoYW5nZTsKCQkgICAgICAgIGxuZyArPSBsb25naXR1ZGVfY2hhbmdlOwoKCQkgICAgICAgIGNvb3JkaW5hdGVzLnB1c2goW2xhdCAvIGZhY3RvciwgbG5nIC8gZmFjdG9yXSk7CgkJICAgIH0KCgkJICAgIHJldHVybiBjb29yZGluYXRlczsKCQl9OwoKCQkvKioKCQkgKiBFbmNvZGVzIHRoZSBnaXZlbiBbbGF0aXR1ZGUsIGxvbmdpdHVkZV0gY29vcmRpbmF0ZXMgYXJyYXkuCgkJICoKCQkgKiBAcGFyYW0ge0FycmF5LjxBcnJheS48TnVtYmVyPj59IGNvb3JkaW5hdGVzCgkJICogQHBhcmFtIHtOdW1iZXJ9IHByZWNpc2lvbgoJCSAqIEByZXR1cm5zIHtTdHJpbmd9CgkJICovCgkJcG9seWxpbmUuZW5jb2RlID0gZnVuY3Rpb24oY29vcmRpbmF0ZXMsIHByZWNpc2lvbikgewoJCSAgICBpZiAoIWNvb3JkaW5hdGVzLmxlbmd0aCkgeyByZXR1cm4gJyc7IH0KCgkJICAgIHZhciBmYWN0b3IgPSBNYXRoLnBvdygxMCwgTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pID8gcHJlY2lzaW9uIDogNSksCgkJICAgICAgICBvdXRwdXQgPSBlbmNvZGUoY29vcmRpbmF0ZXNbMF1bMF0sIDAsIGZhY3RvcikgKyBlbmNvZGUoY29vcmRpbmF0ZXNbMF1bMV0sIDAsIGZhY3Rvcik7CgoJCSAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNvb3JkaW5hdGVzLmxlbmd0aDsgaSsrKSB7CgkJICAgICAgICB2YXIgYSA9IGNvb3JkaW5hdGVzW2ldLCBiID0gY29vcmRpbmF0ZXNbaSAtIDFdOwoJCSAgICAgICAgb3V0cHV0ICs9IGVuY29kZShhWzBdLCBiWzBdLCBmYWN0b3IpOwoJCSAgICAgICAgb3V0cHV0ICs9IGVuY29kZShhWzFdLCBiWzFdLCBmYWN0b3IpOwoJCSAgICB9CgoJCSAgICByZXR1cm4gb3V0cHV0OwoJCX07CgoJCWZ1bmN0aW9uIGZsaXBwZWQoY29vcmRzKSB7CgkJICAgIHZhciBmbGlwcGVkID0gW107CgkJICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29vcmRzLmxlbmd0aDsgaSsrKSB7CgkJICAgICAgICB2YXIgY29vcmQgPSBjb29yZHNbaV0uc2xpY2UoKTsKCQkgICAgICAgIGZsaXBwZWQucHVzaChbY29vcmRbMV0sIGNvb3JkWzBdXSk7CgkJICAgIH0KCQkgICAgcmV0dXJuIGZsaXBwZWQ7CgkJfQoKCQkvKioKCQkgKiBFbmNvZGVzIGEgR2VvSlNPTiBMaW5lU3RyaW5nIGZlYXR1cmUvZ2VvbWV0cnkuCgkJICoKCQkgKiBAcGFyYW0ge09iamVjdH0gZ2VvanNvbgoJCSAqIEBwYXJhbSB7TnVtYmVyfSBwcmVjaXNpb24KCQkgKiBAcmV0dXJucyB7U3RyaW5nfQoJCSAqLwoJCXBvbHlsaW5lLmZyb21HZW9KU09OID0gZnVuY3Rpb24oZ2VvanNvbiwgcHJlY2lzaW9uKSB7CgkJICAgIGlmIChnZW9qc29uICYmIGdlb2pzb24udHlwZSA9PT0gJ0ZlYXR1cmUnKSB7CgkJICAgICAgICBnZW9qc29uID0gZ2VvanNvbi5nZW9tZXRyeTsKCQkgICAgfQoJCSAgICBpZiAoIWdlb2pzb24gfHwgZ2VvanNvbi50eXBlICE9PSAnTGluZVN0cmluZycpIHsKCQkgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgbXVzdCBiZSBhIEdlb0pTT04gTGluZVN0cmluZycpOwoJCSAgICB9CgkJICAgIHJldHVybiBwb2x5bGluZS5lbmNvZGUoZmxpcHBlZChnZW9qc29uLmNvb3JkaW5hdGVzKSwgcHJlY2lzaW9uKTsKCQl9OwoKCQkvKioKCQkgKiBEZWNvZGVzIHRvIGEgR2VvSlNPTiBMaW5lU3RyaW5nIGdlb21ldHJ5LgoJCSAqCgkJICogQHBhcmFtIHtTdHJpbmd9IHN0cgoJCSAqIEBwYXJhbSB7TnVtYmVyfSBwcmVjaXNpb24KCQkgKiBAcmV0dXJucyB7T2JqZWN0fQoJCSAqLwoJCXBvbHlsaW5lLnRvR2VvSlNPTiA9IGZ1bmN0aW9uKHN0ciwgcHJlY2lzaW9uKSB7CgkJICAgIHZhciBjb29yZHMgPSBwb2x5bGluZS5kZWNvZGUoc3RyLCBwcmVjaXNpb24pOwoJCSAgICByZXR1cm4gewoJCSAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLAoJCSAgICAgICAgY29vcmRpbmF0ZXM6IGZsaXBwZWQoY29vcmRzKQoJCSAgICB9OwoJCX07CgoJCWlmIChtb2R1bGUuZXhwb3J0cykgewoJCSAgICBtb2R1bGUuZXhwb3J0cyA9IHBvbHlsaW5lOwoJCX0gCgl9IChwb2x5bGluZSkpOwoKCXZhciBwb2x5bGluZUV4cG9ydHMgPSBwb2x5bGluZS5leHBvcnRzOwoKCXZhciB1dGlscyA9ICgoKSA9PiB7CgoJICAgIGNvbnN0IHB1cmdlUHJvcHMgPSAob2JqLCBibGFja2xpc3QpID0+IHsKCSAgICAgICAgaWYgKG9iaikgewoJICAgICAgICAgICAgbGV0IHJzID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTsKCSAgICAgICAgICAgIGlmIChibGFja2xpc3QpIHsKCSAgICAgICAgICAgICAgICBmb3IgKGxldCBwcm9wIG9mIGJsYWNrbGlzdCkgewoJICAgICAgICAgICAgICAgICAgICBkZWxldGUgcnNbcHJvcF07CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIHJzOwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiB7fTsKCSAgICB9OwoKCSAgICBjb25zdCBtZXJnZVByb3BzID0gKG9iajEsIG9iajIpID0+IHsKCSAgICAgICAgb2JqMSA9IG9iajEgPyBvYmoxIDoge307CgkgICAgICAgIG9iajIgPSBvYmoyID8gb2JqMiA6IHt9OwoJICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihvYmoxLCBvYmoyKTsKCSAgICB9OwoKCSAgICBjb25zdCBmaXJzdCA9IGEgPT4gYVswXTsKCSAgICBjb25zdCBsYXN0ID0gYSA9PiBhW2EubGVuZ3RoIC0gMV07CgkgICAgY29uc3QgY29vcmRzVG9LZXkgPSBhID0+IGEuam9pbignLCcpOwoKCSAgICBjb25zdCBhZGRUb01hcCA9IChtLCBrLCB2KSA9PiB7CgkgICAgICAgIGxldCBhID0gbVtrXTsKCSAgICAgICAgaWYgKGEpIHsKCSAgICAgICAgICAgIGEucHVzaCh2KTsKCSAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgIG1ba10gPSBbdl07CgkgICAgICAgIH0KCSAgICB9OwoKCSAgICBjb25zdCByZW1vdmVGcm9tTWFwID0gKG0sIGssIHYpID0+IHsKCSAgICAgICAgbGV0IGEgPSBtW2tdOwoJICAgICAgICBsZXQgaWR4ID0gbnVsbDsKCSAgICAgICAgaWYgKGEgJiYgKGlkeCA9IGEuaW5kZXhPZih2KSkgPj0gMCkgewoJICAgICAgICAgICAgYS5zcGxpY2UoaWR4LCAxKTsKCSAgICAgICAgfQoJICAgIH07CgoJICAgIGNvbnN0IGdldEZpcnN0RnJvbU1hcCA9IChtLCBrKSA9PiB7CgkgICAgICAgIGxldCBhID0gbVtrXTsKCSAgICAgICAgaWYgKGEgJiYgYS5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICByZXR1cm4gYVswXTsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gbnVsbDsKCSAgICB9OwoKCSAgICAvLyBuZWVkIDMrIGRpZmZlcmVudCBwb2ludHMgdG8gZm9ybSBhIHJpbmcsIGhlcmUgdXNpbmcgPiAzIGlzICdjb3ogYSB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IHBvaW50cyBhcmUgYWN0dWFsbHkgdGhlIHNhbWUKCSAgICBjb25zdCBpc1JpbmcgPSBhID0+IGEubGVuZ3RoID4gMyAmJiBjb29yZHNUb0tleShmaXJzdChhKSkgPT09IGNvb3Jkc1RvS2V5KGxhc3QoYSkpOwoKCSAgICBjb25zdCByaW5nRGlyZWN0aW9uID0gKGEsIHhJZHgsIHlJZHgpID0+IHsKCSAgICAgICAgeElkeCA9IHhJZHggfHwgMCwgeUlkeCA9IHlJZHggfHwgMTsKCSAgICAgICAgLy8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgcG9pbnQgd2hpY2ggaGFzIHRoZSBtYXhpbXVtIHggdmFsdWUKCSAgICAgICAgbGV0IG0gPSBhLnJlZHVjZSgobWF4eElkeCwgdiwgaWR4KSA9PiBhW21heHhJZHhdW3hJZHhdID4gdlt4SWR4XSA/IG1heHhJZHggOiBpZHgsIDApOwoJICAgICAgICAvLyAnY296IHRoZSBmaXJzdCBwb2ludCBpcyB2aXJ0dWFsbHkgdGhlIHNhbWUgb25lIGFzIHRoZSBsYXN0IHBvaW50LCAKCSAgICAgICAgLy8gd2UgbmVlZCB0byBza2lwIGEubGVuZ3RoIC0gMSBmb3IgbGVmdCB3aGVuIG0gPSAwLAoJICAgICAgICAvLyBhbmQgc2tpcCAwIGZvciByaWdodCB3aGVuIG0gPSBhLmxlbmd0aCAtIDE7CgkgICAgICAgIGxldCBsID0gbSA8PSAwID8gYS5sZW5ndGggLSAyIDogbSAtIDEsIHIgPSBtID49IGEubGVuZ3RoIC0gMSA/IDEgOiBtICsgMTsKCSAgICAgICAgbGV0IHhhID0gYVtsXVt4SWR4XSwgeGIgPSBhW21dW3hJZHhdLCB4YyA9IGFbcl1beElkeF07CgkgICAgICAgIGxldCB5YSA9IGFbbF1beUlkeF0sIHliID0gYVttXVt5SWR4XSwgeWMgPSBhW3JdW3lJZHhdOwoJICAgICAgICBsZXQgZGV0ID0gKHhiIC0geGEpICogKHljIC0geWEpIC0gKHhjIC0geGEpICogKHliIC0geWEpOwoJICAgICAgICByZXR1cm4gZGV0IDwgMCA/ICdjbG9ja3dpc2UnIDogJ2NvdW50ZXJjbG9ja3dpc2UnOwoJICAgIH07CgoJICAgIGNvbnN0IHB0SW5zaWRlUG9seWdvbiA9IChwdCwgcG9seWdvbiwgeElkeCwgeUlkeCkgPT4gewoJICAgICAgICB4SWR4ID0geElkeCB8fCAwLCB5SWR4ID0geUlkeCB8fCAxOwoJICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7CgkgICAgICAgIGZvciAobGV0IGkgPSAwLCBqID0gcG9seWdvbi5sZW5ndGggLSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGogPSBpKyspIHsKCSAgICAgICAgICAgIGlmICgocG9seWdvbltpXVt4SWR4XSA8PSBwdFt4SWR4XSAmJiBwdFt4SWR4XSA8IHBvbHlnb25bal1beElkeF0gfHwKCSAgICAgICAgICAgICAgICBwb2x5Z29uW2pdW3hJZHhdIDw9IHB0W3hJZHhdICYmIHB0W3hJZHhdIDwgcG9seWdvbltpXVt4SWR4XSkgJiYKCSAgICAgICAgICAgICAgICBwdFt5SWR4XSA8IChwb2x5Z29uW2pdW3lJZHhdIC0gcG9seWdvbltpXVt5SWR4XSkgKiAocHRbeElkeF0gLSBwb2x5Z29uW2ldW3hJZHhdKSAvIChwb2x5Z29uW2pdW3hJZHhdIC0gcG9seWdvbltpXVt4SWR4XSkgKyBwb2x5Z29uW2ldW3lJZHhdKSB7CgkgICAgICAgICAgICAgICAgcmVzdWx0ID0gIXJlc3VsdDsKCSAgICAgICAgICAgIH0KCgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHJlc3VsdDsKCSAgICB9OwoKCSAgICBjb25zdCBzdHJUb0Zsb2F0ID0gZWwgPT4gZWwgaW5zdGFuY2VvZiBBcnJheSA/IGVsLm1hcChzdHJUb0Zsb2F0KSA6IHBhcnNlRmxvYXQoZWwpOwoKCSAgICBjbGFzcyBSZWZFbGVtZW50cyBleHRlbmRzIE1hcCB7CgkgICAgICAgIGNvbnN0cnVjdG9yKCkgewoJICAgICAgICAgICAgc3VwZXIoKTsKCSAgICAgICAgICAgIHRoaXMuYmluZGVycyA9IFtdOwoJICAgICAgICB9CgoJICAgICAgICBhZGQoaywgdikgewoJICAgICAgICAgICAgaWYgKCF0aGlzLmhhcyhrKSkgewoJICAgICAgICAgICAgICAgIHRoaXMuc2V0KGssIHYpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgLy8gc3VwcHJlc3MgZHVwbGNhdGVkIGtleSBlcnJvcgoJICAgICAgICAgICAgLy8gZWxzZQoJICAgICAgICAgICAgLy8gdGhyb3cgYEVycm9yOiBhZGRpbmcgZHVwbGljYXRlZCBrZXkgJyR7a30nIHRvIFJlZkVsZW1lbnRzYDsKCSAgICAgICAgfQoKCSAgICAgICAgYWRkQmluZGVyKGJpbmRlcikgewoJICAgICAgICAgICAgdGhpcy5iaW5kZXJzLnB1c2goYmluZGVyKTsKCSAgICAgICAgfQoKCSAgICAgICAgYmluZEFsbCgpIHsKCSAgICAgICAgICAgIHRoaXMuYmluZGVycy5mb3JFYWNoKGJpbmRlciA9PiBiaW5kZXIuYmluZCgpKTsKCSAgICAgICAgfQoJICAgIH0KCgkgICAgY2xhc3MgTGF0ZUJpbmRlciB7CgkgICAgICAgIGNvbnN0cnVjdG9yKGNvbnRhaW5lciwgdmFsdWVGdW5jLCBjdHgsIGFyZ3MpIHsKCSAgICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyOwoJICAgICAgICAgICAgdGhpcy52YWx1ZUZ1bmMgPSB2YWx1ZUZ1bmM7CgkgICAgICAgICAgICB0aGlzLmN0eCA9IGN0eDsKCSAgICAgICAgICAgIHRoaXMuYXJncyA9IGFyZ3M7CgkgICAgICAgIH0KCgkgICAgICAgIGJpbmQoKSB7CgkgICAgICAgICAgICBsZXQgdiA9IHRoaXMudmFsdWVGdW5jLmFwcGx5KHRoaXMuY3R4LCB0aGlzLmFyZ3MpOwoJICAgICAgICAgICAgaWYgKHRoaXMuY29udGFpbmVyIGluc3RhbmNlb2YgQXJyYXkpIHsKCSAgICAgICAgICAgICAgICBsZXQgaWR4ID0gdGhpcy5jb250YWluZXIuaW5kZXhPZih0aGlzKTsKCSAgICAgICAgICAgICAgICBpZiAoaWR4ID49IDApIHsKCSAgICAgICAgICAgICAgICAgICAgbGV0IGFyZ3MgPSBbaWR4LCAxXTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaCh2KTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBbXS5zcGxpY2UuYXBwbHkodGhpcy5jb250YWluZXIsIGFyZ3MpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuY29udGFpbmVyID09PSAnb2JqZWN0JykgewoJICAgICAgICAgICAgICAgIGxldCBrID0gT2JqZWN0LmtleXModGhpcy5jb250YWluZXIpLmZpbmQodiA9PiB0aGlzLmNvbnRhaW5lclt2XSA9PT0gdGhpcyk7CgkgICAgICAgICAgICAgICAgaWYgKGspIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyW2tdID0gdjsKCSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNvbnRhaW5lcltrXTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH0KCgkgICAgY2xhc3MgV2F5Q29sbGVjdGlvbiBleHRlbmRzIEFycmF5IHsKCSAgICAgICAgY29uc3RydWN0b3IoKSB7CgkgICAgICAgICAgICBzdXBlcigpOwoJICAgICAgICAgICAgdGhpcy5maXJzdE1hcCA9IHt9OwoJICAgICAgICAgICAgdGhpcy5sYXN0TWFwID0ge307CgkgICAgICAgIH0KCgkgICAgICAgIGFkZFdheSh3YXkpIHsKCSAgICAgICAgICAgIHdheSA9IHdheS50b0Nvb3Jkc0FycmF5KCk7CgkgICAgICAgICAgICBpZiAod2F5Lmxlbmd0aCA+IDApIHsKCSAgICAgICAgICAgICAgICB0aGlzLnB1c2god2F5KTsKCSAgICAgICAgICAgICAgICBhZGRUb01hcCh0aGlzLmZpcnN0TWFwLCBjb29yZHNUb0tleShmaXJzdCh3YXkpKSwgd2F5KTsKCSAgICAgICAgICAgICAgICBhZGRUb01hcCh0aGlzLmxhc3RNYXAsIGNvb3Jkc1RvS2V5KGxhc3Qod2F5KSksIHdheSk7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCgkgICAgICAgIHRvU3RyaW5ncygpIHsKCSAgICAgICAgICAgIGxldCBzdHJpbmdzID0gW10sIHdheSA9IG51bGw7CgkgICAgICAgICAgICB3aGlsZSAod2F5ID0gdGhpcy5zaGlmdCgpKSB7CgkgICAgICAgICAgICAgICAgcmVtb3ZlRnJvbU1hcCh0aGlzLmZpcnN0TWFwLCBjb29yZHNUb0tleShmaXJzdCh3YXkpKSwgd2F5KTsKCSAgICAgICAgICAgICAgICByZW1vdmVGcm9tTWFwKHRoaXMubGFzdE1hcCwgY29vcmRzVG9LZXkobGFzdCh3YXkpKSwgd2F5KTsKCSAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IHdheSwgbmV4dCA9IG51bGw7CgkgICAgICAgICAgICAgICAgZG8gewoJICAgICAgICAgICAgICAgICAgICBsZXQga2V5ID0gY29vcmRzVG9LZXkobGFzdChjdXJyZW50KSksIHNob3VsZFJldmVyc2UgPSBmYWxzZTsKCgkgICAgICAgICAgICAgICAgICAgIG5leHQgPSBnZXRGaXJzdEZyb21NYXAodGhpcy5maXJzdE1hcCwga2V5KTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gZ2V0Rmlyc3RGcm9tTWFwKHRoaXMubGFzdE1hcCwga2V5KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFJldmVyc2UgPSB0cnVlOwoJICAgICAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGxpY2UodGhpcy5pbmRleE9mKG5leHQpLCAxKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUZyb21NYXAodGhpcy5maXJzdE1hcCwgY29vcmRzVG9LZXkoZmlyc3QobmV4dCkpLCBuZXh0KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUZyb21NYXAodGhpcy5sYXN0TWFwLCBjb29yZHNUb0tleShsYXN0KG5leHQpKSwgbmV4dCk7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUmV2ZXJzZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsd2F5cyByZXZlcnNlIHNob3J0ZXIgb25lIHRvIHNhdmUgdGltZQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Lmxlbmd0aCA+IGN1cnJlbnQubGVuZ3RoKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50LCBuZXh0XSA9IFtuZXh0LCBjdXJyZW50XTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5yZXZlcnNlKCk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuY29uY2F0KG5leHQuc2xpY2UoMSkpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfSB3aGlsZSAobmV4dCk7CgkgICAgICAgICAgICAgICAgc3RyaW5ncy5wdXNoKHN0clRvRmxvYXQoY3VycmVudCkpOwoJICAgICAgICAgICAgfQoKCSAgICAgICAgICAgIHJldHVybiBzdHJpbmdzOwoJICAgICAgICB9CgoJICAgICAgICB0b1JpbmdzKGRpcmVjdGlvbikgewoJICAgICAgICAgICAgbGV0IHN0cmluZ3MgPSB0aGlzLnRvU3RyaW5ncygpOwoJICAgICAgICAgICAgbGV0IHJpbmdzID0gW10sIHN0cmluZyA9IG51bGw7CgkgICAgICAgICAgICB3aGlsZSAoc3RyaW5nID0gc3RyaW5ncy5zaGlmdCgpKSB7CgkgICAgICAgICAgICAgICAgaWYgKGlzUmluZyhzdHJpbmcpKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChyaW5nRGlyZWN0aW9uKHN0cmluZykgIT09IGRpcmVjdGlvbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLnJldmVyc2UoKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByaW5ncy5wdXNoKHN0cmluZyk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIHJpbmdzOwoJICAgICAgICB9CgkgICAgfQoKCSAgICByZXR1cm4gewoJICAgICAgICBwdXJnZVByb3BzLCBtZXJnZVByb3BzLAoJICAgICAgICBmaXJzdCwgbGFzdCwgY29vcmRzVG9LZXksCgkgICAgICAgIGFkZFRvTWFwLCByZW1vdmVGcm9tTWFwLCBnZXRGaXJzdEZyb21NYXAsCgkgICAgICAgIGlzUmluZywgcmluZ0RpcmVjdGlvbiwgcHRJbnNpZGVQb2x5Z29uLCBzdHJUb0Zsb2F0LAoJICAgICAgICBSZWZFbGVtZW50cywgTGF0ZUJpbmRlciwgV2F5Q29sbGVjdGlvbgoJICAgIH07Cgl9KSgpOwoKCXZhciBidWlsZGluZyA9IHsKCX07Cgl2YXIgaGlnaHdheSA9IHsKCQl3aGl0ZWxpc3Q6IFsKCQkJInNlcnZpY2VzIiwKCQkJInJlc3RfYXJlYSIsCgkJCSJlc2NhcGUiLAoJCQkiZWxldmF0b3IiCgkJXQoJfTsKCXZhciBuYXR1cmFsID0gewoJCWJsYWNrbGlzdDogWwoJCQkiY29hc3RsaW5lIiwKCQkJImNsaWZmIiwKCQkJInJpZGdlIiwKCQkJImFyZXRlIiwKCQkJInRyZWVfcm93IgoJCV0KCX07Cgl2YXIgbGFuZHVzZSA9IHsKCX07Cgl2YXIgd2F0ZXJ3YXkgPSB7CgkJd2hpdGVsaXN0OiBbCgkJCSJyaXZlcmJhbmsiLAoJCQkiZG9jayIsCgkJCSJib2F0eWFyZCIsCgkJCSJkYW0iCgkJXQoJfTsKCXZhciBhbWVuaXR5ID0gewoJfTsKCXZhciBsZWlzdXJlID0gewoJfTsKCXZhciBiYXJyaWVyID0gewoJCXdoaXRlbGlzdDogWwoJCQkiY2l0eV93YWxsIiwKCQkJImRpdGNoIiwKCQkJImhlZGdlIiwKCQkJInJldGFpbmluZ193YWxsIiwKCQkJIndhbGwiLAoJCQkic3Bpa2VzIgoJCV0KCX07Cgl2YXIgcmFpbHdheSA9IHsKCQl3aGl0ZWxpc3Q6IFsKCQkJInN0YXRpb24iLAoJCQkidHVybnRhYmxlIiwKCQkJInJvdW5kaG91c2UiLAoJCQkicGxhdGZvcm0iCgkJXQoJfTsKCXZhciBhcmVhID0gewoJfTsKCXZhciBib3VuZGFyeSA9IHsKCX07Cgl2YXIgbWFuX21hZGUgPSB7CgkJYmxhY2tsaXN0OiBbCgkJCSJjdXRsaW5lIiwKCQkJImVtYmFua21lbnQiLAoJCQkicGlwZWxpbmUiCgkJXQoJfTsKCXZhciBwb3dlciA9IHsKCQl3aGl0ZWxpc3Q6IFsKCQkJInBsYW50IiwKCQkJInN1YnN0YXRpb24iLAoJCQkiZ2VuZXJhdG9yIiwKCQkJInRyYW5zZm9ybWVyIgoJCV0KCX07Cgl2YXIgcGxhY2UgPSB7Cgl9OwoJdmFyIHNob3AgPSB7Cgl9OwoJdmFyIGFlcm93YXkgPSB7CgkJYmxhY2tsaXN0OiBbCgkJCSJ0YXhpd2F5IgoJCV0KCX07Cgl2YXIgdG91cmlzbSA9IHsKCX07Cgl2YXIgaGlzdG9yaWMgPSB7Cgl9OwoJdmFyIHB1YmxpY190cmFuc3BvcnQgPSB7Cgl9OwoJdmFyIG9mZmljZSA9IHsKCX07Cgl2YXIgbWlsaXRhcnkgPSB7Cgl9OwoJdmFyIHJ1aW5zID0gewoJfTsKCXZhciBjcmFmdCA9IHsKCX07Cgl2YXIgZ29sZiA9IHsKCX07Cgl2YXIgaW5kb29yID0gewoJfTsKCXZhciByZXF1aXJlJCQxID0gewoJCWJ1aWxkaW5nOiBidWlsZGluZywKCQloaWdod2F5OiBoaWdod2F5LAoJCW5hdHVyYWw6IG5hdHVyYWwsCgkJbGFuZHVzZTogbGFuZHVzZSwKCQl3YXRlcndheTogd2F0ZXJ3YXksCgkJYW1lbml0eTogYW1lbml0eSwKCQlsZWlzdXJlOiBsZWlzdXJlLAoJCWJhcnJpZXI6IGJhcnJpZXIsCgkJcmFpbHdheTogcmFpbHdheSwKCQlhcmVhOiBhcmVhLAoJCWJvdW5kYXJ5OiBib3VuZGFyeSwKCQltYW5fbWFkZTogbWFuX21hZGUsCgkJcG93ZXI6IHBvd2VyLAoJCXBsYWNlOiBwbGFjZSwKCQlzaG9wOiBzaG9wLAoJCWFlcm93YXk6IGFlcm93YXksCgkJdG91cmlzbTogdG91cmlzbSwKCQloaXN0b3JpYzogaGlzdG9yaWMsCgkJcHVibGljX3RyYW5zcG9ydDogcHVibGljX3RyYW5zcG9ydCwKCQlvZmZpY2U6IG9mZmljZSwKCQkiYnVpbGRpbmc6cGFydCI6IHsKCX0sCgkJbWlsaXRhcnk6IG1pbGl0YXJ5LAoJCXJ1aW5zOiBydWlucywKCQkiYXJlYTpoaWdod2F5IjogewoJfSwKCQljcmFmdDogY3JhZnQsCgkJZ29sZjogZ29sZiwKCQlpbmRvb3I6IGluZG9vcgoJfTsKCgl2YXIgb3Ntb2JqcyA9ICgoKSA9PiB7CgoJICAgIGNvbnN0IHsgZmlyc3QsIGxhc3QsIGNvb3Jkc1RvS2V5LAoJICAgICAgICBhZGRUb01hcCwgcmVtb3ZlRnJvbU1hcCwgZ2V0Rmlyc3RGcm9tTWFwLAoJICAgICAgICBpc1JpbmcsIHJpbmdEaXJlY3Rpb24sIHB0SW5zaWRlUG9seWdvbiwgc3RyVG9GbG9hdCwKCSAgICAgICAgTGF0ZUJpbmRlciwgV2F5Q29sbGVjdGlvbiB9ID0gdXRpbHMsCgkgICAgICAgIHBvbHlnb25UYWdzID0gcmVxdWlyZSQkMTsKCgkgICAgY2xhc3MgT3NtT2JqZWN0IHsKCSAgICAgICAgY29uc3RydWN0b3IodHlwZSwgaWQsIHJlZkVsZW1zKSB7CgkgICAgICAgICAgICB0aGlzLnR5cGUgPSB0eXBlOwoJICAgICAgICAgICAgdGhpcy5pZCA9IGlkOwoJICAgICAgICAgICAgdGhpcy5yZWZFbGVtcyA9IHJlZkVsZW1zOwoJICAgICAgICAgICAgdGhpcy50YWdzID0ge307CgkgICAgICAgICAgICB0aGlzLnByb3BzID0geyBpZDogdGhpcy5nZXRDb21wb3NpdGVJZCgpIH07CgkgICAgICAgICAgICB0aGlzLnJlZkNvdW50ID0gMDsKCSAgICAgICAgICAgIHRoaXMuaGFzVGFnID0gZmFsc2U7CgkgICAgICAgICAgICBpZiAocmVmRWxlbXMpIHsKCSAgICAgICAgICAgICAgICByZWZFbGVtcy5hZGQodGhpcy5nZXRDb21wb3NpdGVJZCgpLCB0aGlzKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoKCSAgICAgICAgYWRkVGFncyh0YWdzKSB7CgkgICAgICAgICAgICB0aGlzLnRhZ3MgPSBPYmplY3QuYXNzaWduKHRoaXMudGFncywgdGFncyk7CgkgICAgICAgICAgICB0aGlzLmhhc1RhZyA9IHRhZ3MgPyB0cnVlIDogZmFsc2U7CgkgICAgICAgIH0KCgkgICAgICAgIGFkZFRhZyhrLCB2KSB7CgkgICAgICAgICAgICB0aGlzLnRhZ3Nba10gPSB2OwoJICAgICAgICAgICAgdGhpcy5oYXNUYWcgPSBrID8gdHJ1ZSA6IGZhbHNlOwoJICAgICAgICB9CgoJICAgICAgICBhZGRQcm9wKGssIHYpIHsKCSAgICAgICAgICAgIHRoaXMucHJvcHNba10gPSB2OwoJICAgICAgICB9CgoJICAgICAgICBhZGRQcm9wcyhwcm9wcykgewoJICAgICAgICAgICAgdGhpcy5wcm9wcyA9IE9iamVjdC5hc3NpZ24odGhpcy5wcm9wcywgcHJvcHMpOwoJICAgICAgICB9CgoJICAgICAgICBnZXRDb21wb3NpdGVJZCgpIHsKCSAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnR5cGV9LyR7dGhpcy5pZH1gOwoJICAgICAgICB9CgoJICAgICAgICBnZXRQcm9wcygpIHsKCSAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRoaXMucHJvcHMsIHRoaXMudGFncyk7CgkgICAgICAgIH0KCgkgICAgICAgIHRvRmVhdHVyZUFycmF5KCkgewoJICAgICAgICAgICAgcmV0dXJuIFtdOwoJICAgICAgICB9CgkgICAgfQoKCSAgICBjbGFzcyBOb2RlIGV4dGVuZHMgT3NtT2JqZWN0IHsKCSAgICAgICAgY29uc3RydWN0b3IoaWQsIHJlZkVsZW1zKSB7CgkgICAgICAgICAgICBzdXBlcignbm9kZScsIGlkLCByZWZFbGVtcyk7CgkgICAgICAgICAgICB0aGlzLmxhdExuZyA9IG51bGw7CgkgICAgICAgIH0KCgkgICAgICAgIHNldExhdExuZyhsYXRMbmcpIHsKCSAgICAgICAgICAgIHRoaXMubGF0TG5nID0gbGF0TG5nOwoJICAgICAgICB9CgoJICAgICAgICB0b0ZlYXR1cmVBcnJheSgpIHsKCSAgICAgICAgICAgIGlmICh0aGlzLmxhdExuZykgewoJICAgICAgICAgICAgICAgIHJldHVybiBbewoJICAgICAgICAgICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsCgkgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmdldENvbXBvc2l0ZUlkKCksCgkgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMuZ2V0UHJvcHMoKSwKCSAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnk6IHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsCgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogc3RyVG9GbG9hdChbdGhpcy5sYXRMbmcubG9uLCB0aGlzLmxhdExuZy5sYXRdKQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfV07CgkgICAgICAgICAgICB9CgoJICAgICAgICAgICAgcmV0dXJuIFtdOwoJICAgICAgICB9CgoJICAgICAgICBnZXRMYXRMbmcoKSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5sYXRMbmc7CgkgICAgICAgIH0KCSAgICB9CgoJICAgIGNsYXNzIFdheSBleHRlbmRzIE9zbU9iamVjdCB7CgkgICAgICAgIGNvbnN0cnVjdG9yKGlkLCByZWZFbGVtcykgewoJICAgICAgICAgICAgc3VwZXIoJ3dheScsIGlkLCByZWZFbGVtcyk7CgkgICAgICAgICAgICB0aGlzLmxhdExuZ0FycmF5ID0gW107CgkgICAgICAgICAgICB0aGlzLmlzUG9seWdvbiA9IGZhbHNlOwoJICAgICAgICB9CgoJICAgICAgICBhZGRMYXRMbmcobGF0TG5nKSB7CgkgICAgICAgICAgICB0aGlzLmxhdExuZ0FycmF5LnB1c2gobGF0TG5nKTsKCSAgICAgICAgfQoKCSAgICAgICAgc2V0TGF0TG5nQXJyYXkobGF0TG5nQXJyYXkpIHsKCSAgICAgICAgICAgIHRoaXMubGF0TG5nQXJyYXkgPSBsYXRMbmdBcnJheTsKCSAgICAgICAgfQoKCSAgICAgICAgYWRkTm9kZVJlZihyZWYpIHsKCSAgICAgICAgICAgIGxldCBiaW5kZXIgPSBuZXcgTGF0ZUJpbmRlcih0aGlzLmxhdExuZ0FycmF5LCBmdW5jdGlvbiAoaWQpIHsKCSAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IHRoaXMucmVmRWxlbXMuZ2V0KGBub2RlLyR7aWR9YCk7CgkgICAgICAgICAgICAgICAgaWYgKG5vZGUpIHsKCSAgICAgICAgICAgICAgICAgICAgbm9kZS5yZWZDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5nZXRMYXRMbmcoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9LCB0aGlzLCBbcmVmXSk7CgoJICAgICAgICAgICAgdGhpcy5sYXRMbmdBcnJheS5wdXNoKGJpbmRlcik7CgkgICAgICAgICAgICB0aGlzLnJlZkVsZW1zLmFkZEJpbmRlcihiaW5kZXIpOwoJICAgICAgICB9CgoJICAgICAgICBhbmFseXplR2VvbWV0cnlUeXBlKGssIHYpIHsKCSAgICAgICAgICAgIGxldCBvID0gcG9seWdvblRhZ3Nba107CgkgICAgICAgICAgICBpZiAobykgewoJICAgICAgICAgICAgICAgIHRoaXMuaXNQb2x5Z29uID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICBpZiAoby53aGl0ZWxpc3QpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1BvbHlnb24gPSBvLndoaXRlbGlzdC5pbmRleE9mKHYpID49IDAgPyB0cnVlIDogZmFsc2U7CgkgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvLmJsYWNrbGlzdCkgewoJICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUG9seWdvbiA9IG8uYmxhY2tsaXN0LmluZGV4T2YodikgPj0gMCA/IGZhbHNlIDogdHJ1ZTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCgkgICAgICAgIGFkZFRhZ3ModGFncykgewoJICAgICAgICAgICAgc3VwZXIuYWRkVGFncyh0YWdzKTsKCSAgICAgICAgICAgIGZvciAobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyh0YWdzKSkgewoJICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl6ZUdlb21ldHJ5VHlwZShrLCB2KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoKCSAgICAgICAgYWRkVGFnKGssIHYpIHsKCSAgICAgICAgICAgIHN1cGVyLmFkZFRhZyhrLCB2KTsKCSAgICAgICAgICAgIHRoaXMuYW5hbHl6ZUdlb21ldHJ5VHlwZShrLCB2KTsKCSAgICAgICAgfQoKCSAgICAgICAgdG9Db29yZHNBcnJheSgpIHsKCSAgICAgICAgICAgIHJldHVybiB0aGlzLmxhdExuZ0FycmF5Lm1hcChsYXRMbmcgPT4gW2xhdExuZy5sb24sIGxhdExuZy5sYXRdKTsKCSAgICAgICAgfQoKCSAgICAgICAgdG9GZWF0dXJlQXJyYXkoKSB7CgkgICAgICAgICAgICBsZXQgY29vcmRzQXJyYXkgPSB0aGlzLnRvQ29vcmRzQXJyYXkoKTsKCSAgICAgICAgICAgIGlmIChjb29yZHNBcnJheS5sZW5ndGggPiAxKSB7CgkgICAgICAgICAgICAgICAgY29vcmRzQXJyYXkgPSBzdHJUb0Zsb2F0KGNvb3Jkc0FycmF5KTsKCSAgICAgICAgICAgICAgICBsZXQgZmVhdHVyZSA9IHsKCSAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLAoJICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5nZXRDb21wb3NpdGVJZCgpLAoJICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLmdldFByb3BzKCksCgkgICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5OiB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsCgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogY29vcmRzQXJyYXkKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH07CgoJICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUG9seWdvbiAmJiBpc1JpbmcoY29vcmRzQXJyYXkpKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChyaW5nRGlyZWN0aW9uKGNvb3Jkc0FycmF5KSAhPT0gJ2NvdW50ZXJjbG9ja3dpc2UnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZHNBcnJheS5yZXZlcnNlKCk7CgkgICAgICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkgPSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsCgkgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogW2Nvb3Jkc0FycmF5XQoJICAgICAgICAgICAgICAgICAgICB9OwoKCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtmZWF0dXJlXTsKCSAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIHJldHVybiBbZmVhdHVyZV07CgkgICAgICAgICAgICB9CgoJICAgICAgICAgICAgcmV0dXJuIFtdOwoJICAgICAgICB9CgkgICAgfQoKCSAgICBjbGFzcyBSZWxhdGlvbiBleHRlbmRzIE9zbU9iamVjdCB7CgkgICAgICAgIGNvbnN0cnVjdG9yKGlkLCByZWZFbGVtcykgewoJICAgICAgICAgICAgc3VwZXIoJ3JlbGF0aW9uJywgaWQsIHJlZkVsZW1zKTsKCSAgICAgICAgICAgIHRoaXMucmVsYXRpb25zID0gW107CgkgICAgICAgICAgICB0aGlzLm5vZGVzID0gW107CgkgICAgICAgICAgICB0aGlzLmJvdW5kcyA9IG51bGw7CgkgICAgICAgIH0KCgkgICAgICAgIHNldEJvdW5kcyhib3VuZHMpIHsKCSAgICAgICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzOwoJICAgICAgICB9CgoJICAgICAgICBhZGRNZW1iZXIobWVtYmVyKSB7CgkgICAgICAgICAgICBzd2l0Y2ggKG1lbWJlci50eXBlKSB7CgkgICAgICAgICAgICAgICAgLy8gc3VwZXIgcmVsYXRpb24sIG5lZWQgdG8gZG8gY29tYmluYXRpb24KCSAgICAgICAgICAgICAgICBjYXNlICdyZWxhdGlvbic6CgkgICAgICAgICAgICAgICAgICAgIGxldCBiaW5kZXIgPSBuZXcgTGF0ZUJpbmRlcih0aGlzLnJlbGF0aW9ucywgZnVuY3Rpb24gKGlkKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVsYXRpb24gPSB0aGlzLnJlZkVsZW1zLmdldChgcmVsYXRpb24vJHtpZH1gKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxhdGlvbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLnJlZkNvdW50Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0aW9uOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLCBbbWVtYmVyLnJlZl0pOwoJICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aW9ucy5wdXNoKGJpbmRlcik7CgkgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmRWxlbXMuYWRkQmluZGVyKGJpbmRlcik7CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKCSAgICAgICAgICAgICAgICBjYXNlICd3YXknOgoJICAgICAgICAgICAgICAgICAgICBpZiAoIW1lbWJlci5yb2xlKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIucm9sZSA9ICcnOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGxldCB3YXlzID0gdGhpc1ttZW1iZXIucm9sZV07CgkgICAgICAgICAgICAgICAgICAgIGlmICghd2F5cykgewoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5cyA9IHRoaXNbbWVtYmVyLnJvbGVdID0gW107CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci5nZW9tZXRyeSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdheSA9IG5ldyBXYXkobWVtYmVyLnJlZiwgdGhpcy5yZWZFbGVtcyk7CgkgICAgICAgICAgICAgICAgICAgICAgICB3YXkuc2V0TGF0TG5nQXJyYXkobWVtYmVyLmdlb21ldHJ5KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHdheS5yZWZDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5cy5wdXNoKHdheSk7CgkgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVtYmVyLm5vZGVzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2F5ID0gbmV3IFdheShtZW1iZXIucmVmLCB0aGlzLnJlZkVsZW1zKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG5pZCBvZiBtZW1iZXIubm9kZXMpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXkuYWRkTm9kZVJlZihuaWQpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5LnJlZkNvdW50Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICB3YXlzLnB1c2god2F5KTsKCSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiaW5kZXIgPSBuZXcgTGF0ZUJpbmRlcih3YXlzLCBmdW5jdGlvbiAoaWQpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2F5ID0gdGhpcy5yZWZFbGVtcy5nZXQoYHdheS8ke2lkfWApOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YXkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F5LnJlZkNvdW50Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3YXk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcywgW21lbWJlci5yZWZdKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHdheXMucHVzaChiaW5kZXIpOwoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZFbGVtcy5hZGRCaW5kZXIoYmluZGVyKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICBicmVhazsKCgkgICAgICAgICAgICAgICAgY2FzZSAnbm9kZSc6CgkgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0gbnVsbDsKCSAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci5sYXQgJiYgbWVtYmVyLmxvbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG5ldyBOb2RlKG1lbWJlci5yZWYsIHRoaXMucmVmRWxlbXMpOwoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRMYXRMbmcoeyBsb246IG1lbWJlci5sb24sIGxhdDogbWVtYmVyLmxhdCB9KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1iZXIudGFncykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuYWRkVGFncyhtZW1iZXIudGFncyk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMobWVtYmVyKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbJ2lkJywgJ3R5cGUnLCAnbGF0JywgJ2xvbiddLmluZGV4T2YoaykgPCAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuYWRkUHJvcChrLCB2KTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5yZWZDb3VudCsrOwoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKG5vZGUpOwoJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJpbmRlciA9IG5ldyBMYXRlQmluZGVyKHRoaXMubm9kZXMsIGZ1bmN0aW9uIChpZCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0gdGhpcy5yZWZFbGVtcy5nZXQoYG5vZGUvJHtpZH1gKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnJlZkNvdW50Kys7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMsIFttZW1iZXIucmVmXSk7CgkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGVzLnB1c2goYmluZGVyKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmRWxlbXMuYWRkQmluZGVyKGJpbmRlcik7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgkgICAgICAgICAgICB9CgkgICAgICAgIH0KCgkgICAgICAgIHRvRmVhdHVyZUFycmF5KCkgewoJICAgICAgICAgICAgY29uc3QgY29uc3RydWN0U3RyaW5nR2VvbWV0cnkgPSAod3MpID0+IHsKCSAgICAgICAgICAgICAgICBsZXQgc3RyaW5ncyA9IHdzID8gd3MudG9TdHJpbmdzKCkgOiBbXTsKCSAgICAgICAgICAgICAgICBpZiAoc3RyaW5ncy5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmdzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJywKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBzdHJpbmdzWzBdCgkgICAgICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTXVsdGlMaW5lU3RyaW5nJywKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBzdHJpbmdzCgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgICAgICB9OwoKCSAgICAgICAgICAgIGNvbnN0IGNvbnN0cnVjdFBvbHlnb25HZW9tZXRyeSA9IChvd3MsIGl3cykgPT4gewoJICAgICAgICAgICAgICAgIGxldCBvdXRlclJpbmdzID0gb3dzID8gb3dzLnRvUmluZ3MoJ2NvdW50ZXJjbG9ja3dpc2UnKSA6IFtdLAoJICAgICAgICAgICAgICAgICAgICBpbm5lclJpbmdzID0gaXdzID8gaXdzLnRvUmluZ3MoJ2Nsb2Nrd2lzZScpIDogW107CgoJICAgICAgICAgICAgICAgIGlmIChvdXRlclJpbmdzLmxlbmd0aCA+IDApIHsKCSAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXBvc2l0UG9seW9ucyA9IFtdOwoKCSAgICAgICAgICAgICAgICAgICAgbGV0IHJpbmcgPSBudWxsOwoJICAgICAgICAgICAgICAgICAgICBmb3IgKHJpbmcgb2Ygb3V0ZXJSaW5ncykKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0UG9seW9ucy5wdXNoKFtyaW5nXSk7CgoJICAgICAgICAgICAgICAgICAgICAvLyBsaW5rIGlubmVyIHBvbHlnb25zIHRvIG91dGVyIGNvbnRhaW5lcnMKCSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHJpbmcgPSBpbm5lclJpbmdzLnNoaWZ0KCkpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGlkeCBpbiBvdXRlclJpbmdzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB0SW5zaWRlUG9seWdvbihmaXJzdChyaW5nKSwgb3V0ZXJSaW5nc1tpZHhdKSkgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb3NpdFBvbHlvbnNbaWR4XS5wdXNoKHJpbmcpOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCB0aGUgUG9seWdvbi9NdWx0aVBvbHlnb24gZ2VvbWV0cnkKCSAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvc2l0UG9seW9ucy5sZW5ndGggPT09IDEpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BvbHlnb24nLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBjb21wb3NpdFBvbHlvbnNbMF0KCSAgICAgICAgICAgICAgICAgICAgICAgIH07CgkgICAgICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CgkgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnTXVsdGlQb2x5Z29uJywKCSAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBjb21wb3NpdFBvbHlvbnMKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgICAgICB9OwoKCSAgICAgICAgICAgIGxldCBwb2x5Z29uRmVhdHVyZXMgPSBbXSwgc3RyaW5nRmVhdHVyZXMgPSBbXSwgcG9pbnRGZWF0dXJlcyA9IFtdOwoJICAgICAgICAgICAgY29uc3Qgd2F5c0ZpZWxkTmFtZXMgPSBbJ291dGVyJywgJ2lubmVyJywgJyddOwoJICAgICAgICAgICAgLy8gbmVlZCB0byBkbyBjb21iaW5hdGlvbiB3aGVuIHRoZXJlJ3JlIG5lc3RlZCByZWxhdGlvbnMKCSAgICAgICAgICAgIGZvciAobGV0IHJlbGF0aW9uIG9mIHRoaXMucmVsYXRpb25zKSB7CgkgICAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uKSB7CgkgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGZpZWxkTmFtZSBvZiB3YXlzRmllbGROYW1lcykgewoJICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdheXMgPSByZWxhdGlvbltmaWVsZE5hbWVdOwoJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdheXMpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGhpc1dheXMgPSB0aGlzW2ZpZWxkTmFtZV07CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNXYXlzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLnNwbGljZS5hcHBseSh0aGlzV2F5cywgW3RoaXNXYXlzLmxlbmd0aCwgMF0uY29uY2F0KHdheXMpKTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2ZpZWxkTmFtZV0gPSB3YXlzOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCgkgICAgICAgICAgICBmb3IgKGxldCBmaWVsZE5hbWUgb2Ygd2F5c0ZpZWxkTmFtZXMpIHsKCSAgICAgICAgICAgICAgICBsZXQgd2F5cyA9IHRoaXNbZmllbGROYW1lXTsKCSAgICAgICAgICAgICAgICBpZiAod2F5cykgewoJICAgICAgICAgICAgICAgICAgICB0aGlzW2ZpZWxkTmFtZV0gPSBuZXcgV2F5Q29sbGVjdGlvbigpOwoJICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB3YXkgb2Ygd2F5cykgewoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tmaWVsZE5hbWVdLmFkZFdheSh3YXkpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoKCSAgICAgICAgICAgIGxldCBnZW9tZXRyeSA9IG51bGw7CgoJICAgICAgICAgICAgbGV0IGZlYXR1cmUgPSB7CgkgICAgICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLAoJICAgICAgICAgICAgICAgIGlkOiB0aGlzLmdldENvbXBvc2l0ZUlkKCksCgkgICAgICAgICAgICAgICAgYmJveDogdGhpcy5ib3VuZHMsCgkgICAgICAgICAgICAgICAgcHJvcGVydGllczogdGhpcy5nZXRQcm9wcygpCgkgICAgICAgICAgICB9OwoKCSAgICAgICAgICAgIGlmICghdGhpcy5ib3VuZHMpIHsKCSAgICAgICAgICAgICAgICBkZWxldGUgZmVhdHVyZS5iYm94OwoJICAgICAgICAgICAgfQoKCSAgICAgICAgICAgIGlmICh0aGlzLm91dGVyKSB7CgkgICAgICAgICAgICAgICAgZ2VvbWV0cnkgPSBjb25zdHJ1Y3RQb2x5Z29uR2VvbWV0cnkodGhpcy5vdXRlciwgdGhpcy5pbm5lcik7CgkgICAgICAgICAgICAgICAgaWYgKGdlb21ldHJ5KSB7CgkgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkgPSBnZW9tZXRyeTsKCSAgICAgICAgICAgICAgICAgICAgcG9seWdvbkZlYXR1cmVzLnB1c2goZmVhdHVyZSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSBpZiAodGhpc1snJ10pIHsKCSAgICAgICAgICAgICAgICBnZW9tZXRyeSA9IGNvbnN0cnVjdFN0cmluZ0dlb21ldHJ5KHRoaXNbJyddKTsKCSAgICAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkpIHsKCSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5nZW9tZXRyeSA9IGdlb21ldHJ5OwoJICAgICAgICAgICAgICAgICAgICBzdHJpbmdGZWF0dXJlcy5wdXNoKGZlYXR1cmUpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCgkgICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIHRoaXMubm9kZXMpIHsKCSAgICAgICAgICAgICAgICBwb2ludEZlYXR1cmVzID0gcG9pbnRGZWF0dXJlcy5jb25jYXQobm9kZS50b0ZlYXR1cmVBcnJheSgpKTsKCSAgICAgICAgICAgIH0KCgkgICAgICAgICAgICByZXR1cm4gcG9seWdvbkZlYXR1cmVzLmNvbmNhdChzdHJpbmdGZWF0dXJlcykuY29uY2F0KHBvaW50RmVhdHVyZXMpOwoJICAgICAgICB9CgkgICAgfQoKCSAgICByZXR1cm4geyBOb2RlLCBXYXksIFJlbGF0aW9uIH07Cgl9KSgpOwoKCXZhciB4bWxwYXJzZXIgPSAoKCkgPT4gewoKCSAgICBmdW5jdGlvbiBjb25kaXRpb25lZChldnQpIHsKCSAgICAgICAgcmV0dXJuIGV2dC5tYXRjaCgvXiguKz8pXFsoLis/KVxdPiQvZykgIT0gbnVsbDsKCSAgICB9CgoJICAgIGZ1bmN0aW9uIHBhcnNlRXZlbnQoZXZ0KSB7CgkgICAgICAgIGxldCBtYXRjaCA9IC9eKC4rPylcWyguKz8pXF0+JC9nLmV4ZWMoZXZ0KTsKCSAgICAgICAgaWYgKG1hdGNoKSB7CgkgICAgICAgICAgICByZXR1cm4geyBldnQ6IG1hdGNoWzFdICsgJz4nLCBleHA6IG1hdGNoWzJdIH07CgkgICAgICAgIH0KCSAgICAgICAgcmV0dXJuIHsgZXZ0OiBldnQgfTsKCSAgICB9CgoJICAgIGZ1bmN0aW9uIGdlbkNvbmRpdGlvbkZ1bmMoY29uZCkgewoJICAgICAgICBsZXQgYm9keSA9ICdyZXR1cm4gJyArIGNvbmQucmVwbGFjZSgvKFwkLis/KSg/PVs9IS5dKS9nLCAnbm9kZS4kJicpICsgJzsnOwoJICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKCdub2RlJywgYm9keSk7CgkgICAgfQoKCSAgICByZXR1cm4gY2xhc3MgewoJICAgICAgICBjb25zdHJ1Y3RvcihvcHRzKSB7CgkgICAgICAgICAgICBpZiAob3B0cykgewoJICAgICAgICAgICAgICAgIHRoaXMucXVlcnlQYXJlbnQgPSBvcHRzLnF1ZXJ5UGFyZW50ID8gdHJ1ZSA6IGZhbHNlOwoJICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NpdmUgPSBvcHRzLnByb2dyZXNzaXZlOwoJICAgICAgICAgICAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyZW50KSB7CgkgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50TWFwID0gbmV3IFdlYWtNYXAoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLmV2dExpc3RlbmVycyA9IHt9OwoJICAgICAgICB9CgoJICAgICAgICBwYXJzZSh4bWwsIHBhcmVudCwgZGlyKSB7CgkgICAgICAgICAgICBkaXIgPSBkaXIgPyBkaXIgKyAnLicgOiAnJzsKCSAgICAgICAgICAgIGxldCBub2RlUmVnRXggPSAvPChbXiA+XC9dKykoLio/KT4vbWcsIG5vZGVNYXRjaCA9IG51bGwsIG5vZGVzID0gW107CgkgICAgICAgICAgICB3aGlsZSAobm9kZU1hdGNoID0gbm9kZVJlZ0V4LmV4ZWMoeG1sKSkgewoJICAgICAgICAgICAgICAgIGxldCB0YWcgPSBub2RlTWF0Y2hbMV0sIG5vZGUgPSB7ICR0YWc6IHRhZyB9LCBmdWxsVGFnID0gZGlyICsgdGFnOwoKCSAgICAgICAgICAgICAgICBsZXQgYXR0clRleHQgPSBub2RlTWF0Y2hbMl0udHJpbSgpLCBjbG9zZWQgPSBmYWxzZTsKCSAgICAgICAgICAgICAgICBpZiAoYXR0clRleHQuZW5kc1dpdGgoJy8nKSB8fCB0YWcuc3RhcnRzV2l0aCgnPycpIHx8IHRhZy5zdGFydHNXaXRoKCchJykpIHsKCSAgICAgICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIGxldCBhdHRSZWdFeDEgPSAvKFteIF0rPyk9IiguKz8pIi9nLCBhdHRSZWdFeDIgPSAvKFteIF0rPyk9JyguKz8pJy9nOwoJICAgICAgICAgICAgICAgIGxldCBhdHRNYXRjaCA9IG51bGwsIGhhc0F0dHJzID0gZmFsc2U7CgkgICAgICAgICAgICAgICAgd2hpbGUgKGF0dE1hdGNoID0gYXR0UmVnRXgxLmV4ZWMoYXR0clRleHQpKSB7CgkgICAgICAgICAgICAgICAgICAgIGhhc0F0dHJzID0gdHJ1ZTsKCSAgICAgICAgICAgICAgICAgICAgbm9kZVthdHRNYXRjaFsxXV0gPSBhdHRNYXRjaFsyXTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKCFoYXNBdHRycykKCSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGF0dE1hdGNoID0gYXR0UmVnRXgyLmV4ZWMoYXR0clRleHQpKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBoYXNBdHRycyA9IHRydWU7CgkgICAgICAgICAgICAgICAgICAgICAgICBub2RlW2F0dE1hdGNoWzFdXSA9IGF0dE1hdGNoWzJdOwoJICAgICAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIGlmICghaGFzQXR0cnMgJiYgYXR0clRleHQgIT09ICcnKSB7CgkgICAgICAgICAgICAgICAgICAgIG5vZGUudGV4dCA9IGF0dHJUZXh0OwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9ncmVzc2l2ZSkgewoJICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoYDwke2Z1bGxUYWd9PmAsIG5vZGUsIHBhcmVudCk7CgkgICAgICAgICAgICAgICAgfQoKCSAgICAgICAgICAgICAgICBpZiAoIWNsb3NlZCkgewoJICAgICAgICAgICAgICAgICAgICBsZXQgaW5uZXJSZWdFeCA9IG5ldyBSZWdFeHAoYChbXl0rPyk8XC8ke3RhZ30+YCwgJ2cnKTsKCSAgICAgICAgICAgICAgICAgICAgaW5uZXJSZWdFeC5sYXN0SW5kZXggPSBub2RlUmVnRXgubGFzdEluZGV4OwoJICAgICAgICAgICAgICAgICAgICBsZXQgaW5uZXJNYXRjaCA9IGlubmVyUmVnRXguZXhlYyh4bWwpOwoJICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXJNYXRjaCAmJiBpbm5lck1hdGNoWzFdKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBub2RlUmVnRXgubGFzdEluZGV4ID0gaW5uZXJSZWdFeC5sYXN0SW5kZXg7CgkgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5uZXJOb2RlcyA9IHRoaXMucGFyc2UoaW5uZXJNYXRjaFsxXSwgbm9kZSwgZnVsbFRhZyk7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXJOb2Rlcy5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS4kaW5uZXJOb2RlcyA9IGlubmVyTm9kZXM7CgkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuJGlubmVyVGV4dCA9IGlubmVyTWF0Y2hbMV07CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJlbnQgJiYgcGFyZW50KSB7CgkgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50TWFwLnNldChub2RlLCBwYXJlbnQpOwoJICAgICAgICAgICAgICAgIH0KCgkgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZ3Jlc3NpdmUpIHsKCSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KGA8LyR7ZnVsbFRhZ30+YCwgbm9kZSwgcGFyZW50KTsKCSAgICAgICAgICAgICAgICB9CgoJICAgICAgICAgICAgICAgIG5vZGVzLnB1c2gobm9kZSk7CgkgICAgICAgICAgICB9CgoJICAgICAgICAgICAgcmV0dXJuIG5vZGVzOwoJICAgICAgICB9CgoJICAgICAgICBnZXRQYXJlbnQobm9kZSkgewoJICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlQYXJlbnQpIHsKCSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnRNYXAuZ2V0KG5vZGUpOwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmV0dXJuIG51bGw7CgkgICAgICAgIH0KCgkgICAgICAgICNhZGRMaXN0ZW5lcihldnQsIGZ1bmMpIHsKCSAgICAgICAgICAgIGxldCBmdW5jcyA9IHRoaXMuZXZ0TGlzdGVuZXJzW2V2dF07CgkgICAgICAgICAgICBpZiAoZnVuY3MpIHsKCSAgICAgICAgICAgICAgICBmdW5jcy5wdXNoKGZ1bmMpOwoJICAgICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAgICB0aGlzLmV2dExpc3RlbmVyc1tldnRdID0gW2Z1bmNdOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgoJICAgICAgICAvLyBzdXBwb3J0IGphdmFzY3JpcHQgY29uZGl0aW9uIGZvciB0aGUgbGFzdCB0YWcKCSAgICAgICAgYWRkTGlzdGVuZXIoZXZ0LCBmdW5jKSB7CgkgICAgICAgICAgICBpZiAoY29uZGl0aW9uZWQoZXZ0KSkgewoJICAgICAgICAgICAgICAgIC8vIGZ1bmMucHJvdG90eXBlID0gZXZ0OwoJICAgICAgICAgICAgICAgIGV2dCA9IHBhcnNlRXZlbnQoZXZ0KTsKCSAgICAgICAgICAgICAgICBmdW5jLmNvbmRpdGlvbiA9IGdlbkNvbmRpdGlvbkZ1bmMoZXZ0LmV4cCk7CgkgICAgICAgICAgICAgICAgZXZ0ID0gZXZ0LmV2dDsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHRoaXMuI2FkZExpc3RlbmVyKGV2dCwgZnVuYyk7CgkgICAgICAgIH0KCgkgICAgICAgICNyZW1vdmVMaXN0ZW5lcihldnQsIGZ1bmMpIHsKCSAgICAgICAgICAgIGxldCBmdW5jcyA9IHRoaXMuZXZ0TGlzdGVuZXJzW2V2dF07CgkgICAgICAgICAgICBsZXQgaWR4ID0gbnVsbDsKCSAgICAgICAgICAgIGlmIChmdW5jcyAmJiAoaWR4ID0gZnVuY3MuaW5kZXhPZihmdW5jKSkgPj0gMCkgewoJICAgICAgICAgICAgICAgIGZ1bmNzLnNwbGljZShpZHgsIDEpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgoJICAgICAgICByZW1vdmVMaXN0ZW5lcihldnQsIGZ1bmMpIHsKCSAgICAgICAgICAgIGlmIChjb25kaXRpb25lZChldnQpKSB7CgkgICAgICAgICAgICAgICAgZXZ0ID0gcGFyc2VFdmVudChldnQpOwoJICAgICAgICAgICAgICAgIGV2dCA9IGV2dC5ldnQ7CgkgICAgICAgICAgICB9CgkgICAgICAgICAgICB0aGlzLiNyZW1vdmVMaXN0ZW5lcihldnQsIGZ1bmMpOwoJICAgICAgICB9CgoJICAgICAgICBlbWl0KGV2dCwgLi4uYXJncykgewoJICAgICAgICAgICAgbGV0IGZ1bmNzID0gdGhpcy5ldnRMaXN0ZW5lcnNbZXZ0XTsKCSAgICAgICAgICAgIGlmIChmdW5jcykgewoJICAgICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmMuY29uZGl0aW9uKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVuYy5jb25kaXRpb24uYXBwbHkobnVsbCwgYXJncykgPT09IHRydWUpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLmFwcGx5KG51bGwsIGFyZ3MpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy5hcHBseShudWxsLCBhcmdzKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoKCSAgICAgICAgb24oZXZ0LCBmdW5jKSB7CgkgICAgICAgICAgICB0aGlzLmFkZExpc3RlbmVyKGV2dCwgZnVuYyk7CgkgICAgICAgIH0KCgkgICAgICAgIG9mZihldnQsIGZ1bmMpIHsKCSAgICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoZXZ0LCBmdW5jKTsKCSAgICAgICAgfQoJICAgIH07Cgl9KSgpOwoKCWNvbnN0IHsgTm9kZSwgV2F5LCBSZWxhdGlvbiB9ID0gb3Ntb2JqcywKCSAgICB7IHB1cmdlUHJvcHMsIFJlZkVsZW1lbnRzIH0gPSB1dGlscywKCSAgICBYbWxQYXJzZXIgPSB4bWxwYXJzZXI7CgoJdmFyIGxpYiA9IChvc20sIG9wdHMpID0+IHsKCSAgICBsZXQgY29tcGxldGVGZWF0dXJlID0gZmFsc2UsIHJlbmRlclRhZ2dlZCA9IGZhbHNlLCBleGNsdWRlV2F5ID0gdHJ1ZTsKCgkgICAgY29uc3QgcGFyc2VPcHRzID0gb3B0cyA9PiB7CgkgICAgICAgIGlmIChvcHRzKSB7CgkgICAgICAgICAgICBjb21wbGV0ZUZlYXR1cmUgPSBvcHRzLmNvbXBsZXRlRmVhdHVyZSB8fCBvcHRzLmFsbEZlYXR1cmVzID8gdHJ1ZSA6IGZhbHNlOwoJICAgICAgICAgICAgcmVuZGVyVGFnZ2VkID0gb3B0cy5yZW5kZXJUYWdnZWQgPyB0cnVlIDogZmFsc2U7CgkgICAgICAgICAgICBsZXQgd2F5T3B0ID0gb3B0cy5zdXBwcmVzc1dheSB8fCBvcHRzLmV4Y2x1ZGVXYXk7CgkgICAgICAgICAgICBpZiAod2F5T3B0ICE9PSB1bmRlZmluZWQgJiYgIXdheU9wdCkgewoJICAgICAgICAgICAgICAgIGV4Y2x1ZGVXYXkgPSBmYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgoJICAgIHBhcnNlT3B0cyhvcHRzKTsKCgkgICAgY29uc3QgZGV0ZWN0Rm9ybWF0ID0gb3NtID0+IHsKCSAgICAgICAgaWYgKG9zbS5lbGVtZW50cykgewoJICAgICAgICAgICAgcmV0dXJuICdqc29uJzsKCSAgICAgICAgfQoJICAgICAgICBpZiAob3NtLmluZGV4T2YoJzxvc20nKSA+PSAwKSB7CgkgICAgICAgICAgICByZXR1cm4gJ3htbCc7CgkgICAgICAgIH0KCSAgICAgICAgaWYgKG9zbS50cmltKCkuc3RhcnRzV2l0aCgneycpKSB7CgkgICAgICAgICAgICByZXR1cm4gJ2pzb24tcmF3JzsKCSAgICAgICAgfQoJICAgICAgICByZXR1cm4gJ2ludmFsaWQnOwoJICAgIH07CgoJICAgIGxldCBmb3JtYXQgPSBkZXRlY3RGb3JtYXQob3NtKTsKCgkgICAgbGV0IHJlZkVsZW1lbnRzID0gbmV3IFJlZkVsZW1lbnRzKCksIGZlYXR1cmVBcnJheSA9IFtdOwoKCSAgICBjb25zdCBhbmFseXplRmVhdHVyZXNGcm9tSnNvbiA9IG9zbSA9PiB7CgkgICAgICAgIGZvciAobGV0IGVsZW0gb2Ygb3NtLmVsZW1lbnRzKSB7CgkgICAgICAgICAgICBzd2l0Y2ggKGVsZW0udHlwZSkgewoJICAgICAgICAgICAgICAgIGNhc2UgJ25vZGUnOgoJICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IG5ldyBOb2RlKGVsZW0uaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0udGFncykgewoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRUYWdzKGVsZW0udGFncyk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRQcm9wcyhwdXJnZVByb3BzKGVsZW0sIFsnaWQnLCAndHlwZScsICd0YWdzJywgJ2xhdCcsICdsb24nXSkpOwoJICAgICAgICAgICAgICAgICAgICBub2RlLnNldExhdExuZyhlbGVtKTsKCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgoJICAgICAgICAgICAgICAgIGNhc2UgJ3dheSc6CgkgICAgICAgICAgICAgICAgICAgIGxldCB3YXkgPSBuZXcgV2F5KGVsZW0uaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0udGFncykgewoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5LmFkZFRhZ3MoZWxlbS50YWdzKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB3YXkuYWRkUHJvcHMocHVyZ2VQcm9wcyhlbGVtLCBbJ2lkJywgJ3R5cGUnLCAndGFncycsICdub2RlcycsICdnZW9tZXRyeSddKSk7CgkgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLm5vZGVzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBuIG9mIGVsZW0ubm9kZXMpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXkuYWRkTm9kZVJlZihuKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtLmdlb21ldHJ5KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICB3YXkuc2V0TGF0TG5nQXJyYXkoZWxlbS5nZW9tZXRyeSk7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgoJICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aW9uJzoKCSAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGF0aW9uID0gbmV3IFJlbGF0aW9uKGVsZW0uaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0uYm91bmRzKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5zZXRCb3VuZHMoW3BhcnNlRmxvYXQoZWxlbS5ib3VuZHMubWlubG9uKSwgcGFyc2VGbG9hdChlbGVtLmJvdW5kcy5taW5sYXQpLCBwYXJzZUZsb2F0KGVsZW0uYm91bmRzLm1heGxvbiksIHBhcnNlRmxvYXQoZWxlbS5ib3VuZHMubWF4bGF0KV0pOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLnRhZ3MpIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmFkZFRhZ3MoZWxlbS50YWdzKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICByZWxhdGlvbi5hZGRQcm9wcyhwdXJnZVByb3BzKGVsZW0sIFsnaWQnLCAndHlwZScsICd0YWdzJywgJ2JvdW5kcycsICdtZW1iZXJzJ10pKTsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0ubWVtYmVycykgewoJICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbWVtYmVyIG9mIGVsZW0ubWVtYmVycykgewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uLmFkZE1lbWJlcihtZW1iZXIpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfTsKCgkgICAgY29uc3QgYW5hbHl6ZUZlYXR1cmVzRnJvbVhtbCA9IG9zbSA9PiB7CgkgICAgICAgIGNvbnN0IHhtbFBhcnNlciA9IG5ldyBYbWxQYXJzZXIoeyBwcm9ncmVzc2l2ZTogdHJ1ZSB9KTsKCgkgICAgICAgIHhtbFBhcnNlci5vbignPC9vc20ubm9kZT4nLCBub2RlID0+IHsKCSAgICAgICAgICAgIGxldCBuZCA9IG5ldyBOb2RlKG5vZGUuaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgIGZvciAobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhub2RlKSkKCSAgICAgICAgICAgICAgICBpZiAoIWsuc3RhcnRzV2l0aCgnJCcpICYmIFsnaWQnLCAnbG9uJywgJ2xhdCddLmluZGV4T2YoaykgPCAwKSB7CgkgICAgICAgICAgICAgICAgICAgIG5kLmFkZFByb3Aoaywgdik7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgbmQuc2V0TGF0TG5nKG5vZGUpOwoJICAgICAgICAgICAgaWYgKG5vZGUuJGlubmVyTm9kZXMpIHsKCSAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmQgb2Ygbm9kZS4kaW5uZXJOb2RlcykgewoJICAgICAgICAgICAgICAgICAgICBpZiAoaW5kLiR0YWcgPT09ICd0YWcnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBuZC5hZGRUYWcoaW5kLmssIGluZC52KTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfSk7CgoJICAgICAgICB4bWxQYXJzZXIub24oJzwvb3NtLndheT4nLCBub2RlID0+IHsKCSAgICAgICAgICAgIGxldCB3YXkgPSBuZXcgV2F5KG5vZGUuaWQsIHJlZkVsZW1lbnRzKTsKCSAgICAgICAgICAgIGZvciAobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhub2RlKSkgewoJICAgICAgICAgICAgICAgIGlmICghay5zdGFydHNXaXRoKCckJykgJiYgWydpZCddLmluZGV4T2YoaykgPCAwKSB7CgkgICAgICAgICAgICAgICAgICAgIHdheS5hZGRQcm9wKGssIHYpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChub2RlLiRpbm5lck5vZGVzKSB7CgkgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kIG9mIG5vZGUuJGlubmVyTm9kZXMpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGluZC4kdGFnID09PSAnbmQnKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kLmxvbiAmJiBpbmQubGF0KSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F5LmFkZExhdExuZyhpbmQpOwoJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbmQucmVmKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F5LmFkZE5vZGVSZWYoaW5kLnJlZik7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kLiR0YWcgPT09ICd0YWcnKQoJICAgICAgICAgICAgICAgICAgICAgICAgd2F5LmFkZFRhZyhpbmQuaywgaW5kLnYpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgfSk7CgoJICAgICAgICB4bWxQYXJzZXIub24oJzxvc20ucmVsYXRpb24+Jywgbm9kZSA9PiB7CgkgICAgICAgICAgICBuZXcgUmVsYXRpb24obm9kZS5pZCwgcmVmRWxlbWVudHMpOwoJICAgICAgICB9KTsKCgkgICAgICAgIHhtbFBhcnNlci5vbignPC9vc20ucmVsYXRpb24ubWVtYmVyPicsIChub2RlLCBwYXJlbnQpID0+IHsKCSAgICAgICAgICAgIGxldCByZWxhdGlvbiA9IHJlZkVsZW1lbnRzLmdldChgcmVsYXRpb24vJHtwYXJlbnQuaWR9YCk7CgkgICAgICAgICAgICBsZXQgbWVtYmVyID0gewoJICAgICAgICAgICAgICAgIHR5cGU6IG5vZGUudHlwZSwKCSAgICAgICAgICAgICAgICByb2xlOiBub2RlLnJvbGUgPyBub2RlLnJvbGUgOiAnJywKCSAgICAgICAgICAgICAgICByZWY6IG5vZGUucmVmCgkgICAgICAgICAgICB9OwoJICAgICAgICAgICAgaWYgKG5vZGUubGF0ICYmIG5vZGUubG9uKSB7CgkgICAgICAgICAgICAgICAgbWVtYmVyLmxhdCA9IG5vZGUubGF0LCBtZW1iZXIubG9uID0gbm9kZS5sb24sIG1lbWJlci50YWdzID0ge307CgkgICAgICAgICAgICAgICAgZm9yIChsZXQgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKG5vZGUpKSB7CgkgICAgICAgICAgICAgICAgICAgIGlmICghay5zdGFydHNXaXRoKCckJykgJiYgWyd0eXBlJywgJ2xhdCcsICdsb24nXS5pbmRleE9mKGspIDwgMCkgewoJICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyW2tdID0gdjsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGlmIChub2RlLiRpbm5lck5vZGVzKSB7CgkgICAgICAgICAgICAgICAgbGV0IGdlb21ldHJ5ID0gW107CgkgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gW107CgkgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kIG9mIG5vZGUuJGlubmVyTm9kZXMpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGluZC5sYXQgJiYgaW5kLmxvbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnkucHVzaChpbmQpOwoJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChpbmQucmVmKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBpZiAoZ2VvbWV0cnkubGVuZ3RoID4gMCkgewoJICAgICAgICAgICAgICAgICAgICBtZW1iZXIuZ2VvbWV0cnkgPSBnZW9tZXRyeTsKCSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVzLmxlbmd0aCA+IDApIHsKCSAgICAgICAgICAgICAgICAgICAgbWVtYmVyLm5vZGVzID0gbm9kZXM7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgcmVsYXRpb24uYWRkTWVtYmVyKG1lbWJlcik7CgkgICAgICAgIH0pOwoKCSAgICAgICAgeG1sUGFyc2VyLm9uKCc8L29zbS5yZWxhdGlvbi5ib3VuZHM+JywgKG5vZGUsIHBhcmVudCkgPT4gewoJICAgICAgICAgICAgcmVmRWxlbWVudHMuZ2V0KGByZWxhdGlvbi8ke3BhcmVudC5pZH1gKS5zZXRCb3VuZHMoW3BhcnNlRmxvYXQobm9kZS5taW5sb24pLCBwYXJzZUZsb2F0KG5vZGUubWlubGF0KSwgcGFyc2VGbG9hdChub2RlLm1heGxvbiksIHBhcnNlRmxvYXQobm9kZS5tYXhsYXQpXSk7CgkgICAgICAgIH0pOwoKCSAgICAgICAgeG1sUGFyc2VyLm9uKCc8L29zbS5yZWxhdGlvbi50YWc+JywgKG5vZGUsIHBhcmVudCkgPT4gewoJICAgICAgICAgICAgcmVmRWxlbWVudHMuZ2V0KGByZWxhdGlvbi8ke3BhcmVudC5pZH1gKS5hZGRUYWcobm9kZS5rLCBub2RlLnYpOwoJICAgICAgICB9KTsKCgkgICAgICAgIHhtbFBhcnNlci5wYXJzZShvc20pOwoJICAgIH07CgoJICAgIGlmIChmb3JtYXQgPT09ICdqc29uLXJhdycpIHsKCSAgICAgICAgb3NtID0gSlNPTi5wYXJzZShvc20pOwoJICAgICAgICBpZiAob3NtLmVsZW1lbnRzKSB7CgkgICAgICAgICAgICBmb3JtYXQgPSAnanNvbic7CgkgICAgICAgIH0gZWxzZSB7CgkgICAgICAgICAgICBmb3JtYXQgPSAnaW52YWxpZCc7CgkgICAgICAgIH0KCSAgICB9CgoJICAgIGlmIChmb3JtYXQgPT09ICdqc29uJykgewoJICAgICAgICBhbmFseXplRmVhdHVyZXNGcm9tSnNvbihvc20pOwoJICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAneG1sJykgewoJICAgICAgICBhbmFseXplRmVhdHVyZXNGcm9tWG1sKG9zbSk7CgkgICAgfQoKCSAgICByZWZFbGVtZW50cy5iaW5kQWxsKCk7CgoJICAgIGZvciAobGV0IHYgb2YgcmVmRWxlbWVudHMudmFsdWVzKCkpIHsKCSAgICAgICAgaWYgKHYucmVmQ291bnQgPD0gMCB8fCAodi5oYXNUYWcgJiYgcmVuZGVyVGFnZ2VkICYmICEodiBpbnN0YW5jZW9mIFdheSAmJiBleGNsdWRlV2F5KSkpIHsKCSAgICAgICAgICAgIGxldCBmZWF0dXJlcyA9IHYudG9GZWF0dXJlQXJyYXkoKTsKCSAgICAgICAgICAgIC8vIHJldHVybiB0aGUgZmlyc3QgZ2VvbWV0cnkgb2YgdGhlIGZpcnN0IHJlbGF0aW9uIGVsZW1lbnQKCSAgICAgICAgICAgIGlmICh2IGluc3RhbmNlb2YgUmVsYXRpb24gJiYgIWNvbXBsZXRlRmVhdHVyZSAmJiBmZWF0dXJlcy5sZW5ndGggPiAwKSB7CgkgICAgICAgICAgICAgICAgcmV0dXJuIGZlYXR1cmVzWzBdLmdlb21ldHJ5OwoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZmVhdHVyZUFycmF5ID0gZmVhdHVyZUFycmF5LmNvbmNhdChmZWF0dXJlcyk7CgkgICAgICAgIH0KCSAgICB9CgoJICAgIHJldHVybiB7IHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsIGZlYXR1cmVzOiBmZWF0dXJlQXJyYXkgfTsKCX07CgoJdmFyIG9zbTJnZW9qc29uID0gLypAX19QVVJFX18qL2dldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGxpYik7CgoJY2xhc3MgQ29udmVydGVyIHsKCSAgICBjb25zdHJ1Y3Rvcihmb3JtYXQsIGRhdGEsIG9wdGlvbnMgPSB7fSkgewoJICAgICAgICAvKioKCSAgICAgICAgICogQ3JlYXRlcyBhIGJsYW5rIEdlb0pTT04gZmVhdHVyZSBjb2xsZWN0aW9uLgoJICAgICAgICAgKiBAcmV0dXJucyBBIG5ldyBHZW9KU09OIGZlYXR1cmUgY29sbGVjdGlvbiB3aXRoIG5vIGZlYXR1cmVzLgoJICAgICAgICAgKi8KCSAgICAgICAgdGhpcy5ibGFua0dlb0pTT04gPSAoKSA9PiAoewoJICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJywKCSAgICAgICAgICAgIGZlYXR1cmVzOiBbXSwKCSAgICAgICAgfSk7CgkgICAgICAgIHRoaXMuX3Jhd0RhdGEgPSBkYXRhOwoJICAgICAgICB0aGlzLl9mb3JtYXQgPSBmb3JtYXQ7CgkgICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zOwoJICAgICAgICBjb25zdCBjb252ZXJ0ZXJzID0gewoJICAgICAgICAgICAgJ3RvcG9qc29uJzogdGhpcy5sb2FkVG9wb0pzb24sCgkgICAgICAgICAgICAnb3NtJzogdGhpcy5sb2FkT3NtLAoJICAgICAgICAgICAgJ2ttbCc6IHRoaXMubG9hZFhtbCwKCSAgICAgICAgICAgICdncHgnOiB0aGlzLmxvYWRYbWwsCgkgICAgICAgICAgICAndGN4JzogdGhpcy5sb2FkWG1sLAoJICAgICAgICAgICAgJ2Nzdic6IHRoaXMubG9hZENzdiwKCSAgICAgICAgICAgICd0c3YnOiB0aGlzLmxvYWRDc3YsCgkgICAgICAgICAgICAncG9seWxpbmUnOiB0aGlzLmxvYWRQb2x5bGluZQoJICAgICAgICB9OwoJICAgICAgICB0aGlzLl9jb252ZXJzaW9uRm4gPSBjb252ZXJ0ZXJzW2Zvcm1hdF07CgkgICAgfQoJICAgIGFzeW5jIGNvbnZlcnQoKSB7CgkgICAgICAgIGlmICghdGhpcy5fY29udmVyc2lvbkZuKSB7CgkgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKF8sIHJlaikgPT4gcmVqKGBObyBjb252ZXJ0ZXIgZXhpc3RzIGZvciAke3RoaXMuX2Zvcm1hdH1gKSk7CgkgICAgICAgIH0KCSAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVyc2lvbkZuKCk7CgkgICAgICAgIH0KCSAgICB9CgkgICAgLyoqCgkgICAgICogTG9hZCB0aGUgWE1MIGRhdGEgYXMgR2VvSlNPTgoJICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZpbmcgdG8gYSBHZW9KU09OIEZlYXR1cmVDb2xsZWN0aW9uCgkgICAgICovCgkgICAgYXN5bmMgbG9hZFhtbCgpIHsKCSAgICAgICAgLy8gVXNlIHRoZSBhcHByb3ByaWF0ZSBwYXJzZXIgYmFzZWQgb24gdGhlIGZvcm1hdAoJICAgICAgICBjb25zdCBnZW9qc29uID0gdG9HZW9Kc29uW3RoaXMuX2Zvcm1hdF0obmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh0aGlzLl9yYXdEYXRhLCAidGV4dC94bWwiKSk7CgkgICAgICAgIHJldHVybiBnZW9qc29uOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiBMb2FkcyBhbmQgcGFyc2VzIENTViBkYXRhIGludG8gYSBHZW9KU09OIEZlYXR1cmVDb2xsZWN0aW9uLgoJICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIEdlb0pTT04gRmVhdHVyZUNvbGxlY3Rpb24uCgkgICAgICovCgkgICAgYXN5bmMgbG9hZENzdigpIHsKCSAgICAgICAgLy8gRGVmaW5lIG9wdGlvbnMgZm9yIHRoZSBjc3YyZ2VvanNvbiBsaWJyYXJ5CgkgICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5fb3B0aW9ucy5jc3ZPcHRpb25zIHx8IHt9OyAvLyBUT0RPIGFsbG93IENTViBvcHRpb25zCgkgICAgICAgIGlmICh0aGlzLl9mb3JtYXQgPT09ICd0c3YnKSB7CgkgICAgICAgICAgICBvcHRpb25zLmRlbGltaXRlciA9ICdcdCc7CgkgICAgICAgIH0KCSAgICAgICAgLy8gVXNlIHRoZSBjc3YyZ2VvanNvbiBsaWJyYXJ5IHRvIGNvbnZlcnQgdGhlIENTViB0byBHZW9KU09OCgkgICAgICAgIGNvbnN0IGdlb2pzb24gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CgkgICAgICAgICAgICBjc3YyZ2VvanNvbl8xLmNzdjJnZW9qc29uKHRoaXMuX3Jhd0RhdGEsIG9wdGlvbnMsIChlcnIsIGRhdGEpID0+IHsKCSAgICAgICAgICAgICAgICBpZiAoZXJyKSB7CgkgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOwoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICB9KTsKCSAgICAgICAgfSk7CgkgICAgICAgIHJldHVybiBnZW9qc29uOwoJICAgIH0KCSAgICAvKioKCSAgICAgKiBMb2FkcyBUb3BvSlNPTiBkYXRhIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgR2VvSlNPTiBGZWF0dXJlQ29sbGVjdGlvbgoJICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIEdlb0pTT04gRmVhdHVyZUNvbGxlY3Rpb24uCgkgICAgICovCgkgICAgYXN5bmMgbG9hZFRvcG9Kc29uKCkgewoJICAgICAgICBsZXQgdG9wb0pzb25EYXRhID0ge307CgkgICAgICAgIHRyeSB7CgkgICAgICAgICAgICB0b3BvSnNvbkRhdGEgPSBKU09OLnBhcnNlKHRoaXMuX3Jhd0RhdGEpOwoJICAgICAgICB9CgkgICAgICAgIGNhdGNoIChlKSB7CgkgICAgICAgICAgICB0aHJvdyAiSW52YWxpZCBUb3BvSnNvbiI7CgkgICAgICAgIH0KCSAgICAgICAgLy8gQ29udmVydCB0aGUgZGF0YQoJICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5ibGFua0dlb0pTT04oKTsKCSAgICAgICAgaWYgKHRvcG9Kc29uRGF0YS50eXBlID09PSAiVG9wb2xvZ3kiICYmIHRvcG9Kc29uRGF0YS5vYmplY3RzICE9PSB1bmRlZmluZWQpIHsKCSAgICAgICAgICAgIHJlc3VsdCA9IHsKCSAgICAgICAgICAgICAgICB0eXBlOiAiRmVhdHVyZUNvbGxlY3Rpb24iLAoJICAgICAgICAgICAgICAgIGZlYXR1cmVzOiByZXN1bHQuZmVhdHVyZXMgPSBPYmplY3Qua2V5cyh0b3BvSnNvbkRhdGEub2JqZWN0cykubWFwKGtleSA9PiB0b3BvanNvbkZlYXR1cmUodG9wb0pzb25EYXRhLCBrZXkpKS5yZWR1Y2UoKGEsIHYpID0+IFsuLi5hLCAuLi52LmZlYXR1cmVzXSwgW10pCgkgICAgICAgICAgICB9OwoJICAgICAgICB9CgkgICAgICAgIHJldHVybiByZXN1bHQ7CgkgICAgfQoJICAgIDsKCSAgICAvKioKCSAgICAgKiBMb2FkcyBPU00gZGF0YSBhbmQgY29udmVydHMgaXQgaW50byBhIEdlb0pTT04gRmVhdHVyZUNvbGxlY3Rpb24KCSAgICAgKiBAcmV0dXJucyBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBHZW9KU09OIEZlYXR1cmVDb2xsZWN0aW9uLgoJICAgICAqLwoJICAgIGFzeW5jIGxvYWRPc20oKSB7CgkgICAgICAgIHJldHVybiBvc20yZ2VvanNvbih0aGlzLl9yYXdEYXRhKTsKCSAgICB9CgkgICAgLyoqCgkgICAgICogTG9hZHMgYW5kIHBhcnNlcyBQb2x5bGluZSBkYXRhIGludG8gYSBHZW9KU09OIEZlYXR1cmVDb2xsZWN0aW9uLgoJICAgICAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIEdlb0pTT04gRmVhdHVyZUNvbGxlY3Rpb24uCgkgICAgICovCgkgICAgYXN5bmMgbG9hZFBvbHlsaW5lKCkgewoJICAgICAgICBsZXQgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMucG9seWxpbmVPcHRpb25zIHx8IHt9OwoJICAgICAgICAvLyBVc2UgdGhlIEBtYXBib3gvcG9seWxpbmUgbGlicmFyeSB0byBjb252ZXJ0IHRoZSBwb2x5bGluZSB0byBHZW9KU09OCgkgICAgICAgIGNvbnN0IGdlb2pzb24gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CgkgICAgICAgICAgICB0cnkgewoJICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVTdHJpbmcgPSBwb2x5bGluZUV4cG9ydHMudG9HZW9KU09OKHRoaXMuX3Jhd0RhdGEsIG9wdGlvbnMucHJlY2lzaW9uKTsKCSAgICAgICAgICAgICAgICBsZXQgZ2VvbWV0cnkgPSBsaW5lU3RyaW5nOwoJICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICdwb2ludCcpIHsKCSAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVTdHJpbmcuY29vcmRpbmF0ZXMubGVuZ3RoID09PSAxKSB7CgkgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGl0IGEgcG9pbnQKCSAgICAgICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5ID0gewoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ1BvaW50JywKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29vcmRpbmF0ZXMnOiBsaW5lU3RyaW5nLmNvb3JkaW5hdGVzWzBdCgkgICAgICAgICAgICAgICAgICAgICAgICB9OwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdDYW5ub3QgY29udmVydCBwb2x5bGluZSB0byAnICsgb3B0aW9ucy50eXBlKTsKCSAgICAgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT09ICdwb2x5Z29uJykgewoJICAgICAgICAgICAgICAgICAgICBpZiAobGluZVN0cmluZy5jb29yZGluYXRlc1swXVswXSA9PT0gbGluZVN0cmluZy5jb29yZGluYXRlc1tsaW5lU3RyaW5nLmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdWzBdICYmCgkgICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RyaW5nLmNvb3JkaW5hdGVzWzBdWzFdID09PSBsaW5lU3RyaW5nLmNvb3JkaW5hdGVzW2xpbmVTdHJpbmcuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1bMV0pIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2UgaXQgYSBwb2x5Z29uCgkgICAgICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeSA9IHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdQb2x5Z29uJywKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29vcmRpbmF0ZXMnOiBbbGluZVN0cmluZy5jb29yZGluYXRlc10KCSAgICAgICAgICAgICAgICAgICAgICAgIH07CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0Nhbm5vdCBjb252ZXJ0IHBvbHlsaW5lIHRvICcgKyBvcHRpb25zLnR5cGUpOwoJICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIHJlc29sdmUoewoJICAgICAgICAgICAgICAgICAgICB0eXBlOiAiRmVhdHVyZUNvbGxlY3Rpb24iLAoJICAgICAgICAgICAgICAgICAgICBmZWF0dXJlczogW3sKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJGZWF0dXJlIiwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VvbWV0cnkiOiBnZW9tZXRyeSwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IG9wdGlvbnMucHJvcGVydGllcyB8fCB7fQoJICAgICAgICAgICAgICAgICAgICAgICAgfV0KCSAgICAgICAgICAgICAgICB9KTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGNhdGNoIChlcnIpIHsKCSAgICAgICAgICAgICAgICByZWplY3QoZXJyKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfSk7CgkgICAgICAgIHJldHVybiBnZW9qc29uOwoJICAgIH0KCX0KCgljb25zdCBsaWJyYXJpZXMgPSB7CgkgICAgJ0NvbnZlcnRlcic6IENvbnZlcnRlcgoJfTsKCWxldCBzdWJDbGFzczsKCXNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGUgPT4gewoJICAgIGNvbnN0IGRhdGEgPSAoZS5kYXRhIHx8IGUpOwoJICAgIGNvbnN0IHBvc3QgPSAoaWQsIGVyciwgcmVzLCB0eXBlKSA9PiB7CgkgICAgICAgIHBvc3RNZXNzYWdlKHsKCSAgICAgICAgICAgIHR5cGU6IHR5cGUgPyB0eXBlIDogKGVyciA/ICdlcnJvcicgOiAncmVzcG9uc2UnKSwKCSAgICAgICAgICAgIGlkOiBpZCwKCSAgICAgICAgICAgIG1lc3NhZ2U6IHJlcywKCSAgICAgICAgICAgIGVycm9yOiBlcnIKCSAgICAgICAgfSk7CgkgICAgfTsKCSAgICBjb25zdCBjb21tYW5kcyA9IHsKCSAgICAgICAgJ2luaXQnOiAobXNnKSA9PiB7CgkgICAgICAgICAgICBjb25zdCB7IGlkLCBjb21tYW5kLCBtZXNzYWdlIH0gPSBtc2c7CgkgICAgICAgICAgICBzdWJDbGFzcyA9IG5ldyBsaWJyYXJpZXNbY29tbWFuZF0obWVzc2FnZVswXSwgbWVzc2FnZVsxXSk7CgkgICAgICAgICAgICAvLyByZXR1cm4gdGhlIGNsYXNzJyBtZXRob2RzCgkgICAgICAgICAgICBjb25zdCBmbnMgPSBbCgkgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobGlicmFyaWVzW2NvbW1hbmRdLnByb3RvdHlwZSksCgkgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoc3ViQ2xhc3MpCgkgICAgICAgICAgICBdLm1hcChrZXkgPT4gW2tleSwgdHlwZW9mIGxpYnJhcmllc1tjb21tYW5kXS5wcm90b3R5cGVba2V5XV0pCgkgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYykgPT4gKHsgLi4uYSwgLi4ueyBbY1swXV06IGNbMV0gfSB9KSwge30pOwoJICAgICAgICAgICAgcG9zdChpZCwgdW5kZWZpbmVkLCBmbnMsICdpbml0X3Jlc3BvbnNlJyk7CgkgICAgICAgIH0sCgkgICAgICAgICdnZXQnOiBmdW5jdGlvbiAobXNnKSB7CgkgICAgICAgICAgICBjb25zdCB7IGlkLCBjb21tYW5kIH0gPSBtc2c7CgkgICAgICAgICAgICBpZiAoc3ViQ2xhc3MgJiYgc3ViQ2xhc3NbY29tbWFuZF0pIHsKCSAgICAgICAgICAgICAgICBwb3N0KGlkLCB1bmRlZmluZWQsIHN1YkNsYXNzW2NvbW1hbmRdKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgIHBvc3QoaWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfSwKCSAgICAgICAgJ2V4ZWMnOiBmdW5jdGlvbiAobXNnKSB7CgkgICAgICAgICAgICBjb25zdCB7IGlkLCBjb21tYW5kLCBtZXNzYWdlIH0gPSBtc2c7CgkgICAgICAgICAgICBpZiAoc3ViQ2xhc3MgJiYgc3ViQ2xhc3NbY29tbWFuZF0gJiYgdHlwZW9mIHN1YkNsYXNzW2NvbW1hbmRdID09PSAnZnVuY3Rpb24nKSB7CgkgICAgICAgICAgICAgICAgY29uc3QgY21kID0gc3ViQ2xhc3NbY29tbWFuZF0KCSAgICAgICAgICAgICAgICAgICAgLmFwcGx5KHN1YkNsYXNzLCBtZXNzYWdlKTsKCSAgICAgICAgICAgICAgICBpZiAoISFjbWQgJiYgdHlwZW9mIGNtZC50aGVuID09PSAnZnVuY3Rpb24nKSB7CgkgICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgYSBwcm9taXNlLCBzbyB3YWl0IGZvciBpdAoJICAgICAgICAgICAgICAgICAgICBjbWQKCSAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiBwb3N0KGlkLCB1bmRlZmluZWQsIHJlcykpCgkgICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiBwb3N0KGlkLCBlKSk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIGVsc2UgewoJICAgICAgICAgICAgICAgICAgICAvLyBOb3QgYSBwcm9taXNlLCBqdXN0IHJldHVybiBpdAoJICAgICAgICAgICAgICAgICAgICBwb3N0KGlkLCB1bmRlZmluZWQsIGNtZCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgfQoJICAgICAgICAgICAgZWxzZSB7CgkgICAgICAgICAgICAgICAgLy8gRXJyb3IKCSAgICAgICAgICAgICAgICBwb3N0KGlkLCBuZXcgRXJyb3IoYGNvbW1hbmQgIiR7Y29tbWFuZH0iIG5vdCBmb3VuZGApKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgfQoJICAgIH07CgkgICAgaWYgKGNvbW1hbmRzW2RhdGEudHlwZV0pIHsKCSAgICAgICAgY29tbWFuZHNbZGF0YS50eXBlXShkYXRhKTsKCSAgICB9Cgl9KTsKCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdvcmtlci5qcy5tYXAKCg==",vo?dn(es):function(ht,pt,At){var St;return function(_t){return St=St||pn(ht),new Worker(St,_t)}}(es));let is=()=>Math.random().toString(36).substring(2);class Jn{constructor(pt,At){this.initId=is()+"-"+pt,this.worker=new Or,this.handlers=new Map,this.worker.onmessage=St=>{let _t=St.data,zt=this.handlers.get(_t.id),ee=this;if(zt){if(_t.type==="response"&&zt.resolve(_t.message),_t.type==="error"){let be=_t.error||new Error(`Unknown error with ${pt}`);zt.reject(be)}_t.type==="init_response"&&(this._=Object.keys(_t.message).map(be=>{let Ie=typeof _t.message[be]=="function";return[be,function(){return Ie?ee.exec(be)(...arguments):ee.get(be)}]}).reduce((be,Ie)=>({...be,[Ie[0]]:Ie[1]}),{}),zt.resolve(this._))}},this.worker.postMessage({type:"init",id:this.initId,command:pt,message:At})}onLoad(){return new Promise(pt=>{this._===void 0?this.handlers.set(this.initId,{resolve:pt,reject:pt}):pt(this._)})}exec(pt){let At=this;return function(...St){return new Promise((_t,zt)=>{let ee=is()+"-"+pt;At.handlers.set(ee,{resolve:_t,reject:zt}),At.worker.postMessage({type:"exec",id:ee,command:pt,message:[...St]})})}}get(pt){return new Promise((At,St)=>{let _t=is()+"-"+pt;this.handlers.set(_t,{resolve:At,reject:St}),this.worker.postMessage({type:"get",id:_t,command:pt,message:[]})})}}let $i=new URL("test://http://example.com").href!=="test://http://example.com";async function io(ht,pt,At){let St=await fetch(ht,At?{signal:At.signal}:void 0),_t={},zt=new URL(ht,window.location.href);if(zt.hash.length){let ee=zt.hash,be=decodeURIComponent(ee.slice(1));try{_t=JSON.parse(be)}catch(Ie){console.warn("Error parsing or reading URL:",Ie)}}if(St.status==200){let ee=await St.text(),be;return["kml","tcx","gpx"].includes(pt)||!(()=>{let Ie=!1;try{Ie=typeof window.Worker=="function"}catch{Ie=!1}return Ie})()?be=new jr(pt,ee,_t).convert():be=new Jn("Converter",[pt,ee,_t]).exec("convert")(),await be}throw new Error(`Data fetch error: ${St.statusText}`)}let wn=ht=>{let pt=ht.split("://")[0],At=ht.replace(new RegExp(`^${pt}://`),""),St=$i?(_t=>{let zt=new RegExp("^(https?)(//)");return _t.replace(zt,"$1:$2")})(At):At;return{prefix:pt,url:St}},Wo=(ht,pt)=>pt instanceof AbortController?(async(At,St)=>{let{prefix:_t,url:zt}=wn(At.url);if(!zt)throw new Error("Invalid URL: "+At.url);try{return{data:await io(zt,_t,St)}}catch(ee){throw new Error(ee||"Unknown Error")}})(ht,pt):((At,St)=>{let _t=new AbortController,{prefix:zt,url:ee}=wn(At.url);return ee&&io(ee,zt,_t).then(be=>St(null,be)).catch(be=>St(be)),{cancel:()=>{_t.abort()}}})(ht,pt),Bn=Fr;n.VectorTextProtocol=Wo,n.addOptions=(ht,pt)=>{try{let At=new URL(ht);return At.hash=`#${encodeURIComponent(JSON.stringify(pt))}`,At.toString()}catch(At){return console.error("Error parsing or updating URL:",At),ht}},n.addProtocols=ht=>{Fr.forEach(pt=>{ht.addProtocol(pt,Wo)})},n.processData=io,n.vectorFormats=Bn})});var oC=ua((uO,Eb)=>{Eb.exports=n3;var r3=Object.prototype.hasOwnProperty;function n3(){for(var n={},e=0;e{(function(){var n=this,e={};typeof Tb<"u"?Ub.exports=e:n.fuzzy=e,e.simpleFilter=function(r,o){return o.filter(function(l){return e.test(r,l)})},e.test=function(r,o){return e.match(r,o)!==null},e.match=function(r,o,l){l=l||{};var s=0,p=[],m=o.length,I=0,w=0,_=l.pre||"",E=l.post||"",U=l.caseSensitive&&o||o.toLowerCase(),F;r=l.caseSensitive&&r||r.toLowerCase();for(var V=0;V{"use strict";var Vo=function(n){return this.component=n,this.items=[],this.active=n.options.noInitialSelection?-1:0,this.wrapper=document.createElement("div"),this.wrapper.className="suggestions-wrapper",this.element=document.createElement("ul"),this.element.className="suggestions",this.wrapper.appendChild(this.element),this.selectingListItem=!1,n.el.parentNode.insertBefore(this.wrapper,n.el.nextSibling),this};Vo.prototype.show=function(){this.element.style.display="block"};Vo.prototype.hide=function(){this.element.style.display="none"};Vo.prototype.add=function(n){this.items.push(n)};Vo.prototype.clear=function(){this.items=[],this.active=this.component.options.noInitialSelection?-1:0};Vo.prototype.isEmpty=function(){return!this.items.length};Vo.prototype.isVisible=function(){return this.element.style.display==="block"};Vo.prototype.draw=function(){if(this.element.innerHTML="",this.items.length===0){this.hide();return}for(var n=0;n=this.items.length-1?0:this.active+1)};Vo.prototype.drawError=function(n){var e=document.createElement("li");e.innerHTML=n,this.element.appendChild(e),this.show()};Rb.exports=Vo});var Pb=ua((gO,Zb)=>{"use strict";var s3=oC(),o3=Qb(),a3=Gb(),Xs=function(n,e,r){return r=r||{},this.options=s3({minLength:2,limit:5,filter:!0,hideOnBlur:!0,noInitialSelection:!0},r),this.el=n,this.data=e||[],this.list=new a3(this),this.query="",this.selected=null,this.list.draw(),this.el.addEventListener("keyup",function(o){this.handleKeyUp(o.keyCode,o)}.bind(this),!1),this.el.addEventListener("keydown",function(o){this.handleKeyDown(o)}.bind(this)),this.el.addEventListener("focus",function(){this.handleFocus()}.bind(this)),this.el.addEventListener("blur",function(){this.handleBlur()}.bind(this)),this.el.addEventListener("paste",function(o){this.handlePaste(o)}.bind(this)),this.render=this.options.render?this.options.render.bind(this):this.render.bind(this),this.getItemValue=this.options.getItemValue?this.options.getItemValue.bind(this):this.getItemValue.bind(this),this};Xs.prototype.handleKeyUp=function(n,e){if(!(n===40||n===38||n===27||n===9)){if(n===13){this.list.items[this.list.active]&&(this.list.handleMouseUp(this.list.items[this.list.active]),e.stopPropagation());return}this.handleInputChange(this.el.value)}};Xs.prototype.handleKeyDown=function(n){switch(n.keyCode){case 13:this.list.active>=0&&(this.list.selectingListItem=!0);break;case 9:this.list.isEmpty()||(this.list.isVisible()&&n.preventDefault(),this.value(this.list.active>=0?this.list.items[this.list.active].original:null),this.list.hide());break;case 27:this.list.isEmpty()||this.list.hide();break;case 38:this.list.previous();break;case 40:this.list.next();break}};Xs.prototype.handleBlur=function(){!this.list.selectingListItem&&this.options.hideOnBlur&&this.list.hide()};Xs.prototype.handlePaste=function(n){if(n.clipboardData)this.handleInputChange(n.clipboardData.getData("Text"));else{var e=this;setTimeout(function(){e.handleInputChange(n.target.value)},100)}};Xs.prototype.handleInputChange=function(n){if(this.query=this.normalize(n),this.list.clear(),this.query.length-1};Xs.prototype.value=function(n){if(this.selected=n,this.el.value=this.getItemValue(n||{place_name:this.query}),document.createEvent){var e=document.createEvent("HTMLEvents");e.initEvent("change",!0,!1),this.el.dispatchEvent(e)}else this.el.fireEvent("onchange")};Xs.prototype.getCandidates=function(n){var e={pre:"",post:"",extract:function(o){return this.getItemValue(o)}.bind(this)},r;this.options.filter?(r=o3.filter(this.query,this.data,e),r=r.map(function(o){return{original:o.original,string:this.render(o.original,o.string)}}.bind(this))):r=this.data.map(function(o){var l=this.render(o);return{original:o,string:l}}.bind(this)),n(r)};Xs.prototype.getItemValue=function(n){return n};Xs.prototype.render=function(n,e){if(e)return e;for(var r=n.original?this.getItemValue(n.original):this.getItemValue(n),o=this.normalize(r),l=o.lastIndexOf(this.query);l>-1;){var s=l+this.query.length;r=r.slice(0,l)+""+r.slice(l,s)+""+r.slice(s),l=o.slice(0,l).lastIndexOf(this.query)}return r};Xs.prototype.renderError=function(n){this.list.drawError(n)};Zb.exports=Xs});var Nb=ua((dO,Mb)=>{"use strict";var Hb=Pb();Mb.exports=Hb;typeof window<"u"&&(window.Suggestions=Hb)});var Ob=ua((pO,Kb)=>{var A3="Expected a function",Vb=NaN,l3="[object Symbol]",c3=/^\s+|\s+$/g,u3=/^[-+]0x[0-9a-f]+$/i,h3=/^0b[01]+$/i,g3=/^0o[0-7]+$/i,d3=parseInt,p3=typeof global=="object"&&global&&global.Object===Object&&global,f3=typeof self=="object"&&self&&self.Object===Object&&self,m3=p3||f3||Function("return this")(),C3=Object.prototype,I3=C3.toString,y3=Math.max,b3=Math.min,aC=function(){return m3.Date.now()};function v3(n,e,r){var o,l,s,p,m,I,w=0,_=!1,E=!1,U=!0;if(typeof n!="function")throw new TypeError(A3);e=Db(e)||0,AC(r)&&(_=!!r.leading,E="maxWait"in r,s=E?y3(Db(r.maxWait)||0,e):s,U="trailing"in r?!!r.trailing:U);function F(Lt){var vt=o,ft=l;return o=l=void 0,w=Lt,p=n.apply(ft,vt),p}function V(Lt){return w=Lt,m=setTimeout(D,e),_?F(Lt):p}function H(Lt){var vt=Lt-I,ft=Lt-w,Mt=e-vt;return E?b3(Mt,s-ft):Mt}function Y(Lt){var vt=Lt-I,ft=Lt-w;return I===void 0||vt>=e||vt<0||E&&ft>=s}function D(){var Lt=aC();if(Y(Lt))return tt(Lt);m=setTimeout(D,H(Lt))}function tt(Lt){return m=void 0,U&&o?F(Lt):(o=l=void 0,p)}function ot(){m!==void 0&&clearTimeout(m),w=0,o=I=l=m=void 0}function bt(){return m===void 0?p:tt(aC())}function kt(){var Lt=aC(),vt=Y(Lt);if(o=arguments,l=this,I=Lt,vt){if(m===void 0)return V(I);if(E)return m=setTimeout(D,e),F(I)}return m===void 0&&(m=setTimeout(D,e)),p}return kt.cancel=ot,kt.flush=bt,kt}function AC(n){var e=typeof n;return!!n&&(e=="object"||e=="function")}function w3(n){return!!n&&typeof n=="object"}function B3(n){return typeof n=="symbol"||w3(n)&&I3.call(n)==l3}function Db(n){if(typeof n=="number")return n;if(B3(n))return Vb;if(AC(n)){var e=typeof n.valueOf=="function"?n.valueOf():n;n=AC(e)?e+"":e}if(typeof n!="string")return n===0?n:+n;n=n.replace(c3,"");var r=h3.test(n);return r||g3.test(n)?d3(n.slice(2),r?2:8):u3.test(n)?Vb:+n}Kb.exports=v3});var iv=ua((fO,lC)=>{"use strict";var Hu=typeof Reflect=="object"?Reflect:null,zb=Hu&&typeof Hu.apply=="function"?Hu.apply:function(e,r,o){return Function.prototype.apply.call(e,r,o)},kd;Hu&&typeof Hu.ownKeys=="function"?kd=Hu.ownKeys:Object.getOwnPropertySymbols?kd=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:kd=function(e){return Object.getOwnPropertyNames(e)};function _3(n){console&&console.warn&&console.warn(n)}var Jb=Number.isNaN||function(e){return e!==e};function Jr(){Jr.init.call(this)}lC.exports=Jr;lC.exports.once=k3;Jr.EventEmitter=Jr;Jr.prototype._events=void 0;Jr.prototype._eventsCount=0;Jr.prototype._maxListeners=void 0;var Wb=10;function Ld(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty(Jr,"defaultMaxListeners",{enumerable:!0,get:function(){return Wb},set:function(n){if(typeof n!="number"||n<0||Jb(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");Wb=n}});Jr.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Jr.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||Jb(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function Xb(n){return n._maxListeners===void 0?Jr.defaultMaxListeners:n._maxListeners}Jr.prototype.getMaxListeners=function(){return Xb(this)};Jr.prototype.emit=function(e){for(var r=[],o=1;o0&&(p=r[0]),p instanceof Error)throw p;var m=new Error("Unhandled error."+(p?" ("+p.message+")":""));throw m.context=p,m}var I=s[e];if(I===void 0)return!1;if(typeof I=="function")zb(I,this,r);else for(var w=I.length,_=tv(I,w),o=0;o0&&p.length>l&&!p.warned){p.warned=!0;var m=new Error("Possible EventEmitter memory leak detected. "+p.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");m.name="MaxListenersExceededWarning",m.emitter=n,m.type=e,m.count=p.length,_3(m)}return n}Jr.prototype.addListener=function(e,r){return Yb(this,e,r,!1)};Jr.prototype.on=Jr.prototype.addListener;Jr.prototype.prependListener=function(e,r){return Yb(this,e,r,!0)};function x3(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function jb(n,e,r){var o={fired:!1,wrapFn:void 0,target:n,type:e,listener:r},l=x3.bind(o);return l.listener=r,o.wrapFn=l,l}Jr.prototype.once=function(e,r){return Ld(r),this.on(e,jb(this,e,r)),this};Jr.prototype.prependOnceListener=function(e,r){return Ld(r),this.prependListener(e,jb(this,e,r)),this};Jr.prototype.removeListener=function(e,r){var o,l,s,p,m;if(Ld(r),l=this._events,l===void 0)return this;if(o=l[e],o===void 0)return this;if(o===r||o.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete l[e],l.removeListener&&this.emit("removeListener",e,o.listener||r));else if(typeof o!="function"){for(s=-1,p=o.length-1;p>=0;p--)if(o[p]===r||o[p].listener===r){m=o[p].listener,s=p;break}if(s<0)return this;s===0?o.shift():S3(o,s),o.length===1&&(l[e]=o[0]),l.removeListener!==void 0&&this.emit("removeListener",e,m||r)}return this};Jr.prototype.off=Jr.prototype.removeListener;Jr.prototype.removeAllListeners=function(e){var r,o,l;if(o=this._events,o===void 0)return this;if(o.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):o[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete o[e]),this;if(arguments.length===0){var s=Object.keys(o),p;for(l=0;l=0;l--)this.removeListener(e,r[l]);return this};function qb(n,e,r){var o=n._events;if(o===void 0)return[];var l=o[e];return l===void 0?[]:typeof l=="function"?r?[l.listener||l]:[l]:r?F3(l):tv(l,l.length)}Jr.prototype.listeners=function(e){return qb(this,e,!0)};Jr.prototype.rawListeners=function(e){return qb(this,e,!1)};Jr.listenerCount=function(n,e){return typeof n.listenerCount=="function"?n.listenerCount(e):$b.call(n,e)};Jr.prototype.listenerCount=$b;function $b(n){var e=this._events;if(e!==void 0){var r=e[n];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Jr.prototype.eventNames=function(){return this._eventsCount>0?kd(this._events):[]};function tv(n,e){for(var r=new Array(e),o=0;o{rv.exports={fr:{name:"France",bbox:[[-4.59235,41.380007],[9.560016,51.148506]]},us:{name:"United States",bbox:[[-171.791111,18.91619],[-66.96466,71.357764]]},ru:{name:"Russia",bbox:[[19.66064,41.151416],[190.10042,81.2504]]},ca:{name:"Canada",bbox:[[-140.99778,41.675105],[-52.648099,83.23324]]}}});var ov=ua((CO,sv)=>{"use strict";var E3={de:"Suche",it:"Ricerca",en:"Search",nl:"Zoeken",fr:"Chercher",ca:"Cerca",he:"\u05DC\u05D7\u05E4\u05E9",ja:"\u30B5\u30FC\u30C1",lv:"Mekl\u0113t",pt:"Procurar",sr:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430",zh:"\u641C\u7D22",cs:"Vyhled\xE1v\xE1n\xED",hu:"Keres\xE9s",ka:"\u10EB\u10D8\u10D4\u10D1\u10D0",nb:"S\xF8ke",sk:"Vyh\u013Ead\xE1vanie",th:"\u0E04\u0E49\u0E19\u0E2B\u0E32",fi:"Hae",is:"Leita",ko:"\uC218\uC0C9",pl:"Szukaj",sl:"Iskanje",fa:"\u062C\u0633\u062A\u062C\u0648",ru:"\u041F\u043E\u0438\u0441\u043A"};sv.exports={placeholder:E3}});var Av=ua((av,Ed)=>{(function(n,e,r){typeof Ed<"u"&&Ed.exports?Ed.exports=r():n[e]=r()})(av,"subtag",function(){var n="",e=/^([a-zA-Z]{2,3})(?:[_-]+([a-zA-Z]{3})(?=$|[_-]+))?(?:[_-]+([a-zA-Z]{4})(?=$|[_-]+))?(?:[_-]+([a-zA-Z]{2}|[0-9]{3})(?=$|[_-]+))?/;function r(m){return m.match(e)||[]}function o(m){return r(m).filter(function(I,w){return I&&w})}function l(m){return m=r(m),{language:m[1]||n,extlang:m[2]||n,script:m[3]||n,region:m[4]||n}}function s(m,I,w){Object.defineProperty(m,I,{value:w,enumerable:!0})}function p(m,I,w){function _(E){return r(E)[m]||n}s(_,"pattern",I),s(l,w,_)}return p(1,/^[a-zA-Z]{2,3}$/,"language"),p(2,/^[a-zA-Z]{3}$/,"extlang"),p(3,/^[a-zA-Z]{4}$/,"script"),p(4,/^[a-zA-Z]{2}$|^[0-9]{3}$/,"region"),s(l,"split",o),l})});var hv=ua((IO,uv)=>{"use strict";var T3=Nb(),U3=Ob(),ha=oC(),Q3=iv().EventEmitter,lv=nv(),R3=ov(),G3=Av();function cv(n,e){this._eventEmitter=new Q3,this.options=ha({},this.options,e),this.inputString="",this.fresh=!0,this.lastSelected=null,this.geocoderApi=n}cv.prototype={options:{zoom:16,flyTo:!0,trackProximity:!0,showResultsWhileTyping:!1,minLength:2,reverseGeocode:!1,limit:5,enableEventLogging:!0,marker:!0,popup:!1,maplibregl:null,collapsed:!1,clearAndBlurOnEsc:!1,clearOnBlur:!1,getItemValue:function(n){return n.text!==void 0?n.text:n.place_name},render:function(n){if(n.geometry){var m=n.place_name.split(",");return'
'+m[0]+'
'+m.splice(1,m.length).join(",")+"
"}else{var e=n.text,r=e.toLowerCase().indexOf(this.query.toLowerCase()),o=this.query.length,l=e.substring(0,r),s=e.substring(r,r+o),p=e.substring(r+o);return'
'+l+''+s+""+p+"
"}},popupRender:function(n){var e=n.place_name.split(",");return'"},showResultMarkers:!0,debounceSearch:200},addTo:function(n){function e(o,l){if(!document.body.contains(l))throw new Error("Element provided to #addTo() exists, but is not in the DOM");var s=o.onAdd();l.appendChild(s)}if(n._controlContainer)n.addControl(this);else if(n instanceof HTMLElement)e(this,n);else if(typeof n=="string"){var r=document.querySelectorAll(n);if(r.length===0)throw new Error("Element ",n,"not found.");if(r.length>1)throw new Error("Geocoder can only be added to a single html element");e(this,r[0])}else throw new Error("Error: addTo must be a maplibre-gl-js map, an html element, or a CSS selector query for a single html element")},onAdd:function(n){if(n&&typeof n!="string"&&(this._map=n),this.setLanguage(),this.options.localGeocoderOnly&&!this.options.localGeocoder)throw new Error("A localGeocoder function must be specified to use localGeocoderOnly mode");this._onChange=this._onChange.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onPaste=this._onPaste.bind(this),this._onBlur=this._onBlur.bind(this),this._showButton=this._showButton.bind(this),this._hideButton=this._hideButton.bind(this),this._onQueryResult=this._onQueryResult.bind(this),this.clear=this.clear.bind(this),this._updateProximity=this._updateProximity.bind(this),this._collapse=this._collapse.bind(this),this._unCollapse=this._unCollapse.bind(this),this._clear=this._clear.bind(this),this._clearOnBlur=this._clearOnBlur.bind(this);var e=this.container=document.createElement("div");e.className="mapboxgl-ctrl-geocoder mapboxgl-ctrl maplibregl-ctrl-geocoder maplibregl-ctrl";var r=this.createIcon("search",'');this._inputEl=document.createElement("input"),this._inputEl.type="text",this._inputEl.className="mapboxgl-ctrl-geocoder--input maplibregl-ctrl-geocoder--input",this.setPlaceholder(),this.options.collapsed&&(this._collapse(),this.container.addEventListener("mouseenter",this._unCollapse),this.container.addEventListener("mouseleave",this._collapse),this._inputEl.addEventListener("focus",this._unCollapse)),(this.options.collapsed||this.options.clearOnBlur)&&this._inputEl.addEventListener("blur",this._onBlur),this._inputEl.addEventListener("keydown",U3(this._onKeyDown,this.options.debounceSearch)),this._inputEl.addEventListener("paste",this._onPaste),this._inputEl.addEventListener("change",this._onChange),this.container.addEventListener("mouseenter",this._showButton),this.container.addEventListener("mouseleave",this._hideButton);var o=document.createElement("div");o.classList.add("mapboxgl-ctrl-geocoder--pin-right","maplibregl-ctrl-geocoder--pin-right"),this._clearEl=document.createElement("button"),this._clearEl.setAttribute("aria-label","Clear"),this._clearEl.addEventListener("click",this.clear),this._clearEl.className="mapboxgl-ctrl-geocoder--button maplibregl-ctrl-geocoder--button";var l=this.createIcon("close",'');return this._clearEl.appendChild(l),this._loadingEl=this.createIcon("loading",''),o.appendChild(this._clearEl),o.appendChild(this._loadingEl),e.appendChild(r),e.appendChild(this._inputEl),e.appendChild(o),this._typeahead=new T3(this._inputEl,[],{filter:!1,minLength:this.options.minLength,limit:this.options.limit,noInitialSelection:!0}),this.setRenderFunction(this.options.render),this._typeahead.getItemValue=this.options.getItemValue,this.mapMarker=null,this.resultMarkers=[],this._handleMarker=this._handleMarker.bind(this),this._handleResultMarkers=this._handleResultMarkers.bind(this),this._map&&(this.options.trackProximity&&(this._updateProximity(),this._map.on("moveend",this._updateProximity)),this._maplibregl=this.options.maplibregl,!this._maplibregl&&this.options.marker&&(console.error("No maplibregl detected in options. Map markers are disabled. Please set options.maplibregl."),this.options.marker=!1)),e},createIcon:function(n,e){var r=document.createElementNS("http://www.w3.org/2000/svg","svg");if(r.setAttribute("class","mapboxgl-ctrl-geocoder--icon mapboxgl-ctrl-geocoder--icon-"+n+" maplibregl-ctrl-geocoder--icon maplibregl-ctrl-geocoder--icon-"+n),r.setAttribute("viewBox","0 0 18 18"),r.setAttribute("xml:space","preserve"),r.setAttribute("width",18),r.setAttribute("height",18),"innerHTML"in r)r.innerHTML=e;else{var o=document.createElement("div");o.innerHTML=""+e.valueOf().toString()+"";var l=o.firstChild,s=l.firstChild;r.appendChild(s)}return r},onRemove:function(){return this.container.parentNode.removeChild(this.container),this.options.trackProximity&&this._map&&this._map.off("moveend",this._updateProximity),this._removeMarker(),this._map=null,this},_onPaste:function(n){var e=(n.clipboardData||window.clipboardData).getData("text");e.length>=this.options.minLength&&this.options.showResultsWhileTyping&&this._geocode(e)},_onKeyDown:function(n){var e=27,r=9;if(n.keyCode===e&&this.options.clearAndBlurOnEsc)return this._clear(n),this._inputEl.blur();var o=n.target&&n.target.shadowRoot?n.target.shadowRoot.activeElement:n.target,l=o?o.value:"";if(!l)return this.fresh=!0,n.keyCode!==r&&this.clear(n),this._clearEl.style.display="none";if(!(n.metaKey||[r,e,37,39,38,40].indexOf(n.keyCode)!==-1)){if(n.keyCode===13)if(!this.options.showResultsWhileTyping)this._typeahead.selected||this._geocode(o.value);else{this._typeahead.selected==null&&this.geocoderApi.getSuggestions?this._geocode(o.value,!0):this._typeahead.selected==null&&this.options.showResultMarkers&&this._fitBoundsForMarkers();return}o.value.length>=this.options.minLength&&this.options.showResultsWhileTyping&&this._geocode(o.value)}},_showButton:function(){this._inputEl.value.length>0&&(this._clearEl.style.display="block")},_hideButton:function(){this._typeahead.selected&&(this._clearEl.style.display="none")},_onBlur:function(n){this.options.clearOnBlur&&this._clearOnBlur(n),this.options.collapsed&&this._collapse()},_onChange:function(){var n=this._typeahead.selected;if(n&&!n.geometry)n.placeId?this._geocode(n.placeId,!0,!0):this._geocode(n.text,!0);else if(n&&JSON.stringify(n)!==this.lastSelected){if(this._clearEl.style.display="none",this.options.flyTo){var e;if(this._removeResultMarkers(),n.properties&&lv[n.properties.short_code])e=ha({},this.options.flyTo),this._map&&this._map.fitBounds(lv[n.properties.short_code].bbox,e);else if(n.bbox){var r=n.bbox;e=ha({},this.options.flyTo),this._map&&this._map.fitBounds([[r[0],r[1]],[r[2],r[3]]],e)}else{var o={zoom:this.options.zoom};e=ha({},o,this.options.flyTo),n.center?e.center=n.center:n.geometry&&n.geometry.type&&n.geometry.type==="Point"&&n.geometry.coordinates&&(e.center=n.geometry.coordinates),this._map&&this._map.flyTo(e)}}this.options.marker&&this._maplibregl&&this._handleMarker(n),this._inputEl.focus(),this._inputEl.scrollLeft=0,this._inputEl.setSelectionRange(0,0),this.lastSelected=JSON.stringify(n),this._typeahead.selected=null,this._eventEmitter.emit("result",{result:n})}},_getConfigForRequest:function(){var n=["bbox","limit","proximity","countries","types","language","reverseMode"],e=this,r=n.reduce(function(o,l){return e.options[l]&&(["countries","types","language"].indexOf(l)>-1?o[l]=e.options[l].split(/[\s,]+/):o[l]=e.options[l],l==="proximity"&&e.options[l]&&typeof e.options[l].longitude=="number"&&typeof e.options[l].latitude=="number"&&(o[l]=[e.options[l].longitude,e.options[l].latitude])),o},{});return r},_geocode:function(n,e,r){this._loadingEl.style.display="block",this._eventEmitter.emit("loading",{query:n}),this.inputString=n;var o=null,l=this._getConfigForRequest(),s;if(this.options.localGeocoderOnly)s=Promise.resolve();else if(this.options.reverseGeocode&&/(-?\d+\.?\d*)[, ]+(-?\d+\.?\d*)[ ]*$/.test(n)){var p=n.split(/[\s(,)?]+/).map(function(w){return parseFloat(w,10)}).reverse();l.types&&l.types[0],l=ha(l,{query:p,limit:1}),"proximity"in l&&delete l.proximity,s=this.geocoderApi.reverseGeocode(l)}else l=ha(l,{query:n}),this.geocoderApi.getSuggestions?e?this.geocoderApi.searchByPlaceId&&r?s=this.geocoderApi.searchByPlaceId(l):s=this.geocoderApi.forwardGeocode(l):s=this.geocoderApi.getSuggestions(l):s=this.geocoderApi.forwardGeocode(l);var m=[];this.options.localGeocoder&&(m=this.options.localGeocoder(n),m||(m=[]));var I=[];return s.catch(function(w){o=w}.bind(this)).then(function(w){this._loadingEl.style.display="none";var _={};return w?_=w:_={type:"FeatureCollection",features:[]},_.config=l,this.fresh&&(this.fresh=!1),_.features=_.features?m.concat(_.features):m,this.options.externalGeocoder?(I=this.options.externalGeocoder(n,_.features,l)||[],I.then(function(E){return _.features=_.features?E.concat(_.features):E,_},function(){return _})):_}.bind(this)).then(function(w){if(o)throw o;this.options.filter&&w.features.length&&(w.features=w.features.filter(this.options.filter));var _=[];w.suggestions?_=w.suggestions:w.place?_=[w.place]:_=w.features,_.length?(this._clearEl.style.display="block",this._typeahead.update(_),(!this.options.showResultsWhileTyping||e)&&this.options.showResultMarkers&&(w.features.length>0||w.place)&&this._fitBoundsForMarkers(),this._eventEmitter.emit("results",w)):(this._clearEl.style.display="none",this._typeahead.selected=null,this._renderNoResults(),this._eventEmitter.emit("results",w))}.bind(this)).catch(function(w){this._loadingEl.style.display="none",m.length&&this.options.localGeocoder||I.length&&this.options.externalGeocoder?(this._clearEl.style.display="block",this._typeahead.update(m)):(this._clearEl.style.display="none",this._typeahead.selected=null,this._renderError()),this._eventEmitter.emit("results",{features:m}),this._eventEmitter.emit("error",{error:w})}.bind(this)),s},_clear:function(n){n&&n.preventDefault(),this._inputEl.value="",this._typeahead.selected=null,this._typeahead.clear(),this._onChange(),this._clearEl.style.display="none",this._removeMarker(),this._removeResultMarkers(),this.lastSelected=null,this._eventEmitter.emit("clear"),this.fresh=!0},clear:function(n){this._clear(n),this._inputEl.focus()},_clearOnBlur:function(n){var e=this;n.relatedTarget&&e._clear(n)},_onQueryResult:function(n){var e=n;if(!!e.features.length){var r=e.features[0];this._typeahead.selected=r,this._inputEl.value=r.place_name,this._onChange()}},_updateProximity:function(){if(!!this._map)if(this._map.getZoom()>9){var n=this._map.getCenter().wrap();this.setProximity({longitude:n.lng,latitude:n.lat})}else this.setProximity(null)},_collapse:function(){!this._inputEl.value&&this._inputEl!==document.activeElement&&this.container.classList.add("mapboxgl-ctrl-geocoder--collapsed","maplibregl-ctrl-geocoder--collapsed")},_unCollapse:function(){this.container.classList.remove("mapboxgl-ctrl-geocoder--collapsed","maplibregl-ctrl-geocoder--collapsed")},query:function(n){return this._geocode(n).then(this._onQueryResult),this},_renderError:function(){var n="
There was an error reaching the server
";this._renderMessage(n)},_renderNoResults:function(){var n="
No results found
";this._renderMessage(n)},_renderMessage:function(n){this._typeahead.update([]),this._typeahead.selected=null,this._typeahead.clear(),this._typeahead.renderError(n)},_getPlaceholderText:function(){if(this.options.placeholder)return this.options.placeholder;if(this.options.language){var n=this.options.language.split(",")[0],e=G3.language(n),r=R3.placeholder[e];if(r)return r}return"Search"},_fitBoundsForMarkers:function(){if(!(this._typeahead.data.length<1)){var n=this._typeahead.data.filter(function(l){return typeof l!="string"}).slice(0,this.options.limit);if(this._clearEl.style.display="none",this.options.flyTo&&this._maplibregl&&this._map){var e={padding:100},r=ha({},e,this.options.flyTo),o=new this._maplibregl.LngLatBounds;n.forEach(function(l){o.extend(l.geometry.coordinates)}),this._map.fitBounds(o.toArray(),r)}return n.length>0&&this._maplibregl&&this._handleResultMarkers(n),this}},setInput:function(n){return this._inputEl.value=n,this._typeahead.selected=null,this._typeahead.clear(),n.length>=this.options.minLength&&this.options.showResultsWhileTyping&&this._geocode(n),this},setProximity:function(n){return this.options.proximity=n,this},getProximity:function(){return this.options.proximity},setRenderFunction:function(n){return n&&typeof n=="function"&&(this._typeahead.render=n),this},getRenderFunction:function(){return this._typeahead.render},setLanguage:function(n){var e=navigator.language||navigator.userLanguage||navigator.browserLanguage;return this.options.language=n||this.options.language||e,this},getLanguage:function(){return this.options.language},getZoom:function(){return this.options.zoom},setZoom:function(n){return this.options.zoom=n,this},getFlyTo:function(){return this.options.flyTo},setFlyTo:function(n){return this.options.flyTo=n,this},getPlaceholder:function(){return this.options.placeholder},setPlaceholder:function(n){return this.placeholder=n||this._getPlaceholderText(),this._inputEl.placeholder=this.placeholder,this._inputEl.setAttribute("aria-label",this.placeholder),this},getBbox:function(){return this.options.bbox},setBbox:function(n){return this.options.bbox=n,this},getCountries:function(){return this.options.countries},setCountries:function(n){return this.options.countries=n,this},getTypes:function(){return this.options.types},setTypes:function(n){return this.options.types=n,this},getMinLength:function(){return this.options.minLength},setMinLength:function(n){return this.options.minLength=n,this._typeahead&&(this._typeahead.options.minLength=n),this},getLimit:function(){return this.options.limit},setLimit:function(n){return this.options.limit=n,this._typeahead&&(this._typeahead.options.limit=n),this},getFilter:function(){return this.options.filter},setFilter:function(n){return this.options.filter=n,this},setGeocoderApi:function(n){return this.geocoderApi=n,this},getGeocoderApi:function(){return this.geocoderApi},_handleMarker:function(n){if(!!this._map){this._removeMarker();var e={color:"#4668F2"},r=ha({},e,this.options.marker);this.mapMarker=new this._maplibregl.Marker(r);var o;if(this.options.popup){var l={},s=ha({},l,this.options.popup);o=new this._maplibregl.Popup(s).setHTML(this.options.popupRender(n))}return n.center?(this.mapMarker.setLngLat(n.center).addTo(this._map),this.options.popup&&this.mapMarker.setPopup(o)):n.geometry&&n.geometry.type&&n.geometry.type==="Point"&&n.geometry.coordinates&&(this.mapMarker.setLngLat(n.geometry.coordinates).addTo(this._map),this.options.popup&&this.mapMarker.setPopup(o)),this}},_removeMarker:function(){this.mapMarker&&(this.mapMarker.remove(),this.mapMarker=null)},_handleResultMarkers:function(n){if(!!this._map){this._removeResultMarkers();var e={color:"#4668F2"},r=ha({},e,this.options.showResultMarkers);return n.forEach(function(o){if(this.options.showResultMarkers&&this.options.showResultMarkers.element){var l=this.options.showResultMarkers.element.cloneNode(!0);r=ha(r,{element:l})}var s=new this._maplibregl.Marker(ha({},r,{element:l})),p;if(this.options.popup){var m={},I=ha({},m,this.options.popup);p=new this._maplibregl.Popup(I).setHTML(this.options.popupRender(o))}o.center?(s.setLngLat(o.center).addTo(this._map),this.options.popup&&s.setPopup(p)):o.geometry&&o.geometry.type&&o.geometry.type==="Point"&&o.geometry.coordinates&&(s.setLngLat(o.geometry.coordinates).addTo(this._map),this.options.popup&&s.setPopup(p)),this.resultMarkers.push(s)}.bind(this)),this}},_removeResultMarkers:function(){this.resultMarkers&&this.resultMarkers.length>0&&(this.resultMarkers.forEach(function(n){n.remove()}),this.resultMarkers=[])},on:function(n,e){return this._eventEmitter.on(n,e),this},off:function(n,e){return this._eventEmitter.removeListener(n,e),this}};uv.exports=cv});var f2={};iC(f2,{default:()=>sU});function Ya(n,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");LC(n,e);function r(){this.constructor=n}n.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}function po(n,e,r,o){function l(s){return s instanceof r?s:new r(function(p){p(s)})}return new(r||(r=Promise))(function(s,p){function m(_){try{w(o.next(_))}catch(E){p(E)}}function I(_){try{w(o.throw(_))}catch(E){p(E)}}function w(_){_.done?s(_.value):l(_.value).then(m,I)}w((o=o.apply(n,e||[])).next())})}function Ys(n,e){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},o,l,s,p;return p={next:m(0),throw:m(1),return:m(2)},typeof Symbol=="function"&&(p[Symbol.iterator]=function(){return this}),p;function m(w){return function(_){return I([w,_])}}function I(w){if(o)throw new TypeError("Generator is already executing.");for(;r;)try{if(o=1,l&&(s=w[0]&2?l.return:w[0]?l.throw||((s=l.return)&&s.call(l),0):l.next)&&!(s=s.call(l,w[1])).done)return s;switch(l=0,s&&(w=[w[0]&2,s.value]),w[0]){case 0:case 1:s=w;break;case 4:return r.label++,{value:w[1],done:!1};case 5:r.label++,l=w[1],w=[0];continue;case 7:w=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(w[0]===6||w[0]===2)){r=0;continue}if(w[0]===3&&(!s||w[1]>s[0]&&w[1]=1&&(r-=1),r<1/6?(e-n)*r*6+n:r<1/2?e:r<2/3?(e-n)*6*(2/3-r)+n:n}function Zk(n){return!(n.type===20&&n.value==="none")&&(n.type!==18||!!Kw[n.name])}var LC,EC,Sl,cp,Z3,up,Sn,gv,P3,Yh,dv,sg,jh,H3,M3,N3,Xc,$C,cC,V3,gw,D3,uC,K3,O3,z3,W3,J3,X3,Y3,j3,pv,q3,$3,t4,fv,e4,qh,i4,mv,r4,dw,pw,n4,s4,Cv,fw,Iv,uc,TC,yv,UC,o4,og,QC,Ud,$h,a4,bv,RC,tg,hC,Mu,ga,ag,Ag,Nu,A4,Ju,l4,Qd,Rd,GC,ZC,PC,mg,HC,Yd,jd,gC,mw,c4,u4,Cw,go,Gd,MC,Bl,NC,Iw,vv,h4,wv,g4,d4,dC,Bv,p4,f4,m4,C4,I4,y4,yg,_v,tp,xv,hg,b4,v4,Zd,eg,w4,B4,_4,Pd,Hd,ig,x4,Do,S4,F4,k4,L4,E4,T4,U4,Q4,Md,R4,Sv,G4,Z4,Fv,pC,Wc,P4,H4,M4,Cg,N4,V4,D4,K4,O4,z4,DA,yw,bw,vw,W4,J4,X4,ww,Bw,_w,Y4,j4,fo,q4,Vu,$4,tk,ek,ik,Nd,ep,kv,rk,cc,Vd,fC,nk,sk,ok,ak,Ak,lk,ck,uk,hk,gk,dk,pk,Dd,fk,mk,Ck,Ik,yk,bk,vk,wk,VC,xw,Sw,bg,qu,Xr,Bk,DC,Fw,ju,KA,_k,fc,On,kw,Fs,t0,hc,lg,sn,Lw,Ew,Tw,Uw,hp,Qw,Rw,_a,dc,pc,hs,gc,Lv,Ev,Tv,xk,gg,xl,Sk,Fk,gp,Uv,kk,Lk,Xa,Qv,Ek,Tk,Kd,Uk,Gw,Zw,Pw,Hw,Mw,Nw,Vw,Dw,Qk,Od,Rk,Gk,e0,Kw,Pk,Hk,Mk,Nk,Vk,Yu,Dk,Kk,dp,Ok,zk,Wk,Jk,pp,Xk,Yk,jk,qk,fp,$k,tL,eL,iL,mp,rL,nL,sL,oL,aL,AL,lL,cL,uL,hL,ip,gL,dL,Rv,pL,fL,KC,Cp,mL,CL,IL,yL,bL,vL,Ip,wL,BL,_L,xL,SL,FL,kL,LL,EL,TL,UL,QL,Gv,RL,GL,ZL,dg,PL,HL,Ow,ML,NL,VL,DL,KL,OL,zL,WL,ts,JL,XL,YL,jL,qL,Zv,$L,tE,eE,iE,rE,nE,Pv,yi,sE,oE,OC,OA,aE,Hv,cg,rg,AE,lE,cE,Yc,i0,CC,uE,zw,hE,IC,gE,dE,pE,fE,mE,CE,IE,yE,Mv,bE,vE,wE,Nv,BE,ng,_E,yC,bC,Vv,Dv,xE,Kv,vC,wC,Ov,zv,Wv,Jv,BC,SE,FE,kE,Jc,Xv,LE,EE,TE,UE,QE,RE,GE,ZE,PE,Yv,HE,zC,jv,Ss,pg,ME,NE,qv,r0,VE,DE,KE,OE,zE,WE,JE,XE,Ww,Jw,Xw,Yw,WC,YE,jE,qE,$E,rp,np,tT,$v,n0,jw,qw,$w,eT,qd,t2,e2,iT,rT,i2,Xu,JC,$d,nT,sT,oT,aT,r2,s0,n2,tw,XC,s2,ew,AT,sp,op,o2,iw,lT,rw,nw,cT,uT,Du,a2,xn,zc,zu,Ac,lc,ug,_l,sw,ow,aw,_C,Ig,A2,Aw,fg,hT,gT,dT,pT,fT,xC,mT,CT,IT,yT,bT,YC,jC,lw,vT,wT,l2,BT,_T,xT,ST,FT,SC,kT,FC,LT,di,Ku,zd,Ba,ET,Nr,hn,ap,TT,Ap,UT,Wd,QT,RT,c2,GT,cw,ZT,u2,h2,qC,g2,PT,uw,HT,MT,NT,Jd,xa,d2,lp,VT,DT,kC,Ou,Xd,KT,Wu,OT,zT,hw,WT,p2,JT,XT,YT,jT,qT,$T,tU,eU,iU,rU,nU,sU,oU,aU,m2=_d(()=>{LC=function(n,e){return LC=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var l in o)Object.prototype.hasOwnProperty.call(o,l)&&(r[l]=o[l])},LC(n,e)};EC=function(){return EC=Object.assign||function(n){for(var e,r=1,o=arguments.length;r=55296&&l<=56319&&r>10)+55296,p%1024+56320)),(l+1===r||o.length>16384)&&(s+=String.fromCharCode.apply(String,o),o.length=0)}return s},gv="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",P3=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(Yh=0;Yh"u"?[]:new Uint8Array(256);for(jh=0;jh>4,_[l++]=(p&15)<<4|m>>2,_[l++]=(m&3)<<6|I&63;return w},M3=function(n){for(var e=n.length,r=[],o=0;o>Xc,D3=1<>Xc,O3=gw+K3,z3=O3,W3=32,J3=z3+W3,X3=65536>>$C,Y3=1<=0){if(e<55296||e>56319&&e<=65535)return r=this.index[e>>Xc],r=(r<>Xc)],r=(r<>$C),r=this.index[r],r+=e>>Xc&j3,r=this.index[r],r=(r<"u"?[]:new Uint8Array(256);for(qh=0;qhmv?(l.push(!0),m-=mv):l.push(!1),["normal","auto","loose"].indexOf(e)!==-1&&[8208,8211,12316,12448].indexOf(s)!==-1)return o.push(p),r.push(QC);if(m===n4||m===TC){if(p===0)return o.push(p),r.push(Ju);var I=r[p-1];return h4.indexOf(I)===-1?(o.push(o[p-1]),r.push(I)):(o.push(p),r.push(Ju))}if(o.push(p),m===l4)return r.push(e==="strict"?RC:mg);if(m===mw||m===A4)return r.push(Ju);if(m===c4)return s>=131072&&s<=196605||s>=196608&&s<=262141?r.push(mg):r.push(Ju);r.push(m)}),[o,r,l]},dC=function(n,e,r,o){var l=o[r];if(Array.isArray(n)?n.indexOf(l)!==-1:n===l)for(var s=r;s<=o.length;){s++;var p=o[s];if(p===e)return!0;if(p!==uc)break}if(l===uc)for(var s=r;s>0;){s--;var m=o[s];if(Array.isArray(n)?n.indexOf(m)!==-1:n===m)for(var I=r;I<=o.length;){I++;var p=o[I];if(p===e)return!0;if(p!==uc)break}if(m!==uc)break}return!1},Bv=function(n,e){for(var r=n;r>=0;){var o=e[r];if(o===uc)r--;else return o}return 0},p4=function(n,e,r,o,l){if(r[o]===0)return go;var s=o-1;if(Array.isArray(l)&&l[s]===!0)return go;var p=s-1,m=s+1,I=e[s],w=p>=0?e[p]:0,_=e[m];if(I===dw&&_===pw)return go;if(NC.indexOf(I)!==-1)return Cw;if(NC.indexOf(_)!==-1||Iw.indexOf(_)!==-1)return go;if(Bv(s,e)===fw)return Gd;if(MC.get(n[s])===TC||(I===Qd||I===Rd)&&MC.get(n[m])===TC||I===Cv||_===Cv||I===Iv||[uc,UC,og].indexOf(I)===-1&&_===Iv||[Ud,$h,a4,Mu,Nu].indexOf(_)!==-1||Bv(s,e)===tg||dC(hC,tg,s,e)||dC([Ud,$h],RC,s,e)||dC(yv,yv,s,e))return go;if(I===uc)return Gd;if(I===hC||_===hC)return go;if(_===QC||I===QC)return Gd;if([UC,og,RC].indexOf(_)!==-1||I===o4||w===PC&&g4.indexOf(I)!==-1||I===Nu&&_===PC||_===bv||Bl.indexOf(_)!==-1&&I===ga||Bl.indexOf(I)!==-1&&_===ga||I===Ag&&[mg,Qd,Rd].indexOf(_)!==-1||[mg,Qd,Rd].indexOf(I)!==-1&&_===ag||Bl.indexOf(I)!==-1&&vv.indexOf(_)!==-1||vv.indexOf(I)!==-1&&Bl.indexOf(_)!==-1||[Ag,ag].indexOf(I)!==-1&&(_===ga||[tg,og].indexOf(_)!==-1&&e[m+1]===ga)||[tg,og].indexOf(I)!==-1&&_===ga||I===ga&&[ga,Nu,Mu].indexOf(_)!==-1)return go;if([ga,Nu,Mu,Ud,$h].indexOf(_)!==-1)for(var E=s;E>=0;){var U=e[E];if(U===ga)return go;if([Nu,Mu].indexOf(U)!==-1)E--;else break}if([Ag,ag].indexOf(_)!==-1)for(var E=[Ud,$h].indexOf(I)!==-1?p:s;E>=0;){var U=e[E];if(U===ga)return go;if([Nu,Mu].indexOf(U)!==-1)E--;else break}if(HC===I&&[HC,Yd,GC,ZC].indexOf(_)!==-1||[Yd,GC].indexOf(I)!==-1&&[Yd,jd].indexOf(_)!==-1||[jd,ZC].indexOf(I)!==-1&&_===jd||wv.indexOf(I)!==-1&&[bv,ag].indexOf(_)!==-1||wv.indexOf(_)!==-1&&I===Ag||Bl.indexOf(I)!==-1&&Bl.indexOf(_)!==-1||I===Mu&&Bl.indexOf(_)!==-1||Bl.concat(ga).indexOf(I)!==-1&&_===tg&&u4.indexOf(n[m])===-1||Bl.concat(ga).indexOf(_)!==-1&&I===$h)return go;if(I===gC&&_===gC){for(var F=r[s],V=1;F>0&&(F--,e[F]===gC);)V++;if(V%2!==0)return go}return I===Qd&&_===Rd?go:Gd},f4=function(n,e){e||(e={lineBreak:"normal",wordBreak:"normal"});var r=d4(n,e.lineBreak),o=r[0],l=r[1],s=r[2];(e.wordBreak==="break-all"||e.wordBreak==="break-word")&&(l=l.map(function(m){return[ga,Ju,mw].indexOf(m)!==-1?mg:m}));var p=e.wordBreak==="keep-all"?s.map(function(m,I){return m&&n[I]>=19968&&n[I]<=40959}):void 0;return[o,l,p]},m4=function(){function n(e,r,o,l){this.codePoints=e,this.required=r===Cw,this.start=o,this.end=l}return n.prototype.slice=function(){return Sn.apply(void 0,this.codePoints.slice(this.start,this.end))},n}(),C4=function(n,e){var r=up(n),o=f4(r,e),l=o[0],s=o[1],p=o[2],m=r.length,I=0,w=0;return{next:function(){if(w>=m)return{done:!0,value:null};for(var _=go;w=yw&&n<=57},q4=function(n){return n>=55296&&n<=57343},Vu=function(n){return fo(n)||n>=ww&&n<=_w||n>=bw&&n<=W4},$4=function(n){return n>=bw&&n<=X4},tk=function(n){return n>=ww&&n<=j4},ek=function(n){return $4(n)||tk(n)},ik=function(n){return n>=Z4},Nd=function(n){return n===tp||n===b4||n===v4},ep=function(n){return ek(n)||ik(n)||n===x4},kv=function(n){return ep(n)||fo(n)||n===Do},rk=function(n){return n>=N4&&n<=V4||n===D4||n>=K4&&n<=O4||n===z4},cc=function(n,e){return n!==hg?!1:e!==tp},Vd=function(n,e,r){return n===Do?ep(e)||cc(e,r):ep(n)?!0:!!(n===hg&&cc(n,e))},fC=function(n,e,r){return n===Wc||n===Do?fo(e)?!0:e===Cg&&fo(r):fo(n===Cg?e:n)},nk=function(n){var e=0,r=1;(n[e]===Wc||n[e]===Do)&&(n[e]===Do&&(r=-1),e++);for(var o=[];fo(n[e]);)o.push(n[e++]);var l=o.length?parseInt(Sn.apply(void 0,o),10):0;n[e]===Cg&&e++;for(var s=[];fo(n[e]);)s.push(n[e++]);var p=s.length,m=p?parseInt(Sn.apply(void 0,s),10):0;(n[e]===Bw||n[e]===vw)&&e++;var I=1;(n[e]===Wc||n[e]===Do)&&(n[e]===Do&&(I=-1),e++);for(var w=[];fo(n[e]);)w.push(n[e++]);var _=w.length?parseInt(Sn.apply(void 0,w),10):0;return r*(l+m*Math.pow(10,-p))*Math.pow(10,I*_)},sk={type:2},ok={type:3},ak={type:4},Ak={type:13},lk={type:8},ck={type:21},uk={type:9},hk={type:10},gk={type:11},dk={type:12},pk={type:14},Dd={type:23},fk={type:1},mk={type:25},Ck={type:24},Ik={type:26},yk={type:27},bk={type:28},vk={type:29},wk={type:31},VC={type:32},xw=function(){function n(){this._value=[]}return n.prototype.write=function(e){this._value=this._value.concat(up(e))},n.prototype.read=function(){for(var e=[],r=this.consumeToken();r!==VC;)e.push(r),r=this.consumeToken();return e},n.prototype.consumeToken=function(){var e=this.consumeCodePoint();switch(e){case Zd:return this.consumeStringToken(Zd);case w4:var r=this.peekCodePoint(0),o=this.peekCodePoint(1),l=this.peekCodePoint(2);if(kv(r)||cc(o,l)){var s=Vd(r,o,l)?y4:I4,p=this.consumeName();return{type:5,value:p,flags:s}}break;case B4:if(this.peekCodePoint(0)===eg)return this.consumeCodePoint(),Ak;break;case Pd:return this.consumeStringToken(Pd);case Hd:return sk;case ig:return ok;case pC:if(this.peekCodePoint(0)===eg)return this.consumeCodePoint(),pk;break;case Wc:if(fC(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case P4:return ak;case Do:var m=e,I=this.peekCodePoint(0),w=this.peekCodePoint(1);if(fC(m,I,w))return this.reconsumeCodePoint(e),this.consumeNumericToken();if(Vd(m,I,w))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();if(I===Do&&w===k4)return this.consumeCodePoint(),this.consumeCodePoint(),Ck;break;case Cg:if(fC(e,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(e),this.consumeNumericToken();break;case xv:if(this.peekCodePoint(0)===pC)for(this.consumeCodePoint();;){var _=this.consumeCodePoint();if(_===pC&&(_=this.consumeCodePoint(),_===xv))return this.consumeToken();if(_===DA)return this.consumeToken()}break;case H4:return Ik;case M4:return yk;case F4:if(this.peekCodePoint(0)===S4&&this.peekCodePoint(1)===Do&&this.peekCodePoint(2)===Do)return this.consumeCodePoint(),this.consumeCodePoint(),mk;break;case L4:var E=this.peekCodePoint(0),U=this.peekCodePoint(1),F=this.peekCodePoint(2);if(Vd(E,U,F)){var p=this.consumeName();return{type:7,value:p}}break;case E4:return bk;case hg:if(cc(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),this.consumeIdentLikeToken();break;case T4:return vk;case U4:if(this.peekCodePoint(0)===eg)return this.consumeCodePoint(),lk;break;case Q4:return gk;case R4:return dk;case J4:case Y4:var V=this.peekCodePoint(0),H=this.peekCodePoint(1);return V===Wc&&(Vu(H)||H===Md)&&(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(e),this.consumeIdentLikeToken();case Sv:if(this.peekCodePoint(0)===eg)return this.consumeCodePoint(),uk;if(this.peekCodePoint(0)===Sv)return this.consumeCodePoint(),ck;break;case G4:if(this.peekCodePoint(0)===eg)return this.consumeCodePoint(),hk;break;case DA:return VC}return Nd(e)?(this.consumeWhiteSpace(),wk):fo(e)?(this.reconsumeCodePoint(e),this.consumeNumericToken()):ep(e)?(this.reconsumeCodePoint(e),this.consumeIdentLikeToken()):{type:6,value:Sn(e)}},n.prototype.consumeCodePoint=function(){var e=this._value.shift();return typeof e>"u"?-1:e},n.prototype.reconsumeCodePoint=function(e){this._value.unshift(e)},n.prototype.peekCodePoint=function(e){return e>=this._value.length?-1:this._value[e]},n.prototype.consumeUnicodeRangeToken=function(){for(var e=[],r=this.consumeCodePoint();Vu(r)&&e.length<6;)e.push(r),r=this.consumeCodePoint();for(var o=!1;r===Md&&e.length<6;)e.push(r),r=this.consumeCodePoint(),o=!0;if(o){var l=parseInt(Sn.apply(void 0,e.map(function(I){return I===Md?yw:I})),16),s=parseInt(Sn.apply(void 0,e.map(function(I){return I===Md?_w:I})),16);return{type:30,start:l,end:s}}var p=parseInt(Sn.apply(void 0,e),16);if(this.peekCodePoint(0)===Do&&Vu(this.peekCodePoint(1))){this.consumeCodePoint(),r=this.consumeCodePoint();for(var m=[];Vu(r)&&m.length<6;)m.push(r),r=this.consumeCodePoint();var s=parseInt(Sn.apply(void 0,m),16);return{type:30,start:p,end:s}}else return{type:30,start:p,end:p}},n.prototype.consumeIdentLikeToken=function(){var e=this.consumeName();return e.toLowerCase()==="url"&&this.peekCodePoint(0)===Hd?(this.consumeCodePoint(),this.consumeUrlToken()):this.peekCodePoint(0)===Hd?(this.consumeCodePoint(),{type:19,value:e}):{type:20,value:e}},n.prototype.consumeUrlToken=function(){var e=[];if(this.consumeWhiteSpace(),this.peekCodePoint(0)===DA)return{type:22,value:""};var r=this.peekCodePoint(0);if(r===Pd||r===Zd){var o=this.consumeStringToken(this.consumeCodePoint());return o.type===0&&(this.consumeWhiteSpace(),this.peekCodePoint(0)===DA||this.peekCodePoint(0)===ig)?(this.consumeCodePoint(),{type:22,value:o.value}):(this.consumeBadUrlRemnants(),Dd)}for(;;){var l=this.consumeCodePoint();if(l===DA||l===ig)return{type:22,value:Sn.apply(void 0,e)};if(Nd(l))return this.consumeWhiteSpace(),this.peekCodePoint(0)===DA||this.peekCodePoint(0)===ig?(this.consumeCodePoint(),{type:22,value:Sn.apply(void 0,e)}):(this.consumeBadUrlRemnants(),Dd);if(l===Zd||l===Pd||l===Hd||rk(l))return this.consumeBadUrlRemnants(),Dd;if(l===hg)if(cc(l,this.peekCodePoint(0)))e.push(this.consumeEscapedCodePoint());else return this.consumeBadUrlRemnants(),Dd;else e.push(l)}},n.prototype.consumeWhiteSpace=function(){for(;Nd(this.peekCodePoint(0));)this.consumeCodePoint()},n.prototype.consumeBadUrlRemnants=function(){for(;;){var e=this.consumeCodePoint();if(e===ig||e===DA)return;cc(e,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},n.prototype.consumeStringSlice=function(e){for(var r=5e4,o="";e>0;){var l=Math.min(r,e);o+=Sn.apply(void 0,this._value.splice(0,l)),e-=l}return this._value.shift(),o},n.prototype.consumeStringToken=function(e){var r="",o=0;do{var l=this._value[o];if(l===DA||l===void 0||l===e)return r+=this.consumeStringSlice(o),{type:0,value:r};if(l===tp)return this._value.splice(0,o),fk;if(l===hg){var s=this._value[o+1];s!==DA&&s!==void 0&&(s===tp?(r+=this.consumeStringSlice(o),o=-1,this._value.shift()):cc(l,s)&&(r+=this.consumeStringSlice(o),r+=Sn(this.consumeEscapedCodePoint()),o=-1))}o++}while(!0)},n.prototype.consumeNumber=function(){var e=[],r=yg,o=this.peekCodePoint(0);for((o===Wc||o===Do)&&e.push(this.consumeCodePoint());fo(this.peekCodePoint(0));)e.push(this.consumeCodePoint());o=this.peekCodePoint(0);var l=this.peekCodePoint(1);if(o===Cg&&fo(l))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),r=_v;fo(this.peekCodePoint(0));)e.push(this.consumeCodePoint());o=this.peekCodePoint(0),l=this.peekCodePoint(1);var s=this.peekCodePoint(2);if((o===Bw||o===vw)&&((l===Wc||l===Do)&&fo(s)||fo(l)))for(e.push(this.consumeCodePoint(),this.consumeCodePoint()),r=_v;fo(this.peekCodePoint(0));)e.push(this.consumeCodePoint());return[nk(e),r]},n.prototype.consumeNumericToken=function(){var e=this.consumeNumber(),r=e[0],o=e[1],l=this.peekCodePoint(0),s=this.peekCodePoint(1),p=this.peekCodePoint(2);if(Vd(l,s,p)){var m=this.consumeName();return{type:15,number:r,flags:o,unit:m}}return l===_4?(this.consumeCodePoint(),{type:16,number:r,flags:o}):{type:17,number:r,flags:o}},n.prototype.consumeEscapedCodePoint=function(){var e=this.consumeCodePoint();if(Vu(e)){for(var r=Sn(e);Vu(this.peekCodePoint(0))&&r.length<6;)r+=Sn(this.consumeCodePoint());Nd(this.peekCodePoint(0))&&this.consumeCodePoint();var o=parseInt(r,16);return o===0||q4(o)||o>1114111?Fv:o}return e===DA?Fv:e},n.prototype.consumeName=function(){for(var e="";;){var r=this.consumeCodePoint();if(kv(r))e+=Sn(r);else if(cc(r,this.peekCodePoint(0)))e+=Sn(this.consumeEscapedCodePoint());else return this.reconsumeCodePoint(r),e}},n}(),Sw=function(){function n(e){this._tokens=e}return n.create=function(e){var r=new xw;return r.write(e),new n(r.read())},n.parseValue=function(e){return n.create(e).parseComponentValue()},n.parseValues=function(e){return n.create(e).parseComponentValues()},n.prototype.parseComponentValue=function(){for(var e=this.consumeToken();e.type===31;)e=this.consumeToken();if(e.type===32)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(e);var r=this.consumeComponentValue();do e=this.consumeToken();while(e.type===31);if(e.type===32)return r;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},n.prototype.parseComponentValues=function(){for(var e=[];;){var r=this.consumeComponentValue();if(r.type===32)return e;e.push(r),e.push()}},n.prototype.consumeComponentValue=function(){var e=this.consumeToken();switch(e.type){case 11:case 28:case 2:return this.consumeSimpleBlock(e.type);case 19:return this.consumeFunction(e)}return e},n.prototype.consumeSimpleBlock=function(e){for(var r={type:e,values:[]},o=this.consumeToken();;){if(o.type===32||_k(o,e))return r;this.reconsumeToken(o),r.values.push(this.consumeComponentValue()),o=this.consumeToken()}},n.prototype.consumeFunction=function(e){for(var r={name:e.value,values:[],type:18};;){var o=this.consumeToken();if(o.type===32||o.type===3)return r;this.reconsumeToken(o),r.values.push(this.consumeComponentValue())}},n.prototype.consumeToken=function(){var e=this._tokens.shift();return typeof e>"u"?VC:e},n.prototype.reconsumeToken=function(e){this._tokens.unshift(e)},n}(),bg=function(n){return n.type===15},qu=function(n){return n.type===17},Xr=function(n){return n.type===20},Bk=function(n){return n.type===0},DC=function(n,e){return Xr(n)&&n.value===e},Fw=function(n){return n.type!==31},ju=function(n){return n.type!==31&&n.type!==4},KA=function(n){var e=[],r=[];return n.forEach(function(o){if(o.type===4){if(r.length===0)throw new Error("Error parsing function args, zero tokens for arg");e.push(r),r=[];return}o.type!==31&&r.push(o)}),r.length&&e.push(r),e},_k=function(n,e){return e===11&&n.type===12||e===28&&n.type===29?!0:e===2&&n.type===3},fc=function(n){return n.type===17||n.type===15},On=function(n){return n.type===16||fc(n)},kw=function(n){return n.length>1?[n[0],n[1]]:[n[0]]},Fs={type:17,number:0,flags:yg},t0={type:16,number:50,flags:yg},hc={type:16,number:100,flags:yg},lg=function(n,e,r){var o=n[0],l=n[1];return[sn(o,e),sn(typeof l<"u"?l:o,r)]},sn=function(n,e){if(n.type===16)return n.number/100*e;if(bg(n))switch(n.unit){case"rem":case"em":return 16*n.number;case"px":default:return n.number}return n.number},Lw="deg",Ew="grad",Tw="rad",Uw="turn",hp={name:"angle",parse:function(n,e){if(e.type===15)switch(e.unit){case Lw:return Math.PI*e.number/180;case Ew:return Math.PI/200*e.number;case Tw:return e.number;case Uw:return Math.PI*2*e.number}throw new Error("Unsupported angle type")}},Qw=function(n){return n.type===15&&(n.unit===Lw||n.unit===Ew||n.unit===Tw||n.unit===Uw)},Rw=function(n){var e=n.filter(Xr).map(function(r){return r.value}).join(" ");switch(e){case"to bottom right":case"to right bottom":case"left top":case"top left":return[Fs,Fs];case"to top":case"bottom":return _a(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[Fs,hc];case"to right":case"left":return _a(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[hc,hc];case"to bottom":case"top":return _a(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[hc,Fs];case"to left":case"right":return _a(270)}return 0},_a=function(n){return Math.PI*n/180},dc={name:"color",parse:function(n,e){if(e.type===18){var r=xk[e.name];if(typeof r>"u")throw new Error('Attempting to parse an unsupported color function "'+e.name+'"');return r(n,e.values)}if(e.type===5){if(e.value.length===3){var o=e.value.substring(0,1),l=e.value.substring(1,2),s=e.value.substring(2,3);return gc(parseInt(o+o,16),parseInt(l+l,16),parseInt(s+s,16),1)}if(e.value.length===4){var o=e.value.substring(0,1),l=e.value.substring(1,2),s=e.value.substring(2,3),p=e.value.substring(3,4);return gc(parseInt(o+o,16),parseInt(l+l,16),parseInt(s+s,16),parseInt(p+p,16)/255)}if(e.value.length===6){var o=e.value.substring(0,2),l=e.value.substring(2,4),s=e.value.substring(4,6);return gc(parseInt(o,16),parseInt(l,16),parseInt(s,16),1)}if(e.value.length===8){var o=e.value.substring(0,2),l=e.value.substring(2,4),s=e.value.substring(4,6),p=e.value.substring(6,8);return gc(parseInt(o,16),parseInt(l,16),parseInt(s,16),parseInt(p,16)/255)}}if(e.type===20){var m=xl[e.value.toUpperCase()];if(typeof m<"u")return m}return xl.TRANSPARENT}},pc=function(n){return(255&n)===0},hs=function(n){var e=255&n,r=255&n>>8,o=255&n>>16,l=255&n>>24;return e<255?"rgba("+l+","+o+","+r+","+e/255+")":"rgb("+l+","+o+","+r+")"},gc=function(n,e,r,o){return(n<<24|e<<16|r<<8|Math.round(o*255)<<0)>>>0},Lv=function(n,e){if(n.type===17)return n.number;if(n.type===16){var r=e===3?1:255;return e===3?n.number/100*r:Math.round(n.number/100*r)}return 0},Ev=function(n,e){var r=e.filter(ju);if(r.length===3){var o=r.map(Lv),l=o[0],s=o[1],p=o[2];return gc(l,s,p,1)}if(r.length===4){var m=r.map(Lv),l=m[0],s=m[1],p=m[2],I=m[3];return gc(l,s,p,I)}return 0};Tv=function(n,e){var r=e.filter(ju),o=r[0],l=r[1],s=r[2],p=r[3],m=(o.type===17?_a(o.number):hp.parse(n,o))/(Math.PI*2),I=On(l)?l.number/100:0,w=On(s)?s.number/100:0,_=typeof p<"u"&&On(p)?sn(p,1):1;if(I===0)return gc(w*255,w*255,w*255,1);var E=w<=.5?w*(I+1):w+I-w*I,U=w*2-E,F=mC(U,E,m+1/3),V=mC(U,E,m),H=mC(U,E,m-1/3);return gc(F*255,V*255,H*255,_)},xk={hsl:Tv,hsla:Tv,rgb:Ev,rgba:Ev},gg=function(n,e){return dc.parse(n,Sw.create(e).parseComponentValue())},xl={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199},Sk={name:"background-clip",initialValue:"border-box",prefix:!1,type:1,parse:function(n,e){return e.map(function(r){if(Xr(r))switch(r.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Fk={name:"background-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},gp=function(n,e){var r=dc.parse(n,e[0]),o=e[1];return o&&On(o)?{color:r,stop:o}:{color:r,stop:null}},Uv=function(n,e){var r=n[0],o=n[n.length-1];r.stop===null&&(r.stop=Fs),o.stop===null&&(o.stop=hc);for(var l=[],s=0,p=0;ps?l.push(I):l.push(s),s=I}else l.push(null)}for(var w=null,p=0;pp.optimumDistance)?{optimumCorner:m,optimumDistance:_}:p},{optimumDistance:l?1/0:-1/0,optimumCorner:null}).optimumCorner},Ek=function(n,e,r,o,l){var s=0,p=0;switch(n.size){case 0:n.shape===0?s=p=Math.min(Math.abs(e),Math.abs(e-o),Math.abs(r),Math.abs(r-l)):n.shape===1&&(s=Math.min(Math.abs(e),Math.abs(e-o)),p=Math.min(Math.abs(r),Math.abs(r-l)));break;case 2:if(n.shape===0)s=p=Math.min(Xa(e,r),Xa(e,r-l),Xa(e-o,r),Xa(e-o,r-l));else if(n.shape===1){var m=Math.min(Math.abs(r),Math.abs(r-l))/Math.min(Math.abs(e),Math.abs(e-o)),I=Qv(o,l,e,r,!0),w=I[0],_=I[1];s=Xa(w-e,(_-r)/m),p=m*s}break;case 1:n.shape===0?s=p=Math.max(Math.abs(e),Math.abs(e-o),Math.abs(r),Math.abs(r-l)):n.shape===1&&(s=Math.max(Math.abs(e),Math.abs(e-o)),p=Math.max(Math.abs(r),Math.abs(r-l)));break;case 3:if(n.shape===0)s=p=Math.max(Xa(e,r),Xa(e,r-l),Xa(e-o,r),Xa(e-o,r-l));else if(n.shape===1){var m=Math.max(Math.abs(r),Math.abs(r-l))/Math.max(Math.abs(e),Math.abs(e-o)),E=Qv(o,l,e,r,!1),w=E[0],_=E[1];s=Xa(w-e,(_-r)/m),p=m*s}break}return Array.isArray(n.size)&&(s=sn(n.size[0],o),p=n.size.length===2?sn(n.size[1],l):s),[s,p]},Tk=function(n,e){var r=_a(180),o=[];return KA(e).forEach(function(l,s){if(s===0){var p=l[0];if(p.type===20&&p.value==="to"){r=Rw(l);return}else if(Qw(p)){r=hp.parse(n,p);return}}var m=gp(n,l);o.push(m)}),{angle:r,stops:o,type:1}},Kd=function(n,e){var r=_a(180),o=[];return KA(e).forEach(function(l,s){if(s===0){var p=l[0];if(p.type===20&&["top","left","right","bottom"].indexOf(p.value)!==-1){r=Rw(l);return}else if(Qw(p)){r=(hp.parse(n,p)+_a(270))%_a(360);return}}var m=gp(n,l);o.push(m)}),{angle:r,stops:o,type:1}},Uk=function(n,e){var r=_a(180),o=[],l=1,s=0,p=3,m=[];return KA(e).forEach(function(I,w){var _=I[0];if(w===0){if(Xr(_)&&_.value==="linear"){l=1;return}else if(Xr(_)&&_.value==="radial"){l=2;return}}if(_.type===18){if(_.name==="from"){var E=dc.parse(n,_.values[0]);o.push({stop:Fs,color:E})}else if(_.name==="to"){var E=dc.parse(n,_.values[0]);o.push({stop:hc,color:E})}else if(_.name==="color-stop"){var U=_.values.filter(ju);if(U.length===2){var E=dc.parse(n,U[1]),F=U[0];qu(F)&&o.push({stop:{type:16,number:F.number*100,flags:F.flags},color:E})}}}}),l===1?{angle:(r+_a(180))%_a(360),stops:o,type:l}:{size:p,shape:s,stops:o,position:m,type:l}},Gw="closest-side",Zw="farthest-side",Pw="closest-corner",Hw="farthest-corner",Mw="circle",Nw="ellipse",Vw="cover",Dw="contain",Qk=function(n,e){var r=0,o=3,l=[],s=[];return KA(e).forEach(function(p,m){var I=!0;if(m===0){var w=!1;I=p.reduce(function(E,U){if(w)if(Xr(U))switch(U.value){case"center":return s.push(t0),E;case"top":case"left":return s.push(Fs),E;case"right":case"bottom":return s.push(hc),E}else(On(U)||fc(U))&&s.push(U);else if(Xr(U))switch(U.value){case Mw:return r=0,!1;case Nw:return r=1,!1;case"at":return w=!0,!1;case Gw:return o=0,!1;case Vw:case Zw:return o=1,!1;case Dw:case Pw:return o=2,!1;case Hw:return o=3,!1}else if(fc(U)||On(U))return Array.isArray(o)||(o=[]),o.push(U),!1;return E},I)}if(I){var _=gp(n,p);l.push(_)}}),{size:o,shape:r,stops:l,position:s,type:2}},Od=function(n,e){var r=0,o=3,l=[],s=[];return KA(e).forEach(function(p,m){var I=!0;if(m===0?I=p.reduce(function(_,E){if(Xr(E))switch(E.value){case"center":return s.push(t0),!1;case"top":case"left":return s.push(Fs),!1;case"right":case"bottom":return s.push(hc),!1}else if(On(E)||fc(E))return s.push(E),!1;return _},I):m===1&&(I=p.reduce(function(_,E){if(Xr(E))switch(E.value){case Mw:return r=0,!1;case Nw:return r=1,!1;case Dw:case Gw:return o=0,!1;case Zw:return o=1,!1;case Pw:return o=2,!1;case Vw:case Hw:return o=3,!1}else if(fc(E)||On(E))return Array.isArray(o)||(o=[]),o.push(E),!1;return _},I)),I){var w=gp(n,p);l.push(w)}}),{size:o,shape:r,stops:l,position:s,type:2}},Rk=function(n){return n.type===1},Gk=function(n){return n.type===2},e0={name:"image",parse:function(n,e){if(e.type===22){var r={url:e.value,type:0};return n.cache.addImage(e.value),r}if(e.type===18){var o=Kw[e.name];if(typeof o>"u")throw new Error('Attempting to parse an unsupported image function "'+e.name+'"');return o(n,e.values)}throw new Error("Unsupported image type "+e.type)}};Kw={"linear-gradient":Tk,"-moz-linear-gradient":Kd,"-ms-linear-gradient":Kd,"-o-linear-gradient":Kd,"-webkit-linear-gradient":Kd,"radial-gradient":Qk,"-moz-radial-gradient":Od,"-ms-radial-gradient":Od,"-o-radial-gradient":Od,"-webkit-radial-gradient":Od,"-webkit-gradient":Uk},Pk={name:"background-image",initialValue:"none",type:1,prefix:!1,parse:function(n,e){if(e.length===0)return[];var r=e[0];return r.type===20&&r.value==="none"?[]:e.filter(function(o){return ju(o)&&Zk(o)}).map(function(o){return e0.parse(n,o)})}},Hk={name:"background-origin",initialValue:"border-box",prefix:!1,type:1,parse:function(n,e){return e.map(function(r){if(Xr(r))switch(r.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},Mk={name:"background-position",initialValue:"0% 0%",type:1,prefix:!1,parse:function(n,e){return KA(e).map(function(r){return r.filter(On)}).map(kw)}},Nk={name:"background-repeat",initialValue:"repeat",prefix:!1,type:1,parse:function(n,e){return KA(e).map(function(r){return r.filter(Xr).map(function(o){return o.value}).join(" ")}).map(Vk)}},Vk=function(n){switch(n){case"no-repeat":return 1;case"repeat-x":case"repeat no-repeat":return 2;case"repeat-y":case"no-repeat repeat":return 3;case"repeat":default:return 0}};(function(n){n.AUTO="auto",n.CONTAIN="contain",n.COVER="cover"})(Yu||(Yu={}));Dk={name:"background-size",initialValue:"0",prefix:!1,type:1,parse:function(n,e){return KA(e).map(function(r){return r.filter(Kk)})}},Kk=function(n){return Xr(n)||On(n)},dp=function(n){return{name:"border-"+n+"-color",initialValue:"transparent",prefix:!1,type:3,format:"color"}},Ok=dp("top"),zk=dp("right"),Wk=dp("bottom"),Jk=dp("left"),pp=function(n){return{name:"border-radius-"+n,initialValue:"0 0",prefix:!1,type:1,parse:function(e,r){return kw(r.filter(On))}}},Xk=pp("top-left"),Yk=pp("top-right"),jk=pp("bottom-right"),qk=pp("bottom-left"),fp=function(n){return{name:"border-"+n+"-style",initialValue:"solid",prefix:!1,type:2,parse:function(e,r){switch(r){case"none":return 0;case"dashed":return 2;case"dotted":return 3;case"double":return 4}return 1}}},$k=fp("top"),tL=fp("right"),eL=fp("bottom"),iL=fp("left"),mp=function(n){return{name:"border-"+n+"-width",initialValue:"0",type:0,prefix:!1,parse:function(e,r){return bg(r)?r.number:0}}},rL=mp("top"),nL=mp("right"),sL=mp("bottom"),oL=mp("left"),aL={name:"color",initialValue:"transparent",prefix:!1,type:3,format:"color"},AL={name:"direction",initialValue:"ltr",prefix:!1,type:2,parse:function(n,e){switch(e){case"rtl":return 1;case"ltr":default:return 0}}},lL={name:"display",initialValue:"inline-block",prefix:!1,type:1,parse:function(n,e){return e.filter(Xr).reduce(function(r,o){return r|cL(o.value)},0)}},cL=function(n){switch(n){case"block":case"-webkit-box":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0},uL={name:"float",initialValue:"none",prefix:!1,type:2,parse:function(n,e){switch(e){case"left":return 1;case"right":return 2;case"inline-start":return 3;case"inline-end":return 4}return 0}},hL={name:"letter-spacing",initialValue:"0",prefix:!1,type:0,parse:function(n,e){return e.type===20&&e.value==="normal"?0:e.type===17||e.type===15?e.number:0}};(function(n){n.NORMAL="normal",n.STRICT="strict"})(ip||(ip={}));gL={name:"line-break",initialValue:"normal",prefix:!1,type:2,parse:function(n,e){switch(e){case"strict":return ip.STRICT;case"normal":default:return ip.NORMAL}}},dL={name:"line-height",initialValue:"normal",prefix:!1,type:4},Rv=function(n,e){return Xr(n)&&n.value==="normal"?1.2*e:n.type===17?e*n.number:On(n)?sn(n,e):e},pL={name:"list-style-image",initialValue:"none",type:0,prefix:!1,parse:function(n,e){return e.type===20&&e.value==="none"?null:e0.parse(n,e)}},fL={name:"list-style-position",initialValue:"outside",prefix:!1,type:2,parse:function(n,e){switch(e){case"inside":return 0;case"outside":default:return 1}}},KC={name:"list-style-type",initialValue:"none",prefix:!1,type:2,parse:function(n,e){switch(e){case"disc":return 0;case"circle":return 1;case"square":return 2;case"decimal":return 3;case"cjk-decimal":return 4;case"decimal-leading-zero":return 5;case"lower-roman":return 6;case"upper-roman":return 7;case"lower-greek":return 8;case"lower-alpha":return 9;case"upper-alpha":return 10;case"arabic-indic":return 11;case"armenian":return 12;case"bengali":return 13;case"cambodian":return 14;case"cjk-earthly-branch":return 15;case"cjk-heavenly-stem":return 16;case"cjk-ideographic":return 17;case"devanagari":return 18;case"ethiopic-numeric":return 19;case"georgian":return 20;case"gujarati":return 21;case"gurmukhi":return 22;case"hebrew":return 22;case"hiragana":return 23;case"hiragana-iroha":return 24;case"japanese-formal":return 25;case"japanese-informal":return 26;case"kannada":return 27;case"katakana":return 28;case"katakana-iroha":return 29;case"khmer":return 30;case"korean-hangul-formal":return 31;case"korean-hanja-formal":return 32;case"korean-hanja-informal":return 33;case"lao":return 34;case"lower-armenian":return 35;case"malayalam":return 36;case"mongolian":return 37;case"myanmar":return 38;case"oriya":return 39;case"persian":return 40;case"simp-chinese-formal":return 41;case"simp-chinese-informal":return 42;case"tamil":return 43;case"telugu":return 44;case"thai":return 45;case"tibetan":return 46;case"trad-chinese-formal":return 47;case"trad-chinese-informal":return 48;case"upper-armenian":return 49;case"disclosure-open":return 50;case"disclosure-closed":return 51;case"none":default:return-1}}},Cp=function(n){return{name:"margin-"+n,initialValue:"0",prefix:!1,type:4}},mL=Cp("top"),CL=Cp("right"),IL=Cp("bottom"),yL=Cp("left"),bL={name:"overflow",initialValue:"visible",prefix:!1,type:1,parse:function(n,e){return e.filter(Xr).map(function(r){switch(r.value){case"hidden":return 1;case"scroll":return 2;case"clip":return 3;case"auto":return 4;case"visible":default:return 0}})}},vL={name:"overflow-wrap",initialValue:"normal",prefix:!1,type:2,parse:function(n,e){switch(e){case"break-word":return"break-word";case"normal":default:return"normal"}}},Ip=function(n){return{name:"padding-"+n,initialValue:"0",prefix:!1,type:3,format:"length-percentage"}},wL=Ip("top"),BL=Ip("right"),_L=Ip("bottom"),xL=Ip("left"),SL={name:"text-align",initialValue:"left",prefix:!1,type:2,parse:function(n,e){switch(e){case"right":return 2;case"center":case"justify":return 1;case"left":default:return 0}}},FL={name:"position",initialValue:"static",prefix:!1,type:2,parse:function(n,e){switch(e){case"relative":return 1;case"absolute":return 2;case"fixed":return 3;case"sticky":return 4}return 0}},kL={name:"text-shadow",initialValue:"none",type:1,prefix:!1,parse:function(n,e){return e.length===1&&DC(e[0],"none")?[]:KA(e).map(function(r){for(var o={color:xl.TRANSPARENT,offsetX:Fs,offsetY:Fs,blur:Fs},l=0,s=0;s"u")throw new Error('Attempting to parse an unsupported transform function "'+e.name+'"');return r(e.values)}return null}},TL=function(n){var e=n.filter(function(r){return r.type===17}).map(function(r){return r.number});return e.length===6?e:null},UL=function(n){var e=n.filter(function(I){return I.type===17}).map(function(I){return I.number}),r=e[0],o=e[1];e[2],e[3];var l=e[4],s=e[5];e[6],e[7],e[8],e[9],e[10],e[11];var p=e[12],m=e[13];return e[14],e[15],e.length===16?[r,o,l,s,p,m]:null},QL={matrix:TL,matrix3d:UL},Gv={type:16,number:50,flags:yg},RL=[Gv,Gv],GL={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:1,parse:function(n,e){var r=e.filter(On);return r.length!==2?RL:[r[0],r[1]]}},ZL={name:"visible",initialValue:"none",prefix:!1,type:2,parse:function(n,e){switch(e){case"hidden":return 1;case"collapse":return 2;case"visible":default:return 0}}};(function(n){n.NORMAL="normal",n.BREAK_ALL="break-all",n.KEEP_ALL="keep-all"})(dg||(dg={}));PL={name:"word-break",initialValue:"normal",prefix:!1,type:2,parse:function(n,e){switch(e){case"break-all":return dg.BREAK_ALL;case"keep-all":return dg.KEEP_ALL;case"normal":default:return dg.NORMAL}}},HL={name:"z-index",initialValue:"auto",prefix:!1,type:0,parse:function(n,e){if(e.type===20)return{auto:!0,order:0};if(qu(e))return{auto:!1,order:e.number};throw new Error("Invalid z-index number parsed")}},Ow={name:"time",parse:function(n,e){if(e.type===15)switch(e.unit.toLowerCase()){case"s":return 1e3*e.number;case"ms":return e.number}throw new Error("Unsupported time type")}},ML={name:"opacity",initialValue:"1",type:0,prefix:!1,parse:function(n,e){return qu(e)?e.number:1}},NL={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:3,format:"color"},VL={name:"text-decoration-line",initialValue:"none",prefix:!1,type:1,parse:function(n,e){return e.filter(Xr).map(function(r){switch(r.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(r){return r!==0})}},DL={name:"font-family",initialValue:"",prefix:!1,type:1,parse:function(n,e){var r=[],o=[];return e.forEach(function(l){switch(l.type){case 20:case 0:r.push(l.value);break;case 17:r.push(l.number.toString());break;case 4:o.push(r.join(" ")),r.length=0;break}}),r.length&&o.push(r.join(" ")),o.map(function(l){return l.indexOf(" ")===-1?l:"'"+l+"'"})}},KL={name:"font-size",initialValue:"0",prefix:!1,type:3,format:"length"},OL={name:"font-weight",initialValue:"normal",type:0,prefix:!1,parse:function(n,e){if(qu(e))return e.number;if(Xr(e))switch(e.value){case"bold":return 700;case"normal":default:return 400}return 400}},zL={name:"font-variant",initialValue:"none",type:1,prefix:!1,parse:function(n,e){return e.filter(Xr).map(function(r){return r.value})}},WL={name:"font-style",initialValue:"normal",prefix:!1,type:2,parse:function(n,e){switch(e){case"oblique":return"oblique";case"italic":return"italic";case"normal":default:return"normal"}}},ts=function(n,e){return(n&e)!==0},JL={name:"content",initialValue:"none",type:1,prefix:!1,parse:function(n,e){if(e.length===0)return[];var r=e[0];return r.type===20&&r.value==="none"?[]:e}},XL={name:"counter-increment",initialValue:"none",prefix:!0,type:1,parse:function(n,e){if(e.length===0)return null;var r=e[0];if(r.type===20&&r.value==="none")return null;for(var o=[],l=e.filter(Fw),s=0;s1?1:0],this.overflowWrap=yi(e,vL,r.overflowWrap),this.paddingTop=yi(e,wL,r.paddingTop),this.paddingRight=yi(e,BL,r.paddingRight),this.paddingBottom=yi(e,_L,r.paddingBottom),this.paddingLeft=yi(e,xL,r.paddingLeft),this.paintOrder=yi(e,tE,r.paintOrder),this.position=yi(e,FL,r.position),this.textAlign=yi(e,SL,r.textAlign),this.textDecorationColor=yi(e,NL,(o=r.textDecorationColor)!==null&&o!==void 0?o:r.color),this.textDecorationLine=yi(e,VL,(l=r.textDecorationLine)!==null&&l!==void 0?l:r.textDecoration),this.textShadow=yi(e,kL,r.textShadow),this.textTransform=yi(e,LL,r.textTransform),this.transform=yi(e,EL,r.transform),this.transformOrigin=yi(e,GL,r.transformOrigin),this.visibility=yi(e,ZL,r.visibility),this.webkitTextStrokeColor=yi(e,eE,r.webkitTextStrokeColor),this.webkitTextStrokeWidth=yi(e,iE,r.webkitTextStrokeWidth),this.wordBreak=yi(e,PL,r.wordBreak),this.zIndex=yi(e,HL,r.zIndex)}return n.prototype.isVisible=function(){return this.display>0&&this.opacity>0&&this.visibility===0},n.prototype.isTransparent=function(){return pc(this.backgroundColor)},n.prototype.isTransformed=function(){return this.transform!==null},n.prototype.isPositioned=function(){return this.position!==0},n.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},n.prototype.isFloating=function(){return this.float!==0},n.prototype.isInlineLevel=function(){return ts(this.display,4)||ts(this.display,33554432)||ts(this.display,268435456)||ts(this.display,536870912)||ts(this.display,67108864)||ts(this.display,134217728)},n}(),nE=function(){function n(e,r){this.content=yi(e,JL,r.content),this.quotes=yi(e,qL,r.quotes)}return n}(),Pv=function(){function n(e,r){this.counterIncrement=yi(e,XL,r.counterIncrement),this.counterReset=yi(e,YL,r.counterReset)}return n}(),yi=function(n,e,r){var o=new xw,l=r!==null&&typeof r<"u"?r.toString():e.initialValue;o.write(l);var s=new Sw(o.read());switch(e.type){case 2:var p=s.parseComponentValue();return e.parse(n,Xr(p)?p.value:e.initialValue);case 0:return e.parse(n,s.parseComponentValue());case 1:return e.parse(n,s.parseComponentValues());case 4:return s.parseComponentValue();case 3:switch(e.format){case"angle":return hp.parse(n,s.parseComponentValue());case"color":return dc.parse(n,s.parseComponentValue());case"image":return e0.parse(n,s.parseComponentValue());case"length":var m=s.parseComponentValue();return fc(m)?m:Fs;case"length-percentage":var I=s.parseComponentValue();return On(I)?I:Fs;case"time":return Ow.parse(n,s.parseComponentValue())}break}},sE="data-html2canvas-debug",oE=function(n){var e=n.getAttribute(sE);switch(e){case"all":return 1;case"clone":return 2;case"parse":return 3;case"render":return 4;default:return 0}},OC=function(n,e){var r=oE(n);return r===1||e===r},OA=function(){function n(e,r){if(this.context=e,this.textNodes=[],this.elements=[],this.flags=0,OC(r,3))debugger;this.styles=new rE(e,window.getComputedStyle(r,null)),JC(r)&&(this.styles.animationDuration.some(function(o){return o>0})&&(r.style.animationDuration="0s"),this.styles.transform!==null&&(r.style.transform="none")),this.bounds=cp(this.context,r),OC(r,4)&&(this.flags|=16)}return n}(),aE="AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=",Hv="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",cg=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(rg=0;rg>4,_[l++]=(p&15)<<4|m>>2,_[l++]=(m&3)<<6|I&63;return w},lE=function(n){for(var e=n.length,r=[],o=0;o>Yc,hE=1<>Yc,dE=zw+gE,pE=dE,fE=32,mE=pE+fE,CE=65536>>i0,IE=1<=0){if(e<55296||e>56319&&e<=65535)return r=this.index[e>>Yc],r=(r<>Yc)],r=(r<>i0),r=this.index[r],r+=e>>Yc&yE,r=this.index[r],r=(r<"u"?[]:new Uint8Array(256);for(ng=0;ng=55296&&l<=56319&&r>10)+55296,p%1024+56320)),(l+1===r||o.length>16384)&&(s+=String.fromCharCode.apply(String,o),o.length=0)}return s},kE=vE(aE),Jc="\xD7",Xv="\xF7",LE=function(n){return kE.get(n)},EE=function(n,e,r){var o=r-2,l=e[o],s=e[r-1],p=e[r];if(s===yC&&p===bC)return Jc;if(s===yC||s===bC||s===Vv||p===yC||p===bC||p===Vv)return Xv;if(s===Kv&&[Kv,vC,Ov,zv].indexOf(p)!==-1||(s===Ov||s===vC)&&(p===vC||p===wC)||(s===zv||s===wC)&&p===wC||p===Wv||p===Dv||p===xE||s===_E)return Jc;if(s===Wv&&p===Jv){for(;l===Dv;)l=e[--o];if(l===Jv)return Jc}if(s===BC&&p===BC){for(var m=0;l===BC;)m++,l=e[--o];if(m%2===0)return Jc}return Xv},TE=function(n){var e=SE(n),r=e.length,o=0,l=0,s=e.map(LE);return{next:function(){if(o>=r)return{done:!0,value:null};for(var p=Jc;op.x||_.y>p.y;return p=_,w===0?!0:E});return n.body.removeChild(e),m},GE=function(){return typeof new Image().crossOrigin<"u"},ZE=function(){return typeof new XMLHttpRequest().responseType=="string"},PE=function(n){var e=new Image,r=n.createElement("canvas"),o=r.getContext("2d");if(!o)return!1;e.src="data:image/svg+xml,";try{o.drawImage(e,0,0),r.toDataURL()}catch{return!1}return!0},Yv=function(n){return n[0]===0&&n[1]===255&&n[2]===0&&n[3]===255},HE=function(n){var e=n.createElement("canvas"),r=100;e.width=r,e.height=r;var o=e.getContext("2d");if(!o)return Promise.reject(!1);o.fillStyle="rgb(0, 255, 0)",o.fillRect(0,0,r,r);var l=new Image,s=e.toDataURL();l.src=s;var p=zC(r,r,0,0,l);return o.fillStyle="red",o.fillRect(0,0,r,r),jv(p).then(function(m){o.drawImage(m,0,0);var I=o.getImageData(0,0,r,r).data;o.fillStyle="red",o.fillRect(0,0,r,r);var w=n.createElement("div");return w.style.backgroundImage="url("+s+")",w.style.height=r+"px",Yv(I)?jv(zC(r,r,0,0,w)):Promise.reject(!1)}).then(function(m){return o.drawImage(m,0,0),Yv(o.getImageData(0,0,r,r).data)}).catch(function(){return!1})},zC=function(n,e,r,o,l){var s="http://www.w3.org/2000/svg",p=document.createElementNS(s,"svg"),m=document.createElementNS(s,"foreignObject");return p.setAttributeNS(null,"width",n.toString()),p.setAttributeNS(null,"height",e.toString()),m.setAttributeNS(null,"width","100%"),m.setAttributeNS(null,"height","100%"),m.setAttributeNS(null,"x",r.toString()),m.setAttributeNS(null,"y",o.toString()),m.setAttributeNS(null,"externalResourcesRequired","true"),p.appendChild(m),m.appendChild(l),p},jv=function(n){return new Promise(function(e,r){var o=new Image;o.onload=function(){return e(o)},o.onerror=r,o.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(n))})},Ss={get SUPPORT_RANGE_BOUNDS(){var n=QE(document);return Object.defineProperty(Ss,"SUPPORT_RANGE_BOUNDS",{value:n}),n},get SUPPORT_WORD_BREAKING(){var n=Ss.SUPPORT_RANGE_BOUNDS&&RE(document);return Object.defineProperty(Ss,"SUPPORT_WORD_BREAKING",{value:n}),n},get SUPPORT_SVG_DRAWING(){var n=PE(document);return Object.defineProperty(Ss,"SUPPORT_SVG_DRAWING",{value:n}),n},get SUPPORT_FOREIGNOBJECT_DRAWING(){var n=typeof Array.from=="function"&&typeof window.fetch=="function"?HE(document):Promise.resolve(!1);return Object.defineProperty(Ss,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:n}),n},get SUPPORT_CORS_IMAGES(){var n=GE();return Object.defineProperty(Ss,"SUPPORT_CORS_IMAGES",{value:n}),n},get SUPPORT_RESPONSE_TYPE(){var n=ZE();return Object.defineProperty(Ss,"SUPPORT_RESPONSE_TYPE",{value:n}),n},get SUPPORT_CORS_XHR(){var n="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Ss,"SUPPORT_CORS_XHR",{value:n}),n},get SUPPORT_NATIVE_TEXT_SEGMENTATION(){var n=!!(typeof Intl<"u"&&Intl.Segmenter);return Object.defineProperty(Ss,"SUPPORT_NATIVE_TEXT_SEGMENTATION",{value:n}),n}},pg=function(){function n(e,r){this.text=e,this.bounds=r}return n}(),ME=function(n,e,r,o){var l=DE(e,r),s=[],p=0;return l.forEach(function(m){if(r.textDecorationLine.length||m.trim().length>0)if(Ss.SUPPORT_RANGE_BOUNDS){var I=qv(o,p,m.length).getClientRects();if(I.length>1){var w=r0(m),_=0;w.forEach(function(U){s.push(new pg(U,Sl.fromDOMRectList(n,qv(o,_+p,U.length).getClientRects()))),_+=U.length})}else s.push(new pg(m,Sl.fromDOMRectList(n,I)))}else{var E=o.splitText(m.length);s.push(new pg(m,NE(n,o))),o=E}else Ss.SUPPORT_RANGE_BOUNDS||(o=o.splitText(m.length));p+=m.length}),s},NE=function(n,e){var r=e.ownerDocument;if(r){var o=r.createElement("html2canvaswrapper");o.appendChild(e.cloneNode(!0));var l=e.parentNode;if(l){l.replaceChild(o,e);var s=cp(n,o);return o.firstChild&&l.replaceChild(o.firstChild,o),s}}return Sl.EMPTY},qv=function(n,e,r){var o=n.ownerDocument;if(!o)throw new Error("Node has no owner document");var l=o.createRange();return l.setStart(n,e),l.setEnd(n,e+r),l},r0=function(n){if(Ss.SUPPORT_NATIVE_TEXT_SEGMENTATION){var e=new Intl.Segmenter(void 0,{granularity:"grapheme"});return Array.from(e.segment(n)).map(function(r){return r.segment})}return UE(n)},VE=function(n,e){if(Ss.SUPPORT_NATIVE_TEXT_SEGMENTATION){var r=new Intl.Segmenter(void 0,{granularity:"word"});return Array.from(r.segment(n)).map(function(o){return o.segment})}return OE(n,e)},DE=function(n,e){return e.letterSpacing!==0?r0(n):VE(n,e)},KE=[32,160,4961,65792,65793,4153,4241],OE=function(n,e){for(var r=C4(n,{lineBreak:e.lineBreak,wordBreak:e.overflowWrap==="break-word"?"break-word":e.wordBreak}),o=[],l,s=function(){if(l.value){var p=l.value.slice(),m=up(p),I="";m.forEach(function(w){KE.indexOf(w)===-1?I+=Sn(w):(I.length&&o.push(I),o.push(Sn(w)),I="")}),I.length&&o.push(I)}};!(l=r.next()).done;)s();return o},zE=function(){function n(e,r,o){this.text=WE(r.data,o.textTransform),this.textBounds=ME(e,this.text,o,r)}return n}(),WE=function(n,e){switch(e){case 1:return n.toLowerCase();case 3:return n.replace(JE,XE);case 2:return n.toUpperCase();default:return n}},JE=/(^|\s|:|-|\(|\))([a-z])/g,XE=function(n,e,r){return n.length>0?e+r.toUpperCase():n},Ww=function(n){Ya(e,n);function e(r,o){var l=n.call(this,r,o)||this;return l.src=o.currentSrc||o.src,l.intrinsicWidth=o.naturalWidth,l.intrinsicHeight=o.naturalHeight,l.context.cache.addImage(l.src),l}return e}(OA),Jw=function(n){Ya(e,n);function e(r,o){var l=n.call(this,r,o)||this;return l.canvas=o,l.intrinsicWidth=o.width,l.intrinsicHeight=o.height,l}return e}(OA),Xw=function(n){Ya(e,n);function e(r,o){var l=n.call(this,r,o)||this,s=new XMLSerializer,p=cp(r,o);return o.setAttribute("width",p.width+"px"),o.setAttribute("height",p.height+"px"),l.svg="data:image/svg+xml,"+encodeURIComponent(s.serializeToString(o)),l.intrinsicWidth=o.width.baseVal.value,l.intrinsicHeight=o.height.baseVal.value,l.context.cache.addImage(l.svg),l}return e}(OA),Yw=function(n){Ya(e,n);function e(r,o){var l=n.call(this,r,o)||this;return l.value=o.value,l}return e}(OA),WC=function(n){Ya(e,n);function e(r,o){var l=n.call(this,r,o)||this;return l.start=o.start,l.reversed=typeof o.reversed=="boolean"&&o.reversed===!0,l}return e}(OA),YE=[{type:15,flags:0,unit:"px",number:3}],jE=[{type:16,flags:0,number:50}],qE=function(n){return n.width>n.height?new Sl(n.left+(n.width-n.height)/2,n.top,n.height,n.height):n.width0)r.textNodes.push(new zE(n,l,r.styles));else if(Xu(l))if(o2(l)&&l.assignedNodes)l.assignedNodes().forEach(function(m){return qd(n,m,r,o)});else{var p=t2(n,l);p.styles.isVisible()&&(iT(l,p,o)?p.flags|=4:rT(p.styles)&&(p.flags|=2),eT.indexOf(l.tagName)!==-1&&(p.flags|=8),r.elements.push(p),l.slot,l.shadowRoot?qd(n,l.shadowRoot,p,o):!sp(l)&&!r2(l)&&!op(l)&&qd(n,l,p,o))}},t2=function(n,e){return XC(e)?new Ww(n,e):n2(e)?new Jw(n,e):r2(e)?new Xw(n,e):nT(e)?new Yw(n,e):sT(e)?new WC(n,e):oT(e)?new n0(n,e):op(e)?new jw(n,e):sp(e)?new qw(n,e):s2(e)?new $w(n,e):new OA(n,e)},e2=function(n,e){var r=t2(n,e);return r.flags|=4,qd(n,e,r,r),r},iT=function(n,e,r){return e.styles.isPositionedWithZIndex()||e.styles.opacity<1||e.styles.isTransformed()||s0(n)&&r.styles.isTransparent()},rT=function(n){return n.isPositioned()||n.isFloating()},i2=function(n){return n.nodeType===Node.TEXT_NODE},Xu=function(n){return n.nodeType===Node.ELEMENT_NODE},JC=function(n){return Xu(n)&&typeof n.style<"u"&&!$d(n)},$d=function(n){return typeof n.className=="object"},nT=function(n){return n.tagName==="LI"},sT=function(n){return n.tagName==="OL"},oT=function(n){return n.tagName==="INPUT"},aT=function(n){return n.tagName==="HTML"},r2=function(n){return n.tagName==="svg"},s0=function(n){return n.tagName==="BODY"},n2=function(n){return n.tagName==="CANVAS"},tw=function(n){return n.tagName==="VIDEO"},XC=function(n){return n.tagName==="IMG"},s2=function(n){return n.tagName==="IFRAME"},ew=function(n){return n.tagName==="STYLE"},AT=function(n){return n.tagName==="SCRIPT"},sp=function(n){return n.tagName==="TEXTAREA"},op=function(n){return n.tagName==="SELECT"},o2=function(n){return n.tagName==="SLOT"},iw=function(n){return n.tagName.indexOf("-")>0},lT=function(){function n(){this.counters={}}return n.prototype.getCounterValue=function(e){var r=this.counters[e];return r&&r.length?r[r.length-1]:1},n.prototype.getCounterValues=function(e){var r=this.counters[e];return r||[]},n.prototype.pop=function(e){var r=this;e.forEach(function(o){return r.counters[o].pop()})},n.prototype.parse=function(e){var r=this,o=e.counterIncrement,l=e.counterReset,s=!0;o!==null&&o.forEach(function(m){var I=r.counters[m.counter];I&&m.increment!==0&&(s=!1,I.length||I.push(1),I[Math.max(0,I.length-1)]+=m.increment)});var p=[];return s&&l.forEach(function(m){var I=r.counters[m.counter];p.push(m.counter),I||(I=r.counters[m.counter]=[]),I.push(m.reset)}),p},n}(),rw={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},nw={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u0554","\u0553","\u0552","\u0551","\u0550","\u054F","\u054E","\u054D","\u054C","\u054B","\u054A","\u0549","\u0548","\u0547","\u0546","\u0545","\u0544","\u0543","\u0542","\u0541","\u0540","\u053F","\u053E","\u053D","\u053C","\u053B","\u053A","\u0539","\u0538","\u0537","\u0536","\u0535","\u0534","\u0533","\u0532","\u0531"]},cT={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["\u05D9\u05F3","\u05D8\u05F3","\u05D7\u05F3","\u05D6\u05F3","\u05D5\u05F3","\u05D4\u05F3","\u05D3\u05F3","\u05D2\u05F3","\u05D1\u05F3","\u05D0\u05F3","\u05EA","\u05E9","\u05E8","\u05E7","\u05E6","\u05E4","\u05E2","\u05E1","\u05E0","\u05DE","\u05DC","\u05DB","\u05D9\u05D8","\u05D9\u05D7","\u05D9\u05D6","\u05D8\u05D6","\u05D8\u05D5","\u05D9","\u05D8","\u05D7","\u05D6","\u05D5","\u05D4","\u05D3","\u05D2","\u05D1","\u05D0"]},uT={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["\u10F5","\u10F0","\u10EF","\u10F4","\u10EE","\u10ED","\u10EC","\u10EB","\u10EA","\u10E9","\u10E8","\u10E7","\u10E6","\u10E5","\u10E4","\u10F3","\u10E2","\u10E1","\u10E0","\u10DF","\u10DE","\u10DD","\u10F2","\u10DC","\u10DB","\u10DA","\u10D9","\u10D8","\u10D7","\u10F1","\u10D6","\u10D5","\u10D4","\u10D3","\u10D2","\u10D1","\u10D0"]},Du=function(n,e,r,o,l,s){return nr?Ig(n,l,s.length>0):o.integers.reduce(function(p,m,I){for(;n>=m;)n-=m,p+=o.values[I];return p},"")+s},a2=function(n,e,r,o){var l="";do r||n--,l=o(n)+l,n/=e;while(n*e>=e);return l},xn=function(n,e,r,o,l){var s=r-e+1;return(n<0?"-":"")+(a2(Math.abs(n),s,o,function(p){return Sn(Math.floor(p%s)+e)})+l)},zc=function(n,e,r){r===void 0&&(r=". ");var o=e.length;return a2(Math.abs(n),o,!1,function(l){return e[Math.floor(l%o)]})+r},zu=1,Ac=2,lc=4,ug=8,_l=function(n,e,r,o,l,s){if(n<-9999||n>9999)return Ig(n,4,l.length>0);var p=Math.abs(n),m=l;if(p===0)return e[0]+m;for(var I=0;p>0&&I<=4;I++){var w=p%10;w===0&&ts(s,zu)&&m!==""?m=e[w]+m:w>1||w===1&&I===0||w===1&&I===1&&ts(s,Ac)||w===1&&I===1&&ts(s,lc)&&n>100||w===1&&I>1&&ts(s,ug)?m=e[w]+(I>0?r[I-1]:"")+m:w===1&&I>0&&(m=r[I-1]+m),p=Math.floor(p/10)}return(n<0?o:"")+m},sw="\u5341\u767E\u5343\u842C",ow="\u62FE\u4F70\u4EDF\u842C",aw="\u30DE\u30A4\u30CA\u30B9",_C="\uB9C8\uC774\uB108\uC2A4",Ig=function(n,e,r){var o=r?". ":"",l=r?"\u3001":"",s=r?", ":"",p=r?" ":"";switch(e){case 0:return"\u2022"+p;case 1:return"\u25E6"+p;case 2:return"\u25FE"+p;case 5:var m=xn(n,48,57,!0,o);return m.length<4?"0"+m:m;case 4:return zc(n,"\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",l);case 6:return Du(n,1,3999,rw,3,o).toLowerCase();case 7:return Du(n,1,3999,rw,3,o);case 8:return xn(n,945,969,!1,o);case 9:return xn(n,97,122,!1,o);case 10:return xn(n,65,90,!1,o);case 11:return xn(n,1632,1641,!0,o);case 12:case 49:return Du(n,1,9999,nw,3,o);case 35:return Du(n,1,9999,nw,3,o).toLowerCase();case 13:return xn(n,2534,2543,!0,o);case 14:case 30:return xn(n,6112,6121,!0,o);case 15:return zc(n,"\u5B50\u4E11\u5BC5\u536F\u8FB0\u5DF3\u5348\u672A\u7533\u9149\u620C\u4EA5",l);case 16:return zc(n,"\u7532\u4E59\u4E19\u4E01\u620A\u5DF1\u5E9A\u8F9B\u58EC\u7678",l);case 17:case 48:return _l(n,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",sw,"\u8CA0",l,Ac|lc|ug);case 47:return _l(n,"\u96F6\u58F9\u8CB3\u53C3\u8086\u4F0D\u9678\u67D2\u634C\u7396",ow,"\u8CA0",l,zu|Ac|lc|ug);case 42:return _l(n,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D",sw,"\u8D1F",l,Ac|lc|ug);case 41:return _l(n,"\u96F6\u58F9\u8D30\u53C1\u8086\u4F0D\u9646\u67D2\u634C\u7396",ow,"\u8D1F",l,zu|Ac|lc|ug);case 26:return _l(n,"\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u5341\u767E\u5343\u4E07",aw,l,0);case 25:return _l(n,"\u96F6\u58F1\u5F10\u53C2\u56DB\u4F0D\u516D\u4E03\u516B\u4E5D","\u62FE\u767E\u5343\u4E07",aw,l,zu|Ac|lc);case 31:return _l(n,"\uC601\uC77C\uC774\uC0BC\uC0AC\uC624\uC721\uCE60\uD314\uAD6C","\uC2ED\uBC31\uCC9C\uB9CC",_C,s,zu|Ac|lc);case 33:return _l(n,"\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u5341\u767E\u5343\u842C",_C,s,0);case 32:return _l(n,"\u96F6\u58F9\u8CB3\u53C3\u56DB\u4E94\u516D\u4E03\u516B\u4E5D","\u62FE\u767E\u5343",_C,s,zu|Ac|lc);case 18:return xn(n,2406,2415,!0,o);case 20:return Du(n,1,19999,uT,3,o);case 21:return xn(n,2790,2799,!0,o);case 22:return xn(n,2662,2671,!0,o);case 22:return Du(n,1,10999,cT,3,o);case 23:return zc(n,"\u3042\u3044\u3046\u3048\u304A\u304B\u304D\u304F\u3051\u3053\u3055\u3057\u3059\u305B\u305D\u305F\u3061\u3064\u3066\u3068\u306A\u306B\u306C\u306D\u306E\u306F\u3072\u3075\u3078\u307B\u307E\u307F\u3080\u3081\u3082\u3084\u3086\u3088\u3089\u308A\u308B\u308C\u308D\u308F\u3090\u3091\u3092\u3093");case 24:return zc(n,"\u3044\u308D\u306F\u306B\u307B\u3078\u3068\u3061\u308A\u306C\u308B\u3092\u308F\u304B\u3088\u305F\u308C\u305D\u3064\u306D\u306A\u3089\u3080\u3046\u3090\u306E\u304A\u304F\u3084\u307E\u3051\u3075\u3053\u3048\u3066\u3042\u3055\u304D\u3086\u3081\u307F\u3057\u3091\u3072\u3082\u305B\u3059");case 27:return xn(n,3302,3311,!0,o);case 28:return zc(n,"\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30F3",l);case 29:return zc(n,"\u30A4\u30ED\u30CF\u30CB\u30DB\u30D8\u30C8\u30C1\u30EA\u30CC\u30EB\u30F2\u30EF\u30AB\u30E8\u30BF\u30EC\u30BD\u30C4\u30CD\u30CA\u30E9\u30E0\u30A6\u30F0\u30CE\u30AA\u30AF\u30E4\u30DE\u30B1\u30D5\u30B3\u30A8\u30C6\u30A2\u30B5\u30AD\u30E6\u30E1\u30DF\u30B7\u30F1\u30D2\u30E2\u30BB\u30B9",l);case 34:return xn(n,3792,3801,!0,o);case 37:return xn(n,6160,6169,!0,o);case 38:return xn(n,4160,4169,!0,o);case 39:return xn(n,2918,2927,!0,o);case 40:return xn(n,1776,1785,!0,o);case 43:return xn(n,3046,3055,!0,o);case 44:return xn(n,3174,3183,!0,o);case 45:return xn(n,3664,3673,!0,o);case 46:return xn(n,3872,3881,!0,o);case 3:default:return xn(n,48,57,!0,o)}},A2="data-html2canvas-ignore",Aw=function(){function n(e,r,o){if(this.context=e,this.options=o,this.scrolledElements=[],this.referenceElement=r,this.counters=new lT,this.quoteDepth=0,!r.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(r.ownerDocument.documentElement,!1)}return n.prototype.toIFrame=function(e,r){var o=this,l=hT(e,r);if(!l.contentWindow)return Promise.reject("Unable to find iframe window");var s=e.defaultView.pageXOffset,p=e.defaultView.pageYOffset,m=l.contentWindow,I=m.document,w=pT(l).then(function(){return po(o,void 0,void 0,function(){var _,E;return Ys(this,function(U){switch(U.label){case 0:return this.scrolledElements.forEach(IT),m&&(m.scrollTo(r.left,r.top),/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&(m.scrollY!==r.top||m.scrollX!==r.left)&&(this.context.logger.warn("Unable to restore scroll position for cloned document"),this.context.windowBounds=this.context.windowBounds.add(m.scrollX-r.left,m.scrollY-r.top,0,0))),_=this.options.onclone,E=this.clonedReferenceElement,typeof E>"u"?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:I.fonts&&I.fonts.ready?[4,I.fonts.ready]:[3,2];case 1:U.sent(),U.label=2;case 2:return/(AppleWebKit)/g.test(navigator.userAgent)?[4,dT(I)]:[3,4];case 3:U.sent(),U.label=4;case 4:return typeof _=="function"?[2,Promise.resolve().then(function(){return _(I,E)}).then(function(){return l})]:[2,l]}})})});return I.open(),I.write(mT(document.doctype)+""),CT(this.referenceElement.ownerDocument,s,p),I.replaceChild(I.adoptNode(this.documentElement),I.documentElement),I.close(),w},n.prototype.createElementClone=function(e){if(OC(e,2))debugger;if(n2(e))return this.createCanvasClone(e);if(tw(e))return this.createVideoClone(e);if(ew(e))return this.createStyleClone(e);var r=e.cloneNode(!1);return XC(r)&&(XC(e)&&e.currentSrc&&e.currentSrc!==e.src&&(r.src=e.currentSrc,r.srcset=""),r.loading==="lazy"&&(r.loading="eager")),iw(r)?this.createCustomElementClone(r):r},n.prototype.createCustomElementClone=function(e){var r=document.createElement("html2canvascustomelement");return xC(e.style,r),r},n.prototype.createStyleClone=function(e){try{var r=e.sheet;if(r&&r.cssRules){var o=[].slice.call(r.cssRules,0).reduce(function(s,p){return p&&typeof p.cssText=="string"?s+p.cssText:s},""),l=e.cloneNode(!1);return l.textContent=o,l}}catch(s){if(this.context.logger.error("Unable to access cssRules property",s),s.name!=="SecurityError")throw s}return e.cloneNode(!1)},n.prototype.createCanvasClone=function(e){var r;if(this.options.inlineImages&&e.ownerDocument){var o=e.ownerDocument.createElement("img");try{return o.src=e.toDataURL(),o}catch{this.context.logger.info("Unable to inline canvas contents, canvas is tainted",e)}}var l=e.cloneNode(!1);try{l.width=e.width,l.height=e.height;var s=e.getContext("2d"),p=l.getContext("2d");if(p)if(!this.options.allowTaint&&s)p.putImageData(s.getImageData(0,0,e.width,e.height),0,0);else{var m=(r=e.getContext("webgl2"))!==null&&r!==void 0?r:e.getContext("webgl");if(m){var I=m.getContextAttributes();I?.preserveDrawingBuffer===!1&&this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false",e)}p.drawImage(e,0,0)}return l}catch{this.context.logger.info("Unable to clone canvas as it is tainted",e)}return l},n.prototype.createVideoClone=function(e){var r=e.ownerDocument.createElement("canvas");r.width=e.offsetWidth,r.height=e.offsetHeight;var o=r.getContext("2d");try{return o&&(o.drawImage(e,0,0,r.width,r.height),this.options.allowTaint||o.getImageData(0,0,r.width,r.height)),r}catch{this.context.logger.info("Unable to clone video as it is tainted",e)}var l=e.ownerDocument.createElement("canvas");return l.width=e.offsetWidth,l.height=e.offsetHeight,l},n.prototype.appendChildNode=function(e,r,o){(!Xu(r)||!AT(r)&&!r.hasAttribute(A2)&&(typeof this.options.ignoreElements!="function"||!this.options.ignoreElements(r)))&&(!this.options.copyStyles||!Xu(r)||!ew(r))&&e.appendChild(this.cloneNode(r,o))},n.prototype.cloneChildNodes=function(e,r,o){for(var l=this,s=e.shadowRoot?e.shadowRoot.firstChild:e.firstChild;s;s=s.nextSibling)if(Xu(s)&&o2(s)&&typeof s.assignedNodes=="function"){var p=s.assignedNodes();p.length&&p.forEach(function(m){return l.appendChildNode(r,m,o)})}else this.appendChildNode(r,s,o)},n.prototype.cloneNode=function(e,r){if(i2(e))return document.createTextNode(e.data);if(!e.ownerDocument)return e.cloneNode(!1);var o=e.ownerDocument.defaultView;if(o&&Xu(e)&&(JC(e)||$d(e))){var l=this.createElementClone(e);l.style.transitionProperty="none";var s=o.getComputedStyle(e),p=o.getComputedStyle(e,":before"),m=o.getComputedStyle(e,":after");this.referenceElement===e&&JC(l)&&(this.clonedReferenceElement=l),s0(l)&&vT(l);var I=this.counters.parse(new Pv(this.context,s)),w=this.resolvePseudoContent(e,l,p,fg.BEFORE);iw(e)&&(r=!0),tw(e)||this.cloneChildNodes(e,l,r),w&&l.insertBefore(w,l.firstChild);var _=this.resolvePseudoContent(e,l,m,fg.AFTER);return _&&l.appendChild(_),this.counters.pop(I),(s&&(this.options.copyStyles||$d(e))&&!s2(e)||r)&&xC(s,l),(e.scrollTop!==0||e.scrollLeft!==0)&&this.scrolledElements.push([l,e.scrollLeft,e.scrollTop]),(sp(e)||op(e))&&(sp(l)||op(l))&&(l.value=e.value),l}return e.cloneNode(!1)},n.prototype.resolvePseudoContent=function(e,r,o,l){var s=this;if(o){var p=o.content,m=r.ownerDocument;if(!(!m||!p||p==="none"||p==="-moz-alt-content"||o.display==="none")){this.counters.parse(new Pv(this.context,o));var I=new nE(this.context,o),w=m.createElement("html2canvaspseudoelement");xC(o,w),I.content.forEach(function(E){if(E.type===0)w.appendChild(m.createTextNode(E.value));else if(E.type===22){var U=m.createElement("img");U.src=E.value,U.style.opacity="1",w.appendChild(U)}else if(E.type===18){if(E.name==="attr"){var F=E.values.filter(Xr);F.length&&w.appendChild(m.createTextNode(e.getAttribute(F[0].value)||""))}else if(E.name==="counter"){var V=E.values.filter(ju),H=V[0],Y=V[1];if(H&&Xr(H)){var D=s.counters.getCounterValue(H.value),tt=Y&&Xr(Y)?KC.parse(s.context,Y.value):3;w.appendChild(m.createTextNode(Ig(D,tt,!1)))}}else if(E.name==="counters"){var ot=E.values.filter(ju),H=ot[0],bt=ot[1],Y=ot[2];if(H&&Xr(H)){var kt=s.counters.getCounterValues(H.value),Lt=Y&&Xr(Y)?KC.parse(s.context,Y.value):3,vt=bt&&bt.type===0?bt.value:"",ft=kt.map(function(at){return Ig(at,Lt,!1)}).join(vt);w.appendChild(m.createTextNode(ft))}}}else if(E.type===20)switch(E.value){case"open-quote":w.appendChild(m.createTextNode(Zv(I.quotes,s.quoteDepth++,!0)));break;case"close-quote":w.appendChild(m.createTextNode(Zv(I.quotes,--s.quoteDepth,!1)));break;default:w.appendChild(m.createTextNode(E.value))}}),w.className=YC+" "+jC;var _=l===fg.BEFORE?" "+YC:" "+jC;return $d(r)?r.className.baseValue+=_:r.className+=_,w}}},n.destroy=function(e){return e.parentNode?(e.parentNode.removeChild(e),!0):!1},n}();(function(n){n[n.BEFORE=0]="BEFORE",n[n.AFTER=1]="AFTER"})(fg||(fg={}));hT=function(n,e){var r=n.createElement("iframe");return r.className="html2canvas-container",r.style.visibility="hidden",r.style.position="fixed",r.style.left="-10000px",r.style.top="0px",r.style.border="0",r.width=e.width.toString(),r.height=e.height.toString(),r.scrolling="no",r.setAttribute(A2,"true"),n.body.appendChild(r),r},gT=function(n){return new Promise(function(e){if(n.complete){e();return}if(!n.src){e();return}n.onload=e,n.onerror=e})},dT=function(n){return Promise.all([].slice.call(n.images,0).map(gT))},pT=function(n){return new Promise(function(e,r){var o=n.contentWindow;if(!o)return r("No window assigned for iframe");var l=o.document;o.onload=n.onload=function(){o.onload=n.onload=null;var s=setInterval(function(){l.body.childNodes.length>0&&l.readyState==="complete"&&(clearInterval(s),e(n))},50)}})},fT=["all","d","content"],xC=function(n,e){for(var r=n.length-1;r>=0;r--){var o=n.item(r);fT.indexOf(o)===-1&&e.style.setProperty(o,n.getPropertyValue(o))}return e},mT=function(n){var e="";return n&&(e+=""),e},CT=function(n,e,r){n&&n.defaultView&&(e!==n.defaultView.pageXOffset||r!==n.defaultView.pageYOffset)&&n.defaultView.scrollTo(e,r)},IT=function(n){var e=n[0],r=n[1],o=n[2];e.scrollLeft=r,e.scrollTop=o},yT=":before",bT=":after",YC="___html2canvas___pseudoelement_before",jC="___html2canvas___pseudoelement_after",lw=`{ content: "" !important; display: none !important; -}`,CT=function(n){IT(n,"."+JC+fT+sw+` - .`+XC+mT+sw)},IT=function(n,t){var r=n.ownerDocument;if(r){var o=r.createElement("style");o.textContent=t,n.appendChild(o)}},s2=function(){function n(){}return n.getOrigin=function(t){var r=n._link;return r?(r.href=t,r.href=r.href,r.protocol+r.hostname+r.port):"about:blank"},n.isSameOrigin=function(t){return n.getOrigin(t)===n._origin},n.setContext=function(t){n._link=t.document.createElement("a"),n._origin=n.getOrigin(t.location.href)},n._origin="about:blank",n}(),yT=function(){function n(t,r){this.context=t,this._options=r,this._cache={}}return n.prototype.addImage=function(t){var r=Promise.resolve();return this.has(t)||(xC(t)||BT(t))&&(this._cache[t]=this.loadImage(t)).catch(function(){}),r},n.prototype.match=function(t){return this._cache[t]},n.prototype.loadImage=function(t){return wo(this,void 0,void 0,function(){var r,o,A,s,d=this;return Ys(this,function(f){switch(f.label){case 0:return r=s2.isSameOrigin(t),o=!_C(t)&&this._options.useCORS===!0&&Ts.SUPPORT_CORS_IMAGES&&!r,A=!_C(t)&&!r&&!xC(t)&&typeof this._options.proxy=="string"&&Ts.SUPPORT_CORS_XHR&&!o,!r&&this._options.allowTaint===!1&&!_C(t)&&!xC(t)&&!A&&!o?[2]:(s=t,A?[4,this.proxy(s)]:[3,2]);case 1:s=f.sent(),f.label=2;case 2:return this.context.logger.debug("Added image "+t.substring(0,256)),[4,new Promise(function(I,_){var S=new Image;S.onload=function(){return I(S)},S.onerror=_,(_T(s)||o)&&(S.crossOrigin="anonymous"),S.src=s,S.complete===!0&&setTimeout(function(){return I(S)},500),d._options.imageTimeout>0&&setTimeout(function(){return _("Timed out ("+d._options.imageTimeout+"ms) loading image")},d._options.imageTimeout)})];case 3:return[2,f.sent()]}})})},n.prototype.has=function(t){return typeof this._cache[t]<"u"},n.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},n.prototype.proxy=function(t){var r=this,o=this._options.proxy;if(!o)throw new Error("No proxy defined");var A=t.substring(0,256);return new Promise(function(s,d){var f=Ts.SUPPORT_RESPONSE_TYPE?"blob":"text",I=new XMLHttpRequest;I.onload=function(){if(I.status===200)if(f==="text")s(I.response);else{var U=new FileReader;U.addEventListener("load",function(){return s(U.result)},!1),U.addEventListener("error",function(G){return d(G)},!1),U.readAsDataURL(I.response)}else d("Failed to proxy resource "+A+" with status code "+I.status)},I.onerror=d;var _=o.indexOf("?")>-1?"&":"?";if(I.open("GET",""+o+_+"url="+encodeURIComponent(t)+"&responseType="+f),f!=="text"&&I instanceof XMLHttpRequest&&(I.responseType=f),r._options.imageTimeout){var S=r._options.imageTimeout;I.timeout=S,I.ontimeout=function(){return d("Timed out ("+S+"ms) proxying "+A)}}I.send()})},n}(),bT=/^data:image\/svg\+xml/i,vT=/^data:image\/.*;base64,/i,wT=/^data:image\/.*/i,BT=function(n){return Ts.SUPPORT_SVG_DRAWING||!xT(n)},_C=function(n){return wT.test(n)},_T=function(n){return vT.test(n)},xC=function(n){return n.substr(0,4)==="blob"},xT=function(n){return n.substr(-3).toLowerCase()==="svg"||bT.test(n)},fi=function(){function n(t,r){this.type=0,this.x=t,this.y=r}return n.prototype.add=function(t,r){return new n(this.x+t,this.y+r)},n}(),Zu=function(n,t,r){return new fi(n.x+(t.x-n.x)*r,n.y+(t.y-n.y)*r)},Kd=function(){function n(t,r,o,A){this.type=1,this.start=t,this.startControl=r,this.endControl=o,this.end=A}return n.prototype.subdivide=function(t,r){var o=Zu(this.start,this.startControl,t),A=Zu(this.startControl,this.endControl,t),s=Zu(this.endControl,this.end,t),d=Zu(o,A,t),f=Zu(A,s,t),I=Zu(d,f,t);return r?new n(this.start,o,d,I):new n(I,f,s,this.end)},n.prototype.add=function(t,r){return new n(this.start.add(t,r),this.startControl.add(t,r),this.endControl.add(t,r),this.end.add(t,r))},n.prototype.reverse=function(){return new n(this.end,this.endControl,this.startControl,this.start)},n}(),Ga=function(n){return n.type===1},ST=function(){function n(t){var r=t.styles,o=t.bounds,A=sg(r.borderTopLeftRadius,o.width,o.height),s=A[0],d=A[1],f=sg(r.borderTopRightRadius,o.width,o.height),I=f[0],_=f[1],S=sg(r.borderBottomRightRadius,o.width,o.height),U=S[0],G=S[1],L=sg(r.borderBottomLeftRadius,o.width,o.height),K=L[0],V=L[1],q=[];q.push((s+I)/o.width),q.push((K+U)/o.width),q.push((d+V)/o.height),q.push((_+G)/o.height);var z=Math.max.apply(Math,q);z>1&&(s/=z,d/=z,I/=z,_/=z,U/=z,G/=z,K/=z,V/=z);var it=o.width-I,At=o.height-G,_t=o.width-U,Lt=o.height-V,Et=r.borderTopWidth,xt=r.borderRightWidth,It=r.borderBottomWidth,Nt=r.borderLeftWidth,ie=un(r.paddingTop,t.bounds.width),lt=un(r.paddingRight,t.bounds.width),at=un(r.paddingBottom,t.bounds.width),St=un(r.paddingLeft,t.bounds.width);this.topLeftBorderDoubleOuterBox=s>0||d>0?Cn(o.left+Nt/3,o.top+Et/3,s-Nt/3,d-Et/3,Kr.TOP_LEFT):new fi(o.left+Nt/3,o.top+Et/3),this.topRightBorderDoubleOuterBox=s>0||d>0?Cn(o.left+it,o.top+Et/3,I-xt/3,_-Et/3,Kr.TOP_RIGHT):new fi(o.left+o.width-xt/3,o.top+Et/3),this.bottomRightBorderDoubleOuterBox=U>0||G>0?Cn(o.left+_t,o.top+At,U-xt/3,G-It/3,Kr.BOTTOM_RIGHT):new fi(o.left+o.width-xt/3,o.top+o.height-It/3),this.bottomLeftBorderDoubleOuterBox=K>0||V>0?Cn(o.left+Nt/3,o.top+Lt,K-Nt/3,V-It/3,Kr.BOTTOM_LEFT):new fi(o.left+Nt/3,o.top+o.height-It/3),this.topLeftBorderDoubleInnerBox=s>0||d>0?Cn(o.left+Nt*2/3,o.top+Et*2/3,s-Nt*2/3,d-Et*2/3,Kr.TOP_LEFT):new fi(o.left+Nt*2/3,o.top+Et*2/3),this.topRightBorderDoubleInnerBox=s>0||d>0?Cn(o.left+it,o.top+Et*2/3,I-xt*2/3,_-Et*2/3,Kr.TOP_RIGHT):new fi(o.left+o.width-xt*2/3,o.top+Et*2/3),this.bottomRightBorderDoubleInnerBox=U>0||G>0?Cn(o.left+_t,o.top+At,U-xt*2/3,G-It*2/3,Kr.BOTTOM_RIGHT):new fi(o.left+o.width-xt*2/3,o.top+o.height-It*2/3),this.bottomLeftBorderDoubleInnerBox=K>0||V>0?Cn(o.left+Nt*2/3,o.top+Lt,K-Nt*2/3,V-It*2/3,Kr.BOTTOM_LEFT):new fi(o.left+Nt*2/3,o.top+o.height-It*2/3),this.topLeftBorderStroke=s>0||d>0?Cn(o.left+Nt/2,o.top+Et/2,s-Nt/2,d-Et/2,Kr.TOP_LEFT):new fi(o.left+Nt/2,o.top+Et/2),this.topRightBorderStroke=s>0||d>0?Cn(o.left+it,o.top+Et/2,I-xt/2,_-Et/2,Kr.TOP_RIGHT):new fi(o.left+o.width-xt/2,o.top+Et/2),this.bottomRightBorderStroke=U>0||G>0?Cn(o.left+_t,o.top+At,U-xt/2,G-It/2,Kr.BOTTOM_RIGHT):new fi(o.left+o.width-xt/2,o.top+o.height-It/2),this.bottomLeftBorderStroke=K>0||V>0?Cn(o.left+Nt/2,o.top+Lt,K-Nt/2,V-It/2,Kr.BOTTOM_LEFT):new fi(o.left+Nt/2,o.top+o.height-It/2),this.topLeftBorderBox=s>0||d>0?Cn(o.left,o.top,s,d,Kr.TOP_LEFT):new fi(o.left,o.top),this.topRightBorderBox=I>0||_>0?Cn(o.left+it,o.top,I,_,Kr.TOP_RIGHT):new fi(o.left+o.width,o.top),this.bottomRightBorderBox=U>0||G>0?Cn(o.left+_t,o.top+At,U,G,Kr.BOTTOM_RIGHT):new fi(o.left+o.width,o.top+o.height),this.bottomLeftBorderBox=K>0||V>0?Cn(o.left,o.top+Lt,K,V,Kr.BOTTOM_LEFT):new fi(o.left,o.top+o.height),this.topLeftPaddingBox=s>0||d>0?Cn(o.left+Nt,o.top+Et,Math.max(0,s-Nt),Math.max(0,d-Et),Kr.TOP_LEFT):new fi(o.left+Nt,o.top+Et),this.topRightPaddingBox=I>0||_>0?Cn(o.left+Math.min(it,o.width-xt),o.top+Et,it>o.width+xt?0:Math.max(0,I-xt),Math.max(0,_-Et),Kr.TOP_RIGHT):new fi(o.left+o.width-xt,o.top+Et),this.bottomRightPaddingBox=U>0||G>0?Cn(o.left+Math.min(_t,o.width-Nt),o.top+Math.min(At,o.height-It),Math.max(0,U-xt),Math.max(0,G-It),Kr.BOTTOM_RIGHT):new fi(o.left+o.width-xt,o.top+o.height-It),this.bottomLeftPaddingBox=K>0||V>0?Cn(o.left+Nt,o.top+Math.min(Lt,o.height-It),Math.max(0,K-Nt),Math.max(0,V-It),Kr.BOTTOM_LEFT):new fi(o.left+Nt,o.top+o.height-It),this.topLeftContentBox=s>0||d>0?Cn(o.left+Nt+St,o.top+Et+ie,Math.max(0,s-(Nt+St)),Math.max(0,d-(Et+ie)),Kr.TOP_LEFT):new fi(o.left+Nt+St,o.top+Et+ie),this.topRightContentBox=I>0||_>0?Cn(o.left+Math.min(it,o.width+Nt+St),o.top+Et+ie,it>o.width+Nt+St?0:I-Nt+St,_-(Et+ie),Kr.TOP_RIGHT):new fi(o.left+o.width-(xt+lt),o.top+Et+ie),this.bottomRightContentBox=U>0||G>0?Cn(o.left+Math.min(_t,o.width-(Nt+St)),o.top+Math.min(At,o.height+Et+ie),Math.max(0,U-(xt+lt)),G-(It+at),Kr.BOTTOM_RIGHT):new fi(o.left+o.width-(xt+lt),o.top+o.height-(It+at)),this.bottomLeftContentBox=K>0||V>0?Cn(o.left+Nt+St,o.top+Lt,Math.max(0,K-(Nt+St)),V-(It+at),Kr.BOTTOM_LEFT):new fi(o.left+Nt+St,o.top+o.height-(It+at))}return n}();(function(n){n[n.TOP_LEFT=0]="TOP_LEFT",n[n.TOP_RIGHT=1]="TOP_RIGHT",n[n.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",n[n.BOTTOM_LEFT=3]="BOTTOM_LEFT"})(Kr||(Kr={}));Cn=function(n,t,r,o,A){var s=4*((Math.sqrt(2)-1)/3),d=r*s,f=o*s,I=n+r,_=t+o;switch(A){case Kr.TOP_LEFT:return new Kd(new fi(n,_),new fi(n,_-f),new fi(I-d,t),new fi(I,t));case Kr.TOP_RIGHT:return new Kd(new fi(n,t),new fi(n+d,t),new fi(I,_-f),new fi(I,_));case Kr.BOTTOM_RIGHT:return new Kd(new fi(I,t),new fi(I,t+f),new fi(n+d,_),new fi(n,_));case Kr.BOTTOM_LEFT:default:return new Kd(new fi(I,_),new fi(I-d,_),new fi(n,t+f),new fi(n,t))}},sp=function(n){return[n.topLeftBorderBox,n.topRightBorderBox,n.bottomRightBorderBox,n.bottomLeftBorderBox]},FT=function(n){return[n.topLeftContentBox,n.topRightContentBox,n.bottomRightContentBox,n.bottomLeftContentBox]},op=function(n){return[n.topLeftPaddingBox,n.topRightPaddingBox,n.bottomRightPaddingBox,n.bottomLeftPaddingBox]},kT=function(){function n(t,r,o){this.offsetX=t,this.offsetY=r,this.matrix=o,this.type=0,this.target=6}return n}(),zd=function(){function n(t,r){this.path=t,this.target=r,this.type=1}return n}(),LT=function(){function n(t){this.opacity=t,this.type=2,this.target=6}return n}(),ET=function(n){return n.type===0},o2=function(n){return n.type===1},TT=function(n){return n.type===2},ow=function(n,t){return n.length===t.length?n.some(function(r,o){return r===t[o]}):!1},UT=function(n,t,r,o,A){return n.map(function(s,d){switch(d){case 0:return s.add(t,r);case 1:return s.add(t+o,r);case 2:return s.add(t+o,r+A);case 3:return s.add(t,r+A)}return s})},a2=function(){function n(t){this.element=t,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]}return n}(),A2=function(){function n(t,r){if(this.container=t,this.parent=r,this.effects=[],this.curves=new ST(this.container),this.container.styles.opacity<1&&this.effects.push(new LT(this.container.styles.opacity)),this.container.styles.transform!==null){var o=this.container.bounds.left+this.container.styles.transformOrigin[0].number,A=this.container.bounds.top+this.container.styles.transformOrigin[1].number,s=this.container.styles.transform;this.effects.push(new kT(o,A,s))}if(this.container.styles.overflowX!==0){var d=sp(this.curves),f=op(this.curves);ow(d,f)?this.effects.push(new zd(d,6)):(this.effects.push(new zd(d,2)),this.effects.push(new zd(f,4)))}}return n.prototype.getEffects=function(t){for(var r=[2,3].indexOf(this.container.styles.position)===-1,o=this.parent,A=this.effects.slice(0);o;){var s=o.effects.filter(function(I){return!o2(I)});if(r||o.container.styles.position!==0||!o.parent){if(A.unshift.apply(A,s),r=[2,3].indexOf(o.container.styles.position)===-1,o.container.styles.overflowX!==0){var d=sp(o.curves),f=op(o.curves);ow(d,f)||A.unshift(new zd(f,6))}}else A.unshift.apply(A,s);o=o.parent}return A.filter(function(I){return rs(I.target,t)})},n}(),YC=function(n,t,r,o){n.container.elements.forEach(function(A){var s=rs(A.flags,4),d=rs(A.flags,2),f=new A2(A,n);rs(A.styles.display,2048)&&o.push(f);var I=rs(A.flags,8)?[]:o;if(s||d){var _=s||A.styles.isPositioned()?r:t,S=new a2(f);if(A.styles.isPositioned()||A.styles.opacity<1||A.styles.isTransformed()){var U=A.styles.zIndex.order;if(U<0){var G=0;_.negativeZIndex.some(function(K,V){return U>K.element.container.styles.zIndex.order?(G=V,!1):G>0}),_.negativeZIndex.splice(G,0,S)}else if(U>0){var L=0;_.positiveZIndex.some(function(K,V){return U>=K.element.container.styles.zIndex.order?(L=V+1,!1):L>0}),_.positiveZIndex.splice(L,0,S)}else _.zeroOrAutoZIndexOrTransformedOrOpacity.push(S)}else A.styles.isFloating()?_.nonPositionedFloats.push(S):_.nonPositionedInlineLevel.push(S);YC(f,S,s?S:r,I)}else A.styles.isInlineLevel()?t.inlineLevel.push(f):t.nonInlineLevel.push(f),YC(f,t,r,I);rs(A.flags,8)&&l2(A,I)})},l2=function(n,t){for(var r=n instanceof zC?n.start:1,o=n instanceof zC?n.reversed:!1,A=0;A"u"?n[0]:r},NT=function(n,t,r,o,A){var s=t[0],d=t[1],f=r[0],I=r[1];switch(n){case 2:return[new fi(Math.round(o.left),Math.round(o.top+d)),new fi(Math.round(o.left+o.width),Math.round(o.top+d)),new fi(Math.round(o.left+o.width),Math.round(I+o.top+d)),new fi(Math.round(o.left),Math.round(I+o.top+d))];case 3:return[new fi(Math.round(o.left+s),Math.round(o.top)),new fi(Math.round(o.left+s+f),Math.round(o.top)),new fi(Math.round(o.left+s+f),Math.round(o.height+o.top)),new fi(Math.round(o.left+s),Math.round(o.height+o.top))];case 1:return[new fi(Math.round(o.left+s),Math.round(o.top+d)),new fi(Math.round(o.left+s+f),Math.round(o.top+d)),new fi(Math.round(o.left+s+f),Math.round(o.top+d+I)),new fi(Math.round(o.left+s),Math.round(o.top+d+I))];default:return[new fi(Math.round(A.left),Math.round(A.top)),new fi(Math.round(A.left+A.width),Math.round(A.top)),new fi(Math.round(A.left+A.width),Math.round(A.height+A.top)),new fi(Math.round(A.left),Math.round(A.height+A.top))]}},VT="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",Aw="Hidden Text",DT=function(){function n(t){this._data={},this._document=t}return n.prototype.parseMetrics=function(t,r){var o=this._document.createElement("div"),A=this._document.createElement("img"),s=this._document.createElement("span"),d=this._document.body;o.style.visibility="hidden",o.style.fontFamily=t,o.style.fontSize=r,o.style.margin="0",o.style.padding="0",o.style.whiteSpace="nowrap",d.appendChild(o),A.src=VT,A.width=1,A.height=1,A.style.margin="0",A.style.padding="0",A.style.verticalAlign="baseline",s.style.fontFamily=t,s.style.fontSize=r,s.style.margin="0",s.style.padding="0",s.appendChild(this._document.createTextNode(Aw)),o.appendChild(s),o.appendChild(A);var f=A.offsetTop-s.offsetTop+2;o.removeChild(s),o.appendChild(this._document.createTextNode(Aw)),o.style.lineHeight="normal",A.style.verticalAlign="super";var I=A.offsetTop-o.offsetTop+2;return d.removeChild(o),{baseline:f,middle:I}},n.prototype.getMetrics=function(t,r){var o=t+" "+r;return typeof this._data[o]>"u"&&(this._data[o]=this.parseMetrics(t,r)),this._data[o]},n}(),u2=function(){function n(t,r){this.context=t,this.options=r}return n}(),KT=1e4,zT=function(n){nA(t,n);function t(r,o){var A=n.call(this,r,o)||this;return A._activeEffects=[],A.canvas=o.canvas?o.canvas:document.createElement("canvas"),A.ctx=A.canvas.getContext("2d"),o.canvas||(A.canvas.width=Math.floor(o.width*o.scale),A.canvas.height=Math.floor(o.height*o.scale),A.canvas.style.width=o.width+"px",A.canvas.style.height=o.height+"px"),A.fontMetrics=new DT(document),A.ctx.scale(A.options.scale,A.options.scale),A.ctx.translate(-o.x,-o.y),A.ctx.textBaseline="bottom",A._activeEffects=[],A.context.logger.debug("Canvas renderer initialized ("+o.width+"x"+o.height+") with scale "+o.scale),A}return t.prototype.applyEffects=function(r){for(var o=this;this._activeEffects.length;)this.popEffect();r.forEach(function(A){return o.applyEffect(A)})},t.prototype.applyEffect=function(r){this.ctx.save(),TT(r)&&(this.ctx.globalAlpha=r.opacity),ET(r)&&(this.ctx.translate(r.offsetX,r.offsetY),this.ctx.transform(r.matrix[0],r.matrix[1],r.matrix[2],r.matrix[3],r.matrix[4],r.matrix[5]),this.ctx.translate(-r.offsetX,-r.offsetY)),o2(r)&&(this.path(r.path),this.ctx.clip()),this._activeEffects.push(r)},t.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},t.prototype.renderStack=function(r){return wo(this,void 0,void 0,function(){var o;return Ys(this,function(A){switch(A.label){case 0:return o=r.element.container.styles,o.isVisible()?[4,this.renderStackContent(r)]:[3,2];case 1:A.sent(),A.label=2;case 2:return[2]}})})},t.prototype.renderNode=function(r){return wo(this,void 0,void 0,function(){return Ys(this,function(o){switch(o.label){case 0:if(rs(r.container.flags,16))debugger;return r.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(r)]:[3,3];case 1:return o.sent(),[4,this.renderNodeContent(r)];case 2:o.sent(),o.label=3;case 3:return[2]}})})},t.prototype.renderTextWithLetterSpacing=function(r,o,A){var s=this;if(o===0)this.ctx.fillText(r.text,r.bounds.left,r.bounds.top+A);else{var d=e0(r.text);d.reduce(function(f,I){return s.ctx.fillText(I,f,r.bounds.top+A),f+s.ctx.measureText(I).width},r.bounds.left)}},t.prototype.createFontStyle=function(r){var o=r.fontVariant.filter(function(d){return d==="normal"||d==="small-caps"}).join(""),A=YT(r.fontFamily).join(", "),s=mg(r.fontSize)?""+r.fontSize.number+r.fontSize.unit:r.fontSize.number+"px";return[[r.fontStyle,o,r.fontWeight,s,A].join(" "),A,s]},t.prototype.renderTextNode=function(r,o){return wo(this,void 0,void 0,function(){var A,s,d,f,I,_,S,U,G=this;return Ys(this,function(L){return A=this.createFontStyle(o),s=A[0],d=A[1],f=A[2],this.ctx.font=s,this.ctx.direction=o.direction===1?"rtl":"ltr",this.ctx.textAlign="left",this.ctx.textBaseline="alphabetic",I=this.fontMetrics.getMetrics(d,f),_=I.baseline,S=I.middle,U=o.paintOrder,r.textBounds.forEach(function(K){U.forEach(function(V){switch(V){case 0:G.ctx.fillStyle=ds(o.color),G.renderTextWithLetterSpacing(K,o.letterSpacing,_);var q=o.textShadow;q.length&&K.text.trim().length&&(q.slice(0).reverse().forEach(function(z){G.ctx.shadowColor=ds(z.color),G.ctx.shadowOffsetX=z.offsetX.number*G.options.scale,G.ctx.shadowOffsetY=z.offsetY.number*G.options.scale,G.ctx.shadowBlur=z.blur.number,G.renderTextWithLetterSpacing(K,o.letterSpacing,_)}),G.ctx.shadowColor="",G.ctx.shadowOffsetX=0,G.ctx.shadowOffsetY=0,G.ctx.shadowBlur=0),o.textDecorationLine.length&&(G.ctx.fillStyle=ds(o.textDecorationColor||o.color),o.textDecorationLine.forEach(function(z){switch(z){case 1:G.ctx.fillRect(K.bounds.left,Math.round(K.bounds.top+_),K.bounds.width,1);break;case 2:G.ctx.fillRect(K.bounds.left,Math.round(K.bounds.top),K.bounds.width,1);break;case 3:G.ctx.fillRect(K.bounds.left,Math.ceil(K.bounds.top+S),K.bounds.width,1);break}}));break;case 1:o.webkitTextStrokeWidth&&K.text.trim().length&&(G.ctx.strokeStyle=ds(o.webkitTextStrokeColor),G.ctx.lineWidth=o.webkitTextStrokeWidth,G.ctx.lineJoin=window.chrome?"miter":"round",G.ctx.strokeText(K.text,K.bounds.left,K.bounds.top+_)),G.ctx.strokeStyle="",G.ctx.lineWidth=0,G.ctx.lineJoin="miter";break}})}),[2]})})},t.prototype.renderReplacedElement=function(r,o,A){if(A&&r.intrinsicWidth>0&&r.intrinsicHeight>0){var s=ap(r),d=op(o);this.path(d),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(A,0,0,r.intrinsicWidth,r.intrinsicHeight,s.left,s.top,s.width,s.height),this.ctx.restore()}},t.prototype.renderNodeContent=function(r){return wo(this,void 0,void 0,function(){var o,A,s,d,f,I,it,it,_,S,U,G,_t,L,K,Lt,V,q,z,it,At,_t,Lt;return Ys(this,function(Et){switch(Et.label){case 0:this.applyEffects(r.getEffects(4)),o=r.container,A=r.curves,s=o.styles,d=0,f=o.textNodes,Et.label=1;case 1:return d0&&Bt>0&&(It=s.ctx.createPattern(Lt,"repeat"),s.renderRepeat(ie,It,ee,qt))):Tk(S)&&(Nt=SC(r,o,[null,null,null]),ie=Nt[0],lt=Nt[1],at=Nt[2],St=Nt[3],Bt=Nt[4],se=S.position.length===0?[qC]:S.position,ee=un(se[0],St),qt=un(se[se.length-1],Bt),Xt=Sk(S,ee,qt,St,Bt),vt=Xt[0],Tt=Xt[1],vt>0&&Tt>0&&(pe=s.ctx.createRadialGradient(lt+ee,at+qt,0,lt+ee,at+qt,vt),kv(S.stops,vt*2).forEach(function(ae){return pe.addColorStop(ae.stop,ds(ae.color))}),s.path(ie),s.ctx.fillStyle=pe,vt!==Tt?(j=r.bounds.left+.5*r.bounds.width,mt=r.bounds.top+.5*r.bounds.height,yt=Tt/vt,Qt=1/yt,s.ctx.save(),s.ctx.translate(j,mt),s.ctx.transform(1,0,0,yt,0,0),s.ctx.translate(-j,-mt),s.ctx.fillRect(lt,Qt*(at-mt)+mt,St,Bt*Qt),s.ctx.restore()):s.ctx.fill())),Ht.label=6;case 6:return o--,[2]}})},s=this,d=0,f=r.styles.backgroundImage.slice(0).reverse(),_.label=1;case 1:return d0?S.style!==2?[3,5]:[4,this.renderDashedDottedBorder(S.color,S.width,f,r.curves,2)]:[3,11]):[3,13];case 4:return G.sent(),[3,11];case 5:return S.style!==3?[3,7]:[4,this.renderDashedDottedBorder(S.color,S.width,f,r.curves,3)];case 6:return G.sent(),[3,11];case 7:return S.style!==4?[3,9]:[4,this.renderDoubleBorder(S.color,S.width,f,r.curves)];case 8:return G.sent(),[3,11];case 9:return[4,this.renderSolidBorder(S.color,f,r.curves)];case 10:G.sent(),G.label=11;case 11:f++,G.label=12;case 12:return I++,[3,3];case 13:return[2]}})})},t.prototype.renderDashedDottedBorder=function(r,o,A,s,d){return wo(this,void 0,void 0,function(){var f,I,_,S,U,G,L,K,V,q,z,it,At,_t,Lt,Et,Lt,Et;return Ys(this,function(xt){return this.ctx.save(),f=ZT(s,A),I=aw(s,A),d===2&&(this.path(I),this.ctx.clip()),Ga(I[0])?(_=I[0].start.x,S=I[0].start.y):(_=I[0].x,S=I[0].y),Ga(I[1])?(U=I[1].end.x,G=I[1].end.y):(U=I[1].x,G=I[1].y),A===0||A===2?L=Math.abs(_-U):L=Math.abs(S-G),this.ctx.beginPath(),d===3?this.formatPath(f):this.formatPath(I.slice(0,2)),K=o<3?o*3:o*2,V=o<3?o*2:o,d===3&&(K=o,V=o),q=!0,L<=K*2?q=!1:L<=K*2+V?(z=L/(2*K+V),K*=z,V*=z):(it=Math.floor((L+V)/(K+V)),At=(L-it*K)/(it-1),_t=(L-(it+1)*K)/it,V=_t<=0||Math.abs(V-At)TU});function Ac(n){return Ac=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ac(n)}function c0(n,t){return c0=Object.setPrototypeOf||function(r,o){return r.__proto__=o,r},c0(n,t)}function nU(){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 yp(n,t,r){return nU()?yp=Reflect.construct:yp=function(o,A,s){var d=[null];d.push.apply(d,A);var f=Function.bind.apply(o,d),I=new f;return s&&c0(I,s.prototype),I},yp.apply(null,arguments)}function oA(n){return sU(n)||oU(n)||aU(n)||AU()}function sU(n){if(Array.isArray(n))return u0(n)}function oU(n){if(typeof Symbol<"u"&&n[Symbol.iterator]!=null||n["@@iterator"]!=null)return Array.from(n)}function aU(n,t){if(n){if(typeof n=="string")return u0(n,t);var r=Object.prototype.toString.call(n).slice(8,-1);if(r==="Object"&&n.constructor&&(r=n.constructor.name),r==="Map"||r==="Set")return Array.from(n);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u0(n,t)}}function u0(n,t){(t==null||t>n.length)&&(t=n.length);for(var r=0,o=new Array(t);r1?r-1:0),A=1;A0&&arguments[0]!==void 0?arguments[0]:LU(),t=function(Zt){return b2(Zt)};if(t.version="2.4.7",t.removed=[],!n||!n.document||n.document.nodeType!==9)return t.isSupported=!1,t;var r=n.document,o=n.document,A=n.DocumentFragment,s=n.HTMLTemplateElement,d=n.Node,f=n.Element,I=n.NodeFilter,_=n.NamedNodeMap,S=_===void 0?n.NamedNodeMap||n.MozNamedAttrMap:_,U=n.HTMLFormElement,G=n.DOMParser,L=n.trustedTypes,K=f.prototype,V=Cp(K,"cloneNode"),q=Cp(K,"nextSibling"),z=Cp(K,"childNodes"),it=Cp(K,"parentNode");if(typeof s=="function"){var At=o.createElement("template");At.content&&At.content.ownerDocument&&(o=At.content.ownerDocument)}var _t=EU(L,r),Lt=_t?_t.createHTML(""):"",Et=o,xt=Et.implementation,It=Et.createNodeIterator,Nt=Et.createDocumentFragment,ie=Et.getElementsByTagName,lt=r.importNode,at={};try{at=Vc(o).documentMode?o.documentMode:{}}catch{}var St={};t.isSupported=typeof it=="function"&&xt&&xt.createHTMLDocument!==void 0&&at!==9;var Bt=bU,se=vU,ee=wU,qt=BU,Xt=_U,vt=SU,Tt=FU,pe=xU,j=null,mt=pr({},[].concat(oA(f2),oA(o0),oA(a0),oA(A0),oA(m2))),yt=null,Qt=pr({},[].concat(oA(C2),oA(l0),oA(I2),oA(Ip))),Ht=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ae=null,ge=null,de=!0,Ze=!0,Re=!1,Je=!0,Xe=!1,Kt=!1,Ce=!1,Ut=!1,Ye=!1,Oe=!1,Qe=!1,Ne=!0,ze=!1,We="user-content-",ri=!0,hi=!1,Ti={},fe=null,Ni=pr({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Di=null,mi=pr({},["audio","video","img","source","image","track"]),Gi=null,le=pr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),gi="http://www.w3.org/1998/Math/MathML",Ke="http://www.w3.org/2000/svg",or="http://www.w3.org/1999/xhtml",Ki=or,ii=!1,br=null,Ji=pr({},[gi,Ke,or],n0),wr,ar=["application/xhtml+xml","text/html"],wt="text/html",W,X=null,rt=o.createElement("form"),ft=function(Zt){return Zt instanceof RegExp||Zt instanceof Function},Mt=function(Zt){X&&X===Zt||((!Zt||Ac(Zt)!=="object")&&(Zt={}),Zt=Vc(Zt),wr=ar.indexOf(Zt.PARSER_MEDIA_TYPE)===-1?wr=wt:wr=Zt.PARSER_MEDIA_TYPE,W=wr==="application/xhtml+xml"?n0:bp,j="ALLOWED_TAGS"in Zt?pr({},Zt.ALLOWED_TAGS,W):mt,yt="ALLOWED_ATTR"in Zt?pr({},Zt.ALLOWED_ATTR,W):Qt,br="ALLOWED_NAMESPACES"in Zt?pr({},Zt.ALLOWED_NAMESPACES,n0):Ji,Gi="ADD_URI_SAFE_ATTR"in Zt?pr(Vc(le),Zt.ADD_URI_SAFE_ATTR,W):le,Di="ADD_DATA_URI_TAGS"in Zt?pr(Vc(mi),Zt.ADD_DATA_URI_TAGS,W):mi,fe="FORBID_CONTENTS"in Zt?pr({},Zt.FORBID_CONTENTS,W):Ni,ae="FORBID_TAGS"in Zt?pr({},Zt.FORBID_TAGS,W):{},ge="FORBID_ATTR"in Zt?pr({},Zt.FORBID_ATTR,W):{},Ti="USE_PROFILES"in Zt?Zt.USE_PROFILES:!1,de=Zt.ALLOW_ARIA_ATTR!==!1,Ze=Zt.ALLOW_DATA_ATTR!==!1,Re=Zt.ALLOW_UNKNOWN_PROTOCOLS||!1,Je=Zt.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Xe=Zt.SAFE_FOR_TEMPLATES||!1,Kt=Zt.WHOLE_DOCUMENT||!1,Ye=Zt.RETURN_DOM||!1,Oe=Zt.RETURN_DOM_FRAGMENT||!1,Qe=Zt.RETURN_TRUSTED_TYPE||!1,Ut=Zt.FORCE_BODY||!1,Ne=Zt.SANITIZE_DOM!==!1,ze=Zt.SANITIZE_NAMED_PROPS||!1,ri=Zt.KEEP_CONTENT!==!1,hi=Zt.IN_PLACE||!1,pe=Zt.ALLOWED_URI_REGEXP||pe,Ki=Zt.NAMESPACE||or,Ht=Zt.CUSTOM_ELEMENT_HANDLING||{},Zt.CUSTOM_ELEMENT_HANDLING&&ft(Zt.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ht.tagNameCheck=Zt.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Zt.CUSTOM_ELEMENT_HANDLING&&ft(Zt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ht.attributeNameCheck=Zt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Zt.CUSTOM_ELEMENT_HANDLING&&typeof Zt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Ht.allowCustomizedBuiltInElements=Zt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Xe&&(Ze=!1),Oe&&(Ye=!0),Ti&&(j=pr({},oA(m2)),yt=[],Ti.html===!0&&(pr(j,f2),pr(yt,C2)),Ti.svg===!0&&(pr(j,o0),pr(yt,l0),pr(yt,Ip)),Ti.svgFilters===!0&&(pr(j,a0),pr(yt,l0),pr(yt,Ip)),Ti.mathMl===!0&&(pr(j,A0),pr(yt,I2),pr(yt,Ip))),Zt.ADD_TAGS&&(j===mt&&(j=Vc(j)),pr(j,Zt.ADD_TAGS,W)),Zt.ADD_ATTR&&(yt===Qt&&(yt=Vc(yt)),pr(yt,Zt.ADD_ATTR,W)),Zt.ADD_URI_SAFE_ATTR&&pr(Gi,Zt.ADD_URI_SAFE_ATTR,W),Zt.FORBID_CONTENTS&&(fe===Ni&&(fe=Vc(fe)),pr(fe,Zt.FORBID_CONTENTS,W)),ri&&(j["#text"]=!0),Kt&&pr(j,["html","head","body"]),j.table&&(pr(j,["tbody"]),delete ae.tbody),xo&&xo(Zt),X=Zt)},Vt=pr({},["mi","mo","mn","ms","mtext"]),Yt=pr({},["foreignobject","desc","title","annotation-xml"]),Rt=pr({},["title","style","font","a","script"]),Wt=pr({},o0);pr(Wt,a0),pr(Wt,IU);var be=pr({},A0);pr(be,yU);var he=function(Zt){var De=it(Zt);(!De||!De.tagName)&&(De={namespaceURI:Ki,tagName:"template"});var Te=bp(Zt.tagName),tr=bp(De.tagName);return br[Zt.namespaceURI]?Zt.namespaceURI===Ke?De.namespaceURI===or?Te==="svg":De.namespaceURI===gi?Te==="svg"&&(tr==="annotation-xml"||Vt[tr]):!!Wt[Te]:Zt.namespaceURI===gi?De.namespaceURI===or?Te==="math":De.namespaceURI===Ke?Te==="math"&&Yt[tr]:!!be[Te]:Zt.namespaceURI===or?De.namespaceURI===Ke&&!Yt[tr]||De.namespaceURI===gi&&!Vt[tr]?!1:!be[Te]&&(Rt[Te]||!Wt[Te]):!!(wr==="application/xhtml+xml"&&br[Zt.namespaceURI]):!1},Le=function(Zt){Cg(t.removed,{element:Zt});try{Zt.parentNode.removeChild(Zt)}catch{try{Zt.outerHTML=Lt}catch{Zt.remove()}}},je=function(Zt,De){try{Cg(t.removed,{attribute:De.getAttributeNode(Zt),from:De})}catch{Cg(t.removed,{attribute:null,from:De})}if(De.removeAttribute(Zt),Zt==="is"&&!yt[Zt])if(Ye||Oe)try{Le(De)}catch{}else try{De.setAttribute(Zt,"")}catch{}},ti=function(Zt){var De,Te;if(Ut)Zt=""+Zt;else{var tr=pU(Zt,/^[\r\n\t ]+/);Te=tr&&tr[0]}wr==="application/xhtml+xml"&&Ki===or&&(Zt=''+Zt+"");var Ui=_t?_t.createHTML(Zt):Zt;if(Ki===or)try{De=new G().parseFromString(Ui,wr)}catch{}if(!De||!De.documentElement){De=xt.createDocument(Ki,"template",null);try{De.documentElement.innerHTML=ii?Lt:Ui}catch{}}var an=De.body||De.documentElement;return Zt&&Te&&an.insertBefore(o.createTextNode(Te),an.childNodes[0]||null),Ki===or?ie.call(De,Kt?"html":"body")[0]:Kt?De.documentElement:an},_i=function(Zt){return It.call(Zt.ownerDocument||Zt,Zt,I.SHOW_ELEMENT|I.SHOW_COMMENT|I.SHOW_TEXT,null,!1)},$i=function(Zt){return Zt instanceof U&&(typeof Zt.nodeName!="string"||typeof Zt.textContent!="string"||typeof Zt.removeChild!="function"||!(Zt.attributes instanceof S)||typeof Zt.removeAttribute!="function"||typeof Zt.setAttribute!="function"||typeof Zt.namespaceURI!="string"||typeof Zt.insertBefore!="function"||typeof Zt.hasChildNodes!="function")},xi=function(Zt){return Ac(d)==="object"?Zt instanceof d:Zt&&Ac(Zt)==="object"&&typeof Zt.nodeType=="number"&&typeof Zt.nodeName=="string"},zi=function(Zt,De,Te){St[Zt]&&dU(St[Zt],function(tr){tr.call(t,De,Te,X)})},hr=function(Zt){var De;if(zi("beforeSanitizeElements",Zt,null),$i(Zt)||_o(/[\u0080-\uFFFF]/,Zt.nodeName))return Le(Zt),!0;var Te=W(Zt.nodeName);if(zi("uponSanitizeElement",Zt,{tagName:Te,allowedTags:j}),Zt.hasChildNodes()&&!xi(Zt.firstElementChild)&&(!xi(Zt.content)||!xi(Zt.content.firstElementChild))&&_o(/<[/\w]/g,Zt.innerHTML)&&_o(/<[/\w]/g,Zt.textContent)||Te==="select"&&_o(/