UNPKG

weatherlayers-gl

Version:

WeatherLayers GL - Weather Visualization Layers for deck.gl

14 lines (13 loc) 188 kB
/*! * Copyright (c) 2021-2026 WeatherLayers.com * * WeatherLayers GL 2026.5.1 * * Package and source code is dual-licensed, the choice of license is MPL-2.0 or our License Terms of Use. Contact support@weatherlayers.com for details. * * Homepage - https://weatherlayers.com/ * Demo - https://demo.weatherlayers.com/ * Docs - https://docs.weatherlayers.com/ * WeatherLayers GL License Terms of Use - https://weatherlayers.com/license-terms-of-use.html */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@deck.gl/core"),require("@deck.gl/layers"),require("@deck.gl/extensions"),require("@luma.gl/engine")):"function"==typeof define&&define.amd?define(["exports","@deck.gl/core","@deck.gl/layers","@deck.gl/extensions","@luma.gl/engine"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).WeatherLayers={},t.deck,t.deck,t.deck,t.luma)}(this,(function(t,e,n,r,a){"use strict";const i=new Map;const o={INWARD:"INWARD",OUTWARD:"OUTWARD"},s={VALUE:"VALUE",CARDINAL:"CARDINAL",CARDINAL2:"CARDINAL2",CARDINAL3:"CARDINAL3"},A={[s.CARDINAL]:["N","E","S","W"],[s.CARDINAL2]:["N","NE","E","SE","S","SW","W","NW"],[s.CARDINAL3]:["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"]};function l(t,e){if(!e)return`${Math.round(t)}`;const{scale:n=1,offset:r=0,decimals:a=0}=e,i=n*t+r;return`${a?Math.round(i*10**a)/10**a:Math.round(i)}`}function c(t){return t.unit.replace("^2","²").replace("^3","³")}function u(t,e){return`${l(t,e)} ${c(e)}`}function g(t,e,n){if(e===o.OUTWARD&&(t+=180),n===s.VALUE)return`${Math.round(t%360)}°`;if(n===s.CARDINAL||n===s.CARDINAL2||n===s.CARDINAL3){const e=A[n],r=360/e.length;return e[Math.floor((t%360+r/2)/r)%e.length]}throw new Error("Invalid state")}const p=[255,255,255],d='"Helvetica Neue", Arial, Helvetica, sans-serif',h=[255,255,255],f=[13,13,13],m=l,C=[255,255,255];function I(t,e){const n={};for(const r in t)if(void 0===t[r]&&r in e){const t=e[r];t&&("value"in t?t.value&&(n[r]=t.value):n[r]=t)}return Object.freeze({...t,...n})}class v{constructor(t){this._running=!1,this._raf=void 0,this._lastFrameTime=0,this._config=t}getConfig(){return{...this._config}}setConfig(t){this._config=t}updateConfig(t){this.setConfig({...this._config,...t})}get running(){return this._running}toggle(t=!this._running){t?this.start():this.stop()}start(){this._running||(this._running=!0,this._raf=window.requestAnimationFrame((()=>this.step())))}stop(){this._running&&(this._running=!1,this._raf&&(window.cancelAnimationFrame(this._raf),this._raf=void 0))}step(){const t=1e3/(this._config.fps??30),e=Date.now(),n=e-this._lastFrameTime;n>t&&(this._lastFrameTime=e-n%t,this._config.onUpdate()),this._running&&(this._raf=window.requestAnimationFrame((()=>this.step())))}}const E=new Map;const y=new class{constructor(){this.queue=Promise.resolve()}async run(t){const e=this.queue;let n;this.queue=new Promise((t=>{n=t}));try{return await e,await t()}finally{n()}}};async function b(t,e){const n=await async function(t){if(i.has(t))return i.get(t);try{if("geotiff"===t)return await import("geotiff")}catch(e){throw new Error(`Optional dependency '${t}' is missing, install it with a package manager or provide with \`setLibrary('${t}', library)\``,{cause:e})}}("geotiff");let r;try{r=await n.fromUrl(t,{allowFullFile:!0,blockSize:Number.MAX_SAFE_INTEGER,fetch:(t,n)=>fetch(t,{...n,headers:{...n?.headers,...e?.headers}})},e?.signal)}catch(e){throw new Error(`Image ${t} can't be decoded.`,{cause:e})}const a=await r.getImage(0),o=await a.readRasters({interleave:!0,signal:e?.signal});if(!(o instanceof Uint8Array||o instanceof Uint8ClampedArray||o instanceof Float32Array))throw new Error("Unsupported data format");const s=function(t,e){if(null==e)return t;const n=t.slice(0);for(let t=0;t<n.length;t++)Math.abs(n[t]-e)<2*Number.EPSILON&&(n[t]=NaN);return n}(o,a.getGDALNoData());return{data:s,width:a.getWidth(),height:a.getHeight()}}function B(t){return async(e,n)=>{if(!1===n?.cache)return t(e);const r=n?.cache??E,a=e+(n?.headers?":"+JSON.stringify(n?.headers):""),i=r.get(a);if(i)return i;const o={...n,cache:void 0},s=t(e,o);return r.set(a,s),s.then((t=>{r.set(a,t)})),s}}const w=B((async(t,e)=>{if(t.includes(".png")||t.includes(".webp")||t.includes("image/png")||t.includes("image/webp"))return async function(t,e){let n;if(e?.headers||e?.signal){const r=await fetch(t,{headers:e.headers,signal:e.signal});if(!r.ok)throw new Error(`URL ${t} can't be loaded. Status: ${r.status}`);const a=await r.blob();n=URL.createObjectURL(a)}const r=new Image;try{await new Promise(((e,a)=>{r.addEventListener("load",e),r.addEventListener("error",a),r.crossOrigin="anonymous",r.src=n??t}))}catch(e){throw new Error(`URL ${t} can't be loaded.`,{cause:e})}finally{n&&URL.revokeObjectURL(n)}try{await y.run((()=>r.decode()))}catch(e){throw new Error(`Image ${t} can't be decoded.`,{cause:e})}const a=document.createElement("canvas");a.width=r.width,a.height=r.height;const i=a.getContext("2d");i.drawImage(r,0,0);const o=i.getImageData(0,0,a.width,a.height),{data:s,width:A,height:l}=o;return{data:s,width:A,height:l}}(t,e);if(t.includes(".tif")||t.includes("image/tif"))return b(t,e);throw new Error("Unsupported data format")})),Q=B((async(t,e)=>{const n=await fetch(t,{headers:e?.headers});if(!n.ok)throw new Error(`URL ${t} can't be loaded. Status: ${n.status}`);return n.json()}));function x(t,e,n){if(!e){if(0===n)return t;throw new Error("Invalid state")}if(n<=0)return t;if(n>=1)return e;{const r=new Date(t),a=new Date(e);return new Date(r.getTime()+(a.getTime()-r.getTime())*n).toISOString()}}function T(t,e,n){if(!e){if(t===n)return 0;throw new Error("Invalid state")}if(n<=t)return 0;if(n>=e)return 1;{const r=new Date(t),a=new Date(e);return(new Date(n).getTime()-r.getTime())/(a.getTime()-r.getTime())}}function M(t,e){const n=new Date(t);return new Date(n.getTime()+1e3*e*60*60).toISOString()}function O(t){if(!t)return t;const e=new Date(t);if(!e.getDate())return t;return`${e.getUTCFullYear()}/${`${e.getUTCMonth()+1}`.padStart(2,"0")}/${`${e.getUTCDate()}`.padStart(2,"0")} ${`${e.getUTCHours()}`.padStart(2,"0")}:${`${e.getUTCMinutes()}`.padStart(2,"0")} UTC`}const S={NEAREST:"NEAREST",LINEAR:"LINEAR",CUBIC:"CUBIC"},L={SCALAR:"SCALAR",VECTOR:"VECTOR"};function P(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var N,U,D,V,k,J,F,R,W,q,Z,G,z,j,K,X,Y,H;function _(){return U?N:(U=1,N=(t,e=0,n=1)=>t<e?e:t>n?n:t)}function $(){if(V)return D;V=1;const t=_();return D=e=>{e._clipped=!1,e._unclipped=e.slice(0);for(let n=0;n<=3;n++)n<3?((e[n]<0||e[n]>255)&&(e._clipped=!0),e[n]=t(e[n],0,255)):3===n&&(e[n]=t(e[n],0,1));return e},D}function tt(){if(J)return k;J=1;const t={};for(let e of["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"])t[`[object ${e}]`]=e.toLowerCase();return k=function(e){return t[Object.prototype.toString.call(e)]||"object"}}function et(){if(R)return F;R=1;const t=tt();return F=(e,n=null)=>e.length>=3?Array.prototype.slice.call(e):"object"==t(e[0])&&n?n.split("").filter((t=>void 0!==e[0][t])).map((t=>e[0][t])):e[0]}function nt(){if(q)return W;q=1;const t=tt();return W=e=>{if(e.length<2)return null;const n=e.length-1;return"string"==t(e[n])?e[n].toLowerCase():null}}function rt(){if(G)return Z;G=1;const t=Math.PI;return Z={clip_rgb:$(),limit:_(),type:tt(),unpack:et(),last:nt(),PI:t,TWOPI:2*t,PITHIRD:t/3,DEG2RAD:t/180,RAD2DEG:180/t}}function at(){return j?z:(j=1,z={format:{},autodetect:[]})}function it(){if(X)return K;X=1;const{last:t,clip_rgb:e,type:n}=rt(),r=at();return K=class{constructor(...a){const i=this;if("object"===n(a[0])&&a[0].constructor&&a[0].constructor===this.constructor)return a[0];let o=t(a),s=!1;if(!o){s=!0,r.sorted||(r.autodetect=r.autodetect.sort(((t,e)=>e.p-t.p)),r.sorted=!0);for(let t of r.autodetect)if(o=t.test(...a),o)break}if(!r.format[o])throw new Error("unknown format: "+a);{const t=r.format[o].apply(null,s?a:a.slice(0,-1));i._rgb=e(t)}3===i._rgb.length&&i._rgb.push(1)}toString(){return"function"==n(this.hex)?this.hex():`[${this._rgb.join(",")}]`}},K}function ot(){if(H)return Y;H=1;const t=(...e)=>new t.Color(...e);return t.Color=it(),t.version="@@version",Y=t}var st,At,lt,ct,ut,gt,pt,dt,ht,ft,mt,Ct=P(ot()),It={};function vt(){if(ct)return lt;ct=1;const{unpack:t}=rt();return lt=(...e)=>{e=t(e,"rgba");let[n,r,a]=e;n/=255,r/=255,a/=255;const i=Math.min(n,r,a),o=Math.max(n,r,a),s=(o+i)/2;let A,l;return o===i?(A=0,l=Number.NaN):A=s<.5?(o-i)/(o+i):(o-i)/(2-o-i),n==o?l=(r-a)/(o-i):r==o?l=2+(a-n)/(o-i):a==o&&(l=4+(n-r)/(o-i)),l*=60,l<0&&(l+=360),e.length>3&&void 0!==e[3]?[l,A,s,e[3]]:[l,A,s]}}function Et(){if(gt)return ut;gt=1;const{unpack:t,last:e}=rt(),n=function(){if(At)return st;At=1;const{unpack:t,last:e}=rt(),n=t=>Math.round(100*t)/100;return st=(...r)=>{const a=t(r,"hsla");let i=e(r)||"lsa";return a[0]=n(a[0]||0),a[1]=n(100*a[1])+"%",a[2]=n(100*a[2])+"%","hsla"===i||a.length>3&&a[3]<1?(a[3]=a.length>3?a[3]:1,i="hsla"):a.length=3,`${i}(${a.join(",")})`}}(),r=vt(),{round:a}=Math;return ut=(...i)=>{const o=t(i,"rgba");let s=e(i)||"rgb";return"hsl"==s.substr(0,3)?n(r(o),s):(o[0]=a(o[0]),o[1]=a(o[1]),o[2]=a(o[2]),("rgba"===s||o.length>3&&o[3]<1)&&(o[3]=o.length>3?o[3]:1,s="rgba"),`${s}(${o.slice(0,"rgb"===s?3:4).join(",")})`)}}function yt(){if(dt)return pt;dt=1;const{unpack:t}=rt(),{round:e}=Math;return pt=(...n)=>{n=t(n,"hsl");const[r,a,i]=n;let o,s,A;if(0===a)o=s=A=255*i;else{const t=[0,0,0],n=[0,0,0],l=i<.5?i*(1+a):i+a-i*a,c=2*i-l,u=r/360;t[0]=u+1/3,t[1]=u,t[2]=u-1/3;for(let e=0;e<3;e++)t[e]<0&&(t[e]+=1),t[e]>1&&(t[e]-=1),6*t[e]<1?n[e]=c+6*(l-c)*t[e]:2*t[e]<1?n[e]=l:3*t[e]<2?n[e]=c+(l-c)*(2/3-t[e])*6:n[e]=c;[o,s,A]=[e(255*n[0]),e(255*n[1]),e(255*n[2])]}return n.length>3?[o,s,A,n[3]]:[o,s,A,1]}}!function(){if(mt)return It;mt=1;const t=ot(),e=it(),n=at(),{type:r}=rt(),a=Et(),i=function(){if(ft)return ht;ft=1;const t=yt(),e=at(),n=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,r=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,a=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,i=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,o=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,s=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,{round:A}=Math,l=l=>{let c;if(l=l.toLowerCase().trim(),e.format.named)try{return e.format.named(l)}catch(t){}if(c=l.match(n)){const t=c.slice(1,4);for(let e=0;e<3;e++)t[e]=+t[e];return t[3]=1,t}if(c=l.match(r)){const t=c.slice(1,5);for(let e=0;e<4;e++)t[e]=+t[e];return t}if(c=l.match(a)){const t=c.slice(1,4);for(let e=0;e<3;e++)t[e]=A(2.55*t[e]);return t[3]=1,t}if(c=l.match(i)){const t=c.slice(1,5);for(let e=0;e<3;e++)t[e]=A(2.55*t[e]);return t[3]=+t[3],t}if(c=l.match(o)){const e=c.slice(1,4);e[1]*=.01,e[2]*=.01;const n=t(e);return n[3]=1,n}if(c=l.match(s)){const e=c.slice(1,4);e[1]*=.01,e[2]*=.01;const n=t(e);return n[3]=+c[4],n}};return l.test=t=>n.test(t)||r.test(t)||a.test(t)||i.test(t)||o.test(t)||s.test(t),ht=l}();e.prototype.css=function(t){return a(this._rgb,t)},t.css=(...t)=>new e(...t,"css"),n.format.css=i,n.autodetect.push({p:5,test:(t,...e)=>{if(!e.length&&"string"===r(t)&&i.test(t))return"css"}})}();var bt,Bt,wt,Qt,xt,Tt={};function Mt(){if(Bt)return bt;Bt=1;const{unpack:t,last:e}=rt(),{round:n}=Math;return bt=(...r)=>{let[a,i,o,s]=t(r,"rgba"),A=e(r)||"auto";void 0===s&&(s=1),"auto"===A&&(A=s<1?"rgba":"rgb"),a=n(a),i=n(i),o=n(o);let l="000000"+(a<<16|i<<8|o).toString(16);l=l.substr(l.length-6);let c="0"+n(255*s).toString(16);switch(c=c.substr(c.length-2),A.toLowerCase()){case"rgba":return`#${l}${c}`;case"argb":return`#${c}${l}`;default:return`#${l}`}}}function Ot(){if(Qt)return wt;Qt=1;const t=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,e=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;return wt=n=>{if(n.match(t)){4!==n.length&&7!==n.length||(n=n.substr(1)),3===n.length&&(n=(n=n.split(""))[0]+n[0]+n[1]+n[1]+n[2]+n[2]);const t=parseInt(n,16);return[t>>16,t>>8&255,255&t,1]}if(n.match(e)){5!==n.length&&9!==n.length||(n=n.substr(1)),4===n.length&&(n=(n=n.split(""))[0]+n[0]+n[1]+n[1]+n[2]+n[2]+n[3]+n[3]);const t=parseInt(n,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error(`unknown hex color: ${n}`)},wt}!function(){if(xt)return Tt;xt=1;const t=ot(),e=it(),{type:n}=rt(),r=at(),a=Mt();e.prototype.hex=function(t){return a(this._rgb,t)},t.hex=(...t)=>new e(...t,"hex"),r.format.hex=Ot(),r.autodetect.push({p:4,test:(t,...e)=>{if(!e.length&&"string"===n(t)&&[3,4,5,6,7,8,9].indexOf(t.length)>=0)return"hex"}})}();var St,Lt={};function Pt(){if(St)return Lt;St=1;const{unpack:t,type:e}=rt(),n=ot(),r=it(),a=at(),i=vt();return r.prototype.hsl=function(){return i(this._rgb)},n.hsl=(...t)=>new r(...t,"hsl"),a.format.hsl=yt(),a.autodetect.push({p:2,test:(...n)=>{if(n=t(n,"hsl"),"array"===e(n)&&3===n.length)return"hsl"}}),Lt}Pt();var Nt,Ut,Dt,Vt,kt,Jt={};function Ft(){if(Ut)return Nt;Ut=1;const{unpack:t}=rt(),{min:e,max:n}=Math;return Nt=(...r)=>{r=t(r,"rgb");let[a,i,o]=r;const s=e(a,i,o),A=n(a,i,o),l=A-s;let c,u,g;return g=A/255,0===A?(c=Number.NaN,u=0):(u=l/A,a===A&&(c=(i-o)/l),i===A&&(c=2+(o-a)/l),o===A&&(c=4+(a-i)/l),c*=60,c<0&&(c+=360)),[c,u,g]}}function Rt(){if(kt)return Jt;kt=1;const{unpack:t,type:e}=rt(),n=ot(),r=it(),a=at(),i=Ft();return r.prototype.hsv=function(){return i(this._rgb)},n.hsv=(...t)=>new r(...t,"hsv"),a.format.hsv=function(){if(Vt)return Dt;Vt=1;const{unpack:t}=rt(),{floor:e}=Math;return Dt=(...n)=>{n=t(n,"hsv");let r,a,i,[o,s,A]=n;if(A*=255,0===s)r=a=i=A;else{360===o&&(o=0),o>360&&(o-=360),o<0&&(o+=360),o/=60;const t=e(o),n=o-t,l=A*(1-s),c=A*(1-s*n),u=A*(1-s*(1-n));switch(t){case 0:[r,a,i]=[A,u,l];break;case 1:[r,a,i]=[c,A,l];break;case 2:[r,a,i]=[l,A,u];break;case 3:[r,a,i]=[l,c,A];break;case 4:[r,a,i]=[u,l,A];break;case 5:[r,a,i]=[A,l,c]}}return[r,a,i,n.length>3?n[3]:1]}}(),a.autodetect.push({p:2,test:(...n)=>{if(n=t(n,"hsv"),"array"===e(n)&&3===n.length)return"hsv"}}),Jt}Rt();var Wt,qt,Zt,Gt={};!function(){if(Zt)return Gt;Zt=1;const t=it(),e=at(),{type:n}=rt(),r=qt?Wt:(qt=1,Wt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}),a=Ot(),i=Mt();t.prototype.name=function(){const t=i(this._rgb,"rgb");for(let e of Object.keys(r))if(r[e]===t)return e.toLowerCase();return t},e.format.named=t=>{if(t=t.toLowerCase(),r[t])return a(r[t]);throw new Error("unknown color name: "+t)},e.autodetect.push({p:5,test:(t,...e)=>{if(!e.length&&"string"===n(t)&&r[t.toLowerCase()])return"named"}})}();var zt,jt={};!function(){if(zt)return jt;zt=1;const t=ot(),e=it(),n=at(),{unpack:r,type:a}=rt(),{round:i}=Math;e.prototype.rgb=function(t=!0){return!1===t?this._rgb.slice(0,3):this._rgb.slice(0,3).map(i)},e.prototype.rgba=function(t=!0){return this._rgb.slice(0,4).map(((e,n)=>n<3?!1===t?e:i(e):e))},t.rgb=(...t)=>new e(...t,"rgb"),n.format.rgb=(...t)=>{const e=r(t,"rgba");return void 0===e[3]&&(e[3]=1),e},n.autodetect.push({p:3,test:(...t)=>{if(t=r(t,"rgba"),"array"===a(t)&&(3===t.length||4===t.length&&"number"==a(t[3])&&t[3]>=0&&t[3]<=1))return"rgb"}})}();var Kt,Xt,Yt,Ht,_t,$t,te,ee,ne,re,ae,ie,oe,se={};function Ae(){if(Yt)return Xt;Yt=1;const t=it();return Xt=(e,n,r,a)=>{let i,o,s,A,l,c,u,g,p,d,h,f;return"hsl"===a?(i=e.hsl(),o=n.hsl()):"hsv"===a?(i=e.hsv(),o=n.hsv()):"hcg"===a?(i=e.hcg(),o=n.hcg()):"hsi"===a?(i=e.hsi(),o=n.hsi()):"lch"===a||"hcl"===a?(a="hcl",i=e.hcl(),o=n.hcl()):"oklch"===a&&(i=e.oklch().reverse(),o=n.oklch().reverse()),"h"!==a.substr(0,1)&&"oklch"!==a||([s,l,u]=i,[A,c,g]=o),isNaN(s)||isNaN(A)?isNaN(s)?isNaN(A)?d=Number.NaN:(d=A,1!=u&&0!=u||"hsv"==a||(p=c)):(d=s,1!=g&&0!=g||"hsv"==a||(p=l)):(f=A>s&&A-s>180?A-(s+360):A<s&&s-A>180?A+360-s:A-s,d=s+r*f),void 0===p&&(p=l+r*(c-l)),h=u+r*(g-u),new t("oklch"===a?[h,p,d]:[d,p,h],a)}}function le(){return _t?Ht:(_t=1,Ht={})}!function(){if(Kt)return se;Kt=1;const t=it(),{type:e}=rt();t.prototype.alpha=function(n,r=!1){return void 0!==n&&"number"===e(n)?r?(this._rgb[3]=n,this):new t([this._rgb[0],this._rgb[1],this._rgb[2],n],"rgb"):this._rgb[3]}}(),function(){if(te)return $t;te=1,Pt();const t=Ae(),e=(e,n,r)=>t(e,n,r,"hsl");le().hsl=e,$t=e}(),function(){if(ne)return ee;ne=1,Rt();const t=Ae(),e=(e,n,r)=>t(e,n,r,"hsv");le().hsv=e,ee=e}(),function(){if(ae)return re;ae=1;const t=it(),e=(e,n,r)=>{const a=e._rgb,i=n._rgb;return new t(a[0]+r*(i[0]-a[0]),a[1]+r*(i[1]-a[1]),a[2]+r*(i[2]-a[2]),"rgb")};le().rgb=e,re=e}();var ce,ue,ge=function(){if(oe)return ie;oe=1;const t=it(),{type:e}=rt(),n=le();return ie=(r,a,i=.5,...o)=>{let s=o[0]||"lrgb";if(n[s]||o.length||(s=Object.keys(n)[0]),!n[s])throw new Error(`interpolation mode ${s} is not defined`);return"object"!==e(r)&&(r=new t(r)),"object"!==e(a)&&(a=new t(a)),n[s](r,a,i).alpha(r.alpha()+i*(a.alpha()-r.alpha()))}}(),pe=P(ge);var de=function(){if(ue)return ce;ue=1;const t=ot(),{type:e}=rt(),{pow:n}=Math;return ce=function(r){let a="rgb",i=t("#ccc"),o=0,s=[0,1],A=[],l=[0,0],c=!1,u=[],g=!1,p=0,d=1,h=!1,f={},m=!0,C=1;const I=function(n){if((n=n||["#fff","#000"])&&"string"===e(n)&&t.brewer&&t.brewer[n.toLowerCase()]&&(n=t.brewer[n.toLowerCase()]),"array"===e(n)){1===n.length&&(n=[n[0],n[0]]),n=n.slice(0);for(let e=0;e<n.length;e++)n[e]=t(n[e]);A.length=0;for(let t=0;t<n.length;t++)A.push(t/(n.length-1))}return b(),u=n};let v=t=>t,E=t=>t;const y=function(r,o){let s,g;if(null==o&&(o=!1),isNaN(r)||null===r)return i;if(o)g=r;else if(c&&c.length>2){g=function(t){if(null!=c){const e=c.length-1;let n=0;for(;n<e&&t>=c[n];)n++;return n-1}return 0}(r)/(c.length-2)}else g=d!==p?(r-p)/(d-p):1;g=E(g),o||(g=v(g)),1!==C&&(g=n(g,C)),g=l[0]+g*(1-l[0]-l[1]),g=Math.min(1,Math.max(0,g));const h=Math.floor(1e4*g);if(m&&f[h])s=f[h];else{if("array"===e(u))for(let e=0;e<A.length;e++){const n=A[e];if(g<=n){s=u[e];break}if(g>=n&&e===A.length-1){s=u[e];break}if(g>n&&g<A[e+1]){g=(g-n)/(A[e+1]-n),s=t.interpolate(u[e],u[e+1],g,a);break}}else"function"===e(u)&&(s=u(g));m&&(f[h]=s)}return s};var b=()=>f={};I(r);const B=function(e){const n=t(y(e));return g&&n[g]?n[g]():n};return B.classes=function(n){if(null!=n){if("array"===e(n))c=n,s=[n[0],n[n.length-1]];else{const e=t.analyze(s);c=0===n?[e.min,e.max]:t.limits(e,"e",n)}return B}return c},B.domain=function(t){if(!arguments.length)return s;p=t[0],d=t[t.length-1],A=[];const e=u.length;if(t.length===e&&p!==d)for(let e of Array.from(t))A.push((e-p)/(d-p));else{for(let t=0;t<e;t++)A.push(t/(e-1));if(t.length>2){const e=t.map(((e,n)=>n/(t.length-1))),n=t.map((t=>(t-p)/(d-p)));n.every(((t,n)=>e[n]===t))||(E=t=>{if(t<=0||t>=1)return t;let r=0;for(;t>=n[r+1];)r++;const a=(t-n[r])/(n[r+1]-n[r]);return e[r]+a*(e[r+1]-e[r])})}}return s=[p,d],B},B.mode=function(t){return arguments.length?(a=t,b(),B):a},B.range=function(t,e){return I(t),B},B.out=function(t){return g=t,B},B.spread=function(t){return arguments.length?(o=t,B):o},B.correctLightness=function(t){return null==t&&(t=!0),h=t,b(),v=h?function(t){const e=y(0,!0).lab()[0],n=y(1,!0).lab()[0],r=e>n;let a=y(t,!0).lab()[0];const i=e+(n-e)*t;let o=a-i,s=0,A=1,l=20;for(;Math.abs(o)>.01&&l-- >0;)r&&(o*=-1),o<0?(s=t,t+=.5*(A-t)):(A=t,t+=.5*(s-t)),a=y(t,!0).lab()[0],o=a-i;return t}:t=>t,B},B.padding=function(t){return null!=t?("number"===e(t)&&(t=[t,t]),l=t,B):l},B.colors=function(e,n){arguments.length<2&&(n="hex");let a=[];if(0===arguments.length)a=u.slice(0);else if(1===e)a=[B(.5)];else if(e>1){const t=s[0],n=s[1]-t;a=function(t,e,n){let r=[],a=t<e,i=e;for(let e=t;a?e<i:e>i;a?e++:e--)r.push(e);return r}(0,e).map((r=>B(t+r/(e-1)*n)))}else{r=[];let t=[];if(c&&c.length>2)for(let e=1,n=c.length,r=1<=n;r?e<n:e>n;r?e++:e--)t.push(.5*(c[e-1]+c[e]));else t=s;a=t.map((t=>B(t)))}return t[n]&&(a=a.map((t=>t[n]()))),a},B.cache=function(t){return null!=t?(m=t,B):m},B.gamma=function(t){return null!=t?(C=t,B):C},B.nodata=function(e){return null!=e?(i=t(e),B):i},B},ce}(),he=P(de);Ct.mix=Ct.interpolate=pe,Ct.scale=he;const fe=/[ ,\t:]+/g,me=/[\-\/]/g;function Ce(t){return t.startsWith("#")}function Ie(t){const e=t.split(me);return 1===e.length?e[0]:e}function ve(t){const e=t.trim().split("\n"),n=function(t){return t.some((t=>!Ce(t)&&t.split(fe).length>=8))}(e),r=function(t){return t.some((t=>!(Ce(t)||!t.match(/\d+\-\d+\-\d+/)&&!t.match(/\d+\/\d+\/\d+/))))}(e),a=function(t){const e=t.find((t=>Ce(t)&&t.includes("COLOR_MODEL = ")));if(e){const t=e.match(/COLOR_MODEL = ([a-zA-Z]+)/);if(t)return t[1].toLowerCase()}}(e),i=e.filter((t=>!!t&&!t.startsWith("#"))),o=[];for(let t of i){const e=t.split(fe);n?8===e.length||9===e.length?(o.push([e[0],[e[1],e[2],e[3]]]),o.push([e[4],[e[5],e[6],e[7]]])):4!==e.length&&5!==e.length||o.push([e[0],[e[1],e[2],e[3]]]):r?4===e.length||5===e.length?(o.push([e[0],Ie(e[1])]),o.push([e[2],Ie(e[3])])):2!==e.length&&3!==e.length||o.push([e[0],Ie(e[1])]):5===e.length?o.push([e[0],[e[1],e[2],e[3],e[4]]]):4===e.length?o.push([e[0],[e[1],e[2],e[3]]]):2===e.length&&o.push([e[0],e[1]])}return{paletteArray:o,mode:a}}const Ee="rgb";function ye(t,e){if("string"==typeof t){if("%"===t[t.length-1]){const n=parseFloat(t)/100;if(n<0||n>1)throw new Error(`Invalid value for a percentage ${t}`);return e[0]+(e[1]-e[0])*n}return"N"===t?null:"B"===t||"F"===t?void 0:"nv"===t?null:"default"===t?void 0:"null"===t||"nodata"===t?null:parseFloat(t)}if("number"==typeof t)return t;throw new Error("Invalid state")}function be(t,e){if(Array.isArray(t)){if(4===t.length)return{[e[0]]:parseFloat(t[0].toString()),[e[1]]:parseFloat(t[1].toString()),[e[2]]:parseFloat(t[2].toString()),a:parseFloat(t[3].toString())/255};if(3===t.length)return{[e[0]]:parseFloat(t[0].toString()),[e[1]]:parseFloat(t[1].toString()),[e[2]]:parseFloat(t[2].toString())};throw new Error(`Invalid color ${t}`)}if("string"==typeof t||"number"==typeof t)return t.toString().match(/^\d+$/)||"number"==typeof t?{[e[0]]:parseFloat(t.toString()),[e[1]]:parseFloat(t.toString()),[e[2]]:parseFloat(t.toString())}:t;throw new Error(`Invalid color ${t}`)}function Be(t,{bounds:e=[0,1],mode:n=Ee}={}){const r=[],a=[];let i;for(let[o,s]of t){const t=ye(o,e),A=be(s,n);null!=t?(r.push(A),a.push(t)):null===t&&(i=A)}let o=Ct.scale(r).domain(a).mode(n);return void 0!==i&&(o=o.nodata(i)),o}function we(t,{bounds:e=[0,1]}={}){if("string"==typeof t)return function(t,{bounds:e=[0,1]}={}){const{paletteArray:n,mode:r}=ve(t);return Be(n,{bounds:e,mode:r})}(t,{bounds:e});if(Array.isArray(t))return Be(t,{bounds:e});throw new Error("Invalid format")}function Qe(t,{width:e=256,height:n=1}={}){const r=t.colors(e,"css"),a=document.createElement("canvas");a.width=e,a.height=n,a.style.imageRendering="-moz-crisp-edges",a.style.imageRendering="pixelated";const i=a.getContext("2d");for(let t=0;t<e;t++)i.fillStyle=r[t],i.fillRect(t,0,1,n);return a}const xe={BOTTOM:"BOTTOM",TOP:"TOP",RIGHT:"RIGHT",LEFT:"LEFT"};function Te(t){return t%1}function Me(t,e){return t.map(((n,r)=>t[r]+e[r]))}function Oe(t,e){return t.map(((n,r)=>t[r]*e))}function Se(t,e){return t.map(((n,r)=>t[r]*e[r])).reduce(((t,e)=>t+e))}function Le(t,e,n){return t===e?t:t*(1-n)+e*n}function Pe(t,e,n){return t.map(((r,a)=>Le(t[a],e[a],n)))}function Ne(t,e){return e?t[3]>=255:!isNaN(t[0])}function Ue(t,e,n){return e===L.VECTOR?n?[Le(n[0],n[1],t[0]/255),Le(n[0],n[1],t[1]/255)]:[t[0],t[1]]:[NaN,NaN]}function De(t,e,n){if(e===L.VECTOR){const r=Ue(t,e,n);return Math.hypot(r[0],r[1])}return function(t,e,n){return e===L.VECTOR?0:n?Le(n[0],n[1],t[0]/255):t[0]}(t,e,n)}function Ve(t,e,n,r,a,i){const{data:o,width:s,height:A}=t,l=o.length/(s*A),c=(n+a+.5)/e[0],u=(r+i+.5)/e[1],g=Math.max(0,Math.min(s-1,Math.floor(c*s))),p=Math.max(0,Math.min(A-1,Math.floor(u*A)));return new Array(l).fill(void 0).map(((t,e)=>o[(g+p*s)*l+e]))}const ke=[3,-6,0,4].map((t=>t/6)),Je=[-1,6,-12,8].map((t=>t/6));function Fe(t){return[t*t*t,t*t,t,1]}function Re(t,e,n,r,a){const i=Me(Me(Me(Oe(t,Se(Je,Fe(a+1))),Oe(e,Se(ke,Fe(a)))),Oe(n,Se(ke,Fe(1-a)))),Oe(r,Se(Je,Fe(2-a))));return i[3]=t[3]>0&&e[3]>0&&n[3]>0&&r[3]>0?Math.max(Math.max(Math.max(t[3],e[3]),n[3]),r[3]):0,i}function We(t,e,n,r,a){return n===S.CUBIC?function(t,e,n,r){const a=n*e[0]-.5,i=r*e[1]-.5,o=Math.floor(a),s=Math.floor(i),A=Te(a),l=Te(i);return Re(Re(Ve(t,e,o,s,-1,-1),Ve(t,e,o,s,0,-1),Ve(t,e,o,s,1,-1),Ve(t,e,o,s,2,-1),A),Re(Ve(t,e,o,s,-1,0),Ve(t,e,o,s,0,0),Ve(t,e,o,s,1,0),Ve(t,e,o,s,2,0),A),Re(Ve(t,e,o,s,-1,1),Ve(t,e,o,s,0,1),Ve(t,e,o,s,1,1),Ve(t,e,o,s,2,1),A),Re(Ve(t,e,o,s,-1,2),Ve(t,e,o,s,0,2),Ve(t,e,o,s,1,2),Ve(t,e,o,s,2,2),A),l)}(t,e,r,a):n===S.LINEAR?function(t,e,n,r){const a=n*e[0]-.5,i=r*e[1]-.5,o=Math.floor(a),s=Math.floor(i),A=Te(a),l=Te(i);return Pe(Pe(Ve(t,e,o,s,0,0),Ve(t,e,o,s,1,0),A),Pe(Ve(t,e,o,s,0,1),Ve(t,e,o,s,1,1),A),l)}(t,e,r,a):function(t,e,n,r){const a=n*e[0]-.5,i=r*e[1]-.5;return Ve(t,e,Math.round(a),Math.round(i),0,0)}(t,e,r,a)}function qe(t,e,n,r,a,i,o,s){const A=i?o+.5/n[0]:Le(0+.5/n[0],1-.5/n[0],o),l=Le(0+.5/n[1],1-.5/n[1],s);if(e&&a>0){return Pe(We(t,n,r,A,l),We(e,n,r,A,l),a)}return We(t,n,r,A,l)}function Ze(t,e,n){const r=1+Math.max(0,n);return[t/r,e/r]}const Ge=-180,ze=180,je=-85.051129,Ke=85.051129;function Xe(t,e){let n=((t+180)%(r=360)+r)%r-180;var r;return"number"==typeof e&&n<e&&(n+=360),n}function Ye(t){return t[2]-t[0]==360}function He(t,e){return{type:"Feature",geometry:{type:"Point",coordinates:t},properties:e}}function _e(t,e,n){const{image:r,image2:a,imageSmoothing:i,imageInterpolation:o,imageWeight:s,imageType:A,imageUnscale:l,imageMinValue:c,imageMaxValue:u}=t,{width:g,height:p}=r,d=function(t,e,n){const r=[n[0],n[3]],a=(n[2]-n[0])/t,i=(n[3]-n[1])/e;return t=>{const[e,n]=t;return[(e-r[0])/a,(r[1]-n)/i]}}(g,p,e),h=Ze(g,p,i),f=Ye(e),m=n.map((t=>{if(!function(t,e){return t[0]>=e[0]&&t[0]<=e[2]&&t[1]>=e[1]&&t[1]<=e[3]}(t,e))return He(t,{value:NaN});const n=d(t),i=n[0]/g,m=n[1]/p,C=qe(r,a,h,o,s,f,i,m);if(!Ne(C,l))return He(t,{value:NaN});const I=De(C,A,l);if("number"==typeof c&&!isNaN(c)&&I<c||"number"==typeof u&&!isNaN(u)&&I>u)return He(t,{value:NaN});if(A===L.VECTOR){const e=function(t,e,n){if(e===L.VECTOR){const r=Ue(t,e,n);return(360-(Math.atan2(r[1],r[0])/Math.PI*180+180)-270)%360}return NaN}(C,A,l);return He(t,{value:I,direction:e})}return He(t,{value:I})}));return{type:"FeatureCollection",features:m}}const $e=new WeakMap,tn=new WeakMap;function en(t,e){const{data:n,width:r,height:a}=e,i=n.length/(r*a);if(n instanceof Uint8Array||n instanceof Uint8ClampedArray){if(4===i)return"rgba8unorm";if(2===i)return"rg8unorm";if(1===i)return"r8unorm";throw new Error("Unsupported data format")}if(n instanceof Float32Array){if(!t.features.has("float32-renderable-webgl"))throw new Error("Float textures are required");if(2===i)return"rg32float";if(1===i)return"r32float";throw new Error("Unsupported data format")}throw new Error("Unsupported data format")}function nn(t,e,n=!1){const r=n?$e:tn,a=r.get(t)??(()=>{const e=new WeakMap;return r.set(t,e),e})();return a.get(e)??(()=>{const r=t.createTexture({format:en(t,e),width:e.width,height:e.height,mipLevels:1,sampler:{magFilter:"nearest",minFilter:"nearest",addressModeU:n?"repeat":"clamp-to-edge",addressModeV:"clamp-to-edge",lodMaxClamp:0}});return r.copyImageData({data:e.data}),a.set(e,r),r})()}let rn=null;function an(t){return rn||(rn=t.createTexture({width:1,height:1,mipLevels:1}),rn.copyImageData({data:new Uint8Array([0,0,0,0])})),rn}const on=6371e3;function sn(t){return t/180*Math.PI}function An(t){return t/Math.PI*180}function ln(t,e){if(n=t,r=e,!(Math.abs(n[0]-r[0])>Number.EPSILON||Math.abs(n[1]-r[1])>Number.EPSILON))return NaN;var n,r;const a=sn(t[1]),i=sn(e[1]),o=sn(e[0]-t[0]),s=Math.cos(a)*Math.sin(i)-Math.sin(a)*Math.cos(i)*Math.cos(o),A=Math.sin(o)*Math.cos(i),l=An(Math.atan2(A,s));return(l+360)%360}const cn=6370972;function un(t,e){return function(t,e,n=on){const r=n,a=sn(t[1]),i=sn(t[0]),o=sn(e[1]),s=o-a,A=sn(e[0])-i,l=Math.sin(s/2)*Math.sin(s/2)+Math.cos(a)*Math.cos(o)*Math.sin(A/2)*Math.sin(A/2);return r*(2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l)))}(t,e,cn)}function gn(t,e,n){return function(t,e,n,r=on){const a=e/r,i=sn(n),o=sn(t[1]),s=sn(t[0]),A=Math.sin(o)*Math.cos(a)+Math.cos(o)*Math.sin(a)*Math.cos(i),l=Math.asin(A),c=Math.sin(i)*Math.sin(a)*Math.cos(o),u=Math.cos(a)-Math.sin(o)*A,g=s+Math.atan2(c,u),p=An(l);return[An(g),p]}(t,e,n,cn)}function pn(t){return!!t.resolution}function dn(t){return!pn(t)}function hn(t,e,n){return!(null!=e&&t.zoom<e)&&!(null!=n&&t.zoom>n)}function fn(t){return[t.longitude,t.latitude]}function mn(t){const e=fn(t);return Math.max(un(e,t.unproject([t.width/2,0])),un(e,t.unproject([0,t.height/2])),...t.width>t.height?[un(e,t.unproject([t.width/2-t.height/4*1,t.height/2])),un(e,t.unproject([t.width/2-t.height/2*1,t.height/2])),un(e,t.unproject([t.width/2-t.height/4*3,t.height/2])),un(e,t.unproject([t.width/2-t.height,t.height/2]))]:[un(e,t.unproject([t.width/2,t.height/2-t.width/4*1])),un(e,t.unproject([t.width/2,t.height/2-t.width/2*1])),un(e,t.unproject([t.width/2,t.height/2-t.width/4*3])),un(e,t.unproject([t.width/2,t.height/2-t.width]))])}function Cn(t){return function(t){const e=t[2]-t[0]<360?Xe(t[0]):Ge,n=t[2]-t[0]<360?Xe(t[2],e):ze;return[e,Math.max(t[1],je),n,Math.min(t[3],Ke)]}(t.getBounds())}function In(t){return pn(t)?Math.log2(t.scale):t.zoom}function vn(t,e){return e*(pn(t)?-1:1)}function En(t,e){return e+(pn(t)?180:0)}function yn(t,e){const n=e.domain(),r=[n[0],n[n.length-1]],a=Qe(e),i=t.createTexture({width:a.width,height:a.height,mipLevels:1,sampler:{magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}});return i.copyExternalImage({image:a}),{paletteBounds:r,paletteTexture:i}}function bn(t){return[t[0]/255,t[1]/255,t[2]/255,(t[3]??255)/255]}function Bn(t){return[t[0],t[1],t[2],255*t[3]]}const wn="layout(std140)uniform bitmap2Uniforms{\nvec4 A;\nbool B;\nfloat C;\nvec4 D;\n}\nbitmap2;\nconst float E=512.;\nconst float F=3.1415926536;\nconst float G=E/F/2.;\nvec2 H(vec2 I){\nfloat J=I.x;\nfloat K=clamp(I.y,-89.9,89.9);\nreturn vec2(radians(J)+F,F+log(tan(F*0.25+radians(K)*0.5)))*G;\n}\nvec2 L(vec2 M){\nM/=G;\nreturn degrees(vec2(M.x-F,atan(exp(M.y-F))*2.-F*0.5));\n}\nvec4 N(vec3 O,float P){\nreturn mix(bitmap2.D,vec4(O,1.),P);\n}\nvec2 Q(vec2 R){\nreturn vec2((R.x-bitmap2.A[0])/(bitmap2.A[2]-bitmap2.A[0]),(R.y-bitmap2.A[3])/(bitmap2.A[1]-bitmap2.A[3]));\n}\nvec2 S(vec2 T,vec2 U){\nvec2 uv=T;\nif(bitmap2.C<-0.5){\nvec2 I=L(U);\nuv=Q(I);\n}\nelse if(bitmap2.C>0.5){\nvec2 V=H(U);\nuv=Q(V);\n}\nreturn uv;\n}\n",Qn="A",xn="B",Tn="C",Mn="D";const On=Math.PI,Sn=On/4,Ln=On/180,Pn=512;function Nn(t){const[e,n]=t,r=n*Ln;return[Pn*(e*Ln+On)/(2*On),Pn*(On+Math.log(Math.tan(Sn+.5*r)))/(2*On)]}function Un(t={}){const{LNGLAT:n,CARTESIAN:r,DEFAULT:a}=e.COORDINATE_SYSTEM;let{viewportGlobe:i,bounds:o,_imageCoordinateSystem:s}=t;if(!function(t){return Number.isFinite(t[0])}(o))throw new Error("_imageCoordinateSystem only supports rectangular bounds");if(s!==a){const t=i?n:r;if(s=s===n?n:r,s===n&&t===r)return{coordinateConversion:-1,bounds:o};if(s===r&&t===n){const t=Nn([o[0],o[1]]),e=Nn([o[2],o[3]]);return{coordinateConversion:1,bounds:[t[0],t[1],e[0],e[1]]}}}return{coordinateConversion:0,bounds:o}}const Dn={name:"bitmap2",vs:wn,fs:wn,uniformTypes:{[Qn]:"vec4<f32>",[xn]:"f32",[Tn]:"f32",[Mn]:"vec4<f32>"},getUniforms:function(t={}){const{bounds:e,coordinateConversion:n}=Un(t);return{[Qn]:e,[xn]:Ye(e)?1:0,[Tn]:n,[Mn]:t.transparentColor?bn(t.transparentColor):[0,0,0,0]}}},Vn=Tn,kn="uniform sampler2D W;\nuniform sampler2D X;\nlayout(std140)uniform rasterUniforms{\nvec2 Y;\nfloat Z;\nfloat a;\nfloat b;\nfloat c;\nvec2 d;\nfloat e;\nfloat f;\nfloat g;\nfloat h;\nvec4 i;\nfloat j;\nfloat k;\nvec4 l;\n}\nraster;\n",Jn="W",Fn="X",Rn="Y",Wn="Z",qn="a",Zn="b",Gn="c",zn="d",jn="e",Kn="f",Xn="g",Yn="h",Hn="i",_n="j",$n="k",tr="l";const er={name:"raster",vs:kn,fs:kn,uniformTypes:{[Rn]:"vec2<f32>",[Wn]:"f32",[qn]:"f32",[Zn]:"f32",[Gn]:"f32",[zn]:"vec2<f32>",[jn]:"f32",[Kn]:"f32",[Xn]:"f32",[Yn]:"f32",[Hn]:"vec4<f32>",[_n]:"f32",[$n]:"f32",[tr]:"vec4<f32>"},getUniforms:function(t={}){return{[Jn]:t.imageTexture,[Fn]:t.imageTexture2,[Rn]:t.imageTexture?[t.imageTexture.width,t.imageTexture.height]:[0,0],[Wn]:t.imageSmoothing??0,[qn]:Object.values(S).indexOf(t.imageInterpolation??S.NEAREST),[Zn]:t.imageTexture2!==t.imageTexture&&t.imageWeight?t.imageWeight:0,[Gn]:Object.values(L).indexOf(t.imageType??L.SCALAR),[zn]:t.imageUnscale??[0,0],[jn]:t.imageMinValue??Number.MIN_SAFE_INTEGER,[Kn]:t.imageMaxValue??Number.MAX_SAFE_INTEGER,[Xn]:t.borderEnabled?1:0,[Yn]:t.borderWidth??0,[Hn]:t.borderColor?bn(t.borderColor):[0,0,0,0],[_n]:t.gridEnabled?1:0,[$n]:t.gridSize??0,[tr]:t.gridColor?bn(t.gridColor):[0,0,0,0]}}},nr="uniform sampler2D m;\nlayout(std140)uniform paletteUniforms{\nvec2 n;\nvec4 o;\n}\npalette;\nfloat p(float min,float max,float q){\nreturn(q-min)/(max-min);\n}\nvec4 r(sampler2D m,vec2 n,vec4 o,float q){\nif(n[0]<n[1]){\nfloat s=p(n[0],n[1],q);\nreturn texture(m,vec2(s,0.));\n}\nelse{\nreturn o;\n}\n}\n",rr="m",ar="n",ir="o";const or={name:"palette",vs:nr,fs:nr,uniformTypes:{[ar]:"vec2<f32>",[ir]:"vec4<f32>"},getUniforms:function(t={}){return{[rr]:t.paletteTexture,[ar]:t.paletteBounds??[0,0],[ir]:t.paletteColor?bn(t.paletteColor):[0,0,0,0]}}},sr={imageTexture:{type:"object",value:null},imageTexture2:{type:"object",value:null},imageSmoothing:{type:"number",value:0},imageInterpolation:{type:"object",value:S.CUBIC},imageWeight:{type:"number",value:0},imageType:{type:"object",value:L.SCALAR},imageUnscale:{type:"array",value:null},imageMinValue:{type:"object",value:null},imageMaxValue:{type:"object",value:null},bounds:{type:"array",value:[-180,-90,180,90],compare:!0},minZoom:{type:"object",value:null},maxZoom:{type:"object",value:null},palette:{type:"object",value:null},borderEnabled:{type:"boolean",value:!1},borderWidth:{type:"number",value:1},borderColor:{type:"color",value:p},gridEnabled:{type:"boolean",value:!1},gridSize:{type:"number",value:1},gridColor:{type:"color",value:p}};class Ar extends n.BitmapLayer{getShaders(){const t=super.getShaders();return{...t,vs:t.vs.replaceAll("bitmap.coordinateConversion",`bitmap2.${Vn}`),fs:"#version 300 es\n#define SHADER_NAME raster-bitmap-layer-fragment-shader\n#ifdef GL_ES\nprecision highp float;\n#endif\nvec4 AG(sampler2D AH,vec2 AI,vec2 AJ,vec2 AK){\nvec2 uv=(AJ+AK+0.5)/AI;\nreturn texture(AH,uv);\n}\nconst vec4 AL=vec4(3.,-6.,0.,4.)/6.;\nconst vec4 AM=vec4(-1.,6.,-12.,8.)/6.;\nvec4 AN(float J){\nreturn vec4(J*J*J,J*J,J,1.);\n}\nvec4 AO(vec4 AP,vec4 AQ,vec4 AR,vec4 AS,float AT){\nvec4 O=AP*dot(AM,AN(AT+1.))+AQ*dot(AL,AN(AT))+AR*dot(AL,AN(1.-AT))+AS*dot(AM,AN(2.-AT));\nO.a=(AP.a>0.&&AQ.a>0.&&AR.a>0.&&AS.a>0.)?max(max(max(AP.a,AQ.a),AR.a),AS.a):0.;\nreturn O;\n}\nvec4 AU(sampler2D AH,vec2 AI,vec2 uv){\nvec2 AV=uv*AI-0.5;\nvec2 AJ=floor(AV);\nvec2 AW=fract(AV);\nreturn AO(AO(AG(AH,AI,AJ,vec2(-1,-1)),AG(AH,AI,AJ,vec2(0,-1)),AG(AH,AI,AJ,vec2(1,-1)),AG(AH,AI,AJ,vec2(2,-1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,0)),AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AG(AH,AI,AJ,vec2(2,0)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,1)),AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AG(AH,AI,AJ,vec2(2,1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,2)),AG(AH,AI,AJ,vec2(0,2)),AG(AH,AI,AJ,vec2(1,2)),AG(AH,AI,AJ,vec2(2,2)),AW.x),AW.y);\n}\nvec4 AX(sampler2D AH,vec2 AI,vec2 uv){\nvec2 AV=uv*AI-0.5;\nvec2 AJ=floor(AV);\nvec2 AW=fract(AV);\nreturn mix(mix(AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AW.x),mix(AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AW.x),AW.y);\n}\nvec4 AY(sampler2D AH,vec2 AI,vec2 uv){\nvec2 AV=uv*AI-0.5;\nvec2 AJ=floor(AV+0.5);\nreturn AG(AH,AI,AJ,vec2(0,0));\n}\nvec4 AZ(sampler2D AH,vec2 AI,float a,vec2 uv){\nif(a==2.){\nreturn AU(AH,AI,uv);\n}\nif(a==1.){\nreturn AX(AH,AI,uv);\n}\nelse{\nreturn AY(AH,AI,uv);\n}\n}\nvec4 Aa(sampler2D AH,sampler2D Ab,vec2 AI,float a,float b,bool B,vec2 uv){\nvec2 Ac;\nAc.x=B?uv.x+0.5/AI.x:mix(0.+0.5/AI.x,1.-0.5/AI.x,uv.x);\nAc.y=mix(0.+0.5/AI.y,1.-0.5/AI.y,uv.y);\nif(b>0.){\nvec4 Ad=AZ(AH,AI,a,Ac);\nvec4 Ae=AZ(Ab,AI,a,Ac);\nreturn mix(Ad,Ae,b);\n}\nelse{\nreturn AZ(AH,AI,a,Ac);\n}\n}\nvec4 Af(sampler2D AH,sampler2D Ab,vec2 Y,float Z,float a,float b,bool B,vec2 uv){\nfloat Ag=1.+max(0.,Z);\nvec2 AI=Y/Ag;\nreturn Aa(AH,Ab,AI,a,b,B,uv);\n}\nconst float Ah=3.1415926536;\nfloat Ai(float K,float J){\nreturn J==0.?sign(K)*Ah/2.:atan(K,J);\n}\nbool Aj(float q){\nuint Ak=floatBitsToUint(q);\nreturn(Ak&0x7fffffffu)>0x7f800000u;\n}\nbool Al(vec4 Ad,vec2 d){\nif(d[0]<d[1]){\nreturn Ad.a>=1.;\n}\nelse{\nreturn!Aj(Ad.x);\n}\n}\nfloat Am(vec4 Ad,float c,vec2 d){\nif(c==1.){\nreturn 0.;\n}\nelse{\nif(d[0]<d[1]){\nreturn mix(d[0],d[1],Ad.x);\n}\nelse{\nreturn Ad.x;\n}\n}\n}\nvec2 An(vec4 Ad,float c,vec2 d){\nif(c==1.){\nif(d[0]<d[1]){\nreturn mix(vec2(d[0]),vec2(d[1]),Ad.xy);\n}\nelse{\nreturn Ad.xy;\n}\n}\nelse{\nreturn vec2(0.);\n}\n}\nfloat Ao(vec4 Ad,float c,vec2 d){\nif(c==1.){\nvec2 q=An(Ad,c,d);\nreturn length(q);\n}\nelse{\nreturn Am(Ad,c,d);\n}\n}\nfloat Ap(vec4 Ad,float c,vec2 d){\nif(c==1.){\nvec2 q=An(Ad,c,d);\nreturn mod((360.-(Ai(q.y,q.x)/Ah*180.+180.))-270.,360.)/360.;\n}\nelse{\nreturn 0.;\n}\n}\nin vec2 vTexCoord;\nin vec2 vTexPos;\nout vec4 fragColor;\nvoid main(void){\nvec2 uv=S(vTexCoord,vTexPos);\nvec4 Ad=Af(W,X,raster.Y,raster.Z,raster.a,raster.b,bitmap2.B,uv);\nif(!Al(Ad,raster.d)){\ndiscard;\n}\nfloat q=Ao(Ad,raster.c,raster.d);\nif((!Aj(raster.e)&&q<raster.e)||(!Aj(raster.f)&&q>raster.f)){\ndiscard;\n}\nvec4 Aq=r(m,palette.n,palette.o,q);\nfragColor=N(Aq.rgb,Aq.a*layer.opacity);\nif(bool(raster.g)){\nvec2 Ar=vec2(length(dFdx(uv)),length(dFdy(uv)));\nvec2 h=raster.h/2.*Ar;\nif((uv.x<h.x||uv.x>1.-h.x)||(uv.y<h.y||uv.y>1.-h.y)){\nfragColor=N(raster.i.rgb,raster.i.a*layer.opacity*2.);\n}\n}\nif(bool(raster.j)){\nfloat Ag=1.+max(0.,raster.Z);\nvec2 AI=raster.Y/Ag;\nvec2 Ac;\nAc.x=bitmap2.B?uv.x+0.5/AI.x:mix(0.+0.5/AI.x,1.-0.5/AI.x,uv.x);\nAc.y=mix(0.+0.5/AI.y,1.-0.5/AI.y,uv.y);\nvec2 AV=Ac*AI-0.5;\nvec2 AW=fract(AV);\nvec2 Ar=vec2(length(dFdx(uv)),length(dFdy(uv)));\nvec2 k=raster.k/2.*Ar*raster.Y;\nif((AW.x<k.x||AW.x>1.-k.x)&&(AW.y<k.y||AW.y>1.-k.y)){\nfragColor=N(raster.l.rgb,raster.l.a*layer.opacity*2.);\n}\n}\ngeometry.uv=uv;\nDECKGL_FILTER_COLOR(fragColor,geometry);\nif(bool(picking.isActive)&&!bool(picking.isAttribute)){\nfloat s=p(palette.n[0],palette.n[1],q);\nfloat As=Ap(Ad,raster.c,raster.d);\nfragColor=vec4(s,As,0,1);\n}\n}\n",modules:[...t.modules.filter((t=>"bitmap"!==t.name)),Dn,er,or]}}updateState(t){const{palette:e}=t.props;super.updateState(t),e!==t.oldProps.palette&&this._updatePalette()}draw(t){const{device:e,viewport:n}=this.context,{model:r}=this.state,{imageTexture:a,imageTexture2:i,imageSmoothing:o,imageInterpolation:s,imageWeight:A,imageType:l,imageUnscale:c,imageMinValue:u,imageMaxValue:g,bounds:p,_imageCoordinateSystem:d,transparentColor:h,minZoom:f,maxZoom:m,borderEnabled:C,borderWidth:v,borderColor:E,gridEnabled:y,gridSize:b,gridColor:B}=I(this.props,sr),{paletteTexture:w,paletteBounds:Q}=this.state;if(!a)return;const x=pn(n);r&&hn(n,f,m)&&(r.shaderInputs.setProps({[Dn.name]:{viewportGlobe:x,bounds:p,_imageCoordinateSystem:d,transparentColor:h},[er.name]:{imageTexture:a??an(e),imageTexture2:i??an(e),imageSmoothing:o,imageInterpolation:s,imageWeight:A,imageType:l,imageUnscale:c,imageMinValue:u,imageMaxValue:g,borderEnabled:C,borderWidth:v,borderColor:E,gridEnabled:y,gridSize:b,gridColor:B},[or.name]:{paletteTexture:w??an(e),paletteBounds:Q}}),this.props.image=a,super.draw(t),this.props.image=null)}_updatePalette(){const{device:t}=this.context,{palette:e}=I(this.props,sr);if(!e)return void this.setState({paletteTexture:void 0,paletteBounds:void 0});const n=we(e),{paletteBounds:r,paletteTexture:a}=yn(t,n);this.setState({paletteTexture:a,paletteBounds:r})}_getRasterMagnitudeValue(t,e){return e[0]+t[0]/255*(e[1]-e[0])}_getRasterDirectionValue(t){const{imageType:e}=I(this.props,sr);return e===L.VECTOR?t[1]/255*360:NaN}getPickingInfo(t){const e=super.getPickingInfo(t),{imageType:n}=I(this.props,sr),{paletteBounds:r}=this.state;if(!e.color)return e;let a;const i=this._getRasterMagnitudeValue(e.color,r??[0,0]);if(n===L.VECTOR){a={value:i,direction:this._getRasterDirectionValue(e.color)}}else a={value:i};return e.raster=a,e}}Ar.layerName="RasterBitmapLayer",Ar.defaultProps=sr;const lr={...Ar.defaultProps,imageTexture:void 0,imageTexture2:void 0,image:{type:"object",value:null},image2:{type:"object",value:null},bounds:{type:"array",value:[-180,-90,180,90],compare:!0}};class cr extends e.CompositeLayer{renderLayers(){const{device:t}=this.context,{props:n,imageTexture:r,imageTexture2:a}=this.state;return n&&r?[new Ar(this.props,this.getSubLayerProps({id:"bitmap",imageTexture:r,imageTexture2:a,_imageCoordinateSystem:e.COORDINATE_SYSTEM.LNGLAT,parameters:{cullMode:"back",depthCompare:"always",...this.props.parameters},image:an(t),image2:an(t)}))]:[]}updateState(t){const{image:e,image2:n,imageUnscale:r,bounds:a}=t.props;if(super.updateState(t),e&&r&&!(e.data instanceof Uint8Array||e.data instanceof Uint8ClampedArray))throw new Error("imageUnscale can be applied to Uint8 data only");if(e!==t.oldProps.image||n!==t.oldProps.image2){const{device:t}=this.context,{image:e,image2:n}=this.props,r=e?nn(t,e,Ye(a)):null,i=n?nn(t,n,Ye(a)):null;this.setState({imageTexture:r,imageTexture2:i})}this.setState({props:t.props})}}cr.layerName="RasterLayer",cr.defaultProps=lr;const ur="layout(std140)uniform contourUniforms{\nfloat t;\nfloat u;\nfloat v;\n}\ncontour;\n",gr="t",pr="u",dr="v";const hr={name:"contour",vs:ur,fs:ur,uniformTypes:{[gr]:"f32",[pr]:"f32",[dr]:"f32"},getUniforms:function(t={}){return{[gr]:t.interval,[pr]:t.majorInterval,[dr]:t.width}}},fr={imageTexture:{type:"object",value:null},imageTexture2:{type:"object",value:null},imageSmoothing:{type:"number",value:0},imageInterpolation:{type:"object",value:S.CUBIC},imageWeight:{type:"number",value:0},imageType:{type:"object",value:L.SCALAR},imageUnscale:{type:"object",value:null},imageMinValue:{type:"object",value:null},imageMaxValue:{type:"object",value:null},bounds:{type:"array",value:[-180,-90,180,90],compare:!0},minZoom:{type:"object",value:null},maxZoom:{type:"object",value:10},palette:{type:"object",value:null},color:{type:"color",value:p},interval:{type:"number",value:0},majorInterval:{type:"number",value:0},width:{type:"number",value:1}};class mr extends n.BitmapLayer{getShaders(){const t=super.getShaders();return{...t,vs:t.vs.replaceAll("bitmap.coordinateConversion",`bitmap2.${Vn}`),fs:"#version 300 es\n#define SHADER_NAME contour-bitmap-layer-fragment-shader\n#ifdef GL_ES\nprecision highp float;\n#endif\nvec4 AG(sampler2D AH,vec2 AI,vec2 AJ,vec2 AK){\nvec2 uv=(AJ+AK+0.5)/AI;\nreturn texture(AH,uv);\n}\nconst vec4 AL=vec4(3.,-6.,0.,4.)/6.;\nconst vec4 AM=vec4(-1.,6.,-12.,8.)/6.;\nvec4 AN(float J){\nreturn vec4(J*J*J,J*J,J,1.);\n}\nvec4 AO(vec4 AP,vec4 AQ,vec4 AR,vec4 AS,float AT){\nvec4 O=AP*dot(AM,AN(AT+1.))+AQ*dot(AL,AN(AT))+AR*dot(AL,AN(1.-AT))+AS*dot(AM,AN(2.-AT));\nO.a=(AP.a>0.&&AQ.a>0.&&AR.a>0.&&AS.a>0.)?max(max(max(AP.a,AQ.a),AR.a),AS.a):0.;\nreturn O;\n}\nvec4 AU(sampler2D AH,vec2 AI,vec2 uv){\nvec2 AV=uv*AI-0.5;\nvec2 AJ=floor(AV);\nvec2 AW=fract(AV);\nreturn AO(AO(AG(AH,AI,AJ,vec2(-1,-1)),AG(AH,AI,AJ,vec2(0,-1)),AG(AH,AI,AJ,vec2(1,-1)),AG(AH,AI,AJ,vec2(2,-1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,0)),AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AG(AH,AI,AJ,vec2(2,0)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,1)),AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AG(AH,AI,AJ,vec2(2,1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,2)),AG(AH,AI,AJ,vec2(0,2)),AG(AH,AI,AJ,vec2(1,2)),AG(AH,AI,AJ,vec2(2,2)),AW.x),AW.y);\n}\nvec4 AX(sampler2D AH,vec2 AI,vec2 uv){\nvec2 AV=uv*AI-0.5;\nvec2 AJ=floor(AV);\nvec2 AW=fract(AV);\nreturn mix(mix(AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AW.x),mix(AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AW.x),AW.y);\n}\nvec4 AY(sampler2D AH,vec2 AI,vec2 uv){\nvec2 AV=uv*AI-0.5;\nvec2 AJ=floor(AV+0.5);\nreturn AG(AH,AI,AJ,vec2(0,0));\n}\nvec4 AZ(sampler2D AH,vec2 AI,float a,vec2 uv){\nif(a==2.){\nreturn AU(AH,AI,uv);\n}\nif(a==1.){\nreturn AX(AH,AI,uv);\n}\nelse{\nreturn AY(AH,AI,uv);\n}\n}\nvec4 Aa(sampler2D AH,sampler2D Ab,vec2 AI,float a,float b,bool B,vec2 uv){\nvec2 Ac;\nAc.x=B?uv.x+0.5/AI.x:mix(0.+0.5/AI.x,1.-0.5/AI.x,uv.x);\nAc.y=mix(0.+0.5/AI.y,1.-0.5/AI.y,uv.y);\nif(b>0.){\nvec4 Ad=AZ(AH,AI,a,Ac);\nvec4 Ae=AZ(Ab,AI,a,Ac);\nreturn mix(Ad,Ae,b);\n}\nelse{\nreturn AZ(AH,AI,a,Ac);\n}\n}\nvec4 Af(sampler2D AH,sampler2D Ab,vec2 Y,float Z,float a,float b,bool B,vec2 uv){\nfloat Ag=1.+max(0.,Z);\nvec2 AI=Y/Ag;\nreturn Aa(AH,Ab,AI,a,b,B,uv);\n}\nconst float Ah=3.1415926536;\nfloat Ai(float K,float J){\nreturn J==0.?sign(K)*Ah/2.:atan(K,J);\n}\nbool Aj(float q){\nuint Ak=floatBitsToUint(q);\nreturn(Ak&0x7fffffffu)>0x7f800000u;\n}\nbool Al(vec4 Ad,vec2 d){\nif(d[0]<d[1]){\nreturn Ad.a>=1.;\n}\nelse{\nreturn!Aj(Ad.x);\n}\n}\nfloat Am(vec4 Ad,float c,vec2 d){\nif(c==1.){\nreturn 0.;\n}\nelse{\nif(d[0]<d[1]){\nreturn mix(d[0],d[1],Ad.x);\n}\nelse{\nreturn Ad.x;\n}\n}\n}\nvec2 An(vec4 Ad,float c,vec2 d){\nif(c==1.){\nif(d[0]<d[1]){\nreturn mix(vec2(d[0]),vec2(d[1]),Ad.xy);\n}\nelse{\nreturn Ad.xy;\n}\n}\nelse{\nreturn vec2(0.);\n}\n}\nfloat Ao(vec4 Ad,float c,vec2 d){\nif(c==1.){\nvec2 q=An(Ad,c,d);\nreturn length(q);\n}\nelse{\nreturn Am(Ad,c,d);\n}\n}\nfloat Ap(vec4 Ad,float c,vec2 d){\nif(c==1.){\nvec2 q=An(Ad,c,d);\nreturn mod((360.-(Ai(q.y,q.x)/Ah*180.+180.))-270.,360.)/360.;\n}\nelse{\nreturn 0.;\n}\n}\nin vec2 vTexCoord;\nin vec2 vTexPos;\nout vec4 fragColor;\nvoid main(void){\nvec2 uv=S(vTexCoord,vTexPos);\nvec4 Ad=Af(W,X,raster.Y,raster.Z,raster.a,raster.b,bitmap2.B,uv);\nif(!Al(Ad,raster.d)){\ndiscard;\n}\nfloat q=Ao(Ad,raster.c,raster.d);\nif((!Aj(raster.e)&&q<raster.e)||(!Aj(raster.f)&&q>raster.f)){\ndiscard;\n}\nfloat Aq=contour.u>contour.t?floor(contour.u/contour.t):1.;\nfloat Ar=q/contour.t;\nfloat As=(step(fract(Ar/Aq),0.1)+1.)/2.;\nfloat At=contour.v*As;\nfloat Au=abs(fract(Ar+0.5)-0.5);\nfloat Av=length(vec2(dFdx(Ar),dFdy(Ar)));\nfloat Aw=1.-clamp((Au/Av)+0.5-At,0.,1.);\nif(Av==0.){\nAw=0.;\n}\nfloat Ax=Aw*As;\nvec4 Ay=r(m,palette.n,palette.o,q);\nfragColor=vec4(Ay.rgb,Ay.a*Ax*layer.opacity);\ngeometry.uv=uv;\nDECKGL_FILTER_COLOR(fragColor,geometry);\n}\n",modules:[...t.modules.filter((t=>"bitmap"!==t.name)),Dn,er,or,hr]}}updateState(t){const{palette:e}=t.props;super.updateState(t),e!==t.oldProps.palette&&this._updatePalette()}draw(t){const{device:e,viewport:n}=this.context,{model:r}=this.state,{imageTexture:a,imageTexture2:i,imageSmoothing:o,imageInterpolation:s,imageWeight:A,imageType:l,imageUnscale:c,imageMinValue:u,imageMaxValue:g,bounds:p,_imageCoordinateSystem:d,transparentColor:h,minZoom:f,maxZoom:m,color:C,interval:v,majorInterval:E,width:y}=I(this.props,fr),{paletteTexture:b,paletteBounds:B}=this.state;if(!a)return;const w=pn(n);r&&hn(n,f,m)&&(r.shaderInputs.setProps({[Dn.name]:{viewportGlobe:w,bounds:p,_imageCoordinateSystem:d,transparentColor:h},[er.name]:{imageTexture:a??an(e),imageTexture2:i??an(e),imageSmoothing:o,imageInterpola