diff --git a/README.md b/README.md index 16c14995..99259107 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ The MeshCore Python ecosystem has three components: - **TX Delay Recommendations** — Slot-based delay optimization with network role classification (edge/relay/hub/backbone) - **LBT Insights widgets** — Channel health, collision risk, noise floor, link quality at a glance - **Time range selector** — View stats from 20 minutes to 7 days -- **Recent packets** — Live feed of incoming traffic +- **Recent packets** — Live feed of incoming traffic with centralized polling (every 3s) ![Dashboard](docs/images/dashboard.png) @@ -73,7 +73,7 @@ The MeshCore Python ecosystem has three components: - **3D arc edges** — Topology edges and neighbor lines render as elevated arcs via deck.gl PathLayer (GPU-accelerated) - **Viterbi HMM path decoding** — Hidden Markov Model resolves prefix collisions using physics-based transition costs and observation evidence - **Ghost node discovery** — Unknown repeaters detected when no known candidate is geographically plausible; locations estimated from anchor midpoints -- **Deep Analysis** — One-click full topology rebuild from 20K+ packets with Viterbi decoding +- **Deep Analysis** — One-click full topology rebuild from 75K packets with Viterbi decoding - **Edge confidence** — Line thickness and opacity scale with observation count and certainty - **Animated edges** — Trace-in effect on toggle, smooth fade-out - **Filter toggles** — Solo view for hub nodes, direct neighbors, or traffic-based filtering @@ -361,7 +361,7 @@ Before Viterbi decoding, candidates are scored using four-factor analysis inspir - **Dual-hop anchoring** — Candidates scored by distance to both previous and next hops (a relay must be within RF range of both neighbors) - **Score-weighted redistribution** — Appearance counts redistributed proportionally by combined score -The system loads up to 20,000 packets (~7 days of traffic) to build comprehensive topology evidence. +The system maintains up to 75,000 packets in session memory (~2.5 days at 30k/day) for comprehensive topology evidence. ![Prefix Disambiguation](docs/images/disambiguation.png) diff --git a/frontend/dist/VERSION b/frontend/dist/VERSION index e01c702c..2a57fc87 100644 --- a/frontend/dist/VERSION +++ b/frontend/dist/VERSION @@ -1 +1 @@ -0.9.133 +0.9.134 diff --git a/frontend/dist/assets/CollisionExplorerModal-BU96fXkT.js b/frontend/dist/assets/CollisionExplorerModal-DFHbJ8T7.js similarity index 96% rename from frontend/dist/assets/CollisionExplorerModal-BU96fXkT.js rename to frontend/dist/assets/CollisionExplorerModal-DFHbJ8T7.js index d1f603a4..11566135 100644 --- a/frontend/dist/assets/CollisionExplorerModal-BU96fXkT.js +++ b/frontend/dist/assets/CollisionExplorerModal-DFHbJ8T7.js @@ -1 +1 @@ -import{r as e,b as t,j as o,a4 as s,X as n,a2 as r,ag as a,ah as l,ai as i,aj as c,a7 as d,W as u}from"./vendor-react-CUlQ5-Td.js";import{L as m}from"./leaflet-ChRwnWLk.js";import{c as h}from"./recharts-7RsRrQtf.js";import{d as x,t as p,e as f}from"./index-C1whtcFB.js";const b={DEFAULT:"#4338CA",AMBER:"#F59E0B",NEIGHBOR:"#39D98A",MUTED:"#6B7280",HIGHLIGHT:"#FBBF24"};function y(){if("undefined"==typeof document)return b;const e=document.documentElement,t=getComputedStyle(e);return{DEFAULT:t.getPropertyValue("--map-hub-color").trim()||b.DEFAULT,AMBER:t.getPropertyValue("--pkt-txt-msg").trim()||b.AMBER,NEIGHBOR:t.getPropertyValue("--accent-success").trim()||b.NEIGHBOR,MUTED:t.getPropertyValue("--text-muted").trim()||b.MUTED,HIGHLIGHT:t.getPropertyValue("--accent-secondary").trim()||b.HIGHLIGHT}}function v({hash:t,highlighted:s}){const[n,r]=e.useState(!1),a=e.useCallback(e=>{e.preventDefault(),e.stopPropagation(),function(e){if("undefined"!=typeof window&&(window.isSecureContext||"https:"===window.location.protocol||"localhost"===window.location.hostname)&&navigator.clipboard&&"function"==typeof navigator.clipboard.writeText)return navigator.clipboard.writeText(e).catch(()=>{}),!0;try{const t=window.scrollX,o=window.scrollY,s=document.createElement("textarea");s.value=e,s.style.cssText="position:fixed;left:-9999px;top:-9999px;opacity:0;pointer-events:none",s.setAttribute("readonly",""),document.body.appendChild(s),s.focus({preventScroll:!0}),s.select(),s.setSelectionRange(0,e.length);const n=document.execCommand("copy");return document.body.removeChild(s),window.scrollTo(t,o),n}catch{return!1}}(t),r(!0),setTimeout(()=>r(!1),2e3)},[t]),l=t.length>12?`${t.slice(0,12)}…`:t;return o.jsxs("button",{type:"button",onClick:a,className:h("inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] font-mono rounded transition-all","border border-border-subtle hover:border-border-strong cursor-pointer select-none",s?"bg-accent-secondary/20 border-accent-secondary/50":"bg-bg-subtle/80 hover:bg-bg-elevated"),title:`Click to copy: ${t}`,children:[o.jsx("span",{className:h("transition-colors",n?"text-accent-success":"text-text-secondary"),children:l}),n?o.jsx(d,{className:"w-2.5 h-2.5 text-accent-success"}):o.jsx(u,{className:"w-2.5 h-2.5 opacity-40"})]})}function g({node:e,className:t}){const s=y(),n=e.contactType.toLowerCase(),r="room server"===n||"room_server"===n||"room"===n||"server"===n,d="companion"===n||"client"===n||"cli"===n;return r&&e.isRepeater?o.jsxs("div",{className:h("relative",t),children:[o.jsx(a,{className:"w-full h-full",style:{color:s.AMBER}}),o.jsx(l,{className:"w-1/2 h-1/2 absolute -bottom-0.5 -right-0.5",style:{color:s.DEFAULT}})]}):r?o.jsx(a,{className:t,style:{color:s.AMBER}}):d?o.jsx(i,{className:h(t,"text-text-muted")}):e.isRepeater?e.isNeighbor?o.jsx(c,{className:t,style:{color:s.NEIGHBOR}}):o.jsx(l,{className:t,style:{color:s.DEFAULT}}):o.jsx(i,{className:h(t,"text-text-muted")})}function w({node:e,isHovered:t,onMouseEnter:s,onMouseLeave:n,onTouchStart:r}){return o.jsxs("div",{className:h("flex items-center gap-3 px-3 py-2.5 transition-colors rounded-lg",t?"bg-accent-secondary/10":"hover:bg-white/[0.03]"),onMouseEnter:s,onMouseLeave:n,onTouchStart:r,children:[o.jsx("div",{className:"flex-shrink-0 w-5 h-5",children:o.jsx(g,{node:e,className:"w-5 h-5"})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[o.jsx("span",{className:"text-sm font-medium text-text-primary truncate",children:e.name}),e.isNeighbor&&o.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded font-medium bg-accent-success/20 text-accent-success",children:"NBR"}),e.isRepeater&&o.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-white/10 text-text-muted font-medium",children:"RPT"})]}),o.jsx("div",{className:"mt-1",children:o.jsx(v,{hash:e.hash,highlighted:t})})]})]})}function N({nodes:t,hoveredHash:s,onNodeHover:n,onNodeLeave:a}){const l=e.useRef(null),i=e.useRef(null),c=e.useRef(new Map),d=e.useMemo(()=>t.filter(e=>e.latitude&&e.longitude&&0!==e.latitude&&0!==e.longitude),[t]);return e.useEffect(()=>{if(!i.current||l.current)return;const e=m.map(i.current,{zoomControl:!0,attributionControl:!0});return m.tileLayer("https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png",{attribution:'© OSM © CARTO'}).addTo(e),l.current=e,()=>{e.remove(),l.current=null}},[]),e.useEffect(()=>{const e=l.current;if(!e)return;if(c.current.forEach(e=>e.remove()),c.current.clear(),0===d.length)return;const t=m.latLngBounds([]);for(const o of d){if(!o.latitude||!o.longitude)continue;const s=m.latLng(o.latitude,o.longitude);t.extend(s);const r=y(),l=o.isNeighbor?r.NEIGHBOR:r.DEFAULT,i=m.circleMarker(s,{radius:8,fillColor:l,fillOpacity:.8,color:"#fff",weight:2,opacity:.9});i.bindTooltip(o.name,{permanent:!1,direction:"top",offset:[0,-8],className:"collision-tooltip"}),i.on("mouseover",()=>n(o.hash)),i.on("mouseout",()=>a()),i.addTo(e),c.current.set(o.hash,i)}t.isValid()&&e.fitBounds(t,{padding:[40,40],maxZoom:12})},[d,n,a]),e.useEffect(()=>{c.current.forEach((e,t)=>{const o=d.find(e=>e.hash===t);if(!o)return;const n=y(),r=t===s,a=o.isNeighbor?n.NEIGHBOR:n.DEFAULT;e.setStyle({radius:r?12:8,fillColor:r?n.HIGHLIGHT:a,weight:r?3:2}),r?(e.openTooltip(),e.bringToFront()):e.closeTooltip()})},[s,d]),0===d.length?o.jsx("div",{className:"h-full flex items-center justify-center bg-bg-subtle/30 rounded-lg",children:o.jsxs("div",{className:"text-center text-text-muted p-4",children:[o.jsx(r,{className:"w-8 h-8 mx-auto mb-2 opacity-40"}),o.jsx("p",{className:"text-sm",children:"No location data available"}),o.jsx("p",{className:"text-xs opacity-70",children:"Nodes need GPS coordinates to appear on the map"})]})}):o.jsx("div",{ref:i,className:"h-full w-full rounded-lg overflow-hidden"})}const j=e.memo(function({isOpen:r,prefix:a,candidateHashes:l,onClose:i}){const c=x(),d=p(),u=f(),[m,b]=e.useState(null),y=e.useMemo(()=>new Set(u.map(e=>e.hash)),[u]),v=null==c?void 0:c.neighbors,g=e.useMemo(()=>v?l.map(e=>{var t,o;const s=v[e];return{hash:e,name:(null==s?void 0:s.node_name)||(null==s?void 0:s.name)||`Unknown (${e.slice(0,8)}…)`,contactType:(null==s?void 0:s.contact_type)||"",isRepeater:(null==s?void 0:s.is_repeater)||"repeater"===(null==(t=null==s?void 0:s.contact_type)?void 0:t.toLowerCase())||"rep"===(null==(o=null==s?void 0:s.contact_type)?void 0:o.toLowerCase())||!1,isNeighbor:y.has(e),isHub:d.has(e),latitude:null==s?void 0:s.latitude,longitude:null==s?void 0:s.longitude,lastSeen:null==s?void 0:s.last_seen}}).sort((e,t)=>e.isNeighbor!==t.isNeighbor?e.isNeighbor?-1:1:e.name.localeCompare(t.name)):[],[l,v,y,d]),j=e.useCallback(e=>b(e),[]),E=e.useCallback(()=>b(null),[]);return e.useEffect(()=>{if(!r)return;const e=e=>{"Escape"===e.key&&i()};window.addEventListener("keydown",e);const t=window.scrollY,o={overflow:document.body.style.overflow,position:document.body.style.position,width:document.body.style.width,top:document.body.style.top};return document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%",document.body.style.top=`-${t}px`,()=>{window.removeEventListener("keydown",e),document.body.style.overflow=o.overflow,document.body.style.position=o.position,document.body.style.width=o.width,document.body.style.top=o.top,window.scrollTo(0,t)}},[r,i]),r?t.createPortal(o.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-[10010] flex items-end sm:items-center justify-center",onClick:i,role:"dialog","aria-modal":"true","aria-labelledby":"collision-modal-title",children:o.jsxs("div",{className:h("glass-card-elevated w-full flex flex-col","max-h-[85vh] rounded-t-2xl rounded-b-none","sm:max-w-2xl sm:mx-4 sm:rounded-xl sm:max-h-[80vh]","pb-safe"),onClick:e=>e.stopPropagation(),children:[o.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border-subtle flex-shrink-0",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:"p-2 rounded-lg bg-signal-fair/10",children:o.jsx(s,{className:"w-5 h-5 text-signal-fair"})}),o.jsxs("div",{children:[o.jsxs("h3",{id:"collision-modal-title",className:"text-base font-semibold text-text-primary",children:["Prefix Collision: ",o.jsx("span",{className:"font-mono text-accent-primary",children:a})]}),o.jsxs("p",{className:"text-xs text-text-muted",children:[g.length," nodes share this prefix"]})]})]}),o.jsx("button",{onClick:i,className:"p-2 rounded-lg text-text-muted hover:text-text-primary hover:bg-bg-subtle transition-colors",children:o.jsx(n,{className:"w-5 h-5"})})]}),o.jsxs("div",{className:"flex-1 min-h-0 flex flex-col sm:flex-row overflow-hidden",children:[o.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto sm:max-w-[280px] sm:border-r sm:border-border-subtle",children:o.jsx("div",{className:"p-2",children:g.map(e=>o.jsx(w,{node:e,isHovered:m===e.hash,onMouseEnter:()=>j(e.hash),onMouseLeave:E,onTouchStart:()=>j(e.hash)},e.hash))})}),o.jsx("div",{className:"h-48 sm:h-auto sm:flex-1 p-2 flex-shrink-0",children:o.jsx(N,{nodes:g,hoveredHash:m,onNodeHover:j,onNodeLeave:E})})]})]})}),document.body):null});export{j as C}; +import{r as e,b as t,j as o,a4 as s,X as n,a2 as r,al as a,am as l,an as i,ao as c,a7 as d,W as u}from"./vendor-react-CWPBVwgk.js";import{L as m}from"./leaflet-D_ckmI2R.js";import{c as h}from"./recharts-cqZ_RWsW.js";import{d as x,t as p,e as f}from"./index-BlYVqXhs.js";const b={DEFAULT:"#4338CA",AMBER:"#F59E0B",NEIGHBOR:"#39D98A",MUTED:"#6B7280",HIGHLIGHT:"#FBBF24"};function y(){if("undefined"==typeof document)return b;const e=document.documentElement,t=getComputedStyle(e);return{DEFAULT:t.getPropertyValue("--map-hub-color").trim()||b.DEFAULT,AMBER:t.getPropertyValue("--pkt-txt-msg").trim()||b.AMBER,NEIGHBOR:t.getPropertyValue("--accent-success").trim()||b.NEIGHBOR,MUTED:t.getPropertyValue("--text-muted").trim()||b.MUTED,HIGHLIGHT:t.getPropertyValue("--accent-secondary").trim()||b.HIGHLIGHT}}function v({hash:t,highlighted:s}){const[n,r]=e.useState(!1),a=e.useCallback(e=>{e.preventDefault(),e.stopPropagation(),function(e){if("undefined"!=typeof window&&(window.isSecureContext||"https:"===window.location.protocol||"localhost"===window.location.hostname)&&navigator.clipboard&&"function"==typeof navigator.clipboard.writeText)return navigator.clipboard.writeText(e).catch(()=>{}),!0;try{const t=window.scrollX,o=window.scrollY,s=document.createElement("textarea");s.value=e,s.style.cssText="position:fixed;left:-9999px;top:-9999px;opacity:0;pointer-events:none",s.setAttribute("readonly",""),document.body.appendChild(s),s.focus({preventScroll:!0}),s.select(),s.setSelectionRange(0,e.length);const n=document.execCommand("copy");return document.body.removeChild(s),window.scrollTo(t,o),n}catch{return!1}}(t),r(!0),setTimeout(()=>r(!1),2e3)},[t]),l=t.length>12?`${t.slice(0,12)}…`:t;return o.jsxs("button",{type:"button",onClick:a,className:h("inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] font-mono rounded transition-all","border border-border-subtle hover:border-border-strong cursor-pointer select-none",s?"bg-accent-secondary/20 border-accent-secondary/50":"bg-bg-subtle/80 hover:bg-bg-elevated"),title:`Click to copy: ${t}`,children:[o.jsx("span",{className:h("transition-colors",n?"text-accent-success":"text-text-secondary"),children:l}),n?o.jsx(d,{className:"w-2.5 h-2.5 text-accent-success"}):o.jsx(u,{className:"w-2.5 h-2.5 opacity-40"})]})}function g({node:e,className:t}){const s=y(),n=e.contactType.toLowerCase(),r="room server"===n||"room_server"===n||"room"===n||"server"===n,d="companion"===n||"client"===n||"cli"===n;return r&&e.isRepeater?o.jsxs("div",{className:h("relative",t),children:[o.jsx(a,{className:"w-full h-full",style:{color:s.AMBER}}),o.jsx(l,{className:"w-1/2 h-1/2 absolute -bottom-0.5 -right-0.5",style:{color:s.DEFAULT}})]}):r?o.jsx(a,{className:t,style:{color:s.AMBER}}):d?o.jsx(i,{className:h(t,"text-text-muted")}):e.isRepeater?e.isNeighbor?o.jsx(c,{className:t,style:{color:s.NEIGHBOR}}):o.jsx(l,{className:t,style:{color:s.DEFAULT}}):o.jsx(i,{className:h(t,"text-text-muted")})}function w({node:e,isHovered:t,onMouseEnter:s,onMouseLeave:n,onTouchStart:r}){return o.jsxs("div",{className:h("flex items-center gap-3 px-3 py-2.5 transition-colors rounded-lg",t?"bg-accent-secondary/10":"hover:bg-white/[0.03]"),onMouseEnter:s,onMouseLeave:n,onTouchStart:r,children:[o.jsx("div",{className:"flex-shrink-0 w-5 h-5",children:o.jsx(g,{node:e,className:"w-5 h-5"})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[o.jsx("span",{className:"text-sm font-medium text-text-primary truncate",children:e.name}),e.isNeighbor&&o.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded font-medium bg-accent-success/20 text-accent-success",children:"NBR"}),e.isRepeater&&o.jsx("span",{className:"text-[10px] px-1.5 py-0.5 rounded bg-white/10 text-text-muted font-medium",children:"RPT"})]}),o.jsx("div",{className:"mt-1",children:o.jsx(v,{hash:e.hash,highlighted:t})})]})]})}function N({nodes:t,hoveredHash:s,onNodeHover:n,onNodeLeave:a}){const l=e.useRef(null),i=e.useRef(null),c=e.useRef(new Map),d=e.useMemo(()=>t.filter(e=>e.latitude&&e.longitude&&0!==e.latitude&&0!==e.longitude),[t]);return e.useEffect(()=>{if(!i.current||l.current)return;const e=m.map(i.current,{zoomControl:!0,attributionControl:!0});return m.tileLayer("https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png",{attribution:'© OSM © CARTO'}).addTo(e),l.current=e,()=>{e.remove(),l.current=null}},[]),e.useEffect(()=>{const e=l.current;if(!e)return;if(c.current.forEach(e=>e.remove()),c.current.clear(),0===d.length)return;const t=m.latLngBounds([]);for(const o of d){if(!o.latitude||!o.longitude)continue;const s=m.latLng(o.latitude,o.longitude);t.extend(s);const r=y(),l=o.isNeighbor?r.NEIGHBOR:r.DEFAULT,i=m.circleMarker(s,{radius:8,fillColor:l,fillOpacity:.8,color:"#fff",weight:2,opacity:.9});i.bindTooltip(o.name,{permanent:!1,direction:"top",offset:[0,-8],className:"collision-tooltip"}),i.on("mouseover",()=>n(o.hash)),i.on("mouseout",()=>a()),i.addTo(e),c.current.set(o.hash,i)}t.isValid()&&e.fitBounds(t,{padding:[40,40],maxZoom:12})},[d,n,a]),e.useEffect(()=>{c.current.forEach((e,t)=>{const o=d.find(e=>e.hash===t);if(!o)return;const n=y(),r=t===s,a=o.isNeighbor?n.NEIGHBOR:n.DEFAULT;e.setStyle({radius:r?12:8,fillColor:r?n.HIGHLIGHT:a,weight:r?3:2}),r?(e.openTooltip(),e.bringToFront()):e.closeTooltip()})},[s,d]),0===d.length?o.jsx("div",{className:"h-full flex items-center justify-center bg-bg-subtle/30 rounded-lg",children:o.jsxs("div",{className:"text-center text-text-muted p-4",children:[o.jsx(r,{className:"w-8 h-8 mx-auto mb-2 opacity-40"}),o.jsx("p",{className:"text-sm",children:"No location data available"}),o.jsx("p",{className:"text-xs opacity-70",children:"Nodes need GPS coordinates to appear on the map"})]})}):o.jsx("div",{ref:i,className:"h-full w-full rounded-lg overflow-hidden"})}const j=e.memo(function({isOpen:r,prefix:a,candidateHashes:l,onClose:i}){const c=x(),d=p(),u=f(),[m,b]=e.useState(null),y=e.useMemo(()=>new Set(u.map(e=>e.hash)),[u]),v=null==c?void 0:c.neighbors,g=e.useMemo(()=>v?l.map(e=>{var t,o;const s=v[e];return{hash:e,name:(null==s?void 0:s.node_name)||(null==s?void 0:s.name)||`Unknown (${e.slice(0,8)}…)`,contactType:(null==s?void 0:s.contact_type)||"",isRepeater:(null==s?void 0:s.is_repeater)||"repeater"===(null==(t=null==s?void 0:s.contact_type)?void 0:t.toLowerCase())||"rep"===(null==(o=null==s?void 0:s.contact_type)?void 0:o.toLowerCase())||!1,isNeighbor:y.has(e),isHub:d.has(e),latitude:null==s?void 0:s.latitude,longitude:null==s?void 0:s.longitude,lastSeen:null==s?void 0:s.last_seen}}).sort((e,t)=>e.isNeighbor!==t.isNeighbor?e.isNeighbor?-1:1:e.name.localeCompare(t.name)):[],[l,v,y,d]),j=e.useCallback(e=>b(e),[]),E=e.useCallback(()=>b(null),[]);return e.useEffect(()=>{if(!r)return;const e=e=>{"Escape"===e.key&&i()};window.addEventListener("keydown",e);const t=window.scrollY,o={overflow:document.body.style.overflow,position:document.body.style.position,width:document.body.style.width,top:document.body.style.top};return document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%",document.body.style.top=`-${t}px`,()=>{window.removeEventListener("keydown",e),document.body.style.overflow=o.overflow,document.body.style.position=o.position,document.body.style.width=o.width,document.body.style.top=o.top,window.scrollTo(0,t)}},[r,i]),r?t.createPortal(o.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-[10010] flex items-end sm:items-center justify-center",onClick:i,role:"dialog","aria-modal":"true","aria-labelledby":"collision-modal-title",children:o.jsxs("div",{className:h("glass-card-elevated w-full flex flex-col","max-h-[85vh] rounded-t-2xl rounded-b-none","sm:max-w-2xl sm:mx-4 sm:rounded-xl sm:max-h-[80vh]","pb-safe"),onClick:e=>e.stopPropagation(),children:[o.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border-subtle flex-shrink-0",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:"p-2 rounded-lg bg-signal-fair/10",children:o.jsx(s,{className:"w-5 h-5 text-signal-fair"})}),o.jsxs("div",{children:[o.jsxs("h3",{id:"collision-modal-title",className:"text-base font-semibold text-text-primary",children:["Prefix Collision: ",o.jsx("span",{className:"font-mono text-accent-primary",children:a})]}),o.jsxs("p",{className:"text-xs text-text-muted",children:[g.length," nodes share this prefix"]})]})]}),o.jsx("button",{onClick:i,className:"p-2 rounded-lg text-text-muted hover:text-text-primary hover:bg-bg-subtle transition-colors",children:o.jsx(n,{className:"w-5 h-5"})})]}),o.jsxs("div",{className:"flex-1 min-h-0 flex flex-col sm:flex-row overflow-hidden",children:[o.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto sm:max-w-[280px] sm:border-r sm:border-border-subtle",children:o.jsx("div",{className:"p-2",children:g.map(e=>o.jsx(w,{node:e,isHovered:m===e.hash,onMouseEnter:()=>j(e.hash),onMouseLeave:E,onTouchStart:()=>j(e.hash)},e.hash))})}),o.jsx("div",{className:"h-48 sm:h-auto sm:flex-1 p-2 flex-shrink-0",children:o.jsx(N,{nodes:g,hoveredHash:m,onNodeHover:j,onNodeLeave:E})})]})]})}),document.body):null});export{j as C}; diff --git a/frontend/dist/assets/Configuration-HwYFsp1c.js b/frontend/dist/assets/Configuration-mimYKnlX.js similarity index 95% rename from frontend/dist/assets/Configuration-HwYFsp1c.js rename to frontend/dist/assets/Configuration-mimYKnlX.js index 506e2733..02333465 100644 --- a/frontend/dist/assets/Configuration-HwYFsp1c.js +++ b/frontend/dist/assets/Configuration-mimYKnlX.js @@ -1 +1 @@ -import{r as e,j as t,f as s,i as a,X as r,al as n,a7 as l,aP as c,aQ as i,k as d,p as o,aR as u,aS as m,aT as x,aU as p,aV as h,aG as b,an as y,aW as g,aI as f,aX as j,a4 as v,$ as N,W as w,a6 as k,aY as C}from"./vendor-react-CUlQ5-Td.js";import{aa as _,ab as S,ac as T,F,ad as E,ae as L,af as P,ag as R,a9 as A,ah as I,ai as M,aj as D,ak as z,al as O,am as q,an as H,ao as K,ap as $}from"./index-C1whtcFB.js";import{H as Y}from"./HashBadge-Do84dDmK.js";import{C as U}from"./ConfirmModal-DLMcH5KX.js";import{c as V}from"./recharts-7RsRrQtf.js";import{P as X,b as B,a as W,c as G}from"./PageLayout-CViR4hDG.js";import{R as Q,C as J}from"./Grid-HJLNnEZz.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-MTXp-Y3t.js";const Z=e.memo(function({showLogoOnly:s=!1,showThumbnailsOnly:a=!1}){const{theme:r,setThemePreset:n,setBrightness:l}=_(),{backgroundImage:c,brightness:i}=r,[d,o]=e.useState(!1),[u,m]=e.useState(!1),x=e.useRef(null),p=e.useRef(null),h=S.find(e=>e.backgroundImage===c)??S[0],b=h.id,y=e.useCallback((e,t)=>{if(!p.current)return i;const s=(p.current.y-e)/(t?200:80)*100;return Math.round(Math.max(0,Math.min(100,p.current.brightness+s)))},[i]),g=e.useCallback(e=>{n(e),o(!0)},[n]),f=e.useCallback(e=>{l(e)},[l]),j=e.useCallback(e=>{const t=S.find(t=>t.id===e);t&&T(t.backgroundImage)},[]);if(s){const e=h.displaySize,s=`clamp(${.8*e}rem, ${.6*e}rem + 1.5vw, ${1.4*e}rem)`;return t.jsx("span",{className:"font-medium transition-all duration-300 leading-none",style:{fontFamily:h.displayFont,color:h.displayColor,fontSize:s,fontOpticalSizing:"auto",letterSpacing:"-0.03em"},children:h.displayName})}return t.jsx("div",{className:"flex gap-2 items-start flex-shrink-0",children:S.map(e=>{const s=b===e.id,a=s&&(d||u);return t.jsxs("div",{ref:s?x:void 0,title:e.displayName,className:V("flex flex-col items-center gap-1 p-0.5 rounded-sm transition-all duration-300 ease-out",s?"ring-2 ring-accent-primary scale-105 cursor-ns-resize":"cursor-pointer"),onMouseEnter:()=>{s?o(!0):j(e.id)},onMouseLeave:()=>!u&&o(!1),onClick:()=>!s&&g(e.id),onTouchStart:e=>{if(!s)return;e.preventDefault();const t=e.touches[0];p.current={y:t.clientY,brightness:i},m(!0),o(!0);const a=e=>{e.preventDefault();const t=e.touches[0];f(y(t.clientY,!0))},r=()=>{document.removeEventListener("touchmove",a),document.removeEventListener("touchend",r),p.current=null,m(!1),setTimeout(()=>o(!1),1500)};document.addEventListener("touchmove",a,{passive:!1}),document.addEventListener("touchend",r)},onMouseDown:e=>{if(!s)return;e.preventDefault(),p.current={y:e.clientY,brightness:i},m(!0),o(!0);const t=e=>{f(y(e.clientY,!1))},a=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",a),p.current=null,m(!1)};document.addEventListener("mousemove",t),document.addEventListener("mouseup",a)},children:[t.jsxs("div",{className:"glass-thumbnail w-10 h-10",children:[t.jsx("div",{className:"absolute bg-cover bg-center transition-opacity duration-200",style:{inset:0,backgroundImage:`url(${e.backgroundImage})`,opacity:a?.4:1}}),s&&t.jsxs("div",{className:V("absolute inset-0 transition-opacity duration-200",a?"opacity-100":"opacity-0"),children:[t.jsx("div",{className:"absolute inset-x-0 bottom-0 bg-black/70 transition-all duration-100 ease-out",style:{height:100-i+"%"}}),t.jsx("div",{className:"absolute inset-x-1 h-0.5 bg-white rounded-full shadow-lg transition-all duration-100 ease-out",style:{top:100-i+"%"}}),t.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:t.jsxs("span",{className:"text-[10px] font-mono font-bold text-white drop-shadow-lg",children:[i,"%"]})})]})]}),t.jsx("div",{className:"flex flex-col gap-0.5",children:e.paletteColors.map((e,s)=>t.jsx("div",{className:"flex gap-0.5 justify-center",children:e.map((e,s)=>t.jsx("div",{className:"w-1.5 h-1.5 rounded-xs",style:{backgroundColor:e}},s))},s))})]},e.id)})})}),ee=[{value:7.8,label:"7.8 kHz"},{value:10.4,label:"10.4 kHz"},{value:15.6,label:"15.6 kHz"},{value:20.8,label:"20.8 kHz"},{value:31.25,label:"31.25 kHz"},{value:41.7,label:"41.7 kHz"},{value:62.5,label:"62.5 kHz"},{value:125,label:"125 kHz"},{value:250,label:"250 kHz"},{value:500,label:"500 kHz"}],te=[5,6,7,8,9,10,11,12],se=[{value:5,label:"4/5"},{value:6,label:"4/6"},{value:7,label:"4/7"},{value:8,label:"4/8"}];function ae(){var _,S,T,ae,re,ne;const{stats:le,setMode:ce,clearModeMutation:ie,setDutyCycleConfig:de,clearDutyCycleMutation:oe,fetchStats:ue}=F(),me=null==(_=null==le?void 0:le.config)?void 0:_.radio,xe=null==(S=null==le?void 0:le.config)?void 0:S.repeater,pe=null==(T=null==le?void 0:le.config)?void 0:T.duty_cycle,he=(null==le?void 0:le.node_name)||(null==(ae=null==le?void 0:le.config)?void 0:ae.node_name)||"Unknown Node",be=(null==xe?void 0:xe.mode)??"forward",ye=(null==pe?void 0:pe.enforcement_enabled)??!1,ge=null==(re=null==le?void 0:le.config)?void 0:re.delays,[fe,je]=e.useState(!1),[ve,Ne]=e.useState(""),[we,ke]=e.useState(62.5),[Ce,_e]=e.useState(7),[Se,Te]=e.useState(5),[Fe,Ee]=e.useState(""),[Le,Pe]=e.useState("idle"),[Re,Ae]=e.useState(null),Ie=e.useRef(null),Me=e.useRef(null),De=e.useRef(null),[ze,Oe]=e.useState("idle"),[qe,He]=e.useState("idle"),[Ke,$e]=e.useState(null),[Ye,Ue]=e.useState(null),Ve=e.useRef(!0),Xe=e.useRef(null),Be=e.useRef(null),We=e.useRef(null),Ge=e.useRef(null),Qe=e.useRef(!1),Je=e.useRef(!1);e.useEffect(()=>(Ve.current=!0,()=>{Ve.current=!1,Xe.current&&clearTimeout(Xe.current),Be.current&&clearTimeout(Be.current),We.current&&clearTimeout(We.current),Ge.current&&clearTimeout(Ge.current),Lt.current&&clearTimeout(Lt.current),Pt.current&&clearTimeout(Pt.current),Me.current&&clearTimeout(Me.current),dt.current&&clearTimeout(dt.current),Ct.current&&clearTimeout(Ct.current)}),[]);const[Ze,et]=e.useState(!1),[tt,st]=e.useState(""),[at,rt]=e.useState(""),[nt,lt]=e.useState(""),[ct,it]=e.useState("idle"),dt=e.useRef(null),[ot,ut]=e.useState(!1),[mt,xt]=e.useState(""),[pt,ht]=e.useState(""),[bt,yt]=e.useState(""),[gt,ft]=e.useState(""),[jt,vt]=e.useState("idle"),[Nt,wt]=e.useState(null),kt=e.useRef(null),Ct=e.useRef(null),_t=null==(ne=null==le?void 0:le.config)?void 0:ne.web,[St,Tt]=e.useState("idle"),[Ft,Et]=e.useState(null),Lt=e.useRef(null),Pt=e.useRef(null),Rt=e.useRef(!1),[At,It]=e.useState([]),[Mt,Dt]=e.useState(!1),[zt,Ot]=e.useState(null),[qt,Ht]=e.useState(!1),[Kt,$t]=e.useState(""),[Yt,Ut]=e.useState(null),[Vt,Xt]=e.useState(!1),[Bt,Wt]=e.useState(null),[Gt,Qt]=e.useState(!1),[Jt,Zt]=e.useState(!1),[es,ts]=e.useState(!1),[ss,as]=e.useState([]),[rs,ns]=e.useState(!1),[ls,cs]=e.useState(null),[is,ds]=e.useState("deny"),[os,us]=e.useState(!1),[ms,xs]=e.useState(null),[ps,hs]=e.useState(new Set),[bs,ys]=e.useState(!1),[gs,fs]=e.useState(!1),[js,vs]=e.useState(!1),[Ns,ws]=e.useState(null),[ks,Cs]=e.useState(null),[_s,Ss]=e.useState(""),[Ts,Fs]=e.useState("deny"),[Es,Ls]=e.useState(!1),[Ps,Rs]=e.useState(!0),[As,Is]=e.useState(!1),[Ms,Ds]=e.useState(!0),[zs,Os]=e.useState("idle"),[qs,Hs]=e.useState(!1),[Ks,$s]=e.useState(!1);e.useEffect(()=>{me&&fe&&(Ne((me.frequency/1e6).toFixed(3)),ke(me.bandwidth/1e3),_e(me.spreading_factor),Te(me.coding_rate),Ee(String(me.tx_power)))},[me,fe]);const Ys=e.useMemo(()=>{if(!me||!fe)return!1;const e=me.frequency/1e6,t=me.bandwidth/1e3,s=parseFloat(ve)||0;return Math.abs(s-e)>1e-4||we!==t||Ce!==me.spreading_factor||Se!==me.coding_rate||parseInt(Fe)!==me.tx_power},[me,fe,ve,we,Ce,Se,Fe]),Us=e.useCallback(()=>{je(!1),Ae(null),me&&(Ne((me.frequency/1e6).toFixed(3)),ke(me.bandwidth/1e3),_e(me.spreading_factor),Te(me.coding_rate),Ee(String(me.tx_power)))},[me]);e.useEffect(()=>{if(!fe)return;const e=e=>{Ie.current&&!Ie.current.contains(e.target)&&Us()};return document.addEventListener("mouseup",e),()=>{document.removeEventListener("mouseup",e)}},[fe,Us]);const Vs=e.useCallback(()=>{const e=null==ge?void 0:ge.tx_delay_factor;return e&&"object"==typeof e&&"parsedValue"in e?e.parsedValue??1:"number"==typeof e?e:1},[ge]),Xs=e.useCallback(()=>{const e=null==ge?void 0:ge.direct_tx_delay_factor;return"number"==typeof e?e:.5},[ge]),Bs=e.useCallback(()=>{const e=null==pe?void 0:pe.max_airtime_percent;return"number"==typeof e?e:e&&"object"==typeof e&&"parsedValue"in e?e.parsedValue??6:6},[pe]),Ws=e.useCallback(()=>{st(Vs().toFixed(2)),rt(Xs().toFixed(2)),lt(Bs().toFixed(1)),et(!0)},[Vs,Xs,Bs]),Gs=e.useCallback(()=>{et(!1)},[]);e.useEffect(()=>{if(!Ze)return;const e=e=>{De.current&&!De.current.contains(e.target)&&Gs()};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[Ze,Gs]);const Qs=e.useCallback(()=>{var e,t,s;xt(he),ht((null==(e=null==xe?void 0:xe.latitude)?void 0:e.toString())||"0"),yt((null==(t=null==xe?void 0:xe.longitude)?void 0:t.toString())||"0"),ft((null==(s=null==xe?void 0:xe.send_advert_interval_hours)?void 0:s.toString())||"0"),wt(null),ut(!0)},[he,xe]),Js=e.useCallback(()=>{ut(!1),wt(null)},[]);e.useEffect(()=>{if(!ot)return;const e=e=>{kt.current&&!kt.current.contains(e.target)&&Js()};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[ot,Js]);const Zs=async()=>{var e;if("loading"===St)return;const t=(null==_t?void 0:_t.cors_enabled)??!1,s=!t,a=t;Lt.current&&clearTimeout(Lt.current),Pt.current&&clearTimeout(Pt.current),Rt.current=!1,Et(s),Tt("loading"),Lt.current=setTimeout(()=>{Rt.current||Ve.current&&(Et(a),Tt("error"),Pt.current=setTimeout(()=>{Ve.current&&(Tt("idle"),Et(null))},2e3))},1e4);try{const t=await I({web:{cors_enabled:s}});if(Rt.current=!0,Lt.current&&clearTimeout(Lt.current),!Ve.current)return;t.success||(null==(e=t.data)?void 0:e.persisted)?(await ue(),Tt("success"),Pt.current=setTimeout(()=>{Ve.current&&(Tt("idle"),Et(null))},2e3)):(Et(a),Tt("error"),Pt.current=setTimeout(()=>{Ve.current&&(Tt("idle"),Et(null))},2e3))}catch{if(Rt.current=!0,Lt.current&&clearTimeout(Lt.current),!Ve.current)return;Et(a),Tt("error"),Pt.current=setTimeout(()=>{Ve.current&&(Tt("idle"),Et(null))},2e3)}};e.useEffect(()=>{(async()=>{Ds(!0);try{const e=await M();e.success&&e.data?Is(e.data.exists):Is(!1);const t=null==_t?void 0:_t.web_path;Rs(!t||""===t)}catch{Is(!1)}finally{Ds(!1)}})()},[null==_t?void 0:_t.web_path]);const ea=async e=>{var t;if("loading"!==zs){Os("loading");try{const s=await I({web:{web_path:e?null:"/opt/pymc_console/web/html"}});if(!Ve.current)return;s.success||(null==(t=s.data)?void 0:t.persisted)?(Rs(e),Os("success"),Hs(!0),setTimeout(()=>{Ve.current&&Os("idle")},2e3)):(Os("error"),setTimeout(()=>{Ve.current&&Os("idle")},2e3))}catch{if(!Ve.current)return;Os("error"),setTimeout(()=>{Ve.current&&Os("idle")},2e3)}}},ta=e.useCallback(async()=>{Dt(!0),Ot(null);try{const e=await E();It(e.tokens||[])}catch(e){Ot(e instanceof Error?e.message:"Failed to fetch tokens")}finally{Dt(!1)}},[]);e.useEffect(()=>{ta()},[ta]);const sa=async()=>{if(Kt.trim()){Qt(!0),Ot(null);try{const e=await z(Kt.trim());Ut(e.token||null),Ht(!1),Xt(!0),$t(""),await ta()}catch(e){Ot(e instanceof Error?e.message:"Failed to create token")}finally{Qt(!1)}}else Ot("Token name is required")},aa=e=>e?new Date(1e3*e).toLocaleString():"Never",ra=e.useCallback(e=>{const t=new Map,s=[];return e.forEach(e=>{const s={id:e.id,name:e.name,floodPolicy:e.flood_policy,transport_key:e.transport_key,last_used:e.last_used,parent_id:e.parent_id,children:[]};t.set(e.id,s)}),t.forEach(e=>{e.parent_id&&t.has(e.parent_id)?t.get(e.parent_id).children.push(e):s.push(e)}),s},[]),na=e.useCallback(async()=>{ns(!0),cs(null);try{const e=await L();e.success&&e.data?as(ra(e.data)):cs(e.error||"Failed to load transport keys")}catch(e){cs(e instanceof Error?e.message:"Unknown error occurred")}finally{ns(!1)}},[ra]);e.useEffect(()=>{na()},[na]);const la=e.useCallback((e,t)=>{for(const s of e){if(s.id===t)return s;if(s.children){const e=la(s.children,t);if(e)return e}}return null},[]),ca=e.useCallback(()=>{if(!ms)return;const e=la(ss,ms);return null==e?void 0:e.name},[ms,ss,la]),ia=e.useCallback(e=>{hs(t=>{const s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),da=async e=>{us(!0),cs(null);try{const t=await q("allow"===e);t.success?ds(e):cs(t.error||"Failed to update global flood policy")}catch(t){cs(t instanceof Error?t.message:"Failed to update global flood policy")}finally{us(!1)}},oa=async()=>{if(_s.trim()){Ls(!0),cs(null);try{const e=await H({name:_s.trim(),flood_policy:Ts,parent_id:ms??void 0});e.success?(await na(),ys(!1),Ss(""),Fs("deny")):cs(e.error||"Failed to add transport key")}catch(e){cs(e instanceof Error?e.message:"Failed to add transport key")}finally{Ls(!1)}}else cs("Key name is required")},ua=e.useCallback(()=>{if(!ms)return;const e=la(ss,ms);e&&(ws({...e}),fs(!0))},[ms,ss,la]);e.useEffect(()=>{const e=e=>{"Escape"===e.key&&(bs&&(ys(!1),Ss(""),Fs("deny")),gs&&(fs(!1),ws(null)),js&&(vs(!1),Cs(null)),qt&&(Ht(!1),$t("")),Vt&&(Xt(!1),Ut(null)))};if(bs||gs||js||qt||Vt)return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[bs,gs,js,qt,Vt]);const ma=e.useCallback(()=>{if(!ms)return;const e=la(ss,ms);e&&(Cs(e),vs(!0))},[ms,ss,la]),xa=({node:e,level:s})=>{const a=ps.has(e.id),r=ms===e.id,n=e.children&&e.children.length>0,l="allow"===is;return t.jsxs("div",{children:[t.jsxs("div",{className:V("flex items-center gap-2 h-[36px] px-3 rounded-full cursor-pointer transition-colors",r?"bg-accent-primary/15":"hover:bg-white/[0.02]",l&&"opacity-50 cursor-not-allowed"),style:{marginLeft:16*s+"px"},onClick:()=>!l&&xs(e.id),children:[n?t.jsx("button",{onClick:t=>{t.stopPropagation(),ia(e.id)},className:"p-1 hover:bg-white/[0.05] rounded-full transition-colors",children:t.jsx(k,{className:V("w-3.5 h-3.5 text-text-muted transition-transform",a&&"rotate-90")})}):t.jsx("span",{className:"w-5"}),t.jsx(C,{className:"w-4 h-4 text-accent-primary flex-shrink-0"}),t.jsx("span",{className:"type-data text-text-primary flex-1 truncate",children:e.name}),t.jsx("span",{className:V("type-data-xs px-2 py-0.5 rounded-full","allow"===e.floodPolicy?"bg-accent-success/15 text-accent-success":"bg-accent-danger/15 text-accent-danger"),children:"allow"===e.floodPolicy?"Allow":"Deny"})]}),n&&a&&t.jsx("div",{children:e.children.map(e=>t.jsx(xa,{node:e,level:s+1},e.id))})]})};return t.jsxs(X,{children:[t.jsx(B,{title:"Configuration",icon:t.jsx(s,{})}),t.jsxs(Q,{template:"standard",children:[t.jsx(J,{span:12,md:6,children:t.jsx(W,{children:t.jsxs("div",{ref:kt,children:[t.jsxs("div",{className:"flex items-center justify-between mb-4",children:[t.jsxs("h2",{className:"type-subheading text-text-primary flex items-center gap-2",children:[t.jsx(a,{className:"icon-md text-accent-primary"}),"Repeater Settings"]}),t.jsx("div",{className:"flex items-center gap-1",children:xe&&(ot?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:Js,disabled:"loading"===jt,className:V("p-2 rounded-lg transition-colors","loading"===jt?"text-text-muted cursor-not-allowed":"text-text-muted hover:text-accent-danger hover:bg-accent-danger/10"),title:"Cancel",children:t.jsx(r,{className:"w-4 h-4"})}),t.jsx("button",{onClick:async()=>{if("loading"!==jt){Ct.current&&clearTimeout(Ct.current),vt("loading"),wt(null);try{const e={};mt&&mt!==he&&(e.node_name=mt);const t=parseFloat(pt);isNaN(t)||t===(null==xe?void 0:xe.latitude)||(e.latitude=t);const s=parseFloat(bt);isNaN(s)||s===(null==xe?void 0:xe.longitude)||(e.longitude=s);const a=parseInt(gt);if(isNaN(a)||a===(null==xe?void 0:xe.send_advert_interval_hours)||(e.flood_advert_interval_hours=a),0===Object.keys(e).length)return wt({success:!0,message:"No changes to save"}),void vt("idle");const r=await A(e);if(!Ve.current)return;if(r.success&&r.data){const e=r.data.applied.join(", ");wt({success:!0,message:`Updated: ${e}`}),await ue(),vt("success"),Ct.current=setTimeout(()=>{Ve.current&&(vt("idle"),ut(!1),wt(null))},1500)}else wt({success:!1,message:r.error||"Failed to save"}),vt("error"),Ct.current=setTimeout(()=>{Ve.current&&vt("idle")},2e3)}catch(e){if(!Ve.current)return;wt({success:!1,message:String(e)}),vt("error"),Ct.current=setTimeout(()=>{Ve.current&&vt("idle")},2e3)}}},disabled:"loading"===jt,className:V("p-2 rounded-lg transition-colors","loading"===jt?"text-accent-primary cursor-wait":"success"===jt?"text-accent-success":"error"===jt?"text-accent-danger":"text-accent-success hover:bg-accent-success/10"),title:"Save changes",children:"loading"===jt?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===jt?t.jsx(l,{className:"w-4 h-4"}):"error"===jt?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:Qs,className:"p-2 rounded-lg transition-colors text-text-muted hover:text-text-primary hover:bg-bg-subtle",title:"Edit repeater settings",children:t.jsx(c,{className:"w-4 h-4"})}))})]}),Nt&&t.jsx("div",{className:V("text-xs mb-3 px-2 py-1.5 rounded-md",Nt.success?"text-accent-success bg-accent-success/10":"text-accent-danger bg-accent-danger/10"),children:Nt.message}),xe?t.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{className:"col-span-2",children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Node Name"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",ot?"bg-white/5":"bg-white/[0.02]"),children:ot?t.jsx("input",{type:"text",value:mt,onChange:e=>xt(e.target.value),maxLength:50,className:"w-full bg-transparent text-text-primary focus:outline-none type-data",placeholder:"Enter node name"}):t.jsx("span",{className:"type-data text-text-primary",children:he})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:ot?"Latitude (°)":"Latitude"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",ot?"bg-white/5":"bg-white/[0.02]"),children:ot?t.jsx("input",{type:"number",value:pt,onChange:e=>ht(e.target.value),step:"0.000001",min:"-90",max:"90",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsx("span",{className:"type-data text-text-primary",children:0!==xe.latitude?xe.latitude.toFixed(6):"Not set"})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:ot?"Longitude (°)":"Longitude"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",ot?"bg-white/5":"bg-white/[0.02]"),children:ot?t.jsx("input",{type:"number",value:bt,onChange:e=>yt(e.target.value),step:"0.000001",min:"-180",max:"180",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsx("span",{className:"type-data text-text-primary",children:0!==xe.longitude?xe.longitude.toFixed(6):"Not set"})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:ot?"Advert Interval (hours)":"Advert Interval"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",ot?"bg-white/5":"bg-white/[0.02]"),children:ot?t.jsx("input",{type:"number",value:gt,onChange:e=>ft(e.target.value),min:"0",max:"48",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsx("span",{className:"type-data text-text-primary",children:xe.send_advert_interval_hours>0?`${xe.send_advert_interval_hours}h`:"Disabled"})}),ot&&t.jsx("p",{className:"type-data-xs text-text-muted mt-1 ml-4",children:"0 = disabled, 3-48 hours"})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Score-based TX"}),t.jsx("div",{className:"h-[38px] rounded-full px-4 flex items-center bg-white/[0.02]",children:t.jsx("span",{className:"type-data text-text-primary",children:xe.use_score_for_tx?"Enabled":"Disabled"})})]})]}):t.jsx("p",{className:"text-text-muted",children:"Loading repeater settings..."})]})})}),t.jsx(J,{span:12,md:6,children:t.jsx(W,{children:t.jsxs("div",{ref:Ie,children:[t.jsxs("div",{className:"flex items-center justify-between mb-4",children:[t.jsxs("h2",{className:"type-subheading text-text-primary flex items-center gap-2",children:[t.jsx(i,{className:"icon-md text-accent-primary"}),"Radio Configuration"]}),t.jsx("div",{className:"flex items-center gap-1",children:me&&(fe?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:Us,disabled:"loading"===Le,className:V("p-2 rounded-lg transition-colors","loading"===Le?"text-text-muted cursor-not-allowed":"text-text-muted hover:text-accent-danger hover:bg-accent-danger/10"),title:"Cancel",children:t.jsx(r,{className:"w-4 h-4"})}),t.jsx("button",{onClick:async()=>{if("loading"!==Le){Me.current&&clearTimeout(Me.current),Pe("loading"),Ae(null);try{const e={},t=parseFloat(ve),s=me?me.frequency/1e6:0;Math.abs(t-s)>1e-4&&(e.frequency_mhz=t);const a=me?me.bandwidth/1e3:0;we!==a&&(e.bandwidth_khz=we),Ce!==(null==me?void 0:me.spreading_factor)&&(e.spreading_factor=Ce),Se!==(null==me?void 0:me.coding_rate)&&(e.coding_rate=Se);const r=parseInt(Fe);if(r!==(null==me?void 0:me.tx_power)&&(e.tx_power=r),0===Object.keys(e).length)return Ae({success:!0,message:"No changes to save"}),void Pe("idle");const n=await A(e);if(!Ve.current)return;if(n.success&&n.data){const e=n.data.applied.join(", "),t=n.data.live_update?" (applied live)":" (restart required)";Ae({success:!0,message:`Updated: ${e}${t}`}),await ue(),Pe("success"),Me.current=setTimeout(()=>{Ve.current&&(Pe("idle"),je(!1),Ae(null))},1500)}else Ae({success:!1,message:n.error||"Failed to save"}),Pe("error"),Me.current=setTimeout(()=>{Ve.current&&Pe("idle")},2e3)}catch(e){if(!Ve.current)return;Ae({success:!1,message:String(e)}),Pe("error"),Me.current=setTimeout(()=>{Ve.current&&Pe("idle")},2e3)}}},disabled:"loading"===Le||!Ys,className:V("p-2 rounded-lg transition-colors","loading"===Le?"text-accent-primary cursor-wait":"success"===Le?"text-accent-success":"error"===Le?"text-accent-danger":Ys?"text-accent-success hover:bg-accent-success/10":"text-text-muted cursor-not-allowed"),title:Ys?"Save changes":"No changes to save",children:"loading"===Le?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===Le?t.jsx(l,{className:"w-4 h-4"}):"error"===Le?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:()=>{me&&(Ne((me.frequency/1e6).toFixed(3)),ke(me.bandwidth/1e3),_e(me.spreading_factor),Te(me.coding_rate),Ee(String(me.tx_power))),Ae(null),je(!0)},className:"p-2 rounded-lg transition-colors text-text-muted hover:text-text-primary hover:bg-bg-subtle",title:"Edit radio settings",children:t.jsx(c,{className:"w-4 h-4"})}))})]}),Re&&t.jsx("div",{className:V("text-xs mb-3 px-2 py-1.5 rounded-md",Re.success?"text-accent-success bg-accent-success/10":"text-accent-danger bg-accent-danger/10"),children:Re.message}),me?t.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:fe?"Frequency (MHz)":"Frequency"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsx("input",{type:"number",value:ve,onChange:e=>Ne(e.target.value),step:"0.001",min:"400",max:"930",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsx("span",{className:"type-data text-text-primary",children:P(me.frequency)})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:fe?"TX Power (dBm)":"TX Power"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsx("input",{type:"number",value:Fe,onChange:e=>Ee(e.target.value),min:"-9",max:"22",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsxs("span",{className:"type-data text-text-primary",children:[me.tx_power," dBm"]})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Bandwidth"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors relative",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:we,onChange:e=>ke(parseFloat(e.target.value)),className:"w-full bg-transparent text-text-primary focus:outline-none appearance-none cursor-pointer type-data pr-6",children:ee.map(e=>t.jsx("option",{value:e.value,children:e.label},e.value))}),t.jsx(d,{className:"absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted pointer-events-none"})]}):t.jsx("span",{className:"type-data text-text-primary",children:R(me.bandwidth)})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Spreading Factor"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors relative",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Ce,onChange:e=>_e(parseInt(e.target.value)),className:"w-full bg-transparent text-text-primary focus:outline-none appearance-none cursor-pointer type-data pr-6",children:te.map(e=>t.jsxs("option",{value:e,children:["SF",e]},e))}),t.jsx(d,{className:"absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted pointer-events-none"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:["SF",me.spreading_factor]})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Coding Rate"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors relative",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Se,onChange:e=>Te(parseInt(e.target.value)),className:"w-full bg-transparent text-text-primary focus:outline-none appearance-none cursor-pointer type-data pr-6",children:se.map(e=>t.jsx("option",{value:e.value,children:e.label},e.value))}),t.jsx(d,{className:"absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted pointer-events-none"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:["4/",me.coding_rate]})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Preamble"}),t.jsx("div",{className:"h-[38px] rounded-full px-4 flex items-center bg-white/[0.02]",children:t.jsxs("span",{className:"type-data text-text-primary",children:[me.preamble_length," symbols"]})})]})]}):t.jsx("p",{className:"text-text-muted",children:"Loading radio configuration..."})]})})})]}),t.jsxs(Q,{template:"standard",children:[t.jsx(J,{span:12,md:6,children:t.jsx(W,{children:t.jsxs("div",{ref:De,children:[t.jsxs("div",{className:"flex items-center justify-between mb-3",children:[t.jsxs("h2",{className:"type-subheading text-text-primary flex items-center gap-3",children:[t.jsx(o,{className:"icon-md text-icon-card-title"}),"Operating Mode"]}),t.jsx("div",{className:"flex items-center gap-1",children:Ze?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"!==ct){dt.current&&clearTimeout(dt.current),it("loading");try{const e=await A({tx_delay_factor:parseFloat(tt),direct_tx_delay_factor:parseFloat(at)});if(await de({max_airtime_percent:parseFloat(nt),enforcement_enabled:ye}),!Ve.current)return;e.success&&e.data?(await ue(),it("success"),dt.current=setTimeout(()=>{Ve.current&&(it("idle"),et(!1))},1500)):(it("error"),dt.current=setTimeout(()=>{Ve.current&&it("idle")},2e3))}catch{if(!Ve.current)return;it("error"),dt.current=setTimeout(()=>{Ve.current&&it("idle")},2e3)}}},disabled:"loading"===ct,className:V("p-2 rounded-lg transition-colors","loading"===ct?"text-accent-primary cursor-wait":"success"===ct?"text-accent-success":"error"===ct?"text-accent-danger":"text-accent-success hover:bg-accent-success/10"),title:"Save",children:"loading"===ct?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===ct?t.jsx(l,{className:"w-4 h-4"}):"error"===ct?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})}),t.jsx("button",{onClick:Gs,className:"p-2 rounded-lg text-text-muted hover:text-accent-danger hover:bg-accent-danger/10",title:"Cancel",children:t.jsx(r,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:Ws,className:"p-2 rounded-lg transition-colors text-text-muted hover:text-text-primary hover:bg-bg-subtle",title:"Edit settings",children:t.jsx(c,{className:"w-4 h-4"})})})]}),t.jsx("p",{className:"type-label text-text-muted mb-3",children:"Control how the repeater handles packets"}),t.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[t.jsxs("div",{className:"flex-1 space-y-4",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("label",{className:"type-label text-text-muted",children:"Repeat"}),t.jsx("div",{className:"flex items-center gap-2",children:(()=>{const e=null!==Ke?Ke:"forward"===be;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"===ze)return;const t=!e,s="forward"===be;Xe.current&&clearTimeout(Xe.current),Be.current&&clearTimeout(Be.current),Qe.current=!1,$e(t),Oe("loading"),Xe.current=setTimeout(()=>{Qe.current||Ve.current&&($e(s),Oe("error"),Be.current=setTimeout(()=>{Ve.current&&(Oe("idle"),$e(null))},2e3))},1e4);try{if(await ce(t?"forward":"monitor"),Qe.current=!0,Xe.current&&clearTimeout(Xe.current),!Ve.current)return;Oe("success"),Be.current=setTimeout(()=>{Ve.current&&(Oe("idle"),$e(null),ie())},2e3)}catch{if(Qe.current=!0,Xe.current&&clearTimeout(Xe.current),!Ve.current)return;$e(s),Oe("error"),Be.current=setTimeout(()=>{Ve.current&&(Oe("idle"),$e(null))},2e3)}},disabled:"loading"===ze,className:V("relative inline-flex h-6 w-11 items-center rounded-full transition-colors border-2",e?"bg-toggle-on border-toggle-on":"bg-toggle-off border-border-subtle","loading"===ze&&"opacity-70"),"aria-label":"Toggle forward mode",children:t.jsx("span",{className:V("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",e?"translate-x-5":"translate-x-0.5")})}),t.jsx("span",{className:V("type-data text-sm w-7",e?"text-accent-success":"text-text-muted"),children:e?"On":"Off"}),"loading"===ze&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===ze&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===ze&&t.jsx(r,{className:"w-4 h-4 text-accent-danger"})]})})()})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("label",{className:"type-label text-text-muted",children:"Duty Cycle"}),t.jsx("div",{className:"flex items-center gap-2",children:(()=>{const e=null!==Ye?Ye:ye;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"===qe)return;const t=!e,s=ye;We.current&&clearTimeout(We.current),Ge.current&&clearTimeout(Ge.current),Je.current=!1,Ue(t),He("loading"),We.current=setTimeout(()=>{Je.current||Ve.current&&(Ue(s),He("error"),Ge.current=setTimeout(()=>{Ve.current&&(He("idle"),Ue(null))},2e3))},1e4);try{if(await de({max_airtime_percent:Bs(),enforcement_enabled:t}),Je.current=!0,We.current&&clearTimeout(We.current),!Ve.current)return;He("success"),Ge.current=setTimeout(()=>{Ve.current&&(He("idle"),Ue(null),oe())},2e3)}catch{if(Je.current=!0,We.current&&clearTimeout(We.current),!Ve.current)return;Ue(s),He("error"),Ge.current=setTimeout(()=>{Ve.current&&(He("idle"),Ue(null))},2e3)}},disabled:"loading"===qe,className:V("relative inline-flex h-6 w-11 items-center rounded-full transition-colors border-2",e?"bg-toggle-on border-toggle-on":"bg-toggle-off border-border-subtle","loading"===qe&&"opacity-70"),"aria-label":"Toggle duty cycle",children:t.jsx("span",{className:V("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",e?"translate-x-5":"translate-x-0.5")})}),t.jsx("span",{className:V("type-data text-sm w-7",e?"text-accent-success":"text-text-muted"),children:e?"On":"Off"}),"loading"===qe&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===qe&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===qe&&t.jsx(r,{className:"w-4 h-4 text-accent-danger"})]})})()})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("label",{className:"type-label text-text-muted",children:"Max Airtime"}),t.jsx("div",{className:V("h-[32px] rounded-full px-3 flex items-center justify-end transition-colors min-w-[80px]",Ze?"bg-white/5":"bg-white/[0.02]"),children:Ze?t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("input",{type:"number",value:nt,onChange:e=>lt(e.target.value),step:"0.5",min:"0.1",max:"100",className:"w-12 bg-transparent text-text-primary text-right focus:outline-none type-data"}),t.jsx("span",{className:"text-text-muted type-data",children:"%"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:[Bs().toFixed(1),"%"]})})]})]}),t.jsx("div",{className:"hidden sm:block w-px bg-border-subtle"}),t.jsxs("div",{className:"flex-1 pt-4 sm:pt-0 border-t sm:border-t-0 border-border-subtle",children:[t.jsx("label",{className:"type-label text-text-muted block mb-3",children:"TX Delays"}),t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"type-label text-text-muted",children:"Flood"}),t.jsx("div",{className:V("h-[32px] rounded-full px-3 flex items-center justify-end transition-colors min-w-[80px]",Ze?"bg-white/5":"bg-white/[0.02]"),children:Ze?t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("input",{type:"number",value:tt,onChange:e=>st(e.target.value),step:"0.1",min:"0",max:"5",className:"w-12 bg-transparent text-text-primary text-right focus:outline-none type-data"}),t.jsx("span",{className:"text-text-muted type-data",children:"x"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:[Vs().toFixed(2),"x"]})})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"type-label text-text-muted",children:"Direct"}),t.jsx("div",{className:V("h-[32px] rounded-full px-3 flex items-center justify-end transition-colors min-w-[80px]",Ze?"bg-white/5":"bg-white/[0.02]"),children:Ze?t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("input",{type:"number",value:at,onChange:e=>rt(e.target.value),step:"0.1",min:"0",max:"5",className:"w-12 bg-transparent text-text-primary text-right focus:outline-none type-data"}),t.jsx("span",{className:"text-text-muted type-data",children:"s"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:[Xs().toFixed(2),"s"]})})]})]})]})]})]})})}),t.jsx(J,{span:12,md:6,children:t.jsxs(W,{children:[t.jsx(G,{icon:t.jsx(s,{}),title:"App Settings",largeTitle:!0}),t.jsx("p",{className:"type-body-sm text-text-muted mb-4",children:"Appearance and web server options."}),t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsxs("div",{children:[t.jsx("span",{className:"type-body text-text-primary font-medium block",children:"Enable CORS"}),t.jsx("span",{className:"type-body-sm text-text-muted",children:"Allow cross-origin API access"})]}),t.jsx("div",{className:"flex items-center gap-2",children:(()=>{const e=null!==Ft?Ft:(null==_t?void 0:_t.cors_enabled)??!1;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:Zs,disabled:"loading"===St,className:V("relative inline-flex h-6 w-11 items-center rounded-full transition-colors border-2",e?"bg-toggle-on border-toggle-on":"bg-toggle-off border-border-subtle","loading"===St&&"opacity-70"),title:e?"Disable CORS":"Enable CORS",children:t.jsx("span",{className:V("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",e?"translate-x-5":"translate-x-0.5")})}),"loading"===St&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===St&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===St&&t.jsx(r,{className:"w-4 h-4 text-accent-danger"})]})})()})]}),t.jsxs("div",{children:[t.jsx("span",{className:"type-body text-text-primary font-medium block mb-2",children:"Theme"}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsx(Z,{showLogoOnly:!0})}),t.jsx("div",{className:"flex-shrink-0",children:t.jsx(Z,{showThumbnailsOnly:!0})})]})]})]})]})})]}),t.jsx(Q,{template:"auto",children:t.jsxs(W,{children:[t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:[t.jsxs("div",{children:[t.jsxs("h2",{className:"type-heading text-text-primary flex items-center gap-2",children:[t.jsx(u,{className:"icon-md text-accent-primary"}),"Regions / Transport Keys"]}),t.jsx("p",{className:"type-body-sm text-text-muted mt-1",children:"Manage regional key hierarchy for flood control"})]}),t.jsxs("div",{className:"flex gap-2 flex-wrap",children:[t.jsxs("button",{onClick:()=>ys(!0),disabled:"allow"===is,className:V("flex items-center gap-1.5 h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium","allow"===is?"bg-white/[0.02] text-text-muted cursor-not-allowed":"bg-accent-success/10 hover:bg-accent-success/20 text-accent-success"),children:[t.jsx(m,{className:"w-3.5 h-3.5"}),"Add"]}),t.jsx("button",{onClick:ua,disabled:!ms||"allow"===is,className:V("h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium",ms&&"allow"!==is?"bg-accent-primary/10 hover:bg-accent-primary/20 text-accent-primary":"bg-white/[0.02] text-text-muted cursor-not-allowed"),children:"Edit"}),t.jsx("button",{onClick:ma,disabled:!ms||"allow"===is,className:V("h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium",ms&&"allow"!==is?"bg-accent-danger/10 hover:bg-accent-danger/20 text-accent-danger":"bg-white/[0.02] text-text-muted cursor-not-allowed"),children:"Delete"})]})]}),t.jsx("div",{className:"bg-white/[0.02] rounded-2xl p-4 mb-4",children:t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:V("w-10 h-10 rounded-full flex items-center justify-center","allow"===is?"bg-accent-success/20":"bg-accent-danger/20"),children:"allow"===is?t.jsx(x,{className:"w-5 h-5 text-accent-success"}):t.jsx(p,{className:"w-5 h-5 text-accent-danger"})}),t.jsxs("div",{children:[t.jsx("h4",{className:"type-body text-text-primary font-medium",children:"Global Flood Policy"}),t.jsx("p",{className:"type-body-sm text-text-muted",children:"Master control for repeater flooding"})]})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs("div",{className:"flex bg-white/[0.02] rounded-full p-1",children:[t.jsx("button",{onClick:()=>da("deny"),disabled:os,className:V("px-4 py-1.5 rounded-full transition-colors type-body-sm font-medium","deny"===is?"bg-accent-danger/20 text-accent-danger":"text-text-muted hover:text-text-secondary",os&&"opacity-50"),children:"Deny"}),t.jsx("button",{onClick:()=>da("allow"),disabled:os,className:V("px-4 py-1.5 rounded-full transition-colors type-body-sm font-medium","allow"===is?"bg-accent-success/20 text-accent-success":"text-text-muted hover:text-text-secondary",os&&"opacity-50"),children:"Allow"})]}),os&&t.jsx(n,{className:"w-4 h-4 animate-spin text-text-muted"})]})]})}),ls&&t.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-accent-danger bg-accent-danger/10",children:ls}),t.jsx("div",{className:"bg-white/[0.02] rounded-2xl p-4 min-h-[120px]",children:rs?t.jsxs("div",{className:"flex items-center justify-center py-6",children:[t.jsx(n,{className:"w-5 h-5 animate-spin text-accent-primary mr-2"}),t.jsx("span",{className:"type-body-sm text-text-muted",children:"Loading transport keys..."})]}):0===ss.length?t.jsxs("div",{className:"text-center py-6",children:[t.jsx("div",{className:"w-12 h-12 rounded-full bg-white/[0.02] mx-auto mb-3 flex items-center justify-center",children:t.jsx(u,{className:"w-6 h-6 text-text-muted/50"})}),t.jsx("p",{className:"type-body text-text-muted",children:"No transport keys found"}),t.jsx("p",{className:"type-body-sm text-text-muted/70 mt-1",children:"Add your first transport key to get started"})]}):t.jsx("div",{className:"space-y-1",children:ss.map(e=>t.jsx(xa,{node:e,level:0},e.id))})})]})}),t.jsx(Q,{template:"auto",children:t.jsxs(W,{children:[t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:[t.jsxs("div",{children:[t.jsxs("h2",{className:"type-heading text-text-primary flex items-center gap-2",children:[t.jsx(h,{className:"icon-md text-accent-primary"}),"API Tokens"]}),t.jsx("p",{className:"type-body-sm text-text-muted mt-1",children:"Manage API tokens for machine-to-machine authentication"})]}),t.jsxs("button",{onClick:()=>Ht(!0),className:"flex items-center justify-center gap-2 h-[32px] px-4 bg-accent-primary/10 hover:bg-accent-primary/20 text-accent-primary rounded-full transition-colors type-body-sm font-medium",children:[t.jsx(m,{className:"w-4 h-4"}),"Create Token"]})]}),t.jsx("div",{className:"bg-accent-tertiary/5 rounded-2xl p-4 mb-4",children:t.jsxs("div",{className:"flex gap-3",children:[t.jsx("div",{className:"w-8 h-8 rounded-full bg-accent-tertiary/20 flex items-center justify-center flex-shrink-0",children:t.jsx(b,{className:"w-4 h-4 text-accent-tertiary"})}),t.jsxs("div",{className:"type-body-sm text-text-muted",children:[t.jsxs("p",{children:[t.jsx("span",{className:"text-text-secondary",children:"API tokens"})," are used for machine-to-machine authentication. Include the token in the ",t.jsx("code",{className:"type-code bg-accent-tertiary/20 px-1.5 py-0.5 rounded-full text-accent-tertiary",children:"X-API-Key"})," header when making API requests."]}),t.jsx("p",{className:"mt-1 text-text-muted/70",children:"Tokens are only shown once at creation. Store them securely."})]})]})}),zt&&t.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-accent-danger bg-accent-danger/10",children:zt}),Mt&&0===At.length?t.jsxs("div",{className:"flex items-center justify-center py-6",children:[t.jsx(n,{className:"w-5 h-5 animate-spin text-accent-primary mr-2"}),t.jsx("span",{className:"type-body-sm text-text-muted",children:"Loading tokens..."})]}):At.length>0?t.jsx("div",{className:"space-y-2",children:At.map(e=>t.jsx("div",{className:"bg-white/[0.02] hover:bg-white/[0.04] rounded-2xl p-4 transition-colors",children:t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[t.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[t.jsx("div",{className:"w-10 h-10 rounded-full bg-accent-primary/10 flex items-center justify-center flex-shrink-0",children:t.jsx(h,{className:"w-5 h-5 text-accent-primary"})}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("h3",{className:"type-body text-text-primary font-medium truncate",children:e.name}),t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:gap-4 mt-0.5",children:[t.jsxs("span",{className:"type-data-sm text-text-muted truncate",children:["Created: ",aa(e.created_at)]}),t.jsxs("span",{className:"type-data-sm text-text-muted truncate",children:["Last used: ",aa(e.last_used)]})]})]})]}),t.jsxs("button",{onClick:()=>Wt({id:e.id,name:e.name}),disabled:Jt,className:"h-[32px] px-4 bg-accent-danger/10 hover:bg-accent-danger/20 text-accent-danger rounded-full transition-colors disabled:opacity-50 type-body-sm font-medium flex items-center justify-center gap-1.5",children:[t.jsx(y,{className:"w-3.5 h-3.5"}),"Revoke"]})]})},e.id))}):t.jsxs("div",{className:"bg-white/[0.02] rounded-2xl p-6 text-center",children:[t.jsx("div",{className:"w-14 h-14 rounded-full bg-white/[0.02] mx-auto mb-4 flex items-center justify-center",children:t.jsx(h,{className:"w-7 h-7 text-text-muted/50"})}),t.jsx("h3",{className:"type-body text-text-primary font-medium mb-1",children:"No API Tokens"}),t.jsx("p",{className:"type-body-sm text-text-muted mb-4",children:"Create a token to enable API access"}),t.jsx("button",{onClick:()=>Ht(!0),className:"h-[32px] px-4 bg-accent-primary/10 hover:bg-accent-primary/20 text-accent-primary rounded-full transition-colors type-body-sm font-medium",children:"Create Your First Token"})]})]})}),t.jsx(Q,{template:"auto",children:t.jsxs(W,{children:[t.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:t.jsxs("div",{children:[t.jsxs("h2",{className:"type-heading text-text-primary flex items-center gap-2",children:[t.jsx(g,{className:"icon-md text-accent-primary"}),"Web Frontend"]}),t.jsx("p",{className:"type-body-sm text-text-muted mt-1",children:"Choose which web interface to use"})]})}),t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{className:"space-y-3",children:[t.jsxs("label",{className:V("flex items-start gap-3 p-4 bg-white/[0.02] rounded-2xl border-2 cursor-pointer transition-all",Ps?"border-accent-primary bg-accent-primary/5":"border-transparent hover:border-accent-primary/30","loading"===zs&&"opacity-50 pointer-events-none"),children:[t.jsx("input",{type:"radio",name:"frontend",checked:Ps,onChange:()=>ea(!0),disabled:"loading"===zs,className:"mt-1 h-4 w-4 text-accent-primary focus:ring-accent-primary focus:ring-offset-bg-elevated"}),t.jsxs("div",{className:"flex-1",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("div",{className:"type-body text-text-primary font-medium",children:"Default Frontend"}),t.jsx("a",{href:"https://github.com/rightup/pyMC_Repeater",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"type-data-xs bg-accent-tertiary/15 text-accent-tertiary px-2.5 py-0.5 rounded-full font-medium hover:bg-accent-tertiary/25 transition-colors",children:"@RightUp"})]}),t.jsx("div",{className:"type-body-sm text-text-muted mt-1",children:"Built-in pyMC Repeater web interface"}),t.jsx("div",{className:"type-data-xs text-text-muted/60 mt-1 font-mono",children:"/opt/pymc_repeater/repeater/web/html"})]})]}),t.jsxs("label",{className:V("flex items-start gap-3 p-4 bg-white/[0.02] rounded-2xl border-2 cursor-pointer transition-all",Ps?"border-transparent hover:border-accent-primary/30":"border-accent-primary bg-accent-primary/5","loading"===zs&&"opacity-50 pointer-events-none"),children:[t.jsx("input",{type:"radio",name:"frontend",checked:!Ps,onChange:()=>ea(!1),disabled:"loading"===zs,className:"mt-1 h-4 w-4 text-accent-primary focus:ring-accent-primary focus:ring-offset-bg-elevated"}),t.jsxs("div",{className:"flex-1",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("div",{className:"type-body text-text-primary font-medium",children:"PyMC Console"}),t.jsx("span",{className:"type-data-xs bg-accent-secondary/15 text-accent-secondary px-2.5 py-0.5 rounded-full font-medium",children:"@Treehouse ⚡"})]}),t.jsx("div",{className:"type-body-sm text-text-muted mt-1",children:"Alternative web interface for pyMC Repeater"}),t.jsx("div",{className:"type-data-xs text-text-muted/60 mt-1 font-mono",children:"/opt/pymc_console/web/html"})]})]})]}),!Ms&&t.jsx("div",{className:V("bg-white/[0.02] rounded-2xl p-4",As?"border border-accent-success/20":"border border-accent-tertiary/20"),children:t.jsxs("div",{className:"flex items-start gap-3",children:[t.jsx("div",{className:V("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0",As?"bg-accent-success/20":"bg-accent-tertiary/20"),children:As?t.jsx(f,{className:"w-4 h-4 text-accent-success"}):t.jsx(b,{className:"w-4 h-4 text-accent-tertiary"})}),t.jsxs("div",{className:"flex-1",children:[t.jsx("h4",{className:"type-body text-text-primary font-medium",children:As?"PyMC Console has been detected":"PyMC Console Not Installed"}),As?t.jsxs("p",{className:"type-body-sm text-text-muted mt-1",children:["PyMC Console is installed at ",t.jsx("code",{className:"type-code bg-accent-success/10 px-1.5 py-0.5 rounded-full text-accent-success",children:"/opt/pymc_console/web/html"})]}):t.jsxs(t.Fragment,{children:[t.jsxs("p",{className:"type-body-sm text-text-muted mt-1 mb-3",children:["PyMC Console must be installed at ",t.jsx("code",{className:"type-code bg-accent-tertiary/10 px-1.5 py-0.5 rounded-full text-accent-tertiary",children:"/opt/pymc_console/web/html"})," before selecting this option."]}),t.jsxs("a",{href:"https://github.com/dmduran12/pymc_console-dist",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 h-[32px] px-4 bg-accent-tertiary/10 hover:bg-accent-tertiary/20 text-accent-tertiary rounded-full type-body-sm font-medium transition-colors",children:[t.jsx(j,{className:"w-4 h-4"}),"PyMC Console Install Instructions"]})]})]})]})}),qs&&t.jsx("div",{className:"bg-white/[0.02] rounded-2xl p-4 border border-accent-secondary/30",children:t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[t.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[t.jsx("div",{className:"w-8 h-8 rounded-full bg-accent-secondary/20 flex items-center justify-center flex-shrink-0",children:t.jsx(v,{className:"w-4 h-4 text-accent-secondary"})}),t.jsxs("div",{className:"flex-1",children:[t.jsx("h4",{className:"type-body text-text-primary font-medium",children:"Service restart required"}),t.jsx("p",{className:"type-body-sm text-text-muted mt-1",children:"Web frontend changes will take effect after restarting the pymc-repeater service."})]})]}),t.jsx("button",{onClick:async()=>{if(!Ks){$s(!0);try{await D(),Hs(!1),setTimeout(()=>{window.location.reload()},2e3)}catch{Hs(!1),setTimeout(()=>{window.location.reload()},3e3)}}},disabled:Ks,className:"h-[32px] px-4 bg-accent-secondary/10 hover:bg-accent-secondary/20 text-accent-secondary rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 whitespace-nowrap type-body-sm font-medium",children:Ks?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Restarting..."]}):t.jsxs(t.Fragment,{children:[t.jsx(N,{className:"w-4 h-4"}),"Restart Now"]})})]})})]})]})}),t.jsx(Q,{template:"auto",children:t.jsxs(W,{children:[t.jsx(G,{icon:t.jsx(o,{}),title:"Node Information",largeTitle:!0}),le?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[t.jsxs("div",{children:[t.jsx("span",{className:"type-label text-text-muted",children:"Node Name"}),t.jsx("p",{className:"type-body text-text-primary mt-1",children:he})]}),t.jsxs("div",{children:[t.jsx("span",{className:"type-label text-text-muted",children:"Version"}),t.jsxs("p",{className:"type-data text-text-primary mt-1",children:["v",le.version]})]}),t.jsxs("div",{children:[t.jsx("span",{className:"type-label text-text-muted",children:"Core Version"}),t.jsxs("p",{className:"type-data text-text-primary mt-1",children:["v",le.core_version]})]}),t.jsxs("div",{children:[t.jsx("span",{className:"type-label text-text-muted",children:"Local Hash"}),t.jsx("div",{className:"mt-1",children:le.local_hash?t.jsx(Y,{hash:le.local_hash,size:"sm"}):t.jsx("span",{className:"type-data-sm text-text-muted",children:"N/A"})})]})]}),le.public_key&&t.jsxs("div",{className:"mt-4 pt-4 border-t border-border-subtle",children:[t.jsx("span",{className:"type-label text-text-muted",children:"Public Key"}),t.jsx("div",{className:"mt-1",children:t.jsx(Y,{hash:le.public_key,prefixLength:12,suffixLength:8})})]})]}):t.jsx("p",{className:"text-text-muted",children:"Loading node information..."})]})}),qt&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&Ht(!1),role:"dialog","aria-modal":"true","aria-labelledby":"create-token-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-md w-full shadow-2xl",children:[t.jsx("h3",{id:"create-token-modal-title",className:"type-subheading text-text-primary mb-4",children:"Create API Token"}),t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Token Name"}),t.jsx("input",{type:"text",value:Kt,onChange:e=>$t(e.target.value),placeholder:"e.g., Production Server, CI/CD Pipeline",className:"w-full px-4 py-2 bg-bg-subtle border border-border-subtle rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 transition-colors",onKeyDown:e=>"Enter"===e.key&&sa(),autoFocus:!0}),t.jsx("p",{className:"text-xs text-text-muted mt-1",children:"Give your token a descriptive name to identify its purpose"})]}),t.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[t.jsx("button",{onClick:()=>{Ht(!1),$t(""),Ot(null)},disabled:Gt,className:"px-4 py-2 bg-bg-subtle hover:bg-bg-elevated text-text-secondary rounded-lg border border-border-subtle transition-colors disabled:opacity-50",children:"Cancel"}),t.jsx("button",{onClick:sa,disabled:Gt||!Kt.trim(),className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors disabled:opacity-50 flex items-center gap-2",children:Gt?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Creating..."]}):"Create Token"})]})]})]})}),Vt&&Yt&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&Xt(!1),role:"dialog","aria-modal":"true","aria-labelledby":"show-token-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-lg w-full shadow-2xl",children:[t.jsx("h3",{id:"show-token-modal-title",className:"type-subheading text-text-primary mb-4",children:"Token Created Successfully"}),t.jsxs("div",{className:"space-y-4",children:[t.jsx("div",{className:"bg-accent-secondary/10 border border-accent-secondary/30 rounded-lg p-3",children:t.jsxs("div",{className:"flex gap-2",children:[t.jsx(v,{className:"w-4 h-4 text-accent-secondary flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"text-sm text-text-secondary",children:[t.jsx("strong",{children:"Save this token now!"})," For security reasons, it will not be shown again."]})]})}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Your API Token"}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx("input",{value:Yt,readOnly:!0,className:"flex-1 px-4 py-2 bg-bg-subtle border border-border-subtle rounded-lg text-text-primary font-mono text-sm"}),t.jsxs("button",{onClick:()=>{Yt&&(navigator.clipboard.writeText(Yt),ts(!0),setTimeout(()=>ts(!1),2e3))},className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors flex items-center gap-2",title:"Copy to clipboard",children:[es?t.jsx(l,{className:"w-4 h-4 text-accent-success"}):t.jsx(w,{className:"w-4 h-4"}),es?"Copied!":"Copy"]})]})]}),t.jsxs("div",{className:"bg-accent-tertiary/10 border border-accent-tertiary/30 rounded-lg p-3",children:[t.jsx("p",{className:"text-sm text-text-secondary mb-2",children:t.jsx("strong",{children:"Usage Example:"})}),t.jsxs("code",{className:"block bg-accent-tertiary/20 px-3 py-2 rounded text-xs text-accent-tertiary font-mono overflow-x-auto",children:['curl -H "X-API-Key: ',Yt.slice(0,12),'..." ',window.location.origin,"/api/stats"]})]}),t.jsx("div",{className:"flex justify-end mt-6",children:t.jsx("button",{onClick:()=>{Xt(!1),Ut(null)},className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors",children:"Done"})})]})]})}),t.jsx(U,{isOpen:!!Bt,title:"Revoke API Token",message:`Are you sure you want to revoke the token '${null==Bt?void 0:Bt.name}'? This action cannot be undone.`,confirmLabel:Jt?"Revoking...":"Revoke",cancelLabel:"Cancel",variant:"danger",onConfirm:async()=>{if(Bt){Zt(!0),Ot(null);try{await O(Bt.id),await ta(),Wt(null)}catch(e){Ot(e instanceof Error?e.message:"Failed to revoke token")}finally{Zt(!1)}}},onCancel:()=>Wt(null)}),bs&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&ys(!1),role:"dialog","aria-modal":"true","aria-labelledby":"add-key-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-md w-full shadow-2xl",children:[t.jsx("h3",{id:"add-key-modal-title",className:"type-subheading text-text-primary mb-4",children:"Add Transport Key"}),t.jsxs("div",{className:"space-y-4",children:[ms&&t.jsxs("div",{className:"bg-accent-tertiary/10 border border-accent-tertiary/30 rounded-lg p-3 text-sm text-text-secondary",children:["Adding as child of: ",t.jsx("strong",{className:"text-text-primary",children:ca()})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Key Name"}),t.jsx("input",{type:"text",value:_s,onChange:e=>Ss(e.target.value),placeholder:"e.g., Region Name, Group Key",className:"w-full px-4 py-2 bg-bg-subtle border border-border-subtle rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 transition-colors",onKeyDown:e=>"Enter"===e.key&&oa(),autoFocus:!0})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Flood Policy"}),t.jsxs("div",{className:"flex bg-bg-subtle rounded-lg border border-border-subtle p-1",children:[t.jsx("button",{onClick:()=>Fs("deny"),className:V("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","deny"===Ts?"bg-accent-danger/20 text-accent-danger border border-accent-danger/50":"text-text-muted hover:text-text-secondary"),children:"DENY"}),t.jsx("button",{onClick:()=>Fs("allow"),className:V("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","allow"===Ts?"bg-accent-success/20 text-accent-success border border-accent-success/50":"text-text-muted hover:text-text-secondary"),children:"ALLOW"})]})]}),t.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[t.jsx("button",{onClick:()=>{ys(!1),Ss(""),Fs("deny")},disabled:Es,className:"px-4 py-2 bg-bg-subtle hover:bg-bg-elevated text-text-secondary rounded-lg border border-border-subtle transition-colors disabled:opacity-50",children:"Cancel"}),t.jsx("button",{onClick:oa,disabled:Es||!_s.trim(),className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors disabled:opacity-50 flex items-center gap-2",children:Es?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Adding..."]}):"Add Key"})]})]})]})}),gs&&Ns&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&fs(!1),role:"dialog","aria-modal":"true","aria-labelledby":"edit-key-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-md w-full shadow-2xl",children:[t.jsx("h3",{id:"edit-key-modal-title",className:"type-subheading text-text-primary mb-4",children:"Edit Transport Key"}),t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Key Name"}),t.jsx("input",{type:"text",value:Ns.name,onChange:e=>ws({...Ns,name:e.target.value}),className:"w-full px-4 py-2 bg-bg-subtle border border-border-subtle rounded-lg text-text-primary focus:outline-none focus:ring-2 focus:ring-accent-primary/50 transition-colors",autoFocus:!0})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Flood Policy"}),t.jsxs("div",{className:"flex bg-bg-subtle rounded-lg border border-border-subtle p-1",children:[t.jsx("button",{onClick:()=>ws({...Ns,floodPolicy:"deny"}),className:V("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","deny"===Ns.floodPolicy?"bg-accent-danger/20 text-accent-danger border border-accent-danger/50":"text-text-muted hover:text-text-secondary"),children:"DENY"}),t.jsx("button",{onClick:()=>ws({...Ns,floodPolicy:"allow"}),className:V("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","allow"===Ns.floodPolicy?"bg-accent-success/20 text-accent-success border border-accent-success/50":"text-text-muted hover:text-text-secondary"),children:"ALLOW"})]})]}),Ns.transport_key&&t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Transport Key"}),t.jsx("code",{className:"block bg-bg-subtle px-3 py-2 rounded-lg text-xs text-text-muted font-mono overflow-x-auto",children:Ns.transport_key})]}),t.jsxs("div",{className:"flex justify-between gap-3 mt-6",children:[t.jsx("button",{onClick:()=>{fs(!1),Cs(Ns),vs(!0),ws(null)},disabled:Es,className:"px-4 py-2 bg-accent-danger/20 hover:bg-accent-danger/30 text-accent-danger rounded-lg border border-accent-danger/50 transition-colors disabled:opacity-50",children:"Delete"}),t.jsxs("div",{className:"flex gap-3",children:[t.jsx("button",{onClick:()=>{fs(!1),ws(null)},disabled:Es,className:"px-4 py-2 bg-bg-subtle hover:bg-bg-elevated text-text-secondary rounded-lg border border-border-subtle transition-colors disabled:opacity-50",children:"Cancel"}),t.jsx("button",{onClick:async()=>{if(Ns){Ls(!0),cs(null);try{const e=await K(Ns.id,{name:Ns.name,flood_policy:Ns.floodPolicy});e.success?(await na(),fs(!1),ws(null)):cs(e.error||"Failed to update transport key")}catch(e){cs(e instanceof Error?e.message:"Failed to update transport key")}finally{Ls(!1)}}},disabled:Es||!Ns.name.trim(),className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors disabled:opacity-50 flex items-center gap-2",children:Es?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Saving..."]}):"Save"})]})]})]})]})}),js&&ks&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&vs(!1),role:"dialog","aria-modal":"true","aria-labelledby":"delete-key-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-md w-full shadow-2xl",children:[t.jsx("h3",{id:"delete-key-modal-title",className:"type-subheading text-text-primary mb-4",children:"Delete Transport Key"}),t.jsxs("p",{className:"text-text-secondary mb-4",children:["Are you sure you want to delete ",t.jsxs("strong",{className:"text-text-primary",children:["'",ks.name,"'"]}),"?"]}),ks.children&&ks.children.length>0&&t.jsx("div",{className:"bg-accent-secondary/10 border border-accent-secondary/30 rounded-lg p-3 mb-4",children:t.jsxs("div",{className:"flex gap-2",children:[t.jsx(v,{className:"w-4 h-4 text-accent-secondary flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"text-sm text-text-secondary",children:["This key has ",ks.children.length," child key(s). Deleting will also remove all children."]})]})}),t.jsxs("div",{className:"flex justify-end gap-3",children:[t.jsx("button",{onClick:()=>{vs(!1),Cs(null)},disabled:Es,className:"px-4 py-2 bg-bg-subtle hover:bg-bg-elevated text-text-secondary rounded-lg border border-border-subtle transition-colors disabled:opacity-50",children:"Cancel"}),t.jsx("button",{onClick:async()=>{if(ks){Ls(!0),cs(null);try{const e=await $(ks.id);e.success?(await na(),vs(!1),Cs(null),xs(null)):cs(e.error||"Failed to delete transport key")}catch(e){cs(e instanceof Error?e.message:"Failed to delete transport key")}finally{Ls(!1)}}},disabled:Es,className:"px-4 py-2 bg-accent-danger/20 hover:bg-accent-danger/30 text-accent-danger rounded-lg border border-accent-danger/50 transition-colors disabled:opacity-50 flex items-center gap-2",children:Es?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Deleting..."]}):"Delete"})]})]})})]})}export{ae as default}; +import{r as e,j as t,f as s,i as a,X as r,aq as n,a7 as l,aT as c,aU as i,k as d,p as o,aV as u,ac as m,aW as x,aX as p,aY as h,aL as b,as as y,aZ as g,ag as f,a_ as j,a4 as v,$ as N,W as w,a6 as k,a$ as C}from"./vendor-react-CWPBVwgk.js";import{ac as _,ad as S,ae as T,F,af as E,ag as L,ah as P,ai as R,ab as A,aj as I,ak as M,al as D,am as z,an as O,ao as q,ap as H,aq as K,ar as $}from"./index-BlYVqXhs.js";import{H as Y}from"./HashBadge-Bq5n5xgM.js";import{C as U}from"./ConfirmModal-u7cxXX4i.js";import{c as V}from"./recharts-cqZ_RWsW.js";import{P as X,b as B,a as W,c as G}from"./PageLayout-Kh569_kh.js";import{R as Z,C as J}from"./Grid-CguXkLgY.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";const Q=e.memo(function({showLogoOnly:s=!1,showThumbnailsOnly:a=!1}){const{theme:r,setThemePreset:n,setBrightness:l}=_(),{backgroundImage:c,brightness:i}=r,[d,o]=e.useState(!1),[u,m]=e.useState(!1),x=e.useRef(null),p=e.useRef(null),h=S.find(e=>e.backgroundImage===c)??S[0],b=h.id,y=e.useCallback((e,t)=>{if(!p.current)return i;const s=(p.current.y-e)/(t?200:80)*100;return Math.round(Math.max(0,Math.min(100,p.current.brightness+s)))},[i]),g=e.useCallback(e=>{n(e),o(!0)},[n]),f=e.useCallback(e=>{l(e)},[l]),j=e.useCallback(e=>{const t=S.find(t=>t.id===e);t&&T(t.backgroundImage)},[]);if(s){const e=h.displaySize,s=`clamp(${.8*e}rem, ${.6*e}rem + 1.5vw, ${1.4*e}rem)`;return t.jsx("span",{className:"font-medium transition-all duration-300 leading-none",style:{fontFamily:h.displayFont,color:h.displayColor,fontSize:s,fontOpticalSizing:"auto",letterSpacing:"-0.03em"},children:h.displayName})}return t.jsx("div",{className:"flex gap-2 items-start flex-shrink-0",children:S.map(e=>{const s=b===e.id,a=s&&(d||u);return t.jsxs("div",{ref:s?x:void 0,title:e.displayName,className:V("flex flex-col items-center gap-1 p-0.5 rounded-sm transition-all duration-300 ease-out",s?"ring-2 ring-accent-primary scale-105 cursor-ns-resize":"cursor-pointer"),onMouseEnter:()=>{s?o(!0):j(e.id)},onMouseLeave:()=>!u&&o(!1),onClick:()=>!s&&g(e.id),onTouchStart:e=>{if(!s)return;e.preventDefault();const t=e.touches[0];p.current={y:t.clientY,brightness:i},m(!0),o(!0);const a=e=>{e.preventDefault();const t=e.touches[0];f(y(t.clientY,!0))},r=()=>{document.removeEventListener("touchmove",a),document.removeEventListener("touchend",r),p.current=null,m(!1),setTimeout(()=>o(!1),1500)};document.addEventListener("touchmove",a,{passive:!1}),document.addEventListener("touchend",r)},onMouseDown:e=>{if(!s)return;e.preventDefault(),p.current={y:e.clientY,brightness:i},m(!0),o(!0);const t=e=>{f(y(e.clientY,!1))},a=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",a),p.current=null,m(!1)};document.addEventListener("mousemove",t),document.addEventListener("mouseup",a)},children:[t.jsxs("div",{className:"glass-thumbnail w-10 h-10",children:[t.jsx("div",{className:"absolute bg-cover bg-center transition-opacity duration-200",style:{inset:0,backgroundImage:`url(${e.backgroundImage})`,opacity:a?.4:1}}),s&&t.jsxs("div",{className:V("absolute inset-0 transition-opacity duration-200",a?"opacity-100":"opacity-0"),children:[t.jsx("div",{className:"absolute inset-x-0 bottom-0 bg-black/70 transition-all duration-100 ease-out",style:{height:100-i+"%"}}),t.jsx("div",{className:"absolute inset-x-1 h-0.5 bg-white rounded-full shadow-lg transition-all duration-100 ease-out",style:{top:100-i+"%"}}),t.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:t.jsxs("span",{className:"text-[10px] font-mono font-bold text-white drop-shadow-lg",children:[i,"%"]})})]})]}),t.jsx("div",{className:"flex flex-col gap-0.5",children:e.paletteColors.map((e,s)=>t.jsx("div",{className:"flex gap-0.5 justify-center",children:e.map((e,s)=>t.jsx("div",{className:"w-1.5 h-1.5 rounded-xs",style:{backgroundColor:e}},s))},s))})]},e.id)})})}),ee=[{value:7.8,label:"7.8 kHz"},{value:10.4,label:"10.4 kHz"},{value:15.6,label:"15.6 kHz"},{value:20.8,label:"20.8 kHz"},{value:31.25,label:"31.25 kHz"},{value:41.7,label:"41.7 kHz"},{value:62.5,label:"62.5 kHz"},{value:125,label:"125 kHz"},{value:250,label:"250 kHz"},{value:500,label:"500 kHz"}],te=[5,6,7,8,9,10,11,12],se=[{value:5,label:"4/5"},{value:6,label:"4/6"},{value:7,label:"4/7"},{value:8,label:"4/8"}];function ae(){var _,S,T,ae,re,ne;const{stats:le,setMode:ce,clearModeMutation:ie,setDutyCycleConfig:de,clearDutyCycleMutation:oe,fetchStats:ue}=F(),me=null==(_=null==le?void 0:le.config)?void 0:_.radio,xe=null==(S=null==le?void 0:le.config)?void 0:S.repeater,pe=null==(T=null==le?void 0:le.config)?void 0:T.duty_cycle,he=(null==le?void 0:le.node_name)||(null==(ae=null==le?void 0:le.config)?void 0:ae.node_name)||"Unknown Node",be=(null==xe?void 0:xe.mode)??"forward",ye=(null==pe?void 0:pe.enforcement_enabled)??!1,ge=null==(re=null==le?void 0:le.config)?void 0:re.delays,[fe,je]=e.useState(!1),[ve,Ne]=e.useState(""),[we,ke]=e.useState(62.5),[Ce,_e]=e.useState(7),[Se,Te]=e.useState(5),[Fe,Ee]=e.useState(""),[Le,Pe]=e.useState("idle"),[Re,Ae]=e.useState(null),Ie=e.useRef(null),Me=e.useRef(null),De=e.useRef(null),[ze,Oe]=e.useState("idle"),[qe,He]=e.useState("idle"),[Ke,$e]=e.useState(null),[Ye,Ue]=e.useState(null),Ve=e.useRef(!0),Xe=e.useRef(null),Be=e.useRef(null),We=e.useRef(null),Ge=e.useRef(null),Ze=e.useRef(!1),Je=e.useRef(!1);e.useEffect(()=>(Ve.current=!0,()=>{Ve.current=!1,Xe.current&&clearTimeout(Xe.current),Be.current&&clearTimeout(Be.current),We.current&&clearTimeout(We.current),Ge.current&&clearTimeout(Ge.current),Lt.current&&clearTimeout(Lt.current),Pt.current&&clearTimeout(Pt.current),Me.current&&clearTimeout(Me.current),dt.current&&clearTimeout(dt.current),Ct.current&&clearTimeout(Ct.current)}),[]);const[Qe,et]=e.useState(!1),[tt,st]=e.useState(""),[at,rt]=e.useState(""),[nt,lt]=e.useState(""),[ct,it]=e.useState("idle"),dt=e.useRef(null),[ot,ut]=e.useState(!1),[mt,xt]=e.useState(""),[pt,ht]=e.useState(""),[bt,yt]=e.useState(""),[gt,ft]=e.useState(""),[jt,vt]=e.useState("idle"),[Nt,wt]=e.useState(null),kt=e.useRef(null),Ct=e.useRef(null),_t=null==(ne=null==le?void 0:le.config)?void 0:ne.web,[St,Tt]=e.useState("idle"),[Ft,Et]=e.useState(null),Lt=e.useRef(null),Pt=e.useRef(null),Rt=e.useRef(!1),[At,It]=e.useState([]),[Mt,Dt]=e.useState(!1),[zt,Ot]=e.useState(null),[qt,Ht]=e.useState(!1),[Kt,$t]=e.useState(""),[Yt,Ut]=e.useState(null),[Vt,Xt]=e.useState(!1),[Bt,Wt]=e.useState(null),[Gt,Zt]=e.useState(!1),[Jt,Qt]=e.useState(!1),[es,ts]=e.useState(!1),[ss,as]=e.useState([]),[rs,ns]=e.useState(!1),[ls,cs]=e.useState(null),[is,ds]=e.useState("deny"),[os,us]=e.useState(!1),[ms,xs]=e.useState(null),[ps,hs]=e.useState(new Set),[bs,ys]=e.useState(!1),[gs,fs]=e.useState(!1),[js,vs]=e.useState(!1),[Ns,ws]=e.useState(null),[ks,Cs]=e.useState(null),[_s,Ss]=e.useState(""),[Ts,Fs]=e.useState("deny"),[Es,Ls]=e.useState(!1),[Ps,Rs]=e.useState(!0),[As,Is]=e.useState(!1),[Ms,Ds]=e.useState(!0),[zs,Os]=e.useState("idle"),[qs,Hs]=e.useState(!1),[Ks,$s]=e.useState(!1);e.useEffect(()=>{me&&fe&&(Ne((me.frequency/1e6).toFixed(3)),ke(me.bandwidth/1e3),_e(me.spreading_factor),Te(me.coding_rate),Ee(String(me.tx_power)))},[me,fe]);const Ys=e.useMemo(()=>{if(!me||!fe)return!1;const e=me.frequency/1e6,t=me.bandwidth/1e3,s=parseFloat(ve)||0;return Math.abs(s-e)>1e-4||we!==t||Ce!==me.spreading_factor||Se!==me.coding_rate||parseInt(Fe)!==me.tx_power},[me,fe,ve,we,Ce,Se,Fe]),Us=e.useCallback(()=>{je(!1),Ae(null),me&&(Ne((me.frequency/1e6).toFixed(3)),ke(me.bandwidth/1e3),_e(me.spreading_factor),Te(me.coding_rate),Ee(String(me.tx_power)))},[me]);e.useEffect(()=>{if(!fe)return;const e=e=>{Ie.current&&!Ie.current.contains(e.target)&&Us()};return document.addEventListener("mouseup",e),()=>{document.removeEventListener("mouseup",e)}},[fe,Us]);const Vs=e.useCallback(()=>{const e=null==ge?void 0:ge.tx_delay_factor;return e&&"object"==typeof e&&"parsedValue"in e?e.parsedValue??1:"number"==typeof e?e:1},[ge]),Xs=e.useCallback(()=>{const e=null==ge?void 0:ge.direct_tx_delay_factor;return"number"==typeof e?e:.5},[ge]),Bs=e.useCallback(()=>{const e=null==pe?void 0:pe.max_airtime_percent;return"number"==typeof e?e:e&&"object"==typeof e&&"parsedValue"in e?e.parsedValue??6:6},[pe]),Ws=e.useCallback(()=>{st(Vs().toFixed(2)),rt(Xs().toFixed(2)),lt(Bs().toFixed(1)),et(!0)},[Vs,Xs,Bs]),Gs=e.useCallback(()=>{et(!1)},[]);e.useEffect(()=>{if(!Qe)return;const e=e=>{De.current&&!De.current.contains(e.target)&&Gs()};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[Qe,Gs]);const Zs=e.useCallback(()=>{var e,t,s;xt(he),ht((null==(e=null==xe?void 0:xe.latitude)?void 0:e.toString())||"0"),yt((null==(t=null==xe?void 0:xe.longitude)?void 0:t.toString())||"0"),ft((null==(s=null==xe?void 0:xe.send_advert_interval_hours)?void 0:s.toString())||"0"),wt(null),ut(!0)},[he,xe]),Js=e.useCallback(()=>{ut(!1),wt(null)},[]);e.useEffect(()=>{if(!ot)return;const e=e=>{kt.current&&!kt.current.contains(e.target)&&Js()};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[ot,Js]);const Qs=async()=>{var e;if("loading"===St)return;const t=(null==_t?void 0:_t.cors_enabled)??!1,s=!t,a=t;Lt.current&&clearTimeout(Lt.current),Pt.current&&clearTimeout(Pt.current),Rt.current=!1,Et(s),Tt("loading"),Lt.current=setTimeout(()=>{Rt.current||Ve.current&&(Et(a),Tt("error"),Pt.current=setTimeout(()=>{Ve.current&&(Tt("idle"),Et(null))},2e3))},1e4);try{const t=await I({web:{cors_enabled:s}});if(Rt.current=!0,Lt.current&&clearTimeout(Lt.current),!Ve.current)return;t.success||(null==(e=t.data)?void 0:e.persisted)?(await ue(),Tt("success"),Pt.current=setTimeout(()=>{Ve.current&&(Tt("idle"),Et(null))},2e3)):(Et(a),Tt("error"),Pt.current=setTimeout(()=>{Ve.current&&(Tt("idle"),Et(null))},2e3))}catch{if(Rt.current=!0,Lt.current&&clearTimeout(Lt.current),!Ve.current)return;Et(a),Tt("error"),Pt.current=setTimeout(()=>{Ve.current&&(Tt("idle"),Et(null))},2e3)}};e.useEffect(()=>{(async()=>{Ds(!0);try{const e=await M();e.success&&e.data?Is(e.data.exists):Is(!1);const t=null==_t?void 0:_t.web_path;Rs(!t||""===t)}catch{Is(!1)}finally{Ds(!1)}})()},[null==_t?void 0:_t.web_path]);const ea=async e=>{var t;if("loading"!==zs){Os("loading");try{const s=await I({web:{web_path:e?null:"/opt/pymc_console/web/html"}});if(!Ve.current)return;s.success||(null==(t=s.data)?void 0:t.persisted)?(Rs(e),Os("success"),Hs(!0),setTimeout(()=>{Ve.current&&Os("idle")},2e3)):(Os("error"),setTimeout(()=>{Ve.current&&Os("idle")},2e3))}catch{if(!Ve.current)return;Os("error"),setTimeout(()=>{Ve.current&&Os("idle")},2e3)}}},ta=e.useCallback(async()=>{Dt(!0),Ot(null);try{const e=await E();It(e.tokens||[])}catch(e){Ot(e instanceof Error?e.message:"Failed to fetch tokens")}finally{Dt(!1)}},[]);e.useEffect(()=>{ta()},[ta]);const sa=async()=>{if(Kt.trim()){Zt(!0),Ot(null);try{const e=await z(Kt.trim());Ut(e.token||null),Ht(!1),Xt(!0),$t(""),await ta()}catch(e){Ot(e instanceof Error?e.message:"Failed to create token")}finally{Zt(!1)}}else Ot("Token name is required")},aa=e=>e?new Date(1e3*e).toLocaleString():"Never",ra=e.useCallback(e=>{const t=new Map,s=[];return e.forEach(e=>{const s={id:e.id,name:e.name,floodPolicy:e.flood_policy,transport_key:e.transport_key,last_used:e.last_used,parent_id:e.parent_id,children:[]};t.set(e.id,s)}),t.forEach(e=>{e.parent_id&&t.has(e.parent_id)?t.get(e.parent_id).children.push(e):s.push(e)}),s},[]),na=e.useCallback(async()=>{ns(!0),cs(null);try{const e=await L();e.success&&e.data?as(ra(e.data)):cs(e.error||"Failed to load transport keys")}catch(e){cs(e instanceof Error?e.message:"Unknown error occurred")}finally{ns(!1)}},[ra]);e.useEffect(()=>{na()},[na]);const la=e.useCallback((e,t)=>{for(const s of e){if(s.id===t)return s;if(s.children){const e=la(s.children,t);if(e)return e}}return null},[]),ca=e.useCallback(()=>{if(!ms)return;const e=la(ss,ms);return null==e?void 0:e.name},[ms,ss,la]),ia=e.useCallback(e=>{hs(t=>{const s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),da=async e=>{us(!0),cs(null);try{const t=await q("allow"===e);t.success?ds(e):cs(t.error||"Failed to update global flood policy")}catch(t){cs(t instanceof Error?t.message:"Failed to update global flood policy")}finally{us(!1)}},oa=async()=>{if(_s.trim()){Ls(!0),cs(null);try{const e=await H({name:_s.trim(),flood_policy:Ts,parent_id:ms??void 0});e.success?(await na(),ys(!1),Ss(""),Fs("deny")):cs(e.error||"Failed to add transport key")}catch(e){cs(e instanceof Error?e.message:"Failed to add transport key")}finally{Ls(!1)}}else cs("Key name is required")},ua=e.useCallback(()=>{if(!ms)return;const e=la(ss,ms);e&&(ws({...e}),fs(!0))},[ms,ss,la]);e.useEffect(()=>{const e=e=>{"Escape"===e.key&&(bs&&(ys(!1),Ss(""),Fs("deny")),gs&&(fs(!1),ws(null)),js&&(vs(!1),Cs(null)),qt&&(Ht(!1),$t("")),Vt&&(Xt(!1),Ut(null)))};if(bs||gs||js||qt||Vt)return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[bs,gs,js,qt,Vt]);const ma=e.useCallback(()=>{if(!ms)return;const e=la(ss,ms);e&&(Cs(e),vs(!0))},[ms,ss,la]),xa=({node:e,level:s})=>{const a=ps.has(e.id),r=ms===e.id,n=e.children&&e.children.length>0,l="allow"===is;return t.jsxs("div",{children:[t.jsxs("div",{className:V("flex items-center gap-2 h-[36px] px-3 rounded-full cursor-pointer transition-colors",r?"bg-accent-primary/15":"hover:bg-white/[0.02]",l&&"opacity-50 cursor-not-allowed"),style:{marginLeft:16*s+"px"},onClick:()=>!l&&xs(e.id),children:[n?t.jsx("button",{onClick:t=>{t.stopPropagation(),ia(e.id)},className:"p-1 hover:bg-white/[0.05] rounded-full transition-colors",children:t.jsx(k,{className:V("w-3.5 h-3.5 text-text-muted transition-transform",a&&"rotate-90")})}):t.jsx("span",{className:"w-5"}),t.jsx(C,{className:"w-4 h-4 text-accent-primary flex-shrink-0"}),t.jsx("span",{className:"type-data text-text-primary flex-1 truncate",children:e.name}),t.jsx("span",{className:V("type-data-xs px-2 py-0.5 rounded-full","allow"===e.floodPolicy?"bg-accent-success/15 text-accent-success":"bg-accent-danger/15 text-accent-danger"),children:"allow"===e.floodPolicy?"Allow":"Deny"})]}),n&&a&&t.jsx("div",{children:e.children.map(e=>t.jsx(xa,{node:e,level:s+1},e.id))})]})};return t.jsxs(X,{children:[t.jsx(B,{title:"Configuration",icon:t.jsx(s,{})}),t.jsxs(Z,{template:"standard",children:[t.jsx(J,{span:12,md:6,children:t.jsx(W,{children:t.jsxs("div",{ref:kt,children:[t.jsxs("div",{className:"flex items-center justify-between mb-4",children:[t.jsxs("h2",{className:"type-subheading text-text-primary flex items-center gap-2",children:[t.jsx(a,{className:"icon-md text-accent-primary"}),"Repeater Settings"]}),t.jsx("div",{className:"flex items-center gap-1",children:xe&&(ot?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:Js,disabled:"loading"===jt,className:V("p-2 rounded-lg transition-colors","loading"===jt?"text-text-muted cursor-not-allowed":"text-text-muted hover:text-accent-danger hover:bg-accent-danger/10"),title:"Cancel",children:t.jsx(r,{className:"w-4 h-4"})}),t.jsx("button",{onClick:async()=>{if("loading"!==jt){Ct.current&&clearTimeout(Ct.current),vt("loading"),wt(null);try{const e={};mt&&mt!==he&&(e.node_name=mt);const t=parseFloat(pt);isNaN(t)||t===(null==xe?void 0:xe.latitude)||(e.latitude=t);const s=parseFloat(bt);isNaN(s)||s===(null==xe?void 0:xe.longitude)||(e.longitude=s);const a=parseInt(gt);if(isNaN(a)||a===(null==xe?void 0:xe.send_advert_interval_hours)||(e.flood_advert_interval_hours=a),0===Object.keys(e).length)return wt({success:!0,message:"No changes to save"}),void vt("idle");const r=await A(e);if(!Ve.current)return;if(r.success&&r.data){const e=r.data.applied.join(", ");wt({success:!0,message:`Updated: ${e}`}),await ue(),vt("success"),Ct.current=setTimeout(()=>{Ve.current&&(vt("idle"),ut(!1),wt(null))},1500)}else wt({success:!1,message:r.error||"Failed to save"}),vt("error"),Ct.current=setTimeout(()=>{Ve.current&&vt("idle")},2e3)}catch(e){if(!Ve.current)return;wt({success:!1,message:String(e)}),vt("error"),Ct.current=setTimeout(()=>{Ve.current&&vt("idle")},2e3)}}},disabled:"loading"===jt,className:V("p-2 rounded-lg transition-colors","loading"===jt?"text-accent-primary cursor-wait":"success"===jt?"text-accent-success":"error"===jt?"text-accent-danger":"text-accent-success hover:bg-accent-success/10"),title:"Save changes",children:"loading"===jt?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===jt?t.jsx(l,{className:"w-4 h-4"}):"error"===jt?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:Zs,className:"p-2 rounded-lg transition-colors text-text-muted hover:text-text-primary hover:bg-bg-subtle",title:"Edit repeater settings",children:t.jsx(c,{className:"w-4 h-4"})}))})]}),Nt&&t.jsx("div",{className:V("text-xs mb-3 px-2 py-1.5 rounded-md",Nt.success?"text-accent-success bg-accent-success/10":"text-accent-danger bg-accent-danger/10"),children:Nt.message}),xe?t.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{className:"col-span-2",children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Node Name"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",ot?"bg-white/5":"bg-white/[0.02]"),children:ot?t.jsx("input",{type:"text",value:mt,onChange:e=>xt(e.target.value),maxLength:50,className:"w-full bg-transparent text-text-primary focus:outline-none type-data",placeholder:"Enter node name"}):t.jsx("span",{className:"type-data text-text-primary",children:he})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:ot?"Latitude (°)":"Latitude"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",ot?"bg-white/5":"bg-white/[0.02]"),children:ot?t.jsx("input",{type:"number",value:pt,onChange:e=>ht(e.target.value),step:"0.000001",min:"-90",max:"90",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsx("span",{className:"type-data text-text-primary",children:0!==xe.latitude?xe.latitude.toFixed(6):"Not set"})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:ot?"Longitude (°)":"Longitude"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",ot?"bg-white/5":"bg-white/[0.02]"),children:ot?t.jsx("input",{type:"number",value:bt,onChange:e=>yt(e.target.value),step:"0.000001",min:"-180",max:"180",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsx("span",{className:"type-data text-text-primary",children:0!==xe.longitude?xe.longitude.toFixed(6):"Not set"})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:ot?"Advert Interval (hours)":"Advert Interval"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",ot?"bg-white/5":"bg-white/[0.02]"),children:ot?t.jsx("input",{type:"number",value:gt,onChange:e=>ft(e.target.value),min:"0",max:"48",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsx("span",{className:"type-data text-text-primary",children:xe.send_advert_interval_hours>0?`${xe.send_advert_interval_hours}h`:"Disabled"})}),ot&&t.jsx("p",{className:"type-data-xs text-text-muted mt-1 ml-4",children:"0 = disabled, 3-48 hours"})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Score-based TX"}),t.jsx("div",{className:"h-[38px] rounded-full px-4 flex items-center bg-white/[0.02]",children:t.jsx("span",{className:"type-data text-text-primary",children:xe.use_score_for_tx?"Enabled":"Disabled"})})]})]}):t.jsx("p",{className:"text-text-muted",children:"Loading repeater settings..."})]})})}),t.jsx(J,{span:12,md:6,children:t.jsx(W,{children:t.jsxs("div",{ref:Ie,children:[t.jsxs("div",{className:"flex items-center justify-between mb-4",children:[t.jsxs("h2",{className:"type-subheading text-text-primary flex items-center gap-2",children:[t.jsx(i,{className:"icon-md text-accent-primary"}),"Radio Configuration"]}),t.jsx("div",{className:"flex items-center gap-1",children:me&&(fe?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:Us,disabled:"loading"===Le,className:V("p-2 rounded-lg transition-colors","loading"===Le?"text-text-muted cursor-not-allowed":"text-text-muted hover:text-accent-danger hover:bg-accent-danger/10"),title:"Cancel",children:t.jsx(r,{className:"w-4 h-4"})}),t.jsx("button",{onClick:async()=>{if("loading"!==Le){Me.current&&clearTimeout(Me.current),Pe("loading"),Ae(null);try{const e={},t=parseFloat(ve),s=me?me.frequency/1e6:0;Math.abs(t-s)>1e-4&&(e.frequency_mhz=t);const a=me?me.bandwidth/1e3:0;we!==a&&(e.bandwidth_khz=we),Ce!==(null==me?void 0:me.spreading_factor)&&(e.spreading_factor=Ce),Se!==(null==me?void 0:me.coding_rate)&&(e.coding_rate=Se);const r=parseInt(Fe);if(r!==(null==me?void 0:me.tx_power)&&(e.tx_power=r),0===Object.keys(e).length)return Ae({success:!0,message:"No changes to save"}),void Pe("idle");const n=await A(e);if(!Ve.current)return;if(n.success&&n.data){const e=n.data.applied.join(", "),t=n.data.live_update?" (applied live)":" (restart required)";Ae({success:!0,message:`Updated: ${e}${t}`}),await ue(),Pe("success"),Me.current=setTimeout(()=>{Ve.current&&(Pe("idle"),je(!1),Ae(null))},1500)}else Ae({success:!1,message:n.error||"Failed to save"}),Pe("error"),Me.current=setTimeout(()=>{Ve.current&&Pe("idle")},2e3)}catch(e){if(!Ve.current)return;Ae({success:!1,message:String(e)}),Pe("error"),Me.current=setTimeout(()=>{Ve.current&&Pe("idle")},2e3)}}},disabled:"loading"===Le||!Ys,className:V("p-2 rounded-lg transition-colors","loading"===Le?"text-accent-primary cursor-wait":"success"===Le?"text-accent-success":"error"===Le?"text-accent-danger":Ys?"text-accent-success hover:bg-accent-success/10":"text-text-muted cursor-not-allowed"),title:Ys?"Save changes":"No changes to save",children:"loading"===Le?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===Le?t.jsx(l,{className:"w-4 h-4"}):"error"===Le?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:()=>{me&&(Ne((me.frequency/1e6).toFixed(3)),ke(me.bandwidth/1e3),_e(me.spreading_factor),Te(me.coding_rate),Ee(String(me.tx_power))),Ae(null),je(!0)},className:"p-2 rounded-lg transition-colors text-text-muted hover:text-text-primary hover:bg-bg-subtle",title:"Edit radio settings",children:t.jsx(c,{className:"w-4 h-4"})}))})]}),Re&&t.jsx("div",{className:V("text-xs mb-3 px-2 py-1.5 rounded-md",Re.success?"text-accent-success bg-accent-success/10":"text-accent-danger bg-accent-danger/10"),children:Re.message}),me?t.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:fe?"Frequency (MHz)":"Frequency"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsx("input",{type:"number",value:ve,onChange:e=>Ne(e.target.value),step:"0.001",min:"400",max:"930",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsx("span",{className:"type-data text-text-primary",children:P(me.frequency)})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:fe?"TX Power (dBm)":"TX Power"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsx("input",{type:"number",value:Fe,onChange:e=>Ee(e.target.value),min:"-9",max:"22",className:"w-full bg-transparent text-text-primary focus:outline-none type-data"}):t.jsxs("span",{className:"type-data text-text-primary",children:[me.tx_power," dBm"]})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Bandwidth"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors relative",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:we,onChange:e=>ke(parseFloat(e.target.value)),className:"w-full bg-transparent text-text-primary focus:outline-none appearance-none cursor-pointer type-data pr-6",children:ee.map(e=>t.jsx("option",{value:e.value,children:e.label},e.value))}),t.jsx(d,{className:"absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted pointer-events-none"})]}):t.jsx("span",{className:"type-data text-text-primary",children:R(me.bandwidth)})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Spreading Factor"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors relative",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Ce,onChange:e=>_e(parseInt(e.target.value)),className:"w-full bg-transparent text-text-primary focus:outline-none appearance-none cursor-pointer type-data pr-6",children:te.map(e=>t.jsxs("option",{value:e,children:["SF",e]},e))}),t.jsx(d,{className:"absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted pointer-events-none"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:["SF",me.spreading_factor]})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Coding Rate"}),t.jsx("div",{className:V("h-[38px] rounded-full px-4 flex items-center transition-colors relative",fe?"bg-white/5":"bg-white/[0.02]"),children:fe?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Se,onChange:e=>Te(parseInt(e.target.value)),className:"w-full bg-transparent text-text-primary focus:outline-none appearance-none cursor-pointer type-data pr-6",children:se.map(e=>t.jsx("option",{value:e.value,children:e.label},e.value))}),t.jsx(d,{className:"absolute right-4 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted pointer-events-none"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:["4/",me.coding_rate]})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Preamble"}),t.jsx("div",{className:"h-[38px] rounded-full px-4 flex items-center bg-white/[0.02]",children:t.jsxs("span",{className:"type-data text-text-primary",children:[me.preamble_length," symbols"]})})]})]}):t.jsx("p",{className:"text-text-muted",children:"Loading radio configuration..."})]})})})]}),t.jsxs(Z,{template:"standard",children:[t.jsx(J,{span:12,md:6,children:t.jsx(W,{children:t.jsxs("div",{ref:De,children:[t.jsxs("div",{className:"flex items-center justify-between mb-3",children:[t.jsxs("h2",{className:"type-subheading text-text-primary flex items-center gap-3",children:[t.jsx(o,{className:"icon-md text-icon-card-title"}),"Operating Mode"]}),t.jsx("div",{className:"flex items-center gap-1",children:Qe?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"!==ct){dt.current&&clearTimeout(dt.current),it("loading");try{const e=await A({tx_delay_factor:parseFloat(tt),direct_tx_delay_factor:parseFloat(at)});if(await de({max_airtime_percent:parseFloat(nt),enforcement_enabled:ye}),!Ve.current)return;e.success&&e.data?(await ue(),it("success"),dt.current=setTimeout(()=>{Ve.current&&(it("idle"),et(!1))},1500)):(it("error"),dt.current=setTimeout(()=>{Ve.current&&it("idle")},2e3))}catch{if(!Ve.current)return;it("error"),dt.current=setTimeout(()=>{Ve.current&&it("idle")},2e3)}}},disabled:"loading"===ct,className:V("p-2 rounded-lg transition-colors","loading"===ct?"text-accent-primary cursor-wait":"success"===ct?"text-accent-success":"error"===ct?"text-accent-danger":"text-accent-success hover:bg-accent-success/10"),title:"Save",children:"loading"===ct?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===ct?t.jsx(l,{className:"w-4 h-4"}):"error"===ct?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})}),t.jsx("button",{onClick:Gs,className:"p-2 rounded-lg text-text-muted hover:text-accent-danger hover:bg-accent-danger/10",title:"Cancel",children:t.jsx(r,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:Ws,className:"p-2 rounded-lg transition-colors text-text-muted hover:text-text-primary hover:bg-bg-subtle",title:"Edit settings",children:t.jsx(c,{className:"w-4 h-4"})})})]}),t.jsx("p",{className:"type-label text-text-muted mb-3",children:"Control how the repeater handles packets"}),t.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[t.jsxs("div",{className:"flex-1 space-y-4",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("label",{className:"type-label text-text-muted",children:"Repeat"}),t.jsx("div",{className:"flex items-center gap-2",children:(()=>{const e=null!==Ke?Ke:"forward"===be;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"===ze)return;const t=!e,s="forward"===be;Xe.current&&clearTimeout(Xe.current),Be.current&&clearTimeout(Be.current),Ze.current=!1,$e(t),Oe("loading"),Xe.current=setTimeout(()=>{Ze.current||Ve.current&&($e(s),Oe("error"),Be.current=setTimeout(()=>{Ve.current&&(Oe("idle"),$e(null))},2e3))},1e4);try{if(await ce(t?"forward":"monitor"),Ze.current=!0,Xe.current&&clearTimeout(Xe.current),!Ve.current)return;Oe("success"),Be.current=setTimeout(()=>{Ve.current&&(Oe("idle"),$e(null),ie())},2e3)}catch{if(Ze.current=!0,Xe.current&&clearTimeout(Xe.current),!Ve.current)return;$e(s),Oe("error"),Be.current=setTimeout(()=>{Ve.current&&(Oe("idle"),$e(null))},2e3)}},disabled:"loading"===ze,className:V("relative inline-flex h-6 w-11 items-center rounded-full transition-colors border-2",e?"bg-toggle-on border-toggle-on":"bg-toggle-off border-border-subtle","loading"===ze&&"opacity-70"),"aria-label":"Toggle forward mode",children:t.jsx("span",{className:V("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",e?"translate-x-5":"translate-x-0.5")})}),t.jsx("span",{className:V("type-data text-sm w-7",e?"text-accent-success":"text-text-muted"),children:e?"On":"Off"}),"loading"===ze&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===ze&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===ze&&t.jsx(r,{className:"w-4 h-4 text-accent-danger"})]})})()})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("label",{className:"type-label text-text-muted",children:"Duty Cycle"}),t.jsx("div",{className:"flex items-center gap-2",children:(()=>{const e=null!==Ye?Ye:ye;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"===qe)return;const t=!e,s=ye;We.current&&clearTimeout(We.current),Ge.current&&clearTimeout(Ge.current),Je.current=!1,Ue(t),He("loading"),We.current=setTimeout(()=>{Je.current||Ve.current&&(Ue(s),He("error"),Ge.current=setTimeout(()=>{Ve.current&&(He("idle"),Ue(null))},2e3))},1e4);try{if(await de({max_airtime_percent:Bs(),enforcement_enabled:t}),Je.current=!0,We.current&&clearTimeout(We.current),!Ve.current)return;He("success"),Ge.current=setTimeout(()=>{Ve.current&&(He("idle"),Ue(null),oe())},2e3)}catch{if(Je.current=!0,We.current&&clearTimeout(We.current),!Ve.current)return;Ue(s),He("error"),Ge.current=setTimeout(()=>{Ve.current&&(He("idle"),Ue(null))},2e3)}},disabled:"loading"===qe,className:V("relative inline-flex h-6 w-11 items-center rounded-full transition-colors border-2",e?"bg-toggle-on border-toggle-on":"bg-toggle-off border-border-subtle","loading"===qe&&"opacity-70"),"aria-label":"Toggle duty cycle",children:t.jsx("span",{className:V("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",e?"translate-x-5":"translate-x-0.5")})}),t.jsx("span",{className:V("type-data text-sm w-7",e?"text-accent-success":"text-text-muted"),children:e?"On":"Off"}),"loading"===qe&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===qe&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===qe&&t.jsx(r,{className:"w-4 h-4 text-accent-danger"})]})})()})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("label",{className:"type-label text-text-muted",children:"Max Airtime"}),t.jsx("div",{className:V("h-[32px] rounded-full px-3 flex items-center justify-end transition-colors min-w-[80px]",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("input",{type:"number",value:nt,onChange:e=>lt(e.target.value),step:"0.5",min:"0.1",max:"100",className:"w-12 bg-transparent text-text-primary text-right focus:outline-none type-data"}),t.jsx("span",{className:"text-text-muted type-data",children:"%"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:[Bs().toFixed(1),"%"]})})]})]}),t.jsx("div",{className:"hidden sm:block w-px bg-border-subtle"}),t.jsxs("div",{className:"flex-1 pt-4 sm:pt-0 border-t sm:border-t-0 border-border-subtle",children:[t.jsx("label",{className:"type-label text-text-muted block mb-3",children:"TX Delays"}),t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"type-label text-text-muted",children:"Flood"}),t.jsx("div",{className:V("h-[32px] rounded-full px-3 flex items-center justify-end transition-colors min-w-[80px]",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("input",{type:"number",value:tt,onChange:e=>st(e.target.value),step:"0.1",min:"0",max:"5",className:"w-12 bg-transparent text-text-primary text-right focus:outline-none type-data"}),t.jsx("span",{className:"text-text-muted type-data",children:"x"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:[Vs().toFixed(2),"x"]})})]}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"type-label text-text-muted",children:"Direct"}),t.jsx("div",{className:V("h-[32px] rounded-full px-3 flex items-center justify-end transition-colors min-w-[80px]",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("input",{type:"number",value:at,onChange:e=>rt(e.target.value),step:"0.1",min:"0",max:"5",className:"w-12 bg-transparent text-text-primary text-right focus:outline-none type-data"}),t.jsx("span",{className:"text-text-muted type-data",children:"s"})]}):t.jsxs("span",{className:"type-data text-text-primary",children:[Xs().toFixed(2),"s"]})})]})]})]})]})]})})}),t.jsx(J,{span:12,md:6,children:t.jsxs(W,{children:[t.jsx(G,{icon:t.jsx(s,{}),title:"App Settings",largeTitle:!0}),t.jsx("p",{className:"type-body-sm text-text-muted mb-4",children:"Appearance and web server options."}),t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsxs("div",{children:[t.jsx("span",{className:"type-body text-text-primary font-medium block",children:"Enable CORS"}),t.jsx("span",{className:"type-body-sm text-text-muted",children:"Allow cross-origin API access"})]}),t.jsx("div",{className:"flex items-center gap-2",children:(()=>{const e=null!==Ft?Ft:(null==_t?void 0:_t.cors_enabled)??!1;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:Qs,disabled:"loading"===St,className:V("relative inline-flex h-6 w-11 items-center rounded-full transition-colors border-2",e?"bg-toggle-on border-toggle-on":"bg-toggle-off border-border-subtle","loading"===St&&"opacity-70"),title:e?"Disable CORS":"Enable CORS",children:t.jsx("span",{className:V("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",e?"translate-x-5":"translate-x-0.5")})}),"loading"===St&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===St&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===St&&t.jsx(r,{className:"w-4 h-4 text-accent-danger"})]})})()})]}),t.jsxs("div",{children:[t.jsx("span",{className:"type-body text-text-primary font-medium block mb-2",children:"Theme"}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsx(Q,{showLogoOnly:!0})}),t.jsx("div",{className:"flex-shrink-0",children:t.jsx(Q,{showThumbnailsOnly:!0})})]})]})]})]})})]}),t.jsx(Z,{template:"auto",children:t.jsxs(W,{children:[t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:[t.jsxs("div",{children:[t.jsxs("h2",{className:"type-heading text-text-primary flex items-center gap-2",children:[t.jsx(u,{className:"icon-md text-accent-primary"}),"Regions / Transport Keys"]}),t.jsx("p",{className:"type-body-sm text-text-muted mt-1",children:"Manage regional key hierarchy for flood control"})]}),t.jsxs("div",{className:"flex gap-2 flex-wrap",children:[t.jsxs("button",{onClick:()=>ys(!0),disabled:"allow"===is,className:V("flex items-center gap-1.5 h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium","allow"===is?"bg-white/[0.02] text-text-muted cursor-not-allowed":"bg-accent-success/10 hover:bg-accent-success/20 text-accent-success"),children:[t.jsx(m,{className:"w-3.5 h-3.5"}),"Add"]}),t.jsx("button",{onClick:ua,disabled:!ms||"allow"===is,className:V("h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium",ms&&"allow"!==is?"bg-accent-primary/10 hover:bg-accent-primary/20 text-accent-primary":"bg-white/[0.02] text-text-muted cursor-not-allowed"),children:"Edit"}),t.jsx("button",{onClick:ma,disabled:!ms||"allow"===is,className:V("h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium",ms&&"allow"!==is?"bg-accent-danger/10 hover:bg-accent-danger/20 text-accent-danger":"bg-white/[0.02] text-text-muted cursor-not-allowed"),children:"Delete"})]})]}),t.jsx("div",{className:"bg-white/[0.02] rounded-2xl p-4 mb-4",children:t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:V("w-10 h-10 rounded-full flex items-center justify-center","allow"===is?"bg-accent-success/20":"bg-accent-danger/20"),children:"allow"===is?t.jsx(x,{className:"w-5 h-5 text-accent-success"}):t.jsx(p,{className:"w-5 h-5 text-accent-danger"})}),t.jsxs("div",{children:[t.jsx("h4",{className:"type-body text-text-primary font-medium",children:"Global Flood Policy"}),t.jsx("p",{className:"type-body-sm text-text-muted",children:"Master control for repeater flooding"})]})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs("div",{className:"flex bg-white/[0.02] rounded-full p-1",children:[t.jsx("button",{onClick:()=>da("deny"),disabled:os,className:V("px-4 py-1.5 rounded-full transition-colors type-body-sm font-medium","deny"===is?"bg-accent-danger/20 text-accent-danger":"text-text-muted hover:text-text-secondary",os&&"opacity-50"),children:"Deny"}),t.jsx("button",{onClick:()=>da("allow"),disabled:os,className:V("px-4 py-1.5 rounded-full transition-colors type-body-sm font-medium","allow"===is?"bg-accent-success/20 text-accent-success":"text-text-muted hover:text-text-secondary",os&&"opacity-50"),children:"Allow"})]}),os&&t.jsx(n,{className:"w-4 h-4 animate-spin text-text-muted"})]})]})}),ls&&t.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-accent-danger bg-accent-danger/10",children:ls}),t.jsx("div",{className:"bg-white/[0.02] rounded-2xl p-4 min-h-[120px]",children:rs?t.jsxs("div",{className:"flex items-center justify-center py-6",children:[t.jsx(n,{className:"w-5 h-5 animate-spin text-accent-primary mr-2"}),t.jsx("span",{className:"type-body-sm text-text-muted",children:"Loading transport keys..."})]}):0===ss.length?t.jsxs("div",{className:"text-center py-6",children:[t.jsx("div",{className:"w-12 h-12 rounded-full bg-white/[0.02] mx-auto mb-3 flex items-center justify-center",children:t.jsx(u,{className:"w-6 h-6 text-text-muted/50"})}),t.jsx("p",{className:"type-body text-text-muted",children:"No transport keys found"}),t.jsx("p",{className:"type-body-sm text-text-muted/70 mt-1",children:"Add your first transport key to get started"})]}):t.jsx("div",{className:"space-y-1",children:ss.map(e=>t.jsx(xa,{node:e,level:0},e.id))})})]})}),t.jsx(Z,{template:"auto",children:t.jsxs(W,{children:[t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:[t.jsxs("div",{children:[t.jsxs("h2",{className:"type-heading text-text-primary flex items-center gap-2",children:[t.jsx(h,{className:"icon-md text-accent-primary"}),"API Tokens"]}),t.jsx("p",{className:"type-body-sm text-text-muted mt-1",children:"Manage API tokens for machine-to-machine authentication"})]}),t.jsxs("button",{onClick:()=>Ht(!0),className:"flex items-center justify-center gap-2 h-[32px] px-4 bg-accent-primary/10 hover:bg-accent-primary/20 text-accent-primary rounded-full transition-colors type-body-sm font-medium",children:[t.jsx(m,{className:"w-4 h-4"}),"Create Token"]})]}),t.jsx("div",{className:"bg-accent-tertiary/5 rounded-2xl p-4 mb-4",children:t.jsxs("div",{className:"flex gap-3",children:[t.jsx("div",{className:"w-8 h-8 rounded-full bg-accent-tertiary/20 flex items-center justify-center flex-shrink-0",children:t.jsx(b,{className:"w-4 h-4 text-accent-tertiary"})}),t.jsxs("div",{className:"type-body-sm text-text-muted",children:[t.jsxs("p",{children:[t.jsx("span",{className:"text-text-secondary",children:"API tokens"})," are used for machine-to-machine authentication. Include the token in the ",t.jsx("code",{className:"type-code bg-accent-tertiary/20 px-1.5 py-0.5 rounded-full text-accent-tertiary",children:"X-API-Key"})," header when making API requests."]}),t.jsx("p",{className:"mt-1 text-text-muted/70",children:"Tokens are only shown once at creation. Store them securely."})]})]})}),zt&&t.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-accent-danger bg-accent-danger/10",children:zt}),Mt&&0===At.length?t.jsxs("div",{className:"flex items-center justify-center py-6",children:[t.jsx(n,{className:"w-5 h-5 animate-spin text-accent-primary mr-2"}),t.jsx("span",{className:"type-body-sm text-text-muted",children:"Loading tokens..."})]}):At.length>0?t.jsx("div",{className:"space-y-2",children:At.map(e=>t.jsx("div",{className:"bg-white/[0.02] hover:bg-white/[0.04] rounded-2xl p-4 transition-colors",children:t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[t.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[t.jsx("div",{className:"w-10 h-10 rounded-full bg-accent-primary/10 flex items-center justify-center flex-shrink-0",children:t.jsx(h,{className:"w-5 h-5 text-accent-primary"})}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("h3",{className:"type-body text-text-primary font-medium truncate",children:e.name}),t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:gap-4 mt-0.5",children:[t.jsxs("span",{className:"type-data-sm text-text-muted truncate",children:["Created: ",aa(e.created_at)]}),t.jsxs("span",{className:"type-data-sm text-text-muted truncate",children:["Last used: ",aa(e.last_used)]})]})]})]}),t.jsxs("button",{onClick:()=>Wt({id:e.id,name:e.name}),disabled:Jt,className:"h-[32px] px-4 bg-accent-danger/10 hover:bg-accent-danger/20 text-accent-danger rounded-full transition-colors disabled:opacity-50 type-body-sm font-medium flex items-center justify-center gap-1.5",children:[t.jsx(y,{className:"w-3.5 h-3.5"}),"Revoke"]})]})},e.id))}):t.jsxs("div",{className:"bg-white/[0.02] rounded-2xl p-6 text-center",children:[t.jsx("div",{className:"w-14 h-14 rounded-full bg-white/[0.02] mx-auto mb-4 flex items-center justify-center",children:t.jsx(h,{className:"w-7 h-7 text-text-muted/50"})}),t.jsx("h3",{className:"type-body text-text-primary font-medium mb-1",children:"No API Tokens"}),t.jsx("p",{className:"type-body-sm text-text-muted mb-4",children:"Create a token to enable API access"}),t.jsx("button",{onClick:()=>Ht(!0),className:"h-[32px] px-4 bg-accent-primary/10 hover:bg-accent-primary/20 text-accent-primary rounded-full transition-colors type-body-sm font-medium",children:"Create Your First Token"})]})]})}),t.jsx(Z,{template:"auto",children:t.jsxs(W,{children:[t.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:t.jsxs("div",{children:[t.jsxs("h2",{className:"type-heading text-text-primary flex items-center gap-2",children:[t.jsx(g,{className:"icon-md text-accent-primary"}),"Web Frontend"]}),t.jsx("p",{className:"type-body-sm text-text-muted mt-1",children:"Choose which web interface to use"})]})}),t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{className:"space-y-3",children:[t.jsxs("label",{className:V("flex items-start gap-3 p-4 bg-white/[0.02] rounded-2xl border-2 cursor-pointer transition-all",Ps?"border-accent-primary bg-accent-primary/5":"border-transparent hover:border-accent-primary/30","loading"===zs&&"opacity-50 pointer-events-none"),children:[t.jsx("input",{type:"radio",name:"frontend",checked:Ps,onChange:()=>ea(!0),disabled:"loading"===zs,className:"mt-1 h-4 w-4 text-accent-primary focus:ring-accent-primary focus:ring-offset-bg-elevated"}),t.jsxs("div",{className:"flex-1",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("div",{className:"type-body text-text-primary font-medium",children:"Default Frontend"}),t.jsx("a",{href:"https://github.com/rightup/pyMC_Repeater",target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),className:"type-data-xs bg-accent-tertiary/15 text-accent-tertiary px-2.5 py-0.5 rounded-full font-medium hover:bg-accent-tertiary/25 transition-colors",children:"@RightUp"})]}),t.jsx("div",{className:"type-body-sm text-text-muted mt-1",children:"Built-in pyMC Repeater web interface"}),t.jsx("div",{className:"type-data-xs text-text-muted/60 mt-1 font-mono",children:"/opt/pymc_repeater/repeater/web/html"})]})]}),t.jsxs("label",{className:V("flex items-start gap-3 p-4 bg-white/[0.02] rounded-2xl border-2 cursor-pointer transition-all",Ps?"border-transparent hover:border-accent-primary/30":"border-accent-primary bg-accent-primary/5","loading"===zs&&"opacity-50 pointer-events-none"),children:[t.jsx("input",{type:"radio",name:"frontend",checked:!Ps,onChange:()=>ea(!1),disabled:"loading"===zs,className:"mt-1 h-4 w-4 text-accent-primary focus:ring-accent-primary focus:ring-offset-bg-elevated"}),t.jsxs("div",{className:"flex-1",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("div",{className:"type-body text-text-primary font-medium",children:"PyMC Console"}),t.jsx("span",{className:"type-data-xs bg-accent-secondary/15 text-accent-secondary px-2.5 py-0.5 rounded-full font-medium",children:"@Treehouse ⚡"})]}),t.jsx("div",{className:"type-body-sm text-text-muted mt-1",children:"Alternative web interface for pyMC Repeater"}),t.jsx("div",{className:"type-data-xs text-text-muted/60 mt-1 font-mono",children:"/opt/pymc_console/web/html"})]})]})]}),!Ms&&t.jsx("div",{className:V("bg-white/[0.02] rounded-2xl p-4",As?"border border-accent-success/20":"border border-accent-tertiary/20"),children:t.jsxs("div",{className:"flex items-start gap-3",children:[t.jsx("div",{className:V("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0",As?"bg-accent-success/20":"bg-accent-tertiary/20"),children:As?t.jsx(f,{className:"w-4 h-4 text-accent-success"}):t.jsx(b,{className:"w-4 h-4 text-accent-tertiary"})}),t.jsxs("div",{className:"flex-1",children:[t.jsx("h4",{className:"type-body text-text-primary font-medium",children:As?"PyMC Console has been detected":"PyMC Console Not Installed"}),As?t.jsxs("p",{className:"type-body-sm text-text-muted mt-1",children:["PyMC Console is installed at ",t.jsx("code",{className:"type-code bg-accent-success/10 px-1.5 py-0.5 rounded-full text-accent-success",children:"/opt/pymc_console/web/html"})]}):t.jsxs(t.Fragment,{children:[t.jsxs("p",{className:"type-body-sm text-text-muted mt-1 mb-3",children:["PyMC Console must be installed at ",t.jsx("code",{className:"type-code bg-accent-tertiary/10 px-1.5 py-0.5 rounded-full text-accent-tertiary",children:"/opt/pymc_console/web/html"})," before selecting this option."]}),t.jsxs("a",{href:"https://github.com/dmduran12/pymc_console-dist",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 h-[32px] px-4 bg-accent-tertiary/10 hover:bg-accent-tertiary/20 text-accent-tertiary rounded-full type-body-sm font-medium transition-colors",children:[t.jsx(j,{className:"w-4 h-4"}),"PyMC Console Install Instructions"]})]})]})]})}),qs&&t.jsx("div",{className:"bg-white/[0.02] rounded-2xl p-4 border border-accent-secondary/30",children:t.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[t.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[t.jsx("div",{className:"w-8 h-8 rounded-full bg-accent-secondary/20 flex items-center justify-center flex-shrink-0",children:t.jsx(v,{className:"w-4 h-4 text-accent-secondary"})}),t.jsxs("div",{className:"flex-1",children:[t.jsx("h4",{className:"type-body text-text-primary font-medium",children:"Service restart required"}),t.jsx("p",{className:"type-body-sm text-text-muted mt-1",children:"Web frontend changes will take effect after restarting the pymc-repeater service."})]})]}),t.jsx("button",{onClick:async()=>{if(!Ks){$s(!0);try{await D(),Hs(!1),setTimeout(()=>{window.location.reload()},2e3)}catch{Hs(!1),setTimeout(()=>{window.location.reload()},3e3)}}},disabled:Ks,className:"h-[32px] px-4 bg-accent-secondary/10 hover:bg-accent-secondary/20 text-accent-secondary rounded-full transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 whitespace-nowrap type-body-sm font-medium",children:Ks?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Restarting..."]}):t.jsxs(t.Fragment,{children:[t.jsx(N,{className:"w-4 h-4"}),"Restart Now"]})})]})})]})]})}),t.jsx(Z,{template:"auto",children:t.jsxs(W,{children:[t.jsx(G,{icon:t.jsx(o,{}),title:"Node Information",largeTitle:!0}),le?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[t.jsxs("div",{children:[t.jsx("span",{className:"type-label text-text-muted",children:"Node Name"}),t.jsx("p",{className:"type-body text-text-primary mt-1",children:he})]}),t.jsxs("div",{children:[t.jsx("span",{className:"type-label text-text-muted",children:"Version"}),t.jsxs("p",{className:"type-data text-text-primary mt-1",children:["v",le.version]})]}),t.jsxs("div",{children:[t.jsx("span",{className:"type-label text-text-muted",children:"Core Version"}),t.jsxs("p",{className:"type-data text-text-primary mt-1",children:["v",le.core_version]})]}),t.jsxs("div",{children:[t.jsx("span",{className:"type-label text-text-muted",children:"Local Hash"}),t.jsx("div",{className:"mt-1",children:le.local_hash?t.jsx(Y,{hash:le.local_hash,size:"sm"}):t.jsx("span",{className:"type-data-sm text-text-muted",children:"N/A"})})]})]}),le.public_key&&t.jsxs("div",{className:"mt-4 pt-4 border-t border-border-subtle",children:[t.jsx("span",{className:"type-label text-text-muted",children:"Public Key"}),t.jsx("div",{className:"mt-1",children:t.jsx(Y,{hash:le.public_key,prefixLength:12,suffixLength:8})})]})]}):t.jsx("p",{className:"text-text-muted",children:"Loading node information..."})]})}),qt&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&Ht(!1),role:"dialog","aria-modal":"true","aria-labelledby":"create-token-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-md w-full shadow-2xl",children:[t.jsx("h3",{id:"create-token-modal-title",className:"type-subheading text-text-primary mb-4",children:"Create API Token"}),t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Token Name"}),t.jsx("input",{type:"text",value:Kt,onChange:e=>$t(e.target.value),placeholder:"e.g., Production Server, CI/CD Pipeline",className:"w-full px-4 py-2 bg-bg-subtle border border-border-subtle rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 transition-colors",onKeyDown:e=>"Enter"===e.key&&sa(),autoFocus:!0}),t.jsx("p",{className:"text-xs text-text-muted mt-1",children:"Give your token a descriptive name to identify its purpose"})]}),t.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[t.jsx("button",{onClick:()=>{Ht(!1),$t(""),Ot(null)},disabled:Gt,className:"px-4 py-2 bg-bg-subtle hover:bg-bg-elevated text-text-secondary rounded-lg border border-border-subtle transition-colors disabled:opacity-50",children:"Cancel"}),t.jsx("button",{onClick:sa,disabled:Gt||!Kt.trim(),className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors disabled:opacity-50 flex items-center gap-2",children:Gt?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Creating..."]}):"Create Token"})]})]})]})}),Vt&&Yt&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&Xt(!1),role:"dialog","aria-modal":"true","aria-labelledby":"show-token-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-lg w-full shadow-2xl",children:[t.jsx("h3",{id:"show-token-modal-title",className:"type-subheading text-text-primary mb-4",children:"Token Created Successfully"}),t.jsxs("div",{className:"space-y-4",children:[t.jsx("div",{className:"bg-accent-secondary/10 border border-accent-secondary/30 rounded-lg p-3",children:t.jsxs("div",{className:"flex gap-2",children:[t.jsx(v,{className:"w-4 h-4 text-accent-secondary flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"text-sm text-text-secondary",children:[t.jsx("strong",{children:"Save this token now!"})," For security reasons, it will not be shown again."]})]})}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Your API Token"}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx("input",{value:Yt,readOnly:!0,className:"flex-1 px-4 py-2 bg-bg-subtle border border-border-subtle rounded-lg text-text-primary font-mono text-sm"}),t.jsxs("button",{onClick:()=>{Yt&&(navigator.clipboard.writeText(Yt),ts(!0),setTimeout(()=>ts(!1),2e3))},className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors flex items-center gap-2",title:"Copy to clipboard",children:[es?t.jsx(l,{className:"w-4 h-4 text-accent-success"}):t.jsx(w,{className:"w-4 h-4"}),es?"Copied!":"Copy"]})]})]}),t.jsxs("div",{className:"bg-accent-tertiary/10 border border-accent-tertiary/30 rounded-lg p-3",children:[t.jsx("p",{className:"text-sm text-text-secondary mb-2",children:t.jsx("strong",{children:"Usage Example:"})}),t.jsxs("code",{className:"block bg-accent-tertiary/20 px-3 py-2 rounded text-xs text-accent-tertiary font-mono overflow-x-auto",children:['curl -H "X-API-Key: ',Yt.slice(0,12),'..." ',window.location.origin,"/api/stats"]})]}),t.jsx("div",{className:"flex justify-end mt-6",children:t.jsx("button",{onClick:()=>{Xt(!1),Ut(null)},className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors",children:"Done"})})]})]})}),t.jsx(U,{isOpen:!!Bt,title:"Revoke API Token",message:`Are you sure you want to revoke the token '${null==Bt?void 0:Bt.name}'? This action cannot be undone.`,confirmLabel:Jt?"Revoking...":"Revoke",cancelLabel:"Cancel",variant:"danger",onConfirm:async()=>{if(Bt){Qt(!0),Ot(null);try{await O(Bt.id),await ta(),Wt(null)}catch(e){Ot(e instanceof Error?e.message:"Failed to revoke token")}finally{Qt(!1)}}},onCancel:()=>Wt(null)}),bs&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&ys(!1),role:"dialog","aria-modal":"true","aria-labelledby":"add-key-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-md w-full shadow-2xl",children:[t.jsx("h3",{id:"add-key-modal-title",className:"type-subheading text-text-primary mb-4",children:"Add Transport Key"}),t.jsxs("div",{className:"space-y-4",children:[ms&&t.jsxs("div",{className:"bg-accent-tertiary/10 border border-accent-tertiary/30 rounded-lg p-3 text-sm text-text-secondary",children:["Adding as child of: ",t.jsx("strong",{className:"text-text-primary",children:ca()})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Key Name"}),t.jsx("input",{type:"text",value:_s,onChange:e=>Ss(e.target.value),placeholder:"e.g., Region Name, Group Key",className:"w-full px-4 py-2 bg-bg-subtle border border-border-subtle rounded-lg text-text-primary placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-accent-primary/50 transition-colors",onKeyDown:e=>"Enter"===e.key&&oa(),autoFocus:!0})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Flood Policy"}),t.jsxs("div",{className:"flex bg-bg-subtle rounded-lg border border-border-subtle p-1",children:[t.jsx("button",{onClick:()=>Fs("deny"),className:V("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","deny"===Ts?"bg-accent-danger/20 text-accent-danger border border-accent-danger/50":"text-text-muted hover:text-text-secondary"),children:"DENY"}),t.jsx("button",{onClick:()=>Fs("allow"),className:V("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","allow"===Ts?"bg-accent-success/20 text-accent-success border border-accent-success/50":"text-text-muted hover:text-text-secondary"),children:"ALLOW"})]})]}),t.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[t.jsx("button",{onClick:()=>{ys(!1),Ss(""),Fs("deny")},disabled:Es,className:"px-4 py-2 bg-bg-subtle hover:bg-bg-elevated text-text-secondary rounded-lg border border-border-subtle transition-colors disabled:opacity-50",children:"Cancel"}),t.jsx("button",{onClick:oa,disabled:Es||!_s.trim(),className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors disabled:opacity-50 flex items-center gap-2",children:Es?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Adding..."]}):"Add Key"})]})]})]})}),gs&&Ns&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&fs(!1),role:"dialog","aria-modal":"true","aria-labelledby":"edit-key-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-md w-full shadow-2xl",children:[t.jsx("h3",{id:"edit-key-modal-title",className:"type-subheading text-text-primary mb-4",children:"Edit Transport Key"}),t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Key Name"}),t.jsx("input",{type:"text",value:Ns.name,onChange:e=>ws({...Ns,name:e.target.value}),className:"w-full px-4 py-2 bg-bg-subtle border border-border-subtle rounded-lg text-text-primary focus:outline-none focus:ring-2 focus:ring-accent-primary/50 transition-colors",autoFocus:!0})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Flood Policy"}),t.jsxs("div",{className:"flex bg-bg-subtle rounded-lg border border-border-subtle p-1",children:[t.jsx("button",{onClick:()=>ws({...Ns,floodPolicy:"deny"}),className:V("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","deny"===Ns.floodPolicy?"bg-accent-danger/20 text-accent-danger border border-accent-danger/50":"text-text-muted hover:text-text-secondary"),children:"DENY"}),t.jsx("button",{onClick:()=>ws({...Ns,floodPolicy:"allow"}),className:V("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","allow"===Ns.floodPolicy?"bg-accent-success/20 text-accent-success border border-accent-success/50":"text-text-muted hover:text-text-secondary"),children:"ALLOW"})]})]}),Ns.transport_key&&t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-2",children:"Transport Key"}),t.jsx("code",{className:"block bg-bg-subtle px-3 py-2 rounded-lg text-xs text-text-muted font-mono overflow-x-auto",children:Ns.transport_key})]}),t.jsxs("div",{className:"flex justify-between gap-3 mt-6",children:[t.jsx("button",{onClick:()=>{fs(!1),Cs(Ns),vs(!0),ws(null)},disabled:Es,className:"px-4 py-2 bg-accent-danger/20 hover:bg-accent-danger/30 text-accent-danger rounded-lg border border-accent-danger/50 transition-colors disabled:opacity-50",children:"Delete"}),t.jsxs("div",{className:"flex gap-3",children:[t.jsx("button",{onClick:()=>{fs(!1),ws(null)},disabled:Es,className:"px-4 py-2 bg-bg-subtle hover:bg-bg-elevated text-text-secondary rounded-lg border border-border-subtle transition-colors disabled:opacity-50",children:"Cancel"}),t.jsx("button",{onClick:async()=>{if(Ns){Ls(!0),cs(null);try{const e=await K(Ns.id,{name:Ns.name,flood_policy:Ns.floodPolicy});e.success?(await na(),fs(!1),ws(null)):cs(e.error||"Failed to update transport key")}catch(e){cs(e instanceof Error?e.message:"Failed to update transport key")}finally{Ls(!1)}}},disabled:Es||!Ns.name.trim(),className:"px-4 py-2 bg-accent-primary/20 hover:bg-accent-primary/30 text-text-primary rounded-lg border border-accent-primary/50 transition-colors disabled:opacity-50 flex items-center gap-2",children:Es?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Saving..."]}):"Save"})]})]})]})]})}),js&&ks&&t.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:e=>e.target===e.currentTarget&&vs(!1),role:"dialog","aria-modal":"true","aria-labelledby":"delete-key-modal-title",children:t.jsxs("div",{className:"bg-bg-elevated border border-border-subtle rounded-xl p-6 max-w-md w-full shadow-2xl",children:[t.jsx("h3",{id:"delete-key-modal-title",className:"type-subheading text-text-primary mb-4",children:"Delete Transport Key"}),t.jsxs("p",{className:"text-text-secondary mb-4",children:["Are you sure you want to delete ",t.jsxs("strong",{className:"text-text-primary",children:["'",ks.name,"'"]}),"?"]}),ks.children&&ks.children.length>0&&t.jsx("div",{className:"bg-accent-secondary/10 border border-accent-secondary/30 rounded-lg p-3 mb-4",children:t.jsxs("div",{className:"flex gap-2",children:[t.jsx(v,{className:"w-4 h-4 text-accent-secondary flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"text-sm text-text-secondary",children:["This key has ",ks.children.length," child key(s). Deleting will also remove all children."]})]})}),t.jsxs("div",{className:"flex justify-end gap-3",children:[t.jsx("button",{onClick:()=>{vs(!1),Cs(null)},disabled:Es,className:"px-4 py-2 bg-bg-subtle hover:bg-bg-elevated text-text-secondary rounded-lg border border-border-subtle transition-colors disabled:opacity-50",children:"Cancel"}),t.jsx("button",{onClick:async()=>{if(ks){Ls(!0),cs(null);try{const e=await $(ks.id);e.success?(await na(),vs(!1),Cs(null),xs(null)):cs(e.error||"Failed to delete transport key")}catch(e){cs(e instanceof Error?e.message:"Failed to delete transport key")}finally{Ls(!1)}}},disabled:Es,className:"px-4 py-2 bg-accent-danger/20 hover:bg-accent-danger/30 text-accent-danger rounded-lg border border-accent-danger/50 transition-colors disabled:opacity-50 flex items-center gap-2",children:Es?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Deleting..."]}):"Delete"})]})]})})]})}export{ae as default}; diff --git a/frontend/dist/assets/ConfirmModal-DLMcH5KX.js b/frontend/dist/assets/ConfirmModal-u7cxXX4i.js similarity index 97% rename from frontend/dist/assets/ConfirmModal-DLMcH5KX.js rename to frontend/dist/assets/ConfirmModal-u7cxXX4i.js index e6a92a65..445f905a 100644 --- a/frontend/dist/assets/ConfirmModal-DLMcH5KX.js +++ b/frontend/dist/assets/ConfirmModal-u7cxXX4i.js @@ -1 +1 @@ -import{r as e,b as t,j as o,a4 as s,X as n}from"./vendor-react-CUlQ5-Td.js";import{c as r}from"./recharts-7RsRrQtf.js";const d=e.memo(function({isOpen:d,title:l="Confirm",message:a,confirmLabel:i="Confirm",cancelLabel:c="Cancel",variant:m="default",onConfirm:b,onCancel:x}){if(e.useEffect(()=>{if(!d)return;const e=e=>{"Escape"===e.key&&x()};window.addEventListener("keydown",e);const t=document.body.style.overflow,o=document.body.style.position,s=document.body.style.width,n=document.body.style.top,r=window.scrollY;return document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%",document.body.style.top=`-${r}px`,()=>{window.removeEventListener("keydown",e),document.body.style.overflow=t,document.body.style.position=o,document.body.style.width=s,document.body.style.top=n,window.scrollTo(0,r)}},[d,x]),!d)return null;const u={danger:{icon:"text-accent-danger",button:"bg-accent-danger hover:brightness-110 active:brightness-90"},warning:{icon:"text-accent-secondary",button:"bg-accent-secondary hover:brightness-110 active:brightness-90 text-bg-body"},default:{icon:"text-accent-primary",button:"bg-accent-primary hover:brightness-110 active:brightness-90 text-bg-body"}}[m];return t.createPortal(o.jsx("div",{className:"fixed inset-0 bg-black/40 backdrop-blur-md z-[10010] flex items-end sm:items-center justify-center",onClick:x,role:"dialog","aria-modal":"true","aria-labelledby":"confirm-modal-title",children:o.jsxs("div",{className:r("glass-card-elevated w-full max-w-sm","sm:mx-4 sm:rounded-xl","rounded-t-2xl rounded-b-none sm:rounded-b-xl","pb-safe"),onClick:e=>e.stopPropagation(),children:[o.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-border-subtle",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:r("p-2 rounded-lg bg-bg-subtle",u.icon),children:o.jsx(s,{className:"w-5 h-5"})}),o.jsx("h3",{id:"confirm-modal-title",className:"text-base font-semibold text-text-primary",children:l})]}),o.jsx("button",{onClick:x,className:"p-2 rounded-lg text-text-muted hover:text-text-primary hover:bg-bg-subtle transition-colors",children:o.jsx(n,{className:"w-5 h-5"})})]}),o.jsx("div",{className:"p-4",children:o.jsx("p",{className:"text-sm text-text-secondary",children:a})}),o.jsxs("div",{className:"flex gap-3 p-4 pt-0",children:[o.jsx("button",{onClick:x,className:"flex-1 px-4 py-2.5 rounded-lg text-sm font-medium text-text-secondary bg-bg-subtle hover:bg-bg-elevated border border-border-subtle transition-colors",children:c}),o.jsx("button",{onClick:b,className:r("flex-1 px-4 py-2.5 rounded-lg text-sm font-medium text-text-primary transition-colors",u.button),children:i})]})]})}),document.body)});export{d as C}; +import{r as e,b as t,j as o,a4 as s,X as n}from"./vendor-react-CWPBVwgk.js";import{c as r}from"./recharts-cqZ_RWsW.js";const d=e.memo(function({isOpen:d,title:l="Confirm",message:a,confirmLabel:i="Confirm",cancelLabel:c="Cancel",variant:m="default",onConfirm:b,onCancel:x}){if(e.useEffect(()=>{if(!d)return;const e=e=>{"Escape"===e.key&&x()};window.addEventListener("keydown",e);const t=document.body.style.overflow,o=document.body.style.position,s=document.body.style.width,n=document.body.style.top,r=window.scrollY;return document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%",document.body.style.top=`-${r}px`,()=>{window.removeEventListener("keydown",e),document.body.style.overflow=t,document.body.style.position=o,document.body.style.width=s,document.body.style.top=n,window.scrollTo(0,r)}},[d,x]),!d)return null;const u={danger:{icon:"text-accent-danger",button:"bg-accent-danger hover:brightness-110 active:brightness-90"},warning:{icon:"text-accent-secondary",button:"bg-accent-secondary hover:brightness-110 active:brightness-90 text-bg-body"},default:{icon:"text-accent-primary",button:"bg-accent-primary hover:brightness-110 active:brightness-90 text-bg-body"}}[m];return t.createPortal(o.jsx("div",{className:"fixed inset-0 bg-black/40 backdrop-blur-md z-[10010] flex items-end sm:items-center justify-center",onClick:x,role:"dialog","aria-modal":"true","aria-labelledby":"confirm-modal-title",children:o.jsxs("div",{className:r("glass-card-elevated w-full max-w-sm","sm:mx-4 sm:rounded-xl","rounded-t-2xl rounded-b-none sm:rounded-b-xl","pb-safe"),onClick:e=>e.stopPropagation(),children:[o.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-border-subtle",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:r("p-2 rounded-lg bg-bg-subtle",u.icon),children:o.jsx(s,{className:"w-5 h-5"})}),o.jsx("h3",{id:"confirm-modal-title",className:"text-base font-semibold text-text-primary",children:l})]}),o.jsx("button",{onClick:x,className:"p-2 rounded-lg text-text-muted hover:text-text-primary hover:bg-bg-subtle transition-colors",children:o.jsx(n,{className:"w-5 h-5"})})]}),o.jsx("div",{className:"p-4",children:o.jsx("p",{className:"text-sm text-text-secondary",children:a})}),o.jsxs("div",{className:"flex gap-3 p-4 pt-0",children:[o.jsx("button",{onClick:x,className:"flex-1 px-4 py-2.5 rounded-lg text-sm font-medium text-text-secondary bg-bg-subtle hover:bg-bg-elevated border border-border-subtle transition-colors",children:c}),o.jsx("button",{onClick:b,className:r("flex-1 px-4 py-2.5 rounded-lg text-sm font-medium text-text-primary transition-colors",u.button),children:i})]})]})}),document.body)});export{d as C}; diff --git a/frontend/dist/assets/Contacts-CZV5Ovbv.js b/frontend/dist/assets/Contacts-CZV5Ovbv.js deleted file mode 100644 index a1479fcd..00000000 --- a/frontend/dist/assets/Contacts-CZV5Ovbv.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ContactsMapMapLibre-BQo_-BEP.js","assets/vendor-react-CUlQ5-Td.js","assets/vendor-core-XI_xDZ-M.js","assets/index-C1whtcFB.js","assets/ConfirmModal-DLMcH5KX.js","assets/useThemeColors-8RSyMp_o.js","assets/SignalIndicator-DOiETQwB.js","assets/HashBadge-Do84dDmK.js","assets/CollisionExplorerModal-BU96fXkT.js","assets/PageLayout-CViR4hDG.js","assets/maplibre-gl-B1CfjdFi.css","assets/index-CiR3C65a.css","assets/leaflet-CIGW-MKW.css"])))=>i.map(i=>d[i]); -import{j as e,r as t,a8 as s,a4 as a,z as n,h as r,a9 as c,k as l,aa as i,Z as o,ab as d,T as x,D as h,a7 as m,a2 as u,o as p,Y as g,ac as j,p as f,ad as N,X as v,ae as b,af as y,ag as w,ah as k,ai as C,aj as M,ak as S,al as L,am as H,an as P}from"./vendor-react-CUlQ5-Td.js";import{y as R,z as $,w as F,A as _,B as E,C as T,E as O,s as D,F as A,f as U,G as W,H as z,I as K,e as B,J as G,K as I,L as V}from"./index-C1whtcFB.js";import{a as q}from"./SignalIndicator-DOiETQwB.js";import{_ as J}from"./deckgl-MTXp-Y3t.js";import{c as Y,L as Z,T as Q,a as X}from"./recharts-7RsRrQtf.js";import{H as ee}from"./HashBadge-Do84dDmK.js";import{C as te}from"./ConfirmModal-DLMcH5KX.js";import{C as se}from"./CollisionExplorerModal-BU96fXkT.js";import{P as ae,b as ne}from"./PageLayout-CViR4hDG.js";class re extends t.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){var t;return this.state.hasError?e.jsx("div",{className:"map-container-16-9 glass-card flex items-center justify-center",role:"alert","aria-live":"assertive",children:e.jsxs("div",{className:"text-center text-white/50 p-4",children:[e.jsx("p",{className:"text-lg mb-2",children:"Map failed to load"}),e.jsx("p",{className:"text-sm text-white/30",children:(null==(t=this.state.error)?void 0:t.message)||"Unknown error"}),e.jsx("p",{className:"text-xs text-white/20 mt-2",children:"Try refreshing the page or check your browser's WebGL support."})]})}):this.props.children}}const ce=t.lazy(()=>J(()=>import("./ContactsMapMapLibre-BQo_-BEP.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])));function le({neighbors:s,localNode:a,localHash:n,onRemoveNode:r,selectedNodeHash:c,onNodeSelected:l,highlightedEdgeKey:i}){return e.jsx(re,{children:e.jsx(t.Suspense,{fallback:e.jsx("div",{className:"map-container-16-9 glass-card flex items-center justify-center",role:"status","aria-live":"polite","aria-label":"Loading map",children:e.jsxs("div",{className:"text-white/50 flex items-center gap-3",children:[e.jsx("div",{className:"w-5 h-5 border-2 border-accent-primary border-t-transparent rounded-full animate-spin","aria-hidden":"true"}),e.jsx("span",{children:"Loading map..."})]})}),children:e.jsx(ce,{neighbors:s,localNode:a,localHash:n,onRemoveNode:r,selectedNodeHash:c,onNodeSelected:l,highlightedEdgeKey:i})})})}function ie(e){return e>=.7?"text-accent-success":e>=.5?"text-accent-secondary":e>=.3?"text-signal-poor":"text-accent-danger"}function oe(e){return`${Math.round(100*e)}%`}function de(e,t){return t.has(e.toUpperCase())}const xe=t.memo(function({path:t,isHighlighted:s,onHighlight:c,ghostPrefixes:l}){const i=function(t){return t>.2?{icon:e.jsx(x,{className:"w-3 h-3"}),color:"text-accent-success"}:t<-.2?{icon:e.jsx(n,{className:"w-3 h-3"}),color:"text-accent-danger"}:{icon:e.jsx(h,{className:"w-3 h-3"}),color:"text-text-muted"}}(t.observationTrend),m=t.weakestLinkKey&&t.weakestLinkConfidence<.5,u=t.hops.some(e=>de(e,l));return e.jsxs("div",{className:"flex items-center gap-3 p-2 rounded-md transition-colors cursor-pointer "+(s?"bg-accent-primary/20 border border-accent-primary/40":"hover:bg-white/5"),onClick:()=>c(s?null:t.weakestLinkKey),children:[e.jsx("div",{className:"flex-shrink-0 w-12 text-center py-1 rounded-md "+(p=t.healthScore,p>=.7?"bg-accent-success/10":p>=.5?"bg-accent-secondary/10":p>=.3?"bg-signal-poor/10":"bg-accent-danger/10"),children:e.jsx("span",{className:`text-xs font-semibold tabular-nums ${ie(t.healthScore)}`,children:oe(t.healthScore)})}),e.jsx("div",{className:"flex-1 flex items-center gap-0.5 overflow-x-auto min-w-0",children:t.hops.map((s,a)=>{var n;const c=de(s,l),i=m&&(null==(n=t.weakestLinkKey)?void 0:n.includes(s));return e.jsxs("span",{className:"flex items-center",children:[e.jsxs("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded flex items-center gap-0.5 "+(c?"bg-accent-tertiary/20 text-accent-tertiary border border-accent-tertiary/30":i?"bg-accent-danger/20 text-accent-danger":"bg-white/10 text-text-secondary"),children:[c&&e.jsx(r,{className:"w-2.5 h-2.5"}),s]}),anew Set(u.map(e=>e.prefix.toUpperCase())),[u]),f=t.useMemo(()=>h.slice(0,o),[h,o]),N=t.useMemo(()=>0===h.length?null:{avgHealth:h.reduce((e,t)=>e+t.healthScore,0)/h.length,declining:h.filter(e=>e.observationTrend<-.2).length,weakLinks:h.filter(e=>e.weakestLinkConfidence<.5).length,pathsWithGhosts:h.filter(e=>e.hops.some(e=>j.has(e.toUpperCase()))).length},[h,j]),v=e=>{null==d||d(e)};return 0===h.length?null:e.jsxs("div",{className:"chart-container",children:[e.jsxs("button",{onClick:()=>g(!p),className:"w-full chart-header hover:bg-white/5 transition-colors rounded-t-lg cursor-pointer",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(s,{className:"chart-title-icon"}),"Path Health",e.jsxs("span",{className:"ml-2 text-[10px] font-normal text-text-muted",children:["(",h.length," paths)"]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[N&&e.jsxs("div",{className:"flex items-center gap-3 text-[10px]",children:[e.jsxs("span",{className:`tabular-nums ${ie(N.avgHealth)}`,children:["Avg: ",oe(N.avgHealth)]}),N.weakLinks>0&&e.jsxs("span",{className:"text-accent-danger flex items-center gap-1",children:[e.jsx(a,{className:"w-3 h-3"}),N.weakLinks," weak"]}),N.declining>0&&e.jsxs("span",{className:"text-signal-poor flex items-center gap-1",children:[e.jsx(n,{className:"w-3 h-3"}),N.declining," declining"]}),N.pathsWithGhosts>0&&e.jsxs("span",{className:"text-accent-tertiary flex items-center gap-1",children:[e.jsx(r,{className:"w-3 h-3"}),N.pathsWithGhosts," ghost"]})]}),p?e.jsx(c,{className:"w-4 h-4 text-text-muted"}):e.jsx(l,{className:"w-4 h-4 text-text-muted"})]})]}),p&&e.jsxs("div",{className:"p-3 pt-0 space-y-1",children:[m.totalPaths>0&&e.jsxs("div",{className:"flex items-center gap-3 text-[10px] text-text-muted pb-2 border-b border-white/5",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(i,{className:"w-3 h-3 text-accent-primary"}),e.jsx("span",{className:"text-text-secondary",children:m.totalPaths.toLocaleString()})," Viterbi decoded"]}),m.observationOverrideCount>0&&e.jsxs("span",{className:"text-accent-success",children:[Math.round(m.observationOverrideCount/m.totalPaths*100),"% observation override"]}),u.length>0&&e.jsxs("span",{className:"text-accent-tertiary flex items-center gap-1",children:[e.jsx(r,{className:"w-3 h-3"}),u.length," ghost",1!==u.length?"s":""]})]}),e.jsxs("div",{className:"flex items-center gap-4 text-[10px] text-text-muted pb-2 border-b border-white/5",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-accent-success"})," Healthy (≥70%)"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-accent-secondary"})," Fair (50-70%)"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-signal-poor"})," Weak (30-50%)"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-accent-danger"})," Critical (<30%)"]}),u.length>0&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(r,{className:"w-3 h-3 text-accent-tertiary"})," Ghost"]})]}),e.jsx("div",{className:"space-y-1 max-h-64 overflow-y-auto",children:f.map(t=>e.jsx(xe,{path:t,isHighlighted:x===t.weakestLinkKey,onHighlight:v,ghostPrefixes:j},t.pathKey))}),h.length>o&&e.jsxs("div",{className:"text-center text-[10px] text-text-muted pt-2",children:["Showing top ",o," of ",h.length," paths"]})]})]})});function me({ghost:s,neighbors:n,isExpanded:o,onToggle:d}){const x=t.useMemo(()=>Array.from(s.commonNeighbors).map(e=>{var t;return{hash:e,name:null==(t=n[e])?void 0:t.name}}),[s.commonNeighbors,n]),h=s.confidence>=.8?"text-accent-success":s.confidence>=.5?"text-accent-secondary":"text-signal-poor",m=s.estimatedLocation?s.estimatedLocation.uncertaintyM>=1e3?`±${(s.estimatedLocation.uncertaintyM/1e3).toFixed(1)}km`:`±${Math.round(s.estimatedLocation.uncertaintyM)}m`:null;return e.jsxs("div",{className:Y("rounded-lg border transition-all duration-150",s.isLikelyReal?"border-accent-tertiary/30 bg-accent-tertiary/5":"border-border-muted bg-bg-card/50"),children:[e.jsxs("button",{onClick:d,className:"w-full flex items-center gap-3 px-3 py-2 text-left hover:bg-white/5 rounded-lg",children:[e.jsx(r,{className:Y("w-5 h-5 flex-shrink-0",s.isLikelyReal?"text-accent-tertiary":"text-text-muted")}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-sm font-semibold text-text-primary",children:s.prefix.toUpperCase()}),s.isLikelyReal&&e.jsx("span",{className:"px-1.5 py-0.5 rounded text-xs font-medium bg-accent-tertiary/20 text-accent-tertiary",children:"Likely Real"})]}),e.jsxs("div",{className:"flex items-center gap-3 text-xs text-text-muted mt-0.5",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(i,{className:"w-3 h-3"}),s.observationCount," obs"]}),e.jsxs("span",{className:Y("flex items-center gap-1",h),children:[(100*s.confidence).toFixed(0),"% conf"]})]})]}),o?e.jsx(c,{className:"w-4 h-4 text-text-muted"}):e.jsx(l,{className:"w-4 h-4 text-text-muted"})]}),o&&e.jsxs("div",{className:"px-3 pb-3 space-y-3 border-t border-border-muted/50 mt-1 pt-3",children:[s.estimatedLocation?e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(u,{className:"w-4 h-4 text-accent-primary mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"text-text-primary font-medium",children:[s.estimatedLocation.lat.toFixed(5),", ",s.estimatedLocation.lon.toFixed(5)]}),e.jsxs("div",{className:"text-text-muted",children:["Uncertainty: ",m]})]})]}):e.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-muted",children:[e.jsx(a,{className:"w-4 h-4 text-signal-poor"}),"Location unknown (neighbors lack coordinates)"]}),e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(p,{className:"w-4 h-4 text-text-muted mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"text-text-primary",children:["First seen: ",_(s.firstSeen)," ago"]}),e.jsxs("div",{className:"text-text-muted",children:["Last seen: ",_(s.lastSeen)," ago"]})]})]}),x.length>0&&e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(g,{className:"w-4 h-4 text-text-muted mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"text-text-muted mb-1",children:["Adjacent to ",x.length," known node",1!==x.length?"s":"",":"]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[x.slice(0,5).map(({hash:t})=>e.jsx(ee,{hash:t,size:"sm"},t)),x.length>5&&e.jsxs("span",{className:"text-text-muted",children:["+",x.length-5," more"]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t border-border-muted/30",children:[e.jsx("div",{className:"flex-1 h-2 rounded-full bg-bg-elevated overflow-hidden",children:e.jsx("div",{className:Y("h-full rounded-full transition-all",s.confidence>=.8?"bg-accent-success":s.confidence>=.5?"bg-accent-secondary":"bg-signal-poor"),style:{width:100*s.confidence+"%"}})}),e.jsxs("span",{className:"text-xs text-text-muted w-12 text-right",children:[(100*s.confidence).toFixed(0),"%"]})]})]})]})}function ue({neighbors:s,className:n}){const c=F(),l=$(),[i,o]=t.useState(new Set),[d,x]=t.useState(!1),{likelyReal:h,uncertain:u}=t.useMemo(()=>{const e=[],t=[];for(const a of c)a.isLikelyReal?e.push(a):t.push(a);const s=(e,t)=>t.confidence-e.confidence||t.observationCount-e.observationCount;return e.sort(s),t.sort(s),{likelyReal:e,uncertain:t}},[c]);if(0===c.length)return null;const p=e=>{o(t=>{const s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},g=d?u:u.slice(0,5);return e.jsxs("div",{className:n,children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(r,{className:"chart-title-icon"}),"Discovered Nodes",e.jsx("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium bg-accent-tertiary/20 text-accent-tertiary",children:c.length})]}),l.totalPaths>0&&e.jsxs("div",{className:"text-xs text-text-muted",children:[l.pathsWithGhosts," / ",l.totalPaths," paths"]})]}),e.jsxs("div",{className:"px-4 py-3 space-y-4 sm:px-5",children:[h.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs text-accent-tertiary",children:[e.jsx(m,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"font-medium",children:["Likely Undiscovered Repeaters (",h.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:h.map(t=>e.jsx(me,{ghost:t,neighbors:s,isExpanded:i.has(t.prefix),onToggle:()=>p(t.prefix)},t.prefix))})]}),u.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-muted",children:[e.jsx(a,{className:"w-3.5 h-3.5"}),e.jsxs("span",{children:["Uncertain (",u.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:g.map(t=>e.jsx(me,{ghost:t,neighbors:s,isExpanded:i.has(t.prefix),onToggle:()=>p(t.prefix)},t.prefix))}),u.length>5&&e.jsx("button",{onClick:()=>x(!d),className:"w-full py-1.5 text-xs text-accent-primary hover:text-accent-primary/80 transition-colors",children:d?"Show less":`Show ${u.length-5} more`})]}),l.observationOverrideCount>0&&e.jsxs("div",{className:"pt-2 border-t border-border-muted/30 text-xs text-text-muted",children:[e.jsx("span",{className:"text-accent-primary",children:l.observationOverrideCount})," observation overrides • Avg confidence: ",e.jsxs("span",{className:"text-accent-secondary",children:[(100*l.avgPathConfidence).toFixed(0),"%"]})]})]})]})}const pe="var(--sparkline-critical)",ge="var(--sparkline-poor)",je="var(--sparkline-fair)",fe="var(--sparkline-good)",Ne="var(--sparkline-excellent)",ve="var(--text-muted)";function be({active:t,payload:s}){if(!t||!s||!s.length)return null;const a=s[0].payload,n=new Date(a.timestamp),r=`${(n.getMonth()+1).toString().padStart(2,"0")}/${n.getDate().toString().padStart(2,"0")}`;return e.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded px-1.5 py-0.5 text-[10px] shadow-xl",children:[e.jsx("span",{className:"text-text-muted",children:r}),e.jsx("span",{className:"ml-1.5 font-semibold tabular-nums",children:a.count})]})}const ye=t.memo(function({nodeHash:t,width:s=60,height:a=20,color:n,showArea:r=!0,showTooltip:c=!1,className:l=""}){const i=E(t),o=T(),d=n??(i.length>0?function(e){if(0===e.length)return pe;const t=e.slice(-4),s=t.reduce((e,t)=>e+t.count,0),a=s/t.length,n=e.reduce((e,t)=>e+t.count,0)/e.length;if(0===s)return pe;if(n>0){const e=a/n;return e>=1.2?Ne:e>=.8?fe:e>=.4?je:e>=.1?ge:pe}return s>=10?Ne:s>=5?fe:s>=2?je:s>=1?ge:pe}(i):ve),x="number"==typeof s?s:60,h=a;if(i.length<2){const t=o?ve:pe;return e.jsx("div",{className:`flex items-center justify-center ${l}`,style:{width:x,height:h,color:t},children:e.jsx("svg",{width:x,height:h,viewBox:`0 0 ${x} ${h}`,preserveAspectRatio:"none",children:e.jsx("line",{x1:4,y1:h/2,x2:x-4,y2:h/2,stroke:"currentColor",strokeWidth:1.5,strokeDasharray:"3,2",className:o?"animate-pulse":""})})})}return e.jsx("div",{className:l,style:{width:x,height:h},children:e.jsxs(Z,{data:i,width:x,height:h,margin:{top:1,right:1,bottom:1,left:1},children:[c&&e.jsx(Q,{content:e.jsx(be,{}),cursor:{stroke:"rgba(255,255,255,0.2)",strokeWidth:1}}),e.jsx(X,{type:"monotone",dataKey:"count",stroke:d,strokeWidth:1.5,dot:!1,isAnimationActive:!1})]})})}),we=t.memo(function({hash:s,className:a="",size:n="sm"}){const r=O(),c=$(),[l,o]=t.useState(!1),d=t.useMemo(()=>D(s),[s]),x=t.useMemo(()=>d?r.find(e=>e.prefix===d)??null:null,[d,r]),h=c.totalPaths>0&&c.avgPathConfidence>=.7,u=t.useCallback(e=>{e.preventDefault(),e.stopPropagation(),o(!0)},[]),p=t.useCallback(()=>{o(!1)},[]);if(!x)return null;const g="sm"===n?"w-3.5 h-3.5":"w-4 h-4",f=h?"text-accent-tertiary hover:text-accent-tertiary hover:bg-accent-tertiary/10 focus:ring-accent-tertiary/50":"text-signal-fair hover:text-accent-secondary hover:bg-signal-fair/10 focus:ring-signal-fair/50",N=h?`Prefix conflict resolved by Viterbi HMM (${(100*c.avgPathConfidence).toFixed(0)}% confidence)`:`Prefix conflict: ${x.candidateCount} nodes share prefix "${d}"`;return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:u,className:`inline-flex items-center justify-center p-0.5 rounded focus:outline-none focus:ring-2 transition-colors cursor-pointer touch-manipulation ${f} ${a}`,title:N,"aria-label":`View prefix conflict for ${d}${h?" (Viterbi resolved)":""}`,children:h?e.jsxs("span",{className:"relative",children:[e.jsx(i,{className:g}),e.jsx(m,{className:"absolute -bottom-0.5 -right-0.5 w-2 h-2 text-accent-success"})]}):e.jsx(j,{className:g})}),e.jsx(se,{isOpen:l,prefix:x.prefix,candidateHashes:x.candidateHashes,onClose:p})]})});function ke(e,t,s,a){const n=(s-e)*Math.PI/180,r=(a-t)*Math.PI/180,c=Math.sin(n/2)*Math.sin(n/2)+Math.cos(e*Math.PI/180)*Math.cos(s*Math.PI/180)*Math.sin(r/2)*Math.sin(r/2);return 2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c))*6371e3}const Ce=Object.freeze(Object.defineProperty({__proto__:null,default:function(){const{stats:s}=A(),a=U(),n=W(),r=z(),c=K(),l=B(),i=G(),[o,x]=t.useState(null),[h,j]=t.useState("lastHeard"),[R,$]=t.useState("desc"),[F,_]=t.useState(""),[E,T]=t.useState(!1),[O,D]=t.useState(null),[J,Y]=t.useState(null),[Z,Q]=t.useState(null),[X,se]=t.useState(new Map),[re,ce]=t.useState(new Map),ie=t.useMemo(()=>(null==s?void 0:s.neighbors)??{},[null==s?void 0:s.neighbors]),oe=t.useMemo(()=>Object.fromEntries(Object.entries(ie).filter(([e])=>!a.has(e))),[ie,a]),de=t.useMemo(()=>{var e;return(null==(e=null==s?void 0:s.config)?void 0:e.repeater)?{latitude:s.config.repeater.latitude,longitude:s.config.repeater.longitude,name:s.config.node_name||"Local Node"}:void 0},[s]),xe=null==s?void 0:s.local_hash,me=t.useMemo(()=>{const e=new Map;if(!(null==de?void 0:de.latitude)||!(null==de?void 0:de.longitude))return e;for(const[t,s]of Object.entries(oe))s.latitude&&s.longitude&&0!==s.latitude&&0!==s.longitude?e.set(t,ke(de.latitude,de.longitude,s.latitude,s.longitude)):e.set(t,null);return e},[oe,de]),{neighborHashSet:pe,neighborSignalMap:ge}=t.useMemo(()=>{const e=new Set,t=new Map;for(const s of l)e.add(s.hash),t.set(s.hash,{avgRssi:s.avgRssi,avgSnr:s.avgSnr});return{neighborHashSet:e,neighborSignalMap:t}},[l]),je=t.useMemo(()=>{const e=F.toLowerCase().trim(),t="neighbor"===e||"neighbors"===e,s=E||t;return Object.fromEntries(Object.entries(oe).filter(([a,n])=>{if(s&&!pe.has(a))return!1;if(t)return!0;if(!e)return!0;const r=(n.node_name||n.name||"").toLowerCase(),c=a.slice(2,4).toLowerCase();return r.includes(e)||c.includes(e)||a.toLowerCase().includes(e)}))},[oe,F,E,pe]),fe=t.useMemo(()=>Object.entries(je).sort(([e,t],[s,a])=>{let n=0;switch(h){case"lastHeard":n=(t.last_seen||0)-(a.last_seen||0);break;case"distance":{const t=me.get(e)??null,a=me.get(s)??null;n=null===t&&null===a?0:null===t?1:null===a?-1:t-a;break}case"centrality":n=(c.get(e)||0)-(c.get(s)||0)}return"desc"===R?-n:n}),[je,h,R,me,c]),Ne=fe.filter(([,e])=>e.latitude&&e.longitude&&0!==e.latitude&&0!==e.longitude).length,ve=t.useMemo(()=>new Set(r),[r]),be=t.useCallback(e=>{h===e?$(e=>"desc"===e?"asc":"desc"):(j(e),$("desc"))},[h]),Ce=t.useCallback(e=>{const t=oe[e];(null==t?void 0:t.latitude)&&(null==t?void 0:t.longitude)&&0!==t.latitude&&0!==t.longitude&&D(e)},[oe]),Me=t.useCallback(()=>{D(null)},[]),Se=t.useCallback(async(e,t)=>{if(t.stopPropagation(),!Z){Q(e),se(t=>{const s=new Map(t);return s.delete(e),s}),ce(t=>{const s=new Map(t);return s.delete(e),s});try{const t=e.startsWith("0x")?e.slice(0,4):`0x${e.slice(0,2)}`,s=await I(t,30);s.success&&s.data?(se(t=>new Map(t).set(e,s.data)),setTimeout(()=>{se(t=>{const s=new Map(t);return s.delete(e),s})},1e4)):(ce(t=>new Map(t).set(e,s.error||"Ping failed")),setTimeout(()=>{ce(t=>{const s=new Map(t);return s.delete(e),s})},5e3))}catch(s){const t=s instanceof Error?s.message:"Ping failed";ce(s=>new Map(s).set(e,t)),setTimeout(()=>{ce(t=>{const s=new Map(t);return s.delete(e),s})},5e3)}finally{Q(null)}}},[Z]);return e.jsxs(ae,{children:[e.jsx(ne,{title:"Contacts",icon:e.jsx(g,{}),controls:e.jsxs("div",{className:"flex items-baseline gap-3 sm:gap-4",children:[e.jsxs("span",{className:"roster-title tabular-nums",children:[fe.length," node",1!==fe.length?"s":""]}),Ne>0&&e.jsxs("span",{className:"roster-title flex items-baseline gap-1.5 tabular-nums",children:[e.jsx(u,{className:"w-3.5 h-3.5 relative top-[2px]"}),Ne," with location"]})]})}),e.jsx("div",{className:"relative",children:e.jsx(le,{neighbors:oe,localNode:de,localHash:xe,onRemoveNode:n,selectedNodeHash:O,onNodeSelected:Me,highlightedEdgeKey:J})}),e.jsx(he,{maxPaths:10,highlightedEdge:J,onHighlightEdge:Y}),i.length>0&&e.jsx("div",{className:"chart-container",children:e.jsx(ue,{neighbors:oe})}),e.jsxs("div",{className:"chart-container",children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(g,{className:"chart-title-icon"}),"Discovered Contacts"]}),e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2",children:[pe.size>0&&e.jsxs("button",{onClick:()=>T(!E),className:"flex items-center gap-1 px-1.5 sm:px-2.5 py-1.5 text-xs rounded-lg transition-colors "+(E?"bg-accent-success/20 text-accent-success border border-accent-success/30":"text-text-muted hover:text-text-secondary hover:bg-white/5 border border-transparent"),title:E?"Show all contacts":"Show only MeshCore neighbors (direct RF contact)",children:[e.jsx(f,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Neighbors"}),e.jsx("span",{className:"sm:hidden tabular-nums",children:pe.size})]}),e.jsxs("div",{className:"relative",children:[e.jsx(N,{className:"absolute left-2 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-text-muted"}),e.jsx("input",{type:"text",name:"contact-search",id:"contact-search",autoComplete:"off",value:F,onChange:e=>_(e.target.value),placeholder:"Search...",className:"w-20 sm:w-28 lg:w-32 pl-6 sm:pl-7 pr-6 py-1.5 text-xs bg-white/5 border border-white/10 rounded-lg text-text-primary placeholder:text-text-muted focus:outline-none focus:border-accent-primary/50"}),F&&e.jsx("button",{onClick:()=>{_(""),"neighbor"!==F.toLowerCase().trim()&&"neighbors"!==F.toLowerCase().trim()||T(!1)},className:"absolute right-1.5 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-secondary p-0.5",children:e.jsx(v,{className:"w-3 h-3"})})]}),e.jsxs("div",{className:"flex items-center gap-0.5 sm:gap-1",children:[e.jsxs("button",{onClick:()=>be("lastHeard"),className:"flex items-center gap-1 p-1.5 sm:px-2 sm:py-1.5 text-xs rounded-lg transition-colors "+("lastHeard"===h?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary hover:bg-white/5"),title:"Sort by last heard",children:[e.jsx(p,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Recent"}),"lastHeard"===h&&e.jsx(b,{className:"w-3 h-3 "+("asc"===R?"rotate-180":"")})]}),e.jsxs("button",{onClick:()=>be("distance"),className:"flex items-center gap-1 p-1.5 sm:px-2 sm:py-1.5 text-xs rounded-lg transition-colors "+("distance"===h?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary hover:bg-white/5"),title:"Sort by distance",children:[e.jsx(y,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Distance"}),"distance"===h&&e.jsx(b,{className:"w-3 h-3 "+("asc"===R?"rotate-180":"")})]}),e.jsxs("button",{onClick:()=>be("centrality"),className:"flex items-center gap-1 p-1.5 sm:px-2 sm:py-1.5 text-xs rounded-lg transition-colors "+("centrality"===h?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary hover:bg-white/5"),title:"Sort by network centrality",children:[e.jsx(d,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Centrality"}),"centrality"===h&&e.jsx(b,{className:"w-3 h-3 "+("asc"===R?"rotate-180":"")})]})]})]})]}),fe.length>0?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hidden sm:grid contacts-grid-header border-b border-border-subtle/50 px-3 py-2 text-[10px] uppercase tracking-wider text-text-muted",children:[e.jsx("div",{className:"contacts-col-node",children:"Node"}),e.jsx("div",{className:"contacts-col-signal text-right",children:"Signal"}),e.jsx("div",{className:"contacts-col-distance text-right",children:"Distance"}),e.jsx("div",{className:"contacts-col-centrality text-right",children:"Centrality"}),e.jsx("div",{className:"contacts-col-activity text-center",children:"Activity"}),e.jsx("div",{className:"contacts-col-seen text-right",children:"Last Seen"}),e.jsx("div",{className:"contacts-col-actions"})]}),e.jsx("div",{className:"divide-y divide-border-subtle/30",children:fe.map(([t,s])=>{var a;const n=s.latitude&&s.longitude&&0!==s.latitude&&0!==s.longitude,r=s.node_name||s.name||"Unknown",l=ve.has(t),i=pe.has(t),o=me.get(t),h=c.get(t)||0,u=i?ge.get(t):void 0,p=i&&u,g=null==(a=s.contact_type)?void 0:a.toLowerCase(),j="room server"===g||"room_server"===g||"room"===g||"server"===g,f="companion"===g||"client"===g||"cli"===g,N=s.is_repeater||"repeater"===g||"rep"===g,v=i?"direct":"flood",b=i?"Direct RF contact (zero-hop neighbor)":"Flood routing (multi-hop via mesh)";return e.jsxs("div",{className:`contacts-grid-row ${l?"bg-amber-500/5 border-l-2 border-l-amber-400":""} ${n?"cursor-pointer hover:bg-white/[0.02]":""}`,onClick:()=>Ce(t),children:[e.jsxs("div",{className:"contacts-col-node flex items-center gap-2 min-w-0",children:[p&&null!==(null==u?void 0:u.avgSnr)?e.jsx("div",{className:"w-2 h-2 rounded-full flex-shrink-0 self-center "+($=u.avgSnr,void 0===$?"bg-[var(--signal-unknown)]":$>=5?"bg-[var(--signal-excellent)]":$>=0?"bg-[var(--signal-good)]":$>=-5?"bg-[var(--signal-fair)]":$>=-10?"bg-[var(--signal-poor)]":"bg-[var(--signal-critical)]")}):e.jsx("div",{className:"w-2 flex-shrink-0"}),e.jsx("div",{className:"roster-icon flex-shrink-0",title:b,children:j&&N?e.jsxs("div",{className:"relative w-5 h-5",children:[e.jsx(w,{className:"w-5 h-5 absolute inset-0 text-accent-secondary"}),e.jsx(k,{className:"w-2.5 h-2.5 absolute -bottom-0.5 -right-0.5 text-accent-primary"})]}):j?e.jsx(w,{className:"w-5 h-5 text-accent-secondary"}):f?e.jsx(C,{className:"w-5 h-5 text-text-muted"}):N?"direct"===v?e.jsx(M,{className:"w-5 h-5 text-accent-success"}):e.jsx(k,{className:"w-5 h-5 text-accent-tertiary"}):e.jsx(C,{className:"w-5 h-5 text-text-muted"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 overflow-hidden",children:[e.jsx("span",{className:"roster-title truncate",title:r,children:r}),i&&e.jsx("span",{className:"type-badge px-1.5 py-0.5 rounded flex-shrink-0",style:{backgroundColor:"rgba(113, 152, 114, 0.2)",color:"var(--accent-success)"},children:"NBR"}),l&&e.jsxs("span",{className:"type-badge px-1.5 py-0.5 rounded flex items-center gap-1 flex-shrink-0",style:{backgroundColor:"rgba(223, 188, 114, 0.2)",color:"var(--accent-secondary)"},children:[e.jsx(S,{className:"w-3 h-3"}),"HUB"]}),N&&e.jsx("span",{className:"pill-tag flex-shrink-0",children:"RPT"})]}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[e.jsx(ee,{hash:t,size:"xs",prefixLength:8,suffixLength:6}),e.jsx(we,{hash:t})]})]})]}),e.jsxs("div",{className:"contacts-col-signal flex items-center justify-end gap-2",children:[p&&null!==(null==u?void 0:u.avgRssi)&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(q,{rssi:u.avgRssi,className:"w-3.5 h-3.5"}),e.jsx("span",{className:"type-data-xs tabular-nums text-text-muted",children:Math.round(u.avgRssi)})]}),p&&null!==(null==u?void 0:u.avgSnr)&&e.jsxs("span",{className:"type-data-xs tabular-nums text-text-muted",children:[u.avgSnr.toFixed(1)," dB"]})]}),e.jsx("div",{className:"contacts-col-distance flex items-center justify-end gap-1 text-text-muted",children:null!=o&&e.jsxs(e.Fragment,{children:[e.jsx(y,{className:"w-3 h-3"}),e.jsx("span",{className:"type-data-xs tabular-nums",children:(R=o,R<1e3?`${Math.round(R)}m`:`${(R/1e3).toFixed(1)}km`)})]})}),e.jsx("div",{className:"contacts-col-centrality flex items-center justify-end gap-1",children:h>0&&e.jsxs(e.Fragment,{children:[e.jsx(d,{className:"w-3 h-3 text-accent-secondary"}),e.jsxs("span",{className:"type-data-xs tabular-nums text-text-muted",children:[(100*h).toFixed(0),"%"]})]})}),e.jsx("div",{className:"contacts-col-activity flex items-center justify-center",children:e.jsx(ye,{nodeHash:t,width:48,height:16})}),e.jsx("div",{className:"contacts-col-seen flex items-center justify-end",children:e.jsx("span",{className:"type-data-xs tabular-nums text-text-primary whitespace-nowrap",children:s.last_seen?V(s.last_seen):"—"})}),e.jsxs("div",{className:"contacts-col-actions flex items-center justify-end gap-1",children:[i&&e.jsx(e.Fragment,{children:X.has(t)?e.jsxs("div",{className:"flex items-center gap-1 text-accent-success",title:`RTT: ${X.get(t).rtt_ms.toFixed(0)}ms`,children:[e.jsx(m,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"type-data-xs tabular-nums hidden sm:inline",children:[X.get(t).snr_db.toFixed(1),"dB"]})]}):re.has(t)?e.jsx("span",{className:"text-red-400 text-[10px]",title:re.get(t),children:"✗"}):e.jsx("button",{onClick:e=>Se(t,e),disabled:null!==Z,className:"p-1 sm:p-1.5 rounded-lg text-text-muted/50 hover:text-accent-primary hover:bg-accent-primary/10 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",title:"Ping neighbor for updated signal info",children:Z===t?e.jsx(L,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 animate-spin"}):e.jsx(H,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})}),e.jsx("button",{onClick:e=>{e.stopPropagation(),x({hash:t,name:r})},className:"p-1 sm:p-1.5 rounded-lg text-text-muted/50 hover:text-red-400 hover:bg-red-500/10 transition-colors",title:"Remove contact",children:e.jsx(P,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]},t);var R,$})})]}):e.jsxs("div",{className:"roster-empty",children:[e.jsx(g,{className:"roster-empty-icon"}),e.jsx("div",{className:"type-label text-text-secondary",children:"No Contacts Discovered"}),e.jsx("div",{className:"type-data-xs text-text-muted mt-1",children:"Contacts will appear here as they advertise on the mesh network."})]})]}),e.jsx(te,{isOpen:!!o,title:"Remove Contact",message:`Are you sure you would like to remove ${(null==o?void 0:o.name)||"this contact"}?`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{o&&n(o.hash),x(null)},onCancel:()=>x(null)})]})}},Symbol.toStringTag,{value:"Module"}));export{Ce as C,ye as N,we as P}; diff --git a/frontend/dist/assets/Contacts-wP4j6lyB.js b/frontend/dist/assets/Contacts-wP4j6lyB.js new file mode 100644 index 00000000..57a87b45 --- /dev/null +++ b/frontend/dist/assets/Contacts-wP4j6lyB.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ContactsMapMapLibre-Ck1tw3wG.js","assets/vendor-react-CWPBVwgk.js","assets/vendor-core-XI_xDZ-M.js","assets/index-BlYVqXhs.js","assets/ConfirmModal-u7cxXX4i.js","assets/useThemeColors-f-o_FvwS.js","assets/SignalIndicator-QKnbwhAo.js","assets/HashBadge-Bq5n5xgM.js","assets/CollisionExplorerModal-DFHbJ8T7.js","assets/PageLayout-Kh569_kh.js","assets/maplibre-gl-B1CfjdFi.css","assets/index-BuNKvX_5.css","assets/leaflet-CIGW-MKW.css"])))=>i.map(i=>d[i]); +import{j as e,r as s,a8 as t,a4 as a,z as n,h as c,a9 as l,k as i,aa as r,Z as o,ab as d,T as x,D as m,_ as h,ac as p,ad as u,a7 as g,a3 as j,Y as N,a2 as b,ae as f,o as v,af as y,ag as w,U as C,ah as k,p as S,ai as M,X as L,aj as H,ak as P,al as F,am as E,an as R,ao as T,ap as _,aq as $,ar as O,as as A}from"./vendor-react-CWPBVwgk.js";import{y as D,z,w as G,A as U,B as W,C as K,E as B,g as I,F as V,f as q,G as J,H as Y,I as Z,e as Q,J as X,K as ee}from"./index-BlYVqXhs.js";import{a as se}from"./SignalIndicator-QKnbwhAo.js";import{_ as te}from"./deckgl-DTsmDcfs.js";import{c as ae,L as ne,T as ce,a as le}from"./recharts-cqZ_RWsW.js";import{H as ie}from"./HashBadge-Bq5n5xgM.js";import{C as re}from"./ConfirmModal-u7cxXX4i.js";import{C as oe}from"./CollisionExplorerModal-DFHbJ8T7.js";import{P as de,b as xe}from"./PageLayout-Kh569_kh.js";class me extends s.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){var s;return this.state.hasError?e.jsx("div",{className:"map-container-16-9 glass-card flex items-center justify-center",role:"alert","aria-live":"assertive",children:e.jsxs("div",{className:"text-center text-white/50 p-4",children:[e.jsx("p",{className:"text-lg mb-2",children:"Map failed to load"}),e.jsx("p",{className:"text-sm text-white/30",children:(null==(s=this.state.error)?void 0:s.message)||"Unknown error"}),e.jsx("p",{className:"text-xs text-white/20 mt-2",children:"Try refreshing the page or check your browser's WebGL support."})]})}):this.props.children}}const he=s.lazy(()=>te(()=>import("./ContactsMapMapLibre-Ck1tw3wG.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])));function pe({neighbors:t,localNode:a,localHash:n,onRemoveNode:c,selectedNodeHash:l,onNodeSelected:i,highlightedEdgeKey:r,highlightedGhost:o}){return e.jsx(me,{children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"map-container-16-9 glass-card flex items-center justify-center",role:"status","aria-live":"polite","aria-label":"Loading map",children:e.jsxs("div",{className:"text-white/50 flex items-center gap-3",children:[e.jsx("div",{className:"w-5 h-5 border-2 border-accent-primary border-t-transparent rounded-full animate-spin","aria-hidden":"true"}),e.jsx("span",{children:"Loading map..."})]})}),children:e.jsx(he,{neighbors:t,localNode:a,localHash:n,onRemoveNode:c,selectedNodeHash:l,onNodeSelected:i,highlightedEdgeKey:r,highlightedGhost:o})})})}function ue(e){return e>=.7?"text-accent-success":e>=.5?"text-accent-secondary":e>=.3?"text-signal-poor":"text-accent-danger"}function ge(e){return`${Math.round(100*e)}%`}function je(e,s){return s.has(e.toUpperCase())}const Ne=s.memo(function({path:s,isHighlighted:t,onHighlight:l,ghostPrefixes:i}){const r=function(s){return s>.2?{icon:e.jsx(x,{className:"w-3 h-3"}),color:"text-accent-success"}:s<-.2?{icon:e.jsx(n,{className:"w-3 h-3"}),color:"text-accent-danger"}:{icon:e.jsx(m,{className:"w-3 h-3"}),color:"text-text-muted"}}(s.observationTrend),h=s.weakestLinkKey&&s.weakestLinkConfidence<.5,p=s.hops.some(e=>je(e,i));return e.jsxs("div",{className:"flex items-center gap-3 p-2 rounded-md transition-colors cursor-pointer "+(t?"bg-accent-primary/20 border border-accent-primary/40":"hover:bg-white/5"),onClick:()=>l(t?null:s.weakestLinkKey),children:[e.jsx("div",{className:"flex-shrink-0 w-12 text-center py-1 rounded-md "+(u=s.healthScore,u>=.7?"bg-accent-success/10":u>=.5?"bg-accent-secondary/10":u>=.3?"bg-signal-poor/10":"bg-accent-danger/10"),children:e.jsx("span",{className:`text-xs font-semibold tabular-nums ${ue(s.healthScore)}`,children:ge(s.healthScore)})}),e.jsx("div",{className:"flex-1 flex items-center gap-0.5 overflow-x-auto min-w-0",children:s.hops.map((t,a)=>{var n;const l=je(t,i),r=h&&(null==(n=s.weakestLinkKey)?void 0:n.includes(t));return e.jsxs("span",{className:"flex items-center",children:[e.jsxs("span",{className:"text-[10px] font-mono px-1.5 py-0.5 rounded flex items-center gap-0.5 "+(l?"bg-accent-tertiary/20 text-accent-tertiary border border-accent-tertiary/30":r?"bg-accent-danger/20 text-accent-danger":"bg-white/10 text-text-secondary"),children:[l&&e.jsx(c,{className:"w-2.5 h-2.5"}),t]}),anew Set(p.map(e=>e.prefix.toUpperCase())),[p]),N=s.useMemo(()=>m.slice(0,o),[m,o]),b=s.useMemo(()=>0===m.length?null:{avgHealth:m.reduce((e,s)=>e+s.healthScore,0)/m.length,declining:m.filter(e=>e.observationTrend<-.2).length,weakLinks:m.filter(e=>e.weakestLinkConfidence<.5).length,pathsWithGhosts:m.filter(e=>e.hops.some(e=>j.has(e.toUpperCase()))).length},[m,j]),f=e=>{null==d||d(e)};return 0===m.length?null:e.jsxs("div",{className:"chart-container",children:[e.jsxs("button",{onClick:()=>g(!u),className:"w-full chart-header hover:bg-white/5 transition-colors rounded-t-lg cursor-pointer",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(t,{className:"chart-title-icon"}),"Path Health",e.jsxs("span",{className:"ml-2 text-[10px] font-normal text-text-muted",children:["(",m.length," paths)"]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[b&&e.jsxs("div",{className:"flex items-center gap-3 text-[10px]",children:[e.jsxs("span",{className:`tabular-nums ${ue(b.avgHealth)}`,children:["Avg: ",ge(b.avgHealth)]}),b.weakLinks>0&&e.jsxs("span",{className:"text-accent-danger flex items-center gap-1",children:[e.jsx(a,{className:"w-3 h-3"}),b.weakLinks," weak"]}),b.declining>0&&e.jsxs("span",{className:"text-signal-poor flex items-center gap-1",children:[e.jsx(n,{className:"w-3 h-3"}),b.declining," declining"]}),b.pathsWithGhosts>0&&e.jsxs("span",{className:"text-accent-tertiary flex items-center gap-1",children:[e.jsx(c,{className:"w-3 h-3"}),b.pathsWithGhosts," ghost"]})]}),u?e.jsx(l,{className:"w-4 h-4 text-text-muted"}):e.jsx(i,{className:"w-4 h-4 text-text-muted"})]})]}),u&&e.jsxs("div",{className:"p-3 pt-0 space-y-1",children:[h.totalPaths>0&&e.jsxs("div",{className:"flex items-center gap-3 text-[10px] text-text-muted pb-2 border-b border-white/5",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(r,{className:"w-3 h-3 text-accent-primary"}),e.jsx("span",{className:"text-text-secondary",children:h.totalPaths.toLocaleString()})," Viterbi decoded"]}),h.observationOverrideCount>0&&e.jsxs("span",{className:"text-accent-success",children:[Math.round(h.observationOverrideCount/h.totalPaths*100),"% observation override"]}),p.length>0&&e.jsxs("span",{className:"text-accent-tertiary flex items-center gap-1",children:[e.jsx(c,{className:"w-3 h-3"}),p.length," ghost",1!==p.length?"s":""]})]}),e.jsxs("div",{className:"flex items-center gap-4 text-[10px] text-text-muted pb-2 border-b border-white/5",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-accent-success"})," Healthy (≥70%)"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-accent-secondary"})," Fair (50-70%)"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-signal-poor"})," Weak (30-50%)"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"w-2 h-2 rounded-full bg-accent-danger"})," Critical (<30%)"]}),p.length>0&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(c,{className:"w-3 h-3 text-accent-tertiary"})," Ghost"]})]}),e.jsx("div",{className:"space-y-1 max-h-64 overflow-y-auto",children:N.map(s=>e.jsx(Ne,{path:s,isHighlighted:x===s.weakestLinkKey,onHighlight:f,ghostPrefixes:j},s.pathKey))}),m.length>o&&e.jsxs("div",{className:"text-center text-[10px] text-text-muted pt-2",children:["Showing top ",o," of ",m.length," paths"]})]})]})});function fe(e){switch(e){case"rf_intersection":return"RF Circle Intersection";case"weighted_centroid":return"Weighted Centroid";case"single_anchor":return"Single Anchor (less reliable)";default:return e}}const ve={confirmed:{label:"Confirmed",icon:e.jsx(u,{className:"w-3.5 h-3.5"}),borderClass:"border-accent-success/40",bgClass:"bg-accent-success/10",textClass:"text-accent-success",badgeClass:"bg-accent-success/20 text-accent-success"},likely:{label:"Likely",icon:e.jsx(g,{className:"w-3.5 h-3.5"}),borderClass:"border-accent-tertiary/30",bgClass:"bg-accent-tertiary/5",textClass:"text-accent-tertiary",badgeClass:"bg-accent-tertiary/20 text-accent-tertiary"},possible:{label:"Possible",icon:e.jsx(j,{className:"w-3.5 h-3.5"}),borderClass:"border-accent-secondary/20",bgClass:"bg-accent-secondary/5",textClass:"text-accent-secondary",badgeClass:"bg-accent-secondary/20 text-accent-secondary"},noise:{label:"Noise",icon:e.jsx(a,{className:"w-3.5 h-3.5"}),borderClass:"border-border-muted",bgClass:"bg-bg-card/30",textClass:"text-text-muted",badgeClass:"bg-bg-elevated text-text-muted"}};function ye({ghost:t,neighbors:n,isExpanded:o,onToggle:x,compact:m}){var h,p;const u=(null==(h=t.classification)?void 0:h.tier)??"noise",g=ve[u],j="clusterId"in(w=t)&&"temporal"in w;var w;const C=s.useMemo(()=>Array.from(t.commonNeighbors).map(e=>{var s;return{hash:e,name:null==(s=n[e])?void 0:s.name}}),[t.commonNeighbors,n]),k=t.estimatedLocation?t.estimatedLocation.uncertaintyM>=1e3?`±${(t.estimatedLocation.uncertaintyM/1e3).toFixed(1)}km`:`±${Math.round(t.estimatedLocation.uncertaintyM)}m`:null,S=j&&t.temporal?(M=t.temporal.consistency)>=.7?{label:"Steady",color:"text-accent-success"}:M>=.4?{label:"Regular",color:"text-accent-tertiary"}:M>=.2?{label:"Sporadic",color:"text-accent-secondary"}:{label:"Bursty",color:"text-signal-poor"}:null;var M;const L=j&&t.collisionCandidates&&t.collisionCandidates.length>0,H=L?t.collisionCandidates[0]:null;return m?e.jsxs("div",{className:"inline-flex items-center gap-1.5 px-2 py-1 rounded bg-bg-elevated/50 text-xs",children:[e.jsx("span",{className:"font-mono font-medium text-text-secondary",children:t.prefix.toUpperCase()}),e.jsx("span",{className:"text-text-muted",children:t.observationCount})]}):e.jsxs("div",{className:ae("rounded-lg border transition-all duration-150",g.borderClass,g.bgClass),children:[e.jsxs("button",{onClick:x,className:"w-full flex items-center gap-3 px-3 py-2 text-left hover:bg-white/5 rounded-lg",children:[e.jsx(c,{className:ae("w-5 h-5 flex-shrink-0",g.textClass)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-sm font-semibold text-text-primary",children:t.prefix.toUpperCase()}),e.jsx("span",{className:ae("px-1.5 py-0.5 rounded text-xs font-medium",g.badgeClass),children:g.label})]}),e.jsx("div",{className:ae("text-xs mt-0.5",g.textClass),children:(null==(p=t.classification)?void 0:p.reason)??"Unknown"}),e.jsxs("div",{className:"flex items-center gap-3 text-xs text-text-muted mt-1",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(r,{className:"w-3 h-3"}),t.observationCount]}),e.jsxs("span",{children:[(100*t.confidence).toFixed(0),"%"]}),t.commonNeighbors.size>0&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(N,{className:"w-3 h-3"}),t.commonNeighbors.size]}),t.estimatedLocation&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(b,{className:"w-3 h-3"}),k]}),S&&e.jsxs("span",{className:ae("flex items-center gap-1",S.color),children:[e.jsx(d,{className:"w-3 h-3"}),S.label]}),L&&e.jsxs("span",{className:"flex items-center gap-1 text-signal-poor",children:[e.jsx(f,{className:"w-3 h-3"}),"Collision?"]})]})]}),o?e.jsx(l,{className:"w-4 h-4 text-text-muted"}):e.jsx(i,{className:"w-4 h-4 text-text-muted"})]}),o&&e.jsxs("div",{className:"px-3 pb-3 space-y-3 border-t border-border-muted/50 mt-1 pt-3",children:[L&&H&&e.jsx("div",{className:"p-2 rounded bg-signal-poor/10 border border-signal-poor/30",children:e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx(f,{className:"w-4 h-4 text-signal-poor flex-shrink-0"}),e.jsxs("div",{children:[e.jsx("div",{className:"text-signal-poor font-medium",children:"Possible collision with known node"}),e.jsx("div",{className:"text-text-secondary mt-0.5",children:H.knownNodeName?e.jsxs("span",{children:["May match ",e.jsx("span",{className:"font-medium",children:H.knownNodeName})," ","(",(100*H.collisionProbability).toFixed(0),"% probability)"]}):e.jsxs("span",{children:["May match ",e.jsx(ie,{hash:H.knownNodeHash,size:"sm",className:"inline"})," ","(",(100*H.collisionProbability).toFixed(0),"% probability)"]})}),H.evidence&&e.jsxs("div",{className:"text-text-muted mt-1 text-[10px]",children:[H.evidence.sharedEdgeCount>0&&e.jsxs("span",{className:"mr-2",children:[H.evidence.sharedEdgeCount," shared edges"]}),void 0!==H.evidence.distanceKm&&e.jsxs("span",{className:"mr-2",children:[H.evidence.distanceKm.toFixed(1),"km apart"]}),H.evidence.withinUncertainty&&e.jsx("span",{className:"text-accent-secondary",children:"Within uncertainty radius"})]})]})]})}),t.estimatedLocation?e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(b,{className:"w-4 h-4 text-accent-primary mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"text-text-primary font-medium",children:[t.estimatedLocation.lat.toFixed(5),", ",t.estimatedLocation.lon.toFixed(5)]}),e.jsxs("div",{className:"text-text-muted",children:["Uncertainty: ",k]}),j&&t.location&&e.jsxs("div",{className:"mt-1 text-text-muted",children:[e.jsxs("div",{children:["Method: ",fe(t.location.method)]}),t.location.anchors&&t.location.anchors.length>0&&e.jsxs("div",{children:[t.location.anchors.length," anchor",1!==t.location.anchors.length?"s":""," used"," · ",(100*t.location.locationConfidence).toFixed(0),"% confidence"]})]})]})]}):e.jsxs("div",{className:"flex items-center gap-2 text-xs text-text-muted",children:[e.jsx(a,{className:"w-4 h-4 text-signal-poor"}),"Location unknown (neighbors lack coordinates)"]}),j&&t.temporal&&e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(d,{className:"w-4 h-4 text-text-muted mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"text-text-primary font-medium",children:["Temporal Pattern: ",e.jsx("span",{className:null==S?void 0:S.color,children:null==S?void 0:S.label})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-x-4 gap-y-0.5 mt-1 text-text-muted",children:[e.jsxs("span",{children:["Distinct hours: ",t.temporal.distinctHours]}),e.jsxs("span",{children:["Distinct days: ",t.temporal.distinctDays]}),e.jsxs("span",{children:["Burstiness: ",(100*t.temporal.burstiness).toFixed(0),"%"]}),e.jsxs("span",{children:["Consistency: ",(100*t.temporal.consistency).toFixed(0),"%"]}),e.jsxs("span",{children:["Last 24h: ",t.temporal.last24HourCount," obs"]}),e.jsxs("span",{children:["Active hours: ",t.temporal.activeHoursLast24,"/24"]})]})]})]}),!j&&e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(v,{className:"w-4 h-4 text-text-muted mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"text-text-primary",children:["First seen: ",U(t.firstSeen)," ago"]}),e.jsxs("div",{className:"text-text-muted",children:["Last seen: ",U(t.lastSeen)," ago"]})]})]}),j&&e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(y,{className:"w-4 h-4 text-text-muted mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"text-text-primary",children:["Active period: ",U(t.firstSeen)," – ",U(t.lastSeen)," ago"]}),t.temporal&&e.jsxs("div",{className:"text-text-muted",children:["Obs/hour avg: ",t.temporal.observationsPerHour.toFixed(1)]})]})]}),C.length>0&&e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(N,{className:"w-4 h-4 text-text-muted mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"text-xs",children:[e.jsxs("div",{className:"text-text-muted mb-1",children:["Adjacent to ",C.length," known node",1!==C.length?"s":"",":"]}),e.jsxs("div",{className:"flex flex-wrap gap-1",children:[C.slice(0,5).map(({hash:s})=>e.jsx(ie,{hash:s,size:"sm"},s)),C.length>5&&e.jsxs("span",{className:"text-text-muted",children:["+",C.length-5," more"]})]})]})]}),j&&t.validationStages&&e.jsxs("div",{className:"pt-2 border-t border-border-muted/30",children:[e.jsx("div",{className:"text-[10px] text-text-muted mb-1.5 uppercase tracking-wide",children:"Validation Stages"}),e.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[e.jsx(we,{label:"Candidates",passed:t.validationStages.candidateExhaustion}),e.jsx(we,{label:"Temporal",passed:t.validationStages.temporalConsistency}),e.jsx(we,{label:"Topology",passed:t.validationStages.topologicalFit}),e.jsx(we,{label:"Location",passed:t.validationStages.locationPlausible})]})]}),t.classification&&!j&&e.jsx("div",{className:"pt-2 border-t border-border-muted/30",children:e.jsxs("div",{className:"flex flex-wrap gap-1",children:[t.classification.criteria.hasVeryHighObservations&&e.jsx("span",{className:"px-1.5 py-0.5 rounded text-[10px] bg-accent-success/20 text-accent-success",children:"200+ obs"}),t.classification.criteria.hasHighObservations&&!t.classification.criteria.hasVeryHighObservations&&e.jsx("span",{className:"px-1.5 py-0.5 rounded text-[10px] bg-accent-tertiary/20 text-accent-tertiary",children:"50+ obs"}),t.classification.criteria.hasHighConfidence&&e.jsx("span",{className:"px-1.5 py-0.5 rounded text-[10px] bg-accent-success/20 text-accent-success",children:"70%+ conf"}),t.classification.criteria.hasCommonNeighbors&&e.jsx("span",{className:"px-1.5 py-0.5 rounded text-[10px] bg-accent-primary/20 text-accent-primary",children:"2+ neighbors"}),t.classification.criteria.hasGoodLocation&&e.jsx("span",{className:"px-1.5 py-0.5 rounded text-[10px] bg-accent-primary/20 text-accent-primary",children:"good loc"}),t.classification.criteria.isRecent&&e.jsx("span",{className:"px-1.5 py-0.5 rounded text-[10px] bg-text-muted/20 text-text-muted",children:"recent"})]})}),j&&t.upgradeRequirements&&t.upgradeRequirements.length>0&&"confirmed"!==u&&e.jsxs("div",{className:"pt-2 border-t border-border-muted/30",children:[e.jsx("div",{className:"text-[10px] text-text-muted mb-1 uppercase tracking-wide",children:"To upgrade tier:"}),e.jsx("ul",{className:"text-xs text-text-secondary space-y-0.5",children:t.upgradeRequirements.slice(0,3).map((s,t)=>e.jsxs("li",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"text-accent-tertiary",children:"•"})," ",s]},t))})]})]})]})}function we({label:s,passed:t}){return e.jsxs("span",{className:ae("inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-medium",t?"bg-accent-success/20 text-accent-success":"bg-bg-elevated text-text-muted"),children:[t?e.jsx(w,{className:"w-2.5 h-2.5"}):e.jsx(C,{className:"w-2.5 h-2.5"}),s]})}function Ce({neighbors:t,className:n,onGhostSelect:r}){const o=G(),d=z(),[x,N]=s.useState(new Set),[b,f]=s.useState("actionable"),[v,y]=s.useState(!1),[w,C]=s.useState(!0),k=s.useMemo(()=>{const e=Date.now();return o.filter(s=>!function(e,s){return s-1e3*e.lastSeen>6048e5}(s,e))},[o]),S=s.useMemo(()=>{const e=Array.from(x);return e.length>0?e[0]:null},[x]),M=s.useMemo(()=>S?k.find(e=>e.prefix===S)??null:null,[S,k]);s.useEffect(()=>{r&&r(M&&!w?{prefix:M.prefix,commonNeighbors:Array.from(M.commonNeighbors),estimatedLocation:M.estimatedLocation}:null)},[M,w,r]),s.useEffect(()=>{w&&N(new Set)},[w]);const{confirmed:L,likely:H,possible:P,noise:F,actionableCount:E}=s.useMemo(()=>{var e;const s=[],t=[],a=[],n=[];for(const l of k)switch((null==(e=l.classification)?void 0:e.tier)??"noise"){case"confirmed":s.push(l);break;case"likely":t.push(l);break;case"possible":a.push(l);break;case"noise":n.push(l)}const c=(e,s)=>s.observationCount-e.observationCount;return s.sort(c),t.sort(c),a.sort(c),n.sort(c),{confirmed:s,likely:t,possible:a,noise:n,actionableCount:s.length+t.length}},[k]);if(0===k.length)return null;const R=e=>{N(s=>s.has(e)?new Set:new Set([e]))},T="all"===b,_=L.length+H.length+(T?P.length:0)+(v?F.length:0);return e.jsxs("div",{className:n,children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(c,{className:"chart-title-icon"}),"Ghost Buster",E>0&&e.jsxs("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium bg-accent-success/20 text-accent-success",children:[E," actionable"]}),w&&k.length>0&&e.jsxs("span",{className:"text-xs text-text-muted ml-2",children:["(",k.length," total)"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[!w&&e.jsxs("button",{onClick:()=>f(e=>"actionable"===e?"all":"actionable"),className:ae("flex items-center gap-1.5 px-2 py-1 rounded text-xs transition-colors","all"===b?"bg-accent-primary/20 text-accent-primary":"bg-bg-elevated text-text-muted hover:text-text-secondary"),children:[e.jsx(h,{className:"w-3 h-3"}),"actionable"===b?"Actionable":"All"]}),e.jsx("button",{onClick:()=>C(e=>!e),className:"flex items-center gap-1 px-2 py-1 rounded text-xs bg-bg-elevated text-text-muted hover:text-text-secondary transition-colors",title:w?"Expand panel":"Minimize panel",children:w?e.jsx(p,{className:"w-3 h-3"}):e.jsx(m,{className:"w-3 h-3"})})]})]}),w?e.jsxs("div",{className:"px-4 py-3 flex items-center gap-3 text-xs cursor-pointer hover:bg-white/5 transition-colors sm:px-5",onClick:()=>C(!1),children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[L.length>0&&e.jsxs("span",{className:"flex items-center gap-1 text-accent-success",children:[e.jsx(u,{className:"w-3 h-3"}),L.length," confirmed"]}),H.length>0&&e.jsxs("span",{className:"flex items-center gap-1 text-accent-tertiary",children:[e.jsx(g,{className:"w-3 h-3"}),H.length," likely"]}),P.length>0&&e.jsxs("span",{className:"text-accent-secondary",children:[P.length," possible"]}),F.length>0&&e.jsxs("span",{className:"text-text-muted",children:[F.length," noise"]})]}),e.jsx("span",{className:"text-text-muted ml-auto",children:"Click to expand"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"px-4 py-2 flex items-center gap-3 text-xs border-b border-border-muted/30 sm:px-5",children:[e.jsxs("span",{className:"text-text-muted",children:[d.pathsWithGhosts.toLocaleString()," / ",d.totalPaths.toLocaleString()," paths"]}),e.jsx("span",{className:"text-text-muted",children:"•"}),e.jsxs("div",{className:"flex items-center gap-2",children:[L.length>0&&e.jsxs("span",{className:"text-accent-success",children:[L.length," confirmed"]}),H.length>0&&e.jsxs("span",{className:"text-accent-tertiary",children:[H.length," likely"]}),P.length>0&&e.jsxs("span",{className:"text-accent-secondary",children:[P.length," possible"]}),F.length>0&&e.jsxs("span",{className:"text-text-muted",children:[F.length," noise"]})]})]}),e.jsxs("div",{className:"px-4 py-3 space-y-4 sm:px-5",children:[L.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs text-accent-success",children:[e.jsx(u,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"font-medium",children:["Confirmed Repeaters (",L.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:L.map(s=>e.jsx(ye,{ghost:s,neighbors:t,isExpanded:x.has(s.prefix),onToggle:()=>R(s.prefix)},s.prefix))})]}),H.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs text-accent-tertiary",children:[e.jsx(g,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"font-medium",children:["Likely Repeaters (",H.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:H.map(s=>e.jsx(ye,{ghost:s,neighbors:t,isExpanded:x.has(s.prefix),onToggle:()=>R(s.prefix)},s.prefix))})]}),T&&P.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs text-accent-secondary",children:[e.jsx(j,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"font-medium",children:["Possible (",P.length,")"]})]}),e.jsxs("div",{className:"space-y-2",children:[P.slice(0,10).map(s=>e.jsx(ye,{ghost:s,neighbors:t,isExpanded:x.has(s.prefix),onToggle:()=>R(s.prefix)},s.prefix)),P.length>10&&e.jsxs("div",{className:"text-xs text-text-muted text-center py-1",children:["+",P.length-10," more possible nodes"]})]})]}),F.length>0&&"all"===b&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("button",{onClick:()=>y(!v),className:"flex items-center gap-2 text-xs text-text-muted hover:text-text-secondary transition-colors",children:[v?e.jsx(l,{className:"w-3.5 h-3.5"}):e.jsx(i,{className:"w-3.5 h-3.5"}),e.jsx(a,{className:"w-3.5 h-3.5"}),e.jsxs("span",{children:["Noise (",F.length,")"]})]}),v&&e.jsx("div",{className:"flex flex-wrap gap-1",children:F.map(s=>e.jsx(ye,{ghost:s,neighbors:t,isExpanded:!1,onToggle:()=>{},compact:!0},s.prefix))})]}),"actionable"===b&&0===E&&e.jsxs("div",{className:"text-center py-6 text-sm text-text-muted",children:[e.jsx(c,{className:"w-8 h-8 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"No confirmed or likely repeaters yet."}),e.jsxs("p",{className:"text-xs mt-1",children:[P.length+F.length," prefixes need more evidence."]}),e.jsxs("button",{onClick:()=>f("all"),className:"mt-3 text-accent-primary hover:underline",children:["View all ",k.length," discovered nodes"]})]}),d.observationOverrideCount>0&&_>0&&e.jsxs("div",{className:"pt-2 border-t border-border-muted/30 text-xs text-text-muted",children:[e.jsx("span",{className:"text-accent-primary",children:d.observationOverrideCount})," observation overrides • Avg confidence: ",e.jsxs("span",{className:"text-accent-secondary",children:[(100*d.avgPathConfidence).toFixed(0),"%"]})]})]})]})]})}const ke="var(--sparkline-critical)",Se="var(--sparkline-poor)",Me="var(--sparkline-fair)",Le="var(--sparkline-good)",He="var(--sparkline-excellent)",Pe="var(--text-muted)";function Fe({active:s,payload:t}){if(!s||!t||!t.length)return null;const a=t[0].payload,n=new Date(a.timestamp),c=`${(n.getMonth()+1).toString().padStart(2,"0")}/${n.getDate().toString().padStart(2,"0")}`;return e.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded px-1.5 py-0.5 text-[10px] shadow-xl",children:[e.jsx("span",{className:"text-text-muted",children:c}),e.jsx("span",{className:"ml-1.5 font-semibold tabular-nums",children:a.count})]})}const Ee=s.memo(function({nodeHash:s,width:t=60,height:a=20,color:n,showArea:c=!0,showTooltip:l=!1,className:i=""}){const r=W(s),o=K(),d=n??(r.length>0?function(e){if(0===e.length)return ke;const s=e.slice(-4),t=s.reduce((e,s)=>e+s.count,0),a=t/s.length,n=e.reduce((e,s)=>e+s.count,0)/e.length;if(0===t)return ke;if(n>0){const e=a/n;return e>=1.2?He:e>=.8?Le:e>=.4?Me:e>=.1?Se:ke}return t>=10?He:t>=5?Le:t>=2?Me:t>=1?Se:ke}(r):Pe),x="number"==typeof t?t:60,m=a;if(r.length<2){const s=o?Pe:ke;return e.jsx("div",{className:`flex items-center justify-center ${i}`,style:{width:x,height:m,color:s},children:e.jsx("svg",{width:x,height:m,viewBox:`0 0 ${x} ${m}`,preserveAspectRatio:"none",children:e.jsx("line",{x1:4,y1:m/2,x2:x-4,y2:m/2,stroke:"currentColor",strokeWidth:1.5,strokeDasharray:"3,2",className:o?"animate-pulse":""})})})}return e.jsx("div",{className:i,style:{width:x,height:m},children:e.jsxs(ne,{data:r,width:x,height:m,margin:{top:1,right:1,bottom:1,left:1},children:[l&&e.jsx(ce,{content:e.jsx(Fe,{}),cursor:{stroke:"rgba(255,255,255,0.2)",strokeWidth:1}}),e.jsx(le,{type:"monotone",dataKey:"count",stroke:d,strokeWidth:1.5,dot:!1,isAnimationActive:!1})]})})}),Re=s.memo(function({hash:t,className:a="",size:n="sm"}){const c=B(),l=z(),[i,o]=s.useState(!1),d=s.useMemo(()=>I(t),[t]),x=s.useMemo(()=>d?c.find(e=>e.prefix===d)??null:null,[d,c]),m=l.totalPaths>0&&l.avgPathConfidence>=.7,h=s.useCallback(e=>{e.preventDefault(),e.stopPropagation(),o(!0)},[]),p=s.useCallback(()=>{o(!1)},[]);if(!x)return null;const u="sm"===n?"w-3.5 h-3.5":"w-4 h-4",j=m?"text-accent-tertiary hover:text-accent-tertiary hover:bg-accent-tertiary/10 focus:ring-accent-tertiary/50":"text-signal-fair hover:text-accent-secondary hover:bg-signal-fair/10 focus:ring-signal-fair/50",N=m?`Prefix conflict resolved by Viterbi HMM (${(100*l.avgPathConfidence).toFixed(0)}% confidence)`:`Prefix conflict: ${x.candidateCount} nodes share prefix "${d}"`;return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:h,className:`inline-flex items-center justify-center p-0.5 rounded focus:outline-none focus:ring-2 transition-colors cursor-pointer touch-manipulation ${j} ${a}`,title:N,"aria-label":`View prefix conflict for ${d}${m?" (Viterbi resolved)":""}`,children:m?e.jsxs("span",{className:"relative",children:[e.jsx(r,{className:u}),e.jsx(g,{className:"absolute -bottom-0.5 -right-0.5 w-2 h-2 text-accent-success"})]}):e.jsx(k,{className:u})}),e.jsx(oe,{isOpen:i,prefix:x.prefix,candidateHashes:x.candidateHashes,onClose:p})]})});function Te(e,s,t,a){const n=(t-e)*Math.PI/180,c=(a-s)*Math.PI/180,l=Math.sin(n/2)*Math.sin(n/2)+Math.cos(e*Math.PI/180)*Math.cos(t*Math.PI/180)*Math.sin(c/2)*Math.sin(c/2);return 2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))*6371e3}const _e=Object.freeze(Object.defineProperty({__proto__:null,default:function(){const{stats:t}=V(),a=q(),n=J(),c=Y(),l=Z(),i=Q(),r=G(),[o,x]=s.useState(null),[m,h]=s.useState("lastHeard"),[p,u]=s.useState("desc"),[j,f]=s.useState(""),[y,w]=s.useState(!1),[C,k]=s.useState(null),[D,z]=s.useState(null),[U,W]=s.useState(null),[K,B]=s.useState(null),[I,te]=s.useState(new Map),[ae,ne]=s.useState(new Map),ce=s.useMemo(()=>(null==t?void 0:t.neighbors)??{},[null==t?void 0:t.neighbors]),le=s.useMemo(()=>Object.fromEntries(Object.entries(ce).filter(([e])=>!a.has(e))),[ce,a]),oe=s.useMemo(()=>{var e;return(null==(e=null==t?void 0:t.config)?void 0:e.repeater)?{latitude:t.config.repeater.latitude,longitude:t.config.repeater.longitude,name:t.config.node_name||"Local Node"}:void 0},[t]),me=null==t?void 0:t.local_hash,he=s.useMemo(()=>{const e=new Map;if(!(null==oe?void 0:oe.latitude)||!(null==oe?void 0:oe.longitude))return e;for(const[s,t]of Object.entries(le))t.latitude&&t.longitude&&0!==t.latitude&&0!==t.longitude?e.set(s,Te(oe.latitude,oe.longitude,t.latitude,t.longitude)):e.set(s,null);return e},[le,oe]),{neighborHashSet:ue,neighborSignalMap:ge}=s.useMemo(()=>{const e=new Set,s=new Map;for(const t of i)e.add(t.hash),s.set(t.hash,{avgRssi:t.avgRssi,avgSnr:t.avgSnr});return{neighborHashSet:e,neighborSignalMap:s}},[i]),je=s.useMemo(()=>{const e=j.toLowerCase().trim(),s="neighbor"===e||"neighbors"===e,t=y||s;return Object.fromEntries(Object.entries(le).filter(([a,n])=>{if(t&&!ue.has(a))return!1;if(s)return!0;if(!e)return!0;const c=(n.node_name||n.name||"").toLowerCase(),l=a.slice(2,4).toLowerCase();return c.includes(e)||l.includes(e)||a.toLowerCase().includes(e)}))},[le,j,y,ue]),Ne=s.useMemo(()=>Object.entries(je).sort(([e,s],[t,a])=>{let n=0;switch(m){case"lastHeard":n=(s.last_seen||0)-(a.last_seen||0);break;case"distance":{const s=he.get(e)??null,a=he.get(t)??null;n=null===s&&null===a?0:null===s?1:null===a?-1:s-a;break}case"centrality":n=(l.get(e)||0)-(l.get(t)||0)}return"desc"===p?-n:n}),[je,m,p,he,l]),fe=Ne.filter(([,e])=>e.latitude&&e.longitude&&0!==e.latitude&&0!==e.longitude).length,ve=s.useMemo(()=>new Set(c),[c]),ye=s.useCallback(e=>{m===e?u(e=>"desc"===e?"asc":"desc"):(h(e),u("desc"))},[m]),we=s.useCallback(e=>{const s=le[e];(null==s?void 0:s.latitude)&&(null==s?void 0:s.longitude)&&0!==s.latitude&&0!==s.longitude&&k(e)},[le]),ke=s.useCallback(()=>{k(null)},[]),Se=s.useCallback(async(e,s)=>{if(s.stopPropagation(),!K){B(e),te(s=>{const t=new Map(s);return t.delete(e),t}),ne(s=>{const t=new Map(s);return t.delete(e),t});try{const s=e.startsWith("0x")?e.slice(0,4):`0x${e.slice(0,2)}`,t=await X(s,30);t.success&&t.data?(te(s=>new Map(s).set(e,t.data)),setTimeout(()=>{te(s=>{const t=new Map(s);return t.delete(e),t})},1e4)):(ne(s=>new Map(s).set(e,t.error||"Ping failed")),setTimeout(()=>{ne(s=>{const t=new Map(s);return t.delete(e),t})},5e3))}catch(t){const s=t instanceof Error?t.message:"Ping failed";ne(t=>new Map(t).set(e,s)),setTimeout(()=>{ne(s=>{const t=new Map(s);return t.delete(e),t})},5e3)}finally{B(null)}}},[K]);return e.jsxs(de,{children:[e.jsx(xe,{title:"Contacts",icon:e.jsx(N,{}),controls:e.jsxs("div",{className:"flex items-baseline gap-3 sm:gap-4",children:[e.jsxs("span",{className:"roster-title tabular-nums",children:[Ne.length," node",1!==Ne.length?"s":""]}),fe>0&&e.jsxs("span",{className:"roster-title flex items-baseline gap-1.5 tabular-nums",children:[e.jsx(b,{className:"w-3.5 h-3.5 relative top-[2px]"}),fe," with location"]})]})}),e.jsx("div",{className:"relative",children:e.jsx(pe,{neighbors:le,localNode:oe,localHash:me,onRemoveNode:n,selectedNodeHash:C,onNodeSelected:ke,highlightedEdgeKey:D,highlightedGhost:U})}),e.jsx(be,{maxPaths:10,highlightedEdge:D,onHighlightEdge:z}),r.length>0&&e.jsx("div",{className:"chart-container",children:e.jsx(Ce,{neighbors:le,onGhostSelect:W})}),e.jsxs("div",{className:"chart-container",children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(N,{className:"chart-title-icon"}),"Discovered Contacts"]}),e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2",children:[ue.size>0&&e.jsxs("button",{onClick:()=>w(!y),className:"flex items-center gap-1 px-1.5 sm:px-2.5 py-1.5 text-xs rounded-lg transition-colors "+(y?"bg-accent-success/20 text-accent-success border border-accent-success/30":"text-text-muted hover:text-text-secondary hover:bg-white/5 border border-transparent"),title:y?"Show all contacts":"Show only MeshCore neighbors (direct RF contact)",children:[e.jsx(S,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Neighbors"}),e.jsx("span",{className:"sm:hidden tabular-nums",children:ue.size})]}),e.jsxs("div",{className:"relative",children:[e.jsx(M,{className:"absolute left-2 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-text-muted"}),e.jsx("input",{type:"text",name:"contact-search",id:"contact-search",autoComplete:"off",value:j,onChange:e=>f(e.target.value),placeholder:"Search...",className:"w-20 sm:w-28 lg:w-32 pl-6 sm:pl-7 pr-6 py-1.5 text-xs bg-white/5 border border-white/10 rounded-lg text-text-primary placeholder:text-text-muted focus:outline-none focus:border-accent-primary/50"}),j&&e.jsx("button",{onClick:()=>{f(""),"neighbor"!==j.toLowerCase().trim()&&"neighbors"!==j.toLowerCase().trim()||w(!1)},className:"absolute right-1.5 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-secondary p-0.5",children:e.jsx(L,{className:"w-3 h-3"})})]}),e.jsxs("div",{className:"flex items-center gap-0.5 sm:gap-1",children:[e.jsxs("button",{onClick:()=>ye("lastHeard"),className:"flex items-center gap-1 p-1.5 sm:px-2 sm:py-1.5 text-xs rounded-lg transition-colors "+("lastHeard"===m?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary hover:bg-white/5"),title:"Sort by last heard",children:[e.jsx(v,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Recent"}),"lastHeard"===m&&e.jsx(H,{className:"w-3 h-3 "+("asc"===p?"rotate-180":"")})]}),e.jsxs("button",{onClick:()=>ye("distance"),className:"flex items-center gap-1 p-1.5 sm:px-2 sm:py-1.5 text-xs rounded-lg transition-colors "+("distance"===m?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary hover:bg-white/5"),title:"Sort by distance",children:[e.jsx(P,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Distance"}),"distance"===m&&e.jsx(H,{className:"w-3 h-3 "+("asc"===p?"rotate-180":"")})]}),e.jsxs("button",{onClick:()=>ye("centrality"),className:"flex items-center gap-1 p-1.5 sm:px-2 sm:py-1.5 text-xs rounded-lg transition-colors "+("centrality"===m?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary hover:bg-white/5"),title:"Sort by network centrality",children:[e.jsx(d,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Centrality"}),"centrality"===m&&e.jsx(H,{className:"w-3 h-3 "+("asc"===p?"rotate-180":"")})]})]})]})]}),Ne.length>0?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hidden sm:grid contacts-grid-header border-b border-border-subtle/50 px-3 py-2 text-[10px] uppercase tracking-wider text-text-muted",children:[e.jsx("div",{className:"contacts-col-node",children:"Node"}),e.jsx("div",{className:"contacts-col-signal text-right",children:"Signal"}),e.jsx("div",{className:"contacts-col-distance text-right",children:"Distance"}),e.jsx("div",{className:"contacts-col-centrality text-right",children:"Centrality"}),e.jsx("div",{className:"contacts-col-activity text-center",children:"Activity"}),e.jsx("div",{className:"contacts-col-seen text-right",children:"Last Seen"}),e.jsx("div",{className:"contacts-col-actions"})]}),e.jsx("div",{className:"divide-y divide-border-subtle/30",children:Ne.map(([s,t])=>{var a;const n=t.latitude&&t.longitude&&0!==t.latitude&&0!==t.longitude,c=t.node_name||t.name||"Unknown",i=ve.has(s),r=ue.has(s),o=he.get(s),m=l.get(s)||0,h=r?ge.get(s):void 0,p=r&&h,u=null==(a=t.contact_type)?void 0:a.toLowerCase(),j="room server"===u||"room_server"===u||"room"===u||"server"===u,N="companion"===u||"client"===u||"cli"===u,b=t.is_repeater||"repeater"===u||"rep"===u,f=r?"direct":"flood",v=r?"Direct RF contact (zero-hop neighbor)":"Flood routing (multi-hop via mesh)";return e.jsxs("div",{className:`contacts-grid-row ${i?"bg-amber-500/5 border-l-2 border-l-amber-400":""} ${n?"cursor-pointer hover:bg-white/[0.02]":""}`,onClick:()=>we(s),children:[e.jsxs("div",{className:"contacts-col-node flex items-center gap-2 min-w-0",children:[p&&null!==(null==h?void 0:h.avgSnr)?e.jsx("div",{className:"w-2 h-2 rounded-full flex-shrink-0 self-center "+(w=h.avgSnr,void 0===w?"bg-[var(--signal-unknown)]":w>=5?"bg-[var(--signal-excellent)]":w>=0?"bg-[var(--signal-good)]":w>=-5?"bg-[var(--signal-fair)]":w>=-10?"bg-[var(--signal-poor)]":"bg-[var(--signal-critical)]")}):e.jsx("div",{className:"w-2 flex-shrink-0"}),e.jsx("div",{className:"roster-icon flex-shrink-0",title:v,children:j&&b?e.jsxs("div",{className:"relative w-5 h-5",children:[e.jsx(F,{className:"w-5 h-5 absolute inset-0 text-accent-secondary"}),e.jsx(E,{className:"w-2.5 h-2.5 absolute -bottom-0.5 -right-0.5 text-accent-primary"})]}):j?e.jsx(F,{className:"w-5 h-5 text-accent-secondary"}):N?e.jsx(R,{className:"w-5 h-5 text-text-muted"}):b?"direct"===f?e.jsx(T,{className:"w-5 h-5 text-accent-success"}):e.jsx(E,{className:"w-5 h-5 text-accent-tertiary"}):e.jsx(R,{className:"w-5 h-5 text-text-muted"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 overflow-hidden",children:[e.jsx("span",{className:"roster-title truncate",title:c,children:c}),r&&e.jsx("span",{className:"type-badge px-1.5 py-0.5 rounded flex-shrink-0",style:{backgroundColor:"rgba(113, 152, 114, 0.2)",color:"var(--accent-success)"},children:"NBR"}),i&&e.jsxs("span",{className:"type-badge px-1.5 py-0.5 rounded flex items-center gap-1 flex-shrink-0",style:{backgroundColor:"rgba(223, 188, 114, 0.2)",color:"var(--accent-secondary)"},children:[e.jsx(_,{className:"w-3 h-3"}),"HUB"]}),b&&e.jsx("span",{className:"pill-tag flex-shrink-0",children:"RPT"})]}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[e.jsx(ie,{hash:s,size:"xs",prefixLength:8,suffixLength:6}),e.jsx(Re,{hash:s})]})]})]}),e.jsxs("div",{className:"contacts-col-signal flex items-center justify-end gap-2",children:[p&&null!==(null==h?void 0:h.avgRssi)&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(se,{rssi:h.avgRssi,className:"w-3.5 h-3.5"}),e.jsx("span",{className:"type-data-xs tabular-nums text-text-muted",children:Math.round(h.avgRssi)})]}),p&&null!==(null==h?void 0:h.avgSnr)&&e.jsxs("span",{className:"type-data-xs tabular-nums text-text-muted",children:[h.avgSnr.toFixed(1)," dB"]})]}),e.jsx("div",{className:"contacts-col-distance flex items-center justify-end gap-1 text-text-muted",children:null!=o&&e.jsxs(e.Fragment,{children:[e.jsx(P,{className:"w-3 h-3"}),e.jsx("span",{className:"type-data-xs tabular-nums",children:(y=o,y<1e3?`${Math.round(y)}m`:`${(y/1e3).toFixed(1)}km`)})]})}),e.jsx("div",{className:"contacts-col-centrality flex items-center justify-end gap-1",children:m>0&&e.jsxs(e.Fragment,{children:[e.jsx(d,{className:"w-3 h-3 text-accent-secondary"}),e.jsxs("span",{className:"type-data-xs tabular-nums text-text-muted",children:[(100*m).toFixed(0),"%"]})]})}),e.jsx("div",{className:"contacts-col-activity flex items-center justify-center",children:e.jsx(Ee,{nodeHash:s,width:48,height:16})}),e.jsx("div",{className:"contacts-col-seen flex items-center justify-end",children:e.jsx("span",{className:"type-data-xs tabular-nums text-text-primary whitespace-nowrap",children:t.last_seen?ee(t.last_seen):"—"})}),e.jsxs("div",{className:"contacts-col-actions flex items-center justify-end gap-1",children:[r&&e.jsx(e.Fragment,{children:I.has(s)?e.jsxs("div",{className:"flex items-center gap-1 text-accent-success",title:`RTT: ${I.get(s).rtt_ms.toFixed(0)}ms`,children:[e.jsx(g,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"type-data-xs tabular-nums hidden sm:inline",children:[I.get(s).snr_db.toFixed(1),"dB"]})]}):ae.has(s)?e.jsx("span",{className:"text-red-400 text-[10px]",title:ae.get(s),children:"✗"}):e.jsx("button",{onClick:e=>Se(s,e),disabled:null!==K,className:"p-1 sm:p-1.5 rounded-lg text-text-muted/50 hover:text-accent-primary hover:bg-accent-primary/10 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",title:"Ping neighbor for updated signal info",children:K===s?e.jsx($,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 animate-spin"}):e.jsx(O,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})}),e.jsx("button",{onClick:e=>{e.stopPropagation(),x({hash:s,name:c})},className:"p-1 sm:p-1.5 rounded-lg text-text-muted/50 hover:text-red-400 hover:bg-red-500/10 transition-colors",title:"Remove contact",children:e.jsx(A,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]},s);var y,w})})]}):e.jsxs("div",{className:"roster-empty",children:[e.jsx(N,{className:"roster-empty-icon"}),e.jsx("div",{className:"type-label text-text-secondary",children:"No Contacts Discovered"}),e.jsx("div",{className:"type-data-xs text-text-muted mt-1",children:"Contacts will appear here as they advertise on the mesh network."})]})]}),e.jsx(re,{isOpen:!!o,title:"Remove Contact",message:`Are you sure you would like to remove ${(null==o?void 0:o.name)||"this contact"}?`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{o&&n(o.hash),x(null)},onCancel:()=>x(null)})]})}},Symbol.toStringTag,{value:"Module"}));export{_e as C,Ee as N,Re as P}; diff --git a/frontend/dist/assets/ContactsMapMapLibre-BQo_-BEP.js b/frontend/dist/assets/ContactsMapMapLibre-BQo_-BEP.js deleted file mode 100644 index 5f337814..00000000 --- a/frontend/dist/assets/ContactsMapMapLibre-BQo_-BEP.js +++ /dev/null @@ -1 +0,0 @@ -import{r as A,b as e,j as t,a7 as r,a8 as n,b2 as o,b3 as i,h as a,al as s,W as l,o as c,af as u,a2 as d,b4 as f,am as g,an as h,aG as m,ag as b,O as p,$ as x,aa as v,b5 as w,b6 as y,b7 as k,ak as C,b8 as B,b9 as D,ba as E,bb as M,bc as Q,bd as N,be as j,c as P,bf as F,X as S,bg as T,a5 as I,aX as R,bh as L,a_ as _,a$ as H,b1 as z,aZ as G,bi as U,bj as O}from"./vendor-react-CUlQ5-Td.js";import"./maplibre-gl-WBl_4I3M.js";import{K as Y,L as V,w as W,z as Z,u as J,aq as K,s as X,ar as q,as as $,e as AA,at as eA,au as tA}from"./index-C1whtcFB.js";import{C as rA}from"./ConfirmModal-DLMcH5KX.js";import{c as nA}from"./recharts-7RsRrQtf.js";import{g as oA,h as iA,i as aA,j as sA}from"./useThemeColors-8RSyMp_o.js";import{P as lA,N as cA}from"./Contacts-CZV5Ovbv.js";import{M as uA}from"./deckgl-MTXp-Y3t.js";import"./vendor-core-XI_xDZ-M.js";import"./SignalIndicator-DOiETQwB.js";import"./HashBadge-Do84dDmK.js";import"./CollisionExplorerModal-BU96fXkT.js";import"./leaflet-ChRwnWLk.js";import"./PageLayout-CViR4hDG.js";function dA(A,e){const t=Math.max(5,Math.min(A,300)),r=Math.log(5),n=Math.log(300);return 1+(Math.log(t)-r)/(n-r)*5}function fA({label:A,icon:e,status:n,detail:o}){return t.jsxs("div",{className:nA("flex items-center gap-3 py-3 px-4 rounded-xl transition-all duration-300","active"===n&&"bg-accent-primary/10","complete"===n&&"bg-accent-success/10","pending"===n&&"opacity-40"),children:[t.jsx("div",{className:nA("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0 transition-all duration-300","active"===n&&"bg-accent-primary/20","complete"===n&&"bg-accent-success/20","pending"===n&&"bg-white/5"),children:"complete"===n?t.jsx(r,{className:"w-4 h-4 text-accent-success"}):"active"===n?t.jsx(s,{className:"w-4 h-4 animate-spin text-accent-primary"}):t.jsx("span",{className:"text-text-muted",children:e})}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:nA("text-sm font-medium transition-colors","active"===n&&"text-accent-primary","complete"===n&&"text-accent-success","pending"===n&&"text-text-muted"),children:A}),o&&"pending"!==n&&t.jsx("div",{className:"text-xs text-text-muted mt-0.5 truncate",children:o})]})]})}const gA=A.memo(function({isOpen:s,currentStep:l,packetCount:c,onClose:u}){if(A.useEffect(()=>{if(!s)return;const A=A=>{"Escape"===A.key&&u&&u()};window.addEventListener("keydown",A);const e=document.body.style.overflow,t=document.body.style.position,r=document.body.style.width,n=document.body.style.top,o=window.scrollY;return document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%",document.body.style.top=`-${o}px`,()=>{window.removeEventListener("keydown",A),document.body.style.overflow=e,document.body.style.position=t,document.body.style.width=r,document.body.style.top=n,window.scrollTo(0,o)}},[s,u]),!s)return null;const d="complete"===l,f=A=>{const e=["fetching","analyzing","building","discovering","complete"],t=e.indexOf(l),r=e.indexOf(A);return r0?`${c.toLocaleString()} packets`:"Loading database..."}),t.jsx(fA,{label:"Analyzing Database",icon:t.jsx(i,{className:"w-4 h-4"}),status:f("analyzing"),detail:"Processing packet paths"}),t.jsx(fA,{label:"Building Topology",icon:t.jsx(n,{className:"w-4 h-4"}),status:f("building"),detail:"Computing mesh edges"}),t.jsx(fA,{label:"Discovering Nodes",icon:t.jsx(a,{className:"w-4 h-4"}),status:f("discovering"),detail:"Viterbi HMM ghost detection"})]}),t.jsx("p",{className:"text-xs text-text-muted text-center mt-5",children:"This may take a few seconds..."})]})})]}),document.body)}),hA={nodeFill:"#F5F5F0",nodeStroke:"#4A5568",localColor:"#FBBF24",hubColor:"#8B7BAD",mobileColor:"#F97316",roomServerColor:"#E17899",neighborColor:"#FBBF24",edges:{rest:"#4B4B4B",restBright:"#616161",restDim:"#3F3F3F",hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:"#8A8A8A",hoverNeighbor:"#FBBF24",neighborRest:"#6B7280",neighborHover:"#FBBF24",highlight:"#FFD700"},edgeOpacity:.82};function mA(){if("undefined"==typeof window)return hA;const A=oA(),e=iA();return{nodeFill:A.nodeFill,nodeStroke:A.nodeStroke,localColor:A.localColor,hubColor:A.hubColor,mobileColor:A.mobileColor,roomServerColor:A.roomColor,neighborColor:A.neighborColor,edges:{rest:e.rest,restBright:e.restBright,restDim:e.restDim,hoverDirect:e.hoverDirect,hoverLoop:e.hoverLoop,hoverStandard:e.hoverStandard,hoverNeighbor:e.hoverNeighbor,neighborRest:hA.edges.neighborRest,neighborHover:hA.edges.neighborHover,highlight:e.highlight},edgeOpacity:hA.edgeOpacity}}const bA=2e3;function pA({text:A}){return t.jsxs("span",{className:"group relative cursor-help",children:[t.jsx(m,{className:"w-3.5 h-3.5 text-text-muted"}),t.jsx("div",{className:"absolute bottom-full left-0 mb-1 hidden group-hover:block w-48 p-2 text-[11px] leading-snug rounded-lg z-10 bg-tooltip-bg border border-border-subtle shadow-lg",children:A})]})}function xA(A){const e=new Date(1e3*A);return`${(e.getMonth()+1).toString().padStart(2,"0")}/${e.getDate().toString().padStart(2,"0")}`}function vA({hash:e,hashPrefix:n,name:o,isHub:i,isGateway:a,isBackbone:m,isZeroHop:b,isMobile:p,isRoomServer:x,isStale:v,lastSeenTimestamp:w,centrality:y,affinity:k,meanSnr:C,meanRssi:B,neighbor:D,onRemove:E,txDelayRec:M,onPingResult:Q}){const N=aA(),[j,P]=A.useState(!1),[F,S]=A.useState(!1),[T,I]=A.useState(null),[R,L]=A.useState(null),_=A.useCallback(async()=>{if(!F){S(!0),L(null),I(null);try{const A=e.startsWith("0x")?e.slice(0,4):`0x${e.slice(0,2)}`,t=await Y(A,30);t.success&&t.data?(I(t.data),null==Q||Q(t.data)):L(t.error||"Ping failed")}catch(A){L(A instanceof Error?A.message:"Ping failed")}finally{S(!1)}}},[e,F,Q]),H=b?"Direct":(null==k?void 0:k.typicalHopPosition)?`${k.typicalHopPosition}-hop`:null,z=M&&!M.insufficientData,G={hub:{bg:"bg-amber-500/20",text:"text-amber-400",title:"Hub: High-connectivity node that bridges many paths"},backbone:{bg:"bg-purple-500/20",text:"text-purple-400",title:"Backbone: Critical relay with high traffic"},relay:{bg:"bg-cyan-500/20",text:"text-cyan-400",title:"Relay: Standard forwarding node"},edge:{bg:"bg-gray-500/20",text:"text-gray-400",title:"Edge: Peripheral node"}},U={high:{bg:"bg-green-500/20",text:"text-green-400",title:"1000+ packets"},medium:{bg:"bg-amber-500/20",text:"text-amber-400",title:"500-999 packets"},low:{bg:"bg-red-500/20",text:"text-red-400",title:"100-499 packets"},insufficient:{bg:"bg-gray-500/20",text:"text-gray-400",title:"Insufficient data"}};return t.jsxs("div",{className:"w-[240px] pr-2",children:[t.jsx("div",{className:"text-[14px] font-semibold text-text-primary leading-tight truncate mb-1",children:o}),t.jsxs("div",{className:"flex items-center gap-1 flex-wrap mb-1.5",children:[t.jsx("code",{className:"font-mono text-[10px] text-text-secondary bg-white/[0.08] px-1 py-0.5 rounded",children:n}),t.jsx("button",{onClick:async()=>{try{await navigator.clipboard.writeText(e),P(!0),setTimeout(()=>P(!1),1500)}catch(A){const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy"),P(!0),setTimeout(()=>P(!1),1500)}catch{}document.body.removeChild(t)}},className:"p-0.5 hover:bg-white/10 rounded transition-colors",title:"Copy full hash",children:j?t.jsx(r,{className:"w-3 h-3 text-accent-success"}):t.jsx(l,{className:"w-3 h-3 text-text-secondary"})}),t.jsx(lA,{hash:e,size:"sm"}),H&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded "+(b?"bg-amber-400/90 text-gray-900":"bg-white/[0.15] text-white"),children:H}),D.is_repeater&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-cyan-500/20 text-cyan-400",children:"Rptr"}),i&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded",style:{backgroundColor:N.hubColor,color:"#fff"},title:"Hub: ≥10% of last-hop traffic",children:"Hub"}),a&&!i&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded",style:{backgroundColor:N.hubColor,color:"#fff",opacity:.8},title:"Gateway: 7-10% of last-hop traffic",children:"Gate"}),m&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-purple-500/80 text-white",title:"Backbone",children:"Bone"}),p&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-orange-500/25 text-orange-300",children:"Mobile"}),x&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-amber-500/25 text-amber-400",children:"Room"}),v&&w&&t.jsxs("span",{className:"px-1 py-0.5 text-[9px] font-medium rounded bg-gray-500/30 text-gray-300",title:"Neighbor not heard in 7+ days",children:["Idle ",xA(w)]})]}),t.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-text-secondary mb-1.5",children:[t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(c,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsx("span",{className:"font-mono",children:V(D.last_seen)})]}),(null==k?void 0:k.distanceMeters)&&t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(u,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:(O=k.distanceMeters,null===O?"—":O<1e3?`${Math.round(O)}m`:`${(O/1e3).toFixed(1)}km`)})]}),D.latitude&&D.longitude&&0!==D.latitude&&0!==D.longitude&&t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(d,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsxs("span",{className:"font-mono text-text-muted",children:[D.latitude.toFixed(2),", ",D.longitude.toFixed(2)]})]})]}),t.jsx("div",{className:"mb-1.5",style:{width:224},children:t.jsx(cA,{nodeHash:e,width:224,height:26,showArea:!0,showTooltip:!0})}),t.jsxs("div",{className:"flex gap-3 text-[10px] mb-1.5",children:[t.jsxs("div",{className:"flex-1 space-y-0.5",children:[t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"Packets"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:(null==k?void 0:k.frequency)||0})]}),b&&void 0!==C&&t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"SNR"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[C.toFixed(1)," dB"]})]}),z&&M.networkRole&&t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"Role"}),t.jsx("span",{className:`text-[9px] font-bold uppercase px-1 py-0.5 rounded ${G[M.networkRole].bg} ${G[M.networkRole].text}`,title:G[M.networkRole].title,children:M.networkRole})]})]}),t.jsxs("div",{className:"flex-1 space-y-0.5",children:[t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"Adverts"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:D.advert_count||0})]}),b&&void 0!==B&&t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"RSSI"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[Math.round(B)," dBm"]})]}),z&&M.dataConfidence&&t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"Data"}),t.jsx("span",{className:`text-[9px] font-bold uppercase px-1 py-0.5 rounded ${U[M.dataConfidence].bg} ${U[M.dataConfidence].text}`,title:U[M.dataConfidence].title,children:M.dataConfidence})]})]})]}),z&&t.jsxs("div",{className:"flex items-center gap-2 text-[10px] mb-1.5 py-1 px-1.5 bg-amber-400/5 rounded",children:[t.jsx(f,{className:"w-3 h-3 text-amber-400 shrink-0"}),t.jsx("span",{className:"text-text-muted",children:"TxDelay"}),t.jsxs("div",{className:"flex gap-3 flex-1",children:[t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("span",{className:"text-text-muted",children:"F"}),t.jsxs("span",{className:"font-mono font-semibold text-amber-400",children:["×",(M.floodFactor??M.txDelayFactor).toFixed(1)]})]}),t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("span",{className:"text-text-muted",children:"D"}),t.jsxs("span",{className:"font-mono font-semibold text-amber-400",children:["×",(M.directFactor??M.directTxDelayFactor).toFixed(1)]})]})]})]}),t.jsxs("div",{className:"flex items-center justify-between pt-1 border-t border-white/[0.08]",children:[b?t.jsxs("button",{onClick:_,disabled:F,className:"flex items-center gap-1 py-0.5 text-[10px] text-text-secondary hover:text-accent-primary hover:bg-accent-primary/10 rounded transition-colors disabled:opacity-50",title:"Ping neighbor",children:[F?t.jsx(s,{className:"w-3 h-3 animate-spin"}):t.jsx(g,{className:"w-3 h-3"}),t.jsx("span",{children:"Ping"})]}):t.jsx("div",{}),E&&t.jsx("button",{onClick:E,className:"p-1 text-text-secondary hover:text-red-400 hover:bg-red-500/10 rounded transition-colors",title:"Remove from contacts",children:t.jsx(h,{className:"w-3.5 h-3.5"})})]}),T&&t.jsxs("div",{className:"mt-1 pt-1 border-t border-white/[0.08] text-[10px]",children:[t.jsxs("div",{className:"flex items-center gap-1 text-accent-success mb-0.5",children:[t.jsx(r,{className:"w-3 h-3"}),t.jsx("span",{className:"font-medium",children:"Ping OK"})]}),t.jsxs("div",{className:"flex gap-3",children:[t.jsxs("div",{className:"flex-1 space-y-0.5",children:[t.jsxs("div",{className:"flex justify-between",children:[t.jsx("span",{className:"text-text-muted",children:"RTT"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[T.rtt_ms.toFixed(0)," ms"]})]}),t.jsxs("div",{className:"flex justify-between",children:[t.jsx("span",{className:"text-text-muted",children:"RSSI"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[T.rssi," dBm"]})]})]}),t.jsxs("div",{className:"flex-1 space-y-0.5",children:[t.jsxs("div",{className:"flex justify-between",children:[t.jsx("span",{className:"text-text-muted",children:"SNR"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[T.snr_db.toFixed(1)," dB"]})]}),t.jsxs("div",{className:"flex justify-between",children:[t.jsx("span",{className:"text-text-muted",children:"Hops"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:T.path.length})]})]})]})]}),R&&t.jsxs("div",{className:"mt-1.5 pt-1.5 border-t border-white/[0.08] text-[10px] text-red-400",children:["⚠ ",R]})]});var O}function wA({showTopology:A,validatedPolylineCount:e,filteredNeighborCount:r,hasLocalNode:n,meshTopology:o,zeroHopNeighbors:i,neighborsWithLocation:s}){const l=aA(),c=W(),u=Z(),d=c.filter(A=>A.isLikelyReal).length,f=function(A){let e=0;for(const t of A.txDelayRecommendations.values())"backbone"===t.networkRole&&e++;return e}(o);return t.jsxs("div",{className:"map-control-glass text-xs",style:{padding:"0.625rem"},children:[t.jsxs("div",{className:"text-text-secondary font-medium mb-1.5 flex items-center gap-1",children:["Nodes",t.jsx(pA,{text:"Node type shown by shape. Yellow = direct RF neighbor."})]}),t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",backgroundColor:l.nodeFill}}),t.jsx("span",{className:"text-text-muted",children:"Node"}),t.jsx(pA,{text:"Standard mesh node. Can be a repeater, client, or companion device."})]}),t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",backgroundColor:l.hubColor}}),t.jsx("span",{className:"text-text-muted",children:"Hub"}),t.jsx(pA,{text:"Network hub (≥10% of last-hop traffic). Hubs are central to mesh traffic flow."})]}),(g=s,g.some(([,A])=>{var e;const t=null==(e=A.contact_type)?void 0:e.toLowerCase();return"room server"===t||"room_server"===t||"room"===t||"server"===t})&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(b,{className:"w-3 h-3 flex-shrink-0",style:{color:l.roomColor},strokeWidth:2.5}),t.jsx("span",{className:"text-text-muted",children:"Room"}),t.jsx(pA,{text:"Room Server identity. Hosts a chat room that clients can sync messages with."})]})),t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(p,{className:"w-3 h-3 flex-shrink-0",style:{color:l.localColor},strokeWidth:2.5}),t.jsx("span",{className:"text-text-muted",children:"Local"}),t.jsx(pA,{text:"Your repeater. This is the node running pyMC_Repeater that you're connected to."})]}),i.size>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded flex-shrink-0",style:{width:"12px",height:"8px",backgroundColor:l.neighborColor}}),t.jsx("span",{className:"text-text-muted",children:"Neighbor"}),t.jsx(pA,{text:"Zero-hop direct RF contact. Color indicates we receive their ADVERTs directly."})]}),o.gatewayNodes.length>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",backgroundColor:l.hubColor,opacity:.7}}),t.jsx("span",{className:"text-text-muted",children:"Gateway"}),t.jsx(pA,{text:"Significant traffic forwarder (7-10% of last-hop traffic). Gateways relay substantial traffic to the local node."})]}),f>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",backgroundColor:"rgb(168, 85, 247)",opacity:.8}}),t.jsx("span",{className:"text-text-muted",children:"Backbone"}),t.jsx(pA,{text:"Critical relay with 4+ neighbors and high betweenness centrality. Backbone nodes carry the majority of mesh traffic."})]}),o.mobileNodes.length>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",background:"transparent",border:`4px solid ${l.mobileColor}`,boxSizing:"border-box"}}),t.jsx("span",{className:"text-text-muted",children:"Mobile"}),t.jsx(pA,{text:"Volatile node that frequently appears/disappears from paths. Likely a portable or vehicle-mounted device."})]}),d>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(a,{className:"w-3 h-3 flex-shrink-0",style:{color:"var(--accent-tertiary)"},strokeWidth:2.5}),t.jsxs("span",{className:"text-text-muted",children:["Ghost (",d,")"]}),t.jsx(pA,{text:"Unknown repeater discovered via Viterbi HMM path analysis. These nodes appear in paths but aren't in our neighbor table."})]})]}),A&&e>0&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"text-text-secondary font-medium mt-2 pt-2 border-t border-white/10 mb-1 flex items-center gap-1",children:["Topology",t.jsx(pA,{text:"Links with 5+ validations. Thickness = relative strength."})]}),t.jsxs("div",{className:"flex flex-col gap-0.5 text-text-muted",children:[t.jsxs("div",{className:"flex justify-between tabular-nums",children:[t.jsx("span",{children:"Nodes"}),t.jsx("span",{className:"text-text-secondary",children:r+(n?1:0)})]}),o.hubNodes.length>0&&t.jsxs("div",{className:"flex justify-between tabular-nums",children:[t.jsx("span",{children:"Hubs"}),t.jsx("span",{style:{color:hA.hubColor},children:o.hubNodes.length})]})]}),o.loops.length>0&&t.jsx("div",{className:"mt-1.5 pt-1.5 border-t border-white/10",children:t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(x,{className:"w-3 h-3 flex-shrink-0",style:{color:hA.edges.hoverLoop}}),t.jsxs("div",{className:"flex flex-col",children:[t.jsxs("span",{style:{color:hA.edges.hoverLoop},className:"font-medium",children:[o.loops.length," ",1===o.loops.length?"Loop":"Loops"]}),t.jsx("span",{className:"text-text-muted text-[10px] leading-tight",children:"Redundant paths"})]})]})}),u.totalPaths>0&&t.jsx("div",{className:"mt-1.5 pt-1.5 border-t border-white/10",children:t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(v,{className:"w-3 h-3 flex-shrink-0",style:{color:"var(--accent-primary)"}}),t.jsxs("div",{className:"flex flex-col",children:[t.jsxs("span",{style:{color:"var(--accent-primary)"},className:"font-medium",children:[u.totalPaths.toLocaleString()," Viterbi"]}),t.jsx("span",{className:"text-text-muted text-[10px] leading-tight",children:"HMM decoded paths"})]})]})})]})]});var g}const yA="rgba(251, 191, 36, 0.2)";function kA({isDeepLoading:A,showDeepAnalysisModal:e,onDeepAnalysis:r,showTopology:o,onToggleTopology:i,hasValidatedPolylines:a,showNeighborLines:s,onToggleNeighborLines:l,hasNeighborPolylines:c,showNodes:u,onToggleNodes:f,soloHubs:g,onToggleSoloHubs:h,hasHubNodes:m,soloDirect:b,onToggleSoloDirect:p,hasZeroHopNeighbors:x,showCoverage:v,onToggleCoverage:Q,show3DTerrain:N,onToggle3DTerrain:j,isFullscreen:P,onToggleFullscreen:F}){return t.jsx(t.Fragment,{children:t.jsxs("div",{className:"absolute top-3 right-3 z-[600] map-controls-container sm:top-4 sm:right-4",children:[t.jsxs("div",{className:"map-controls-row map-controls-primary",children:[t.jsxs("button",{onClick:r,disabled:A||e,className:"map-control-glass px-2.5 py-1.5 sm:px-3 sm:py-2 flex items-center gap-1.5 sm:gap-2 transition-colors hover:bg-white/10 disabled:opacity-50 disabled:cursor-not-allowed",title:"Deep Analysis - Load full packet history and rebuild topology","aria-label":"Deep Analysis",children:[t.jsx("span",{className:"map-control-label text-xs font-medium text-text-primary",children:"Deep Analysis"}),t.jsx(w,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 text-accent-primary"})]}),a&&t.jsx("button",{onClick:i,className:"map-control-btn "+(o?"map-control-glass-active":"map-control-glass"),style:o?{backgroundColor:"rgba(74, 222, 128, 0.2)"}:void 0,title:o?"Hide topology lines":"Show topology lines","aria-label":o?"Hide topology":"Show topology","aria-pressed":o,children:o?t.jsx(n,{className:"map-control-icon text-green-400"}):t.jsx(y,{className:"map-control-icon text-text-secondary"})})]}),t.jsxs("div",{className:"map-controls-row map-controls-secondary",children:[c&&t.jsx("button",{onClick:l,className:"map-control-btn "+(s?"map-control-glass-active":"map-control-glass"),style:s?{backgroundColor:yA}:void 0,title:s?"Hide neighbor lines":"Show neighbor lines","aria-label":s?"Hide neighbor lines":"Show neighbor lines","aria-pressed":s,children:t.jsx(k,{className:"map-control-icon "+(s?"text-amber-400":"text-text-secondary")})}),t.jsx("button",{onClick:f,className:"map-control-btn "+(u?"map-control-glass-active":"map-control-glass"),style:u?{backgroundColor:"rgba(99, 102, 241, 0.2)"}:void 0,title:u?"Hide all nodes":"Show all nodes","aria-label":u?"Hide nodes":"Show nodes","aria-pressed":u,children:u?t.jsx(d,{className:"map-control-icon text-indigo-400"}):t.jsx(y,{className:"map-control-icon text-text-secondary"})}),m&&t.jsx("button",{onClick:h,className:"map-control-btn "+(g?"map-control-glass-active":"map-control-glass"),style:g?{backgroundColor:yA}:void 0,title:g?"Show all nodes":"Solo hubs & connections","aria-label":g?"Show all nodes":"Solo hubs","aria-pressed":g,children:t.jsx(C,{className:"map-control-icon "+(g?"text-amber-400":"text-text-secondary")})}),x&&t.jsx("button",{onClick:p,className:"map-control-btn "+(b?"map-control-glass-active":"map-control-glass"),style:b?{backgroundColor:"rgba(67, 56, 202, 0.35)"}:void 0,title:b?"Show all nodes":"Solo direct (0-hop) nodes","aria-label":b?"Show all nodes":"Solo direct neighbors","aria-pressed":b,children:t.jsx(B,{className:"map-control-icon "+(b?"text-indigo-400":"text-text-secondary")})}),t.jsx("button",{onClick:j,className:"map-control-btn "+(N?"map-control-glass-active":"map-control-glass"),style:N?{backgroundColor:"rgba(45, 212, 191, 0.2)"}:void 0,title:N?"Disable 3D terrain":"Enable 3D terrain","aria-label":N?"Disable 3D terrain":"Enable 3D terrain","aria-pressed":N,children:t.jsx(D,{className:"map-control-icon "+(N?"text-teal-400":"text-text-secondary")})}),t.jsx("button",{onClick:F,className:"map-control-btn map-control-glass",title:P?"Exit fullscreen":"Fullscreen","aria-label":P?"Exit fullscreen":"Enter fullscreen","aria-pressed":P,children:P?t.jsx(E,{className:"map-control-icon text-text-secondary"}):t.jsx(M,{className:"map-control-icon text-text-secondary"})})]})]})})}const CA="#fe8019";function BA({isActive:e,onClick:r,brightness:n=.7,onBrightnessChange:o}){const[i,a]=A.useState(!1),[s,l]=A.useState(!1);A.useEffect(()=>{if(i&&!e){l(!0);const A=setTimeout(()=>l(!1),80);return()=>clearTimeout(A)}},[i,e]);const c=Math.max(.01,Math.min(1,n)),u=c<.999,d=c>.011,f=i&&!e;return t.jsxs("button",{onClick:r,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),className:"flex items-center gap-2 w-full text-left transition-colors hover:bg-white/5 "+(e?"map-control-glass-active":"map-control-glass"),style:{padding:"0.5rem 0.625rem",...e?{backgroundColor:"rgba(245, 158, 11, 0.15)"}:{}},title:e?"Configure wardriving coverage":"Show wardriving coverage",children:[t.jsx(Q,{className:"w-3.5 h-3.5 flex-shrink-0 transition-colors "+(e?"text-amber-400":"text-text-secondary"),style:f?{color:CA}:void 0}),t.jsx("span",{className:"font-medium "+(e?"text-amber-400":"text-text-secondary"),style:{fontSize:"0.75rem",lineHeight:1,transition:"none",...f?{fontFamily:"'Jacquard 12', serif",color:CA,transform:`scale(${s?1.595:1.45})`,transformOrigin:"left center"}:{}},children:"Wardrive"}),e&&o&&t.jsxs("div",{className:"ml-auto flex items-center gap-0.5",children:[t.jsx("button",{onClick:A=>{A.stopPropagation();const e=Math.max(.01,c-.2);null==o||o(e)},disabled:!d,className:"p-0.5 rounded transition-colors "+(d?"hover:bg-white/10 text-amber-400":"text-amber-400/30 cursor-not-allowed"),title:`Decrease opacity (${Math.round(100*c)}%)`,children:t.jsx(N,{className:"w-3.5 h-3.5"})}),t.jsx("button",{onClick:A=>{A.stopPropagation();const e=Math.min(1,c+.2);null==o||o(e)},disabled:!u,className:"p-0.5 rounded transition-colors "+(u?"hover:bg-white/10 text-amber-400":"text-amber-400/30 cursor-not-allowed"),title:`Increase opacity (${Math.round(100*c)}%)`,children:t.jsx(j,{className:"w-3.5 h-3.5"})})]})]})}function DA(A){let e=!0,t=-90,r=90,n=-180,o=180;for(const i of A.toLowerCase()){const A="0123456789bcdefghjkmnpqrstuvwxyz".indexOf(i);if(-1!==A)for(let i=4;i>=0;i--){const a=A>>i&1;if(e){const A=(n+o)/2;a?n=A:o=A}else{const A=(t+r)/2;a?t=A:r=A}e=!e}}return{lat:(t+r)/2,lon:(n+o)/2}}function EA(A){return Math.exp(-A*Math.LN2/7)}const MA="pymc-wardriving-url",QA="pymc-wardriving-enabled",NA="pymc-wardriving-brightness";function jA(A){"undefined"!=typeof localStorage&&(A?localStorage.setItem(MA,A):localStorage.removeItem(MA))}function PA(A){"undefined"!=typeof localStorage&&localStorage.setItem(QA,String(A))}function FA(){if("undefined"==typeof localStorage)return.7;const A=localStorage.getItem(NA);if(A){const e=parseFloat(A);if(!isNaN(e)&&e>=.01&&e<=1)return e}return.7}function SA(A,e=null){if(null!==A){const t=(Math.max(-12,Math.min(12,A))+12)/24;return null!==e?.8*t+(Math.max(-120,Math.min(-50,e))+120)/70*.2:t}return null!==e?(Math.max(-120,Math.min(-50,e))+120)/70:.5}const TA=P((A,e)=>({status:"idle",isVisible:"undefined"!=typeof localStorage&&"true"===localStorage.getItem(QA),coveragePoints:[],repeaters:[],error:null,stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},url:"undefined"==typeof localStorage?"":localStorage.getItem(MA)||"",brightness:FA(),isModalOpen:!1,openModal:()=>A({isModalOpen:!0}),closeModal:()=>A({isModalOpen:!1}),setUrl:e=>A({url:e}),setBrightness:e=>{const t=Math.max(.01,Math.min(1,e));!function(A){if("undefined"==typeof localStorage)return;const e=Math.max(.01,Math.min(1,A));localStorage.setItem(NA,String(e))}(t),A({brightness:t})},toggleVisibility:()=>{const t=!e().isVisible;PA(t),A({isVisible:t})},setVisible:e=>{PA(e),A({isVisible:e})},loadCoverage:async e=>{if(!e.trim())return A({error:"Please enter a URL",status:"error"}),!1;try{new URL(e.trim())}catch{return A({error:"Invalid URL format",status:"error"}),!1}A({error:null,status:"connecting"});try{A({status:"loading"});const t=await async function(A){const e=`${A.replace(/\/+$/,"").replace(/\/get-nodes$/,"").replace(/\/get-samples$/,"")}/get-samples`,t=await async function(A,e={},t=8e3){const r=new AbortController,n=setTimeout(()=>r.abort(),t);try{return await fetch(A,{...e,signal:r.signal})}catch(o){if(o instanceof Error&&"AbortError"===o.name)throw new Error(`Connection timed out after ${t/1e3}s`);throw o}finally{clearTimeout(n)}}(e,{headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`Failed to fetch precise samples: ${t.status}`);return t.json()}(e.trim());if(!t||"object"!=typeof t)throw new Error("Invalid response from server");if(!Array.isArray(t.keys))throw new Error("No sample data found in response");A({status:"processing"});const r=function(A){var e;const t=[];for(const r of A.keys){if(!r.observed)continue;const{lat:A,lon:n}=DA(r.hash),o=parseInt(r.time,10),i=isNaN(o)?30:(Date.now()-o)/864e5,a=EA(i),s=SA(r.snr,r.rssi)*(.3+.7*a);t.push({lat:A,lon:n,successRate:r.observed?1:0,weight:s,totalSamples:1,ageDays:i,geohash:r.hash,repeaters:(null==(e=r.path)?void 0:e.map(A=>A.toLowerCase()))||[]})}return t}(t);if(0===r.length)throw new Error("No valid coverage points found");return A({coveragePoints:r,repeaters:[],stats:{coverageCount:r.length,repeaterCount:0,lastUpdated:new Date},status:"success",isVisible:!0,url:e.trim()}),jA(e.trim()),PA(!0),!0}catch(t){const e=t instanceof Error?t.message:"Failed to load coverage data";let r=e;return e.includes("timed out")?r="Connection timed out. Server may be unreachable or slow.":e.includes("Failed to fetch")||e.includes("NetworkError")?r="Could not connect to server. Check the URL and try again.":e.includes("CORS")?r="Server does not allow cross-origin requests.":e.includes("404")?r="Coverage endpoint not found. Check the URL.":(e.includes("ERR_NAME_NOT_RESOLVED")||e.includes("DNS"))&&(r="Server not found. Check the URL for typos."),A({error:r,status:"error"}),!1}},clearCoverage:()=>{A({coveragePoints:[],repeaters:[],stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},status:"idle",error:null,isVisible:!1,url:""}),jA(""),PA(!1)}}));function IA({status:A}){if("connecting"!==A&&"loading"!==A&&"processing"!==A)return null;const e={idle:"",connecting:"Connecting to server...",loading:"Fetching coverage data...",processing:"Processing coverage points...",success:"",error:""}[A];return e?t.jsxs("div",{className:"flex items-center gap-3 p-4 bg-amber-500/10 border border-amber-500/30 rounded-xl",children:[t.jsx("div",{className:"relative",children:t.jsx(s,{className:"w-5 h-5 text-amber-400 animate-spin"})}),t.jsxs("div",{className:"flex-1",children:[t.jsx("p",{className:"text-sm text-amber-400 font-medium",children:e}),t.jsx("div",{className:"mt-2 h-1 bg-amber-500/20 rounded-full overflow-hidden",children:t.jsx("div",{className:"h-full bg-amber-400 rounded-full transition-all duration-300",style:{width:"connecting"===A?"30%":"loading"===A?"60%":"90%"}})})]})]}):null}function RA(){const{isModalOpen:e,closeModal:n,status:i,isVisible:a,stats:l,error:c,url:u,brightness:d,loadCoverage:f,clearCoverage:g,toggleVisibility:m,setUrl:b,setBrightness:p}=TA(),x="connecting"===i||"loading"===i||"processing"===i,[w,k]=A.useState(u),C=A.useCallback(async()=>{await f(w)},[w,f]),B=A.useCallback(()=>{k(""),g()},[g]),D=A.useCallback(A=>{"Enter"!==A.key||A.shiftKey||x||(A.preventDefault(),C())},[C,x]),E=A.useCallback(A=>{const e=A.target.value;k(e),b(e)},[b]);if(!e)return null;const M=l.coverageCount>0,Q=w.trim().length>0&&!x;return t.jsxs("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center",children:[t.jsx("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-md",onClick:x?void 0:n}),t.jsxs("div",{className:"relative glass-card-elevated w-full max-w-md mx-4",children:[t.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-border-subtle",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:"p-2 rounded-lg bg-amber-500/20",children:t.jsx(F,{className:"w-5 h-5 text-amber-400"})}),t.jsxs("div",{children:[t.jsx("h2",{className:"text-lg font-semibold text-text-primary",children:"Wardriving Coverage"}),t.jsx("p",{className:"text-xs text-text-muted",children:"Overlay RF coverage heatmap"})]})]}),t.jsx("button",{onClick:n,disabled:x,className:"p-2 rounded-lg hover:bg-white/10 transition-colors disabled:opacity-50",children:t.jsx(S,{className:"w-5 h-5 text-text-secondary"})})]}),t.jsxs("div",{className:"p-4 space-y-4",children:[t.jsxs("div",{children:[t.jsx("label",{className:"block text-sm font-medium text-text-secondary mb-2",children:"Coverage Server URL"}),t.jsx("input",{type:"url",value:w,onChange:E,onKeyDown:D,placeholder:"https://coverage.wcmesh.com",className:"w-full px-4 py-3 bg-black/30 border border-border rounded-xl text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-amber-500/50 focus:border-amber-500/50 transition-all disabled:opacity-50",disabled:x}),t.jsx("p",{className:"mt-1.5 text-xs text-text-muted",children:"Enter the base URL of a wardriving coverage server (e.g., coverage.wcmesh.com)"})]}),t.jsx(IA,{status:i}),"error"===i&&c&&t.jsxs("div",{className:"flex items-start gap-3 p-3 bg-red-500/10 border border-red-500/30 rounded-xl",children:[t.jsx(T,{className:"w-5 h-5 text-red-400 flex-shrink-0 mt-0.5"}),t.jsxs("div",{children:[t.jsx("p",{className:"text-sm text-red-400 font-medium",children:"Connection Failed"}),t.jsx("p",{className:"text-xs text-red-400/80 mt-0.5",children:c})]})]}),"success"===i&&M&&t.jsxs("div",{className:"flex items-start gap-3 p-3 bg-green-500/10 border border-green-500/30 rounded-xl",children:[t.jsx(r,{className:"w-5 h-5 text-green-400 flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("p",{className:"text-sm text-green-400 font-medium",children:"Data Loaded Successfully"}),t.jsxs("p",{className:"text-xs text-green-400/80 mt-0.5",children:[l.coverageCount.toLocaleString()," coverage points • ",l.repeaterCount.toLocaleString()," repeaters"]})]})]}),M&&!x&&"success"!==i&&t.jsxs("div",{className:"flex items-start gap-3 p-3 bg-amber-500/10 border border-amber-500/30 rounded-xl",children:[t.jsx(I,{className:"w-5 h-5 text-amber-400 flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("p",{className:"text-sm text-amber-400 font-medium",children:"Coverage Data Loaded"}),t.jsxs("p",{className:"text-xs text-amber-400/80 mt-0.5",children:[l.coverageCount.toLocaleString()," points •",l.lastUpdated&&` Last updated ${l.lastUpdated.toLocaleTimeString()}`]})]})]}),M&&!x&&t.jsx("div",{className:"p-3 bg-black/20 border border-border-subtle rounded-xl",children:t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(j,{className:"w-4 h-4 flex-shrink-0 "+(d>.5?"text-amber-400":"text-text-muted")}),t.jsxs("div",{className:"flex-1",children:[t.jsxs("div",{className:"flex items-center justify-between mb-1",children:[t.jsx("span",{className:"text-xs text-text-secondary",children:"Brightness"}),t.jsxs("span",{className:"text-xs text-text-muted font-mono",children:[Math.round(100*d),"%"]})]}),t.jsx("input",{type:"range",min:"1",max:"100",value:100*d,onChange:A=>p(Number(A.target.value)/100),className:"w-full h-1.5 cursor-pointer accent-amber-400"})]})]})})]}),t.jsxs("div",{className:"flex items-center justify-between gap-3 p-4 border-t border-border-subtle",children:[t.jsx("div",{className:"flex items-center gap-2",children:M&&t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:m,disabled:x,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-text-secondary hover:text-text-primary hover:bg-white/5 rounded-lg transition-colors disabled:opacity-50",title:a?"Hide heatmap":"Show heatmap",children:a?t.jsxs(t.Fragment,{children:[t.jsx(y,{className:"w-3.5 h-3.5"})," Hide"]}):t.jsxs(t.Fragment,{children:[t.jsx(v,{className:"w-3.5 h-3.5"})," Show"]})}),t.jsxs("button",{onClick:B,disabled:x,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-red-400/80 hover:text-red-400 hover:bg-red-500/10 rounded-lg transition-colors disabled:opacity-50",title:"Clear coverage data",children:[t.jsx(h,{className:"w-3.5 h-3.5"})," Clear"]})]})}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("button",{onClick:n,disabled:x,className:"px-4 py-2 text-sm font-medium text-text-secondary hover:bg-white/10 rounded-lg transition-colors disabled:opacity-50",children:M?"Done":"Cancel"}),t.jsx("button",{onClick:C,disabled:!Q,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium bg-amber-500 hover:bg-amber-400 text-black rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:x?t.jsxs(t.Fragment,{children:[t.jsx(s,{className:"w-4 h-4 animate-spin"}),"Loading..."]}):M?t.jsxs(t.Fragment,{children:[t.jsx(o,{className:"w-4 h-4"}),"Refresh"]}):t.jsxs(t.Fragment,{children:[t.jsx(R,{className:"w-4 h-4"}),"Connect"]})})]})]})]})]})}var LA=function(A){var e,t=void 0!==(A=A||{})?A:{},r={};for(e in t)t.hasOwnProperty(e)&&(r[e]=t[e]);var n,o="";"undefined"!=typeof document&&document.currentScript&&(o=document.currentScript.src),o=0!==o.indexOf("blob:")?o.substr(0,o.lastIndexOf("/")+1):"",n=function(A,e,t){var r=new XMLHttpRequest;r.open("GET",A,!0),r.responseType="arraybuffer",r.onload=function(){if(200==r.status||0==r.status&&r.response)e(r.response);else{var n=U(A);n?e(n.buffer):t()}},r.onerror=t,r.send(null)};var i=t.print||function(){}.bind(),a=t.printErr||function(){}.bind();for(e in r)r.hasOwnProperty(e)&&(t[e]=r[e]);r=null,t.arguments&&t.arguments;var s=0,l=!1;function c(A){var e=t["_"+A];return e||tA("Assertion failed: "+("Cannot call unknown function "+A+", make sure it is exported")),e}var u,d,f,g,h,m,b,p="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function x(A,e){return A?function(A,e,t){for(var r=e+t,n=e;A[n]&&!(n>=r);)++n;if(n-e>16&&A.subarray&&p)return p.decode(A.subarray(e,n));for(var o="";e>10,56320|1023&l)}}else o+=String.fromCharCode((31&i)<<6|a)}else o+=String.fromCharCode(i)}return o}(f,A,e):""}function v(A,e){return A%e>0&&(A+=e-A%e),A}function w(A){u=A,t.HEAP8=d=new Int8Array(A),t.HEAP16=g=new Int16Array(A),t.HEAP32=h=new Int32Array(A),t.HEAPU8=f=new Uint8Array(A),t.HEAPU16=new Uint16Array(A),t.HEAPU32=new Uint32Array(A),t.HEAPF32=m=new Float32Array(A),t.HEAPF64=b=new Float64Array(A)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var y=t.TOTAL_MEMORY||33554432;function k(A){for(;A.length>0;){var e=A.shift();if("function"!=typeof e){var r=e.func;"number"==typeof r?void 0===e.arg?t.dynCall_v(r):t.dynCall_vi(r,e.arg):r(void 0===e.arg?null:e.arg)}else e()}}y=(u=t.buffer?t.buffer:new ArrayBuffer(y)).byteLength,w(u),h[7156]=5271536;var C=[],B=[],D=[],E=[];function M(A){C.unshift(A)}function Q(A){E.unshift(A)}var N=Math.abs,j=Math.ceil,P=Math.floor,F=Math.min,S=0,T=null;t.preloadedImages={},t.preloadedAudios={};var I,R,L=null,_="data:application/octet-stream;base64,";function H(A){return String.prototype.startsWith?A.startsWith(_):0===A.indexOf(_)}function z(){return d.length}L="data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAAQAAAAQAAAADAAAABgAAAAUAAAACAAAAAAAAAAIAAAADAAAAAQAAAAQAAAAGAAAAAAAAAAUAAAADAAAABgAAAAQAAAAFAAAAAAAAAAEAAAACAAAABAAAAAUAAAAGAAAAAAAAAAIAAAADAAAAAQAAAAUAAAACAAAAAAAAAAEAAAADAAAABgAAAAQAAAAGAAAAAAAAAAUAAAACAAAAAQAAAAQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAAAAAAEAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAYAAAAAAAAABQAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAYAAAAAAAAAAwAAAAIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFAAAABAAAAAAAAAABAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAYAAAAAAAAABAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAADAAAACAAAAAEAAAAHAAAABgAAAAkAAAAAAAAAAwAAAAIAAAACAAAABgAAAAoAAAALAAAAAAAAAAEAAAAFAAAAAwAAAA0AAAABAAAABwAAAAQAAAAMAAAAAAAAAAQAAAB/AAAADwAAAAgAAAADAAAAAAAAAAwAAAAFAAAAAgAAABIAAAAKAAAACAAAAAAAAAAQAAAABgAAAA4AAAALAAAAEQAAAAEAAAAJAAAAAgAAAAcAAAAVAAAACQAAABMAAAADAAAADQAAAAEAAAAIAAAABQAAABYAAAAQAAAABAAAAAAAAAAPAAAACQAAABMAAAAOAAAAFAAAAAEAAAAHAAAABgAAAAoAAAALAAAAGAAAABcAAAAFAAAAAgAAABIAAAALAAAAEQAAABcAAAAZAAAAAgAAAAYAAAAKAAAADAAAABwAAAANAAAAGgAAAAQAAAAPAAAAAwAAAA0AAAAaAAAAFQAAAB0AAAADAAAADAAAAAcAAAAOAAAAfwAAABEAAAAbAAAACQAAABQAAAAGAAAADwAAABYAAAAcAAAAHwAAAAQAAAAIAAAADAAAABAAAAASAAAAIQAAAB4AAAAIAAAABQAAABYAAAARAAAACwAAAA4AAAAGAAAAIwAAABkAAAAbAAAAEgAAABgAAAAeAAAAIAAAAAUAAAAKAAAAEAAAABMAAAAiAAAAFAAAACQAAAAHAAAAFQAAAAkAAAAUAAAADgAAABMAAAAJAAAAKAAAABsAAAAkAAAAFQAAACYAAAATAAAAIgAAAA0AAAAdAAAABwAAABYAAAAQAAAAKQAAACEAAAAPAAAACAAAAB8AAAAXAAAAGAAAAAsAAAAKAAAAJwAAACUAAAAZAAAAGAAAAH8AAAAgAAAAJQAAAAoAAAAXAAAAEgAAABkAAAAXAAAAEQAAAAsAAAAtAAAAJwAAACMAAAAaAAAAKgAAAB0AAAArAAAADAAAABwAAAANAAAAGwAAACgAAAAjAAAALgAAAA4AAAAUAAAAEQAAABwAAAAfAAAAKgAAACwAAAAMAAAADwAAABoAAAAdAAAAKwAAACYAAAAvAAAADQAAABoAAAAVAAAAHgAAACAAAAAwAAAAMgAAABAAAAASAAAAIQAAAB8AAAApAAAALAAAADUAAAAPAAAAFgAAABwAAAAgAAAAHgAAABgAAAASAAAANAAAADIAAAAlAAAAIQAAAB4AAAAxAAAAMAAAABYAAAAQAAAAKQAAACIAAAATAAAAJgAAABUAAAA2AAAAJAAAADMAAAAjAAAALgAAAC0AAAA4AAAAEQAAABsAAAAZAAAAJAAAABQAAAAiAAAAEwAAADcAAAAoAAAANgAAACUAAAAnAAAANAAAADkAAAAYAAAAFwAAACAAAAAmAAAAfwAAACIAAAAzAAAAHQAAAC8AAAAVAAAAJwAAACUAAAAZAAAAFwAAADsAAAA5AAAALQAAACgAAAAbAAAAJAAAABQAAAA8AAAALgAAADcAAAApAAAAMQAAADUAAAA9AAAAFgAAACEAAAAfAAAAKgAAADoAAAArAAAAPgAAABwAAAAsAAAAGgAAACsAAAA+AAAALwAAAEAAAAAaAAAAKgAAAB0AAAAsAAAANQAAADoAAABBAAAAHAAAAB8AAAAqAAAALQAAACcAAAAjAAAAGQAAAD8AAAA7AAAAOAAAAC4AAAA8AAAAOAAAAEQAAAAbAAAAKAAAACMAAAAvAAAAJgAAACsAAAAdAAAARQAAADMAAABAAAAAMAAAADEAAAAeAAAAIQAAAEMAAABCAAAAMgAAADEAAAB/AAAAPQAAAEIAAAAhAAAAMAAAACkAAAAyAAAAMAAAACAAAAAeAAAARgAAAEMAAAA0AAAAMwAAAEUAAAA2AAAARwAAACYAAAAvAAAAIgAAADQAAAA5AAAARgAAAEoAAAAgAAAAJQAAADIAAAA1AAAAPQAAAEEAAABLAAAAHwAAACkAAAAsAAAANgAAAEcAAAA3AAAASQAAACIAAAAzAAAAJAAAADcAAAAoAAAANgAAACQAAABIAAAAPAAAAEkAAAA4AAAARAAAAD8AAABNAAAAIwAAAC4AAAAtAAAAOQAAADsAAABKAAAATgAAACUAAAAnAAAANAAAADoAAAB/AAAAPgAAAEwAAAAsAAAAQQAAACoAAAA7AAAAPwAAAE4AAABPAAAAJwAAAC0AAAA5AAAAPAAAAEgAAABEAAAAUAAAACgAAAA3AAAALgAAAD0AAAA1AAAAMQAAACkAAABRAAAASwAAAEIAAAA+AAAAKwAAADoAAAAqAAAAUgAAAEAAAABMAAAAPwAAAH8AAAA4AAAALQAAAE8AAAA7AAAATQAAAEAAAAAvAAAAPgAAACsAAABUAAAARQAAAFIAAABBAAAAOgAAADUAAAAsAAAAVgAAAEwAAABLAAAAQgAAAEMAAABRAAAAVQAAADEAAAAwAAAAPQAAAEMAAABCAAAAMgAAADAAAABXAAAAVQAAAEYAAABEAAAAOAAAADwAAAAuAAAAWgAAAE0AAABQAAAARQAAADMAAABAAAAALwAAAFkAAABHAAAAVAAAAEYAAABDAAAANAAAADIAAABTAAAAVwAAAEoAAABHAAAAWQAAAEkAAABbAAAAMwAAAEUAAAA2AAAASAAAAH8AAABJAAAANwAAAFAAAAA8AAAAWAAAAEkAAABbAAAASAAAAFgAAAA2AAAARwAAADcAAABKAAAATgAAAFMAAABcAAAANAAAADkAAABGAAAASwAAAEEAAAA9AAAANQAAAF4AAABWAAAAUQAAAEwAAABWAAAAUgAAAGAAAAA6AAAAQQAAAD4AAABNAAAAPwAAAEQAAAA4AAAAXQAAAE8AAABaAAAATgAAAEoAAAA7AAAAOQAAAF8AAABcAAAATwAAAE8AAABOAAAAPwAAADsAAABdAAAAXwAAAE0AAABQAAAARAAAAEgAAAA8AAAAYwAAAFoAAABYAAAAUQAAAFUAAABeAAAAZQAAAD0AAABCAAAASwAAAFIAAABgAAAAVAAAAGIAAAA+AAAATAAAAEAAAABTAAAAfwAAAEoAAABGAAAAZAAAAFcAAABcAAAAVAAAAEUAAABSAAAAQAAAAGEAAABZAAAAYgAAAFUAAABXAAAAZQAAAGYAAABCAAAAQwAAAFEAAABWAAAATAAAAEsAAABBAAAAaAAAAGAAAABeAAAAVwAAAFMAAABmAAAAZAAAAEMAAABGAAAAVQAAAFgAAABIAAAAWwAAAEkAAABjAAAAUAAAAGkAAABZAAAAYQAAAFsAAABnAAAARQAAAFQAAABHAAAAWgAAAE0AAABQAAAARAAAAGoAAABdAAAAYwAAAFsAAABJAAAAWQAAAEcAAABpAAAAWAAAAGcAAABcAAAAUwAAAE4AAABKAAAAbAAAAGQAAABfAAAAXQAAAE8AAABaAAAATQAAAG0AAABfAAAAagAAAF4AAABWAAAAUQAAAEsAAABrAAAAaAAAAGUAAABfAAAAXAAAAE8AAABOAAAAbQAAAGwAAABdAAAAYAAAAGgAAABiAAAAbgAAAEwAAABWAAAAUgAAAGEAAAB/AAAAYgAAAFQAAABnAAAAWQAAAG8AAABiAAAAbgAAAGEAAABvAAAAUgAAAGAAAABUAAAAYwAAAFAAAABpAAAAWAAAAGoAAABaAAAAcQAAAGQAAABmAAAAUwAAAFcAAABsAAAAcgAAAFwAAABlAAAAZgAAAGsAAABwAAAAUQAAAFUAAABeAAAAZgAAAGUAAABXAAAAVQAAAHIAAABwAAAAZAAAAGcAAABbAAAAYQAAAFkAAAB0AAAAaQAAAG8AAABoAAAAawAAAG4AAABzAAAAVgAAAF4AAABgAAAAaQAAAFgAAABnAAAAWwAAAHEAAABjAAAAdAAAAGoAAABdAAAAYwAAAFoAAAB1AAAAbQAAAHEAAABrAAAAfwAAAGUAAABeAAAAcwAAAGgAAABwAAAAbAAAAGQAAABfAAAAXAAAAHYAAAByAAAAbQAAAG0AAABsAAAAXQAAAF8AAAB1AAAAdgAAAGoAAABuAAAAYgAAAGgAAABgAAAAdwAAAG8AAABzAAAAbwAAAGEAAABuAAAAYgAAAHQAAABnAAAAdwAAAHAAAABrAAAAZgAAAGUAAAB4AAAAcwAAAHIAAABxAAAAYwAAAHQAAABpAAAAdQAAAGoAAAB5AAAAcgAAAHAAAABkAAAAZgAAAHYAAAB4AAAAbAAAAHMAAABuAAAAawAAAGgAAAB4AAAAdwAAAHAAAAB0AAAAZwAAAHcAAABvAAAAcQAAAGkAAAB5AAAAdQAAAH8AAABtAAAAdgAAAHEAAAB5AAAAagAAAHYAAAB4AAAAbAAAAHIAAAB1AAAAeQAAAG0AAAB3AAAAbwAAAHMAAABuAAAAeQAAAHQAAAB4AAAAeAAAAHMAAAByAAAAcAAAAHkAAAB3AAAAdgAAAHkAAAB0AAAAeAAAAHcAAAB1AAAAcQAAAHYAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAACAAAABQAAAAEAAAAAAAAA/////wEAAAAAAAAAAwAAAAQAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAUAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAUAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAD/////AQAAAAAAAAADAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAUAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAD//////////wEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAAAAAAAAAAABAAAAAgAAAAYAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAAAAAAAAAAAAQAAAAEAAAAFAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAGAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAAAAAAAAAAAAAEAAAAEAAAACAAAAAoAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAAAAAAAAAAAAQAAAAsAAAAPAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAAQAAAAwAAAAQAAAADAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAAAAAAAAAAABAAAACgAAABMAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAAAAAAAAAAEAAAANAAAAEQAAAA0AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAACAAAAAAAAAAAAAAABAAAADgAAABIAAAAPAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABIAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAgAAAAAAAAAAAAAAAQAAAP//////////EwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAASAAAAAAAAABgAAAAAAAAAIQAAAAAAAAAeAAAAAAAAACAAAAADAAAAMQAAAAEAAAAwAAAAAwAAADIAAAADAAAACAAAAAAAAAAFAAAABQAAAAoAAAAFAAAAFgAAAAAAAAAQAAAAAAAAABIAAAAAAAAAKQAAAAEAAAAhAAAAAAAAAB4AAAAAAAAABAAAAAAAAAAAAAAABQAAAAIAAAAFAAAADwAAAAEAAAAIAAAAAAAAAAUAAAAFAAAAHwAAAAEAAAAWAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAGAAAAAAAAAA4AAAAAAAAACgAAAAAAAAALAAAAAAAAABEAAAADAAAAGAAAAAEAAAAXAAAAAwAAABkAAAADAAAAAAAAAAAAAAABAAAABQAAAAkAAAAFAAAABQAAAAAAAAACAAAAAAAAAAYAAAAAAAAAEgAAAAEAAAAKAAAAAAAAAAsAAAAAAAAABAAAAAEAAAADAAAABQAAAAcAAAAFAAAACAAAAAEAAAAAAAAAAAAAAAEAAAAFAAAAEAAAAAEAAAAFAAAAAAAAAAIAAAAAAAAABwAAAAAAAAAVAAAAAAAAACYAAAAAAAAACQAAAAAAAAATAAAAAAAAACIAAAADAAAADgAAAAEAAAAUAAAAAwAAACQAAAADAAAAAwAAAAAAAAANAAAABQAAAB0AAAAFAAAAAQAAAAAAAAAHAAAAAAAAABUAAAAAAAAABgAAAAEAAAAJAAAAAAAAABMAAAAAAAAABAAAAAIAAAAMAAAABQAAABoAAAAFAAAAAAAAAAEAAAADAAAAAAAAAA0AAAAFAAAAAgAAAAEAAAABAAAAAAAAAAcAAAAAAAAAGgAAAAAAAAAqAAAAAAAAADoAAAAAAAAAHQAAAAAAAAArAAAAAAAAAD4AAAADAAAAJgAAAAEAAAAvAAAAAwAAAEAAAAADAAAADAAAAAAAAAAcAAAABQAAACwAAAAFAAAADQAAAAAAAAAaAAAAAAAAACoAAAAAAAAAFQAAAAEAAAAdAAAAAAAAACsAAAAAAAAABAAAAAMAAAAPAAAABQAAAB8AAAAFAAAAAwAAAAEAAAAMAAAAAAAAABwAAAAFAAAABwAAAAEAAAANAAAAAAAAABoAAAAAAAAAHwAAAAAAAAApAAAAAAAAADEAAAAAAAAALAAAAAAAAAA1AAAAAAAAAD0AAAADAAAAOgAAAAEAAABBAAAAAwAAAEsAAAADAAAADwAAAAAAAAAWAAAABQAAACEAAAAFAAAAHAAAAAAAAAAfAAAAAAAAACkAAAAAAAAAKgAAAAEAAAAsAAAAAAAAADUAAAAAAAAABAAAAAQAAAAIAAAABQAAABAAAAAFAAAADAAAAAEAAAAPAAAAAAAAABYAAAAFAAAAGgAAAAEAAAAcAAAAAAAAAB8AAAAAAAAAMgAAAAAAAAAwAAAAAAAAADEAAAADAAAAIAAAAAAAAAAeAAAAAwAAACEAAAADAAAAGAAAAAMAAAASAAAAAwAAABAAAAADAAAARgAAAAAAAABDAAAAAAAAAEIAAAADAAAANAAAAAMAAAAyAAAAAAAAADAAAAAAAAAAJQAAAAMAAAAgAAAAAAAAAB4AAAADAAAAUwAAAAAAAABXAAAAAwAAAFUAAAADAAAASgAAAAMAAABGAAAAAAAAAEMAAAAAAAAAOQAAAAEAAAA0AAAAAwAAADIAAAAAAAAAGQAAAAAAAAAXAAAAAAAAABgAAAADAAAAEQAAAAAAAAALAAAAAwAAAAoAAAADAAAADgAAAAMAAAAGAAAAAwAAAAIAAAADAAAALQAAAAAAAAAnAAAAAAAAACUAAAADAAAAIwAAAAMAAAAZAAAAAAAAABcAAAAAAAAAGwAAAAMAAAARAAAAAAAAAAsAAAADAAAAPwAAAAAAAAA7AAAAAwAAADkAAAADAAAAOAAAAAMAAAAtAAAAAAAAACcAAAAAAAAALgAAAAMAAAAjAAAAAwAAABkAAAAAAAAAJAAAAAAAAAAUAAAAAAAAAA4AAAADAAAAIgAAAAAAAAATAAAAAwAAAAkAAAADAAAAJgAAAAMAAAAVAAAAAwAAAAcAAAADAAAANwAAAAAAAAAoAAAAAAAAABsAAAADAAAANgAAAAMAAAAkAAAAAAAAABQAAAAAAAAAMwAAAAMAAAAiAAAAAAAAABMAAAADAAAASAAAAAAAAAA8AAAAAwAAAC4AAAADAAAASQAAAAMAAAA3AAAAAAAAACgAAAAAAAAARwAAAAMAAAA2AAAAAwAAACQAAAAAAAAAQAAAAAAAAAAvAAAAAAAAACYAAAADAAAAPgAAAAAAAAArAAAAAwAAAB0AAAADAAAAOgAAAAMAAAAqAAAAAwAAABoAAAADAAAAVAAAAAAAAABFAAAAAAAAADMAAAADAAAAUgAAAAMAAABAAAAAAAAAAC8AAAAAAAAATAAAAAMAAAA+AAAAAAAAACsAAAADAAAAYQAAAAAAAABZAAAAAwAAAEcAAAADAAAAYgAAAAMAAABUAAAAAAAAAEUAAAAAAAAAYAAAAAMAAABSAAAAAwAAAEAAAAAAAAAASwAAAAAAAABBAAAAAAAAADoAAAADAAAAPQAAAAAAAAA1AAAAAwAAACwAAAADAAAAMQAAAAMAAAApAAAAAwAAAB8AAAADAAAAXgAAAAAAAABWAAAAAAAAAEwAAAADAAAAUQAAAAMAAABLAAAAAAAAAEEAAAAAAAAAQgAAAAMAAAA9AAAAAAAAADUAAAADAAAAawAAAAAAAABoAAAAAwAAAGAAAAADAAAAZQAAAAMAAABeAAAAAAAAAFYAAAAAAAAAVQAAAAMAAABRAAAAAwAAAEsAAAAAAAAAOQAAAAAAAAA7AAAAAAAAAD8AAAADAAAASgAAAAAAAABOAAAAAwAAAE8AAAADAAAAUwAAAAMAAABcAAAAAwAAAF8AAAADAAAAJQAAAAAAAAAnAAAAAwAAAC0AAAADAAAANAAAAAAAAAA5AAAAAAAAADsAAAAAAAAARgAAAAMAAABKAAAAAAAAAE4AAAADAAAAGAAAAAAAAAAXAAAAAwAAABkAAAADAAAAIAAAAAMAAAAlAAAAAAAAACcAAAADAAAAMgAAAAMAAAA0AAAAAAAAADkAAAAAAAAALgAAAAAAAAA8AAAAAAAAAEgAAAADAAAAOAAAAAAAAABEAAAAAwAAAFAAAAADAAAAPwAAAAMAAABNAAAAAwAAAFoAAAADAAAAGwAAAAAAAAAoAAAAAwAAADcAAAADAAAAIwAAAAAAAAAuAAAAAAAAADwAAAAAAAAALQAAAAMAAAA4AAAAAAAAAEQAAAADAAAADgAAAAAAAAAUAAAAAwAAACQAAAADAAAAEQAAAAMAAAAbAAAAAAAAACgAAAADAAAAGQAAAAMAAAAjAAAAAAAAAC4AAAAAAAAARwAAAAAAAABZAAAAAAAAAGEAAAADAAAASQAAAAAAAABbAAAAAwAAAGcAAAADAAAASAAAAAMAAABYAAAAAwAAAGkAAAADAAAAMwAAAAAAAABFAAAAAwAAAFQAAAADAAAANgAAAAAAAABHAAAAAAAAAFkAAAAAAAAANwAAAAMAAABJAAAAAAAAAFsAAAADAAAAJgAAAAAAAAAvAAAAAwAAAEAAAAADAAAAIgAAAAMAAAAzAAAAAAAAAEUAAAADAAAAJAAAAAMAAAA2AAAAAAAAAEcAAAAAAAAAYAAAAAAAAABoAAAAAAAAAGsAAAADAAAAYgAAAAAAAABuAAAAAwAAAHMAAAADAAAAYQAAAAMAAABvAAAAAwAAAHcAAAADAAAATAAAAAAAAABWAAAAAwAAAF4AAAADAAAAUgAAAAAAAABgAAAAAAAAAGgAAAAAAAAAVAAAAAMAAABiAAAAAAAAAG4AAAADAAAAOgAAAAAAAABBAAAAAwAAAEsAAAADAAAAPgAAAAMAAABMAAAAAAAAAFYAAAADAAAAQAAAAAMAAABSAAAAAAAAAGAAAAAAAAAAVQAAAAAAAABXAAAAAAAAAFMAAAADAAAAZQAAAAAAAABmAAAAAwAAAGQAAAADAAAAawAAAAMAAABwAAAAAwAAAHIAAAADAAAAQgAAAAAAAABDAAAAAwAAAEYAAAADAAAAUQAAAAAAAABVAAAAAAAAAFcAAAAAAAAAXgAAAAMAAABlAAAAAAAAAGYAAAADAAAAMQAAAAAAAAAwAAAAAwAAADIAAAADAAAAPQAAAAMAAABCAAAAAAAAAEMAAAADAAAASwAAAAMAAABRAAAAAAAAAFUAAAAAAAAAXwAAAAAAAABcAAAAAAAAAFMAAAAAAAAATwAAAAAAAABOAAAAAAAAAEoAAAADAAAAPwAAAAEAAAA7AAAAAwAAADkAAAADAAAAbQAAAAAAAABsAAAAAAAAAGQAAAAFAAAAXQAAAAEAAABfAAAAAAAAAFwAAAAAAAAATQAAAAEAAABPAAAAAAAAAE4AAAAAAAAAdQAAAAQAAAB2AAAABQAAAHIAAAAFAAAAagAAAAEAAABtAAAAAAAAAGwAAAAAAAAAWgAAAAEAAABdAAAAAQAAAF8AAAAAAAAAWgAAAAAAAABNAAAAAAAAAD8AAAAAAAAAUAAAAAAAAABEAAAAAAAAADgAAAADAAAASAAAAAEAAAA8AAAAAwAAAC4AAAADAAAAagAAAAAAAABdAAAAAAAAAE8AAAAFAAAAYwAAAAEAAABaAAAAAAAAAE0AAAAAAAAAWAAAAAEAAABQAAAAAAAAAEQAAAAAAAAAdQAAAAMAAABtAAAABQAAAF8AAAAFAAAAcQAAAAEAAABqAAAAAAAAAF0AAAAAAAAAaQAAAAEAAABjAAAAAQAAAFoAAAAAAAAAaQAAAAAAAABYAAAAAAAAAEgAAAAAAAAAZwAAAAAAAABbAAAAAAAAAEkAAAADAAAAYQAAAAEAAABZAAAAAwAAAEcAAAADAAAAcQAAAAAAAABjAAAAAAAAAFAAAAAFAAAAdAAAAAEAAABpAAAAAAAAAFgAAAAAAAAAbwAAAAEAAABnAAAAAAAAAFsAAAAAAAAAdQAAAAIAAABqAAAABQAAAFoAAAAFAAAAeQAAAAEAAABxAAAAAAAAAGMAAAAAAAAAdwAAAAEAAAB0AAAAAQAAAGkAAAAAAAAAdwAAAAAAAABvAAAAAAAAAGEAAAAAAAAAcwAAAAAAAABuAAAAAAAAAGIAAAADAAAAawAAAAEAAABoAAAAAwAAAGAAAAADAAAAeQAAAAAAAAB0AAAAAAAAAGcAAAAFAAAAeAAAAAEAAAB3AAAAAAAAAG8AAAAAAAAAcAAAAAEAAABzAAAAAAAAAG4AAAAAAAAAdQAAAAEAAABxAAAABQAAAGkAAAAFAAAAdgAAAAEAAAB5AAAAAAAAAHQAAAAAAAAAcgAAAAEAAAB4AAAAAQAAAHcAAAAAAAAAcgAAAAAAAABwAAAAAAAAAGsAAAAAAAAAZAAAAAAAAABmAAAAAAAAAGUAAAADAAAAUwAAAAEAAABXAAAAAwAAAFUAAAADAAAAdgAAAAAAAAB4AAAAAAAAAHMAAAAFAAAAbAAAAAEAAAByAAAAAAAAAHAAAAAAAAAAXAAAAAEAAABkAAAAAAAAAGYAAAAAAAAAdQAAAAAAAAB5AAAABQAAAHcAAAAFAAAAbQAAAAEAAAB2AAAAAAAAAHgAAAAAAAAAXwAAAAEAAABsAAAAAQAAAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGAAAAAgAAAAUAAAABAAAABAAAAAAAAAAAAAAABQAAAAMAAAABAAAABgAAAAQAAAACAAAAAAAAAH6iBfbytuk/Gq6akm/58z/Xrm0Liez0P5doSdOpSwRAWs602ULg8D/dT7Rcbo/1v1N1RQHFNOM/g9Snx7HW3L8HWsP8Q3jfP6VwOLosutk/9rjk1YQcxj+gnmKMsNn6P/HDeuPFY+M/YHwDjqKhB0Ci19/fCVrbP4UxKkDWOP6/pvljWa09tL9wi7wrQXjnv/Z6yLImkM2/3yTlOzY14D+m+WNZrT20PzwKVQnrQwNA9nrIsiaQzT/g40rFrRQFwPa45NWEHMa/kbslHEZq97/xw3rjxWPjv4cLC2SMBci/otff3wla27+rKF5oIAv0P1N1RQHFNOO/iDJPGyWHBUAHWsP8Q3jfvwQf/by16gXAfqIF9vK26b8XrO0Vh0r+v9eubQuJ7PS/BxLrA0ZZ479azrTZQuDwv1MK1EuItPw/yscgV9Z6FkAwHBR2WjQMQJNRzXsQ5vY/GlUHVJYKF0DONuFv2lMNQNCGZ28QJfk/0WUwoIL36D8ggDOMQuATQNqMOeAy/wZAWFYOYM+M2z/LWC4uH3oSQDE+LyTsMgRAkJzhRGWFGEDd4soovCQQQKqk0DJMEP8/rGmNdwOLBUAW2X/9xCbjP4hu3dcqJhNAzuYItRvdB0CgzW3zJW/sPxotm/Y2TxRAQAk9XmdDDEC1Kx9MKgT3P1M+NctcghZAFVqcLlb0C0Bgzd3sB2b2P77mZDPUWhZAFROHJpUGCEDAfma5CxXtPz1DWq/zYxRAmhYY5824F0DOuQKWSbAOQNCMqrvu3fs/L6DR22K2wT9nAAxPBU8RQGiN6mW43AFAZhu25b633D8c1YgmzowSQNM25BRKWARArGS08/lNxD+LFssHwmMRQLC5aNcxBgJABL9HT0WRF0CjCmJmOGEOQHsuaVzMP/s/TWJCaGGwBUCeu1PAPLzjP9nqN9DZOBNAKE4JcydbCkCGtbd1qjPzP8dgm9U8jhVAtPeKTkVwDkCeCLss5l37P401XMPLmBdAFd29VMVQDUBg0yA55h75Pz6odcYLCRdApBM4rBrkAkDyAVWgQxbRP4XDMnK20hFAymLlF7EmzD8GUgo9XBHlP3lbK7T9COc/k+OhPthhy7+YGEpnrOvCPzBFhLs15u4/epbqB6H4uz9IuuLF5svev6lzLKY31es/CaQ0envF5z8ZY0xlUADXv7zaz7HYEuI/CfbK1sn16T8uAQfWwxLWPzKn/YuFN94/5KdbC1AFu793fyCSnlfvPzK2y4doAMY/NRg5t1/X6b/shq4QJaHDP5yNIAKPOeI/vpn7BSE30r/X4YQrO6nrv78Ziv/Thto/DqJ1Y6+y5z9l51NaxFrlv8QlA65HOLS/86dxiEc96z+Hj0+LFjneP6LzBZ8LTc2/DaJ1Y6+y579l51NaxFrlP8QlA65HOLQ/8qdxiEc967+Jj0+LFjnev6LzBZ8LTc0/1qdbC1AFuz93fyCSnlfvvzK2y4doAMa/NRg5t1/X6T/vhq4QJaHDv5yNIAKPOeK/wJn7BSE30j/W4YQrO6nrP78Ziv/Thtq/CaQ0envF578XY0xlUADXP7zaz7HYEuK/CvbK1sn16b8rAQfWwxLWvzKn/YuFN96/zWLlF7EmzL8GUgo9XBHlv3lbK7T9COe/kOOhPthhyz+cGEpnrOvCvzBFhLs15u6/c5bqB6H4u79IuuLF5sveP6lzLKY31eu/AQAAAP////8HAAAA/////zEAAAD/////VwEAAP////9hCQAA/////6dBAAD/////kcsBAP/////3kAwA/////8H2VwAAAAAAAAAAAAAAAAACAAAA/////w4AAAD/////YgAAAP////+uAgAA/////8ISAAD/////ToMAAP////8ilwMA/////+4hGQD/////gu2vAAAAAAAAAAAAAAAAAAAAAAACAAAA//////////8BAAAAAwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////AgAAAP//////////AQAAAAAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD/////////////////////AQAAAP///////////////wIAAAD///////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP///////////////////////////////wIAAAD///////////////8BAAAA/////////////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAABAAAA//////////8CAAAA//////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAAAQAAAP//////////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAAAAAAAAAAIAAAABAAAAAQAAAAIAAAACAAAAAAAAAAUAAAAFAAAAAAAAAAIAAAACAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAEAAAACAAAAAgAAAAIAAAAAAAAABQAAAAYAAAAAAAAAAgAAAAIAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAACAAAAAQAAAAMAAAACAAAAAgAAAAAAAAAFAAAABwAAAAAAAAACAAAAAgAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAIAAAABAAAABAAAAAIAAAACAAAAAAAAAAUAAAAIAAAAAAAAAAIAAAACAAAAAwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAIAAAAAAAAAAgAAAAEAAAAAAAAAAgAAAAIAAAAAAAAABQAAAAkAAAAAAAAAAgAAAAIAAAADAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAIAAAAAAAAAAwAAAA4AAAACAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAgAAAAMAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAgAAAAAAAAADAAAACgAAAAIAAAAAAAAAAgAAAAMAAAABAAAAAAAAAAIAAAACAAAAAwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAACAAAAAAAAAAMAAAALAAAAAgAAAAAAAAACAAAAAwAAAAIAAAAAAAAAAgAAAAIAAAADAAAACAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAIAAAAAAAAAAwAAAAwAAAACAAAAAAAAAAIAAAADAAAAAwAAAAAAAAACAAAAAgAAAAMAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAACAAAAAgAAAAAAAAADAAAADQAAAAIAAAAAAAAAAgAAAAMAAAAEAAAAAAAAAAIAAAACAAAAAwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAACAAAAAAAAAAMAAAAGAAAAAgAAAAAAAAACAAAAAwAAAA8AAAAAAAAAAgAAAAIAAAADAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAIAAAAAAAAAAwAAAAcAAAACAAAAAAAAAAIAAAADAAAAEAAAAAAAAAACAAAAAgAAAAMAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAgAAAAAAAAADAAAACAAAAAIAAAAAAAAAAgAAAAMAAAARAAAAAAAAAAIAAAACAAAAAwAAAA0AAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAACAAAAAAAAAAMAAAAJAAAAAgAAAAAAAAACAAAAAwAAABIAAAAAAAAAAgAAAAIAAAADAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAgAAAAIAAAAAAAAAAwAAAAUAAAACAAAAAAAAAAIAAAADAAAAEwAAAAAAAAACAAAAAgAAAAMAAAAPAAAAAAAAAAAAAAAAAAAAAAAAABAAAAACAAAAAAAAAAIAAAABAAAAEwAAAAIAAAACAAAAAAAAAAUAAAAKAAAAAAAAAAIAAAACAAAAAwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAIAAAAAAAAAAgAAAAEAAAAPAAAAAgAAAAIAAAAAAAAABQAAAAsAAAAAAAAAAgAAAAIAAAADAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAgAAAAAAAAACAAAAAQAAABAAAAACAAAAAgAAAAAAAAAFAAAADAAAAAAAAAACAAAAAgAAAAMAAAASAAAAAAAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAIAAAABAAAAEQAAAAIAAAACAAAAAAAAAAUAAAANAAAAAAAAAAIAAAACAAAAAwAAABMAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAIAAAAAAAAAAgAAAAEAAAASAAAAAgAAAAIAAAAAAAAABQAAAA4AAAAAAAAAAgAAAAIAAAADAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAEAAAACAAAAAQAAAAAAAAACAAAAAAAAAAUAAAAEAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAQAAAAAAAAABQAAAAAAAAACAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAEAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAQAAAAAAAAABQAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAA6B6FaUp9QQTPXMuL4myJBraiDfBwx9UBYJseitzTIQOL5if9jqZtAnXX+Z+ycb0C3pucbhRBCQG8wJBYqpRRAlWbDCzCY5z/eFWBUEve6P/+qo4Q50Y4/D9YM3iCcYT8fcA2QJSA0P4ADxu0qAAc/BNcGolVJ2j5d9FACqwquPh9z7MthtI9CSUSYJke/YUJQ/64OyjU0Qpi0+HCmFQdCm3GfIVdh2kHsJ11kAyauQYC3UDFJOoFBSJsFV1OwU0FK5fcxX4AmQWhy/zZIt/lACqaCPsBjzUDbdUNIScugQMYQlVJ4MXNANiuq8GTvRUDxTXnulxEZQFZ8QX5kpuw/qmG/JwYFlEAluh3Q6DB+QKn4vyNq0GZAKOXekas+UUB8xabXXhI6QG63C2pLtSNAdDBtyNfLDUDyOcu67ID2P0rCMvRXAeE/Ki2TSVyzyT9Dk+8Sz2uzP5J+w5ARWp0/NQAoOiMuhj9YnP+RyMJwPxgW7TvQVFk/KgsLYF0kQz9g5dAC6IwzQcgHPVvDex1B1XjppodHBkHJq3OMM9fwQNvcmJ7wddlAInGPpQs/w0BRobq5EBmtQJZ2ai7n+ZVAtv2G5E+bgECG+gIfKBlpQK5f8jdI91JAL39sL/WpPEB8rGxhDqklQK6yUf43XhBAxL9y/tK8+D86XyZpgrHiPwAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAP////8AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAD/////AAAAAAAAAAABAAAAAQAAAAAAAAAAAAAA/////wAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAP////8FAAAABQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAABQAAAAEAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAQABAAABAQAAAAAAAQAAAAEAAAABAAEAAAAAAAAAAAAAAAAAAAAAquJYWJZl+D9jaeZNtj/zPwwdI9KqaeO/qGefXwdHdz+q4lhYlmX4P+OrlPMN3PI/DB0j0qpp47+7SQLV4VIEQKriWFiWZfg/r2kma3tz8T82eQmLqNIGwMRIWXMqSvo/fcCszPux9j+jara6ozTwP6hnn18HR3c/MSoKLequ8r+SabgA2nj0P7jBLbDOHO8/1Ym/ICfH4T+6lxjvlFXHv73m373LRPU/0vXyDVxo7T+ToKRHJXMAQF/33578aPE/pAyy64tD9T8+U/hCvyruPwxv8Y7YYwLAuXYr8NAiCEB4+LDK0Sn0P1Qeuy4j+eo/OMx50n7K7L+TrGB/nyf8v5ehC2fbYPM/aXMKexiT6z8mFRIMjg/zP7yUVwGGBNw/E6opHERf8z/z0wR2g9DqPw4pBpcOhvu/NbA29uWAA8DMaTExyXzyP02biiQ+Ruk/S8jz2/FKBEB1pzZnpbb9P7pQU4wLfPI//7ZcQXeG6D9CqEQvAYoIwDB2VB6sSgRAVyv8H5We8T+EHWF8XNPmPzB2wT8Nrrg/SEi+cX+w4L8of+GtdSDxP1sjk5AdouU/6ZjOVru13r8K0obqI6bxvwVbdNXyhfA/w5GG024n5z+rwmtMzP8BwLw9pSX49QXABe/2uQxP8D+b6wCzCvXkP7uGT87fK+Q/pz/JWw4coj+qoBf2J0nwP/yE3PUo0+I/vFJeHcaC+D96luSIqvntP/bf8sHUYu8/gZNN41mL4z9bhOqVOF4FwO6lmAh1hQhAbCVxbdhk7z+1C8NdDcfiPwG36x/0OQBAx0WJ76c2+D9nlSHXANfuP2HlfZ3gqOE/EwnVlVPg9r96+oHzEH//v5bXzdT1Auw/DM3GwLsA4D9p/8uoKcr+v+U9x5DQVAPAehjSdghb7D9sc1IetODgP8MVwwB1pu6/azPk6OGe978W8t/TUc3rP+0QMvYfP+A/RsG/QpSE8D+l3uwScxzgPwQaifgujuw/k1Vti1I43z8MAwLnSh0GQH5nYnwwZgJAiGUzWC5s6j8WyyI/BbLgPw4iUapGeQJAB3W+imnp/j9BLWR4ssrpP2t+gG5Pstk/cpBsfm6DCMCOpU9dOZsFQEv8nFypHeo/ehJ6i+6S2D9jqlGEmarLv7STC5TRiOa/bC+x8WZD6D9H3yUkWpDZP8gZvmCMuQLAreY19/eRBsCoPOc8UzzpP6KI/QV+y9g/t/MoboyWzT+Hv5q3Zu3Mvy2xROCT4uY/9gQitMMg1T9abAqhWMDkv1oLTavoUfG/PMUJP9CD5j+fHRX3t6fSPz7W2gk6bvs/WRnuHwqN9D8YFturGCTmP1EZczv0b9I/5t4exabB5D/1ESLh5fTEP9X2z6SYweQ/6lv3I2zT0D9zkRGNUNMAQKoSvc4EIfs/Xggt8wQI5T+mJHHg/w/SP4lhT/9t8vQ/DrZ/DbwH7D+XlhbYZrjkP34LIpFt6c4/lwfp8fLX9L+j96CTTf76v3WdNhEv9uM/d8c3o4lV0D/vFdCHVcsFwAHeDq0F1QhApbYqcZiN5D9KoilqByXLPwX0/diA0vq/0fo0GxnxAMBbaTkvlCzjP/RrFrWXrMs/UYTrky7jA0DB9f4FiZYAQEGAk/3QzeE/r/TeqE8t0D/OqjlsnPbvvz8RKU8JOfW/smSEbK/O4T8MzuyPm3DDP/rFtctq9gZAfb1EVEaSA0Dts5dVInnhP18SFMc79MM/7y34cw6LAMDFrRJsZO0DwC2KLvLSYuA/hx5wcUHewz+49SnK/4ruPyeS0PX9a+E/ZxaaLvvZ3z8WPu5T2QS8Pygo4RIvMqa/BJ0Kqsd0279cKW4ay8jdP3b05bmZ364/10/qtdxk2r+Bcz6CDMvpv54qOw+Amdw/qLV71pW7sT/YKc80nIPUP8OfIaBJ77G/LyTuD1un2z+diYu8efWzP1wU7ACkfwjAZroyPL1yBkAmv3lKJJbbPysKSE4W+p0/dIgqY79TA8ATLTOQ3tsGwJ2zweD/Xdg/XO/jXeFUaL8VW2qLFKfov1cA9Aa6XfK/tIa7YGgI2T+f3hu/sxqPv2nXdPpf3Pc/jkw8Jbda8j+tT/z8tGPVP1yBHpJd35k/KYvYOy1s8j/yz+kCQjPrP9+agH7x59g/PZfJ9aBhpr/rDKzvYBb+PwtkiaGCt/c/vb1mVr+f1T/JIHwHc8Govw7aeF6+9vG/Xv7kD6fp979isYioQYHVP7AIQZuSFrG/3z1AdUTnAUDN3XY9O7f9P0AdQ9ljYNQ/dJANJPTOrb8kLECUiiPlP4yF7UgmStA/9xGmXxCG1T9qZzix4W2zv2SGJRJVrPe/Fh9a2M/B/b8IexzFCoPSP9y1QFD2bLe/Q86cWLJe/b+mOOfYm78BwOTjkPAGE9E/8aPCUKu/ub9pPZyLCiUGwBA7Mev/BQlALOmrlRi+0j+AMJ/dKULBv7iLtL6a6QRAEMDV/yajAUDa62dE3crJP1P70RgBUbq/38hVnR6esT/s1tG10Z/Ov/zLwalHPss/dTS9NKTXx78nMcRzCIEHQAabxDsAmQRA0tyLK3gSyT+Aui7nOhDGv5Gs58z3WgHATN3forJuBMCAui7nOhDGP9Lciyt4Esm/WAJyHQ4c7z8UP5HFIs3iP3U0vTSk18c//MvBqUc+y7+cvv8HLg/Kvy1I/mHsI+K/U/vRGAFRuj/a62dE3crJv8p+WV8KlQjAuQ/nOP43B0CAMJ/dKULBPyzpq5UYvtK/ZoU+VoLh4L9etLlRUfvtv/GjwlCrv7k/5OOQ8AYT0b9DfT9FhufXPwUX8hJp+4u/3LVAUPZstz8IexzFCoPSv9+L609E5fQ/q9Fz7X2J7T9qZzix4W2zP/cRpl8QhtW/vtNilqGX+j8MOy7QJoL0P3SQDST0zq0/QB1D2WNg1L8IIjSvGNkDwGB8Jou2GAfAsAhBm5IWsT9isYioQYHVvyS9D3zb6uy/gnwRa7uM9L/JIHwHc8GoP729Zla/n9W/CsAHJZwmAEDEW6OYT1r6Pz2XyfWgYaY/35qAfvHn2L83Tdy4lS30vxf2/gZ0jPq/XIEekl3fmb+tT/z8tGPVvybPr2zJ1/+/K7mJ0ypVAsCf3hu/sxqPPwCGu2BoCNm/5oITrpZn+r+UDUyDP+n/v1zv413hVGg/nbPB4P9d2L9MlmkxNvgCQMtZlKE85v8/KwpIThb6nb8mv3lKJJbbv8+SZsTvOOc/pQCIIOYw0j+diYu8efWzvy8k7g9bp9u/kxYDa+pKtD9XlYvA8HnVv6i1e9aVu7G/nio7D4CZ3L/WR6rNh5EGwCkgQweBkghAdvTluZnfrr9cKW4ay8jdvxbjhr1f1QVAR5C0MzivAkAWPu5T2QS8v2cWmi772d+/cKj4lzLJCEBx2QJfYrMFQIcecHFB3sO/LYou8tJi4L+jr7lhO38BwIcI0Nb7xgTAXxIUxzv0w7/ts5dVInnhv0T+l8DZLfE/MP3FoFvS5D8MzuyPm3DDv7JkhGyvzuG/tzhzRIRc0b9Ovv3/0z7mv6/03qhPLdC/m4CT/dDN4b9dwjU5VCQBQBBJX1ntCv0/9GsWtZesy79baTkvlCzjv1mjYgEz++S/oW6KnOQW8b9KoilqByXLv6W2KnGYjeS/SmaKz3Vx9z+BZB5yxGHwP3fHN6OJVdC/dZ02ES/2478PuaBjLrXaP4/JU81pPaO/fgsikW3pzr+XlhbYZrjkv4tSn7YDbP0/f2LnFKlF9z+mJHHg/w/Sv14ILfMECOW/mfg4qYhR/b+OP+RQDCACwOpb9yNs09C/1fbPpJjB5L9pN2WOVZ3wv3hHy9nxIve/URlzO/Rv0r8YFturGCTmv1d1/KKR8QPA8gsy9qzSB8CfHRX3t6fSvzzFCT/Qg+a/EYStnrzV9r/2QJqI7Lb9v/YEIrTDINW/LbFE4JPi5r/7kQEs5fEDQHunnf4GeQBAooj9BX7L2L+oPOc8Uzzpv+ydYY2SSAfAL4HK6CRTB0BH3yUkWpDZv2wvsfFmQ+i/Ik0Yzruh6T8fM3LoGoDUP3oSeovukti/S/ycXKkd6r9rEv+7UWcHQCRIQe/GfwNAa36Abk+y2b9BLWR4ssrpv9KT87qa0bM/FTyktw823L8WyyI/BbLgv4hlM1gubOq/DizMp9Ki6r8b5ckdjVrzv5NVbYtSON+/BBqJ+C6O7L/dUBFqgyXYv00Wh18r7+q/7RAy9h8/4L8W8t/TUc3rv4RM5DKx3wDAfvWIj94aBcBsc1IetODgv3oY0nYIW+y/oGcTFF54AUDkJqS/FKX6PwzNxsC7AOC/ltfN1PUC7L+5Wrz/zHnzP6688w2rNOc/YeV9neCo4b9nlSHXANfuvw9RsxKjY/s/1V8GteXE8j+1C8NdDcfiv2wlcW3YZO+/IOywaA7Q8b9bFP+4Tg36v4GTTeNZi+O/9t/ywdRi77+tRc3yFR7eP2bkcHXJkLO//ITc9SjT4r+qoBf2J0nwv2YHKoswwfm/iQcLspCjAcCb6wCzCvXkvwXv9rkMT/C/YkuwYAMXBMApCNUai9kIwMORhtNuJ+e/BVt01fKF8L+ZqWEfvIjsP6h693QZYNk/WyOTkB2i5b8of+GtdSDxvwpaaulDSwVADMQAX+lOAECEHWF8XNPmv1cr/B+VnvG/XyFG6opcCMD/mtR32/UEQP+2XEF3hui/ulBTjAt88r/imfCfRP+yP9zbvtc8XeO/TZuKJD5G6b/MaTExyXzyvxiTQeElXOO/rbJRQVGN9L/z0wR2g9DqvxOqKRxEX/O/FDGCEei99j9x8zV4VYTmP2lzCnsYk+u/l6ELZ9tg878pRXacaDT/v3k6GZRqoQXAVB67LiP56r94+LDK0Sn0vwO6pZ9b7wFAvK0nKVcc9j8+U/hCvyruv6QMsuuLQ/W/FPhKFYv46j8MyxaDTOW/v9L18g1caO2/vebfvctE9b/7GD8ZrF3xv3gx1AR9bQDAuMEtsM4c77+SabgA2nj0v5xKFIwxsATArKNSBaKsB0Cjara6ozTwv33ArMz7sfa/dF2U0FcWCcDxL357DJX/P69pJmt7c/G/quJYWJZl+L/YntVJlnrSP4sRLzXM+fe/46uU8w3c8r+q4lhYlmX4v85lu5+QRwRAsI0H/WU8479jaeZNtj/zv6riWFiWZfi/sI0H/WU847/OZbufkEcEQHAoPUBrnss/9exKzDtFtT88wM8kax+gP9OqeKeAYog/MW0ItiZvcj+ph+smvt5bP2lCaV5dEUU/StaUmQDaLz+kK9y22BMYP0O3whZuMwI/IIbgZGWE6z7UkjYaEM3UPuezxwa9cr8+LybxRMnFpz6E1N8DbPiRPsYjySMvK3s+//////8fAAj//////zMQCP////9/MiAI/////28yMAj/////YzJACP///z9iMlAI////N2IyYAj///8zYjJwCP//vzNiMoAI//+rM2IykAj/f6szYjKgCP8PqzNiMrAI/wOrM2IywAi/A6szYjLQCJ8DqzNiMuAImQOrM2Iy8Aj//////z8PCP//////Kx8I/////38pLwj/////Pyk/CP////85KU8I////PzgpXwj///8POClvCP///w44KX8I//8fDjgpjwj//w8OOCmfCP9/DQ44Ka8I/w8NDjgpvwj/DQ0OOCnPCP8MDQ44Kd8IxwwNDjgp7wjEDA0OOCn/CAcAAAAHAAAAAQAAAAIAAAAEAAAAAwAAAAAAAAAAAAAABwAAAAMAAAABAAAAAgAAAAUAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAGAAAAAgAAAAMAAAAFAAAABAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAwAAAAEAAAAFAAAABAAAAAAAAAAAAAAABwAAAAUAAAADAAAABAAAAAEAAAAAAAAAAgAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAABgtRFT7Ifk/GC1EVPsh+b8YLURU+yEJQBgtRFT7IQnAYWxnb3MuYwBoM05laWdoYm9yUm90YXRpb25zAGNvb3JkaWprLmMAX3VwQXA3Q2hlY2tlZABfdXBBcDdyQ2hlY2tlZABkaXJlY3RlZEVkZ2UuYwBkaXJlY3RlZEVkZ2VUb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpclt0bXBGaWprLmZhY2VdW2ZpamsuZmFjZV0gPT0gS0kAZmFjZWlqay5jAF9mYWNlSWprUGVudFRvQ2VsbEJvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9DZWxsQm91bmRhcnkAaDNJbmRleC5jAGNvbXBhY3RDZWxscwBsYXRMbmdUb0NlbGwAY2VsbFRvQ2hpbGRQb3MAdmFsaWRhdGVDaGlsZFBvcwBsYXRMbmcuYwBjZWxsQXJlYVJhZHMyAHBvbHlnb24tPm5leHQgPT0gTlVMTABsaW5rZWRHZW8uYwBhZGROZXdMaW5rZWRQb2x5Z29uAG5leHQgIT0gTlVMTABsb29wICE9IE5VTEwAYWRkTmV3TGlua2VkTG9vcABwb2x5Z29uLT5maXJzdCA9PSBOVUxMAGFkZExpbmtlZExvb3AAY29vcmQgIT0gTlVMTABhZGRMaW5rZWRDb29yZABsb29wLT5maXJzdCA9PSBOVUxMAGlubmVyTG9vcHMgIT0gTlVMTABub3JtYWxpemVNdWx0aVBvbHlnb24AYmJveGVzICE9IE5VTEwAY2FuZGlkYXRlcyAhPSBOVUxMAGZpbmRQb2x5Z29uRm9ySG9sZQBjYW5kaWRhdGVCQm94ZXMgIT0gTlVMTAByZXZEaXIgIT0gSU5WQUxJRF9ESUdJVABsb2NhbGlqLmMAY2VsbFRvTG9jYWxJamsAYmFzZUNlbGwgIT0gb3JpZ2luQmFzZUNlbGwAIShvcmlnaW5PblBlbnQgJiYgaW5kZXhPblBlbnQpAGJhc2VDZWxsID09IG9yaWdpbkJhc2VDZWxsAGJhc2VDZWxsICE9IElOVkFMSURfQkFTRV9DRUxMAGxvY2FsSWprVG9DZWxsACFfaXNCYXNlQ2VsbFBlbnRhZ29uKGJhc2VDZWxsKQBiYXNlQ2VsbFJvdGF0aW9ucyA+PSAwAGdyaWRQYXRoQ2VsbHMAcG9seWZpbGwuYwBpdGVyU3RlcFBvbHlnb25Db21wYWN0ADAAdmVydGV4LmMAdmVydGV4Um90YXRpb25zAGNlbGxUb1ZlcnRleABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl";var G="function"==typeof atob?atob:function(A){var e,t,r,n,o,i,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s="",l=0;A=A.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{e=a.indexOf(A.charAt(l++))<<2|(n=a.indexOf(A.charAt(l++)))>>4,t=(15&n)<<4|(o=a.indexOf(A.charAt(l++)))>>2,r=(3&o)<<6|(i=a.indexOf(A.charAt(l++))),s+=String.fromCharCode(e),64!==o&&(s+=String.fromCharCode(t)),64!==i&&(s+=String.fromCharCode(r))}while(l=0){if((0|t)>13780509){if(0|(a=0|le(15,s)))break;s=0|n[(l=s)>>2],l=0|n[l+4>>2]}else c=0|qe(0|t,0|(a=((0|t)<0)<<31>>31),3,0),l=0|B(),a=0|We(0|t,0|a,1,0),a=0|We(0|(a=0|qe(0|c,0|l,0|a,0|B())),0|B(),1,0),l=0|B(),n[s>>2]=a,n[s+4>>2]=l,s=a;if(lt(0|r,0,s<<3),0|o){lt(0|o,0,s<<2),a=0|I(A,e,t,r,o,s,l,0);break}(a=0|Ve(s,4))?(c=0|I(A,e,t,r,a,s,l,0),Ye(a),a=c):a=13}else a=2}while(0);return P=i,0|a}function T(A,e,t,r,o){A|=0,e|=0,t|=0,r|=0,o|=0;var i,a,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0;if(a=P,P=P+16|0,m=a+8|0,n[(h=i=a)>>2]=A,n[h+4>>2]=e,(0|t)<0)return P=a,2;if(n[(s=r)>>2]=A,n[s+4>>2]=e,(s=!!(0|o))&&(n[o>>2]=0),0|HA(A,e))return P=a,9;n[m>>2]=0;A:do{if((0|t)>=1)if(s)for(f=1,d=0,g=0,h=1,s=A;;){if(!(d|g)){if(0|(s=0|R(s,e,4,m,i)))break A;if(0|HA(s=0|n[(e=i)>>2],e=0|n[e+4>>2])){s=9;break A}}if(0|(s=0|R(s,e,0|n[26800+(g<<2)>>2],m,i)))break A;if(s=0|n[(e=i)>>2],e=0|n[e+4>>2],n[(A=r+(f<<3)|0)>>2]=s,n[A+4>>2]=e,n[o+(f<<2)>>2]=h,l=(0|(A=d+1|0))==(0|h),u=6==(0|(c=g+1|0)),0|HA(s,e)){s=9;break A}if((0|(h=h+(u&l&1)|0))>(0|t)){s=0;break}f=f+1|0,d=l?0:A,g=l?u?0:c:g}else for(f=1,d=0,g=0,h=1,s=A;;){if(!(d|g)){if(0|(s=0|R(s,e,4,m,i)))break A;if(0|HA(s=0|n[(e=i)>>2],e=0|n[e+4>>2])){s=9;break A}}if(0|(s=0|R(s,e,0|n[26800+(g<<2)>>2],m,i)))break A;if(s=0|n[(e=i)>>2],e=0|n[e+4>>2],n[(A=r+(f<<3)|0)>>2]=s,n[A+4>>2]=e,l=(0|(A=d+1|0))==(0|h),u=6==(0|(c=g+1|0)),0|HA(s,e)){s=9;break A}if((0|(h=h+(u&l&1)|0))>(0|t)){s=0;break}f=f+1|0,d=l?0:A,g=l?u?0:c:g}else s=0}while(0);return P=a,0|s}function I(A,e,t,r,o,i,a,s){t|=0,r|=0,o|=0,s|=0;var l,c,u,d=0,f=0,g=0,h=0,m=0,b=0,p=0;if(u=P,P=P+16|0,l=u+8|0,c=u,d=0|At(0|(A|=0),0|(e|=0),0|(i|=0),0|(a|=0)),g=0|B(),!(!(0|(p=0|n[(b=h=r+(d<<3)|0)>>2]))&!(0|(b=0|n[b+4>>2]))|(f=(0|p)==(0|A)&(0|b)==(0|e))))do{d=0|$e(0|(d=0|We(0|d,0|g,1,0)),0|B(),0|i,0|a),g=0|B(),f=(0|(b=0|n[(p=h=r+(d<<3)|0)>>2]))==(0|A)&(0|(p=0|n[p+4>>2]))==(0|e)}while(!(!(0|b)&!(0|p)|f));if(d=o+(d<<2)|0,f&&(0|n[d>>2])<=(0|s))return P=u,0;if(n[(p=h)>>2]=A,n[p+4>>2]=e,n[d>>2]=s,(0|s)>=(0|t))return P=u,0;switch(f=s+1|0,n[l>>2]=0,0|(d=0|R(A,e,2,l,c))){case 9:m=9;break;case 0:(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f))||(m=9)}A:do{if(9==(0|m)){switch(n[l>>2]=0,0|(d=0|R(A,e,3,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}switch(n[l>>2]=0,0|(d=0|R(A,e,1,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}switch(n[l>>2]=0,0|(d=0|R(A,e,5,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}switch(n[l>>2]=0,0|(d=0|R(A,e,4,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}switch(n[l>>2]=0,0|(d=0|R(A,e,6,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}return P=u,0}}while(0);return P=u,0|d}function R(A,e,t,r,o){A|=0,e|=0,o|=0;var i,a,s=0,l=0,c=0,u=0,d=0,f=0,g=0;if((t|=0)>>>0>6)return 1;if(d=(0|n[(r|=0)>>2])%6|0,n[r>>2]=d,(0|d)>0){s=0;do{t=0|xA(t),s=s+1|0}while((0|s)<(0|n[r>>2]))}if(d=0|tt(0|A,0|e,45),B(),(a=127&d)>>>0>121)return 5;i=0|UA(A,e),s=0|tt(0|A,0|e,52),B(),s&=15;A:do{if(s){for(;;){if(c=0|tt(0|A,0|e,0|(l=3*(15-s|0)|0)),B(),7==(0|(c&=7))){e=5;break}if(g=!(0|ZA(s)),s=s+-1|0,f=0|rt(7,0,0|l),e&=~B(),A=0|rt(0|n[(g?432:16)+(28*c|0)+(t<<2)>>2],0,0|l)|A&~f,e|=l=0|B(),!(t=0|n[(g?640:224)+(28*c|0)+(t<<2)>>2])){t=0;break A}if(!s){u=8;break A}}return 0|e}u=8}while(0);8==(0|u)&&(A|=0|rt(0|(g=0|n[848+(28*a|0)+(t<<2)>>2]),0,45),e=B()|-1040385&e,t=0|n[4272+(28*a|0)+(t<<2)>>2],127&~g||(g=0|rt(0|n[848+(28*a|0)+20>>2],0,45),e=B()|-1040385&e,t=0|n[4272+(28*a|0)+20>>2],A=0|YA(g|A,e),e=0|B(),n[r>>2]=1+(0|n[r>>2]))),c=0|tt(0|A,0|e,45),B(),c&=127;A:do{if(0|z(c)){e:do{if(1==(0|UA(A,e))){if((0|a)!=(0|c)){if(0|Y(c,0|n[7696+(28*a|0)>>2])){A=0|WA(A,e),l=1,e=0|B();break}D(27795,26864,533,26872)}switch(0|i){case 3:A=0|YA(A,e),e=0|B(),n[r>>2]=1+(0|n[r>>2]),l=0;break e;case 5:A=0|WA(A,e),e=0|B(),n[r>>2]=5+(0|n[r>>2]),l=0;break e;case 0:return 9;default:return 1}}else l=0}while(0);if((0|t)>0){s=0;do{A=0|OA(A,e),e=0|B(),s=s+1|0}while((0|s)!=(0|t))}if((0|a)!=(0|c)){if(!(0|G(c))){if(!!(0|l)|5!=(0|UA(A,e)))break;n[r>>2]=1+(0|n[r>>2]);break}switch(127&d){case 8:case 118:break A}3!=(0|UA(A,e))&&(n[r>>2]=1+(0|n[r>>2]))}}else if((0|t)>0){s=0;do{A=0|YA(A,e),e=0|B(),s=s+1|0}while((0|s)!=(0|t))}}while(0);return n[r>>2]=((0|n[r>>2])+t|0)%6|0,n[(g=o)>>2]=A,n[g+4>>2]=e,0}function L(A,e,t,r){A|=0,e|=0,t|=0,r|=0;var o,i,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0;if(i=P,P=P+16|0,h=i+8|0,n[(g=o=i)>>2]=A,n[g+4>>2]=e,(0|t)<0)return P=i,2;if(!t)return n[(h=r)>>2]=A,n[h+4>>2]=e,P=i,0;n[h>>2]=0;A:do{if(0|HA(A,e))A=9;else{a=0,g=A;do{if(0|(A=0|R(g,e,4,h,o)))break A;if(a=a+1|0,0|HA(g=0|n[(e=o)>>2],e=0|n[e+4>>2])){A=9;break A}}while((0|a)<(0|t));n[(f=r)>>2]=g,n[f+4>>2]=e,f=t+-1|0,d=0,A=1;do{if(a=26800+(d<<2)|0,5==(0|d))for(l=0|n[a>>2],s=0,a=A;;){if(0|(A=0|R(0|n[(A=o)>>2],0|n[A+4>>2],l,h,o)))break A;if((0|s)!=(0|f)){if(c=0|n[(u=o)>>2],u=0|n[u+4>>2],n[(A=r+(a<<3)|0)>>2]=c,n[A+4>>2]=u,0|HA(c,u)){A=9;break A}A=a+1|0}else A=a;if((0|(s=s+1|0))>=(0|t))break;a=A}else for(l=o,u=0|n[a>>2],c=0,a=A,s=0|n[l>>2],l=0|n[l+4>>2];;){if(0|(A=0|R(s,l,u,h,o)))break A;if(s=0|n[(l=o)>>2],l=0|n[l+4>>2],n[(A=r+(a<<3)|0)>>2]=s,n[A+4>>2]=l,A=a+1|0,0|HA(s,l)){A=9;break A}if((0|(c=c+1|0))>=(0|t))break;a=A}d=d+1|0}while(d>>>0<6);A=(0|g)==(0|n[(A=o)>>2])&&(0|e)==(0|n[A+4>>2])?0:9}}while(0);return P=i,0|A}function _(A,e,t,r){t|=0,r|=0;var o,i,a,s=0,l=0;for(a=P,P=P+16|0,o=a,i=a+8|0,s=(s=!(0|HA(A|=0,e|=0)))?1:2;;){if(n[i>>2]=0,!(0|R(A,e,s,i,o))&((0|n[(l=o)>>2])==(0|t)?(0|n[l+4>>2])==(0|r):0)){A=4;break}if((s=s+1|0)>>>0>=7){s=7,A=4;break}}return 4==(0|A)?(P=a,0|s):0}function H(A,e,t,r,i,a,s){e|=0,t|=0,r|=0,i|=0,a|=0,s|=0;var l,c,u,d,f,g,h,m,b,p,x=0,v=0,w=0,y=0,k=0,C=0,D=0,E=0,M=0,Q=0,N=0,j=0,F=0,S=0,T=0,I=0,R=0,L=0,_=0;if(p=P,P=P+64|0,h=p+48|0,m=p+32|0,b=p+24|0,l=p+8|0,c=p,(0|(v=0|n[(A|=0)>>2]))<=0)return P=p,0;for(u=A+4|0,d=h+8|0,f=m+8|0,g=l+8|0,x=0,F=0;;){j=(w=0|n[u>>2])+(F<<4)|0,n[h>>2]=n[j>>2],n[h+4>>2]=n[j+4>>2],n[h+8>>2]=n[j+8>>2],n[h+12>>2]=n[j+12>>2],(0|F)==(v+-1|0)?(n[m>>2]=n[w>>2],n[m+4>>2]=n[w+4>>2],n[m+8>>2]=n[w+8>>2],n[m+12>>2]=n[w+12>>2]):(j=w+(F+1<<4)|0,n[m>>2]=n[j>>2],n[m+4>>2]=n[j+4>>2],n[m+8>>2]=n[j+8>>2],n[m+12>>2]=n[j+12>>2]),v=0|tA(h,m,r,b);A:do{if(v)w=0,x=v;else if(w=0|n[(v=b)>>2],(0|(v=0|n[v+4>>2]))>0|!(0|v)&w>>>0>0){N=0,j=0;e:for(;;){if(R=1/(+(w>>>0)+4294967296*+(0|v)),_=+o[h>>3],L=+((v=0|Ze(0|w,0|v,0|N,0|j))>>>0)+4294967296*+(0|B()),I=+(N>>>0)+4294967296*+(0|j),o[l>>3]=R*(_*L)+R*(+o[m>>3]*I),o[g>>3]=R*(+o[d>>3]*L)+R*(+o[f>>3]*I),0|(v=0|JA(l,r,c))){x=v;break}C=0|At(0|(M=0|n[(Q=c)>>2]),0|(Q=0|n[Q+4>>2]),0|e,0|t),y=0|B(),w=0|n[(k=v=s+(C<<3)|0)>>2],k=0|n[k+4>>2];t:do{if(!(0|w)&!(0|k))S=v,T=16;else for(D=0,E=0;;){if((0|D)>(0|t)|(0|D)==(0|t)&E>>>0>e>>>0){x=1;break e}if((0|w)==(0|M)&(0|k)==(0|Q))break t;if(C=0|$e(0|(v=0|We(0|C,0|y,1,0)),0|B(),0|e,0|t),y=0|B(),E=0|We(0|E,0|D,1,0),D=0|B(),!(0|(w=0|n[(k=v=s+(C<<3)|0)>>2]))&!(0|(k=0|n[k+4>>2]))){S=v,T=16;break}}}while(0);if(16!=(0|T)||(T=0,!(0|M)&!(0|Q))||(n[(E=S)>>2]=M,n[E+4>>2]=Q,E=a+(n[i>>2]<<3)|0,n[E>>2]=M,n[E+4>>2]=Q,E=0|We(0|n[(E=i)>>2],0|n[E+4>>2],1,0),M=0|B(),n[(Q=i)>>2]=E,n[Q+4>>2]=M),N=0|We(0|N,0|j,1,0),j=0|B(),w=0|n[(v=b)>>2],!((0|(v=0|n[v+4>>2]))>(0|j)|(0|v)==(0|j)&w>>>0>N>>>0)){w=1;break A}}w=0}else w=1}while(0);if(F=F+1|0,!w){T=21;break}if((0|F)>=(0|(v=0|n[A>>2]))){x=0,T=21;break}}return 21==(0|T)?(P=p,0|x):0}function z(A){return(A|=0)>>>0>121?0|(A=0):0|(A=0|n[7696+(28*A|0)+16>>2])}function G(A){return 4==(0|(A|=0))|117==(0|A)|0}function U(A){return 0|n[11120+(216*(0|n[(A|=0)>>2])|0)+(72*(0|n[A+4>>2])|0)+(24*(0|n[A+8>>2])|0)+(n[A+12>>2]<<3)>>2]}function O(A){return 0|n[11120+(216*(0|n[(A|=0)>>2])|0)+(72*(0|n[A+4>>2])|0)+(24*(0|n[A+8>>2])|0)+(n[A+12>>2]<<3)+4>>2]}function Y(A,e){return e|=0,(0|n[7696+(28*(A|=0)|0)+20>>2])==(0|e)?0|(e=1):0|(e=(0|n[7696+(28*A|0)+24>>2])==(0|e))}function V(A,e){return 0|n[848+(28*(A|=0)|0)+((e|=0)<<2)>>2]}function W(A,e){return e|=0,(0|n[848+(28*(A|=0)|0)>>2])==(0|e)?0|(e=0):(0|n[848+(28*A|0)+4>>2])==(0|e)?0|(e=1):(0|n[848+(28*A|0)+8>>2])==(0|e)?0|(e=2):(0|n[848+(28*A|0)+12>>2])==(0|e)?0|(e=3):(0|n[848+(28*A|0)+16>>2])==(0|e)?0|(e=4):(0|n[848+(28*A|0)+20>>2])==(0|e)?0|(e=5):0|((0|n[848+(28*A|0)+24>>2])==(0|e)?6:7)}function Z(A){var e,t,r;return e=(r=+o[16+(A|=0)>>3])-(t=+o[A+24>>3]),+(r>3]<+o[A+24>>3]|0}function K(A){return+(+o[(A|=0)>>3]-+o[A+8>>3])}function X(A,e){A|=0;var t,r,n=0;return(n=+o[(e|=0)>>3])>=+o[A+8>>3]&&n<=+o[A>>3]?(t=+o[A+16>>3],n=+o[A+24>>3],e=(r=+o[e+8>>3])>=n,A=r<=t&1,t>3]<+o[e+8>>3]||+o[A+8>>3]>+o[e>>3]?0|(s=0):(n=(l=+o[A+16>>3])<(u=+o[(t=A+24|0)>>3]),c=(a=+o[(s=e+16|0)>>3])<(i=+o[(r=e+24|0)>>3]),e=u-a>3],e)||(u=+ie(+o[t>>3],A))>+ie(+o[s>>3],e)?0|(c=0):0|(c=1))}function $(A,e){e|=0;var t,r,n,i,a,s=0,l=0,c=0,u=0;return+o[(A|=0)>>3]<+o[e>>3]||+o[A+8>>3]>+o[e+8>>3]?0|(s=0):(n=(i=+o[(s=A+16|0)>>3])<(l=+o[A+24>>3]),c=(u=+o[(t=e+16|0)>>3])<(a=+o[(r=e+24|0)>>3]),e=l-u>3],e)?0|(c=(u=+ie(+o[s>>3],A))>=+ie(+o[t>>3],e)):0|(c=0))}function AA(A,e){A|=0,e|=0;var t,r,i,a,s,l=0;i=P,P=P+176|0,n[(r=i)>>2]=4,l=+o[e>>3],o[r+8>>3]=l,a=+o[e+16>>3],o[r+16>>3]=a,o[r+24>>3]=l,l=+o[e+24>>3],o[r+32>>3]=l,s=+o[e+8>>3],o[r+40>>3]=s,o[r+48>>3]=l,o[r+56>>3]=s,o[r+64>>3]=a,t=96+(e=r+72|0)|0;do{n[e>>2]=0,e=e+4|0}while((0|e)<(0|t));st(0|A,0|r,168),P=i}function eA(A,e,t){A|=0,e|=0,t|=0;var r,a,c,u,d,f,g,h=0,m=0,b=0,p=0,v=0,y=0,k=0;f=P,P=P+288|0,d=f+264|0,p=f+96|0,m=(h=b=f)+96|0;do{n[h>>2]=0,h=h+4|0}while((0|h)<(0|m));return 0|(e=0|Ae(e,b))?(P=f,0|(y=e)):(qA(b=0|n[(m=b)>>2],m=0|n[m+4>>2],d),$A(b,m,p),u=+ae(d,p+8|0),o[d>>3]=+o[A>>3],o[(m=d+8|0)>>3]=+o[A+16>>3],o[p>>3]=+o[A+8>>3],o[(b=p+8|0)>>3]=+o[A+24>>3],a=+ae(d,p),k=+o[m>>3]-+o[b>>3],c=+l(+k),g=+o[d>>3]-+o[p>>3],r=+l(+g),!(0==k|0==g)&&(k=+ot(+c,+r),k=+x(+a*a/+it(+k/+it(+c,+r),3)/(u*(2.59807621135*u)*.8)),o[i>>3]=k,v=~~k>>>0,y=+l(k)>=1?k>0?~~+w(+s(k/4294967296),4294967295)>>>0:~~+x((k-+(~~k>>>0))/4294967296)>>>0:0,2146435072&~n[i+4>>2])?(p=!(0|v)&!(0|y),n[(e=t)>>2]=p?1:v,n[e+4>>2]=p?0:y,e=0):e=1,P=f,0|(y=e))}function tA(A,e,t,r){A|=0,e|=0,t|=0,r|=0;var a,c,u,d,f=0,g=0,h=0;d=P,P=P+288|0,c=d+264|0,u=d+96|0,a=(f=g=d)+96|0;do{n[f>>2]=0,f=f+4|0}while((0|f)<(0|a));return 0|(t=0|Ae(t,g))?(P=d,0|(r=t)):(qA(f=0|n[(t=g)>>2],t=0|n[t+4>>2],c),$A(f,t,u),h=+ae(c,u+8|0),h=+x(+ +ae(A,e)/(2*h)),o[i>>3]=h,t=~~h>>>0,f=+l(h)>=1?h>0?~~+w(+s(h/4294967296),4294967295)>>>0:~~+x((h-+(~~h>>>0))/4294967296)>>>0:0,2146435072&~n[i+4>>2]?(g=!(0|t)&!(0|f),n[r>>2]=g?1:t,n[r+4>>2]=g?0:f,P=d,0|(r=0)):(P=d,0|(r=1)))}function rA(A,e,t,r){e|=0,t|=0,r|=0,n[(A|=0)>>2]=e,n[A+4>>2]=t,n[A+8>>2]=r}function nA(A){var e,t=0,r=0,o=0,i=0,a=0;t=0|n[(A|=0)>>2],r=0|n[(e=A+4|0)>>2],(0|t)<0&&(r=r-t|0,n[e>>2]=r,n[(a=A+8|0)>>2]=(0|n[a>>2])-t,n[A>>2]=0,t=0),(0|r)<0?(t=t-r|0,n[A>>2]=t,i=(0|n[(a=A+8|0)>>2])-r|0,n[a>>2]=i,n[e>>2]=0,r=0):(a=i=A+8|0,i=0|n[i>>2]),(0|i)<0&&(t=t-i|0,n[A>>2]=t,r=r-i|0,n[e>>2]=r,n[a>>2]=0,i=0),(0|(o=(0|i)<(0|(o=(0|r)<(0|t)?r:t))?i:o))<=0||(n[A>>2]=t-o,n[e>>2]=r-o,n[a>>2]=i-o)}function oA(A,e){var t,r;e|=0,r=0|n[8+(A|=0)>>2],t=+((0|n[A+4>>2])-r|0),o[e>>3]=+((0|n[A>>2])-r|0)-.5*t,o[e+8>>3]=.8660254037844386*t}function iA(A,e,t){A|=0,e|=0,n[(t|=0)>>2]=(0|n[e>>2])+(0|n[A>>2]),n[t+4>>2]=(0|n[e+4>>2])+(0|n[A+4>>2]),n[t+8>>2]=(0|n[e+8>>2])+(0|n[A+8>>2])}function aA(A,e,t){A|=0,e|=0,n[(t|=0)>>2]=(0|n[A>>2])-(0|n[e>>2]),n[t+4>>2]=(0|n[A+4>>2])-(0|n[e+4>>2]),n[t+8>>2]=(0|n[A+8>>2])-(0|n[e+8>>2])}function sA(A,e){e|=0;var t,r=0;r=0|v(0|n[(A|=0)>>2],e),n[A>>2]=r,t=0|v(0|n[(r=A+4|0)>>2],e),n[r>>2]=t,e=0|v(0|n[(A=A+8|0)>>2],e),n[A>>2]=e}function lA(A){var e,t,r=0,o=0,i=0,a=0,s=0;s=(0|(t=0|n[(A|=0)>>2]))<0,A=(A=(o=(0|(a=((e=(0|(i=(0|n[A+4>>2])-(s?t:0)|0))<0)?0-i|0:0)+((0|n[A+8>>2])-(s?t:0))|0))<0)?0:a)-((i=(0|(o=(0|A)<(0|(o=(0|(r=(e?0:i)-(o?a:0)|0))<(0|(a=(s?0:t)-(e?i:0)-(o?a:0)|0))?r:a))?A:o))>0)?o:0)|0,r=r-(i?o:0)|0;A:do{switch(a-(i?o:0)|0){case 0:switch(0|r){case 0:return 0|(0|A?1==(0|A)?1:7:0);case 1:return 0|(0|A?1==(0|A)?3:7:2);default:break A}case 1:switch(0|r){case 0:return 0|(0|A?1==(0|A)?5:7:4);case 1:if(A)break A;return 6;default:break A}}}while(0);return 7}function cA(A){var e,t,r=0,o=0,i=0,a=0,s=0,l=0,c=0;if(l=0|n[(t=8+(A|=0)|0)>>2],(e=(0|n[A>>2])-l|0)>>>0>715827881|(l=(0|n[(c=A+4|0)>>2])-l|0)>>>0>715827881){if(a=2147483647-e|0,s=-2147483648-e|0,(i=(0|e)>0)?(0|a)<(0|e):(0|s)>(0|e))return 1;if(o=e<<1,i?(2147483647-o|0)<(0|e):(-2147483648-o|0)>(0|e))return 1;if((0|l)>0?(2147483647-l|0)<(0|l):(-2147483648-l|0)>(0|l))return 1;if(r=3*e|0,o=l<<1,(i?(0|a)<(0|o):(0|s)>(0|o))||((0|e)>-1?(-2147483648|r)>=(0|l):(-2147483648^r)<(0|l)))return 1}else o=l<<1,r=3*e|0;return i=0|Ue(.14285714285714285*+(r-l|0)),n[A>>2]=i,a=0|Ue(.14285714285714285*+(o+e|0)),n[c>>2]=a,n[t>>2]=0,r=(o=(0|a)<(0|i))?i:a,(0|(o=o?a:i))<0&&((-2147483648==(0|o)||((0|r)>0?(2147483647-r|0)<(0|o):(-2147483648-r|0)>(0|o)))&&D(27795,26892,354,26903),((0|r)>-1?(-2147483648|r)>=(0|o):(-2147483648^r)<(0|o))&&D(27795,26892,354,26903)),r=a-i|0,(0|i)<0?(o=0-i|0,n[c>>2]=r,n[t>>2]=o,n[A>>2]=0,i=0):(r=a,o=0),(0|r)<0&&(i=i-r|0,n[A>>2]=i,o=o-r|0,n[t>>2]=o,n[c>>2]=0,r=0),s=i-o|0,a=r-o|0,(0|o)<0?(n[A>>2]=s,n[c>>2]=a,n[t>>2]=0,r=a,a=s,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|r)<(0|a)?r:a))?o:i))<=0||(n[A>>2]=a-i,n[c>>2]=r-i,n[t>>2]=o-i),0}function uA(A){var e,t=0,r=0,o=0,i=0,a=0,s=0,l=0;if(i=0|n[(e=8+(A|=0)|0)>>2],(a=(0|n[A>>2])-i|0)>>>0>715827881|(i=(0|n[(s=A+4|0)>>2])-i|0)>>>0>715827881){if((r=(0|a)>0)?(2147483647-a|0)<(0|a):(-2147483648-a|0)>(0|a))return 1;if(t=a<<1,(o=(0|i)>0)?(2147483647-i|0)<(0|i):(-2147483648-i|0)>(0|i))return 1;if(l=i<<1,o?(2147483647-l|0)<(0|i):(-2147483648-l|0)>(0|i))return 1;if(r?(2147483647-t|0)<(0|i):(-2147483648-t|0)>(0|i))return 1;if(r=3*i|0,(0|i)>-1?(-2147483648|r)>=(0|a):(-2147483648^r)<(0|a))return 1}else r=3*i|0,t=a<<1;return o=0|Ue(.14285714285714285*+(t+i|0)),n[A>>2]=o,i=0|Ue(.14285714285714285*+(r-a|0)),n[s>>2]=i,n[e>>2]=0,t=(r=(0|i)<(0|o))?o:i,(0|(r=r?i:o))<0&&((-2147483648==(0|r)||((0|t)>0?(2147483647-t|0)<(0|r):(-2147483648-t|0)>(0|r)))&&D(27795,26892,402,26917),((0|t)>-1?(-2147483648|t)>=(0|r):(-2147483648^t)<(0|r))&&D(27795,26892,402,26917)),t=i-o|0,(0|o)<0?(r=0-o|0,n[s>>2]=t,n[e>>2]=r,n[A>>2]=0,o=0):(t=i,r=0),(0|t)<0&&(o=o-t|0,n[A>>2]=o,r=r-t|0,n[e>>2]=r,n[s>>2]=0,t=0),a=o-r|0,i=t-r|0,(0|r)<0?(n[A>>2]=a,n[s>>2]=i,n[e>>2]=0,t=i,i=a,r=0):i=o,(0|(o=(0|r)<(0|(o=(0|t)<(0|i)?t:i))?r:o))<=0||(n[A>>2]=i-o,n[s>>2]=t-o,n[e>>2]=r-o),0}function dA(A){var e,t,r=0,o=0,i=0,a=0,s=0;o=0|n[(e=8+(A|=0)|0)>>2],i=0|Ue(.14285714285714285*+((3*(r=(0|n[A>>2])-o|0)|0)-(o=(0|n[(t=A+4|0)>>2])-o|0)|0)),n[A>>2]=i,r=0|Ue(.14285714285714285*+((o<<1)+r|0)),n[t>>2]=r,n[e>>2]=0,o=r-i|0,(0|i)<0?(s=0-i|0,n[t>>2]=o,n[e>>2]=s,n[A>>2]=0,r=o,i=0,o=s):o=0,(0|r)<0&&(i=i-r|0,n[A>>2]=i,o=o-r|0,n[e>>2]=o,n[t>>2]=0,r=0),s=i-o|0,a=r-o|0,(0|o)<0?(n[A>>2]=s,n[t>>2]=a,n[e>>2]=0,r=a,a=s,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|r)<(0|a)?r:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=r-i,n[e>>2]=o-i)}function fA(A){var e,t,r=0,o=0,i=0,a=0,s=0;o=0|n[(e=8+(A|=0)|0)>>2],i=0|Ue(.14285714285714285*+(((r=(0|n[A>>2])-o|0)<<1)+(o=(0|n[(t=A+4|0)>>2])-o|0)|0)),n[A>>2]=i,r=0|Ue(.14285714285714285*+((3*o|0)-r|0)),n[t>>2]=r,n[e>>2]=0,o=r-i|0,(0|i)<0?(s=0-i|0,n[t>>2]=o,n[e>>2]=s,n[A>>2]=0,r=o,i=0,o=s):o=0,(0|r)<0&&(i=i-r|0,n[A>>2]=i,o=o-r|0,n[e>>2]=o,n[t>>2]=0,r=0),s=i-o|0,a=r-o|0,(0|o)<0?(n[A>>2]=s,n[t>>2]=a,n[e>>2]=0,r=a,a=s,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|r)<(0|a)?r:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=r-i,n[e>>2]=o-i)}function gA(A){var e,t,r,o=0,i=0,a=0,s=0;o=0|n[(A|=0)>>2],i=0|n[(t=A+4|0)>>2],a=0|n[(r=A+8|0)>>2],s=i+(3*o|0)|0,n[A>>2]=s,i=a+(3*i|0)|0,n[t>>2]=i,o=(3*a|0)+o|0,n[r>>2]=o,a=i-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=a,n[r>>2]=o,n[A>>2]=0,i=a,a=0):a=s,(0|i)<0&&(a=a-i|0,n[A>>2]=a,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=a-o|0,s=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=s,n[r>>2]=0,a=e,o=0):s=i,(0|(i=(0|o)<(0|(i=(0|s)<(0|a)?s:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=s-i,n[r>>2]=o-i)}function hA(A){var e,t,r,o=0,i=0,a=0,s=0;s=0|n[(A|=0)>>2],a=(3*(o=0|n[(t=A+4|0)>>2])|0)+s|0,s=(i=0|n[(r=A+8|0)>>2])+(3*s|0)|0,n[A>>2]=s,n[t>>2]=a,o=(3*i|0)+o|0,n[r>>2]=o,i=a-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=i,n[r>>2]=o,n[A>>2]=0,s=0):i=a,(0|i)<0&&(s=s-i|0,n[A>>2]=s,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=s-o|0,a=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=a,n[r>>2]=0,s=e,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|a)<(0|s)?a:s))?o:i))<=0||(n[A>>2]=s-i,n[t>>2]=a-i,n[r>>2]=o-i)}function mA(A,e){A|=0;var t,r,o,i=0,a=0,s=0;((e|=0)-1|0)>>>0>=6||(s=(0|n[15440+(12*e|0)>>2])+(0|n[A>>2])|0,n[A>>2]=s,o=A+4|0,a=(0|n[15440+(12*e|0)+4>>2])+(0|n[o>>2])|0,n[o>>2]=a,r=A+8|0,e=(0|n[15440+(12*e|0)+8>>2])+(0|n[r>>2])|0,n[r>>2]=e,i=a-s|0,(0|s)<0?(e=e-s|0,n[o>>2]=i,n[r>>2]=e,n[A>>2]=0,a=0):(i=a,a=s),(0|i)<0&&(a=a-i|0,n[A>>2]=a,e=e-i|0,n[r>>2]=e,n[o>>2]=0,i=0),t=a-e|0,s=i-e|0,(0|e)<0?(n[A>>2]=t,n[o>>2]=s,n[r>>2]=0,a=t,e=0):s=i,(0|(i=(0|e)<(0|(i=(0|s)<(0|a)?s:a))?e:i))<=0||(n[A>>2]=a-i,n[o>>2]=s-i,n[r>>2]=e-i))}function bA(A){var e,t,r,o=0,i=0,a=0,s=0;s=0|n[(A|=0)>>2],a=(o=0|n[(t=A+4|0)>>2])+s|0,s=(i=0|n[(r=A+8|0)>>2])+s|0,n[A>>2]=s,n[t>>2]=a,o=i+o|0,n[r>>2]=o,i=a-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=i,n[r>>2]=o,n[A>>2]=0,a=0):(i=a,a=s),(0|i)<0&&(a=a-i|0,n[A>>2]=a,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=a-o|0,s=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=s,n[r>>2]=0,a=e,o=0):s=i,(0|(i=(0|o)<(0|(i=(0|s)<(0|a)?s:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=s-i,n[r>>2]=o-i)}function pA(A){var e,t,r,o=0,i=0,a=0,s=0;o=0|n[(A|=0)>>2],a=0|n[(t=A+4|0)>>2],i=0|n[(r=A+8|0)>>2],s=a+o|0,n[A>>2]=s,a=i+a|0,n[t>>2]=a,o=i+o|0,n[r>>2]=o,i=a-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=i,n[r>>2]=o,n[A>>2]=0,a=0):(i=a,a=s),(0|i)<0&&(a=a-i|0,n[A>>2]=a,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=a-o|0,s=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=s,n[r>>2]=0,a=e,o=0):s=i,(0|(i=(0|o)<(0|(i=(0|s)<(0|a)?s:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=s-i,n[r>>2]=o-i)}function xA(A){switch(0|(A|=0)){case 1:A=5;break;case 5:A=4;break;case 4:A=6;break;case 6:A=2;break;case 2:A=3;break;case 3:A=1}return 0|A}function vA(A){switch(0|(A|=0)){case 1:A=3;break;case 3:A=2;break;case 2:A=6;break;case 6:A=4;break;case 4:A=5;break;case 5:A=1}return 0|A}function wA(A){var e,t,r,o=0,i=0,a=0,s=0;o=0|n[(A|=0)>>2],i=0|n[(t=A+4|0)>>2],a=0|n[(r=A+8|0)>>2],s=i+(o<<1)|0,n[A>>2]=s,i=a+(i<<1)|0,n[t>>2]=i,o=(a<<1)+o|0,n[r>>2]=o,a=i-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=a,n[r>>2]=o,n[A>>2]=0,i=a,a=0):a=s,(0|i)<0&&(a=a-i|0,n[A>>2]=a,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=a-o|0,s=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=s,n[r>>2]=0,a=e,o=0):s=i,(0|(i=(0|o)<(0|(i=(0|s)<(0|a)?s:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=s-i,n[r>>2]=o-i)}function yA(A){var e,t,r,o=0,i=0,a=0,s=0;s=0|n[(A|=0)>>2],a=((o=0|n[(t=A+4|0)>>2])<<1)+s|0,s=(i=0|n[(r=A+8|0)>>2])+(s<<1)|0,n[A>>2]=s,n[t>>2]=a,o=(i<<1)+o|0,n[r>>2]=o,i=a-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=i,n[r>>2]=o,n[A>>2]=0,s=0):i=a,(0|i)<0&&(s=s-i|0,n[A>>2]=s,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=s-o|0,a=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=a,n[r>>2]=0,s=e,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|a)<(0|s)?a:s))?o:i))<=0||(n[A>>2]=s-i,n[t>>2]=a-i,n[r>>2]=o-i)}function kA(A,e){e|=0;var t,r,o,i=0,a=0,s=0;return o=(0|(r=(0|n[(A|=0)>>2])-(0|n[e>>2])|0))<0,t=(0|(a=(0|n[A+4>>2])-(0|n[e+4>>2])-(o?r:0)|0))<0,e=(e=(A=(0|(s=(o?0-r|0:0)+(0|n[A+8>>2])-(0|n[e+8>>2])+(t?0-a|0:0)|0))<0)?0:s)-((a=(0|(A=(0|e)<(0|(A=(0|(i=(t?0:a)-(A?s:0)|0))<(0|(s=(o?0:r)-(t?a:0)-(A?s:0)|0))?i:s))?e:A))>0)?A:0)|0,i=i-(a?A:0)|0,0|((0|(A=(0|(A=s-(a?A:0)|0))>-1?A:0-A|0))>(0|(e=(0|(i=(0|i)>-1?i:0-i|0))>(0|(e=(0|e)>-1?e:0-e|0))?i:e))?A:e)}function CA(A){var e,t,r,o;t=(o=0|n[(e=8+(A|=0)|0)>>2])-(0|n[A>>2])|0,n[A>>2]=t,A=(0|n[(r=A+4|0)>>2])-o|0,n[r>>2]=A,n[e>>2]=0-(A+t)}function BA(A){var e,t,r=0,o=0,i=0,a=0,s=0;r=0-(o=0|n[(A|=0)>>2])|0,n[A>>2]=r,n[(e=A+8|0)>>2]=0,a=(i=0|n[(t=A+4|0)>>2])+o|0,(0|o)>0?(n[t>>2]=a,n[e>>2]=o,n[A>>2]=0,r=0,i=a):o=0,(0|i)<0?(s=r-i|0,n[A>>2]=s,o=o-i|0,n[e>>2]=o,n[t>>2]=0,a=s-o|0,r=0-o|0,(0|o)<0?(n[A>>2]=a,n[t>>2]=r,n[e>>2]=0,i=r,o=0):(i=0,a=s)):a=r,(0|(r=(0|o)<(0|(r=(0|i)<(0|a)?i:a))?o:r))<=0||(n[A>>2]=a-r,n[t>>2]=i-r,n[e>>2]=o-r)}function DA(A,e){var t=0;switch(t=0|tt(0|(A|=0),0|(e|=0),56),B(),7&t){case 0:case 7:return 0}return t=-2130706433&e|134217728,!0&268435456==(2013265920&e)?!0&16777216==(117440512&e)&!!(0|HA(A,t))?0|(t=0):0|(t=0|IA(A,t)):0|(t=0)}function EA(A,e,t){t|=0;var r,o,i=0,a=0;return o=P,P=P+16|0,r=o,a=-2130706433&(e|=0)|134217728,!0&268435456==(2013265920&e)?(i=0|tt(0|(A|=0),0|e,56),B(),i=0|function(A,e,t){t|=0;var r,o=0,i=0;if(r=P,P=P+16|0,i=r,o=0|HA(A|=0,e|=0),(t+-1|0)>>>0>5)return P=r,-1;if(1==(0|t)&(o=!!(0|o)))return P=r,-1;do{if(!(0|Fe(A,e,i))){if(o){o=(5+(0|n[26352+(t<<2)>>2])-(0|n[i>>2])|0)%5|0;break}o=(6+(0|n[26384+(t<<2)>>2])-(0|n[i>>2])|0)%6|0;break}o=-1}while(0);return P=r,0|(i=o)}(A,a,7&i),-1==(0|i)?(n[t>>2]=0,P=o,0|(a=6)):(0|XA(A,a,r)&&D(27795,26932,282,26947),e=0|tt(0|A,0|e,52),B(),e&=15,0|HA(A,a)?QA(r,e,i,2,t):FA(r,e,i,2,t),P=o,0|(a=0))):(P=o,0|(a=6))}function MA(A,e,t,r,i){e|=0,t|=0,r|=0,i|=0;var a,s=0,u=0;if(s=+function(A){var e,t;return t=+o[(A|=0)>>3],e=+o[A+8>>3],+ +c(+(t*t+e*e))}(A|=0),s<1e-16)return e=15600+(e<<4)|0,n[i>>2]=n[e>>2],n[i+4>>2]=n[e+4>>2],n[i+8>>2]=n[e+8>>2],void(n[i+12>>2]=n[e+12>>2]);if(u=+p(+ +o[A+8>>3],+ +o[A>>3]),(0|t)>0){A=0;do{s*=.37796447300922725,A=A+1|0}while((0|A)!=(0|t))}a=.3333333333333333*s,r?(t=!(0|ZA(t)),s=+b(.381966011250105*(t?a:.37796447300922725*a))):(s=+b(.381966011250105*s),0|ZA(t)&&(u=+ne(u+.3334731722518321))),function(A,e,t,r){A|=0,e=+e,r|=0;var i=0,a=0,s=0,c=0;if((t=+t)<1e-16)return n[r>>2]=n[A>>2],n[r+4>>2]=n[A+4>>2],n[r+8>>2]=n[A+8>>2],void(n[r+12>>2]=n[A+12>>2]);a=e<0?e+6.283185307179586:e,a=e>=6.283185307179586?a+-6.283185307179586:a;do{if(!(a<1e-16)){if(i=+l(+(a+-3.141592653589793))<1e-16,e=+o[A>>3],i){e-=t,o[r>>3]=e,i=r;break}if(s=+d(+t),t=+f(+t),e=s*+f(+e)+ +d(+a)*(t*+d(+e)),e=+m(+((e=e>1?1:e)<-1?-1:e)),o[r>>3]=e,+l(+(e+-1.5707963267948966))<1e-16)return o[r>>3]=1.5707963267948966,void(o[r+8>>3]=0);if(+l(+(e+1.5707963267948966))<1e-16)return o[r>>3]=-1.5707963267948966,void(o[r+8>>3]=0);if(c=1/+d(+e),a=t*+f(+a)*c,t=+o[A>>3],e=c*((s-+f(+e)*+f(+t))/+d(+t)),s=a>1?1:a,e=e>1?1:e,(e=+o[A+8>>3]+ +p(+(s<-1?-1:s),+(e<-1?-1:e)))>3.141592653589793)do{e+=-6.283185307179586}while(e>3.141592653589793);if(e<-3.141592653589793)do{e+=6.283185307179586}while(e<-3.141592653589793);return void(o[r+8>>3]=e)}e=+o[A>>3]+t,o[r>>3]=e,i=r}while(0);if(+l(+(e+-1.5707963267948966))<1e-16)return o[i>>3]=1.5707963267948966,void(o[r+8>>3]=0);if(+l(+(e+1.5707963267948966))<1e-16)return o[i>>3]=-1.5707963267948966,void(o[r+8>>3]=0);if((e=+o[A+8>>3])>3.141592653589793)do{e+=-6.283185307179586}while(e>3.141592653589793);if(e<-3.141592653589793)do{e+=6.283185307179586}while(e<-3.141592653589793);o[r+8>>3]=e}(15600+(e<<4)|0,+ne(+o[15920+(24*e|0)>>3]-u),s,i)}function QA(A,e,t,r,i){A|=0,e|=0,t|=0,r|=0,i|=0;var a,s,l,c,u,d,f,g,h,m,b,p,x,v,w,y,k,C,B,E,M,Q,N=0,j=0,F=0,S=0,T=0,I=0;if(Q=P,P=P+272|0,S=Q+240|0,B=Q,E=Q+224|0,M=Q+208|0,b=Q+176|0,p=Q+160|0,x=Q+192|0,v=Q+144|0,w=Q+128|0,y=Q+112|0,k=Q+96|0,C=Q+80|0,n[(N=Q+256|0)>>2]=e,n[S>>2]=n[A>>2],n[S+4>>2]=n[A+4>>2],n[S+8>>2]=n[A+8>>2],n[S+12>>2]=n[A+12>>2],NA(S,N,B),n[i>>2]=0,(0|(S=r+t+(5==(0|r)&1)|0))<=(0|t))P=Q;else{s=E+4|0,l=b+4|0,c=t+5|0,u=16880+((a=0|n[N>>2])<<2)|0,d=16960+(a<<2)|0,f=w+8|0,g=y+8|0,h=k+8|0,m=M+4|0,F=t;A:for(;;){j=B+((0|F)%5<<4)|0,n[M>>2]=n[j>>2],n[M+4>>2]=n[j+4>>2],n[M+8>>2]=n[j+8>>2],n[M+12>>2]=n[j+12>>2];do{}while(2==(0|jA(M,a,0,1)));if((0|F)>(0|t)&!!(0|ZA(e))){if(n[b>>2]=n[M>>2],n[b+4>>2]=n[M+4>>2],n[b+8>>2]=n[M+8>>2],n[b+12>>2]=n[M+12>>2],oA(s,p),r=0|n[b>>2],N=0|n[17040+(80*r|0)+(n[E>>2]<<2)>>2],n[b>>2]=n[18640+(80*r|0)+(20*N|0)>>2],(0|(j=0|n[18640+(80*r|0)+(20*N|0)+16>>2]))>0){A=0;do{bA(l),A=A+1|0}while((0|A)<(0|j))}switch(j=18640+(80*r|0)+(20*N|0)+4|0,n[x>>2]=n[j>>2],n[x+4>>2]=n[j+4>>2],n[x+8>>2]=n[j+8>>2],sA(x,3*(0|n[u>>2])|0),iA(l,x,l),nA(l),oA(l,v),T=+(0|n[d>>2]),o[w>>3]=3*T,o[f>>3]=0,I=-1.5*T,o[y>>3]=I,o[g>>3]=2.598076211353316*T,o[k>>3]=I,o[h>>3]=-2.598076211353316*T,0|n[17040+(80*(0|n[b>>2])|0)+(n[M>>2]<<2)>>2]){case 1:A=y,r=w;break;case 3:A=k,r=y;break;case 2:A=w,r=k;break;default:A=12;break A}Ne(p,v,r,A,C),MA(C,0|n[b>>2],a,1,i+8+(n[i>>2]<<4)|0),n[i>>2]=1+(0|n[i>>2])}if((0|F)<(0|c)&&(oA(m,b),MA(b,0|n[M>>2],a,1,i+8+(n[i>>2]<<4)|0),n[i>>2]=1+(0|n[i>>2])),n[E>>2]=n[M>>2],n[E+4>>2]=n[M+4>>2],n[E+8>>2]=n[M+8>>2],n[E+12>>2]=n[M+12>>2],(0|(F=F+1|0))>=(0|S)){A=3;break}}3!=(0|A)?12==(0|A)&&D(26970,27017,572,27027):P=Q}}function NA(A,e,t){A|=0,e|=0,t|=0;var r,o=0,i=0,a=0,s=0,l=0;r=P,P=P+128|0,i=r,s=20240,l=60+(a=o=r+64|0)|0;do{n[a>>2]=n[s>>2],a=a+4|0,s=s+4|0}while((0|a)<(0|l));s=20304,l=(a=i)+60|0;do{n[a>>2]=n[s>>2],a=a+4|0,s=s+4|0}while((0|a)<(0|l));o=(l=!(0|ZA(0|n[e>>2])))?o:i,wA(i=A+4|0),yA(i),0|ZA(0|n[e>>2])&&(hA(i),n[e>>2]=1+(0|n[e>>2])),n[t>>2]=n[A>>2],iA(i,o,e=t+4|0),nA(e),n[t+16>>2]=n[A>>2],iA(i,o+12|0,e=t+20|0),nA(e),n[t+32>>2]=n[A>>2],iA(i,o+24|0,e=t+36|0),nA(e),n[t+48>>2]=n[A>>2],iA(i,o+36|0,e=t+52|0),nA(e),n[t+64>>2]=n[A>>2],iA(i,o+48|0,t=t+68|0),nA(t),P=r}function jA(A,e,t,r){t|=0,r|=0;var o,i,a,s,l,c,u=0,d=0,f=0,g=0,h=0;if(c=P,P=P+32|0,l=c+12|0,i=c,h=4+(A|=0)|0,g=0|n[16960+((e|=0)<<2)>>2],g=(s=!!(0|r))?3*g|0:g,u=0|n[h>>2],o=0|n[(a=A+8|0)>>2],s){if((0|(u=o+u+(r=0|n[(d=A+12|0)>>2])|0))==(0|g))return P=c,1;f=d}else u=o+u+(r=0|n[(f=A+12|0)>>2])|0;if((0|u)<=(0|g))return P=c,0;do{if((0|r)>0){if(r=0|n[A>>2],(0|o)>0){d=18640+(80*r|0)+60|0,r=A;break}r=18640+(80*r|0)+40|0,t?(rA(l,g,0,0),aA(h,l,i),pA(i),iA(i,l,h),d=r,r=A):(d=r,r=A)}else d=18640+(80*(0|n[A>>2])|0)+20|0,r=A}while(0);if(n[r>>2]=n[d>>2],(0|n[(u=d+16|0)>>2])>0){r=0;do{bA(h),r=r+1|0}while((0|r)<(0|n[u>>2]))}return A=d+4|0,n[l>>2]=n[A>>2],n[l+4>>2]=n[A+4>>2],n[l+8>>2]=n[A+8>>2],e=0|n[16880+(e<<2)>>2],sA(l,s?3*e|0:e),iA(h,l,h),nA(h),r=s&&((0|n[a>>2])+(0|n[h>>2])+(0|n[f>>2])|0)==(0|g)?1:2,P=c,0|r}function PA(A,e){A|=0,e|=0;var t=0;do{t=0|jA(A,e,0,1)}while(2==(0|t));return 0|t}function FA(A,e,t,r,i){A|=0,e|=0,t|=0,r|=0,i|=0;var a,s,l,c,u,d,f,g,h,m,b,p,x,v,w,y,k,C,B=0,E=0,M=0,Q=0,N=0;if(C=P,P=P+240|0,v=C+208|0,w=C,y=C+192|0,k=C+176|0,h=C+160|0,m=C+144|0,b=C+128|0,p=C+112|0,x=C+96|0,n[(B=C+224|0)>>2]=e,n[v>>2]=n[A>>2],n[v+4>>2]=n[A+4>>2],n[v+8>>2]=n[A+8>>2],n[v+12>>2]=n[A+12>>2],SA(v,B,w),n[i>>2]=0,(0|(g=r+t+(6==(0|r)&1)|0))<=(0|t))P=C;else{s=t+6|0,l=16960+((a=0|n[B>>2])<<2)|0,c=m+8|0,u=b+8|0,d=p+8|0,f=y+4|0,E=0,M=t,r=-1;A:for(;;){if(A=w+((B=(0|M)%6|0)<<4)|0,n[y>>2]=n[A>>2],n[y+4>>2]=n[A+4>>2],n[y+8>>2]=n[A+8>>2],n[y+12>>2]=n[A+12>>2],A=E,E=0|jA(y,a,0,1),(0|M)>(0|t)&!!(0|ZA(e))&&1!=(0|A)&&(0|n[y>>2])!=(0|r)){switch(oA(w+((B+5|0)%6<<4)+4|0,k),oA(w+(B<<4)+4|0,h),Q=+(0|n[l>>2]),o[m>>3]=3*Q,o[c>>3]=0,N=-1.5*Q,o[b>>3]=N,o[u>>3]=2.598076211353316*Q,o[p>>3]=N,o[d>>3]=-2.598076211353316*Q,B=0|n[v>>2],0|n[17040+(80*B|0)+(((0|r)==(0|B)?n[y>>2]:r)<<2)>>2]){case 1:A=b,r=m;break;case 3:A=p,r=b;break;case 2:A=m,r=p;break;default:A=8;break A}Ne(k,h,r,A,x),0|je(k,x)||0|je(h,x)||(MA(x,0|n[v>>2],a,1,i+8+(n[i>>2]<<4)|0),n[i>>2]=1+(0|n[i>>2]))}if((0|M)<(0|s)&&(oA(f,k),MA(k,0|n[y>>2],a,1,i+8+(n[i>>2]<<4)|0),n[i>>2]=1+(0|n[i>>2])),(0|(M=M+1|0))>=(0|g)){A=3;break}r=0|n[y>>2]}3!=(0|A)?8==(0|A)&&D(27054,27017,737,27099):P=C}}function SA(A,e,t){A|=0,e|=0,t|=0;var r,o=0,i=0,a=0,s=0,l=0;r=P,P=P+160|0,i=r,s=20368,l=72+(a=o=r+80|0)|0;do{n[a>>2]=n[s>>2],a=a+4|0,s=s+4|0}while((0|a)<(0|l));s=20448,l=(a=i)+72|0;do{n[a>>2]=n[s>>2],a=a+4|0,s=s+4|0}while((0|a)<(0|l));o=(l=!(0|ZA(0|n[e>>2])))?o:i,wA(i=A+4|0),yA(i),0|ZA(0|n[e>>2])&&(hA(i),n[e>>2]=1+(0|n[e>>2])),n[t>>2]=n[A>>2],iA(i,o,e=t+4|0),nA(e),n[t+16>>2]=n[A>>2],iA(i,o+12|0,e=t+20|0),nA(e),n[t+32>>2]=n[A>>2],iA(i,o+24|0,e=t+36|0),nA(e),n[t+48>>2]=n[A>>2],iA(i,o+36|0,e=t+52|0),nA(e),n[t+64>>2]=n[A>>2],iA(i,o+48|0,e=t+68|0),nA(e),n[t+80>>2]=n[A>>2],iA(i,o+60|0,t=t+84|0),nA(t),P=r}function TA(A,e){return e=0|tt(0|(A|=0),0|(e|=0),45),B(),127&e}function IA(A,e){A|=0;var t=0,n=0,o=0,i=0;return!0&134217728==(-16777216&(e|=0))?(n=0|tt(0|A,0|e,52),B(),n&=15,t=0|tt(0|A,0|e,45),B(),(t&=127)>>>0>121?0|(A=0):!(613566756&(i=0|rt(0|(o=0|tt(0|A,0|e,0|(i=3*(15^n)|0))),0|B(),0|i))&Ze(-1227133514,-1171,0|i,0|(o=0|B())))&!(4681&o&B())&&15==(0|n)|!(0|(i=0|tt(0|rt(0|~A,0|~e,0|(i=19+(3*n|0)|0)),0|B(),0|i)))&!(0|B())?0|r[20528+t|0]?!(0|A)&!(0|(e&=8191))?0|(i=1):(i=0|nt(0|A,0|e),B(),0|!!((63-i|0)%3|0)):0|(i=1):0|(i=0)):0|(A=0)}function RA(A,e,t,r){A|=0,t|=0,r|=0;var o=0,i=0,a=0,s=0;if(o=0|rt(0|(e|=0),0,52),i=0|B(),t=0|rt(0|t,0,45),t=0|i|B()|134225919,(0|e)<1)return i=-1,r=t,n[(e=A)>>2]=i,void(n[(A=A+4|0)>>2]=r);for(i=1,o=-1;s=0|rt(7,0,0|(a=3*(15-i|0)|0)),t&=~B(),o=o&~s|(a=0|rt(0|r,0,0|a)),t=0|t|B(),(0|i)!=(0|e);)i=i+1|0;n[(a=s=A)>>2]=o,n[(s=s+4|0)>>2]=t}function LA(A,e,t,r){t|=0,r|=0;var o=0,i=0;if(i=0|tt(0|(A|=0),0|(e|=0),52),B(),t>>>0>15)return 4;if((0|(i&=15))<(0|t))return 12;if((0|i)==(0|t))return n[r>>2]=A,n[r+4>>2]=e,0;if(o=0|rt(0|t,0,52),o|=A,A=B()|-15728641&e,(0|i)>(0|t))do{e=0|rt(7,0,3*(14-t|0)|0),t=t+1|0,o|=e,A=0|B()|A}while((0|t)<(0|i));return n[r>>2]=o,n[r+4>>2]=A,0}function _A(A,e,t,r){t|=0,r|=0;var o=0,i=0,a=0;if(i=0|tt(0|(A|=0),0|(e|=0),52),B(),!((0|t)<16&(0|(i&=15))<=(0|t)))return 4;o=t-i|0,t=0|tt(0|A,0|e,45),B();A:do{if(0|z(127&t)){e:do{if(0|i){for(t=1;!((a=0|rt(7,0,3*(15-t|0)|0))&A)&!((0|B())&e);){if(!(t>>>0>>0))break e;t=t+1|0}t=0|pe(7,0,o,((0|o)<0)<<31>>31),o=0|B();break A}}while(0);t=0|We(0|(t=0|qe(0|(t=0|pe(7,0,o,((0|o)<0)<<31>>31)),0|B(),5,0)),0|B(),-5,-1),t=0|We(0|(t=0|Xe(0|t,0|B(),6,0)),0|B(),1,0),o=0|B()}else t=0|pe(7,0,o,((0|o)<0)<<31>>31),o=0|B()}while(0);return n[(a=r)>>2]=t,n[a+4>>2]=o,0}function HA(A,e){var t=0,r=0,n=0;if(n=0|tt(0|(A|=0),0|(e|=0),45),B(),!(0|z(127&n)))return 0;n=0|tt(0|A,0|e,52),B(),n&=15;A:do{if(n)for(r=1;;){if(t=0|tt(0|A,0|e,3*(15-r|0)|0),B(),0|(t&=7))break A;if(!(r>>>0>>0)){t=0;break}r=r+1|0}else t=0}while(0);return 1&!(0|t)}function zA(A,e,t,r){return A|=0,e|=0,(0|(r|=0))<(0|(t|=0))?(r=A,C(0|(t=e)),0|r):(t=0|rt(-1,-1,3+(3*(r-t|0)|0)|0),r=0|rt(0|~t,0|~B(),3*(15-r|0)|0),t=~B()&e,r=~r&A,C(0|t),0|r)}function GA(A,e,t,r){t|=0,r|=0;var o=0;return o=0|tt(0|(A|=0),0|(e|=0),52),B(),(0|t)<16&(0|(o&=15))<=(0|t)?((0|o)<(0|t)&&(o=0|rt(-1,-1,3+(3*(t+-1-o|0)|0)|0),o=0|rt(0|~o,0|~B(),3*(15-t|0)|0),e=~B()&e,A&=~o),o=0|rt(0|t,0,52),t=-15728641&e|B(),n[r>>2]=A|o,n[r+4>>2]=t,0|(r=0)):0|(r=4)}function UA(A,e){var t=0,r=0,n=0;if(n=0|tt(0|(A|=0),0|(e|=0),52),B(),!(n&=15))return 0;for(r=1;;){if(t=0|tt(0|A,0|e,3*(15-r|0)|0),B(),0|(t&=7)){r=5;break}if(!(r>>>0>>0)){t=0,r=5;break}r=r+1|0}return 5==(0|r)?0|t:0}function OA(A,e){var t=0,r=0,n=0,o=0,i=0,a=0,s=0;if(s=0|tt(0|(A|=0),0|(e|=0),52),B(),!(s&=15))return s=A,C(0|(a=e)),0|s;for(a=1,t=0;;){r=0|rt(7,0,0|(o=3*(15-a|0)|0)),n=0|B(),i=0|tt(0|A,0|e,0|o),B(),A=(o=0|rt(0|xA(7&i),0,0|o))|A&~r,e=(i=0|B())|e&~n;A:do{if(!t)if(!(o&r|0)&!(i&n|0))t=0;else if(r=0|tt(0|A,0|e,52),B(),r&=15){t=1;e:for(;;){switch(i=0|tt(0|A,0|e,3*(15-t|0)|0),B(),7&i){case 1:break e;case 0:break;default:t=1;break A}if(!(t>>>0>>0)){t=1;break A}t=t+1|0}for(t=1;;){if(n=0|tt(0|A,0|e,0|(i=3*(15-t|0)|0)),B(),o=0|rt(7,0,0|i),e&=~B(),A=A&~o|(i=0|rt(0|xA(7&n),0,0|i)),e=0|e|B(),!(t>>>0>>0)){t=1;break}t=t+1|0}}else t=1}while(0);if(!(a>>>0>>0))break;a=a+1|0}return C(0|e),0|A}function YA(A,e){var t=0,r=0,n=0,o=0,i=0;if(r=0|tt(0|(A|=0),0|(e|=0),52),B(),!(r&=15))return r=A,C(0|(t=e)),0|r;for(t=1;i=0|tt(0|A,0|e,0|(o=3*(15-t|0)|0)),B(),n=0|rt(7,0,0|o),e&=~B(),A=(o=0|rt(0|xA(7&i),0,0|o))|A&~n,e=0|B()|e,t>>>0>>0;)t=t+1|0;return C(0|e),0|A}function VA(A,e){var t=0,r=0,n=0,o=0,i=0,a=0,s=0;if(s=0|tt(0|(A|=0),0|(e|=0),52),B(),!(s&=15))return s=A,C(0|(a=e)),0|s;for(a=1,t=0;;){r=0|rt(7,0,0|(o=3*(15-a|0)|0)),n=0|B(),i=0|tt(0|A,0|e,0|o),B(),A=(o=0|rt(0|vA(7&i),0,0|o))|A&~r,e=(i=0|B())|e&~n;A:do{if(!t)if(!(o&r|0)&!(i&n|0))t=0;else if(r=0|tt(0|A,0|e,52),B(),r&=15){t=1;e:for(;;){switch(i=0|tt(0|A,0|e,3*(15-t|0)|0),B(),7&i){case 1:break e;case 0:break;default:t=1;break A}if(!(t>>>0>>0)){t=1;break A}t=t+1|0}for(t=1;;){if(o=0|rt(7,0,0|(n=3*(15-t|0)|0)),i=e&~B(),e=0|tt(0|A,0|e,0|n),B(),A=A&~o|(e=0|rt(0|vA(7&e),0,0|n)),e=0|i|B(),!(t>>>0>>0)){t=1;break}t=t+1|0}}else t=1}while(0);if(!(a>>>0>>0))break;a=a+1|0}return C(0|e),0|A}function WA(A,e){var t=0,r=0,n=0,o=0,i=0;if(r=0|tt(0|(A|=0),0|(e|=0),52),B(),!(r&=15))return r=A,C(0|(t=e)),0|r;for(t=1;o=0|rt(7,0,0|(i=3*(15-t|0)|0)),n=e&~B(),e=0|tt(0|A,0|e,0|i),B(),A=(e=0|rt(0|vA(7&e),0,0|i))|A&~o,e=0|B()|n,t>>>0>>0;)t=t+1|0;return C(0|e),0|A}function ZA(A){return(0|(A|=0))%2|0}function JA(A,e,t){t|=0;var r,i=0;return r=P,P=P+16|0,i=r,(e|=0)>>>0>15?(P=r,0|(i=4)):2146435072&~n[4+(A|=0)>>2]&&2146435072&~n[A+8+4>>2]?(function(A,e,t){var r,i;r=P,P=P+16|0,function(A,e,t,r){e|=0,r|=0;var i,a=0,s=0,l=0,c=0;if(i=P,P=P+16|0,function(A,e,t){e|=0,t|=0;var r,i,a=0;i=P,P=P+32|0,function(A,e){e|=0;var t,r,n=0;n=+o[(A|=0)>>3],t=+d(+n),n=+f(+n),o[e+16>>3]=n,n=+o[A+8>>3],r=t*+d(+n),o[e>>3]=r,n=t*+f(+n),o[e+8>>3]=n}(A|=0,r=i),n[e>>2]=0,o[t>>3]=5,(a=+Pe(16400,r))<+o[t>>3]&&(n[e>>2]=0,o[t>>3]=a),(a=+Pe(16424,r))<+o[t>>3]&&(n[e>>2]=1,o[t>>3]=a),(a=+Pe(16448,r))<+o[t>>3]&&(n[e>>2]=2,o[t>>3]=a),(a=+Pe(16472,r))<+o[t>>3]&&(n[e>>2]=3,o[t>>3]=a),(a=+Pe(16496,r))<+o[t>>3]&&(n[e>>2]=4,o[t>>3]=a),(a=+Pe(16520,r))<+o[t>>3]&&(n[e>>2]=5,o[t>>3]=a),(a=+Pe(16544,r))<+o[t>>3]&&(n[e>>2]=6,o[t>>3]=a),(a=+Pe(16568,r))<+o[t>>3]&&(n[e>>2]=7,o[t>>3]=a),(a=+Pe(16592,r))<+o[t>>3]&&(n[e>>2]=8,o[t>>3]=a),(a=+Pe(16616,r))<+o[t>>3]&&(n[e>>2]=9,o[t>>3]=a),(a=+Pe(16640,r))<+o[t>>3]&&(n[e>>2]=10,o[t>>3]=a),(a=+Pe(16664,r))<+o[t>>3]&&(n[e>>2]=11,o[t>>3]=a),(a=+Pe(16688,r))<+o[t>>3]&&(n[e>>2]=12,o[t>>3]=a),(a=+Pe(16712,r))<+o[t>>3]&&(n[e>>2]=13,o[t>>3]=a),(a=+Pe(16736,r))<+o[t>>3]&&(n[e>>2]=14,o[t>>3]=a),(a=+Pe(16760,r))<+o[t>>3]&&(n[e>>2]=15,o[t>>3]=a),(a=+Pe(16784,r))<+o[t>>3]&&(n[e>>2]=16,o[t>>3]=a),(a=+Pe(16808,r))<+o[t>>3]&&(n[e>>2]=17,o[t>>3]=a),(a=+Pe(16832,r))<+o[t>>3]&&(n[e>>2]=18,o[t>>3]=a),(a=+Pe(16856,r))<+o[t>>3]?(n[e>>2]=19,o[t>>3]=a,P=i):P=i}(A|=0,t|=0,c=i),(s=+h(+(1-.5*+o[c>>3])))<1e-16)return n[r>>2]=0,n[r+4>>2]=0,n[r+8>>2]=0,n[r+12>>2]=0,void(P=i);if(c=0|n[t>>2],a=+ne((a=+o[15920+(24*c|0)>>3])-+ne(+function(A,e){var t,r,n,i,a;return A|=0,i=+o[(e|=0)>>3],r=+d(+i),n=+o[e+8>>3]-+o[A+8>>3],a=r*+f(+n),t=+o[A>>3],+ +p(+a,+(+f(+i)*+d(+t)-+d(+n)*(r*+f(+t))))}(15600+(c<<4)|0,A))),l=0|ZA(e)?+ne(a+-.3334731722518321):a,a=2.618033988749896*+g(+s),(0|e)>0){A=0;do{a*=2.6457513110645907,A=A+1|0}while((0|A)!=(0|e))}s=+d(+l)*a,o[r>>3]=s,l=+f(+l)*a,o[r+8>>3]=l,P=i}(A|=0,e|=0,t|=0,i=r),function(A,e){A|=0;var t,r,i,a,s=0,c=0,u=0,d=0,f=0,g=0,h=0;n[(a=8+(e|=0)|0)>>2]=0,r=+o[A>>3],d=+l(+r),i=+o[A+8>>3],d+=.5*(f=1.1547005383792515*+l(+i)),d-=+(0|(s=~~d)),f-=+(0|(A=~~f));do{if(d<.5){if(d<.3333333333333333){if(n[e>>2]=s,f<.5*(d+1)){n[e+4>>2]=A;break}A=A+1|0,n[e+4>>2]=A;break}if(A=(1&!(f<(h=1-d)))+A|0,n[e+4>>2]=A,h<=f&f<2*d){s=s+1|0,n[e>>2]=s;break}n[e>>2]=s;break}if(!(d<.6666666666666666)){if(s=s+1|0,n[e>>2]=s,f<.5*d){n[e+4>>2]=A;break}A=A+1|0,n[e+4>>2]=A;break}if(f<1-d){if(n[e+4>>2]=A,2*d-1>2]=s;break}}else A=A+1|0,n[e+4>>2]=A;s=s+1|0,n[e>>2]=s}while(0);do{if(r<0){if(1&A){s=~~(+(0|s)-(2*(+((g=0|Ze(0|s,((0|s)<0)<<31>>31,0|(g=(A+1|0)/2|0),((0|g)<0)<<31>>31))>>>0)+4294967296*+(0|B()))+1)),n[e>>2]=s;break}s=~~(+(0|s)-2*(+((g=0|Ze(0|s,((0|s)<0)<<31>>31,0|(g=(0|A)/2|0),((0|g)<0)<<31>>31))>>>0)+4294967296*+(0|B()))),n[e>>2]=s;break}}while(0);g=e+4|0,i<0&&(s=s-((1|A<<1)/2|0)|0,n[e>>2]=s,A=0-A|0,n[g>>2]=A),c=A-s|0,(0|s)<0?(u=0-s|0,n[g>>2]=c,n[a>>2]=u,n[e>>2]=0,A=c,s=0):u=0,(0|A)<0&&(s=s-A|0,n[e>>2]=s,u=u-A|0,n[a>>2]=u,n[g>>2]=0,A=0),t=s-u|0,c=A-u|0,(0|u)<0&&(n[e>>2]=t,n[g>>2]=c,n[a>>2]=0,A=c,s=t,u=0),(0|(c=(0|u)<(0|(c=(0|A)<(0|s)?A:s))?u:c))<=0||(n[e>>2]=s-c,n[g>>2]=A-c,n[a>>2]=u-c)}(i,t+4|0),P=r}(A,e,i),e=0|function(A,e){A|=0;var t,r=0,o=0,i=0,a=0,s=0,l=0,c=0,u=0;if(t=P,P=P+64|0,l=t+40|0,o=t+24|0,i=t+12|0,a=t,rt(0|(e|=0),0,52),r=134225919|B(),!e)return(0|n[A+4>>2])>2||(0|n[A+8>>2])>2||(0|n[A+12>>2])>2?(l=0,C(0|(s=0)),P=t,0|l):(rt(0|U(A),0,45),s=0|B()|r,l=-1,C(0|s),P=t,0|l);if(n[l>>2]=n[A>>2],n[l+4>>2]=n[A+4>>2],n[l+8>>2]=n[A+8>>2],n[l+12>>2]=n[A+12>>2],s=l+4|0,(0|e)>0)for(A=-1;n[o>>2]=n[s>>2],n[o+4>>2]=n[s+4>>2],n[o+8>>2]=n[s+8>>2],1&e?(dA(s),n[i>>2]=n[s>>2],n[i+4>>2]=n[s+4>>2],n[i+8>>2]=n[s+8>>2],gA(i)):(fA(s),n[i>>2]=n[s>>2],n[i+4>>2]=n[s+4>>2],n[i+8>>2]=n[s+8>>2],hA(i)),aA(o,i,a),nA(a),c=0|rt(7,0,0|(u=3*(15-e|0)|0)),r&=~B(),A=(u=0|rt(0|lA(a),0,0|u))|A&~c,r=0|B()|r,(0|e)>1;)e=e+-1|0;else A=-1;A:do{if((0|n[s>>2])<=2&&(0|n[l+8>>2])<=2&&(0|n[l+12>>2])<=2){if(e=0|rt(0|(o=0|U(l)),0,45),e|=A,A=B()|-1040385&r,a=0|O(l),!(0|z(o))){if((0|a)<=0)break;for(i=0;;){if(o=0|tt(0|e,0|A,52),B(),o&=15)for(r=1;l=0|tt(0|e,0|A,0|(u=3*(15-r|0)|0)),B(),c=0|rt(7,0,0|u),A&=~B(),e=e&~c|(u=0|rt(0|xA(7&l),0,0|u)),A=0|A|B(),r>>>0>>0;)r=r+1|0;if((0|(i=i+1|0))==(0|a))break A}}i=0|tt(0|e,0|A,52),B(),i&=15;e:do{if(i){r=1;t:for(;;){switch(u=0|tt(0|e,0|A,3*(15-r|0)|0),B(),7&u){case 1:break t;case 0:break;default:break e}if(!(r>>>0>>0))break e;r=r+1|0}if(0|Y(o,0|n[l>>2]))for(r=1;c=0|rt(7,0,0|(l=3*(15-r|0)|0)),u=A&~B(),A=0|tt(0|e,0|A,0|l),B(),e=e&~c|(A=0|rt(0|vA(7&A),0,0|l)),A=0|u|B(),r>>>0>>0;)r=r+1|0;else for(r=1;l=0|tt(0|e,0|A,0|(u=3*(15-r|0)|0)),B(),c=0|rt(7,0,0|u),A&=~B(),e=e&~c|(u=0|rt(0|xA(7&l),0,0|u)),A=0|A|B(),r>>>0>>0;)r=r+1|0}}while(0);if((0|a)>0){r=0;do{e=0|OA(e,A),A=0|B(),r=r+1|0}while((0|r)!=(0|a))}}else e=0,A=0}while(0);return u=e,C(0|(c=A)),P=t,0|u}(i,e),i=0|B(),n[t>>2]=e,n[t+4>>2]=i,!(0|e)&!(0|i)&&D(27795,27122,1050,27145),P=r,0|(i=0)):(P=r,0|(i=3))}function KA(A,e,t){var r,o=0,i=0,a=0;if(r=4+(t|=0)|0,i=0|tt(0|(A|=0),0|(e|=0),52),B(),i&=15,a=0|tt(0|A,0|e,45),B(),o=!(0|i),0|z(127&a)){if(o)return 1;o=1}else{if(o)return 0;o=0|n[r>>2]||0|n[t+8>>2]?1:1&!!(0|n[t+12>>2])}for(t=1;1&t?gA(r):hA(r),a=0|tt(0|A,0|e,3*(15-t|0)|0),B(),mA(r,7&a),t>>>0>>0;)t=t+1|0;return 0|o}function XA(A,e,t){t|=0;var r,o,i=0,a=0,s=0,l=0,c=0,u=0;if(o=P,P=P+16|0,r=o,u=0|tt(0|(A|=0),0|(e|=0),45),B(),(u&=127)>>>0>121)return n[t>>2]=0,n[t+4>>2]=0,n[t+8>>2]=0,n[t+12>>2]=0,P=o,5;A:do{if(0|z(u)&&(s=0|tt(0|A,0|e,52),B(),0|(s&=15))){i=1;e:for(;;){switch(c=0|tt(0|A,0|e,3*(15-i|0)|0),B(),7&c){case 5:break e;case 0:break;default:i=e;break A}if(!(i>>>0>>0)){i=e;break A}i=i+1|0}for(a=1,i=e;l=0|rt(7,0,0|(e=3*(15-a|0)|0)),c=i&~B(),i=0|tt(0|A,0|i,0|e),B(),A=A&~l|(i=0|rt(0|vA(7&i),0,0|e)),i=0|c|B(),a>>>0>>0;)a=a+1|0}else i=e}while(0);if(c=7696+(28*u|0)|0,n[t>>2]=n[c>>2],n[t+4>>2]=n[c+4>>2],n[t+8>>2]=n[c+8>>2],n[t+12>>2]=n[c+12>>2],!(0|KA(A,i,t)))return P=o,0;if(l=t+4|0,n[r>>2]=n[l>>2],n[r+4>>2]=n[l+4>>2],n[r+8>>2]=n[l+8>>2],s=0|tt(0|A,0|i,52),B(),c=15&s,1&s?(hA(l),s=c+1|0):s=c,0|z(u)){A:do{if(c)for(e=1;;){if(a=0|tt(0|A,0|i,3*(15-e|0)|0),B(),0|(a&=7)){i=a;break A}if(!(e>>>0>>0)){i=0;break}e=e+1|0}else i=0}while(0);i=4==(0|i)&1}else i=0;if(0|jA(t,s,i,0)){if(0|z(u))do{}while(0|jA(t,s,0,0));(0|s)!=(0|c)&&fA(l)}else(0|s)!=(0|c)&&(n[l>>2]=n[r>>2],n[l+4>>2]=n[r+4>>2],n[l+8>>2]=n[r+8>>2]);return P=o,0}function qA(A,e,t){t|=0;var r,o,i=0;return o=P,P=P+16|0,0|(i=0|XA(A|=0,e|=0,r=o))?(P=o,0|i):(i=0|tt(0|A,0|e,52),B(),function(A,e,t){var r,o;e|=0,t|=0,r=P,P=P+16|0,oA(4+(A|=0)|0,o=r),MA(o,0|n[A>>2],e,0,t),P=r}(r,15&i,t),P=o,0|(i=0))}function $A(A,e,t){t|=0;var r,n=0,o=0,i=0;if(r=P,P=P+16|0,0|(n=0|XA(A|=0,e|=0,i=r)))return P=r,0|n;n=0|tt(0|A,0|e,45),B(),n=!(0|z(127&n)),o=0|tt(0|A,0|e,52),B(),o&=15;A:do{if(!n){if(0|o)for(n=1;;){if(!(!((0|rt(7,0,3*(15-n|0)|0))&A)&!((0|B())&e)))break A;if(!(n>>>0>>0))break;n=n+1|0}return QA(i,o,0,5,t),P=r,0}}while(0);return FA(i,o,0,6,t),P=r,0}function Ae(A,e){e|=0;var t=0,r=0,o=0,i=0,a=0,s=0,l=0;if((A|=0)>>>0>15)return 4;if(rt(0|A,0,52),s=134225919|B(),!A){t=0,r=0;do{0|z(r)&&(rt(0|r,0,45),a=0|s|B(),n[(A=e+(t<<3)|0)>>2]=-1,n[A+4>>2]=a,t=t+1|0),r=r+1|0}while(122!=(0|r));return 0}t=0,a=0;do{if(0|z(a)){for(rt(0|a,0,45),r=1,o=-1,i=0|s|B();o&=~(l=0|rt(7,0,3*(15-r|0)|0)),i&=~B(),(0|r)!=(0|A);)r=r+1|0;n[(l=e+(t<<3)|0)>>2]=o,n[l+4>>2]=i,t=t+1|0}a=a+1|0}while(122!=(0|a));return 0}function ee(A,e,t,r){A|=0,r|=0;var o=0,i=0,a=0;o=0|tt(0|(e|=0),0|(t|=0),52),B(),!(0|e)&!(0|t)|(0|r)>15|(0|(o&=15))>(0|r)?(i=-1,e=-1,t=0,o=0):(e=0|zA(e,t,o+1|0,r),a=-15728641&B(),t=0|rt(0|r,0,52),i=o,e=(e=!(0|HA(t|=e,a=0|a|B())))?-1:r,o=a),n[(a=A)>>2]=t,n[a+4>>2]=o,n[A+8>>2]=i,n[A+12>>2]=e}function te(A,e,t,r){t|=0,r|=0;var o=0,i=0;return o=0|tt(0|(A|=0),0|(e|=0),52),B(),o&=15,n[(i=r+8|0)>>2]=o,!(0|A)&!(0|e)|(0|t)>15|(0|o)>(0|t)?(n[(t=r)>>2]=0,n[t+4>>2]=0,n[i>>2]=-1,void(n[r+12>>2]=-1)):(A=0|zA(A,e,o+1|0,t),i=-15728641&B(),o=0|rt(0|t,0,52),o|=A,i=0|i|B(),n[(A=r)>>2]=o,n[A+4>>2]=i,A=r+12|0,0|HA(o,i)?void(n[A>>2]=t):void(n[A>>2]=-1))}function re(A){var e,t=0,r=0,o=0,i=0,a=0,s=0,l=0,c=0;if(!(!(0|(t=0|n[(r=A|=0)>>2]))&!(0|(r=0|n[r+4>>2]))||(o=0|tt(0|t,0|r,52),B(),t=0|We(0|(l=0|rt(1,0,3*(15^(o&=15))|0)),0|B(),0|t,0|r),r=0|B(),n[(l=A)>>2]=t,n[l+4>>2]=r,(0|o)<(0|(s=0|n[(l=A+8|0)>>2]))))){for(e=A+12|0,a=o;;){if((0|a)==(0|s)){o=5;break}if(c=(0|a)==(0|n[e>>2]),o=0|tt(0|t,0|r,0|(i=3*(15-a|0)|0)),B(),c&1==(0|(o&=7))&!0){o=7;break}if(!(7==(0|o)&!0)){o=10;break}if(t=0|We(0|t,0|r,0|(c=0|rt(1,0,0|i)),0|B()),r=0|B(),n[(c=A)>>2]=t,n[c+4>>2]=r,!((0|a)>(0|s))){o=10;break}a=a+-1|0}if(5==(0|o))return n[(c=A)>>2]=0,n[c+4>>2]=0,n[l>>2]=-1,void(n[e>>2]=-1);if(7==(0|o))return s=0|We(0|t,0|r,0|(s=0|rt(1,0,0|i)),0|B()),l=0|B(),n[(c=A)>>2]=s,n[c+4>>2]=l,void(n[e>>2]=a+-1)}}function ne(A){var e;return e=(A=+A)<0?A+6.283185307179586:A,+(A>=6.283185307179586?e+-6.283185307179586:e)}function oe(A,e){return e|=0,+l(+(+o[(A|=0)>>3]-+o[e>>3]))<17453292519943298e-27?0|(e=+l(+(+o[A+8>>3]-+o[e+8>>3]))<17453292519943298e-27):0|(e=0)}function ie(A,e){switch(A=+A,0|(e|=0)){case 1:A=A<0?A+6.283185307179586:A;break;case 2:A=A>0?A+-6.283185307179586:A}return+A}function ae(A,e){A|=0;var t,r,n,i=0;return r=+o[(e|=0)>>3],t=+o[A>>3],i=(n=+f(.5*(r-t)))*n+(i=+f(.5*(+o[e+8>>3]-+o[A+8>>3])))*(+d(+r)*+d(+t)*i),2*+p(+ +c(+i),+ +c(+(1-i)))*6371.007180918475}function se(A,e){return e|=0,(A|=0)>>>0>15?0|(e=4):(o[e>>3]=+o[20656+(A<<3)>>3],0|(e=0))}function le(A,e){e|=0;var t=0;return(A|=0)>>>0>15?0|(e=4):(t=0|qe(0|(t=0|pe(7,0,A,((0|A)<0)<<31>>31)),0|B(),120,0),A=0|B(),n[e>>2]=2|t,n[e+4>>2]=A,0|(e=0))}function ce(A,e,t){A|=0,t|=0;var r,n,i,a,s=0,l=0,u=0,h=0,m=0,x=0;return x=+o[(e|=0)>>3],i=+o[A>>3],m=+f(.5*(x-i)),u=+o[e+8>>3],n=+o[A+8>>3],h=+f(.5*(u-n)),r=+d(+i),a=+d(+x),h=2*+p(+ +c(+(h=m*m+h*(a*r*h))),+ +c(+(1-h))),m=+o[t>>3],x=+f(.5*(m-x)),s=+o[t+8>>3],u=+f(.5*(s-u)),l=+d(+m),u=2*+p(+ +c(+(u=x*x+u*(a*l*u))),+ +c(+(1-u))),m=+f(.5*(i-m)),s=+f(.5*(n-s)),s=2*+p(+ +c(+(s=m*m+s*(r*l*s))),+ +c(+(1-s))),4*+b(+ +c(+ +g(.5*(l=.5*(h+u+s)))*+g(.5*(l-h))*+g(.5*(l-u))*+g(.5*(l-s))))}function ue(A,e,t){t|=0;var r,i,a,s=0,l=0;if(a=P,P=P+192|0,i=a,0|(l=0|qA(A|=0,e|=0,r=a+168|0)))return P=a,0|l;if(0|$A(A,e,i)&&D(27795,27190,415,27199),(0|(e=0|n[i>>2]))>0){if(s=+ce(i+8|0,i+8+((1!=(0|e)&1)<<4)|0,r)+0,1!=(0|e)){A=1;do{s+=+ce(i+8+((l=A)<<4)|0,i+8+((0|(A=A+1|0))%(0|e)<<4)|0,r)}while((0|A)<(0|e))}}else s=0;return o[t>>3]=s,P=a,0}function de(A){A|=0;var e,t,r=0;return(e=0|Ve(1,12))||D(27280,27235,49,27293),0|(r=0|n[(t=A+4|0)>>2])?(n[(r=r+8|0)>>2]=e,n[t>>2]=e,0|e):(0|n[A>>2]&&D(27310,27235,61,27333),n[(r=A)>>2]=e,n[t>>2]=e,0|e)}function fe(A,e){var t,r;return A|=0,e|=0,(r=0|Oe(24))||D(27347,27235,78,27361),n[r>>2]=n[e>>2],n[r+4>>2]=n[e+4>>2],n[r+8>>2]=n[e+8>>2],n[r+12>>2]=n[e+12>>2],n[r+16>>2]=0,0|(t=0|n[(e=A+4|0)>>2])?(n[t+16>>2]=r,n[e>>2]=r,0|r):(0|n[A>>2]&&D(27376,27235,82,27361),n[A>>2]=r,n[e>>2]=r,0|r)}function ge(A){var e=0,t=0,r=0,o=0;if(A|=0)for(r=1;;){if(0|(e=0|n[A>>2]))do{if(0|(t=0|n[e>>2]))do{o=t,t=0|n[t+16>>2],Ye(o)}while(0|t);o=e,e=0|n[e+8>>2],Ye(o)}while(0|e);if(e=A,A=0|n[A+8>>2],r||Ye(e),!A)break;r=0}}function he(A,e,t){A|=0;var r=0,i=0,a=0,s=0,l=0,c=0,u=0,d=0;if(!(0|X(e|=0,t|=0)))return 0;if(e=0|J(e),r=+o[t>>3],i=e&(i=+o[t+8>>3])<0?i+6.283185307179586:i,!(A=0|n[A>>2]))return 0;if(e){e=0,u=i,t=A;A:for(;;){for(;s=+o[t>>3],i=+o[t+8>>3],d=0|n[(t=t+16|0)>>2],a=+o[(d=0|d?d:A)>>3],l=+o[d+8>>3],s>a?(c=s,s=l):(c=a,a=s,s=i,i=l),(r=r==a|r==c?r+2220446049250313e-31:r)c;)if(!(t=0|n[t>>2])){t=22;break A}if(((c=(l=s<0?s+6.283185307179586:s)+(r-a)/(c-a)*((s=i<0?i+6.283185307179586:i)-l))<0?c+6.283185307179586:c)>(u=l==u|s==u?u+-2220446049250313e-31:u)&&(e^=1),!(t=0|n[t>>2])){t=22;break}}if(22==(0|t))return 0|e}else{e=0,u=i,t=A;A:for(;;){for(;s=+o[t>>3],i=+o[t+8>>3],d=0|n[(t=t+16|0)>>2],a=+o[(d=0|d?d:A)>>3],l=+o[d+8>>3],s>a?(c=s,s=l):(c=a,a=s,s=i,i=l),(r=r==a|r==c?r+2220446049250313e-31:r)c;)if(!(t=0|n[t>>2])){t=22;break A}if(s+(r-a)/(c-a)*(i-s)>(u=s==u|i==u?u+-2220446049250313e-31:u)&&(e^=1),!(t=0|n[t>>2])){t=22;break}}if(22==(0|t))return 0|e}return 0}function me(A,e,t,o,i){t|=0,o|=0,i|=0;var a,s,l,c,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0;if(c=P,P=P+32|0,v=c+16|0,l=c,u=0|tt(0|(A|=0),0|(e|=0),52),B(),u&=15,b=0|tt(0|t,0|o,52),B(),(0|u)!=(15&b))return P=c,12;if(h=0|tt(0|A,0|e,45),B(),h&=127,m=0|tt(0|t,0|o,45),B(),h>>>0>121|(m&=127)>>>0>121)return P=c,5;if(b=(0|h)!=(0|m)){if(7==(0|(f=0|W(h,m))))return P=c,1;7==(0|(g=0|W(m,h)))?D(27514,27538,161,27548):(p=f,d=g)}else p=0,d=0;a=0|z(h),s=0|z(m),n[v>>2]=0,n[v+4>>2]=0,n[v+8>>2]=0,n[v+12>>2]=0;do{if(p){if(f=(0|(m=0|n[4272+(28*h|0)+(p<<2)>>2]))>0,s)if(f){h=0,g=t,f=o;do{g=0|VA(g,f),f=0|B(),1==(0|(d=0|vA(d)))&&(d=0|vA(1)),h=h+1|0}while((0|h)!=(0|m));m=d,h=g,g=f}else m=d,h=t,g=o;else if(f){h=0,g=t,f=o;do{g=0|WA(g,f),f=0|B(),d=0|vA(d),h=h+1|0}while((0|h)!=(0|m));m=d,h=g,g=f}else m=d,h=t,g=o;if(KA(h,g,v),b||D(27563,27538,191,27548),(f=!!(0|a))&(d=!!(0|s))&&D(27590,27538,192,27548),f){if(7==(0|(d=0|UA(A,e)))){u=5;break}if(0|r[22e3+(7*d|0)+p|0]){u=1;break}h=g=0|n[21168+(28*d|0)+(p<<2)>>2]}else if(d){if(7==(0|(d=0|UA(h,g)))){u=5;break}if(0|r[22e3+(7*d|0)+m|0]){u=1;break}h=0,g=0|n[21168+(28*m|0)+(d<<2)>>2]}else h=0,g=0;if((h|g|0)<0)u=5;else{if((0|g)>0){f=v+4|0,d=0;do{pA(f),d=d+1|0}while((0|d)!=(0|g))}if(n[l>>2]=0,n[l+4>>2]=0,n[l+8>>2]=0,mA(l,p),0|u)for(;0|ZA(u)?gA(l):hA(l),(0|u)>1;)u=u+-1|0;if((0|h)>0){u=0;do{pA(l),u=u+1|0}while((0|u)!=(0|h))}iA(x=v+4|0,l,x),nA(x),x=51}}else if(KA(t,o,v),!!(0|a)&!!(0|s))if((0|m)!=(0|h)&&D(27621,27538,261,27548),7==(0|(d=0|UA(A,e)))|7==(0|(u=0|UA(t,o))))u=5;else if(0|r[22e3+(7*d|0)+u|0])u=1;else if((0|(d=0|n[21168+(28*d|0)+(u<<2)>>2]))>0){f=v+4|0,u=0;do{pA(f),u=u+1|0}while((0|u)!=(0|d));x=51}else x=51;else x=51}while(0);return 51==(0|x)&&(u=v+4|0,n[i>>2]=n[u>>2],n[i+4>>2]=n[u+4>>2],n[i+8>>2]=n[u+8>>2],u=0),P=c,0|u}function be(A,e,t,r){t|=0,r|=0;var o,i,a,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0;if(a=P,P=P+48|0,o=a+36|0,c=a+24|0,u=a+12|0,d=a,s=0|tt(0|(A|=0),0|(e|=0),52),B(),s&=15,g=0|tt(0|A,0|e,45),B(),(g&=127)>>>0>121)return P=a,5;if(i=0|z(g),rt(0|s,0,52),b=134225919|B(),n[(l=r)>>2]=-1,n[l+4>>2]=b,!s)return 7==(0|(s=0|lA(t)))||127==(0|(s=0|V(g,s)))?(P=a,0|(b=1)):(h=0|rt(0|s,0,45),m=0|B(),m=-1040385&n[(g=r)+4>>2]|m,n[(b=r)>>2]=n[g>>2]|h,n[b+4>>2]=m,P=a,0|(b=0));for(n[o>>2]=n[t>>2],n[o+4>>2]=n[t+4>>2],n[o+8>>2]=n[t+8>>2],t=s;;){if(l=t,t=t+-1|0,n[c>>2]=n[o>>2],n[c+4>>2]=n[o+4>>2],n[c+8>>2]=n[o+8>>2],0|ZA(l)){if(0|(s=0|cA(o))){t=13;break}n[u>>2]=n[o>>2],n[u+4>>2]=n[o+4>>2],n[u+8>>2]=n[o+8>>2],gA(u)}else{if(0|(s=0|uA(o))){t=13;break}n[u>>2]=n[o>>2],n[u+4>>2]=n[o+4>>2],n[u+8>>2]=n[o+8>>2],hA(u)}if(aA(c,u,d),nA(d),x=0|n[(s=r)>>2],s=0|n[s+4>>2],p=0|rt(7,0,0|(v=3*(15-l|0)|0)),s&=~B(),v=0|rt(0|lA(d),0,0|v),s=0|B()|s,n[(b=r)>>2]=v|x&~p,n[b+4>>2]=s,(0|l)<=1){t=14;break}}A:do{if(13!=(0|t)&&14==(0|t))if((0|n[o>>2])<=1&&(0|n[o+4>>2])<=1&&(0|n[o+8>>2])<=1){d=127==(0|(s=0|V(g,t=0|lA(o))))?0:0|z(s);e:do{if(t){if(i){if(7==(0|(s=0|UA(A,e)))){s=5;break A}if((0|(l=0|n[21376+(28*s|0)+(t<<2)>>2]))>0){s=t,t=0;do{s=0|xA(s),t=t+1|0}while((0|t)!=(0|l))}else s=t;if(1==(0|s)){s=9;break A}127==(0|(t=0|V(g,s)))&&D(27648,27538,411,27678),0|z(t)?D(27693,27538,412,27678):(m=t,h=l,f=s)}else m=s,h=0,f=t;if((0|(u=0|n[4272+(28*g|0)+(f<<2)>>2]))<=-1&&D(27724,27538,419,27678),!d){if((0|h)<0){s=5;break A}if(0|h){s=0,t=0|n[(l=r)>>2],l=0|n[l+4>>2];do{t=0|YA(t,l),l=0|B(),n[(v=r)>>2]=t,n[v+4>>2]=l,s=s+1|0}while((0|s)<(0|h))}if((0|u)<=0){s=m,t=58;break}for(s=0,t=0|n[(l=r)>>2],l=0|n[l+4>>2];;)if(t=0|YA(t,l),l=0|B(),n[(v=r)>>2]=t,n[v+4>>2]=l,(0|(s=s+1|0))==(0|u)){s=m,t=58;break e}}if(7==(0|(c=0|W(m,g)))&&D(27514,27538,428,27678),t=0|n[(s=r)>>2],s=0|n[s+4>>2],(0|u)>0){l=0;do{t=0|YA(t,s),s=0|B(),n[(v=r)>>2]=t,n[v+4>>2]=s,l=l+1|0}while((0|l)!=(0|u))}if(7==(0|(s=0|UA(t,s)))&&D(27795,27538,440,27678),t=0|G(m),(0|(t=0|n[(t?21792:21584)+(28*c|0)+(s<<2)>>2]))<0&&D(27795,27538,454,27678),t){s=0,l=0|n[(c=r)>>2],c=0|n[c+4>>2];do{l=0|OA(l,c),c=0|B(),n[(v=r)>>2]=l,n[v+4>>2]=c,s=s+1|0}while((0|s)<(0|t));s=m,t=58}else s=m,t=58}else if(!!(0|i)&!!(0|d)){if(7==(0|(t=0|UA(A,e)))|7==(0|(l=0|UA(0|n[(l=r)>>2],0|n[l+4>>2])))){s=5;break A}if((0|(l=0|n[21376+(28*t|0)+(l<<2)>>2]))<0){s=5;break A}if(l){t=0,c=0|n[(u=r)>>2],u=0|n[u+4>>2];do{c=0|YA(c,u),u=0|B(),n[(v=r)>>2]=c,n[v+4>>2]=u,t=t+1|0}while((0|t)<(0|l));t=58}else t=59}else t=58}while(0);if(58==(0|t)&&d&&(t=59),59==(0|t)&&1==(0|UA(0|n[(v=r)>>2],0|n[v+4>>2]))){s=9;break}p=0|n[(v=r)>>2],v=-1040385&n[v+4>>2],x=0|rt(0|s,0,45),v=0|v|B(),n[(s=r)>>2]=p|x,n[s+4>>2]=v,s=0}else s=1}while(0);return P=a,0|s}function pe(A,e,t,r){A|=0,e|=0;var n=0,o=0,i=0;if(!(0|(t|=0))&!(0|(r|=0)))return o=1,C(0|(n=0)),0|o;o=A,n=e,A=1,e=0;do{A=0|qe(0|((i=!0&!(1&t))?1:o),0|(i?0:n),0|A,0|e),e=0|B(),t=0|et(0|t,0|r,1),r=0|B(),o=0|qe(0|o,0|n,0|o,0|n),n=0|B()}while(!(!(0|t)&!(0|r)));return C(0|e),0|A}function xe(A,e,t,r){t|=0,r|=0;var i,a=0,s=0,l=0,c=0,u=0,f=0;i=P,P=P+16|0,s=i,l=0|tt(0|(A|=0),0|(e|=0),52),B(),l&=15;do{if(l){if(!(a=0|qA(A,e,s))){u=+o[s>>3],c=1/+d(+u),f=+o[25968+(l<<3)>>3],o[t>>3]=u+f,o[t+8>>3]=u-f,u=+o[s+8>>3],c*=f,o[t+16>>3]=c+u,o[t+24>>3]=u-c;break}return P=i,0|a}if(a=0|tt(0|A,0|e,45),B(),(a&=127)>>>0>121)return P=i,5;s=22064+(a<<5)|0,n[t>>2]=n[s>>2],n[t+4>>2]=n[s+4>>2],n[t+8>>2]=n[s+8>>2],n[t+12>>2]=n[s+12>>2],n[t+16>>2]=n[s+16>>2],n[t+20>>2]=n[s+20>>2],n[t+24>>2]=n[s+24>>2],n[t+28>>2]=n[s+28>>2];break}while(0);return function(A,e){e=+e;var t,r,n,i,a,s,l,c=0,u=0;c=(i=+o[(n=16+(A|=0)|0)>>3])-(r=+o[(t=A+24|0)>>3]),c=i>3],c=.5*(c*e-c),u+=e=.5*((l=u-(s=+o[(a=A+8|0)>>3]))*e-l),o[A>>3]=u>1.5707963267948966?1.5707963267948966:u,e=s-e,o[a>>3]=e<-1.5707963267948966?-1.5707963267948966:e,e=(e=i+c)>3.141592653589793?e+-6.283185307179586:e,o[n>>3]=e<-3.141592653589793?e+6.283185307179586:e,e=(e=r-c)>3.141592653589793?e+-6.283185307179586:e,o[t>>3]=e<-3.141592653589793?e+6.283185307179586:e}(t,r?1.4:1.1),(0|n[(r=26096+(l<<3)|0)>>2])==(0|A)&&(0|n[r+4>>2])==(0|e)&&(o[t>>3]=1.5707963267948966),(0|n[(l=26224+(l<<3)|0)>>2])==(0|A)&&(0|n[l+4>>2])==(0|e)&&(o[t+8>>3]=-1.5707963267948966),1.5707963267948966!=+o[t>>3]&&-1.5707963267948966!=+o[t+8>>3]?(P=i,0|(l=0)):(o[t+16>>3]=3.141592653589793,o[t+24>>3]=-3.141592653589793,P=i,0|(l=0))}function ve(A){var e,t,o,i,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0;if(i=P,P=P+336|0,e=i+168|0,t=i,!(0|(s=0|n[(l=A|=0)>>2]))&!(0|(l=0|n[l+4>>2])))P=i;else{if(0|r[0|(a=A+28|0)]?(s=0|we(s,l),l=0|B()):r[0|a]=1,!(0|n[n[(o=A+20|0)>>2]>>2]))return 0|(s=0|n[(a=A+24|0)>>2])&&Ye(s),n[(y=A)>>2]=0,n[y+4>>2]=0,n[A+8>>2]=0,n[o>>2]=0,n[A+12>>2]=-1,n[A+16>>2]=0,n[a>>2]=0,void(P=i);c=15&(a=0|n[(y=A+16|0)>>2]);A:do{if(!(0|s)&!(0|l))w=A+24|0;else{x=A+12|0,b=3==(0|c),m=255&a,g=3==(1|c),p=A+24|0,h=(c+-1|0)>>>0<3,d=3==(2|c),f=t+8|0;e:for(;;){if(u=0|tt(0|s,0|l,52),B(),(0|(u&=15))==(0|n[x>>2])){switch(15&m){case 0:case 2:case 3:if(0|(c=0|qA(s,l,e))){v=15;break e}if(0|De(0|n[o>>2],0|n[p>>2],e)){v=19;break e}}if(g&&(c=0|n[4+(0|n[o>>2])>>2],n[e>>2]=n[c>>2],n[e+4>>2]=n[c+4>>2],n[e+8>>2]=n[c+8>>2],n[e+12>>2]=n[c+12>>2],0|X(26832,e))){if(0|JA(0|n[4+(0|n[o>>2])>>2],u,t)){v=25;break}if((0|n[(c=t)>>2])==(0|s)&&(0|n[c+4>>2])==(0|l)){v=29;break}}if(h){if(0|(c=0|$A(s,l,e))){v=32;break}if(0|xe(s,l,t,0)){v=36;break}if(d&&0|Ee(0|n[o>>2],0|n[p>>2],e,t)){v=42;break}if(g&&0|Qe(0|n[o>>2],0|n[p>>2],e,t)){v=42;break}}if(b){if(a=0|xe(s,l,e,1),c=0|n[p>>2],0|a){v=45;break}if(0|q(c,e)){if(AA(t,e),0|$(e,0|n[p>>2])){v=53;break}if(0|De(0|n[o>>2],0|n[p>>2],f)){v=53;break}if(0|Qe(0|n[o>>2],0|n[p>>2],t,e)){v=53;break}}}}do{if((0|u)<(0|n[x>>2])){if(a=0|xe(s,l,e,1),c=0|n[p>>2],0|a){v=58;break e}if(!(0|q(c,e))){v=73;break}if(0|$(0|n[p>>2],e)&&(AA(t,e),0|Ee(0|n[o>>2],0|n[p>>2],t,e))){v=65;break e}if(0|(s=0|GA(s,l,u+1|0,t))){v=67;break e}s=0|n[(l=t)>>2],l=0|n[l+4>>2]}else v=73}while(0);if(73==(0|v)&&(v=0,s=0|we(s,l),l=0|B()),!(0|s)&!(0|l)){w=p;break A}}switch(0|v){case 15:0|(a=0|n[p>>2])&&Ye(a),n[(v=A)>>2]=0,n[v+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=c,v=20;break;case 19:n[A>>2]=s,n[A+4>>2]=l,v=20;break;case 25:D(27795,27761,470,27772);break;case 29:case 42:return n[A>>2]=s,n[A+4>>2]=l,void(P=i);case 32:return 0|(a=0|n[p>>2])&&Ye(a),n[(w=A)>>2]=0,n[w+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=c,void(P=i);case 36:D(27795,27761,493,27772);break;case 45:0|c&&Ye(c),n[(v=A)>>2]=0,n[v+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=a,v=55;break;case 53:n[A>>2]=s,n[A+4>>2]=l,v=55;break;case 58:0|c&&Ye(c),n[(v=A)>>2]=0,n[v+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=a,v=71;break;case 65:n[A>>2]=s,n[A+4>>2]=l,v=71;break;case 67:return 0|(a=0|n[p>>2])&&Ye(a),n[(w=A)>>2]=0,n[w+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=s,void(P=i)}if(20==(0|v))return void(P=i);if(55==(0|v))return void(P=i);if(71==(0|v))return void(P=i)}}while(0);0|(a=0|n[w>>2])&&Ye(a),n[(v=A)>>2]=0,n[v+4>>2]=0,n[A+8>>2]=0,n[o>>2]=0,n[A+12>>2]=-1,n[y>>2]=0,n[w>>2]=0,P=i}}function we(A,e){var t,r=0,o=0,i=0,a=0,s=0,l=0,c=0,u=0,d=0;t=P,P=P+16|0,d=t,o=0|tt(0|(A|=0),0|(e|=0),52),B(),o&=15,r=0|tt(0|A,0|e,45),B();do{if(o){for(;r=0|rt(o+4095|0,0,52),i=B()|-15728641&e,r=r|A|(s=0|rt(7,0,0|(a=3*(15-o|0)|0))),i|=l=0|B(),c=0|tt(0|A,0|e,0|a),B(),o=o+-1|0,!((c&=7)>>>0<6);){if(!o){u=4;break}e=i,A=r}if(4==(0|u)){r=0|tt(0|r,0|i,45),B();break}return d=0|rt(((d=!(0|c)&!!(0|HA(r,i)))?2:1)+c|0,0,0|a),u=0|B()|e&~l,d|=A&~s,C(0|u),P=t,0|d}}while(0);return(r&=127)>>>0>120?(d=0,C(0|(u=0)),P=t,0|d):(RA(d,0,r+1|0,0),u=0|n[d+4>>2],d=0|n[d>>2],C(0|u),P=t,0|d)}function ye(A,e,t){A|=0;var r,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0;if(!(0|X(e|=0,t|=0)))return 0;if(e=0|J(e),i=+o[t>>3],a=e&(a=+o[t+8>>3])<0?a+6.283185307179586:a,(0|(g=0|n[A>>2]))<=0)return 0;if(r=0|n[A+4>>2],e){e=0,f=a,t=-1,A=0;A:for(;;){for(d=A;l=+o[r+(d<<4)>>3],a=+o[r+(d<<4)+8>>3],s=+o[r+((A=(t+2|0)%(0|g)|0)<<4)>>3],c=+o[r+(A<<4)+8>>3],l>s?(u=l,l=c):(u=s,s=l,l=a,a=c),(i=i==s|i==u?i+2220446049250313e-31:i)u;){if((0|(t=d+1|0))>=(0|g)){t=22;break A}A=d,d=t,t=A}if(((u=(c=l<0?l+6.283185307179586:l)+(i-s)/(u-s)*((l=a<0?a+6.283185307179586:a)-c))<0?u+6.283185307179586:u)>(f=c==f|l==f?f+-2220446049250313e-31:f)&&(e^=1),(0|(A=d+1|0))>=(0|g)){t=22;break}t=d}if(22==(0|t))return 0|e}else{e=0,f=a,t=-1,A=0;A:for(;;){for(d=A;l=+o[r+(d<<4)>>3],a=+o[r+(d<<4)+8>>3],s=+o[r+((A=(t+2|0)%(0|g)|0)<<4)>>3],c=+o[r+(A<<4)+8>>3],l>s?(u=l,l=c):(u=s,s=l,l=a,a=c),(i=i==s|i==u?i+2220446049250313e-31:i)u;){if((0|(t=d+1|0))>=(0|g)){t=22;break A}A=d,d=t,t=A}if(l+(i-s)/(u-s)*(a-l)>(f=l==f|a==f?f+-2220446049250313e-31:f)&&(e^=1),(0|(A=d+1|0))>=(0|g)){t=22;break}t=d}if(22==(0|t))return 0|e}return 0}function ke(A,e){e|=0;var t,r,i,a,s,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0;if(!(r=0|n[(A|=0)>>2]))return n[e>>2]=0,n[e+4>>2]=0,n[e+8>>2]=0,n[e+12>>2]=0,n[e+16>>2]=0,n[e+20>>2]=0,n[e+24>>2]=0,void(n[e+28>>2]=0);if(o[(i=e+8|0)>>3]=17976931348623157e292,o[(a=e+24|0)>>3]=17976931348623157e292,o[e>>3]=-17976931348623157e292,o[(s=e+16|0)>>3]=-17976931348623157e292,!((0|r)<=0)){for(t=0|n[A+4>>2],b=17976931348623157e292,p=-17976931348623157e292,x=0,A=-1,f=17976931348623157e292,g=17976931348623157e292,m=-17976931348623157e292,u=-17976931348623157e292,v=0;c=+o[t+(v<<4)>>3],h=+o[t+(v<<4)+8>>3],d=+o[t+(((0|(A=A+2|0))==(0|r)?0:A)<<4)+8>>3],c>3]=c,f=c),h>3]=h,g=h),c>m?o[e>>3]=c:c=m,h>u&&(o[s>>3]=h,u=h),b=h>0&hp?h:p,x|=+l(+(h-d))>3.141592653589793,(0|(A=v+1|0))!=(0|r);)w=v,m=c,v=A,A=w;x&&(o[s>>3]=p,o[a>>3]=b)}}function Ce(A){return 0|((A|=0)>>>0<4?0:15)}function Be(A,e){e|=0;var t,r=0,i=0,a=0,s=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,B=0,D=0;if(p=0|n[(A|=0)>>2]){if(o[(x=e+8|0)>>3]=17976931348623157e292,o[(v=e+24|0)>>3]=17976931348623157e292,o[e>>3]=-17976931348623157e292,o[(w=e+16|0)>>3]=-17976931348623157e292,(0|p)>0){for(a=0|n[A+4>>2],m=17976931348623157e292,b=-17976931348623157e292,i=0,r=-1,d=17976931348623157e292,f=17976931348623157e292,h=-17976931348623157e292,c=-17976931348623157e292,y=0;s=+o[a+(y<<4)>>3],g=+o[a+(y<<4)+8>>3],u=+o[a+(((0|(B=r+2|0))==(0|p)?0:B)<<4)+8>>3],s>3]=s,d=s),g>3]=g,f=g),s>h?o[e>>3]=s:s=h,g>c&&(o[w>>3]=g,c=g),m=g>0&gb?g:b,i|=+l(+(g-u))>3.141592653589793,(0|(r=y+1|0))!=(0|p);)B=y,h=s,y=r,r=B;i&&(o[w>>3]=b,o[v>>3]=m)}}else n[e>>2]=0,n[e+4>>2]=0,n[e+8>>2]=0,n[e+12>>2]=0,n[e+16>>2]=0,n[e+20>>2]=0,n[e+24>>2]=0,n[e+28>>2]=0;if(!((0|(r=0|n[(B=A+8|0)>>2]))<=0)){t=A+12|0,C=0;do{if(a=0|n[t>>2],i=C,v=e+((C=C+1|0)<<5)|0,w=0|n[a+(i<<3)>>2]){if(o[(y=e+(C<<5)+8|0)>>3]=17976931348623157e292,o[(A=e+(C<<5)+24|0)>>3]=17976931348623157e292,o[v>>3]=-17976931348623157e292,o[(k=e+(C<<5)+16|0)>>3]=-17976931348623157e292,(0|w)>0){for(p=0|n[a+(i<<3)+4>>2],m=17976931348623157e292,b=-17976931348623157e292,a=0,i=-1,x=0,d=17976931348623157e292,f=17976931348623157e292,g=-17976931348623157e292,c=-17976931348623157e292;s=+o[p+(x<<4)>>3],h=+o[p+(x<<4)+8>>3],u=+o[p+(((0|(i=i+2|0))==(0|w)?0:i)<<4)+8>>3],s>3]=s,d=s),h>3]=h,f=h),s>g?o[v>>3]=s:s=g,h>c&&(o[k>>3]=h,c=h),m=h>0&hb?h:b,a|=+l(+(h-u))>3.141592653589793,(0|(i=x+1|0))!=(0|w);)D=x,x=i,g=s,i=D;a&&(o[k>>3]=b,o[A>>3]=m)}}else n[v>>2]=0,n[v+4>>2]=0,n[v+8>>2]=0,n[v+12>>2]=0,n[v+16>>2]=0,n[v+20>>2]=0,n[v+24>>2]=0,n[v+28>>2]=0,r=0|n[B>>2]}while((0|C)<(0|r))}}function De(A,e,t){var r=0,o=0,i=0;if(!(0|ye(A|=0,e|=0,t|=0)))return 0;if((0|n[(o=A+8|0)>>2])<=0)return 1;for(r=A+12|0,A=0;;){if(i=A,A=A+1|0,0|ye((0|n[r>>2])+(i<<3)|0,e+(A<<5)|0,t)){A=0,r=6;break}if((0|A)>=(0|n[o>>2])){A=1,r=6;break}}return 6==(0|r)?0|A:0}function Ee(A,e,t,r){r|=0;var o,i,a=0,s=0,l=0,c=0,u=0;if(i=P,P=P+16|0,o=i,!(0|ye(A|=0,e|=0,l=8+(t|=0)|0)))return P=i,0;c=A+8|0;A:do{if((0|n[c>>2])>0){for(s=A+12|0,a=0;;){if(u=a,a=a+1|0,0|ye((0|n[s>>2])+(u<<3)|0,e+(a<<5)|0,l)){a=0;break}if((0|a)>=(0|n[c>>2]))break A}return P=i,0|a}}while(0);if(0|Me(A,e,t,r))return P=i,0;n[o>>2]=n[t>>2],n[o+4>>2]=l,a=0|n[c>>2];A:do{if((0|a)>0)for(A=A+12|0,l=0,s=a;;){if(a=0|n[A>>2],(0|n[a+(l<<3)>>2])>0){if(0|ye(o,r,0|n[a+(l<<3)+4>>2])){a=0;break A}if(a=l+1|0,0|Me((0|n[A>>2])+(l<<3)|0,e+(a<<5)|0,t,r)){a=0;break A}s=0|n[c>>2]}else a=l+1|0;if(!((0|a)<(0|s))){a=1;break}l=a}else a=1}while(0);return P=i,0|a}function Me(A,e,t,r){A|=0,t|=0;var i,a,s,l,c,u,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,B=0,D=0;if(u=P,P=P+176|0,l=u+172|0,d=u+168|0,c=u,!(0|q(e|=0,r|=0)))return P=u,0;if(function(A,e,t,r){var i,a,s,l,c;e|=0,t|=0,r|=0,A=(a=+o[16+(A|=0)>>3])<(c=+o[A+24>>3]),i=(l=+o[e+16>>3])<(s=+o[e+24>>3]),e=c-l>2]=A?i|e?1:2:0,n[r>>2]=i?A?1:e?2:1:0}(e,r,l,d),st(0|c,0|t,168),(0|n[t>>2])>0){e=0;do{y=+ie(+o[(B=c+8+(e<<4)+8|0)>>3],0|n[d>>2]),o[B>>3]=y,e=e+1|0}while((0|e)<(0|n[t>>2]))}a=+o[r>>3],s=+o[r+8>>3],y=+ie(+o[r+16>>3],0|n[d>>2]),i=+ie(+o[r+24>>3],0|n[d>>2]);A:do{if((0|n[A>>2])>0){if(r=A+4|0,(0|(d=0|n[c>>2]))<=0)for(e=0;;)if((0|(e=e+1|0))>=(0|n[A>>2])){e=0;break A}for(t=0;;){if(e=0|n[r>>2],v=+o[e+(t<<4)>>3],w=+ie(+o[e+(t<<4)+8>>3],0|n[l>>2]),e=0|n[r>>2],B=(0|(t=t+1|0))%(0|n[A>>2])|0,f=+o[e+(B<<4)>>3],g=+ie(+o[e+(B<<4)+8>>3],0|n[l>>2]),!(v>=a)|!(f>=a)&&!(v<=s)|!(f<=s)&&!(w<=i)|!(g<=i)&&!(w>=y)|!(g>=y)){x=f-v,b=g-w,e=0;do{if(D=e,B=(0|(e=e+1|0))==(0|d)?0:e,f=+o[c+8+(D<<4)+8>>3],g=+o[c+8+(B<<4)+8>>3]-f,h=+o[c+8+(D<<4)>>3],!(0==(p=x*g-b*(m=+o[c+8+(B<<4)>>3]-h))||(k=w-f,C=v-h,m=(k*m-g*C)/p,m<0|m>1))&&(p=(x*k-b*C)/p)>=0&p<=1){e=1;break A}}while((0|e)<(0|d))}if((0|t)>=(0|n[A>>2])){e=0;break}}}else e=0}while(0);return P=u,0|e}function Qe(A,e,t,r){var o=0,i=0,a=0;if(0|Me(A|=0,e|=0,t|=0,r|=0))return 1;if((0|n[(i=A+8|0)>>2])<=0)return 0;for(o=A+12|0,A=0;;){if(a=A,A=A+1|0,0|Me((0|n[o>>2])+(a<<3)|0,e+(A<<5)|0,t,r)){A=1,o=6;break}if((0|A)>=(0|n[i>>2])){A=0,o=6;break}}return 6==(0|o)?0|A:0}function Ne(A,e,t,r,n){e|=0,t|=0,r|=0,n|=0;var i,a,s,l,c,u,d,f=0;l=+o[(A|=0)>>3],s=+o[e>>3]-l,a=+o[A+8>>3],i=+o[e+8>>3]-a,u=+o[t>>3],f=((f=+o[r>>3]-u)*(a-(d=+o[t+8>>3]))-(l-u)*(c=+o[r+8>>3]-d))/(s*c-i*f),o[n>>3]=l+s*f,o[n+8>>3]=a+i*f}function je(A,e){return e|=0,+l(+(+o[(A|=0)>>3]-+o[e>>3]))<1.1920928955078125e-7?0|(e=+l(+(+o[A+8>>3]-+o[e+8>>3]))<1.1920928955078125e-7):0|(e=0)}function Pe(A,e){var t,r,n;return e|=0,+((n=+o[(A|=0)>>3]-+o[e>>3])*n+(r=+o[A+8>>3]-+o[e+8>>3])*r+(t=+o[A+16>>3]-+o[e+16>>3])*t)}function Fe(A,e,t){t|=0;var r,o,i,a,s=0,l=0,c=0,u=0;if(a=P,P=P+32|0,u=a,0|(s=0|XA(A|=0,e|=0,o=a+16|0)))return P=a,0|s;r=0|TA(A,e),i=0|UA(A,e),function(A,e){A=7696+(28*(A|=0)|0)|0,n[(e|=0)>>2]=n[A>>2],n[e+4>>2]=n[A+4>>2],n[e+8>>2]=n[A+8>>2],n[e+12>>2]=n[A+12>>2]}(r,u),s=0|function(A,e){A|=0;var t=0,r=0;if((e|=0)>>>0>20)return-1;do{if((0|n[11120+(216*e|0)>>2])!=(0|A))if((0|n[11120+(216*e|0)+8>>2])!=(0|A))if((0|n[11120+(216*e|0)+16>>2])!=(0|A))if((0|n[11120+(216*e|0)+24>>2])!=(0|A))if((0|n[11120+(216*e|0)+32>>2])!=(0|A))if((0|n[11120+(216*e|0)+40>>2])!=(0|A))if((0|n[11120+(216*e|0)+48>>2])!=(0|A))if((0|n[11120+(216*e|0)+56>>2])!=(0|A))if((0|n[11120+(216*e|0)+64>>2])!=(0|A))if((0|n[11120+(216*e|0)+72>>2])!=(0|A))if((0|n[11120+(216*e|0)+80>>2])!=(0|A))if((0|n[11120+(216*e|0)+88>>2])!=(0|A))if((0|n[11120+(216*e|0)+96>>2])!=(0|A))if((0|n[11120+(216*e|0)+104>>2])!=(0|A))if((0|n[11120+(216*e|0)+112>>2])!=(0|A))if((0|n[11120+(216*e|0)+120>>2])!=(0|A))if((0|n[11120+(216*e|0)+128>>2])!=(0|A)){if((0|n[11120+(216*e|0)+136>>2])!=(0|A)){if((0|n[11120+(216*e|0)+144>>2])==(0|A)){A=0,t=2,r=0;break}if((0|n[11120+(216*e|0)+152>>2])==(0|A)){A=0,t=2,r=1;break}if((0|n[11120+(216*e|0)+160>>2])==(0|A)){A=0,t=2,r=2;break}if((0|n[11120+(216*e|0)+168>>2])==(0|A)){A=1,t=2,r=0;break}if((0|n[11120+(216*e|0)+176>>2])==(0|A)){A=1,t=2,r=1;break}if((0|n[11120+(216*e|0)+184>>2])==(0|A)){A=1,t=2,r=2;break}if((0|n[11120+(216*e|0)+192>>2])==(0|A)){A=2,t=2,r=0;break}if((0|n[11120+(216*e|0)+200>>2])==(0|A)){A=2,t=2,r=1;break}if((0|n[11120+(216*e|0)+208>>2])==(0|A)){A=2,t=2,r=2;break}return-1}A=2,t=1,r=2}else A=2,t=1,r=1;else A=2,t=1,r=0;else A=1,t=1,r=2;else A=1,t=1,r=1;else A=1,t=1,r=0;else A=0,t=1,r=2;else A=0,t=1,r=1;else A=0,t=1,r=0;else A=2,t=0,r=2;else A=2,t=0,r=1;else A=2,t=0,r=0;else A=1,t=0,r=2;else A=1,t=0,r=1;else A=1,t=0,r=0;else A=0,t=0,r=2;else A=0,t=0,r=1;else A=0,t=0,r=0}while(0);return 0|n[11120+(216*e|0)+(72*t|0)+(24*A|0)+(r<<3)+4>>2]}(r,0|n[o>>2]);do{if(0|z(r)){switch(0|r){case 4:l=0;break;case 14:l=1;break;case 24:l=2;break;case 38:l=3;break;case 49:l=4;break;case 58:l=5;break;case 63:l=6;break;case 72:l=7;break;case 83:l=8;break;case 97:l=9;break;case 107:l=10;break;case 117:l=11;break;default:D(27795,27797,75,27806)}if(c=0|n[26416+(24*l|0)+8>>2],e=0|n[26416+(24*l|0)+16>>2],(0|(A=0|n[o>>2]))!=(0|n[u>>2])&&(u=0|G(r))|(0|(A=0|n[o>>2]))==(0|e)&&(s=(s+1|0)%6|0),3==(0|i)&(0|A)==(0|e)){s=(s+5|0)%6|0;break}5==(0|i)&(0|A)==(0|c)&&(s=(s+1|0)%6|0)}}while(0);return n[t>>2]=s,P=a,0}function Se(A,e,t,r){t|=0,r|=0;var o,i,a,s,l,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0;if(l=P,P=P+32|0,v=l+24|0,s=l+20|0,a=l+8|0,i=l+16|0,o=l,g=(g=!(0|HA(A|=0,e|=0)))?6:5,m=0|tt(0|A,0|e,52),B(),g>>>0<=t>>>0)return P=l,2;!(b=!(0|(m&=15)))&&!((p=0|rt(7,0,3*(15^m)|0))&A)&!((0|B())&e)?c=t:u=4;A:do{if(4==(0|u)){if((0|((c=!!(0|HA(A,e)))?4:5))<(0|t))return P=l,1;if(0|Fe(A,e,v))return P=l,1;if(u=(0|n[v>>2])+t|0,7==(0|(p=0|n[(c=c?26704+((0|u)%5<<2)|0:26736+((0|u)%6<<2)|0)>>2])))return P=l,1;n[s>>2]=0,c=0|R(A,e,p,s,a);do{if(!c){if(h=0|n[(f=a)>>2],u=(d=(f=0|n[f+4>>2])>>>0>>0|(0|f)==(0|e)&h>>>0>>0)?h:A,d=d?f:e,!b&&!(h&(b=0|rt(7,0,3*(15^m)|0)))&!(f&(0|B())))c=t;else{if(f=(t+-1+g|0)%(0|g)|0,c=0|HA(A,e),(0|f)<0&&D(27795,27797,248,27822),(0|((g=!!(0|c))?4:5))<(0|f)&&D(27795,27797,248,27822),0|Fe(A,e,v)&&D(27795,27797,248,27822),c=(0|n[v>>2])+f|0,7==(0|(f=0|n[(c=g?26704+((0|c)%5<<2)|0:26736+((0|c)%6<<2)|0)>>2]))&&D(27795,27797,248,27822),n[i>>2]=0,0|(c=0|R(A,e,f,i,o)))break;g=0|n[(h=o)>>2],h=0|n[h+4>>2];do{if(h>>>0>>0|(0|h)==(0|d)&g>>>0>>0){if(u=0|HA(g,h)?0|_(g,h,A,e):0|n[26800+(((0|n[i>>2])+(0|n[26768+(f<<2)>>2])|0)%6<<2)>>2],c=0|HA(g,h),(u+-1|0)>>>0>5){c=-1,u=g,d=h;break}if(1==(0|u)&(c=!!(0|c))){c=-1,u=g,d=h;break}do{if(!(0|Fe(g,h,v))){if(c){c=(5+(0|n[26352+(u<<2)>>2])-(0|n[v>>2])|0)%5|0;break}c=(6+(0|n[26384+(u<<2)>>2])-(0|n[v>>2])|0)%6|0;break}c=-1}while(0);u=g,d=h}else c=t}while(0);h=0|n[(f=a)>>2],f=0|n[f+4>>2]}if((0|u)==(0|h)&(0|d)==(0|f)){if(A=(g=!!(0|HA(h,f)))?0|_(h,f,A,e):0|n[26800+(((0|n[s>>2])+(0|n[26768+(p<<2)>>2])|0)%6<<2)>>2],c=0|HA(h,f),(A+-1|0)>>>0<=5&&!(1==(0|A)&(x=!!(0|c))))do{if(!(0|Fe(h,f,v))){if(x){c=(5+(0|n[26352+(A<<2)>>2])-(0|n[v>>2])|0)%5|0;break}c=(6+(0|n[26384+(A<<2)>>2])-(0|n[v>>2])|0)%6|0;break}c=-1}while(0);else c=-1;c=6==(0|(c=c+1|0))|g&5==(0|c)?0:c}e=d,A=u;break A}}while(0);return P=l,0|c}}while(0);return x=0|rt(0|c,0,56),v=B()|-2130706433&e|536870912,n[r>>2]=x|A,n[r+4>>2]=v,P=l,0}function Te(A,e){A|=0;var t,r,o=0,i=0;return r=P,P=P+16|0,t=r,!0&536870912==(2013265920&(e|=0))&&0|IA(A,o=-2130706433&e|134217728)?(i=0|tt(0|A,0|e,56),B(),o=(i=!(0|Se(A,o,7&i,t)))&((0|n[(o=t)>>2])==(0|A)?(0|n[o+4>>2])==(0|e):0)&1,P=r,0|o):(P=r,0|(o=0))}function Ie(A,e,t){A|=0,t|=0;var r=0;(0|(e|=0))>0?(r=0|Ve(e,4),n[A>>2]=r,r||D(27835,27858,40,27872)):n[A>>2]=0,n[A+4>>2]=e,n[A+8>>2]=0,n[A+12>>2]=t}function Re(A){var e,t,r,i=0,a=0,s=0,c=0;e=4+(A|=0)|0,t=A+12|0,r=A+8|0;A:for(;;){for(a=0|n[e>>2],i=0;;){if((0|i)>=(0|a))break A;if(s=0|n[A>>2],c=0|n[s+(i<<2)>>2])break;i=i+1|0}i=s+(~~(+l(+ +u(10,+ +(15-(0|n[t>>2])|0))*(+o[c>>3]+ +o[c+8>>3]))%+(0|a))>>>0<<2)|0,a=0|n[i>>2];e:do{if(0|a){if(s=c+32|0,(0|a)==(0|c))n[i>>2]=n[s>>2];else{if(!(i=0|n[(a=a+32|0)>>2]))break;for(;(0|i)!=(0|c);)if(!(i=0|n[(a=i+32|0)>>2]))break e;n[a>>2]=n[s>>2]}Ye(c),n[r>>2]=(0|n[r>>2])-1}}while(0)}Ye(0|n[A>>2])}function Le(A){var e,t=0,r=0;for(e=0|n[4+(A|=0)>>2],r=0;;){if((0|r)>=(0|e)){t=0,r=4;break}if(t=0|n[(0|n[A>>2])+(r<<2)>>2]){r=4;break}r=r+1|0}return 4==(0|r)?0|t:0}function _e(A,e){e|=0;var t=0,r=0,i=0,a=0;if(t=~~(+l(+ +u(10,+ +(15-(0|n[12+(A|=0)>>2])|0))*(+o[e>>3]+ +o[e+8>>3]))%+(0|n[A+4>>2]))>>>0,t=(0|n[A>>2])+(t<<2)|0,!(r=0|n[t>>2]))return 1;a=e+32|0;do{if((0|r)!=(0|e)){if(!(t=0|n[r+32>>2]))return 1;for(i=t;;){if((0|i)==(0|e)){i=8;break}if(!(t=0|n[i+32>>2])){t=1,i=10;break}r=i,i=t}if(8==(0|i)){n[r+32>>2]=n[a>>2];break}if(10==(0|i))return 0|t}else n[t>>2]=n[a>>2]}while(0);return Ye(e),n[(a=A+8|0)>>2]=(0|n[a>>2])-1,0}function He(A,e,t){A|=0,e|=0,t|=0;var r,i=0,a=0,s=0;(r=0|Oe(40))||D(27888,27858,98,27901),n[r>>2]=n[e>>2],n[r+4>>2]=n[e+4>>2],n[r+8>>2]=n[e+8>>2],n[r+12>>2]=n[e+12>>2],n[(a=r+16|0)>>2]=n[t>>2],n[a+4>>2]=n[t+4>>2],n[a+8>>2]=n[t+8>>2],n[a+12>>2]=n[t+12>>2],n[r+32>>2]=0,a=~~(+l(+ +u(10,+ +(15-(0|n[A+12>>2])|0))*(+o[e>>3]+ +o[e+8>>3]))%+(0|n[A+4>>2]))>>>0,a=(0|n[A>>2])+(a<<2)|0,i=0|n[a>>2];do{if(i){for(;!(0|oe(i,e)&&0|oe(i+16|0,t));)if(a=0|n[i+32>>2],!(0|n[(i=0|a?a:i)+32>>2])){s=10;break}if(10==(0|s)){n[i+32>>2]=r;break}return Ye(r),0|i}n[a>>2]=r}while(0);return n[(s=A+8|0)>>2]=1+(0|n[s>>2]),0|r}function ze(A,e,t){e|=0,t|=0;var r=0,i=0;if(i=~~(+l(+ +u(10,+ +(15-(0|n[12+(A|=0)>>2])|0))*(+o[e>>3]+ +o[e+8>>3]))%+(0|n[A+4>>2]))>>>0,!(i=0|n[(0|n[A>>2])+(i<<2)>>2]))return 0;if(!t){for(A=i;;){if(0|oe(A,e)){r=10;break}if(!(A=0|n[A+32>>2])){A=0,r=10;break}}if(10==(0|r))return 0|A}for(A=i;;){if(0|oe(A,e)&&0|oe(A+16|0,t)){r=10;break}if(!(A=0|n[A+32>>2])){A=0,r=10;break}}return 10==(0|r)?0|A:0}function Ge(A,e){e|=0;var t=0;if(t=~~(+l(+ +u(10,+ +(15-(0|n[12+(A|=0)>>2])|0))*(+o[e>>3]+ +o[e+8>>3]))%+(0|n[A+4>>2]))>>>0,!(A=0|n[(0|n[A>>2])+(t<<2)>>2]))return 0;for(;;){if(0|oe(A,e)){e=5;break}if(!(A=0|n[A+32>>2])){A=0,e=5;break}}return 5==(0|e)?0|A:0}function Ue(A){return 0|+ct(+(A=+A))}function Oe(A){A|=0;var e,t=0,r=0,o=0,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0;e=P,P=P+16|0,g=e;do{if(A>>>0<245){if(A=(u=A>>>0<11?16:A+11&-8)>>>3,3&(r=(f=0|n[6981])>>>A))return o=0|n[(r=8+(A=27964+((t=(1&r^1)+A|0)<<1<<2)|0)|0)>>2],(0|(a=0|n[(i=o+8|0)>>2]))==(0|A)?n[6981]=f&~(1<>2]=A,n[r>>2]=a),y=t<<3,n[o+4>>2]=3|y,n[(y=o+y+4|0)>>2]=1|n[y>>2],P=e,0|i;if(u>>>0>(d=0|n[6983])>>>0){if(0|r)return t=((t=r<>>=l=t>>>12&16)>>>5&8)|l|(a=(t>>>=r)>>>2&4)|(A=(t>>>=a)>>>1&2)|(o=(t>>>=A)>>>1&1))+(t>>>o)|0)<<1<<2)|0)|0)>>2],(0|(r=0|n[(l=a+8|0)>>2]))==(0|t)?(A=f&~(1<>2]=t,n[A>>2]=r,A=f),s=(y=o<<3)-u|0,n[a+4>>2]=3|u,n[4+(i=a+u|0)>>2]=1|s,n[a+y>>2]=s,0|d&&(o=0|n[6986],r=27964+((t=d>>>3)<<1<<2)|0,A&(t=1<>2]:(n[6981]=A|t,t=r,A=r+8|0),n[A>>2]=o,n[t+12>>2]=o,n[o+8>>2]=t,n[o+12>>2]=r),n[6983]=s,n[6986]=i,P=e,0|l;if(a=0|n[6982]){for(r=(a&0-a)-1|0,r=c=0|n[28228+(((o=(r>>>=i=r>>>12&16)>>>5&8)|i|(s=(r>>>=o)>>>2&4)|(l=(r>>>=s)>>>1&2)|(c=(r>>>=l)>>>1&1))+(r>>>c)<<2)>>2],l=c,c=(-8&n[c+4>>2])-u|0;(A=0|n[r+16>>2])||(A=0|n[r+20>>2]);)r=A,l=(i=(s=(-8&n[A+4>>2])-u|0)>>>0>>0)?A:l,c=i?s:c;if((s=l+u|0)>>>0>l>>>0){i=0|n[l+24>>2],t=0|n[l+12>>2];do{if((0|t)==(0|l)){if(!(t=0|n[(A=l+20|0)>>2])&&!(t=0|n[(A=l+16|0)>>2])){r=0;break}for(;;)if(r=0|n[(o=t+20|0)>>2])t=r,A=o;else{if(!(r=0|n[(o=t+16|0)>>2]))break;t=r,A=o}n[A>>2]=0,r=t}else r=0|n[l+8>>2],n[r+12>>2]=t,n[t+8>>2]=r,r=t}while(0);do{if(0|i){if(t=0|n[l+28>>2],(0|l)==(0|n[(A=28228+(t<<2)|0)>>2])){if(n[A>>2]=r,!r){n[6982]=a&~(1<>2])==(0|l)?y:i+20)>>2]=r,!r)break;n[r+24>>2]=i,0|(t=0|n[l+16>>2])&&(n[r+16>>2]=t,n[t+24>>2]=r),0|(t=0|n[l+20>>2])&&(n[r+20>>2]=t,n[t+24>>2]=r)}}while(0);return c>>>0<16?(y=c+u|0,n[l+4>>2]=3|y,n[(y=l+y+4|0)>>2]=1|n[y>>2]):(n[l+4>>2]=3|u,n[s+4>>2]=1|c,n[s+c>>2]=c,0|d&&(o=0|n[6986],r=27964+((t=d>>>3)<<1<<2)|0,(t=1<>2]:(n[6981]=t|f,t=r,A=r+8|0),n[A>>2]=o,n[t+12>>2]=o,n[o+8>>2]=t,n[o+12>>2]=r),n[6983]=c,n[6986]=s),P=e,0|l+8}f=u}else f=u}else f=u}else if(A>>>0<=4294967231)if(u=-8&(A=A+11|0),o=0|n[6982]){i=0-u|0,c=(A>>>=8)?u>>>0>16777215?31:u>>>(7+(c=14-((l=(520192+(b=A<<(f=(A+1048320|0)>>>16&8))|0)>>>16&4)|f|(c=(245760+(b<<=l)|0)>>>16&2))+(b<>>15)|0)|0)&1|c<<1:0,r=0|n[28228+(c<<2)>>2];A:do{if(r)for(A=0,l=u<<(31==(0|c)?0:25-(c>>>1)|0),a=0;;){if((s=(-8&n[r+4>>2])-u|0)>>>0>>0){if(!s){A=r,i=0,b=65;break A}A=r,i=s}if(a=!(0|(b=0|n[r+20>>2]))|(0|b)==(0|(r=0|n[r+16+(l>>>31<<2)>>2]))?a:b,!r){r=a,b=61;break}l<<=1}else r=0,A=0,b=61}while(0);if(61==(0|b)){if(!(0|r)&!(0|A)){if(!(A=((A=2<>>=s=f>>>12&16)>>>5&8)|s|(l=(f>>>=a)>>>2&4)|(c=(f>>>=l)>>>1&2)|(r=(f>>>=c)>>>1&1))+(f>>>r)<<2)>>2]}r?b=65:(l=A,s=i)}if(65==(0|b))for(a=r;;){if(i=(r=(f=(-8&n[a+4>>2])-u|0)>>>0>>0)?f:i,A=r?a:A,(r=0|n[a+16>>2])||(r=0|n[a+20>>2]),!r){l=A,s=i;break}a=r}if(0|l&&s>>>0<((0|n[6983])-u|0)>>>0&&(d=l+u|0)>>>0>l>>>0){a=0|n[l+24>>2],t=0|n[l+12>>2];do{if((0|t)==(0|l)){if(!(t=0|n[(A=l+20|0)>>2])&&!(t=0|n[(A=l+16|0)>>2])){t=0;break}for(;;)if(r=0|n[(i=t+20|0)>>2])t=r,A=i;else{if(!(r=0|n[(i=t+16|0)>>2]))break;t=r,A=i}n[A>>2]=0}else y=0|n[l+8>>2],n[y+12>>2]=t,n[t+8>>2]=y}while(0);do{if(a){if(A=0|n[l+28>>2],(0|l)==(0|n[(r=28228+(A<<2)|0)>>2])){if(n[r>>2]=t,!t){o&=~(1<>2])==(0|l)?y:a+20)>>2]=t,!t)break;n[t+24>>2]=a,0|(A=0|n[l+16>>2])&&(n[t+16>>2]=A,n[A+24>>2]=t),(A=0|n[l+20>>2])&&(n[t+20>>2]=A,n[A+24>>2]=t)}}while(0);A:do{if(s>>>0<16)y=s+u|0,n[l+4>>2]=3|y,n[(y=l+y+4|0)>>2]=1|n[y>>2];else{if(n[l+4>>2]=3|u,n[d+4>>2]=1|s,n[d+s>>2]=s,t=s>>>3,s>>>0<256){r=27964+(t<<1<<2)|0,(A=0|n[6981])&(t=1<>2]:(n[6981]=A|t,t=r,A=r+8|0),n[A>>2]=d,n[t+12>>2]=d,n[d+8>>2]=t,n[d+12>>2]=r;break}if(t=28228+((r=(t=s>>>8)?s>>>0>16777215?31:s>>>(7+(r=14-((v=(520192+(y=t<<(w=(t+1048320|0)>>>16&8))|0)>>>16&4)|w|(r=(245760+(y<<=v)|0)>>>16&2))+(y<>>15)|0)|0)&1|r<<1:0)<<2)|0,n[d+28>>2]=r,n[4+(A=d+16|0)>>2]=0,n[A>>2]=0,!(o&(A=1<>2]=d,n[d+24>>2]=t,n[d+12>>2]=d,n[d+8>>2]=d;break}t=0|n[t>>2];e:do{if((-8&n[t+4>>2])!=(0|s)){for(o=s<<(31==(0|r)?0:25-(r>>>1)|0);A=0|n[(r=t+16+(o>>>31<<2)|0)>>2];){if((-8&n[A+4>>2])==(0|s)){t=A;break e}o<<=1,t=A}n[r>>2]=d,n[d+24>>2]=t,n[d+12>>2]=d,n[d+8>>2]=d;break A}}while(0);y=0|n[(w=t+8|0)>>2],n[y+12>>2]=d,n[w>>2]=d,n[d+8>>2]=y,n[d+12>>2]=t,n[d+24>>2]=0}}while(0);return P=e,0|l+8}f=u}else f=u;else f=-1}while(0);if((r=0|n[6983])>>>0>=f>>>0)return t=r-f|0,A=0|n[6986],t>>>0>15?(y=A+f|0,n[6986]=y,n[6983]=t,n[y+4>>2]=1|t,n[A+r>>2]=t,n[A+4>>2]=3|f):(n[6983]=0,n[6986]=0,n[A+4>>2]=3|r,n[(y=A+r+4|0)>>2]=1|n[y>>2]),P=e,0|A+8;if((s=0|n[6984])>>>0>f>>>0)return v=s-f|0,n[6984]=v,w=(y=0|n[6987])+f|0,n[6987]=w,n[w+4>>2]=1|v,n[y+4>>2]=3|f,P=e,0|y+8;if(0|n[7099]?A=0|n[7101]:(n[7101]=4096,n[7100]=4096,n[7102]=-1,n[7103]=-1,n[7104]=0,n[7092]=0,n[7099]=-16&g^1431655768,A=4096),l=f+48|0,(u=(a=A+(c=f+47|0)|0)&(i=0-A|0))>>>0<=f>>>0)return P=e,0;if(0|(A=0|n[7091])&&(g=(d=0|n[7089])+u|0)>>>0<=d>>>0|g>>>0>A>>>0)return P=e,0;A:do{if(4&n[7092])t=0,b=143;else{r=0|n[6987];e:do{if(r){for(o=28372;!((g=0|n[o>>2])>>>0<=r>>>0&&(g+(0|n[o+4>>2])|0)>>>0>r>>>0);){if(!(A=0|n[o+8>>2])){b=128;break e}o=A}if((t=a-s&i)>>>0<2147483647)if((0|(A=0|ut(0|t)))==((0|n[o>>2])+(0|n[o+4>>2])|0)){if(-1!=(0|A)){s=t,a=A,b=145;break A}}else o=A,b=136;else t=0}else b=128}while(0);do{if(128==(0|b))if(-1!=(0|(r=0|ut(0)))&&(t=r,m=(t=((m=(h=0|n[7100])-1|0)&t?(m+t&0-h)-t|0:0)+u|0)+(h=0|n[7089])|0,t>>>0>f>>>0&t>>>0<2147483647)){if(0|(g=0|n[7091])&&m>>>0<=h>>>0|m>>>0>g>>>0){t=0;break}if((0|(A=0|ut(0|t)))==(0|r)){s=t,a=r,b=145;break A}o=A,b=136}else t=0}while(0);do{if(136==(0|b)){if(r=0-t|0,!(l>>>0>t>>>0&t>>>0<2147483647&-1!=(0|o))){if(-1==(0|o)){t=0;break}s=t,a=o,b=145;break A}if((A=c-t+(A=0|n[7101])&0-A)>>>0>=2147483647){s=t,a=o,b=145;break A}if(-1==(0|ut(0|A))){ut(0|r),t=0;break}s=A+t|0,a=o,b=145;break A}}while(0);n[7092]=4|n[7092],b=143}}while(0);if(143==(0|b)&&u>>>0<2147483647&&!(-1==(0|(v=0|ut(0|u)))|1^(x=(p=(m=0|ut(0))-v|0)>>>0>(f+40|0)>>>0)|v>>>0>>0&-1!=(0|v)&-1!=(0|m)^1)&&(s=x?p:t,a=v,b=145),145==(0|b)){t=(0|n[7089])+s|0,n[7089]=t,t>>>0>(0|n[7090])>>>0&&(n[7090]=t),c=0|n[6987];A:do{if(c){for(t=28372;;){if((0|a)==((A=0|n[t>>2])+(r=0|n[t+4>>2])|0)){b=154;break}if(!(o=0|n[t+8>>2]))break;t=o}if(!(154!=(0|b)||(w=t+4|0,8&n[t+12>>2]))&&a>>>0>c>>>0&A>>>0<=c>>>0){n[w>>2]=r+s,w=c+(v=7&(v=c+8|0)?0-v&7:0)|0,v=(y=(0|n[6984])+s|0)-v|0,n[6987]=w,n[6984]=v,n[w+4>>2]=1|v,n[c+y+4>>2]=40,n[6988]=n[7103];break}for(a>>>0<(0|n[6985])>>>0&&(n[6985]=a),r=a+s|0,t=28372;;){if((0|n[t>>2])==(0|r)){b=162;break}if(!(A=0|n[t+8>>2]))break;t=A}if(162==(0|b)&&!(8&n[t+12>>2])){n[t>>2]=a,n[(d=t+4|0)>>2]=(0|n[d>>2])+s,u=(d=a+(7&(d=a+8|0)?0-d&7:0)|0)+f|0,l=(t=r+(7&(t=r+8|0)?0-t&7:0)|0)-d-f|0,n[d+4>>2]=3|f;e:do{if((0|c)==(0|t))y=(0|n[6984])+l|0,n[6984]=y,n[6987]=u,n[u+4>>2]=1|y;else{if((0|n[6986])==(0|t)){y=(0|n[6983])+l|0,n[6983]=y,n[6986]=u,n[u+4>>2]=1|y,n[u+y>>2]=y;break}if(1==(3&(A=0|n[t+4>>2]))){s=-8&A,o=A>>>3;t:do{if(A>>>0<256){if(A=0|n[t+8>>2],(0|(r=0|n[t+12>>2]))==(0|A)){n[6981]=n[6981]&~(1<>2]=r,n[r+8>>2]=A;break}a=0|n[t+24>>2],A=0|n[t+12>>2];do{if((0|A)==(0|t)){if(A=0|n[(o=4+(r=t+16|0)|0)>>2])r=o;else if(!(A=0|n[r>>2])){A=0;break}for(;;)if(o=0|n[(i=A+20|0)>>2])A=o,r=i;else{if(!(o=0|n[(i=A+16|0)>>2]))break;A=o,r=i}n[r>>2]=0}else y=0|n[t+8>>2],n[y+12>>2]=A,n[A+8>>2]=y}while(0);if(!a)break;o=28228+((r=0|n[t+28>>2])<<2)|0;do{if((0|n[o>>2])==(0|t)){if(n[o>>2]=A,0|A)break;n[6982]=n[6982]&~(1<>2])==(0|t)?y:a+20)>>2]=A,!A)break t}while(0);if(n[A+24>>2]=a,0|(o=0|n[(r=t+16|0)>>2])&&(n[A+16>>2]=o,n[o+24>>2]=A),!(r=0|n[r+4>>2]))break;n[A+20>>2]=r,n[r+24>>2]=A}while(0);t=t+s|0,i=s+l|0}else i=l;if(n[(t=t+4|0)>>2]=-2&n[t>>2],n[u+4>>2]=1|i,n[u+i>>2]=i,t=i>>>3,i>>>0<256){r=27964+(t<<1<<2)|0,(A=0|n[6981])&(t=1<>2]:(n[6981]=A|t,t=r,A=r+8|0),n[A>>2]=u,n[t+12>>2]=u,n[u+8>>2]=t,n[u+12>>2]=r;break}t=i>>>8;do{if(t){if(i>>>0>16777215){o=31;break}o=i>>>(7+(o=14-((v=(520192+(y=t<<(w=(t+1048320|0)>>>16&8))|0)>>>16&4)|w|(o=(245760+(y<<=v)|0)>>>16&2))+(y<>>15)|0)|0)&1|o<<1}else o=0}while(0);if(t=28228+(o<<2)|0,n[u+28>>2]=o,n[4+(A=u+16|0)>>2]=0,n[A>>2]=0,!((A=0|n[6982])&(r=1<>2]=u,n[u+24>>2]=t,n[u+12>>2]=u,n[u+8>>2]=u;break}t=0|n[t>>2];t:do{if((-8&n[t+4>>2])!=(0|i)){for(o=i<<(31==(0|o)?0:25-(o>>>1)|0);A=0|n[(r=t+16+(o>>>31<<2)|0)>>2];){if((-8&n[A+4>>2])==(0|i)){t=A;break t}o<<=1,t=A}n[r>>2]=u,n[u+24>>2]=t,n[u+12>>2]=u,n[u+8>>2]=u;break e}}while(0);y=0|n[(w=t+8|0)>>2],n[y+12>>2]=u,n[w>>2]=u,n[u+8>>2]=y,n[u+12>>2]=t,n[u+24>>2]=0}}while(0);return P=e,0|d+8}for(t=28372;!((A=0|n[t>>2])>>>0<=c>>>0&&(y=A+(0|n[t+4>>2])|0)>>>0>c>>>0);)t=0|n[t+8>>2];t=(A=(A=(i=y+-47|0)+(7&(A=i+8|0)?0-A&7:0)|0)>>>0<(i=c+16|0)>>>0?c:A)+8|0,w=a+(v=7&(v=a+8|0)?0-v&7:0)|0,v=(r=s+-40|0)-v|0,n[6987]=w,n[6984]=v,n[w+4>>2]=1|v,n[a+r+4>>2]=40,n[6988]=n[7103],n[(r=A+4|0)>>2]=27,n[t>>2]=n[7093],n[t+4>>2]=n[7094],n[t+8>>2]=n[7095],n[t+12>>2]=n[7096],n[7093]=a,n[7094]=s,n[7096]=0,n[7095]=t,t=A+24|0;do{w=t,n[(t=t+4|0)>>2]=7}while((w+8|0)>>>0>>0);if((0|A)!=(0|c)){if(a=A-c|0,n[r>>2]=-2&n[r>>2],n[c+4>>2]=1|a,n[A>>2]=a,t=a>>>3,a>>>0<256){r=27964+(t<<1<<2)|0,(A=0|n[6981])&(t=1<>2]:(n[6981]=A|t,t=r,A=r+8|0),n[A>>2]=c,n[t+12>>2]=c,n[c+8>>2]=t,n[c+12>>2]=r;break}if(r=28228+((o=(t=a>>>8)?a>>>0>16777215?31:a>>>(7+(o=14-((v=(520192+(y=t<<(w=(t+1048320|0)>>>16&8))|0)>>>16&4)|w|(o=(245760+(y<<=v)|0)>>>16&2))+(y<>>15)|0)|0)&1|o<<1:0)<<2)|0,n[c+28>>2]=o,n[c+20>>2]=0,n[i>>2]=0,!((t=0|n[6982])&(A=1<>2]=c,n[c+24>>2]=r,n[c+12>>2]=c,n[c+8>>2]=c;break}t=0|n[r>>2];e:do{if((-8&n[t+4>>2])!=(0|a)){for(o=a<<(31==(0|o)?0:25-(o>>>1)|0);A=0|n[(r=t+16+(o>>>31<<2)|0)>>2];){if((-8&n[A+4>>2])==(0|a)){t=A;break e}o<<=1,t=A}n[r>>2]=c,n[c+24>>2]=t,n[c+12>>2]=c,n[c+8>>2]=c;break A}}while(0);y=0|n[(w=t+8|0)>>2],n[y+12>>2]=c,n[w>>2]=c,n[c+8>>2]=y,n[c+12>>2]=t,n[c+24>>2]=0}}else!(0|(y=0|n[6985]))|a>>>0>>0&&(n[6985]=a),n[7093]=a,n[7094]=s,n[7096]=0,n[6990]=n[7099],n[6989]=-1,n[6994]=27964,n[6993]=27964,n[6996]=27972,n[6995]=27972,n[6998]=27980,n[6997]=27980,n[7e3]=27988,n[6999]=27988,n[7002]=27996,n[7001]=27996,n[7004]=28004,n[7003]=28004,n[7006]=28012,n[7005]=28012,n[7008]=28020,n[7007]=28020,n[7010]=28028,n[7009]=28028,n[7012]=28036,n[7011]=28036,n[7014]=28044,n[7013]=28044,n[7016]=28052,n[7015]=28052,n[7018]=28060,n[7017]=28060,n[7020]=28068,n[7019]=28068,n[7022]=28076,n[7021]=28076,n[7024]=28084,n[7023]=28084,n[7026]=28092,n[7025]=28092,n[7028]=28100,n[7027]=28100,n[7030]=28108,n[7029]=28108,n[7032]=28116,n[7031]=28116,n[7034]=28124,n[7033]=28124,n[7036]=28132,n[7035]=28132,n[7038]=28140,n[7037]=28140,n[7040]=28148,n[7039]=28148,n[7042]=28156,n[7041]=28156,n[7044]=28164,n[7043]=28164,n[7046]=28172,n[7045]=28172,n[7048]=28180,n[7047]=28180,n[7050]=28188,n[7049]=28188,n[7052]=28196,n[7051]=28196,n[7054]=28204,n[7053]=28204,n[7056]=28212,n[7055]=28212,w=a+(v=7&(v=a+8|0)?0-v&7:0)|0,v=(y=s+-40|0)-v|0,n[6987]=w,n[6984]=v,n[w+4>>2]=1|v,n[a+y+4>>2]=40,n[6988]=n[7103]}while(0);if((t=0|n[6984])>>>0>f>>>0)return v=t-f|0,n[6984]=v,w=(y=0|n[6987])+f|0,n[6987]=w,n[w+4>>2]=1|v,n[y+4>>2]=3|f,P=e,0|y+8}return n[(y=27920)>>2]=12,P=e,0}function Ye(A){var e=0,t=0,r=0,o=0,i=0,a=0,s=0,l=0;if(A|=0){t=A+-8|0,o=0|n[6985],l=t+(e=-8&(A=0|n[A+-4>>2]))|0;do{if(1&A)s=t,a=t;else{if(r=0|n[t>>2],!(3&A))return;if(i=r+e|0,(a=t+(0-r)|0)>>>0>>0)return;if((0|n[6986])==(0|a)){if(3&~(e=0|n[(A=l+4|0)>>2])){s=a,e=i;break}return n[6983]=i,n[A>>2]=-2&e,n[a+4>>2]=1|i,void(n[a+i>>2]=i)}if(t=r>>>3,r>>>0<256){if(A=0|n[a+8>>2],(0|(e=0|n[a+12>>2]))==(0|A)){n[6981]=n[6981]&~(1<>2]=e,n[e+8>>2]=A,s=a,e=i;break}o=0|n[a+24>>2],A=0|n[a+12>>2];do{if((0|A)==(0|a)){if(A=0|n[(t=4+(e=a+16|0)|0)>>2])e=t;else if(!(A=0|n[e>>2])){A=0;break}for(;;)if(t=0|n[(r=A+20|0)>>2])A=t,e=r;else{if(!(t=0|n[(r=A+16|0)>>2]))break;A=t,e=r}n[e>>2]=0}else s=0|n[a+8>>2],n[s+12>>2]=A,n[A+8>>2]=s}while(0);if(o){if(e=0|n[a+28>>2],(0|n[(t=28228+(e<<2)|0)>>2])==(0|a)){if(n[t>>2]=A,!A){n[6982]=n[6982]&~(1<>2])==(0|a)?s:o+20)>>2]=A,!A){s=a,e=i;break}n[A+24>>2]=o,0|(t=0|n[(e=a+16|0)>>2])&&(n[A+16>>2]=t,n[t+24>>2]=A),(e=0|n[e+4>>2])?(n[A+20>>2]=e,n[e+24>>2]=A,s=a,e=i):(s=a,e=i)}else s=a,e=i}}while(0);if(!(a>>>0>=l>>>0)&&1&(r=0|n[(A=l+4|0)>>2])){if(2&r)n[A>>2]=-2&r,n[s+4>>2]=1|e,n[a+e>>2]=e,o=e;else{if((0|n[6987])==(0|l)){if(l=(0|n[6984])+e|0,n[6984]=l,n[6987]=s,n[s+4>>2]=1|l,(0|s)!=(0|n[6986]))return;return n[6986]=0,void(n[6983]=0)}if((0|n[6986])==(0|l))return l=(0|n[6983])+e|0,n[6983]=l,n[6986]=a,n[s+4>>2]=1|l,void(n[a+l>>2]=l);o=(-8&r)+e|0,t=r>>>3;do{if(r>>>0<256){if(e=0|n[l+8>>2],(0|(A=0|n[l+12>>2]))==(0|e)){n[6981]=n[6981]&~(1<>2]=A,n[A+8>>2]=e;break}i=0|n[l+24>>2],A=0|n[l+12>>2];do{if((0|A)==(0|l)){if(A=0|n[(t=4+(e=l+16|0)|0)>>2])e=t;else if(!(A=0|n[e>>2])){t=0;break}for(;;)if(t=0|n[(r=A+20|0)>>2])A=t,e=r;else{if(!(t=0|n[(r=A+16|0)>>2]))break;A=t,e=r}n[e>>2]=0,t=A}else t=0|n[l+8>>2],n[t+12>>2]=A,n[A+8>>2]=t,t=A}while(0);if(0|i){if(A=0|n[l+28>>2],(0|n[(e=28228+(A<<2)|0)>>2])==(0|l)){if(n[e>>2]=t,!t){n[6982]=n[6982]&~(1<>2])==(0|l)?r:i+20)>>2]=t,!t)break;n[t+24>>2]=i,0|(e=0|n[(A=l+16|0)>>2])&&(n[t+16>>2]=e,n[e+24>>2]=t),0|(A=0|n[A+4>>2])&&(n[t+20>>2]=A,n[A+24>>2]=t)}}while(0);if(n[s+4>>2]=1|o,n[a+o>>2]=o,(0|s)==(0|n[6986]))return void(n[6983]=o)}if(A=o>>>3,o>>>0<256)return t=27964+(A<<1<<2)|0,(e=0|n[6981])&(A=1<>2]:(n[6981]=e|A,A=t,e=t+8|0),n[e>>2]=s,n[A+12>>2]=s,n[s+8>>2]=A,void(n[s+12>>2]=t);A=28228+((r=(A=o>>>8)?o>>>0>16777215?31:o>>>(7+(r=14-((i=(520192+(l=A<<(a=(A+1048320|0)>>>16&8))|0)>>>16&4)|a|(r=(245760+(l<<=i)|0)>>>16&2))+(l<>>15)|0)|0)&1|r<<1:0)<<2)|0,n[s+28>>2]=r,n[s+20>>2]=0,n[s+16>>2]=0,e=0|n[6982],t=1<>2];e:do{if((-8&n[A+4>>2])!=(0|o)){for(r=o<<(31==(0|r)?0:25-(r>>>1)|0);e=0|n[(t=A+16+(r>>>31<<2)|0)>>2];){if((-8&n[e+4>>2])==(0|o)){A=e;break e}r<<=1,A=e}n[t>>2]=s,n[s+24>>2]=A,n[s+12>>2]=s,n[s+8>>2]=s;break A}}while(0);l=0|n[(a=A+8|0)>>2],n[l+12>>2]=s,n[a>>2]=s,n[s+8>>2]=l,n[s+12>>2]=A,n[s+24>>2]=0}else n[6982]=e|t,n[A>>2]=s,n[s+24>>2]=A,n[s+12>>2]=s,n[s+8>>2]=s}while(0);if(l=(0|n[6989])-1|0,n[6989]=l,!(0|l)){for(A=28380;A=0|n[A>>2];)A=A+8|0;n[6989]=-1}}}}function Ve(A,e){e|=0;var t=0;return(A|=0)?(t=0|v(e,A),(e|A)>>>0>65535&&(t=((t>>>0)/(A>>>0)|0)==(0|e)?t:-1)):t=0,(A=0|Oe(t))&&3&n[A+-4>>2]?(lt(0|A,0,0|t),0|A):0|A}function We(A,e,t,r){return 0|(C((e|=0)+(r|=0)+((t=(A|=0)+(t|=0)>>>0)>>>0>>0|0)>>>0|0),t)}function Ze(A,e,t,r){return 0|(C(0|(r=(e|=0)-(r|=0)-((t|=0)>>>0>(A|=0)>>>0|0)>>>0)),A-t>>>0)}function Je(A){return 0|((A|=0)?31-(0|k(A^A-1)):32)}function Ke(A,e,t,r,o){o|=0;var i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0;if(u=A|=0,a=t|=0,s=f=r|=0,!(c=l=e|=0))return i=!!(0|o),s?i?(n[o>>2]=0|A,n[o+4>>2]=0&e,o=0,0|(C(0|(f=0)),o)):(o=0,0|(C(0|(f=0)),o)):(i&&(n[o>>2]=(u>>>0)%(a>>>0),n[o+4>>2]=0),o=(u>>>0)/(a>>>0)>>>0,0|(C(0|(f=0)),o));i=!(0|s);do{if(a){if(!i){if((i=(0|k(0|s))-(0|k(0|c))|0)>>>0<=31){a=d=i+1|0,A=u>>>(d>>>0)&(e=i-31>>31)|c<<(s=31-i|0),e&=c>>>(d>>>0),i=0,s=u<>2]=0|A,n[o+4>>2]=l|0&e,o=0,0|(C(0|(f=0)),o)):(o=0,0|(C(0|(f=0)),o))}if((i=a-1|0)&a){a=s=33+(0|k(0|a))-(0|k(0|c))|0,A=(d=32-s|0)-1>>31&c>>>((g=s-32|0)>>>0)|(c<>>(s>>>0))&(e=g>>31),e&=c>>>(s>>>0),i=u<<(h=64-s|0)&(l=d>>31),s=(c<>>(g>>>0))&l|u<>31;break}return 0|o&&(n[o>>2]=i&u,n[o+4>>2]=0),1==(0|a)?(h=0|A,0|(C(0|(g=l|0&e)),h)):(g=c>>>((h=0|Je(0|a))>>>0)|0,h=c<<32-h|u>>>(h>>>0),0|(C(0|g),h))}if(i)return 0|o&&(n[o>>2]=(c>>>0)%(a>>>0),n[o+4>>2]=0),h=(c>>>0)/(a>>>0)>>>0,0|(C(0|(g=0)),h);if(!u)return 0|o&&(n[o>>2]=0,n[o+4>>2]=(c>>>0)%(s>>>0)),h=(c>>>0)/(s>>>0)>>>0,0|(C(0|(g=0)),h);if(!((i=s-1|0)&s))return 0|o&&(n[o>>2]=0|A,n[o+4>>2]=i&c|0&e),g=0,h=c>>>((0|Je(0|s))>>>0),0|(C(0|g),h);if((i=(0|k(0|s))-(0|k(0|c))|0)>>>0<=30){a=e=i+1|0,A=c<<(s=31-i|0)|u>>>(e>>>0),e=c>>>(e>>>0),i=0,s=u<>2]=0|A,n[o+4>>2]=l|0&e,h=0,0|(C(0|(g=0)),h)):(h=0,0|(C(0|(g=0)),h))}while(0);if(a){c=0|We(0|(d=0|t),0|(u=f|0&r),-1,-1),t=0|B(),l=s,s=0;do{r=l,l=i>>>31|l<<1,i=s|i<<1,Ze(0|c,0|t,0|(r=A<<1|r>>>31),0|(f=A>>>31|e<<1)),s=1&(g=(h=0|B())>>31|((0|h)<0?-1:0)<<1),A=0|Ze(0|r,0|f,g&d|0,(((0|h)<0?-1:0)>>31|((0|h)<0?-1:0)<<1)&u),e=0|B(),a=a-1|0}while(0|a);c=l,l=0}else c=s,l=0,s=0;return a=0,0|o&&(n[o>>2]=A,n[o+4>>2]=e),h=i<<1&-2|s,0|(C(0|(g=(0|i)>>>31|(c|a)<<1|l)),h)}function Xe(A,e,t,r){var n,o,i,a,s;return t|=0,o=(r|=0)>>31|((0|r)<0?-1:0)<<1,n=((0|r)<0?-1:0)>>31|((0|r)<0?-1:0)<<1,i=0|Ze((s=(e|=0)>>31|((0|e)<0?-1:0)<<1)^(A|=0),(a=((0|e)<0?-1:0)>>31|((0|e)<0?-1:0)<<1)^e,0|s,0|a),A=o^s,e=n^a,0|Ze((0|Ke(i,0|B(),0|Ze(o^t|0,n^r|0,0|o,0|n),0|B(),0))^A,(0|B())^e,0|A,0|e)}function qe(A,e,t,r){var n,o;return e|=0,r|=0,t=0|function(A,e){var t,r,n,o=0;return A=((t=0|v(o=65535&(e|=0),n=65535&(A|=0)))>>>16)+(0|v(o,r=A>>>16))|0,e=0|v(o=e>>>16,n),0|(C((A>>>16)+(0|v(o,r))+(((65535&A)+e|0)>>>16)|0),A+e<<16|65535&t)}(n=A|=0,o=t|=0),A=0|B(),0|(C((0|v(e,o))+(0|v(r,n))+A|0&A),t)}function $e(A,e,t,r){var o,i,a,s,l,c;return t|=0,o=P,P=P+16|0,s=0|o,c=(r|=0)>>31|((0|r)<0?-1:0)<<1,l=((0|r)<0?-1:0)>>31|((0|r)<0?-1:0)<<1,Ke(A=0|Ze((a=(e|=0)>>31|((0|e)<0?-1:0)<<1)^(A|=0),(i=((0|e)<0?-1:0)>>31|((0|e)<0?-1:0)<<1)^e,0|a,0|i),e=0|B(),0|Ze(c^t|0,l^r|0,0|c,0|l),0|B(),s),r=0|Ze(n[s>>2]^a|0,n[s+4>>2]^i|0,0|a,0|i),t=0|B(),P=o,0|(C(0|t),r)}function At(A,e,t,r){var o,i;return i=P,P=P+16|0,Ke(A|=0,e|=0,t|=0,r|=0,o=0|i),P=i,0|(C(0|n[o+4>>2]),n[o>>2])}function et(A,e,t){return A|=0,e|=0,(0|(t|=0))<32?(C(e>>t|0),A>>>t|(e&(1<>t-32)}function tt(A,e,t){return A|=0,e|=0,(0|(t|=0))<32?(C(e>>>t|0),A>>>t|(e&(1<>>t-32|0)}function rt(A,e,t){return A|=0,(0|(t|=0))<32?(C((e|=0)<>>32-t),A<=0?+s(A+.5):+x(A-.5)}function st(A,e,t){A|=0,e|=0;var o,i,a=0;if((0|(t|=0))>=8192)return Q(0|A,0|e,0|t),0|A;if(i=0|A,o=A+t|0,(3&A)==(3&e)){for(;3&A;){if(!t)return 0|i;r[0|A]=0|r[0|e],A=A+1|0,e=e+1|0,t=t-1|0}for(a=(t=-4&o)-64|0;(0|A)<=(0|a);)n[A>>2]=n[e>>2],n[A+4>>2]=n[e+4>>2],n[A+8>>2]=n[e+8>>2],n[A+12>>2]=n[e+12>>2],n[A+16>>2]=n[e+16>>2],n[A+20>>2]=n[e+20>>2],n[A+24>>2]=n[e+24>>2],n[A+28>>2]=n[e+28>>2],n[A+32>>2]=n[e+32>>2],n[A+36>>2]=n[e+36>>2],n[A+40>>2]=n[e+40>>2],n[A+44>>2]=n[e+44>>2],n[A+48>>2]=n[e+48>>2],n[A+52>>2]=n[e+52>>2],n[A+56>>2]=n[e+56>>2],n[A+60>>2]=n[e+60>>2],A=A+64|0,e=e+64|0;for(;(0|A)<(0|t);)n[A>>2]=n[e>>2],A=A+4|0,e=e+4|0}else for(t=o-4|0;(0|A)<(0|t);)r[0|A]=0|r[0|e],r[A+1|0]=0|r[e+1|0],r[A+2|0]=0|r[e+2|0],r[A+3|0]=0|r[e+3|0],A=A+4|0,e=e+4|0;for(;(0|A)<(0|o);)r[0|A]=0|r[0|e],A=A+1|0,e=e+1|0;return 0|i}function lt(A,e,t){e|=0;var o,i=0,a=0,s=0;if(o=(A|=0)+(t|=0)|0,e&=255,(0|t)>=67){for(;3&A;)r[0|A]=e,A=A+1|0;for(s=e|e<<8|e<<16|e<<24,a=(i=-4&o)-64|0;(0|A)<=(0|a);)n[A>>2]=s,n[A+4>>2]=s,n[A+8>>2]=s,n[A+12>>2]=s,n[A+16>>2]=s,n[A+20>>2]=s,n[A+24>>2]=s,n[A+28>>2]=s,n[A+32>>2]=s,n[A+36>>2]=s,n[A+40>>2]=s,n[A+44>>2]=s,n[A+48>>2]=s,n[A+52>>2]=s,n[A+56>>2]=s,n[A+60>>2]=s,A=A+64|0;for(;(0|A)<(0|i);)n[A>>2]=s,A=A+4|0}for(;(0|A)<(0|o);)r[0|A]=e,A=A+1|0;return o-t|0}function ct(A){return(A=+A)>=0?+s(A+.5):+x(A-.5)}function ut(A){var e,t,r;return A|=0,r=0|M(),(0|A)>0&(0|(e=(t=0|n[a>>2])+A|0))<(0|t)|(0|e)<0?(j(0|e),E(12),-1):(0|e)>(0|r)&&!(0|N(0|e))?(E(12),-1):(n[a>>2]=e,0|t)}return{___divdi3:Xe,___muldi3:qe,___remdi3:$e,___uremdi3:At,_areNeighborCells:function(A,e,t,r,o){o|=0;var i,a,s,l=0,c=0,u=0,d=0;if(s=P,P=P+64|0,a=s,i=s+56|0,!(!0&134217728==(2013265920&(e|=0))&!0&134217728==(2013265920&(r|=0))))return P=s,5;if((0|(A|=0))==(0|(t|=0))&(0|e)==(0|r))return n[o>>2]=0,P=s,0;if(c=0|tt(0|A,0|e,52),B(),c&=15,d=0|tt(0|t,0|r,52),B(),(0|c)!=(15&d))return P=s,12;if(l=c+-1|0,c>>>0>1){LA(A,e,l,a),LA(t,r,l,i),u=0|n[(d=a)>>2],d=0|n[d+4>>2];A:do{if((0|u)==(0|n[i>>2])&&(0|d)==(0|n[i+4>>2])){l=0|tt(0|A,0|e,0|(c=3*(15^c)|0)),B(),l&=7,c=0|tt(0|t,0|r,0|c),B(),c&=7;do{if(!(0|l)|!(0|c))n[o>>2]=1,l=0;else if(7==(0|l))l=5;else{if(1==(0|l)|1==(0|c)&&0|HA(u,d)){l=5;break}if((0|n[15536+(l<<2)>>2])!=(0|c)&&(0|n[15568+(l<<2)>>2])!=(0|c))break A;n[o>>2]=1,l=0}}while(0);return P=s,0|l}}while(0)}c=(l=a)+56|0;do{n[l>>2]=0,l=l+4|0}while((0|l)<(0|c));return F(A,e,1,a),l=(0|n[(e=a)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+8|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+16|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+24|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+32|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+40|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)?1:1&((0|n[(l=a+48|0)>>2])==(0|t)?(0|n[l+4>>2])==(0|r):0),n[o>>2]=l,P=s,0},_bitshift64Ashr:et,_bitshift64Lshr:tt,_bitshift64Shl:rt,_calloc:Ve,_cellAreaKm2:function(A,e,t){return 0|(A=0|ue(A|=0,e|=0,t|=0))||(o[t>>3]=6371.007180918475*+o[t>>3]*6371.007180918475),0|A},_cellAreaM2:function(A,e,t){return 0|(A=0|ue(A|=0,e|=0,t|=0))||(o[t>>3]=6371.007180918475*+o[t>>3]*6371.007180918475*1e3*1e3),0|A},_cellAreaRads2:ue,_cellToBoundary:$A,_cellToCenterChild:GA,_cellToChildPos:function(A,e,t,r){t|=0,r|=0;var o,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0;if(o=P,P=P+16|0,p=o,x=0|tt(0|(A|=0),0|(e|=0),52),B(),t>>>0>15)return P=o,4;if((0|(x&=15))<(0|t))return P=o,12;if((0|x)!=(0|t))if(a=0|rt(0|t,0,52),a|=A,l=B()|-15728641&e,(0|x)>(0|t)){c=t;do{b=0|rt(7,0,3*(14-c|0)|0),c=c+1|0,a|=b,l=0|B()|l}while((0|c)<(0|x));b=a}else b=a;else b=A,l=e;m=0|tt(0|b,0|l,45),B();A:do{if(0|z(127&m)){if(c=0|tt(0|b,0|l,52),B(),0|(c&=15))for(a=1;;){if(!(!((m=0|rt(7,0,3*(15-a|0)|0))&b)&!((0|B())&l))){u=33;break A}if(!(a>>>0>>0))break;a=a+1|0}if(n[(m=r)>>2]=0,n[m+4>>2]=0,(0|x)>(0|t)){for(m=-15728641&e,h=x;;){if(g=h,(h=h+-1|0)>>>0>15|(0|x)<(0|h)){u=19;break}if((0|x)!=(0|h))if(a=0|rt(0|h,0,52),a|=A,c=0|B()|m,(0|x)<(0|g))f=a;else{u=h;do{f=0|rt(7,0,3*(14-u|0)|0),u=u+1|0,a|=f,c=0|B()|c}while((0|u)<(0|x));f=a}else f=A,c=e;if(d=0|tt(0|f,0|c,45),B(),0|z(127&d)){d=0|tt(0|f,0|c,52),B(),d&=15;e:do{if(d)for(u=1;;){if(a=0|tt(0|f,0|c,3*(15-u|0)|0),B(),0|(a&=7))break e;if(!(u>>>0>>0)){a=0;break}u=u+1|0}else a=0}while(0);a=1&!(0|a)}else a=0;if(c=0|tt(0|A,0|e,3*(15-g|0)|0),B(),7==(0|(c&=7))){i=5,u=42;break}if(1==(0|c)&(a=!!(0|a))){i=5,u=42;break}if(0|(f=c+((!!(0|c)&a)<<31>>31)|0)&&(u=0|pe(7,0,u=x-g|0,((0|u)<0)<<31>>31),d=0|B(),a?(a=0|We(0|(a=0|qe(0|u,0|d,5,0)),0|B(),-5,-1),a=0|We(0|(a=0|Xe(0|a,0|B(),6,0)),0|B(),1,0),c=0|B()):(a=u,c=d),g=0|We(0|a,0|c,0|(g=0|qe(0|u,0|d,0|(g=f+-1|0),((0|g)<0)<<31>>31)),0|B()),d=0|We(0|g,0|(f=0|B()),0|n[(d=r)>>2],0|n[d+4>>2]),f=0|B(),n[(g=r)>>2]=d,n[g+4>>2]=f),(0|h)<=(0|t)){u=37;break}}if(19==(0|u))D(27795,27122,1367,27158);else{if(37==(0|u)){i=0|n[(s=r)+4>>2],s=0|n[s>>2];break}if(42==(0|u))return P=o,0|i}}else i=0,s=0}else u=33}while(0);A:do{if(33==(0|u)){if(n[(m=r)>>2]=0,n[m+4>>2]=0,(0|x)>(0|t)){for(a=x;;){if(i=0|tt(0|A,0|e,3*(15-a|0)|0),B(),7==(0|(i&=7))){i=5;break}if(i=0|qe(0|(s=0|pe(7,0,s=x-a|0,((0|s)<0)<<31>>31)),0|B(),0|i,0),s=0|B(),s=0|We(0|n[(m=r)>>2],0|n[m+4>>2],0|i,0|s),i=0|B(),n[(m=r)>>2]=s,n[m+4>>2]=i,(0|(a=a+-1|0))<=(0|t))break A}return P=o,0|i}i=0,s=0}}while(0);return 0|_A(b,l,x,p)&&D(27795,27122,1327,27173),((0|i)>-1|-1==(0|i)&s>>>0>4294967295)&((0|(p=0|n[(x=p)+4>>2]))>(0|i)|((0|p)==(0|i)?(0|n[x>>2])>>>0>s>>>0:0))?(P=o,0|(x=0)):(D(27795,27122,1407,27158),0)},_cellToChildren:function(A,e,t,r){r|=0;var o,i,a=0,s=0;if(i=P,P=P+16|0,ee(o=i,A|=0,e|=0,t|=0),!(0|(A=0|n[(e=o)>>2]))&!(0|(e=0|n[e+4>>2])))return P=i,0;a=0,t=0;do{n[(s=r+(a<<3)|0)>>2]=A,n[s+4>>2]=e,a=0|We(0|a,0|t,1,0),t=0|B(),re(o),A=0|n[(s=o)>>2],e=0|n[s+4>>2]}while(!(!(0|A)&!(0|e)));return P=i,0},_cellToChildrenSize:_A,_cellToLatLng:qA,_cellToLocalIj:function(A,e,t,r,o,i){var a,s;return A|=0,i|=0,s=P,P=P+16|0,a=s,(o|=0)?A=15:(A=0|me(A,e|=0,t|=0,r|=0,a))||(function(A,e){var t;e|=0,t=0|n[8+(A|=0)>>2],n[e>>2]=(0|n[A>>2])-t,n[e+4>>2]=(0|n[A+4>>2])-t}(a,i),A=0),P=s,0|A},_cellToParent:LA,_cellToVertex:Se,_cellToVertexes:function(A,e,t){t|=0;var r,o=0,i=0;return i=!(0|HA(A|=0,e|=0)),r=!(0|(o=0|Se(A,e,0,t))),i?r?0|(o=0|Se(A,e,1,t+8|0))||0|(o=0|Se(A,e,2,t+16|0))||0|(o=0|Se(A,e,3,t+24|0))||(o=0|Se(A,e,4,t+32|0))?0|(i=o):0|Se(A,e,5,t+40|0):0|(i=o):r?0|(o=0|Se(A,e,1,t+8|0))||0|(o=0|Se(A,e,2,t+16|0))||0|(o=0|Se(A,e,3,t+24|0))||0|(o=0|Se(A,e,4,t+32|0))?0|(i=o):(n[(i=t+40|0)>>2]=0,n[i+4>>2]=0,0|(i=0)):0|(i=o)},_cellsToDirectedEdge:function(A,e,t,r,o){return o|=0,7==(0|(t=0|_(A|=0,e|=0,t|=0,r|=0)))?0|(o=11):(r=0|rt(0|t,0,56),e=-2130706433&e|B()|268435456,n[o>>2]=A|r,n[o+4>>2]=e,0|(o=0))},_cellsToLinkedMultiPolygon:function(A,e,t){t|=0;var r,i,a,s=0;if(a=P,P=P+32|0,r=a,0|(A=0|function(A,e,t){A|=0,t|=0;var r,o,i=0,a=0,s=0,l=0,c=0,u=0;if(o=P,P=P+176|0,r=o,(0|(e|=0))<1)return Ie(t,0,0),P=o,0;for(c=0|tt(0|n[(c=A)>>2],0|n[c+4>>2],52),B(),Ie(t,(0|e)>6?e:6,15&c),c=0;!(0|(i=0|$A(0|n[(i=A+(c<<3)|0)>>2],0|n[i+4>>2],r)));){if((0|(i=0|n[r>>2]))>0){l=0;do{s=r+8+(l<<4)|0,(a=0|ze(t,i=r+8+((0|(l=l+1|0))%(0|i)<<4)|0,s))?_e(t,a):He(t,s,i),i=0|n[r>>2]}while((0|l)<(0|i))}if((0|(c=c+1|0))>=(0|e)){i=0,u=13;break}}return 13==(0|u)?(P=o,0|i):(Re(t),P=o,0|(u=i))}(A|=0,e|=0,i=a+16|0)))return P=a,0|A;if(n[t>>2]=0,n[t+4>>2]=0,n[t+8>>2]=0,0|(A=0|Le(i)))do{e=0|de(t);do{fe(e,A),s=A+16|0,n[r>>2]=n[s>>2],n[r+4>>2]=n[s+4>>2],n[r+8>>2]=n[s+8>>2],n[r+12>>2]=n[s+12>>2],_e(i,A),A=0|Ge(i,r)}while(0|A);A=0|Le(i)}while(0|A);return Re(i),(A=0|function(A){var e,t,r=0,i=0,a=0,s=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,B=0,E=0,M=0,Q=0,N=0,j=0,P=0,F=0,S=0,T=0,I=0;if(0|n[(s=(A|=0)+8|0)>>2])return 1;if(!(a=0|n[A>>2]))return 0;r=a,i=0;do{i=i+1|0,r=0|n[r+8>>2]}while(0|r);if(i>>>0<2)return 0;(t=0|Oe(i<<2))||D(27396,27235,317,27415),(e=0|Oe(i<<5))||D(27437,27235,321,27415),n[A>>2]=0,n[(M=A+4|0)>>2]=0,n[s>>2]=0,i=0,S=0,E=0,m=0;A:for(;;){if(h=0|n[a>>2]){c=0,u=h;do{if(f=+o[u+8>>3],r=u,u=0|n[u+16>>2],d=+o[(s=(g=!(0|u))?h:u)+8>>3],+l(+(f-d))>3.141592653589793){I=14;break}c+=(d-f)*(+o[r>>3]+ +o[s>>3])}while(!g);if(14==(0|I)){I=0,c=0,r=h;do{B=+o[r+8>>3],P=0|n[(F=r+16|0)>>2],C=+o[(P=0|P?P:h)+8>>3],c+=(+o[r>>3]+ +o[P>>3])*((C<0?C+6.283185307179586:C)-(B<0?B+6.283185307179586:B)),r=0|n[(0|r?F:a)>>2]}while(0|r)}c>0?(n[t+(S<<2)>>2]=a,S=S+1|0,s=E,r=m):I=19}else I=19;if(19==(0|I)){I=0;do{if(!i){if(m){s=M,u=m+8|0,r=a,i=A;break}if(0|n[A>>2]){I=27;break A}s=M,u=A,r=a,i=A;break}if(0|n[(r=i+8|0)>>2]){I=21;break A}if(!(i=0|Ve(1,12))){I=23;break A}n[r>>2]=i,s=i+4|0,u=i,r=m}while(0);if(n[u>>2]=a,n[s>>2]=a,u=e+(E<<5)|0,g=0|n[a>>2]){for(o[(h=e+(E<<5)+8|0)>>3]=17976931348623157e292,o[(m=e+(E<<5)+24|0)>>3]=17976931348623157e292,o[u>>3]=-17976931348623157e292,o[(b=e+(E<<5)+16|0)>>3]=-17976931348623157e292,y=17976931348623157e292,k=-17976931348623157e292,s=0,p=g,f=17976931348623157e292,v=17976931348623157e292,w=-17976931348623157e292,d=-17976931348623157e292;c=+o[p>>3],B=+o[p+8>>3],p=0|n[p+16>>2],C=+o[((x=!(0|p))?g:p)+8>>3],c>3]=c,f=c),B>3]=B,v=B),c>w?o[u>>3]=c:c=w,B>d&&(o[b>>3]=B,d=B),y=B>0&Bk?B:k,s|=+l(+(B-C))>3.141592653589793,!x;)w=c;s&&(o[b>>3]=k,o[m>>3]=y)}else n[u>>2]=0,n[u+4>>2]=0,n[u+8>>2]=0,n[u+12>>2]=0,n[u+16>>2]=0,n[u+20>>2]=0,n[u+24>>2]=0,n[u+28>>2]=0;s=E+1|0}if(a=0|n[(F=a+8|0)>>2],n[F>>2]=0,!a){I=45;break}E=s,m=r}if(21==(0|I))D(27213,27235,35,27247);else if(23==(0|I))D(27267,27235,37,27247);else if(27==(0|I))D(27310,27235,61,27333);else if(45==(0|I)){A:do{if((0|S)>0){for(F=!(0|s),j=s<<2,P=!(0|A),N=0,r=0;;){if(Q=0|n[t+(N<<2)>>2],F)I=73;else{if(!(E=0|Oe(j))){I=50;break}if(!(M=0|Oe(j))){I=52;break}e:do{if(P)i=0;else{for(s=0,i=0,u=A;a=e+(s<<5)|0,0|he(0|n[u>>2],a,0|n[Q>>2])?(n[E+(i<<2)>>2]=u,n[M+(i<<2)>>2]=a,x=i+1|0):x=i,u=0|n[u+8>>2];)s=s+1|0,i=x;if((0|x)>0)if(a=0|n[E>>2],1==(0|x))i=a;else for(b=0,p=-1,i=a,m=a;;){for(g=0|n[m>>2],a=0,u=0;h=(0|(s=0|n[n[E+(u<<2)>>2]>>2]))==(0|g)?a:a+(1&he(s,0|n[M+(u<<2)>>2],0|n[g>>2]))|0,(0|(u=u+1|0))!=(0|x);)a=h;if(i=(s=(0|h)>(0|p))?m:i,(0|(a=b+1|0))==(0|x))break e;b=a,p=s?h:p,m=0|n[E+(a<<2)>>2]}else i=0}}while(0);if(Ye(E),Ye(M),i){if(a=0|n[(s=i+4|0)>>2])i=a+8|0;else if(0|n[i>>2]){I=70;break}n[i>>2]=Q,n[s>>2]=Q}else I=73}if(73==(0|I)){if(I=0,0|(r=0|n[Q>>2]))do{M=r,r=0|n[r+16>>2],Ye(M)}while(0|r);Ye(Q),r=1}if((0|(N=N+1|0))>=(0|S)){T=r;break A}}50==(0|I)?D(27452,27235,249,27471):52==(0|I)?D(27490,27235,252,27471):70==(0|I)&&D(27310,27235,61,27333)}else T=0}while(0);return Ye(t),Ye(e),0|T}return 0}(t))?(ge(t),P=a,0|(s=A)):(P=a,0|(s=0))},_childPosToCell:function(A,e,t,r,o,i){A|=0,e|=0,i|=0;var a,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0;if(a=P,P=P+16|0,s=a,(o|=0)>>>0>15)return P=a,4;if(l=0|tt(0|(t|=0),0|(r|=0),52),B(),(0|(l&=15))>(0|o))return P=a,12;if(0|_A(t,r,o,s)&&D(27795,27122,1327,27173),!(((0|e)>-1|-1==(0|e)&A>>>0>4294967295)&((0|(u=0|n[(d=s)+4>>2]))>(0|e)|((0|u)==(0|e)?(0|n[d>>2])>>>0>A>>>0:0))))return P=a,2;d=o-l|0,o=0|rt(0|o,0,52),c=B()|-15728641&r,n[(u=i)>>2]=o|t,n[u+4>>2]=c,u=0|tt(0|t,0|r,45),B();A:do{if(0|z(127&u)){if(0|l)for(s=1;;){if(!(!((u=0|rt(7,0,3*(15-s|0)|0))&t)&!((0|B())&r)))break A;if(!(s>>>0>>0))break;s=s+1|0}if((0|d)<1)return P=a,0;for(u=15^l,r=-1,c=1,s=1;;){l=0|pe(7,0,l=d-c|0,((0|l)<0)<<31>>31),t=0|B();do{if(s){if(s=0|Xe(0|(s=0|We(0|(s=0|qe(0|l,0|t,5,0)),0|B(),-5,-1)),0|B(),6,0),(0|e)>(0|(o=0|B()))|(0|e)==(0|o)&A>>>0>s>>>0){e=0|Ze(0|(e=0|We(0|A,0|e,-1,-1)),0|B(),0|s,0|o),s=0|B(),h=0|n[(f=i)>>2],f=0|n[f+4>>2],g=0|rt(7,0,0|(m=3*(u+r|0)|0)),f&=~B(),m=0|rt(0|(o=0|We(0|(r=0|Xe(0|e,0|s,0|l,0|t)),0|(A=0|B()),2,0)),0|B(),0|m),f=0|B()|f,n[(o=i)>>2]=m|h&~g,n[o+4>>2]=f,A=0|Ze(0|e,0|s,0|(A=0|qe(0|r,0|A,0|l,0|t)),0|B()),s=0,e=0|B();break}g=0|n[(m=i)>>2],m=0|n[m+4>>2],h=0|rt(7,0,3*(u+r|0)|0),m&=~B(),n[(s=i)>>2]=g&~h,n[s+4>>2]=m,s=1;break}o=0|n[(g=i)>>2],g=0|n[g+4>>2],f=0|rt(7,0,0|(r=3*(u+r|0)|0)),g&=~B(),r=0|rt(0|(m=0|Xe(0|A,0|e,0|l,0|t)),0|(s=0|B()),0|r),g=0|B()|g,n[(h=i)>>2]=r|o&~f,n[h+4>>2]=g,A=0|Ze(0|A,0|e,0|(s=0|qe(0|m,0|s,0|l,0|t)),0|B()),s=0,e=0|B()}while(0);if(!((0|d)>(0|c))){e=0;break}r=~c,c=c+1|0}return P=a,0|e}}while(0);if((0|d)<1)return P=a,0;for(o=15^l,s=1;;){if(h=0|pe(7,0,h=d-s|0,((0|h)<0)<<31>>31),m=0|B(),t=0|n[(c=i)>>2],c=0|n[c+4>>2],r=0|rt(7,0,0|(l=3*(o-s|0)|0)),c&=~B(),l=0|rt(0|(f=0|Xe(0|A,0|e,0|h,0|m)),0|(g=0|B()),0|l),c=0|B()|c,n[(u=i)>>2]=l|t&~r,n[u+4>>2]=c,A=0|Ze(0|A,0|e,0|(m=0|qe(0|f,0|g,0|h,0|m)),0|B()),e=0|B(),(0|d)<=(0|s)){e=0;break}s=s+1|0}return P=a,0|e},_compactCells:function(A,e,t,r){e|=0;var o,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,E=0,M=0,Q=0,N=0,j=0,P=0;if(!(0|(t|=0))&!(0|(r|=0)))return 0;if(a=0|n[(i=A|=0)>>2],!0&!(15728640&(i=0|n[i+4>>2]))){if(!((0|r)>0|!(0|r)&t>>>0>0))return 0;if(n[(P=e)>>2]=a,n[P+4>>2]=i,1==(0|t)&!(0|r))return 0;i=1,a=0;do{j=0|n[4+(N=A+(i<<3)|0)>>2],n[(P=e+(i<<3)|0)>>2]=n[N>>2],n[P+4>>2]=j,i=0|We(0|i,0|a,1,0),a=0|B()}while((0|a)<(0|r)|(0|a)==(0|r)&i>>>0>>0);return 0}if(!(j=0|Oe(o=t<<3)))return 13;if(st(0|j,0|A,0|o),!(N=0|Ve(t,8)))return Ye(j),13;A:for(;;){M=0|tt(0|(u=0|n[(i=j)>>2]),0|(i=0|n[i+4>>2]),52),B(),Q=(M&=15)-1|0,E=!!(0|M),C=(0|r)>0|!(0|r)&t>>>0>0;e:do{if(E&C){if(v=0|rt(0|Q,0,52),w=0|B(),Q>>>0>15){if(!(!(0|u)&!(0|i))){P=16;break A}for(a=0,A=0;;){if(a=0|We(0|a,0|A,1,0),!((0|(A=0|B()))<(0|r)|(0|A)==(0|r)&a>>>0>>0))break e;if(!(!(0|(k=0|n[(s=j+(a<<3)|0)>>2]))&!(0|(s=0|n[s+4>>2])))){i=s,P=16;break A}}}for(l=u,A=i,a=0,s=0;;){if(!(!(0|l)&!(0|A))){if(!(!0&!(117440512&A))){P=21;break A}if(d=0|tt(0|l,0|A,52),B(),(0|(d&=15))<(0|Q)){i=12,P=27;break A}if((0|d)!=(0|Q)&&(l|=v,A=-15728641&A|w,d>>>0>=M>>>0)){c=Q;do{k=0|rt(7,0,3*(14-c|0)|0),c=c+1|0,l|=k,A=0|B()|A}while(c>>>0>>0)}if(g=0|At(0|l,0|A,0|t,0|r),h=0|B(),!(!(0|(f=0|n[(d=c=N+(g<<3)|0)>>2]))&!(0|(d=0|n[d+4>>2])))){p=0,x=0;do{if((0|p)>(0|r)|(0|p)==(0|r)&x>>>0>t>>>0){P=31;break A}if((0|f)==(0|l)&(-117440513&d)==(0|A)){m=0|tt(0|f,0|d,56),B(),b=1+(m&=7)|0,k=0|tt(0|f,0|d,45),B();t:do{if(0|z(127&k)){if(f=0|tt(0|f,0|d,52),B(),!(f&=15)){d=6;break}for(d=1;;){if(!(!((k=0|rt(7,0,3*(15-d|0)|0))&l)&!((0|B())&A))){d=7;break t}if(!(d>>>0>>0)){d=6;break}d=d+1|0}}else d=7}while(0);if((m+2|0)>>>0>d>>>0){P=41;break A}k=0|rt(0|b,0,56),A=B()|-117440513&A,n[(y=c)>>2]=0,n[y+4>>2]=0,l|=k}else g=0|$e(0|(g=0|We(0|g,0|h,1,0)),0|B(),0|t,0|r),h=0|B();x=0|We(0|x,0|p,1,0),p=0|B(),f=0|n[(d=c=N+(g<<3)|0)>>2],d=0|n[d+4>>2]}while(!(!(0|f)&!(0|d)))}n[(k=c)>>2]=l,n[k+4>>2]=A}if(a=0|We(0|a,0|s,1,0),!((0|(s=0|B()))<(0|r)|(0|s)==(0|r)&a>>>0>>0))break e;l=0|n[(A=j+(a<<3)|0)>>2],A=0|n[A+4>>2]}}}while(0);if(k=0|We(0|t,0|r,5,0),(y=0|B())>>>0<0|!(0|y)&k>>>0<11){P=85;break}if(k=0|Xe(0|t,0|r,6,0),B(),!(k=0|Ve(k,8))){P=48;break}do{if(C){for(b=0,A=0,m=0,p=0;;){if(!(0|(a=0|n[(s=d=N+(b<<3)|0)>>2]))&!(0|(s=0|n[s+4>>2])))y=m;else{f=0|tt(0|a,0|s,56),B(),l=1+(f&=7)|0,g=-117440513&s,y=0|tt(0|a,0|s,45),B();e:do{if(0|z(127&y)){if(h=0|tt(0|a,0|s,52),B(),0|(h&=15))for(c=1;;){if(!(!(a&(y=0|rt(7,0,3*(15-c|0)|0)))&!(g&(0|B()))))break e;if(!(c>>>0>>0))break;c=c+1|0}a|=s=0|rt(0|l,0,56),s=0|B()|g,n[(l=d)>>2]=a,n[l+4>>2]=s,l=f+2|0}}while(0);7==(0|l)?(n[(y=k+(A<<3)|0)>>2]=a,n[y+4>>2]=-117440513&s,A=0|We(0|A,0|m,1,0),y=0|B()):y=m}if(b=0|We(0|b,0|p,1,0),!((0|(p=0|B()))<(0|r)|(0|p)==(0|r)&b>>>0>>0))break;m=y}if(C){if(x=Q>>>0>15,v=0|rt(0|Q,0,52),w=0|B(),!E){for(a=0,c=0,l=0,s=0;!(0|u)&!(0|i)||(n[(Q=e+(a<<3)|0)>>2]=u,n[Q+4>>2]=i,a=0|We(0|a,0|c,1,0),c=0|B()),l=0|We(0|l,0|s,1,0),(0|(s=0|B()))<(0|r)|(0|s)==(0|r)&l>>>0>>0;)u=0|n[(i=j+(l<<3)|0)>>2],i=0|n[i+4>>2];i=y;break}for(a=0,c=0,s=0,l=0;;){do{if(!(!(0|u)&!(0|i))){if(h=0|tt(0|u,0|i,52),B(),x|(0|(h&=15))<(0|Q)){P=80;break A}if((0|h)!=(0|Q)){if(d=u|v,f=-15728641&i|w,h>>>0>=M>>>0){g=Q;do{E=0|rt(7,0,3*(14-g|0)|0),g=g+1|0,d|=E,f=0|B()|f}while(g>>>0>>0)}}else d=u,f=i;m=0|At(0|d,0|f,0|t,0|r),g=0,h=0,p=0|B();do{if((0|g)>(0|r)|(0|g)==(0|r)&h>>>0>t>>>0){P=81;break A}if((-117440513&(b=0|n[4+(E=N+(m<<3)|0)>>2]))==(0|f)&&(0|n[E>>2])==(0|d)){P=65;break}m=0|$e(0|(E=0|We(0|m,0|p,1,0)),0|B(),0|t,0|r),p=0|B(),h=0|We(0|h,0|g,1,0),g=0|B(),E=N+(m<<3)|0}while((0|n[E>>2])!=(0|d)||(0|n[E+4>>2])!=(0|f));if(65==(0|P)&&(P=0,!0&100663296==(117440512&b)))break;n[(E=e+(a<<3)|0)>>2]=u,n[E+4>>2]=i,a=0|We(0|a,0|c,1,0),c=0|B()}}while(0);if(s=0|We(0|s,0|l,1,0),!((0|(l=0|B()))<(0|r)|(0|l)==(0|r)&s>>>0>>0))break;u=0|n[(i=j+(s<<3)|0)>>2],i=0|n[i+4>>2]}i=y}else a=0,i=y}else a=0,A=0,i=0}while(0);if(lt(0|N,0,0|o),st(0|j,0|k,A<<3),Ye(k),!(0|A)&!(0|i)){P=89;break}e=e+(a<<3)|0,r=i,t=A}if(16==(0|P))!0&!(117440512&i)?(i=4,P=27):P=21;else if(31==(0|P))D(27795,27122,620,27132);else{if(41==(0|P))return Ye(j),Ye(N),10;if(48==(0|P))return Ye(j),Ye(N),13;80==(0|P)?D(27795,27122,711,27132):81==(0|P)?D(27795,27122,723,27132):85==(0|P)&&(st(0|e,0|j,t<<3),P=89)}return 21==(0|P)?(Ye(j),Ye(N),0|(P=5)):27==(0|P)?(Ye(j),Ye(N),0|(P=i)):89==(0|P)?(Ye(j),Ye(N),0|(P=0)):0},_constructCell:function(A,e,t,o){t|=0,o|=0;var i=0,a=0,s=0,l=0,c=0,u=0;if((A|=0)>>>0>15)return 4;if((e|=0)>>>0>121)return 17;s=0|rt(0|A,0,52),i=0|B(),l=0|rt(0|e,0,45),i=0|i|B()|134225919;A:do{if((0|A)>=1){for(l=1,s=!!(0|r[20528+e|0]),a=-1;;){if((e=0|n[t+(l+-1<<2)>>2])>>>0>6){i=18,e=10;break}if(!(!(0|e)|1^s)){if(1==(0|e)){i=19,e=10;break}s=0}if(c=0|rt(7,0,0|(u=3*(15-l|0)|0)),i&=~B(),a=(e=0|rt(0|e,((0|e)<0)<<31>>31,0|u))|a&~c,i=0|B()|i,!((0|l)<(0|A)))break A;l=l+1|0}if(10==(0|e))return 0|i}else a=-1}while(0);return n[(u=o)>>2]=a,n[u+4>>2]=i,0},_destroyLinkedMultiPolygon:ge,_directedEdgeToBoundary:EA,_directedEdgeToCells:function(A,e,t){A|=0;var r,o,i,a=0;return r=P,P=P+16|0,a=r,!0&268435456==(2013265920&(e|=0))?(o=-2130706433&e|134217728,n[(i=t|=0)>>2]=A,n[i+4>>2]=o,n[a>>2]=0,e=0|tt(0|A,0|e,56),B(),a=0|R(A,o,7&e,a,t+8|0),P=r,0|a):(P=r,0|(a=6))},_edgeLengthKm:function(A,e,t){t|=0;var r,i=0,a=0,s=0,l=0,u=0,g=0,h=0;if(r=P,P=P+176|0,0|(A=0|EA(A|=0,e|=0,l=r)))return l=A,s=+o[t>>3],s*=6371.007180918475,o[t>>3]=s,P=r,0|l;if(o[t>>3]=0,(0|(A=0|n[l>>2]))<=1)return l=0,s=0,s*=6371.007180918475,o[t>>3]=s,P=r,0|l;e=A+-1|0,A=0,i=+o[l+8>>3],a=+o[l+16>>3],s=0;do{g=i,i=+o[l+8+((A=A+1|0)<<4)>>3],h=+f(.5*(i-g)),u=a,a=+o[l+8+(A<<4)+8>>3],u=h*h+(u=+f(.5*(a-u)))*(+d(+g)*+d(+i)*u),s+=2*+p(+ +c(+u),+ +c(+(1-u)))}while((0|A)!=(0|e));return o[t>>3]=s,l=0,h=s,h*=6371.007180918475,o[t>>3]=h,P=r,0|l},_edgeLengthM:function(A,e,t){t|=0;var r,i=0,a=0,s=0,l=0,u=0,g=0,h=0;if(r=P,P=P+176|0,0|(A=0|EA(A|=0,e|=0,l=r)))return l=A,s=+o[t>>3],s*=6371.007180918475,s*=1e3,o[t>>3]=s,P=r,0|l;if(o[t>>3]=0,(0|(A=0|n[l>>2]))<=1)return l=0,s=0,s*=6371.007180918475,s*=1e3,o[t>>3]=s,P=r,0|l;e=A+-1|0,A=0,i=+o[l+8>>3],a=+o[l+16>>3],s=0;do{g=i,i=+o[l+8+((A=A+1|0)<<4)>>3],h=+f(.5*(i-g)),u=a,a=+o[l+8+(A<<4)+8>>3],u=h*h+(u=+f(.5*(a-u)))*(+d(+g)*+d(+i)*u),s+=2*+p(+ +c(+u),+ +c(+(1-u)))}while((0|A)!=(0|e));return o[t>>3]=s,l=0,h=s,h*=6371.007180918475,h*=1e3,o[t>>3]=h,P=r,0|l},_edgeLengthRads:function(A,e,t){t|=0;var r,i=0,a=0,s=0,l=0,u=0,g=0,h=0;if(r=P,P=P+176|0,0|(A=0|EA(A|=0,e|=0,l=r)))return P=r,0|A;if(o[t>>3]=0,(0|(A=0|n[l>>2]))<=1)return P=r,0;e=A+-1|0,A=0,i=+o[l+8>>3],a=+o[l+16>>3],s=0;do{g=i,i=+o[l+8+((A=A+1|0)<<4)>>3],h=+f(.5*(i-g)),u=a,a=+o[l+8+(A<<4)+8>>3],u=h*h+(u=+f(.5*(a-u)))*(+d(+i)*+d(+g)*u),s+=2*+p(+ +c(+u),+ +c(+(1-u)))}while((0|A)<(0|e));return o[t>>3]=s,P=r,0},_emscripten_replace_memory:function(A){return r=new Int8Array(A),n=new Int32Array(A),o=new Float64Array(A),t=A,!0},_free:Ye,_getBaseCellNumber:TA,_getDirectedEdgeDestination:function(A,e,t){A|=0,e|=0,t|=0;var r,o,i=0;return r=P,P=P+16|0,n[(i=r)>>2]=0,!0&268435456==(2013265920&e)?(o=0|tt(0|A,0|e,56),B(),i=0|R(A,-2130706433&e|134217728,7&o,i,t),P=r,0|i):(P=r,0|(i=6))},_getDirectedEdgeOrigin:function(A,e,t){return A|=0,t|=0,!0&268435456==(2013265920&(e|=0))?(n[t>>2]=A,n[t+4>>2]=-2130706433&e|134217728,0|(t=0)):0|(t=6)},_getHexagonAreaAvgKm2:se,_getHexagonAreaAvgM2:function(A,e){return e|=0,(A|=0)>>>0>15?0|(e=4):(o[e>>3]=+o[20784+(A<<3)>>3],0|(e=0))},_getHexagonEdgeLengthAvgKm:function(A,e){return e|=0,(A|=0)>>>0>15?0|(e=4):(o[e>>3]=+o[20912+(A<<3)>>3],0|(e=0))},_getHexagonEdgeLengthAvgM:function(A,e){return e|=0,(A|=0)>>>0>15?0|(e=4):(o[e>>3]=+o[21040+(A<<3)>>3],0|(e=0))},_getIcosahedronFaces:function A(e,t,r){r|=0;var o,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0;o=P,P=P+128|0,d=o+112|0,s=o+96|0,f=o,a=0|tt(0|(e|=0),0|(t|=0),52),B(),c=15&a,n[d>>2]=c,l=0|tt(0|e,0|t,45),B(),l&=127;A:do{if(0|z(l)){if(0|c)for(i=1;;){if(!(!((u=0|rt(7,0,3*(15-i|0)|0))&e)&!((0|B())&t))){a=0;break A}if(!(i>>>0>>0))break;i=i+1|0}if(!(1&a))return u=0|rt(c+1|0,0,52),f=B()|-15728641&t,f=0|A((u|e)&~(d=0|rt(7,0,3*(14-c|0)|0)),f&~B(),r),P=o,0|f;a=1}else a=0}while(0);if(!(i=0|XA(e,t,s))){a?(NA(s,d,f),u=5):(SA(s,d,f),u=6);A:do{if(0|z(l))if(c)for(i=1;;){if(!(!((l=0|rt(7,0,3*(15-i|0)|0))&e)&!((0|B())&t))){e=2;break A}if(!(i>>>0>>0)){e=5;break}i=i+1|0}else e=5;else e=2}while(0);lt(0|r,-1,e<<2);A:do{if(a)for(s=0;;){if(PA(l=f+(s<<4)|0,0|n[d>>2]),l=0|n[l>>2],-1==(0|(c=0|n[r>>2]))|(0|c)==(0|l))i=r;else{a=0;do{if((a=a+1|0)>>>0>=e>>>0){i=1;break A}c=0|n[(i=r+(a<<2)|0)>>2]}while(!(-1==(0|c)|(0|c)==(0|l)))}if(n[i>>2]=l,(s=s+1|0)>>>0>=u>>>0){i=0;break}}else for(s=0;;){if(jA(l=f+(s<<4)|0,0|n[d>>2],0,1),l=0|n[l>>2],-1==(0|(c=0|n[r>>2]))|(0|c)==(0|l))i=r;else{a=0;do{if((a=a+1|0)>>>0>=e>>>0){i=1;break A}c=0|n[(i=r+(a<<2)|0)>>2]}while(!(-1==(0|c)|(0|c)==(0|l)))}if(n[i>>2]=l,(s=s+1|0)>>>0>=u>>>0){i=0;break}}}while(0)}return P=o,0|i},_getIndexDigit:function(A,e,t,r){return r|=0,((t|=0)-1|0)>>>0>14?0|(r=4):(t=0|tt(0|(A|=0),0|(e|=0),3*(15-t|0)|0),B(),n[r>>2]=7&t,0|(r=0))},_getNumCells:le,_getPentagons:Ae,_getRes0Cells:function(A){A|=0;var e=0,t=0,r=0;e=0;do{rt(0|e,0,45),r=134225919|B(),n[(t=A+(e<<3)|0)>>2]=-1,n[t+4>>2]=r,e=e+1|0}while(122!=(0|e));return 0},_getResolution:function(A,e){return e=0|tt(0|(A|=0),0|(e|=0),52),B(),15&e},_greatCircleDistanceKm:ae,_greatCircleDistanceM:function(A,e){A|=0;var t,r,n,i=0;return r=+o[(e|=0)>>3],t=+o[A>>3],i=(n=+f(.5*(r-t)))*n+(i=+f(.5*(+o[e+8>>3]-+o[A+8>>3])))*(+d(+r)*+d(+t)*i),2*+p(+ +c(+i),+ +c(+(1-i)))*6371.007180918475*1e3},_greatCircleDistanceRads:function(A,e){A|=0;var t,r,n,i=0;return r=+o[(e|=0)>>3],t=+o[A>>3],i=(n=+f(.5*(r-t)))*n+(i=+f(.5*(+o[e+8>>3]-+o[A+8>>3])))*(+d(+r)*+d(+t)*i),2*+p(+ +c(+i),+ +c(+(1-i)))},_gridDisk:F,_gridDiskDistances:S,_gridDistance:function(A,e,t,r,o){t|=0,r|=0,o|=0;var i,a,s=0,l=0;return a=P,P=P+32|0,l=a,0|(i=0|me(A|=0,e|=0,A,e,s=a+12|0))?(P=a,0|(l=i)):0|(A=0|me(A,e,t,r,l))?(P=a,0|(l=A)):(s=0|kA(s,l),n[(l=o)>>2]=s,n[l+4>>2]=((0|s)<0)<<31>>31,P=a,0|(l=0))},_gridPathCells:function(A,e,t,r,o){t|=0,r|=0,o|=0;var i,a,s=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,E=0,M=0;if(a=P,P=P+48|0,c=a+12|0,E=a,!(s=0|me(A|=0,e|=0,A,e,i=a+24|0))&&!(s=0|me(A,e,t,r,c))){C=((0|(k=0|kA(i,c)))<0)<<31>>31,n[i>>2]=0,n[i+4>>2]=0,n[i+8>>2]=0,n[c>>2]=0,n[c+4>>2]=0,n[c+8>>2]=0,0|me(A,e,A,e,i)&&D(27795,27538,692,27747),0|me(A,e,t,r,c)&&D(27795,27538,697,27747),CA(i),CA(c),g=0|k?1/+(0|k):0,t=0|n[i>>2],x=g*+((0|n[c>>2])-t|0),r=0|n[(v=i+4|0)>>2],w=g*+((0|n[c+4>>2])-r|0),s=0|n[(y=i+8|0)>>2],g*=+((0|n[c+8>>2])-s|0),n[E>>2]=t,n[(h=E+4|0)>>2]=r,n[(m=E+8|0)>>2]=s;A:do{if((0|k)<0)s=0;else for(b=0,p=0;;){M=x*(d=+(p>>>0)+4294967296*+(0|b))+ +(0|t),u=w*d+ +(0|r),d=g*d+ +(0|s),t=~~+at(+M),c=~~+at(+u),s=~~+at(+d),M=+l(+(+(0|t)-M)),u=+l(+(+(0|c)-u)),d=+l(+(+(0|s)-d));do{if(!(M>u&M>d)){if(f=0-t|0,u>d){r=f-s|0;break}r=c,s=f-c|0;break}t=0-(c+s)|0,r=c}while(0);if(n[E>>2]=t,n[h>>2]=r,n[m>>2]=s,BA(E),0|(s=0|be(A,e,E,o+(p<<3)|0)))break A;if(!((0|b)<(0|C)|(0|b)==(0|C)&p>>>0>>0)){s=0;break A}t=0|We(0|p,0|b,1,0),b=r=0|B(),p=t,t=0|n[i>>2],r=0|n[v>>2],s=0|n[y>>2]}}while(0);return P=a,0|s}return P=a,0|s},_gridPathCellsSize:function(A,e,t,r,o){t|=0,r|=0,o|=0;var i,a=0,s=0,l=0;return i=P,P=P+32|0,l=i,(a=0|me(A|=0,e|=0,A,e,s=i+12|0))||(a=0|me(A,e,t,r,l))?(P=i,0|(l=a)):(r=0|We(0|(r=0|kA(s,l)),((0|r)<0)<<31>>31,1,0),s=0|B(),n[(l=o)>>2]=r,n[l+4>>2]=s,P=i,0|(l=0))},_gridRing:function(A,e,t,r){return 0|L(A|=0,e|=0,t|=0,r|=0)?(lt(0|r,0,48*t|0),0|(r=0|function(A,e,t,r){A|=0,e|=0,r|=0;var o,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0;if(o=P,P=P+16|0,s=o,!(t|=0))return n[r>>2]=A,n[r+4>>2]=e,P=o,0;do{if((0|t)>=0){if((0|t)>13780509){if(0|(i=0|le(15,s)))break;i=0|n[(a=s)>>2],a=0|n[a+4>>2]}else d=0|qe(0|t,0|(i=((0|t)<0)<<31>>31),3,0),a=0|B(),i=0|We(0|t,0|i,1,0),i=0|We(0|(i=0|qe(0|d,0|a,0|i,0|B())),0|B(),1,0),a=0|B(),n[(d=s)>>2]=i,n[d+4>>2]=a;if(u=0|Ve(i,8)){if(!(d=0|Ve(i,4))){Ye(u),i=13;break}if(0|(i=0|I(A,e,t,u,d,i,a,0))){Ye(u),Ye(d);break}if(e=0|n[s>>2],(0|(s=0|n[s+4>>2]))>0|!(0|s)&e>>>0>0){i=0,l=0,c=0;do{!(0|(a=0|n[(A=u+(l<<3)|0)>>2]))&!(0|(A=0|n[A+4>>2]))||(0|n[d+(l<<2)>>2])!=(0|t)||(n[(f=r+(i<<3)|0)>>2]=a,n[f+4>>2]=A,i=i+1|0),l=0|We(0|l,0|c,1,0),c=0|B()}while((0|c)<(0|s)|(0|c)==(0|s)&l>>>0>>0)}Ye(u),Ye(d),i=0}else i=13}else i=2}while(0);return P=o,0|i}(A,e,t,r))):0|(r=0)},_gridRingUnsafe:L,_i64Add:We,_i64Subtract:Ze,_isPentagon:HA,_isResClassIII:function(A,e){return e=0|tt(0|(A|=0),0|(e|=0),52),B(),1&e},_isValidCell:IA,_isValidDirectedEdge:DA,_isValidIndex:function(A,e){A|=0;var t=0,n=0,o=0,i=0;if(!0&134217728==(-16777216&(e|=0))&&(n=0|tt(0|A,0|e,52),B(),n&=15,t=0|tt(0|A,0|e,45),B(),(t&=127)>>>0<=121)&&!(613566756&(i=0|rt(0|(o=0|tt(0|A,0|e,0|(i=3*(15^n)|0))),0|B(),0|i))&Ze(-1227133514,-1171,0|i,0|(o=0|B())))&!(4681&o&B())&&15==(0|n)|!(0|(i=0|tt(0|rt(0|~A,0|~e,0|(i=19+(3*n|0)|0)),0|B(),0|i)))&!(0|B())){if(!(0|r[20528+t|0]))return 1;if(!(0|A)&!(0|(t=8191&e)))return 1;if(i=0|nt(0|A,0|t),B(),(63-i|0)%3|0)return 1}return 0|DA(A,e)?0|(i=1):0|(i=1&!!(0|Te(A,e)))},_isValidVertex:Te,_latLngToCell:JA,_llvm_ctlz_i64:nt,_llvm_maxnum_f64:ot,_llvm_minnum_f64:it,_llvm_round_f64:at,_localIjToCell:function(A,e,t,r,o){var i,a;return A|=0,e|=0,t|=0,o|=0,a=P,P=P+16|0,i=a,(r|=0)?t=15:(t=0|function(A,e){e|=0;var t,r,o,i=0,a=0,s=0;if(a=0|n[(A|=0)>>2],n[e>>2]=a,s=0|n[A+4>>2],n[(r=e+4|0)>>2]=s,n[(o=e+8|0)>>2]=0,A=(i=(0|s)<(0|a))?a:s,(0|(i=i?s:a))<0){if(-2147483648==(0|i)||((0|A)>0?(2147483647-A|0)<(0|i):(-2147483648-A|0)>(0|i)))return 1;if((0|A)>-1?(-2147483648|A)>=(0|i):(-2147483648^A)<(0|i))return 1}return A=s-a|0,(0|a)<0?(i=0-a|0,n[r>>2]=A,n[o>>2]=i,n[e>>2]=0,a=0):(A=s,i=0),(0|A)<0&&(a=a-A|0,n[e>>2]=a,i=i-A|0,n[o>>2]=i,n[r>>2]=0,A=0),t=a-i|0,s=A-i|0,(0|i)<0?(n[e>>2]=t,n[r>>2]=s,n[o>>2]=0,A=s,s=t,i=0):s=a,(0|(a=(0|i)<(0|(a=(0|A)<(0|s)?A:s))?i:a))<=0||(n[e>>2]=s-a,n[r>>2]=A-a,n[o>>2]=i-a),0}(t,i))||(t=0|be(A,e,i,o)),P=a,0|t},_malloc:Oe,_maxFaceCount:function(A,e,t){t|=0;var r=0,o=0;if(o=0|tt(0|(A|=0),0|(e|=0),45),B(),!(0|z(127&o)))return o=2,n[t>>2]=o,0;if(o=0|tt(0|A,0|e,52),B(),!(o&=15))return o=5,n[t>>2]=o,0;for(r=1;;){if(!(!((0|rt(7,0,3*(15-r|0)|0))&A)&!((0|B())&e))){r=2,A=6;break}if(!(r>>>0>>0)){r=5,A=6;break}r=r+1|0}return 6==(0|A)?(n[t>>2]=r,0):0},_maxGridDiskSize:function(A,e){e|=0;var t=0,r=0,o=0;return(0|(A|=0))<0?0|(e=2):(0|A)>13780509?0|(e=0|le(15,e)):(o=0|qe(0|A,0|(t=((0|A)<0)<<31>>31),3,0),r=0|B(),t=0|We(0|A,0|t,1,0),t=0|We(0|(t=0|qe(0|o,0|r,0|t,0|B())),0|B(),1,0),A=0|B(),n[e>>2]=t,n[e+4>>2]=A,0|(e=0))},_maxPolygonToCellsSize:function(A,e,t,r){A|=0,e|=0,r|=0;var o,i=0,a=0,s=0,l=0,c=0;if(o=P,P=P+48|0,i=o+16|0,a=o+8|0,s=o,0|(t=0|Ce(t|=0)))return P=o,0|t;if(l=0|n[(c=A)+4>>2],n[(t=a)>>2]=n[c>>2],n[t+4>>2]=l,ke(a,i),!(t=0|eA(i,e,s))){if(e=0|n[a>>2],(0|(a=0|n[A+8>>2]))>0){i=0|n[A+12>>2],t=0;do{e=(0|n[i+(t<<3)>>2])+e|0,t=t+1|0}while((0|t)<(0|a))}i=0|n[(t=s)>>2],(0|(t=0|n[t+4>>2]))<(0|(a=((0|e)<0)<<31>>31))|(0|t)==(0|a)&i>>>0>>0?(n[(t=s)>>2]=e,n[t+4>>2]=a,t=a):e=i,l=0|We(0|e,0|t,12,0),c=0|B(),n[(t=s)>>2]=l,n[t+4>>2]=c,n[(t=r)>>2]=l,n[t+4>>2]=c,t=0}return P=o,0|t},_maxPolygonToCellsSizeExperimental:function(A,e,t,i){e|=0,t|=0,i|=0;var a,s,c=0,u=0,f=0,g=0,h=0,m=0,b=0,p=0;if(s=P,P=P+48|0,h=s+32|0,g=s+40|0,a=s,!(0|n[(A|=0)>>2]))return n[(m=i)>>2]=0,n[m+4>>2]=0,P=s,0;RA(h,0,0,0),c=0|n[(f=h)>>2],f=0|n[f+4>>2];do{if(e>>>0>15)n[(m=a)>>2]=0,n[m+4>>2]=0,n[a+8>>2]=4,n[a+12>>2]=-1,t=a+29|0,n[(m=a+16|0)>>2]=0,n[m+4>>2]=0,n[m+8>>2]=0,r[m+12|0]=0,r[0|t]=0|r[0|g],r[t+1|0]=0|r[g+1|0],r[t+2|0]=0|r[g+2|0],t=4,m=9;else{if(0|(t=0|Ce(t))){n[(h=a)>>2]=0,n[h+4>>2]=0,n[a+8>>2]=t,n[a+12>>2]=-1,m=a+29|0,n[(h=a+16|0)>>2]=0,n[h+4>>2]=0,n[h+8>>2]=0,r[h+12|0]=0,r[0|m]=0|r[0|g],r[m+1|0]=0|r[g+1|0],r[m+2|0]=0|r[g+2|0],m=9;break}if(!(t=0|Ve(1+(0|n[A+8>>2])|0,32))){n[(m=a)>>2]=0,n[m+4>>2]=0,n[a+8>>2]=13,n[a+12>>2]=-1,t=a+29|0,n[(m=a+16|0)>>2]=0,n[m+4>>2]=0,n[m+8>>2]=0,r[m+12|0]=0,r[0|t]=0|r[0|g],r[t+1|0]=0|r[g+1|0],r[t+2|0]=0|r[g+2|0],t=13,m=9;break}Be(A,t),n[(p=a)>>2]=c,n[p+4>>2]=f,n[(f=a+8|0)>>2]=0,n[a+12>>2]=e,n[a+20>>2]=A,n[a+24>>2]=t,r[a+28|0]=0,r[0|(c=a+29|0)]=0|r[0|g],r[c+1|0]=0|r[g+1|0],r[c+2|0]=0|r[g+2|0],n[a+16>>2]=3,b=+K(t),b*=+Z(t),u=+l(+ +o[t>>3]),u=b/+d(+ +it(+u,+ +l(+ +o[t+8>>3])))*6371.007180918475*6371.007180918475,t=0|n[(c=a+12|0)>>2];A:do{if((0|t)>0)do{if(se(t+-1|0,h),!(u/+o[h>>3]>10))break A;t=(p=0|n[c>>2])-1|0,n[c>>2]=t}while((0|p)>1)}while(0);if(ve(a),n[(c=i)>>2]=0,n[c+4>>2]=0,!(!(0|(t=0|n[(c=a)>>2]))&!(0|(c=0|n[c+4>>2]))))do{_A(t,c,e,h),g=h,g=0|We(0|n[(A=i)>>2],0|n[A+4>>2],0|n[g>>2],0|n[g+4>>2]),A=0|B(),n[(p=i)>>2]=g,n[p+4>>2]=A,ve(a),t=0|n[(p=a)>>2],c=0|n[p+4>>2]}while(!(!(0|t)&!(0|c)));t=0|n[f>>2]}}while(0);return P=s,0|t},_memcpy:st,_memset:lt,_originToDirectedEdges:function(A,e,t){t|=0;var r,o=0;return r=!(0|HA(A|=0,e|=0)),e&=-2130706433,n[(o=t)>>2]=r?A:0,n[o+4>>2]=r?285212672|e:0,n[(o=t+8|0)>>2]=A,n[o+4>>2]=301989888|e,n[(o=t+16|0)>>2]=A,n[o+4>>2]=318767104|e,n[(o=t+24|0)>>2]=A,n[o+4>>2]=335544320|e,n[(o=t+32|0)>>2]=A,n[o+4>>2]=352321536|e,n[(t=t+40|0)>>2]=A,n[t+4>>2]=369098752|e,0},_pentagonCount:function(){return 12},_polygonToCells:function(A,e,t,r){A|=0,e|=0,r|=0;var o,i,a,s,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,D=0,E=0,M=0,Q=0,N=0,j=0,F=0,S=0,R=0,L=0,_=0;if(s=P,P=P+112|0,o=s+80|0,f=s+72|0,i=s,a=s+56|0,0|(l=0|Ce(t|=0)))return P=s,0|l;if(!(_=0|Oe(32+(n[(g=A+8|0)>>2]<<5)|0)))return P=s,13;if(Be(A,_),!(l=0|Ce(t))){if(L=0|n[(R=A)+4>>2],n[(l=f)>>2]=n[R>>2],n[l+4>>2]=L,ke(f,o),l=0|eA(o,e,i))R=0,L=0;else{if(l=0|n[f>>2],(0|(c=0|n[g>>2]))>0){u=0|n[A+12>>2],t=0;do{l=(0|n[u+(t<<3)>>2])+l|0,t=t+1|0}while((0|t)!=(0|c));t=l}else t=l;c=0|n[(l=i)>>2],(0|(l=0|n[l+4>>2]))<(0|(u=((0|t)<0)<<31>>31))|(0|l)==(0|u)&c>>>0>>0?(n[(l=i)>>2]=t,n[l+4>>2]=u,l=u):t=c,R=0|We(0|t,0|l,12,0),L=0|B(),n[(l=i)>>2]=R,n[l+4>>2]=L,l=0}if(!l){if(!(t=0|Ve(R,8)))return Ye(_),P=s,13;if(!(d=0|Ve(R,8)))return Ye(_),Ye(t),P=s,13;n[(F=o)>>2]=0,n[F+4>>2]=0,S=0|n[(F=A)+4>>2],n[(l=f)>>2]=n[F>>2],n[l+4>>2]=S,l=0|H(f,R,L,e,o,t,d);A:do{if(l)Ye(t),Ye(d),Ye(_);else{e:do{if((0|n[g>>2])>0){for(u=A+12|0,c=0;l=0|H((0|n[u>>2])+(c<<3)|0,R,L,e,o,t,d),c=c+1|0,!(0|l);)if((0|c)>=(0|n[g>>2]))break e;Ye(t),Ye(d),Ye(_);break A}}while(0);(0|L)>0|!(0|L)&R>>>0>0&<(0|d,0,R<<3),F=0|n[(S=o)+4>>2];e:do{if((0|F)>0|!(0|F)&(0|n[S>>2])>>>0>0){Q=t,N=d,j=t,F=d,S=t,l=t,D=t,E=d,M=d,t=d;t:for(;;){for(w=0,y=0,k=0,C=0,c=0,u=0;;){f=(d=i)+56|0;do{n[d>>2]=0,d=d+4|0}while((0|d)<(0|f));if(0|T(g=0|n[(e=Q+(w<<3)|0)>>2],e=0|n[e+4>>2],1,i,0)){f=(d=i)+56|0;do{n[d>>2]=0,d=d+4|0}while((0|d)<(0|f));0|(d=0|Ve(7,4))&&(I(g,e,1,i,d,7,0,0),Ye(d))}for(v=0;;){p=0|n[(x=i+(v<<3)|0)>>2],x=0|n[x+4>>2];r:do{if(!(0|p)&!(0|x))d=c,f=u;else{if(h=0|At(0|p,0|x,0|R,0|L),g=0|B(),!(!(0|(f=0|n[(e=d=r+(h<<3)|0)>>2]))&!(0|(e=0|n[e+4>>2])))){m=0,b=0;do{if((0|m)>(0|L)|(0|m)==(0|L)&b>>>0>R>>>0)break t;if((0|f)==(0|p)&(0|e)==(0|x)){d=c,f=u;break r}h=0|$e(0|(d=0|We(0|h,0|g,1,0)),0|B(),0|R,0|L),g=0|B(),b=0|We(0|b,0|m,1,0),m=0|B(),f=0|n[(e=d=r+(h<<3)|0)>>2],e=0|n[e+4>>2]}while(!(!(0|f)&!(0|e)))}if(!(0|p)&!(0|x)){d=c,f=u;break}qA(p,x,a),0|De(A,_,a)&&(b=0|We(0|c,0|u,1,0),u=0|B(),n[(m=d)>>2]=p,n[m+4>>2]=x,n[(c=N+(c<<3)|0)>>2]=p,n[c+4>>2]=x,c=b),d=c,f=u}}while(0);if((v=v+1|0)>>>0>=7)break;c=d,u=f}if(w=0|We(0|w,0|y,1,0),y=0|B(),k=0|We(0|k,0|C,1,0),C=0|B(),c=0|n[(u=o)>>2],!((0|C)<(0|(u=0|n[u+4>>2]))|(0|C)==(0|u)&k>>>0>>0))break;c=d,u=f}if((0|u)>0|!(0|u)&c>>>0>0){c=0,u=0;do{n[(C=Q+(c<<3)|0)>>2]=0,n[C+4>>2]=0,c=0|We(0|c,0|u,1,0),u=0|B(),k=0|n[(C=o)+4>>2]}while((0|u)<(0|k)|((0|u)==(0|k)?c>>>0<(0|n[C>>2])>>>0:0))}if(n[(C=o)>>2]=d,n[C+4>>2]=f,!((0|f)>0|!(0|f)&d>>>0>0))break e;v=t,w=M,y=S,k=E,C=N,t=D,M=l,E=j,D=v,l=w,S=F,F=y,j=k,N=Q,Q=C}Ye(j),Ye(F),Ye(_),l=1;break A}l=d}while(0);Ye(_),Ye(t),Ye(l),l=0}}while(0);return P=s,0|l}}return Ye(_),P=s,0|l},_polygonToCellsExperimental:function(A,e,t,o,i,a){o|=0,i|=0,a|=0;var s,l,c,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0;c=P,P=P+160|0,d=c+64|0,h=c+112|0,p=c,function(A,e,t,o){A|=0,e|=0,t|=0,o|=0;var i,a,s,l=0,c=0,u=0,d=0;s=P,P=P+48|0,i=s+40|0,a=s,RA(c=s+32|0,0,0,0),u=0|n[c>>2],c=0|n[c+4>>2];do{if(t>>>0<=15){if(0|(l=0|Ce(o))){n[(o=a)>>2]=0,n[o+4>>2]=0,n[a+8>>2]=l,n[a+12>>2]=-1,u=a+29|0,n[(o=a+16|0)>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,r[o+12|0]=0,r[0|u]=0|r[0|i],r[u+1|0]=0|r[i+1|0],r[u+2|0]=0|r[i+2|0];break}if(l=0|Ve(1+(0|n[e+8>>2])|0,32)){Be(e,l),n[(d=a)>>2]=u,n[d+4>>2]=c,n[a+8>>2]=0,n[a+12>>2]=t,n[a+16>>2]=o,n[a+20>>2]=e,n[a+24>>2]=l,r[a+28|0]=0,r[0|(u=a+29|0)]=0|r[0|i],r[u+1|0]=0|r[i+1|0],r[u+2|0]=0|r[i+2|0];break}n[(o=a)>>2]=0,n[o+4>>2]=0,n[a+8>>2]=13,n[a+12>>2]=-1,u=a+29|0,n[(o=a+16|0)>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,r[o+12|0]=0,r[0|u]=0|r[0|i],r[u+1|0]=0|r[i+1|0],r[u+2|0]=0|r[i+2|0];break}n[(u=a)>>2]=0,n[u+4>>2]=0,n[a+8>>2]=4,n[a+12>>2]=-1,d=a+29|0,n[(u=a+16|0)>>2]=0,n[u+4>>2]=0,n[u+8>>2]=0,r[u+12|0]=0,r[0|d]=0|r[0|i],r[d+1|0]=0|r[i+1|0],r[d+2|0]=0|r[i+2|0]}while(0);ve(a),n[A>>2]=n[a>>2],n[A+4>>2]=n[a+4>>2],n[A+8>>2]=n[a+8>>2],n[A+12>>2]=n[a+12>>2],n[A+16>>2]=n[a+16>>2],n[A+20>>2]=n[a+20>>2],n[A+24>>2]=n[a+24>>2],n[A+28>>2]=n[a+28>>2],P=s}(g=c+80|0,A|=0,e|=0,t|=0),ee(d,0|n[(f=g)>>2],0|n[f+4>>2],e),s=0|n[(f=d)>>2],f=0|n[f+4>>2],u=0|n[g+8>>2],n[(m=h+4|0)>>2]=n[g>>2],n[m+4>>2]=n[g+4>>2],n[m+8>>2]=n[g+8>>2],n[m+12>>2]=n[g+12>>2],n[m+16>>2]=n[g+16>>2],n[m+20>>2]=n[g+20>>2],n[m+24>>2]=n[g+24>>2],n[m+28>>2]=n[g+28>>2],n[(m=p)>>2]=s,n[m+4>>2]=f,n[(m=p+8|0)>>2]=u,e=h,t=36+(A=p+12|0)|0;do{n[A>>2]=n[e>>2],A=A+4|0,e=e+4|0}while((0|A)<(0|t));if(n[(h=p+48|0)>>2]=n[d>>2],n[h+4>>2]=n[d+4>>2],n[h+8>>2]=n[d+8>>2],n[h+12>>2]=n[d+12>>2],!(0|s)&!(0|f))return P=c,0|u;t=p+16|0,l=p+24|0,g=p+28|0,u=0,d=0,e=s,A=f;do{if(!((0|u)<(0|i)|(0|u)==(0|i)&d>>>0>>0)){b=4;break}if(f=d,d=0|We(0|d,0|u,1,0),u=0|B(),n[(f=a+(f<<3)|0)>>2]=e,n[f+4>>2]=A,re(h),!(0|(e=0|n[(A=h)>>2]))&!(0|(A=0|n[A+4>>2]))){if(ve(t),!(0|(A=0|n[(e=t)>>2]))&!(0|(e=0|n[e+4>>2]))){b=10;break}te(A,e,0|n[g>>2],h),e=0|n[(A=h)>>2],A=0|n[A+4>>2]}n[(f=p)>>2]=e,n[f+4>>2]=A}while(!(!(0|e)&!(0|A)));return 4==(0|b)?(0|(e=0|n[(A=p+40|0)>>2])&&Ye(e),n[(b=p+16|0)>>2]=0,n[b+4>>2]=0,n[l>>2]=0,n[p+36>>2]=0,n[g>>2]=-1,n[p+32>>2]=0,n[A>>2]=0,te(0,0,0,h),n[p>>2]=0,n[p+4>>2]=0,n[m>>2]=0,P=c,0|(p=14)):(10==(0|b)&&(n[p>>2]=0,n[p+4>>2]=0,n[m>>2]=n[l>>2]),p=0|n[m>>2],P=c,0|p)},_readInt64AsDoubleFromPointer:function(A){return+(+((0|n[(A|=0)>>2])>>>0)+4294967296*+(0|n[A+4>>2]))},_res0CellCount:function(){return 122},_round:ct,_sbrk:ut,_sizeOfCellBoundary:function(){return 168},_sizeOfCoordIJ:function(){return 8},_sizeOfGeoLoop:function(){return 8},_sizeOfGeoPolygon:function(){return 16},_sizeOfH3Index:function(){return 8},_sizeOfLatLng:function(){return 16},_sizeOfLinkedGeoPolygon:function(){return 12},_uncompactCells:function(A,e,t,r,o,i,a){A|=0,r|=0,o|=0,i|=0;var s,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0;if(s=P,P=P+16|0,m=s,!((0|(t|=0))>0|!(0|t)&(e|=0)>>>0>0))return P=s,0;if((0|(a|=0))>=16)return P=s,12;g=0,h=0,f=0,l=0;A:for(;;){if(d=0|tt(0|(c=0|n[(u=A+(g<<3)|0)>>2]),0|(u=0|n[u+4>>2]),52),B(),(15&d)>(0|a)){l=12,c=11;break}if(ee(m,c,u,a),!(0|(u=0|n[(d=m)>>2]))&!(0|(d=0|n[d+4>>2])))c=f;else{c=f;do{if(!((0|l)<(0|i)|(0|l)==(0|i)&c>>>0>>0)){c=10;break A}n[(f=r+(c<<3)|0)>>2]=u,n[f+4>>2]=d,c=0|We(0|c,0|l,1,0),l=0|B(),re(m),u=0|n[(f=m)>>2],d=0|n[f+4>>2]}while(!(!(0|u)&!(0|d)))}if(g=0|We(0|g,0|h,1,0),!((0|(h=0|B()))<(0|t)|(0|h)==(0|t)&g>>>0>>0)){l=0,c=11;break}f=c}return 10==(0|c)?(P=s,0|(m=14)):11==(0|c)?(P=s,0|l):0},_uncompactCellsSize:function(A,e,t,r,o){A|=0,e|=0,t|=0,r|=0,o|=0;var i,a,s=0,l=0,c=0,u=0,d=0,f=0;a=P,P=P+16|0,i=a;A:do{if((0|t)>0|!(0|t)&e>>>0>0){for(d=0,l=0,s=0,f=0;;){if(!(!(0|(c=0|n[(u=A+(d<<3)|0)>>2]))&!(0|(u=0|n[u+4>>2]))||(u=!(0|_A(c,u,r,i)),l=0|We(0|n[(c=i)>>2],0|n[c+4>>2],0|l,0|s),s=0|B(),u))){s=12;break}if(d=0|We(0|d,0|f,1,0),!((0|(f=0|B()))<(0|t)|(0|f)==(0|t)&d>>>0>>0))break A}return P=a,0|s}l=0,s=0}while(0);return n[o>>2]=l,n[o+4>>2]=s,P=a,0},_vertexToLatLng:function(A,e,t){t|=0;var r,o,i,a,s=0,l=0;return a=P,P=P+192|0,o=a,i=a+168|0,s=0|tt(0|(A|=0),0|(e|=0),56),B(),s&=7,0|(r=0|XA(A,l=-2130706433&e|134217728,i))?(P=a,0|(l=r)):(e=0|tt(0|A,0|e,52),B(),e&=15,0|HA(A,l)?QA(i,e,s,1,o):FA(i,e,s,1,o),l=o+8|0,n[t>>2]=n[l>>2],n[t+4>>2]=n[l+4>>2],n[t+8>>2]=n[l+8>>2],n[t+12>>2]=n[l+12>>2],P=a,0|(l=0))},establishStackSpace:function(A,e){P=A|=0},stackAlloc:function(A){var e;return e=P,P=15+(P=P+(A|=0)|0)&-16,0|e},stackRestore:function(A){P=A|=0},stackSave:function(){return 0|P}}}({Math:Math,Int8Array:Int8Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Float32Array:Float32Array,Float64Array:Float64Array},{b:function(A){s=A},c:function(){return s},d:function(A,e,t,r){tA("Assertion failed: "+x(A)+", at: "+[e?x(e):"unknown filename",t,r?x(r):"unknown function"])},e:function(A){return t.___errno_location&&(h[t.___errno_location()>>2]=A),A},f:z,g:function(A,e,t){f.set(f.subarray(e,e+t),A)},h:function(A){var e=z(),t=16777216,r=2130706432;if(A>r)return!1;for(var n=Math.max(e,16777216);n0))return 0;for(var n=t+r-1,o=0;o=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&A.charCodeAt(++o)),i<=127){if(t>=n)break;e[t++]=i}else if(i<=2047){if(t+1>=n)break;e[t++]=192|i>>6,e[t++]=128|63&i}else if(i<=65535){if(t+2>=n)break;e[t++]=224|i>>12,e[t++]=128|i>>6&63,e[t++]=128|63&i}else{if(t+3>=n)break;e[t++]=240|i>>18,e[t++]=128|i>>12&63,e[t++]=128|i>>6&63,e[t++]=128|63&i}}e[t]=0}(A,f,e,t)}(A,e=Z(t),t)}return e},array:function(A){var e,t,r=Z(A.length);return e=A,t=r,d.set(e,t),r}},o=c(A),i=[],a=0;if(r)for(var s=0;s>1]=e;break;case"i32":h[A>>2]=e;break;case"i64":R=[e>>>0,(I=e,+N(I)>=1?I>0?(0|F(+P(I/4294967296),4294967295))>>>0:~~+j((I-+(~~I>>>0))/4294967296)>>>0:0)],h[A>>2]=R[0],h[A+4>>2]=R[1];break;case"float":m[A>>2]=e;break;case"double":b[A>>3]=e;break;default:tA("invalid type for setValue: "+t)}},t.getValue=function(A,e,t){switch("*"===(e=e||"i8").charAt(e.length-1)&&(e="i32"),e){case"i1":case"i8":return d[0|A];case"i16":return g[A>>1];case"i32":case"i64":return h[A>>2];case"float":return m[A>>2];case"double":return b[A>>3];default:tA("invalid type for getValue: "+e)}return null},L){H(L)||(V=L,L=t.locateFile?t.locateFile(V,o):o+V),S++,t.monitorRunDependencies&&t.monitorRunDependencies(S);var X=function(A){A.byteLength&&(A=new Uint8Array(A)),f.set(A,8),t.memoryInitializerRequest&&delete t.memoryInitializerRequest.response,function(){if(S--,t.monitorRunDependencies&&t.monitorRunDependencies(S),0==S&&T){var A=T;T=null,A()}}()},q=function(){n(L,X,function(){throw"could not load memory initializer "+L})},$=U(L);if($)X($.buffer);else if(t.memoryInitializerRequest){var AA=function(){var A=t.memoryInitializerRequest,e=A.response;if(200!==A.status&&0!==A.status){var r=U(t.memoryInitializerRequestURL);if(!r)return void q();e=r.buffer}X(e)};t.memoryInitializerRequest.response?setTimeout(AA,0):t.memoryInitializerRequest.addEventListener("load",AA)}else q()}function eA(A){function e(){W||(W=!0,l||(k(B),k(D),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)Q(t.postRun.shift());k(E)}()))}S>0||(function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)M(t.preRun.shift());k(C)}(),S>0||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),e()},1)):e()))}function tA(A){throw t.onAbort&&t.onAbort(A),i(A+=""),a(A),l=!0,"abort("+A+"). Build with -s ASSERTIONS=1 for more info."}if(T=function A(){W||eA(),W||(T=A)},t.run=eA,t.abort=tA,t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return eA(),A}("object"==typeof LA?LA:{}),_A="number",HA={0:"Success",1:"The operation failed but a more specific error is not available",2:"Argument was outside of acceptable range",3:"Latitude or longitude arguments were outside of acceptable range",4:"Resolution argument was outside of acceptable range",5:"Cell argument was not valid",6:"Directed edge argument was not valid",7:"Undirected edge argument was not valid",8:"Vertex argument was not valid",9:"Pentagon distortion was encountered",10:"Duplicate input",11:"Cell arguments were not neighbors",12:"Cell arguments had incompatible resolutions",13:"Memory allocation failed",14:"Bounds of provided memory were insufficient",15:"Mode or flags argument was not valid",16:"Index argument was not valid",17:"Base cell number was outside of acceptable range",18:"Child indexing digits invalid",19:"Child indexing digits refer to a deleted subsequence"},zA={1e3:"Unknown unit",1001:"Array length out of bounds",1002:"Got unexpected null value for H3 index"};function GA(A,e,t){var r=t&&"value"in t,n=new Error((A[e]||"Unknown error")+" (code: "+e+(r?", value: "+t.value:"")+")");return n.code=e,n}function UA(A){if(0!==A)throw function(A,e){return GA(HA,A,2===arguments.length?{value:e}:{})}(A)}var OA={};[["sizeOfH3Index",_A],["sizeOfLatLng",_A],["sizeOfCellBoundary",_A],["sizeOfGeoLoop",_A],["sizeOfGeoPolygon",_A],["sizeOfLinkedGeoPolygon",_A],["sizeOfCoordIJ",_A],["readInt64AsDoubleFromPointer",_A],["isValidCell",_A,[_A,_A]],["isValidIndex",_A,[_A,_A]],["latLngToCell",_A,[_A,_A,_A,_A]],["cellToLatLng",_A,[_A,_A,_A]],["cellToBoundary",_A,[_A,_A,_A]],["maxGridDiskSize",_A,[_A,_A]],["gridDisk",_A,[_A,_A,_A,_A]],["gridDiskDistances",_A,[_A,_A,_A,_A,_A]],["gridRing",_A,[_A,_A,_A,_A]],["gridRingUnsafe",_A,[_A,_A,_A,_A]],["maxPolygonToCellsSize",_A,[_A,_A,_A,_A]],["polygonToCells",_A,[_A,_A,_A,_A]],["maxPolygonToCellsSizeExperimental",_A,[_A,_A,_A,_A]],["polygonToCellsExperimental",_A,[_A,_A,_A,_A,_A,_A]],["cellsToLinkedMultiPolygon",_A,[_A,_A,_A]],["destroyLinkedMultiPolygon",null,[_A]],["compactCells",_A,[_A,_A,_A,_A]],["uncompactCells",_A,[_A,_A,_A,_A,_A,_A]],["uncompactCellsSize",_A,[_A,_A,_A,_A,_A]],["isPentagon",_A,[_A,_A]],["isResClassIII",_A,[_A,_A]],["getBaseCellNumber",_A,[_A,_A]],["getResolution",_A,[_A,_A]],["getIndexDigit",_A,[_A,_A,_A]],["constructCell",_A,[_A,_A,_A,_A]],["maxFaceCount",_A,[_A,_A,_A]],["getIcosahedronFaces",_A,[_A,_A,_A]],["cellToParent",_A,[_A,_A,_A,_A]],["cellToChildren",_A,[_A,_A,_A,_A]],["cellToCenterChild",_A,[_A,_A,_A,_A]],["cellToChildrenSize",_A,[_A,_A,_A,_A]],["cellToChildPos",_A,[_A,_A,_A,_A]],["childPosToCell",_A,[_A,_A,_A,_A,_A,_A]],["areNeighborCells",_A,[_A,_A,_A,_A,_A]],["cellsToDirectedEdge",_A,[_A,_A,_A,_A,_A]],["getDirectedEdgeOrigin",_A,[_A,_A,_A]],["getDirectedEdgeDestination",_A,[_A,_A,_A]],["isValidDirectedEdge",_A,[_A,_A]],["directedEdgeToCells",_A,[_A,_A,_A]],["originToDirectedEdges",_A,[_A,_A,_A]],["directedEdgeToBoundary",_A,[_A,_A,_A]],["gridDistance",_A,[_A,_A,_A,_A,_A]],["gridPathCells",_A,[_A,_A,_A,_A,_A]],["gridPathCellsSize",_A,[_A,_A,_A,_A,_A]],["cellToLocalIj",_A,[_A,_A,_A,_A,_A,_A]],["localIjToCell",_A,[_A,_A,_A,_A,_A]],["getHexagonAreaAvgM2",_A,[_A,_A]],["getHexagonAreaAvgKm2",_A,[_A,_A]],["getHexagonEdgeLengthAvgM",_A,[_A,_A]],["getHexagonEdgeLengthAvgKm",_A,[_A,_A]],["greatCircleDistanceM",_A,[_A,_A]],["greatCircleDistanceKm",_A,[_A,_A]],["greatCircleDistanceRads",_A,[_A,_A]],["cellAreaM2",_A,[_A,_A,_A]],["cellAreaKm2",_A,[_A,_A,_A]],["cellAreaRads2",_A,[_A,_A,_A]],["edgeLengthM",_A,[_A,_A,_A]],["edgeLengthKm",_A,[_A,_A,_A]],["edgeLengthRads",_A,[_A,_A,_A]],["getNumCells",_A,[_A,_A]],["getRes0Cells",_A,[_A]],["res0CellCount",_A],["getPentagons",_A,[_A,_A]],["pentagonCount",_A],["cellToVertex",_A,[_A,_A,_A,_A]],["cellToVertexes",_A,[_A,_A,_A]],["vertexToLatLng",_A,[_A,_A,_A]],["isValidVertex",_A,[_A,_A]]].forEach(function(A){OA[A[0]]=LA.cwrap.apply(LA,A)});var YA=16,VA=OA.sizeOfH3Index(),WA=OA.sizeOfLatLng(),ZA=OA.sizeOfCellBoundary();OA.sizeOfGeoPolygon(),OA.sizeOfGeoLoop(),OA.sizeOfLinkedGeoPolygon(),OA.sizeOfCoordIJ();var JA=/[^0-9a-fA-F]/;function KA(A){if(A>=0)return A.toString(YA);var e=XA(8,(A&=2147483647).toString(YA));return(parseInt(e[0],YA)+8).toString(YA)+e.substring(1)}function XA(A,e){for(var t=A-e.length,r="",n=0;n.85?.9+(i-.85)/.15*.1:.1+(i-.15)/.7*.8;var i;return ie(r[Math.min(23,Math.floor(24*o))])}function se({coveragePoints:e,visible:r,terrainEnabled:n=!1,brightness:o=.7}){const{current:i}=L(),[a,s]=A.useState(null),[l,c]=A.useState(!1),u=A.useRef({aborted:!1}),d=A.useRef(0),f=function(e){const[t,r]=A.useState(e);return A.useEffect(()=>{const A=setTimeout(()=>r(e),300);return()=>clearTimeout(A)},[e,300]),t}(e),g=A.useMemo(()=>function(){var A;const e=sA();return 24===e.length&&0!==(null==(A=e[0])?void 0:A[0])?e:oe}(),[]);A.useEffect(()=>{if(!f||!Array.isArray(f)||0===f.length)return s(null),void(d.current=0);if(f.length===d.current&&a)return;d.current=f.length,u.current.aborted=!0,u.current={aborted:!1};const A=u.current;c(!0);const{cells:e,minQuality:t,maxQuality:r}=function(A){const e=new Map;for(const o of A){if("number"!=typeof o.lat||"number"!=typeof o.lon||isNaN(o.lat)||isNaN(o.lon))continue;const A=Ae(o.lat,o.lon,8),t=e.get(A),r=o.weight;t?(t.count++,t.qualitySum+=r):e.set(A,{count:1,qualitySum:r})}const t=[];let r=1/0,n=-1/0;for(const[o,i]of e.entries()){const A=i.qualitySum/i.count;t.push({hexId:o,count:i.count,avgQuality:A}),r=Math.min(r,A),n=Math.max(n,A)}return{cells:t,minQuality:t.length>0?r:0,maxQuality:t.length>0?n:0}}(f);if(0===e.length)return s(null),void c(!1);if(e.length<500){const n=function(A,e,t,r){const n=[];for(const o of A){const A=ee(o.hexId).map(([A,e])=>[e,A]);A.push(A[0]);const i=ae(o.avgQuality,e,t,r);n.push({type:"Feature",properties:{color:i,quality:o.avgQuality,count:o.count},geometry:{type:"Polygon",coordinates:[A]}})}return{type:"FeatureCollection",features:n}}(e,t,r,g);return void(A.aborted||(s(n),c(!1)))}return async function(A,e,t,r,n){const o=[];let i=0;for(;i[e,A]);a.push(a[0]);const s=ae(n.avgQuality,e,t,r);o.push({type:"Feature",properties:{color:s,quality:n.avgQuality,count:n.count},geometry:{type:"Polygon",coordinates:[a]}})}irequestAnimationFrame(A))}return{type:"FeatureCollection",features:o}}(e,t,r,g,A).then(e=>{!A.aborted&&e&&s(e)}).finally(()=>{A.aborted||c(!1)}),()=>{A.aborted=!0}},[f,g]),A.useEffect(()=>{var A;const e=null==(A=null==i?void 0:i.getMap)?void 0:A.call(i);if(!e)return;const t=()=>{var A,t;try{const n=e.getLayer(ne),i=e.getSource(re);if(r&&a&&a.features.length>0){if(i?e.getSource(re).setData(a):e.addSource(re,{type:"geojson",data:a}),!n){const r=e.getLayer("topology-weak-edges-native"),n=null==(t=null==(A=e.getStyle())?void 0:A.layers)?void 0:t.find(A=>"symbol"===A.type),i=r?"topology-weak-edges-native":null==n?void 0:n.id;e.addLayer({id:ne,type:"fill",source:re,paint:{"fill-color":["get","color"],"fill-opacity":o}},i)}}else n&&e.removeLayer(ne),i&&e.removeSource(re)}catch(n){}};e.isStyleLoaded()?t():e.once("style.load",t)},[i,r,a,n]),A.useEffect(()=>{var A;const e=null==(A=null==i?void 0:i.getMap)?void 0:A.call(i);if(e&&r)try{e.getLayer(ne)&&e.setPaintProperty(ne,"fill-opacity",o)}catch{}},[i,o,r]),A.useEffect(()=>()=>{var A;const e=null==(A=null==i?void 0:i.getMap)?void 0:A.call(i);if(e)try{e.getLayer(ne)&&e.removeLayer(ne),e.getSource(re)&&e.removeSource(re)}catch{}},[i]);const h=(null==a?void 0:a.features.length)??0;return h>0&&r?t.jsx("div",{"data-testid":"wardriving-hexlayer-maplibre-active","data-point-count":(null==e?void 0:e.length)||0,"data-cell-count":h,"data-terrain-enabled":n,"data-is-processing":l,style:{display:"none"}}):null}const le="terrain-dem",ce="terrain-hillshade";function ue({enabled:e,exaggeration:t=2}){const{current:r}=L(),n=A.useRef(null);return A.useEffect(()=>{var A;const o=null==(A=null==r?void 0:r.getMap)?void 0:A.call(r);if(!o)return;let i=!0;const a=()=>{var A,r;if(i)try{if(o.getSource(le)||o.addSource(le,{type:"raster-dem",tiles:["https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png"],encoding:"terrarium",tileSize:256,maxzoom:10}),e){if(o.setCenterClampedToGround(!1),o.setTerrain({source:le,exaggeration:t}),!o.getLayer(ce)){const e=null==(r=null==(A=o.getStyle())?void 0:A.layers)?void 0:r.find(A=>"symbol"===A.type);o.addLayer({id:ce,type:"hillshade",source:le,paint:{"hillshade-shadow-color":"rgba(10, 10, 10, 0.5)","hillshade-highlight-color":"rgba(200, 195, 185, 0.4)","hillshade-accent-color":"rgba(80, 65, 55, 0.35)","hillshade-illumination-direction":315,"hillshade-exaggeration":.25}},null==e?void 0:e.id)}o.setMaxPitch(70),o.getPitch()<30&&!o.isMoving()&&(null!==n.current&&clearTimeout(n.current),n.current=window.setTimeout(()=>{n.current=null,i&&!o.isMoving()&&o.getPitch()<30&&o.easeTo({pitch:45,duration:1e3})},200))}else o.setTerrain(null),o.setCenterClampedToGround(!0),o.getLayer(ce)&&o.removeLayer(ce),o.getSource(le)&&o.removeSource(le),o.getPitch()>0&&!o.isMoving()&&o.easeTo({pitch:0,duration:800}),o.setMaxPitch(60)}catch(a){}};let s=null;return o.isStyleLoaded()?a():(s=a,o.once("style.load",a)),()=>{if(i=!1,null!==n.current&&(clearTimeout(n.current),n.current=null),s)try{o.off("style.load",s)}catch{}try{o.isStyleLoaded()&&(o.setTerrain(null),o.getLayer(ce)&&o.removeLayer(ce),o.getSource(le)&&o.removeSource(le))}catch{}}},[r,e,t]),null}function de(A,e=!1,t=!1,r=!1,n=.7){const o=iA();return r?n>=.75?o.restBright:o.rest:n>=.85?o.rest:o.restDim}function fe(A){return[A[1],A[0]]}function ge(A){return A<.5?4*A*A*A:1-Math.pow(-2*A+2,3)/2}function he(A,e,t,r,n,o,i,a,s,l,c){const u=mA(),d=[];let f=1/0,g=-1/0;const h=[];for(const b of A){const A=.7*(b.edge.avgConfidence??(e?.7:.5))+b.edge.certainCount/Math.max(i,1)*.3+(e?.5:0);h.push({polyline:b,brightnessScore:A}),f=Math.min(f,A),g=Math.max(g,A)}if(0===h.length)return{type:"FeatureCollection",features:[]};const m=g-f||1;h.sort((A,e)=>A.brightnessScore-e.brightnessScore);for(const{polyline:b,brightnessScore:p}of h){const{from:A,to:i,edge:g}=b,h=t.get(g.key)??0;if(h<=0)continue;const x=a.has(g.key),v=s.has(g.key),w=g.avgConfidence??(e?.7:.5),y=l===g.key,k=c[g.fromHash],C=c[g.toHash],B=(null==k?void 0:k.node_name)||(null==k?void 0:k.name)||g.fromHash.slice(0,8),D=(null==C?void 0:C.node_name)||(null==C?void 0:C.name)||g.toHash.slice(0,8),E=[A[0]+(i[0]-A[0])*h,A[1]+(i[1]-A[1])*h];let M,Q,N,j;if(e){const A=o.get(g.key)??dA(g.certainCount),e=n.get(g.key)??A;M=e+(A-e)*r,y?M=Math.max(1.6*M,4.5):v&&(M*=1.3)}else M=1.5;if(Q=y?u.edges.highlight:de(0,g.isDirectPathEdge??!1,x,v,w),N=y?u.edges.highlight:g.isDirectPathEdge?u.edges.hoverDirect:x?u.edges.hoverLoop:u.edges.hoverStandard,e){const A=Math.min(1.5*h,1)*u.edgeOpacity;j=v?1.15*A:A}else j=(.3+.3*w)*h;y&&(j=.95);const P=(p-f)/m;d.push({type:"Feature",properties:{key:g.key,baseColor:Q,hoverColor:N,baseWidth:M,baseOpacity:j,brightnessScore:P,isLoopEdge:x,isBackbone:v,isDirectPath:g.isDirectPathEdge??!1,isHubConnection:g.isHubConnection??!1,isZeroHop:g.isZeroHop??!1,isValidated:e,certainCount:g.certainCount,confidence:w,symmetryRatio:g.symmetryRatio??1,dominantDirection:g.dominantDirection??"balanced",fromName:B,toName:D,fromHash:g.fromHash,toHash:g.toHash},geometry:{type:"LineString",coordinates:[fe(A),fe(E)]}})}return{type:"FeatureCollection",features:d}}function me(A){const e=mA(),t=[];for(const{from:r,to:n,hash:o,neighbor:i,lastHopData:a}of A){const A=`neighbor-${o}`,s=(null==a?void 0:a.avgRssi)??i.rssi??null,l=(null==a?void 0:a.avgSnr)??i.snr??null,c=(null==a?void 0:a.count)??0,u=(null==a?void 0:a.confidence)??1;t.push({type:"Feature",properties:{key:A,hash:o,name:i.node_name||i.name||o.slice(0,8),prefix:o.slice(2,4).toUpperCase(),color:e.neighborColor,width:2.5,opacity:.85,rssi:s,snr:l,packetCount:c,confidence:u,hasAvgRssi:void 0!==(null==a?void 0:a.avgRssi),hasAvgSnr:void 0!==(null==a?void 0:a.avgSnr),isNeighborEdge:!0},geometry:{type:"LineString",coordinates:[fe(r),fe(n)]}})}return{type:"FeatureCollection",features:t}}function be(A){return A<.5?4*A*A*A:1-Math.pow(-2*A+2,3)/2}function pe(A,e){if(A<240)return.5;if(A<480)return 1;const t=(A-480)/(e-480);return Math.max(0,.33*(1-t))}function xe(A,e,t){const r=t?X(t):null,n=[];for(const o of A){if(r&&o.toUpperCase()===r){t&&n.push(t);continue}const A=e.get(o.toUpperCase());A&&n.push(A)}return n}const ve="edge-blink-source",we=1e3;function ye(A){return A<0||A>=we?0:1-A/we}function ke(A){return[A[1],A[0]]}const Ce="node-markers-native",Be="node-markers-layer",De="node-markers-layer-local",Ee="marker-standard",Me="marker-standard-neighbor",Qe="marker-hub",Ne="marker-hub-neighbor",je="marker-gateway",Pe="marker-gateway-neighbor",Fe="marker-mobile",Se="marker-mobile-neighbor",Te="marker-room-server",Ie="marker-room-server-neighbor",Re="marker-local",Le="marker-blink-black",_e="marker-blink-black-local",He="marker-blink",ze="marker-blink-local",Ge=24;function Ue(A){var e;const t=null==(e=A.contact_type)?void 0:e.toLowerCase();return"room server"===t||"room_server"===t||"room"===t||"server"===t}function Oe(A){return A.startsWith("0x")?A.slice(2,4).toUpperCase():A.slice(0,2).toUpperCase()}function Ye({neighborsWithLocation:e,localNode:r,localHash:n,zeroHopNeighbors:o,lastHopNeighborMap:i,meshTopology:a,hoveredMarker:s,onMarkerHover:l,getNodeOpacity:c,shouldShowNode:u,onRequestRemove:d,openPopupId:f,onOpenPopup:g,onClosePopup:h,blinkingNodes:m}){const{current:b}=L(),p=A.useRef(!1),[x,v]=A.useState(!1);A.useEffect(()=>{var A;const e=null==(A=null==b?void 0:b.getMap)?void 0:A.call(b);if(!e)return;const t=()=>{if(!p.current)try{!function(A){const e=oA(),t=(A,e,t=0,r=!1)=>{const n=document.createElement("canvas");n.width=Ge,n.height=Ge;const o=n.getContext("2d",r?{colorSpace:"display-p3"}:void 0),i=10-t/2;return o.beginPath(),o.arc(12,12,i,0,2*Math.PI),o.fillStyle=A,o.fill(),e&&t>0&&(o.strokeStyle=e,o.lineWidth=2*t,o.stroke()),o.shadowColor="rgba(0,0,0,0.3)",o.shadowBlur=4,o.shadowOffsetY=2,o.getImageData(0,0,Ge,Ge)},r=(A,e=!1)=>{const t=document.createElement("canvas");t.width=Ge,t.height=Ge;const r=t.getContext("2d",e?{colorSpace:"display-p3"}:void 0),n=9.600000000000001;return r.strokeStyle=A,r.lineWidth=5,r.lineCap="round",r.lineJoin="round",r.beginPath(),r.moveTo(12-n,12),r.lineTo(12,12-n),r.lineTo(21.6,12),r.stroke(),r.beginPath(),r.moveTo(12-.7*n,12),r.lineTo(12-.7*n,18.72),r.lineTo(18.72,18.72),r.lineTo(18.72,12),r.stroke(),r.beginPath(),r.moveTo(10.08,18.72),r.lineTo(10.08,13.92),r.lineTo(13.92,13.92),r.lineTo(13.92,18.72),r.stroke(),r.getImageData(0,0,Ge,Ge)},n=(A,e)=>{const t=document.createElement("canvas");t.width=Ge,t.height=Ge;const r=t.getContext("2d"),n=9.600000000000001;return r.strokeStyle=A,r.lineWidth=5,r.lineCap="round",r.lineJoin="round",e&&(r.fillStyle=e),r.beginPath(),r.roundRect(12-n,12-.6*n,1.6*n,1.2*n,6),e&&r.fill(),r.stroke(),r.beginPath(),r.moveTo(9.12,17.76),r.lineTo(12-.6*n,21.6),r.lineTo(12,17.76),r.stroke(),r.getImageData(0,0,Ge,Ge)},o="#00FF00",i={[Ee]:t(e.nodeFill,e.nodeStroke,1.5),[Me]:t(e.neighborColor),[Qe]:t(e.hubColor),[Ne]:t(e.neighborColor),[je]:t(e.hubColor+"B3"),[Pe]:t(e.neighborColor),[Fe]:t("transparent",e.mobileColor,2),[Se]:t(e.neighborColor),[Te]:n(e.roomColor),[Ie]:n(e.neighborColor,"#1a1a1c"),[Re]:r(e.localColor),[Le]:t("#000000"),[_e]:r("#000000"),[He]:t(o,void 0,0,!0),[ze]:r(o,!0)};for(const[a,s]of Object.entries(i))A.hasImage(a)&&A.removeImage(a),A.addImage(a,s,{pixelRatio:2})}(e),p.current=!0,v(!0)}catch(A){}};e.isStyleLoaded()?t():e.once("style.load",t);const r=()=>{p.current=!1,t()},n=new MutationObserver(A=>{for(const e of A)if("data-theme"===e.attributeName){setTimeout(r,100);break}});return n.observe(document.documentElement,{attributes:!0}),()=>{n.disconnect()}},[b]);const w=A.useMemo(()=>{var A;const t=[],r=[...e].sort(([A,e],[t,r])=>{const n=(A,e)=>{var t;return Ue(e)?5e3:o.has(A)?3e3:a.hubNodes.includes(A)?2e3:(null==(t=a.gatewayNodes)?void 0:t.includes(A))?1e3:0};return n(A,e)-n(t,r)});for(const[e,n]of r){if(!n.latitude||!n.longitude)continue;const r=u(e),s=c(e,r);if(s<=.01)continue;const l=o.has(e),d=a.hubNodes.includes(e),f=(null==(A=a.gatewayNodes)?void 0:A.includes(e))??!1,g=a.mobileNodes.includes(e),h=Ue(n),b=a.centrality.get(e)||0,p=i.get(e),x="stale"===(null==p?void 0:p.status),v=x?Math.min(s,.5):s;let w="standard";h?w="roomServer":d?w="hub":f?w="gateway":g&&(w="mobile");const y=a.fullAffinity.get(e),k=a.txDelayRecommendations.get(e);t.push({type:"Feature",geometry:{type:"Point",coordinates:[n.longitude,n.latitude]},properties:{hash:e,name:n.node_name||n.name||"Unknown",hashPrefix:Oe(e),iconType:w,isNeighbor:l,isHub:d,isGateway:f,isMobile:g,isRoomServer:h,isStale:x,isZeroHop:l,opacity:v,blinkIntensity:(null==m?void 0:m.get(e))??0,lastSeenTimestamp:null==p?void 0:p.lastSeen,centrality:b,neighborJson:JSON.stringify(n),affinityJson:y?JSON.stringify(y):void 0,txDelayRecJson:k?JSON.stringify(k):void 0,meanSnr:(null==p?void 0:p.avgSnr)??void 0,meanRssi:(null==p?void 0:p.avgRssi)??void 0}})}return{type:"FeatureCollection",features:t}},[e,o,i,a,c,u,m]),y=A.useMemo(()=>{if(!(null==r?void 0:r.latitude)||!(null==r?void 0:r.longitude))return{type:"FeatureCollection",features:[]};const A=n?(null==m?void 0:m.get(n))??0:0;return{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:[r.longitude,r.latitude]},properties:{hash:"local",name:r.name,hashPrefix:n?Oe(n):"",iconType:"local",isNeighbor:!1,isHub:!1,isGateway:!1,isMobile:!1,isRoomServer:!1,isStale:!1,isZeroHop:!1,opacity:1,blinkIntensity:A,centrality:0}}]}},[r,n,m]),k=A.useCallback(A=>{var e;if(!A.features||0===A.features.length)return;const t=null==(e=A.features[0].properties)?void 0:e.hash;t&&g&&g(t)},[g]),C=A.useCallback(A=>{var e,t;if(!A.features||0===A.features.length)return;const r=null==(e=null==b?void 0:b.getMap)?void 0:e.call(b);r&&(r.getCanvas().style.cursor="pointer");const n=null==(t=A.features[0].properties)?void 0:t.hash;n&&l(n)},[b,l]),B=A.useCallback(()=>{var A;const e=null==(A=null==b?void 0:b.getMap)?void 0:A.call(b);e&&(e.getCanvas().style.cursor=""),l(null)},[b,l]);A.useEffect(()=>{var A;const e=null==(A=null==b?void 0:b.getMap)?void 0:A.call(b);if(!e||!x)return;const t=[Be,De];for(const r of t)e.on("click",r,k),e.on("mouseenter",r,C),e.on("mouseleave",r,B);return()=>{for(const A of t)e.off("click",A,k),e.off("mouseenter",A,C),e.off("mouseleave",A,B)}},[b,x,k,C,B]);const D=A.useMemo(()=>{if(!f)return null;if("local"===f&&r)return{longitude:r.longitude,latitude:r.latitude,isLocal:!0,name:r.name,hash:n};const A=w.features.find(A=>A.properties.hash===f);if(!A)return null;const e=A.properties,t=e.txDelayRecJson?JSON.parse(e.txDelayRecJson):void 0;return{longitude:A.geometry.coordinates[0],latitude:A.geometry.coordinates[1],isLocal:!1,hash:e.hash,hashPrefix:e.hashPrefix,name:e.name,isHub:e.isHub,isGateway:e.isGateway,isBackbone:"backbone"===(null==t?void 0:t.networkRole),isZeroHop:e.isZeroHop,isMobile:e.isMobile,isRoomServer:e.isRoomServer,isStale:e.isStale,lastSeenTimestamp:e.lastSeenTimestamp,centrality:e.centrality,neighbor:e.neighborJson?JSON.parse(e.neighborJson):void 0,affinity:e.affinityJson?JSON.parse(e.affinityJson):void 0,txDelayRec:t,meanSnr:e.meanSnr,meanRssi:e.meanRssi}},[f,r,n,w]);if(!x)return null;const E=oA(),M=["case",[">",["get","blinkIntensity"],.66],He,[">",["get","blinkIntensity"],.33],Le,["==",["get","iconType"],"roomServer"],["case",["get","isNeighbor"],Ie,Te],["==",["get","iconType"],"hub"],["case",["get","isNeighbor"],Ne,Qe],["==",["get","iconType"],"gateway"],["case",["get","isNeighbor"],Pe,je],["==",["get","iconType"],"mobile"],["case",["get","isNeighbor"],Se,Fe],["case",["get","isNeighbor"],Me,Ee]],Q=["interpolate",["linear"],["zoom"],6,.25,10,1];return t.jsxs(t.Fragment,{children:[t.jsx(_,{id:Ce,type:"geojson",data:w,children:t.jsx(H,{id:Be,type:"symbol",layout:{"icon-image":M,"icon-size":Q,"icon-allow-overlap":!0,"icon-ignore-placement":!0,"symbol-sort-key":["get","opacity"]},paint:{"icon-opacity":["get","opacity"]}})}),t.jsx(_,{id:`${Ce}-local`,type:"geojson",data:y,children:t.jsx(H,{id:De,type:"symbol",layout:{"icon-image":["case",[">",["get","blinkIntensity"],.66],ze,[">",["get","blinkIntensity"],.33],_e,Re],"icon-size":Q,"icon-allow-overlap":!0,"icon-ignore-placement":!0},paint:{"icon-opacity":1}})}),D&&h&&t.jsx(z,{longitude:D.longitude,latitude:D.latitude,offset:{center:[0,0],top:[0,10],"top-left":[6,10],"top-right":[-6,10],bottom:[0,-10],"bottom-left":[6,-10],"bottom-right":[-6,-10],left:[10,0],right:[-10,0]},maxWidth:"280px",closeOnClick:!0,onClose:h,className:"maplibre-popup",children:D.isLocal?t.jsxs("div",{className:"text-sm",children:[t.jsx("strong",{className:"text-base",children:D.name}),D.hash&&t.jsx("span",{className:"ml-2 font-mono text-xs text-text-muted bg-surface-elevated px-1.5 py-0.5 rounded",children:Oe(D.hash)}),t.jsx("br",{}),t.jsx("span",{style:{color:E.localColor},className:"font-medium",children:"This Node (Local)"}),t.jsx("br",{}),r&&t.jsxs("span",{className:"text-xs text-text-muted",children:[r.latitude.toFixed(5),", ",r.longitude.toFixed(5)]})]}):D.neighbor&&D.hash?t.jsx(vA,{hash:D.hash,hashPrefix:D.hashPrefix,name:D.name,isHub:D.isHub,isGateway:D.isGateway,isBackbone:D.isBackbone,isZeroHop:D.isZeroHop,isMobile:D.isMobile,isRoomServer:D.isRoomServer,isStale:D.isStale,lastSeenTimestamp:D.lastSeenTimestamp,centrality:D.centrality,affinity:D.affinity,meanSnr:D.meanSnr,meanRssi:D.meanRssi,neighbor:D.neighbor,txDelayRec:D.txDelayRec,onRemove:d?()=>d(D.hash,D.name):void 0}):null})]})}const Ve=A.createContext(null);function We({children:e}){const{current:r}=L(),n=A.useRef(null),o=A.useRef(new Map),[i,a]=A.useState(!1),s=A.useRef(null),l=A.useRef(!1);A.useEffect(()=>{const A=null==r?void 0:r.getMap();if(A)return n.current||(n.current=new uA({interleaved:!0,useDevicePixels:!0,layers:[]}),A.addControl(n.current),a(!0)),()=>{if(null!==s.current&&(cancelAnimationFrame(s.current),s.current=null),n.current&&A){try{A.removeControl(n.current)}catch{}n.current=null,a(!1)}}},[r]);const c=A.useCallback(()=>{if(s.current=null,!n.current||!l.current)return;l.current=!1;const A=[],e=Array.from(o.current.keys()).sort();for(const r of e){const e=o.current.get(r);if(e&&e.length>0){const t=e.filter(A=>null!=A&&null!=A.id);A.push(...t)}}try{n.current.setProps({layers:A})}catch(t){}},[]),u=A.useCallback(()=>{l.current=!0,null===s.current&&(s.current=requestAnimationFrame(c))},[c]),d=A.useCallback((A,e)=>{0===e.length?o.current.delete(A):o.current.set(A,e),u()},[u]);return t.jsx(Ve.Provider,{value:{setLayers:d,isReady:i},children:e})}const Ze="topology-validated-edges-native",Je="topology-weak-edges-native",Ke="neighbor-edges-native",Xe="topology-weak-edges-native",qe="topology-validated-edges-native",$e="neighbor-edges-native",At={type:"FeatureCollection",features:[]},et={"line-cap":"round","line-join":"round"},tt={"line-color":"transparent","line-width":16,"line-opacity":0};function rt({showTopology:e,isExiting:r,hoveredEdgeKey:n,highlightedLoopEdges:o,onEdgeHover:i,onLoopHover:a,loops:s=[],neighborNames:l={},opacityBias:c=.5,widthMultiplier:u=1,trafficFilter:d=0,showNeighborLines:f=!0,disableHover:g=!1}){const{current:h}=L(),m=e||r,b=!0,p=f?"visible":"none",x=g||r,v=A.useRef(null),w=A.useRef(x);w.current=x;const y=A.useMemo(()=>function(A){const e=new Map;for(const t of A)for(const A of t.edgeKeys){const r=e.get(A)??[];r.push(t),e.set(A,r)}return e}(s),[s]),k=A.useRef(y);k.current=y;const C=A.useRef(l);C.current=l;const B=A.useRef(a);B.current=a;const D=A.useCallback(A=>{var e,t;if(w.current)return;if(!A.features||0===A.features.length)return;const r=A.features[0].properties;if(!(null==r?void 0:r.key))return;const n=r.key;if(n!==v.current){v.current=n;const o=!0===r.isNeighborEdge||"true"===r.isNeighborEdge,a=!0===r.isLoopEdge||"true"===r.isLoopEdge;if(o){const t={key:n,fromName:"Local",toName:r.name,certainCount:Number(r.packetCount)||0,confidence:1,isBackbone:!1,isLoopEdge:!1,isDirectPath:!0,isZeroHop:!0,symmetryRatio:1,dominantDirection:"balanced",isHubConnection:!1};i(n,[A.lngLat.lng,A.lngLat.lat],t),null==(e=B.current)||e.call(B,null)}else if(a&&B.current){const e=k.current.get(n)??[];if(e.length>0){const t=new Set;for(const A of e)for(const e of A.edgeKeys)t.add(e);const r={loops:e,highlightedEdgeKeys:t,hoveredEdgeKey:n,nodeNames:e[0].nodes.map(A=>C.current[A]||A.substring(0,4))};B.current(r,[A.lngLat.lng,A.lngLat.lat]),i(n)}else{const e={key:n,fromName:r.fromName,toName:r.toName,certainCount:Number(r.certainCount),confidence:Number(r.confidence),isBackbone:!0===r.isBackbone||"true"===r.isBackbone,isLoopEdge:!0,isDirectPath:!0===r.isDirectPath||"true"===r.isDirectPath,isZeroHop:!0===r.isZeroHop||"true"===r.isZeroHop,symmetryRatio:Number(r.symmetryRatio),dominantDirection:r.dominantDirection,isHubConnection:!0===r.isHubConnection||"true"===r.isHubConnection};i(n,[A.lngLat.lng,A.lngLat.lat],e)}}else{const e={key:n,fromName:r.fromName,toName:r.toName,certainCount:Number(r.certainCount),confidence:Number(r.confidence),isBackbone:!0===r.isBackbone||"true"===r.isBackbone,isLoopEdge:a,isDirectPath:!0===r.isDirectPath||"true"===r.isDirectPath,isZeroHop:!0===r.isZeroHop||"true"===r.isZeroHop,symmetryRatio:Number(r.symmetryRatio),dominantDirection:r.dominantDirection,isHubConnection:!0===r.isHubConnection||"true"===r.isHubConnection};i(n,[A.lngLat.lng,A.lngLat.lat],e),null==(t=B.current)||t.call(B,null)}}},[i]),E=A.useCallback(()=>{var A;null!==v.current&&(v.current=null,i(null),null==(A=B.current)||A.call(B,null))},[i]);A.useEffect(()=>{var A;const e=null==(A=null==h?void 0:h.getMap)?void 0:A.call(h);if(!e||!m)return;const t="topology-validated-edges-hitarea-native",r=()=>{try{return e.getStyle()&&e.getLayer(t)}catch{return!1}},n=()=>!!r()&&(e.on("mousemove",t,D),e.on("mouseleave",t,E),!0);if(!n()){const A=()=>{n()&&e.off("styledata",A)};return e.on("styledata",A),()=>{try{e.off("styledata",A),r()&&(e.off("mousemove",t,D),e.off("mouseleave",t,E))}catch{}}}return()=>{try{r()&&(e.off("mousemove",t,D),e.off("mouseleave",t,E))}catch{}}},[h,m,D,E]),A.useEffect(()=>{var A;const e=null==(A=null==h?void 0:h.getMap)?void 0:A.call(h);if(!e||!f)return;const t="neighbor-edges-hitarea-native",r=()=>{try{return e.getStyle()&&e.getLayer(t)}catch{return!1}},n=()=>!!r()&&(e.on("mousemove",t,D),e.on("mouseleave",t,E),!0);if(!n()){const A=()=>{n()&&e.off("styledata",A)};return e.on("styledata",A),()=>{try{e.off("styledata",A),r()&&(e.off("mousemove",t,D),e.off("mouseleave",t,E))}catch{}}}return()=>{try{r()&&(e.off("mousemove",t,D),e.off("mouseleave",t,E))}catch{}}},[h,b,f,D,E]),A.useEffect(()=>{var A;const e=null==(A=null==h?void 0:h.getMap)?void 0:A.call(h);if(!e)return;let t=null;const r=(A,t)=>{try{if(e.getLayer(A)&&e.getLayer(t))return e.moveLayer(A,t),!0}catch{}return!1},n=()=>{try{if(!e.getLayer("node-markers-layer"))return;r($e,"node-markers-layer"),r("neighbor-edges-hitarea-native",$e),(r(qe,"neighbor-edges-hitarea-native")||r(qe,"node-markers-layer"))&&r("topology-validated-edges-hitarea-native",qe),r(Xe,"topology-validated-edges-hitarea-native")}catch{}},o=()=>{t&&clearTimeout(t),t=setTimeout(n,50)},i=setTimeout(n,100);e.on("styledata",o);const a=A=>{(A.sourceId===Ze||A.sourceId===Je||A.sourceId===Ke)&&o()};return e.on("sourcedata",a),()=>{clearTimeout(i),t&&clearTimeout(t);try{e.off("styledata",o),e.off("sourcedata",a)}catch{}}},[h,m,b,f]);const M=x?null:n,Q=function(A,e,t,r,n){const o=mA(),i=null!==A,a=n&&n.size>0,s=a?Array.from(n):[],l=e<=0?["get","baseColor"]:["case",[">=",["get","brightnessScore"],1-.5*e],"#FFFFFF",["get","baseColor"]],c=e<=0?1:["max",.1,["+",1,["*",e,3,["-",["get","brightnessScore"],.5]]]],u=a?["in",["get","key"],["literal",s]]:!!i&&["==",["get","key"],A],d=i||a,f=o.edges.hoverLoop??"#A78BFA";return{"line-color":d?["case",u,a?f:["get","hoverColor"],l]:l,"line-width":d?["case",u,["max",["*",["get","baseWidth"],t,1.3],3.5],["*",["get","baseWidth"],t]]:["*",["get","baseWidth"],t],"line-opacity":["case",["<",["get","brightnessScore"],r],0,d?["case",u,["min",["*",["get","baseOpacity"],1.25],1],["*",["get","baseOpacity"],c,.35]]:["*",["get","baseOpacity"],c]]}}(M,c,u,d,x?null:o),N=function(A){const e=mA(),t=null!==A;return{"line-color":t?["case",["==",["get","key"],A],e.edges.neighborHover,e.neighborColor]:e.neighborColor,"line-width":t?["case",["==",["get","key"],A],3.5,2.5]:2.5,"line-opacity":t?["case",["==",["get","key"],A],1,.35]:.85}}(M);return t.jsxs(t.Fragment,{children:[m&&t.jsx(_,{id:Je,type:"geojson",data:At,children:t.jsx(H,{id:Xe,type:"line",paint:Q,layout:et})}),m&&t.jsxs(_,{id:Ze,type:"geojson",data:At,children:[t.jsx(H,{id:"topology-validated-edges-hitarea-native",type:"line",paint:tt,layout:et}),t.jsx(H,{id:qe,type:"line",paint:Q,layout:et})]}),t.jsxs(_,{id:Ke,type:"geojson",data:At,children:[t.jsx(H,{id:"neighbor-edges-hitarea-native",type:"line",paint:tt,layout:{...et,visibility:p}}),t.jsx(H,{id:$e,type:"line",paint:N,layout:{...et,visibility:p}})]})]})}const nt=["topology-validated-edges-hitarea-native","topology-validated-edges-native","topology-weak-edges-native","neighbor-edges-hitarea-native","neighbor-edges-native"];function ot({positions:e}){const{current:t}=L(),r=A.useRef(!1);return A.useEffect(()=>{if(!t||0===e.length||r.current)return;const A=()=>{if(t.getMap().isMoving())setTimeout(A,100);else if(r.current=!0,1===e.length)t.flyTo({center:[e[0][1],e[0][0]],zoom:14,duration:1e3});else{const A=e.map(([A,e])=>[e,A]);let r=1/0,n=-1/0,o=1/0,i=-1/0;for(const[e,t]of A)r=Math.min(r,e),n=Math.max(n,e),o=Math.min(o,t),i=Math.max(i,t);const a=[[r,o],[n,i]];t.fitBounds(a,{padding:{top:15,bottom:15,left:15,right:15},maxZoom:16,duration:1e3})}};setTimeout(A,50)},[t,e]),null}function it({targetHash:e,nodeCoordinates:t,onComplete:r}){const{current:n}=L(),o=A.useRef(null);return A.useEffect(()=>{if(!n||!e||e===o.current)return;const A=t.get(e);if(!A)return;const i=n.getMap();i.isMoving()&&i.stop(),o.current=e;const[a,s]=A;n.flyTo({center:[s,a],zoom:15,duration:2500,essential:!0}),setTimeout(()=>{null==r||r()},2600)},[e,t,n,r]),null}function at({highlightedEdgeKey:e,validatedPolylines:t,weakPolylines:r,onEnsureTopology:n}){const{current:o}=L(),i=A.useRef(null);return A.useEffect(()=>{if(!o||!e)return;if(e===i.current)return;i.current=e,n();const A=t.find(A=>A.edge.key===e)||r.find(A=>A.edge.key===e);if(!A)return;if(o.getMap().isMoving())return;const a=(A.from[0]+A.to[0])/2,s=(A.from[1]+A.to[1])/2,l=o.getZoom(),c=Math.max(l,11);o.easeTo({center:[s,a],zoom:c,duration:500})},[e,t,r,o,n]),null}!function(A){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(A);e&&(parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16))}(hA.edges.neighborHover);const st={longitude:0,latitude:0,zoom:2};function lt({data:A}){const e=A.subtitle&&"loop"===A.type,r=A.subtitle&&"loop"!==A.type;return t.jsxs("div",{className:"w-[540px]",children:[t.jsxs("div",{className:"flex items-center justify-between h-5",children:[t.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[A.title.icon&&t.jsx("span",{className:`${A.title.color} text-base leading-none flex-shrink-0`,children:A.title.icon}),t.jsx("span",{className:`${A.title.color} font-semibold text-[13px] truncate`,children:A.title.text}),r&&t.jsx("span",{className:`${A.subtitle.color} text-[11px] flex-shrink-0`,children:A.subtitle.text})]}),A.badges.length>0&&t.jsx("div",{className:"flex items-center gap-2 flex-shrink-0 ml-3",children:A.badges.map((A,e)=>t.jsx("span",{className:`${A.color} text-[11px] font-medium`,children:A.text},e))})]}),e&&t.jsx("div",{className:"h-4 mt-0.5 overflow-hidden",children:t.jsx("span",{className:"font-mono text-[10px] text-text-muted truncate block",children:A.subtitle.text})}),t.jsx("div",{className:`flex items-center gap-4 h-4 ${e?"mt-1":"mt-1.5"} text-[11px]`,children:A.stats.map((A,e)=>t.jsxs("span",{className:`${A.color??"text-text-secondary"} whitespace-nowrap`,children:[t.jsx("span",{className:"text-text-primary tabular-nums",children:A.value}),t.jsx("span",{className:"text-text-muted ml-1",children:A.label}),A.unit&&t.jsx("span",{className:"text-text-muted/50 ml-0.5",children:A.unit})]},e))})]})}function ct({neighbors:e,localNode:r,localHash:n,onRemoveNode:o,selectedNodeHash:i,onNodeSelected:a,highlightedEdgeKey:s}){var l,c;const u=A.useRef(null),d=q(),f=$(),g=AA(),h=eA(),m=tA(),b=n??m,[p,x]=A.useState(st),[v,w]=A.useState(!1),[y,k]=A.useState(!1),[C,B]=A.useState(!0),[D,E]=A.useState(!0),[M,Q]=A.useState(!1),[N,j]=A.useState(!1),[P,F]=A.useState(!1),[S,T]=A.useState(!1),[I,R]=A.useState(null),[L,_]=A.useState(null),[H]=A.useState(0),[z]=A.useState(.5),[Y]=A.useState(0),[V,W]=A.useState(null),[Z,nA]=A.useState(""),[oA,iA]=A.useState(!1),[aA,sA]=A.useState("fetching"),[lA,cA]=A.useState(!1),[uA,fA]=A.useState(0),[hA,mA]=A.useState(null),pA=A.useCallback(A=>mA(A),[]),xA=A.useCallback(()=>mA(null),[]),vA=TA(A=>A.coveragePoints),yA=TA(A=>A.isVisible),CA=TA(A=>A.brightness),DA=TA(A=>A.openModal),EA=A.useRef(!1);A.useEffect(()=>{vA.length>0&&yA&&!EA.current&&(B(!1),EA.current=!0)},[vA.length,yA]);const MA=A.useRef(null);A.useEffect(()=>{if(i&&i!==MA.current){MA.current=i;const A=setTimeout(()=>{mA(i)},1250);return()=>clearTimeout(A)}},[i]);const[QA,NA]=A.useState(null),[jA,PA]=A.useState(null),FA=A.useCallback((A,e,t)=>{_(A),A&&e&&t?NA({longitude:e[0],latitude:e[1],type:"topology",properties:{key:t.key,fromName:t.fromName,toName:t.toName,certainCount:t.certainCount,confidence:t.confidence,isBackbone:t.isBackbone,isLoopEdge:t.isLoopEdge,isDirectPath:t.isDirectPath,isHubConnection:t.isHubConnection,color:"",width:0,opacity:0,symmetryRatio:t.symmetryRatio,dominantDirection:t.dominantDirection}}):A||NA(null)},[]),SA=A.useCallback((A,e)=>{PA(A),A&&NA(null)},[]),IA=A.useMemo(()=>{const A={};for(const[t,r]of Object.entries(e))A[t]=r.node_name||r.name||t.substring(0,4);return b&&(A[b]="You"),A},[e,b]),LA=A.useMemo(()=>Object.entries(e).filter(([,A])=>A.latitude&&A.longitude),[e]),_A=A.useMemo(()=>{const A=[];(null==r?void 0:r.latitude)&&(null==r?void 0:r.longitude)&&A.push([r.latitude,r.longitude]);for(const[,e]of LA)e.latitude&&e.longitude&&A.push([e.latitude,e.longitude]);return A},[r,LA]),HA=A.useMemo(()=>{const A=new Map;b&&(null==r?void 0:r.latitude)&&(null==r?void 0:r.longitude)&&A.set(b,[r.latitude,r.longitude]);for(const[e,t]of LA)t.latitude&&t.longitude&&A.set(e,[t.latitude,t.longitude]);return A},[b,r,LA]),zA=A.useMemo(()=>{const A=new Map;for(const e of g)"expired"!==e.status&&A.set(e.hash,{hash:e.hash,prefix:e.prefix,count:e.count,avgRssi:e.avgRssi,avgSnr:e.avgSnr,lastSeen:e.lastSeen,confidence:1,status:e.status});return A},[g]),GA=A.useMemo(()=>{var A,t;const r=new Set;for(const n of zA.keys())(null==(A=e[n])?void 0:A.latitude)&&(null==(t=e[n])?void 0:t.longitude)&&r.add(n);return r},[zA,e]),UA=A.useCallback(A=>!!(b&&(A.fromHash===b&&GA.has(A.toHash)||A.toHash===b&&GA.has(A.fromHash))),[b,GA]),OA=A.useMemo(()=>{var A,t;if(0===g.length||!b)return[];if(h.backgroundLoadComplete)return[];const r=[];for(const n of g){if("expired"===n.status)continue;if(!(null==(A=e[n.hash])?void 0:A.latitude)||!(null==(t=e[n.hash])?void 0:t.longitude))continue;const o=[b,n.hash].sort(),i=`${o[0]}~${o[1]}`;r.push({fromHash:b,toHash:n.hash,key:i,packetCount:n.count,avgConfidence:1,strength:.8,avgRecency:1,hopDistanceFromLocal:0,isHubConnection:!1,isCertain:!0,certainCount:n.count,isLoopEdge:!1,forwardCount:n.count,reverseCount:0,symmetryRatio:0,dominantDirection:"forward",floodCount:n.count,directCount:0,isDirectPathEdge:!1,isZeroHop:!0,avgRssi:n.avgRssi,avgSnr:n.avgSnr})}return r},[g,b,h.backgroundLoadComplete,e]),YA=A.useMemo(()=>{const A=[];if(OA.length>0&&!h.backgroundLoadComplete){for(const e of OA){const t=HA.get(e.fromHash),r=HA.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A}for(const e of d.validatedEdges){if(UA(e))continue;const t=HA.get(e.fromHash),r=HA.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A},[d.validatedEdges,HA,UA,OA,h.backgroundLoadComplete]),VA=A.useMemo(()=>{const A=[];for(const e of d.weakEdges){if(UA(e))continue;const t=HA.get(e.fromHash),r=HA.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A},[d.weakEdges,HA,UA]),WA=A.useMemo(()=>{if(!(null==r?void 0:r.latitude)||!(null==r?void 0:r.longitude))return[];const A=[],t=[r.latitude,r.longitude];for(const r of GA){const n=e[r];(null==n?void 0:n.latitude)&&(null==n?void 0:n.longitude)&&A.push({from:t,to:[n.latitude,n.longitude],hash:r,neighbor:n,lastHopData:zA.get(r)??null})}return A},[r,GA,e,zA]),ZA=A.useMemo(()=>new Set(d.loopEdgeKeys),[d.loopEdgeKeys]),JA=A.useMemo(()=>new Set(d.backboneEdges),[d.backboneEdges]),KA=A.useMemo(()=>{let A=0;if(OA.length>0&&!h.backgroundLoadComplete){for(const e of OA)e.certainCount>A&&(A=e.certainCount);return A||1}for(const e of d.validatedEdges)e.certainCount>A&&(A=e.certainCount);return A||1},[d.validatedEdges,OA,h.backgroundLoadComplete]),XA=(null==(c=null==(l=u.current)?void 0:l.getMap)?void 0:c.call(l))??null,qA=J();!function({map:e,nodeCoordinates:t,packets:r,localHash:n,neighbors:o}){const i=A.useRef(!1),a=A.useRef(null),s=A.useRef([]),l=A.useRef(0),c=A.useRef(new Map),u=A.useRef(t);A.useEffect(()=>{u.current=t},[t]),A.useEffect(()=>{c.current=function(A,e){const t=new Map;for(const r of Object.keys(A)){const A=X(r);t.has(A)||t.set(A,r)}if(e){const A=X(e);t.set(A,e)}return t}(o,n)},[o,n]),A.useEffect(()=>{if(!e)return;let A=null,t=!1;const r=()=>{if(!t&&!i.current)try{if(e.getSource(ve))return void(i.current=!0);e.addSource(ve,{type:"geojson",data:{type:"FeatureCollection",features:[]}}),e.addLayer({id:"edge-blink-layer",type:"line",source:ve,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#00FFFF","line-width":2.5,"line-opacity":["interpolate",["linear"],["get","intensity"],0,0,.1,.8,.5,1,1,1]}}),i.current=!0,A&&(clearInterval(A),A=null)}catch(r){}};return e.isStyleLoaded()&&r(),e.once("style.load",()=>{r()}),i.current||(A=setInterval(()=>{i.current?A&&clearInterval(A):r()},100),setTimeout(()=>{A&&(clearInterval(A),A=null)},5e3)),()=>{t=!0,A&&clearInterval(A),null!==a.current&&(cancelAnimationFrame(a.current),a.current=null)}},[e]);const d=A.useRef(()=>{});A.useEffect(()=>{d.current=()=>{if(!e)return;const A=e.getSource(ve);if(!A)return;const t=performance.now(),r=s.current,n=[],o=[];for(const e of r){const A=t-e.startTime-e.delay;if(A0&&n.push({type:"Feature",properties:{intensity:t},geometry:{type:"LineString",coordinates:[e.fromCoord,e.toCoord]}})}}n.length,A.setData({type:"FeatureCollection",features:n}),s.current=o,o.length>0?a.current=requestAnimationFrame(()=>d.current()):a.current=null}},[e]);const f=A.useCallback(()=>{null===a.current&&(a.current=requestAnimationFrame(()=>d.current()))},[]);A.useEffect(()=>{if(!e||0===r.length)return;if(!i.current)return;const A=c.current,t=u.current;if(0===A.size)return;const o=l.current,a=r.filter(A=>(A.timestamp??0)>o);if(0===o)return void(l.current=Math.max(...r.map(A=>A.timestamp??0)));if(0===a.length)return;l.current=Math.max(...a.map(A=>A.timestamp??0));const d=performance.now();let g=0,h=!1,m=[],b=[];for(const e of a){const r=K(e,n);if(!r||r.original.length<2)continue;const o=r.original;let i=0;for(let e=0;e0&&(g+=150*i*.5)}h&&f()},[e,r,n,f])}({map:XA,nodeCoordinates:HA,packets:qA,localHash:n,neighbors:e});const{isExiting:$A,isAnimating:Ae,resetAnimationState:ee}=function({map:e,showTopology:t,validatedPolylines:r,weakPolylines:n,maxCertainCount:o,loopEdgeKeys:i,backboneEdgeKeys:a,highlightedEdgeKey:s,neighbors:l,validatedSourceId:c,weakSourceId:u,neighborPolylines:d=[],showNeighborLines:f=!0,neighborSourceId:g}){const h=A.useRef(new Map),m=A.useRef(1),b=A.useRef(new Map),p=A.useRef(new Map),x=A.useRef(!1),v=A.useRef(null),w=A.useRef(t),y=A.useRef(new Set),k=A.useRef(""),C=A.useRef(new Map),B=A.useRef(r),D=A.useRef(n),E=A.useRef(o),M=A.useRef(i),Q=A.useRef(a),N=A.useRef(s),j=A.useRef(l),P=A.useRef(d),F=A.useRef(f);A.useEffect(()=>{B.current=r,D.current=n,E.current=o,M.current=i,Q.current=a,N.current=s,j.current=l,P.current=d,F.current=f},[r,n,o,i,a,s,l,d,f]);const S=A.useCallback(()=>{if(!e)return;const A=e.getSource(c),t=e.getSource(u),r=e.getSource(g);if(A){const e=he(B.current,!0,h.current,m.current,b.current,p.current,E.current,M.current,Q.current,N.current,j.current);A.setData(e)}if(t){const A=he(D.current,!1,h.current,m.current,b.current,p.current,E.current,M.current,Q.current,N.current,j.current);t.setData(A)}if(r&&P.current.length>0){const A=me(P.current);r.setData(A)}},[e,c,u,g]),T=A.useCallback(()=>{v.current&&(cancelAnimationFrame(v.current),v.current=null),h.current=new Map,m.current=1,b.current=new Map,p.current=new Map,x.current=!1,y.current=new Set,k.current="",C.current=new Map},[]);return A.useEffect(()=>{const A=w.current,r=t;if(w.current=t,e){if(v.current&&(cancelAnimationFrame(v.current),v.current=null),A&&!r&&!x.current){x.current=!0;const A=new Map(h.current);let e=null;const t=r=>{e||(e=r);const n=r-e,o=Math.min(n/500,1),i=(a=o,1-Math.pow(1-a,3));var a;for(const[e,t]of A)h.current.set(e,t*(1-i));S(),o<1?v.current=requestAnimationFrame(t):(x.current=!1,h.current=new Map,y.current=new Set,k.current="",b.current=new Map,p.current=new Map,v.current=null,S())};v.current=requestAnimationFrame(t)}!A&&r&&(h.current=new Map,y.current=new Set,k.current="")}},[e,t,S]),A.useEffect(()=>{if(!t||x.current||!e)return;const A=[...r,...n],o=A.map(A=>`${A.edge.key}:${A.edge.certainCount}`).sort().join(","),i=0===y.current.size,a=""!==k.current&&k.current!==o;if(!i&&!a)return void S();const s=[],l=[];for(const{edge:e}of A)y.current.has(e.key)?l.push(e.key):s.push(e.key);a&&l.length>0&&(b.current=new Map(C.current),m.current=0),p.current=new Map;for(const{edge:e}of r){const A=dA(e.certainCount);p.current.set(e.key,A)}for(const e of s)h.current.set(e,0);for(const e of l)h.current.has(e)||h.current.set(e,1);if(s.length>0||a&&l.length>0){v.current&&(cancelAnimationFrame(v.current),v.current=null);let A=null;const e=Math.min(100,bA/Math.max(s.length,1)/2),t=r=>{A||(A=r);const n=r-A;for(let A=0;A0){const A=Math.min(n/bA,1);m.current=ge(A)}S();const o=bA+(s.length-1)*e;v.current=n{if(!e||!g)return;const A=()=>{const A=e.getSource(g);if(!A)return!1;if(d.length>0){const e=me(d);A.setData(e)}else A.setData({type:"FeatureCollection",features:[]});return!0};if(A())return;const t=r=>{r.sourceId===g&&A()&&e.off("sourcedata",t)};e.on("sourcedata",t);const r=()=>{A()&&(e.off("styledata",r),e.off("sourcedata",t))};return e.on("styledata",r),()=>{e.off("sourcedata",t),e.off("styledata",r)}},[e,g,d]),A.useEffect(()=>()=>{v.current&&(cancelAnimationFrame(v.current),v.current=null)},[]),{isExiting:x.current,isAnimating:null!==v.current,resetAnimationState:T,weightAnimProgress:m.current,animStartWeights:b.current,animTargetWeights:p.current}}({map:XA,showTopology:y,validatedPolylines:YA,weakPolylines:VA,maxCertainCount:KA,loopEdgeKeys:ZA,backboneEdgeKeys:JA,highlightedEdgeKey:s,neighbors:e,validatedSourceId:Ze,weakSourceId:Je,neighborPolylines:WA,showNeighborLines:C,neighborSourceId:Ke}),te=A.useMemo(()=>{const A=new Set;for(const e of d.hubNodes){A.add(e);for(const t of d.validatedEdges)t.fromHash===e&&A.add(t.toHash),t.toHash===e&&A.add(t.fromHash)}return A},[d.hubNodes,d.validatedEdges]),re=A.useMemo(()=>{const A=new Set;if(!n)return A;for(const e of d.validatedEdges)e.fromHash===n&&A.add(e.toHash),e.toHash===n&&A.add(e.fromHash);return A},[n,d.validatedEdges]),{getNodeOpacity:ne}=function({soloDirect:e,soloHubs:t,neighborHashes:r,hubConnectedNodes:n,directNodeSet:o,localConnectedNodes:i,showTopology:a}){const[s,l]=A.useState(new Map),c=A.useRef(e),u=A.useRef(t),d=A.useRef(new Map),f=A.useRef(null),g=A.useRef(n),h=A.useRef(o),m=A.useRef(i),b=A.useRef(a);return A.useEffect(()=>{g.current=n,h.current=o,m.current=i,b.current=a},[n,o,i,a]),A.useEffect(()=>{const A=c.current,n=u.current,o=e,i=t;if(c.current=e,u.current=t,A===o&&n===i)return;f.current&&(cancelAnimationFrame(f.current),f.current=null);const a=g.current,s=h.current,p=m.current,x=b.current;for(const e of r)d.current.has(e)||d.current.set(e,Math.random());const v=(A,e,t)=>{const r=a.has(A),n=s.has(A),o=x&&p.has(A);return!e&&!t||(e&&t?r||n||o:t?r:!e||n||o)},w=[];for(const e of r){const t=v(e,A,n),r=v(e,o,i);t!==r&&w.push({hash:e,startOpacity:t?1:0,targetOpacity:r?1:0})}if(0===w.length)return;l(A=>{const e=new Map(A);for(const{hash:t,startOpacity:r}of w)e.set(t,r);return e});const y=w;let k=null;const C=A=>{k||(k=A);const e=A-k;let t=!0;l(()=>{const A=new Map;for(const{hash:r,startOpacity:n,targetOpacity:o}of y){const i=250*(d.current.get(r)??0),a=Math.max(0,e-i),s=Math.min(a/500,1),l=n+(o-n)*be(s);A.set(r,l),s<1&&(t=!1)}return A}),e<750&&!t?f.current=requestAnimationFrame(C):(f.current=null,l(new Map))};return f.current=requestAnimationFrame(C),()=>{f.current&&(cancelAnimationFrame(f.current),f.current=null)}},[e,t,r]),{nodeOpacities:s,getNodeOpacity:(A,e)=>s.has(A)?s.get(A):e?1:0}}({soloDirect:P,soloHubs:S,neighborHashes:LA.map(([A])=>A),hubConnectedNodes:te,directNodeSet:GA,localConnectedNodes:re,showTopology:y}),{blinkingNodes:oe,blinkColor:ie}=function({neighbors:e,localHash:t,enabled:r=!0}){const[n,o]=A.useState(new Map),i=J(),a=A.useRef(0),s=A.useRef(null),l=A.useRef(new Map),c=A.useRef(new Map);A.useEffect(()=>{c.current=function(A){const e=new Map;for(const t of Object.keys(A)){const A=X(t);e.has(A)||e.set(A,t)}return e}(e)},[e]);const u=A.useRef(null);return A.useEffect(()=>{u.current=()=>{const A=performance.now(),e=l.current;if(0===e.size)return s.current=null,void o(new Map);const t=new Map,r=[];for(const[n,{startTime:o,staggerDelay:i}]of e){const e=A-o-i;if(e<0);else if(e>=750)r.push(n);else{const A=pe(e,750);A>0&&t.set(n,A)}}for(const n of r)e.delete(n);o(t),e.size>0&&u.current?s.current=requestAnimationFrame(u.current):s.current=null}},[]),A.useEffect(()=>{if(!r)return;if(0===i.length)return;const A=a.current,e=i.filter(e=>(e.timestamp??0)>A);if(0===A){const A=i.reduce((A,e)=>Math.max(A,e.timestamp??0),0);return void(a.current=A)}if(0===e.length)return;const n=e.reduce((A,e)=>Math.max(A,e.timestamp??0),0);a.current=n;const o=performance.now();let d=0;for(const r of e){const A=K(r,t);if(!A||0===A.original.length)continue;const e=xe(A.original,c.current,t);if(0===e.length)continue;const n=375;for(let t=0;t()=>{null!==s.current&&(cancelAnimationFrame(s.current),s.current=null)},[]),{blinkingNodes:n,blinkColor:"#00FF00"}}({neighbors:e,localHash:n,enabled:D}),ae=A.useCallback(A=>{if(!P&&!S)return!0;if(P)return GA.has(A);if(S){if(d.hubNodes.includes(A))return!0;for(const e of d.validatedEdges){if(e.fromHash===A&&d.hubNodes.includes(e.toHash))return!0;if(e.toHash===A&&d.hubNodes.includes(e.fromHash))return!0}return!1}return!0},[P,S,GA,d.hubNodes,d.validatedEdges]),le=A.useCallback(async()=>{cA(!0),iA(!0),sA("fetching"),fA(0),await f(),fA(h.packetCount),sA("analyzing"),await new Promise(A=>setTimeout(A,200)),sA("building");const A=Date.now(),e=Date.now()-A;e<1700&&await new Promise(A=>setTimeout(A,1700-e)),sA("complete"),await new Promise(A=>setTimeout(A,1e3)),iA(!1),cA(!1),ee(),setTimeout(()=>{k(!0)},150)},[f,ee,h.packetCount]),ce=A.useCallback(A=>{x(A.viewState)},[]),de=A.useCallback(()=>{w(A=>!A)},[]),fe=A.useCallback(()=>{k(A=>!A)},[]),Ce=A.useCallback(()=>{F(A=>!A)},[]),Be=A.useCallback(()=>{T(A=>!A)},[]),De=A.useCallback(()=>{B(A=>!A)},[]),Ee=A.useCallback(()=>{E(A=>!A)},[]),Me=A.useCallback(()=>{Q(A=>!A)},[]),Qe=A.useCallback(()=>{j(A=>{const e=!A;if(u.current){const A=u.current.getMap();A&&A.stop()}if(e&&u.current){const A=u.current.getMap();A&&A.easeTo({pitch:45,duration:1500,easing:A=>1-Math.pow(1-A,3)})}if(!e&&u.current){const A=u.current.getMap();A&&A.easeTo({pitch:0,bearing:0,duration:800,easing:A=>1-Math.pow(1-A,2)})}return e})},[]),Ne=A.useCallback(()=>{y||k(!0)},[y]),je=A.useCallback((A,e)=>{W(A),nA(e)},[]),Pe=A.useCallback(()=>{V&&o&&o(V),W(null),nA("")},[V,o]),Fe=A.useMemo(()=>[...nt],[]),Se=A.useCallback(A=>{var e,t;if(!A.features||0===A.features.length)return;const r=A.features[0],n=null==(e=r.layer)?void 0:e.id,o=r.properties;if(!(null==o?void 0:o.key))return;const i=null==n?void 0:n.startsWith("topology-"),a=null==n?void 0:n.startsWith("neighbor-");if(i||a){const e=o.key.replace(/-loop[12]$/,"");_(e),A.lngLat&&NA({longitude:A.lngLat.lng,latitude:A.lngLat.lat,type:i?"topology":"neighbor",properties:o})}try{(null==(t=u.current)?void 0:t.getCanvas())&&(u.current.getCanvas().style.cursor="pointer")}catch{}},[]),Te=A.useCallback(()=>{var A;_(null),NA(null);try{(null==(A=u.current)?void 0:A.getCanvas())&&(u.current.getCanvas().style.cursor="")}catch{}},[]),Ie=v?"map-container-fullscreen":"map-container-16-9";return t.jsxs("div",{className:`relative ${Ie}`,role:"application","aria-label":"Mesh network contacts map","aria-describedby":"map-instructions",children:[t.jsx("span",{id:"map-instructions",className:"sr-only",children:"Interactive map showing mesh network contacts. Use mouse or touch to pan and zoom. Press Tab to navigate map controls. Press Escape to exit fullscreen mode."}),t.jsx("div",{className:"relative w-full h-full "+(v?"":"rounded-[1.125rem] overflow-hidden"),children:t.jsxs(G,{ref:u,...p,onMove:ce,mapStyle:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",style:{width:"100%",height:"100%"},attributionControl:!1,interactiveLayerIds:Fe,onMouseMove:Se,onMouseLeave:Te,onLoad:A=>{const e=A.target;try{const A=e.getStyle();if(null==A?void 0:A.layers){const t=["road","highway","tunnel","bridge","motorway","trunk","primary","secondary","tertiary","street","path","track"],r=A=>t.some(e=>A.toLowerCase().includes(e));for(const n of A.layers)"fill"===n.type&&n.id.toLowerCase().includes("water")&&e.setPaintProperty(n.id,"fill-color","rgba(22, 26, 32, 1)"),"line"===n.type&&r(n.id)&&e.setPaintProperty(n.id,"line-color","rgba(25, 26, 29, 1)"),"symbol"===n.type&&(e.setPaintProperty(n.id,"text-color","rgba(108, 110, 120, 0.85)"),e.setPaintProperty(n.id,"text-halo-color","rgba(8, 9, 11, 0.9)"),e.setPaintProperty(n.id,"text-halo-width",1),e.setLayoutProperty(n.id,"text-font",["Inter","Open Sans Regular","Arial Unicode MS Regular"]))}}catch(t){}},onError:A=>{},children:[t.jsx(U,{position:"top-left",style:{marginTop:"1rem",marginLeft:"1rem"}}),t.jsx(O,{position:"bottom-right"}),t.jsx(ue,{enabled:N,exaggeration:2}),t.jsx(se,{coveragePoints:vA,visible:vA.length>0&&yA,terrainEnabled:N,brightness:CA}),t.jsx(ot,{positions:_A}),t.jsx(rt,{showTopology:y,isExiting:$A,hoveredEdgeKey:L,highlightedLoopEdges:null==jA?void 0:jA.highlightedEdgeKeys,onEdgeHover:FA,onLoopHover:SA,loops:d.loops,neighborNames:IA,opacityBias:H,widthMultiplier:z,trafficFilter:Y,showNeighborLines:C,disableHover:Ae||lA}),t.jsx(We,{children:null}),i&&t.jsx(it,{targetHash:i,nodeCoordinates:HA,onComplete:a}),s&&t.jsx(at,{highlightedEdgeKey:s,validatedPolylines:YA,weakPolylines:VA,onEnsureTopology:Ne}),D&&t.jsx(Ye,{neighborsWithLocation:LA,localNode:r,localHash:n,zeroHopNeighbors:GA,lastHopNeighborMap:zA,meshTopology:d,hoveredMarker:I,onMarkerHover:R,getNodeOpacity:ne,shouldShowNode:ae,onRequestRemove:o?je:void 0,openPopupId:hA,onOpenPopup:pA,onClosePopup:xA,blinkingNodes:oe,blinkColor:ie})]})}),(()=>{const A=function(A,e,t){if(e){const A=e.loops[0],t=e.loops.length,r=[{label:"edges in loop",value:A.size},{label:"strength",value:`${Math.round(100*A.strength)}%`,unit:"(weakest link)"}],n=[];return A.includesLocal&&n.push({text:"★ Includes your node",color:"text-amber-400"}),t>1&&n.push({text:`Part of ${t} overlapping loops`,color:"text-violet-400/70"}),{type:"loop",title:{icon:"⟳",text:"Redundant Path"+(t>1?"s":""),color:"text-violet-400"},subtitle:{text:`${e.nodeNames.join(" → ")} → ${e.nodeNames[0]}`,color:"text-text-secondary",mono:!0},stats:r,badges:n}}if("neighbor"===(null==A?void 0:A.type)){const e=A.properties,t=[];return void 0!==e.rssi&&null!==e.rssi&&t.push({label:"RSSI",value:`${Math.round(e.rssi)} dBm`,unit:e.hasAvgRssi?"avg":void 0}),void 0!==e.snr&&null!==e.snr&&t.push({label:"SNR",value:`${Number(e.snr).toFixed(1)} dB`,unit:e.hasAvgSnr?"avg":void 0}),void 0!==e.packetCount&&t.push({label:"packets",value:Number(e.packetCount).toLocaleString()}),void 0!==e.confidence&&t.push({label:"confidence",value:`${Math.round(100*Number(e.confidence))}%`}),{type:"neighbor",title:{icon:"●",text:e.prefix?`${e.name} (${e.prefix})`:e.name,color:"text-amber-400"},subtitle:{text:"Direct RF Neighbor",color:"text-amber-400/70"},stats:t,badges:[]}}if("topology"===(null==A?void 0:A.type)){const e=A.properties,r=t>0?Number(e.certainCount)/t:0,n=[{label:"validations",value:e.certainCount},{label:"of max traffic",value:`${Math.round(100*r)}%`},{label:"confidence",value:`${Math.round(100*Number(e.confidence))}%`}];if(void 0!==e.symmetryRatio&&e.symmetryRatio<1){const A="forward"===e.dominantDirection?"→":"reverse"===e.dominantDirection?"←":"↔";n.push({label:"symmetric",value:`${A} ${Math.round(100*e.symmetryRatio)}%`,color:"text-text-muted"})}const o=[];return e.isBackbone&&o.push({text:"Backbone",color:"text-gray-300"}),e.isLoopEdge&&o.push({text:"Redundant",color:"text-violet-400"}),e.isDirectPath&&o.push({text:"Direct Path",color:"text-teal-400"}),{type:"topology",title:{icon:"",text:`${e.fromName} ↔ ${e.toName}`,color:"text-text-primary"},stats:n,badges:o}}return null}(QA?{type:QA.type,properties:QA.properties}:null,jA,KA);return A&&t.jsx("div",{className:"map-edge-tooltip",children:t.jsx("div",{className:"map-control-glass map-edge-tooltip-inner",children:t.jsx(lt,{data:A})})})})(),t.jsx(kA,{isDeepLoading:lA,showDeepAnalysisModal:oA,onDeepAnalysis:le,showTopology:y,onToggleTopology:fe,hasValidatedPolylines:YA.length>0,showNeighborLines:C,onToggleNeighborLines:De,hasNeighborPolylines:WA.length>0,showNodes:D,onToggleNodes:Ee,soloHubs:S,onToggleSoloHubs:Be,hasHubNodes:d.hubNodes.length>0,soloDirect:P,onToggleSoloDirect:Ce,hasZeroHopNeighbors:GA.size>0,showCoverage:M,onToggleCoverage:Me,show3DTerrain:N,onToggle3DTerrain:Qe,isFullscreen:v,onToggleFullscreen:de}),t.jsxs("div",{className:"map-legend-stack",children:[t.jsx(BA,{isActive:vA.length>0&&yA,onClick:DA}),t.jsx(wA,{showTopology:y,validatedPolylineCount:YA.length,filteredNeighborCount:LA.length,hasLocalNode:!(!(null==r?void 0:r.latitude)||!(null==r?void 0:r.longitude)),meshTopology:d,zeroHopNeighbors:GA,neighborsWithLocation:LA})]}),!v&&t.jsx("div",{className:"glass-card-frame absolute inset-0 pointer-events-none rounded-[1.125rem]",style:{zIndex:9999},"aria-hidden":"true"}),t.jsx(rA,{isOpen:null!==V,onCancel:()=>W(null),onConfirm:Pe,title:"Remove Node?",message:`Remove "${Z}" from the contacts list? This will hide the node until it sends a new packet.`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger"}),t.jsx(gA,{isOpen:oA,currentStep:aA,packetCount:uA}),t.jsx(RA,{})]})}export{ct as default}; diff --git a/frontend/dist/assets/ContactsMapMapLibre-Ck1tw3wG.js b/frontend/dist/assets/ContactsMapMapLibre-Ck1tw3wG.js new file mode 100644 index 00000000..2eba4cdb --- /dev/null +++ b/frontend/dist/assets/ContactsMapMapLibre-Ck1tw3wG.js @@ -0,0 +1 @@ +import{r as A,b as e,j as t,a7 as r,a8 as n,b5 as o,b6 as i,h as a,aq as s,W as l,o as c,ak as u,a2 as d,b7 as f,ar as g,as as h,aL as m,al as b,O as p,$ as x,aa as v,b8 as w,b9 as y,ba as k,ap as C,bb as B,bc as D,bd as M,be as E,bf as Q,bg as N,bh as j,c as P,bi as S,X as F,bj as T,a5 as I,a_ as L,bk as R,b1 as _,b2 as H,b4 as z,b0 as G,bl as U,bm as O}from"./vendor-react-CWPBVwgk.js";import"./maplibre-gl-Bk5DsYkB.js";import{J as Y,K as V,w as W,z as Z,as as K,at as J,au as X,g as q,av as $,aw as AA,ax as eA,e as tA,ay as rA,az as nA,aA as oA}from"./index-BlYVqXhs.js";import{C as iA}from"./ConfirmModal-u7cxXX4i.js";import{c as aA}from"./recharts-cqZ_RWsW.js";import{g as sA,h as lA,i as cA,j as uA}from"./useThemeColors-f-o_FvwS.js";import{P as dA,N as fA}from"./Contacts-wP4j6lyB.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";import"./SignalIndicator-QKnbwhAo.js";import"./HashBadge-Bq5n5xgM.js";import"./CollisionExplorerModal-DFHbJ8T7.js";import"./leaflet-D_ckmI2R.js";import"./PageLayout-Kh569_kh.js";function gA(A,e){const t=Math.max(5,Math.min(A,300)),r=Math.log(5),n=Math.log(300);return 1+(Math.log(t)-r)/(n-r)*5}function hA({label:A,icon:e,status:n,detail:o}){return t.jsxs("div",{className:aA("flex items-center gap-3 py-3 px-4 rounded-xl transition-all duration-300","active"===n&&"bg-accent-primary/10","complete"===n&&"bg-accent-success/10","pending"===n&&"opacity-40"),children:[t.jsx("div",{className:aA("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0 transition-all duration-300","active"===n&&"bg-accent-primary/20","complete"===n&&"bg-accent-success/20","pending"===n&&"bg-white/5"),children:"complete"===n?t.jsx(r,{className:"w-4 h-4 text-accent-success"}):"active"===n?t.jsx(s,{className:"w-4 h-4 animate-spin text-accent-primary"}):t.jsx("span",{className:"text-text-muted",children:e})}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:aA("text-sm font-medium transition-colors","active"===n&&"text-accent-primary","complete"===n&&"text-accent-success","pending"===n&&"text-text-muted"),children:A}),o&&"pending"!==n&&t.jsx("div",{className:"text-xs text-text-muted mt-0.5 truncate",children:o})]})]})}const mA=A.memo(function({isOpen:s,currentStep:l,packetCount:c,onClose:u}){if(A.useEffect(()=>{if(!s)return;const A=A=>{"Escape"===A.key&&u&&u()};window.addEventListener("keydown",A);const e=document.body.style.overflow,t=document.body.style.position,r=document.body.style.width,n=document.body.style.top,o=window.scrollY;return document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%",document.body.style.top=`-${o}px`,()=>{window.removeEventListener("keydown",A),document.body.style.overflow=e,document.body.style.position=t,document.body.style.width=r,document.body.style.top=n,window.scrollTo(0,o)}},[s,u]),!s)return null;const d="complete"===l,f=A=>{const e=["fetching","analyzing","building","discovering","complete"],t=e.indexOf(l),r=e.indexOf(A);return r0?`${c.toLocaleString()} packets`:"Loading database..."}),t.jsx(hA,{label:"Analyzing Database",icon:t.jsx(i,{className:"w-4 h-4"}),status:f("analyzing"),detail:"Processing packet paths"}),t.jsx(hA,{label:"Building Topology",icon:t.jsx(n,{className:"w-4 h-4"}),status:f("building"),detail:"Computing mesh edges"}),t.jsx(hA,{label:"Discovering Nodes",icon:t.jsx(a,{className:"w-4 h-4"}),status:f("discovering"),detail:"Viterbi HMM ghost detection"})]}),t.jsx("p",{className:"text-xs text-text-muted text-center mt-5",children:"This may take a few seconds..."})]})})]}),document.body)}),bA={nodeFill:"#F5F5F0",nodeStroke:"#4A5568",localColor:"#FBBF24",hubColor:"#8B7BAD",mobileColor:"#F97316",roomServerColor:"#E17899",neighborColor:"#FBBF24",edges:{rest:"#4B4B4B",restBright:"#616161",restDim:"#3F3F3F",hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:"#8A8A8A",hoverNeighbor:"#FBBF24",neighborRest:"#6B7280",neighborHover:"#FBBF24",highlight:"#FFD700"},edgeOpacity:.82};function pA(){if("undefined"==typeof window)return bA;const A=sA(),e=lA();return{nodeFill:A.nodeFill,nodeStroke:A.nodeStroke,localColor:A.localColor,hubColor:A.hubColor,mobileColor:A.mobileColor,roomServerColor:A.roomColor,neighborColor:A.neighborColor,edges:{rest:e.rest,restBright:e.restBright,restDim:e.restDim,hoverDirect:e.hoverDirect,hoverLoop:e.hoverLoop,hoverStandard:e.hoverStandard,hoverNeighbor:e.hoverNeighbor,neighborRest:bA.edges.neighborRest,neighborHover:bA.edges.neighborHover,highlight:e.highlight},edgeOpacity:bA.edgeOpacity}}const xA=2e3;function vA({text:A}){return t.jsxs("span",{className:"group/tip relative cursor-help",children:[t.jsx(m,{className:"w-3.5 h-3.5 text-text-muted"}),t.jsx("div",{className:"\n fixed\n left-[var(--tip-x,0)] top-[var(--tip-y,0)]\n -translate-x-1/4 -translate-y-full\n mb-1\n invisible opacity-0 group-hover/tip:visible group-hover/tip:opacity-100\n transition-opacity duration-150\n w-48 p-2 text-[11px] leading-snug rounded-lg\n z-[9999] bg-tooltip-bg border border-border-subtle shadow-lg\n pointer-events-none\n ",style:{},children:A})]})}function wA(A){const e=new Date(1e3*A);return`${(e.getMonth()+1).toString().padStart(2,"0")}/${e.getDate().toString().padStart(2,"0")}`}function yA({hash:e,hashPrefix:n,name:o,isHub:i,isGateway:a,isBackbone:m,isZeroHop:b,isMobile:p,isRoomServer:x,isStale:v,lastSeenTimestamp:w,centrality:y,affinity:k,meanSnr:C,meanRssi:B,neighbor:D,onRemove:M,txDelayRec:E,onPingResult:Q}){const N=cA(),[j,P]=A.useState(!1),[S,F]=A.useState(!1),[T,I]=A.useState(null),[L,R]=A.useState(null),_=A.useCallback(async()=>{if(!S){F(!0),R(null),I(null);try{const A=e.startsWith("0x")?e.slice(0,4):`0x${e.slice(0,2)}`,t=await Y(A,30);t.success&&t.data?(I(t.data),null==Q||Q(t.data)):R(t.error||"Ping failed")}catch(A){R(A instanceof Error?A.message:"Ping failed")}finally{F(!1)}}},[e,S,Q]),H=b?"Direct":(null==k?void 0:k.typicalHopPosition)?`${k.typicalHopPosition}-hop`:null,z=E&&!E.insufficientData,G={hub:{bg:"bg-amber-500/20",text:"text-amber-400",title:"Hub: High-connectivity node that bridges many paths"},backbone:{bg:"bg-purple-500/20",text:"text-purple-400",title:"Backbone: Critical relay with high traffic"},relay:{bg:"bg-cyan-500/20",text:"text-cyan-400",title:"Relay: Standard forwarding node"},edge:{bg:"bg-gray-500/20",text:"text-gray-400",title:"Edge: Peripheral node"}},U={high:{bg:"bg-green-500/20",text:"text-green-400",title:"1000+ packets"},medium:{bg:"bg-amber-500/20",text:"text-amber-400",title:"500-999 packets"},low:{bg:"bg-red-500/20",text:"text-red-400",title:"100-499 packets"},insufficient:{bg:"bg-gray-500/20",text:"text-gray-400",title:"Insufficient data"}};return t.jsxs("div",{className:"w-[240px] pr-2",children:[t.jsx("div",{className:"text-[14px] font-semibold text-text-primary leading-tight truncate mb-1",children:o}),t.jsxs("div",{className:"flex items-center gap-1 flex-wrap mb-1.5",children:[t.jsx("code",{className:"font-mono text-[10px] text-text-secondary bg-white/[0.08] px-1 py-0.5 rounded",children:n}),t.jsx("button",{onClick:async()=>{try{await navigator.clipboard.writeText(e),P(!0),setTimeout(()=>P(!1),1500)}catch(A){const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy"),P(!0),setTimeout(()=>P(!1),1500)}catch{}document.body.removeChild(t)}},className:"p-0.5 hover:bg-white/10 rounded transition-colors",title:"Copy full hash",children:j?t.jsx(r,{className:"w-3 h-3 text-accent-success"}):t.jsx(l,{className:"w-3 h-3 text-text-secondary"})}),t.jsx(dA,{hash:e,size:"sm"}),H&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded "+(b?"bg-amber-400/90 text-gray-900":"bg-white/[0.15] text-white"),children:H}),D.is_repeater&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-cyan-500/20 text-cyan-400",children:"Rptr"}),i&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded",style:{backgroundColor:N.hubColor,color:"#fff"},title:"Hub: ≥10% of last-hop traffic",children:"Hub"}),a&&!i&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded",style:{backgroundColor:N.hubColor,color:"#fff",opacity:.8},title:"Gateway: 7-10% of last-hop traffic",children:"Gate"}),m&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-purple-500/80 text-white",title:"Backbone",children:"Bone"}),p&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-orange-500/25 text-orange-300",children:"Mobile"}),x&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-amber-500/25 text-amber-400",children:"Room"}),v&&w&&t.jsxs("span",{className:"px-1 py-0.5 text-[9px] font-medium rounded bg-gray-500/30 text-gray-300",title:"Neighbor not heard in 7+ days",children:["Idle ",wA(w)]})]}),t.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-text-secondary mb-1.5",children:[t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(c,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsx("span",{className:"font-mono",children:V(D.last_seen)})]}),(null==k?void 0:k.distanceMeters)&&t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(u,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:(O=k.distanceMeters,null===O?"—":O<1e3?`${Math.round(O)}m`:`${(O/1e3).toFixed(1)}km`)})]}),D.latitude&&D.longitude&&0!==D.latitude&&0!==D.longitude&&t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(d,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsxs("span",{className:"font-mono text-text-muted",children:[D.latitude.toFixed(2),", ",D.longitude.toFixed(2)]})]})]}),t.jsx("div",{className:"mb-1.5",style:{width:224},children:t.jsx(fA,{nodeHash:e,width:224,height:26,showArea:!0,showTooltip:!0})}),t.jsxs("div",{className:"flex gap-3 text-[10px] mb-1.5",children:[t.jsxs("div",{className:"flex-1 space-y-0.5",children:[t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"Packets"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:(null==k?void 0:k.frequency)||0})]}),b&&void 0!==C&&t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"SNR"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[C.toFixed(1)," dB"]})]}),z&&E.networkRole&&t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"Role"}),t.jsx("span",{className:`text-[9px] font-bold uppercase px-1 py-0.5 rounded ${G[E.networkRole].bg} ${G[E.networkRole].text}`,title:G[E.networkRole].title,children:E.networkRole})]})]}),t.jsxs("div",{className:"flex-1 space-y-0.5",children:[t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"Adverts"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:D.advert_count||0})]}),b&&void 0!==B&&t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"RSSI"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[Math.round(B)," dBm"]})]}),z&&E.dataConfidence&&t.jsxs("div",{className:"flex justify-between items-center",children:[t.jsx("span",{className:"text-text-muted",children:"Data"}),t.jsx("span",{className:`text-[9px] font-bold uppercase px-1 py-0.5 rounded ${U[E.dataConfidence].bg} ${U[E.dataConfidence].text}`,title:U[E.dataConfidence].title,children:E.dataConfidence})]})]})]}),z&&t.jsxs("div",{className:"flex items-center gap-2 text-[10px] mb-1.5 py-1 px-1.5 bg-amber-400/5 rounded",children:[t.jsx(f,{className:"w-3 h-3 text-amber-400 shrink-0"}),t.jsx("span",{className:"text-text-muted",children:"TxDelay"}),t.jsxs("div",{className:"flex gap-3 flex-1",children:[t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("span",{className:"text-text-muted",children:"F"}),t.jsxs("span",{className:"font-mono font-semibold text-amber-400",children:["×",(E.floodFactor??E.txDelayFactor).toFixed(1)]})]}),t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsx("span",{className:"text-text-muted",children:"D"}),t.jsxs("span",{className:"font-mono font-semibold text-amber-400",children:["×",(E.directFactor??E.directTxDelayFactor).toFixed(1)]})]})]})]}),t.jsxs("div",{className:"flex items-center justify-between pt-1 border-t border-white/[0.08]",children:[b?t.jsxs("button",{onClick:_,disabled:S,className:"flex items-center gap-1 py-0.5 text-[10px] text-text-secondary hover:text-accent-primary hover:bg-accent-primary/10 rounded transition-colors disabled:opacity-50",title:"Ping neighbor",children:[S?t.jsx(s,{className:"w-3 h-3 animate-spin"}):t.jsx(g,{className:"w-3 h-3"}),t.jsx("span",{children:"Ping"})]}):t.jsx("div",{}),M&&t.jsx("button",{onClick:M,className:"p-1 text-text-secondary hover:text-red-400 hover:bg-red-500/10 rounded transition-colors",title:"Remove from contacts",children:t.jsx(h,{className:"w-3.5 h-3.5"})})]}),T&&t.jsxs("div",{className:"mt-1 pt-1 border-t border-white/[0.08] text-[10px]",children:[t.jsxs("div",{className:"flex items-center gap-1 text-accent-success mb-0.5",children:[t.jsx(r,{className:"w-3 h-3"}),t.jsx("span",{className:"font-medium",children:"Ping OK"})]}),t.jsxs("div",{className:"flex gap-3",children:[t.jsxs("div",{className:"flex-1 space-y-0.5",children:[t.jsxs("div",{className:"flex justify-between",children:[t.jsx("span",{className:"text-text-muted",children:"RTT"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[T.rtt_ms.toFixed(0)," ms"]})]}),t.jsxs("div",{className:"flex justify-between",children:[t.jsx("span",{className:"text-text-muted",children:"RSSI"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[T.rssi," dBm"]})]})]}),t.jsxs("div",{className:"flex-1 space-y-0.5",children:[t.jsxs("div",{className:"flex justify-between",children:[t.jsx("span",{className:"text-text-muted",children:"SNR"}),t.jsxs("span",{className:"font-mono font-semibold text-text-primary",children:[T.snr_db.toFixed(1)," dB"]})]}),t.jsxs("div",{className:"flex justify-between",children:[t.jsx("span",{className:"text-text-muted",children:"Hops"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:T.path.length})]})]})]})]}),L&&t.jsxs("div",{className:"mt-1.5 pt-1.5 border-t border-white/[0.08] text-[10px] text-red-400",children:["⚠ ",L]})]});var O}function kA({showTopology:A,validatedPolylineCount:e,filteredNeighborCount:r,hasLocalNode:n,meshTopology:o,zeroHopNeighbors:i,neighborsWithLocation:s}){const l=cA(),c=W(),u=Z(),d=c.filter(A=>A.isLikelyReal).length,f=function(A){let e=0;for(const t of A.txDelayRecommendations.values())"backbone"===t.networkRole&&e++;return e}(o);return t.jsxs("div",{className:"map-control-glass text-xs",style:{padding:"0.625rem"},children:[t.jsxs("div",{className:"text-text-secondary font-medium mb-1.5 flex items-center gap-1",children:["Nodes",t.jsx(vA,{text:"Node type shown by shape. Yellow = direct RF neighbor."})]}),t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",backgroundColor:l.nodeFill}}),t.jsx("span",{className:"text-text-muted",children:"Node"}),t.jsx(vA,{text:"Standard mesh node. Can be a repeater, client, or companion device."})]}),t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",backgroundColor:l.hubColor}}),t.jsx("span",{className:"text-text-muted",children:"Hub"}),t.jsx(vA,{text:"Network hub (≥10% of last-hop traffic). Hubs are central to mesh traffic flow."})]}),(g=s,g.some(([,A])=>{var e;const t=null==(e=A.contact_type)?void 0:e.toLowerCase();return"room server"===t||"room_server"===t||"room"===t||"server"===t})&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(b,{className:"w-3 h-3 flex-shrink-0",style:{color:l.roomColor},strokeWidth:2.5}),t.jsx("span",{className:"text-text-muted",children:"Room"}),t.jsx(vA,{text:"Room Server identity. Hosts a chat room that clients can sync messages with."})]})),t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(p,{className:"w-3 h-3 flex-shrink-0",style:{color:l.localColor},strokeWidth:2.5}),t.jsx("span",{className:"text-text-muted",children:"Local"}),t.jsx(vA,{text:"Your repeater. This is the node running pyMC_Repeater that you're connected to."})]}),i.size>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded flex-shrink-0",style:{width:"12px",height:"8px",backgroundColor:l.neighborColor}}),t.jsx("span",{className:"text-text-muted",children:"Neighbor"}),t.jsx(vA,{text:"Zero-hop direct RF contact. Color indicates we receive their ADVERTs directly."})]}),o.gatewayNodes.length>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",backgroundColor:l.hubColor,opacity:.7}}),t.jsx("span",{className:"text-text-muted",children:"Gateway"}),t.jsx(vA,{text:"Significant traffic forwarder (7-10% of last-hop traffic). Gateways relay substantial traffic to the local node."})]}),f>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",backgroundColor:"rgb(168, 85, 247)",opacity:.8}}),t.jsx("span",{className:"text-text-muted",children:"Backbone"}),t.jsx(vA,{text:"Critical relay with 4+ neighbors and high betweenness centrality. Backbone nodes carry the majority of mesh traffic."})]}),o.mobileNodes.length>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"10px",height:"10px",background:"transparent",border:`4px solid ${l.mobileColor}`,boxSizing:"border-box"}}),t.jsx("span",{className:"text-text-muted",children:"Mobile"}),t.jsx(vA,{text:"Volatile node that frequently appears/disappears from paths. Likely a portable or vehicle-mounted device."})]}),d>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(a,{className:"w-3 h-3 flex-shrink-0",style:{color:"var(--accent-tertiary)"},strokeWidth:2.5}),t.jsxs("span",{className:"text-text-muted",children:["Ghost (",d,")"]}),t.jsx(vA,{text:"Unknown repeater discovered via Viterbi HMM path analysis. These nodes appear in paths but aren't in our neighbor table."})]})]}),A&&e>0&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"text-text-secondary font-medium mt-2 pt-2 border-t border-white/10 mb-1 flex items-center gap-1",children:["Topology",t.jsx(vA,{text:"Links with 5+ validations. Thickness = relative strength."})]}),t.jsxs("div",{className:"flex flex-col gap-0.5 text-text-muted",children:[t.jsxs("div",{className:"flex justify-between tabular-nums",children:[t.jsx("span",{children:"Nodes"}),t.jsx("span",{className:"text-text-secondary",children:r+(n?1:0)})]}),o.hubNodes.length>0&&t.jsxs("div",{className:"flex justify-between tabular-nums",children:[t.jsx("span",{children:"Hubs"}),t.jsx("span",{style:{color:bA.hubColor},children:o.hubNodes.length})]})]}),o.loops.length>0&&t.jsx("div",{className:"mt-1.5 pt-1.5 border-t border-white/10",children:t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(x,{className:"w-3 h-3 flex-shrink-0",style:{color:bA.edges.hoverLoop}}),t.jsxs("div",{className:"flex flex-col",children:[t.jsxs("span",{style:{color:bA.edges.hoverLoop},className:"font-medium",children:[o.loops.length," ",1===o.loops.length?"Loop":"Loops"]}),t.jsx("span",{className:"text-text-muted text-[10px] leading-tight",children:"Redundant paths"})]})]})}),u.totalPaths>0&&t.jsx("div",{className:"mt-1.5 pt-1.5 border-t border-white/10",children:t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(v,{className:"w-3 h-3 flex-shrink-0",style:{color:"var(--accent-primary)"}}),t.jsxs("div",{className:"flex flex-col",children:[t.jsxs("span",{style:{color:"var(--accent-primary)"},className:"font-medium",children:[u.totalPaths.toLocaleString()," Viterbi"]}),t.jsx("span",{className:"text-text-muted text-[10px] leading-tight",children:"HMM decoded paths"})]})]})})]})]});var g}const CA="rgba(251, 191, 36, 0.2)";function BA({isDeepLoading:A,showDeepAnalysisModal:e,onDeepAnalysis:r,showTopology:o,onToggleTopology:i,hasValidatedPolylines:a,showNeighborLines:s,onToggleNeighborLines:l,hasNeighborPolylines:c,showNodes:u,onToggleNodes:f,soloHubs:g,onToggleSoloHubs:h,hasHubNodes:m,soloDirect:b,onToggleSoloDirect:p,hasZeroHopNeighbors:x,showCoverage:v,onToggleCoverage:Q,show3DTerrain:N,onToggle3DTerrain:j,isFullscreen:P,onToggleFullscreen:S}){return t.jsx(t.Fragment,{children:t.jsxs("div",{className:"absolute top-3 right-3 z-[600] map-controls-container sm:top-4 sm:right-4",children:[t.jsxs("div",{className:"map-controls-row map-controls-primary",children:[t.jsxs("button",{onClick:r,disabled:A||e,className:"map-control-glass px-2.5 py-1.5 sm:px-3 sm:py-2 flex items-center gap-1.5 sm:gap-2 transition-colors hover:bg-white/10 disabled:opacity-50 disabled:cursor-not-allowed",title:"Deep Analysis - Load full packet history and rebuild topology","aria-label":"Deep Analysis",children:[t.jsx("span",{className:"map-control-label text-xs font-medium text-text-primary",children:"Deep Analysis"}),t.jsx(w,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 text-accent-primary"})]}),a&&t.jsx("button",{onClick:i,className:"map-control-btn "+(o?"map-control-glass-active":"map-control-glass"),style:o?{backgroundColor:"rgba(74, 222, 128, 0.2)"}:void 0,title:o?"Hide topology lines":"Show topology lines","aria-label":o?"Hide topology":"Show topology","aria-pressed":o,children:o?t.jsx(n,{className:"map-control-icon text-green-400"}):t.jsx(y,{className:"map-control-icon text-text-secondary"})})]}),t.jsxs("div",{className:"map-controls-row map-controls-secondary",children:[c&&t.jsx("button",{onClick:l,className:"map-control-btn "+(s?"map-control-glass-active":"map-control-glass"),style:s?{backgroundColor:CA}:void 0,title:s?"Hide neighbor lines":"Show neighbor lines","aria-label":s?"Hide neighbor lines":"Show neighbor lines","aria-pressed":s,children:t.jsx(k,{className:"map-control-icon "+(s?"text-amber-400":"text-text-secondary")})}),t.jsx("button",{onClick:f,className:"map-control-btn "+(u?"map-control-glass-active":"map-control-glass"),style:u?{backgroundColor:"rgba(99, 102, 241, 0.2)"}:void 0,title:u?"Hide all nodes":"Show all nodes","aria-label":u?"Hide nodes":"Show nodes","aria-pressed":u,children:u?t.jsx(d,{className:"map-control-icon text-indigo-400"}):t.jsx(y,{className:"map-control-icon text-text-secondary"})}),m&&t.jsx("button",{onClick:h,className:"map-control-btn "+(g?"map-control-glass-active":"map-control-glass"),style:g?{backgroundColor:CA}:void 0,title:g?"Show all nodes":"Solo hubs & connections","aria-label":g?"Show all nodes":"Solo hubs","aria-pressed":g,children:t.jsx(C,{className:"map-control-icon "+(g?"text-amber-400":"text-text-secondary")})}),x&&t.jsx("button",{onClick:p,className:"map-control-btn "+(b?"map-control-glass-active":"map-control-glass"),style:b?{backgroundColor:"rgba(67, 56, 202, 0.35)"}:void 0,title:b?"Show all nodes":"Solo direct (0-hop) nodes","aria-label":b?"Show all nodes":"Solo direct neighbors","aria-pressed":b,children:t.jsx(B,{className:"map-control-icon "+(b?"text-indigo-400":"text-text-secondary")})}),t.jsx("button",{onClick:j,className:"map-control-btn "+(N?"map-control-glass-active":"map-control-glass"),style:N?{backgroundColor:"rgba(45, 212, 191, 0.2)"}:void 0,title:N?"Disable 3D terrain":"Enable 3D terrain","aria-label":N?"Disable 3D terrain":"Enable 3D terrain","aria-pressed":N,children:t.jsx(D,{className:"map-control-icon "+(N?"text-teal-400":"text-text-secondary")})}),t.jsx("button",{onClick:S,className:"map-control-btn map-control-glass",title:P?"Exit fullscreen":"Fullscreen","aria-label":P?"Exit fullscreen":"Enter fullscreen","aria-pressed":P,children:P?t.jsx(M,{className:"map-control-icon text-text-secondary"}):t.jsx(E,{className:"map-control-icon text-text-secondary"})})]})]})})}const DA="#fe8019";function MA({isActive:e,onClick:r,brightness:n=.7,onBrightnessChange:o}){const[i,a]=A.useState(!1),[s,l]=A.useState(!1);A.useEffect(()=>{if(i&&!e){l(!0);const A=setTimeout(()=>l(!1),80);return()=>clearTimeout(A)}},[i,e]);const c=Math.max(.01,Math.min(1,n)),u=c<.999,d=c>.011,f=i&&!e;return t.jsxs("button",{onClick:r,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),className:"flex items-center gap-2 w-full text-left transition-colors hover:bg-white/5 "+(e?"map-control-glass-active":"map-control-glass"),style:{padding:"0.5rem 0.625rem",...e?{backgroundColor:"rgba(245, 158, 11, 0.15)"}:{}},title:e?"Configure wardriving coverage":"Show wardriving coverage",children:[t.jsx(Q,{className:"w-3.5 h-3.5 flex-shrink-0 transition-colors "+(e?"text-amber-400":"text-text-secondary"),style:f?{color:DA}:void 0}),t.jsx("span",{className:"font-medium "+(e?"text-amber-400":"text-text-secondary"),style:{fontSize:"0.75rem",lineHeight:1,transition:"none",...f?{fontFamily:"'Jacquard 12', serif",color:DA,transform:`scale(${s?1.595:1.45})`,transformOrigin:"left center"}:{}},children:"Wardrive"}),e&&o&&t.jsxs("div",{className:"ml-auto flex items-center gap-0.5",children:[t.jsx("button",{onClick:A=>{A.stopPropagation();const e=Math.max(.01,c-.2);null==o||o(e)},disabled:!d,className:"p-0.5 rounded transition-colors "+(d?"hover:bg-white/10 text-amber-400":"text-amber-400/30 cursor-not-allowed"),title:`Decrease opacity (${Math.round(100*c)}%)`,children:t.jsx(N,{className:"w-3.5 h-3.5"})}),t.jsx("button",{onClick:A=>{A.stopPropagation();const e=Math.min(1,c+.2);null==o||o(e)},disabled:!u,className:"p-0.5 rounded transition-colors "+(u?"hover:bg-white/10 text-amber-400":"text-amber-400/30 cursor-not-allowed"),title:`Increase opacity (${Math.round(100*c)}%)`,children:t.jsx(j,{className:"w-3.5 h-3.5"})})]})]})}function EA(A){let e=!0,t=-90,r=90,n=-180,o=180;for(const i of A.toLowerCase()){const A="0123456789bcdefghjkmnpqrstuvwxyz".indexOf(i);if(-1!==A)for(let i=4;i>=0;i--){const a=A>>i&1;if(e){const A=(n+o)/2;a?n=A:o=A}else{const A=(t+r)/2;a?t=A:r=A}e=!e}}return{lat:(t+r)/2,lon:(n+o)/2}}function QA(A){return Math.exp(-A*Math.LN2/7)}const NA="pymc-wardriving-url",jA="pymc-wardriving-enabled",PA="pymc-wardriving-brightness";function SA(A){"undefined"!=typeof localStorage&&(A?localStorage.setItem(NA,A):localStorage.removeItem(NA))}function FA(A){"undefined"!=typeof localStorage&&localStorage.setItem(jA,String(A))}function TA(){if("undefined"==typeof localStorage)return.7;const A=localStorage.getItem(PA);if(A){const e=parseFloat(A);if(!isNaN(e)&&e>=.01&&e<=1)return e}return.7}function IA(A,e=null){if(null!==A){const t=(Math.max(-12,Math.min(12,A))+12)/24;return null!==e?.8*t+(Math.max(-120,Math.min(-50,e))+120)/70*.2:t}return null!==e?(Math.max(-120,Math.min(-50,e))+120)/70:.5}const LA=P((A,e)=>({status:"idle",isVisible:"undefined"!=typeof localStorage&&"true"===localStorage.getItem(jA),coveragePoints:[],repeaters:[],error:null,stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},url:"undefined"==typeof localStorage?"":localStorage.getItem(NA)||"",brightness:TA(),isModalOpen:!1,openModal:()=>A({isModalOpen:!0}),closeModal:()=>A({isModalOpen:!1}),setUrl:e=>A({url:e}),setBrightness:e=>{const t=Math.max(.01,Math.min(1,e));!function(A){if("undefined"==typeof localStorage)return;const e=Math.max(.01,Math.min(1,A));localStorage.setItem(PA,String(e))}(t),A({brightness:t})},toggleVisibility:()=>{const t=!e().isVisible;FA(t),A({isVisible:t})},setVisible:e=>{FA(e),A({isVisible:e})},loadCoverage:async e=>{if(!e.trim())return A({error:"Please enter a URL",status:"error"}),!1;try{new URL(e.trim())}catch{return A({error:"Invalid URL format",status:"error"}),!1}A({error:null,status:"connecting"});try{A({status:"loading"});const t=await async function(A){const e=`${A.replace(/\/+$/,"").replace(/\/get-nodes$/,"").replace(/\/get-samples$/,"")}/get-samples`,t=await async function(A,e={},t=8e3){const r=new AbortController,n=setTimeout(()=>r.abort(),t);try{return await fetch(A,{...e,signal:r.signal})}catch(o){if(o instanceof Error&&"AbortError"===o.name)throw new Error(`Connection timed out after ${t/1e3}s`);throw o}finally{clearTimeout(n)}}(e,{headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`Failed to fetch precise samples: ${t.status}`);return t.json()}(e.trim());if(!t||"object"!=typeof t)throw new Error("Invalid response from server");if(!Array.isArray(t.keys))throw new Error("No sample data found in response");A({status:"processing"});const r=function(A){var e;const t=[];for(const r of A.keys){if(!r.observed)continue;const{lat:A,lon:n}=EA(r.hash),o=parseInt(r.time,10),i=isNaN(o)?30:(Date.now()-o)/864e5,a=QA(i),s=IA(r.snr,r.rssi)*(.3+.7*a);t.push({lat:A,lon:n,successRate:r.observed?1:0,weight:s,totalSamples:1,ageDays:i,geohash:r.hash,repeaters:(null==(e=r.path)?void 0:e.map(A=>A.toLowerCase()))||[]})}return t}(t);if(0===r.length)throw new Error("No valid coverage points found");return A({coveragePoints:r,repeaters:[],stats:{coverageCount:r.length,repeaterCount:0,lastUpdated:new Date},status:"success",isVisible:!0,url:e.trim()}),SA(e.trim()),FA(!0),!0}catch(t){const e=t instanceof Error?t.message:"Failed to load coverage data";let r=e;return e.includes("timed out")?r="Connection timed out. Server may be unreachable or slow.":e.includes("Failed to fetch")||e.includes("NetworkError")?r="Could not connect to server. Check the URL and try again.":e.includes("CORS")?r="Server does not allow cross-origin requests.":e.includes("404")?r="Coverage endpoint not found. Check the URL.":(e.includes("ERR_NAME_NOT_RESOLVED")||e.includes("DNS"))&&(r="Server not found. Check the URL for typos."),A({error:r,status:"error"}),!1}},clearCoverage:()=>{A({coveragePoints:[],repeaters:[],stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},status:"idle",error:null,isVisible:!1,url:""}),SA(""),FA(!1)}}));function RA({status:A}){if("connecting"!==A&&"loading"!==A&&"processing"!==A)return null;const e={idle:"",connecting:"Connecting to server...",loading:"Fetching coverage data...",processing:"Processing coverage points...",success:"",error:""}[A];return e?t.jsxs("div",{className:"flex items-center gap-3 p-4 bg-amber-500/10 border border-amber-500/30 rounded-xl",children:[t.jsx("div",{className:"relative",children:t.jsx(s,{className:"w-5 h-5 text-amber-400 animate-spin"})}),t.jsxs("div",{className:"flex-1",children:[t.jsx("p",{className:"text-sm text-amber-400 font-medium",children:e}),t.jsx("div",{className:"mt-2 h-1 bg-amber-500/20 rounded-full overflow-hidden",children:t.jsx("div",{className:"h-full bg-amber-400 rounded-full transition-all duration-300",style:{width:"connecting"===A?"30%":"loading"===A?"60%":"90%"}})})]})]}):null}function _A(){const{isModalOpen:e,closeModal:n,status:i,isVisible:a,stats:l,error:c,url:u,brightness:d,loadCoverage:f,clearCoverage:g,toggleVisibility:m,setUrl:b,setBrightness:p}=LA(),x="connecting"===i||"loading"===i||"processing"===i,[w,k]=A.useState(u),C=A.useCallback(async()=>{await f(w)},[w,f]),B=A.useCallback(()=>{k(""),g()},[g]),D=A.useCallback(A=>{"Enter"!==A.key||A.shiftKey||x||(A.preventDefault(),C())},[C,x]),M=A.useCallback(A=>{const e=A.target.value;k(e),b(e)},[b]);if(!e)return null;const E=l.coverageCount>0,Q=w.trim().length>0&&!x;return t.jsxs("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center",children:[t.jsx("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-md",onClick:x?void 0:n}),t.jsxs("div",{className:"relative glass-card-elevated w-full max-w-md mx-4",children:[t.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-border-subtle",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:"p-2 rounded-lg bg-amber-500/20",children:t.jsx(S,{className:"w-5 h-5 text-amber-400"})}),t.jsxs("div",{children:[t.jsx("h2",{className:"text-lg font-semibold text-text-primary",children:"Wardriving Coverage"}),t.jsx("p",{className:"text-xs text-text-muted",children:"Overlay RF coverage heatmap"})]})]}),t.jsx("button",{onClick:n,disabled:x,className:"p-2 rounded-lg hover:bg-white/10 transition-colors disabled:opacity-50",children:t.jsx(F,{className:"w-5 h-5 text-text-secondary"})})]}),t.jsxs("div",{className:"p-4 space-y-4",children:[t.jsxs("div",{children:[t.jsx("label",{className:"block text-sm font-medium text-text-secondary mb-2",children:"Coverage Server URL"}),t.jsx("input",{type:"url",value:w,onChange:M,onKeyDown:D,placeholder:"https://coverage.wcmesh.com",className:"w-full px-4 py-3 bg-black/30 border border-border rounded-xl text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-amber-500/50 focus:border-amber-500/50 transition-all disabled:opacity-50",disabled:x}),t.jsx("p",{className:"mt-1.5 text-xs text-text-muted",children:"Enter the base URL of a wardriving coverage server (e.g., coverage.wcmesh.com)"})]}),t.jsx(RA,{status:i}),"error"===i&&c&&t.jsxs("div",{className:"flex items-start gap-3 p-3 bg-red-500/10 border border-red-500/30 rounded-xl",children:[t.jsx(T,{className:"w-5 h-5 text-red-400 flex-shrink-0 mt-0.5"}),t.jsxs("div",{children:[t.jsx("p",{className:"text-sm text-red-400 font-medium",children:"Connection Failed"}),t.jsx("p",{className:"text-xs text-red-400/80 mt-0.5",children:c})]})]}),"success"===i&&E&&t.jsxs("div",{className:"flex items-start gap-3 p-3 bg-green-500/10 border border-green-500/30 rounded-xl",children:[t.jsx(r,{className:"w-5 h-5 text-green-400 flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("p",{className:"text-sm text-green-400 font-medium",children:"Data Loaded Successfully"}),t.jsxs("p",{className:"text-xs text-green-400/80 mt-0.5",children:[l.coverageCount.toLocaleString()," coverage points • ",l.repeaterCount.toLocaleString()," repeaters"]})]})]}),E&&!x&&"success"!==i&&t.jsxs("div",{className:"flex items-start gap-3 p-3 bg-amber-500/10 border border-amber-500/30 rounded-xl",children:[t.jsx(I,{className:"w-5 h-5 text-amber-400 flex-shrink-0 mt-0.5"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("p",{className:"text-sm text-amber-400 font-medium",children:"Coverage Data Loaded"}),t.jsxs("p",{className:"text-xs text-amber-400/80 mt-0.5",children:[l.coverageCount.toLocaleString()," points •",l.lastUpdated&&` Last updated ${l.lastUpdated.toLocaleTimeString()}`]})]})]}),E&&!x&&t.jsx("div",{className:"p-3 bg-black/20 border border-border-subtle rounded-xl",children:t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(j,{className:"w-4 h-4 flex-shrink-0 "+(d>.5?"text-amber-400":"text-text-muted")}),t.jsxs("div",{className:"flex-1",children:[t.jsxs("div",{className:"flex items-center justify-between mb-1",children:[t.jsx("span",{className:"text-xs text-text-secondary",children:"Brightness"}),t.jsxs("span",{className:"text-xs text-text-muted font-mono",children:[Math.round(100*d),"%"]})]}),t.jsx("input",{type:"range",min:"1",max:"100",value:100*d,onChange:A=>p(Number(A.target.value)/100),className:"w-full h-1.5 cursor-pointer accent-amber-400"})]})]})})]}),t.jsxs("div",{className:"flex items-center justify-between gap-3 p-4 border-t border-border-subtle",children:[t.jsx("div",{className:"flex items-center gap-2",children:E&&t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:m,disabled:x,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-text-secondary hover:text-text-primary hover:bg-white/5 rounded-lg transition-colors disabled:opacity-50",title:a?"Hide heatmap":"Show heatmap",children:a?t.jsxs(t.Fragment,{children:[t.jsx(y,{className:"w-3.5 h-3.5"})," Hide"]}):t.jsxs(t.Fragment,{children:[t.jsx(v,{className:"w-3.5 h-3.5"})," Show"]})}),t.jsxs("button",{onClick:B,disabled:x,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-red-400/80 hover:text-red-400 hover:bg-red-500/10 rounded-lg transition-colors disabled:opacity-50",title:"Clear coverage data",children:[t.jsx(h,{className:"w-3.5 h-3.5"})," Clear"]})]})}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("button",{onClick:n,disabled:x,className:"px-4 py-2 text-sm font-medium text-text-secondary hover:bg-white/10 rounded-lg transition-colors disabled:opacity-50",children:E?"Done":"Cancel"}),t.jsx("button",{onClick:C,disabled:!Q,className:"flex items-center gap-2 px-4 py-2 text-sm font-medium bg-amber-500 hover:bg-amber-400 text-black rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:x?t.jsxs(t.Fragment,{children:[t.jsx(s,{className:"w-4 h-4 animate-spin"}),"Loading..."]}):E?t.jsxs(t.Fragment,{children:[t.jsx(o,{className:"w-4 h-4"}),"Refresh"]}):t.jsxs(t.Fragment,{children:[t.jsx(L,{className:"w-4 h-4"}),"Connect"]})})]})]})]})]})}var HA=function(A){var e,t=void 0!==(A=A||{})?A:{},r={};for(e in t)t.hasOwnProperty(e)&&(r[e]=t[e]);var n,o="";"undefined"!=typeof document&&document.currentScript&&(o=document.currentScript.src),o=0!==o.indexOf("blob:")?o.substr(0,o.lastIndexOf("/")+1):"",n=function(A,e,t){var r=new XMLHttpRequest;r.open("GET",A,!0),r.responseType="arraybuffer",r.onload=function(){if(200==r.status||0==r.status&&r.response)e(r.response);else{var n=U(A);n?e(n.buffer):t()}},r.onerror=t,r.send(null)};var i=t.print||function(){}.bind(),a=t.printErr||function(){}.bind();for(e in r)r.hasOwnProperty(e)&&(t[e]=r[e]);r=null,t.arguments&&t.arguments;var s=0,l=!1;function c(A){var e=t["_"+A];return e||tA("Assertion failed: "+("Cannot call unknown function "+A+", make sure it is exported")),e}var u,d,f,g,h,m,b,p="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function x(A,e){return A?function(A,e,t){for(var r=e+t,n=e;A[n]&&!(n>=r);)++n;if(n-e>16&&A.subarray&&p)return p.decode(A.subarray(e,n));for(var o="";e>10,56320|1023&l)}}else o+=String.fromCharCode((31&i)<<6|a)}else o+=String.fromCharCode(i)}return o}(f,A,e):""}function v(A,e){return A%e>0&&(A+=e-A%e),A}function w(A){u=A,t.HEAP8=d=new Int8Array(A),t.HEAP16=g=new Int16Array(A),t.HEAP32=h=new Int32Array(A),t.HEAPU8=f=new Uint8Array(A),t.HEAPU16=new Uint16Array(A),t.HEAPU32=new Uint32Array(A),t.HEAPF32=m=new Float32Array(A),t.HEAPF64=b=new Float64Array(A)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var y=t.TOTAL_MEMORY||33554432;function k(A){for(;A.length>0;){var e=A.shift();if("function"!=typeof e){var r=e.func;"number"==typeof r?void 0===e.arg?t.dynCall_v(r):t.dynCall_vi(r,e.arg):r(void 0===e.arg?null:e.arg)}else e()}}y=(u=t.buffer?t.buffer:new ArrayBuffer(y)).byteLength,w(u),h[7156]=5271536;var C=[],B=[],D=[],M=[];function E(A){C.unshift(A)}function Q(A){M.unshift(A)}var N=Math.abs,j=Math.ceil,P=Math.floor,S=Math.min,F=0,T=null;t.preloadedImages={},t.preloadedAudios={};var I,L,R=null,_="data:application/octet-stream;base64,";function H(A){return String.prototype.startsWith?A.startsWith(_):0===A.indexOf(_)}function z(){return d.length}R="data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAAQAAAAQAAAADAAAABgAAAAUAAAACAAAAAAAAAAIAAAADAAAAAQAAAAQAAAAGAAAAAAAAAAUAAAADAAAABgAAAAQAAAAFAAAAAAAAAAEAAAACAAAABAAAAAUAAAAGAAAAAAAAAAIAAAADAAAAAQAAAAUAAAACAAAAAAAAAAEAAAADAAAABgAAAAQAAAAGAAAAAAAAAAUAAAACAAAAAQAAAAQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAAAAAAEAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAYAAAAAAAAABQAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAYAAAAAAAAAAwAAAAIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFAAAABAAAAAAAAAABAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAYAAAAAAAAABAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAADAAAACAAAAAEAAAAHAAAABgAAAAkAAAAAAAAAAwAAAAIAAAACAAAABgAAAAoAAAALAAAAAAAAAAEAAAAFAAAAAwAAAA0AAAABAAAABwAAAAQAAAAMAAAAAAAAAAQAAAB/AAAADwAAAAgAAAADAAAAAAAAAAwAAAAFAAAAAgAAABIAAAAKAAAACAAAAAAAAAAQAAAABgAAAA4AAAALAAAAEQAAAAEAAAAJAAAAAgAAAAcAAAAVAAAACQAAABMAAAADAAAADQAAAAEAAAAIAAAABQAAABYAAAAQAAAABAAAAAAAAAAPAAAACQAAABMAAAAOAAAAFAAAAAEAAAAHAAAABgAAAAoAAAALAAAAGAAAABcAAAAFAAAAAgAAABIAAAALAAAAEQAAABcAAAAZAAAAAgAAAAYAAAAKAAAADAAAABwAAAANAAAAGgAAAAQAAAAPAAAAAwAAAA0AAAAaAAAAFQAAAB0AAAADAAAADAAAAAcAAAAOAAAAfwAAABEAAAAbAAAACQAAABQAAAAGAAAADwAAABYAAAAcAAAAHwAAAAQAAAAIAAAADAAAABAAAAASAAAAIQAAAB4AAAAIAAAABQAAABYAAAARAAAACwAAAA4AAAAGAAAAIwAAABkAAAAbAAAAEgAAABgAAAAeAAAAIAAAAAUAAAAKAAAAEAAAABMAAAAiAAAAFAAAACQAAAAHAAAAFQAAAAkAAAAUAAAADgAAABMAAAAJAAAAKAAAABsAAAAkAAAAFQAAACYAAAATAAAAIgAAAA0AAAAdAAAABwAAABYAAAAQAAAAKQAAACEAAAAPAAAACAAAAB8AAAAXAAAAGAAAAAsAAAAKAAAAJwAAACUAAAAZAAAAGAAAAH8AAAAgAAAAJQAAAAoAAAAXAAAAEgAAABkAAAAXAAAAEQAAAAsAAAAtAAAAJwAAACMAAAAaAAAAKgAAAB0AAAArAAAADAAAABwAAAANAAAAGwAAACgAAAAjAAAALgAAAA4AAAAUAAAAEQAAABwAAAAfAAAAKgAAACwAAAAMAAAADwAAABoAAAAdAAAAKwAAACYAAAAvAAAADQAAABoAAAAVAAAAHgAAACAAAAAwAAAAMgAAABAAAAASAAAAIQAAAB8AAAApAAAALAAAADUAAAAPAAAAFgAAABwAAAAgAAAAHgAAABgAAAASAAAANAAAADIAAAAlAAAAIQAAAB4AAAAxAAAAMAAAABYAAAAQAAAAKQAAACIAAAATAAAAJgAAABUAAAA2AAAAJAAAADMAAAAjAAAALgAAAC0AAAA4AAAAEQAAABsAAAAZAAAAJAAAABQAAAAiAAAAEwAAADcAAAAoAAAANgAAACUAAAAnAAAANAAAADkAAAAYAAAAFwAAACAAAAAmAAAAfwAAACIAAAAzAAAAHQAAAC8AAAAVAAAAJwAAACUAAAAZAAAAFwAAADsAAAA5AAAALQAAACgAAAAbAAAAJAAAABQAAAA8AAAALgAAADcAAAApAAAAMQAAADUAAAA9AAAAFgAAACEAAAAfAAAAKgAAADoAAAArAAAAPgAAABwAAAAsAAAAGgAAACsAAAA+AAAALwAAAEAAAAAaAAAAKgAAAB0AAAAsAAAANQAAADoAAABBAAAAHAAAAB8AAAAqAAAALQAAACcAAAAjAAAAGQAAAD8AAAA7AAAAOAAAAC4AAAA8AAAAOAAAAEQAAAAbAAAAKAAAACMAAAAvAAAAJgAAACsAAAAdAAAARQAAADMAAABAAAAAMAAAADEAAAAeAAAAIQAAAEMAAABCAAAAMgAAADEAAAB/AAAAPQAAAEIAAAAhAAAAMAAAACkAAAAyAAAAMAAAACAAAAAeAAAARgAAAEMAAAA0AAAAMwAAAEUAAAA2AAAARwAAACYAAAAvAAAAIgAAADQAAAA5AAAARgAAAEoAAAAgAAAAJQAAADIAAAA1AAAAPQAAAEEAAABLAAAAHwAAACkAAAAsAAAANgAAAEcAAAA3AAAASQAAACIAAAAzAAAAJAAAADcAAAAoAAAANgAAACQAAABIAAAAPAAAAEkAAAA4AAAARAAAAD8AAABNAAAAIwAAAC4AAAAtAAAAOQAAADsAAABKAAAATgAAACUAAAAnAAAANAAAADoAAAB/AAAAPgAAAEwAAAAsAAAAQQAAACoAAAA7AAAAPwAAAE4AAABPAAAAJwAAAC0AAAA5AAAAPAAAAEgAAABEAAAAUAAAACgAAAA3AAAALgAAAD0AAAA1AAAAMQAAACkAAABRAAAASwAAAEIAAAA+AAAAKwAAADoAAAAqAAAAUgAAAEAAAABMAAAAPwAAAH8AAAA4AAAALQAAAE8AAAA7AAAATQAAAEAAAAAvAAAAPgAAACsAAABUAAAARQAAAFIAAABBAAAAOgAAADUAAAAsAAAAVgAAAEwAAABLAAAAQgAAAEMAAABRAAAAVQAAADEAAAAwAAAAPQAAAEMAAABCAAAAMgAAADAAAABXAAAAVQAAAEYAAABEAAAAOAAAADwAAAAuAAAAWgAAAE0AAABQAAAARQAAADMAAABAAAAALwAAAFkAAABHAAAAVAAAAEYAAABDAAAANAAAADIAAABTAAAAVwAAAEoAAABHAAAAWQAAAEkAAABbAAAAMwAAAEUAAAA2AAAASAAAAH8AAABJAAAANwAAAFAAAAA8AAAAWAAAAEkAAABbAAAASAAAAFgAAAA2AAAARwAAADcAAABKAAAATgAAAFMAAABcAAAANAAAADkAAABGAAAASwAAAEEAAAA9AAAANQAAAF4AAABWAAAAUQAAAEwAAABWAAAAUgAAAGAAAAA6AAAAQQAAAD4AAABNAAAAPwAAAEQAAAA4AAAAXQAAAE8AAABaAAAATgAAAEoAAAA7AAAAOQAAAF8AAABcAAAATwAAAE8AAABOAAAAPwAAADsAAABdAAAAXwAAAE0AAABQAAAARAAAAEgAAAA8AAAAYwAAAFoAAABYAAAAUQAAAFUAAABeAAAAZQAAAD0AAABCAAAASwAAAFIAAABgAAAAVAAAAGIAAAA+AAAATAAAAEAAAABTAAAAfwAAAEoAAABGAAAAZAAAAFcAAABcAAAAVAAAAEUAAABSAAAAQAAAAGEAAABZAAAAYgAAAFUAAABXAAAAZQAAAGYAAABCAAAAQwAAAFEAAABWAAAATAAAAEsAAABBAAAAaAAAAGAAAABeAAAAVwAAAFMAAABmAAAAZAAAAEMAAABGAAAAVQAAAFgAAABIAAAAWwAAAEkAAABjAAAAUAAAAGkAAABZAAAAYQAAAFsAAABnAAAARQAAAFQAAABHAAAAWgAAAE0AAABQAAAARAAAAGoAAABdAAAAYwAAAFsAAABJAAAAWQAAAEcAAABpAAAAWAAAAGcAAABcAAAAUwAAAE4AAABKAAAAbAAAAGQAAABfAAAAXQAAAE8AAABaAAAATQAAAG0AAABfAAAAagAAAF4AAABWAAAAUQAAAEsAAABrAAAAaAAAAGUAAABfAAAAXAAAAE8AAABOAAAAbQAAAGwAAABdAAAAYAAAAGgAAABiAAAAbgAAAEwAAABWAAAAUgAAAGEAAAB/AAAAYgAAAFQAAABnAAAAWQAAAG8AAABiAAAAbgAAAGEAAABvAAAAUgAAAGAAAABUAAAAYwAAAFAAAABpAAAAWAAAAGoAAABaAAAAcQAAAGQAAABmAAAAUwAAAFcAAABsAAAAcgAAAFwAAABlAAAAZgAAAGsAAABwAAAAUQAAAFUAAABeAAAAZgAAAGUAAABXAAAAVQAAAHIAAABwAAAAZAAAAGcAAABbAAAAYQAAAFkAAAB0AAAAaQAAAG8AAABoAAAAawAAAG4AAABzAAAAVgAAAF4AAABgAAAAaQAAAFgAAABnAAAAWwAAAHEAAABjAAAAdAAAAGoAAABdAAAAYwAAAFoAAAB1AAAAbQAAAHEAAABrAAAAfwAAAGUAAABeAAAAcwAAAGgAAABwAAAAbAAAAGQAAABfAAAAXAAAAHYAAAByAAAAbQAAAG0AAABsAAAAXQAAAF8AAAB1AAAAdgAAAGoAAABuAAAAYgAAAGgAAABgAAAAdwAAAG8AAABzAAAAbwAAAGEAAABuAAAAYgAAAHQAAABnAAAAdwAAAHAAAABrAAAAZgAAAGUAAAB4AAAAcwAAAHIAAABxAAAAYwAAAHQAAABpAAAAdQAAAGoAAAB5AAAAcgAAAHAAAABkAAAAZgAAAHYAAAB4AAAAbAAAAHMAAABuAAAAawAAAGgAAAB4AAAAdwAAAHAAAAB0AAAAZwAAAHcAAABvAAAAcQAAAGkAAAB5AAAAdQAAAH8AAABtAAAAdgAAAHEAAAB5AAAAagAAAHYAAAB4AAAAbAAAAHIAAAB1AAAAeQAAAG0AAAB3AAAAbwAAAHMAAABuAAAAeQAAAHQAAAB4AAAAeAAAAHMAAAByAAAAcAAAAHkAAAB3AAAAdgAAAHkAAAB0AAAAeAAAAHcAAAB1AAAAcQAAAHYAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAACAAAABQAAAAEAAAAAAAAA/////wEAAAAAAAAAAwAAAAQAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAUAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAUAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAD/////AQAAAAAAAAADAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAUAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAD//////////wEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAAAAAAAAAAABAAAAAgAAAAYAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAAAAAAAAAAAAQAAAAEAAAAFAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAGAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAAAAAAAAAAAAAEAAAAEAAAACAAAAAoAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAAAAAAAAAAAAQAAAAsAAAAPAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAAQAAAAwAAAAQAAAADAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAAAAAAAAAAABAAAACgAAABMAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAAAAAAAAAAEAAAANAAAAEQAAAA0AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAACAAAAAAAAAAAAAAABAAAADgAAABIAAAAPAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABIAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAgAAAAAAAAAAAAAAAQAAAP//////////EwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAASAAAAAAAAABgAAAAAAAAAIQAAAAAAAAAeAAAAAAAAACAAAAADAAAAMQAAAAEAAAAwAAAAAwAAADIAAAADAAAACAAAAAAAAAAFAAAABQAAAAoAAAAFAAAAFgAAAAAAAAAQAAAAAAAAABIAAAAAAAAAKQAAAAEAAAAhAAAAAAAAAB4AAAAAAAAABAAAAAAAAAAAAAAABQAAAAIAAAAFAAAADwAAAAEAAAAIAAAAAAAAAAUAAAAFAAAAHwAAAAEAAAAWAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAGAAAAAAAAAA4AAAAAAAAACgAAAAAAAAALAAAAAAAAABEAAAADAAAAGAAAAAEAAAAXAAAAAwAAABkAAAADAAAAAAAAAAAAAAABAAAABQAAAAkAAAAFAAAABQAAAAAAAAACAAAAAAAAAAYAAAAAAAAAEgAAAAEAAAAKAAAAAAAAAAsAAAAAAAAABAAAAAEAAAADAAAABQAAAAcAAAAFAAAACAAAAAEAAAAAAAAAAAAAAAEAAAAFAAAAEAAAAAEAAAAFAAAAAAAAAAIAAAAAAAAABwAAAAAAAAAVAAAAAAAAACYAAAAAAAAACQAAAAAAAAATAAAAAAAAACIAAAADAAAADgAAAAEAAAAUAAAAAwAAACQAAAADAAAAAwAAAAAAAAANAAAABQAAAB0AAAAFAAAAAQAAAAAAAAAHAAAAAAAAABUAAAAAAAAABgAAAAEAAAAJAAAAAAAAABMAAAAAAAAABAAAAAIAAAAMAAAABQAAABoAAAAFAAAAAAAAAAEAAAADAAAAAAAAAA0AAAAFAAAAAgAAAAEAAAABAAAAAAAAAAcAAAAAAAAAGgAAAAAAAAAqAAAAAAAAADoAAAAAAAAAHQAAAAAAAAArAAAAAAAAAD4AAAADAAAAJgAAAAEAAAAvAAAAAwAAAEAAAAADAAAADAAAAAAAAAAcAAAABQAAACwAAAAFAAAADQAAAAAAAAAaAAAAAAAAACoAAAAAAAAAFQAAAAEAAAAdAAAAAAAAACsAAAAAAAAABAAAAAMAAAAPAAAABQAAAB8AAAAFAAAAAwAAAAEAAAAMAAAAAAAAABwAAAAFAAAABwAAAAEAAAANAAAAAAAAABoAAAAAAAAAHwAAAAAAAAApAAAAAAAAADEAAAAAAAAALAAAAAAAAAA1AAAAAAAAAD0AAAADAAAAOgAAAAEAAABBAAAAAwAAAEsAAAADAAAADwAAAAAAAAAWAAAABQAAACEAAAAFAAAAHAAAAAAAAAAfAAAAAAAAACkAAAAAAAAAKgAAAAEAAAAsAAAAAAAAADUAAAAAAAAABAAAAAQAAAAIAAAABQAAABAAAAAFAAAADAAAAAEAAAAPAAAAAAAAABYAAAAFAAAAGgAAAAEAAAAcAAAAAAAAAB8AAAAAAAAAMgAAAAAAAAAwAAAAAAAAADEAAAADAAAAIAAAAAAAAAAeAAAAAwAAACEAAAADAAAAGAAAAAMAAAASAAAAAwAAABAAAAADAAAARgAAAAAAAABDAAAAAAAAAEIAAAADAAAANAAAAAMAAAAyAAAAAAAAADAAAAAAAAAAJQAAAAMAAAAgAAAAAAAAAB4AAAADAAAAUwAAAAAAAABXAAAAAwAAAFUAAAADAAAASgAAAAMAAABGAAAAAAAAAEMAAAAAAAAAOQAAAAEAAAA0AAAAAwAAADIAAAAAAAAAGQAAAAAAAAAXAAAAAAAAABgAAAADAAAAEQAAAAAAAAALAAAAAwAAAAoAAAADAAAADgAAAAMAAAAGAAAAAwAAAAIAAAADAAAALQAAAAAAAAAnAAAAAAAAACUAAAADAAAAIwAAAAMAAAAZAAAAAAAAABcAAAAAAAAAGwAAAAMAAAARAAAAAAAAAAsAAAADAAAAPwAAAAAAAAA7AAAAAwAAADkAAAADAAAAOAAAAAMAAAAtAAAAAAAAACcAAAAAAAAALgAAAAMAAAAjAAAAAwAAABkAAAAAAAAAJAAAAAAAAAAUAAAAAAAAAA4AAAADAAAAIgAAAAAAAAATAAAAAwAAAAkAAAADAAAAJgAAAAMAAAAVAAAAAwAAAAcAAAADAAAANwAAAAAAAAAoAAAAAAAAABsAAAADAAAANgAAAAMAAAAkAAAAAAAAABQAAAAAAAAAMwAAAAMAAAAiAAAAAAAAABMAAAADAAAASAAAAAAAAAA8AAAAAwAAAC4AAAADAAAASQAAAAMAAAA3AAAAAAAAACgAAAAAAAAARwAAAAMAAAA2AAAAAwAAACQAAAAAAAAAQAAAAAAAAAAvAAAAAAAAACYAAAADAAAAPgAAAAAAAAArAAAAAwAAAB0AAAADAAAAOgAAAAMAAAAqAAAAAwAAABoAAAADAAAAVAAAAAAAAABFAAAAAAAAADMAAAADAAAAUgAAAAMAAABAAAAAAAAAAC8AAAAAAAAATAAAAAMAAAA+AAAAAAAAACsAAAADAAAAYQAAAAAAAABZAAAAAwAAAEcAAAADAAAAYgAAAAMAAABUAAAAAAAAAEUAAAAAAAAAYAAAAAMAAABSAAAAAwAAAEAAAAAAAAAASwAAAAAAAABBAAAAAAAAADoAAAADAAAAPQAAAAAAAAA1AAAAAwAAACwAAAADAAAAMQAAAAMAAAApAAAAAwAAAB8AAAADAAAAXgAAAAAAAABWAAAAAAAAAEwAAAADAAAAUQAAAAMAAABLAAAAAAAAAEEAAAAAAAAAQgAAAAMAAAA9AAAAAAAAADUAAAADAAAAawAAAAAAAABoAAAAAwAAAGAAAAADAAAAZQAAAAMAAABeAAAAAAAAAFYAAAAAAAAAVQAAAAMAAABRAAAAAwAAAEsAAAAAAAAAOQAAAAAAAAA7AAAAAAAAAD8AAAADAAAASgAAAAAAAABOAAAAAwAAAE8AAAADAAAAUwAAAAMAAABcAAAAAwAAAF8AAAADAAAAJQAAAAAAAAAnAAAAAwAAAC0AAAADAAAANAAAAAAAAAA5AAAAAAAAADsAAAAAAAAARgAAAAMAAABKAAAAAAAAAE4AAAADAAAAGAAAAAAAAAAXAAAAAwAAABkAAAADAAAAIAAAAAMAAAAlAAAAAAAAACcAAAADAAAAMgAAAAMAAAA0AAAAAAAAADkAAAAAAAAALgAAAAAAAAA8AAAAAAAAAEgAAAADAAAAOAAAAAAAAABEAAAAAwAAAFAAAAADAAAAPwAAAAMAAABNAAAAAwAAAFoAAAADAAAAGwAAAAAAAAAoAAAAAwAAADcAAAADAAAAIwAAAAAAAAAuAAAAAAAAADwAAAAAAAAALQAAAAMAAAA4AAAAAAAAAEQAAAADAAAADgAAAAAAAAAUAAAAAwAAACQAAAADAAAAEQAAAAMAAAAbAAAAAAAAACgAAAADAAAAGQAAAAMAAAAjAAAAAAAAAC4AAAAAAAAARwAAAAAAAABZAAAAAAAAAGEAAAADAAAASQAAAAAAAABbAAAAAwAAAGcAAAADAAAASAAAAAMAAABYAAAAAwAAAGkAAAADAAAAMwAAAAAAAABFAAAAAwAAAFQAAAADAAAANgAAAAAAAABHAAAAAAAAAFkAAAAAAAAANwAAAAMAAABJAAAAAAAAAFsAAAADAAAAJgAAAAAAAAAvAAAAAwAAAEAAAAADAAAAIgAAAAMAAAAzAAAAAAAAAEUAAAADAAAAJAAAAAMAAAA2AAAAAAAAAEcAAAAAAAAAYAAAAAAAAABoAAAAAAAAAGsAAAADAAAAYgAAAAAAAABuAAAAAwAAAHMAAAADAAAAYQAAAAMAAABvAAAAAwAAAHcAAAADAAAATAAAAAAAAABWAAAAAwAAAF4AAAADAAAAUgAAAAAAAABgAAAAAAAAAGgAAAAAAAAAVAAAAAMAAABiAAAAAAAAAG4AAAADAAAAOgAAAAAAAABBAAAAAwAAAEsAAAADAAAAPgAAAAMAAABMAAAAAAAAAFYAAAADAAAAQAAAAAMAAABSAAAAAAAAAGAAAAAAAAAAVQAAAAAAAABXAAAAAAAAAFMAAAADAAAAZQAAAAAAAABmAAAAAwAAAGQAAAADAAAAawAAAAMAAABwAAAAAwAAAHIAAAADAAAAQgAAAAAAAABDAAAAAwAAAEYAAAADAAAAUQAAAAAAAABVAAAAAAAAAFcAAAAAAAAAXgAAAAMAAABlAAAAAAAAAGYAAAADAAAAMQAAAAAAAAAwAAAAAwAAADIAAAADAAAAPQAAAAMAAABCAAAAAAAAAEMAAAADAAAASwAAAAMAAABRAAAAAAAAAFUAAAAAAAAAXwAAAAAAAABcAAAAAAAAAFMAAAAAAAAATwAAAAAAAABOAAAAAAAAAEoAAAADAAAAPwAAAAEAAAA7AAAAAwAAADkAAAADAAAAbQAAAAAAAABsAAAAAAAAAGQAAAAFAAAAXQAAAAEAAABfAAAAAAAAAFwAAAAAAAAATQAAAAEAAABPAAAAAAAAAE4AAAAAAAAAdQAAAAQAAAB2AAAABQAAAHIAAAAFAAAAagAAAAEAAABtAAAAAAAAAGwAAAAAAAAAWgAAAAEAAABdAAAAAQAAAF8AAAAAAAAAWgAAAAAAAABNAAAAAAAAAD8AAAAAAAAAUAAAAAAAAABEAAAAAAAAADgAAAADAAAASAAAAAEAAAA8AAAAAwAAAC4AAAADAAAAagAAAAAAAABdAAAAAAAAAE8AAAAFAAAAYwAAAAEAAABaAAAAAAAAAE0AAAAAAAAAWAAAAAEAAABQAAAAAAAAAEQAAAAAAAAAdQAAAAMAAABtAAAABQAAAF8AAAAFAAAAcQAAAAEAAABqAAAAAAAAAF0AAAAAAAAAaQAAAAEAAABjAAAAAQAAAFoAAAAAAAAAaQAAAAAAAABYAAAAAAAAAEgAAAAAAAAAZwAAAAAAAABbAAAAAAAAAEkAAAADAAAAYQAAAAEAAABZAAAAAwAAAEcAAAADAAAAcQAAAAAAAABjAAAAAAAAAFAAAAAFAAAAdAAAAAEAAABpAAAAAAAAAFgAAAAAAAAAbwAAAAEAAABnAAAAAAAAAFsAAAAAAAAAdQAAAAIAAABqAAAABQAAAFoAAAAFAAAAeQAAAAEAAABxAAAAAAAAAGMAAAAAAAAAdwAAAAEAAAB0AAAAAQAAAGkAAAAAAAAAdwAAAAAAAABvAAAAAAAAAGEAAAAAAAAAcwAAAAAAAABuAAAAAAAAAGIAAAADAAAAawAAAAEAAABoAAAAAwAAAGAAAAADAAAAeQAAAAAAAAB0AAAAAAAAAGcAAAAFAAAAeAAAAAEAAAB3AAAAAAAAAG8AAAAAAAAAcAAAAAEAAABzAAAAAAAAAG4AAAAAAAAAdQAAAAEAAABxAAAABQAAAGkAAAAFAAAAdgAAAAEAAAB5AAAAAAAAAHQAAAAAAAAAcgAAAAEAAAB4AAAAAQAAAHcAAAAAAAAAcgAAAAAAAABwAAAAAAAAAGsAAAAAAAAAZAAAAAAAAABmAAAAAAAAAGUAAAADAAAAUwAAAAEAAABXAAAAAwAAAFUAAAADAAAAdgAAAAAAAAB4AAAAAAAAAHMAAAAFAAAAbAAAAAEAAAByAAAAAAAAAHAAAAAAAAAAXAAAAAEAAABkAAAAAAAAAGYAAAAAAAAAdQAAAAAAAAB5AAAABQAAAHcAAAAFAAAAbQAAAAEAAAB2AAAAAAAAAHgAAAAAAAAAXwAAAAEAAABsAAAAAQAAAHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAGAAAAAgAAAAUAAAABAAAABAAAAAAAAAAAAAAABQAAAAMAAAABAAAABgAAAAQAAAACAAAAAAAAAH6iBfbytuk/Gq6akm/58z/Xrm0Liez0P5doSdOpSwRAWs602ULg8D/dT7Rcbo/1v1N1RQHFNOM/g9Snx7HW3L8HWsP8Q3jfP6VwOLosutk/9rjk1YQcxj+gnmKMsNn6P/HDeuPFY+M/YHwDjqKhB0Ci19/fCVrbP4UxKkDWOP6/pvljWa09tL9wi7wrQXjnv/Z6yLImkM2/3yTlOzY14D+m+WNZrT20PzwKVQnrQwNA9nrIsiaQzT/g40rFrRQFwPa45NWEHMa/kbslHEZq97/xw3rjxWPjv4cLC2SMBci/otff3wla27+rKF5oIAv0P1N1RQHFNOO/iDJPGyWHBUAHWsP8Q3jfvwQf/by16gXAfqIF9vK26b8XrO0Vh0r+v9eubQuJ7PS/BxLrA0ZZ479azrTZQuDwv1MK1EuItPw/yscgV9Z6FkAwHBR2WjQMQJNRzXsQ5vY/GlUHVJYKF0DONuFv2lMNQNCGZ28QJfk/0WUwoIL36D8ggDOMQuATQNqMOeAy/wZAWFYOYM+M2z/LWC4uH3oSQDE+LyTsMgRAkJzhRGWFGEDd4soovCQQQKqk0DJMEP8/rGmNdwOLBUAW2X/9xCbjP4hu3dcqJhNAzuYItRvdB0CgzW3zJW/sPxotm/Y2TxRAQAk9XmdDDEC1Kx9MKgT3P1M+NctcghZAFVqcLlb0C0Bgzd3sB2b2P77mZDPUWhZAFROHJpUGCEDAfma5CxXtPz1DWq/zYxRAmhYY5824F0DOuQKWSbAOQNCMqrvu3fs/L6DR22K2wT9nAAxPBU8RQGiN6mW43AFAZhu25b633D8c1YgmzowSQNM25BRKWARArGS08/lNxD+LFssHwmMRQLC5aNcxBgJABL9HT0WRF0CjCmJmOGEOQHsuaVzMP/s/TWJCaGGwBUCeu1PAPLzjP9nqN9DZOBNAKE4JcydbCkCGtbd1qjPzP8dgm9U8jhVAtPeKTkVwDkCeCLss5l37P401XMPLmBdAFd29VMVQDUBg0yA55h75Pz6odcYLCRdApBM4rBrkAkDyAVWgQxbRP4XDMnK20hFAymLlF7EmzD8GUgo9XBHlP3lbK7T9COc/k+OhPthhy7+YGEpnrOvCPzBFhLs15u4/epbqB6H4uz9IuuLF5svev6lzLKY31es/CaQ0envF5z8ZY0xlUADXv7zaz7HYEuI/CfbK1sn16T8uAQfWwxLWPzKn/YuFN94/5KdbC1AFu793fyCSnlfvPzK2y4doAMY/NRg5t1/X6b/shq4QJaHDP5yNIAKPOeI/vpn7BSE30r/X4YQrO6nrv78Ziv/Thto/DqJ1Y6+y5z9l51NaxFrlv8QlA65HOLS/86dxiEc96z+Hj0+LFjneP6LzBZ8LTc2/DaJ1Y6+y579l51NaxFrlP8QlA65HOLQ/8qdxiEc967+Jj0+LFjnev6LzBZ8LTc0/1qdbC1AFuz93fyCSnlfvvzK2y4doAMa/NRg5t1/X6T/vhq4QJaHDv5yNIAKPOeK/wJn7BSE30j/W4YQrO6nrP78Ziv/Thtq/CaQ0envF578XY0xlUADXP7zaz7HYEuK/CvbK1sn16b8rAQfWwxLWvzKn/YuFN96/zWLlF7EmzL8GUgo9XBHlv3lbK7T9COe/kOOhPthhyz+cGEpnrOvCvzBFhLs15u6/c5bqB6H4u79IuuLF5sveP6lzLKY31eu/AQAAAP////8HAAAA/////zEAAAD/////VwEAAP////9hCQAA/////6dBAAD/////kcsBAP/////3kAwA/////8H2VwAAAAAAAAAAAAAAAAACAAAA/////w4AAAD/////YgAAAP////+uAgAA/////8ISAAD/////ToMAAP////8ilwMA/////+4hGQD/////gu2vAAAAAAAAAAAAAAAAAAAAAAACAAAA//////////8BAAAAAwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////AgAAAP//////////AQAAAAAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD/////////////////////AQAAAP///////////////wIAAAD///////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP///////////////////////////////wIAAAD///////////////8BAAAA/////////////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAABAAAA//////////8CAAAA//////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAAAQAAAP//////////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAAAAAAAAAAIAAAABAAAAAQAAAAIAAAACAAAAAAAAAAUAAAAFAAAAAAAAAAIAAAACAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAEAAAACAAAAAgAAAAIAAAAAAAAABQAAAAYAAAAAAAAAAgAAAAIAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAACAAAAAQAAAAMAAAACAAAAAgAAAAAAAAAFAAAABwAAAAAAAAACAAAAAgAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAIAAAABAAAABAAAAAIAAAACAAAAAAAAAAUAAAAIAAAAAAAAAAIAAAACAAAAAwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAIAAAAAAAAAAgAAAAEAAAAAAAAAAgAAAAIAAAAAAAAABQAAAAkAAAAAAAAAAgAAAAIAAAADAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAIAAAAAAAAAAwAAAA4AAAACAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAgAAAAMAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAgAAAAAAAAADAAAACgAAAAIAAAAAAAAAAgAAAAMAAAABAAAAAAAAAAIAAAACAAAAAwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAACAAAAAAAAAAMAAAALAAAAAgAAAAAAAAACAAAAAwAAAAIAAAAAAAAAAgAAAAIAAAADAAAACAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAIAAAAAAAAAAwAAAAwAAAACAAAAAAAAAAIAAAADAAAAAwAAAAAAAAACAAAAAgAAAAMAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAACAAAAAgAAAAAAAAADAAAADQAAAAIAAAAAAAAAAgAAAAMAAAAEAAAAAAAAAAIAAAACAAAAAwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAACAAAAAAAAAAMAAAAGAAAAAgAAAAAAAAACAAAAAwAAAA8AAAAAAAAAAgAAAAIAAAADAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAIAAAAAAAAAAwAAAAcAAAACAAAAAAAAAAIAAAADAAAAEAAAAAAAAAACAAAAAgAAAAMAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAgAAAAAAAAADAAAACAAAAAIAAAAAAAAAAgAAAAMAAAARAAAAAAAAAAIAAAACAAAAAwAAAA0AAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAACAAAAAAAAAAMAAAAJAAAAAgAAAAAAAAACAAAAAwAAABIAAAAAAAAAAgAAAAIAAAADAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAgAAAAIAAAAAAAAAAwAAAAUAAAACAAAAAAAAAAIAAAADAAAAEwAAAAAAAAACAAAAAgAAAAMAAAAPAAAAAAAAAAAAAAAAAAAAAAAAABAAAAACAAAAAAAAAAIAAAABAAAAEwAAAAIAAAACAAAAAAAAAAUAAAAKAAAAAAAAAAIAAAACAAAAAwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAIAAAAAAAAAAgAAAAEAAAAPAAAAAgAAAAIAAAAAAAAABQAAAAsAAAAAAAAAAgAAAAIAAAADAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAgAAAAAAAAACAAAAAQAAABAAAAACAAAAAgAAAAAAAAAFAAAADAAAAAAAAAACAAAAAgAAAAMAAAASAAAAAAAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAIAAAABAAAAEQAAAAIAAAACAAAAAAAAAAUAAAANAAAAAAAAAAIAAAACAAAAAwAAABMAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAIAAAAAAAAAAgAAAAEAAAASAAAAAgAAAAIAAAAAAAAABQAAAA4AAAAAAAAAAgAAAAIAAAADAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAEAAAACAAAAAQAAAAAAAAACAAAAAAAAAAUAAAAEAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAQAAAAAAAAABQAAAAAAAAACAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAEAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAQAAAAAAAAABQAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAA6B6FaUp9QQTPXMuL4myJBraiDfBwx9UBYJseitzTIQOL5if9jqZtAnXX+Z+ycb0C3pucbhRBCQG8wJBYqpRRAlWbDCzCY5z/eFWBUEve6P/+qo4Q50Y4/D9YM3iCcYT8fcA2QJSA0P4ADxu0qAAc/BNcGolVJ2j5d9FACqwquPh9z7MthtI9CSUSYJke/YUJQ/64OyjU0Qpi0+HCmFQdCm3GfIVdh2kHsJ11kAyauQYC3UDFJOoFBSJsFV1OwU0FK5fcxX4AmQWhy/zZIt/lACqaCPsBjzUDbdUNIScugQMYQlVJ4MXNANiuq8GTvRUDxTXnulxEZQFZ8QX5kpuw/qmG/JwYFlEAluh3Q6DB+QKn4vyNq0GZAKOXekas+UUB8xabXXhI6QG63C2pLtSNAdDBtyNfLDUDyOcu67ID2P0rCMvRXAeE/Ki2TSVyzyT9Dk+8Sz2uzP5J+w5ARWp0/NQAoOiMuhj9YnP+RyMJwPxgW7TvQVFk/KgsLYF0kQz9g5dAC6IwzQcgHPVvDex1B1XjppodHBkHJq3OMM9fwQNvcmJ7wddlAInGPpQs/w0BRobq5EBmtQJZ2ai7n+ZVAtv2G5E+bgECG+gIfKBlpQK5f8jdI91JAL39sL/WpPEB8rGxhDqklQK6yUf43XhBAxL9y/tK8+D86XyZpgrHiPwAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAP////8AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAD/////AAAAAAAAAAABAAAAAQAAAAAAAAAAAAAA/////wAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAP////8FAAAABQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAABQAAAAEAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAQABAAABAQAAAAAAAQAAAAEAAAABAAEAAAAAAAAAAAAAAAAAAAAAquJYWJZl+D9jaeZNtj/zPwwdI9KqaeO/qGefXwdHdz+q4lhYlmX4P+OrlPMN3PI/DB0j0qpp47+7SQLV4VIEQKriWFiWZfg/r2kma3tz8T82eQmLqNIGwMRIWXMqSvo/fcCszPux9j+jara6ozTwP6hnn18HR3c/MSoKLequ8r+SabgA2nj0P7jBLbDOHO8/1Ym/ICfH4T+6lxjvlFXHv73m373LRPU/0vXyDVxo7T+ToKRHJXMAQF/33578aPE/pAyy64tD9T8+U/hCvyruPwxv8Y7YYwLAuXYr8NAiCEB4+LDK0Sn0P1Qeuy4j+eo/OMx50n7K7L+TrGB/nyf8v5ehC2fbYPM/aXMKexiT6z8mFRIMjg/zP7yUVwGGBNw/E6opHERf8z/z0wR2g9DqPw4pBpcOhvu/NbA29uWAA8DMaTExyXzyP02biiQ+Ruk/S8jz2/FKBEB1pzZnpbb9P7pQU4wLfPI//7ZcQXeG6D9CqEQvAYoIwDB2VB6sSgRAVyv8H5We8T+EHWF8XNPmPzB2wT8Nrrg/SEi+cX+w4L8of+GtdSDxP1sjk5AdouU/6ZjOVru13r8K0obqI6bxvwVbdNXyhfA/w5GG024n5z+rwmtMzP8BwLw9pSX49QXABe/2uQxP8D+b6wCzCvXkP7uGT87fK+Q/pz/JWw4coj+qoBf2J0nwP/yE3PUo0+I/vFJeHcaC+D96luSIqvntP/bf8sHUYu8/gZNN41mL4z9bhOqVOF4FwO6lmAh1hQhAbCVxbdhk7z+1C8NdDcfiPwG36x/0OQBAx0WJ76c2+D9nlSHXANfuP2HlfZ3gqOE/EwnVlVPg9r96+oHzEH//v5bXzdT1Auw/DM3GwLsA4D9p/8uoKcr+v+U9x5DQVAPAehjSdghb7D9sc1IetODgP8MVwwB1pu6/azPk6OGe978W8t/TUc3rP+0QMvYfP+A/RsG/QpSE8D+l3uwScxzgPwQaifgujuw/k1Vti1I43z8MAwLnSh0GQH5nYnwwZgJAiGUzWC5s6j8WyyI/BbLgPw4iUapGeQJAB3W+imnp/j9BLWR4ssrpP2t+gG5Pstk/cpBsfm6DCMCOpU9dOZsFQEv8nFypHeo/ehJ6i+6S2D9jqlGEmarLv7STC5TRiOa/bC+x8WZD6D9H3yUkWpDZP8gZvmCMuQLAreY19/eRBsCoPOc8UzzpP6KI/QV+y9g/t/MoboyWzT+Hv5q3Zu3Mvy2xROCT4uY/9gQitMMg1T9abAqhWMDkv1oLTavoUfG/PMUJP9CD5j+fHRX3t6fSPz7W2gk6bvs/WRnuHwqN9D8YFturGCTmP1EZczv0b9I/5t4exabB5D/1ESLh5fTEP9X2z6SYweQ/6lv3I2zT0D9zkRGNUNMAQKoSvc4EIfs/Xggt8wQI5T+mJHHg/w/SP4lhT/9t8vQ/DrZ/DbwH7D+XlhbYZrjkP34LIpFt6c4/lwfp8fLX9L+j96CTTf76v3WdNhEv9uM/d8c3o4lV0D/vFdCHVcsFwAHeDq0F1QhApbYqcZiN5D9KoilqByXLPwX0/diA0vq/0fo0GxnxAMBbaTkvlCzjP/RrFrWXrMs/UYTrky7jA0DB9f4FiZYAQEGAk/3QzeE/r/TeqE8t0D/OqjlsnPbvvz8RKU8JOfW/smSEbK/O4T8MzuyPm3DDP/rFtctq9gZAfb1EVEaSA0Dts5dVInnhP18SFMc79MM/7y34cw6LAMDFrRJsZO0DwC2KLvLSYuA/hx5wcUHewz+49SnK/4ruPyeS0PX9a+E/ZxaaLvvZ3z8WPu5T2QS8Pygo4RIvMqa/BJ0Kqsd0279cKW4ay8jdP3b05bmZ364/10/qtdxk2r+Bcz6CDMvpv54qOw+Amdw/qLV71pW7sT/YKc80nIPUP8OfIaBJ77G/LyTuD1un2z+diYu8efWzP1wU7ACkfwjAZroyPL1yBkAmv3lKJJbbPysKSE4W+p0/dIgqY79TA8ATLTOQ3tsGwJ2zweD/Xdg/XO/jXeFUaL8VW2qLFKfov1cA9Aa6XfK/tIa7YGgI2T+f3hu/sxqPv2nXdPpf3Pc/jkw8Jbda8j+tT/z8tGPVP1yBHpJd35k/KYvYOy1s8j/yz+kCQjPrP9+agH7x59g/PZfJ9aBhpr/rDKzvYBb+PwtkiaGCt/c/vb1mVr+f1T/JIHwHc8Govw7aeF6+9vG/Xv7kD6fp979isYioQYHVP7AIQZuSFrG/3z1AdUTnAUDN3XY9O7f9P0AdQ9ljYNQ/dJANJPTOrb8kLECUiiPlP4yF7UgmStA/9xGmXxCG1T9qZzix4W2zv2SGJRJVrPe/Fh9a2M/B/b8IexzFCoPSP9y1QFD2bLe/Q86cWLJe/b+mOOfYm78BwOTjkPAGE9E/8aPCUKu/ub9pPZyLCiUGwBA7Mev/BQlALOmrlRi+0j+AMJ/dKULBv7iLtL6a6QRAEMDV/yajAUDa62dE3crJP1P70RgBUbq/38hVnR6esT/s1tG10Z/Ov/zLwalHPss/dTS9NKTXx78nMcRzCIEHQAabxDsAmQRA0tyLK3gSyT+Aui7nOhDGv5Gs58z3WgHATN3forJuBMCAui7nOhDGP9Lciyt4Esm/WAJyHQ4c7z8UP5HFIs3iP3U0vTSk18c//MvBqUc+y7+cvv8HLg/Kvy1I/mHsI+K/U/vRGAFRuj/a62dE3crJv8p+WV8KlQjAuQ/nOP43B0CAMJ/dKULBPyzpq5UYvtK/ZoU+VoLh4L9etLlRUfvtv/GjwlCrv7k/5OOQ8AYT0b9DfT9FhufXPwUX8hJp+4u/3LVAUPZstz8IexzFCoPSv9+L609E5fQ/q9Fz7X2J7T9qZzix4W2zP/cRpl8QhtW/vtNilqGX+j8MOy7QJoL0P3SQDST0zq0/QB1D2WNg1L8IIjSvGNkDwGB8Jou2GAfAsAhBm5IWsT9isYioQYHVvyS9D3zb6uy/gnwRa7uM9L/JIHwHc8GoP729Zla/n9W/CsAHJZwmAEDEW6OYT1r6Pz2XyfWgYaY/35qAfvHn2L83Tdy4lS30vxf2/gZ0jPq/XIEekl3fmb+tT/z8tGPVvybPr2zJ1/+/K7mJ0ypVAsCf3hu/sxqPPwCGu2BoCNm/5oITrpZn+r+UDUyDP+n/v1zv413hVGg/nbPB4P9d2L9MlmkxNvgCQMtZlKE85v8/KwpIThb6nb8mv3lKJJbbv8+SZsTvOOc/pQCIIOYw0j+diYu8efWzvy8k7g9bp9u/kxYDa+pKtD9XlYvA8HnVv6i1e9aVu7G/nio7D4CZ3L/WR6rNh5EGwCkgQweBkghAdvTluZnfrr9cKW4ay8jdvxbjhr1f1QVAR5C0MzivAkAWPu5T2QS8v2cWmi772d+/cKj4lzLJCEBx2QJfYrMFQIcecHFB3sO/LYou8tJi4L+jr7lhO38BwIcI0Nb7xgTAXxIUxzv0w7/ts5dVInnhv0T+l8DZLfE/MP3FoFvS5D8MzuyPm3DDv7JkhGyvzuG/tzhzRIRc0b9Ovv3/0z7mv6/03qhPLdC/m4CT/dDN4b9dwjU5VCQBQBBJX1ntCv0/9GsWtZesy79baTkvlCzjv1mjYgEz++S/oW6KnOQW8b9KoilqByXLv6W2KnGYjeS/SmaKz3Vx9z+BZB5yxGHwP3fHN6OJVdC/dZ02ES/2478PuaBjLrXaP4/JU81pPaO/fgsikW3pzr+XlhbYZrjkv4tSn7YDbP0/f2LnFKlF9z+mJHHg/w/Sv14ILfMECOW/mfg4qYhR/b+OP+RQDCACwOpb9yNs09C/1fbPpJjB5L9pN2WOVZ3wv3hHy9nxIve/URlzO/Rv0r8YFturGCTmv1d1/KKR8QPA8gsy9qzSB8CfHRX3t6fSvzzFCT/Qg+a/EYStnrzV9r/2QJqI7Lb9v/YEIrTDINW/LbFE4JPi5r/7kQEs5fEDQHunnf4GeQBAooj9BX7L2L+oPOc8Uzzpv+ydYY2SSAfAL4HK6CRTB0BH3yUkWpDZv2wvsfFmQ+i/Ik0Yzruh6T8fM3LoGoDUP3oSeovukti/S/ycXKkd6r9rEv+7UWcHQCRIQe/GfwNAa36Abk+y2b9BLWR4ssrpv9KT87qa0bM/FTyktw823L8WyyI/BbLgv4hlM1gubOq/DizMp9Ki6r8b5ckdjVrzv5NVbYtSON+/BBqJ+C6O7L/dUBFqgyXYv00Wh18r7+q/7RAy9h8/4L8W8t/TUc3rv4RM5DKx3wDAfvWIj94aBcBsc1IetODgv3oY0nYIW+y/oGcTFF54AUDkJqS/FKX6PwzNxsC7AOC/ltfN1PUC7L+5Wrz/zHnzP6688w2rNOc/YeV9neCo4b9nlSHXANfuvw9RsxKjY/s/1V8GteXE8j+1C8NdDcfiv2wlcW3YZO+/IOywaA7Q8b9bFP+4Tg36v4GTTeNZi+O/9t/ywdRi77+tRc3yFR7eP2bkcHXJkLO//ITc9SjT4r+qoBf2J0nwv2YHKoswwfm/iQcLspCjAcCb6wCzCvXkvwXv9rkMT/C/YkuwYAMXBMApCNUai9kIwMORhtNuJ+e/BVt01fKF8L+ZqWEfvIjsP6h693QZYNk/WyOTkB2i5b8of+GtdSDxvwpaaulDSwVADMQAX+lOAECEHWF8XNPmv1cr/B+VnvG/XyFG6opcCMD/mtR32/UEQP+2XEF3hui/ulBTjAt88r/imfCfRP+yP9zbvtc8XeO/TZuKJD5G6b/MaTExyXzyvxiTQeElXOO/rbJRQVGN9L/z0wR2g9DqvxOqKRxEX/O/FDGCEei99j9x8zV4VYTmP2lzCnsYk+u/l6ELZ9tg878pRXacaDT/v3k6GZRqoQXAVB67LiP56r94+LDK0Sn0vwO6pZ9b7wFAvK0nKVcc9j8+U/hCvyruv6QMsuuLQ/W/FPhKFYv46j8MyxaDTOW/v9L18g1caO2/vebfvctE9b/7GD8ZrF3xv3gx1AR9bQDAuMEtsM4c77+SabgA2nj0v5xKFIwxsATArKNSBaKsB0Cjara6ozTwv33ArMz7sfa/dF2U0FcWCcDxL357DJX/P69pJmt7c/G/quJYWJZl+L/YntVJlnrSP4sRLzXM+fe/46uU8w3c8r+q4lhYlmX4v85lu5+QRwRAsI0H/WU8479jaeZNtj/zv6riWFiWZfi/sI0H/WU847/OZbufkEcEQHAoPUBrnss/9exKzDtFtT88wM8kax+gP9OqeKeAYog/MW0ItiZvcj+ph+smvt5bP2lCaV5dEUU/StaUmQDaLz+kK9y22BMYP0O3whZuMwI/IIbgZGWE6z7UkjYaEM3UPuezxwa9cr8+LybxRMnFpz6E1N8DbPiRPsYjySMvK3s+//////8fAAj//////zMQCP////9/MiAI/////28yMAj/////YzJACP///z9iMlAI////N2IyYAj///8zYjJwCP//vzNiMoAI//+rM2IykAj/f6szYjKgCP8PqzNiMrAI/wOrM2IywAi/A6szYjLQCJ8DqzNiMuAImQOrM2Iy8Aj//////z8PCP//////Kx8I/////38pLwj/////Pyk/CP////85KU8I////PzgpXwj///8POClvCP///w44KX8I//8fDjgpjwj//w8OOCmfCP9/DQ44Ka8I/w8NDjgpvwj/DQ0OOCnPCP8MDQ44Kd8IxwwNDjgp7wjEDA0OOCn/CAcAAAAHAAAAAQAAAAIAAAAEAAAAAwAAAAAAAAAAAAAABwAAAAMAAAABAAAAAgAAAAUAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAGAAAAAgAAAAMAAAAFAAAABAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAwAAAAEAAAAFAAAABAAAAAAAAAAAAAAABwAAAAUAAAADAAAABAAAAAEAAAAAAAAAAgAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAABgtRFT7Ifk/GC1EVPsh+b8YLURU+yEJQBgtRFT7IQnAYWxnb3MuYwBoM05laWdoYm9yUm90YXRpb25zAGNvb3JkaWprLmMAX3VwQXA3Q2hlY2tlZABfdXBBcDdyQ2hlY2tlZABkaXJlY3RlZEVkZ2UuYwBkaXJlY3RlZEVkZ2VUb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpclt0bXBGaWprLmZhY2VdW2ZpamsuZmFjZV0gPT0gS0kAZmFjZWlqay5jAF9mYWNlSWprUGVudFRvQ2VsbEJvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9DZWxsQm91bmRhcnkAaDNJbmRleC5jAGNvbXBhY3RDZWxscwBsYXRMbmdUb0NlbGwAY2VsbFRvQ2hpbGRQb3MAdmFsaWRhdGVDaGlsZFBvcwBsYXRMbmcuYwBjZWxsQXJlYVJhZHMyAHBvbHlnb24tPm5leHQgPT0gTlVMTABsaW5rZWRHZW8uYwBhZGROZXdMaW5rZWRQb2x5Z29uAG5leHQgIT0gTlVMTABsb29wICE9IE5VTEwAYWRkTmV3TGlua2VkTG9vcABwb2x5Z29uLT5maXJzdCA9PSBOVUxMAGFkZExpbmtlZExvb3AAY29vcmQgIT0gTlVMTABhZGRMaW5rZWRDb29yZABsb29wLT5maXJzdCA9PSBOVUxMAGlubmVyTG9vcHMgIT0gTlVMTABub3JtYWxpemVNdWx0aVBvbHlnb24AYmJveGVzICE9IE5VTEwAY2FuZGlkYXRlcyAhPSBOVUxMAGZpbmRQb2x5Z29uRm9ySG9sZQBjYW5kaWRhdGVCQm94ZXMgIT0gTlVMTAByZXZEaXIgIT0gSU5WQUxJRF9ESUdJVABsb2NhbGlqLmMAY2VsbFRvTG9jYWxJamsAYmFzZUNlbGwgIT0gb3JpZ2luQmFzZUNlbGwAIShvcmlnaW5PblBlbnQgJiYgaW5kZXhPblBlbnQpAGJhc2VDZWxsID09IG9yaWdpbkJhc2VDZWxsAGJhc2VDZWxsICE9IElOVkFMSURfQkFTRV9DRUxMAGxvY2FsSWprVG9DZWxsACFfaXNCYXNlQ2VsbFBlbnRhZ29uKGJhc2VDZWxsKQBiYXNlQ2VsbFJvdGF0aW9ucyA+PSAwAGdyaWRQYXRoQ2VsbHMAcG9seWZpbGwuYwBpdGVyU3RlcFBvbHlnb25Db21wYWN0ADAAdmVydGV4LmMAdmVydGV4Um90YXRpb25zAGNlbGxUb1ZlcnRleABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl";var G="function"==typeof atob?atob:function(A){var e,t,r,n,o,i,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s="",l=0;A=A.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{e=a.indexOf(A.charAt(l++))<<2|(n=a.indexOf(A.charAt(l++)))>>4,t=(15&n)<<4|(o=a.indexOf(A.charAt(l++)))>>2,r=(3&o)<<6|(i=a.indexOf(A.charAt(l++))),s+=String.fromCharCode(e),64!==o&&(s+=String.fromCharCode(t)),64!==i&&(s+=String.fromCharCode(r))}while(l=0){if((0|t)>13780509){if(0|(a=0|le(15,s)))break;s=0|n[(l=s)>>2],l=0|n[l+4>>2]}else c=0|qe(0|t,0|(a=((0|t)<0)<<31>>31),3,0),l=0|B(),a=0|We(0|t,0|a,1,0),a=0|We(0|(a=0|qe(0|c,0|l,0|a,0|B())),0|B(),1,0),l=0|B(),n[s>>2]=a,n[s+4>>2]=l,s=a;if(lt(0|r,0,s<<3),0|o){lt(0|o,0,s<<2),a=0|I(A,e,t,r,o,s,l,0);break}(a=0|Ve(s,4))?(c=0|I(A,e,t,r,a,s,l,0),Ye(a),a=c):a=13}else a=2}while(0);return P=i,0|a}function T(A,e,t,r,o){A|=0,e|=0,t|=0,r|=0,o|=0;var i,a,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0;if(a=P,P=P+16|0,m=a+8|0,n[(h=i=a)>>2]=A,n[h+4>>2]=e,(0|t)<0)return P=a,2;if(n[(s=r)>>2]=A,n[s+4>>2]=e,(s=!!(0|o))&&(n[o>>2]=0),0|HA(A,e))return P=a,9;n[m>>2]=0;A:do{if((0|t)>=1)if(s)for(f=1,d=0,g=0,h=1,s=A;;){if(!(d|g)){if(0|(s=0|L(s,e,4,m,i)))break A;if(0|HA(s=0|n[(e=i)>>2],e=0|n[e+4>>2])){s=9;break A}}if(0|(s=0|L(s,e,0|n[26800+(g<<2)>>2],m,i)))break A;if(s=0|n[(e=i)>>2],e=0|n[e+4>>2],n[(A=r+(f<<3)|0)>>2]=s,n[A+4>>2]=e,n[o+(f<<2)>>2]=h,l=(0|(A=d+1|0))==(0|h),u=6==(0|(c=g+1|0)),0|HA(s,e)){s=9;break A}if((0|(h=h+(u&l&1)|0))>(0|t)){s=0;break}f=f+1|0,d=l?0:A,g=l?u?0:c:g}else for(f=1,d=0,g=0,h=1,s=A;;){if(!(d|g)){if(0|(s=0|L(s,e,4,m,i)))break A;if(0|HA(s=0|n[(e=i)>>2],e=0|n[e+4>>2])){s=9;break A}}if(0|(s=0|L(s,e,0|n[26800+(g<<2)>>2],m,i)))break A;if(s=0|n[(e=i)>>2],e=0|n[e+4>>2],n[(A=r+(f<<3)|0)>>2]=s,n[A+4>>2]=e,l=(0|(A=d+1|0))==(0|h),u=6==(0|(c=g+1|0)),0|HA(s,e)){s=9;break A}if((0|(h=h+(u&l&1)|0))>(0|t)){s=0;break}f=f+1|0,d=l?0:A,g=l?u?0:c:g}else s=0}while(0);return P=a,0|s}function I(A,e,t,r,o,i,a,s){t|=0,r|=0,o|=0,s|=0;var l,c,u,d=0,f=0,g=0,h=0,m=0,b=0,p=0;if(u=P,P=P+16|0,l=u+8|0,c=u,d=0|At(0|(A|=0),0|(e|=0),0|(i|=0),0|(a|=0)),g=0|B(),!(!(0|(p=0|n[(b=h=r+(d<<3)|0)>>2]))&!(0|(b=0|n[b+4>>2]))|(f=(0|p)==(0|A)&(0|b)==(0|e))))do{d=0|$e(0|(d=0|We(0|d,0|g,1,0)),0|B(),0|i,0|a),g=0|B(),f=(0|(b=0|n[(p=h=r+(d<<3)|0)>>2]))==(0|A)&(0|(p=0|n[p+4>>2]))==(0|e)}while(!(!(0|b)&!(0|p)|f));if(d=o+(d<<2)|0,f&&(0|n[d>>2])<=(0|s))return P=u,0;if(n[(p=h)>>2]=A,n[p+4>>2]=e,n[d>>2]=s,(0|s)>=(0|t))return P=u,0;switch(f=s+1|0,n[l>>2]=0,0|(d=0|L(A,e,2,l,c))){case 9:m=9;break;case 0:(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f))||(m=9)}A:do{if(9==(0|m)){switch(n[l>>2]=0,0|(d=0|L(A,e,3,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}switch(n[l>>2]=0,0|(d=0|L(A,e,1,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}switch(n[l>>2]=0,0|(d=0|L(A,e,5,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}switch(n[l>>2]=0,0|(d=0|L(A,e,4,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}switch(n[l>>2]=0,0|(d=0|L(A,e,6,l,c))){case 9:break;case 0:if(0|(d=0|I(0|n[(d=c)>>2],0|n[d+4>>2],t,r,o,i,a,f)))break A;break;default:break A}return P=u,0}}while(0);return P=u,0|d}function L(A,e,t,r,o){A|=0,e|=0,o|=0;var i,a,s=0,l=0,c=0,u=0,d=0,f=0,g=0;if((t|=0)>>>0>6)return 1;if(d=(0|n[(r|=0)>>2])%6|0,n[r>>2]=d,(0|d)>0){s=0;do{t=0|xA(t),s=s+1|0}while((0|s)<(0|n[r>>2]))}if(d=0|tt(0|A,0|e,45),B(),(a=127&d)>>>0>121)return 5;i=0|UA(A,e),s=0|tt(0|A,0|e,52),B(),s&=15;A:do{if(s){for(;;){if(c=0|tt(0|A,0|e,0|(l=3*(15-s|0)|0)),B(),7==(0|(c&=7))){e=5;break}if(g=!(0|ZA(s)),s=s+-1|0,f=0|rt(7,0,0|l),e&=~B(),A=0|rt(0|n[(g?432:16)+(28*c|0)+(t<<2)>>2],0,0|l)|A&~f,e|=l=0|B(),!(t=0|n[(g?640:224)+(28*c|0)+(t<<2)>>2])){t=0;break A}if(!s){u=8;break A}}return 0|e}u=8}while(0);8==(0|u)&&(A|=0|rt(0|(g=0|n[848+(28*a|0)+(t<<2)>>2]),0,45),e=B()|-1040385&e,t=0|n[4272+(28*a|0)+(t<<2)>>2],127&~g||(g=0|rt(0|n[848+(28*a|0)+20>>2],0,45),e=B()|-1040385&e,t=0|n[4272+(28*a|0)+20>>2],A=0|YA(g|A,e),e=0|B(),n[r>>2]=1+(0|n[r>>2]))),c=0|tt(0|A,0|e,45),B(),c&=127;A:do{if(0|z(c)){e:do{if(1==(0|UA(A,e))){if((0|a)!=(0|c)){if(0|Y(c,0|n[7696+(28*a|0)>>2])){A=0|WA(A,e),l=1,e=0|B();break}D(27795,26864,533,26872)}switch(0|i){case 3:A=0|YA(A,e),e=0|B(),n[r>>2]=1+(0|n[r>>2]),l=0;break e;case 5:A=0|WA(A,e),e=0|B(),n[r>>2]=5+(0|n[r>>2]),l=0;break e;case 0:return 9;default:return 1}}else l=0}while(0);if((0|t)>0){s=0;do{A=0|OA(A,e),e=0|B(),s=s+1|0}while((0|s)!=(0|t))}if((0|a)!=(0|c)){if(!(0|G(c))){if(!!(0|l)|5!=(0|UA(A,e)))break;n[r>>2]=1+(0|n[r>>2]);break}switch(127&d){case 8:case 118:break A}3!=(0|UA(A,e))&&(n[r>>2]=1+(0|n[r>>2]))}}else if((0|t)>0){s=0;do{A=0|YA(A,e),e=0|B(),s=s+1|0}while((0|s)!=(0|t))}}while(0);return n[r>>2]=((0|n[r>>2])+t|0)%6|0,n[(g=o)>>2]=A,n[g+4>>2]=e,0}function R(A,e,t,r){A|=0,e|=0,t|=0,r|=0;var o,i,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0;if(i=P,P=P+16|0,h=i+8|0,n[(g=o=i)>>2]=A,n[g+4>>2]=e,(0|t)<0)return P=i,2;if(!t)return n[(h=r)>>2]=A,n[h+4>>2]=e,P=i,0;n[h>>2]=0;A:do{if(0|HA(A,e))A=9;else{a=0,g=A;do{if(0|(A=0|L(g,e,4,h,o)))break A;if(a=a+1|0,0|HA(g=0|n[(e=o)>>2],e=0|n[e+4>>2])){A=9;break A}}while((0|a)<(0|t));n[(f=r)>>2]=g,n[f+4>>2]=e,f=t+-1|0,d=0,A=1;do{if(a=26800+(d<<2)|0,5==(0|d))for(l=0|n[a>>2],s=0,a=A;;){if(0|(A=0|L(0|n[(A=o)>>2],0|n[A+4>>2],l,h,o)))break A;if((0|s)!=(0|f)){if(c=0|n[(u=o)>>2],u=0|n[u+4>>2],n[(A=r+(a<<3)|0)>>2]=c,n[A+4>>2]=u,0|HA(c,u)){A=9;break A}A=a+1|0}else A=a;if((0|(s=s+1|0))>=(0|t))break;a=A}else for(l=o,u=0|n[a>>2],c=0,a=A,s=0|n[l>>2],l=0|n[l+4>>2];;){if(0|(A=0|L(s,l,u,h,o)))break A;if(s=0|n[(l=o)>>2],l=0|n[l+4>>2],n[(A=r+(a<<3)|0)>>2]=s,n[A+4>>2]=l,A=a+1|0,0|HA(s,l)){A=9;break A}if((0|(c=c+1|0))>=(0|t))break;a=A}d=d+1|0}while(d>>>0<6);A=(0|g)==(0|n[(A=o)>>2])&&(0|e)==(0|n[A+4>>2])?0:9}}while(0);return P=i,0|A}function _(A,e,t,r){t|=0,r|=0;var o,i,a,s=0,l=0;for(a=P,P=P+16|0,o=a,i=a+8|0,s=(s=!(0|HA(A|=0,e|=0)))?1:2;;){if(n[i>>2]=0,!(0|L(A,e,s,i,o))&((0|n[(l=o)>>2])==(0|t)?(0|n[l+4>>2])==(0|r):0)){A=4;break}if((s=s+1|0)>>>0>=7){s=7,A=4;break}}return 4==(0|A)?(P=a,0|s):0}function H(A,e,t,r,i,a,s){e|=0,t|=0,r|=0,i|=0,a|=0,s|=0;var l,c,u,d,f,g,h,m,b,p,x=0,v=0,w=0,y=0,k=0,C=0,D=0,M=0,E=0,Q=0,N=0,j=0,S=0,F=0,T=0,I=0,L=0,R=0,_=0;if(p=P,P=P+64|0,h=p+48|0,m=p+32|0,b=p+24|0,l=p+8|0,c=p,(0|(v=0|n[(A|=0)>>2]))<=0)return P=p,0;for(u=A+4|0,d=h+8|0,f=m+8|0,g=l+8|0,x=0,S=0;;){j=(w=0|n[u>>2])+(S<<4)|0,n[h>>2]=n[j>>2],n[h+4>>2]=n[j+4>>2],n[h+8>>2]=n[j+8>>2],n[h+12>>2]=n[j+12>>2],(0|S)==(v+-1|0)?(n[m>>2]=n[w>>2],n[m+4>>2]=n[w+4>>2],n[m+8>>2]=n[w+8>>2],n[m+12>>2]=n[w+12>>2]):(j=w+(S+1<<4)|0,n[m>>2]=n[j>>2],n[m+4>>2]=n[j+4>>2],n[m+8>>2]=n[j+8>>2],n[m+12>>2]=n[j+12>>2]),v=0|tA(h,m,r,b);A:do{if(v)w=0,x=v;else if(w=0|n[(v=b)>>2],(0|(v=0|n[v+4>>2]))>0|!(0|v)&w>>>0>0){N=0,j=0;e:for(;;){if(L=1/(+(w>>>0)+4294967296*+(0|v)),_=+o[h>>3],R=+((v=0|Ze(0|w,0|v,0|N,0|j))>>>0)+4294967296*+(0|B()),I=+(N>>>0)+4294967296*+(0|j),o[l>>3]=L*(_*R)+L*(+o[m>>3]*I),o[g>>3]=L*(+o[d>>3]*R)+L*(+o[f>>3]*I),0|(v=0|KA(l,r,c))){x=v;break}C=0|At(0|(E=0|n[(Q=c)>>2]),0|(Q=0|n[Q+4>>2]),0|e,0|t),y=0|B(),w=0|n[(k=v=s+(C<<3)|0)>>2],k=0|n[k+4>>2];t:do{if(!(0|w)&!(0|k))F=v,T=16;else for(D=0,M=0;;){if((0|D)>(0|t)|(0|D)==(0|t)&M>>>0>e>>>0){x=1;break e}if((0|w)==(0|E)&(0|k)==(0|Q))break t;if(C=0|$e(0|(v=0|We(0|C,0|y,1,0)),0|B(),0|e,0|t),y=0|B(),M=0|We(0|M,0|D,1,0),D=0|B(),!(0|(w=0|n[(k=v=s+(C<<3)|0)>>2]))&!(0|(k=0|n[k+4>>2]))){F=v,T=16;break}}}while(0);if(16!=(0|T)||(T=0,!(0|E)&!(0|Q))||(n[(M=F)>>2]=E,n[M+4>>2]=Q,M=a+(n[i>>2]<<3)|0,n[M>>2]=E,n[M+4>>2]=Q,M=0|We(0|n[(M=i)>>2],0|n[M+4>>2],1,0),E=0|B(),n[(Q=i)>>2]=M,n[Q+4>>2]=E),N=0|We(0|N,0|j,1,0),j=0|B(),w=0|n[(v=b)>>2],!((0|(v=0|n[v+4>>2]))>(0|j)|(0|v)==(0|j)&w>>>0>N>>>0)){w=1;break A}}w=0}else w=1}while(0);if(S=S+1|0,!w){T=21;break}if((0|S)>=(0|(v=0|n[A>>2]))){x=0,T=21;break}}return 21==(0|T)?(P=p,0|x):0}function z(A){return(A|=0)>>>0>121?0|(A=0):0|(A=0|n[7696+(28*A|0)+16>>2])}function G(A){return 4==(0|(A|=0))|117==(0|A)|0}function U(A){return 0|n[11120+(216*(0|n[(A|=0)>>2])|0)+(72*(0|n[A+4>>2])|0)+(24*(0|n[A+8>>2])|0)+(n[A+12>>2]<<3)>>2]}function O(A){return 0|n[11120+(216*(0|n[(A|=0)>>2])|0)+(72*(0|n[A+4>>2])|0)+(24*(0|n[A+8>>2])|0)+(n[A+12>>2]<<3)+4>>2]}function Y(A,e){return e|=0,(0|n[7696+(28*(A|=0)|0)+20>>2])==(0|e)?0|(e=1):0|(e=(0|n[7696+(28*A|0)+24>>2])==(0|e))}function V(A,e){return 0|n[848+(28*(A|=0)|0)+((e|=0)<<2)>>2]}function W(A,e){return e|=0,(0|n[848+(28*(A|=0)|0)>>2])==(0|e)?0|(e=0):(0|n[848+(28*A|0)+4>>2])==(0|e)?0|(e=1):(0|n[848+(28*A|0)+8>>2])==(0|e)?0|(e=2):(0|n[848+(28*A|0)+12>>2])==(0|e)?0|(e=3):(0|n[848+(28*A|0)+16>>2])==(0|e)?0|(e=4):(0|n[848+(28*A|0)+20>>2])==(0|e)?0|(e=5):0|((0|n[848+(28*A|0)+24>>2])==(0|e)?6:7)}function Z(A){var e,t,r;return e=(r=+o[16+(A|=0)>>3])-(t=+o[A+24>>3]),+(r>3]<+o[A+24>>3]|0}function J(A){return+(+o[(A|=0)>>3]-+o[A+8>>3])}function X(A,e){A|=0;var t,r,n=0;return(n=+o[(e|=0)>>3])>=+o[A+8>>3]&&n<=+o[A>>3]?(t=+o[A+16>>3],n=+o[A+24>>3],e=(r=+o[e+8>>3])>=n,A=r<=t&1,t>3]<+o[e+8>>3]||+o[A+8>>3]>+o[e>>3]?0|(s=0):(n=(l=+o[A+16>>3])<(u=+o[(t=A+24|0)>>3]),c=(a=+o[(s=e+16|0)>>3])<(i=+o[(r=e+24|0)>>3]),e=u-a>3],e)||(u=+ie(+o[t>>3],A))>+ie(+o[s>>3],e)?0|(c=0):0|(c=1))}function $(A,e){e|=0;var t,r,n,i,a,s=0,l=0,c=0,u=0;return+o[(A|=0)>>3]<+o[e>>3]||+o[A+8>>3]>+o[e+8>>3]?0|(s=0):(n=(i=+o[(s=A+16|0)>>3])<(l=+o[A+24>>3]),c=(u=+o[(t=e+16|0)>>3])<(a=+o[(r=e+24|0)>>3]),e=l-u>3],e)?0|(c=(u=+ie(+o[s>>3],A))>=+ie(+o[t>>3],e)):0|(c=0))}function AA(A,e){A|=0,e|=0;var t,r,i,a,s,l=0;i=P,P=P+176|0,n[(r=i)>>2]=4,l=+o[e>>3],o[r+8>>3]=l,a=+o[e+16>>3],o[r+16>>3]=a,o[r+24>>3]=l,l=+o[e+24>>3],o[r+32>>3]=l,s=+o[e+8>>3],o[r+40>>3]=s,o[r+48>>3]=l,o[r+56>>3]=s,o[r+64>>3]=a,t=96+(e=r+72|0)|0;do{n[e>>2]=0,e=e+4|0}while((0|e)<(0|t));st(0|A,0|r,168),P=i}function eA(A,e,t){A|=0,e|=0,t|=0;var r,a,c,u,d,f,g,h=0,m=0,b=0,p=0,v=0,y=0,k=0;f=P,P=P+288|0,d=f+264|0,p=f+96|0,m=(h=b=f)+96|0;do{n[h>>2]=0,h=h+4|0}while((0|h)<(0|m));return 0|(e=0|Ae(e,b))?(P=f,0|(y=e)):(qA(b=0|n[(m=b)>>2],m=0|n[m+4>>2],d),$A(b,m,p),u=+ae(d,p+8|0),o[d>>3]=+o[A>>3],o[(m=d+8|0)>>3]=+o[A+16>>3],o[p>>3]=+o[A+8>>3],o[(b=p+8|0)>>3]=+o[A+24>>3],a=+ae(d,p),k=+o[m>>3]-+o[b>>3],c=+l(+k),g=+o[d>>3]-+o[p>>3],r=+l(+g),!(0==k|0==g)&&(k=+ot(+c,+r),k=+x(+a*a/+it(+k/+it(+c,+r),3)/(u*(2.59807621135*u)*.8)),o[i>>3]=k,v=~~k>>>0,y=+l(k)>=1?k>0?~~+w(+s(k/4294967296),4294967295)>>>0:~~+x((k-+(~~k>>>0))/4294967296)>>>0:0,2146435072&~n[i+4>>2])?(p=!(0|v)&!(0|y),n[(e=t)>>2]=p?1:v,n[e+4>>2]=p?0:y,e=0):e=1,P=f,0|(y=e))}function tA(A,e,t,r){A|=0,e|=0,t|=0,r|=0;var a,c,u,d,f=0,g=0,h=0;d=P,P=P+288|0,c=d+264|0,u=d+96|0,a=(f=g=d)+96|0;do{n[f>>2]=0,f=f+4|0}while((0|f)<(0|a));return 0|(t=0|Ae(t,g))?(P=d,0|(r=t)):(qA(f=0|n[(t=g)>>2],t=0|n[t+4>>2],c),$A(f,t,u),h=+ae(c,u+8|0),h=+x(+ +ae(A,e)/(2*h)),o[i>>3]=h,t=~~h>>>0,f=+l(h)>=1?h>0?~~+w(+s(h/4294967296),4294967295)>>>0:~~+x((h-+(~~h>>>0))/4294967296)>>>0:0,2146435072&~n[i+4>>2]?(g=!(0|t)&!(0|f),n[r>>2]=g?1:t,n[r+4>>2]=g?0:f,P=d,0|(r=0)):(P=d,0|(r=1)))}function rA(A,e,t,r){e|=0,t|=0,r|=0,n[(A|=0)>>2]=e,n[A+4>>2]=t,n[A+8>>2]=r}function nA(A){var e,t=0,r=0,o=0,i=0,a=0;t=0|n[(A|=0)>>2],r=0|n[(e=A+4|0)>>2],(0|t)<0&&(r=r-t|0,n[e>>2]=r,n[(a=A+8|0)>>2]=(0|n[a>>2])-t,n[A>>2]=0,t=0),(0|r)<0?(t=t-r|0,n[A>>2]=t,i=(0|n[(a=A+8|0)>>2])-r|0,n[a>>2]=i,n[e>>2]=0,r=0):(a=i=A+8|0,i=0|n[i>>2]),(0|i)<0&&(t=t-i|0,n[A>>2]=t,r=r-i|0,n[e>>2]=r,n[a>>2]=0,i=0),(0|(o=(0|i)<(0|(o=(0|r)<(0|t)?r:t))?i:o))<=0||(n[A>>2]=t-o,n[e>>2]=r-o,n[a>>2]=i-o)}function oA(A,e){var t,r;e|=0,r=0|n[8+(A|=0)>>2],t=+((0|n[A+4>>2])-r|0),o[e>>3]=+((0|n[A>>2])-r|0)-.5*t,o[e+8>>3]=.8660254037844386*t}function iA(A,e,t){A|=0,e|=0,n[(t|=0)>>2]=(0|n[e>>2])+(0|n[A>>2]),n[t+4>>2]=(0|n[e+4>>2])+(0|n[A+4>>2]),n[t+8>>2]=(0|n[e+8>>2])+(0|n[A+8>>2])}function aA(A,e,t){A|=0,e|=0,n[(t|=0)>>2]=(0|n[A>>2])-(0|n[e>>2]),n[t+4>>2]=(0|n[A+4>>2])-(0|n[e+4>>2]),n[t+8>>2]=(0|n[A+8>>2])-(0|n[e+8>>2])}function sA(A,e){e|=0;var t,r=0;r=0|v(0|n[(A|=0)>>2],e),n[A>>2]=r,t=0|v(0|n[(r=A+4|0)>>2],e),n[r>>2]=t,e=0|v(0|n[(A=A+8|0)>>2],e),n[A>>2]=e}function lA(A){var e,t,r=0,o=0,i=0,a=0,s=0;s=(0|(t=0|n[(A|=0)>>2]))<0,A=(A=(o=(0|(a=((e=(0|(i=(0|n[A+4>>2])-(s?t:0)|0))<0)?0-i|0:0)+((0|n[A+8>>2])-(s?t:0))|0))<0)?0:a)-((i=(0|(o=(0|A)<(0|(o=(0|(r=(e?0:i)-(o?a:0)|0))<(0|(a=(s?0:t)-(e?i:0)-(o?a:0)|0))?r:a))?A:o))>0)?o:0)|0,r=r-(i?o:0)|0;A:do{switch(a-(i?o:0)|0){case 0:switch(0|r){case 0:return 0|(0|A?1==(0|A)?1:7:0);case 1:return 0|(0|A?1==(0|A)?3:7:2);default:break A}case 1:switch(0|r){case 0:return 0|(0|A?1==(0|A)?5:7:4);case 1:if(A)break A;return 6;default:break A}}}while(0);return 7}function cA(A){var e,t,r=0,o=0,i=0,a=0,s=0,l=0,c=0;if(l=0|n[(t=8+(A|=0)|0)>>2],(e=(0|n[A>>2])-l|0)>>>0>715827881|(l=(0|n[(c=A+4|0)>>2])-l|0)>>>0>715827881){if(a=2147483647-e|0,s=-2147483648-e|0,(i=(0|e)>0)?(0|a)<(0|e):(0|s)>(0|e))return 1;if(o=e<<1,i?(2147483647-o|0)<(0|e):(-2147483648-o|0)>(0|e))return 1;if((0|l)>0?(2147483647-l|0)<(0|l):(-2147483648-l|0)>(0|l))return 1;if(r=3*e|0,o=l<<1,(i?(0|a)<(0|o):(0|s)>(0|o))||((0|e)>-1?(-2147483648|r)>=(0|l):(-2147483648^r)<(0|l)))return 1}else o=l<<1,r=3*e|0;return i=0|Ue(.14285714285714285*+(r-l|0)),n[A>>2]=i,a=0|Ue(.14285714285714285*+(o+e|0)),n[c>>2]=a,n[t>>2]=0,r=(o=(0|a)<(0|i))?i:a,(0|(o=o?a:i))<0&&((-2147483648==(0|o)||((0|r)>0?(2147483647-r|0)<(0|o):(-2147483648-r|0)>(0|o)))&&D(27795,26892,354,26903),((0|r)>-1?(-2147483648|r)>=(0|o):(-2147483648^r)<(0|o))&&D(27795,26892,354,26903)),r=a-i|0,(0|i)<0?(o=0-i|0,n[c>>2]=r,n[t>>2]=o,n[A>>2]=0,i=0):(r=a,o=0),(0|r)<0&&(i=i-r|0,n[A>>2]=i,o=o-r|0,n[t>>2]=o,n[c>>2]=0,r=0),s=i-o|0,a=r-o|0,(0|o)<0?(n[A>>2]=s,n[c>>2]=a,n[t>>2]=0,r=a,a=s,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|r)<(0|a)?r:a))?o:i))<=0||(n[A>>2]=a-i,n[c>>2]=r-i,n[t>>2]=o-i),0}function uA(A){var e,t=0,r=0,o=0,i=0,a=0,s=0,l=0;if(i=0|n[(e=8+(A|=0)|0)>>2],(a=(0|n[A>>2])-i|0)>>>0>715827881|(i=(0|n[(s=A+4|0)>>2])-i|0)>>>0>715827881){if((r=(0|a)>0)?(2147483647-a|0)<(0|a):(-2147483648-a|0)>(0|a))return 1;if(t=a<<1,(o=(0|i)>0)?(2147483647-i|0)<(0|i):(-2147483648-i|0)>(0|i))return 1;if(l=i<<1,o?(2147483647-l|0)<(0|i):(-2147483648-l|0)>(0|i))return 1;if(r?(2147483647-t|0)<(0|i):(-2147483648-t|0)>(0|i))return 1;if(r=3*i|0,(0|i)>-1?(-2147483648|r)>=(0|a):(-2147483648^r)<(0|a))return 1}else r=3*i|0,t=a<<1;return o=0|Ue(.14285714285714285*+(t+i|0)),n[A>>2]=o,i=0|Ue(.14285714285714285*+(r-a|0)),n[s>>2]=i,n[e>>2]=0,t=(r=(0|i)<(0|o))?o:i,(0|(r=r?i:o))<0&&((-2147483648==(0|r)||((0|t)>0?(2147483647-t|0)<(0|r):(-2147483648-t|0)>(0|r)))&&D(27795,26892,402,26917),((0|t)>-1?(-2147483648|t)>=(0|r):(-2147483648^t)<(0|r))&&D(27795,26892,402,26917)),t=i-o|0,(0|o)<0?(r=0-o|0,n[s>>2]=t,n[e>>2]=r,n[A>>2]=0,o=0):(t=i,r=0),(0|t)<0&&(o=o-t|0,n[A>>2]=o,r=r-t|0,n[e>>2]=r,n[s>>2]=0,t=0),a=o-r|0,i=t-r|0,(0|r)<0?(n[A>>2]=a,n[s>>2]=i,n[e>>2]=0,t=i,i=a,r=0):i=o,(0|(o=(0|r)<(0|(o=(0|t)<(0|i)?t:i))?r:o))<=0||(n[A>>2]=i-o,n[s>>2]=t-o,n[e>>2]=r-o),0}function dA(A){var e,t,r=0,o=0,i=0,a=0,s=0;o=0|n[(e=8+(A|=0)|0)>>2],i=0|Ue(.14285714285714285*+((3*(r=(0|n[A>>2])-o|0)|0)-(o=(0|n[(t=A+4|0)>>2])-o|0)|0)),n[A>>2]=i,r=0|Ue(.14285714285714285*+((o<<1)+r|0)),n[t>>2]=r,n[e>>2]=0,o=r-i|0,(0|i)<0?(s=0-i|0,n[t>>2]=o,n[e>>2]=s,n[A>>2]=0,r=o,i=0,o=s):o=0,(0|r)<0&&(i=i-r|0,n[A>>2]=i,o=o-r|0,n[e>>2]=o,n[t>>2]=0,r=0),s=i-o|0,a=r-o|0,(0|o)<0?(n[A>>2]=s,n[t>>2]=a,n[e>>2]=0,r=a,a=s,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|r)<(0|a)?r:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=r-i,n[e>>2]=o-i)}function fA(A){var e,t,r=0,o=0,i=0,a=0,s=0;o=0|n[(e=8+(A|=0)|0)>>2],i=0|Ue(.14285714285714285*+(((r=(0|n[A>>2])-o|0)<<1)+(o=(0|n[(t=A+4|0)>>2])-o|0)|0)),n[A>>2]=i,r=0|Ue(.14285714285714285*+((3*o|0)-r|0)),n[t>>2]=r,n[e>>2]=0,o=r-i|0,(0|i)<0?(s=0-i|0,n[t>>2]=o,n[e>>2]=s,n[A>>2]=0,r=o,i=0,o=s):o=0,(0|r)<0&&(i=i-r|0,n[A>>2]=i,o=o-r|0,n[e>>2]=o,n[t>>2]=0,r=0),s=i-o|0,a=r-o|0,(0|o)<0?(n[A>>2]=s,n[t>>2]=a,n[e>>2]=0,r=a,a=s,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|r)<(0|a)?r:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=r-i,n[e>>2]=o-i)}function gA(A){var e,t,r,o=0,i=0,a=0,s=0;o=0|n[(A|=0)>>2],i=0|n[(t=A+4|0)>>2],a=0|n[(r=A+8|0)>>2],s=i+(3*o|0)|0,n[A>>2]=s,i=a+(3*i|0)|0,n[t>>2]=i,o=(3*a|0)+o|0,n[r>>2]=o,a=i-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=a,n[r>>2]=o,n[A>>2]=0,i=a,a=0):a=s,(0|i)<0&&(a=a-i|0,n[A>>2]=a,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=a-o|0,s=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=s,n[r>>2]=0,a=e,o=0):s=i,(0|(i=(0|o)<(0|(i=(0|s)<(0|a)?s:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=s-i,n[r>>2]=o-i)}function hA(A){var e,t,r,o=0,i=0,a=0,s=0;s=0|n[(A|=0)>>2],a=(3*(o=0|n[(t=A+4|0)>>2])|0)+s|0,s=(i=0|n[(r=A+8|0)>>2])+(3*s|0)|0,n[A>>2]=s,n[t>>2]=a,o=(3*i|0)+o|0,n[r>>2]=o,i=a-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=i,n[r>>2]=o,n[A>>2]=0,s=0):i=a,(0|i)<0&&(s=s-i|0,n[A>>2]=s,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=s-o|0,a=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=a,n[r>>2]=0,s=e,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|a)<(0|s)?a:s))?o:i))<=0||(n[A>>2]=s-i,n[t>>2]=a-i,n[r>>2]=o-i)}function mA(A,e){A|=0;var t,r,o,i=0,a=0,s=0;((e|=0)-1|0)>>>0>=6||(s=(0|n[15440+(12*e|0)>>2])+(0|n[A>>2])|0,n[A>>2]=s,o=A+4|0,a=(0|n[15440+(12*e|0)+4>>2])+(0|n[o>>2])|0,n[o>>2]=a,r=A+8|0,e=(0|n[15440+(12*e|0)+8>>2])+(0|n[r>>2])|0,n[r>>2]=e,i=a-s|0,(0|s)<0?(e=e-s|0,n[o>>2]=i,n[r>>2]=e,n[A>>2]=0,a=0):(i=a,a=s),(0|i)<0&&(a=a-i|0,n[A>>2]=a,e=e-i|0,n[r>>2]=e,n[o>>2]=0,i=0),t=a-e|0,s=i-e|0,(0|e)<0?(n[A>>2]=t,n[o>>2]=s,n[r>>2]=0,a=t,e=0):s=i,(0|(i=(0|e)<(0|(i=(0|s)<(0|a)?s:a))?e:i))<=0||(n[A>>2]=a-i,n[o>>2]=s-i,n[r>>2]=e-i))}function bA(A){var e,t,r,o=0,i=0,a=0,s=0;s=0|n[(A|=0)>>2],a=(o=0|n[(t=A+4|0)>>2])+s|0,s=(i=0|n[(r=A+8|0)>>2])+s|0,n[A>>2]=s,n[t>>2]=a,o=i+o|0,n[r>>2]=o,i=a-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=i,n[r>>2]=o,n[A>>2]=0,a=0):(i=a,a=s),(0|i)<0&&(a=a-i|0,n[A>>2]=a,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=a-o|0,s=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=s,n[r>>2]=0,a=e,o=0):s=i,(0|(i=(0|o)<(0|(i=(0|s)<(0|a)?s:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=s-i,n[r>>2]=o-i)}function pA(A){var e,t,r,o=0,i=0,a=0,s=0;o=0|n[(A|=0)>>2],a=0|n[(t=A+4|0)>>2],i=0|n[(r=A+8|0)>>2],s=a+o|0,n[A>>2]=s,a=i+a|0,n[t>>2]=a,o=i+o|0,n[r>>2]=o,i=a-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=i,n[r>>2]=o,n[A>>2]=0,a=0):(i=a,a=s),(0|i)<0&&(a=a-i|0,n[A>>2]=a,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=a-o|0,s=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=s,n[r>>2]=0,a=e,o=0):s=i,(0|(i=(0|o)<(0|(i=(0|s)<(0|a)?s:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=s-i,n[r>>2]=o-i)}function xA(A){switch(0|(A|=0)){case 1:A=5;break;case 5:A=4;break;case 4:A=6;break;case 6:A=2;break;case 2:A=3;break;case 3:A=1}return 0|A}function vA(A){switch(0|(A|=0)){case 1:A=3;break;case 3:A=2;break;case 2:A=6;break;case 6:A=4;break;case 4:A=5;break;case 5:A=1}return 0|A}function wA(A){var e,t,r,o=0,i=0,a=0,s=0;o=0|n[(A|=0)>>2],i=0|n[(t=A+4|0)>>2],a=0|n[(r=A+8|0)>>2],s=i+(o<<1)|0,n[A>>2]=s,i=a+(i<<1)|0,n[t>>2]=i,o=(a<<1)+o|0,n[r>>2]=o,a=i-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=a,n[r>>2]=o,n[A>>2]=0,i=a,a=0):a=s,(0|i)<0&&(a=a-i|0,n[A>>2]=a,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=a-o|0,s=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=s,n[r>>2]=0,a=e,o=0):s=i,(0|(i=(0|o)<(0|(i=(0|s)<(0|a)?s:a))?o:i))<=0||(n[A>>2]=a-i,n[t>>2]=s-i,n[r>>2]=o-i)}function yA(A){var e,t,r,o=0,i=0,a=0,s=0;s=0|n[(A|=0)>>2],a=((o=0|n[(t=A+4|0)>>2])<<1)+s|0,s=(i=0|n[(r=A+8|0)>>2])+(s<<1)|0,n[A>>2]=s,n[t>>2]=a,o=(i<<1)+o|0,n[r>>2]=o,i=a-s|0,(0|s)<0?(o=o-s|0,n[t>>2]=i,n[r>>2]=o,n[A>>2]=0,s=0):i=a,(0|i)<0&&(s=s-i|0,n[A>>2]=s,o=o-i|0,n[r>>2]=o,n[t>>2]=0,i=0),e=s-o|0,a=i-o|0,(0|o)<0?(n[A>>2]=e,n[t>>2]=a,n[r>>2]=0,s=e,o=0):a=i,(0|(i=(0|o)<(0|(i=(0|a)<(0|s)?a:s))?o:i))<=0||(n[A>>2]=s-i,n[t>>2]=a-i,n[r>>2]=o-i)}function kA(A,e){e|=0;var t,r,o,i=0,a=0,s=0;return o=(0|(r=(0|n[(A|=0)>>2])-(0|n[e>>2])|0))<0,t=(0|(a=(0|n[A+4>>2])-(0|n[e+4>>2])-(o?r:0)|0))<0,e=(e=(A=(0|(s=(o?0-r|0:0)+(0|n[A+8>>2])-(0|n[e+8>>2])+(t?0-a|0:0)|0))<0)?0:s)-((a=(0|(A=(0|e)<(0|(A=(0|(i=(t?0:a)-(A?s:0)|0))<(0|(s=(o?0:r)-(t?a:0)-(A?s:0)|0))?i:s))?e:A))>0)?A:0)|0,i=i-(a?A:0)|0,0|((0|(A=(0|(A=s-(a?A:0)|0))>-1?A:0-A|0))>(0|(e=(0|(i=(0|i)>-1?i:0-i|0))>(0|(e=(0|e)>-1?e:0-e|0))?i:e))?A:e)}function CA(A){var e,t,r,o;t=(o=0|n[(e=8+(A|=0)|0)>>2])-(0|n[A>>2])|0,n[A>>2]=t,A=(0|n[(r=A+4|0)>>2])-o|0,n[r>>2]=A,n[e>>2]=0-(A+t)}function BA(A){var e,t,r=0,o=0,i=0,a=0,s=0;r=0-(o=0|n[(A|=0)>>2])|0,n[A>>2]=r,n[(e=A+8|0)>>2]=0,a=(i=0|n[(t=A+4|0)>>2])+o|0,(0|o)>0?(n[t>>2]=a,n[e>>2]=o,n[A>>2]=0,r=0,i=a):o=0,(0|i)<0?(s=r-i|0,n[A>>2]=s,o=o-i|0,n[e>>2]=o,n[t>>2]=0,a=s-o|0,r=0-o|0,(0|o)<0?(n[A>>2]=a,n[t>>2]=r,n[e>>2]=0,i=r,o=0):(i=0,a=s)):a=r,(0|(r=(0|o)<(0|(r=(0|i)<(0|a)?i:a))?o:r))<=0||(n[A>>2]=a-r,n[t>>2]=i-r,n[e>>2]=o-r)}function DA(A,e){var t=0;switch(t=0|tt(0|(A|=0),0|(e|=0),56),B(),7&t){case 0:case 7:return 0}return t=-2130706433&e|134217728,!0&268435456==(2013265920&e)?!0&16777216==(117440512&e)&!!(0|HA(A,t))?0|(t=0):0|(t=0|IA(A,t)):0|(t=0)}function MA(A,e,t){t|=0;var r,o,i=0,a=0;return o=P,P=P+16|0,r=o,a=-2130706433&(e|=0)|134217728,!0&268435456==(2013265920&e)?(i=0|tt(0|(A|=0),0|e,56),B(),i=0|function(A,e,t){t|=0;var r,o=0,i=0;if(r=P,P=P+16|0,i=r,o=0|HA(A|=0,e|=0),(t+-1|0)>>>0>5)return P=r,-1;if(1==(0|t)&(o=!!(0|o)))return P=r,-1;do{if(!(0|Se(A,e,i))){if(o){o=(5+(0|n[26352+(t<<2)>>2])-(0|n[i>>2])|0)%5|0;break}o=(6+(0|n[26384+(t<<2)>>2])-(0|n[i>>2])|0)%6|0;break}o=-1}while(0);return P=r,0|(i=o)}(A,a,7&i),-1==(0|i)?(n[t>>2]=0,P=o,0|(a=6)):(0|XA(A,a,r)&&D(27795,26932,282,26947),e=0|tt(0|A,0|e,52),B(),e&=15,0|HA(A,a)?QA(r,e,i,2,t):SA(r,e,i,2,t),P=o,0|(a=0))):(P=o,0|(a=6))}function EA(A,e,t,r,i){e|=0,t|=0,r|=0,i|=0;var a,s=0,u=0;if(s=+function(A){var e,t;return t=+o[(A|=0)>>3],e=+o[A+8>>3],+ +c(+(t*t+e*e))}(A|=0),s<1e-16)return e=15600+(e<<4)|0,n[i>>2]=n[e>>2],n[i+4>>2]=n[e+4>>2],n[i+8>>2]=n[e+8>>2],void(n[i+12>>2]=n[e+12>>2]);if(u=+p(+ +o[A+8>>3],+ +o[A>>3]),(0|t)>0){A=0;do{s*=.37796447300922725,A=A+1|0}while((0|A)!=(0|t))}a=.3333333333333333*s,r?(t=!(0|ZA(t)),s=+b(.381966011250105*(t?a:.37796447300922725*a))):(s=+b(.381966011250105*s),0|ZA(t)&&(u=+ne(u+.3334731722518321))),function(A,e,t,r){A|=0,e=+e,r|=0;var i=0,a=0,s=0,c=0;if((t=+t)<1e-16)return n[r>>2]=n[A>>2],n[r+4>>2]=n[A+4>>2],n[r+8>>2]=n[A+8>>2],void(n[r+12>>2]=n[A+12>>2]);a=e<0?e+6.283185307179586:e,a=e>=6.283185307179586?a+-6.283185307179586:a;do{if(!(a<1e-16)){if(i=+l(+(a+-3.141592653589793))<1e-16,e=+o[A>>3],i){e-=t,o[r>>3]=e,i=r;break}if(s=+d(+t),t=+f(+t),e=s*+f(+e)+ +d(+a)*(t*+d(+e)),e=+m(+((e=e>1?1:e)<-1?-1:e)),o[r>>3]=e,+l(+(e+-1.5707963267948966))<1e-16)return o[r>>3]=1.5707963267948966,void(o[r+8>>3]=0);if(+l(+(e+1.5707963267948966))<1e-16)return o[r>>3]=-1.5707963267948966,void(o[r+8>>3]=0);if(c=1/+d(+e),a=t*+f(+a)*c,t=+o[A>>3],e=c*((s-+f(+e)*+f(+t))/+d(+t)),s=a>1?1:a,e=e>1?1:e,(e=+o[A+8>>3]+ +p(+(s<-1?-1:s),+(e<-1?-1:e)))>3.141592653589793)do{e+=-6.283185307179586}while(e>3.141592653589793);if(e<-3.141592653589793)do{e+=6.283185307179586}while(e<-3.141592653589793);return void(o[r+8>>3]=e)}e=+o[A>>3]+t,o[r>>3]=e,i=r}while(0);if(+l(+(e+-1.5707963267948966))<1e-16)return o[i>>3]=1.5707963267948966,void(o[r+8>>3]=0);if(+l(+(e+1.5707963267948966))<1e-16)return o[i>>3]=-1.5707963267948966,void(o[r+8>>3]=0);if((e=+o[A+8>>3])>3.141592653589793)do{e+=-6.283185307179586}while(e>3.141592653589793);if(e<-3.141592653589793)do{e+=6.283185307179586}while(e<-3.141592653589793);o[r+8>>3]=e}(15600+(e<<4)|0,+ne(+o[15920+(24*e|0)>>3]-u),s,i)}function QA(A,e,t,r,i){A|=0,e|=0,t|=0,r|=0,i|=0;var a,s,l,c,u,d,f,g,h,m,b,p,x,v,w,y,k,C,B,M,E,Q,N=0,j=0,S=0,F=0,T=0,I=0;if(Q=P,P=P+272|0,F=Q+240|0,B=Q,M=Q+224|0,E=Q+208|0,b=Q+176|0,p=Q+160|0,x=Q+192|0,v=Q+144|0,w=Q+128|0,y=Q+112|0,k=Q+96|0,C=Q+80|0,n[(N=Q+256|0)>>2]=e,n[F>>2]=n[A>>2],n[F+4>>2]=n[A+4>>2],n[F+8>>2]=n[A+8>>2],n[F+12>>2]=n[A+12>>2],NA(F,N,B),n[i>>2]=0,(0|(F=r+t+(5==(0|r)&1)|0))<=(0|t))P=Q;else{s=M+4|0,l=b+4|0,c=t+5|0,u=16880+((a=0|n[N>>2])<<2)|0,d=16960+(a<<2)|0,f=w+8|0,g=y+8|0,h=k+8|0,m=E+4|0,S=t;A:for(;;){j=B+((0|S)%5<<4)|0,n[E>>2]=n[j>>2],n[E+4>>2]=n[j+4>>2],n[E+8>>2]=n[j+8>>2],n[E+12>>2]=n[j+12>>2];do{}while(2==(0|jA(E,a,0,1)));if((0|S)>(0|t)&!!(0|ZA(e))){if(n[b>>2]=n[E>>2],n[b+4>>2]=n[E+4>>2],n[b+8>>2]=n[E+8>>2],n[b+12>>2]=n[E+12>>2],oA(s,p),r=0|n[b>>2],N=0|n[17040+(80*r|0)+(n[M>>2]<<2)>>2],n[b>>2]=n[18640+(80*r|0)+(20*N|0)>>2],(0|(j=0|n[18640+(80*r|0)+(20*N|0)+16>>2]))>0){A=0;do{bA(l),A=A+1|0}while((0|A)<(0|j))}switch(j=18640+(80*r|0)+(20*N|0)+4|0,n[x>>2]=n[j>>2],n[x+4>>2]=n[j+4>>2],n[x+8>>2]=n[j+8>>2],sA(x,3*(0|n[u>>2])|0),iA(l,x,l),nA(l),oA(l,v),T=+(0|n[d>>2]),o[w>>3]=3*T,o[f>>3]=0,I=-1.5*T,o[y>>3]=I,o[g>>3]=2.598076211353316*T,o[k>>3]=I,o[h>>3]=-2.598076211353316*T,0|n[17040+(80*(0|n[b>>2])|0)+(n[E>>2]<<2)>>2]){case 1:A=y,r=w;break;case 3:A=k,r=y;break;case 2:A=w,r=k;break;default:A=12;break A}Ne(p,v,r,A,C),EA(C,0|n[b>>2],a,1,i+8+(n[i>>2]<<4)|0),n[i>>2]=1+(0|n[i>>2])}if((0|S)<(0|c)&&(oA(m,b),EA(b,0|n[E>>2],a,1,i+8+(n[i>>2]<<4)|0),n[i>>2]=1+(0|n[i>>2])),n[M>>2]=n[E>>2],n[M+4>>2]=n[E+4>>2],n[M+8>>2]=n[E+8>>2],n[M+12>>2]=n[E+12>>2],(0|(S=S+1|0))>=(0|F)){A=3;break}}3!=(0|A)?12==(0|A)&&D(26970,27017,572,27027):P=Q}}function NA(A,e,t){A|=0,e|=0,t|=0;var r,o=0,i=0,a=0,s=0,l=0;r=P,P=P+128|0,i=r,s=20240,l=60+(a=o=r+64|0)|0;do{n[a>>2]=n[s>>2],a=a+4|0,s=s+4|0}while((0|a)<(0|l));s=20304,l=(a=i)+60|0;do{n[a>>2]=n[s>>2],a=a+4|0,s=s+4|0}while((0|a)<(0|l));o=(l=!(0|ZA(0|n[e>>2])))?o:i,wA(i=A+4|0),yA(i),0|ZA(0|n[e>>2])&&(hA(i),n[e>>2]=1+(0|n[e>>2])),n[t>>2]=n[A>>2],iA(i,o,e=t+4|0),nA(e),n[t+16>>2]=n[A>>2],iA(i,o+12|0,e=t+20|0),nA(e),n[t+32>>2]=n[A>>2],iA(i,o+24|0,e=t+36|0),nA(e),n[t+48>>2]=n[A>>2],iA(i,o+36|0,e=t+52|0),nA(e),n[t+64>>2]=n[A>>2],iA(i,o+48|0,t=t+68|0),nA(t),P=r}function jA(A,e,t,r){t|=0,r|=0;var o,i,a,s,l,c,u=0,d=0,f=0,g=0,h=0;if(c=P,P=P+32|0,l=c+12|0,i=c,h=4+(A|=0)|0,g=0|n[16960+((e|=0)<<2)>>2],g=(s=!!(0|r))?3*g|0:g,u=0|n[h>>2],o=0|n[(a=A+8|0)>>2],s){if((0|(u=o+u+(r=0|n[(d=A+12|0)>>2])|0))==(0|g))return P=c,1;f=d}else u=o+u+(r=0|n[(f=A+12|0)>>2])|0;if((0|u)<=(0|g))return P=c,0;do{if((0|r)>0){if(r=0|n[A>>2],(0|o)>0){d=18640+(80*r|0)+60|0,r=A;break}r=18640+(80*r|0)+40|0,t?(rA(l,g,0,0),aA(h,l,i),pA(i),iA(i,l,h),d=r,r=A):(d=r,r=A)}else d=18640+(80*(0|n[A>>2])|0)+20|0,r=A}while(0);if(n[r>>2]=n[d>>2],(0|n[(u=d+16|0)>>2])>0){r=0;do{bA(h),r=r+1|0}while((0|r)<(0|n[u>>2]))}return A=d+4|0,n[l>>2]=n[A>>2],n[l+4>>2]=n[A+4>>2],n[l+8>>2]=n[A+8>>2],e=0|n[16880+(e<<2)>>2],sA(l,s?3*e|0:e),iA(h,l,h),nA(h),r=s&&((0|n[a>>2])+(0|n[h>>2])+(0|n[f>>2])|0)==(0|g)?1:2,P=c,0|r}function PA(A,e){A|=0,e|=0;var t=0;do{t=0|jA(A,e,0,1)}while(2==(0|t));return 0|t}function SA(A,e,t,r,i){A|=0,e|=0,t|=0,r|=0,i|=0;var a,s,l,c,u,d,f,g,h,m,b,p,x,v,w,y,k,C,B=0,M=0,E=0,Q=0,N=0;if(C=P,P=P+240|0,v=C+208|0,w=C,y=C+192|0,k=C+176|0,h=C+160|0,m=C+144|0,b=C+128|0,p=C+112|0,x=C+96|0,n[(B=C+224|0)>>2]=e,n[v>>2]=n[A>>2],n[v+4>>2]=n[A+4>>2],n[v+8>>2]=n[A+8>>2],n[v+12>>2]=n[A+12>>2],FA(v,B,w),n[i>>2]=0,(0|(g=r+t+(6==(0|r)&1)|0))<=(0|t))P=C;else{s=t+6|0,l=16960+((a=0|n[B>>2])<<2)|0,c=m+8|0,u=b+8|0,d=p+8|0,f=y+4|0,M=0,E=t,r=-1;A:for(;;){if(A=w+((B=(0|E)%6|0)<<4)|0,n[y>>2]=n[A>>2],n[y+4>>2]=n[A+4>>2],n[y+8>>2]=n[A+8>>2],n[y+12>>2]=n[A+12>>2],A=M,M=0|jA(y,a,0,1),(0|E)>(0|t)&!!(0|ZA(e))&&1!=(0|A)&&(0|n[y>>2])!=(0|r)){switch(oA(w+((B+5|0)%6<<4)+4|0,k),oA(w+(B<<4)+4|0,h),Q=+(0|n[l>>2]),o[m>>3]=3*Q,o[c>>3]=0,N=-1.5*Q,o[b>>3]=N,o[u>>3]=2.598076211353316*Q,o[p>>3]=N,o[d>>3]=-2.598076211353316*Q,B=0|n[v>>2],0|n[17040+(80*B|0)+(((0|r)==(0|B)?n[y>>2]:r)<<2)>>2]){case 1:A=b,r=m;break;case 3:A=p,r=b;break;case 2:A=m,r=p;break;default:A=8;break A}Ne(k,h,r,A,x),0|je(k,x)||0|je(h,x)||(EA(x,0|n[v>>2],a,1,i+8+(n[i>>2]<<4)|0),n[i>>2]=1+(0|n[i>>2]))}if((0|E)<(0|s)&&(oA(f,k),EA(k,0|n[y>>2],a,1,i+8+(n[i>>2]<<4)|0),n[i>>2]=1+(0|n[i>>2])),(0|(E=E+1|0))>=(0|g)){A=3;break}r=0|n[y>>2]}3!=(0|A)?8==(0|A)&&D(27054,27017,737,27099):P=C}}function FA(A,e,t){A|=0,e|=0,t|=0;var r,o=0,i=0,a=0,s=0,l=0;r=P,P=P+160|0,i=r,s=20368,l=72+(a=o=r+80|0)|0;do{n[a>>2]=n[s>>2],a=a+4|0,s=s+4|0}while((0|a)<(0|l));s=20448,l=(a=i)+72|0;do{n[a>>2]=n[s>>2],a=a+4|0,s=s+4|0}while((0|a)<(0|l));o=(l=!(0|ZA(0|n[e>>2])))?o:i,wA(i=A+4|0),yA(i),0|ZA(0|n[e>>2])&&(hA(i),n[e>>2]=1+(0|n[e>>2])),n[t>>2]=n[A>>2],iA(i,o,e=t+4|0),nA(e),n[t+16>>2]=n[A>>2],iA(i,o+12|0,e=t+20|0),nA(e),n[t+32>>2]=n[A>>2],iA(i,o+24|0,e=t+36|0),nA(e),n[t+48>>2]=n[A>>2],iA(i,o+36|0,e=t+52|0),nA(e),n[t+64>>2]=n[A>>2],iA(i,o+48|0,e=t+68|0),nA(e),n[t+80>>2]=n[A>>2],iA(i,o+60|0,t=t+84|0),nA(t),P=r}function TA(A,e){return e=0|tt(0|(A|=0),0|(e|=0),45),B(),127&e}function IA(A,e){A|=0;var t=0,n=0,o=0,i=0;return!0&134217728==(-16777216&(e|=0))?(n=0|tt(0|A,0|e,52),B(),n&=15,t=0|tt(0|A,0|e,45),B(),(t&=127)>>>0>121?0|(A=0):!(613566756&(i=0|rt(0|(o=0|tt(0|A,0|e,0|(i=3*(15^n)|0))),0|B(),0|i))&Ze(-1227133514,-1171,0|i,0|(o=0|B())))&!(4681&o&B())&&15==(0|n)|!(0|(i=0|tt(0|rt(0|~A,0|~e,0|(i=19+(3*n|0)|0)),0|B(),0|i)))&!(0|B())?0|r[20528+t|0]?!(0|A)&!(0|(e&=8191))?0|(i=1):(i=0|nt(0|A,0|e),B(),0|!!((63-i|0)%3|0)):0|(i=1):0|(i=0)):0|(A=0)}function LA(A,e,t,r){A|=0,t|=0,r|=0;var o=0,i=0,a=0,s=0;if(o=0|rt(0|(e|=0),0,52),i=0|B(),t=0|rt(0|t,0,45),t=0|i|B()|134225919,(0|e)<1)return i=-1,r=t,n[(e=A)>>2]=i,void(n[(A=A+4|0)>>2]=r);for(i=1,o=-1;s=0|rt(7,0,0|(a=3*(15-i|0)|0)),t&=~B(),o=o&~s|(a=0|rt(0|r,0,0|a)),t=0|t|B(),(0|i)!=(0|e);)i=i+1|0;n[(a=s=A)>>2]=o,n[(s=s+4|0)>>2]=t}function RA(A,e,t,r){t|=0,r|=0;var o=0,i=0;if(i=0|tt(0|(A|=0),0|(e|=0),52),B(),t>>>0>15)return 4;if((0|(i&=15))<(0|t))return 12;if((0|i)==(0|t))return n[r>>2]=A,n[r+4>>2]=e,0;if(o=0|rt(0|t,0,52),o|=A,A=B()|-15728641&e,(0|i)>(0|t))do{e=0|rt(7,0,3*(14-t|0)|0),t=t+1|0,o|=e,A=0|B()|A}while((0|t)<(0|i));return n[r>>2]=o,n[r+4>>2]=A,0}function _A(A,e,t,r){t|=0,r|=0;var o=0,i=0,a=0;if(i=0|tt(0|(A|=0),0|(e|=0),52),B(),!((0|t)<16&(0|(i&=15))<=(0|t)))return 4;o=t-i|0,t=0|tt(0|A,0|e,45),B();A:do{if(0|z(127&t)){e:do{if(0|i){for(t=1;!((a=0|rt(7,0,3*(15-t|0)|0))&A)&!((0|B())&e);){if(!(t>>>0>>0))break e;t=t+1|0}t=0|pe(7,0,o,((0|o)<0)<<31>>31),o=0|B();break A}}while(0);t=0|We(0|(t=0|qe(0|(t=0|pe(7,0,o,((0|o)<0)<<31>>31)),0|B(),5,0)),0|B(),-5,-1),t=0|We(0|(t=0|Xe(0|t,0|B(),6,0)),0|B(),1,0),o=0|B()}else t=0|pe(7,0,o,((0|o)<0)<<31>>31),o=0|B()}while(0);return n[(a=r)>>2]=t,n[a+4>>2]=o,0}function HA(A,e){var t=0,r=0,n=0;if(n=0|tt(0|(A|=0),0|(e|=0),45),B(),!(0|z(127&n)))return 0;n=0|tt(0|A,0|e,52),B(),n&=15;A:do{if(n)for(r=1;;){if(t=0|tt(0|A,0|e,3*(15-r|0)|0),B(),0|(t&=7))break A;if(!(r>>>0>>0)){t=0;break}r=r+1|0}else t=0}while(0);return 1&!(0|t)}function zA(A,e,t,r){return A|=0,e|=0,(0|(r|=0))<(0|(t|=0))?(r=A,C(0|(t=e)),0|r):(t=0|rt(-1,-1,3+(3*(r-t|0)|0)|0),r=0|rt(0|~t,0|~B(),3*(15-r|0)|0),t=~B()&e,r=~r&A,C(0|t),0|r)}function GA(A,e,t,r){t|=0,r|=0;var o=0;return o=0|tt(0|(A|=0),0|(e|=0),52),B(),(0|t)<16&(0|(o&=15))<=(0|t)?((0|o)<(0|t)&&(o=0|rt(-1,-1,3+(3*(t+-1-o|0)|0)|0),o=0|rt(0|~o,0|~B(),3*(15-t|0)|0),e=~B()&e,A&=~o),o=0|rt(0|t,0,52),t=-15728641&e|B(),n[r>>2]=A|o,n[r+4>>2]=t,0|(r=0)):0|(r=4)}function UA(A,e){var t=0,r=0,n=0;if(n=0|tt(0|(A|=0),0|(e|=0),52),B(),!(n&=15))return 0;for(r=1;;){if(t=0|tt(0|A,0|e,3*(15-r|0)|0),B(),0|(t&=7)){r=5;break}if(!(r>>>0>>0)){t=0,r=5;break}r=r+1|0}return 5==(0|r)?0|t:0}function OA(A,e){var t=0,r=0,n=0,o=0,i=0,a=0,s=0;if(s=0|tt(0|(A|=0),0|(e|=0),52),B(),!(s&=15))return s=A,C(0|(a=e)),0|s;for(a=1,t=0;;){r=0|rt(7,0,0|(o=3*(15-a|0)|0)),n=0|B(),i=0|tt(0|A,0|e,0|o),B(),A=(o=0|rt(0|xA(7&i),0,0|o))|A&~r,e=(i=0|B())|e&~n;A:do{if(!t)if(!(o&r|0)&!(i&n|0))t=0;else if(r=0|tt(0|A,0|e,52),B(),r&=15){t=1;e:for(;;){switch(i=0|tt(0|A,0|e,3*(15-t|0)|0),B(),7&i){case 1:break e;case 0:break;default:t=1;break A}if(!(t>>>0>>0)){t=1;break A}t=t+1|0}for(t=1;;){if(n=0|tt(0|A,0|e,0|(i=3*(15-t|0)|0)),B(),o=0|rt(7,0,0|i),e&=~B(),A=A&~o|(i=0|rt(0|xA(7&n),0,0|i)),e=0|e|B(),!(t>>>0>>0)){t=1;break}t=t+1|0}}else t=1}while(0);if(!(a>>>0>>0))break;a=a+1|0}return C(0|e),0|A}function YA(A,e){var t=0,r=0,n=0,o=0,i=0;if(r=0|tt(0|(A|=0),0|(e|=0),52),B(),!(r&=15))return r=A,C(0|(t=e)),0|r;for(t=1;i=0|tt(0|A,0|e,0|(o=3*(15-t|0)|0)),B(),n=0|rt(7,0,0|o),e&=~B(),A=(o=0|rt(0|xA(7&i),0,0|o))|A&~n,e=0|B()|e,t>>>0>>0;)t=t+1|0;return C(0|e),0|A}function VA(A,e){var t=0,r=0,n=0,o=0,i=0,a=0,s=0;if(s=0|tt(0|(A|=0),0|(e|=0),52),B(),!(s&=15))return s=A,C(0|(a=e)),0|s;for(a=1,t=0;;){r=0|rt(7,0,0|(o=3*(15-a|0)|0)),n=0|B(),i=0|tt(0|A,0|e,0|o),B(),A=(o=0|rt(0|vA(7&i),0,0|o))|A&~r,e=(i=0|B())|e&~n;A:do{if(!t)if(!(o&r|0)&!(i&n|0))t=0;else if(r=0|tt(0|A,0|e,52),B(),r&=15){t=1;e:for(;;){switch(i=0|tt(0|A,0|e,3*(15-t|0)|0),B(),7&i){case 1:break e;case 0:break;default:t=1;break A}if(!(t>>>0>>0)){t=1;break A}t=t+1|0}for(t=1;;){if(o=0|rt(7,0,0|(n=3*(15-t|0)|0)),i=e&~B(),e=0|tt(0|A,0|e,0|n),B(),A=A&~o|(e=0|rt(0|vA(7&e),0,0|n)),e=0|i|B(),!(t>>>0>>0)){t=1;break}t=t+1|0}}else t=1}while(0);if(!(a>>>0>>0))break;a=a+1|0}return C(0|e),0|A}function WA(A,e){var t=0,r=0,n=0,o=0,i=0;if(r=0|tt(0|(A|=0),0|(e|=0),52),B(),!(r&=15))return r=A,C(0|(t=e)),0|r;for(t=1;o=0|rt(7,0,0|(i=3*(15-t|0)|0)),n=e&~B(),e=0|tt(0|A,0|e,0|i),B(),A=(e=0|rt(0|vA(7&e),0,0|i))|A&~o,e=0|B()|n,t>>>0>>0;)t=t+1|0;return C(0|e),0|A}function ZA(A){return(0|(A|=0))%2|0}function KA(A,e,t){t|=0;var r,i=0;return r=P,P=P+16|0,i=r,(e|=0)>>>0>15?(P=r,0|(i=4)):2146435072&~n[4+(A|=0)>>2]&&2146435072&~n[A+8+4>>2]?(function(A,e,t){var r,i;r=P,P=P+16|0,function(A,e,t,r){e|=0,r|=0;var i,a=0,s=0,l=0,c=0;if(i=P,P=P+16|0,function(A,e,t){e|=0,t|=0;var r,i,a=0;i=P,P=P+32|0,function(A,e){e|=0;var t,r,n=0;n=+o[(A|=0)>>3],t=+d(+n),n=+f(+n),o[e+16>>3]=n,n=+o[A+8>>3],r=t*+d(+n),o[e>>3]=r,n=t*+f(+n),o[e+8>>3]=n}(A|=0,r=i),n[e>>2]=0,o[t>>3]=5,(a=+Pe(16400,r))<+o[t>>3]&&(n[e>>2]=0,o[t>>3]=a),(a=+Pe(16424,r))<+o[t>>3]&&(n[e>>2]=1,o[t>>3]=a),(a=+Pe(16448,r))<+o[t>>3]&&(n[e>>2]=2,o[t>>3]=a),(a=+Pe(16472,r))<+o[t>>3]&&(n[e>>2]=3,o[t>>3]=a),(a=+Pe(16496,r))<+o[t>>3]&&(n[e>>2]=4,o[t>>3]=a),(a=+Pe(16520,r))<+o[t>>3]&&(n[e>>2]=5,o[t>>3]=a),(a=+Pe(16544,r))<+o[t>>3]&&(n[e>>2]=6,o[t>>3]=a),(a=+Pe(16568,r))<+o[t>>3]&&(n[e>>2]=7,o[t>>3]=a),(a=+Pe(16592,r))<+o[t>>3]&&(n[e>>2]=8,o[t>>3]=a),(a=+Pe(16616,r))<+o[t>>3]&&(n[e>>2]=9,o[t>>3]=a),(a=+Pe(16640,r))<+o[t>>3]&&(n[e>>2]=10,o[t>>3]=a),(a=+Pe(16664,r))<+o[t>>3]&&(n[e>>2]=11,o[t>>3]=a),(a=+Pe(16688,r))<+o[t>>3]&&(n[e>>2]=12,o[t>>3]=a),(a=+Pe(16712,r))<+o[t>>3]&&(n[e>>2]=13,o[t>>3]=a),(a=+Pe(16736,r))<+o[t>>3]&&(n[e>>2]=14,o[t>>3]=a),(a=+Pe(16760,r))<+o[t>>3]&&(n[e>>2]=15,o[t>>3]=a),(a=+Pe(16784,r))<+o[t>>3]&&(n[e>>2]=16,o[t>>3]=a),(a=+Pe(16808,r))<+o[t>>3]&&(n[e>>2]=17,o[t>>3]=a),(a=+Pe(16832,r))<+o[t>>3]&&(n[e>>2]=18,o[t>>3]=a),(a=+Pe(16856,r))<+o[t>>3]?(n[e>>2]=19,o[t>>3]=a,P=i):P=i}(A|=0,t|=0,c=i),(s=+h(+(1-.5*+o[c>>3])))<1e-16)return n[r>>2]=0,n[r+4>>2]=0,n[r+8>>2]=0,n[r+12>>2]=0,void(P=i);if(c=0|n[t>>2],a=+ne((a=+o[15920+(24*c|0)>>3])-+ne(+function(A,e){var t,r,n,i,a;return A|=0,i=+o[(e|=0)>>3],r=+d(+i),n=+o[e+8>>3]-+o[A+8>>3],a=r*+f(+n),t=+o[A>>3],+ +p(+a,+(+f(+i)*+d(+t)-+d(+n)*(r*+f(+t))))}(15600+(c<<4)|0,A))),l=0|ZA(e)?+ne(a+-.3334731722518321):a,a=2.618033988749896*+g(+s),(0|e)>0){A=0;do{a*=2.6457513110645907,A=A+1|0}while((0|A)!=(0|e))}s=+d(+l)*a,o[r>>3]=s,l=+f(+l)*a,o[r+8>>3]=l,P=i}(A|=0,e|=0,t|=0,i=r),function(A,e){A|=0;var t,r,i,a,s=0,c=0,u=0,d=0,f=0,g=0,h=0;n[(a=8+(e|=0)|0)>>2]=0,r=+o[A>>3],d=+l(+r),i=+o[A+8>>3],d+=.5*(f=1.1547005383792515*+l(+i)),d-=+(0|(s=~~d)),f-=+(0|(A=~~f));do{if(d<.5){if(d<.3333333333333333){if(n[e>>2]=s,f<.5*(d+1)){n[e+4>>2]=A;break}A=A+1|0,n[e+4>>2]=A;break}if(A=(1&!(f<(h=1-d)))+A|0,n[e+4>>2]=A,h<=f&f<2*d){s=s+1|0,n[e>>2]=s;break}n[e>>2]=s;break}if(!(d<.6666666666666666)){if(s=s+1|0,n[e>>2]=s,f<.5*d){n[e+4>>2]=A;break}A=A+1|0,n[e+4>>2]=A;break}if(f<1-d){if(n[e+4>>2]=A,2*d-1>2]=s;break}}else A=A+1|0,n[e+4>>2]=A;s=s+1|0,n[e>>2]=s}while(0);do{if(r<0){if(1&A){s=~~(+(0|s)-(2*(+((g=0|Ze(0|s,((0|s)<0)<<31>>31,0|(g=(A+1|0)/2|0),((0|g)<0)<<31>>31))>>>0)+4294967296*+(0|B()))+1)),n[e>>2]=s;break}s=~~(+(0|s)-2*(+((g=0|Ze(0|s,((0|s)<0)<<31>>31,0|(g=(0|A)/2|0),((0|g)<0)<<31>>31))>>>0)+4294967296*+(0|B()))),n[e>>2]=s;break}}while(0);g=e+4|0,i<0&&(s=s-((1|A<<1)/2|0)|0,n[e>>2]=s,A=0-A|0,n[g>>2]=A),c=A-s|0,(0|s)<0?(u=0-s|0,n[g>>2]=c,n[a>>2]=u,n[e>>2]=0,A=c,s=0):u=0,(0|A)<0&&(s=s-A|0,n[e>>2]=s,u=u-A|0,n[a>>2]=u,n[g>>2]=0,A=0),t=s-u|0,c=A-u|0,(0|u)<0&&(n[e>>2]=t,n[g>>2]=c,n[a>>2]=0,A=c,s=t,u=0),(0|(c=(0|u)<(0|(c=(0|A)<(0|s)?A:s))?u:c))<=0||(n[e>>2]=s-c,n[g>>2]=A-c,n[a>>2]=u-c)}(i,t+4|0),P=r}(A,e,i),e=0|function(A,e){A|=0;var t,r=0,o=0,i=0,a=0,s=0,l=0,c=0,u=0;if(t=P,P=P+64|0,l=t+40|0,o=t+24|0,i=t+12|0,a=t,rt(0|(e|=0),0,52),r=134225919|B(),!e)return(0|n[A+4>>2])>2||(0|n[A+8>>2])>2||(0|n[A+12>>2])>2?(l=0,C(0|(s=0)),P=t,0|l):(rt(0|U(A),0,45),s=0|B()|r,l=-1,C(0|s),P=t,0|l);if(n[l>>2]=n[A>>2],n[l+4>>2]=n[A+4>>2],n[l+8>>2]=n[A+8>>2],n[l+12>>2]=n[A+12>>2],s=l+4|0,(0|e)>0)for(A=-1;n[o>>2]=n[s>>2],n[o+4>>2]=n[s+4>>2],n[o+8>>2]=n[s+8>>2],1&e?(dA(s),n[i>>2]=n[s>>2],n[i+4>>2]=n[s+4>>2],n[i+8>>2]=n[s+8>>2],gA(i)):(fA(s),n[i>>2]=n[s>>2],n[i+4>>2]=n[s+4>>2],n[i+8>>2]=n[s+8>>2],hA(i)),aA(o,i,a),nA(a),c=0|rt(7,0,0|(u=3*(15-e|0)|0)),r&=~B(),A=(u=0|rt(0|lA(a),0,0|u))|A&~c,r=0|B()|r,(0|e)>1;)e=e+-1|0;else A=-1;A:do{if((0|n[s>>2])<=2&&(0|n[l+8>>2])<=2&&(0|n[l+12>>2])<=2){if(e=0|rt(0|(o=0|U(l)),0,45),e|=A,A=B()|-1040385&r,a=0|O(l),!(0|z(o))){if((0|a)<=0)break;for(i=0;;){if(o=0|tt(0|e,0|A,52),B(),o&=15)for(r=1;l=0|tt(0|e,0|A,0|(u=3*(15-r|0)|0)),B(),c=0|rt(7,0,0|u),A&=~B(),e=e&~c|(u=0|rt(0|xA(7&l),0,0|u)),A=0|A|B(),r>>>0>>0;)r=r+1|0;if((0|(i=i+1|0))==(0|a))break A}}i=0|tt(0|e,0|A,52),B(),i&=15;e:do{if(i){r=1;t:for(;;){switch(u=0|tt(0|e,0|A,3*(15-r|0)|0),B(),7&u){case 1:break t;case 0:break;default:break e}if(!(r>>>0>>0))break e;r=r+1|0}if(0|Y(o,0|n[l>>2]))for(r=1;c=0|rt(7,0,0|(l=3*(15-r|0)|0)),u=A&~B(),A=0|tt(0|e,0|A,0|l),B(),e=e&~c|(A=0|rt(0|vA(7&A),0,0|l)),A=0|u|B(),r>>>0>>0;)r=r+1|0;else for(r=1;l=0|tt(0|e,0|A,0|(u=3*(15-r|0)|0)),B(),c=0|rt(7,0,0|u),A&=~B(),e=e&~c|(u=0|rt(0|xA(7&l),0,0|u)),A=0|A|B(),r>>>0>>0;)r=r+1|0}}while(0);if((0|a)>0){r=0;do{e=0|OA(e,A),A=0|B(),r=r+1|0}while((0|r)!=(0|a))}}else e=0,A=0}while(0);return u=e,C(0|(c=A)),P=t,0|u}(i,e),i=0|B(),n[t>>2]=e,n[t+4>>2]=i,!(0|e)&!(0|i)&&D(27795,27122,1050,27145),P=r,0|(i=0)):(P=r,0|(i=3))}function JA(A,e,t){var r,o=0,i=0,a=0;if(r=4+(t|=0)|0,i=0|tt(0|(A|=0),0|(e|=0),52),B(),i&=15,a=0|tt(0|A,0|e,45),B(),o=!(0|i),0|z(127&a)){if(o)return 1;o=1}else{if(o)return 0;o=0|n[r>>2]||0|n[t+8>>2]?1:1&!!(0|n[t+12>>2])}for(t=1;1&t?gA(r):hA(r),a=0|tt(0|A,0|e,3*(15-t|0)|0),B(),mA(r,7&a),t>>>0>>0;)t=t+1|0;return 0|o}function XA(A,e,t){t|=0;var r,o,i=0,a=0,s=0,l=0,c=0,u=0;if(o=P,P=P+16|0,r=o,u=0|tt(0|(A|=0),0|(e|=0),45),B(),(u&=127)>>>0>121)return n[t>>2]=0,n[t+4>>2]=0,n[t+8>>2]=0,n[t+12>>2]=0,P=o,5;A:do{if(0|z(u)&&(s=0|tt(0|A,0|e,52),B(),0|(s&=15))){i=1;e:for(;;){switch(c=0|tt(0|A,0|e,3*(15-i|0)|0),B(),7&c){case 5:break e;case 0:break;default:i=e;break A}if(!(i>>>0>>0)){i=e;break A}i=i+1|0}for(a=1,i=e;l=0|rt(7,0,0|(e=3*(15-a|0)|0)),c=i&~B(),i=0|tt(0|A,0|i,0|e),B(),A=A&~l|(i=0|rt(0|vA(7&i),0,0|e)),i=0|c|B(),a>>>0>>0;)a=a+1|0}else i=e}while(0);if(c=7696+(28*u|0)|0,n[t>>2]=n[c>>2],n[t+4>>2]=n[c+4>>2],n[t+8>>2]=n[c+8>>2],n[t+12>>2]=n[c+12>>2],!(0|JA(A,i,t)))return P=o,0;if(l=t+4|0,n[r>>2]=n[l>>2],n[r+4>>2]=n[l+4>>2],n[r+8>>2]=n[l+8>>2],s=0|tt(0|A,0|i,52),B(),c=15&s,1&s?(hA(l),s=c+1|0):s=c,0|z(u)){A:do{if(c)for(e=1;;){if(a=0|tt(0|A,0|i,3*(15-e|0)|0),B(),0|(a&=7)){i=a;break A}if(!(e>>>0>>0)){i=0;break}e=e+1|0}else i=0}while(0);i=4==(0|i)&1}else i=0;if(0|jA(t,s,i,0)){if(0|z(u))do{}while(0|jA(t,s,0,0));(0|s)!=(0|c)&&fA(l)}else(0|s)!=(0|c)&&(n[l>>2]=n[r>>2],n[l+4>>2]=n[r+4>>2],n[l+8>>2]=n[r+8>>2]);return P=o,0}function qA(A,e,t){t|=0;var r,o,i=0;return o=P,P=P+16|0,0|(i=0|XA(A|=0,e|=0,r=o))?(P=o,0|i):(i=0|tt(0|A,0|e,52),B(),function(A,e,t){var r,o;e|=0,t|=0,r=P,P=P+16|0,oA(4+(A|=0)|0,o=r),EA(o,0|n[A>>2],e,0,t),P=r}(r,15&i,t),P=o,0|(i=0))}function $A(A,e,t){t|=0;var r,n=0,o=0,i=0;if(r=P,P=P+16|0,0|(n=0|XA(A|=0,e|=0,i=r)))return P=r,0|n;n=0|tt(0|A,0|e,45),B(),n=!(0|z(127&n)),o=0|tt(0|A,0|e,52),B(),o&=15;A:do{if(!n){if(0|o)for(n=1;;){if(!(!((0|rt(7,0,3*(15-n|0)|0))&A)&!((0|B())&e)))break A;if(!(n>>>0>>0))break;n=n+1|0}return QA(i,o,0,5,t),P=r,0}}while(0);return SA(i,o,0,6,t),P=r,0}function Ae(A,e){e|=0;var t=0,r=0,o=0,i=0,a=0,s=0,l=0;if((A|=0)>>>0>15)return 4;if(rt(0|A,0,52),s=134225919|B(),!A){t=0,r=0;do{0|z(r)&&(rt(0|r,0,45),a=0|s|B(),n[(A=e+(t<<3)|0)>>2]=-1,n[A+4>>2]=a,t=t+1|0),r=r+1|0}while(122!=(0|r));return 0}t=0,a=0;do{if(0|z(a)){for(rt(0|a,0,45),r=1,o=-1,i=0|s|B();o&=~(l=0|rt(7,0,3*(15-r|0)|0)),i&=~B(),(0|r)!=(0|A);)r=r+1|0;n[(l=e+(t<<3)|0)>>2]=o,n[l+4>>2]=i,t=t+1|0}a=a+1|0}while(122!=(0|a));return 0}function ee(A,e,t,r){A|=0,r|=0;var o=0,i=0,a=0;o=0|tt(0|(e|=0),0|(t|=0),52),B(),!(0|e)&!(0|t)|(0|r)>15|(0|(o&=15))>(0|r)?(i=-1,e=-1,t=0,o=0):(e=0|zA(e,t,o+1|0,r),a=-15728641&B(),t=0|rt(0|r,0,52),i=o,e=(e=!(0|HA(t|=e,a=0|a|B())))?-1:r,o=a),n[(a=A)>>2]=t,n[a+4>>2]=o,n[A+8>>2]=i,n[A+12>>2]=e}function te(A,e,t,r){t|=0,r|=0;var o=0,i=0;return o=0|tt(0|(A|=0),0|(e|=0),52),B(),o&=15,n[(i=r+8|0)>>2]=o,!(0|A)&!(0|e)|(0|t)>15|(0|o)>(0|t)?(n[(t=r)>>2]=0,n[t+4>>2]=0,n[i>>2]=-1,void(n[r+12>>2]=-1)):(A=0|zA(A,e,o+1|0,t),i=-15728641&B(),o=0|rt(0|t,0,52),o|=A,i=0|i|B(),n[(A=r)>>2]=o,n[A+4>>2]=i,A=r+12|0,0|HA(o,i)?void(n[A>>2]=t):void(n[A>>2]=-1))}function re(A){var e,t=0,r=0,o=0,i=0,a=0,s=0,l=0,c=0;if(!(!(0|(t=0|n[(r=A|=0)>>2]))&!(0|(r=0|n[r+4>>2]))||(o=0|tt(0|t,0|r,52),B(),t=0|We(0|(l=0|rt(1,0,3*(15^(o&=15))|0)),0|B(),0|t,0|r),r=0|B(),n[(l=A)>>2]=t,n[l+4>>2]=r,(0|o)<(0|(s=0|n[(l=A+8|0)>>2]))))){for(e=A+12|0,a=o;;){if((0|a)==(0|s)){o=5;break}if(c=(0|a)==(0|n[e>>2]),o=0|tt(0|t,0|r,0|(i=3*(15-a|0)|0)),B(),c&1==(0|(o&=7))&!0){o=7;break}if(!(7==(0|o)&!0)){o=10;break}if(t=0|We(0|t,0|r,0|(c=0|rt(1,0,0|i)),0|B()),r=0|B(),n[(c=A)>>2]=t,n[c+4>>2]=r,!((0|a)>(0|s))){o=10;break}a=a+-1|0}if(5==(0|o))return n[(c=A)>>2]=0,n[c+4>>2]=0,n[l>>2]=-1,void(n[e>>2]=-1);if(7==(0|o))return s=0|We(0|t,0|r,0|(s=0|rt(1,0,0|i)),0|B()),l=0|B(),n[(c=A)>>2]=s,n[c+4>>2]=l,void(n[e>>2]=a+-1)}}function ne(A){var e;return e=(A=+A)<0?A+6.283185307179586:A,+(A>=6.283185307179586?e+-6.283185307179586:e)}function oe(A,e){return e|=0,+l(+(+o[(A|=0)>>3]-+o[e>>3]))<17453292519943298e-27?0|(e=+l(+(+o[A+8>>3]-+o[e+8>>3]))<17453292519943298e-27):0|(e=0)}function ie(A,e){switch(A=+A,0|(e|=0)){case 1:A=A<0?A+6.283185307179586:A;break;case 2:A=A>0?A+-6.283185307179586:A}return+A}function ae(A,e){A|=0;var t,r,n,i=0;return r=+o[(e|=0)>>3],t=+o[A>>3],i=(n=+f(.5*(r-t)))*n+(i=+f(.5*(+o[e+8>>3]-+o[A+8>>3])))*(+d(+r)*+d(+t)*i),2*+p(+ +c(+i),+ +c(+(1-i)))*6371.007180918475}function se(A,e){return e|=0,(A|=0)>>>0>15?0|(e=4):(o[e>>3]=+o[20656+(A<<3)>>3],0|(e=0))}function le(A,e){e|=0;var t=0;return(A|=0)>>>0>15?0|(e=4):(t=0|qe(0|(t=0|pe(7,0,A,((0|A)<0)<<31>>31)),0|B(),120,0),A=0|B(),n[e>>2]=2|t,n[e+4>>2]=A,0|(e=0))}function ce(A,e,t){A|=0,t|=0;var r,n,i,a,s=0,l=0,u=0,h=0,m=0,x=0;return x=+o[(e|=0)>>3],i=+o[A>>3],m=+f(.5*(x-i)),u=+o[e+8>>3],n=+o[A+8>>3],h=+f(.5*(u-n)),r=+d(+i),a=+d(+x),h=2*+p(+ +c(+(h=m*m+h*(a*r*h))),+ +c(+(1-h))),m=+o[t>>3],x=+f(.5*(m-x)),s=+o[t+8>>3],u=+f(.5*(s-u)),l=+d(+m),u=2*+p(+ +c(+(u=x*x+u*(a*l*u))),+ +c(+(1-u))),m=+f(.5*(i-m)),s=+f(.5*(n-s)),s=2*+p(+ +c(+(s=m*m+s*(r*l*s))),+ +c(+(1-s))),4*+b(+ +c(+ +g(.5*(l=.5*(h+u+s)))*+g(.5*(l-h))*+g(.5*(l-u))*+g(.5*(l-s))))}function ue(A,e,t){t|=0;var r,i,a,s=0,l=0;if(a=P,P=P+192|0,i=a,0|(l=0|qA(A|=0,e|=0,r=a+168|0)))return P=a,0|l;if(0|$A(A,e,i)&&D(27795,27190,415,27199),(0|(e=0|n[i>>2]))>0){if(s=+ce(i+8|0,i+8+((1!=(0|e)&1)<<4)|0,r)+0,1!=(0|e)){A=1;do{s+=+ce(i+8+((l=A)<<4)|0,i+8+((0|(A=A+1|0))%(0|e)<<4)|0,r)}while((0|A)<(0|e))}}else s=0;return o[t>>3]=s,P=a,0}function de(A){A|=0;var e,t,r=0;return(e=0|Ve(1,12))||D(27280,27235,49,27293),0|(r=0|n[(t=A+4|0)>>2])?(n[(r=r+8|0)>>2]=e,n[t>>2]=e,0|e):(0|n[A>>2]&&D(27310,27235,61,27333),n[(r=A)>>2]=e,n[t>>2]=e,0|e)}function fe(A,e){var t,r;return A|=0,e|=0,(r=0|Oe(24))||D(27347,27235,78,27361),n[r>>2]=n[e>>2],n[r+4>>2]=n[e+4>>2],n[r+8>>2]=n[e+8>>2],n[r+12>>2]=n[e+12>>2],n[r+16>>2]=0,0|(t=0|n[(e=A+4|0)>>2])?(n[t+16>>2]=r,n[e>>2]=r,0|r):(0|n[A>>2]&&D(27376,27235,82,27361),n[A>>2]=r,n[e>>2]=r,0|r)}function ge(A){var e=0,t=0,r=0,o=0;if(A|=0)for(r=1;;){if(0|(e=0|n[A>>2]))do{if(0|(t=0|n[e>>2]))do{o=t,t=0|n[t+16>>2],Ye(o)}while(0|t);o=e,e=0|n[e+8>>2],Ye(o)}while(0|e);if(e=A,A=0|n[A+8>>2],r||Ye(e),!A)break;r=0}}function he(A,e,t){A|=0;var r=0,i=0,a=0,s=0,l=0,c=0,u=0,d=0;if(!(0|X(e|=0,t|=0)))return 0;if(e=0|K(e),r=+o[t>>3],i=e&(i=+o[t+8>>3])<0?i+6.283185307179586:i,!(A=0|n[A>>2]))return 0;if(e){e=0,u=i,t=A;A:for(;;){for(;s=+o[t>>3],i=+o[t+8>>3],d=0|n[(t=t+16|0)>>2],a=+o[(d=0|d?d:A)>>3],l=+o[d+8>>3],s>a?(c=s,s=l):(c=a,a=s,s=i,i=l),(r=r==a|r==c?r+2220446049250313e-31:r)c;)if(!(t=0|n[t>>2])){t=22;break A}if(((c=(l=s<0?s+6.283185307179586:s)+(r-a)/(c-a)*((s=i<0?i+6.283185307179586:i)-l))<0?c+6.283185307179586:c)>(u=l==u|s==u?u+-2220446049250313e-31:u)&&(e^=1),!(t=0|n[t>>2])){t=22;break}}if(22==(0|t))return 0|e}else{e=0,u=i,t=A;A:for(;;){for(;s=+o[t>>3],i=+o[t+8>>3],d=0|n[(t=t+16|0)>>2],a=+o[(d=0|d?d:A)>>3],l=+o[d+8>>3],s>a?(c=s,s=l):(c=a,a=s,s=i,i=l),(r=r==a|r==c?r+2220446049250313e-31:r)c;)if(!(t=0|n[t>>2])){t=22;break A}if(s+(r-a)/(c-a)*(i-s)>(u=s==u|i==u?u+-2220446049250313e-31:u)&&(e^=1),!(t=0|n[t>>2])){t=22;break}}if(22==(0|t))return 0|e}return 0}function me(A,e,t,o,i){t|=0,o|=0,i|=0;var a,s,l,c,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0;if(c=P,P=P+32|0,v=c+16|0,l=c,u=0|tt(0|(A|=0),0|(e|=0),52),B(),u&=15,b=0|tt(0|t,0|o,52),B(),(0|u)!=(15&b))return P=c,12;if(h=0|tt(0|A,0|e,45),B(),h&=127,m=0|tt(0|t,0|o,45),B(),h>>>0>121|(m&=127)>>>0>121)return P=c,5;if(b=(0|h)!=(0|m)){if(7==(0|(f=0|W(h,m))))return P=c,1;7==(0|(g=0|W(m,h)))?D(27514,27538,161,27548):(p=f,d=g)}else p=0,d=0;a=0|z(h),s=0|z(m),n[v>>2]=0,n[v+4>>2]=0,n[v+8>>2]=0,n[v+12>>2]=0;do{if(p){if(f=(0|(m=0|n[4272+(28*h|0)+(p<<2)>>2]))>0,s)if(f){h=0,g=t,f=o;do{g=0|VA(g,f),f=0|B(),1==(0|(d=0|vA(d)))&&(d=0|vA(1)),h=h+1|0}while((0|h)!=(0|m));m=d,h=g,g=f}else m=d,h=t,g=o;else if(f){h=0,g=t,f=o;do{g=0|WA(g,f),f=0|B(),d=0|vA(d),h=h+1|0}while((0|h)!=(0|m));m=d,h=g,g=f}else m=d,h=t,g=o;if(JA(h,g,v),b||D(27563,27538,191,27548),(f=!!(0|a))&(d=!!(0|s))&&D(27590,27538,192,27548),f){if(7==(0|(d=0|UA(A,e)))){u=5;break}if(0|r[22e3+(7*d|0)+p|0]){u=1;break}h=g=0|n[21168+(28*d|0)+(p<<2)>>2]}else if(d){if(7==(0|(d=0|UA(h,g)))){u=5;break}if(0|r[22e3+(7*d|0)+m|0]){u=1;break}h=0,g=0|n[21168+(28*m|0)+(d<<2)>>2]}else h=0,g=0;if((h|g|0)<0)u=5;else{if((0|g)>0){f=v+4|0,d=0;do{pA(f),d=d+1|0}while((0|d)!=(0|g))}if(n[l>>2]=0,n[l+4>>2]=0,n[l+8>>2]=0,mA(l,p),0|u)for(;0|ZA(u)?gA(l):hA(l),(0|u)>1;)u=u+-1|0;if((0|h)>0){u=0;do{pA(l),u=u+1|0}while((0|u)!=(0|h))}iA(x=v+4|0,l,x),nA(x),x=51}}else if(JA(t,o,v),!!(0|a)&!!(0|s))if((0|m)!=(0|h)&&D(27621,27538,261,27548),7==(0|(d=0|UA(A,e)))|7==(0|(u=0|UA(t,o))))u=5;else if(0|r[22e3+(7*d|0)+u|0])u=1;else if((0|(d=0|n[21168+(28*d|0)+(u<<2)>>2]))>0){f=v+4|0,u=0;do{pA(f),u=u+1|0}while((0|u)!=(0|d));x=51}else x=51;else x=51}while(0);return 51==(0|x)&&(u=v+4|0,n[i>>2]=n[u>>2],n[i+4>>2]=n[u+4>>2],n[i+8>>2]=n[u+8>>2],u=0),P=c,0|u}function be(A,e,t,r){t|=0,r|=0;var o,i,a,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0;if(a=P,P=P+48|0,o=a+36|0,c=a+24|0,u=a+12|0,d=a,s=0|tt(0|(A|=0),0|(e|=0),52),B(),s&=15,g=0|tt(0|A,0|e,45),B(),(g&=127)>>>0>121)return P=a,5;if(i=0|z(g),rt(0|s,0,52),b=134225919|B(),n[(l=r)>>2]=-1,n[l+4>>2]=b,!s)return 7==(0|(s=0|lA(t)))||127==(0|(s=0|V(g,s)))?(P=a,0|(b=1)):(h=0|rt(0|s,0,45),m=0|B(),m=-1040385&n[(g=r)+4>>2]|m,n[(b=r)>>2]=n[g>>2]|h,n[b+4>>2]=m,P=a,0|(b=0));for(n[o>>2]=n[t>>2],n[o+4>>2]=n[t+4>>2],n[o+8>>2]=n[t+8>>2],t=s;;){if(l=t,t=t+-1|0,n[c>>2]=n[o>>2],n[c+4>>2]=n[o+4>>2],n[c+8>>2]=n[o+8>>2],0|ZA(l)){if(0|(s=0|cA(o))){t=13;break}n[u>>2]=n[o>>2],n[u+4>>2]=n[o+4>>2],n[u+8>>2]=n[o+8>>2],gA(u)}else{if(0|(s=0|uA(o))){t=13;break}n[u>>2]=n[o>>2],n[u+4>>2]=n[o+4>>2],n[u+8>>2]=n[o+8>>2],hA(u)}if(aA(c,u,d),nA(d),x=0|n[(s=r)>>2],s=0|n[s+4>>2],p=0|rt(7,0,0|(v=3*(15-l|0)|0)),s&=~B(),v=0|rt(0|lA(d),0,0|v),s=0|B()|s,n[(b=r)>>2]=v|x&~p,n[b+4>>2]=s,(0|l)<=1){t=14;break}}A:do{if(13!=(0|t)&&14==(0|t))if((0|n[o>>2])<=1&&(0|n[o+4>>2])<=1&&(0|n[o+8>>2])<=1){d=127==(0|(s=0|V(g,t=0|lA(o))))?0:0|z(s);e:do{if(t){if(i){if(7==(0|(s=0|UA(A,e)))){s=5;break A}if((0|(l=0|n[21376+(28*s|0)+(t<<2)>>2]))>0){s=t,t=0;do{s=0|xA(s),t=t+1|0}while((0|t)!=(0|l))}else s=t;if(1==(0|s)){s=9;break A}127==(0|(t=0|V(g,s)))&&D(27648,27538,411,27678),0|z(t)?D(27693,27538,412,27678):(m=t,h=l,f=s)}else m=s,h=0,f=t;if((0|(u=0|n[4272+(28*g|0)+(f<<2)>>2]))<=-1&&D(27724,27538,419,27678),!d){if((0|h)<0){s=5;break A}if(0|h){s=0,t=0|n[(l=r)>>2],l=0|n[l+4>>2];do{t=0|YA(t,l),l=0|B(),n[(v=r)>>2]=t,n[v+4>>2]=l,s=s+1|0}while((0|s)<(0|h))}if((0|u)<=0){s=m,t=58;break}for(s=0,t=0|n[(l=r)>>2],l=0|n[l+4>>2];;)if(t=0|YA(t,l),l=0|B(),n[(v=r)>>2]=t,n[v+4>>2]=l,(0|(s=s+1|0))==(0|u)){s=m,t=58;break e}}if(7==(0|(c=0|W(m,g)))&&D(27514,27538,428,27678),t=0|n[(s=r)>>2],s=0|n[s+4>>2],(0|u)>0){l=0;do{t=0|YA(t,s),s=0|B(),n[(v=r)>>2]=t,n[v+4>>2]=s,l=l+1|0}while((0|l)!=(0|u))}if(7==(0|(s=0|UA(t,s)))&&D(27795,27538,440,27678),t=0|G(m),(0|(t=0|n[(t?21792:21584)+(28*c|0)+(s<<2)>>2]))<0&&D(27795,27538,454,27678),t){s=0,l=0|n[(c=r)>>2],c=0|n[c+4>>2];do{l=0|OA(l,c),c=0|B(),n[(v=r)>>2]=l,n[v+4>>2]=c,s=s+1|0}while((0|s)<(0|t));s=m,t=58}else s=m,t=58}else if(!!(0|i)&!!(0|d)){if(7==(0|(t=0|UA(A,e)))|7==(0|(l=0|UA(0|n[(l=r)>>2],0|n[l+4>>2])))){s=5;break A}if((0|(l=0|n[21376+(28*t|0)+(l<<2)>>2]))<0){s=5;break A}if(l){t=0,c=0|n[(u=r)>>2],u=0|n[u+4>>2];do{c=0|YA(c,u),u=0|B(),n[(v=r)>>2]=c,n[v+4>>2]=u,t=t+1|0}while((0|t)<(0|l));t=58}else t=59}else t=58}while(0);if(58==(0|t)&&d&&(t=59),59==(0|t)&&1==(0|UA(0|n[(v=r)>>2],0|n[v+4>>2]))){s=9;break}p=0|n[(v=r)>>2],v=-1040385&n[v+4>>2],x=0|rt(0|s,0,45),v=0|v|B(),n[(s=r)>>2]=p|x,n[s+4>>2]=v,s=0}else s=1}while(0);return P=a,0|s}function pe(A,e,t,r){A|=0,e|=0;var n=0,o=0,i=0;if(!(0|(t|=0))&!(0|(r|=0)))return o=1,C(0|(n=0)),0|o;o=A,n=e,A=1,e=0;do{A=0|qe(0|((i=!0&!(1&t))?1:o),0|(i?0:n),0|A,0|e),e=0|B(),t=0|et(0|t,0|r,1),r=0|B(),o=0|qe(0|o,0|n,0|o,0|n),n=0|B()}while(!(!(0|t)&!(0|r)));return C(0|e),0|A}function xe(A,e,t,r){t|=0,r|=0;var i,a=0,s=0,l=0,c=0,u=0,f=0;i=P,P=P+16|0,s=i,l=0|tt(0|(A|=0),0|(e|=0),52),B(),l&=15;do{if(l){if(!(a=0|qA(A,e,s))){u=+o[s>>3],c=1/+d(+u),f=+o[25968+(l<<3)>>3],o[t>>3]=u+f,o[t+8>>3]=u-f,u=+o[s+8>>3],c*=f,o[t+16>>3]=c+u,o[t+24>>3]=u-c;break}return P=i,0|a}if(a=0|tt(0|A,0|e,45),B(),(a&=127)>>>0>121)return P=i,5;s=22064+(a<<5)|0,n[t>>2]=n[s>>2],n[t+4>>2]=n[s+4>>2],n[t+8>>2]=n[s+8>>2],n[t+12>>2]=n[s+12>>2],n[t+16>>2]=n[s+16>>2],n[t+20>>2]=n[s+20>>2],n[t+24>>2]=n[s+24>>2],n[t+28>>2]=n[s+28>>2];break}while(0);return function(A,e){e=+e;var t,r,n,i,a,s,l,c=0,u=0;c=(i=+o[(n=16+(A|=0)|0)>>3])-(r=+o[(t=A+24|0)>>3]),c=i>3],c=.5*(c*e-c),u+=e=.5*((l=u-(s=+o[(a=A+8|0)>>3]))*e-l),o[A>>3]=u>1.5707963267948966?1.5707963267948966:u,e=s-e,o[a>>3]=e<-1.5707963267948966?-1.5707963267948966:e,e=(e=i+c)>3.141592653589793?e+-6.283185307179586:e,o[n>>3]=e<-3.141592653589793?e+6.283185307179586:e,e=(e=r-c)>3.141592653589793?e+-6.283185307179586:e,o[t>>3]=e<-3.141592653589793?e+6.283185307179586:e}(t,r?1.4:1.1),(0|n[(r=26096+(l<<3)|0)>>2])==(0|A)&&(0|n[r+4>>2])==(0|e)&&(o[t>>3]=1.5707963267948966),(0|n[(l=26224+(l<<3)|0)>>2])==(0|A)&&(0|n[l+4>>2])==(0|e)&&(o[t+8>>3]=-1.5707963267948966),1.5707963267948966!=+o[t>>3]&&-1.5707963267948966!=+o[t+8>>3]?(P=i,0|(l=0)):(o[t+16>>3]=3.141592653589793,o[t+24>>3]=-3.141592653589793,P=i,0|(l=0))}function ve(A){var e,t,o,i,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0;if(i=P,P=P+336|0,e=i+168|0,t=i,!(0|(s=0|n[(l=A|=0)>>2]))&!(0|(l=0|n[l+4>>2])))P=i;else{if(0|r[0|(a=A+28|0)]?(s=0|we(s,l),l=0|B()):r[0|a]=1,!(0|n[n[(o=A+20|0)>>2]>>2]))return 0|(s=0|n[(a=A+24|0)>>2])&&Ye(s),n[(y=A)>>2]=0,n[y+4>>2]=0,n[A+8>>2]=0,n[o>>2]=0,n[A+12>>2]=-1,n[A+16>>2]=0,n[a>>2]=0,void(P=i);c=15&(a=0|n[(y=A+16|0)>>2]);A:do{if(!(0|s)&!(0|l))w=A+24|0;else{x=A+12|0,b=3==(0|c),m=255&a,g=3==(1|c),p=A+24|0,h=(c+-1|0)>>>0<3,d=3==(2|c),f=t+8|0;e:for(;;){if(u=0|tt(0|s,0|l,52),B(),(0|(u&=15))==(0|n[x>>2])){switch(15&m){case 0:case 2:case 3:if(0|(c=0|qA(s,l,e))){v=15;break e}if(0|De(0|n[o>>2],0|n[p>>2],e)){v=19;break e}}if(g&&(c=0|n[4+(0|n[o>>2])>>2],n[e>>2]=n[c>>2],n[e+4>>2]=n[c+4>>2],n[e+8>>2]=n[c+8>>2],n[e+12>>2]=n[c+12>>2],0|X(26832,e))){if(0|KA(0|n[4+(0|n[o>>2])>>2],u,t)){v=25;break}if((0|n[(c=t)>>2])==(0|s)&&(0|n[c+4>>2])==(0|l)){v=29;break}}if(h){if(0|(c=0|$A(s,l,e))){v=32;break}if(0|xe(s,l,t,0)){v=36;break}if(d&&0|Me(0|n[o>>2],0|n[p>>2],e,t)){v=42;break}if(g&&0|Qe(0|n[o>>2],0|n[p>>2],e,t)){v=42;break}}if(b){if(a=0|xe(s,l,e,1),c=0|n[p>>2],0|a){v=45;break}if(0|q(c,e)){if(AA(t,e),0|$(e,0|n[p>>2])){v=53;break}if(0|De(0|n[o>>2],0|n[p>>2],f)){v=53;break}if(0|Qe(0|n[o>>2],0|n[p>>2],t,e)){v=53;break}}}}do{if((0|u)<(0|n[x>>2])){if(a=0|xe(s,l,e,1),c=0|n[p>>2],0|a){v=58;break e}if(!(0|q(c,e))){v=73;break}if(0|$(0|n[p>>2],e)&&(AA(t,e),0|Me(0|n[o>>2],0|n[p>>2],t,e))){v=65;break e}if(0|(s=0|GA(s,l,u+1|0,t))){v=67;break e}s=0|n[(l=t)>>2],l=0|n[l+4>>2]}else v=73}while(0);if(73==(0|v)&&(v=0,s=0|we(s,l),l=0|B()),!(0|s)&!(0|l)){w=p;break A}}switch(0|v){case 15:0|(a=0|n[p>>2])&&Ye(a),n[(v=A)>>2]=0,n[v+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=c,v=20;break;case 19:n[A>>2]=s,n[A+4>>2]=l,v=20;break;case 25:D(27795,27761,470,27772);break;case 29:case 42:return n[A>>2]=s,n[A+4>>2]=l,void(P=i);case 32:return 0|(a=0|n[p>>2])&&Ye(a),n[(w=A)>>2]=0,n[w+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=c,void(P=i);case 36:D(27795,27761,493,27772);break;case 45:0|c&&Ye(c),n[(v=A)>>2]=0,n[v+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=a,v=55;break;case 53:n[A>>2]=s,n[A+4>>2]=l,v=55;break;case 58:0|c&&Ye(c),n[(v=A)>>2]=0,n[v+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=a,v=71;break;case 65:n[A>>2]=s,n[A+4>>2]=l,v=71;break;case 67:return 0|(a=0|n[p>>2])&&Ye(a),n[(w=A)>>2]=0,n[w+4>>2]=0,n[o>>2]=0,n[x>>2]=-1,n[y>>2]=0,n[p>>2]=0,n[A+8>>2]=s,void(P=i)}if(20==(0|v))return void(P=i);if(55==(0|v))return void(P=i);if(71==(0|v))return void(P=i)}}while(0);0|(a=0|n[w>>2])&&Ye(a),n[(v=A)>>2]=0,n[v+4>>2]=0,n[A+8>>2]=0,n[o>>2]=0,n[A+12>>2]=-1,n[y>>2]=0,n[w>>2]=0,P=i}}function we(A,e){var t,r=0,o=0,i=0,a=0,s=0,l=0,c=0,u=0,d=0;t=P,P=P+16|0,d=t,o=0|tt(0|(A|=0),0|(e|=0),52),B(),o&=15,r=0|tt(0|A,0|e,45),B();do{if(o){for(;r=0|rt(o+4095|0,0,52),i=B()|-15728641&e,r=r|A|(s=0|rt(7,0,0|(a=3*(15-o|0)|0))),i|=l=0|B(),c=0|tt(0|A,0|e,0|a),B(),o=o+-1|0,!((c&=7)>>>0<6);){if(!o){u=4;break}e=i,A=r}if(4==(0|u)){r=0|tt(0|r,0|i,45),B();break}return d=0|rt(((d=!(0|c)&!!(0|HA(r,i)))?2:1)+c|0,0,0|a),u=0|B()|e&~l,d|=A&~s,C(0|u),P=t,0|d}}while(0);return(r&=127)>>>0>120?(d=0,C(0|(u=0)),P=t,0|d):(LA(d,0,r+1|0,0),u=0|n[d+4>>2],d=0|n[d>>2],C(0|u),P=t,0|d)}function ye(A,e,t){A|=0;var r,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0;if(!(0|X(e|=0,t|=0)))return 0;if(e=0|K(e),i=+o[t>>3],a=e&(a=+o[t+8>>3])<0?a+6.283185307179586:a,(0|(g=0|n[A>>2]))<=0)return 0;if(r=0|n[A+4>>2],e){e=0,f=a,t=-1,A=0;A:for(;;){for(d=A;l=+o[r+(d<<4)>>3],a=+o[r+(d<<4)+8>>3],s=+o[r+((A=(t+2|0)%(0|g)|0)<<4)>>3],c=+o[r+(A<<4)+8>>3],l>s?(u=l,l=c):(u=s,s=l,l=a,a=c),(i=i==s|i==u?i+2220446049250313e-31:i)u;){if((0|(t=d+1|0))>=(0|g)){t=22;break A}A=d,d=t,t=A}if(((u=(c=l<0?l+6.283185307179586:l)+(i-s)/(u-s)*((l=a<0?a+6.283185307179586:a)-c))<0?u+6.283185307179586:u)>(f=c==f|l==f?f+-2220446049250313e-31:f)&&(e^=1),(0|(A=d+1|0))>=(0|g)){t=22;break}t=d}if(22==(0|t))return 0|e}else{e=0,f=a,t=-1,A=0;A:for(;;){for(d=A;l=+o[r+(d<<4)>>3],a=+o[r+(d<<4)+8>>3],s=+o[r+((A=(t+2|0)%(0|g)|0)<<4)>>3],c=+o[r+(A<<4)+8>>3],l>s?(u=l,l=c):(u=s,s=l,l=a,a=c),(i=i==s|i==u?i+2220446049250313e-31:i)u;){if((0|(t=d+1|0))>=(0|g)){t=22;break A}A=d,d=t,t=A}if(l+(i-s)/(u-s)*(a-l)>(f=l==f|a==f?f+-2220446049250313e-31:f)&&(e^=1),(0|(A=d+1|0))>=(0|g)){t=22;break}t=d}if(22==(0|t))return 0|e}return 0}function ke(A,e){e|=0;var t,r,i,a,s,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0;if(!(r=0|n[(A|=0)>>2]))return n[e>>2]=0,n[e+4>>2]=0,n[e+8>>2]=0,n[e+12>>2]=0,n[e+16>>2]=0,n[e+20>>2]=0,n[e+24>>2]=0,void(n[e+28>>2]=0);if(o[(i=e+8|0)>>3]=17976931348623157e292,o[(a=e+24|0)>>3]=17976931348623157e292,o[e>>3]=-17976931348623157e292,o[(s=e+16|0)>>3]=-17976931348623157e292,!((0|r)<=0)){for(t=0|n[A+4>>2],b=17976931348623157e292,p=-17976931348623157e292,x=0,A=-1,f=17976931348623157e292,g=17976931348623157e292,m=-17976931348623157e292,u=-17976931348623157e292,v=0;c=+o[t+(v<<4)>>3],h=+o[t+(v<<4)+8>>3],d=+o[t+(((0|(A=A+2|0))==(0|r)?0:A)<<4)+8>>3],c>3]=c,f=c),h>3]=h,g=h),c>m?o[e>>3]=c:c=m,h>u&&(o[s>>3]=h,u=h),b=h>0&hp?h:p,x|=+l(+(h-d))>3.141592653589793,(0|(A=v+1|0))!=(0|r);)w=v,m=c,v=A,A=w;x&&(o[s>>3]=p,o[a>>3]=b)}}function Ce(A){return 0|((A|=0)>>>0<4?0:15)}function Be(A,e){e|=0;var t,r=0,i=0,a=0,s=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,B=0,D=0;if(p=0|n[(A|=0)>>2]){if(o[(x=e+8|0)>>3]=17976931348623157e292,o[(v=e+24|0)>>3]=17976931348623157e292,o[e>>3]=-17976931348623157e292,o[(w=e+16|0)>>3]=-17976931348623157e292,(0|p)>0){for(a=0|n[A+4>>2],m=17976931348623157e292,b=-17976931348623157e292,i=0,r=-1,d=17976931348623157e292,f=17976931348623157e292,h=-17976931348623157e292,c=-17976931348623157e292,y=0;s=+o[a+(y<<4)>>3],g=+o[a+(y<<4)+8>>3],u=+o[a+(((0|(B=r+2|0))==(0|p)?0:B)<<4)+8>>3],s>3]=s,d=s),g>3]=g,f=g),s>h?o[e>>3]=s:s=h,g>c&&(o[w>>3]=g,c=g),m=g>0&gb?g:b,i|=+l(+(g-u))>3.141592653589793,(0|(r=y+1|0))!=(0|p);)B=y,h=s,y=r,r=B;i&&(o[w>>3]=b,o[v>>3]=m)}}else n[e>>2]=0,n[e+4>>2]=0,n[e+8>>2]=0,n[e+12>>2]=0,n[e+16>>2]=0,n[e+20>>2]=0,n[e+24>>2]=0,n[e+28>>2]=0;if(!((0|(r=0|n[(B=A+8|0)>>2]))<=0)){t=A+12|0,C=0;do{if(a=0|n[t>>2],i=C,v=e+((C=C+1|0)<<5)|0,w=0|n[a+(i<<3)>>2]){if(o[(y=e+(C<<5)+8|0)>>3]=17976931348623157e292,o[(A=e+(C<<5)+24|0)>>3]=17976931348623157e292,o[v>>3]=-17976931348623157e292,o[(k=e+(C<<5)+16|0)>>3]=-17976931348623157e292,(0|w)>0){for(p=0|n[a+(i<<3)+4>>2],m=17976931348623157e292,b=-17976931348623157e292,a=0,i=-1,x=0,d=17976931348623157e292,f=17976931348623157e292,g=-17976931348623157e292,c=-17976931348623157e292;s=+o[p+(x<<4)>>3],h=+o[p+(x<<4)+8>>3],u=+o[p+(((0|(i=i+2|0))==(0|w)?0:i)<<4)+8>>3],s>3]=s,d=s),h>3]=h,f=h),s>g?o[v>>3]=s:s=g,h>c&&(o[k>>3]=h,c=h),m=h>0&hb?h:b,a|=+l(+(h-u))>3.141592653589793,(0|(i=x+1|0))!=(0|w);)D=x,x=i,g=s,i=D;a&&(o[k>>3]=b,o[A>>3]=m)}}else n[v>>2]=0,n[v+4>>2]=0,n[v+8>>2]=0,n[v+12>>2]=0,n[v+16>>2]=0,n[v+20>>2]=0,n[v+24>>2]=0,n[v+28>>2]=0,r=0|n[B>>2]}while((0|C)<(0|r))}}function De(A,e,t){var r=0,o=0,i=0;if(!(0|ye(A|=0,e|=0,t|=0)))return 0;if((0|n[(o=A+8|0)>>2])<=0)return 1;for(r=A+12|0,A=0;;){if(i=A,A=A+1|0,0|ye((0|n[r>>2])+(i<<3)|0,e+(A<<5)|0,t)){A=0,r=6;break}if((0|A)>=(0|n[o>>2])){A=1,r=6;break}}return 6==(0|r)?0|A:0}function Me(A,e,t,r){r|=0;var o,i,a=0,s=0,l=0,c=0,u=0;if(i=P,P=P+16|0,o=i,!(0|ye(A|=0,e|=0,l=8+(t|=0)|0)))return P=i,0;c=A+8|0;A:do{if((0|n[c>>2])>0){for(s=A+12|0,a=0;;){if(u=a,a=a+1|0,0|ye((0|n[s>>2])+(u<<3)|0,e+(a<<5)|0,l)){a=0;break}if((0|a)>=(0|n[c>>2]))break A}return P=i,0|a}}while(0);if(0|Ee(A,e,t,r))return P=i,0;n[o>>2]=n[t>>2],n[o+4>>2]=l,a=0|n[c>>2];A:do{if((0|a)>0)for(A=A+12|0,l=0,s=a;;){if(a=0|n[A>>2],(0|n[a+(l<<3)>>2])>0){if(0|ye(o,r,0|n[a+(l<<3)+4>>2])){a=0;break A}if(a=l+1|0,0|Ee((0|n[A>>2])+(l<<3)|0,e+(a<<5)|0,t,r)){a=0;break A}s=0|n[c>>2]}else a=l+1|0;if(!((0|a)<(0|s))){a=1;break}l=a}else a=1}while(0);return P=i,0|a}function Ee(A,e,t,r){A|=0,t|=0;var i,a,s,l,c,u,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,B=0,D=0;if(u=P,P=P+176|0,l=u+172|0,d=u+168|0,c=u,!(0|q(e|=0,r|=0)))return P=u,0;if(function(A,e,t,r){var i,a,s,l,c;e|=0,t|=0,r|=0,A=(a=+o[16+(A|=0)>>3])<(c=+o[A+24>>3]),i=(l=+o[e+16>>3])<(s=+o[e+24>>3]),e=c-l>2]=A?i|e?1:2:0,n[r>>2]=i?A?1:e?2:1:0}(e,r,l,d),st(0|c,0|t,168),(0|n[t>>2])>0){e=0;do{y=+ie(+o[(B=c+8+(e<<4)+8|0)>>3],0|n[d>>2]),o[B>>3]=y,e=e+1|0}while((0|e)<(0|n[t>>2]))}a=+o[r>>3],s=+o[r+8>>3],y=+ie(+o[r+16>>3],0|n[d>>2]),i=+ie(+o[r+24>>3],0|n[d>>2]);A:do{if((0|n[A>>2])>0){if(r=A+4|0,(0|(d=0|n[c>>2]))<=0)for(e=0;;)if((0|(e=e+1|0))>=(0|n[A>>2])){e=0;break A}for(t=0;;){if(e=0|n[r>>2],v=+o[e+(t<<4)>>3],w=+ie(+o[e+(t<<4)+8>>3],0|n[l>>2]),e=0|n[r>>2],B=(0|(t=t+1|0))%(0|n[A>>2])|0,f=+o[e+(B<<4)>>3],g=+ie(+o[e+(B<<4)+8>>3],0|n[l>>2]),!(v>=a)|!(f>=a)&&!(v<=s)|!(f<=s)&&!(w<=i)|!(g<=i)&&!(w>=y)|!(g>=y)){x=f-v,b=g-w,e=0;do{if(D=e,B=(0|(e=e+1|0))==(0|d)?0:e,f=+o[c+8+(D<<4)+8>>3],g=+o[c+8+(B<<4)+8>>3]-f,h=+o[c+8+(D<<4)>>3],!(0==(p=x*g-b*(m=+o[c+8+(B<<4)>>3]-h))||(k=w-f,C=v-h,m=(k*m-g*C)/p,m<0|m>1))&&(p=(x*k-b*C)/p)>=0&p<=1){e=1;break A}}while((0|e)<(0|d))}if((0|t)>=(0|n[A>>2])){e=0;break}}}else e=0}while(0);return P=u,0|e}function Qe(A,e,t,r){var o=0,i=0,a=0;if(0|Ee(A|=0,e|=0,t|=0,r|=0))return 1;if((0|n[(i=A+8|0)>>2])<=0)return 0;for(o=A+12|0,A=0;;){if(a=A,A=A+1|0,0|Ee((0|n[o>>2])+(a<<3)|0,e+(A<<5)|0,t,r)){A=1,o=6;break}if((0|A)>=(0|n[i>>2])){A=0,o=6;break}}return 6==(0|o)?0|A:0}function Ne(A,e,t,r,n){e|=0,t|=0,r|=0,n|=0;var i,a,s,l,c,u,d,f=0;l=+o[(A|=0)>>3],s=+o[e>>3]-l,a=+o[A+8>>3],i=+o[e+8>>3]-a,u=+o[t>>3],f=((f=+o[r>>3]-u)*(a-(d=+o[t+8>>3]))-(l-u)*(c=+o[r+8>>3]-d))/(s*c-i*f),o[n>>3]=l+s*f,o[n+8>>3]=a+i*f}function je(A,e){return e|=0,+l(+(+o[(A|=0)>>3]-+o[e>>3]))<1.1920928955078125e-7?0|(e=+l(+(+o[A+8>>3]-+o[e+8>>3]))<1.1920928955078125e-7):0|(e=0)}function Pe(A,e){var t,r,n;return e|=0,+((n=+o[(A|=0)>>3]-+o[e>>3])*n+(r=+o[A+8>>3]-+o[e+8>>3])*r+(t=+o[A+16>>3]-+o[e+16>>3])*t)}function Se(A,e,t){t|=0;var r,o,i,a,s=0,l=0,c=0,u=0;if(a=P,P=P+32|0,u=a,0|(s=0|XA(A|=0,e|=0,o=a+16|0)))return P=a,0|s;r=0|TA(A,e),i=0|UA(A,e),function(A,e){A=7696+(28*(A|=0)|0)|0,n[(e|=0)>>2]=n[A>>2],n[e+4>>2]=n[A+4>>2],n[e+8>>2]=n[A+8>>2],n[e+12>>2]=n[A+12>>2]}(r,u),s=0|function(A,e){A|=0;var t=0,r=0;if((e|=0)>>>0>20)return-1;do{if((0|n[11120+(216*e|0)>>2])!=(0|A))if((0|n[11120+(216*e|0)+8>>2])!=(0|A))if((0|n[11120+(216*e|0)+16>>2])!=(0|A))if((0|n[11120+(216*e|0)+24>>2])!=(0|A))if((0|n[11120+(216*e|0)+32>>2])!=(0|A))if((0|n[11120+(216*e|0)+40>>2])!=(0|A))if((0|n[11120+(216*e|0)+48>>2])!=(0|A))if((0|n[11120+(216*e|0)+56>>2])!=(0|A))if((0|n[11120+(216*e|0)+64>>2])!=(0|A))if((0|n[11120+(216*e|0)+72>>2])!=(0|A))if((0|n[11120+(216*e|0)+80>>2])!=(0|A))if((0|n[11120+(216*e|0)+88>>2])!=(0|A))if((0|n[11120+(216*e|0)+96>>2])!=(0|A))if((0|n[11120+(216*e|0)+104>>2])!=(0|A))if((0|n[11120+(216*e|0)+112>>2])!=(0|A))if((0|n[11120+(216*e|0)+120>>2])!=(0|A))if((0|n[11120+(216*e|0)+128>>2])!=(0|A)){if((0|n[11120+(216*e|0)+136>>2])!=(0|A)){if((0|n[11120+(216*e|0)+144>>2])==(0|A)){A=0,t=2,r=0;break}if((0|n[11120+(216*e|0)+152>>2])==(0|A)){A=0,t=2,r=1;break}if((0|n[11120+(216*e|0)+160>>2])==(0|A)){A=0,t=2,r=2;break}if((0|n[11120+(216*e|0)+168>>2])==(0|A)){A=1,t=2,r=0;break}if((0|n[11120+(216*e|0)+176>>2])==(0|A)){A=1,t=2,r=1;break}if((0|n[11120+(216*e|0)+184>>2])==(0|A)){A=1,t=2,r=2;break}if((0|n[11120+(216*e|0)+192>>2])==(0|A)){A=2,t=2,r=0;break}if((0|n[11120+(216*e|0)+200>>2])==(0|A)){A=2,t=2,r=1;break}if((0|n[11120+(216*e|0)+208>>2])==(0|A)){A=2,t=2,r=2;break}return-1}A=2,t=1,r=2}else A=2,t=1,r=1;else A=2,t=1,r=0;else A=1,t=1,r=2;else A=1,t=1,r=1;else A=1,t=1,r=0;else A=0,t=1,r=2;else A=0,t=1,r=1;else A=0,t=1,r=0;else A=2,t=0,r=2;else A=2,t=0,r=1;else A=2,t=0,r=0;else A=1,t=0,r=2;else A=1,t=0,r=1;else A=1,t=0,r=0;else A=0,t=0,r=2;else A=0,t=0,r=1;else A=0,t=0,r=0}while(0);return 0|n[11120+(216*e|0)+(72*t|0)+(24*A|0)+(r<<3)+4>>2]}(r,0|n[o>>2]);do{if(0|z(r)){switch(0|r){case 4:l=0;break;case 14:l=1;break;case 24:l=2;break;case 38:l=3;break;case 49:l=4;break;case 58:l=5;break;case 63:l=6;break;case 72:l=7;break;case 83:l=8;break;case 97:l=9;break;case 107:l=10;break;case 117:l=11;break;default:D(27795,27797,75,27806)}if(c=0|n[26416+(24*l|0)+8>>2],e=0|n[26416+(24*l|0)+16>>2],(0|(A=0|n[o>>2]))!=(0|n[u>>2])&&(u=0|G(r))|(0|(A=0|n[o>>2]))==(0|e)&&(s=(s+1|0)%6|0),3==(0|i)&(0|A)==(0|e)){s=(s+5|0)%6|0;break}5==(0|i)&(0|A)==(0|c)&&(s=(s+1|0)%6|0)}}while(0);return n[t>>2]=s,P=a,0}function Fe(A,e,t,r){t|=0,r|=0;var o,i,a,s,l,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0;if(l=P,P=P+32|0,v=l+24|0,s=l+20|0,a=l+8|0,i=l+16|0,o=l,g=(g=!(0|HA(A|=0,e|=0)))?6:5,m=0|tt(0|A,0|e,52),B(),g>>>0<=t>>>0)return P=l,2;!(b=!(0|(m&=15)))&&!((p=0|rt(7,0,3*(15^m)|0))&A)&!((0|B())&e)?c=t:u=4;A:do{if(4==(0|u)){if((0|((c=!!(0|HA(A,e)))?4:5))<(0|t))return P=l,1;if(0|Se(A,e,v))return P=l,1;if(u=(0|n[v>>2])+t|0,7==(0|(p=0|n[(c=c?26704+((0|u)%5<<2)|0:26736+((0|u)%6<<2)|0)>>2])))return P=l,1;n[s>>2]=0,c=0|L(A,e,p,s,a);do{if(!c){if(h=0|n[(f=a)>>2],u=(d=(f=0|n[f+4>>2])>>>0>>0|(0|f)==(0|e)&h>>>0>>0)?h:A,d=d?f:e,!b&&!(h&(b=0|rt(7,0,3*(15^m)|0)))&!(f&(0|B())))c=t;else{if(f=(t+-1+g|0)%(0|g)|0,c=0|HA(A,e),(0|f)<0&&D(27795,27797,248,27822),(0|((g=!!(0|c))?4:5))<(0|f)&&D(27795,27797,248,27822),0|Se(A,e,v)&&D(27795,27797,248,27822),c=(0|n[v>>2])+f|0,7==(0|(f=0|n[(c=g?26704+((0|c)%5<<2)|0:26736+((0|c)%6<<2)|0)>>2]))&&D(27795,27797,248,27822),n[i>>2]=0,0|(c=0|L(A,e,f,i,o)))break;g=0|n[(h=o)>>2],h=0|n[h+4>>2];do{if(h>>>0>>0|(0|h)==(0|d)&g>>>0>>0){if(u=0|HA(g,h)?0|_(g,h,A,e):0|n[26800+(((0|n[i>>2])+(0|n[26768+(f<<2)>>2])|0)%6<<2)>>2],c=0|HA(g,h),(u+-1|0)>>>0>5){c=-1,u=g,d=h;break}if(1==(0|u)&(c=!!(0|c))){c=-1,u=g,d=h;break}do{if(!(0|Se(g,h,v))){if(c){c=(5+(0|n[26352+(u<<2)>>2])-(0|n[v>>2])|0)%5|0;break}c=(6+(0|n[26384+(u<<2)>>2])-(0|n[v>>2])|0)%6|0;break}c=-1}while(0);u=g,d=h}else c=t}while(0);h=0|n[(f=a)>>2],f=0|n[f+4>>2]}if((0|u)==(0|h)&(0|d)==(0|f)){if(A=(g=!!(0|HA(h,f)))?0|_(h,f,A,e):0|n[26800+(((0|n[s>>2])+(0|n[26768+(p<<2)>>2])|0)%6<<2)>>2],c=0|HA(h,f),(A+-1|0)>>>0<=5&&!(1==(0|A)&(x=!!(0|c))))do{if(!(0|Se(h,f,v))){if(x){c=(5+(0|n[26352+(A<<2)>>2])-(0|n[v>>2])|0)%5|0;break}c=(6+(0|n[26384+(A<<2)>>2])-(0|n[v>>2])|0)%6|0;break}c=-1}while(0);else c=-1;c=6==(0|(c=c+1|0))|g&5==(0|c)?0:c}e=d,A=u;break A}}while(0);return P=l,0|c}}while(0);return x=0|rt(0|c,0,56),v=B()|-2130706433&e|536870912,n[r>>2]=x|A,n[r+4>>2]=v,P=l,0}function Te(A,e){A|=0;var t,r,o=0,i=0;return r=P,P=P+16|0,t=r,!0&536870912==(2013265920&(e|=0))&&0|IA(A,o=-2130706433&e|134217728)?(i=0|tt(0|A,0|e,56),B(),o=(i=!(0|Fe(A,o,7&i,t)))&((0|n[(o=t)>>2])==(0|A)?(0|n[o+4>>2])==(0|e):0)&1,P=r,0|o):(P=r,0|(o=0))}function Ie(A,e,t){A|=0,t|=0;var r=0;(0|(e|=0))>0?(r=0|Ve(e,4),n[A>>2]=r,r||D(27835,27858,40,27872)):n[A>>2]=0,n[A+4>>2]=e,n[A+8>>2]=0,n[A+12>>2]=t}function Le(A){var e,t,r,i=0,a=0,s=0,c=0;e=4+(A|=0)|0,t=A+12|0,r=A+8|0;A:for(;;){for(a=0|n[e>>2],i=0;;){if((0|i)>=(0|a))break A;if(s=0|n[A>>2],c=0|n[s+(i<<2)>>2])break;i=i+1|0}i=s+(~~(+l(+ +u(10,+ +(15-(0|n[t>>2])|0))*(+o[c>>3]+ +o[c+8>>3]))%+(0|a))>>>0<<2)|0,a=0|n[i>>2];e:do{if(0|a){if(s=c+32|0,(0|a)==(0|c))n[i>>2]=n[s>>2];else{if(!(i=0|n[(a=a+32|0)>>2]))break;for(;(0|i)!=(0|c);)if(!(i=0|n[(a=i+32|0)>>2]))break e;n[a>>2]=n[s>>2]}Ye(c),n[r>>2]=(0|n[r>>2])-1}}while(0)}Ye(0|n[A>>2])}function Re(A){var e,t=0,r=0;for(e=0|n[4+(A|=0)>>2],r=0;;){if((0|r)>=(0|e)){t=0,r=4;break}if(t=0|n[(0|n[A>>2])+(r<<2)>>2]){r=4;break}r=r+1|0}return 4==(0|r)?0|t:0}function _e(A,e){e|=0;var t=0,r=0,i=0,a=0;if(t=~~(+l(+ +u(10,+ +(15-(0|n[12+(A|=0)>>2])|0))*(+o[e>>3]+ +o[e+8>>3]))%+(0|n[A+4>>2]))>>>0,t=(0|n[A>>2])+(t<<2)|0,!(r=0|n[t>>2]))return 1;a=e+32|0;do{if((0|r)!=(0|e)){if(!(t=0|n[r+32>>2]))return 1;for(i=t;;){if((0|i)==(0|e)){i=8;break}if(!(t=0|n[i+32>>2])){t=1,i=10;break}r=i,i=t}if(8==(0|i)){n[r+32>>2]=n[a>>2];break}if(10==(0|i))return 0|t}else n[t>>2]=n[a>>2]}while(0);return Ye(e),n[(a=A+8|0)>>2]=(0|n[a>>2])-1,0}function He(A,e,t){A|=0,e|=0,t|=0;var r,i=0,a=0,s=0;(r=0|Oe(40))||D(27888,27858,98,27901),n[r>>2]=n[e>>2],n[r+4>>2]=n[e+4>>2],n[r+8>>2]=n[e+8>>2],n[r+12>>2]=n[e+12>>2],n[(a=r+16|0)>>2]=n[t>>2],n[a+4>>2]=n[t+4>>2],n[a+8>>2]=n[t+8>>2],n[a+12>>2]=n[t+12>>2],n[r+32>>2]=0,a=~~(+l(+ +u(10,+ +(15-(0|n[A+12>>2])|0))*(+o[e>>3]+ +o[e+8>>3]))%+(0|n[A+4>>2]))>>>0,a=(0|n[A>>2])+(a<<2)|0,i=0|n[a>>2];do{if(i){for(;!(0|oe(i,e)&&0|oe(i+16|0,t));)if(a=0|n[i+32>>2],!(0|n[(i=0|a?a:i)+32>>2])){s=10;break}if(10==(0|s)){n[i+32>>2]=r;break}return Ye(r),0|i}n[a>>2]=r}while(0);return n[(s=A+8|0)>>2]=1+(0|n[s>>2]),0|r}function ze(A,e,t){e|=0,t|=0;var r=0,i=0;if(i=~~(+l(+ +u(10,+ +(15-(0|n[12+(A|=0)>>2])|0))*(+o[e>>3]+ +o[e+8>>3]))%+(0|n[A+4>>2]))>>>0,!(i=0|n[(0|n[A>>2])+(i<<2)>>2]))return 0;if(!t){for(A=i;;){if(0|oe(A,e)){r=10;break}if(!(A=0|n[A+32>>2])){A=0,r=10;break}}if(10==(0|r))return 0|A}for(A=i;;){if(0|oe(A,e)&&0|oe(A+16|0,t)){r=10;break}if(!(A=0|n[A+32>>2])){A=0,r=10;break}}return 10==(0|r)?0|A:0}function Ge(A,e){e|=0;var t=0;if(t=~~(+l(+ +u(10,+ +(15-(0|n[12+(A|=0)>>2])|0))*(+o[e>>3]+ +o[e+8>>3]))%+(0|n[A+4>>2]))>>>0,!(A=0|n[(0|n[A>>2])+(t<<2)>>2]))return 0;for(;;){if(0|oe(A,e)){e=5;break}if(!(A=0|n[A+32>>2])){A=0,e=5;break}}return 5==(0|e)?0|A:0}function Ue(A){return 0|+ct(+(A=+A))}function Oe(A){A|=0;var e,t=0,r=0,o=0,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0;e=P,P=P+16|0,g=e;do{if(A>>>0<245){if(A=(u=A>>>0<11?16:A+11&-8)>>>3,3&(r=(f=0|n[6981])>>>A))return o=0|n[(r=8+(A=27964+((t=(1&r^1)+A|0)<<1<<2)|0)|0)>>2],(0|(a=0|n[(i=o+8|0)>>2]))==(0|A)?n[6981]=f&~(1<>2]=A,n[r>>2]=a),y=t<<3,n[o+4>>2]=3|y,n[(y=o+y+4|0)>>2]=1|n[y>>2],P=e,0|i;if(u>>>0>(d=0|n[6983])>>>0){if(0|r)return t=((t=r<>>=l=t>>>12&16)>>>5&8)|l|(a=(t>>>=r)>>>2&4)|(A=(t>>>=a)>>>1&2)|(o=(t>>>=A)>>>1&1))+(t>>>o)|0)<<1<<2)|0)|0)>>2],(0|(r=0|n[(l=a+8|0)>>2]))==(0|t)?(A=f&~(1<>2]=t,n[A>>2]=r,A=f),s=(y=o<<3)-u|0,n[a+4>>2]=3|u,n[4+(i=a+u|0)>>2]=1|s,n[a+y>>2]=s,0|d&&(o=0|n[6986],r=27964+((t=d>>>3)<<1<<2)|0,A&(t=1<>2]:(n[6981]=A|t,t=r,A=r+8|0),n[A>>2]=o,n[t+12>>2]=o,n[o+8>>2]=t,n[o+12>>2]=r),n[6983]=s,n[6986]=i,P=e,0|l;if(a=0|n[6982]){for(r=(a&0-a)-1|0,r=c=0|n[28228+(((o=(r>>>=i=r>>>12&16)>>>5&8)|i|(s=(r>>>=o)>>>2&4)|(l=(r>>>=s)>>>1&2)|(c=(r>>>=l)>>>1&1))+(r>>>c)<<2)>>2],l=c,c=(-8&n[c+4>>2])-u|0;(A=0|n[r+16>>2])||(A=0|n[r+20>>2]);)r=A,l=(i=(s=(-8&n[A+4>>2])-u|0)>>>0>>0)?A:l,c=i?s:c;if((s=l+u|0)>>>0>l>>>0){i=0|n[l+24>>2],t=0|n[l+12>>2];do{if((0|t)==(0|l)){if(!(t=0|n[(A=l+20|0)>>2])&&!(t=0|n[(A=l+16|0)>>2])){r=0;break}for(;;)if(r=0|n[(o=t+20|0)>>2])t=r,A=o;else{if(!(r=0|n[(o=t+16|0)>>2]))break;t=r,A=o}n[A>>2]=0,r=t}else r=0|n[l+8>>2],n[r+12>>2]=t,n[t+8>>2]=r,r=t}while(0);do{if(0|i){if(t=0|n[l+28>>2],(0|l)==(0|n[(A=28228+(t<<2)|0)>>2])){if(n[A>>2]=r,!r){n[6982]=a&~(1<>2])==(0|l)?y:i+20)>>2]=r,!r)break;n[r+24>>2]=i,0|(t=0|n[l+16>>2])&&(n[r+16>>2]=t,n[t+24>>2]=r),0|(t=0|n[l+20>>2])&&(n[r+20>>2]=t,n[t+24>>2]=r)}}while(0);return c>>>0<16?(y=c+u|0,n[l+4>>2]=3|y,n[(y=l+y+4|0)>>2]=1|n[y>>2]):(n[l+4>>2]=3|u,n[s+4>>2]=1|c,n[s+c>>2]=c,0|d&&(o=0|n[6986],r=27964+((t=d>>>3)<<1<<2)|0,(t=1<>2]:(n[6981]=t|f,t=r,A=r+8|0),n[A>>2]=o,n[t+12>>2]=o,n[o+8>>2]=t,n[o+12>>2]=r),n[6983]=c,n[6986]=s),P=e,0|l+8}f=u}else f=u}else f=u}else if(A>>>0<=4294967231)if(u=-8&(A=A+11|0),o=0|n[6982]){i=0-u|0,c=(A>>>=8)?u>>>0>16777215?31:u>>>(7+(c=14-((l=(520192+(b=A<<(f=(A+1048320|0)>>>16&8))|0)>>>16&4)|f|(c=(245760+(b<<=l)|0)>>>16&2))+(b<>>15)|0)|0)&1|c<<1:0,r=0|n[28228+(c<<2)>>2];A:do{if(r)for(A=0,l=u<<(31==(0|c)?0:25-(c>>>1)|0),a=0;;){if((s=(-8&n[r+4>>2])-u|0)>>>0>>0){if(!s){A=r,i=0,b=65;break A}A=r,i=s}if(a=!(0|(b=0|n[r+20>>2]))|(0|b)==(0|(r=0|n[r+16+(l>>>31<<2)>>2]))?a:b,!r){r=a,b=61;break}l<<=1}else r=0,A=0,b=61}while(0);if(61==(0|b)){if(!(0|r)&!(0|A)){if(!(A=((A=2<>>=s=f>>>12&16)>>>5&8)|s|(l=(f>>>=a)>>>2&4)|(c=(f>>>=l)>>>1&2)|(r=(f>>>=c)>>>1&1))+(f>>>r)<<2)>>2]}r?b=65:(l=A,s=i)}if(65==(0|b))for(a=r;;){if(i=(r=(f=(-8&n[a+4>>2])-u|0)>>>0>>0)?f:i,A=r?a:A,(r=0|n[a+16>>2])||(r=0|n[a+20>>2]),!r){l=A,s=i;break}a=r}if(0|l&&s>>>0<((0|n[6983])-u|0)>>>0&&(d=l+u|0)>>>0>l>>>0){a=0|n[l+24>>2],t=0|n[l+12>>2];do{if((0|t)==(0|l)){if(!(t=0|n[(A=l+20|0)>>2])&&!(t=0|n[(A=l+16|0)>>2])){t=0;break}for(;;)if(r=0|n[(i=t+20|0)>>2])t=r,A=i;else{if(!(r=0|n[(i=t+16|0)>>2]))break;t=r,A=i}n[A>>2]=0}else y=0|n[l+8>>2],n[y+12>>2]=t,n[t+8>>2]=y}while(0);do{if(a){if(A=0|n[l+28>>2],(0|l)==(0|n[(r=28228+(A<<2)|0)>>2])){if(n[r>>2]=t,!t){o&=~(1<>2])==(0|l)?y:a+20)>>2]=t,!t)break;n[t+24>>2]=a,0|(A=0|n[l+16>>2])&&(n[t+16>>2]=A,n[A+24>>2]=t),(A=0|n[l+20>>2])&&(n[t+20>>2]=A,n[A+24>>2]=t)}}while(0);A:do{if(s>>>0<16)y=s+u|0,n[l+4>>2]=3|y,n[(y=l+y+4|0)>>2]=1|n[y>>2];else{if(n[l+4>>2]=3|u,n[d+4>>2]=1|s,n[d+s>>2]=s,t=s>>>3,s>>>0<256){r=27964+(t<<1<<2)|0,(A=0|n[6981])&(t=1<>2]:(n[6981]=A|t,t=r,A=r+8|0),n[A>>2]=d,n[t+12>>2]=d,n[d+8>>2]=t,n[d+12>>2]=r;break}if(t=28228+((r=(t=s>>>8)?s>>>0>16777215?31:s>>>(7+(r=14-((v=(520192+(y=t<<(w=(t+1048320|0)>>>16&8))|0)>>>16&4)|w|(r=(245760+(y<<=v)|0)>>>16&2))+(y<>>15)|0)|0)&1|r<<1:0)<<2)|0,n[d+28>>2]=r,n[4+(A=d+16|0)>>2]=0,n[A>>2]=0,!(o&(A=1<>2]=d,n[d+24>>2]=t,n[d+12>>2]=d,n[d+8>>2]=d;break}t=0|n[t>>2];e:do{if((-8&n[t+4>>2])!=(0|s)){for(o=s<<(31==(0|r)?0:25-(r>>>1)|0);A=0|n[(r=t+16+(o>>>31<<2)|0)>>2];){if((-8&n[A+4>>2])==(0|s)){t=A;break e}o<<=1,t=A}n[r>>2]=d,n[d+24>>2]=t,n[d+12>>2]=d,n[d+8>>2]=d;break A}}while(0);y=0|n[(w=t+8|0)>>2],n[y+12>>2]=d,n[w>>2]=d,n[d+8>>2]=y,n[d+12>>2]=t,n[d+24>>2]=0}}while(0);return P=e,0|l+8}f=u}else f=u;else f=-1}while(0);if((r=0|n[6983])>>>0>=f>>>0)return t=r-f|0,A=0|n[6986],t>>>0>15?(y=A+f|0,n[6986]=y,n[6983]=t,n[y+4>>2]=1|t,n[A+r>>2]=t,n[A+4>>2]=3|f):(n[6983]=0,n[6986]=0,n[A+4>>2]=3|r,n[(y=A+r+4|0)>>2]=1|n[y>>2]),P=e,0|A+8;if((s=0|n[6984])>>>0>f>>>0)return v=s-f|0,n[6984]=v,w=(y=0|n[6987])+f|0,n[6987]=w,n[w+4>>2]=1|v,n[y+4>>2]=3|f,P=e,0|y+8;if(0|n[7099]?A=0|n[7101]:(n[7101]=4096,n[7100]=4096,n[7102]=-1,n[7103]=-1,n[7104]=0,n[7092]=0,n[7099]=-16&g^1431655768,A=4096),l=f+48|0,(u=(a=A+(c=f+47|0)|0)&(i=0-A|0))>>>0<=f>>>0)return P=e,0;if(0|(A=0|n[7091])&&(g=(d=0|n[7089])+u|0)>>>0<=d>>>0|g>>>0>A>>>0)return P=e,0;A:do{if(4&n[7092])t=0,b=143;else{r=0|n[6987];e:do{if(r){for(o=28372;!((g=0|n[o>>2])>>>0<=r>>>0&&(g+(0|n[o+4>>2])|0)>>>0>r>>>0);){if(!(A=0|n[o+8>>2])){b=128;break e}o=A}if((t=a-s&i)>>>0<2147483647)if((0|(A=0|ut(0|t)))==((0|n[o>>2])+(0|n[o+4>>2])|0)){if(-1!=(0|A)){s=t,a=A,b=145;break A}}else o=A,b=136;else t=0}else b=128}while(0);do{if(128==(0|b))if(-1!=(0|(r=0|ut(0)))&&(t=r,m=(t=((m=(h=0|n[7100])-1|0)&t?(m+t&0-h)-t|0:0)+u|0)+(h=0|n[7089])|0,t>>>0>f>>>0&t>>>0<2147483647)){if(0|(g=0|n[7091])&&m>>>0<=h>>>0|m>>>0>g>>>0){t=0;break}if((0|(A=0|ut(0|t)))==(0|r)){s=t,a=r,b=145;break A}o=A,b=136}else t=0}while(0);do{if(136==(0|b)){if(r=0-t|0,!(l>>>0>t>>>0&t>>>0<2147483647&-1!=(0|o))){if(-1==(0|o)){t=0;break}s=t,a=o,b=145;break A}if((A=c-t+(A=0|n[7101])&0-A)>>>0>=2147483647){s=t,a=o,b=145;break A}if(-1==(0|ut(0|A))){ut(0|r),t=0;break}s=A+t|0,a=o,b=145;break A}}while(0);n[7092]=4|n[7092],b=143}}while(0);if(143==(0|b)&&u>>>0<2147483647&&!(-1==(0|(v=0|ut(0|u)))|1^(x=(p=(m=0|ut(0))-v|0)>>>0>(f+40|0)>>>0)|v>>>0>>0&-1!=(0|v)&-1!=(0|m)^1)&&(s=x?p:t,a=v,b=145),145==(0|b)){t=(0|n[7089])+s|0,n[7089]=t,t>>>0>(0|n[7090])>>>0&&(n[7090]=t),c=0|n[6987];A:do{if(c){for(t=28372;;){if((0|a)==((A=0|n[t>>2])+(r=0|n[t+4>>2])|0)){b=154;break}if(!(o=0|n[t+8>>2]))break;t=o}if(!(154!=(0|b)||(w=t+4|0,8&n[t+12>>2]))&&a>>>0>c>>>0&A>>>0<=c>>>0){n[w>>2]=r+s,w=c+(v=7&(v=c+8|0)?0-v&7:0)|0,v=(y=(0|n[6984])+s|0)-v|0,n[6987]=w,n[6984]=v,n[w+4>>2]=1|v,n[c+y+4>>2]=40,n[6988]=n[7103];break}for(a>>>0<(0|n[6985])>>>0&&(n[6985]=a),r=a+s|0,t=28372;;){if((0|n[t>>2])==(0|r)){b=162;break}if(!(A=0|n[t+8>>2]))break;t=A}if(162==(0|b)&&!(8&n[t+12>>2])){n[t>>2]=a,n[(d=t+4|0)>>2]=(0|n[d>>2])+s,u=(d=a+(7&(d=a+8|0)?0-d&7:0)|0)+f|0,l=(t=r+(7&(t=r+8|0)?0-t&7:0)|0)-d-f|0,n[d+4>>2]=3|f;e:do{if((0|c)==(0|t))y=(0|n[6984])+l|0,n[6984]=y,n[6987]=u,n[u+4>>2]=1|y;else{if((0|n[6986])==(0|t)){y=(0|n[6983])+l|0,n[6983]=y,n[6986]=u,n[u+4>>2]=1|y,n[u+y>>2]=y;break}if(1==(3&(A=0|n[t+4>>2]))){s=-8&A,o=A>>>3;t:do{if(A>>>0<256){if(A=0|n[t+8>>2],(0|(r=0|n[t+12>>2]))==(0|A)){n[6981]=n[6981]&~(1<>2]=r,n[r+8>>2]=A;break}a=0|n[t+24>>2],A=0|n[t+12>>2];do{if((0|A)==(0|t)){if(A=0|n[(o=4+(r=t+16|0)|0)>>2])r=o;else if(!(A=0|n[r>>2])){A=0;break}for(;;)if(o=0|n[(i=A+20|0)>>2])A=o,r=i;else{if(!(o=0|n[(i=A+16|0)>>2]))break;A=o,r=i}n[r>>2]=0}else y=0|n[t+8>>2],n[y+12>>2]=A,n[A+8>>2]=y}while(0);if(!a)break;o=28228+((r=0|n[t+28>>2])<<2)|0;do{if((0|n[o>>2])==(0|t)){if(n[o>>2]=A,0|A)break;n[6982]=n[6982]&~(1<>2])==(0|t)?y:a+20)>>2]=A,!A)break t}while(0);if(n[A+24>>2]=a,0|(o=0|n[(r=t+16|0)>>2])&&(n[A+16>>2]=o,n[o+24>>2]=A),!(r=0|n[r+4>>2]))break;n[A+20>>2]=r,n[r+24>>2]=A}while(0);t=t+s|0,i=s+l|0}else i=l;if(n[(t=t+4|0)>>2]=-2&n[t>>2],n[u+4>>2]=1|i,n[u+i>>2]=i,t=i>>>3,i>>>0<256){r=27964+(t<<1<<2)|0,(A=0|n[6981])&(t=1<>2]:(n[6981]=A|t,t=r,A=r+8|0),n[A>>2]=u,n[t+12>>2]=u,n[u+8>>2]=t,n[u+12>>2]=r;break}t=i>>>8;do{if(t){if(i>>>0>16777215){o=31;break}o=i>>>(7+(o=14-((v=(520192+(y=t<<(w=(t+1048320|0)>>>16&8))|0)>>>16&4)|w|(o=(245760+(y<<=v)|0)>>>16&2))+(y<>>15)|0)|0)&1|o<<1}else o=0}while(0);if(t=28228+(o<<2)|0,n[u+28>>2]=o,n[4+(A=u+16|0)>>2]=0,n[A>>2]=0,!((A=0|n[6982])&(r=1<>2]=u,n[u+24>>2]=t,n[u+12>>2]=u,n[u+8>>2]=u;break}t=0|n[t>>2];t:do{if((-8&n[t+4>>2])!=(0|i)){for(o=i<<(31==(0|o)?0:25-(o>>>1)|0);A=0|n[(r=t+16+(o>>>31<<2)|0)>>2];){if((-8&n[A+4>>2])==(0|i)){t=A;break t}o<<=1,t=A}n[r>>2]=u,n[u+24>>2]=t,n[u+12>>2]=u,n[u+8>>2]=u;break e}}while(0);y=0|n[(w=t+8|0)>>2],n[y+12>>2]=u,n[w>>2]=u,n[u+8>>2]=y,n[u+12>>2]=t,n[u+24>>2]=0}}while(0);return P=e,0|d+8}for(t=28372;!((A=0|n[t>>2])>>>0<=c>>>0&&(y=A+(0|n[t+4>>2])|0)>>>0>c>>>0);)t=0|n[t+8>>2];t=(A=(A=(i=y+-47|0)+(7&(A=i+8|0)?0-A&7:0)|0)>>>0<(i=c+16|0)>>>0?c:A)+8|0,w=a+(v=7&(v=a+8|0)?0-v&7:0)|0,v=(r=s+-40|0)-v|0,n[6987]=w,n[6984]=v,n[w+4>>2]=1|v,n[a+r+4>>2]=40,n[6988]=n[7103],n[(r=A+4|0)>>2]=27,n[t>>2]=n[7093],n[t+4>>2]=n[7094],n[t+8>>2]=n[7095],n[t+12>>2]=n[7096],n[7093]=a,n[7094]=s,n[7096]=0,n[7095]=t,t=A+24|0;do{w=t,n[(t=t+4|0)>>2]=7}while((w+8|0)>>>0>>0);if((0|A)!=(0|c)){if(a=A-c|0,n[r>>2]=-2&n[r>>2],n[c+4>>2]=1|a,n[A>>2]=a,t=a>>>3,a>>>0<256){r=27964+(t<<1<<2)|0,(A=0|n[6981])&(t=1<>2]:(n[6981]=A|t,t=r,A=r+8|0),n[A>>2]=c,n[t+12>>2]=c,n[c+8>>2]=t,n[c+12>>2]=r;break}if(r=28228+((o=(t=a>>>8)?a>>>0>16777215?31:a>>>(7+(o=14-((v=(520192+(y=t<<(w=(t+1048320|0)>>>16&8))|0)>>>16&4)|w|(o=(245760+(y<<=v)|0)>>>16&2))+(y<>>15)|0)|0)&1|o<<1:0)<<2)|0,n[c+28>>2]=o,n[c+20>>2]=0,n[i>>2]=0,!((t=0|n[6982])&(A=1<>2]=c,n[c+24>>2]=r,n[c+12>>2]=c,n[c+8>>2]=c;break}t=0|n[r>>2];e:do{if((-8&n[t+4>>2])!=(0|a)){for(o=a<<(31==(0|o)?0:25-(o>>>1)|0);A=0|n[(r=t+16+(o>>>31<<2)|0)>>2];){if((-8&n[A+4>>2])==(0|a)){t=A;break e}o<<=1,t=A}n[r>>2]=c,n[c+24>>2]=t,n[c+12>>2]=c,n[c+8>>2]=c;break A}}while(0);y=0|n[(w=t+8|0)>>2],n[y+12>>2]=c,n[w>>2]=c,n[c+8>>2]=y,n[c+12>>2]=t,n[c+24>>2]=0}}else!(0|(y=0|n[6985]))|a>>>0>>0&&(n[6985]=a),n[7093]=a,n[7094]=s,n[7096]=0,n[6990]=n[7099],n[6989]=-1,n[6994]=27964,n[6993]=27964,n[6996]=27972,n[6995]=27972,n[6998]=27980,n[6997]=27980,n[7e3]=27988,n[6999]=27988,n[7002]=27996,n[7001]=27996,n[7004]=28004,n[7003]=28004,n[7006]=28012,n[7005]=28012,n[7008]=28020,n[7007]=28020,n[7010]=28028,n[7009]=28028,n[7012]=28036,n[7011]=28036,n[7014]=28044,n[7013]=28044,n[7016]=28052,n[7015]=28052,n[7018]=28060,n[7017]=28060,n[7020]=28068,n[7019]=28068,n[7022]=28076,n[7021]=28076,n[7024]=28084,n[7023]=28084,n[7026]=28092,n[7025]=28092,n[7028]=28100,n[7027]=28100,n[7030]=28108,n[7029]=28108,n[7032]=28116,n[7031]=28116,n[7034]=28124,n[7033]=28124,n[7036]=28132,n[7035]=28132,n[7038]=28140,n[7037]=28140,n[7040]=28148,n[7039]=28148,n[7042]=28156,n[7041]=28156,n[7044]=28164,n[7043]=28164,n[7046]=28172,n[7045]=28172,n[7048]=28180,n[7047]=28180,n[7050]=28188,n[7049]=28188,n[7052]=28196,n[7051]=28196,n[7054]=28204,n[7053]=28204,n[7056]=28212,n[7055]=28212,w=a+(v=7&(v=a+8|0)?0-v&7:0)|0,v=(y=s+-40|0)-v|0,n[6987]=w,n[6984]=v,n[w+4>>2]=1|v,n[a+y+4>>2]=40,n[6988]=n[7103]}while(0);if((t=0|n[6984])>>>0>f>>>0)return v=t-f|0,n[6984]=v,w=(y=0|n[6987])+f|0,n[6987]=w,n[w+4>>2]=1|v,n[y+4>>2]=3|f,P=e,0|y+8}return n[(y=27920)>>2]=12,P=e,0}function Ye(A){var e=0,t=0,r=0,o=0,i=0,a=0,s=0,l=0;if(A|=0){t=A+-8|0,o=0|n[6985],l=t+(e=-8&(A=0|n[A+-4>>2]))|0;do{if(1&A)s=t,a=t;else{if(r=0|n[t>>2],!(3&A))return;if(i=r+e|0,(a=t+(0-r)|0)>>>0>>0)return;if((0|n[6986])==(0|a)){if(3&~(e=0|n[(A=l+4|0)>>2])){s=a,e=i;break}return n[6983]=i,n[A>>2]=-2&e,n[a+4>>2]=1|i,void(n[a+i>>2]=i)}if(t=r>>>3,r>>>0<256){if(A=0|n[a+8>>2],(0|(e=0|n[a+12>>2]))==(0|A)){n[6981]=n[6981]&~(1<>2]=e,n[e+8>>2]=A,s=a,e=i;break}o=0|n[a+24>>2],A=0|n[a+12>>2];do{if((0|A)==(0|a)){if(A=0|n[(t=4+(e=a+16|0)|0)>>2])e=t;else if(!(A=0|n[e>>2])){A=0;break}for(;;)if(t=0|n[(r=A+20|0)>>2])A=t,e=r;else{if(!(t=0|n[(r=A+16|0)>>2]))break;A=t,e=r}n[e>>2]=0}else s=0|n[a+8>>2],n[s+12>>2]=A,n[A+8>>2]=s}while(0);if(o){if(e=0|n[a+28>>2],(0|n[(t=28228+(e<<2)|0)>>2])==(0|a)){if(n[t>>2]=A,!A){n[6982]=n[6982]&~(1<>2])==(0|a)?s:o+20)>>2]=A,!A){s=a,e=i;break}n[A+24>>2]=o,0|(t=0|n[(e=a+16|0)>>2])&&(n[A+16>>2]=t,n[t+24>>2]=A),(e=0|n[e+4>>2])?(n[A+20>>2]=e,n[e+24>>2]=A,s=a,e=i):(s=a,e=i)}else s=a,e=i}}while(0);if(!(a>>>0>=l>>>0)&&1&(r=0|n[(A=l+4|0)>>2])){if(2&r)n[A>>2]=-2&r,n[s+4>>2]=1|e,n[a+e>>2]=e,o=e;else{if((0|n[6987])==(0|l)){if(l=(0|n[6984])+e|0,n[6984]=l,n[6987]=s,n[s+4>>2]=1|l,(0|s)!=(0|n[6986]))return;return n[6986]=0,void(n[6983]=0)}if((0|n[6986])==(0|l))return l=(0|n[6983])+e|0,n[6983]=l,n[6986]=a,n[s+4>>2]=1|l,void(n[a+l>>2]=l);o=(-8&r)+e|0,t=r>>>3;do{if(r>>>0<256){if(e=0|n[l+8>>2],(0|(A=0|n[l+12>>2]))==(0|e)){n[6981]=n[6981]&~(1<>2]=A,n[A+8>>2]=e;break}i=0|n[l+24>>2],A=0|n[l+12>>2];do{if((0|A)==(0|l)){if(A=0|n[(t=4+(e=l+16|0)|0)>>2])e=t;else if(!(A=0|n[e>>2])){t=0;break}for(;;)if(t=0|n[(r=A+20|0)>>2])A=t,e=r;else{if(!(t=0|n[(r=A+16|0)>>2]))break;A=t,e=r}n[e>>2]=0,t=A}else t=0|n[l+8>>2],n[t+12>>2]=A,n[A+8>>2]=t,t=A}while(0);if(0|i){if(A=0|n[l+28>>2],(0|n[(e=28228+(A<<2)|0)>>2])==(0|l)){if(n[e>>2]=t,!t){n[6982]=n[6982]&~(1<>2])==(0|l)?r:i+20)>>2]=t,!t)break;n[t+24>>2]=i,0|(e=0|n[(A=l+16|0)>>2])&&(n[t+16>>2]=e,n[e+24>>2]=t),0|(A=0|n[A+4>>2])&&(n[t+20>>2]=A,n[A+24>>2]=t)}}while(0);if(n[s+4>>2]=1|o,n[a+o>>2]=o,(0|s)==(0|n[6986]))return void(n[6983]=o)}if(A=o>>>3,o>>>0<256)return t=27964+(A<<1<<2)|0,(e=0|n[6981])&(A=1<>2]:(n[6981]=e|A,A=t,e=t+8|0),n[e>>2]=s,n[A+12>>2]=s,n[s+8>>2]=A,void(n[s+12>>2]=t);A=28228+((r=(A=o>>>8)?o>>>0>16777215?31:o>>>(7+(r=14-((i=(520192+(l=A<<(a=(A+1048320|0)>>>16&8))|0)>>>16&4)|a|(r=(245760+(l<<=i)|0)>>>16&2))+(l<>>15)|0)|0)&1|r<<1:0)<<2)|0,n[s+28>>2]=r,n[s+20>>2]=0,n[s+16>>2]=0,e=0|n[6982],t=1<>2];e:do{if((-8&n[A+4>>2])!=(0|o)){for(r=o<<(31==(0|r)?0:25-(r>>>1)|0);e=0|n[(t=A+16+(r>>>31<<2)|0)>>2];){if((-8&n[e+4>>2])==(0|o)){A=e;break e}r<<=1,A=e}n[t>>2]=s,n[s+24>>2]=A,n[s+12>>2]=s,n[s+8>>2]=s;break A}}while(0);l=0|n[(a=A+8|0)>>2],n[l+12>>2]=s,n[a>>2]=s,n[s+8>>2]=l,n[s+12>>2]=A,n[s+24>>2]=0}else n[6982]=e|t,n[A>>2]=s,n[s+24>>2]=A,n[s+12>>2]=s,n[s+8>>2]=s}while(0);if(l=(0|n[6989])-1|0,n[6989]=l,!(0|l)){for(A=28380;A=0|n[A>>2];)A=A+8|0;n[6989]=-1}}}}function Ve(A,e){e|=0;var t=0;return(A|=0)?(t=0|v(e,A),(e|A)>>>0>65535&&(t=((t>>>0)/(A>>>0)|0)==(0|e)?t:-1)):t=0,(A=0|Oe(t))&&3&n[A+-4>>2]?(lt(0|A,0,0|t),0|A):0|A}function We(A,e,t,r){return 0|(C((e|=0)+(r|=0)+((t=(A|=0)+(t|=0)>>>0)>>>0>>0|0)>>>0|0),t)}function Ze(A,e,t,r){return 0|(C(0|(r=(e|=0)-(r|=0)-((t|=0)>>>0>(A|=0)>>>0|0)>>>0)),A-t>>>0)}function Ke(A){return 0|((A|=0)?31-(0|k(A^A-1)):32)}function Je(A,e,t,r,o){o|=0;var i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0;if(u=A|=0,a=t|=0,s=f=r|=0,!(c=l=e|=0))return i=!!(0|o),s?i?(n[o>>2]=0|A,n[o+4>>2]=0&e,o=0,0|(C(0|(f=0)),o)):(o=0,0|(C(0|(f=0)),o)):(i&&(n[o>>2]=(u>>>0)%(a>>>0),n[o+4>>2]=0),o=(u>>>0)/(a>>>0)>>>0,0|(C(0|(f=0)),o));i=!(0|s);do{if(a){if(!i){if((i=(0|k(0|s))-(0|k(0|c))|0)>>>0<=31){a=d=i+1|0,A=u>>>(d>>>0)&(e=i-31>>31)|c<<(s=31-i|0),e&=c>>>(d>>>0),i=0,s=u<>2]=0|A,n[o+4>>2]=l|0&e,o=0,0|(C(0|(f=0)),o)):(o=0,0|(C(0|(f=0)),o))}if((i=a-1|0)&a){a=s=33+(0|k(0|a))-(0|k(0|c))|0,A=(d=32-s|0)-1>>31&c>>>((g=s-32|0)>>>0)|(c<>>(s>>>0))&(e=g>>31),e&=c>>>(s>>>0),i=u<<(h=64-s|0)&(l=d>>31),s=(c<>>(g>>>0))&l|u<>31;break}return 0|o&&(n[o>>2]=i&u,n[o+4>>2]=0),1==(0|a)?(h=0|A,0|(C(0|(g=l|0&e)),h)):(g=c>>>((h=0|Ke(0|a))>>>0)|0,h=c<<32-h|u>>>(h>>>0),0|(C(0|g),h))}if(i)return 0|o&&(n[o>>2]=(c>>>0)%(a>>>0),n[o+4>>2]=0),h=(c>>>0)/(a>>>0)>>>0,0|(C(0|(g=0)),h);if(!u)return 0|o&&(n[o>>2]=0,n[o+4>>2]=(c>>>0)%(s>>>0)),h=(c>>>0)/(s>>>0)>>>0,0|(C(0|(g=0)),h);if(!((i=s-1|0)&s))return 0|o&&(n[o>>2]=0|A,n[o+4>>2]=i&c|0&e),g=0,h=c>>>((0|Ke(0|s))>>>0),0|(C(0|g),h);if((i=(0|k(0|s))-(0|k(0|c))|0)>>>0<=30){a=e=i+1|0,A=c<<(s=31-i|0)|u>>>(e>>>0),e=c>>>(e>>>0),i=0,s=u<>2]=0|A,n[o+4>>2]=l|0&e,h=0,0|(C(0|(g=0)),h)):(h=0,0|(C(0|(g=0)),h))}while(0);if(a){c=0|We(0|(d=0|t),0|(u=f|0&r),-1,-1),t=0|B(),l=s,s=0;do{r=l,l=i>>>31|l<<1,i=s|i<<1,Ze(0|c,0|t,0|(r=A<<1|r>>>31),0|(f=A>>>31|e<<1)),s=1&(g=(h=0|B())>>31|((0|h)<0?-1:0)<<1),A=0|Ze(0|r,0|f,g&d|0,(((0|h)<0?-1:0)>>31|((0|h)<0?-1:0)<<1)&u),e=0|B(),a=a-1|0}while(0|a);c=l,l=0}else c=s,l=0,s=0;return a=0,0|o&&(n[o>>2]=A,n[o+4>>2]=e),h=i<<1&-2|s,0|(C(0|(g=(0|i)>>>31|(c|a)<<1|l)),h)}function Xe(A,e,t,r){var n,o,i,a,s;return t|=0,o=(r|=0)>>31|((0|r)<0?-1:0)<<1,n=((0|r)<0?-1:0)>>31|((0|r)<0?-1:0)<<1,i=0|Ze((s=(e|=0)>>31|((0|e)<0?-1:0)<<1)^(A|=0),(a=((0|e)<0?-1:0)>>31|((0|e)<0?-1:0)<<1)^e,0|s,0|a),A=o^s,e=n^a,0|Ze((0|Je(i,0|B(),0|Ze(o^t|0,n^r|0,0|o,0|n),0|B(),0))^A,(0|B())^e,0|A,0|e)}function qe(A,e,t,r){var n,o;return e|=0,r|=0,t=0|function(A,e){var t,r,n,o=0;return A=((t=0|v(o=65535&(e|=0),n=65535&(A|=0)))>>>16)+(0|v(o,r=A>>>16))|0,e=0|v(o=e>>>16,n),0|(C((A>>>16)+(0|v(o,r))+(((65535&A)+e|0)>>>16)|0),A+e<<16|65535&t)}(n=A|=0,o=t|=0),A=0|B(),0|(C((0|v(e,o))+(0|v(r,n))+A|0&A),t)}function $e(A,e,t,r){var o,i,a,s,l,c;return t|=0,o=P,P=P+16|0,s=0|o,c=(r|=0)>>31|((0|r)<0?-1:0)<<1,l=((0|r)<0?-1:0)>>31|((0|r)<0?-1:0)<<1,Je(A=0|Ze((a=(e|=0)>>31|((0|e)<0?-1:0)<<1)^(A|=0),(i=((0|e)<0?-1:0)>>31|((0|e)<0?-1:0)<<1)^e,0|a,0|i),e=0|B(),0|Ze(c^t|0,l^r|0,0|c,0|l),0|B(),s),r=0|Ze(n[s>>2]^a|0,n[s+4>>2]^i|0,0|a,0|i),t=0|B(),P=o,0|(C(0|t),r)}function At(A,e,t,r){var o,i;return i=P,P=P+16|0,Je(A|=0,e|=0,t|=0,r|=0,o=0|i),P=i,0|(C(0|n[o+4>>2]),n[o>>2])}function et(A,e,t){return A|=0,e|=0,(0|(t|=0))<32?(C(e>>t|0),A>>>t|(e&(1<>t-32)}function tt(A,e,t){return A|=0,e|=0,(0|(t|=0))<32?(C(e>>>t|0),A>>>t|(e&(1<>>t-32|0)}function rt(A,e,t){return A|=0,(0|(t|=0))<32?(C((e|=0)<>>32-t),A<=0?+s(A+.5):+x(A-.5)}function st(A,e,t){A|=0,e|=0;var o,i,a=0;if((0|(t|=0))>=8192)return Q(0|A,0|e,0|t),0|A;if(i=0|A,o=A+t|0,(3&A)==(3&e)){for(;3&A;){if(!t)return 0|i;r[0|A]=0|r[0|e],A=A+1|0,e=e+1|0,t=t-1|0}for(a=(t=-4&o)-64|0;(0|A)<=(0|a);)n[A>>2]=n[e>>2],n[A+4>>2]=n[e+4>>2],n[A+8>>2]=n[e+8>>2],n[A+12>>2]=n[e+12>>2],n[A+16>>2]=n[e+16>>2],n[A+20>>2]=n[e+20>>2],n[A+24>>2]=n[e+24>>2],n[A+28>>2]=n[e+28>>2],n[A+32>>2]=n[e+32>>2],n[A+36>>2]=n[e+36>>2],n[A+40>>2]=n[e+40>>2],n[A+44>>2]=n[e+44>>2],n[A+48>>2]=n[e+48>>2],n[A+52>>2]=n[e+52>>2],n[A+56>>2]=n[e+56>>2],n[A+60>>2]=n[e+60>>2],A=A+64|0,e=e+64|0;for(;(0|A)<(0|t);)n[A>>2]=n[e>>2],A=A+4|0,e=e+4|0}else for(t=o-4|0;(0|A)<(0|t);)r[0|A]=0|r[0|e],r[A+1|0]=0|r[e+1|0],r[A+2|0]=0|r[e+2|0],r[A+3|0]=0|r[e+3|0],A=A+4|0,e=e+4|0;for(;(0|A)<(0|o);)r[0|A]=0|r[0|e],A=A+1|0,e=e+1|0;return 0|i}function lt(A,e,t){e|=0;var o,i=0,a=0,s=0;if(o=(A|=0)+(t|=0)|0,e&=255,(0|t)>=67){for(;3&A;)r[0|A]=e,A=A+1|0;for(s=e|e<<8|e<<16|e<<24,a=(i=-4&o)-64|0;(0|A)<=(0|a);)n[A>>2]=s,n[A+4>>2]=s,n[A+8>>2]=s,n[A+12>>2]=s,n[A+16>>2]=s,n[A+20>>2]=s,n[A+24>>2]=s,n[A+28>>2]=s,n[A+32>>2]=s,n[A+36>>2]=s,n[A+40>>2]=s,n[A+44>>2]=s,n[A+48>>2]=s,n[A+52>>2]=s,n[A+56>>2]=s,n[A+60>>2]=s,A=A+64|0;for(;(0|A)<(0|i);)n[A>>2]=s,A=A+4|0}for(;(0|A)<(0|o);)r[0|A]=e,A=A+1|0;return o-t|0}function ct(A){return(A=+A)>=0?+s(A+.5):+x(A-.5)}function ut(A){var e,t,r;return A|=0,r=0|E(),(0|A)>0&(0|(e=(t=0|n[a>>2])+A|0))<(0|t)|(0|e)<0?(j(0|e),M(12),-1):(0|e)>(0|r)&&!(0|N(0|e))?(M(12),-1):(n[a>>2]=e,0|t)}return{___divdi3:Xe,___muldi3:qe,___remdi3:$e,___uremdi3:At,_areNeighborCells:function(A,e,t,r,o){o|=0;var i,a,s,l=0,c=0,u=0,d=0;if(s=P,P=P+64|0,a=s,i=s+56|0,!(!0&134217728==(2013265920&(e|=0))&!0&134217728==(2013265920&(r|=0))))return P=s,5;if((0|(A|=0))==(0|(t|=0))&(0|e)==(0|r))return n[o>>2]=0,P=s,0;if(c=0|tt(0|A,0|e,52),B(),c&=15,d=0|tt(0|t,0|r,52),B(),(0|c)!=(15&d))return P=s,12;if(l=c+-1|0,c>>>0>1){RA(A,e,l,a),RA(t,r,l,i),u=0|n[(d=a)>>2],d=0|n[d+4>>2];A:do{if((0|u)==(0|n[i>>2])&&(0|d)==(0|n[i+4>>2])){l=0|tt(0|A,0|e,0|(c=3*(15^c)|0)),B(),l&=7,c=0|tt(0|t,0|r,0|c),B(),c&=7;do{if(!(0|l)|!(0|c))n[o>>2]=1,l=0;else if(7==(0|l))l=5;else{if(1==(0|l)|1==(0|c)&&0|HA(u,d)){l=5;break}if((0|n[15536+(l<<2)>>2])!=(0|c)&&(0|n[15568+(l<<2)>>2])!=(0|c))break A;n[o>>2]=1,l=0}}while(0);return P=s,0|l}}while(0)}c=(l=a)+56|0;do{n[l>>2]=0,l=l+4|0}while((0|l)<(0|c));return S(A,e,1,a),l=(0|n[(e=a)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+8|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+16|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+24|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+32|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)||(0|n[(e=a+40|0)>>2])==(0|t)&&(0|n[e+4>>2])==(0|r)?1:1&((0|n[(l=a+48|0)>>2])==(0|t)?(0|n[l+4>>2])==(0|r):0),n[o>>2]=l,P=s,0},_bitshift64Ashr:et,_bitshift64Lshr:tt,_bitshift64Shl:rt,_calloc:Ve,_cellAreaKm2:function(A,e,t){return 0|(A=0|ue(A|=0,e|=0,t|=0))||(o[t>>3]=6371.007180918475*+o[t>>3]*6371.007180918475),0|A},_cellAreaM2:function(A,e,t){return 0|(A=0|ue(A|=0,e|=0,t|=0))||(o[t>>3]=6371.007180918475*+o[t>>3]*6371.007180918475*1e3*1e3),0|A},_cellAreaRads2:ue,_cellToBoundary:$A,_cellToCenterChild:GA,_cellToChildPos:function(A,e,t,r){t|=0,r|=0;var o,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0;if(o=P,P=P+16|0,p=o,x=0|tt(0|(A|=0),0|(e|=0),52),B(),t>>>0>15)return P=o,4;if((0|(x&=15))<(0|t))return P=o,12;if((0|x)!=(0|t))if(a=0|rt(0|t,0,52),a|=A,l=B()|-15728641&e,(0|x)>(0|t)){c=t;do{b=0|rt(7,0,3*(14-c|0)|0),c=c+1|0,a|=b,l=0|B()|l}while((0|c)<(0|x));b=a}else b=a;else b=A,l=e;m=0|tt(0|b,0|l,45),B();A:do{if(0|z(127&m)){if(c=0|tt(0|b,0|l,52),B(),0|(c&=15))for(a=1;;){if(!(!((m=0|rt(7,0,3*(15-a|0)|0))&b)&!((0|B())&l))){u=33;break A}if(!(a>>>0>>0))break;a=a+1|0}if(n[(m=r)>>2]=0,n[m+4>>2]=0,(0|x)>(0|t)){for(m=-15728641&e,h=x;;){if(g=h,(h=h+-1|0)>>>0>15|(0|x)<(0|h)){u=19;break}if((0|x)!=(0|h))if(a=0|rt(0|h,0,52),a|=A,c=0|B()|m,(0|x)<(0|g))f=a;else{u=h;do{f=0|rt(7,0,3*(14-u|0)|0),u=u+1|0,a|=f,c=0|B()|c}while((0|u)<(0|x));f=a}else f=A,c=e;if(d=0|tt(0|f,0|c,45),B(),0|z(127&d)){d=0|tt(0|f,0|c,52),B(),d&=15;e:do{if(d)for(u=1;;){if(a=0|tt(0|f,0|c,3*(15-u|0)|0),B(),0|(a&=7))break e;if(!(u>>>0>>0)){a=0;break}u=u+1|0}else a=0}while(0);a=1&!(0|a)}else a=0;if(c=0|tt(0|A,0|e,3*(15-g|0)|0),B(),7==(0|(c&=7))){i=5,u=42;break}if(1==(0|c)&(a=!!(0|a))){i=5,u=42;break}if(0|(f=c+((!!(0|c)&a)<<31>>31)|0)&&(u=0|pe(7,0,u=x-g|0,((0|u)<0)<<31>>31),d=0|B(),a?(a=0|We(0|(a=0|qe(0|u,0|d,5,0)),0|B(),-5,-1),a=0|We(0|(a=0|Xe(0|a,0|B(),6,0)),0|B(),1,0),c=0|B()):(a=u,c=d),g=0|We(0|a,0|c,0|(g=0|qe(0|u,0|d,0|(g=f+-1|0),((0|g)<0)<<31>>31)),0|B()),d=0|We(0|g,0|(f=0|B()),0|n[(d=r)>>2],0|n[d+4>>2]),f=0|B(),n[(g=r)>>2]=d,n[g+4>>2]=f),(0|h)<=(0|t)){u=37;break}}if(19==(0|u))D(27795,27122,1367,27158);else{if(37==(0|u)){i=0|n[(s=r)+4>>2],s=0|n[s>>2];break}if(42==(0|u))return P=o,0|i}}else i=0,s=0}else u=33}while(0);A:do{if(33==(0|u)){if(n[(m=r)>>2]=0,n[m+4>>2]=0,(0|x)>(0|t)){for(a=x;;){if(i=0|tt(0|A,0|e,3*(15-a|0)|0),B(),7==(0|(i&=7))){i=5;break}if(i=0|qe(0|(s=0|pe(7,0,s=x-a|0,((0|s)<0)<<31>>31)),0|B(),0|i,0),s=0|B(),s=0|We(0|n[(m=r)>>2],0|n[m+4>>2],0|i,0|s),i=0|B(),n[(m=r)>>2]=s,n[m+4>>2]=i,(0|(a=a+-1|0))<=(0|t))break A}return P=o,0|i}i=0,s=0}}while(0);return 0|_A(b,l,x,p)&&D(27795,27122,1327,27173),((0|i)>-1|-1==(0|i)&s>>>0>4294967295)&((0|(p=0|n[(x=p)+4>>2]))>(0|i)|((0|p)==(0|i)?(0|n[x>>2])>>>0>s>>>0:0))?(P=o,0|(x=0)):(D(27795,27122,1407,27158),0)},_cellToChildren:function(A,e,t,r){r|=0;var o,i,a=0,s=0;if(i=P,P=P+16|0,ee(o=i,A|=0,e|=0,t|=0),!(0|(A=0|n[(e=o)>>2]))&!(0|(e=0|n[e+4>>2])))return P=i,0;a=0,t=0;do{n[(s=r+(a<<3)|0)>>2]=A,n[s+4>>2]=e,a=0|We(0|a,0|t,1,0),t=0|B(),re(o),A=0|n[(s=o)>>2],e=0|n[s+4>>2]}while(!(!(0|A)&!(0|e)));return P=i,0},_cellToChildrenSize:_A,_cellToLatLng:qA,_cellToLocalIj:function(A,e,t,r,o,i){var a,s;return A|=0,i|=0,s=P,P=P+16|0,a=s,(o|=0)?A=15:(A=0|me(A,e|=0,t|=0,r|=0,a))||(function(A,e){var t;e|=0,t=0|n[8+(A|=0)>>2],n[e>>2]=(0|n[A>>2])-t,n[e+4>>2]=(0|n[A+4>>2])-t}(a,i),A=0),P=s,0|A},_cellToParent:RA,_cellToVertex:Fe,_cellToVertexes:function(A,e,t){t|=0;var r,o=0,i=0;return i=!(0|HA(A|=0,e|=0)),r=!(0|(o=0|Fe(A,e,0,t))),i?r?0|(o=0|Fe(A,e,1,t+8|0))||0|(o=0|Fe(A,e,2,t+16|0))||0|(o=0|Fe(A,e,3,t+24|0))||(o=0|Fe(A,e,4,t+32|0))?0|(i=o):0|Fe(A,e,5,t+40|0):0|(i=o):r?0|(o=0|Fe(A,e,1,t+8|0))||0|(o=0|Fe(A,e,2,t+16|0))||0|(o=0|Fe(A,e,3,t+24|0))||0|(o=0|Fe(A,e,4,t+32|0))?0|(i=o):(n[(i=t+40|0)>>2]=0,n[i+4>>2]=0,0|(i=0)):0|(i=o)},_cellsToDirectedEdge:function(A,e,t,r,o){return o|=0,7==(0|(t=0|_(A|=0,e|=0,t|=0,r|=0)))?0|(o=11):(r=0|rt(0|t,0,56),e=-2130706433&e|B()|268435456,n[o>>2]=A|r,n[o+4>>2]=e,0|(o=0))},_cellsToLinkedMultiPolygon:function(A,e,t){t|=0;var r,i,a,s=0;if(a=P,P=P+32|0,r=a,0|(A=0|function(A,e,t){A|=0,t|=0;var r,o,i=0,a=0,s=0,l=0,c=0,u=0;if(o=P,P=P+176|0,r=o,(0|(e|=0))<1)return Ie(t,0,0),P=o,0;for(c=0|tt(0|n[(c=A)>>2],0|n[c+4>>2],52),B(),Ie(t,(0|e)>6?e:6,15&c),c=0;!(0|(i=0|$A(0|n[(i=A+(c<<3)|0)>>2],0|n[i+4>>2],r)));){if((0|(i=0|n[r>>2]))>0){l=0;do{s=r+8+(l<<4)|0,(a=0|ze(t,i=r+8+((0|(l=l+1|0))%(0|i)<<4)|0,s))?_e(t,a):He(t,s,i),i=0|n[r>>2]}while((0|l)<(0|i))}if((0|(c=c+1|0))>=(0|e)){i=0,u=13;break}}return 13==(0|u)?(P=o,0|i):(Le(t),P=o,0|(u=i))}(A|=0,e|=0,i=a+16|0)))return P=a,0|A;if(n[t>>2]=0,n[t+4>>2]=0,n[t+8>>2]=0,0|(A=0|Re(i)))do{e=0|de(t);do{fe(e,A),s=A+16|0,n[r>>2]=n[s>>2],n[r+4>>2]=n[s+4>>2],n[r+8>>2]=n[s+8>>2],n[r+12>>2]=n[s+12>>2],_e(i,A),A=0|Ge(i,r)}while(0|A);A=0|Re(i)}while(0|A);return Le(i),(A=0|function(A){var e,t,r=0,i=0,a=0,s=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,B=0,M=0,E=0,Q=0,N=0,j=0,P=0,S=0,F=0,T=0,I=0;if(0|n[(s=(A|=0)+8|0)>>2])return 1;if(!(a=0|n[A>>2]))return 0;r=a,i=0;do{i=i+1|0,r=0|n[r+8>>2]}while(0|r);if(i>>>0<2)return 0;(t=0|Oe(i<<2))||D(27396,27235,317,27415),(e=0|Oe(i<<5))||D(27437,27235,321,27415),n[A>>2]=0,n[(E=A+4|0)>>2]=0,n[s>>2]=0,i=0,F=0,M=0,m=0;A:for(;;){if(h=0|n[a>>2]){c=0,u=h;do{if(f=+o[u+8>>3],r=u,u=0|n[u+16>>2],d=+o[(s=(g=!(0|u))?h:u)+8>>3],+l(+(f-d))>3.141592653589793){I=14;break}c+=(d-f)*(+o[r>>3]+ +o[s>>3])}while(!g);if(14==(0|I)){I=0,c=0,r=h;do{B=+o[r+8>>3],P=0|n[(S=r+16|0)>>2],C=+o[(P=0|P?P:h)+8>>3],c+=(+o[r>>3]+ +o[P>>3])*((C<0?C+6.283185307179586:C)-(B<0?B+6.283185307179586:B)),r=0|n[(0|r?S:a)>>2]}while(0|r)}c>0?(n[t+(F<<2)>>2]=a,F=F+1|0,s=M,r=m):I=19}else I=19;if(19==(0|I)){I=0;do{if(!i){if(m){s=E,u=m+8|0,r=a,i=A;break}if(0|n[A>>2]){I=27;break A}s=E,u=A,r=a,i=A;break}if(0|n[(r=i+8|0)>>2]){I=21;break A}if(!(i=0|Ve(1,12))){I=23;break A}n[r>>2]=i,s=i+4|0,u=i,r=m}while(0);if(n[u>>2]=a,n[s>>2]=a,u=e+(M<<5)|0,g=0|n[a>>2]){for(o[(h=e+(M<<5)+8|0)>>3]=17976931348623157e292,o[(m=e+(M<<5)+24|0)>>3]=17976931348623157e292,o[u>>3]=-17976931348623157e292,o[(b=e+(M<<5)+16|0)>>3]=-17976931348623157e292,y=17976931348623157e292,k=-17976931348623157e292,s=0,p=g,f=17976931348623157e292,v=17976931348623157e292,w=-17976931348623157e292,d=-17976931348623157e292;c=+o[p>>3],B=+o[p+8>>3],p=0|n[p+16>>2],C=+o[((x=!(0|p))?g:p)+8>>3],c>3]=c,f=c),B>3]=B,v=B),c>w?o[u>>3]=c:c=w,B>d&&(o[b>>3]=B,d=B),y=B>0&Bk?B:k,s|=+l(+(B-C))>3.141592653589793,!x;)w=c;s&&(o[b>>3]=k,o[m>>3]=y)}else n[u>>2]=0,n[u+4>>2]=0,n[u+8>>2]=0,n[u+12>>2]=0,n[u+16>>2]=0,n[u+20>>2]=0,n[u+24>>2]=0,n[u+28>>2]=0;s=M+1|0}if(a=0|n[(S=a+8|0)>>2],n[S>>2]=0,!a){I=45;break}M=s,m=r}if(21==(0|I))D(27213,27235,35,27247);else if(23==(0|I))D(27267,27235,37,27247);else if(27==(0|I))D(27310,27235,61,27333);else if(45==(0|I)){A:do{if((0|F)>0){for(S=!(0|s),j=s<<2,P=!(0|A),N=0,r=0;;){if(Q=0|n[t+(N<<2)>>2],S)I=73;else{if(!(M=0|Oe(j))){I=50;break}if(!(E=0|Oe(j))){I=52;break}e:do{if(P)i=0;else{for(s=0,i=0,u=A;a=e+(s<<5)|0,0|he(0|n[u>>2],a,0|n[Q>>2])?(n[M+(i<<2)>>2]=u,n[E+(i<<2)>>2]=a,x=i+1|0):x=i,u=0|n[u+8>>2];)s=s+1|0,i=x;if((0|x)>0)if(a=0|n[M>>2],1==(0|x))i=a;else for(b=0,p=-1,i=a,m=a;;){for(g=0|n[m>>2],a=0,u=0;h=(0|(s=0|n[n[M+(u<<2)>>2]>>2]))==(0|g)?a:a+(1&he(s,0|n[E+(u<<2)>>2],0|n[g>>2]))|0,(0|(u=u+1|0))!=(0|x);)a=h;if(i=(s=(0|h)>(0|p))?m:i,(0|(a=b+1|0))==(0|x))break e;b=a,p=s?h:p,m=0|n[M+(a<<2)>>2]}else i=0}}while(0);if(Ye(M),Ye(E),i){if(a=0|n[(s=i+4|0)>>2])i=a+8|0;else if(0|n[i>>2]){I=70;break}n[i>>2]=Q,n[s>>2]=Q}else I=73}if(73==(0|I)){if(I=0,0|(r=0|n[Q>>2]))do{E=r,r=0|n[r+16>>2],Ye(E)}while(0|r);Ye(Q),r=1}if((0|(N=N+1|0))>=(0|F)){T=r;break A}}50==(0|I)?D(27452,27235,249,27471):52==(0|I)?D(27490,27235,252,27471):70==(0|I)&&D(27310,27235,61,27333)}else T=0}while(0);return Ye(t),Ye(e),0|T}return 0}(t))?(ge(t),P=a,0|(s=A)):(P=a,0|(s=0))},_childPosToCell:function(A,e,t,r,o,i){A|=0,e|=0,i|=0;var a,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0;if(a=P,P=P+16|0,s=a,(o|=0)>>>0>15)return P=a,4;if(l=0|tt(0|(t|=0),0|(r|=0),52),B(),(0|(l&=15))>(0|o))return P=a,12;if(0|_A(t,r,o,s)&&D(27795,27122,1327,27173),!(((0|e)>-1|-1==(0|e)&A>>>0>4294967295)&((0|(u=0|n[(d=s)+4>>2]))>(0|e)|((0|u)==(0|e)?(0|n[d>>2])>>>0>A>>>0:0))))return P=a,2;d=o-l|0,o=0|rt(0|o,0,52),c=B()|-15728641&r,n[(u=i)>>2]=o|t,n[u+4>>2]=c,u=0|tt(0|t,0|r,45),B();A:do{if(0|z(127&u)){if(0|l)for(s=1;;){if(!(!((u=0|rt(7,0,3*(15-s|0)|0))&t)&!((0|B())&r)))break A;if(!(s>>>0>>0))break;s=s+1|0}if((0|d)<1)return P=a,0;for(u=15^l,r=-1,c=1,s=1;;){l=0|pe(7,0,l=d-c|0,((0|l)<0)<<31>>31),t=0|B();do{if(s){if(s=0|Xe(0|(s=0|We(0|(s=0|qe(0|l,0|t,5,0)),0|B(),-5,-1)),0|B(),6,0),(0|e)>(0|(o=0|B()))|(0|e)==(0|o)&A>>>0>s>>>0){e=0|Ze(0|(e=0|We(0|A,0|e,-1,-1)),0|B(),0|s,0|o),s=0|B(),h=0|n[(f=i)>>2],f=0|n[f+4>>2],g=0|rt(7,0,0|(m=3*(u+r|0)|0)),f&=~B(),m=0|rt(0|(o=0|We(0|(r=0|Xe(0|e,0|s,0|l,0|t)),0|(A=0|B()),2,0)),0|B(),0|m),f=0|B()|f,n[(o=i)>>2]=m|h&~g,n[o+4>>2]=f,A=0|Ze(0|e,0|s,0|(A=0|qe(0|r,0|A,0|l,0|t)),0|B()),s=0,e=0|B();break}g=0|n[(m=i)>>2],m=0|n[m+4>>2],h=0|rt(7,0,3*(u+r|0)|0),m&=~B(),n[(s=i)>>2]=g&~h,n[s+4>>2]=m,s=1;break}o=0|n[(g=i)>>2],g=0|n[g+4>>2],f=0|rt(7,0,0|(r=3*(u+r|0)|0)),g&=~B(),r=0|rt(0|(m=0|Xe(0|A,0|e,0|l,0|t)),0|(s=0|B()),0|r),g=0|B()|g,n[(h=i)>>2]=r|o&~f,n[h+4>>2]=g,A=0|Ze(0|A,0|e,0|(s=0|qe(0|m,0|s,0|l,0|t)),0|B()),s=0,e=0|B()}while(0);if(!((0|d)>(0|c))){e=0;break}r=~c,c=c+1|0}return P=a,0|e}}while(0);if((0|d)<1)return P=a,0;for(o=15^l,s=1;;){if(h=0|pe(7,0,h=d-s|0,((0|h)<0)<<31>>31),m=0|B(),t=0|n[(c=i)>>2],c=0|n[c+4>>2],r=0|rt(7,0,0|(l=3*(o-s|0)|0)),c&=~B(),l=0|rt(0|(f=0|Xe(0|A,0|e,0|h,0|m)),0|(g=0|B()),0|l),c=0|B()|c,n[(u=i)>>2]=l|t&~r,n[u+4>>2]=c,A=0|Ze(0|A,0|e,0|(m=0|qe(0|f,0|g,0|h,0|m)),0|B()),e=0|B(),(0|d)<=(0|s)){e=0;break}s=s+1|0}return P=a,0|e},_compactCells:function(A,e,t,r){e|=0;var o,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,M=0,E=0,Q=0,N=0,j=0,P=0;if(!(0|(t|=0))&!(0|(r|=0)))return 0;if(a=0|n[(i=A|=0)>>2],!0&!(15728640&(i=0|n[i+4>>2]))){if(!((0|r)>0|!(0|r)&t>>>0>0))return 0;if(n[(P=e)>>2]=a,n[P+4>>2]=i,1==(0|t)&!(0|r))return 0;i=1,a=0;do{j=0|n[4+(N=A+(i<<3)|0)>>2],n[(P=e+(i<<3)|0)>>2]=n[N>>2],n[P+4>>2]=j,i=0|We(0|i,0|a,1,0),a=0|B()}while((0|a)<(0|r)|(0|a)==(0|r)&i>>>0>>0);return 0}if(!(j=0|Oe(o=t<<3)))return 13;if(st(0|j,0|A,0|o),!(N=0|Ve(t,8)))return Ye(j),13;A:for(;;){E=0|tt(0|(u=0|n[(i=j)>>2]),0|(i=0|n[i+4>>2]),52),B(),Q=(E&=15)-1|0,M=!!(0|E),C=(0|r)>0|!(0|r)&t>>>0>0;e:do{if(M&C){if(v=0|rt(0|Q,0,52),w=0|B(),Q>>>0>15){if(!(!(0|u)&!(0|i))){P=16;break A}for(a=0,A=0;;){if(a=0|We(0|a,0|A,1,0),!((0|(A=0|B()))<(0|r)|(0|A)==(0|r)&a>>>0>>0))break e;if(!(!(0|(k=0|n[(s=j+(a<<3)|0)>>2]))&!(0|(s=0|n[s+4>>2])))){i=s,P=16;break A}}}for(l=u,A=i,a=0,s=0;;){if(!(!(0|l)&!(0|A))){if(!(!0&!(117440512&A))){P=21;break A}if(d=0|tt(0|l,0|A,52),B(),(0|(d&=15))<(0|Q)){i=12,P=27;break A}if((0|d)!=(0|Q)&&(l|=v,A=-15728641&A|w,d>>>0>=E>>>0)){c=Q;do{k=0|rt(7,0,3*(14-c|0)|0),c=c+1|0,l|=k,A=0|B()|A}while(c>>>0>>0)}if(g=0|At(0|l,0|A,0|t,0|r),h=0|B(),!(!(0|(f=0|n[(d=c=N+(g<<3)|0)>>2]))&!(0|(d=0|n[d+4>>2])))){p=0,x=0;do{if((0|p)>(0|r)|(0|p)==(0|r)&x>>>0>t>>>0){P=31;break A}if((0|f)==(0|l)&(-117440513&d)==(0|A)){m=0|tt(0|f,0|d,56),B(),b=1+(m&=7)|0,k=0|tt(0|f,0|d,45),B();t:do{if(0|z(127&k)){if(f=0|tt(0|f,0|d,52),B(),!(f&=15)){d=6;break}for(d=1;;){if(!(!((k=0|rt(7,0,3*(15-d|0)|0))&l)&!((0|B())&A))){d=7;break t}if(!(d>>>0>>0)){d=6;break}d=d+1|0}}else d=7}while(0);if((m+2|0)>>>0>d>>>0){P=41;break A}k=0|rt(0|b,0,56),A=B()|-117440513&A,n[(y=c)>>2]=0,n[y+4>>2]=0,l|=k}else g=0|$e(0|(g=0|We(0|g,0|h,1,0)),0|B(),0|t,0|r),h=0|B();x=0|We(0|x,0|p,1,0),p=0|B(),f=0|n[(d=c=N+(g<<3)|0)>>2],d=0|n[d+4>>2]}while(!(!(0|f)&!(0|d)))}n[(k=c)>>2]=l,n[k+4>>2]=A}if(a=0|We(0|a,0|s,1,0),!((0|(s=0|B()))<(0|r)|(0|s)==(0|r)&a>>>0>>0))break e;l=0|n[(A=j+(a<<3)|0)>>2],A=0|n[A+4>>2]}}}while(0);if(k=0|We(0|t,0|r,5,0),(y=0|B())>>>0<0|!(0|y)&k>>>0<11){P=85;break}if(k=0|Xe(0|t,0|r,6,0),B(),!(k=0|Ve(k,8))){P=48;break}do{if(C){for(b=0,A=0,m=0,p=0;;){if(!(0|(a=0|n[(s=d=N+(b<<3)|0)>>2]))&!(0|(s=0|n[s+4>>2])))y=m;else{f=0|tt(0|a,0|s,56),B(),l=1+(f&=7)|0,g=-117440513&s,y=0|tt(0|a,0|s,45),B();e:do{if(0|z(127&y)){if(h=0|tt(0|a,0|s,52),B(),0|(h&=15))for(c=1;;){if(!(!(a&(y=0|rt(7,0,3*(15-c|0)|0)))&!(g&(0|B()))))break e;if(!(c>>>0>>0))break;c=c+1|0}a|=s=0|rt(0|l,0,56),s=0|B()|g,n[(l=d)>>2]=a,n[l+4>>2]=s,l=f+2|0}}while(0);7==(0|l)?(n[(y=k+(A<<3)|0)>>2]=a,n[y+4>>2]=-117440513&s,A=0|We(0|A,0|m,1,0),y=0|B()):y=m}if(b=0|We(0|b,0|p,1,0),!((0|(p=0|B()))<(0|r)|(0|p)==(0|r)&b>>>0>>0))break;m=y}if(C){if(x=Q>>>0>15,v=0|rt(0|Q,0,52),w=0|B(),!M){for(a=0,c=0,l=0,s=0;!(0|u)&!(0|i)||(n[(Q=e+(a<<3)|0)>>2]=u,n[Q+4>>2]=i,a=0|We(0|a,0|c,1,0),c=0|B()),l=0|We(0|l,0|s,1,0),(0|(s=0|B()))<(0|r)|(0|s)==(0|r)&l>>>0>>0;)u=0|n[(i=j+(l<<3)|0)>>2],i=0|n[i+4>>2];i=y;break}for(a=0,c=0,s=0,l=0;;){do{if(!(!(0|u)&!(0|i))){if(h=0|tt(0|u,0|i,52),B(),x|(0|(h&=15))<(0|Q)){P=80;break A}if((0|h)!=(0|Q)){if(d=u|v,f=-15728641&i|w,h>>>0>=E>>>0){g=Q;do{M=0|rt(7,0,3*(14-g|0)|0),g=g+1|0,d|=M,f=0|B()|f}while(g>>>0>>0)}}else d=u,f=i;m=0|At(0|d,0|f,0|t,0|r),g=0,h=0,p=0|B();do{if((0|g)>(0|r)|(0|g)==(0|r)&h>>>0>t>>>0){P=81;break A}if((-117440513&(b=0|n[4+(M=N+(m<<3)|0)>>2]))==(0|f)&&(0|n[M>>2])==(0|d)){P=65;break}m=0|$e(0|(M=0|We(0|m,0|p,1,0)),0|B(),0|t,0|r),p=0|B(),h=0|We(0|h,0|g,1,0),g=0|B(),M=N+(m<<3)|0}while((0|n[M>>2])!=(0|d)||(0|n[M+4>>2])!=(0|f));if(65==(0|P)&&(P=0,!0&100663296==(117440512&b)))break;n[(M=e+(a<<3)|0)>>2]=u,n[M+4>>2]=i,a=0|We(0|a,0|c,1,0),c=0|B()}}while(0);if(s=0|We(0|s,0|l,1,0),!((0|(l=0|B()))<(0|r)|(0|l)==(0|r)&s>>>0>>0))break;u=0|n[(i=j+(s<<3)|0)>>2],i=0|n[i+4>>2]}i=y}else a=0,i=y}else a=0,A=0,i=0}while(0);if(lt(0|N,0,0|o),st(0|j,0|k,A<<3),Ye(k),!(0|A)&!(0|i)){P=89;break}e=e+(a<<3)|0,r=i,t=A}if(16==(0|P))!0&!(117440512&i)?(i=4,P=27):P=21;else if(31==(0|P))D(27795,27122,620,27132);else{if(41==(0|P))return Ye(j),Ye(N),10;if(48==(0|P))return Ye(j),Ye(N),13;80==(0|P)?D(27795,27122,711,27132):81==(0|P)?D(27795,27122,723,27132):85==(0|P)&&(st(0|e,0|j,t<<3),P=89)}return 21==(0|P)?(Ye(j),Ye(N),0|(P=5)):27==(0|P)?(Ye(j),Ye(N),0|(P=i)):89==(0|P)?(Ye(j),Ye(N),0|(P=0)):0},_constructCell:function(A,e,t,o){t|=0,o|=0;var i=0,a=0,s=0,l=0,c=0,u=0;if((A|=0)>>>0>15)return 4;if((e|=0)>>>0>121)return 17;s=0|rt(0|A,0,52),i=0|B(),l=0|rt(0|e,0,45),i=0|i|B()|134225919;A:do{if((0|A)>=1){for(l=1,s=!!(0|r[20528+e|0]),a=-1;;){if((e=0|n[t+(l+-1<<2)>>2])>>>0>6){i=18,e=10;break}if(!(!(0|e)|1^s)){if(1==(0|e)){i=19,e=10;break}s=0}if(c=0|rt(7,0,0|(u=3*(15-l|0)|0)),i&=~B(),a=(e=0|rt(0|e,((0|e)<0)<<31>>31,0|u))|a&~c,i=0|B()|i,!((0|l)<(0|A)))break A;l=l+1|0}if(10==(0|e))return 0|i}else a=-1}while(0);return n[(u=o)>>2]=a,n[u+4>>2]=i,0},_destroyLinkedMultiPolygon:ge,_directedEdgeToBoundary:MA,_directedEdgeToCells:function(A,e,t){A|=0;var r,o,i,a=0;return r=P,P=P+16|0,a=r,!0&268435456==(2013265920&(e|=0))?(o=-2130706433&e|134217728,n[(i=t|=0)>>2]=A,n[i+4>>2]=o,n[a>>2]=0,e=0|tt(0|A,0|e,56),B(),a=0|L(A,o,7&e,a,t+8|0),P=r,0|a):(P=r,0|(a=6))},_edgeLengthKm:function(A,e,t){t|=0;var r,i=0,a=0,s=0,l=0,u=0,g=0,h=0;if(r=P,P=P+176|0,0|(A=0|MA(A|=0,e|=0,l=r)))return l=A,s=+o[t>>3],s*=6371.007180918475,o[t>>3]=s,P=r,0|l;if(o[t>>3]=0,(0|(A=0|n[l>>2]))<=1)return l=0,s=0,s*=6371.007180918475,o[t>>3]=s,P=r,0|l;e=A+-1|0,A=0,i=+o[l+8>>3],a=+o[l+16>>3],s=0;do{g=i,i=+o[l+8+((A=A+1|0)<<4)>>3],h=+f(.5*(i-g)),u=a,a=+o[l+8+(A<<4)+8>>3],u=h*h+(u=+f(.5*(a-u)))*(+d(+g)*+d(+i)*u),s+=2*+p(+ +c(+u),+ +c(+(1-u)))}while((0|A)!=(0|e));return o[t>>3]=s,l=0,h=s,h*=6371.007180918475,o[t>>3]=h,P=r,0|l},_edgeLengthM:function(A,e,t){t|=0;var r,i=0,a=0,s=0,l=0,u=0,g=0,h=0;if(r=P,P=P+176|0,0|(A=0|MA(A|=0,e|=0,l=r)))return l=A,s=+o[t>>3],s*=6371.007180918475,s*=1e3,o[t>>3]=s,P=r,0|l;if(o[t>>3]=0,(0|(A=0|n[l>>2]))<=1)return l=0,s=0,s*=6371.007180918475,s*=1e3,o[t>>3]=s,P=r,0|l;e=A+-1|0,A=0,i=+o[l+8>>3],a=+o[l+16>>3],s=0;do{g=i,i=+o[l+8+((A=A+1|0)<<4)>>3],h=+f(.5*(i-g)),u=a,a=+o[l+8+(A<<4)+8>>3],u=h*h+(u=+f(.5*(a-u)))*(+d(+g)*+d(+i)*u),s+=2*+p(+ +c(+u),+ +c(+(1-u)))}while((0|A)!=(0|e));return o[t>>3]=s,l=0,h=s,h*=6371.007180918475,h*=1e3,o[t>>3]=h,P=r,0|l},_edgeLengthRads:function(A,e,t){t|=0;var r,i=0,a=0,s=0,l=0,u=0,g=0,h=0;if(r=P,P=P+176|0,0|(A=0|MA(A|=0,e|=0,l=r)))return P=r,0|A;if(o[t>>3]=0,(0|(A=0|n[l>>2]))<=1)return P=r,0;e=A+-1|0,A=0,i=+o[l+8>>3],a=+o[l+16>>3],s=0;do{g=i,i=+o[l+8+((A=A+1|0)<<4)>>3],h=+f(.5*(i-g)),u=a,a=+o[l+8+(A<<4)+8>>3],u=h*h+(u=+f(.5*(a-u)))*(+d(+i)*+d(+g)*u),s+=2*+p(+ +c(+u),+ +c(+(1-u)))}while((0|A)<(0|e));return o[t>>3]=s,P=r,0},_emscripten_replace_memory:function(A){return r=new Int8Array(A),n=new Int32Array(A),o=new Float64Array(A),t=A,!0},_free:Ye,_getBaseCellNumber:TA,_getDirectedEdgeDestination:function(A,e,t){A|=0,e|=0,t|=0;var r,o,i=0;return r=P,P=P+16|0,n[(i=r)>>2]=0,!0&268435456==(2013265920&e)?(o=0|tt(0|A,0|e,56),B(),i=0|L(A,-2130706433&e|134217728,7&o,i,t),P=r,0|i):(P=r,0|(i=6))},_getDirectedEdgeOrigin:function(A,e,t){return A|=0,t|=0,!0&268435456==(2013265920&(e|=0))?(n[t>>2]=A,n[t+4>>2]=-2130706433&e|134217728,0|(t=0)):0|(t=6)},_getHexagonAreaAvgKm2:se,_getHexagonAreaAvgM2:function(A,e){return e|=0,(A|=0)>>>0>15?0|(e=4):(o[e>>3]=+o[20784+(A<<3)>>3],0|(e=0))},_getHexagonEdgeLengthAvgKm:function(A,e){return e|=0,(A|=0)>>>0>15?0|(e=4):(o[e>>3]=+o[20912+(A<<3)>>3],0|(e=0))},_getHexagonEdgeLengthAvgM:function(A,e){return e|=0,(A|=0)>>>0>15?0|(e=4):(o[e>>3]=+o[21040+(A<<3)>>3],0|(e=0))},_getIcosahedronFaces:function A(e,t,r){r|=0;var o,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0;o=P,P=P+128|0,d=o+112|0,s=o+96|0,f=o,a=0|tt(0|(e|=0),0|(t|=0),52),B(),c=15&a,n[d>>2]=c,l=0|tt(0|e,0|t,45),B(),l&=127;A:do{if(0|z(l)){if(0|c)for(i=1;;){if(!(!((u=0|rt(7,0,3*(15-i|0)|0))&e)&!((0|B())&t))){a=0;break A}if(!(i>>>0>>0))break;i=i+1|0}if(!(1&a))return u=0|rt(c+1|0,0,52),f=B()|-15728641&t,f=0|A((u|e)&~(d=0|rt(7,0,3*(14-c|0)|0)),f&~B(),r),P=o,0|f;a=1}else a=0}while(0);if(!(i=0|XA(e,t,s))){a?(NA(s,d,f),u=5):(FA(s,d,f),u=6);A:do{if(0|z(l))if(c)for(i=1;;){if(!(!((l=0|rt(7,0,3*(15-i|0)|0))&e)&!((0|B())&t))){e=2;break A}if(!(i>>>0>>0)){e=5;break}i=i+1|0}else e=5;else e=2}while(0);lt(0|r,-1,e<<2);A:do{if(a)for(s=0;;){if(PA(l=f+(s<<4)|0,0|n[d>>2]),l=0|n[l>>2],-1==(0|(c=0|n[r>>2]))|(0|c)==(0|l))i=r;else{a=0;do{if((a=a+1|0)>>>0>=e>>>0){i=1;break A}c=0|n[(i=r+(a<<2)|0)>>2]}while(!(-1==(0|c)|(0|c)==(0|l)))}if(n[i>>2]=l,(s=s+1|0)>>>0>=u>>>0){i=0;break}}else for(s=0;;){if(jA(l=f+(s<<4)|0,0|n[d>>2],0,1),l=0|n[l>>2],-1==(0|(c=0|n[r>>2]))|(0|c)==(0|l))i=r;else{a=0;do{if((a=a+1|0)>>>0>=e>>>0){i=1;break A}c=0|n[(i=r+(a<<2)|0)>>2]}while(!(-1==(0|c)|(0|c)==(0|l)))}if(n[i>>2]=l,(s=s+1|0)>>>0>=u>>>0){i=0;break}}}while(0)}return P=o,0|i},_getIndexDigit:function(A,e,t,r){return r|=0,((t|=0)-1|0)>>>0>14?0|(r=4):(t=0|tt(0|(A|=0),0|(e|=0),3*(15-t|0)|0),B(),n[r>>2]=7&t,0|(r=0))},_getNumCells:le,_getPentagons:Ae,_getRes0Cells:function(A){A|=0;var e=0,t=0,r=0;e=0;do{rt(0|e,0,45),r=134225919|B(),n[(t=A+(e<<3)|0)>>2]=-1,n[t+4>>2]=r,e=e+1|0}while(122!=(0|e));return 0},_getResolution:function(A,e){return e=0|tt(0|(A|=0),0|(e|=0),52),B(),15&e},_greatCircleDistanceKm:ae,_greatCircleDistanceM:function(A,e){A|=0;var t,r,n,i=0;return r=+o[(e|=0)>>3],t=+o[A>>3],i=(n=+f(.5*(r-t)))*n+(i=+f(.5*(+o[e+8>>3]-+o[A+8>>3])))*(+d(+r)*+d(+t)*i),2*+p(+ +c(+i),+ +c(+(1-i)))*6371.007180918475*1e3},_greatCircleDistanceRads:function(A,e){A|=0;var t,r,n,i=0;return r=+o[(e|=0)>>3],t=+o[A>>3],i=(n=+f(.5*(r-t)))*n+(i=+f(.5*(+o[e+8>>3]-+o[A+8>>3])))*(+d(+r)*+d(+t)*i),2*+p(+ +c(+i),+ +c(+(1-i)))},_gridDisk:S,_gridDiskDistances:F,_gridDistance:function(A,e,t,r,o){t|=0,r|=0,o|=0;var i,a,s=0,l=0;return a=P,P=P+32|0,l=a,0|(i=0|me(A|=0,e|=0,A,e,s=a+12|0))?(P=a,0|(l=i)):0|(A=0|me(A,e,t,r,l))?(P=a,0|(l=A)):(s=0|kA(s,l),n[(l=o)>>2]=s,n[l+4>>2]=((0|s)<0)<<31>>31,P=a,0|(l=0))},_gridPathCells:function(A,e,t,r,o){t|=0,r|=0,o|=0;var i,a,s=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,M=0,E=0;if(a=P,P=P+48|0,c=a+12|0,M=a,!(s=0|me(A|=0,e|=0,A,e,i=a+24|0))&&!(s=0|me(A,e,t,r,c))){C=((0|(k=0|kA(i,c)))<0)<<31>>31,n[i>>2]=0,n[i+4>>2]=0,n[i+8>>2]=0,n[c>>2]=0,n[c+4>>2]=0,n[c+8>>2]=0,0|me(A,e,A,e,i)&&D(27795,27538,692,27747),0|me(A,e,t,r,c)&&D(27795,27538,697,27747),CA(i),CA(c),g=0|k?1/+(0|k):0,t=0|n[i>>2],x=g*+((0|n[c>>2])-t|0),r=0|n[(v=i+4|0)>>2],w=g*+((0|n[c+4>>2])-r|0),s=0|n[(y=i+8|0)>>2],g*=+((0|n[c+8>>2])-s|0),n[M>>2]=t,n[(h=M+4|0)>>2]=r,n[(m=M+8|0)>>2]=s;A:do{if((0|k)<0)s=0;else for(b=0,p=0;;){E=x*(d=+(p>>>0)+4294967296*+(0|b))+ +(0|t),u=w*d+ +(0|r),d=g*d+ +(0|s),t=~~+at(+E),c=~~+at(+u),s=~~+at(+d),E=+l(+(+(0|t)-E)),u=+l(+(+(0|c)-u)),d=+l(+(+(0|s)-d));do{if(!(E>u&E>d)){if(f=0-t|0,u>d){r=f-s|0;break}r=c,s=f-c|0;break}t=0-(c+s)|0,r=c}while(0);if(n[M>>2]=t,n[h>>2]=r,n[m>>2]=s,BA(M),0|(s=0|be(A,e,M,o+(p<<3)|0)))break A;if(!((0|b)<(0|C)|(0|b)==(0|C)&p>>>0>>0)){s=0;break A}t=0|We(0|p,0|b,1,0),b=r=0|B(),p=t,t=0|n[i>>2],r=0|n[v>>2],s=0|n[y>>2]}}while(0);return P=a,0|s}return P=a,0|s},_gridPathCellsSize:function(A,e,t,r,o){t|=0,r|=0,o|=0;var i,a=0,s=0,l=0;return i=P,P=P+32|0,l=i,(a=0|me(A|=0,e|=0,A,e,s=i+12|0))||(a=0|me(A,e,t,r,l))?(P=i,0|(l=a)):(r=0|We(0|(r=0|kA(s,l)),((0|r)<0)<<31>>31,1,0),s=0|B(),n[(l=o)>>2]=r,n[l+4>>2]=s,P=i,0|(l=0))},_gridRing:function(A,e,t,r){return 0|R(A|=0,e|=0,t|=0,r|=0)?(lt(0|r,0,48*t|0),0|(r=0|function(A,e,t,r){A|=0,e|=0,r|=0;var o,i=0,a=0,s=0,l=0,c=0,u=0,d=0,f=0;if(o=P,P=P+16|0,s=o,!(t|=0))return n[r>>2]=A,n[r+4>>2]=e,P=o,0;do{if((0|t)>=0){if((0|t)>13780509){if(0|(i=0|le(15,s)))break;i=0|n[(a=s)>>2],a=0|n[a+4>>2]}else d=0|qe(0|t,0|(i=((0|t)<0)<<31>>31),3,0),a=0|B(),i=0|We(0|t,0|i,1,0),i=0|We(0|(i=0|qe(0|d,0|a,0|i,0|B())),0|B(),1,0),a=0|B(),n[(d=s)>>2]=i,n[d+4>>2]=a;if(u=0|Ve(i,8)){if(!(d=0|Ve(i,4))){Ye(u),i=13;break}if(0|(i=0|I(A,e,t,u,d,i,a,0))){Ye(u),Ye(d);break}if(e=0|n[s>>2],(0|(s=0|n[s+4>>2]))>0|!(0|s)&e>>>0>0){i=0,l=0,c=0;do{!(0|(a=0|n[(A=u+(l<<3)|0)>>2]))&!(0|(A=0|n[A+4>>2]))||(0|n[d+(l<<2)>>2])!=(0|t)||(n[(f=r+(i<<3)|0)>>2]=a,n[f+4>>2]=A,i=i+1|0),l=0|We(0|l,0|c,1,0),c=0|B()}while((0|c)<(0|s)|(0|c)==(0|s)&l>>>0>>0)}Ye(u),Ye(d),i=0}else i=13}else i=2}while(0);return P=o,0|i}(A,e,t,r))):0|(r=0)},_gridRingUnsafe:R,_i64Add:We,_i64Subtract:Ze,_isPentagon:HA,_isResClassIII:function(A,e){return e=0|tt(0|(A|=0),0|(e|=0),52),B(),1&e},_isValidCell:IA,_isValidDirectedEdge:DA,_isValidIndex:function(A,e){A|=0;var t=0,n=0,o=0,i=0;if(!0&134217728==(-16777216&(e|=0))&&(n=0|tt(0|A,0|e,52),B(),n&=15,t=0|tt(0|A,0|e,45),B(),(t&=127)>>>0<=121)&&!(613566756&(i=0|rt(0|(o=0|tt(0|A,0|e,0|(i=3*(15^n)|0))),0|B(),0|i))&Ze(-1227133514,-1171,0|i,0|(o=0|B())))&!(4681&o&B())&&15==(0|n)|!(0|(i=0|tt(0|rt(0|~A,0|~e,0|(i=19+(3*n|0)|0)),0|B(),0|i)))&!(0|B())){if(!(0|r[20528+t|0]))return 1;if(!(0|A)&!(0|(t=8191&e)))return 1;if(i=0|nt(0|A,0|t),B(),(63-i|0)%3|0)return 1}return 0|DA(A,e)?0|(i=1):0|(i=1&!!(0|Te(A,e)))},_isValidVertex:Te,_latLngToCell:KA,_llvm_ctlz_i64:nt,_llvm_maxnum_f64:ot,_llvm_minnum_f64:it,_llvm_round_f64:at,_localIjToCell:function(A,e,t,r,o){var i,a;return A|=0,e|=0,t|=0,o|=0,a=P,P=P+16|0,i=a,(r|=0)?t=15:(t=0|function(A,e){e|=0;var t,r,o,i=0,a=0,s=0;if(a=0|n[(A|=0)>>2],n[e>>2]=a,s=0|n[A+4>>2],n[(r=e+4|0)>>2]=s,n[(o=e+8|0)>>2]=0,A=(i=(0|s)<(0|a))?a:s,(0|(i=i?s:a))<0){if(-2147483648==(0|i)||((0|A)>0?(2147483647-A|0)<(0|i):(-2147483648-A|0)>(0|i)))return 1;if((0|A)>-1?(-2147483648|A)>=(0|i):(-2147483648^A)<(0|i))return 1}return A=s-a|0,(0|a)<0?(i=0-a|0,n[r>>2]=A,n[o>>2]=i,n[e>>2]=0,a=0):(A=s,i=0),(0|A)<0&&(a=a-A|0,n[e>>2]=a,i=i-A|0,n[o>>2]=i,n[r>>2]=0,A=0),t=a-i|0,s=A-i|0,(0|i)<0?(n[e>>2]=t,n[r>>2]=s,n[o>>2]=0,A=s,s=t,i=0):s=a,(0|(a=(0|i)<(0|(a=(0|A)<(0|s)?A:s))?i:a))<=0||(n[e>>2]=s-a,n[r>>2]=A-a,n[o>>2]=i-a),0}(t,i))||(t=0|be(A,e,i,o)),P=a,0|t},_malloc:Oe,_maxFaceCount:function(A,e,t){t|=0;var r=0,o=0;if(o=0|tt(0|(A|=0),0|(e|=0),45),B(),!(0|z(127&o)))return o=2,n[t>>2]=o,0;if(o=0|tt(0|A,0|e,52),B(),!(o&=15))return o=5,n[t>>2]=o,0;for(r=1;;){if(!(!((0|rt(7,0,3*(15-r|0)|0))&A)&!((0|B())&e))){r=2,A=6;break}if(!(r>>>0>>0)){r=5,A=6;break}r=r+1|0}return 6==(0|A)?(n[t>>2]=r,0):0},_maxGridDiskSize:function(A,e){e|=0;var t=0,r=0,o=0;return(0|(A|=0))<0?0|(e=2):(0|A)>13780509?0|(e=0|le(15,e)):(o=0|qe(0|A,0|(t=((0|A)<0)<<31>>31),3,0),r=0|B(),t=0|We(0|A,0|t,1,0),t=0|We(0|(t=0|qe(0|o,0|r,0|t,0|B())),0|B(),1,0),A=0|B(),n[e>>2]=t,n[e+4>>2]=A,0|(e=0))},_maxPolygonToCellsSize:function(A,e,t,r){A|=0,e|=0,r|=0;var o,i=0,a=0,s=0,l=0,c=0;if(o=P,P=P+48|0,i=o+16|0,a=o+8|0,s=o,0|(t=0|Ce(t|=0)))return P=o,0|t;if(l=0|n[(c=A)+4>>2],n[(t=a)>>2]=n[c>>2],n[t+4>>2]=l,ke(a,i),!(t=0|eA(i,e,s))){if(e=0|n[a>>2],(0|(a=0|n[A+8>>2]))>0){i=0|n[A+12>>2],t=0;do{e=(0|n[i+(t<<3)>>2])+e|0,t=t+1|0}while((0|t)<(0|a))}i=0|n[(t=s)>>2],(0|(t=0|n[t+4>>2]))<(0|(a=((0|e)<0)<<31>>31))|(0|t)==(0|a)&i>>>0>>0?(n[(t=s)>>2]=e,n[t+4>>2]=a,t=a):e=i,l=0|We(0|e,0|t,12,0),c=0|B(),n[(t=s)>>2]=l,n[t+4>>2]=c,n[(t=r)>>2]=l,n[t+4>>2]=c,t=0}return P=o,0|t},_maxPolygonToCellsSizeExperimental:function(A,e,t,i){e|=0,t|=0,i|=0;var a,s,c=0,u=0,f=0,g=0,h=0,m=0,b=0,p=0;if(s=P,P=P+48|0,h=s+32|0,g=s+40|0,a=s,!(0|n[(A|=0)>>2]))return n[(m=i)>>2]=0,n[m+4>>2]=0,P=s,0;LA(h,0,0,0),c=0|n[(f=h)>>2],f=0|n[f+4>>2];do{if(e>>>0>15)n[(m=a)>>2]=0,n[m+4>>2]=0,n[a+8>>2]=4,n[a+12>>2]=-1,t=a+29|0,n[(m=a+16|0)>>2]=0,n[m+4>>2]=0,n[m+8>>2]=0,r[m+12|0]=0,r[0|t]=0|r[0|g],r[t+1|0]=0|r[g+1|0],r[t+2|0]=0|r[g+2|0],t=4,m=9;else{if(0|(t=0|Ce(t))){n[(h=a)>>2]=0,n[h+4>>2]=0,n[a+8>>2]=t,n[a+12>>2]=-1,m=a+29|0,n[(h=a+16|0)>>2]=0,n[h+4>>2]=0,n[h+8>>2]=0,r[h+12|0]=0,r[0|m]=0|r[0|g],r[m+1|0]=0|r[g+1|0],r[m+2|0]=0|r[g+2|0],m=9;break}if(!(t=0|Ve(1+(0|n[A+8>>2])|0,32))){n[(m=a)>>2]=0,n[m+4>>2]=0,n[a+8>>2]=13,n[a+12>>2]=-1,t=a+29|0,n[(m=a+16|0)>>2]=0,n[m+4>>2]=0,n[m+8>>2]=0,r[m+12|0]=0,r[0|t]=0|r[0|g],r[t+1|0]=0|r[g+1|0],r[t+2|0]=0|r[g+2|0],t=13,m=9;break}Be(A,t),n[(p=a)>>2]=c,n[p+4>>2]=f,n[(f=a+8|0)>>2]=0,n[a+12>>2]=e,n[a+20>>2]=A,n[a+24>>2]=t,r[a+28|0]=0,r[0|(c=a+29|0)]=0|r[0|g],r[c+1|0]=0|r[g+1|0],r[c+2|0]=0|r[g+2|0],n[a+16>>2]=3,b=+J(t),b*=+Z(t),u=+l(+ +o[t>>3]),u=b/+d(+ +it(+u,+ +l(+ +o[t+8>>3])))*6371.007180918475*6371.007180918475,t=0|n[(c=a+12|0)>>2];A:do{if((0|t)>0)do{if(se(t+-1|0,h),!(u/+o[h>>3]>10))break A;t=(p=0|n[c>>2])-1|0,n[c>>2]=t}while((0|p)>1)}while(0);if(ve(a),n[(c=i)>>2]=0,n[c+4>>2]=0,!(!(0|(t=0|n[(c=a)>>2]))&!(0|(c=0|n[c+4>>2]))))do{_A(t,c,e,h),g=h,g=0|We(0|n[(A=i)>>2],0|n[A+4>>2],0|n[g>>2],0|n[g+4>>2]),A=0|B(),n[(p=i)>>2]=g,n[p+4>>2]=A,ve(a),t=0|n[(p=a)>>2],c=0|n[p+4>>2]}while(!(!(0|t)&!(0|c)));t=0|n[f>>2]}}while(0);return P=s,0|t},_memcpy:st,_memset:lt,_originToDirectedEdges:function(A,e,t){t|=0;var r,o=0;return r=!(0|HA(A|=0,e|=0)),e&=-2130706433,n[(o=t)>>2]=r?A:0,n[o+4>>2]=r?285212672|e:0,n[(o=t+8|0)>>2]=A,n[o+4>>2]=301989888|e,n[(o=t+16|0)>>2]=A,n[o+4>>2]=318767104|e,n[(o=t+24|0)>>2]=A,n[o+4>>2]=335544320|e,n[(o=t+32|0)>>2]=A,n[o+4>>2]=352321536|e,n[(t=t+40|0)>>2]=A,n[t+4>>2]=369098752|e,0},_pentagonCount:function(){return 12},_polygonToCells:function(A,e,t,r){A|=0,e|=0,r|=0;var o,i,a,s,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0,x=0,v=0,w=0,y=0,k=0,C=0,D=0,M=0,E=0,Q=0,N=0,j=0,S=0,F=0,L=0,R=0,_=0;if(s=P,P=P+112|0,o=s+80|0,f=s+72|0,i=s,a=s+56|0,0|(l=0|Ce(t|=0)))return P=s,0|l;if(!(_=0|Oe(32+(n[(g=A+8|0)>>2]<<5)|0)))return P=s,13;if(Be(A,_),!(l=0|Ce(t))){if(R=0|n[(L=A)+4>>2],n[(l=f)>>2]=n[L>>2],n[l+4>>2]=R,ke(f,o),l=0|eA(o,e,i))L=0,R=0;else{if(l=0|n[f>>2],(0|(c=0|n[g>>2]))>0){u=0|n[A+12>>2],t=0;do{l=(0|n[u+(t<<3)>>2])+l|0,t=t+1|0}while((0|t)!=(0|c));t=l}else t=l;c=0|n[(l=i)>>2],(0|(l=0|n[l+4>>2]))<(0|(u=((0|t)<0)<<31>>31))|(0|l)==(0|u)&c>>>0>>0?(n[(l=i)>>2]=t,n[l+4>>2]=u,l=u):t=c,L=0|We(0|t,0|l,12,0),R=0|B(),n[(l=i)>>2]=L,n[l+4>>2]=R,l=0}if(!l){if(!(t=0|Ve(L,8)))return Ye(_),P=s,13;if(!(d=0|Ve(L,8)))return Ye(_),Ye(t),P=s,13;n[(S=o)>>2]=0,n[S+4>>2]=0,F=0|n[(S=A)+4>>2],n[(l=f)>>2]=n[S>>2],n[l+4>>2]=F,l=0|H(f,L,R,e,o,t,d);A:do{if(l)Ye(t),Ye(d),Ye(_);else{e:do{if((0|n[g>>2])>0){for(u=A+12|0,c=0;l=0|H((0|n[u>>2])+(c<<3)|0,L,R,e,o,t,d),c=c+1|0,!(0|l);)if((0|c)>=(0|n[g>>2]))break e;Ye(t),Ye(d),Ye(_);break A}}while(0);(0|R)>0|!(0|R)&L>>>0>0&<(0|d,0,L<<3),S=0|n[(F=o)+4>>2];e:do{if((0|S)>0|!(0|S)&(0|n[F>>2])>>>0>0){Q=t,N=d,j=t,S=d,F=t,l=t,D=t,M=d,E=d,t=d;t:for(;;){for(w=0,y=0,k=0,C=0,c=0,u=0;;){f=(d=i)+56|0;do{n[d>>2]=0,d=d+4|0}while((0|d)<(0|f));if(0|T(g=0|n[(e=Q+(w<<3)|0)>>2],e=0|n[e+4>>2],1,i,0)){f=(d=i)+56|0;do{n[d>>2]=0,d=d+4|0}while((0|d)<(0|f));0|(d=0|Ve(7,4))&&(I(g,e,1,i,d,7,0,0),Ye(d))}for(v=0;;){p=0|n[(x=i+(v<<3)|0)>>2],x=0|n[x+4>>2];r:do{if(!(0|p)&!(0|x))d=c,f=u;else{if(h=0|At(0|p,0|x,0|L,0|R),g=0|B(),!(!(0|(f=0|n[(e=d=r+(h<<3)|0)>>2]))&!(0|(e=0|n[e+4>>2])))){m=0,b=0;do{if((0|m)>(0|R)|(0|m)==(0|R)&b>>>0>L>>>0)break t;if((0|f)==(0|p)&(0|e)==(0|x)){d=c,f=u;break r}h=0|$e(0|(d=0|We(0|h,0|g,1,0)),0|B(),0|L,0|R),g=0|B(),b=0|We(0|b,0|m,1,0),m=0|B(),f=0|n[(e=d=r+(h<<3)|0)>>2],e=0|n[e+4>>2]}while(!(!(0|f)&!(0|e)))}if(!(0|p)&!(0|x)){d=c,f=u;break}qA(p,x,a),0|De(A,_,a)&&(b=0|We(0|c,0|u,1,0),u=0|B(),n[(m=d)>>2]=p,n[m+4>>2]=x,n[(c=N+(c<<3)|0)>>2]=p,n[c+4>>2]=x,c=b),d=c,f=u}}while(0);if((v=v+1|0)>>>0>=7)break;c=d,u=f}if(w=0|We(0|w,0|y,1,0),y=0|B(),k=0|We(0|k,0|C,1,0),C=0|B(),c=0|n[(u=o)>>2],!((0|C)<(0|(u=0|n[u+4>>2]))|(0|C)==(0|u)&k>>>0>>0))break;c=d,u=f}if((0|u)>0|!(0|u)&c>>>0>0){c=0,u=0;do{n[(C=Q+(c<<3)|0)>>2]=0,n[C+4>>2]=0,c=0|We(0|c,0|u,1,0),u=0|B(),k=0|n[(C=o)+4>>2]}while((0|u)<(0|k)|((0|u)==(0|k)?c>>>0<(0|n[C>>2])>>>0:0))}if(n[(C=o)>>2]=d,n[C+4>>2]=f,!((0|f)>0|!(0|f)&d>>>0>0))break e;v=t,w=E,y=F,k=M,C=N,t=D,E=l,M=j,D=v,l=w,F=S,S=y,j=k,N=Q,Q=C}Ye(j),Ye(S),Ye(_),l=1;break A}l=d}while(0);Ye(_),Ye(t),Ye(l),l=0}}while(0);return P=s,0|l}}return Ye(_),P=s,0|l},_polygonToCellsExperimental:function(A,e,t,o,i,a){o|=0,i|=0,a|=0;var s,l,c,u=0,d=0,f=0,g=0,h=0,m=0,b=0,p=0;c=P,P=P+160|0,d=c+64|0,h=c+112|0,p=c,function(A,e,t,o){A|=0,e|=0,t|=0,o|=0;var i,a,s,l=0,c=0,u=0,d=0;s=P,P=P+48|0,i=s+40|0,a=s,LA(c=s+32|0,0,0,0),u=0|n[c>>2],c=0|n[c+4>>2];do{if(t>>>0<=15){if(0|(l=0|Ce(o))){n[(o=a)>>2]=0,n[o+4>>2]=0,n[a+8>>2]=l,n[a+12>>2]=-1,u=a+29|0,n[(o=a+16|0)>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,r[o+12|0]=0,r[0|u]=0|r[0|i],r[u+1|0]=0|r[i+1|0],r[u+2|0]=0|r[i+2|0];break}if(l=0|Ve(1+(0|n[e+8>>2])|0,32)){Be(e,l),n[(d=a)>>2]=u,n[d+4>>2]=c,n[a+8>>2]=0,n[a+12>>2]=t,n[a+16>>2]=o,n[a+20>>2]=e,n[a+24>>2]=l,r[a+28|0]=0,r[0|(u=a+29|0)]=0|r[0|i],r[u+1|0]=0|r[i+1|0],r[u+2|0]=0|r[i+2|0];break}n[(o=a)>>2]=0,n[o+4>>2]=0,n[a+8>>2]=13,n[a+12>>2]=-1,u=a+29|0,n[(o=a+16|0)>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,r[o+12|0]=0,r[0|u]=0|r[0|i],r[u+1|0]=0|r[i+1|0],r[u+2|0]=0|r[i+2|0];break}n[(u=a)>>2]=0,n[u+4>>2]=0,n[a+8>>2]=4,n[a+12>>2]=-1,d=a+29|0,n[(u=a+16|0)>>2]=0,n[u+4>>2]=0,n[u+8>>2]=0,r[u+12|0]=0,r[0|d]=0|r[0|i],r[d+1|0]=0|r[i+1|0],r[d+2|0]=0|r[i+2|0]}while(0);ve(a),n[A>>2]=n[a>>2],n[A+4>>2]=n[a+4>>2],n[A+8>>2]=n[a+8>>2],n[A+12>>2]=n[a+12>>2],n[A+16>>2]=n[a+16>>2],n[A+20>>2]=n[a+20>>2],n[A+24>>2]=n[a+24>>2],n[A+28>>2]=n[a+28>>2],P=s}(g=c+80|0,A|=0,e|=0,t|=0),ee(d,0|n[(f=g)>>2],0|n[f+4>>2],e),s=0|n[(f=d)>>2],f=0|n[f+4>>2],u=0|n[g+8>>2],n[(m=h+4|0)>>2]=n[g>>2],n[m+4>>2]=n[g+4>>2],n[m+8>>2]=n[g+8>>2],n[m+12>>2]=n[g+12>>2],n[m+16>>2]=n[g+16>>2],n[m+20>>2]=n[g+20>>2],n[m+24>>2]=n[g+24>>2],n[m+28>>2]=n[g+28>>2],n[(m=p)>>2]=s,n[m+4>>2]=f,n[(m=p+8|0)>>2]=u,e=h,t=36+(A=p+12|0)|0;do{n[A>>2]=n[e>>2],A=A+4|0,e=e+4|0}while((0|A)<(0|t));if(n[(h=p+48|0)>>2]=n[d>>2],n[h+4>>2]=n[d+4>>2],n[h+8>>2]=n[d+8>>2],n[h+12>>2]=n[d+12>>2],!(0|s)&!(0|f))return P=c,0|u;t=p+16|0,l=p+24|0,g=p+28|0,u=0,d=0,e=s,A=f;do{if(!((0|u)<(0|i)|(0|u)==(0|i)&d>>>0>>0)){b=4;break}if(f=d,d=0|We(0|d,0|u,1,0),u=0|B(),n[(f=a+(f<<3)|0)>>2]=e,n[f+4>>2]=A,re(h),!(0|(e=0|n[(A=h)>>2]))&!(0|(A=0|n[A+4>>2]))){if(ve(t),!(0|(A=0|n[(e=t)>>2]))&!(0|(e=0|n[e+4>>2]))){b=10;break}te(A,e,0|n[g>>2],h),e=0|n[(A=h)>>2],A=0|n[A+4>>2]}n[(f=p)>>2]=e,n[f+4>>2]=A}while(!(!(0|e)&!(0|A)));return 4==(0|b)?(0|(e=0|n[(A=p+40|0)>>2])&&Ye(e),n[(b=p+16|0)>>2]=0,n[b+4>>2]=0,n[l>>2]=0,n[p+36>>2]=0,n[g>>2]=-1,n[p+32>>2]=0,n[A>>2]=0,te(0,0,0,h),n[p>>2]=0,n[p+4>>2]=0,n[m>>2]=0,P=c,0|(p=14)):(10==(0|b)&&(n[p>>2]=0,n[p+4>>2]=0,n[m>>2]=n[l>>2]),p=0|n[m>>2],P=c,0|p)},_readInt64AsDoubleFromPointer:function(A){return+(+((0|n[(A|=0)>>2])>>>0)+4294967296*+(0|n[A+4>>2]))},_res0CellCount:function(){return 122},_round:ct,_sbrk:ut,_sizeOfCellBoundary:function(){return 168},_sizeOfCoordIJ:function(){return 8},_sizeOfGeoLoop:function(){return 8},_sizeOfGeoPolygon:function(){return 16},_sizeOfH3Index:function(){return 8},_sizeOfLatLng:function(){return 16},_sizeOfLinkedGeoPolygon:function(){return 12},_uncompactCells:function(A,e,t,r,o,i,a){A|=0,r|=0,o|=0,i|=0;var s,l=0,c=0,u=0,d=0,f=0,g=0,h=0,m=0;if(s=P,P=P+16|0,m=s,!((0|(t|=0))>0|!(0|t)&(e|=0)>>>0>0))return P=s,0;if((0|(a|=0))>=16)return P=s,12;g=0,h=0,f=0,l=0;A:for(;;){if(d=0|tt(0|(c=0|n[(u=A+(g<<3)|0)>>2]),0|(u=0|n[u+4>>2]),52),B(),(15&d)>(0|a)){l=12,c=11;break}if(ee(m,c,u,a),!(0|(u=0|n[(d=m)>>2]))&!(0|(d=0|n[d+4>>2])))c=f;else{c=f;do{if(!((0|l)<(0|i)|(0|l)==(0|i)&c>>>0>>0)){c=10;break A}n[(f=r+(c<<3)|0)>>2]=u,n[f+4>>2]=d,c=0|We(0|c,0|l,1,0),l=0|B(),re(m),u=0|n[(f=m)>>2],d=0|n[f+4>>2]}while(!(!(0|u)&!(0|d)))}if(g=0|We(0|g,0|h,1,0),!((0|(h=0|B()))<(0|t)|(0|h)==(0|t)&g>>>0>>0)){l=0,c=11;break}f=c}return 10==(0|c)?(P=s,0|(m=14)):11==(0|c)?(P=s,0|l):0},_uncompactCellsSize:function(A,e,t,r,o){A|=0,e|=0,t|=0,r|=0,o|=0;var i,a,s=0,l=0,c=0,u=0,d=0,f=0;a=P,P=P+16|0,i=a;A:do{if((0|t)>0|!(0|t)&e>>>0>0){for(d=0,l=0,s=0,f=0;;){if(!(!(0|(c=0|n[(u=A+(d<<3)|0)>>2]))&!(0|(u=0|n[u+4>>2]))||(u=!(0|_A(c,u,r,i)),l=0|We(0|n[(c=i)>>2],0|n[c+4>>2],0|l,0|s),s=0|B(),u))){s=12;break}if(d=0|We(0|d,0|f,1,0),!((0|(f=0|B()))<(0|t)|(0|f)==(0|t)&d>>>0>>0))break A}return P=a,0|s}l=0,s=0}while(0);return n[o>>2]=l,n[o+4>>2]=s,P=a,0},_vertexToLatLng:function(A,e,t){t|=0;var r,o,i,a,s=0,l=0;return a=P,P=P+192|0,o=a,i=a+168|0,s=0|tt(0|(A|=0),0|(e|=0),56),B(),s&=7,0|(r=0|XA(A,l=-2130706433&e|134217728,i))?(P=a,0|(l=r)):(e=0|tt(0|A,0|e,52),B(),e&=15,0|HA(A,l)?QA(i,e,s,1,o):SA(i,e,s,1,o),l=o+8|0,n[t>>2]=n[l>>2],n[t+4>>2]=n[l+4>>2],n[t+8>>2]=n[l+8>>2],n[t+12>>2]=n[l+12>>2],P=a,0|(l=0))},establishStackSpace:function(A,e){P=A|=0},stackAlloc:function(A){var e;return e=P,P=15+(P=P+(A|=0)|0)&-16,0|e},stackRestore:function(A){P=A|=0},stackSave:function(){return 0|P}}}({Math:Math,Int8Array:Int8Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Float32Array:Float32Array,Float64Array:Float64Array},{b:function(A){s=A},c:function(){return s},d:function(A,e,t,r){tA("Assertion failed: "+x(A)+", at: "+[e?x(e):"unknown filename",t,r?x(r):"unknown function"])},e:function(A){return t.___errno_location&&(h[t.___errno_location()>>2]=A),A},f:z,g:function(A,e,t){f.set(f.subarray(e,e+t),A)},h:function(A){var e=z(),t=16777216,r=2130706432;if(A>r)return!1;for(var n=Math.max(e,16777216);n0))return 0;for(var n=t+r-1,o=0;o=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&A.charCodeAt(++o)),i<=127){if(t>=n)break;e[t++]=i}else if(i<=2047){if(t+1>=n)break;e[t++]=192|i>>6,e[t++]=128|63&i}else if(i<=65535){if(t+2>=n)break;e[t++]=224|i>>12,e[t++]=128|i>>6&63,e[t++]=128|63&i}else{if(t+3>=n)break;e[t++]=240|i>>18,e[t++]=128|i>>12&63,e[t++]=128|i>>6&63,e[t++]=128|63&i}}e[t]=0}(A,f,e,t)}(A,e=Z(t),t)}return e},array:function(A){var e,t,r=Z(A.length);return e=A,t=r,d.set(e,t),r}},o=c(A),i=[],a=0;if(r)for(var s=0;s>1]=e;break;case"i32":h[A>>2]=e;break;case"i64":L=[e>>>0,(I=e,+N(I)>=1?I>0?(0|S(+P(I/4294967296),4294967295))>>>0:~~+j((I-+(~~I>>>0))/4294967296)>>>0:0)],h[A>>2]=L[0],h[A+4>>2]=L[1];break;case"float":m[A>>2]=e;break;case"double":b[A>>3]=e;break;default:tA("invalid type for setValue: "+t)}},t.getValue=function(A,e,t){switch("*"===(e=e||"i8").charAt(e.length-1)&&(e="i32"),e){case"i1":case"i8":return d[0|A];case"i16":return g[A>>1];case"i32":case"i64":return h[A>>2];case"float":return m[A>>2];case"double":return b[A>>3];default:tA("invalid type for getValue: "+e)}return null},R){H(R)||(V=R,R=t.locateFile?t.locateFile(V,o):o+V),F++,t.monitorRunDependencies&&t.monitorRunDependencies(F);var X=function(A){A.byteLength&&(A=new Uint8Array(A)),f.set(A,8),t.memoryInitializerRequest&&delete t.memoryInitializerRequest.response,function(){if(F--,t.monitorRunDependencies&&t.monitorRunDependencies(F),0==F&&T){var A=T;T=null,A()}}()},q=function(){n(R,X,function(){throw"could not load memory initializer "+R})},$=U(R);if($)X($.buffer);else if(t.memoryInitializerRequest){var AA=function(){var A=t.memoryInitializerRequest,e=A.response;if(200!==A.status&&0!==A.status){var r=U(t.memoryInitializerRequestURL);if(!r)return void q();e=r.buffer}X(e)};t.memoryInitializerRequest.response?setTimeout(AA,0):t.memoryInitializerRequest.addEventListener("load",AA)}else q()}function eA(A){function e(){W||(W=!0,l||(k(B),k(D),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)Q(t.postRun.shift());k(M)}()))}F>0||(function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)E(t.preRun.shift());k(C)}(),F>0||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),e()},1)):e()))}function tA(A){throw t.onAbort&&t.onAbort(A),i(A+=""),a(A),l=!0,"abort("+A+"). Build with -s ASSERTIONS=1 for more info."}if(T=function A(){W||eA(),W||(T=A)},t.run=eA,t.abort=tA,t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return eA(),A}("object"==typeof HA?HA:{}),zA="number",GA={0:"Success",1:"The operation failed but a more specific error is not available",2:"Argument was outside of acceptable range",3:"Latitude or longitude arguments were outside of acceptable range",4:"Resolution argument was outside of acceptable range",5:"Cell argument was not valid",6:"Directed edge argument was not valid",7:"Undirected edge argument was not valid",8:"Vertex argument was not valid",9:"Pentagon distortion was encountered",10:"Duplicate input",11:"Cell arguments were not neighbors",12:"Cell arguments had incompatible resolutions",13:"Memory allocation failed",14:"Bounds of provided memory were insufficient",15:"Mode or flags argument was not valid",16:"Index argument was not valid",17:"Base cell number was outside of acceptable range",18:"Child indexing digits invalid",19:"Child indexing digits refer to a deleted subsequence"},UA={1e3:"Unknown unit",1001:"Array length out of bounds",1002:"Got unexpected null value for H3 index"};function OA(A,e,t){var r=t&&"value"in t,n=new Error((A[e]||"Unknown error")+" (code: "+e+(r?", value: "+t.value:"")+")");return n.code=e,n}function YA(A){if(0!==A)throw function(A,e){return OA(GA,A,2===arguments.length?{value:e}:{})}(A)}var VA={};[["sizeOfH3Index",zA],["sizeOfLatLng",zA],["sizeOfCellBoundary",zA],["sizeOfGeoLoop",zA],["sizeOfGeoPolygon",zA],["sizeOfLinkedGeoPolygon",zA],["sizeOfCoordIJ",zA],["readInt64AsDoubleFromPointer",zA],["isValidCell",zA,[zA,zA]],["isValidIndex",zA,[zA,zA]],["latLngToCell",zA,[zA,zA,zA,zA]],["cellToLatLng",zA,[zA,zA,zA]],["cellToBoundary",zA,[zA,zA,zA]],["maxGridDiskSize",zA,[zA,zA]],["gridDisk",zA,[zA,zA,zA,zA]],["gridDiskDistances",zA,[zA,zA,zA,zA,zA]],["gridRing",zA,[zA,zA,zA,zA]],["gridRingUnsafe",zA,[zA,zA,zA,zA]],["maxPolygonToCellsSize",zA,[zA,zA,zA,zA]],["polygonToCells",zA,[zA,zA,zA,zA]],["maxPolygonToCellsSizeExperimental",zA,[zA,zA,zA,zA]],["polygonToCellsExperimental",zA,[zA,zA,zA,zA,zA,zA]],["cellsToLinkedMultiPolygon",zA,[zA,zA,zA]],["destroyLinkedMultiPolygon",null,[zA]],["compactCells",zA,[zA,zA,zA,zA]],["uncompactCells",zA,[zA,zA,zA,zA,zA,zA]],["uncompactCellsSize",zA,[zA,zA,zA,zA,zA]],["isPentagon",zA,[zA,zA]],["isResClassIII",zA,[zA,zA]],["getBaseCellNumber",zA,[zA,zA]],["getResolution",zA,[zA,zA]],["getIndexDigit",zA,[zA,zA,zA]],["constructCell",zA,[zA,zA,zA,zA]],["maxFaceCount",zA,[zA,zA,zA]],["getIcosahedronFaces",zA,[zA,zA,zA]],["cellToParent",zA,[zA,zA,zA,zA]],["cellToChildren",zA,[zA,zA,zA,zA]],["cellToCenterChild",zA,[zA,zA,zA,zA]],["cellToChildrenSize",zA,[zA,zA,zA,zA]],["cellToChildPos",zA,[zA,zA,zA,zA]],["childPosToCell",zA,[zA,zA,zA,zA,zA,zA]],["areNeighborCells",zA,[zA,zA,zA,zA,zA]],["cellsToDirectedEdge",zA,[zA,zA,zA,zA,zA]],["getDirectedEdgeOrigin",zA,[zA,zA,zA]],["getDirectedEdgeDestination",zA,[zA,zA,zA]],["isValidDirectedEdge",zA,[zA,zA]],["directedEdgeToCells",zA,[zA,zA,zA]],["originToDirectedEdges",zA,[zA,zA,zA]],["directedEdgeToBoundary",zA,[zA,zA,zA]],["gridDistance",zA,[zA,zA,zA,zA,zA]],["gridPathCells",zA,[zA,zA,zA,zA,zA]],["gridPathCellsSize",zA,[zA,zA,zA,zA,zA]],["cellToLocalIj",zA,[zA,zA,zA,zA,zA,zA]],["localIjToCell",zA,[zA,zA,zA,zA,zA]],["getHexagonAreaAvgM2",zA,[zA,zA]],["getHexagonAreaAvgKm2",zA,[zA,zA]],["getHexagonEdgeLengthAvgM",zA,[zA,zA]],["getHexagonEdgeLengthAvgKm",zA,[zA,zA]],["greatCircleDistanceM",zA,[zA,zA]],["greatCircleDistanceKm",zA,[zA,zA]],["greatCircleDistanceRads",zA,[zA,zA]],["cellAreaM2",zA,[zA,zA,zA]],["cellAreaKm2",zA,[zA,zA,zA]],["cellAreaRads2",zA,[zA,zA,zA]],["edgeLengthM",zA,[zA,zA,zA]],["edgeLengthKm",zA,[zA,zA,zA]],["edgeLengthRads",zA,[zA,zA,zA]],["getNumCells",zA,[zA,zA]],["getRes0Cells",zA,[zA]],["res0CellCount",zA],["getPentagons",zA,[zA,zA]],["pentagonCount",zA],["cellToVertex",zA,[zA,zA,zA,zA]],["cellToVertexes",zA,[zA,zA,zA]],["vertexToLatLng",zA,[zA,zA,zA]],["isValidVertex",zA,[zA,zA]]].forEach(function(A){VA[A[0]]=HA.cwrap.apply(HA,A)});var WA=16,ZA=VA.sizeOfH3Index(),KA=VA.sizeOfLatLng(),JA=VA.sizeOfCellBoundary();VA.sizeOfGeoPolygon(),VA.sizeOfGeoLoop(),VA.sizeOfLinkedGeoPolygon(),VA.sizeOfCoordIJ();var XA=/[^0-9a-fA-F]/;function qA(A){if(A>=0)return A.toString(WA);var e=$A(8,(A&=2147483647).toString(WA));return(parseInt(e[0],WA)+8).toString(WA)+e.substring(1)}function $A(A,e){for(var t=A-e.length,r="",n=0;n.85?.9+(i-.85)/.15*.1:.1+(i-.15)/.7*.8;var i;return se(r[Math.min(23,Math.floor(24*o))])}function ce({coveragePoints:e,visible:r,terrainEnabled:n=!1,brightness:o=.7}){const{current:i}=R(),[a,s]=A.useState(null),[l,c]=A.useState(!1),u=A.useRef({aborted:!1}),d=A.useRef(0),f=function(e){const[t,r]=A.useState(e);return A.useEffect(()=>{const A=setTimeout(()=>r(e),300);return()=>clearTimeout(A)},[e,300]),t}(e),g=A.useMemo(()=>function(){var A;const e=uA();return 24===e.length&&0!==(null==(A=e[0])?void 0:A[0])?e:ae}(),[]);A.useEffect(()=>{if(!f||!Array.isArray(f)||0===f.length)return s(null),void(d.current=0);if(f.length===d.current&&a)return;d.current=f.length,u.current.aborted=!0,u.current={aborted:!1};const A=u.current;c(!0);const{cells:e,minQuality:t,maxQuality:r}=function(A){const e=new Map;for(const o of A){if("number"!=typeof o.lat||"number"!=typeof o.lon||isNaN(o.lat)||isNaN(o.lon))continue;const A=te(o.lat,o.lon,8),t=e.get(A),r=o.weight;t?(t.count++,t.qualitySum+=r):e.set(A,{count:1,qualitySum:r})}const t=[];let r=1/0,n=-1/0;for(const[o,i]of e.entries()){const A=i.qualitySum/i.count;t.push({hexId:o,count:i.count,avgQuality:A}),r=Math.min(r,A),n=Math.max(n,A)}return{cells:t,minQuality:t.length>0?r:0,maxQuality:t.length>0?n:0}}(f);if(0===e.length)return s(null),void c(!1);if(e.length<500){const n=function(A,e,t,r){const n=[];for(const o of A){const A=re(o.hexId).map(([A,e])=>[e,A]);A.push(A[0]);const i=le(o.avgQuality,e,t,r);n.push({type:"Feature",properties:{color:i,quality:o.avgQuality,count:o.count},geometry:{type:"Polygon",coordinates:[A]}})}return{type:"FeatureCollection",features:n}}(e,t,r,g);return void(A.aborted||(s(n),c(!1)))}return async function(A,e,t,r,n){const o=[];let i=0;for(;i[e,A]);a.push(a[0]);const s=le(n.avgQuality,e,t,r);o.push({type:"Feature",properties:{color:s,quality:n.avgQuality,count:n.count},geometry:{type:"Polygon",coordinates:[a]}})}irequestAnimationFrame(A))}return{type:"FeatureCollection",features:o}}(e,t,r,g,A).then(e=>{!A.aborted&&e&&s(e)}).finally(()=>{A.aborted||c(!1)}),()=>{A.aborted=!0}},[f,g]),A.useEffect(()=>{var A;const e=null==(A=null==i?void 0:i.getMap)?void 0:A.call(i);if(!e)return;const t=()=>{var A,t;try{const n=e.getLayer(ie),i=e.getSource(oe);if(r&&a&&a.features.length>0){if(i?e.getSource(oe).setData(a):e.addSource(oe,{type:"geojson",data:a}),!n){const r=e.getLayer("topology-weak-edges-native"),n=null==(t=null==(A=e.getStyle())?void 0:A.layers)?void 0:t.find(A=>"symbol"===A.type),i=r?"topology-weak-edges-native":null==n?void 0:n.id;e.addLayer({id:ie,type:"fill",source:oe,paint:{"fill-color":["get","color"],"fill-opacity":o}},i)}}else n&&e.removeLayer(ie),i&&e.removeSource(oe)}catch(n){}};e.isStyleLoaded()?t():e.once("style.load",t)},[i,r,a,n]),A.useEffect(()=>{var A;const e=null==(A=null==i?void 0:i.getMap)?void 0:A.call(i);if(e&&r)try{e.getLayer(ie)&&e.setPaintProperty(ie,"fill-opacity",o)}catch{}},[i,o,r]),A.useEffect(()=>()=>{var A;const e=null==(A=null==i?void 0:i.getMap)?void 0:A.call(i);if(e)try{e.getLayer(ie)&&e.removeLayer(ie),e.getSource(oe)&&e.removeSource(oe)}catch{}},[i]);const h=(null==a?void 0:a.features.length)??0;return h>0&&r?t.jsx("div",{"data-testid":"wardriving-hexlayer-maplibre-active","data-point-count":(null==e?void 0:e.length)||0,"data-cell-count":h,"data-terrain-enabled":n,"data-is-processing":l,style:{display:"none"}}):null}const ue="terrain-dem",de="terrain-hillshade";function fe({enabled:e,exaggeration:t=2}){const{current:r}=R(),n=A.useRef(null);return A.useEffect(()=>{var A;const o=null==(A=null==r?void 0:r.getMap)?void 0:A.call(r);if(!o)return;let i=!0;const a=()=>{var A,r;if(i)try{if(o.getSource(ue)||o.addSource(ue,{type:"raster-dem",tiles:["https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png"],encoding:"terrarium",tileSize:256,maxzoom:10}),e){if(o.setCenterClampedToGround(!1),o.setTerrain({source:ue,exaggeration:t}),!o.getLayer(de)){const e=null==(r=null==(A=o.getStyle())?void 0:A.layers)?void 0:r.find(A=>"symbol"===A.type);o.addLayer({id:de,type:"hillshade",source:ue,paint:{"hillshade-shadow-color":"rgba(10, 10, 10, 0.5)","hillshade-highlight-color":"rgba(200, 195, 185, 0.4)","hillshade-accent-color":"rgba(80, 65, 55, 0.35)","hillshade-illumination-direction":315,"hillshade-exaggeration":.25}},null==e?void 0:e.id)}o.setMaxPitch(70),o.getPitch()<30&&!o.isMoving()&&(null!==n.current&&clearTimeout(n.current),n.current=window.setTimeout(()=>{n.current=null,i&&!o.isMoving()&&o.getPitch()<30&&o.easeTo({pitch:45,duration:1e3})},200))}else o.setTerrain(null),o.setCenterClampedToGround(!0),o.getLayer(de)&&o.removeLayer(de),o.getSource(ue)&&o.removeSource(ue),o.getPitch()>0&&!o.isMoving()&&o.easeTo({pitch:0,duration:800}),o.setMaxPitch(60)}catch(a){}};let s=null;return o.isStyleLoaded()?a():(s=a,o.once("style.load",a)),()=>{if(i=!1,null!==n.current&&(clearTimeout(n.current),n.current=null),s)try{o.off("style.load",s)}catch{}try{o.isStyleLoaded()&&(o.setTerrain(null),o.getLayer(de)&&o.removeLayer(de),o.getSource(ue)&&o.removeSource(ue))}catch{}}},[r,e,t]),null}function ge(A,e=!1,t=!1,r=!1,n=.7){const o=lA();return r?n>=.75?o.restBright:o.rest:n>=.85?o.rest:o.restDim}function he(A){return[A[1],A[0]]}function me(A){return A<.5?4*A*A*A:1-Math.pow(-2*A+2,3)/2}function be(A,e,t,r,n,o,i,a,s,l,c){const u=pA(),d=[];let f=1/0,g=-1/0;const h=[];for(const b of A){const A=.7*(b.edge.avgConfidence??(e?.7:.5))+b.edge.certainCount/Math.max(i,1)*.3+(e?.5:0);h.push({polyline:b,brightnessScore:A}),f=Math.min(f,A),g=Math.max(g,A)}if(0===h.length)return{type:"FeatureCollection",features:[]};const m=g-f||1;h.sort((A,e)=>A.brightnessScore-e.brightnessScore);for(const{polyline:b,brightnessScore:p}of h){const{from:A,to:i,edge:g}=b,h=t.get(g.key)??0;if(h<=0)continue;const x=a.has(g.key),v=s.has(g.key),w=g.avgConfidence??(e?.7:.5),y=l===g.key,k=c[g.fromHash],C=c[g.toHash],B=(null==k?void 0:k.node_name)||(null==k?void 0:k.name)||g.fromHash.slice(0,8),D=(null==C?void 0:C.node_name)||(null==C?void 0:C.name)||g.toHash.slice(0,8),M=[A[0]+(i[0]-A[0])*h,A[1]+(i[1]-A[1])*h];let E,Q,N,j;if(e){const A=o.get(g.key)??gA(g.certainCount),e=n.get(g.key)??A;E=e+(A-e)*r,y?E=Math.max(1.6*E,4.5):v&&(E*=1.3)}else E=1.5;if(Q=y?u.edges.highlight:ge(0,g.isDirectPathEdge??!1,x,v,w),N=y?u.edges.highlight:g.isDirectPathEdge?u.edges.hoverDirect:x?u.edges.hoverLoop:u.edges.hoverStandard,e){const A=Math.min(1.5*h,1)*u.edgeOpacity;j=v?1.15*A:A}else j=(.3+.3*w)*h;y&&(j=.95);const P=(p-f)/m;d.push({type:"Feature",properties:{key:g.key,baseColor:Q,hoverColor:N,baseWidth:E,baseOpacity:j,brightnessScore:P,isLoopEdge:x,isBackbone:v,isDirectPath:g.isDirectPathEdge??!1,isHubConnection:g.isHubConnection??!1,isZeroHop:g.isZeroHop??!1,isValidated:e,certainCount:g.certainCount,confidence:w,symmetryRatio:g.symmetryRatio??1,dominantDirection:g.dominantDirection??"balanced",fromName:B,toName:D,fromHash:g.fromHash,toHash:g.toHash},geometry:{type:"LineString",coordinates:[he(A),he(M)]}})}return{type:"FeatureCollection",features:d}}function pe(A){const e=pA(),t=[];for(const r of A){const{from:A,to:n,hash:o,neighbor:i,lastHopData:a}=r,s=`neighbor-${o}`,l=(null==a?void 0:a.avgRssi)??i.rssi??null,c=(null==a?void 0:a.avgSnr)??i.snr??null,u=(null==a?void 0:a.count)??0,d=(null==a?void 0:a.confidence)??1,f=r.rxAdvertCount??0,g=r.txProxyCount??0,h=f+g;let m=0;h>0&&(m=(g-f)/h);const b=r.forwardCount??0,p=r.reverseCount??0,x=b+p,v=x>0?b/x:.5,w=x>0?p/x:.5;t.push({type:"Feature",properties:{key:s,hash:o,name:i.node_name||i.name||o.slice(0,8),prefix:o.slice(2,4).toUpperCase(),color:e.neighborColor,width:2.5,opacity:.85,rssi:l,snr:c,packetCount:u,confidence:d,hasAvgRssi:void 0!==(null==a?void 0:a.avgRssi),hasAvgSnr:void 0!==(null==a?void 0:a.avgSnr),isNeighborEdge:!0,localShare:v,neighborShare:w,linkAsymmetry:m,rxAdvertCount:f,txProxyCount:g},geometry:{type:"LineString",coordinates:[he(A),he(n)]}})}return{type:"FeatureCollection",features:t}}function xe(A){return A<.5?4*A*A*A:1-Math.pow(-2*A+2,3)/2}function ve(A,e){if(A<240)return.5;if(A<480)return 1;const t=(A-480)/(e-480);return Math.max(0,.33*(1-t))}function we(A,e,t){const r=t?q(t):null,n=[];for(const o of A){if(r&&o.toUpperCase()===r){t&&n.push(t);continue}const A=e.get(o.toUpperCase());A&&n.push(A)}return n}const ye="edge-blink-source",ke="edge-blink-layer",Ce=1e3,Be=1e3,De="node-markers-layer";function Me(A){return A<0||A>=Ce?0:1-A/Ce}function Ee(A){if(A<0)return 0;if(A>=Be)return 0;const e=A/Be;return Math.pow(1-e,3)}function Qe(A){return[A[1],A[0]]}const Ne="node-markers-native",je="node-markers-layer",Pe="node-markers-layer-local",Se="marker-standard",Fe="marker-standard-neighbor",Te="marker-hub",Ie="marker-hub-neighbor",Le="marker-gateway",Re="marker-gateway-neighbor",_e="marker-mobile",He="marker-mobile-neighbor",ze="marker-room-server",Ge="marker-room-server-neighbor",Ue="marker-local",Oe="marker-blink-black",Ye="marker-blink-black-local",Ve="marker-blink",We="marker-blink-local",Ze=24;function Ke(A){var e;const t=null==(e=A.contact_type)?void 0:e.toLowerCase();return"room server"===t||"room_server"===t||"room"===t||"server"===t}function Je(A){return A.startsWith("0x")?A.slice(2,4).toUpperCase():A.slice(0,2).toUpperCase()}function Xe({neighborsWithLocation:e,localNode:r,localHash:n,zeroHopNeighbors:o,lastHopNeighborMap:i,meshTopology:a,hoveredMarker:s,onMarkerHover:l,getNodeOpacity:c,shouldShowNode:u,onRequestRemove:d,openPopupId:f,onOpenPopup:g,onClosePopup:h,blinkingNodes:m}){const{current:b}=R(),p=A.useRef(!1),[x,v]=A.useState(!1);A.useEffect(()=>{var A;const e=null==(A=null==b?void 0:b.getMap)?void 0:A.call(b);if(!e)return;const t=()=>{if(!p.current)try{!function(A){const e=sA(),t=(A,e,t=0,r=!1)=>{const n=document.createElement("canvas");n.width=Ze,n.height=Ze;const o=n.getContext("2d",r?{colorSpace:"display-p3"}:void 0),i=10-t/2;return o.beginPath(),o.arc(12,12,i,0,2*Math.PI),o.fillStyle=A,o.fill(),e&&t>0&&(o.strokeStyle=e,o.lineWidth=2*t,o.stroke()),o.shadowColor="rgba(0,0,0,0.3)",o.shadowBlur=4,o.shadowOffsetY=2,o.getImageData(0,0,Ze,Ze)},r=(A,e=!1)=>{const t=document.createElement("canvas");t.width=Ze,t.height=Ze;const r=t.getContext("2d",e?{colorSpace:"display-p3"}:void 0),n=9.600000000000001;return r.strokeStyle=A,r.lineWidth=5,r.lineCap="round",r.lineJoin="round",r.beginPath(),r.moveTo(12-n,12),r.lineTo(12,12-n),r.lineTo(21.6,12),r.stroke(),r.beginPath(),r.moveTo(12-.7*n,12),r.lineTo(12-.7*n,18.72),r.lineTo(18.72,18.72),r.lineTo(18.72,12),r.stroke(),r.beginPath(),r.moveTo(10.08,18.72),r.lineTo(10.08,13.92),r.lineTo(13.92,13.92),r.lineTo(13.92,18.72),r.stroke(),r.getImageData(0,0,Ze,Ze)},n=(A,e)=>{const t=document.createElement("canvas");t.width=Ze,t.height=Ze;const r=t.getContext("2d"),n=9.600000000000001;return r.strokeStyle=A,r.lineWidth=5,r.lineCap="round",r.lineJoin="round",e&&(r.fillStyle=e),r.beginPath(),r.roundRect(12-n,12-.6*n,1.6*n,1.2*n,6),e&&r.fill(),r.stroke(),r.beginPath(),r.moveTo(9.12,17.76),r.lineTo(12-.6*n,21.6),r.lineTo(12,17.76),r.stroke(),r.getImageData(0,0,Ze,Ze)},o="#00FF00",i={[Se]:t(e.nodeFill,e.nodeStroke,1.5),[Fe]:t(e.neighborColor),[Te]:t(e.hubColor),[Ie]:t(e.neighborColor),[Le]:t(e.hubColor+"B3"),[Re]:t(e.neighborColor),[_e]:t("transparent",e.mobileColor,2),[He]:t(e.neighborColor),[ze]:n(e.roomColor),[Ge]:n(e.neighborColor,"#1a1a1c"),[Ue]:r(e.localColor),[Oe]:t("#000000"),[Ye]:r("#000000"),[Ve]:t(o,void 0,0,!0),[We]:r(o,!0)};for(const[a,s]of Object.entries(i))A.hasImage(a)&&A.removeImage(a),A.addImage(a,s,{pixelRatio:2})}(e),p.current=!0,v(!0)}catch(A){}};e.isStyleLoaded()?t():e.once("style.load",t);const r=()=>{p.current=!1,t()},n=new MutationObserver(A=>{for(const e of A)if("data-theme"===e.attributeName){setTimeout(r,100);break}});return n.observe(document.documentElement,{attributes:!0}),()=>{n.disconnect()}},[b]);const w=A.useMemo(()=>{var A;const t=[],r=[...e].sort(([A,e],[t,r])=>{const n=(A,e)=>{var t;return Ke(e)?5e3:o.has(A)?3e3:a.hubNodes.includes(A)?2e3:(null==(t=a.gatewayNodes)?void 0:t.includes(A))?1e3:0};return n(A,e)-n(t,r)});for(const[e,n]of r){if(!n.latitude||!n.longitude)continue;const r=u(e),s=c(e,r);if(s<=.01)continue;const l=o.has(e),d=a.hubNodes.includes(e),f=(null==(A=a.gatewayNodes)?void 0:A.includes(e))??!1,g=a.mobileNodes.includes(e),h=Ke(n),b=a.centrality.get(e)||0,p=i.get(e),x="stale"===(null==p?void 0:p.status),v=x?Math.min(s,.5):s;let w="standard";h?w="roomServer":d?w="hub":f?w="gateway":g&&(w="mobile");const y=a.fullAffinity.get(e),k=a.txDelayRecommendations.get(e);t.push({type:"Feature",geometry:{type:"Point",coordinates:[n.longitude,n.latitude]},properties:{hash:e,name:n.node_name||n.name||"Unknown",hashPrefix:Je(e),iconType:w,isNeighbor:l,isHub:d,isGateway:f,isMobile:g,isRoomServer:h,isStale:x,isZeroHop:l,opacity:v,blinkIntensity:(null==m?void 0:m.get(e))??0,lastSeenTimestamp:null==p?void 0:p.lastSeen,centrality:b,neighborJson:JSON.stringify(n),affinityJson:y?JSON.stringify(y):void 0,txDelayRecJson:k?JSON.stringify(k):void 0,meanSnr:(null==p?void 0:p.avgSnr)??void 0,meanRssi:(null==p?void 0:p.avgRssi)??void 0}})}return{type:"FeatureCollection",features:t}},[e,o,i,a,c,u,m]),y=A.useMemo(()=>{if(!(null==r?void 0:r.latitude)||!(null==r?void 0:r.longitude))return{type:"FeatureCollection",features:[]};const A=n?(null==m?void 0:m.get(n))??0:0;return{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:[r.longitude,r.latitude]},properties:{hash:"local",name:r.name,hashPrefix:n?Je(n):"",iconType:"local",isNeighbor:!1,isHub:!1,isGateway:!1,isMobile:!1,isRoomServer:!1,isStale:!1,isZeroHop:!1,opacity:1,blinkIntensity:A,centrality:0}}]}},[r,n,m]),k=A.useCallback(A=>{var e;if(!A.features||0===A.features.length)return;const t=null==(e=A.features[0].properties)?void 0:e.hash;t&&g&&g(t)},[g]),C=A.useCallback(A=>{var e,t;if(!A.features||0===A.features.length)return;const r=null==(e=null==b?void 0:b.getMap)?void 0:e.call(b);r&&(r.getCanvas().style.cursor="pointer");const n=null==(t=A.features[0].properties)?void 0:t.hash;n&&l(n)},[b,l]),B=A.useCallback(()=>{var A;const e=null==(A=null==b?void 0:b.getMap)?void 0:A.call(b);e&&(e.getCanvas().style.cursor=""),l(null)},[b,l]);A.useEffect(()=>{var A;const e=null==(A=null==b?void 0:b.getMap)?void 0:A.call(b);if(!e||!x)return;const t=[je,Pe];for(const r of t)e.on("click",r,k),e.on("mouseenter",r,C),e.on("mouseleave",r,B);return()=>{for(const A of t)e.off("click",A,k),e.off("mouseenter",A,C),e.off("mouseleave",A,B)}},[b,x,k,C,B]);const D=A.useMemo(()=>{if(!f)return null;if("local"===f&&r)return{longitude:r.longitude,latitude:r.latitude,isLocal:!0,name:r.name,hash:n};const A=w.features.find(A=>A.properties.hash===f);if(!A)return null;const e=A.properties,t=e.txDelayRecJson?JSON.parse(e.txDelayRecJson):void 0;return{longitude:A.geometry.coordinates[0],latitude:A.geometry.coordinates[1],isLocal:!1,hash:e.hash,hashPrefix:e.hashPrefix,name:e.name,isHub:e.isHub,isGateway:e.isGateway,isBackbone:"backbone"===(null==t?void 0:t.networkRole),isZeroHop:e.isZeroHop,isMobile:e.isMobile,isRoomServer:e.isRoomServer,isStale:e.isStale,lastSeenTimestamp:e.lastSeenTimestamp,centrality:e.centrality,neighbor:e.neighborJson?JSON.parse(e.neighborJson):void 0,affinity:e.affinityJson?JSON.parse(e.affinityJson):void 0,txDelayRec:t,meanSnr:e.meanSnr,meanRssi:e.meanRssi}},[f,r,n,w]);if(!x)return null;const M=sA(),E=["case",[">",["get","blinkIntensity"],.66],Ve,[">",["get","blinkIntensity"],.33],Oe,["==",["get","iconType"],"roomServer"],["case",["get","isNeighbor"],Ge,ze],["==",["get","iconType"],"hub"],["case",["get","isNeighbor"],Ie,Te],["==",["get","iconType"],"gateway"],["case",["get","isNeighbor"],Re,Le],["==",["get","iconType"],"mobile"],["case",["get","isNeighbor"],He,_e],["case",["get","isNeighbor"],Fe,Se]],Q=["interpolate",["linear"],["zoom"],6,.25,10,1];return t.jsxs(t.Fragment,{children:[t.jsx(_,{id:Ne,type:"geojson",data:w,children:t.jsx(H,{id:je,type:"symbol",layout:{"icon-image":E,"icon-size":Q,"icon-allow-overlap":!0,"icon-ignore-placement":!0,"symbol-sort-key":["get","opacity"]},paint:{"icon-opacity":["get","opacity"]}})}),t.jsx(_,{id:`${Ne}-local`,type:"geojson",data:y,children:t.jsx(H,{id:Pe,type:"symbol",layout:{"icon-image":["case",[">",["get","blinkIntensity"],.66],We,[">",["get","blinkIntensity"],.33],Ye,Ue],"icon-size":Q,"icon-allow-overlap":!0,"icon-ignore-placement":!0},paint:{"icon-opacity":1}})}),D&&h&&t.jsx(z,{longitude:D.longitude,latitude:D.latitude,offset:{center:[0,0],top:[0,10],"top-left":[6,10],"top-right":[-6,10],bottom:[0,-10],"bottom-left":[6,-10],"bottom-right":[-6,-10],left:[10,0],right:[-10,0]},maxWidth:"280px",closeOnClick:!0,onClose:h,className:"maplibre-popup",children:D.isLocal?t.jsxs("div",{className:"text-sm",children:[t.jsx("strong",{className:"text-base",children:D.name}),D.hash&&t.jsx("span",{className:"ml-2 font-mono text-xs text-text-muted bg-surface-elevated px-1.5 py-0.5 rounded",children:Je(D.hash)}),t.jsx("br",{}),t.jsx("span",{style:{color:M.localColor},className:"font-medium",children:"This Node (Local)"}),t.jsx("br",{}),r&&t.jsxs("span",{className:"text-xs text-text-muted",children:[r.latitude.toFixed(5),", ",r.longitude.toFixed(5)]})]}):D.neighbor&&D.hash?t.jsx(yA,{hash:D.hash,hashPrefix:D.hashPrefix,name:D.name,isHub:D.isHub,isGateway:D.isGateway,isBackbone:D.isBackbone,isZeroHop:D.isZeroHop,isMobile:D.isMobile,isRoomServer:D.isRoomServer,isStale:D.isStale,lastSeenTimestamp:D.lastSeenTimestamp,centrality:D.centrality,affinity:D.affinity,meanSnr:D.meanSnr,meanRssi:D.meanRssi,neighbor:D.neighbor,txDelayRec:D.txDelayRec,onRemove:d?()=>d(D.hash,D.name):void 0}):null})]})}A.createContext(null);const qe="topology-validated-edges-native",$e="topology-weak-edges-native",At="neighbor-edges-native",et="topology-weak-edges-native",tt="topology-validated-edges-native",rt="neighbor-edges-native",nt={type:"FeatureCollection",features:[]},ot={"line-cap":"round","line-join":"round"},it={"line-color":"transparent","line-width":16,"line-opacity":0};function at({showTopology:e,isExiting:r,hoveredEdgeKey:n,highlightedLoopEdges:o,onEdgeHover:i,onLoopHover:a,loops:s=[],neighborNames:l={},opacityBias:c=.5,widthMultiplier:u=1,trafficFilter:d=0,showNeighborLines:f=!0,disableHover:g=!1}){const{current:h}=R(),m=e||r,b=!0,p=f?"visible":"none",x=g||r,v=A.useRef(null),w=A.useRef(x);w.current=x;const y=A.useMemo(()=>function(A){const e=new Map;for(const t of A)for(const A of t.edgeKeys){const r=e.get(A)??[];r.push(t),e.set(A,r)}return e}(s),[s]),k=A.useRef(y);k.current=y;const C=A.useRef(l);C.current=l;const B=A.useRef(a);B.current=a;const D=A.useCallback(A=>{var e,t;if(w.current)return;if(!A.features||0===A.features.length)return;const r=A.features[0].properties;if(!(null==r?void 0:r.key))return;const n=r.key;if(n!==v.current){v.current=n;const o=!0===r.isNeighborEdge||"true"===r.isNeighborEdge,a=!0===r.isLoopEdge||"true"===r.isLoopEdge;if(o){const t={key:n,fromName:"Local",toName:r.name,certainCount:Number(r.packetCount)||0,confidence:1,isBackbone:!1,isLoopEdge:!1,isDirectPath:!0,isZeroHop:!0,symmetryRatio:1,dominantDirection:"balanced",isHubConnection:!1};i(n,[A.lngLat.lng,A.lngLat.lat],t),null==(e=B.current)||e.call(B,null)}else if(a&&B.current){const e=k.current.get(n)??[];if(e.length>0){const t=new Set;for(const A of e)for(const e of A.edgeKeys)t.add(e);const r={loops:e,highlightedEdgeKeys:t,hoveredEdgeKey:n,nodeNames:e[0].nodes.map(A=>C.current[A]||A.substring(0,4))};B.current(r,[A.lngLat.lng,A.lngLat.lat]),i(n)}else{const e={key:n,fromName:r.fromName,toName:r.toName,certainCount:Number(r.certainCount),confidence:Number(r.confidence),isBackbone:!0===r.isBackbone||"true"===r.isBackbone,isLoopEdge:!0,isDirectPath:!0===r.isDirectPath||"true"===r.isDirectPath,isZeroHop:!0===r.isZeroHop||"true"===r.isZeroHop,symmetryRatio:Number(r.symmetryRatio),dominantDirection:r.dominantDirection,isHubConnection:!0===r.isHubConnection||"true"===r.isHubConnection};i(n,[A.lngLat.lng,A.lngLat.lat],e)}}else{const e={key:n,fromName:r.fromName,toName:r.toName,certainCount:Number(r.certainCount),confidence:Number(r.confidence),isBackbone:!0===r.isBackbone||"true"===r.isBackbone,isLoopEdge:a,isDirectPath:!0===r.isDirectPath||"true"===r.isDirectPath,isZeroHop:!0===r.isZeroHop||"true"===r.isZeroHop,symmetryRatio:Number(r.symmetryRatio),dominantDirection:r.dominantDirection,isHubConnection:!0===r.isHubConnection||"true"===r.isHubConnection};i(n,[A.lngLat.lng,A.lngLat.lat],e),null==(t=B.current)||t.call(B,null)}}},[i]),M=A.useCallback(()=>{var A;null!==v.current&&(v.current=null,i(null),null==(A=B.current)||A.call(B,null))},[i]);A.useEffect(()=>{var A;const e=null==(A=null==h?void 0:h.getMap)?void 0:A.call(h);if(!e||!m)return;const t="topology-validated-edges-hitarea-native",r=()=>{try{return e.getStyle()&&e.getLayer(t)}catch{return!1}},n=()=>!!r()&&(e.on("mousemove",t,D),e.on("mouseleave",t,M),!0);if(!n()){const A=()=>{n()&&e.off("styledata",A)};return e.on("styledata",A),()=>{try{e.off("styledata",A),r()&&(e.off("mousemove",t,D),e.off("mouseleave",t,M))}catch{}}}return()=>{try{r()&&(e.off("mousemove",t,D),e.off("mouseleave",t,M))}catch{}}},[h,m,D,M]),A.useEffect(()=>{var A;const e=null==(A=null==h?void 0:h.getMap)?void 0:A.call(h);if(!e||!f)return;const t="neighbor-edges-hitarea-native",r=()=>{try{return e.getStyle()&&e.getLayer(t)}catch{return!1}},n=()=>!!r()&&(e.on("mousemove",t,D),e.on("mouseleave",t,M),!0);if(!n()){const A=()=>{n()&&e.off("styledata",A)};return e.on("styledata",A),()=>{try{e.off("styledata",A),r()&&(e.off("mousemove",t,D),e.off("mouseleave",t,M))}catch{}}}return()=>{try{r()&&(e.off("mousemove",t,D),e.off("mouseleave",t,M))}catch{}}},[h,b,f,D,M]),A.useEffect(()=>{var A;const e=null==(A=null==h?void 0:h.getMap)?void 0:A.call(h);if(!e)return;let t=null;const r=(A,t)=>{try{if(e.getLayer(A)&&e.getLayer(t))return e.moveLayer(A,t),!0}catch{}return!1},n=()=>{try{if(!e.getLayer("node-markers-layer"))return;r(rt,"node-markers-layer"),r("neighbor-edges-hitarea-native",rt),(r(tt,"neighbor-edges-hitarea-native")||r(tt,"node-markers-layer"))&&r("topology-validated-edges-hitarea-native",tt),r(et,"topology-validated-edges-hitarea-native")}catch{}},o=()=>{t&&clearTimeout(t),t=setTimeout(n,50)},i=setTimeout(n,100);e.on("styledata",o);const a=A=>{(A.sourceId===qe||A.sourceId===$e||A.sourceId===At)&&o()};return e.on("sourcedata",a),()=>{clearTimeout(i),t&&clearTimeout(t);try{e.off("styledata",o),e.off("sourcedata",a)}catch{}}},[h,m,b,f]);const E=x?null:n,Q=function(A,e,t,r,n){const o=pA(),i=null!==A,a=n&&n.size>0,s=a?Array.from(n):[],l=e<=0?["get","baseColor"]:["case",[">=",["get","brightnessScore"],1-.5*e],"#FFFFFF",["get","baseColor"]],c=e<=0?1:["max",.1,["+",1,["*",e,3,["-",["get","brightnessScore"],.5]]]],u=a?["in",["get","key"],["literal",s]]:!!i&&["==",["get","key"],A],d=i||a,f=o.edges.hoverLoop??"#A78BFA";return{"line-color":d?["case",u,a?f:["get","hoverColor"],l]:l,"line-width":d?["case",u,["max",["*",["get","baseWidth"],t,1.3],3.5],["*",["get","baseWidth"],t]]:["*",["get","baseWidth"],t],"line-opacity":["case",["<",["get","brightnessScore"],r],0,d?["case",u,["min",["*",["get","baseOpacity"],1.25],1],["*",["get","baseOpacity"],c,.35]]:["*",["get","baseOpacity"],c]]}}(E,c,u,d,x?null:o),N=function(A){const e=null!==A,t="#FBBF24",r=["interpolate",["linear"],["get","linkAsymmetry"],-1,t,0,t,1,"#FF8000"];return{"line-color":e?["case",["==",["get","key"],A],t,r]:r,"line-width":e?["case",["==",["get","key"],A],4,2.5]:2.5,"line-opacity":e?["case",["==",["get","key"],A],1,.6]:.85}}(E);return t.jsxs(t.Fragment,{children:[m&&t.jsx(_,{id:$e,type:"geojson",data:nt,children:t.jsx(H,{id:et,type:"line",paint:Q,layout:ot})}),m&&t.jsxs(_,{id:qe,type:"geojson",data:nt,children:[t.jsx(H,{id:"topology-validated-edges-hitarea-native",type:"line",paint:it,layout:ot}),t.jsx(H,{id:tt,type:"line",paint:Q,layout:ot})]}),t.jsxs(_,{id:At,type:"geojson",data:nt,children:[t.jsx(H,{id:"neighbor-edges-hitarea-native",type:"line",paint:it,layout:{...ot,visibility:p}}),t.jsx(H,{id:rt,type:"line",paint:N,layout:{...ot,visibility:p}})]})]})}const st=["topology-validated-edges-hitarea-native","topology-validated-edges-native","topology-weak-edges-native","neighbor-edges-hitarea-native","neighbor-edges-native"];function lt({positions:e}){const{current:t}=R(),r=A.useRef(!1);return A.useEffect(()=>{if(!t||0===e.length||r.current)return;const A=()=>{if(t.getMap().isMoving())setTimeout(A,100);else if(r.current=!0,1===e.length)t.flyTo({center:[e[0][1],e[0][0]],zoom:14,duration:1e3});else{const A=e.map(([A,e])=>[e,A]);let r=1/0,n=-1/0,o=1/0,i=-1/0;for(const[e,t]of A)r=Math.min(r,e),n=Math.max(n,e),o=Math.min(o,t),i=Math.max(i,t);const a=[[r,o],[n,i]];t.fitBounds(a,{padding:{top:15,bottom:15,left:15,right:15},maxZoom:16,duration:1e3})}};setTimeout(A,50)},[t,e]),null}function ct({targetHash:e,nodeCoordinates:t,onComplete:r}){const{current:n}=R(),o=A.useRef(null);return A.useEffect(()=>{if(!n||!e||e===o.current)return;const A=t.get(e);if(!A)return;const i=n.getMap();i.isMoving()&&i.stop(),o.current=e;const[a,s]=A;n.flyTo({center:[s,a],zoom:15,duration:2500,essential:!0}),setTimeout(()=>{null==r||r()},2600)},[e,t,n,r]),null}function ut({highlightedEdgeKey:e,validatedPolylines:t,weakPolylines:r,onEnsureTopology:n}){const{current:o}=R(),i=A.useRef(null);return A.useEffect(()=>{if(!o||!e)return;if(e===i.current)return;i.current=e,n();const A=t.find(A=>A.edge.key===e)||r.find(A=>A.edge.key===e);if(!A)return;if(o.getMap().isMoving())return;const a=(A.from[0]+A.to[0])/2,s=(A.from[1]+A.to[1])/2,l=o.getZoom(),c=Math.max(l,11);o.easeTo({center:[s,a],zoom:c,duration:500})},[e,t,r,o,n]),null}function dt(A,e,t,r){const n=(t-A)*Math.PI/180,o=(r-e)*Math.PI/180,i=Math.sin(n/2)*Math.sin(n/2)+Math.cos(A*Math.PI/180)*Math.cos(t*Math.PI/180)*Math.sin(o/2)*Math.sin(o/2);return 2*Math.atan2(Math.sqrt(i),Math.sqrt(1-i))*6371e3}function ft(A,e,t,r=64){const n=[],o=t/6371e3*(180/Math.PI),i=o/Math.cos(e*Math.PI/180);for(let a=0;a<=r;a++){const t=a/r*2*Math.PI,s=A+i*Math.cos(t),l=e+o*Math.sin(t);n.push([s,l])}return{type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[n]}}}function gt({ghost:e,neighborCoordinates:r,onHighlightedNeighborsChange:n}){const{current:o}=R(),i=A.useRef(null),a=A.useRef(null),s=A.useMemo(()=>e?new Set(e.commonNeighbors):new Set,[e]);A.useEffect(()=>{null==n||n(s)},[s,n]);const l=A.useMemo(()=>{if(!(null==e?void 0:e.commonNeighbors)||e.commonNeighbors.length<2)return 8e3;let A=0;const t=[];for(const n of e.commonNeighbors){const A=r.get(n);A&&t.push(A)}e.estimatedLocation&&t.push([e.estimatedLocation.lat,e.estimatedLocation.lon]);for(let e=0;eA&&(A=n)}return Math.max(A,2e3)},[null==e?void 0:e.commonNeighbors,null==e?void 0:e.estimatedLocation,r]),c=A.useMemo(()=>{if(!(null==e?void 0:e.estimatedLocation))return{type:"FeatureCollection",features:[]};const{lat:A,lon:t,uncertaintyM:r}=e.estimatedLocation,n=.5*l,o=r>0?r:2e3;return{type:"FeatureCollection",features:[ft(t,A,Math.max(500,Math.min(o,n)))]}},[null==e?void 0:e.estimatedLocation,l]);if(A.useEffect(()=>{if(!o)return;const A=o.getMap();if(e&&e.prefix!==a.current){if(a.current=e.prefix,!i.current&&A.getZoom()>3){const e=A.getCenter();i.current={center:[e.lng,e.lat],zoom:A.getZoom(),pitch:A.getPitch(),bearing:A.getBearing()}}const t=[];for(const A of e.commonNeighbors){const e=r.get(A);e&&t.push([e[1],e[0]])}if(e.estimatedLocation&&t.push([e.estimatedLocation.lon,e.estimatedLocation.lat]),t.length>0){const r=()=>{var n;if(A.isMoving())setTimeout(r,100);else if(1===t.length)o.flyTo({center:t[0],zoom:13,duration:1500});else{let A=1/0,r=-1/0,i=1/0,a=-1/0;for(const[e,n]of t)A=Math.min(A,e),r=Math.max(r,e),i=Math.min(i,n),a=Math.max(a,n);if(null==(n=e.estimatedLocation)?void 0:n.uncertaintyM){const t=e.estimatedLocation.uncertaintyM/111e3;A-=t,r+=t,i-=t,a+=t}o.fitBounds([[A,i],[r,a]],{padding:{top:60,bottom:60,left:60,right:60},maxZoom:14,duration:1500})}};setTimeout(r,50)}}if(!e&&null!==a.current&&(a.current=null,i.current)){const e=i.current,t=()=>{A.isMoving()?setTimeout(t,100):(o.flyTo({center:e.center,zoom:e.zoom,pitch:e.pitch,bearing:e.bearing,duration:1e3}),i.current=null)};setTimeout(t,50)}},[e,o,r]),!(null==e?void 0:e.estimatedLocation))return null;return t.jsx(_,{id:"ghost-uncertainty-circle",type:"geojson",data:c,children:t.jsx(H,{id:"ghost-uncertainty-fill",type:"fill",paint:{"fill-color":"rgba(167, 139, 250, 0.15)","fill-opacity":.8}})})}!function(A){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(A);e&&(parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16))}(bA.edges.neighborHover);const ht={longitude:0,latitude:0,zoom:2};function mt({data:A}){const e=A.subtitle&&"loop"===A.type,r=A.subtitle&&"loop"!==A.type;return t.jsxs("div",{className:"w-[540px]",children:[t.jsxs("div",{className:"flex items-center justify-between h-5",children:[t.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[A.title.icon&&t.jsx("span",{className:`${A.title.color} text-base leading-none flex-shrink-0`,children:A.title.icon}),t.jsx("span",{className:`${A.title.color} font-semibold text-[13px] truncate`,children:A.title.text}),r&&t.jsx("span",{className:`${A.subtitle.color} text-[11px] flex-shrink-0`,children:A.subtitle.text})]}),A.badges.length>0&&t.jsx("div",{className:"flex items-center gap-2 flex-shrink-0 ml-3",children:A.badges.map((A,e)=>t.jsx("span",{className:`${A.color} text-[11px] font-medium`,children:A.text},e))})]}),e&&t.jsx("div",{className:"h-4 mt-0.5 overflow-hidden",children:t.jsx("span",{className:"font-mono text-[10px] text-text-muted truncate block",children:A.subtitle.text})}),t.jsx("div",{className:`flex items-center gap-4 h-4 ${e?"mt-1":"mt-1.5"} text-[11px]`,children:A.stats.map((A,e)=>t.jsxs("span",{className:"whitespace-nowrap",children:[t.jsx("span",{className:`font-mono tabular-nums font-semibold ${A.color??"text-text-primary"}`,children:A.value}),t.jsx("span",{className:"text-text-muted ml-1",children:A.label}),A.unit&&t.jsx("span",{className:"text-text-muted/50 ml-0.5",children:A.unit})]},e))})]})}function bt({neighbors:e,localNode:r,localHash:n,onRemoveNode:o,selectedNodeHash:i,onNodeSelected:a,highlightedEdgeKey:s,highlightedGhost:l}){var c,u;const d=A.useRef(null),f=AA(),g=eA(),h=tA(),m=rA(),b=nA(),p=oA(A=>A.preloadFromNodes),x=oA(A=>A.isLoading),v=oA(A=>A.terrainGrid),w=n??b,[y,k]=A.useState(ht),[C,B]=A.useState(!1),[D,M]=A.useState(!1),[E,Q]=A.useState(!0),[N,j]=A.useState(!0),[P,S]=A.useState(!1),[F,T]=A.useState(!1),[I,L]=A.useState(!1),[R,_]=A.useState(!1),[H,z]=A.useState(null),[Y,V]=A.useState(null),[W]=A.useState(0),[Z]=A.useState(.5),[aA]=A.useState(0),[sA,lA]=A.useState(null),[cA,uA]=A.useState(""),[dA,fA]=A.useState(!1),[hA,bA]=A.useState("fetching"),[pA,vA]=A.useState(!1),[wA,yA]=A.useState(0),[CA,DA]=A.useState(null),EA=A.useCallback(A=>DA(A),[]),QA=A.useCallback(()=>DA(null),[]),[,NA]=A.useState(new Set),jA=LA(A=>A.coveragePoints),PA=LA(A=>A.isVisible),SA=LA(A=>A.brightness),FA=LA(A=>A.openModal),TA=A.useRef(!1);A.useEffect(()=>{jA.length>0&&PA&&!TA.current&&(Q(!1),TA.current=!0)},[jA.length,PA]);const IA=A.useRef(null);A.useEffect(()=>{if(i&&i!==IA.current){IA.current=i;const A=setTimeout(()=>{DA(i)},1250);return()=>clearTimeout(A)}},[i]);const[RA,HA]=A.useState(null),[zA,GA]=A.useState(null),UA=A.useCallback((A,e,t)=>{V(A),A&&e&&t?HA({longitude:e[0],latitude:e[1],type:"topology",properties:{key:t.key,fromName:t.fromName,toName:t.toName,certainCount:t.certainCount,confidence:t.confidence,isBackbone:t.isBackbone,isLoopEdge:t.isLoopEdge,isDirectPath:t.isDirectPath,isHubConnection:t.isHubConnection,color:"",width:0,opacity:0,symmetryRatio:t.symmetryRatio,dominantDirection:t.dominantDirection}}):A||HA(null)},[]),OA=A.useCallback((A,e)=>{GA(A),A&&HA(null)},[]),YA=A.useMemo(()=>{const A={};for(const[t,r]of Object.entries(e))A[t]=r.node_name||r.name||t.substring(0,4);return w&&(A[w]="You"),A},[e,w]),VA=A.useMemo(()=>Object.entries(e).filter(([,A])=>A.latitude&&A.longitude),[e]),WA=A.useMemo(()=>{const A=[];(null==r?void 0:r.latitude)&&(null==r?void 0:r.longitude)&&A.push([r.latitude,r.longitude]);for(const[,e]of VA)e.latitude&&e.longitude&&A.push([e.latitude,e.longitude]);return A},[r,VA]),ZA=A.useMemo(()=>{const A=new Map;w&&(null==r?void 0:r.latitude)&&(null==r?void 0:r.longitude)&&A.set(w,[r.latitude,r.longitude]);for(const[e,t]of VA)t.latitude&&t.longitude&&A.set(e,[t.latitude,t.longitude]);return A},[w,r,VA]),KA=A.useMemo(()=>{const A=new Map;for(const e of h)"expired"!==e.status&&A.set(e.hash,{hash:e.hash,prefix:e.prefix,count:e.count,avgRssi:e.avgRssi,avgSnr:e.avgSnr,lastSeen:e.lastSeen,confidence:1,status:e.status});return A},[h]),JA=A.useMemo(()=>{var A,t;const r=new Set;for(const n of KA.keys())(null==(A=e[n])?void 0:A.latitude)&&(null==(t=e[n])?void 0:t.longitude)&&r.add(n);return r},[KA,e]),XA=A.useCallback(A=>!!(w&&(A.fromHash===w&&JA.has(A.toHash)||A.toHash===w&&JA.has(A.fromHash))),[w,JA]),qA=A.useMemo(()=>{var A,t;if(0===h.length||!w)return[];if(m.backgroundLoadComplete)return[];const r=[];for(const n of h){if("expired"===n.status)continue;if(!(null==(A=e[n.hash])?void 0:A.latitude)||!(null==(t=e[n.hash])?void 0:t.longitude))continue;const o=[w,n.hash].sort(),i=`${o[0]}~${o[1]}`;r.push({fromHash:w,toHash:n.hash,key:i,packetCount:n.count,avgConfidence:1,strength:.8,avgRecency:1,hopDistanceFromLocal:0,isHubConnection:!1,isCertain:!0,certainCount:n.count,isLoopEdge:!1,forwardCount:n.count,reverseCount:0,symmetryRatio:0,dominantDirection:"forward",floodCount:n.count,directCount:0,isDirectPathEdge:!1,isZeroHop:!0,avgRssi:n.avgRssi,avgSnr:n.avgSnr})}return r},[h,w,m.backgroundLoadComplete,e]),$A=A.useMemo(()=>{const A=[];if(qA.length>0&&!m.backgroundLoadComplete){for(const e of qA){const t=ZA.get(e.fromHash),r=ZA.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A}for(const e of f.validatedEdges){if(XA(e))continue;const t=ZA.get(e.fromHash),r=ZA.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A},[f.validatedEdges,ZA,XA,qA,m.backgroundLoadComplete]),Ae=A.useMemo(()=>{const A=[];for(const e of f.weakEdges){if(XA(e))continue;const t=ZA.get(e.fromHash),r=ZA.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A},[f.weakEdges,ZA,XA]),ee=A.useMemo(()=>{if(!(null==r?void 0:r.latitude)||!(null==r?void 0:r.longitude))return[];const A=[],t=[r.latitude,r.longitude],n=new Map;for(const e of f.lastHopNeighbors)n.set(e.hash,e.count);const o=new Map;for(const e of h)o.set(e.hash,e.count);for(const r of JA){const i=e[r];if(!(null==i?void 0:i.latitude)||!(null==i?void 0:i.longitude))continue;const a=o.get(r),s=n.get(r);A.push({from:t,to:[i.latitude,i.longitude],hash:r,neighbor:i,lastHopData:KA.get(r)??null,rxAdvertCount:a,txProxyCount:s})}return A},[r,JA,e,KA,f.lastHopNeighbors,h]),te=A.useMemo(()=>new Set(f.loopEdgeKeys),[f.loopEdgeKeys]),re=A.useMemo(()=>new Set(f.backboneEdges),[f.backboneEdges]),ne=A.useMemo(()=>{let A=0;if(qA.length>0&&!m.backgroundLoadComplete){for(const e of qA)e.certainCount>A&&(A=e.certainCount);return A||1}for(const e of f.validatedEdges)e.certainCount>A&&(A=e.certainCount);return A||1},[f.validatedEdges,qA,m.backgroundLoadComplete]),oe=(null==(u=null==(c=d.current)?void 0:c.getMap)?void 0:u.call(c))??null,ie=K(),ae=A.useRef(J.getPackets());A.useEffect(()=>{ae.current=J.getPackets()},[ie]),function({map:e,nodeCoordinates:t,packets:r,localHash:n,neighbors:o,meshTopology:i}){const a=A.useRef(!1),s=A.useRef(null),l=A.useRef([]),c=A.useRef(0),u=A.useRef(new Map),d=A.useRef(t);A.useEffect(()=>{d.current=t},[t]),A.useEffect(()=>{u.current=function(A,e){const t=new Map;for(const r of Object.keys(A)){const A=q(r);t.has(A)||t.set(A,r)}if(e){const A=q(e);t.set(A,e)}return t}(o,n)},[o,n]),A.useEffect(()=>{if(!e)return;let A=null,t=!1;const r=()=>{if(!t&&!a.current)try{e.getLayer(ke)&&e.removeLayer(ke),e.getSource(ye)&&e.removeSource(ye),e.addSource(ye,{type:"geojson",data:{type:"FeatureCollection",features:[]}});const t=e.getLayer(De)?De:void 0;e.addLayer({id:ke,type:"line",source:ye,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":["case",["get","isSpeculative"],"#8B7BAD","#00FFFF"],"line-width":["case",["get","isSpeculative"],1.875,2.5],"line-opacity":["*",["get","opacityMult"],["interpolate",["linear"],["get","intensity"],0,0,.1,.8,.5,1,1,1]]}},t),a.current=!0,A&&(clearInterval(A),A=null)}catch{}};return e.isStyleLoaded()&&r(),e.once("style.load",()=>{r()}),a.current||(A=setInterval(()=>{a.current?A&&clearInterval(A):r()},100),setTimeout(()=>{A&&(clearInterval(A),A=null)},5e3)),()=>{t=!0,A&&clearInterval(A),null!==s.current&&(cancelAnimationFrame(s.current),s.current=null)}},[e]);const f=A.useRef(()=>{});A.useEffect(()=>{f.current=()=>{if(!e)return;const A=e.getSource(ye);if(!A)return;const t=performance.now(),r=l.current,n=[],o=[];for(const e of r){const A=t-e.startTime-e.delay;if(A<(e.isSpeculative?Be:Ce)){o.push(e);const t=e.isSpeculative?Ee(A):Me(A);t>0&&n.push({type:"Feature",properties:{intensity:t,opacityMult:e.isSpeculative?.5:1,isSpeculative:e.isSpeculative??!1},geometry:{type:"LineString",coordinates:[e.fromCoord,e.toCoord]}})}}A.setData({type:"FeatureCollection",features:n}),l.current=o,o.length>0?s.current=requestAnimationFrame(()=>f.current()):s.current=null}},[e]);const g=A.useCallback(()=>{e&&function(A){if(!A.getLayer(ke))return;const e=A.getLayer(De)?De:void 0;try{A.moveLayer(ke,e)}catch{}}(e),null===s.current&&(s.current=requestAnimationFrame(()=>f.current()))},[e]);A.useEffect(()=>{if(!e||0===r.length)return;if(!a.current)return;const A=u.current,t=d.current;if(0===A.size)return;const o=c.current,s=r.filter(A=>(A.timestamp??0)>o);if(0===o)return void(c.current=Math.max(...r.map(A=>A.timestamp??0)));if(0===s.length)return;c.current=Math.max(...s.map(A=>A.timestamp??0));const f=performance.now();let h=0,m=!1,b=[];const p=new Set;for(const e of s){const r=X(e,n);if(!r||r.original.length<2)continue;const o=r.original;let a=0,s=null;for(let e=0;e0){A.sort((A,e)=>e.confidence-A.confidence);const e=Math.max(1,Math.ceil(.25*A.length)),r=A.slice(0,e),n=h+150*a;for(const{edgeKey:A,otherHash:o}of r){const e=t.get(s),r=t.get(o);l.current.push({edgeKey:A,fromCoord:Qe(e),toCoord:Qe(r),startTime:f,delay:n,isSpeculative:!0}),p.add(A),m=!0}}}a>0&&(h+=150*a*.5)}m&&g()},[e,r,n,i,g])}({map:oe,nodeCoordinates:ZA,packets:ae.current,localHash:w,neighbors:e,meshTopology:f});const{isExiting:se,isAnimating:le,resetAnimationState:ue}=function({map:e,showTopology:t,validatedPolylines:r,weakPolylines:n,maxCertainCount:o,loopEdgeKeys:i,backboneEdgeKeys:a,highlightedEdgeKey:s,neighbors:l,validatedSourceId:c,weakSourceId:u,neighborPolylines:d=[],showNeighborLines:f=!0,neighborSourceId:g}){const h=A.useRef(new Map),m=A.useRef(1),b=A.useRef(new Map),p=A.useRef(new Map),x=A.useRef(!1),v=A.useRef(null),w=A.useRef(t),y=A.useRef(new Set),k=A.useRef(""),C=A.useRef(new Map),B=A.useRef(r),D=A.useRef(n),M=A.useRef(o),E=A.useRef(i),Q=A.useRef(a),N=A.useRef(s),j=A.useRef(l),P=A.useRef(d),S=A.useRef(f);A.useEffect(()=>{B.current=r,D.current=n,M.current=o,E.current=i,Q.current=a,N.current=s,j.current=l,P.current=d,S.current=f},[r,n,o,i,a,s,l,d,f]);const F=A.useCallback(()=>{if(!e)return;const A=e.getSource(c),t=e.getSource(u),r=e.getSource(g);if(A){const e=be(B.current,!0,h.current,m.current,b.current,p.current,M.current,E.current,Q.current,N.current,j.current);A.setData(e)}if(t){const A=be(D.current,!1,h.current,m.current,b.current,p.current,M.current,E.current,Q.current,N.current,j.current);t.setData(A)}if(r&&P.current.length>0){const A=pe(P.current);r.setData(A)}},[e,c,u,g]),T=A.useCallback(()=>{v.current&&(cancelAnimationFrame(v.current),v.current=null),h.current=new Map,m.current=1,b.current=new Map,p.current=new Map,x.current=!1,y.current=new Set,k.current="",C.current=new Map},[]);return A.useEffect(()=>{const A=w.current,r=t;if(w.current=t,e){if(v.current&&(cancelAnimationFrame(v.current),v.current=null),A&&!r&&!x.current){x.current=!0;const A=new Map(h.current);let e=null;const t=r=>{e||(e=r);const n=r-e,o=Math.min(n/500,1),i=(a=o,1-Math.pow(1-a,3));var a;for(const[e,t]of A)h.current.set(e,t*(1-i));F(),o<1?v.current=requestAnimationFrame(t):(x.current=!1,h.current=new Map,y.current=new Set,k.current="",b.current=new Map,p.current=new Map,v.current=null,F())};v.current=requestAnimationFrame(t)}!A&&r&&(h.current=new Map,y.current=new Set,k.current="")}},[e,t,F]),A.useEffect(()=>{if(!t||x.current||!e)return;const A=[...r,...n],o=A.map(A=>`${A.edge.key}:${A.edge.certainCount}`).sort().join(","),i=0===y.current.size,a=""!==k.current&&k.current!==o;if(!i&&!a)return void F();const s=[],l=[];for(const{edge:e}of A)y.current.has(e.key)?l.push(e.key):s.push(e.key);a&&l.length>0&&(b.current=new Map(C.current),m.current=0),p.current=new Map;for(const{edge:e}of r){const A=gA(e.certainCount);p.current.set(e.key,A)}for(const e of s)h.current.set(e,0);for(const e of l)h.current.has(e)||h.current.set(e,1);if(s.length>0||a&&l.length>0){v.current&&(cancelAnimationFrame(v.current),v.current=null);let A=null;const e=Math.min(100,xA/Math.max(s.length,1)/2),t=r=>{A||(A=r);const n=r-A;for(let A=0;A0){const A=Math.min(n/xA,1);m.current=me(A)}F();const o=xA+(s.length-1)*e;v.current=n{if(!e||!g)return;const A=()=>{const A=e.getSource(g);if(!A)return!1;if(d.length>0){const e=pe(d);A.setData(e)}else A.setData({type:"FeatureCollection",features:[]});return!0};if(A())return;const t=r=>{r.sourceId===g&&A()&&e.off("sourcedata",t)};e.on("sourcedata",t);const r=()=>{A()&&(e.off("styledata",r),e.off("sourcedata",t))};return e.on("styledata",r),()=>{e.off("sourcedata",t),e.off("styledata",r)}},[e,g,d]),A.useEffect(()=>()=>{v.current&&(cancelAnimationFrame(v.current),v.current=null)},[]),{isExiting:x.current,isAnimating:null!==v.current,resetAnimationState:T,weightAnimProgress:m.current,animStartWeights:b.current,animTargetWeights:p.current}}({map:oe,showTopology:D,validatedPolylines:$A,weakPolylines:Ae,maxCertainCount:ne,loopEdgeKeys:te,backboneEdgeKeys:re,highlightedEdgeKey:s,neighbors:e,validatedSourceId:qe,weakSourceId:$e,neighborPolylines:ee,showNeighborLines:E,neighborSourceId:At}),de=A.useMemo(()=>{const A=new Set;for(const e of f.hubNodes){A.add(e);for(const t of f.validatedEdges)t.fromHash===e&&A.add(t.toHash),t.toHash===e&&A.add(t.fromHash)}return A},[f.hubNodes,f.validatedEdges]),ge=A.useMemo(()=>{const A=new Set;if(!n)return A;for(const e of f.validatedEdges)e.fromHash===n&&A.add(e.toHash),e.toHash===n&&A.add(e.fromHash);return A},[n,f.validatedEdges]),{getNodeOpacity:he}=function({soloDirect:e,soloHubs:t,neighborHashes:r,hubConnectedNodes:n,directNodeSet:o,localConnectedNodes:i,showTopology:a}){const[s,l]=A.useState(new Map),c=A.useRef(e),u=A.useRef(t),d=A.useRef(new Map),f=A.useRef(null),g=A.useRef(n),h=A.useRef(o),m=A.useRef(i),b=A.useRef(a);return A.useEffect(()=>{g.current=n,h.current=o,m.current=i,b.current=a},[n,o,i,a]),A.useEffect(()=>{const A=c.current,n=u.current,o=e,i=t;if(c.current=e,u.current=t,A===o&&n===i)return;f.current&&(cancelAnimationFrame(f.current),f.current=null);const a=g.current,s=h.current,p=m.current,x=b.current;for(const e of r)d.current.has(e)||d.current.set(e,Math.random());const v=(A,e,t)=>{const r=a.has(A),n=s.has(A),o=x&&p.has(A);return!e&&!t||(e&&t?r||n||o:t?r:!e||n||o)},w=[];for(const e of r){const t=v(e,A,n),r=v(e,o,i);t!==r&&w.push({hash:e,startOpacity:t?1:0,targetOpacity:r?1:0})}if(0===w.length)return;l(A=>{const e=new Map(A);for(const{hash:t,startOpacity:r}of w)e.set(t,r);return e});const y=w;let k=null;const C=A=>{k||(k=A);const e=A-k;let t=!0;l(()=>{const A=new Map;for(const{hash:r,startOpacity:n,targetOpacity:o}of y){const i=250*(d.current.get(r)??0),a=Math.max(0,e-i),s=Math.min(a/500,1),l=n+(o-n)*xe(s);A.set(r,l),s<1&&(t=!1)}return A}),e<750&&!t?f.current=requestAnimationFrame(C):(f.current=null,l(new Map))};return f.current=requestAnimationFrame(C),()=>{f.current&&(cancelAnimationFrame(f.current),f.current=null)}},[e,t,r]),{nodeOpacities:s,getNodeOpacity:(A,e)=>s.has(A)?s.get(A):e?1:0}}({soloDirect:I,soloHubs:R,neighborHashes:VA.map(([A])=>A),hubConnectedNodes:de,directNodeSet:JA,localConnectedNodes:ge,showTopology:D}),{blinkingNodes:Ne,blinkColor:je}=function({neighbors:e,localHash:t,enabled:r=!0}){const[n,o]=A.useState(new Map),i=K(),a=A.useRef(J.getPackets());A.useEffect(()=>{a.current=J.getPackets()},[i]);const s=A.useRef(0),l=A.useRef(null),c=A.useRef(new Map),u=A.useRef(new Map);A.useEffect(()=>{u.current=function(A){const e=new Map;for(const t of Object.keys(A)){const A=q(t);e.has(A)||e.set(A,t)}return e}(e)},[e]);const d=A.useRef(null);return A.useEffect(()=>{d.current=()=>{const A=performance.now(),e=c.current;if(0===e.size)return l.current=null,void o(new Map);const t=new Map,r=[];for(const[n,{startTime:o,staggerDelay:i}]of e){const e=A-o-i;if(e<0);else if(e>=750)r.push(n);else{const A=ve(e,750);A>0&&t.set(n,A)}}for(const n of r)e.delete(n);o(t),e.size>0&&d.current?l.current=requestAnimationFrame(d.current):l.current=null}},[]),A.useEffect(()=>{if(!r)return;const A=a.current;if(0===A.length)return;const e=s.current,n=A.filter(A=>(A.timestamp??0)>e);if(0===e){const e=A.reduce((A,e)=>Math.max(A,e.timestamp??0),0);return void(s.current=e)}if(0===n.length)return;const o=n.reduce((A,e)=>Math.max(A,e.timestamp??0),0);s.current=o;const i=performance.now();let f=0;for(const r of n){const A=X(r,t);if(!A||0===A.original.length)continue;const e=we(A.original,u.current,t);if(0===e.length)continue;const n=375;for(let t=0;t()=>{null!==l.current&&(cancelAnimationFrame(l.current),l.current=null)},[]),{blinkingNodes:n,blinkColor:"#00FF00"}}({neighbors:e,localHash:n,enabled:N}),Pe=A.useCallback(A=>{if(!I&&!R)return!0;if(I)return JA.has(A);if(R){if(f.hubNodes.includes(A))return!0;for(const e of f.validatedEdges){if(e.fromHash===A&&f.hubNodes.includes(e.toHash))return!0;if(e.toHash===A&&f.hubNodes.includes(e.fromHash))return!0}return!1}return!0},[I,R,JA,f.hubNodes,f.validatedEdges]),Se=A.useCallback(async()=>{vA(!0),fA(!0),bA("fetching"),yA(0),await g(),yA(m.packetCount),bA("analyzing"),await new Promise(A=>setTimeout(A,200)),bA("building");const A=Date.now(),e=Date.now()-A;e<1700&&await new Promise(A=>setTimeout(A,1700-e)),bA("complete"),await new Promise(A=>setTimeout(A,1e3)),fA(!1),vA(!1),ue(),setTimeout(()=>{M(!0)},150)},[g,ue,m.packetCount]),Fe=A.useCallback(A=>{k(A.viewState)},[]),Te=A.useCallback(()=>{B(A=>!A)},[]),Ie=A.useCallback(()=>{M(A=>!A)},[]),Le=A.useCallback(()=>{L(A=>!A)},[]),Re=A.useCallback(()=>{_(A=>!A)},[]),_e=A.useCallback(()=>{Q(A=>!A)},[]),He=A.useCallback(()=>{j(A=>!A)},[]),ze=A.useCallback(()=>{S(A=>!A)},[]),Ge=A.useCallback(()=>{T(A=>{const e=!A;if(d.current){const A=d.current.getMap();A&&A.stop()}if(e&&d.current){const A=d.current.getMap();A&&A.easeTo({pitch:45,duration:1500,easing:A=>1-Math.pow(1-A,3)})}if(!e&&d.current){const A=d.current.getMap();A&&A.easeTo({pitch:0,bearing:0,duration:800,easing:A=>1-Math.pow(1-A,2)})}return e})},[]),Ue=A.useCallback(()=>{D||M(!0)},[D]),Oe=A.useCallback((A,e)=>{lA(A),uA(e)},[]),Ye=A.useCallback(()=>{sA&&o&&o(sA),lA(null),uA("")},[sA,o]),Ve=A.useMemo(()=>[...st],[]),We=A.useCallback(A=>{var e,t;if(!A.features||0===A.features.length)return;const r=A.features[0],n=null==(e=r.layer)?void 0:e.id,o=r.properties;if(!(null==o?void 0:o.key))return;const i=null==n?void 0:n.startsWith("topology-"),a=null==n?void 0:n.startsWith("neighbor-");if(i||a){const e=o.key.replace(/-loop[12]$/,"");V(e),A.lngLat&&HA({longitude:A.lngLat.lng,latitude:A.lngLat.lat,type:i?"topology":"neighbor",properties:o})}try{(null==(t=d.current)?void 0:t.getCanvas())&&(d.current.getCanvas().style.cursor="pointer")}catch{}},[]),Ze=A.useCallback(()=>{var A;V(null),HA(null);try{(null==(A=d.current)?void 0:A.getCanvas())&&(d.current.getCanvas().style.cursor="")}catch{}},[]),Ke=C?"map-container-fullscreen":"map-container-16-9";return t.jsxs("div",{className:`relative ${Ke}`,role:"application","aria-label":"Mesh network contacts map","aria-describedby":"map-instructions",children:[t.jsx("span",{id:"map-instructions",className:"sr-only",children:"Interactive map showing mesh network contacts. Use mouse or touch to pan and zoom. Press Tab to navigate map controls. Press Escape to exit fullscreen mode."}),t.jsx("div",{className:"relative w-full h-full "+(C?"":"rounded-[1.125rem] overflow-hidden"),children:t.jsxs(G,{ref:d,...y,onMove:Fe,mapStyle:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",style:{width:"100%",height:"100%"},attributionControl:!1,interactiveLayerIds:Ve,onMouseMove:We,onMouseLeave:Ze,onLoad:A=>{const e=A.target;try{const A=e.getStyle();if(null==A?void 0:A.layers){const t=["road","highway","tunnel","bridge","motorway","trunk","primary","secondary","tertiary","street","path","track"],r=A=>t.some(e=>A.toLowerCase().includes(e));for(const n of A.layers)"fill"===n.type&&n.id.toLowerCase().includes("water")&&e.setPaintProperty(n.id,"fill-color","rgba(22, 26, 32, 1)"),"line"===n.type&&r(n.id)&&e.setPaintProperty(n.id,"line-color","rgba(25, 26, 29, 1)"),"symbol"===n.type&&(e.setPaintProperty(n.id,"text-color","rgba(108, 110, 120, 0.85)"),e.setPaintProperty(n.id,"text-halo-color","rgba(8, 9, 11, 0.9)"),e.setPaintProperty(n.id,"text-halo-width",1),e.setLayoutProperty(n.id,"text-font",["Inter","Open Sans Regular","Arial Unicode MS Regular"]))}}catch(t){}},onError:A=>{},onIdle:()=>{if(!v&&!x&&d.current){const A=d.current.getMap();if(A){const t=Object.values(e).filter(A=>A.latitude&&A.longitude).map(A=>({latitude:A.latitude,longitude:A.longitude}));(null==r?void 0:r.latitude)&&(null==r?void 0:r.longitude)&&t.push({latitude:r.latitude,longitude:r.longitude}),t.length>0&&p(t,A)}}},children:[t.jsx(U,{position:"top-left",style:{marginTop:"1rem",marginLeft:"1rem"}}),t.jsx(O,{position:"bottom-right"}),t.jsx(fe,{enabled:F,exaggeration:2}),t.jsx(ce,{coveragePoints:jA,visible:jA.length>0&&PA,terrainEnabled:F,brightness:SA}),t.jsx(lt,{positions:WA}),t.jsx(at,{showTopology:D,isExiting:se,hoveredEdgeKey:Y,highlightedLoopEdges:null==zA?void 0:zA.highlightedEdgeKeys,onEdgeHover:UA,onLoopHover:OA,loops:f.loops,neighborNames:YA,opacityBias:W,widthMultiplier:Z,trafficFilter:aA,showNeighborLines:E,disableHover:le||pA}),i&&t.jsx(ct,{targetHash:i,nodeCoordinates:ZA,onComplete:a}),s&&t.jsx(ut,{highlightedEdgeKey:s,validatedPolylines:$A,weakPolylines:Ae,onEnsureTopology:Ue}),t.jsx(gt,{ghost:l??null,neighborCoordinates:ZA,onHighlightedNeighborsChange:NA}),N&&t.jsx(Xe,{neighborsWithLocation:VA,localNode:r,localHash:n,zeroHopNeighbors:JA,lastHopNeighborMap:KA,meshTopology:f,hoveredMarker:H,onMarkerHover:z,getNodeOpacity:he,shouldShowNode:Pe,onRequestRemove:o?Oe:void 0,openPopupId:CA,onOpenPopup:EA,onClosePopup:QA,blinkingNodes:Ne,blinkColor:je})]})}),(()=>{const A=function(A,e,t){if(e){const A=e.loops[0],t=e.loops.length,r=[{label:"edges in loop",value:A.size},{label:"strength",value:`${Math.round(100*A.strength)}%`,unit:"(weakest link)"}],n=[];return A.includesLocal&&n.push({text:"★ Includes your node",color:"text-amber-400"}),t>1&&n.push({text:`Part of ${t} overlapping loops`,color:"text-violet-400/70"}),{type:"loop",title:{icon:"⟳",text:"Redundant Path"+(t>1?"s":""),color:"text-violet-400"},subtitle:{text:`${e.nodeNames.join(" → ")} → ${e.nodeNames[0]}`,color:"text-text-secondary",mono:!0},stats:r,badges:n}}if("neighbor"===(null==A?void 0:A.type)){const e=A.properties,t=[];void 0!==e.rssi&&null!==e.rssi&&t.push({label:"RSSI",value:`${Math.round(e.rssi)} dBm`,unit:e.hasAvgRssi?"avg":void 0}),void 0!==e.snr&&null!==e.snr&&t.push({label:"SNR",value:`${Number(e.snr).toFixed(1)} dB`,unit:e.hasAvgSnr?"avg":void 0});const r=Number(e.rxAdvertCount)||0,n=Number(e.txProxyCount)||0,o=r>0||n>0;return o&&(t.push({label:"RX",value:r,color:"text-[#FBBF24]"}),t.push({label:"TX",value:n,color:"text-[#FF8000]"})),void 0===e.packetCount||o||t.push({label:"packets",value:Number(e.packetCount).toLocaleString()}),{type:"neighbor",title:{icon:"●",text:e.prefix?`${e.name} (${e.prefix})`:e.name,color:"text-amber-400"},subtitle:{text:"Direct RF Neighbor",color:"text-amber-400/70"},stats:t,badges:[]}}if("topology"===(null==A?void 0:A.type)){const e=A.properties,r=t>0?Number(e.certainCount)/t:0,n=[{label:"validations",value:e.certainCount},{label:"of max traffic",value:`${Math.round(100*r)}%`},{label:"confidence",value:`${Math.round(100*Number(e.confidence))}%`}];if(void 0!==e.symmetryRatio&&e.symmetryRatio<1){const A="forward"===e.dominantDirection?"→":"reverse"===e.dominantDirection?"←":"↔";n.push({label:"symmetric",value:`${A} ${Math.round(100*e.symmetryRatio)}%`,color:"text-text-muted"})}const o=[];return e.isBackbone&&o.push({text:"Backbone",color:"text-gray-300"}),e.isLoopEdge&&o.push({text:"Redundant",color:"text-violet-400"}),e.isDirectPath&&o.push({text:"Direct Path",color:"text-teal-400"}),{type:"topology",title:{icon:"",text:`${e.fromName} ↔ ${e.toName}`,color:"text-text-primary"},stats:n,badges:o}}return null}(RA?{type:RA.type,properties:RA.properties}:null,zA,ne);return A&&t.jsx("div",{className:"map-edge-tooltip",children:t.jsx("div",{className:"map-control-glass map-edge-tooltip-inner",children:t.jsx(mt,{data:A})})})})(),t.jsx(BA,{isDeepLoading:pA,showDeepAnalysisModal:dA,onDeepAnalysis:Se,showTopology:D,onToggleTopology:Ie,hasValidatedPolylines:$A.length>0,showNeighborLines:E,onToggleNeighborLines:_e,hasNeighborPolylines:ee.length>0,showNodes:N,onToggleNodes:He,soloHubs:R,onToggleSoloHubs:Re,hasHubNodes:f.hubNodes.length>0,soloDirect:I,onToggleSoloDirect:Le,hasZeroHopNeighbors:JA.size>0,showCoverage:P,onToggleCoverage:ze,show3DTerrain:F,onToggle3DTerrain:Ge,isFullscreen:C,onToggleFullscreen:Te}),t.jsxs("div",{className:"map-legend-stack",children:[t.jsx(MA,{isActive:jA.length>0&&PA,onClick:FA}),t.jsx(kA,{showTopology:D,validatedPolylineCount:$A.length,filteredNeighborCount:VA.length,hasLocalNode:!(!(null==r?void 0:r.latitude)||!(null==r?void 0:r.longitude)),meshTopology:f,zeroHopNeighbors:JA,neighborsWithLocation:VA})]}),!C&&t.jsx("div",{className:"glass-card-frame absolute inset-0 pointer-events-none rounded-[1.125rem]",style:{zIndex:9999},"aria-hidden":"true"}),t.jsx(iA,{isOpen:null!==sA,onCancel:()=>lA(null),onConfirm:Ye,title:"Remove Node?",message:`Remove "${cA}" from the contacts list? This will hide the node until it sends a new packet.`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger"}),t.jsx(mA,{isOpen:dA,currentStep:hA,packetCount:wA}),t.jsx(_A,{})]})}export{bt as default}; diff --git a/frontend/dist/assets/Dashboard-BfZs_ThN.js b/frontend/dist/assets/Dashboard-BfZs_ThN.js deleted file mode 100644 index 2192a024..00000000 --- a/frontend/dist/assets/Dashboard-BfZs_ThN.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as t,p as s,y as a,g as n,A as l,T as i,z as r,D as o,E as c,x as d,H as u,I as m,J as x,Z as h,K as p,O as v,Q as g,U as f,o as j}from"./vendor-react-CUlQ5-Td.js";import{u as b,a as y,b as N,c as k,d as w,e as M,f as _,g as L,h as S,j as B,D as C,k as F,m as R}from"./index-C1whtcFB.js";import{u as T,a as D}from"./useThemeColors-8RSyMp_o.js";import{C as P,a as H,P as $,b as A,c as W}from"./PageLayout-CViR4hDG.js";import{g as E,P as z,a as I,b as K}from"./PacketDetailModal-BvhyK15u.js";import{T as O}from"./TimeRangeSelector-Pa-lVKQc.js";import{H as V}from"./HashBadge-Do84dDmK.js";import{R as U,L as Q,a as X,A as q,C as J,X as G,Y,T as Z,b as ee}from"./recharts-7RsRrQtf.js";import{R as te}from"./Grid-HJLNnEZz.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-MTXp-Y3t.js";import"./SignalIndicator-DOiETQwB.js";const se={received:{value:"text-[var(--metric-received)]",barBase:"var(--metric-received)"},forwarded:{value:"text-[var(--metric-forwarded)]",barBase:"var(--metric-forwarded)"},transmitted:{value:"text-[var(--metric-transmitted)]",barBase:"var(--metric-transmitted)"},dropped:{value:"text-[var(--metric-dropped)]",barBase:"var(--metric-dropped)"},neutral:{value:"text-text-secondary",barBase:"var(--metric-neutral)"}};function ae({buckets:s,colorType:a,height:n=64}){const l=se[a],{bars:i}=t.useMemo(()=>{var e,t;if(!s||0===s.length)return{bars:[]};const a=[],n=s.length/60;if(n<=1)a.push(...s);else for(let l=0;l<60;l++){const i=Math.floor(l*n),r=Math.floor((l+1)*n),o=s.slice(i,r),c=o.reduce((e,t)=>e+t.count,0),d=o.length>0?o.reduce((e,t)=>e+t.avg_snr,0)/o.length:0;a.push({bucket:l,start:(null==(e=o[0])?void 0:e.start)??0,end:(null==(t=o[o.length-1])?void 0:t.end)??0,count:c,airtime_ms:o.reduce((e,t)=>e+t.airtime_ms,0),avg_snr:d,avg_rssi:0})}const i=Math.max(...a.map(e=>e.count),1);return{bars:a.map(e=>({height:e.count>0?Math.max(e.count/i*100,8):0,color:e.count>0?l.barBase:"transparent",count:e.count,snr:e.avg_snr}))}},[s,l]);return s&&0!==s.length?e.jsx("div",{className:"w-full flex items-end gap-[1px]",style:{height:n},children:i.map((t,s)=>{var a;return e.jsx("div",{className:"flex-1 rounded-t-sm",style:{height:`${t.height}%`,backgroundColor:t.color,opacity:t.count>0?.8:.1,minHeight:t.count>0?"4px":"2px",maxWidth:"4px"},title:t.count>0?`${t.count} packets, SNR: ${null==(a=t.snr)?void 0:a.toFixed(1)}dB`:"No packets"},s)})}):e.jsx("div",{className:"w-full flex items-end justify-center gap-[2px] opacity-20",style:{height:n},children:e.jsx("span",{className:"type-data-xs text-text-muted",children:"No data"})})}const ne={received:"text-text-secondary",forwarded:"text-text-secondary",transmitted:"text-text-secondary",dropped:"text-text-secondary",neutral:"text-text-secondary"},le={sm:"card-sm",md:"card-md",lg:"card-lg",hero:"card-hero",auto:""};function ie({title:t,value:s,color:a="neutral",subtitle:n,buckets:l,timeRangeLabel:i,icon:r,size:o="md",isLoaded:c=!0}){const d=se[a],u="string"==typeof s?s:s.toLocaleString();return e.jsxs("div",{className:`data-card flex flex-col relative ${le[o]}`,children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[r&&e.jsx("span",{className:`icon-sm ${ne[a]}`,children:r}),e.jsx("span",{className:"type-micro",children:t}),i&&e.jsx("span",{className:"pill-tag",children:i})]}),e.jsx("div",{className:"data-card-value",children:u}),e.jsx("div",{className:"flex-1 py-2 mt-2",children:l?e.jsx(ae,{buckets:l,colorType:a,height:64}):e.jsx("div",{className:"w-full h-16 flex items-center justify-center",children:e.jsx("div",{className:"w-full h-0.5 rounded-full",style:{backgroundColor:d.barBase,opacity:.15}})})}),e.jsx("div",{className:"type-label text-text-muted border-t border-border-subtle pt-3 mt-2",children:n||`Total ${t.toLowerCase()}`}),!c&&e.jsx(P,{})]})}function re(){const i=b(),r=y(),o=N(),c=k(),[d,u]=t.useState(null),[m,x]=t.useState(null),h=t.useRef(0);t.useEffect(()=>{if(c>0&&c!==h.current&&i.length>0){h.current=c;const e=i.find(e=>(e.payload_type_name||E(e.payload_type??e.type)).toLowerCase().includes("advert"));if(e){const t=requestAnimationFrame(()=>u(e.packet_hash)),s=setTimeout(()=>u(null),600);return()=>{cancelAnimationFrame(t),clearTimeout(s)}}}},[c,i]);const p=i.slice(-15).reverse();return e.jsxs("div",{className:"chart-container h-full flex flex-col",children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(s,{className:"chart-title-icon"}),"Recent Packets"]}),e.jsxs("div",{className:"flex items-center gap-3",children:[o&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"w-2 h-2 fill-accent-success text-accent-success animate-pulse"}),e.jsx("span",{className:"type-data-xs text-text-muted",children:"LIVE"})]}),e.jsxs(n,{to:"/packets",className:"pill-subtle",children:["View all ",e.jsx(l,{className:"w-3 h-3"})]})]})]}),e.jsxs("div",{className:"sm:hidden flex items-center gap-1.5 px-3 py-1.5 border-b border-border-subtle/50 bg-bg-elevated/20",children:[e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-14 flex-shrink-0",children:"Dir"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-7 flex-shrink-0",children:"Time"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-9 flex-shrink-0",children:"Src"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider flex-1 min-w-0",children:"Type"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-14 flex-shrink-0",children:"Route"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-10 text-right flex-shrink-0",children:"Signal"})]}),e.jsx("div",{className:"hidden sm:block flex-1 overflow-hidden",children:e.jsx("div",{className:"h-full overflow-y-auto",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{className:"sticky top-0 bg-bg-elevated/95 backdrop-blur-sm",children:e.jsxs("tr",{className:"border-b border-border-subtle/50",children:[e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider w-16",children:"Dir"}),e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Time"}),e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Source"}),e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Type"}),e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Route"}),e.jsx("th",{className:"text-right py-1.5 px-3 pr-4 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Signal"})]})}),e.jsx("tbody",{className:"divide-y divide-border-subtle/30",children:r&&0===i.length?e.jsx("tr",{children:e.jsx("td",{colSpan:6,className:"text-center py-8 text-text-muted",children:"Loading packets..."})}):0===p.length?e.jsx("tr",{children:e.jsxs("td",{colSpan:6,className:"text-center py-8",children:[e.jsx(s,{className:"w-6 h-6 text-text-muted mx-auto mb-2"}),e.jsx("div",{className:"text-sm text-text-primary",children:"No packets received"}),e.jsx("div",{className:"text-xs text-text-muted",children:"Packets will appear here"})]})}):p.map((t,s)=>{const a=(t.payload_type_name||E(t.payload_type??t.type)).toLowerCase().includes("advert");return e.jsx(z,{packet:t,onClick:x,isFlashing:a&&d===t.packet_hash},`${t.packet_hash}_${t.timestamp}_${s}`)})})]})})}),e.jsx("div",{className:"sm:hidden flex-1 overflow-y-auto divide-y divide-border-subtle/30",children:r&&0===i.length?e.jsx("div",{className:"p-8 text-center text-text-muted",children:"Loading packets..."}):0===p.length?e.jsxs("div",{className:"p-8 text-center",children:[e.jsx(s,{className:"w-6 h-6 text-text-muted mx-auto mb-2"}),e.jsx("div",{className:"text-sm text-text-primary",children:"No packets received"}),e.jsx("div",{className:"text-xs text-text-muted",children:"Packets will appear here"})]}):p.map((t,s)=>{const a=(t.payload_type_name||E(t.payload_type??t.type)).toLowerCase().includes("advert");return e.jsx(I,{packet:t,onClick:x,isFlashing:a&&d===t.packet_hash},`${t.packet_hash}_${t.timestamp}_${s}`)})}),e.jsxs("div",{className:"px-3 py-1.5 border-t border-border-subtle/50 text-[10px] text-text-muted bg-bg-elevated/20 text-center",children:["Showing ",p.length," of ",i.length," packets"]}),m&&e.jsx(K,{packet:m,onClose:()=>x(null)})]})}t.memo(function({active:t,payload:s,label:a,formatValue:n,labelKey:l}){var i;if(!t||!s||0===s.length)return null;const r=l&&(null==(i=s[0])?void 0:i.payload)?s[0].payload[l]:a;return e.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-4 py-3 shadow-xl",children:[r&&e.jsx("p",{className:"type-data-xs text-white/50 mb-2",children:r}),e.jsx("div",{className:"space-y-1.5",children:s.map((t,s)=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:t.color}}),e.jsx("span",{className:"type-body-sm text-white/70 capitalize min-w-[60px]",children:t.name}),e.jsx("span",{className:"type-data-sm text-white tabular-nums",children:n?n(t.value,t.name):t.value.toLocaleString()})]},s))})]})});const oe=t.memo(function({active:t,payload:s,color:a,labelKey:n,unit:l=""}){var i,r;if(!t||!s||0===s.length)return null;const o=s[0],c=null==(i=null==o?void 0:o.payload)?void 0:i[n];return e.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 shadow-xl",children:[e.jsx("p",{className:"type-data-xs text-white/50 mb-1",children:c}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:a}}),e.jsxs("span",{className:"type-data-sm text-white tabular-nums",children:[null==(r=null==o?void 0:o.value)?void 0:r.toLocaleString(),l]})]})]})});t.memo(function({payload:t}){return t&&0!==t.length?e.jsx("div",{className:"flex items-center justify-center gap-6 mt-4 pt-4 border-t border-white/5",children:t.map((t,s)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:t.color}}),e.jsx("span",{className:"type-body-sm text-white/60 capitalize",children:t.value})]},s))}):null});const ce=.2;function de(e,t=1){return Math.floor(5*t*e)}function ue(e){const t=Math.round(e/ce)*ce;return Math.max(0,Math.min(5,t))}function me({stats:s,receivedBuckets:a,droppedBuckets:n,forwardedBuckets:l,bucketDurationSeconds:d,timeRangeLabel:u,isLoaded:m=!0}){var x,h,p,v;const g=t.useMemo(()=>function(e,t,s,a,n){var l,i;const r=(null==t?void 0:t.reduce((e,t)=>e+t.count,0))??0,o=(null==s?void 0:s.reduce((e,t)=>e+t.count,0))??0,c=(null==a?void 0:a.reduce((e,t)=>e+t.count,0))??0,d=r>0?r:(null==e?void 0:e.rx_count)||1,u=o>0?o:(null==e?void 0:e.dropped_count)||0,m=d>0?u/(d+u)*100:0;let x=0;if(a&&a.length>0&&n)x=100*c/(a.length*n*1e3)*100;else if(e){const t=1e3*(e.uptime_seconds||1);x=(e.total_airtime_ms||e.airtime_used_ms||0)/t*100}const h=(null==e?void 0:e.neighbors)||{},p=Object.values(h).filter(e=>!0===e.zero_hop).length;let v=1;m<3?v-=ce:m>15?v+=.4:m>10&&(v+=ce),x>5&&(v+=ce),p>10&&(v+=ce);const g=ue(v),f=ue(.28*g),j=de(g),b=de(f),y=de((null==(i=null==(l=null==e?void 0:e.config)?void 0:l.delays)?void 0:i.tx_delay_factor)??1);let N;return N=j>y?"increase":j10?"text-accent-warning":"text-text-secondary"),children:[g.duplicateRate.toFixed(1),"%"]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-text-muted",children:"TX Util"}),e.jsxs("span",{className:"tabular-nums text-text-secondary",children:[g.txUtilization.toFixed(2),"%"]})]})]}),e.jsx("div",{className:"type-label text-text-muted border-t border-border-subtle pt-3 mt-2 truncate",children:null!==f?e.jsxs("span",{children:["Current: ×",f.toFixed(1)," / ×",(null==j?void 0:j.toFixed(1))??"—"]}):e.jsx("span",{children:"Slot-aligned factors"})}),!m&&e.jsx(P,{})]})}function xe({trend:t}){return"stable"===t?e.jsx("span",{className:"mini-widget-trend stable",children:e.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 12h14"})})}):"up"===t?e.jsx("span",{className:"mini-widget-trend up",children:e.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 15l7-7 7 7"})})}):e.jsx("span",{className:"mini-widget-trend down",children:e.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})}function he(){return e.jsx("div",{className:"mini-widget-loading",children:e.jsx("div",{className:"mini-widget-loading-spinner"})})}function pe({message:t}){return e.jsx("div",{className:"mini-widget-error",children:e.jsx("span",{title:t,children:"No data"})})}function ve({title:t,icon:s,value:a,unit:n,valueSize:l="md",status:i,subtitle:r,trend:o,children:c,isLoading:d=!1,error:u,className:m="",onClick:x}){const h=["mini-widget-value","lg"===l&&"mini-widget-value-lg","sm"===l&&"mini-widget-value-sm",""].filter(Boolean).join(" "),p=["mini-widget",x&&"cursor-pointer",m].filter(Boolean).join(" ");return e.jsxs("div",{className:p,onClick:x,role:x?"button":void 0,children:[e.jsxs("div",{className:"mini-widget-header",children:[s,e.jsx("span",{className:"mini-widget-title",children:t}),i&&"unknown"!==i&&e.jsx("div",{className:`mini-widget-status-dot ${i}`}),o&&e.jsx(xe,{trend:o})]}),d?e.jsx(he,{}):u?e.jsx(pe,{message:u}):e.jsxs(e.Fragment,{children:[void 0!==a&&e.jsxs("div",{className:h,children:[a,n&&e.jsx("span",{className:"mini-widget-unit",children:n})]}),r&&e.jsx("div",{className:"mini-widget-subtitle",children:r}),c]})]})}const ge=t.createContext({lbtStats:null,noiseFloor:null,hourlyNoiseFloor:[],linkQuality:null,channelHealth:null,trends:null,stats:null,recentPackets:[],quickNeighbors:[],isLoading:!0,error:null,refresh:async()=>{}});function fe(e){if(!e)return[];try{const t=JSON.parse(e);if(Array.isArray(t))return t.map(Number).filter(e=>!isNaN(e))}catch{}return[]}function je(e,t,s=2,a=!1){if(null===t)return"stable";const n=e-t;return(0!==t?100*Math.abs(n/t):Math.abs(n))0?"up":"down":n>0?"down":"up"}function be({children:s}){const a=w(),n=b(),l=M(),i=_(),r=null===a,o=t.useMemo(()=>function(e){const t=Math.floor(Date.now()/1e3),s=t-86400,a=e.filter(e=>e.timestamp>=s&&void 0!==e.lbt_attempts&&e.lbt_attempts>0),n=a.length,l=a.filter(e=>(e.lbt_attempts??0)>1).length,i=n>0?l/n*100:0,r=a.filter(e=>(e.lbt_attempts??0)>1),o=r.length>0?r.reduce((e,t)=>e+(t.lbt_attempts??0),0)/r.length:0,c=a.filter(e=>!0===e.lbt_channel_busy||1===e.lbt_channel_busy).length,d=n>0?c/n*100:0,u=[];for(const f of a){const e=fe(f.lbt_backoff_delays_ms);u.push(...e)}const m=u.reduce((e,t)=>e+t,0),x=u.length>0?m/u.length:0,h=u.length>0?Math.max(...u):0,p=[],v=[],g=[];for(let f=0;f<24;f++){const e=t-3600*(24-f),s=e+3600,n=a.filter(t=>t.timestamp>=e&&t.timestamp(e.lbt_attempts??0)>1).length,i=n.length>0?l/n.length*100:0;p.push(i);const r=[];for(const t of n){const e=fe(t.lbt_backoff_delays_ms);r.push(...e)}const o=r.length>0?r.reduce((e,t)=>e+t,0)/r.length:0;if(g.push(o),0===n.length)v.push(0);else{const e=n.filter(e=>!0===e.lbt_channel_busy||1===e.lbt_channel_busy).length,t=r.length>0?Math.max(...r):0,s=Math.min(n.length/5,1),a=.15,l=Math.log(1+i*a)/Math.log(1+100*a)*40,c=e/n.length*100,d=Math.min(.5*c,25);let u=0;o>100&&(u=Math.min(8*Math.log10(o/100),15));let m=0;t>500&&o>0&&t>2*o&&(m=Math.min((t-500)/200,5));const x=l+d+u+m;v.push(Math.min(x*s,85))}}return{totalPacketsWithLBT:n,packetsWithRetries:l,retryRate:i,avgRetries:o,channelBusyCount:c,channelBusyRate:d,avgBackoffMs:x,maxBackoffMs:h,totalBackoffMs:m,hourlyRetryRates:p,hourlyCollisionRisk:v,hourlyAvgBackoffMs:g,windowHours:24,packetCount:e.length}}(n),[n]),c=(null==a?void 0:a.noise_floor_dbm)??null,[d,u]=t.useState([]),m=t.useRef(0);t.useEffect(()=>{const e=async()=>{var e;const t=Date.now();if(!(t-m.current<6e4)){m.current=t;try{const t=await L(24);if(t.success&&(null==(e=t.data)?void 0:e.history)){const e=Math.floor(Date.now()/1e3),s=[];for(let a=0;a<24;a++){const n=e-3600*(24-a),l=n+3600,i=t.data.history.filter(e=>e.timestamp>=n&&e.timestamp0){const e=i.reduce((e,t)=>e+t.noise_floor_dbm,0)/i.length;s.push(e)}else s.push(s.length>0?s[s.length-1]:-100)}u(s)}}catch{}}};e();const t=setInterval(e,6e4);return()=>clearInterval(t)},[]);const x=null==a?void 0:a.neighbors,h=t.useMemo(()=>{const e=x??{};return Object.fromEntries(Object.entries(e).filter(([e])=>!i.has(e)))},[x,i]),p=t.useMemo(()=>l.filter(e=>!i.has(e.hash)),[l,i]),v=t.useMemo(()=>function(e,t){if(0===e.length)return{neighbors:[],networkScore:0,neighborCount:0,bestLink:null,worstLink:null};const s=e.map(e=>{const s=function(e,t){let s=50;void 0!==e&&(s=e>=10?100:e>=5?80:e>=0?60:e>=-5?40:20);let a=50;return void 0!==t&&(a=t>=-70?100:t>=-80?80:t>=-90?60:t>=-100?40:20),Math.round(.6*s+.4*a)}(e.avgSnr??void 0,e.avgRssi??void 0),a=t[e.hash];return{name:(null==a?void 0:a.name)||(null==a?void 0:a.node_name)||e.prefix,hash:e.hash,rssi:e.avgRssi??-100,snr:e.avgSnr??-10,score:s,advertCount:e.count}});s.sort((e,t)=>t.score-e.score);const a=s.length>0?s.reduce((e,t)=>e+t.score,0)/s.length:0;return{neighbors:s,networkScore:Math.round(a),neighborCount:s.length,bestLink:s.length>0?{name:s[0].name,score:s[0].score}:null,worstLink:s.length>0?{name:s[s.length-1].name,score:s[s.length-1].score}:null}}(p,h),[p,h]),g=t.useMemo(()=>function(e,t,s){const a=e?Math.max(0,Math.min(100,100-5*e.retryRate)):50;let n=50;null!==t&&(n=Math.max(0,Math.min(100,(t+120)/30*100)));const l=(null==s?void 0:s.networkScore)??50,i=Math.round(.35*a+.25*n+.4*l);let r;return r=i>=85?"excellent":i>=70?"good":i>=50?"fair":i>=30?"congested":"critical",{score:i,status:r,components:{lbtHealth:Math.round(a),noiseHealth:Math.round(n),linkHealth:Math.round(l)}}}(o,c,v),[o,c,v]),[f,j]=t.useState({noiseFloor:null,networkScore:null,channelHealth:null}),y=t.useRef(0);t.useEffect(()=>{const e=()=>{const e=Date.now();e-y.current>3e4&&(y.current=e,j({noiseFloor:c,networkScore:(null==v?void 0:v.networkScore)??null,channelHealth:(null==g?void 0:g.score)??null}))};e();const t=setInterval(e,5e3);return()=>clearInterval(t)},[c,null==v?void 0:v.networkScore,null==g?void 0:g.score]);const N=t.useMemo(()=>({noiseFloor:{current:c,previous:f.noiseFloor,trend:null!==c?je(c,f.noiseFloor,2,!0):"stable"},networkScore:{current:(null==v?void 0:v.networkScore)??0,previous:f.networkScore,trend:je((null==v?void 0:v.networkScore)??0,f.networkScore,3,!1)},channelHealth:{current:(null==g?void 0:g.score)??0,previous:f.channelHealth,trend:je((null==g?void 0:g.score)??0,f.channelHealth,3,!1)}}),[c,null==v?void 0:v.networkScore,null==g?void 0:g.score,f]),k={lbtStats:o,noiseFloor:c,hourlyNoiseFloor:d,linkQuality:v,channelHealth:g,trends:N,stats:a,recentPackets:n,quickNeighbors:l,isLoading:r,error:null,refresh:async()=>{}};return e.jsx(ge.Provider,{value:k,children:s})}function ye(){const e=t.useContext(ge);if(void 0===e)throw new Error("useLBTData must be used within an LBTDataProvider");return e}const Ne={excellent:"var(--signal-excellent)",good:"var(--signal-good)",fair:"var(--signal-fair)",congested:"var(--signal-poor)",critical:"var(--signal-critical)",unknown:"var(--text-muted)"};function ke(e,t){return 0===e?"No backoffs":`${t.toFixed(0)}% retry rate`}function we(){const{lbtStats:s,isLoading:a,error:n}=ye(),l=d(),i=(null==s?void 0:s.avgBackoffMs)??0,r=(null==s?void 0:s.retryRate)??0,o=s?(u=i)<100?"excellent":u<250?"good":u<500?"fair":u<1e3?"congested":"critical":"unknown";var u;const m=null==s?void 0:s.hourlyAvgBackoffMs,x=t.useMemo(()=>!m||m.length<2?[]:m.map(e=>({value:e})),[m]),h=Ne[o];return e.jsx(ve,{title:"LBT Backoff",icon:e.jsx(c,{className:"mini-widget-icon"}),value:Math.round(i),unit:"ms",status:o,subtitle:s?ke(i,r):void 0,isLoading:a,error:n,onClick:()=>l("/packets"),children:e.jsx("div",{className:"mini-widget-sparkline",children:x.length>0?e.jsx(U,{width:"100%",height:24,children:e.jsx(Q,{data:x,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(X,{type:"monotone",dataKey:"value",stroke:h,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Me(){const{lbtStats:t,isLoading:s,error:a}=ye(),n=d(),l=(null==t?void 0:t.channelBusyCount)??0,i=(null==t?void 0:t.totalPacketsWithLBT)??0,r=(null==t?void 0:t.channelBusyRate)??0,o=t?(c=r)<.5?"excellent":c<1?"good":c<2?"fair":c<5?"congested":"critical":"unknown";var c;return e.jsx(ve,{title:"Ch. Busy",icon:e.jsx(u,{className:"mini-widget-icon"}),value:l,status:o,subtitle:t?`${r.toFixed(2)}% of ${i} TX`:void 0,isLoading:s,error:a,onClick:()=>n("/packets")})}function _e(e){return null===e?"No reading":e<-115?"Very quiet":e<-105?"Quiet":e<-95?"Moderate":e<-85?"Elevated":"High interference"}const Le={excellent:"var(--signal-excellent)",good:"var(--signal-good)",fair:"var(--signal-fair)",congested:"var(--signal-poor)",critical:"var(--signal-critical)",unknown:"var(--text-muted)"};function Se(){const{noiseFloor:s,hourlyNoiseFloor:a,trends:n,isLoading:l,error:i}=ye(),r=null===(o=s)||o<-110?"excellent":o<-100?"good":o<-90?"fair":o<-80?"congested":"critical";var o;const c=null==n?void 0:n.noiseFloor.trend,d=t.useMemo(()=>!a||a.length<2?[]:a.map(e=>({value:e})),[a]),u=Le[r];return e.jsx(ve,{title:"Noise Floor",icon:e.jsx(m,{className:"mini-widget-icon"}),value:null!==s?Math.round(s):"—",unit:null!==s?"dBm":void 0,status:r,trend:c,subtitle:_e(s),isLoading:l,error:i,children:e.jsx("div",{className:"mini-widget-sparkline",children:d.length>0?e.jsx(U,{width:"100%",height:24,children:e.jsx(Q,{data:d,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(X,{type:"monotone",dataKey:"value",stroke:u,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Be(e,t=8){return e.length<=t?e:e.substring(0,t-1)+"…"}function Ce(){const{linkQuality:t,isLoading:s,error:a}=ye(),n=d(),l=null==t?void 0:t.bestLink,i=null==t?void 0:t.worstLink,r=i?(o=i.score)>=60?"excellent":o>=40?"good":o>=25?"fair":o>=10?"congested":"critical":"unknown";var o;const c=t&&l&&i?e.jsxs("div",{className:"flex flex-col gap-0.5 mt-auto",children:[e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-text-muted",children:"Best:"}),e.jsxs("span",{className:"font-mono text-signal-excellent",children:[Be(l.name)," (",Math.round(l.score),")"]})]}),e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-text-muted",children:"Worst:"}),e.jsxs("span",{className:"font-mono "+(i.score>=40?"text-signal-fair":"text-signal-critical"),children:[Be(i.name)," (",Math.round(i.score),")"]})]})]}):t&&0===t.neighborCount?e.jsx("div",{className:"flex items-center justify-center text-xs text-text-muted mt-auto",children:"No direct neighbors"}):null;return e.jsx(ve,{title:"Link Range",icon:e.jsx(x,{className:"mini-widget-icon"}),status:r,isLoading:s,error:a,onClick:()=>n("/contacts"),children:c})}const Fe={excellent:"var(--signal-excellent)",good:"var(--signal-good)",fair:"var(--signal-fair)",congested:"var(--signal-poor)",critical:"var(--signal-critical)",unknown:"var(--text-muted)"};function Re(){const{lbtStats:s,isLoading:a,error:n}=ye(),l=s?function(e){const{retryRate:t,channelBusyCount:s,totalPacketsWithLBT:a,avgBackoffMs:n,maxBackoffMs:l}=e;if(0===a)return 0;const i=Math.min(a/10,1),r=Math.log(1+.15*t)/Math.log(16)*40,o=s/a*100,c=Math.min(.5*o,25);let d=0;n>100&&(d=Math.min(8*Math.log10(n/100),15));let u=0;l>500&&n>0&&l>2*n&&(u=Math.min((l-500)/200,5));const m=(r+c+d+u)*i;return Math.min(m,85)}(s):0,i=s?(r=l)<15?"excellent":r<30?"good":r<45?"fair":r<60?"congested":"critical":"unknown";var r;const o=(null==s?void 0:s.maxBackoffMs)??0,c=s?o>200?`Max backoff: ${Math.round(o)}ms`:function(e){return e<15?"Clear channel":e<30?"Light traffic":e<45?"Moderate traffic":e<60?"Heavy traffic":e<75?"Congested":"Severe congestion"}(l):void 0,d=null==s?void 0:s.hourlyCollisionRisk,u=t.useMemo(()=>!d||d.length<2?[]:d.map(e=>({value:e})),[d]),m=Fe[i];return e.jsx(ve,{title:"Collision Risk",icon:e.jsx(h,{className:"mini-widget-icon"}),value:l.toFixed(1),unit:"%",status:i,subtitle:c,isLoading:a,error:n,children:e.jsx("div",{className:"mini-widget-sparkline",children:u.length>0?e.jsx(U,{width:"100%",height:24,children:e.jsx(Q,{data:u,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(X,{type:"monotone",dataKey:"value",stroke:m,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Te(){const[a,n]=t.useState(!1),[l]=t.useState(0),{stats:i,lbtStats:r,isLoading:o}=ye(),c=t.useMemo(()=>{if(!i)return null;const e=i.airtime_used_ms??0,t=i.max_airtime_ms??1;return{usedMs:e,maxMs:t,remainingMs:i.airtime_remaining_ms??0,utilizationPercent:i.utilization_percent??(t>0?e/t*100:0)}},[i]),d=t.useMemo(()=>{if(!r||0===r.totalPacketsWithLBT)return 100;const e=r.channelBusyCount,t=r.totalPacketsWithLBT;return(t-e)/t*100},[r]),u=(null==c?void 0:c.utilizationPercent)??0,m=(x=u)<30?"excellent":x<50?"good":x<70?"fair":x<90?"congested":"critical";var x;const h=(null==c?void 0:c.remainingMs)??0,p=d<99?`${d.toFixed(0)}% TX success`:((v=h)<1e3?`${Math.round(v)}ms`:v<6e4?`${(v/1e3).toFixed(1)}s`:`${(v/6e4).toFixed(1)}m`)+" remaining";var v;const g=c?e.jsx("div",{className:"mini-widget-progress mt-auto",children:e.jsx("div",{className:`mini-widget-progress-bar ${m}`,style:{width:`${Math.min(u,100)}%`}})}):null;return e.jsx(ve,{title:"Duty Cycle",icon:e.jsx(s,{className:"mini-widget-icon"}),value:u.toFixed(1),unit:"%",status:m,subtitle:p,isLoading:o,children:g})}function De({className:t=""}){return e.jsx(be,{children:e.jsxs("div",{className:`mesh-health-container ${t}`,children:[e.jsxs("div",{className:"mesh-health-header",children:[e.jsx(p,{className:"w-4 h-4 text-accent-primary"}),e.jsx("span",{className:"type-label text-text-muted",children:"MESH HEALTH"})]}),e.jsxs("div",{className:"widget-row",children:[e.jsx(we,{}),e.jsx(Re,{}),e.jsx(Se,{}),e.jsx(Te,{}),e.jsx(Me,{}),e.jsx(Ce,{})]})]})})}function Pe(){var a,n,l,r,o,c,d,u,m;const x=w(),h=S(),p=b(),y=B(),N=T(),k=D(),[M,_]=t.useState(4),L=C[M],P=t.useMemo(()=>{var e;if(!(null==(e=null==x?void 0:x.config)?void 0:e.radio))return null;const t=x.config.radio;return{sf:t.spreading_factor??10,bw:t.bandwidth??25e4,cr:t.coding_rate??5,preamble:t.preamble_length??8}},[null==(n=null==(a=null==x?void 0:x.config)?void 0:a.radio)?void 0:n.spreading_factor,null==(r=null==(l=null==x?void 0:x.config)?void 0:l.radio)?void 0:r.bandwidth,null==(c=null==(o=null==x?void 0:x.config)?void 0:o.radio)?void 0:c.coding_rate,null==(u=null==(d=null==x?void 0:x.config)?void 0:d.radio)?void 0:u.preamble_length]),E=p.length,z=L.buckets,I=t.useMemo(()=>0===E?null:F(L.minutes,z,p,x),[E,L.minutes,z,P]),K=t.useMemo(()=>function(e,t){if(!e||0===e.length)return[];const s=t>1440;return e.map(e=>{const t=new Date(1e3*e.start);return{time:s?t.toLocaleDateString([],{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}):t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),received:e.count}})}(null==I?void 0:I.received,L.minutes),[null==I?void 0:I.received,L.minutes]),Q=t.useMemo(()=>{const e=K.length;return e<=12?0:e<=24?2:e<=48?5:e<=72?8:Math.floor(e/7)},[K.length]),X=t.useMemo(()=>{if(0===K.length)return[0,"auto"];const e=K.map(e=>e.received),t=Math.min(...e),s=Math.max(...e);if(t===s)return[Math.max(0,t-1),s+1];const a=.1*(s-t);return[Math.max(0,Math.floor(t-a)),Math.ceil(s+a)]},[K]),se=(null==x?void 0:x.uptime_seconds)?R(x.uptime_seconds):"0m",ae=(null==x?void 0:x.node_name)||(null==(m=null==x?void 0:x.config)?void 0:m.node_name)||"Unknown Node",ne=t.useMemo(()=>{var e,t,s,a;const n=(null==(e=null==I?void 0:I.received)?void 0:e.reduce((e,t)=>e+t.count,0))??0,l=(null==(t=null==I?void 0:I.forwarded)?void 0:t.reduce((e,t)=>e+t.count,0))??0,i=(null==(s=null==I?void 0:I.dropped)?void 0:s.reduce((e,t)=>e+t.count,0))??0,r=(null==(a=null==I?void 0:I.transmitted)?void 0:a.reduce((e,t)=>e+t.count,0))??0,o=((null==I?void 0:I.time_range_minutes)??L.minutes)/60;return{received:n,forwarded:l,dropped:i,transmitted:r,rxPerHour:o>0?Math.round(n/o):0,fwdPerHour:o>0?Math.round(l/o):0}},[I,L.minutes]);return h?e.jsxs(H,{className:"p-8 text-center",children:[e.jsx("p",{className:"type-subheading text-accent-red mb-2",children:"Failed to connect to backend"}),e.jsx("p",{className:"type-body text-white/50",children:h}),e.jsx("p",{className:"type-data-sm text-white/40 mt-4",children:"Make sure the Python backend is running on port 8000"})]}):e.jsxs($,{children:[e.jsx(A,{title:ae,icon:e.jsx(v,{}),controls:e.jsx(O,{ranges:C,selectedIndex:M,onSelect:_})}),e.jsx(te,{template:"hero",children:e.jsxs(H,{isLoaded:y,skeletonType:"chart",children:[e.jsx(W,{icon:e.jsx(i,{}),title:"RECEIVED",badge:L.label,iconColor:"text-accent-success"}),e.jsx("div",{className:"type-hero font-semibold min-h-[3rem]",style:{color:N.received},children:ne.received.toLocaleString()}),e.jsxs("div",{className:"type-body-sm text-text-secondary mt-1",children:[ne.rxPerHour,"/hr rate"]}),e.jsx("div",{className:"mt-4",children:K.length>0?e.jsx(U,{width:"100%",height:180,children:e.jsxs(q,{data:K,children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"gradient-received",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:N.received,stopOpacity:.3}),e.jsx("stop",{offset:"95%",stopColor:N.received,stopOpacity:0})]})}),e.jsx(J,{strokeDasharray:"3 3",stroke:k.grid,vertical:!1}),e.jsx(G,{dataKey:"time",axisLine:!1,tickLine:!1,tick:{fill:k.axisTick,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dy:8,interval:Q,minTickGap:20}),e.jsx(Y,{domain:X,axisLine:!1,tickLine:!1,tick:{fill:k.axisTick,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dx:-8,width:40}),e.jsx(Z,{content:e.jsx(oe,{color:N.received,labelKey:"time",unit:" packets"}),cursor:{stroke:k.cursor,strokeWidth:1}}),e.jsx(ee,{type:"stepAfter",dataKey:"received",stroke:N.received,fill:"url(#gradient-received)",strokeWidth:1,dot:!1,activeDot:{r:4,strokeWidth:0,fill:N.received},isAnimationActive:!1})]})}):e.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No data available for this time range"})})]})}),e.jsxs(te,{template:"compact",children:[e.jsx(ie,{title:"FORWARDED",value:ne.forwarded,subtitle:`${ne.fwdPerHour}/hr rate`,color:"forwarded",buckets:null==I?void 0:I.forwarded,timeRangeLabel:L.label,icon:e.jsx(g,{className:"w-4 h-4"}),isLoaded:y}),e.jsx(ie,{title:"DROPPED",value:ne.dropped,subtitle:"Filtered or duplicate",color:"dropped",buckets:null==I?void 0:I.dropped,timeRangeLabel:L.label,icon:e.jsx(f,{className:"w-4 h-4"}),isLoaded:y}),e.jsx(me,{stats:x,receivedBuckets:null==I?void 0:I.received,droppedBuckets:null==I?void 0:I.dropped,forwardedBuckets:null==I?void 0:I.forwarded,bucketDurationSeconds:null==I?void 0:I.bucket_duration_seconds,timeRangeLabel:L.label,isLoaded:y}),e.jsx(ie,{title:"UPTIME",value:se,subtitle:"Since last restart",color:"neutral",icon:e.jsx(j,{className:"w-4 h-4"}),isLoaded:y})]}),e.jsx(De,{}),e.jsx(re,{}),x&&e.jsx(te,{template:"auto",children:e.jsxs(H,{children:[e.jsx(W,{icon:e.jsx(s,{}),title:"Node Information",largeTitle:!0}),e.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"type-label text-text-muted",children:"Node Name"}),e.jsx("p",{className:"type-body text-text-primary mt-1",children:ae})]}),e.jsxs("div",{children:[e.jsx("span",{className:"type-label text-text-muted",children:"Version"}),e.jsxs("p",{className:"type-data text-text-primary mt-1",children:["v",x.version]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"type-label text-text-muted",children:"Core Version"}),e.jsxs("p",{className:"type-data text-text-primary mt-1",children:["v",x.core_version]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"type-label text-text-muted",children:"Local Hash"}),e.jsx("div",{className:"mt-1",children:x.local_hash?e.jsx(V,{hash:x.local_hash,size:"sm"}):e.jsx("span",{className:"type-data-sm text-text-muted",children:"N/A"})})]})]}),x.public_key&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-border-subtle",children:[e.jsx("span",{className:"type-label text-text-muted",children:"Public Key"}),e.jsx("div",{className:"mt-1",children:e.jsx(V,{hash:x.public_key,prefixLength:12,suffixLength:8})})]})]})})]})}export{Pe as default}; diff --git a/frontend/dist/assets/Dashboard-D1niW_DD.js b/frontend/dist/assets/Dashboard-D1niW_DD.js new file mode 100644 index 00000000..354d8958 --- /dev/null +++ b/frontend/dist/assets/Dashboard-D1niW_DD.js @@ -0,0 +1 @@ +import{j as e,r as t,p as s,y as a,g as n,A as l,T as i,z as r,D as o,E as c,x as d,H as u,I as m,J as h,Z as x,K as p,O as v,Q as g,U as f,o as j}from"./vendor-react-CWPBVwgk.js";import{u as b,a as y,b as N,c as k,d as w,g as M,e as _,f as L,h as S,j as C,k as B,D as R,m as F,n as T}from"./index-BlYVqXhs.js";import{u as D,a as P}from"./useThemeColors-f-o_FvwS.js";import{C as H,a as $,P as A,b as E,c as W}from"./PageLayout-Kh569_kh.js";import{g as z,P as I,a as K,b as O}from"./PacketDetailModal-D_VE4qlE.js";import{T as U}from"./TimeRangeSelector-B_qs4oni.js";import{H as V}from"./HashBadge-Bq5n5xgM.js";import{R as Q,L as X,a as q,A as J,C as G,X as Y,Y as Z,T as ee,b as te}from"./recharts-cqZ_RWsW.js";import{R as se}from"./Grid-CguXkLgY.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";import"./SignalIndicator-QKnbwhAo.js";const ae={received:{value:"text-[var(--metric-received)]",barBase:"var(--metric-received)"},forwarded:{value:"text-[var(--metric-forwarded)]",barBase:"var(--metric-forwarded)"},transmitted:{value:"text-[var(--metric-transmitted)]",barBase:"var(--metric-transmitted)"},dropped:{value:"text-[var(--metric-dropped)]",barBase:"var(--metric-dropped)"},neutral:{value:"text-text-secondary",barBase:"var(--metric-neutral)"}};function ne({buckets:s,colorType:a,height:n=64}){const l=ae[a],{bars:i}=t.useMemo(()=>{var e,t;if(!s||0===s.length)return{bars:[]};const a=[],n=s.length/60;if(n<=1)a.push(...s);else for(let l=0;l<60;l++){const i=Math.floor(l*n),r=Math.floor((l+1)*n),o=s.slice(i,r),c=o.reduce((e,t)=>e+t.count,0),d=o.length>0?o.reduce((e,t)=>e+t.avg_snr,0)/o.length:0;a.push({bucket:l,start:(null==(e=o[0])?void 0:e.start)??0,end:(null==(t=o[o.length-1])?void 0:t.end)??0,count:c,airtime_ms:o.reduce((e,t)=>e+t.airtime_ms,0),avg_snr:d,avg_rssi:0})}const i=Math.max(...a.map(e=>e.count),1);return{bars:a.map(e=>({height:e.count>0?Math.max(e.count/i*100,8):0,color:e.count>0?l.barBase:"transparent",count:e.count,snr:e.avg_snr}))}},[s,l]);return s&&0!==s.length?e.jsx("div",{className:"w-full flex items-end gap-[1px]",style:{height:n},children:i.map((t,s)=>{var a;return e.jsx("div",{className:"flex-1 rounded-t-sm",style:{height:`${t.height}%`,backgroundColor:t.color,opacity:t.count>0?.8:.1,minHeight:t.count>0?"4px":"2px",maxWidth:"4px"},title:t.count>0?`${t.count} packets, SNR: ${null==(a=t.snr)?void 0:a.toFixed(1)}dB`:"No packets"},s)})}):e.jsx("div",{className:"w-full flex items-end justify-center gap-[2px] opacity-20",style:{height:n},children:e.jsx("span",{className:"type-data-xs text-text-muted",children:"No data"})})}const le={received:"text-text-secondary",forwarded:"text-text-secondary",transmitted:"text-text-secondary",dropped:"text-text-secondary",neutral:"text-text-secondary"},ie={sm:"card-sm",md:"card-md",lg:"card-lg",hero:"card-hero",auto:""};function re({title:t,value:s,color:a="neutral",subtitle:n,buckets:l,timeRangeLabel:i,icon:r,size:o="md",isLoaded:c=!0}){const d=ae[a],u="string"==typeof s?s:s.toLocaleString();return e.jsxs("div",{className:`data-card flex flex-col relative ${ie[o]}`,children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[r&&e.jsx("span",{className:`icon-sm ${le[a]}`,children:r}),e.jsx("span",{className:"type-micro",children:t}),i&&e.jsx("span",{className:"pill-tag",children:i})]}),e.jsx("div",{className:"data-card-value",children:u}),e.jsx("div",{className:"flex-1 py-2 mt-2",children:l?e.jsx(ne,{buckets:l,colorType:a,height:64}):e.jsx("div",{className:"w-full h-16 flex items-center justify-center",children:e.jsx("div",{className:"w-full h-0.5 rounded-full",style:{backgroundColor:d.barBase,opacity:.15}})})}),e.jsx("div",{className:"type-label text-text-muted border-t border-border-subtle pt-3 mt-2",children:n||`Total ${t.toLowerCase()}`}),!c&&e.jsx(H,{})]})}function oe(){const i=b(),r=y(),o=N(),c=k(),d=w(),u=t.useMemo(()=>[...i.length<=100?i:i.slice(-100)].sort((e,t)=>(t.timestamp??0)-(e.timestamp??0)),[i]),m=t.useMemo(()=>{const e=new Map;if(!(null==d?void 0:d.neighbors))return e;d.local_hash&&e.set(M(d.local_hash),d.local_hash);for(const t of Object.keys(d.neighbors)){const s=M(t);e.has(s)||e.set(s,t)}return e},[null==d?void 0:d.neighbors,null==d?void 0:d.local_hash]),[h,x]=t.useState(null),[p,v]=t.useState(null),g=t.useRef(0),f=t.useRef(0);t.useEffect(()=>{var e;if(0===u.length)return;const t=(null==(e=u[0])?void 0:e.timestamp)??0;if(t>f.current&&f.current>0){const e=u.find(e=>(e.payload_type_name||z(e.payload_type??e.type)).toLowerCase().includes("advert"));e&&(e.timestamp??0)>f.current&&(x(e.packet_hash),setTimeout(()=>x(null),600))}f.current=t},[u]),t.useEffect(()=>{if(c>0&&c!==g.current&&u.length>0){g.current=c;const e=u.find(e=>(e.payload_type_name||z(e.payload_type??e.type)).toLowerCase().includes("advert"));if(e){const t=requestAnimationFrame(()=>x(e.packet_hash)),s=setTimeout(()=>x(null),600);return()=>{cancelAnimationFrame(t),clearTimeout(s)}}}},[c,u]);const j=t.useMemo(()=>u.slice(0,15).map(e=>{if(e.src_hash&&e.src_hash.length<=4){const t=e.src_hash.toUpperCase(),s=m.get(t);if(s)return{...e,src_hash_full:s}}return e}),[u,m]);return e.jsxs("div",{className:"chart-container h-full flex flex-col",children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(s,{className:"chart-title-icon"}),"Recent Packets"]}),e.jsxs("div",{className:"flex items-center gap-3",children:[o&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"w-2 h-2 fill-accent-success text-accent-success animate-pulse"}),e.jsx("span",{className:"type-data-xs text-text-muted",children:"LIVE"})]}),e.jsxs(n,{to:"/packets",className:"pill-subtle",children:["View all ",e.jsx(l,{className:"w-3 h-3"})]})]})]}),e.jsxs("div",{className:"sm:hidden flex items-center gap-1.5 px-3 py-1.5 border-b border-border-subtle/50 bg-bg-elevated/20",children:[e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-14 flex-shrink-0",children:"Dir"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-7 flex-shrink-0",children:"Time"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-9 flex-shrink-0",children:"Src"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider flex-1 min-w-0",children:"Type"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-14 flex-shrink-0",children:"Route"}),e.jsx("span",{className:"text-[9px] font-semibold text-text-muted uppercase tracking-wider w-10 text-right flex-shrink-0",children:"Signal"})]}),e.jsx("div",{className:"hidden sm:block flex-1 overflow-hidden",children:e.jsx("div",{className:"h-full overflow-y-auto",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{className:"sticky top-0 bg-bg-elevated/95 backdrop-blur-sm",children:e.jsxs("tr",{className:"border-b border-border-subtle/50",children:[e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider w-16",children:"Dir"}),e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Time"}),e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Source"}),e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Type"}),e.jsx("th",{className:"text-left py-1.5 px-3 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Route"}),e.jsx("th",{className:"text-right py-1.5 px-3 pr-4 text-[9px] font-semibold text-text-muted uppercase tracking-wider",children:"Signal"})]})}),e.jsx("tbody",{className:"divide-y divide-border-subtle/30",children:r&&0===u.length?e.jsx("tr",{children:e.jsx("td",{colSpan:6,className:"text-center py-8 text-text-muted",children:"Loading packets..."})}):0===j.length?e.jsx("tr",{children:e.jsxs("td",{colSpan:6,className:"text-center py-8",children:[e.jsx(s,{className:"w-6 h-6 text-text-muted mx-auto mb-2"}),e.jsx("div",{className:"text-sm text-text-primary",children:"No packets received"}),e.jsx("div",{className:"text-xs text-text-muted",children:"Packets will appear here"})]})}):j.map((t,s)=>{const a=(t.payload_type_name||z(t.payload_type??t.type)).toLowerCase().includes("advert");return e.jsx(I,{packet:t,onClick:v,isFlashing:a&&h===t.packet_hash},`${t.packet_hash}_${t.timestamp}_${s}`)})})]})})}),e.jsx("div",{className:"sm:hidden flex-1 overflow-y-auto divide-y divide-border-subtle/30",children:r&&0===u.length?e.jsx("div",{className:"p-8 text-center text-text-muted",children:"Loading packets..."}):0===j.length?e.jsxs("div",{className:"p-8 text-center",children:[e.jsx(s,{className:"w-6 h-6 text-text-muted mx-auto mb-2"}),e.jsx("div",{className:"text-sm text-text-primary",children:"No packets received"}),e.jsx("div",{className:"text-xs text-text-muted",children:"Packets will appear here"})]}):j.map((t,s)=>{const a=(t.payload_type_name||z(t.payload_type??t.type)).toLowerCase().includes("advert");return e.jsx(K,{packet:t,onClick:v,isFlashing:a&&h===t.packet_hash},`${t.packet_hash}_${t.timestamp}_${s}`)})}),e.jsxs("div",{className:"px-3 py-1.5 border-t border-border-subtle/50 text-[10px] text-text-muted bg-bg-elevated/20 text-center",children:["Showing ",j.length," of ",u.length," packets"]}),p&&e.jsx(O,{packet:p,onClose:()=>v(null)})]})}t.memo(function({active:t,payload:s,label:a,formatValue:n,labelKey:l}){var i;if(!t||!s||0===s.length)return null;const r=l&&(null==(i=s[0])?void 0:i.payload)?s[0].payload[l]:a;return e.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-4 py-3 shadow-xl",children:[r&&e.jsx("p",{className:"type-data-xs text-white/50 mb-2",children:r}),e.jsx("div",{className:"space-y-1.5",children:s.map((t,s)=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:t.color}}),e.jsx("span",{className:"type-body-sm text-white/70 capitalize min-w-[60px]",children:t.name}),e.jsx("span",{className:"type-data-sm text-white tabular-nums",children:n?n(t.value,t.name):t.value.toLocaleString()})]},s))})]})});const ce=t.memo(function({active:t,payload:s,color:a,labelKey:n,unit:l=""}){var i,r;if(!t||!s||0===s.length)return null;const o=s[0],c=null==(i=null==o?void 0:o.payload)?void 0:i[n];return e.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 shadow-xl",children:[e.jsx("p",{className:"type-data-xs text-white/50 mb-1",children:c}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:a}}),e.jsxs("span",{className:"type-data-sm text-white tabular-nums",children:[null==(r=null==o?void 0:o.value)?void 0:r.toLocaleString(),l]})]})]})});t.memo(function({payload:t}){return t&&0!==t.length?e.jsx("div",{className:"flex items-center justify-center gap-6 mt-4 pt-4 border-t border-white/5",children:t.map((t,s)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:t.color}}),e.jsx("span",{className:"type-body-sm text-white/60 capitalize",children:t.value})]},s))}):null});const de=.2;function ue(e,t=1){return Math.floor(5*t*e)}function me(e){const t=Math.round(e/de)*de;return Math.max(0,Math.min(5,t))}function he({stats:s,receivedBuckets:a,droppedBuckets:n,forwardedBuckets:l,bucketDurationSeconds:d,timeRangeLabel:u,isLoaded:m=!0}){var h,x,p,v;const g=t.useMemo(()=>function(e,t,s,a,n){var l,i;const r=(null==t?void 0:t.reduce((e,t)=>e+t.count,0))??0,o=(null==s?void 0:s.reduce((e,t)=>e+t.count,0))??0,c=(null==a?void 0:a.reduce((e,t)=>e+t.count,0))??0,d=r>0?r:(null==e?void 0:e.rx_count)||1,u=o>0?o:(null==e?void 0:e.dropped_count)||0,m=d>0?u/(d+u)*100:0;let h=0;if(a&&a.length>0&&n)h=100*c/(a.length*n*1e3)*100;else if(e){const t=1e3*(e.uptime_seconds||1);h=(e.total_airtime_ms||e.airtime_used_ms||0)/t*100}const x=(null==e?void 0:e.neighbors)||{},p=Object.values(x).filter(e=>!0===e.zero_hop).length;let v=1;m<3?v-=de:m>15?v+=.4:m>10&&(v+=de),h>5&&(v+=de),p>10&&(v+=de);const g=me(v),f=me(.28*g),j=ue(g),b=ue(f),y=ue((null==(i=null==(l=null==e?void 0:e.config)?void 0:l.delays)?void 0:i.tx_delay_factor)??1);let N;return N=j>y?"increase":j10?"text-accent-warning":"text-text-secondary"),children:[g.duplicateRate.toFixed(1),"%"]})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-text-muted",children:"TX Util"}),e.jsxs("span",{className:"tabular-nums text-text-secondary",children:[g.txUtilization.toFixed(2),"%"]})]})]}),e.jsx("div",{className:"type-label text-text-muted border-t border-border-subtle pt-3 mt-2 truncate",children:null!==f?e.jsxs("span",{children:["Current: ×",f.toFixed(1)," / ×",(null==j?void 0:j.toFixed(1))??"—"]}):e.jsx("span",{children:"Slot-aligned factors"})}),!m&&e.jsx(H,{})]})}function xe({trend:t}){return"stable"===t?e.jsx("span",{className:"mini-widget-trend stable",children:e.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 12h14"})})}):"up"===t?e.jsx("span",{className:"mini-widget-trend up",children:e.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 15l7-7 7 7"})})}):e.jsx("span",{className:"mini-widget-trend down",children:e.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})}function pe(){return e.jsx("div",{className:"mini-widget-loading",children:e.jsx("div",{className:"mini-widget-loading-spinner"})})}function ve({message:t}){return e.jsx("div",{className:"mini-widget-error",children:e.jsx("span",{title:t,children:"No data"})})}function ge({title:t,icon:s,value:a,unit:n,valueSize:l="md",status:i,subtitle:r,trend:o,children:c,isLoading:d=!1,error:u,className:m="",onClick:h}){const x=["mini-widget-value","lg"===l&&"mini-widget-value-lg","sm"===l&&"mini-widget-value-sm",""].filter(Boolean).join(" "),p=["mini-widget",h&&"cursor-pointer",m].filter(Boolean).join(" ");return e.jsxs("div",{className:p,onClick:h,role:h?"button":void 0,children:[e.jsxs("div",{className:"mini-widget-header",children:[s,e.jsx("span",{className:"mini-widget-title",children:t}),i&&"unknown"!==i&&e.jsx("div",{className:`mini-widget-status-dot ${i}`}),o&&e.jsx(xe,{trend:o})]}),d?e.jsx(pe,{}):u?e.jsx(ve,{message:u}):e.jsxs(e.Fragment,{children:[void 0!==a&&e.jsxs("div",{className:x,children:[a,n&&e.jsx("span",{className:"mini-widget-unit",children:n})]}),r&&e.jsx("div",{className:"mini-widget-subtitle",children:r}),c]})]})}const fe=t.createContext({lbtStats:null,noiseFloor:null,hourlyNoiseFloor:[],linkQuality:null,channelHealth:null,trends:null,stats:null,recentPackets:[],quickNeighbors:[],isLoading:!0,error:null,refresh:async()=>{}});function je(e){if(!e)return[];try{const t=JSON.parse(e);if(Array.isArray(t))return t.map(Number).filter(e=>!isNaN(e))}catch{}return[]}function be(e,t,s=2,a=!1){if(null===t)return"stable";const n=e-t;return(0!==t?100*Math.abs(n/t):Math.abs(n))0?"up":"down":n>0?"down":"up"}function ye({children:s}){const a=w(),n=b(),l=_(),i=L(),r=null===a,o=t.useMemo(()=>function(e){const t=Math.floor(Date.now()/1e3),s=t-86400,a=e.filter(e=>e.timestamp>=s&&void 0!==e.lbt_attempts&&e.lbt_attempts>0),n=a.length,l=a.filter(e=>(e.lbt_attempts??0)>1).length,i=n>0?l/n*100:0,r=a.filter(e=>(e.lbt_attempts??0)>1),o=r.length>0?r.reduce((e,t)=>e+(t.lbt_attempts??0),0)/r.length:0,c=a.filter(e=>!0===e.lbt_channel_busy||1===e.lbt_channel_busy).length,d=n>0?c/n*100:0,u=[];for(const f of a){const e=je(f.lbt_backoff_delays_ms);u.push(...e)}const m=u.reduce((e,t)=>e+t,0),h=u.length>0?m/u.length:0,x=u.length>0?Math.max(...u):0,p=[],v=[],g=[];for(let f=0;f<24;f++){const e=t-3600*(24-f),s=e+3600,n=a.filter(t=>t.timestamp>=e&&t.timestamp(e.lbt_attempts??0)>1).length,i=n.length>0?l/n.length*100:0;p.push(i);const r=[];for(const t of n){const e=je(t.lbt_backoff_delays_ms);r.push(...e)}const o=r.length>0?r.reduce((e,t)=>e+t,0)/r.length:0;if(g.push(o),0===n.length)v.push(0);else{const e=n.filter(e=>!0===e.lbt_channel_busy||1===e.lbt_channel_busy).length,t=r.length>0?Math.max(...r):0,s=Math.min(n.length/5,1),a=.15,l=Math.log(1+i*a)/Math.log(1+100*a)*40,c=e/n.length*100,d=Math.min(.5*c,25);let u=0;o>100&&(u=Math.min(8*Math.log10(o/100),15));let m=0;t>500&&o>0&&t>2*o&&(m=Math.min((t-500)/200,5));const h=l+d+u+m;v.push(Math.min(h*s,85))}}return{totalPacketsWithLBT:n,packetsWithRetries:l,retryRate:i,avgRetries:o,channelBusyCount:c,channelBusyRate:d,avgBackoffMs:h,maxBackoffMs:x,totalBackoffMs:m,hourlyRetryRates:p,hourlyCollisionRisk:v,hourlyAvgBackoffMs:g,windowHours:24,packetCount:e.length}}(n),[n]),c=(null==a?void 0:a.noise_floor_dbm)??null,[d,u]=t.useState([]),m=t.useRef(0);t.useEffect(()=>{const e=async()=>{var e;const t=Date.now();if(!(t-m.current<6e4)){m.current=t;try{const t=await S(24);if(t.success&&(null==(e=t.data)?void 0:e.history)){const e=Math.floor(Date.now()/1e3),s=[];for(let a=0;a<24;a++){const n=e-3600*(24-a),l=n+3600,i=t.data.history.filter(e=>e.timestamp>=n&&e.timestamp0){const e=i.reduce((e,t)=>e+t.noise_floor_dbm,0)/i.length;s.push(e)}else s.push(s.length>0?s[s.length-1]:-100)}u(s)}}catch{}}};e();const t=setInterval(e,6e4);return()=>clearInterval(t)},[]);const h=null==a?void 0:a.neighbors,x=t.useMemo(()=>{const e=h??{};return Object.fromEntries(Object.entries(e).filter(([e])=>!i.has(e)))},[h,i]),p=t.useMemo(()=>l.filter(e=>!i.has(e.hash)),[l,i]),v=t.useMemo(()=>function(e,t){if(0===e.length)return{neighbors:[],networkScore:0,neighborCount:0,bestLink:null,worstLink:null};const s=e.map(e=>{const s=function(e,t){let s=50;void 0!==e&&(s=e>=10?100:e>=5?80:e>=0?60:e>=-5?40:20);let a=50;return void 0!==t&&(a=t>=-70?100:t>=-80?80:t>=-90?60:t>=-100?40:20),Math.round(.6*s+.4*a)}(e.avgSnr??void 0,e.avgRssi??void 0),a=t[e.hash];return{name:(null==a?void 0:a.name)||(null==a?void 0:a.node_name)||e.prefix,hash:e.hash,rssi:e.avgRssi??-100,snr:e.avgSnr??-10,score:s,advertCount:e.count}});s.sort((e,t)=>t.score-e.score);const a=s.length>0?s.reduce((e,t)=>e+t.score,0)/s.length:0;return{neighbors:s,networkScore:Math.round(a),neighborCount:s.length,bestLink:s.length>0?{name:s[0].name,score:s[0].score}:null,worstLink:s.length>0?{name:s[s.length-1].name,score:s[s.length-1].score}:null}}(p,x),[p,x]),g=t.useMemo(()=>function(e,t,s){const a=e?Math.max(0,Math.min(100,100-5*e.retryRate)):50;let n=50;null!==t&&(n=Math.max(0,Math.min(100,(t+120)/30*100)));const l=(null==s?void 0:s.networkScore)??50,i=Math.round(.35*a+.25*n+.4*l);let r;return r=i>=85?"excellent":i>=70?"good":i>=50?"fair":i>=30?"congested":"critical",{score:i,status:r,components:{lbtHealth:Math.round(a),noiseHealth:Math.round(n),linkHealth:Math.round(l)}}}(o,c,v),[o,c,v]),[f,j]=t.useState({noiseFloor:null,networkScore:null,channelHealth:null}),y=t.useRef(0);t.useEffect(()=>{const e=()=>{const e=Date.now();e-y.current>3e4&&(y.current=e,j({noiseFloor:c,networkScore:(null==v?void 0:v.networkScore)??null,channelHealth:(null==g?void 0:g.score)??null}))};e();const t=setInterval(e,5e3);return()=>clearInterval(t)},[c,null==v?void 0:v.networkScore,null==g?void 0:g.score]);const N=t.useMemo(()=>({noiseFloor:{current:c,previous:f.noiseFloor,trend:null!==c?be(c,f.noiseFloor,2,!0):"stable"},networkScore:{current:(null==v?void 0:v.networkScore)??0,previous:f.networkScore,trend:be((null==v?void 0:v.networkScore)??0,f.networkScore,3,!1)},channelHealth:{current:(null==g?void 0:g.score)??0,previous:f.channelHealth,trend:be((null==g?void 0:g.score)??0,f.channelHealth,3,!1)}}),[c,null==v?void 0:v.networkScore,null==g?void 0:g.score,f]),k={lbtStats:o,noiseFloor:c,hourlyNoiseFloor:d,linkQuality:v,channelHealth:g,trends:N,stats:a,recentPackets:n,quickNeighbors:l,isLoading:r,error:null,refresh:async()=>{}};return e.jsx(fe.Provider,{value:k,children:s})}function Ne(){const e=t.useContext(fe);if(void 0===e)throw new Error("useLBTData must be used within an LBTDataProvider");return e}const ke={excellent:"var(--signal-excellent)",good:"var(--signal-good)",fair:"var(--signal-fair)",congested:"var(--signal-poor)",critical:"var(--signal-critical)",unknown:"var(--text-muted)"};function we(e,t){return 0===e?"No backoffs":`${t.toFixed(0)}% retry rate`}function Me(){const{lbtStats:s,isLoading:a,error:n}=Ne(),l=d(),i=(null==s?void 0:s.avgBackoffMs)??0,r=(null==s?void 0:s.retryRate)??0,o=s?(u=i)<100?"excellent":u<250?"good":u<500?"fair":u<1e3?"congested":"critical":"unknown";var u;const m=null==s?void 0:s.hourlyAvgBackoffMs,h=t.useMemo(()=>!m||m.length<2?[]:m.map(e=>({value:e})),[m]),x=ke[o];return e.jsx(ge,{title:"LBT Backoff",icon:e.jsx(c,{className:"mini-widget-icon"}),value:Math.round(i),unit:"ms",status:o,subtitle:s?we(i,r):void 0,isLoading:a,error:n,onClick:()=>l("/packets"),children:e.jsx("div",{className:"mini-widget-sparkline",children:h.length>0?e.jsx(Q,{width:"100%",height:24,children:e.jsx(X,{data:h,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(q,{type:"monotone",dataKey:"value",stroke:x,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function _e(){const{lbtStats:t,isLoading:s,error:a}=Ne(),n=d(),l=(null==t?void 0:t.channelBusyCount)??0,i=(null==t?void 0:t.totalPacketsWithLBT)??0,r=(null==t?void 0:t.channelBusyRate)??0,o=t?(c=r)<.5?"excellent":c<1?"good":c<2?"fair":c<5?"congested":"critical":"unknown";var c;return e.jsx(ge,{title:"Ch. Busy",icon:e.jsx(u,{className:"mini-widget-icon"}),value:l,status:o,subtitle:t?`${r.toFixed(2)}% of ${i} TX`:void 0,isLoading:s,error:a,onClick:()=>n("/packets")})}function Le(e){return null===e?"No reading":e<-115?"Very quiet":e<-105?"Quiet":e<-95?"Moderate":e<-85?"Elevated":"High interference"}const Se={excellent:"var(--signal-excellent)",good:"var(--signal-good)",fair:"var(--signal-fair)",congested:"var(--signal-poor)",critical:"var(--signal-critical)",unknown:"var(--text-muted)"};function Ce(){const{noiseFloor:s,hourlyNoiseFloor:a,trends:n,isLoading:l,error:i}=Ne(),r=null===(o=s)||o<-110?"excellent":o<-100?"good":o<-90?"fair":o<-80?"congested":"critical";var o;const c=null==n?void 0:n.noiseFloor.trend,d=t.useMemo(()=>!a||a.length<2?[]:a.map(e=>({value:e})),[a]),u=Se[r];return e.jsx(ge,{title:"Noise Floor",icon:e.jsx(m,{className:"mini-widget-icon"}),value:null!==s?Math.round(s):"—",unit:null!==s?"dBm":void 0,status:r,trend:c,subtitle:Le(s),isLoading:l,error:i,children:e.jsx("div",{className:"mini-widget-sparkline",children:d.length>0?e.jsx(Q,{width:"100%",height:24,children:e.jsx(X,{data:d,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(q,{type:"monotone",dataKey:"value",stroke:u,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Be(e,t=8){return e.length<=t?e:e.substring(0,t-1)+"…"}function Re(){const{linkQuality:t,isLoading:s,error:a}=Ne(),n=d(),l=null==t?void 0:t.bestLink,i=null==t?void 0:t.worstLink,r=i?(o=i.score)>=60?"excellent":o>=40?"good":o>=25?"fair":o>=10?"congested":"critical":"unknown";var o;const c=t&&l&&i?e.jsxs("div",{className:"flex flex-col gap-0.5 mt-auto",children:[e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-text-muted",children:"Best:"}),e.jsxs("span",{className:"font-mono text-signal-excellent",children:[Be(l.name)," (",Math.round(l.score),")"]})]}),e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:"text-text-muted",children:"Worst:"}),e.jsxs("span",{className:"font-mono "+(i.score>=40?"text-signal-fair":"text-signal-critical"),children:[Be(i.name)," (",Math.round(i.score),")"]})]})]}):t&&0===t.neighborCount?e.jsx("div",{className:"flex items-center justify-center text-xs text-text-muted mt-auto",children:"No direct neighbors"}):null;return e.jsx(ge,{title:"Link Range",icon:e.jsx(h,{className:"mini-widget-icon"}),status:r,isLoading:s,error:a,onClick:()=>n("/contacts"),children:c})}const Fe={excellent:"var(--signal-excellent)",good:"var(--signal-good)",fair:"var(--signal-fair)",congested:"var(--signal-poor)",critical:"var(--signal-critical)",unknown:"var(--text-muted)"};function Te(){const{lbtStats:s,isLoading:a,error:n}=Ne(),l=s?function(e){const{retryRate:t,channelBusyCount:s,totalPacketsWithLBT:a,avgBackoffMs:n,maxBackoffMs:l}=e;if(0===a)return 0;const i=Math.min(a/10,1),r=Math.log(1+.15*t)/Math.log(16)*40,o=s/a*100,c=Math.min(.5*o,25);let d=0;n>100&&(d=Math.min(8*Math.log10(n/100),15));let u=0;l>500&&n>0&&l>2*n&&(u=Math.min((l-500)/200,5));const m=(r+c+d+u)*i;return Math.min(m,85)}(s):0,i=s?(r=l)<15?"excellent":r<30?"good":r<45?"fair":r<60?"congested":"critical":"unknown";var r;const o=(null==s?void 0:s.maxBackoffMs)??0,c=s?o>200?`Max backoff: ${Math.round(o)}ms`:function(e){return e<15?"Clear channel":e<30?"Light traffic":e<45?"Moderate traffic":e<60?"Heavy traffic":e<75?"Congested":"Severe congestion"}(l):void 0,d=null==s?void 0:s.hourlyCollisionRisk,u=t.useMemo(()=>!d||d.length<2?[]:d.map(e=>({value:e})),[d]),m=Fe[i];return e.jsx(ge,{title:"Collision Risk",icon:e.jsx(x,{className:"mini-widget-icon"}),value:l.toFixed(1),unit:"%",status:i,subtitle:c,isLoading:a,error:n,children:e.jsx("div",{className:"mini-widget-sparkline",children:u.length>0?e.jsx(Q,{width:"100%",height:24,children:e.jsx(X,{data:u,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(q,{type:"monotone",dataKey:"value",stroke:m,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function De(){const[a,n]=t.useState(!1),[l]=t.useState(0),{stats:i,lbtStats:r,isLoading:o}=Ne(),c=t.useMemo(()=>{if(!i)return null;const e=i.airtime_used_ms??0,t=i.max_airtime_ms??1;return{usedMs:e,maxMs:t,remainingMs:i.airtime_remaining_ms??0,utilizationPercent:i.utilization_percent??(t>0?e/t*100:0)}},[i]),d=t.useMemo(()=>{if(!r||0===r.totalPacketsWithLBT)return 100;const e=r.channelBusyCount,t=r.totalPacketsWithLBT;return(t-e)/t*100},[r]),u=(null==c?void 0:c.utilizationPercent)??0,m=(h=u)<30?"excellent":h<50?"good":h<70?"fair":h<90?"congested":"critical";var h;const x=(null==c?void 0:c.remainingMs)??0,p=d<99?`${d.toFixed(0)}% TX success`:((v=x)<1e3?`${Math.round(v)}ms`:v<6e4?`${(v/1e3).toFixed(1)}s`:`${(v/6e4).toFixed(1)}m`)+" remaining";var v;const g=c?e.jsx("div",{className:"mini-widget-progress mt-auto",children:e.jsx("div",{className:`mini-widget-progress-bar ${m}`,style:{width:`${Math.min(u,100)}%`}})}):null;return e.jsx(ge,{title:"Duty Cycle",icon:e.jsx(s,{className:"mini-widget-icon"}),value:u.toFixed(1),unit:"%",status:m,subtitle:p,isLoading:o,children:g})}function Pe({className:t=""}){return e.jsx(ye,{children:e.jsxs("div",{className:`mesh-health-container ${t}`,children:[e.jsxs("div",{className:"mesh-health-header",children:[e.jsx(p,{className:"w-4 h-4 text-accent-primary"}),e.jsx("span",{className:"type-label text-text-muted",children:"MESH HEALTH"})]}),e.jsxs("div",{className:"widget-row",children:[e.jsx(Me,{}),e.jsx(Te,{}),e.jsx(Ce,{}),e.jsx(De,{}),e.jsx(_e,{}),e.jsx(Re,{})]})]})})}function He(){var a,n,l,r,o,c,d,u,m;const h=w(),x=C(),p=b(),y=B(),N=D(),k=P(),[M,_]=t.useState(4),L=R[M],S=t.useMemo(()=>{var e;if(!(null==(e=null==h?void 0:h.config)?void 0:e.radio))return null;const t=h.config.radio;return{sf:t.spreading_factor??10,bw:t.bandwidth??25e4,cr:t.coding_rate??5,preamble:t.preamble_length??8}},[null==(n=null==(a=null==h?void 0:h.config)?void 0:a.radio)?void 0:n.spreading_factor,null==(r=null==(l=null==h?void 0:h.config)?void 0:l.radio)?void 0:r.bandwidth,null==(c=null==(o=null==h?void 0:h.config)?void 0:o.radio)?void 0:c.coding_rate,null==(u=null==(d=null==h?void 0:h.config)?void 0:d.radio)?void 0:u.preamble_length]),H=p.length,z=L.buckets,I=t.useMemo(()=>0===H?null:F(L.minutes,z,p,h),[H,L.minutes,z,S]),K=t.useMemo(()=>function(e,t){if(!e||0===e.length)return[];const s=t>1440;return e.map(e=>{const t=new Date(1e3*e.start);return{time:s?t.toLocaleDateString([],{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}):t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),received:e.count}})}(null==I?void 0:I.received,L.minutes),[null==I?void 0:I.received,L.minutes]),O=t.useMemo(()=>{const e=K.length;return e<=12?0:e<=24?2:e<=48?5:e<=72?8:Math.floor(e/7)},[K.length]),X=t.useMemo(()=>{if(0===K.length)return[0,"auto"];const e=K.map(e=>e.received),t=Math.min(...e),s=Math.max(...e);if(t===s)return[Math.max(0,t-1),s+1];const a=.1*(s-t);return[Math.max(0,Math.floor(t-a)),Math.ceil(s+a)]},[K]),q=(null==h?void 0:h.uptime_seconds)?T(h.uptime_seconds):"0m",ae=(null==h?void 0:h.node_name)||(null==(m=null==h?void 0:h.config)?void 0:m.node_name)||"Unknown Node",ne=t.useMemo(()=>{var e,t,s,a;const n=(null==(e=null==I?void 0:I.received)?void 0:e.reduce((e,t)=>e+t.count,0))??0,l=(null==(t=null==I?void 0:I.forwarded)?void 0:t.reduce((e,t)=>e+t.count,0))??0,i=(null==(s=null==I?void 0:I.dropped)?void 0:s.reduce((e,t)=>e+t.count,0))??0,r=(null==(a=null==I?void 0:I.transmitted)?void 0:a.reduce((e,t)=>e+t.count,0))??0,o=((null==I?void 0:I.time_range_minutes)??L.minutes)/60;return{received:n,forwarded:l,dropped:i,transmitted:r,rxPerHour:o>0?Math.round(n/o):0,fwdPerHour:o>0?Math.round(l/o):0}},[I,L.minutes]);return x?e.jsxs($,{className:"p-8 text-center",children:[e.jsx("p",{className:"type-subheading text-accent-red mb-2",children:"Failed to connect to backend"}),e.jsx("p",{className:"type-body text-white/50",children:x}),e.jsx("p",{className:"type-data-sm text-white/40 mt-4",children:"Make sure the Python backend is running on port 8000"})]}):e.jsxs(A,{children:[e.jsx(E,{title:ae,icon:e.jsx(v,{}),controls:e.jsx(U,{ranges:R,selectedIndex:M,onSelect:_})}),e.jsx(se,{template:"hero",children:e.jsxs($,{isLoaded:y,skeletonType:"chart",children:[e.jsx(W,{icon:e.jsx(i,{}),title:"RECEIVED",badge:L.label,iconColor:"text-accent-success"}),e.jsx("div",{className:"type-hero font-semibold min-h-[3rem]",style:{color:N.received},children:ne.received.toLocaleString()}),e.jsxs("div",{className:"type-body-sm text-text-secondary mt-1",children:[ne.rxPerHour,"/hr rate"]}),e.jsx("div",{className:"mt-4",children:K.length>0?e.jsx(Q,{width:"100%",height:180,children:e.jsxs(J,{data:K,children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"gradient-received",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:N.received,stopOpacity:.3}),e.jsx("stop",{offset:"95%",stopColor:N.received,stopOpacity:0})]})}),e.jsx(G,{strokeDasharray:"3 3",stroke:k.grid,vertical:!1}),e.jsx(Y,{dataKey:"time",axisLine:!1,tickLine:!1,tick:{fill:k.axisTick,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dy:8,interval:O,minTickGap:20}),e.jsx(Z,{domain:X,axisLine:!1,tickLine:!1,tick:{fill:k.axisTick,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dx:-8,width:40}),e.jsx(ee,{content:e.jsx(ce,{color:N.received,labelKey:"time",unit:" packets"}),cursor:{stroke:k.cursor,strokeWidth:1}}),e.jsx(te,{type:"stepAfter",dataKey:"received",stroke:N.received,fill:"url(#gradient-received)",strokeWidth:1,dot:!1,activeDot:{r:4,strokeWidth:0,fill:N.received},isAnimationActive:!1})]})}):e.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No data available for this time range"})})]})}),e.jsxs(se,{template:"compact",children:[e.jsx(re,{title:"FORWARDED",value:ne.forwarded,subtitle:`${ne.fwdPerHour}/hr rate`,color:"forwarded",buckets:null==I?void 0:I.forwarded,timeRangeLabel:L.label,icon:e.jsx(g,{className:"w-4 h-4"}),isLoaded:y}),e.jsx(re,{title:"DROPPED",value:ne.dropped,subtitle:"Filtered or duplicate",color:"dropped",buckets:null==I?void 0:I.dropped,timeRangeLabel:L.label,icon:e.jsx(f,{className:"w-4 h-4"}),isLoaded:y}),e.jsx(he,{stats:h,receivedBuckets:null==I?void 0:I.received,droppedBuckets:null==I?void 0:I.dropped,forwardedBuckets:null==I?void 0:I.forwarded,bucketDurationSeconds:null==I?void 0:I.bucket_duration_seconds,timeRangeLabel:L.label,isLoaded:y}),e.jsx(re,{title:"UPTIME",value:q,subtitle:"Since last restart",color:"neutral",icon:e.jsx(j,{className:"w-4 h-4"}),isLoaded:y})]}),e.jsx(Pe,{}),e.jsx(oe,{}),h&&e.jsx(se,{template:"auto",children:e.jsxs($,{children:[e.jsx(W,{icon:e.jsx(s,{}),title:"Node Information",largeTitle:!0}),e.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:[e.jsxs("div",{children:[e.jsx("span",{className:"type-label text-text-muted",children:"Node Name"}),e.jsx("p",{className:"type-body text-text-primary mt-1",children:ae})]}),e.jsxs("div",{children:[e.jsx("span",{className:"type-label text-text-muted",children:"Version"}),e.jsxs("p",{className:"type-data text-text-primary mt-1",children:["v",h.version]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"type-label text-text-muted",children:"Core Version"}),e.jsxs("p",{className:"type-data text-text-primary mt-1",children:["v",h.core_version]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"type-label text-text-muted",children:"Local Hash"}),e.jsx("div",{className:"mt-1",children:h.local_hash?e.jsx(V,{hash:h.local_hash,size:"sm"}):e.jsx("span",{className:"type-data-sm text-text-muted",children:"N/A"})})]})]}),h.public_key&&e.jsxs("div",{className:"mt-4 pt-4 border-t border-border-subtle",children:[e.jsx("span",{className:"type-label text-text-muted",children:"Public Key"}),e.jsx("div",{className:"mt-1",children:e.jsx(V,{hash:h.public_key,prefixLength:12,suffixLength:8})})]})]})})]})}export{He as default}; diff --git a/frontend/dist/assets/Grid-HJLNnEZz.js b/frontend/dist/assets/Grid-CguXkLgY.js similarity index 90% rename from frontend/dist/assets/Grid-HJLNnEZz.js rename to frontend/dist/assets/Grid-CguXkLgY.js index 23641147..557ae4cc 100644 --- a/frontend/dist/assets/Grid-HJLNnEZz.js +++ b/frontend/dist/assets/Grid-CguXkLgY.js @@ -1 +1 @@ -import{r as o,j as e}from"./vendor-react-CUlQ5-Td.js";import{c as t}from"./recharts-7RsRrQtf.js";const l={hero:{mobile:12},"hero-tall":{mobile:12},"hero-auto":{mobile:12},panel:{mobile:12,md:6},feature:{mobile:12,md:6,lg:4},standard:{mobile:12,sm:6,lg:4,xl:3},compact:{mobile:6,lg:3},widget:{mobile:6,sm:4,md:3,lg:2},auto:{mobile:12}},a={hero:"bento-row-hero","hero-tall":"bento-row-hero-tall","hero-auto":"bento-row-hero-auto",panel:"bento-row-panel",feature:"bento-row-feature",standard:"bento-row-standard",compact:"bento-row-compact",widget:"bento-row-widget",auto:"bento-row-auto"};function n({template:n,children:r,className:s,gap:c}){const i=l[n],b=a[n],d="none"===c?"gap-0":"sm"===c?"bento-gap-sm":"lg"===c?"bento-gap-lg":"bento-gap",p=o.Children.map(r,t=>o.isValidElement(t)?t.type===m?t:e.jsx(m,{span:i.mobile,sm:i.sm,md:i.md,lg:i.lg,xl:i.xl,children:t}):t);return e.jsx("div",{className:t("bento-row",b,d,s),children:p})}function r(o,e=""){const t=e?`${e}:`:"";return"full"===o?`${t}col-span-full`:"auto"===o?`${t}col-auto`:1.5===o?`${t}bento-col-1-5`:`${t}bento-col-${o}`}function m({children:o,span:l,sm:a,md:n,lg:m,xl:s,className:c}){const i=t("bento-cell",r(l),a&&r(a,"sm"),n&&r(n,"md"),m&&r(m,"lg"),s&&r(s,"xl"),c);return e.jsx("div",{className:i,children:o})}export{m as C,n as R}; +import{r as o,j as e}from"./vendor-react-CWPBVwgk.js";import{c as t}from"./recharts-cqZ_RWsW.js";const l={hero:{mobile:12},"hero-tall":{mobile:12},"hero-auto":{mobile:12},panel:{mobile:12,md:6},feature:{mobile:12,md:6,lg:4},standard:{mobile:12,sm:6,lg:4,xl:3},compact:{mobile:6,lg:3},widget:{mobile:6,sm:4,md:3,lg:2},auto:{mobile:12}},a={hero:"bento-row-hero","hero-tall":"bento-row-hero-tall","hero-auto":"bento-row-hero-auto",panel:"bento-row-panel",feature:"bento-row-feature",standard:"bento-row-standard",compact:"bento-row-compact",widget:"bento-row-widget",auto:"bento-row-auto"};function n({template:n,children:r,className:s,gap:c}){const i=l[n],b=a[n],d="none"===c?"gap-0":"sm"===c?"bento-gap-sm":"lg"===c?"bento-gap-lg":"bento-gap",p=o.Children.map(r,t=>o.isValidElement(t)?t.type===m?t:e.jsx(m,{span:i.mobile,sm:i.sm,md:i.md,lg:i.lg,xl:i.xl,children:t}):t);return e.jsx("div",{className:t("bento-row",b,d,s),children:p})}function r(o,e=""){const t=e?`${e}:`:"";return"full"===o?`${t}col-span-full`:"auto"===o?`${t}col-auto`:1.5===o?`${t}bento-col-1-5`:`${t}bento-col-${o}`}function m({children:o,span:l,sm:a,md:n,lg:m,xl:s,className:c}){const i=t("bento-cell",r(l),a&&r(a,"sm"),n&&r(n,"md"),m&&r(m,"lg"),s&&r(s,"xl"),c);return e.jsx("div",{className:i,children:o})}export{m as C,n as R}; diff --git a/frontend/dist/assets/HashBadge-Bq5n5xgM.js b/frontend/dist/assets/HashBadge-Bq5n5xgM.js new file mode 100644 index 00000000..409c48c7 --- /dev/null +++ b/frontend/dist/assets/HashBadge-Bq5n5xgM.js @@ -0,0 +1 @@ +import{r as e,j as t,a7 as o,W as n}from"./vendor-react-CWPBVwgk.js";import{c as s}from"./recharts-cqZ_RWsW.js";function a({hash:a,copyValue:r,prefixLength:c=8,suffixLength:i=6,full:l=!1,className:p,size:u="md"}){const[d,x]=e.useState(!1),[h,m]=e.useState(!1),w=e.useRef(null),y=r??a,f=e.useCallback(e=>{e.preventDefault(),e.stopPropagation(),w.current&&clearTimeout(w.current),function(e){if("undefined"!=typeof window&&(window.isSecureContext||"https:"===window.location.protocol||"localhost"===window.location.hostname)&&navigator.clipboard&&"function"==typeof navigator.clipboard.writeText)return navigator.clipboard.writeText(e).catch(()=>{}),!0;try{const t=window.scrollX,o=window.scrollY,n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.left="-9999px",n.style.top="-9999px",n.style.opacity="0",n.style.pointerEvents="none",n.setAttribute("readonly",""),document.body.appendChild(n),n.focus({preventScroll:!0}),n.select(),n.setSelectionRange(0,e.length);const s=document.execCommand("copy");return document.body.removeChild(n),window.scrollTo(t,o),s}catch(t){return!1}}(y),x(!0),w.current=setTimeout(()=>x(!1),2e3)},[y]),b=l||a.length<=c+i+3?a:`${a.slice(0,c)}…${a.slice(-i)}`,g={xs:"text-[9px] px-1 py-0.5 gap-0.5",sm:"text-[10px] px-1.5 py-0.5 gap-1",md:"text-xs px-2 py-1 gap-1.5"}[u];return t.jsxs("button",{type:"button",onClick:f,onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),className:s("inline-flex items-center font-mono rounded transition-all duration-200","bg-white/[0.04] hover:bg-white/[0.08]","border border-white/[0.06] hover:border-white/[0.12]","cursor-pointer select-none",g,p),title:`Click to copy: ${y}`,"aria-label":`Copy hash ${y}`,children:[t.jsx("span",{className:s("transition-colors duration-200",d?"text-accent-success":"text-text-secondary"),children:b}),t.jsx("span",{className:s("flex items-center justify-center transition-all duration-200","xs"===u?"w-2.5 h-2.5":"sm"===u?"w-3 h-3":"w-3.5 h-3.5"),children:d?t.jsx(o,{className:s("text-accent-success","xs"===u?"w-2 h-2":"sm"===u?"w-2.5 h-2.5":"w-3 h-3")}):t.jsx(n,{className:s("transition-opacity duration-200",h?"opacity-70":"opacity-40","xs"===u?"w-2 h-2":"sm"===u?"w-2.5 h-2.5":"w-3 h-3")})})]})}export{a as H}; diff --git a/frontend/dist/assets/HashBadge-Do84dDmK.js b/frontend/dist/assets/HashBadge-Do84dDmK.js deleted file mode 100644 index 7b316cee..00000000 --- a/frontend/dist/assets/HashBadge-Do84dDmK.js +++ /dev/null @@ -1 +0,0 @@ -import{r as e,j as t,a7 as o,W as n}from"./vendor-react-CUlQ5-Td.js";import{c as s}from"./recharts-7RsRrQtf.js";function a({hash:a,prefixLength:r=8,suffixLength:i=6,full:c=!1,className:l,size:p="md"}){const[u,d]=e.useState(!1),[x,h]=e.useState(!1),m=e.useRef(null),w=e.useCallback(e=>{e.preventDefault(),e.stopPropagation(),m.current&&clearTimeout(m.current),function(e){if("undefined"!=typeof window&&(window.isSecureContext||"https:"===window.location.protocol||"localhost"===window.location.hostname)&&navigator.clipboard&&"function"==typeof navigator.clipboard.writeText)return navigator.clipboard.writeText(e).catch(()=>{}),!0;try{const t=window.scrollX,o=window.scrollY,n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.left="-9999px",n.style.top="-9999px",n.style.opacity="0",n.style.pointerEvents="none",n.setAttribute("readonly",""),document.body.appendChild(n),n.focus({preventScroll:!0}),n.select(),n.setSelectionRange(0,e.length);const s=document.execCommand("copy");return document.body.removeChild(n),window.scrollTo(t,o),s}catch(t){return!1}}(a),d(!0),m.current=setTimeout(()=>d(!1),2e3)},[a]),y=c||a.length<=r+i+3?a:`${a.slice(0,r)}…${a.slice(-i)}`,f={xs:"text-[9px] px-1 py-0.5 gap-0.5",sm:"text-[10px] px-1.5 py-0.5 gap-1",md:"text-xs px-2 py-1 gap-1.5"}[p];return t.jsxs("button",{type:"button",onClick:w,onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),className:s("inline-flex items-center font-mono rounded transition-all duration-200","bg-white/[0.04] hover:bg-white/[0.08]","border border-white/[0.06] hover:border-white/[0.12]","cursor-pointer select-none",f,l),title:`Click to copy: ${a}`,"aria-label":`Copy hash ${a}`,children:[t.jsx("span",{className:s("transition-colors duration-200",u?"text-accent-success":"text-text-secondary"),children:y}),t.jsx("span",{className:s("flex items-center justify-center transition-all duration-200","xs"===p?"w-2.5 h-2.5":"sm"===p?"w-3 h-3":"w-3.5 h-3.5"),children:u?t.jsx(o,{className:s("text-accent-success","xs"===p?"w-2 h-2":"sm"===p?"w-2.5 h-2.5":"w-3 h-3")}):t.jsx(n,{className:s("transition-opacity duration-200",x?"opacity-70":"opacity-40","xs"===p?"w-2 h-2":"sm"===p?"w-2.5 h-2.5":"w-3 h-3")})})]})}export{a as H}; diff --git a/frontend/dist/assets/Login-BVGfeeRd.js b/frontend/dist/assets/Login-DdFKhylJ.js similarity index 98% rename from frontend/dist/assets/Login-BVGfeeRd.js rename to frontend/dist/assets/Login-DdFKhylJ.js index e7fbd406..b795000c 100644 --- a/frontend/dist/assets/Login-BVGfeeRd.js +++ b/frontend/dist/assets/Login-DdFKhylJ.js @@ -1 +1 @@ -import{r as e,j as t,x as s}from"./vendor-react-CUlQ5-Td.js";import{i as r,P as a,W as l,l as n}from"./index-C1whtcFB.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-MTXp-Y3t.js";import"./recharts-7RsRrQtf.js";const o=e.memo(function({width:e,height:s,className:r="",fill:a="currentColor"}){return t.jsxs("svg",{viewBox:"0 0 134 15",width:e,height:s,className:r,role:"img","aria-label":"MeshCore",style:{fillRule:"evenodd",clipRule:"evenodd"},children:[t.jsx("path",{fill:a,d:"M3.277,0.053C2.829,0.053 2.401,0.41 2.321,0.851L0.013,13.623C-0.067,14.064 0.232,14.421 0.681,14.421L3.13,14.421C3.578,14.421 4.006,14.064 4.086,13.623L5.004,8.54L6.684,13.957C6.766,14.239 7.02,14.421 7.337,14.421L10.58,14.421C10.897,14.421 11.217,14.239 11.401,13.957L15.043,8.513L14.119,13.623C14.038,14.064 14.338,14.421 14.787,14.421L17.236,14.421C17.684,14.421 18.112,14.064 18.192,13.623L20.5,0.851C20.582,0.41 20.283,0.053 19.834,0.053L16.69,0.053C16.373,0.053 16.053,0.235 15.87,0.517L9.897,9.473C9.803,9.616 9.578,9.578 9.528,9.41L7.074,0.517C6.992,0.235 6.738,0.053 6.421,0.053L3.277,0.053Z"}),t.jsx("path",{fill:a,d:"M21.146,14.421C21.146,14.421 33.257,14.421 33.257,14.421C33.526,14.421 33.784,14.205 33.831,13.942L34.337,11.128C34.385,10.863 34.206,10.649 33.936,10.649L25.519,10.649C25.429,10.649 25.37,10.576 25.385,10.488L25.635,9.105C25.65,9.017 25.736,8.944 25.826,8.944L32.596,8.944C32.865,8.944 33.123,8.728 33.171,8.465L33.621,5.974C33.669,5.709 33.49,5.495 33.221,5.495L26.45,5.495C26.361,5.495 26.301,5.423 26.317,5.335L26.584,3.852C26.599,3.764 26.685,3.691 26.775,3.691L35.192,3.691C35.462,3.691 35.719,3.476 35.767,3.21L36.258,0.498C36.306,0.235 36.126,0.019 35.857,0.019L23.746,0.019C23.297,0.019 22.867,0.378 22.788,0.819L20.474,13.621C20.396,14.062 20.695,14.421 21.146,14.421Z"}),t.jsx("path",{fill:a,d:"M45.926,14.419L45.926,14.421L46.346,14.421C48.453,14.421 50.465,12.742 50.839,10.67L51.081,9.327C51.456,7.256 50.05,5.576 47.943,5.576L41.455,5.576C41.186,5.576 41.007,5.363 41.054,5.097L41.218,4.192C41.266,3.927 41.524,3.713 41.793,3.713L50.569,3.713C51.018,3.713 51.446,3.356 51.526,2.915L51.9,0.85C51.98,0.407 51.68,0.05 51.232,0.05L41.638,0.05C39.531,0.05 37.519,1.73 37.145,3.801L36.88,5.267C36.505,7.339 37.91,9.018 40.018,9.018L46.506,9.018C46.775,9.018 46.954,9.231 46.907,9.497L46.785,10.176C46.737,10.441 46.479,10.655 46.21,10.655L37.189,10.655C36.741,10.655 36.313,11.012 36.233,11.453L35.841,13.621C35.761,14.062 36.061,14.419 36.51,14.419L45.926,14.419Z"}),t.jsx("path",{fill:a,d:"M68.008,0.046C68.008,0.046 65.296,0.046 65.296,0.046C64.847,0.046 64.42,0.403 64.34,0.844L63.532,5.31C63.517,5.398 63.431,5.469 63.341,5.469L58.085,5.469C57.995,5.469 57.936,5.398 57.951,5.31L58.758,0.844C58.837,0.403 58.539,0.046 58.09,0.046L55.378,0.046C54.93,0.046 54.502,0.403 54.422,0.844L52.112,13.623C52.032,14.064 52.331,14.421 52.78,14.421L55.492,14.421C55.941,14.421 56.369,14.064 56.449,13.623L57.272,9.074C57.287,8.986 57.373,8.914 57.462,8.914L62.719,8.914C62.809,8.914 62.868,8.985 62.853,9.074L62.032,13.623C61.952,14.064 62.252,14.421 62.7,14.421L65.413,14.421C65.861,14.421 66.289,14.064 66.369,13.623L68.678,0.844C68.755,0.403 68.457,0.046 68.008,0.046Z"}),t.jsx("path",{fill:a,d:"M72.099,14.421C72.099,14.421 80.066,14.421 80.066,14.421C80.515,14.421 80.943,14.064 81.022,13.623L81.414,11.453C81.494,11.012 81.194,10.655 80.746,10.655L73.828,10.655C73.559,10.655 73.38,10.441 73.427,10.176L74.51,4.215C74.558,3.951 74.815,3.736 75.082,3.736L82,3.736C82.448,3.736 82.876,3.379 82.956,2.938L83.34,0.817C83.42,0.376 83.12,0.019 82.672,0.019L74.724,0.019C72.622,0.019 70.614,1.691 70.236,3.757L68.965,10.665C68.587,12.738 69.99,14.421 72.099,14.421Z"}),t.jsx("path",{fill:a,d:"M97.176,-0C97.176,0 88.882,0 88.882,0C86.775,0 84.763,1.68 84.389,3.751L83.139,10.67C82.765,12.741 84.169,14.421 86.277,14.421L94.571,14.421C96.678,14.421 98.69,12.741 99.064,10.67L100.314,3.751C100.689,1.68 99.284,-0 97.176,-0ZM94.798,10.178C94.75,10.443 94.492,10.657 94.223,10.657L87.978,10.657C87.709,10.657 87.529,10.443 87.577,10.178L88.659,4.192C88.707,3.927 88.964,3.713 89.234,3.713L95.477,3.713C95.747,3.713 95.926,3.927 95.878,4.192L94.798,10.178Z"}),t.jsx("path",{fill:a,d:"M101.284,14.421L103.995,14.421C104.443,14.421 104.871,14.065 104.951,13.624L105.43,10.97C105.446,10.882 105.531,10.81 105.621,10.81L108.902,10.806C109.064,10.806 109.2,10.886 109.267,11.018L110.813,14.035C110.992,14.392 111.319,14.434 112.303,14.419C112.88,14.426 113.756,14.382 115.169,14.382C115.623,14.382 115.902,13.907 115.678,13.51L113.989,10.569C113.945,10.491 113.993,10.386 114.086,10.34C115.39,9.707 116.423,8.477 116.681,7.055L117.27,3.785C117.646,1.713 116.242,0.033 114.134,0.033L103.884,0.033C103.436,0.033 103.008,0.39 102.928,0.831L100.616,13.623C100.536,14.064 100.836,14.421 101.284,14.421L101.284,14.421ZM106.73,3.791C106.745,3.703 106.831,3.631 106.921,3.631L112.225,3.631C112.626,3.631 112.891,3.949 112.821,4.343L112.431,6.494C112.359,6.885 111.979,7.204 111.58,7.204L106.276,7.204C106.186,7.204 106.127,7.133 106.142,7.043L106.73,3.791Z"}),t.jsx("path",{fill:a,d:"M118.277,14.421C118.277,14.421 130.388,14.421 130.388,14.421C130.657,14.421 130.915,14.205 130.963,13.942L131.468,11.128C131.516,10.863 131.337,10.649 131.068,10.649L122.65,10.649C122.56,10.649 122.501,10.576 122.516,10.488L122.766,9.105C122.781,9.017 122.867,8.944 122.957,8.944L129.728,8.944C129.997,8.944 130.254,8.728 130.302,8.465L130.753,5.974C130.801,5.709 130.621,5.495 130.352,5.495L123.581,5.495C123.492,5.495 123.432,5.423 123.448,5.335L123.715,3.852C123.73,3.764 123.816,3.691 123.906,3.691L132.324,3.691C132.593,3.691 132.851,3.476 132.898,3.21L133.389,0.498C133.437,0.235 133.257,0.019 132.988,0.019L120.877,0.019C120.428,0.019 119.999,0.378 119.919,0.819L117.605,13.621C117.527,14.062 117.827,14.421 118.277,14.421Z"})]})});function i(){const i=s(),[c,d]=e.useState("admin"),[x,m]=e.useState(""),[h,p]=e.useState(!1),[u,C]=e.useState(null);e.useEffect(()=>{r()&&i("/",{replace:!0})},[i]),e.useEffect(()=>{u&&C(null)},[c,x]);const f="#9cf15b";return t.jsxs("div",{className:"min-h-screen flex flex-col bg-black",children:[t.jsx("div",{className:"fixed inset-0 -z-20 bg-cover bg-center bg-no-repeat",style:{backgroundImage:"url(/assets/water.webp)"},"aria-hidden":"true"}),t.jsx("div",{className:"fixed inset-0 -z-10 bg-black/40 pointer-events-none","aria-hidden":"true"}),t.jsx("div",{className:"fixed inset-0 bg-gradient-to-br from-[#9cf15b]/5 via-transparent to-[#9cf15b]/3 pointer-events-none z-0"}),t.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:t.jsxs("div",{className:"w-full max-w-md",children:[t.jsxs("div",{className:"text-center mb-8",children:[t.jsx("h1",{className:"sr-only",children:"pyMC Console"}),t.jsx(a,{height:32,className:"mx-auto mb-3"}),t.jsxs("p",{className:"font-mono text-text-muted text-sm flex items-center justify-center gap-2",children:[t.jsx(o,{height:12,fill:"#6B7280"}),t.jsx("span",{children:"Network Management"})]})]}),t.jsxs("div",{className:"glass-card p-8 rounded-2xl border border-border-subtle bg-bg-surface/80 backdrop-blur-xl shadow-2xl",children:[t.jsxs("div",{className:"text-center mb-6",children:[t.jsx("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-accent-primary/10 mb-4",children:t.jsx("svg",{className:"w-8 h-8 text-accent-primary",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"})})}),t.jsx("h2",{className:"font-display text-xl font-semibold text-text-primary",children:"Authentication Required"}),t.jsx("p",{className:"font-mono text-text-muted text-sm mt-1",children:"Sign in to access the console"})]}),t.jsxs("form",{onSubmit:async e=>{e.preventDefault(),p(!0),C(null);const t=await n(c,x);p(!1),t.success?window.location.href="/":C(t.error||"Login failed")},className:"space-y-5",children:[t.jsxs("div",{children:[t.jsx("label",{htmlFor:"username",className:"block font-display text-sm font-medium text-text-secondary mb-2",children:"Username"}),t.jsx("input",{id:"username",type:"text",value:c,onChange:e=>d(e.target.value),className:"w-full px-4 py-3 rounded-lg bg-bg-elevated border border-border-subtle \n font-mono text-text-primary placeholder-text-muted\n focus:outline-none focus:ring-2 focus:ring-accent-primary/50 focus:border-accent-primary\n transition-all duration-200",placeholder:"admin",autoComplete:"username",autoFocus:!0,required:!0})]}),t.jsxs("div",{children:[t.jsx("label",{htmlFor:"password",className:"block font-display text-sm font-medium text-text-secondary mb-2",children:"Password"}),t.jsx("input",{id:"password",type:"password",value:x,onChange:e=>m(e.target.value),className:"w-full px-4 py-3 rounded-lg bg-bg-elevated border border-border-subtle \n font-mono text-text-primary placeholder-text-muted\n focus:outline-none focus:ring-2 focus:ring-accent-primary/50 focus:border-accent-primary\n transition-all duration-200",placeholder:"••••••••",autoComplete:"current-password",required:!0})]}),u&&t.jsx("div",{className:"p-3 rounded-lg bg-accent-danger/10 border border-accent-danger/30",children:t.jsxs("p",{className:"font-mono text-sm text-accent-danger flex items-center gap-2",children:[t.jsx("svg",{className:"w-4 h-4 flex-shrink-0",fill:"currentColor",viewBox:"0 0 20 20",children:t.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})}),u]})}),t.jsx("button",{type:"submit",disabled:h||!c||!x,className:"w-full py-3 px-4 rounded-lg font-display font-semibold text-bg-body\n bg-gradient-to-r from-[#9cf15b] to-[#8de04a]\n hover:from-[#8de04a] hover:to-[#7dd03a]\n focus:outline-none focus:ring-2 focus:ring-[#9cf15b]/50 focus:ring-offset-2 focus:ring-offset-bg-surface\n disabled:opacity-50 disabled:cursor-not-allowed\n transition-all duration-200 transform hover:scale-[1.02] active:scale-[0.98]",children:h?t.jsxs("span",{className:"flex items-center justify-center gap-2",children:[t.jsxs("svg",{className:"animate-spin h-5 w-5",viewBox:"0 0 24 24",children:[t.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4",fill:"none"}),t.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"Authenticating..."]}):"Sign In"})]})]}),t.jsx("div",{className:"mt-8 text-center",children:t.jsxs("p",{className:"font-mono text-sm text-text-muted",children:["A ",t.jsx("span",{style:{color:f},children:"@RightUp"})," X ",t.jsx("span",{style:{color:f},children:"@Treehouse⚡"})," Collab"]})})]})}),t.jsx("footer",{className:"py-8 px-4",children:t.jsxs("div",{className:"max-w-md mx-auto",children:[t.jsx("p",{className:"font-mono text-xs text-text-muted text-center mb-3 uppercase tracking-wider",children:"Powered By"}),t.jsx("div",{className:"glass-card p-4 rounded-xl border border-border-subtle bg-bg-surface/60 backdrop-blur-xl",children:t.jsxs("div",{className:"flex items-center justify-center gap-6",children:[t.jsx("a",{href:"https://github.com/rightup/pyMC_Repeater",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 hover:opacity-80 transition-opacity group",title:"pyMC Repeater",children:t.jsxs("span",{className:"font-display font-bold text-lg tracking-tight",children:[t.jsx("span",{style:{color:f},children:"py"}),t.jsx("span",{className:"text-text-primary",children:"MC"})]})}),t.jsx("span",{className:"text-border-subtle",children:"•"}),t.jsx("a",{href:"https://meshcore.co.uk",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center hover:opacity-80 transition-opacity group",title:"MeshCore",children:t.jsx(o,{height:14,className:"text-text-primary"})}),t.jsx("span",{className:"text-border-subtle",children:"•"}),t.jsxs("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 hover:opacity-80 transition-opacity group",title:"West Coast Mesh",children:[t.jsx("div",{className:"w-9 h-9 rounded-lg overflow-hidden border border-white/10 group-hover:border-white/20 transition-all",children:t.jsx("img",{src:l,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),t.jsx("span",{className:"font-display font-bold text-lg tracking-tight text-text-primary",children:"WCM"})]})]})})]})})]})}export{i as default}; +import{r as e,j as t,x as s}from"./vendor-react-CWPBVwgk.js";import{i as r,P as a,W as l,l as n}from"./index-BlYVqXhs.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";import"./recharts-cqZ_RWsW.js";const o=e.memo(function({width:e,height:s,className:r="",fill:a="currentColor"}){return t.jsxs("svg",{viewBox:"0 0 134 15",width:e,height:s,className:r,role:"img","aria-label":"MeshCore",style:{fillRule:"evenodd",clipRule:"evenodd"},children:[t.jsx("path",{fill:a,d:"M3.277,0.053C2.829,0.053 2.401,0.41 2.321,0.851L0.013,13.623C-0.067,14.064 0.232,14.421 0.681,14.421L3.13,14.421C3.578,14.421 4.006,14.064 4.086,13.623L5.004,8.54L6.684,13.957C6.766,14.239 7.02,14.421 7.337,14.421L10.58,14.421C10.897,14.421 11.217,14.239 11.401,13.957L15.043,8.513L14.119,13.623C14.038,14.064 14.338,14.421 14.787,14.421L17.236,14.421C17.684,14.421 18.112,14.064 18.192,13.623L20.5,0.851C20.582,0.41 20.283,0.053 19.834,0.053L16.69,0.053C16.373,0.053 16.053,0.235 15.87,0.517L9.897,9.473C9.803,9.616 9.578,9.578 9.528,9.41L7.074,0.517C6.992,0.235 6.738,0.053 6.421,0.053L3.277,0.053Z"}),t.jsx("path",{fill:a,d:"M21.146,14.421C21.146,14.421 33.257,14.421 33.257,14.421C33.526,14.421 33.784,14.205 33.831,13.942L34.337,11.128C34.385,10.863 34.206,10.649 33.936,10.649L25.519,10.649C25.429,10.649 25.37,10.576 25.385,10.488L25.635,9.105C25.65,9.017 25.736,8.944 25.826,8.944L32.596,8.944C32.865,8.944 33.123,8.728 33.171,8.465L33.621,5.974C33.669,5.709 33.49,5.495 33.221,5.495L26.45,5.495C26.361,5.495 26.301,5.423 26.317,5.335L26.584,3.852C26.599,3.764 26.685,3.691 26.775,3.691L35.192,3.691C35.462,3.691 35.719,3.476 35.767,3.21L36.258,0.498C36.306,0.235 36.126,0.019 35.857,0.019L23.746,0.019C23.297,0.019 22.867,0.378 22.788,0.819L20.474,13.621C20.396,14.062 20.695,14.421 21.146,14.421Z"}),t.jsx("path",{fill:a,d:"M45.926,14.419L45.926,14.421L46.346,14.421C48.453,14.421 50.465,12.742 50.839,10.67L51.081,9.327C51.456,7.256 50.05,5.576 47.943,5.576L41.455,5.576C41.186,5.576 41.007,5.363 41.054,5.097L41.218,4.192C41.266,3.927 41.524,3.713 41.793,3.713L50.569,3.713C51.018,3.713 51.446,3.356 51.526,2.915L51.9,0.85C51.98,0.407 51.68,0.05 51.232,0.05L41.638,0.05C39.531,0.05 37.519,1.73 37.145,3.801L36.88,5.267C36.505,7.339 37.91,9.018 40.018,9.018L46.506,9.018C46.775,9.018 46.954,9.231 46.907,9.497L46.785,10.176C46.737,10.441 46.479,10.655 46.21,10.655L37.189,10.655C36.741,10.655 36.313,11.012 36.233,11.453L35.841,13.621C35.761,14.062 36.061,14.419 36.51,14.419L45.926,14.419Z"}),t.jsx("path",{fill:a,d:"M68.008,0.046C68.008,0.046 65.296,0.046 65.296,0.046C64.847,0.046 64.42,0.403 64.34,0.844L63.532,5.31C63.517,5.398 63.431,5.469 63.341,5.469L58.085,5.469C57.995,5.469 57.936,5.398 57.951,5.31L58.758,0.844C58.837,0.403 58.539,0.046 58.09,0.046L55.378,0.046C54.93,0.046 54.502,0.403 54.422,0.844L52.112,13.623C52.032,14.064 52.331,14.421 52.78,14.421L55.492,14.421C55.941,14.421 56.369,14.064 56.449,13.623L57.272,9.074C57.287,8.986 57.373,8.914 57.462,8.914L62.719,8.914C62.809,8.914 62.868,8.985 62.853,9.074L62.032,13.623C61.952,14.064 62.252,14.421 62.7,14.421L65.413,14.421C65.861,14.421 66.289,14.064 66.369,13.623L68.678,0.844C68.755,0.403 68.457,0.046 68.008,0.046Z"}),t.jsx("path",{fill:a,d:"M72.099,14.421C72.099,14.421 80.066,14.421 80.066,14.421C80.515,14.421 80.943,14.064 81.022,13.623L81.414,11.453C81.494,11.012 81.194,10.655 80.746,10.655L73.828,10.655C73.559,10.655 73.38,10.441 73.427,10.176L74.51,4.215C74.558,3.951 74.815,3.736 75.082,3.736L82,3.736C82.448,3.736 82.876,3.379 82.956,2.938L83.34,0.817C83.42,0.376 83.12,0.019 82.672,0.019L74.724,0.019C72.622,0.019 70.614,1.691 70.236,3.757L68.965,10.665C68.587,12.738 69.99,14.421 72.099,14.421Z"}),t.jsx("path",{fill:a,d:"M97.176,-0C97.176,0 88.882,0 88.882,0C86.775,0 84.763,1.68 84.389,3.751L83.139,10.67C82.765,12.741 84.169,14.421 86.277,14.421L94.571,14.421C96.678,14.421 98.69,12.741 99.064,10.67L100.314,3.751C100.689,1.68 99.284,-0 97.176,-0ZM94.798,10.178C94.75,10.443 94.492,10.657 94.223,10.657L87.978,10.657C87.709,10.657 87.529,10.443 87.577,10.178L88.659,4.192C88.707,3.927 88.964,3.713 89.234,3.713L95.477,3.713C95.747,3.713 95.926,3.927 95.878,4.192L94.798,10.178Z"}),t.jsx("path",{fill:a,d:"M101.284,14.421L103.995,14.421C104.443,14.421 104.871,14.065 104.951,13.624L105.43,10.97C105.446,10.882 105.531,10.81 105.621,10.81L108.902,10.806C109.064,10.806 109.2,10.886 109.267,11.018L110.813,14.035C110.992,14.392 111.319,14.434 112.303,14.419C112.88,14.426 113.756,14.382 115.169,14.382C115.623,14.382 115.902,13.907 115.678,13.51L113.989,10.569C113.945,10.491 113.993,10.386 114.086,10.34C115.39,9.707 116.423,8.477 116.681,7.055L117.27,3.785C117.646,1.713 116.242,0.033 114.134,0.033L103.884,0.033C103.436,0.033 103.008,0.39 102.928,0.831L100.616,13.623C100.536,14.064 100.836,14.421 101.284,14.421L101.284,14.421ZM106.73,3.791C106.745,3.703 106.831,3.631 106.921,3.631L112.225,3.631C112.626,3.631 112.891,3.949 112.821,4.343L112.431,6.494C112.359,6.885 111.979,7.204 111.58,7.204L106.276,7.204C106.186,7.204 106.127,7.133 106.142,7.043L106.73,3.791Z"}),t.jsx("path",{fill:a,d:"M118.277,14.421C118.277,14.421 130.388,14.421 130.388,14.421C130.657,14.421 130.915,14.205 130.963,13.942L131.468,11.128C131.516,10.863 131.337,10.649 131.068,10.649L122.65,10.649C122.56,10.649 122.501,10.576 122.516,10.488L122.766,9.105C122.781,9.017 122.867,8.944 122.957,8.944L129.728,8.944C129.997,8.944 130.254,8.728 130.302,8.465L130.753,5.974C130.801,5.709 130.621,5.495 130.352,5.495L123.581,5.495C123.492,5.495 123.432,5.423 123.448,5.335L123.715,3.852C123.73,3.764 123.816,3.691 123.906,3.691L132.324,3.691C132.593,3.691 132.851,3.476 132.898,3.21L133.389,0.498C133.437,0.235 133.257,0.019 132.988,0.019L120.877,0.019C120.428,0.019 119.999,0.378 119.919,0.819L117.605,13.621C117.527,14.062 117.827,14.421 118.277,14.421Z"})]})});function i(){const i=s(),[c,d]=e.useState("admin"),[x,m]=e.useState(""),[h,p]=e.useState(!1),[u,C]=e.useState(null);e.useEffect(()=>{r()&&i("/",{replace:!0})},[i]),e.useEffect(()=>{u&&C(null)},[c,x]);const f="#9cf15b";return t.jsxs("div",{className:"min-h-screen flex flex-col bg-black",children:[t.jsx("div",{className:"fixed inset-0 -z-20 bg-cover bg-center bg-no-repeat",style:{backgroundImage:"url(/assets/water.webp)"},"aria-hidden":"true"}),t.jsx("div",{className:"fixed inset-0 -z-10 bg-black/40 pointer-events-none","aria-hidden":"true"}),t.jsx("div",{className:"fixed inset-0 bg-gradient-to-br from-[#9cf15b]/5 via-transparent to-[#9cf15b]/3 pointer-events-none z-0"}),t.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:t.jsxs("div",{className:"w-full max-w-md",children:[t.jsxs("div",{className:"text-center mb-8",children:[t.jsx("h1",{className:"sr-only",children:"pyMC Console"}),t.jsx(a,{height:32,className:"mx-auto mb-3"}),t.jsxs("p",{className:"font-mono text-text-muted text-sm flex items-center justify-center gap-2",children:[t.jsx(o,{height:12,fill:"#6B7280"}),t.jsx("span",{children:"Network Management"})]})]}),t.jsxs("div",{className:"glass-card p-8 rounded-2xl border border-border-subtle bg-bg-surface/80 backdrop-blur-xl shadow-2xl",children:[t.jsxs("div",{className:"text-center mb-6",children:[t.jsx("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-accent-primary/10 mb-4",children:t.jsx("svg",{className:"w-8 h-8 text-accent-primary",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"})})}),t.jsx("h2",{className:"font-display text-xl font-semibold text-text-primary",children:"Authentication Required"}),t.jsx("p",{className:"font-mono text-text-muted text-sm mt-1",children:"Sign in to access the console"})]}),t.jsxs("form",{onSubmit:async e=>{e.preventDefault(),p(!0),C(null);const t=await n(c,x);p(!1),t.success?window.location.href="/":C(t.error||"Login failed")},className:"space-y-5",children:[t.jsxs("div",{children:[t.jsx("label",{htmlFor:"username",className:"block font-display text-sm font-medium text-text-secondary mb-2",children:"Username"}),t.jsx("input",{id:"username",type:"text",value:c,onChange:e=>d(e.target.value),className:"w-full px-4 py-3 rounded-lg bg-bg-elevated border border-border-subtle \n font-mono text-text-primary placeholder-text-muted\n focus:outline-none focus:ring-2 focus:ring-accent-primary/50 focus:border-accent-primary\n transition-all duration-200",placeholder:"admin",autoComplete:"username",autoFocus:!0,required:!0})]}),t.jsxs("div",{children:[t.jsx("label",{htmlFor:"password",className:"block font-display text-sm font-medium text-text-secondary mb-2",children:"Password"}),t.jsx("input",{id:"password",type:"password",value:x,onChange:e=>m(e.target.value),className:"w-full px-4 py-3 rounded-lg bg-bg-elevated border border-border-subtle \n font-mono text-text-primary placeholder-text-muted\n focus:outline-none focus:ring-2 focus:ring-accent-primary/50 focus:border-accent-primary\n transition-all duration-200",placeholder:"••••••••",autoComplete:"current-password",required:!0})]}),u&&t.jsx("div",{className:"p-3 rounded-lg bg-accent-danger/10 border border-accent-danger/30",children:t.jsxs("p",{className:"font-mono text-sm text-accent-danger flex items-center gap-2",children:[t.jsx("svg",{className:"w-4 h-4 flex-shrink-0",fill:"currentColor",viewBox:"0 0 20 20",children:t.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})}),u]})}),t.jsx("button",{type:"submit",disabled:h||!c||!x,className:"w-full py-3 px-4 rounded-lg font-display font-semibold text-bg-body\n bg-gradient-to-r from-[#9cf15b] to-[#8de04a]\n hover:from-[#8de04a] hover:to-[#7dd03a]\n focus:outline-none focus:ring-2 focus:ring-[#9cf15b]/50 focus:ring-offset-2 focus:ring-offset-bg-surface\n disabled:opacity-50 disabled:cursor-not-allowed\n transition-all duration-200 transform hover:scale-[1.02] active:scale-[0.98]",children:h?t.jsxs("span",{className:"flex items-center justify-center gap-2",children:[t.jsxs("svg",{className:"animate-spin h-5 w-5",viewBox:"0 0 24 24",children:[t.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4",fill:"none"}),t.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"Authenticating..."]}):"Sign In"})]})]}),t.jsx("div",{className:"mt-8 text-center",children:t.jsxs("p",{className:"font-mono text-sm text-text-muted",children:["A ",t.jsx("span",{style:{color:f},children:"@RightUp"})," X ",t.jsx("span",{style:{color:f},children:"@Treehouse⚡"})," Collab"]})})]})}),t.jsx("footer",{className:"py-8 px-4",children:t.jsxs("div",{className:"max-w-md mx-auto",children:[t.jsx("p",{className:"font-mono text-xs text-text-muted text-center mb-3 uppercase tracking-wider",children:"Powered By"}),t.jsx("div",{className:"glass-card p-4 rounded-xl border border-border-subtle bg-bg-surface/60 backdrop-blur-xl",children:t.jsxs("div",{className:"flex items-center justify-center gap-6",children:[t.jsx("a",{href:"https://github.com/rightup/pyMC_Repeater",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 hover:opacity-80 transition-opacity group",title:"pyMC Repeater",children:t.jsxs("span",{className:"font-display font-bold text-lg tracking-tight",children:[t.jsx("span",{style:{color:f},children:"py"}),t.jsx("span",{className:"text-text-primary",children:"MC"})]})}),t.jsx("span",{className:"text-border-subtle",children:"•"}),t.jsx("a",{href:"https://meshcore.co.uk",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center hover:opacity-80 transition-opacity group",title:"MeshCore",children:t.jsx(o,{height:14,className:"text-text-primary"})}),t.jsx("span",{className:"text-border-subtle",children:"•"}),t.jsxs("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 hover:opacity-80 transition-opacity group",title:"West Coast Mesh",children:[t.jsx("div",{className:"w-9 h-9 rounded-lg overflow-hidden border border-white/10 group-hover:border-white/20 transition-all",children:t.jsx("img",{src:l,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),t.jsx("span",{className:"font-display font-bold text-lg tracking-tight text-text-primary",children:"WCM"})]})]})})]})})]})}export{i as default}; diff --git a/frontend/dist/assets/Logs-CZ5S1k0r.js b/frontend/dist/assets/Logs-CZ5S1k0r.js deleted file mode 100644 index 684db117..00000000 --- a/frontend/dist/assets/Logs-CZ5S1k0r.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,y as s,$ as t,F as a,r as l,aG as c,al as n,aO as i}from"./vendor-react-CUlQ5-Td.js";import{a0 as r,a1 as o,b as x,a2 as m,n as d,$ as u,a3 as p,a4 as h}from"./index-C1whtcFB.js";import{u as j}from"./usePolling-BvmU-1bN.js";import{c as g}from"./recharts-7RsRrQtf.js";import{P as f,b as N,a as v,c as y,L as b}from"./PageLayout-CViR4hDG.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-MTXp-Y3t.js";const w=l.memo(function({log:s}){const t=h(s.level);return e.jsx("div",{className:"p-3 rounded-2xl bg-white/[0.02] hover:bg-white/[0.04] transition-colors",children:e.jsxs("div",{className:"flex items-baseline gap-3",children:[e.jsx("span",{className:g("type-data-sm w-14 shrink-0",t),children:s.level}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"type-data-sm text-text-primary break-words whitespace-pre-wrap",children:s.message}),e.jsx("p",{className:"type-data-xs text-text-muted mt-1",children:new Date(s.timestamp).toLocaleString()})]})]})})});function F(){const s=r(),[t,a]=l.useState("INFO"),[o,x]=l.useState(!1),[m,d]=l.useState(null);l.useEffect(()=>{if(s.length>0){const e=s.some(e=>"DEBUG"===e.level);a(e?"DEBUG":"INFO")}},[s]);const u=l.useCallback(async e=>{if(e!==t&&!o){x(!0),d(null);try{const s=await p(e);s.success&&s.data?(a(e),d(s.data.message),setTimeout(()=>d(null),5e3)):(d(s.error||"Failed to change log level"),setTimeout(()=>d(null),3e3))}catch{d("Failed to change log level"),setTimeout(()=>d(null),3e3)}finally{x(!1)}}},[t,o]);return e.jsxs("div",{className:"flex items-center gap-2",children:[m&&e.jsx("span",{className:"text-xs text-text-muted animate-pulse",children:m}),e.jsxs("div",{className:"flex bg-white/[0.02] rounded-full p-1",children:[e.jsxs("button",{onClick:()=>u("INFO"),disabled:o,className:g("h-[32px] px-4 rounded-full type-data flex items-center gap-2 transition-colors","INFO"===t?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary",o&&"opacity-50 cursor-not-allowed"),children:[e.jsx(c,{className:"w-4 h-4"}),"Info"]}),e.jsxs("button",{onClick:()=>u("DEBUG"),disabled:o,className:g("h-[32px] px-4 rounded-full type-data flex items-center gap-2 transition-colors","DEBUG"===t?"bg-amber-500/20 text-amber-400":"text-text-muted hover:text-text-secondary",o&&"opacity-50 cursor-not-allowed"),children:[o?e.jsx(n,{className:"w-4 h-4 animate-spin"}):e.jsx(i,{className:"w-4 h-4"}),"Debug"]})]})]})}function k(){const l=r(),c=o(),n=x(),i=m(),p=d();return j(i,u.logs,n),e.jsxs(f,{children:[e.jsx(N,{title:"System Logs",icon:e.jsx(a,{}),controls:e.jsxs(e.Fragment,{children:[e.jsx(F,{}),n&&e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(s,{className:"w-2 h-2 fill-accent-success text-accent-success animate-pulse"}),e.jsx("span",{className:"text-text-muted",children:"Live"})]}),e.jsxs("button",{onClick:()=>p(!n),className:g("h-[32px] px-4 rounded-full type-data transition-colors","flex items-center gap-2",n?"bg-accent-success/20 text-accent-success":"bg-white/[0.02] text-text-muted hover:text-text-secondary"),children:[e.jsx(t,{className:g("w-4 h-4",n&&"animate-spin")}),e.jsx("span",{className:"hidden xs:inline",children:n?"Live":"Paused"})]})]})}),e.jsxs(v,{noPadding:!0,children:[e.jsx(y,{listHeader:!0,icon:e.jsx(a,{className:"icon-sm"}),title:"Log Entries"}),e.jsx("div",{className:"space-y-2 max-h-[calc(100vh-300px)] sm:max-h-[calc(100vh-250px)] overflow-y-auto p-4",children:c&&0===l.length?e.jsx(b,{count:10}):0===l.length?e.jsx("div",{className:"text-center py-12 text-text-muted",children:"No logs available"}):l.map((s,t)=>e.jsx(w,{log:s},`${s.timestamp}-${t}`))})]})]})}export{k as default}; diff --git a/frontend/dist/assets/Logs-CeWO7emM.js b/frontend/dist/assets/Logs-CeWO7emM.js new file mode 100644 index 00000000..4642cfe8 --- /dev/null +++ b/frontend/dist/assets/Logs-CeWO7emM.js @@ -0,0 +1 @@ +import{j as e,y as s,$ as t,F as a,r as l,aL as c,aq as n,aS as i}from"./vendor-react-CWPBVwgk.js";import{a2 as r,a3 as o,b as x,a4 as m,o as d,a1 as u,a5 as p,a6 as h}from"./index-BlYVqXhs.js";import{u as j}from"./usePolling-BsbqQ0mQ.js";import{c as g}from"./recharts-cqZ_RWsW.js";import{P as f,b as N,a as v,c as y,L as b}from"./PageLayout-Kh569_kh.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";const w=l.memo(function({log:s}){const t=h(s.level);return e.jsx("div",{className:"p-3 rounded-2xl bg-white/[0.02] hover:bg-white/[0.04] transition-colors",children:e.jsxs("div",{className:"flex items-baseline gap-3",children:[e.jsx("span",{className:g("type-data-sm w-14 shrink-0",t),children:s.level}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"type-data-sm text-text-primary break-words whitespace-pre-wrap",children:s.message}),e.jsx("p",{className:"type-data-xs text-text-muted mt-1",children:new Date(s.timestamp).toLocaleString()})]})]})})});function F(){const s=r(),[t,a]=l.useState("INFO"),[o,x]=l.useState(!1),[m,d]=l.useState(null);l.useEffect(()=>{if(s.length>0){const e=s.some(e=>"DEBUG"===e.level);a(e?"DEBUG":"INFO")}},[s]);const u=l.useCallback(async e=>{if(e!==t&&!o){x(!0),d(null);try{const s=await p(e);s.success&&s.data?(a(e),d(s.data.message),setTimeout(()=>d(null),5e3)):(d(s.error||"Failed to change log level"),setTimeout(()=>d(null),3e3))}catch{d("Failed to change log level"),setTimeout(()=>d(null),3e3)}finally{x(!1)}}},[t,o]);return e.jsxs("div",{className:"flex items-center gap-2",children:[m&&e.jsx("span",{className:"text-xs text-text-muted animate-pulse",children:m}),e.jsxs("div",{className:"flex bg-white/[0.02] rounded-full p-1",children:[e.jsxs("button",{onClick:()=>u("INFO"),disabled:o,className:g("h-[32px] px-4 rounded-full type-data flex items-center gap-2 transition-colors","INFO"===t?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary",o&&"opacity-50 cursor-not-allowed"),children:[e.jsx(c,{className:"w-4 h-4"}),"Info"]}),e.jsxs("button",{onClick:()=>u("DEBUG"),disabled:o,className:g("h-[32px] px-4 rounded-full type-data flex items-center gap-2 transition-colors","DEBUG"===t?"bg-amber-500/20 text-amber-400":"text-text-muted hover:text-text-secondary",o&&"opacity-50 cursor-not-allowed"),children:[o?e.jsx(n,{className:"w-4 h-4 animate-spin"}):e.jsx(i,{className:"w-4 h-4"}),"Debug"]})]})]})}function L(){const l=r(),c=o(),n=x(),i=m(),p=d();return j(i,u.logs,n),e.jsxs(f,{children:[e.jsx(N,{title:"System Logs",icon:e.jsx(a,{}),controls:e.jsxs(e.Fragment,{children:[e.jsx(F,{}),n&&e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(s,{className:"w-2 h-2 fill-accent-success text-accent-success animate-pulse"}),e.jsx("span",{className:"text-text-muted",children:"Live"})]}),e.jsxs("button",{onClick:()=>p(!n),className:g("h-[32px] px-4 rounded-full type-data transition-colors","flex items-center gap-2",n?"bg-accent-success/20 text-accent-success":"bg-white/[0.02] text-text-muted hover:text-text-secondary"),children:[e.jsx(t,{className:g("w-4 h-4",n&&"animate-spin")}),e.jsx("span",{className:"hidden xs:inline",children:n?"Live":"Paused"})]})]})}),e.jsxs(v,{noPadding:!0,children:[e.jsx(y,{listHeader:!0,icon:e.jsx(a,{className:"icon-sm"}),title:"Log Entries"}),e.jsx("div",{className:"space-y-2 max-h-[calc(100vh-300px)] sm:max-h-[calc(100vh-250px)] overflow-y-auto p-4",children:c&&0===l.length?e.jsx(b,{count:10}):0===l.length?e.jsx("div",{className:"text-center py-12 text-text-muted",children:"No logs available"}):l.map((s,t)=>e.jsx(w,{log:s},`${s.timestamp}-${t}`))})]})]})}export{L as default}; diff --git a/frontend/dist/assets/PacketDetailModal-BvhyK15u.js b/frontend/dist/assets/PacketDetailModal-BvhyK15u.js deleted file mode 100644 index 42f1106a..00000000 --- a/frontend/dist/assets/PacketDetailModal-BvhyK15u.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PathMapMapLibre-BW5GVbe3.js","assets/vendor-react-CUlQ5-Td.js","assets/vendor-core-XI_xDZ-M.js","assets/maplibre-gl-B1CfjdFi.css"])))=>i.map(i=>d[i]); -import{r as e,V as t,a0 as s,A as a,a1 as n,j as r,a2 as o,a3 as c,a4 as i,b as l,X as d,h as x,a5 as h,k as u,a6 as m,a7 as p,W as f}from"./vendor-react-CUlQ5-Td.js";import{c as b}from"./recharts-7RsRrQtf.js";import{o as g,R as j,p as v,q as y,r as N,s as w,d as _,t as k,v as M,w as C,x as P}from"./index-C1whtcFB.js";import{S,g as D}from"./SignalIndicator-DOiETQwB.js";import{H as E}from"./HashBadge-Do84dDmK.js";import{_ as T}from"./deckgl-MTXp-Y3t.js";function L(e){return null==e?"UNKNOWN":g[e]||`TYPE_${e}`}function F(e){return null==e?"UNKNOWN":j[e]||`ROUTE_${e}`}function A(e){return{ADVERT:"text-[var(--pkt-advert)]",FLOOD:"text-[var(--pkt-flood)]",TXT_MSG:"text-[var(--pkt-txt-msg)]",ACK:"text-[var(--pkt-ack)]",TRACE:"text-[var(--pkt-trace)]",REQ:"text-[var(--pkt-req)]",RESPONSE:"text-[var(--pkt-response)]",GRP_TXT:"text-[var(--pkt-grp-txt)]",GRP_DATA:"text-[var(--pkt-grp-data)]",PATH:"text-[var(--pkt-path)]",ANON_REQ:"text-[var(--pkt-anon)]"}[e]||"text-[var(--pkt-unknown)]"}function O(e){return{FLOOD:"bg-[var(--route-flood)]/20 text-[var(--route-flood)] border-[var(--route-flood)]/30",DIRECT:"bg-[var(--route-direct)]/20 text-[var(--route-direct)] border-[var(--route-direct)]/30",TRANSPORT:"bg-[var(--route-transport)]/20 text-[var(--route-transport)] border-[var(--route-transport)]/30",T_FLOOD:"bg-[var(--route-flood)]/20 text-[var(--route-flood)] border-[var(--route-flood)]/30",T_DIRECT:"bg-[var(--route-direct)]/20 text-[var(--route-direct)] border-[var(--route-direct)]/30"}[e]||"bg-bg-subtle text-text-muted border-border-subtle"}function R(e){return 1===e||!0===e}function U(e){return"tx_local"===e.packet_origin?"tx":"tx_forward"===e.packet_origin?"forward":e.is_duplicate?"duplicate":e.transmitted?"forward":e.drop_reason?"dropped":"rx"}const z={rx:{icon:t,label:"RX",color:"text-accent-primary",bgColor:"bg-accent-primary/10"},tx:{icon:n,label:"TX",color:"text-[#F9D26F]",bgColor:"bg-[#F9D26F]/10"},forward:{icon:a,label:"FWD",color:"text-accent-success",bgColor:"bg-accent-success/10"},dropped:{icon:s,label:"DROP",color:"text-accent-danger",bgColor:"bg-accent-danger/10"},duplicate:{icon:t,label:"DUP",color:"text-text-muted",bgColor:"bg-white/5"}},H=e.memo(function({packet:e,showLabel:t=!0,size:s="sm"}){const a=U(e),n=z[a],o=n.icon;return r.jsxs("div",{className:b("inline-flex items-center gap-1 rounded-md",t&&"px-1.5 py-0.5",t&&n.bgColor),children:[r.jsx(o,{className:b({sm:"w-3.5 h-3.5",md:"w-4 h-4"}[s],n.color)}),t&&r.jsx("span",{className:b("text-[10px] font-semibold tracking-wide",n.color),children:n.label})]})});function V(e){return"tx_local"===e.packet_origin?"Transmitted":"tx_forward"===e.packet_origin||e.transmitted?"Forwarded":e.is_duplicate?"Duplicate":"No transport keys configured"===e.drop_reason?"Monitor Only":e.drop_reason?e.drop_reason:"Received"}function $(e){const t=U(e);return z[t].color}function I({packet:e,onClick:t,isFlashing:s=!1}){const a=e.payload_type_name||L(e.payload_type??e.type),n=e.route_type_name||F(e.route_type??e.route);return r.jsxs("tr",{onClick:()=>t(e),className:b("cursor-pointer","hover:bg-bg-subtle",R(e.is_duplicate)&&"opacity-50",s&&"flash-row"),children:[r.jsx("td",{className:"py-2.5 px-3",children:r.jsx(H,{packet:e,showLabel:!0})}),r.jsx("td",{className:"py-2.5 px-3 text-xs font-mono text-text-secondary whitespace-nowrap",children:y(e.timestamp)}),r.jsx("td",{className:"py-2.5 px-3",children:e.src_hash?r.jsx(E,{hash:e.src_hash,size:"xs"}):r.jsx("span",{className:"text-xs text-text-muted",children:"—"})}),r.jsx("td",{className:"py-2.5 px-3",children:r.jsx("span",{className:b("text-xs font-semibold",A(a)),children:a})}),r.jsx("td",{className:"py-2.5 px-3",children:r.jsx("span",{className:b("px-1.5 py-0.5 rounded text-[10px] border font-medium",O(n)),children:n})}),r.jsx("td",{className:"py-2.5 px-3 pr-4 text-right",children:r.jsx(S,{rssi:e.rssi,snr:e.snr,compact:!0,showValues:!0})})]})}const q=e.memo(function(e){return r.jsx(r.Fragment,{children:r.jsx(I,{...e})})}),W=e.memo(function({packet:e,onClick:t,isFlashing:s=!1}){const a=e.payload_type_name||L(e.payload_type??e.type),n=e.route_type_name||F(e.route_type??e.route);return r.jsx("div",{onClick:()=>t(e),className:b("packet-row px-3 py-2.5 cursor-pointer","hover:bg-bg-subtle","active:bg-bg-elevated",R(e.is_duplicate)&&"opacity-50",s&&"flash-row"),children:r.jsxs("div",{className:"flex items-center gap-1.5",children:[r.jsx("div",{className:"w-14 flex-shrink-0",children:r.jsx(H,{packet:e,showLabel:!0,size:"sm"})}),r.jsx("span",{className:"text-[10px] font-mono text-text-muted w-7 flex-shrink-0",children:v(e.timestamp)}),r.jsx("div",{className:"w-9 flex-shrink-0",children:e.src_hash?r.jsx(E,{hash:e.src_hash,size:"xs"}):r.jsx("span",{className:"text-[10px] text-text-muted",children:"—"})}),r.jsx("span",{className:b("text-xs font-semibold truncate flex-1 min-w-0",A(a)),children:a}),r.jsx("div",{className:"w-14 flex-shrink-0",children:r.jsx("span",{className:b("px-1 py-0.5 rounded text-[9px] border font-medium",O(n)),children:n})}),r.jsx("div",{className:"w-10 flex-shrink-0 text-right",children:r.jsx(S,{rssi:e.rssi,compact:!0,showValues:!0})})]})})});function X(e){if(e.contact_type){const t=e.contact_type.toLowerCase();if("repeater"===t||"rep"===t)return!0;if("companion"===t||"client"===t||"cli"===t)return!1;if("room server"===t||"room_server"===t||"room"===t||"server"===t)return!1}return!0===e.is_repeater||(e.is_repeater,!1)}const G=e.lazy(()=>T(()=>import("./PathMapMapLibre-BW5GVbe3.js"),__vite__mapDeps([0,1,2,3])));function K(e){return`${(100*e).toFixed(0)}%`}function Q(e,t){const s=document.documentElement,a=getComputedStyle(s),n={success:a.getPropertyValue("--accent-success").trim()||"#39D98A",secondary:a.getPropertyValue("--accent-secondary").trim()||"#F9D26F",poor:a.getPropertyValue("--signal-poor").trim()||"#FF8A5C",danger:a.getPropertyValue("--accent-danger").trim()||"#FF5C7A",muted:a.getPropertyValue("--text-muted").trim()||"#767688"};let r;return r=0===t?n.muted:e>=1?n.success:e>=.5?n.secondary:e>=.25?n.poor:e>0?n.danger:n.muted,{color:r}}class B extends e.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}render(){return this.state.hasError?r.jsxs("div",{className:"h-[200px] flex items-center justify-center text-text-muted",children:[r.jsx(i,{className:"w-4 h-4 mr-2"}),"Map failed to load"]}):this.props.children}}function Y({path:t,neighbors:s,localNode:a,localHash:n,srcHash:i,dstHash:l,neighborAffinity:d,prefixLookup:x,hubNodes:h}){const[u,m]=e.useState(null),p=e.useMemo(()=>{if(!i)return null;const e=w(i),t=s[i];if((null==t?void 0:t.latitude)&&(null==t?void 0:t.longitude)&&(0!==t.latitude||0!==t.longitude))return{prefix:e,candidates:[{hash:i,name:t.node_name||t.name||"Source",latitude:t.latitude,longitude:t.longitude,probability:1,isLocal:!1,isDirectNeighbor:!0===t.zero_hop}],confidence:1,totalMatches:1,isSource:!0};const a=(null==t?void 0:t.node_name)||(null==t?void 0:t.name)||i.slice(0,8);return{prefix:e,candidates:[{hash:i,name:a,latitude:0,longitude:0,probability:1,isLocal:!1}],confidence:1,totalMatches:1,isSource:!0}},[i,s]),f=e.useMemo(()=>{if(!l)return null;const e=w(l);if(n&&l===n&&a){const t=0!==a.latitude||0!==a.longitude;return{prefix:e,candidates:[{hash:l,name:a.name||"Local Node",latitude:t?a.latitude:0,longitude:t?a.longitude:0,probability:1,isLocal:!0}],confidence:1,totalMatches:1,isDestination:!0}}const t=s[l];if((null==t?void 0:t.latitude)&&(null==t?void 0:t.longitude)&&(0!==t.latitude||0!==t.longitude))return{prefix:e,candidates:[{hash:l,name:t.node_name||t.name||"Destination",latitude:t.latitude,longitude:t.longitude,probability:1,isLocal:!1,isDirectNeighbor:!0===t.zero_hop}],confidence:1,totalMatches:1,isDestination:!0};const r=(null==t?void 0:t.node_name)||(null==t?void 0:t.name)||l.slice(0,8);return{prefix:e,candidates:[{hash:l,name:r,latitude:0,longitude:0,probability:1,isLocal:!1}],confidence:1,totalMatches:1,isDestination:!0}},[l,s,a,n]),g=e.useMemo(()=>function(e,t,s,a,n,r){if(!e||0===e.length)return{hops:[],overallConfidence:0,hasValidPath:!1};const o=e.length-1,c=e.map((c,i)=>{const l=i===o,d=e.length-i,{candidates:x,totalMatches:h}=function(e,t,s,a,n=!1,r,o,c){const i=function(e){const t={};for(const[s,a]of Object.entries(e))X(a)&&(t[s]=a);return t}(t);let l;if(o){const t=function(e,t,s){const a=t.toUpperCase(),n=e.get(a);if(!n||0===n.candidates.length)return{hash:null,confidence:0};if(null==s?void 0:s.isLastHop)return{hash:n.bestMatch,confidence:n.confidence};if(1===(null==s?void 0:s.position))return{hash:n.bestMatch,confidence:n.confidence};if((null==s?void 0:s.position)&&n.bestMatchForPosition.has(s.position)){const e=n.bestMatchForPosition.get(s.position),t=Math.max(e.confidence,n.confidence);return{hash:e.hash,confidence:t}}if((null==s?void 0:s.adjacentPrefixes)&&s.adjacentPrefixes.length>0){let e=n.bestMatch,t=0;for(const a of n.candidates){let n=0;for(const e of s.adjacentPrefixes)n+=a.adjacentPrefixCounts.get(e.toUpperCase())||0;const r=a.combinedScore+n/Math.max(1,a.totalAdjacentObservations)*.3;r>t&&(t=r,e=a.hash)}return{hash:e,confidence:n.confidence}}return{hash:n.bestMatch,confidence:n.confidence}}(o,e,{position:c,isLastHop:n});l=t.confidence}const{matches:d,probability:x}=function(e,t,s,a,n=!1){const r=e.toUpperCase(),o=[],c=s&&N(r,s);c&&o.push(s);for(const u of Object.keys(t))N(r,u)&&o.push(u);if(n&&c&&s&&1===o.length)return{matches:o,probability:1,bestMatch:s};if(n&&c&&o.length>1){const e=o.filter(e=>e!==s);if(1===e.length)return{matches:o,probability:1,bestMatch:e[0]}}const i=o.length>0?1/o.length:0,l=[...o].sort();let d=null,x=-1;if(1===l.length)d=l[0];else if(l.length>1&&a){for(const e of l){const t=a.get(e),s=t?"number"==typeof t?t:t.combinedScore:0;s>x&&(x=s,d=e)}d||(d=l[0])}else l.length>0&&(d=l[0]);let h=i;if(o.length>1&&a&&x>0){let e=0;for(const t of o){const s=a.get(t);e+=s?"number"==typeof s?s:s.combinedScore:0}e>0&&(h=Math.min(.95,x/e))}return{matches:o,probability:h,bestMatch:d}}(e,i,a,r,n),h=d.length,u=[],m=e.toUpperCase(),p=s&&void 0!==s.latitude&&void 0!==s.longitude&&(0!==s.latitude||0!==s.longitude);for(const b of d){if(a&&N(m,a)&&b===a&&p&&s){u.push({hash:b,name:s.name||"Local Node",latitude:s.latitude,longitude:s.longitude,probability:n?1:x,isLocal:!0});continue}const e=i[b];(null==e?void 0:e.latitude)&&(null==e?void 0:e.longitude)&&(0!==e.latitude||0!==e.longitude)&&u.push({hash:b,name:e.node_name||e.name||"Unknown",latitude:e.latitude,longitude:e.longitude,probability:x,isLocal:!1,isDirectNeighbor:!0===e.zero_hop})}const f=u.length;if(1===f)u[0].probability=l??1;else if(f>1)if(void 0!==l&&l>0){u[0].probability=l;const e=1-l,t=f-1;u.slice(1).forEach(s=>{s.probability=e/t})}else{let e=0;const t=u.map(t=>{if(t.isLocal)return{candidate:t,score:1};const a=null==r?void 0:r.get(t.hash);let n=.5;var o;let c;return p&&s&&(n=(o=function(e,t,s,a){const n=(s-e)*Math.PI/180,r=(a-t)*Math.PI/180,o=Math.sin(n/2)*Math.sin(n/2)+Math.cos(e*Math.PI/180)*Math.cos(s*Math.PI/180)*Math.sin(r/2)*Math.sin(r/2);return 2*Math.atan2(Math.sqrt(o),Math.sqrt(1-o))*6371e3}(s.latitude,s.longitude,t.latitude,t.longitude))<100?1:o<500?.9:o<1e3?.7:o<5e3?.5:o<1e4?.3:.1),a?c=.3*n+.3*a.hopConsistencyScore+.4*a.frequencyScore:(c=n,t.isDirectNeighbor&&(c=Math.max(c,.8))),e+=c,{candidate:t,score:c}});if(e>0)t.forEach(({candidate:t,score:s})=>{t.probability=Math.min(.95,s/e)});else{const e=1/f;u.forEach(t=>t.probability=e)}}return{candidates:u,totalMatches:h}}(c,t,s,a,l,n,r,d),u=x.length>0?Math.max(...x.map(e=>e.probability)):0;return{prefix:c,candidates:x,confidence:u,totalMatches:h}}),i=c.reduce((e,t)=>0===t.confidence?0:e*t.confidence,1),l=c.some(e=>e.candidates.length>0);return{hops:c,overallConfidence:i,hasValidPath:l}}(t,s,a,n,d,x),[t,s,a,n,d,x]),j=e.useMemo(()=>{const e=[];p&&e.push(p),e.push(...g.hops),f&&e.push(f);const t=e.reduce((e,t)=>0===t.confidence?0:e*t.confidence,1),s=e.some(e=>e.candidates.some(e=>0!==e.latitude||0!==e.longitude));return{hops:e,overallConfidence:t,hasValidPath:s}},[p,g,f]);return j.hasValidPath?r.jsxs("div",{className:"space-y-2",children:[r.jsxs("div",{className:"flex items-center justify-between text-xs",children:[r.jsxs("div",{className:"flex items-center gap-1.5",children:[r.jsx("span",{className:"text-text-muted",children:"Path Confidence:"}),r.jsx("span",{className:(v=j.overallConfidence,v>=1?"text-accent-success":v>=.5?"text-accent-secondary":v>=.25?"text-signal-poor":v>0?"text-accent-danger":"text-text-muted"),children:K(j.overallConfidence)}),r.jsx("button",{className:"text-text-muted hover:text-text-secondary transition-colors",title:"Confidence is calculated based on how many known nodes match each path prefix. Multiple matches reduce confidence due to collision probability.",children:r.jsx(c,{className:"w-3 h-3"})})]}),r.jsxs("div",{className:"flex items-center gap-2 text-[10px]",children:[r.jsxs("div",{className:"flex items-center gap-1",children:[r.jsx("div",{className:"w-2 h-2 rounded-full bg-accent-success"}),r.jsx("span",{className:"text-text-muted",children:"Exact"})]}),r.jsxs("div",{className:"flex items-center gap-1",children:[r.jsx("div",{className:"w-2 h-2 rounded-full bg-accent-secondary"}),r.jsx("span",{className:"text-text-muted",children:"Multi"})]}),r.jsxs("div",{className:"flex items-center gap-1",children:[r.jsx("div",{className:"w-2 h-2 rounded-full bg-text-muted"}),r.jsx("span",{className:"text-text-muted",children:"Unknown"})]})]})]}),r.jsx("div",{className:"rounded-lg overflow-hidden border border-border-subtle",children:r.jsx(B,{children:r.jsx(e.Suspense,{fallback:r.jsx("div",{className:"h-[200px] bg-bg-elevated flex items-center justify-center text-text-muted text-sm",children:"Loading map..."}),children:r.jsx(G,{resolvedPath:j,localNode:a,hubNodes:h,hoveredHopIndex:u,onHoverHop:m})})})}),r.jsx("div",{className:"flex flex-wrap items-center gap-1.5",children:j.hops.map((e,t)=>{var s,a,n;const o=!0===e.isSource,c=!0===e.isDestination,i=u===t;let l;return l=o?`Source: ${(null==(s=e.candidates[0])?void 0:s.name)||"Unknown"}`:c?`Destination: ${(null==(a=e.candidates[0])?void 0:a.name)||"Unknown"}`:0===e.totalMatches?"No matching nodes found":1===e.totalMatches?`Exact match: ${(null==(n=e.candidates[0])?void 0:n.name)||"Unknown"}`:`${e.totalMatches} possible matches (${(100*e.confidence).toFixed(0)}% confidence)`,r.jsxs("div",{className:b("flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-mono cursor-pointer transition-all",i?"bg-accent-primary/20 ring-1 ring-accent-primary/50":"bg-bg-elevated hover:bg-bg-subtle",o&&"border border-accent-success/30",c&&"border border-accent-primary/30"),title:l,onMouseEnter:()=>m(t),onMouseLeave:()=>m(null),children:[o&&r.jsx("span",{className:"text-accent-success text-[8px] mr-0.5",children:"SRC"}),c&&r.jsx("span",{className:"text-accent-primary text-[8px] mr-0.5",children:"DST"}),r.jsx("span",{style:Q(e.confidence,e.totalMatches),children:e.prefix}),!o&&!c&&e.totalMatches>1&&r.jsxs("span",{className:"text-text-muted",children:["×",e.totalMatches]}),!o&&!c&&0===e.totalMatches&&r.jsx("span",{className:"text-text-muted",children:"?"})]},t)})})]}):r.jsxs("div",{className:"flex items-center justify-center text-text-muted text-xs py-4",children:[r.jsx(o,{className:"w-3.5 h-3.5 mr-1.5 opacity-50"}),"No location data available for path nodes"]});var v}function J(e){if(!e)return[];if(Array.isArray(e))return e;try{const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function Z({label:e,children:t,compact:s=!1}){return r.jsxs("div",{className:b("flex flex-col",s?"gap-0.5":"gap-1"),children:[r.jsx("span",{className:"text-[10px] text-text-muted uppercase tracking-wide",children:e}),r.jsx("span",{className:b("text-text-primary",s?"text-xs":"text-sm"),children:t})]})}function ee({onClick:e,copied:t}){return r.jsx("button",{onClick:t=>{t.stopPropagation(),e()},className:"p-1 rounded hover:bg-bg-subtle transition-colors",children:t?r.jsx(p,{className:"w-3 h-3 text-accent-success"}):r.jsx(f,{className:"w-3 h-3 text-text-muted"})})}function te({originalPath:e,forwardedPath:t,ghostPrefixes:s}){const n=t.length>0?t:e;return 0===n.length?r.jsx("span",{className:"text-xs text-text-muted",children:"No path data"}):r.jsx("div",{className:"flex items-center gap-1 flex-wrap",children:n.map((e,t)=>{const o=(e=>null==s?void 0:s.has(e.toUpperCase()))(e);return r.jsxs("div",{className:"flex items-center gap-1",children:[o?r.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-accent-tertiary/20 text-accent-tertiary font-mono text-xs",children:[r.jsx(x,{className:"w-3 h-3"}),e.toUpperCase()]}):r.jsx(E,{hash:e,size:"xs"}),t{const e=e=>{"Escape"===e.key&&s()};window.addEventListener("keydown",e);const t=document.body.style.overflow,a=document.body.style.position,n=document.body.style.width,r=document.body.style.top,o=window.scrollY;return document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%",document.body.style.top=`-${o}px`,()=>{window.removeEventListener("keydown",e),document.body.style.overflow=t,document.body.style.position=a,document.body.style.width=n,document.body.style.top=r,window.scrollTo(0,o)}},[s]);const v=_(),y=k(),N=M(),w=C(),T=e.useMemo(()=>new Set(w.map(e=>e.prefix.toUpperCase())),[w]),R=t.payload_type_name||L(t.payload_type??t.type),U=t.route_type_name||F(t.route_type??t.route),z=t.payload_length??t.length??0,I=t.tx_delay_ms??0,q=J(t.original_path),W=J(t.forwarded_path),X=q.length>0||W.length>0,G=W.length>0?W:q,K=e.useMemo(()=>{var e;if(null==(e=null==v?void 0:v.config)?void 0:e.repeater)return{latitude:v.config.repeater.latitude,longitude:v.config.repeater.longitude,name:v.config.node_name||"Local Node"}},[v]),Q=(null==v?void 0:v.neighbors)??{},B=N.size>0?N:void 0,se=function(e){var t;if(!e)return{text:null,isText:!1};try{if(/^[0-9a-fA-F]+$/.test(e)){const s=(null==(t=e.match(/.{1,2}/g))?void 0:t.map(e=>parseInt(e,16)))||[],a=String.fromCharCode(...s),n=a.replace(/[^\x20-\x7E]/g,"");if(n.length>.7*a.length)return{text:n,isText:!0}}if(/^[\x20-\x7E\s]+$/.test(e))return{text:e,isText:!0}}catch{}return{text:null,isText:!1}}(t.payload),ae=t.payload&&t.payload.length>0,ne=t.raw_packet&&t.raw_packet.length>0,re=e.useCallback(async(e,t)=>{try{await navigator.clipboard.writeText(e),j(t),setTimeout(()=>j(null),2e3)}catch{}},[]);return l.createPortal(r.jsx("div",{className:"fixed inset-0 bg-black/40 backdrop-blur-md z-[10010] flex items-end sm:items-center justify-center",onClick:s,role:"dialog","aria-modal":"true","aria-labelledby":"packet-modal-title",children:r.jsxs("div",{className:b("glass-card-elevated w-full max-h-[90vh] flex flex-col","sm:max-w-xl sm:mx-4 sm:rounded-xl","rounded-t-2xl rounded-b-none sm:rounded-b-xl","pb-safe"),onClick:e=>e.stopPropagation(),children:[r.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-border-subtle flex-shrink-0",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx(H,{packet:t,showLabel:!0,size:"md"}),r.jsxs("div",{children:[r.jsx("h3",{id:"packet-modal-title",className:b("text-base font-semibold",A(R)),children:R}),r.jsx("p",{className:"text-xs text-text-muted",children:P(t.timestamp)})]})]}),r.jsx("button",{onClick:s,className:"p-2 rounded-lg text-text-muted hover:text-text-primary hover:bg-bg-subtle transition-colors",children:r.jsx(d,{className:"w-5 h-5"})})]}),r.jsxs("div",{className:"overflow-y-auto flex-1 p-4 space-y-4 overscroll-contain",style:{WebkitOverflowScrolling:"touch",touchAction:"pan-y"},children:[r.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[r.jsx(Z,{label:"Packet Hash",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(E,{hash:t.packet_hash,size:"sm"}),r.jsx(ee,{onClick:()=>re(t.packet_hash,"hash"),copied:"hash"===g})]})}),r.jsx(Z,{label:"Route",children:r.jsx("span",{className:b("px-2 py-0.5 rounded text-xs border font-medium",O(U)),children:U})})]}),r.jsx("div",{className:"glass-card-inner p-3",children:r.jsxs("div",{className:"flex items-center justify-between",children:[r.jsxs("div",{children:[r.jsx("p",{className:"text-xs text-text-muted mb-1",children:"Signal Quality"}),r.jsx("p",{className:"text-sm font-medium text-text-primary",children:D(t.rssi)})]}),r.jsx(S,{rssi:t.rssi,snr:t.snr,showValues:!0})]})}),(t.src_hash||t.dst_hash)&&r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[t.src_hash&&r.jsx(Z,{label:"Source",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(E,{hash:t.src_hash,size:"sm"}),r.jsx(ee,{onClick:()=>re(t.src_hash,"src"),copied:"src"===g})]})}),t.dst_hash&&r.jsx(Z,{label:"Destination",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(E,{hash:t.dst_hash,size:"sm"}),r.jsx(ee,{onClick:()=>re(t.dst_hash,"dst"),copied:"dst"===g})]})})]}),X&&r.jsxs("div",{className:"glass-card-inner p-3",children:[r.jsxs("div",{className:"flex items-center justify-between mb-2",children:[r.jsx("p",{className:"text-xs text-text-muted",children:"Packet Path"}),G.some(e=>T.has(e.toUpperCase()))&&r.jsxs("span",{className:"flex items-center gap-1 px-1.5 py-0.5 rounded-full bg-accent-tertiary/20 text-accent-tertiary text-[10px]",children:[r.jsx(x,{className:"w-3 h-3"}),r.jsx("span",{children:"Ghost Detected"})]})]}),r.jsx(te,{originalPath:q,forwardedPath:W,ghostPrefixes:T})]}),X&&G.length>0&&r.jsxs("div",{className:"glass-card-inner overflow-hidden",children:[r.jsxs("button",{onClick:()=>i(!c),className:"w-full p-3 flex items-center justify-between text-left hover:bg-bg-subtle transition-colors",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(h,{className:"w-4 h-4 text-accent-primary"}),r.jsx("span",{className:"text-xs text-text-secondary font-medium",children:"Path Map"})]}),c?r.jsx(u,{className:"w-4 h-4 text-text-muted"}):r.jsx(m,{className:"w-4 h-4 text-text-muted"})]}),c&&r.jsx("div",{className:"px-3 pb-3",children:r.jsx(Y,{path:G,neighbors:Q,localNode:K,localHash:null==v?void 0:v.local_hash,srcHash:t.src_hash,dstHash:t.dst_hash,neighborAffinity:B,hubNodes:[...y]})})]}),r.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[r.jsx(Z,{label:"Size",compact:!0,children:r.jsxs("span",{className:"font-mono",children:[z,"B"]})}),r.jsx(Z,{label:"TX Delay",compact:!0,children:r.jsxs("span",{className:"font-mono",children:[I.toFixed(1),"ms"]})}),r.jsx(Z,{label:"Score",compact:!0,children:r.jsx("span",{className:"font-mono",children:void 0!==t.score?t.score.toFixed(3):"—"})})]}),r.jsx(Z,{label:"Status",children:r.jsx("span",{className:$(t),children:V(t)})}),ae&&r.jsxs("div",{className:"glass-card-inner p-3",children:[r.jsx("p",{className:"text-xs text-text-muted mb-2",children:"Payload"}),se.isText&&se.text?r.jsx("div",{className:"bg-bg-base rounded p-2",children:r.jsx("p",{className:"text-sm text-text-primary font-mono break-all",children:se.text})}):r.jsxs("p",{className:"text-xs text-text-muted font-mono break-all",children:[null==(a=t.payload)?void 0:a.slice(0,100),t.payload&&t.payload.length>100&&"..."]})]}),ne&&r.jsxs("div",{className:"glass-card-inner overflow-hidden",children:[r.jsxs("button",{onClick:()=>o(!n),className:"w-full p-3 flex items-center justify-between text-left hover:bg-bg-subtle transition-colors",children:[r.jsx("span",{className:"text-xs text-text-muted",children:"Raw Packet Hex"}),n?r.jsx(u,{className:"w-4 h-4 text-text-muted"}):r.jsx(m,{className:"w-4 h-4 text-text-muted"})]}),n&&r.jsx("div",{className:"px-3 pb-3",children:r.jsxs("div",{className:"bg-bg-base rounded p-2 relative",children:[r.jsx("pre",{className:"text-[10px] text-text-secondary font-mono break-all whitespace-pre-wrap",children:t.raw_packet}),r.jsx("button",{onClick:()=>re(t.raw_packet,"raw"),className:"absolute top-2 right-2 p-1 rounded bg-bg-elevated hover:bg-bg-subtle transition-colors",children:"raw"===g?r.jsx(p,{className:"w-3 h-3 text-accent-success"}):r.jsx(f,{className:"w-3 h-3 text-text-muted"})})]})})]})]})]})}),document.body)});export{q as P,W as a,se as b,U as c,L as g}; diff --git a/frontend/dist/assets/PacketDetailModal-D_VE4qlE.js b/frontend/dist/assets/PacketDetailModal-D_VE4qlE.js new file mode 100644 index 00000000..2a48f131 --- /dev/null +++ b/frontend/dist/assets/PacketDetailModal-D_VE4qlE.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PathMapMapLibre-Cm4zFWby.js","assets/vendor-react-CWPBVwgk.js","assets/vendor-core-XI_xDZ-M.js","assets/maplibre-gl-B1CfjdFi.css"])))=>i.map(i=>d[i]); +import{r as e,V as t,a0 as s,A as a,a1 as n,j as r,a2 as o,a3 as c,a4 as i,b as l,X as d,h as x,a5 as h,k as u,a6 as p,a7 as m,W as f}from"./vendor-react-CWPBVwgk.js";import{c as b}from"./recharts-cqZ_RWsW.js";import{p as g,R as j,q as y,r as v,s as N,g as w,d as _,t as k,v as M,w as C,x as P}from"./index-BlYVqXhs.js";import{S,g as D}from"./SignalIndicator-QKnbwhAo.js";import{H as E}from"./HashBadge-Bq5n5xgM.js";import{_ as T}from"./deckgl-DTsmDcfs.js";function L(e){return null==e?"UNKNOWN":g[e]||`TYPE_${e}`}function F(e){return null==e?"UNKNOWN":j[e]||`ROUTE_${e}`}function A(e){return{ADVERT:"text-[var(--pkt-advert)]",FLOOD:"text-[var(--pkt-flood)]",TXT_MSG:"text-[var(--pkt-txt-msg)]",ACK:"text-[var(--pkt-ack)]",TRACE:"text-[var(--pkt-trace)]",REQ:"text-[var(--pkt-req)]",RESPONSE:"text-[var(--pkt-response)]",GRP_TXT:"text-[var(--pkt-grp-txt)]",GRP_DATA:"text-[var(--pkt-grp-data)]",PATH:"text-[var(--pkt-path)]",ANON_REQ:"text-[var(--pkt-anon)]"}[e]||"text-[var(--pkt-unknown)]"}function O(e){return{FLOOD:"bg-[var(--route-flood)]/20 text-[var(--route-flood)] border-[var(--route-flood)]/30",DIRECT:"bg-[var(--route-direct)]/20 text-[var(--route-direct)] border-[var(--route-direct)]/30",TRANSPORT:"bg-[var(--route-transport)]/20 text-[var(--route-transport)] border-[var(--route-transport)]/30",T_FLOOD:"bg-[var(--route-flood)]/20 text-[var(--route-flood)] border-[var(--route-flood)]/30",T_DIRECT:"bg-[var(--route-direct)]/20 text-[var(--route-direct)] border-[var(--route-direct)]/30"}[e]||"bg-bg-subtle text-text-muted border-border-subtle"}function R(e){return 1===e||!0===e}function U(e){return"tx_local"===e.packet_origin?"tx":"tx_forward"===e.packet_origin?"forward":e.is_duplicate?"duplicate":e.transmitted?"forward":e.drop_reason?"dropped":"rx"}const V={rx:{icon:t,label:"RX",color:"text-accent-primary",bgColor:"bg-accent-primary/10"},tx:{icon:n,label:"TX",color:"text-[#F9D26F]",bgColor:"bg-[#F9D26F]/10"},forward:{icon:a,label:"FWD",color:"text-accent-success",bgColor:"bg-accent-success/10"},dropped:{icon:s,label:"DROP",color:"text-accent-danger",bgColor:"bg-accent-danger/10"},duplicate:{icon:t,label:"DUP",color:"text-text-muted",bgColor:"bg-white/5"}},z=e.memo(function({packet:e,showLabel:t=!0,size:s="sm"}){const a=U(e),n=V[a],o=n.icon;return r.jsxs("div",{className:b("inline-flex items-center gap-1 rounded-md",t&&"px-1.5 py-0.5",t&&n.bgColor),children:[r.jsx(o,{className:b({sm:"w-3.5 h-3.5",md:"w-4 h-4"}[s],n.color)}),t&&r.jsx("span",{className:b("text-[10px] font-semibold tracking-wide",n.color),children:n.label})]})});function H(e){return"tx_local"===e.packet_origin?"Transmitted":"tx_forward"===e.packet_origin||e.transmitted?"Forwarded":e.is_duplicate?"Duplicate":"No transport keys configured"===e.drop_reason?"Monitor Only":e.drop_reason?e.drop_reason:"Received"}function $(e){const t=U(e);return V[t].color}function I({packet:e,onClick:t,isFlashing:s=!1}){const a=e.payload_type_name||L(e.payload_type??e.type),n=e.route_type_name||F(e.route_type??e.route);return r.jsxs("tr",{onClick:()=>t(e),className:b("cursor-pointer","hover:bg-bg-subtle",R(e.is_duplicate)&&"opacity-50",s&&"flash-row"),children:[r.jsx("td",{className:"py-2.5 px-3",children:r.jsx(z,{packet:e,showLabel:!0})}),r.jsx("td",{className:"py-2.5 px-3 text-xs font-mono text-text-secondary whitespace-nowrap",children:v(e.timestamp)}),r.jsx("td",{className:"py-2.5 px-3",children:e.src_hash?r.jsx(E,{hash:e.src_hash,copyValue:e.src_hash_full,size:"xs"}):r.jsx("span",{className:"text-xs text-text-muted",children:"—"})}),r.jsx("td",{className:"py-2.5 px-3",children:r.jsx("span",{className:b("text-xs font-semibold",A(a)),children:a})}),r.jsx("td",{className:"py-2.5 px-3",children:r.jsx("span",{className:b("px-1.5 py-0.5 rounded text-[10px] border font-medium",O(n)),children:n})}),r.jsx("td",{className:"py-2.5 px-3 pr-4 text-right",children:r.jsx(S,{rssi:e.rssi,snr:e.snr,compact:!0,showValues:!0})})]})}const q=e.memo(function(e){return r.jsx(r.Fragment,{children:r.jsx(I,{...e})})}),W=e.memo(function({packet:e,onClick:t,isFlashing:s=!1}){const a=e.payload_type_name||L(e.payload_type??e.type),n=e.route_type_name||F(e.route_type??e.route);return r.jsx("div",{onClick:()=>t(e),className:b("packet-row px-3 py-2.5 cursor-pointer","hover:bg-bg-subtle","active:bg-bg-elevated",R(e.is_duplicate)&&"opacity-50",s&&"flash-row"),children:r.jsxs("div",{className:"flex items-center gap-1.5",children:[r.jsx("div",{className:"w-14 flex-shrink-0",children:r.jsx(z,{packet:e,showLabel:!0,size:"sm"})}),r.jsx("span",{className:"text-[10px] font-mono text-text-muted w-7 flex-shrink-0",children:y(e.timestamp)}),r.jsx("div",{className:"w-9 flex-shrink-0",children:e.src_hash?r.jsx(E,{hash:e.src_hash,copyValue:e.src_hash_full,size:"xs"}):r.jsx("span",{className:"text-[10px] text-text-muted",children:"—"})}),r.jsx("span",{className:b("text-xs font-semibold truncate flex-1 min-w-0",A(a)),children:a}),r.jsx("div",{className:"w-14 flex-shrink-0",children:r.jsx("span",{className:b("px-1 py-0.5 rounded text-[9px] border font-medium",O(n)),children:n})}),r.jsx("div",{className:"w-10 flex-shrink-0 text-right",children:r.jsx(S,{rssi:e.rssi,compact:!0,showValues:!0})})]})})});function X(e){if(e.contact_type){const t=e.contact_type.toLowerCase();if("repeater"===t||"rep"===t)return!0;if("companion"===t||"client"===t||"cli"===t)return!1;if("room server"===t||"room_server"===t||"room"===t||"server"===t)return!1}return!0===e.is_repeater||(e.is_repeater,!1)}const G=e.lazy(()=>T(()=>import("./PathMapMapLibre-Cm4zFWby.js"),__vite__mapDeps([0,1,2,3])));function K(e){return`${(100*e).toFixed(0)}%`}function Q(e,t){const s=document.documentElement,a=getComputedStyle(s),n={success:a.getPropertyValue("--accent-success").trim()||"#39D98A",secondary:a.getPropertyValue("--accent-secondary").trim()||"#F9D26F",poor:a.getPropertyValue("--signal-poor").trim()||"#FF8A5C",danger:a.getPropertyValue("--accent-danger").trim()||"#FF5C7A",muted:a.getPropertyValue("--text-muted").trim()||"#767688"};let r;return r=0===t?n.muted:e>=1?n.success:e>=.5?n.secondary:e>=.25?n.poor:e>0?n.danger:n.muted,{color:r}}class B extends e.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}render(){return this.state.hasError?r.jsxs("div",{className:"h-[200px] flex items-center justify-center text-text-muted",children:[r.jsx(i,{className:"w-4 h-4 mr-2"}),"Map failed to load"]}):this.props.children}}function Y({path:t,neighbors:s,localNode:a,localHash:n,srcHash:i,dstHash:l,neighborAffinity:d,prefixLookup:x,hubNodes:h}){const[u,p]=e.useState(null),m=e.useMemo(()=>{if(!i)return null;const e=w(i),t=s[i];if((null==t?void 0:t.latitude)&&(null==t?void 0:t.longitude)&&(0!==t.latitude||0!==t.longitude))return{prefix:e,candidates:[{hash:i,name:t.node_name||t.name||"Source",latitude:t.latitude,longitude:t.longitude,probability:1,isLocal:!1,isDirectNeighbor:!0===t.zero_hop}],confidence:1,totalMatches:1,isSource:!0};const a=(null==t?void 0:t.node_name)||(null==t?void 0:t.name)||i.slice(0,8);return{prefix:e,candidates:[{hash:i,name:a,latitude:0,longitude:0,probability:1,isLocal:!1}],confidence:1,totalMatches:1,isSource:!0}},[i,s]),f=e.useMemo(()=>{if(!l)return null;const e=w(l);if(n&&l===n&&a){const t=0!==a.latitude||0!==a.longitude;return{prefix:e,candidates:[{hash:l,name:a.name||"Local Node",latitude:t?a.latitude:0,longitude:t?a.longitude:0,probability:1,isLocal:!0}],confidence:1,totalMatches:1,isDestination:!0}}const t=s[l];if((null==t?void 0:t.latitude)&&(null==t?void 0:t.longitude)&&(0!==t.latitude||0!==t.longitude))return{prefix:e,candidates:[{hash:l,name:t.node_name||t.name||"Destination",latitude:t.latitude,longitude:t.longitude,probability:1,isLocal:!1,isDirectNeighbor:!0===t.zero_hop}],confidence:1,totalMatches:1,isDestination:!0};const r=(null==t?void 0:t.node_name)||(null==t?void 0:t.name)||l.slice(0,8);return{prefix:e,candidates:[{hash:l,name:r,latitude:0,longitude:0,probability:1,isLocal:!1}],confidence:1,totalMatches:1,isDestination:!0}},[l,s,a,n]),g=e.useMemo(()=>function(e,t,s,a,n,r){if(!e||0===e.length)return{hops:[],overallConfidence:0,hasValidPath:!1};const o=e.length-1,c=e.map((c,i)=>{const l=i===o,d=e.length-i,{candidates:x,totalMatches:h}=function(e,t,s,a,n=!1,r,o,c){const i=function(e){const t={};for(const[s,a]of Object.entries(e))X(a)&&(t[s]=a);return t}(t);let l;if(o){const t=function(e,t,s){const a=t.toUpperCase(),n=e.get(a);if(!n||0===n.candidates.length)return{hash:null,confidence:0};if(null==s?void 0:s.isLastHop)return{hash:n.bestMatch,confidence:n.confidence};if(1===(null==s?void 0:s.position))return{hash:n.bestMatch,confidence:n.confidence};if((null==s?void 0:s.position)&&n.bestMatchForPosition.has(s.position)){const e=n.bestMatchForPosition.get(s.position),t=Math.max(e.confidence,n.confidence);return{hash:e.hash,confidence:t}}if((null==s?void 0:s.adjacentPrefixes)&&s.adjacentPrefixes.length>0){let e=n.bestMatch,t=0;for(const a of n.candidates){let n=0;for(const e of s.adjacentPrefixes)n+=a.adjacentPrefixCounts.get(e.toUpperCase())||0;const r=a.combinedScore+n/Math.max(1,a.totalAdjacentObservations)*.3;r>t&&(t=r,e=a.hash)}return{hash:e,confidence:n.confidence}}return{hash:n.bestMatch,confidence:n.confidence}}(o,e,{position:c,isLastHop:n});l=t.confidence}const{matches:d,probability:x}=function(e,t,s,a,n=!1){const r=e.toUpperCase(),o=[],c=s&&N(r,s);c&&o.push(s);for(const u of Object.keys(t))N(r,u)&&o.push(u);if(n&&c&&s&&1===o.length)return{matches:o,probability:1,bestMatch:s};if(n&&c&&o.length>1){const e=o.filter(e=>e!==s);if(1===e.length)return{matches:o,probability:1,bestMatch:e[0]}}const i=o.length>0?1/o.length:0,l=[...o].sort();let d=null,x=-1;if(1===l.length)d=l[0];else if(l.length>1&&a){for(const e of l){const t=a.get(e),s=t?"number"==typeof t?t:t.combinedScore:0;s>x&&(x=s,d=e)}d||(d=l[0])}else l.length>0&&(d=l[0]);let h=i;if(o.length>1&&a&&x>0){let e=0;for(const t of o){const s=a.get(t);e+=s?"number"==typeof s?s:s.combinedScore:0}e>0&&(h=Math.min(.95,x/e))}return{matches:o,probability:h,bestMatch:d}}(e,i,a,r,n),h=d.length,u=[],p=e.toUpperCase(),m=s&&void 0!==s.latitude&&void 0!==s.longitude&&(0!==s.latitude||0!==s.longitude);for(const b of d){if(a&&N(p,a)&&b===a&&m&&s){u.push({hash:b,name:s.name||"Local Node",latitude:s.latitude,longitude:s.longitude,probability:n?1:x,isLocal:!0});continue}const e=i[b];(null==e?void 0:e.latitude)&&(null==e?void 0:e.longitude)&&(0!==e.latitude||0!==e.longitude)&&u.push({hash:b,name:e.node_name||e.name||"Unknown",latitude:e.latitude,longitude:e.longitude,probability:x,isLocal:!1,isDirectNeighbor:!0===e.zero_hop})}const f=u.length;if(1===f)u[0].probability=l??1;else if(f>1)if(void 0!==l&&l>0){u[0].probability=l;const e=1-l,t=f-1;u.slice(1).forEach(s=>{s.probability=e/t})}else{let e=0;const t=u.map(t=>{if(t.isLocal)return{candidate:t,score:1};const a=null==r?void 0:r.get(t.hash);let n=.5;var o;let c;return m&&s&&(n=(o=function(e,t,s,a){const n=(s-e)*Math.PI/180,r=(a-t)*Math.PI/180,o=Math.sin(n/2)*Math.sin(n/2)+Math.cos(e*Math.PI/180)*Math.cos(s*Math.PI/180)*Math.sin(r/2)*Math.sin(r/2);return 2*Math.atan2(Math.sqrt(o),Math.sqrt(1-o))*6371e3}(s.latitude,s.longitude,t.latitude,t.longitude))<100?1:o<500?.9:o<1e3?.7:o<5e3?.5:o<1e4?.3:.1),a?c=.3*n+.3*a.hopConsistencyScore+.4*a.frequencyScore:(c=n,t.isDirectNeighbor&&(c=Math.max(c,.8))),e+=c,{candidate:t,score:c}});if(e>0)t.forEach(({candidate:t,score:s})=>{t.probability=Math.min(.95,s/e)});else{const e=1/f;u.forEach(t=>t.probability=e)}}return{candidates:u,totalMatches:h}}(c,t,s,a,l,n,r,d),u=x.length>0?Math.max(...x.map(e=>e.probability)):0;return{prefix:c,candidates:x,confidence:u,totalMatches:h}}),i=c.reduce((e,t)=>0===t.confidence?0:e*t.confidence,1),l=c.some(e=>e.candidates.length>0);return{hops:c,overallConfidence:i,hasValidPath:l}}(t,s,a,n,d,x),[t,s,a,n,d,x]),j=e.useMemo(()=>{const e=[];m&&e.push(m),e.push(...g.hops),f&&e.push(f);const t=e.reduce((e,t)=>0===t.confidence?0:e*t.confidence,1),s=e.some(e=>e.candidates.some(e=>0!==e.latitude||0!==e.longitude));return{hops:e,overallConfidence:t,hasValidPath:s}},[m,g,f]);return j.hasValidPath?r.jsxs("div",{className:"space-y-2",children:[r.jsxs("div",{className:"flex items-center justify-between text-xs",children:[r.jsxs("div",{className:"flex items-center gap-1.5",children:[r.jsx("span",{className:"text-text-muted",children:"Path Confidence:"}),r.jsx("span",{className:(y=j.overallConfidence,y>=1?"text-accent-success":y>=.5?"text-accent-secondary":y>=.25?"text-signal-poor":y>0?"text-accent-danger":"text-text-muted"),children:K(j.overallConfidence)}),r.jsx("button",{className:"text-text-muted hover:text-text-secondary transition-colors",title:"Confidence is calculated based on how many known nodes match each path prefix. Multiple matches reduce confidence due to collision probability.",children:r.jsx(c,{className:"w-3 h-3"})})]}),r.jsxs("div",{className:"flex items-center gap-2 text-[10px]",children:[r.jsxs("div",{className:"flex items-center gap-1",children:[r.jsx("div",{className:"w-2 h-2 rounded-full bg-accent-success"}),r.jsx("span",{className:"text-text-muted",children:"Exact"})]}),r.jsxs("div",{className:"flex items-center gap-1",children:[r.jsx("div",{className:"w-2 h-2 rounded-full bg-accent-secondary"}),r.jsx("span",{className:"text-text-muted",children:"Multi"})]}),r.jsxs("div",{className:"flex items-center gap-1",children:[r.jsx("div",{className:"w-2 h-2 rounded-full bg-text-muted"}),r.jsx("span",{className:"text-text-muted",children:"Unknown"})]})]})]}),r.jsx("div",{className:"rounded-lg overflow-hidden border border-border-subtle",children:r.jsx(B,{children:r.jsx(e.Suspense,{fallback:r.jsx("div",{className:"h-[200px] bg-bg-elevated flex items-center justify-center text-text-muted text-sm",children:"Loading map..."}),children:r.jsx(G,{resolvedPath:j,localNode:a,hubNodes:h,hoveredHopIndex:u,onHoverHop:p})})})}),r.jsx("div",{className:"flex flex-wrap items-center gap-1.5",children:j.hops.map((e,t)=>{var s,a,n;const o=!0===e.isSource,c=!0===e.isDestination,i=u===t;let l;return l=o?`Source: ${(null==(s=e.candidates[0])?void 0:s.name)||"Unknown"}`:c?`Destination: ${(null==(a=e.candidates[0])?void 0:a.name)||"Unknown"}`:0===e.totalMatches?"No matching nodes found":1===e.totalMatches?`Exact match: ${(null==(n=e.candidates[0])?void 0:n.name)||"Unknown"}`:`${e.totalMatches} possible matches (${(100*e.confidence).toFixed(0)}% confidence)`,r.jsxs("div",{className:b("flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-mono cursor-pointer transition-all",i?"bg-accent-primary/20 ring-1 ring-accent-primary/50":"bg-bg-elevated hover:bg-bg-subtle",o&&"border border-accent-success/30",c&&"border border-accent-primary/30"),title:l,onMouseEnter:()=>p(t),onMouseLeave:()=>p(null),children:[o&&r.jsx("span",{className:"text-accent-success text-[8px] mr-0.5",children:"SRC"}),c&&r.jsx("span",{className:"text-accent-primary text-[8px] mr-0.5",children:"DST"}),r.jsx("span",{style:Q(e.confidence,e.totalMatches),children:e.prefix}),!o&&!c&&e.totalMatches>1&&r.jsxs("span",{className:"text-text-muted",children:["×",e.totalMatches]}),!o&&!c&&0===e.totalMatches&&r.jsx("span",{className:"text-text-muted",children:"?"})]},t)})})]}):r.jsxs("div",{className:"flex items-center justify-center text-text-muted text-xs py-4",children:[r.jsx(o,{className:"w-3.5 h-3.5 mr-1.5 opacity-50"}),"No location data available for path nodes"]});var y}function J(e){if(!e)return[];if(Array.isArray(e))return e;try{const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function Z({label:e,children:t,compact:s=!1}){return r.jsxs("div",{className:b("flex flex-col",s?"gap-0.5":"gap-1"),children:[r.jsx("span",{className:"text-[10px] text-text-muted uppercase tracking-wide",children:e}),r.jsx("span",{className:b("text-text-primary",s?"text-xs":"text-sm"),children:t})]})}function ee({onClick:e,copied:t}){return r.jsx("button",{onClick:t=>{t.stopPropagation(),e()},className:"p-1 rounded hover:bg-bg-subtle transition-colors",children:t?r.jsx(m,{className:"w-3 h-3 text-accent-success"}):r.jsx(f,{className:"w-3 h-3 text-text-muted"})})}function te({originalPath:e,forwardedPath:t,ghostPrefixes:s}){const n=t.length>0?t:e;return 0===n.length?r.jsx("span",{className:"text-xs text-text-muted",children:"No path data"}):r.jsx("div",{className:"flex items-center gap-1 flex-wrap",children:n.map((e,t)=>{const o=(e=>null==s?void 0:s.has(e.toUpperCase()))(e);return r.jsxs("div",{className:"flex items-center gap-1",children:[o?r.jsxs("span",{className:"inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-accent-tertiary/20 text-accent-tertiary font-mono text-xs",children:[r.jsx(x,{className:"w-3 h-3"}),e.toUpperCase()]}):r.jsx(E,{hash:e,size:"xs"}),t{const e=e=>{"Escape"===e.key&&s()};window.addEventListener("keydown",e);const t=document.body.style.overflow,a=document.body.style.position,n=document.body.style.width,r=document.body.style.top,o=window.scrollY;return document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.width="100%",document.body.style.top=`-${o}px`,()=>{window.removeEventListener("keydown",e),document.body.style.overflow=t,document.body.style.position=a,document.body.style.width=n,document.body.style.top=r,window.scrollTo(0,o)}},[s]);const y=_(),v=k(),N=M(),w=C(),T=e.useMemo(()=>new Set(w.map(e=>e.prefix.toUpperCase())),[w]),R=t.payload_type_name||L(t.payload_type??t.type),U=t.route_type_name||F(t.route_type??t.route),V=t.payload_length??t.length??0,I=t.tx_delay_ms??0,q=J(t.original_path),W=J(t.forwarded_path),X=q.length>0||W.length>0,G=W.length>0?W:q,K=e.useMemo(()=>{var e;if(null==(e=null==y?void 0:y.config)?void 0:e.repeater)return{latitude:y.config.repeater.latitude,longitude:y.config.repeater.longitude,name:y.config.node_name||"Local Node"}},[y]),Q=(null==y?void 0:y.neighbors)??{},B=N.size>0?N:void 0,se=function(e){var t;if(!e)return{text:null,isText:!1};try{if(/^[0-9a-fA-F]+$/.test(e)){const s=(null==(t=e.match(/.{1,2}/g))?void 0:t.map(e=>parseInt(e,16)))||[],a=String.fromCharCode(...s),n=a.replace(/[^\x20-\x7E]/g,"");if(n.length>.7*a.length)return{text:n,isText:!0}}if(/^[\x20-\x7E\s]+$/.test(e))return{text:e,isText:!0}}catch{}return{text:null,isText:!1}}(t.payload),ae=t.payload&&t.payload.length>0,ne=t.raw_packet&&t.raw_packet.length>0,re=e.useCallback(async(e,t)=>{try{await navigator.clipboard.writeText(e),j(t),setTimeout(()=>j(null),2e3)}catch{}},[]);return l.createPortal(r.jsx("div",{className:"fixed inset-0 bg-black/40 backdrop-blur-md z-[10010] flex items-end sm:items-center justify-center",onClick:s,role:"dialog","aria-modal":"true","aria-labelledby":"packet-modal-title",children:r.jsxs("div",{className:b("glass-card-elevated w-full max-h-[90vh] flex flex-col","sm:max-w-xl sm:mx-4 sm:rounded-xl","rounded-t-2xl rounded-b-none sm:rounded-b-xl","pb-safe"),onClick:e=>e.stopPropagation(),children:[r.jsxs("div",{className:"flex items-center justify-between p-4 border-b border-border-subtle flex-shrink-0",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx(z,{packet:t,showLabel:!0,size:"md"}),r.jsxs("div",{children:[r.jsx("h3",{id:"packet-modal-title",className:b("text-base font-semibold",A(R)),children:R}),r.jsx("p",{className:"text-xs text-text-muted",children:P(t.timestamp)})]})]}),r.jsx("button",{onClick:s,className:"p-2 rounded-lg text-text-muted hover:text-text-primary hover:bg-bg-subtle transition-colors",children:r.jsx(d,{className:"w-5 h-5"})})]}),r.jsxs("div",{className:"overflow-y-auto flex-1 p-4 space-y-4 overscroll-contain",style:{WebkitOverflowScrolling:"touch",touchAction:"pan-y"},children:[r.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[r.jsx(Z,{label:"Packet Hash",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(E,{hash:t.packet_hash,size:"sm"}),r.jsx(ee,{onClick:()=>re(t.packet_hash,"hash"),copied:"hash"===g})]})}),r.jsx(Z,{label:"Route",children:r.jsx("span",{className:b("px-2 py-0.5 rounded text-xs border font-medium",O(U)),children:U})})]}),r.jsx("div",{className:"glass-card-inner p-3",children:r.jsxs("div",{className:"flex items-center justify-between",children:[r.jsxs("div",{children:[r.jsx("p",{className:"text-xs text-text-muted mb-1",children:"Signal Quality"}),r.jsx("p",{className:"text-sm font-medium text-text-primary",children:D(t.rssi)})]}),r.jsx(S,{rssi:t.rssi,snr:t.snr,showValues:!0})]})}),(t.src_hash||t.dst_hash)&&r.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[t.src_hash&&r.jsx(Z,{label:"Source",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(E,{hash:t.src_hash,size:"sm"}),r.jsx(ee,{onClick:()=>re(t.src_hash,"src"),copied:"src"===g})]})}),t.dst_hash&&r.jsx(Z,{label:"Destination",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(E,{hash:t.dst_hash,size:"sm"}),r.jsx(ee,{onClick:()=>re(t.dst_hash,"dst"),copied:"dst"===g})]})})]}),X&&r.jsxs("div",{className:"glass-card-inner p-3",children:[r.jsxs("div",{className:"flex items-center justify-between mb-2",children:[r.jsx("p",{className:"text-xs text-text-muted",children:"Packet Path"}),G.some(e=>T.has(e.toUpperCase()))&&r.jsxs("span",{className:"flex items-center gap-1 px-1.5 py-0.5 rounded-full bg-accent-tertiary/20 text-accent-tertiary text-[10px]",children:[r.jsx(x,{className:"w-3 h-3"}),r.jsx("span",{children:"Ghost Detected"})]})]}),r.jsx(te,{originalPath:q,forwardedPath:W,ghostPrefixes:T})]}),X&&G.length>0&&r.jsxs("div",{className:"glass-card-inner overflow-hidden",children:[r.jsxs("button",{onClick:()=>i(!c),className:"w-full p-3 flex items-center justify-between text-left hover:bg-bg-subtle transition-colors",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(h,{className:"w-4 h-4 text-accent-primary"}),r.jsx("span",{className:"text-xs text-text-secondary font-medium",children:"Path Map"})]}),c?r.jsx(u,{className:"w-4 h-4 text-text-muted"}):r.jsx(p,{className:"w-4 h-4 text-text-muted"})]}),c&&r.jsx("div",{className:"px-3 pb-3",children:r.jsx(Y,{path:G,neighbors:Q,localNode:K,localHash:null==y?void 0:y.local_hash,srcHash:t.src_hash,dstHash:t.dst_hash,neighborAffinity:B,hubNodes:[...v]})})]}),r.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[r.jsx(Z,{label:"Size",compact:!0,children:r.jsxs("span",{className:"font-mono",children:[V,"B"]})}),r.jsx(Z,{label:"TX Delay",compact:!0,children:r.jsxs("span",{className:"font-mono",children:[I.toFixed(1),"ms"]})}),r.jsx(Z,{label:"Score",compact:!0,children:r.jsx("span",{className:"font-mono",children:void 0!==t.score?t.score.toFixed(3):"—"})})]}),r.jsx(Z,{label:"Status",children:r.jsx("span",{className:$(t),children:H(t)})}),ae&&r.jsxs("div",{className:"glass-card-inner p-3",children:[r.jsx("p",{className:"text-xs text-text-muted mb-2",children:"Payload"}),se.isText&&se.text?r.jsx("div",{className:"bg-bg-base rounded p-2",children:r.jsx("p",{className:"text-sm text-text-primary font-mono break-all",children:se.text})}):r.jsxs("p",{className:"text-xs text-text-muted font-mono break-all",children:[null==(a=t.payload)?void 0:a.slice(0,100),t.payload&&t.payload.length>100&&"..."]})]}),ne&&r.jsxs("div",{className:"glass-card-inner overflow-hidden",children:[r.jsxs("button",{onClick:()=>o(!n),className:"w-full p-3 flex items-center justify-between text-left hover:bg-bg-subtle transition-colors",children:[r.jsx("span",{className:"text-xs text-text-muted",children:"Raw Packet Hex"}),n?r.jsx(u,{className:"w-4 h-4 text-text-muted"}):r.jsx(p,{className:"w-4 h-4 text-text-muted"})]}),n&&r.jsx("div",{className:"px-3 pb-3",children:r.jsxs("div",{className:"bg-bg-base rounded p-2 relative",children:[r.jsx("pre",{className:"text-[10px] text-text-secondary font-mono break-all whitespace-pre-wrap",children:t.raw_packet}),r.jsx("button",{onClick:()=>re(t.raw_packet,"raw"),className:"absolute top-2 right-2 p-1 rounded bg-bg-elevated hover:bg-bg-subtle transition-colors",children:"raw"===g?r.jsx(m,{className:"w-3 h-3 text-accent-success"}):r.jsx(f,{className:"w-3 h-3 text-text-muted"})})]})})]})]})]})}),document.body)});export{q as P,W as a,se as b,U as c,L as g}; diff --git a/frontend/dist/assets/Packets-n3vuO2F7.js b/frontend/dist/assets/Packets-n3vuO2F7.js new file mode 100644 index 00000000..d8e816c7 --- /dev/null +++ b/frontend/dist/assets/Packets-n3vuO2F7.js @@ -0,0 +1 @@ +import{r as e,j as t,V as s,A as a,U as l,W as r,Y as n,y as c,_ as i,$ as o,p as d,X as m}from"./vendor-react-CWPBVwgk.js";import{c as x}from"./recharts-cqZ_RWsW.js";import{u as p,b as u,o as h,c as b,p as g,R as j}from"./index-BlYVqXhs.js";import{c as y,g as v,P as f,a as N,b as w}from"./PacketDetailModal-D_VE4qlE.js";import{P as k,b as _,a as S,c as R}from"./PageLayout-Kh569_kh.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";import"./SignalIndicator-QKnbwhAo.js";import"./HashBadge-Bq5n5xgM.js";function C({icon:e,label:s,value:a,color:l,percentage:r}){return t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("div",{className:x("p-1.5 rounded-md",l),children:e}),t.jsxs("div",{className:"flex flex-col",children:[t.jsx("span",{className:"text-sm font-semibold text-text-primary",children:a.toLocaleString()}),t.jsxs("span",{className:"text-[10px] text-text-muted leading-tight",children:[s,void 0!==r&&t.jsxs("span",{className:"ml-1 opacity-70",children:["(",r,"%)"]})]})]})]})}const L=e.memo(function({packets:c}){const i=e.useMemo(()=>{let e=0,t=0,s=0;const a=new Set;let l=0,r=0;for(const o of c){switch(y(o)){case"forward":e++;break;case"dropped":t++;break;case"duplicate":s++}o.src_hash&&a.add(o.src_hash),o.rssi&&(l+=o.rssi,r++)}const n=c.length,i=r>0?Math.round(l/r):0;return{total:n,rx:n,fwd:e,dropped:t,duplicate:s,uniqueSources:a.size,avgRssi:i,rxPercent:100,fwdPercent:n>0?Math.round(e/n*100):0,droppedPercent:n>0?Math.round(t/n*100):0}},[c]);return 0===c.length?null:t.jsx("div",{className:"glass-card p-3 pr-4",children:t.jsxs("div",{className:"grid grid-cols-2 gap-3 sm:flex sm:items-center sm:justify-between sm:gap-6",children:[t.jsx(C,{icon:t.jsx(s,{className:"w-3.5 h-3.5 text-accent-primary"}),label:"Received",value:i.rx,color:"bg-accent-primary/10",percentage:i.rxPercent}),t.jsx(C,{icon:t.jsx(a,{className:"w-3.5 h-3.5 text-accent-success"}),label:"Forwarded",value:i.fwd,color:"bg-accent-success/10",percentage:i.fwdPercent}),t.jsx(C,{icon:t.jsx(l,{className:"w-3.5 h-3.5 text-accent-danger"}),label:"Dropped",value:i.dropped,color:"bg-accent-danger/10",percentage:i.droppedPercent}),t.jsx(C,{icon:t.jsx(r,{className:"w-3.5 h-3.5 text-text-muted"}),label:"Duplicates",value:i.duplicate,color:"bg-white/5"}),t.jsxs("div",{className:"hidden sm:flex items-center gap-6 ml-auto",children:[t.jsx(C,{icon:t.jsx(n,{className:"w-3.5 h-3.5 text-accent-secondary"}),label:"Sources",value:i.uniqueSources,color:"bg-accent-secondary/10"}),t.jsxs("div",{className:"flex flex-col items-end pr-1",children:[t.jsxs("span",{className:"text-sm font-mono text-text-secondary",children:[i.avgRssi," dBm"]}),t.jsx("span",{className:"text-[10px] text-text-muted",children:"Avg Signal"})]})]})]})})});function P(){const s=p(),a=u(),l=h(),[r,n]=e.useState(null),[C,P]=e.useState(!1),[M,T]=e.useState({limit:100,status:"all"}),A=b(),[F,D]=e.useState(null),$=e.useRef(0),q=e.useMemo(()=>{const e=M.limit||100;return[...s.length<=e?s:s.slice(-e)].sort((e,t)=>(t.timestamp??0)-(e.timestamp??0))},[s,M.limit]),H=0===s.length,B=e.useMemo(()=>{let e=q;if(void 0!==M.type){const t=g[M.type];e=e.filter(e=>{const s=e.type??e.payload_type,a=e.payload_type_name;return s===M.type||a===t})}if(void 0!==M.route){const t=j[M.route];e=e.filter(e=>{const s=e.route??e.route_type,a=e.route_type_name;return s===M.route||a===t})}if(M.status&&"all"!==M.status&&(e=e.filter(e=>y(e)===M.status)),void 0!==M.signalMin&&(e=e.filter(e=>e.rssi>=M.signalMin)),M.timeRange&&M.timeRange>0){const t=Date.now()/1e3-3600*M.timeRange;e=e.filter(e=>e.timestamp>=t)}return e},[q,M.type,M.route,M.status,M.signalMin,M.timeRange]);e.useEffect(()=>{if(A>0&&A!==$.current&&q.length>0){$.current=A;const e=q.find(e=>(e.payload_type_name||v(e.payload_type??e.type)).toLowerCase().includes("advert"));if(e){const t=requestAnimationFrame(()=>D(e.packet_hash)),s=setTimeout(()=>D(null),600);return()=>{cancelAnimationFrame(t),clearTimeout(s)}}}},[A,q]);const O=(e,t)=>{T(s=>({...s,[e]:t}))},W=void 0!==M.type||void 0!==M.route||M.status&&"all"!==M.status||void 0!==M.signalMin||M.timeRange&&M.timeRange>0;return t.jsxs(k,{children:[t.jsx(_,{title:"Packet History",icon:t.jsx(d,{}),controls:t.jsxs(t.Fragment,{children:[a&&t.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[t.jsx(c,{className:"w-1.5 h-1.5 fill-accent-success text-accent-success animate-pulse"}),t.jsx("span",{className:"text-text-muted hidden xs:inline",children:"Live"})]}),t.jsxs("button",{onClick:()=>P(!C),className:x("sm:hidden px-3 py-1.5 rounded-lg text-sm font-medium transition-all","flex items-center gap-1.5 border",W?"bg-accent-primary/20 text-accent-primary border-accent-primary/30":"bg-bg-subtle text-text-muted border-border-subtle"),children:[t.jsx(i,{className:"w-4 h-4"}),W&&t.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-primary"})]}),t.jsxs("button",{onClick:()=>l(!a),className:x("px-3 py-1.5 rounded-lg text-sm font-medium transition-all duration-200","flex items-center gap-1.5 border",a?"bg-accent-success/20 text-accent-success border-accent-success/30":"bg-bg-subtle text-text-muted border-border-subtle hover:bg-bg-elevated"),children:[t.jsx(o,{className:x("w-4 h-4",a&&"animate-spin")}),t.jsx("span",{className:"hidden xs:inline",children:a?"Live":"Paused"})]})]})}),t.jsxs(S,{noPadding:!0,className:x("overflow-hidden transition-all duration-200",C?"max-h-96 opacity-100":"max-h-0 opacity-0 sm:max-h-96 sm:opacity-100"),children:[t.jsx(R,{listHeader:!0,icon:t.jsx(i,{className:"icon-sm"}),title:"Filters",actions:W?t.jsxs("button",{onClick:()=>{T({limit:M.limit,status:"all"})},className:"type-data-xs text-text-muted hover:text-text-primary flex items-center gap-1",children:[t.jsx(m,{className:"w-3 h-3"})," Clear"]}):void 0}),t.jsx("div",{className:"p-3 sm:p-4",children:t.jsxs("div",{className:"grid grid-cols-2 sm:flex sm:flex-wrap gap-3",children:[t.jsxs("div",{className:"flex-1 min-w-[120px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Type"}),t.jsxs("select",{value:M.type??"",onChange:e=>O("type",e.target.value?Number(e.target.value):void 0),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:"",children:"All Types"}),Object.entries(g).map(([e,s])=>t.jsx("option",{value:e,children:s},e))]})]}),t.jsxs("div",{className:"flex-1 min-w-[120px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Route"}),t.jsxs("select",{value:M.route??"",onChange:e=>O("route",e.target.value?Number(e.target.value):void 0),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:"",children:"All Routes"}),Object.entries(j).map(([e,s])=>t.jsx("option",{value:e,children:s},e))]})]}),t.jsxs("div",{className:"flex-1 min-w-[120px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Status"}),t.jsxs("select",{value:M.status??"all",onChange:e=>O("status",e.target.value),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:"all",children:"All Status"}),t.jsx("option",{value:"rx",children:"Received"}),t.jsx("option",{value:"forward",children:"Forwarded"}),t.jsx("option",{value:"dropped",children:"Dropped"}),t.jsx("option",{value:"duplicate",children:"Duplicate"})]})]}),t.jsxs("div",{className:"flex-1 min-w-[100px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Time"}),t.jsxs("select",{value:M.timeRange??0,onChange:e=>O("timeRange",Number(e.target.value)||void 0),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:0,children:"All Time"}),t.jsx("option",{value:1,children:"Last 1h"}),t.jsx("option",{value:6,children:"Last 6h"}),t.jsx("option",{value:24,children:"Last 24h"}),t.jsx("option",{value:168,children:"Last 7d"})]})]}),t.jsxs("div",{className:"flex-1 min-w-[100px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Signal"}),t.jsxs("select",{value:M.signalMin??"",onChange:e=>O("signalMin",e.target.value?Number(e.target.value):void 0),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:"",children:"Any Signal"}),t.jsx("option",{value:-90,children:"Strong (≥-90)"}),t.jsx("option",{value:-100,children:"Good (≥-100)"}),t.jsx("option",{value:-110,children:"Fair (≥-110)"}),t.jsx("option",{value:-120,children:"Weak (≥-120)"})]})]}),t.jsxs("div",{className:"flex-1 min-w-[80px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Limit"}),t.jsxs("select",{value:M.limit??100,onChange:e=>O("limit",Number(e.target.value)),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:50,children:"50"}),t.jsx("option",{value:100,children:"100"}),t.jsx("option",{value:200,children:"200"}),t.jsx("option",{value:500,children:"500"})]})]})]})})]}),t.jsx(L,{packets:B}),t.jsxs(S,{noPadding:!0,children:[t.jsxs("div",{className:"sm:hidden flex items-center gap-1.5 px-3 py-2 border-b border-border-subtle bg-bg-elevated/30",children:[t.jsx("span",{className:"type-micro w-14 flex-shrink-0",children:"Dir"}),t.jsx("span",{className:"type-micro w-7 flex-shrink-0",children:"Time"}),t.jsx("span",{className:"type-micro w-9 flex-shrink-0",children:"Src"}),t.jsx("span",{className:"type-micro flex-1 min-w-0",children:"Type"}),t.jsx("span",{className:"type-micro w-14 flex-shrink-0",children:"Route"}),t.jsx("span",{className:"type-micro w-10 text-right flex-shrink-0",children:"Signal"})]}),t.jsx("div",{className:"hidden sm:block overflow-x-auto",children:t.jsxs("table",{className:"w-full",children:[t.jsx("thead",{children:t.jsxs("tr",{className:"border-b border-border-subtle bg-bg-elevated/30",children:[t.jsx("th",{className:"text-left py-2.5 px-3 type-micro w-16",children:"Dir"}),t.jsx("th",{className:"text-left py-2.5 px-3 type-micro",children:"Time"}),t.jsx("th",{className:"text-left py-2.5 px-3 type-micro",children:"Source"}),t.jsx("th",{className:"text-left py-2.5 px-3 type-micro",children:"Type"}),t.jsx("th",{className:"text-left py-2.5 px-3 type-micro",children:"Route"}),t.jsx("th",{className:"text-right py-2.5 px-3 pr-4 type-micro",children:"Signal"})]})}),t.jsx("tbody",{className:"divide-y divide-border-subtle/30",children:H&&0===q.length?t.jsx("tr",{children:t.jsx("td",{colSpan:6,className:"text-center py-12 text-text-muted",children:"Loading packets..."})}):0===B.length?t.jsx("tr",{children:t.jsx("td",{colSpan:6,className:"text-center py-12 text-text-muted",children:"No packets found"})}):B.map((e,s)=>{const a=(e.payload_type_name||v(e.payload_type??e.type)).toLowerCase().includes("advert");return t.jsx(f,{packet:e,onClick:n,isFlashing:a&&F===e.packet_hash},`${e.packet_hash}_${e.timestamp}_${s}`)})})]})}),t.jsx("div",{className:"sm:hidden divide-y divide-border-subtle/30",children:H&&0===q.length?t.jsx("div",{className:"p-8 text-center text-text-muted",children:"Loading packets..."}):0===B.length?t.jsx("div",{className:"p-8 text-center text-text-muted",children:"No packets found"}):B.map((e,s)=>{const a=(e.payload_type_name||v(e.payload_type??e.type)).toLowerCase().includes("advert");return t.jsx(N,{packet:e,onClick:n,isFlashing:a&&F===e.packet_hash},`${e.packet_hash}_${e.timestamp}_${s}`)})}),t.jsxs("div",{className:"px-3 py-2 border-t border-border-subtle type-data-xs text-text-muted bg-bg-elevated/20 sm:text-left text-center",children:["Showing ",B.length," of ",q.length," packets"]})]}),r&&t.jsx(w,{packet:r,onClose:()=>n(null)})]})}export{P as default}; diff --git a/frontend/dist/assets/Packets-wtXWXIE0.js b/frontend/dist/assets/Packets-wtXWXIE0.js deleted file mode 100644 index 99d8d841..00000000 --- a/frontend/dist/assets/Packets-wtXWXIE0.js +++ /dev/null @@ -1 +0,0 @@ -import{r as e,j as t,V as s,A as a,U as l,W as r,Y as n,y as c,_ as i,$ as o,p as d,X as x}from"./vendor-react-CUlQ5-Td.js";import{c as m}from"./recharts-7RsRrQtf.js";import{u as p,b as u,n as h,c as b,o as g,R as j}from"./index-C1whtcFB.js";import{c as y,g as v,P as f,a as N,b as w}from"./PacketDetailModal-BvhyK15u.js";import{P as k,b as _,a as S,c as R}from"./PageLayout-CViR4hDG.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-MTXp-Y3t.js";import"./SignalIndicator-DOiETQwB.js";import"./HashBadge-Do84dDmK.js";function C({icon:e,label:s,value:a,color:l,percentage:r}){return t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("div",{className:m("p-1.5 rounded-md",l),children:e}),t.jsxs("div",{className:"flex flex-col",children:[t.jsx("span",{className:"text-sm font-semibold text-text-primary",children:a.toLocaleString()}),t.jsxs("span",{className:"text-[10px] text-text-muted leading-tight",children:[s,void 0!==r&&t.jsxs("span",{className:"ml-1 opacity-70",children:["(",r,"%)"]})]})]})]})}const L=e.memo(function({packets:c}){const i=e.useMemo(()=>{let e=0,t=0,s=0;const a=new Set;let l=0,r=0;for(const o of c){switch(y(o)){case"forward":e++;break;case"dropped":t++;break;case"duplicate":s++}o.src_hash&&a.add(o.src_hash),o.rssi&&(l+=o.rssi,r++)}const n=c.length,i=r>0?Math.round(l/r):0;return{total:n,rx:n,fwd:e,dropped:t,duplicate:s,uniqueSources:a.size,avgRssi:i,rxPercent:100,fwdPercent:n>0?Math.round(e/n*100):0,droppedPercent:n>0?Math.round(t/n*100):0}},[c]);return 0===c.length?null:t.jsx("div",{className:"glass-card p-3 pr-4",children:t.jsxs("div",{className:"grid grid-cols-2 gap-3 sm:flex sm:items-center sm:justify-between sm:gap-6",children:[t.jsx(C,{icon:t.jsx(s,{className:"w-3.5 h-3.5 text-accent-primary"}),label:"Received",value:i.rx,color:"bg-accent-primary/10",percentage:i.rxPercent}),t.jsx(C,{icon:t.jsx(a,{className:"w-3.5 h-3.5 text-accent-success"}),label:"Forwarded",value:i.fwd,color:"bg-accent-success/10",percentage:i.fwdPercent}),t.jsx(C,{icon:t.jsx(l,{className:"w-3.5 h-3.5 text-accent-danger"}),label:"Dropped",value:i.dropped,color:"bg-accent-danger/10",percentage:i.droppedPercent}),t.jsx(C,{icon:t.jsx(r,{className:"w-3.5 h-3.5 text-text-muted"}),label:"Duplicates",value:i.duplicate,color:"bg-white/5"}),t.jsxs("div",{className:"hidden sm:flex items-center gap-6 ml-auto",children:[t.jsx(C,{icon:t.jsx(n,{className:"w-3.5 h-3.5 text-accent-secondary"}),label:"Sources",value:i.uniqueSources,color:"bg-accent-secondary/10"}),t.jsxs("div",{className:"flex flex-col items-end pr-1",children:[t.jsxs("span",{className:"text-sm font-mono text-text-secondary",children:[i.avgRssi," dBm"]}),t.jsx("span",{className:"text-[10px] text-text-muted",children:"Avg Signal"})]})]})]})})});function P(){const s=p(),a=u(),l=h(),[r,n]=e.useState(null),[C,P]=e.useState(!1),[M,T]=e.useState({limit:100,status:"all"}),A=b(),[F,D]=e.useState(null),$=e.useRef(0),q=e.useMemo(()=>{const e=M.limit||100;return s.length<=e?s:s.slice(-e)},[s,M.limit]),H=0===s.length,B=e.useMemo(()=>{let e=q;if(void 0!==M.type){const t=g[M.type];e=e.filter(e=>{const s=e.type??e.payload_type,a=e.payload_type_name;return s===M.type||a===t})}if(void 0!==M.route){const t=j[M.route];e=e.filter(e=>{const s=e.route??e.route_type,a=e.route_type_name;return s===M.route||a===t})}if(M.status&&"all"!==M.status&&(e=e.filter(e=>y(e)===M.status)),void 0!==M.signalMin&&(e=e.filter(e=>e.rssi>=M.signalMin)),M.timeRange&&M.timeRange>0){const t=Date.now()/1e3-3600*M.timeRange;e=e.filter(e=>e.timestamp>=t)}return e},[q,M.type,M.route,M.status,M.signalMin,M.timeRange]);e.useEffect(()=>{if(A>0&&A!==$.current&&q.length>0){$.current=A;const e=q.find(e=>(e.payload_type_name||v(e.payload_type??e.type)).toLowerCase().includes("advert"));if(e){const t=requestAnimationFrame(()=>D(e.packet_hash)),s=setTimeout(()=>D(null),600);return()=>{cancelAnimationFrame(t),clearTimeout(s)}}}},[A,q]);const O=(e,t)=>{T(s=>({...s,[e]:t}))},W=void 0!==M.type||void 0!==M.route||M.status&&"all"!==M.status||void 0!==M.signalMin||M.timeRange&&M.timeRange>0;return t.jsxs(k,{children:[t.jsx(_,{title:"Packet History",icon:t.jsx(d,{}),controls:t.jsxs(t.Fragment,{children:[a&&t.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[t.jsx(c,{className:"w-1.5 h-1.5 fill-accent-success text-accent-success animate-pulse"}),t.jsx("span",{className:"text-text-muted hidden xs:inline",children:"Live"})]}),t.jsxs("button",{onClick:()=>P(!C),className:m("sm:hidden px-3 py-1.5 rounded-lg text-sm font-medium transition-all","flex items-center gap-1.5 border",W?"bg-accent-primary/20 text-accent-primary border-accent-primary/30":"bg-bg-subtle text-text-muted border-border-subtle"),children:[t.jsx(i,{className:"w-4 h-4"}),W&&t.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-accent-primary"})]}),t.jsxs("button",{onClick:()=>l(!a),className:m("px-3 py-1.5 rounded-lg text-sm font-medium transition-all duration-200","flex items-center gap-1.5 border",a?"bg-accent-success/20 text-accent-success border-accent-success/30":"bg-bg-subtle text-text-muted border-border-subtle hover:bg-bg-elevated"),children:[t.jsx(o,{className:m("w-4 h-4",a&&"animate-spin")}),t.jsx("span",{className:"hidden xs:inline",children:a?"Live":"Paused"})]})]})}),t.jsxs(S,{noPadding:!0,className:m("overflow-hidden transition-all duration-200",C?"max-h-96 opacity-100":"max-h-0 opacity-0 sm:max-h-96 sm:opacity-100"),children:[t.jsx(R,{listHeader:!0,icon:t.jsx(i,{className:"icon-sm"}),title:"Filters",actions:W?t.jsxs("button",{onClick:()=>{T({limit:M.limit,status:"all"})},className:"type-data-xs text-text-muted hover:text-text-primary flex items-center gap-1",children:[t.jsx(x,{className:"w-3 h-3"})," Clear"]}):void 0}),t.jsx("div",{className:"p-3 sm:p-4",children:t.jsxs("div",{className:"grid grid-cols-2 sm:flex sm:flex-wrap gap-3",children:[t.jsxs("div",{className:"flex-1 min-w-[120px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Type"}),t.jsxs("select",{value:M.type??"",onChange:e=>O("type",e.target.value?Number(e.target.value):void 0),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:"",children:"All Types"}),Object.entries(g).map(([e,s])=>t.jsx("option",{value:e,children:s},e))]})]}),t.jsxs("div",{className:"flex-1 min-w-[120px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Route"}),t.jsxs("select",{value:M.route??"",onChange:e=>O("route",e.target.value?Number(e.target.value):void 0),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:"",children:"All Routes"}),Object.entries(j).map(([e,s])=>t.jsx("option",{value:e,children:s},e))]})]}),t.jsxs("div",{className:"flex-1 min-w-[120px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Status"}),t.jsxs("select",{value:M.status??"all",onChange:e=>O("status",e.target.value),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:"all",children:"All Status"}),t.jsx("option",{value:"rx",children:"Received"}),t.jsx("option",{value:"forward",children:"Forwarded"}),t.jsx("option",{value:"dropped",children:"Dropped"}),t.jsx("option",{value:"duplicate",children:"Duplicate"})]})]}),t.jsxs("div",{className:"flex-1 min-w-[100px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Time"}),t.jsxs("select",{value:M.timeRange??0,onChange:e=>O("timeRange",Number(e.target.value)||void 0),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:0,children:"All Time"}),t.jsx("option",{value:1,children:"Last 1h"}),t.jsx("option",{value:6,children:"Last 6h"}),t.jsx("option",{value:24,children:"Last 24h"}),t.jsx("option",{value:168,children:"Last 7d"})]})]}),t.jsxs("div",{className:"flex-1 min-w-[100px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Signal"}),t.jsxs("select",{value:M.signalMin??"",onChange:e=>O("signalMin",e.target.value?Number(e.target.value):void 0),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:"",children:"Any Signal"}),t.jsx("option",{value:-90,children:"Strong (≥-90)"}),t.jsx("option",{value:-100,children:"Good (≥-100)"}),t.jsx("option",{value:-110,children:"Fair (≥-110)"}),t.jsx("option",{value:-120,children:"Weak (≥-120)"})]})]}),t.jsxs("div",{className:"flex-1 min-w-[80px]",children:[t.jsx("label",{className:"type-micro block mb-1",children:"Limit"}),t.jsxs("select",{value:M.limit??100,onChange:e=>O("limit",Number(e.target.value)),className:"w-full bg-bg-subtle border border-border-subtle rounded-lg px-2.5 py-1.5 text-sm text-text-primary focus:outline-none focus:border-accent-primary/50",children:[t.jsx("option",{value:50,children:"50"}),t.jsx("option",{value:100,children:"100"}),t.jsx("option",{value:200,children:"200"}),t.jsx("option",{value:500,children:"500"})]})]})]})})]}),t.jsx(L,{packets:B}),t.jsxs(S,{noPadding:!0,children:[t.jsxs("div",{className:"sm:hidden flex items-center gap-1.5 px-3 py-2 border-b border-border-subtle bg-bg-elevated/30",children:[t.jsx("span",{className:"type-micro w-14 flex-shrink-0",children:"Dir"}),t.jsx("span",{className:"type-micro w-7 flex-shrink-0",children:"Time"}),t.jsx("span",{className:"type-micro w-9 flex-shrink-0",children:"Src"}),t.jsx("span",{className:"type-micro flex-1 min-w-0",children:"Type"}),t.jsx("span",{className:"type-micro w-14 flex-shrink-0",children:"Route"}),t.jsx("span",{className:"type-micro w-10 text-right flex-shrink-0",children:"Signal"})]}),t.jsx("div",{className:"hidden sm:block overflow-x-auto",children:t.jsxs("table",{className:"w-full",children:[t.jsx("thead",{children:t.jsxs("tr",{className:"border-b border-border-subtle bg-bg-elevated/30",children:[t.jsx("th",{className:"text-left py-2.5 px-3 type-micro w-16",children:"Dir"}),t.jsx("th",{className:"text-left py-2.5 px-3 type-micro",children:"Time"}),t.jsx("th",{className:"text-left py-2.5 px-3 type-micro",children:"Source"}),t.jsx("th",{className:"text-left py-2.5 px-3 type-micro",children:"Type"}),t.jsx("th",{className:"text-left py-2.5 px-3 type-micro",children:"Route"}),t.jsx("th",{className:"text-right py-2.5 px-3 pr-4 type-micro",children:"Signal"})]})}),t.jsx("tbody",{className:"divide-y divide-border-subtle/30",children:H&&0===q.length?t.jsx("tr",{children:t.jsx("td",{colSpan:6,className:"text-center py-12 text-text-muted",children:"Loading packets..."})}):0===B.length?t.jsx("tr",{children:t.jsx("td",{colSpan:6,className:"text-center py-12 text-text-muted",children:"No packets found"})}):B.map((e,s)=>{const a=(e.payload_type_name||v(e.payload_type??e.type)).toLowerCase().includes("advert");return t.jsx(f,{packet:e,onClick:n,isFlashing:a&&F===e.packet_hash},`${e.packet_hash}_${e.timestamp}_${s}`)})})]})}),t.jsx("div",{className:"sm:hidden divide-y divide-border-subtle/30",children:H&&0===q.length?t.jsx("div",{className:"p-8 text-center text-text-muted",children:"Loading packets..."}):0===B.length?t.jsx("div",{className:"p-8 text-center text-text-muted",children:"No packets found"}):B.map((e,s)=>{const a=(e.payload_type_name||v(e.payload_type??e.type)).toLowerCase().includes("advert");return t.jsx(N,{packet:e,onClick:n,isFlashing:a&&F===e.packet_hash},`${e.packet_hash}_${e.timestamp}_${s}`)})}),t.jsxs("div",{className:"px-3 py-2 border-t border-border-subtle type-data-xs text-text-muted bg-bg-elevated/20 sm:text-left text-center",children:["Showing ",B.length," of ",q.length," packets"]})]}),r&&t.jsx(w,{packet:r,onClose:()=>n(null)})]})}export{P as default}; diff --git a/frontend/dist/assets/PageLayout-CViR4hDG.js b/frontend/dist/assets/PageLayout-Kh569_kh.js similarity index 96% rename from frontend/dist/assets/PageLayout-CViR4hDG.js rename to frontend/dist/assets/PageLayout-Kh569_kh.js index 0140a758..dbe8cd12 100644 --- a/frontend/dist/assets/PageLayout-CViR4hDG.js +++ b/frontend/dist/assets/PageLayout-Kh569_kh.js @@ -1 +1 @@ -import{j as e}from"./vendor-react-CUlQ5-Td.js";import{c as s}from"./recharts-7RsRrQtf.js";function a({className:a,style:l}){return e.jsx("div",{className:s("animate-pulse bg-white/[0.06] rounded",a),style:l})}function l(){return e.jsx("div",{className:"p-3 rounded-lg border border-border-subtle bg-bg-subtle",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(a,{className:"w-14 h-6 rounded shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[e.jsx(a,{className:"h-4 w-full"}),e.jsx(a,{className:"h-4 w-3/4"}),e.jsx(a,{className:"h-3 w-32 mt-1"})]})]})})}function c({count:s=8}){return e.jsx("div",{className:"space-y-2",children:Array.from({length:s}).map((s,a)=>e.jsx(l,{},a))})}const r=[45,72,33,58,80,42,65,28,55,75,38,62];function t(){return e.jsxs("div",{className:"absolute inset-0 z-10 bg-bg-surface rounded-xl p-4 flex flex-col gap-3","aria-hidden":"true",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"w-5 h-5"}),e.jsx(a,{className:"h-4 w-24"})]}),e.jsx(a,{className:"h-8 w-20"}),e.jsxs("div",{className:"flex-1 flex flex-col justify-end gap-2",children:[e.jsx(a,{className:"h-3 w-full"}),e.jsx(a,{className:"h-3 w-3/4"})]})]})}function i(){return e.jsxs("div",{className:"absolute inset-0 z-10 bg-bg-surface rounded-xl p-4 flex flex-col gap-3","aria-hidden":"true",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"w-5 h-5"}),e.jsx(a,{className:"h-4 w-24"})]}),e.jsx("div",{className:"flex-1 flex items-end gap-1 pb-4",children:r.slice(0,8).map((s,l)=>e.jsx(a,{className:"flex-1",style:{height:`${s}%`}},l))})]})}function n({rows:s=5}){return e.jsxs("div",{className:"absolute inset-0 z-10 bg-bg-surface rounded-xl flex flex-col","aria-hidden":"true",children:[e.jsx("div",{className:"p-4 border-b border-border-subtle",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"w-5 h-5"}),e.jsx(a,{className:"h-4 w-24"})]})}),e.jsx("div",{className:"flex-1 p-4 flex flex-col gap-3",children:Array.from({length:s}).map((s,l)=>e.jsx(a,{className:"h-6 w-full"},l))})]})}function d({children:a,className:l}){return e.jsx("div",{className:s("section-gap",l),children:a})}function x({title:s,icon:a,controls:l,subtitle:c}){return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("h1",{className:"type-title text-text-primary flex items-center gap-3",children:[a&&e.jsx("span",{className:"w-6 h-6 text-icon-page-title flex-shrink-0",children:a}),s]}),l&&e.jsx("div",{className:"flex items-center gap-2 sm:gap-3",children:l})]}),c&&e.jsx("div",{children:c})]})}const m={sm:"card-sm",md:"card-md",lg:"card-lg",hero:"card-hero",auto:"card-auto"};function o({children:a,size:l,compact:c,noPadding:r,className:d,style:x,onClick:o,isLoaded:h=!0,skeletonType:f="card"}){return e.jsxs("div",{className:s("glass-card h-full flex flex-col relative",!r&&(c?"card-padding-sm":"card-padding"),l&&m[l],d),style:x,onClick:o,children:[a,!h&&(()=>{switch(f){case"chart":return e.jsx(i,{});case"list":return e.jsx(n,{});default:return e.jsx(t,{})}})()]})}function h({icon:a,title:l,badge:c,subtitle:r,actions:t,iconColor:i="text-accent-primary",largeTitle:n=!1,listHeader:d=!1}){return e.jsxs("div",{className:s("flex flex-col gap-1 flex-shrink-0",d?"px-4 py-3 border-b border-border-subtle bg-bg-elevated/20":"mb-3"),children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[a&&e.jsx("span",{className:s("icon-md",i),children:a}),e.jsx("span",{className:n?"type-subheading text-text-primary":"type-micro",children:l}),c&&e.jsx("span",{className:"pill-tag",children:c})]}),t&&e.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:t})]}),r&&e.jsx("p",{className:"type-label text-text-muted ml-7",children:r})]})}export{t as C,c as L,d as P,o as a,x as b,h as c}; +import{j as e}from"./vendor-react-CWPBVwgk.js";import{c as s}from"./recharts-cqZ_RWsW.js";function a({className:a,style:l}){return e.jsx("div",{className:s("animate-pulse bg-white/[0.06] rounded",a),style:l})}function l(){return e.jsx("div",{className:"p-3 rounded-lg border border-border-subtle bg-bg-subtle",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(a,{className:"w-14 h-6 rounded shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[e.jsx(a,{className:"h-4 w-full"}),e.jsx(a,{className:"h-4 w-3/4"}),e.jsx(a,{className:"h-3 w-32 mt-1"})]})]})})}function c({count:s=8}){return e.jsx("div",{className:"space-y-2",children:Array.from({length:s}).map((s,a)=>e.jsx(l,{},a))})}const r=[45,72,33,58,80,42,65,28,55,75,38,62];function t(){return e.jsxs("div",{className:"absolute inset-0 z-10 bg-bg-surface rounded-xl p-4 flex flex-col gap-3","aria-hidden":"true",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"w-5 h-5"}),e.jsx(a,{className:"h-4 w-24"})]}),e.jsx(a,{className:"h-8 w-20"}),e.jsxs("div",{className:"flex-1 flex flex-col justify-end gap-2",children:[e.jsx(a,{className:"h-3 w-full"}),e.jsx(a,{className:"h-3 w-3/4"})]})]})}function i(){return e.jsxs("div",{className:"absolute inset-0 z-10 bg-bg-surface rounded-xl p-4 flex flex-col gap-3","aria-hidden":"true",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"w-5 h-5"}),e.jsx(a,{className:"h-4 w-24"})]}),e.jsx("div",{className:"flex-1 flex items-end gap-1 pb-4",children:r.slice(0,8).map((s,l)=>e.jsx(a,{className:"flex-1",style:{height:`${s}%`}},l))})]})}function n({rows:s=5}){return e.jsxs("div",{className:"absolute inset-0 z-10 bg-bg-surface rounded-xl flex flex-col","aria-hidden":"true",children:[e.jsx("div",{className:"p-4 border-b border-border-subtle",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{className:"w-5 h-5"}),e.jsx(a,{className:"h-4 w-24"})]})}),e.jsx("div",{className:"flex-1 p-4 flex flex-col gap-3",children:Array.from({length:s}).map((s,l)=>e.jsx(a,{className:"h-6 w-full"},l))})]})}function d({children:a,className:l}){return e.jsx("div",{className:s("section-gap",l),children:a})}function x({title:s,icon:a,controls:l,subtitle:c}){return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("h1",{className:"type-title text-text-primary flex items-center gap-3",children:[a&&e.jsx("span",{className:"w-6 h-6 text-icon-page-title flex-shrink-0",children:a}),s]}),l&&e.jsx("div",{className:"flex items-center gap-2 sm:gap-3",children:l})]}),c&&e.jsx("div",{children:c})]})}const m={sm:"card-sm",md:"card-md",lg:"card-lg",hero:"card-hero",auto:"card-auto"};function o({children:a,size:l,compact:c,noPadding:r,className:d,style:x,onClick:o,isLoaded:h=!0,skeletonType:f="card"}){return e.jsxs("div",{className:s("glass-card h-full flex flex-col relative",!r&&(c?"card-padding-sm":"card-padding"),l&&m[l],d),style:x,onClick:o,children:[a,!h&&(()=>{switch(f){case"chart":return e.jsx(i,{});case"list":return e.jsx(n,{});default:return e.jsx(t,{})}})()]})}function h({icon:a,title:l,badge:c,subtitle:r,actions:t,iconColor:i="text-accent-primary",largeTitle:n=!1,listHeader:d=!1}){return e.jsxs("div",{className:s("flex flex-col gap-1 flex-shrink-0",d?"px-4 py-3 border-b border-border-subtle bg-bg-elevated/20":"mb-3"),children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[a&&e.jsx("span",{className:s("icon-md",i),children:a}),e.jsx("span",{className:n?"type-subheading text-text-primary":"type-micro",children:l}),c&&e.jsx("span",{className:"pill-tag",children:c})]}),t&&e.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:t})]}),r&&e.jsx("p",{className:"type-label text-text-muted ml-7",children:r})]})}export{t as C,c as L,d as P,o as a,x as b,h as c}; diff --git a/frontend/dist/assets/PathMapMapLibre-BW5GVbe3.js b/frontend/dist/assets/PathMapMapLibre-Cm4zFWby.js similarity index 58% rename from frontend/dist/assets/PathMapMapLibre-BW5GVbe3.js rename to frontend/dist/assets/PathMapMapLibre-Cm4zFWby.js index 0292acd5..cef2acb5 100644 --- a/frontend/dist/assets/PathMapMapLibre-BW5GVbe3.js +++ b/frontend/dist/assets/PathMapMapLibre-Cm4zFWby.js @@ -1 +1 @@ -import{r as e,j as o,aZ as t,a_ as r,a$ as n,b0 as i,b1 as a}from"./vendor-react-CUlQ5-Td.js";import"./maplibre-gl-WBl_4I3M.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-MTXp-Y3t.js";const l={nodeColor:"#4338CA",localColor:"#4F46E5",hubColor:"#6366F1",edgeColor:"#3B3F4A",ambiguousColor:"#F9D26F",highlightColor:"#B49DFF",sourceColor:"#39D98A",destinationColor:"#B49DFF"};function s(){if("undefined"==typeof document)return l;const e=document.documentElement,o=getComputedStyle(e);return{nodeColor:o.getPropertyValue("--map-node-stroke").trim()||l.nodeColor,localColor:o.getPropertyValue("--map-local-color").trim()||l.localColor,hubColor:o.getPropertyValue("--map-hub-color").trim()||l.hubColor,edgeColor:o.getPropertyValue("--map-edge-rest").trim()||l.edgeColor,ambiguousColor:o.getPropertyValue("--accent-secondary").trim()||l.ambiguousColor,highlightColor:o.getPropertyValue("--accent-primary").trim()||l.highlightColor,sourceColor:o.getPropertyValue("--accent-success").trim()||l.sourceColor,destinationColor:o.getPropertyValue("--accent-primary").trim()||l.destinationColor}}function d(e,o,t,r=!1,n=!1,i=!1){const a=s(),l=r?`box-shadow: 0 0 0 3px ${a.highlightColor}40, 0 0 8px ${a.highlightColor}60;`:"";let d;d=n?a.sourceColor:i?a.destinationColor:e?a.localColor:o?a.hubColor:t?"transparent":a.ambiguousColor;const c=e||o||!t||n||i;return`
`}function c({resolvedPath:l,localNode:c,hubNodes:u=[],hoveredHopIndex:p,onHoverHop:m}){const h=e.useRef(null),g=e.useMemo(()=>new Set(u),[u]),[x,C]=e.useState(null),[b,y]=e.useState(0);e.useEffect(()=>{var e;const o=null==(e=h.current)?void 0:e.getMap();if(!o)return;const t=o.getCanvas();if(!t)return;const r=e=>{e.preventDefault()},n=()=>{y(e=>e+1)};return t.addEventListener("webglcontextlost",r),t.addEventListener("webglcontextrestored",n),()=>{t.removeEventListener("webglcontextlost",r),t.removeEventListener("webglcontextrestored",n)}},[b]);const{positions:f,markers:v,pathLineGeoJSON:j}=e.useMemo(()=>{const e=[],o=[],t=[];l.hops.forEach((r,n)=>{const i=r.candidates.filter(e=>{return o=e.latitude,t=e.longitude,0!==o||0!==t;var o,t});if(0===i.length)return;const a=[...i].sort((e,o)=>o.probability-e.probability)[0];t.push([a.longitude,a.latitude]);const l=!0===r.isSource,s=!0===r.isDestination;i.forEach((t,a)=>{const d=[t.latitude,t.longitude];e.push(d);const c=0===a;o.push({position:d,prefix:r.prefix,confidence:r.confidence,candidateCount:i.length,hopIndex:n,candidate:t,isHub:g.has(t.hash),isPrimary:c,isSource:l,isDestination:s})})});const r={type:"FeatureCollection",features:t.length>=2?[{type:"Feature",properties:{},geometry:{type:"LineString",coordinates:t}}]:[]};return{positions:e,markers:o,pathLineGeoJSON:r}},[l,g]),{initialBounds:k,center:N,zoom:S}=e.useMemo(()=>{if(0===f.length)return c?{initialBounds:null,center:[c.longitude,c.latitude],zoom:10}:{initialBounds:null,center:[0,0],zoom:2};let e=1/0,o=-1/0,t=1/0,r=-1/0;for(const[a,l]of f)ao&&(o=a),lr&&(r=l);const n=(e+o)/2,i=(t+r)/2;if(f.length>=2){const a=.15*(o-e)||.01,l=.15*(r-t)||.01;return{initialBounds:[[t-l,e-a],[r+l,o+a]],center:[i,n],zoom:10}}return{initialBounds:null,center:[i,n],zoom:12}},[f,c]),P=e.useCallback(e=>{C({longitude:e.position[1],latitude:e.position[0],marker:e})},[]);if(0===f.length)return o.jsx("div",{className:"h-[200px] flex items-center justify-center text-text-muted text-sm bg-bg-elevated",children:"No mappable path data"});const F=k?{bounds:k,fitBoundsOptions:{padding:30,maxZoom:16}}:{longitude:N[0],latitude:N[1],zoom:S};return o.jsxs(t,{ref:h,initialViewState:F,style:{height:"200px",width:"100%"},mapStyle:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",attributionControl:!1,children:[j.features.length>0&&o.jsx(r,{id:"path-line-source",type:"geojson",data:j,children:o.jsx(n,{id:"path-line",type:"line",paint:{"line-color":s().edgeColor,"line-width":2,"line-opacity":.7},layout:{"line-cap":"round","line-join":"round"}})}),v.map(e=>{const t=p===e.hopIndex;return o.jsx(i,{longitude:e.position[1],latitude:e.position[0],anchor:"center",onClick:()=>P(e),children:o.jsx("div",{style:{cursor:"pointer",opacity:e.isPrimary?1:.5},onMouseEnter:()=>null==m?void 0:m(e.hopIndex),onMouseLeave:()=>null==m?void 0:m(null),dangerouslySetInnerHTML:{__html:d(e.candidate.isLocal||!1,e.isHub,e.isPrimary,t,e.isSource,e.isDestination)}})},`${e.hopIndex}-${e.candidate.hash}`)}),x&&o.jsx(a,{longitude:x.longitude,latitude:x.latitude,anchor:"bottom",offset:[0,-12],closeOnClick:!1,onClose:()=>C(null),className:"maplibre-popup",children:o.jsxs("div",{className:"text-xs",children:[o.jsxs("div",{className:"flex items-center gap-1.5",children:[o.jsx("span",{className:"font-semibold",children:x.marker.candidate.name}),(()=>{const e=s();return o.jsxs(o.Fragment,{children:[x.marker.isSource&&o.jsx("span",{className:"px-1 py-0.5 text-[8px] font-bold rounded",style:{backgroundColor:e.sourceColor,color:"#000"},children:"SRC"}),x.marker.isDestination&&o.jsx("span",{className:"px-1 py-0.5 text-[8px] font-bold rounded",style:{backgroundColor:e.destinationColor,color:"#000"},children:"DST"}),x.marker.isHub&&o.jsx("span",{className:"px-1 py-0.5 text-[8px] font-bold rounded",style:{backgroundColor:e.hubColor,color:"#000"},children:"HUB"}),x.marker.candidate.isLocal&&o.jsx("span",{className:"px-1 py-0.5 text-[8px] font-bold rounded",style:{backgroundColor:e.localColor,color:"#fff"},children:"LOCAL"})]})})()]}),o.jsxs("div",{className:"text-text-muted font-mono text-[10px]",children:[x.marker.prefix," • ",x.marker.candidate.hash.slice(0,10),"..."]}),!x.marker.isPrimary&&x.marker.candidateCount>1&&o.jsxs("div",{style:{color:s().ambiguousColor},children:["Alternative (",(100*x.marker.candidate.probability).toFixed(0),"%)"]}),x.marker.isPrimary&&x.marker.candidateCount>1&&o.jsxs("div",{className:"text-text-muted",children:[x.marker.candidateCount," candidates"]})]})})]},b)}export{c as default}; +import{r as e,j as o,b0 as t,b1 as r,b2 as n,b3 as i,b4 as l}from"./vendor-react-CWPBVwgk.js";import"./maplibre-gl-Bk5DsYkB.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";const s={nodeColor:"#4338CA",localColor:"#4F46E5",hubColor:"#6366F1",edgeColor:"#3B3F4A",ambiguousColor:"#F9D26F",highlightColor:"#B49DFF",sourceColor:"#39D98A",destinationColor:"#B49DFF"};function a(){if("undefined"==typeof document)return s;const e=document.documentElement,o=getComputedStyle(e);return{nodeColor:o.getPropertyValue("--map-node-stroke").trim()||s.nodeColor,localColor:o.getPropertyValue("--map-local-color").trim()||s.localColor,hubColor:o.getPropertyValue("--map-hub-color").trim()||s.hubColor,edgeColor:o.getPropertyValue("--map-edge-rest").trim()||s.edgeColor,ambiguousColor:o.getPropertyValue("--accent-secondary").trim()||s.ambiguousColor,highlightColor:o.getPropertyValue("--accent-primary").trim()||s.highlightColor,sourceColor:o.getPropertyValue("--accent-success").trim()||s.sourceColor,destinationColor:o.getPropertyValue("--accent-primary").trim()||s.destinationColor}}function d(e,o,t,r=!1,n=!1,i=!1){const l=a(),s=r?`box-shadow: 0 0 0 3px ${l.highlightColor}40, 0 0 8px ${l.highlightColor}60;`:"";let d;d=n?l.sourceColor:i?l.destinationColor:e?l.localColor:o?l.hubColor:t?"transparent":l.ambiguousColor;const c=e||o||!t||n||i;return`
`}function c({resolvedPath:s,localNode:c,hubNodes:u=[],hoveredHopIndex:p,onHoverHop:m}){const h=e.useRef(null),g=e.useMemo(()=>new Set(u),[u]),[x,b]=e.useState(null),[C,y]=e.useState(0);e.useEffect(()=>{var e;const o=null==(e=h.current)?void 0:e.getMap();if(!o)return;const t=o.getCanvas();if(!t)return;const r=e=>{e.preventDefault()},n=()=>{y(e=>e+1)};return t.addEventListener("webglcontextlost",r),t.addEventListener("webglcontextrestored",n),()=>{t.removeEventListener("webglcontextlost",r),t.removeEventListener("webglcontextrestored",n)}},[C]);const{positions:f,markers:v,pathLineGeoJSON:j}=e.useMemo(()=>{const e=[],o=[],t=[];s.hops.forEach((r,n)=>{const i=r.candidates.filter(e=>{return o=e.latitude,t=e.longitude,0!==o||0!==t;var o,t});if(0===i.length)return;const l=[...i].sort((e,o)=>o.probability-e.probability)[0];t.push([l.longitude,l.latitude]);const s=!0===r.isSource,a=!0===r.isDestination;i.forEach((t,l)=>{const d=[t.latitude,t.longitude];e.push(d);const c=0===l;o.push({position:d,prefix:r.prefix,confidence:r.confidence,candidateCount:i.length,hopIndex:n,candidate:t,isHub:g.has(t.hash),isPrimary:c,isSource:s,isDestination:a})})});const r={type:"FeatureCollection",features:t.length>=2?[{type:"Feature",properties:{},geometry:{type:"LineString",coordinates:t}}]:[]};return{positions:e,markers:o,pathLineGeoJSON:r}},[s,g]),{initialBounds:k,center:N,zoom:S}=e.useMemo(()=>{if(0===f.length)return c?{initialBounds:null,center:[c.longitude,c.latitude],zoom:10}:{initialBounds:null,center:[0,0],zoom:2};let e=1/0,o=-1/0,t=1/0,r=-1/0;for(const[l,s]of f)lo&&(o=l),sr&&(r=s);const n=(e+o)/2,i=(t+r)/2;if(f.length>=2){const l=.15*(o-e)||.01,s=.15*(r-t)||.01;return{initialBounds:[[t-s,e-l],[r+s,o+l]],center:[i,n],zoom:10}}return{initialBounds:null,center:[i,n],zoom:12}},[f,c]),P=e.useCallback(e=>{b({longitude:e.position[1],latitude:e.position[0],marker:e})},[]);if(0===f.length)return o.jsx("div",{className:"h-[200px] flex items-center justify-center text-text-muted text-sm bg-bg-elevated",children:"No mappable path data"});const F=k?{bounds:k,fitBoundsOptions:{padding:30,maxZoom:16}}:{longitude:N[0],latitude:N[1],zoom:S};return o.jsxs(t,{ref:h,initialViewState:F,style:{height:"200px",width:"100%"},mapStyle:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",attributionControl:!1,children:[j.features.length>0&&o.jsx(r,{id:"path-line-source",type:"geojson",data:j,children:o.jsx(n,{id:"path-line",type:"line",paint:{"line-color":a().edgeColor,"line-width":2,"line-opacity":.7},layout:{"line-cap":"round","line-join":"round"}})}),v.map(e=>{const t=p===e.hopIndex;return o.jsx(i,{longitude:e.position[1],latitude:e.position[0],anchor:"center",onClick:()=>P(e),children:o.jsx("div",{style:{cursor:"pointer",opacity:e.isPrimary?1:.5},onMouseEnter:()=>null==m?void 0:m(e.hopIndex),onMouseLeave:()=>null==m?void 0:m(null),dangerouslySetInnerHTML:{__html:d(e.candidate.isLocal||!1,e.isHub,e.isPrimary,t,e.isSource,e.isDestination)}})},`${e.hopIndex}-${e.candidate.hash}`)}),x&&o.jsx(l,{longitude:x.longitude,latitude:x.latitude,anchor:"bottom",offset:[0,-12],closeOnClick:!1,onClose:()=>b(null),className:"maplibre-popup",children:o.jsxs("div",{className:"text-xs",children:[o.jsxs("div",{className:"flex items-center gap-1.5",children:[o.jsx("span",{className:"font-semibold",children:x.marker.candidate.name}),(()=>{const e=a();return o.jsxs(o.Fragment,{children:[x.marker.isSource&&o.jsx("span",{className:"px-1 py-0.5 text-[8px] font-bold rounded",style:{backgroundColor:e.sourceColor,color:"#000"},children:"SRC"}),x.marker.isDestination&&o.jsx("span",{className:"px-1 py-0.5 text-[8px] font-bold rounded",style:{backgroundColor:e.destinationColor,color:"#000"},children:"DST"}),x.marker.isHub&&o.jsx("span",{className:"px-1 py-0.5 text-[8px] font-bold rounded",style:{backgroundColor:e.hubColor,color:"#000"},children:"HUB"}),x.marker.candidate.isLocal&&o.jsx("span",{className:"px-1 py-0.5 text-[8px] font-bold rounded",style:{backgroundColor:e.localColor,color:"#fff"},children:"LOCAL"})]})})()]}),o.jsxs("div",{className:"text-text-muted font-mono text-[10px]",children:[x.marker.prefix," • ",x.marker.candidate.hash.slice(0,10),"..."]}),!x.marker.isPrimary&&x.marker.candidateCount>1&&o.jsxs("div",{style:{color:a().ambiguousColor},children:["Alternative (",(100*x.marker.candidate.probability).toFixed(0),"%)"]}),x.marker.isPrimary&&x.marker.candidateCount>1&&o.jsxs("div",{className:"text-text-muted",children:[x.marker.candidateCount," candidates"]})]})})]},C)}export{c as default}; diff --git a/frontend/dist/assets/SignalIndicator-DOiETQwB.js b/frontend/dist/assets/SignalIndicator-QKnbwhAo.js similarity index 71% rename from frontend/dist/assets/SignalIndicator-DOiETQwB.js rename to frontend/dist/assets/SignalIndicator-QKnbwhAo.js index 853068ec..7e23f1b1 100644 --- a/frontend/dist/assets/SignalIndicator-DOiETQwB.js +++ b/frontend/dist/assets/SignalIndicator-QKnbwhAo.js @@ -1 +1 @@ -import{j as e,ao as s,ap as t,aq as a,ar as r,as as n,r as c}from"./vendor-react-CUlQ5-Td.js";import{c as i}from"./recharts-7RsRrQtf.js";function o(e){return e>=-90?"excellent":e>=-100?"good":e>=-110?"fair":e>=-120?"weak":"poor"}function l(e,s){if(!s)return"bg-white/10";switch(e){case"excellent":return"bg-signal-excellent";case"good":return"bg-signal-good";case"fair":return"bg-signal-fair";case"weak":return"bg-signal-poor";case"poor":return"bg-signal-critical";default:return"bg-white/20"}}function x({rssi:c,className:l="w-4 h-4"}){const x=o(c),d=function(e){switch(e){case"excellent":return"text-signal-excellent";case"good":return"text-signal-good";case"fair":return"text-signal-fair";case"weak":return"text-signal-poor";case"poor":return"text-signal-critical";default:return"text-text-muted"}}(x),m=i(d,l);switch(x){case"excellent":return e.jsx(n,{className:m});case"good":return e.jsx(r,{className:m});case"fair":return e.jsx(a,{className:m});case"weak":return e.jsx(t,{className:m});default:return e.jsx(s,{className:m})}}const d=c.memo(function({rssi:s,snr:t,compact:a=!1,showValues:r=!0}){const n=o(s),c={excellent:4,good:3,fair:2,weak:1,poor:0}[n];return a?e.jsxs("div",{className:"flex items-center justify-end gap-1.5",children:[r&&e.jsx("span",{className:"text-[10px] font-mono text-text-secondary",children:s}),e.jsx("div",{className:"flex items-end gap-[2px] h-3",children:Array.from({length:4}).map((s,t)=>e.jsx("div",{className:i("w-[3px] rounded-[1px] transition-colors",l(n,te.jsx("div",{className:i("w-[3px] rounded-[1px] transition-colors",l(n,t=-90?"excellent":e>=-100?"good":e>=-110?"fair":e>=-120?"weak":"poor"}function o(e,s){if(!s)return"bg-white/10";switch(e){case"excellent":return"bg-signal-excellent";case"good":return"bg-signal-good";case"fair":return"bg-signal-fair";case"weak":return"bg-signal-poor";case"poor":return"bg-signal-critical";default:return"bg-white/20"}}function x({rssi:c,className:o="w-4 h-4"}){const x=l(c),d=function(e){switch(e){case"excellent":return"text-signal-excellent";case"good":return"text-signal-good";case"fair":return"text-signal-fair";case"weak":return"text-signal-poor";case"poor":return"text-signal-critical";default:return"text-text-muted"}}(x),m=i(d,o);switch(x){case"excellent":return e.jsx(n,{className:m});case"good":return e.jsx(r,{className:m});case"fair":return e.jsx(a,{className:m});case"weak":return e.jsx(t,{className:m});default:return e.jsx(s,{className:m})}}const d=c.memo(function({rssi:s,snr:t,compact:a=!1,showValues:r=!0}){const n=l(s),c={excellent:4,good:3,fair:2,weak:1,poor:0}[n];return a?e.jsxs("div",{className:"flex items-center justify-end gap-1.5",children:[r&&e.jsx("span",{className:"text-[10px] font-mono text-text-secondary",children:s}),e.jsx("div",{className:"flex items-end gap-[2px] h-3",children:Array.from({length:4}).map((s,t)=>e.jsx("div",{className:i("w-[3px] rounded-[1px] transition-colors",o(n,te.jsx("div",{className:i("w-[3px] rounded-[1px] transition-colors",o(n,t((e,t,s)=>t in e?n(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s);import{j as l,r as a,at as i,H as r,au as o,av as c,aw as u,ax as d,ay as m,az as h,aA as f,aB as p,o as x,aC as g,aD as b,aE as v,aF as y,aG as w,aH as j,a4 as k,J as N,h as M,aa as T,aI as S,aJ as C,a8 as _,p as P,C as A,T as R,aK as D,ak as E}from"./vendor-react-CUlQ5-Td.js";import{M as $,N as F,O as L,o as z,Q as W,S as H,z as B,J as O,d as G,f as V,e as I,u as Y,j as q,T as U,U as X,V as K,g as J,X as Z}from"./index-C1whtcFB.js";import{T as Q}from"./TimeRangeSelector-Pa-lVKQc.js";import{u as ee}from"./usePolling-BvmU-1bN.js";import{a as te,b as ne,u as se,c as le,d as ae,e as ie,f as re,s as oe,p as ce}from"./useThemeColors-8RSyMp_o.js";import{c as ue,R as de,d as me,L as he,C as fe,X as pe,Y as xe,T as ge,a as be}from"./recharts-7RsRrQtf.js";import{a as ve,c as ye,P as we,b as je}from"./PageLayout-CViR4hDG.js";import{C as ke}from"./CollisionExplorerModal-BU96fXkT.js";import{R as Ne,C as Me}from"./Grid-HJLNnEZz.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-MTXp-Y3t.js";import"./leaflet-ChRwnWLk.js";function Te({children:e,centered:t,className:n}){return l.jsx("div",{className:ue("flex-1 min-h-0",t&&"flex items-center justify-center",n),children:e})}const Se=new class{constructor(){s(this,"caches",new Map),s(this,"lastRadioConfigHash","")}getBucketedStats(e,t,n,s){const l=this.extractRadioConfig(s),a=this.hashRadioConfig(l);a!==this.lastRadioConfigHash&&(this.caches.clear(),this.lastRadioConfigHash=a);const i=60*e/t,r=Math.floor(Date.now()/1e3),o=Math.floor(r/i)*i,c=o-60*e;let u=this.caches.get(e);return u&&u.bucketCount===t&&u.radioConfigHash===a&&Math.abs(u.endTime-o){const e=new Array(t);for(let n=0;na)continue;if(!s&&t<=e.lastProcessedTimestamp)continue;const c=Math.floor((t-l)/i);if(c<0||c>=r)continue;const u=$(o),d=F(u,{spreadingFactor:n.sf,bandwidthHz:n.bw,codingRate:n.cr,preambleLength:n.preamble}),m=o.packet_origin;"tx_local"===m?(e.transmitted[c].count++,e.transmitted[c].airtime_ms+=d):"tx_forward"===m||o.transmitted?(e.forwarded[c].count++,e.forwarded[c].airtime_ms+=d):o.drop_reason&&(e.dropped[c].count++,e.dropped[c].airtime_ms+=d),"tx_local"!==m&&(e.received[c].count++,e.received[c].airtime_ms+=d,e.received[c].snr_sum+=o.snr||0,e.received[c].rssi_sum+=o.rssi||0,e.received[c].signal_count++),t>e.lastProcessedTimestamp&&(e.lastProcessedTimestamp=t)}}shiftTimeWindow(e,t,n){const{bucketDuration:s,bucketCount:l}=e,a=Math.round((n-e.endTime)/s);if(0!==a){if(a>0&&a{const l=new Array(s);for(let a=0;a0?s.snr_sum/s.signal_count:0,avg_rssi:s.signal_count>0?s.rssi_sum/s.signal_count:0}}return l};return{time_range_minutes:e.minutes,bucket_count:e.bucketCount,bucket_duration_seconds:e.bucketDuration,start_time:e.startTime,end_time:e.endTime,received:l(e.received),transmitted:l(e.transmitted),forwarded:l(e.forwarded),dropped:l(e.dropped)}}extractRadioConfig(e){var t;const n=null==(t=null==e?void 0:e.config)?void 0:t.radio;return{sf:(null==n?void 0:n.spreading_factor)??10,bw:(null==n?void 0:n.bandwidth)??25e4,cr:(null==n?void 0:n.coding_rate)??5,preamble:(null==n?void 0:n.preamble_length)??8}}hashRadioConfig(e){return`${e.sf}-${e.bw}-${e.cr}-${e.preamble}`}},Ce=3e5;function _e(e,t,n,s=!0,l=60){const a=[...e].sort((e,t)=>e.start-t.start),i=[...t].sort((e,t)=>e.start-t.start),r=new Map(e.map(e=>[e.start,e])),o=new Map(t.map(e=>[e.start,e])),c=Array.from(new Set([...r.keys(),...o.keys()])).sort((e,t)=>e-t);if(0===c.length)return[];const u=new Float64Array(a.length+1),d=new Float64Array(i.length+1),m=new Float64Array(a.length),h=new Float64Array(i.length);for(let x=0;x{let n=0,s=e.length;for(;n>>1;e[l]{const t=e-300,n=f(m,t),s=f(m,e+1),l=u[s]-u[n],a=f(h,t),i=f(h,e+1),r=d[i]-d[a];return{timestamp:e,rxUtilW:l/Ce*100,txUtilW:r/Ce*100}});return s&&p.length>1?function(e,t=60){if(0===e.length)return[];const n=1-Math.pow(.5,1/t),s=Math.min(e.length,Math.max(10,Math.floor(t/3)));let l=0,a=0;for(let i=0;i(l=n*e.rxUtilW+(1-n)*l,a=n*e.txUtilW+(1-n)*a,{...e,rxRolling:l,txRolling:a}))}(p,l):p}const Pe="u-off",Ae="u-label",Re="width",De="height",Ee="top",$e="bottom",Fe="left",Le="right",ze="#000",We=ze+"0",He="mousemove",Be="mousedown",Oe="mouseup",Ge="mouseenter",Ve="mouseleave",Ie="dblclick",Ye="change",qe="dppxchange",Ue="--",Xe="undefined"!=typeof window,Ke=Xe?document:null,Je=Xe?window:null,Ze=Xe?navigator:null;let Qe,et;function tt(e,t){if(null!=t){let n=e.classList;!n.contains(t)&&n.add(t)}}function nt(e,t){let n=e.classList;n.contains(t)&&n.remove(t)}function st(e,t,n){e.style[t]=n+"px"}function lt(e,t,n,s){let l=Ke.createElement(e);return null!=t&&tt(l,t),null!=n&&n.insertBefore(l,s),l}function at(e,t){return lt("div",e,t)}const it=new WeakMap;function rt(e,t,n,s,l){let a="translate("+t+"px,"+n+"px)";a!=it.get(e)&&(e.style.transform=a,it.set(e,a),t<0||n<0||t>s||n>l?tt(e,Pe):nt(e,Pe))}const ot=new WeakMap;function ct(e,t,n){let s=t+n;s!=ot.get(e)&&(ot.set(e,s),e.style.background=t,e.style.borderColor=n)}const ut=new WeakMap;function dt(e,t,n,s){let l=t+""+n;l!=ut.get(e)&&(ut.set(e,l),e.style.height=n+"px",e.style.width=t+"px",e.style.marginLeft=s?-t/2+"px":0,e.style.marginTop=s?-n/2+"px":0)}const mt={passive:!0},ht={...mt,capture:!0};function ft(e,t,n,s){t.addEventListener(e,n,s?ht:mt)}function pt(e,t,n,s){t.removeEventListener(e,n,mt)}function xt(e,t,n,s){let l;n=n||0;let a=(s=s||t.length-1)<=2147483647;for(;s-n>1;)l=a?n+s>>1:$t((n+s)/2),t[l]{let l=-1,a=-1;for(let i=n;i<=s;i++)if(e(t[i])){l=i;break}for(let i=s;i>=n;i--)if(e(t[i])){a=i;break}return[l,a]}}Xe&&function e(){let t=devicePixelRatio;Qe!=t&&(Qe=t,et&&pt(Ye,et,e),et=matchMedia(`(min-resolution: ${Qe-.001}dppx) and (max-resolution: ${Qe+.001}dppx)`),ft(Ye,et,e),Je.dispatchEvent(new CustomEvent(qe)))}();const bt=e=>null!=e,vt=e=>null!=e&&e>0,yt=gt(bt),wt=gt(vt);function jt(e,t,n,s){let l=Bt(e),a=Bt(t);e==t&&(-1==l?(e*=n,t/=n):(e/=n,t*=n));let i=10==n?Ot:Gt,r=1==a?Lt:$t,o=(1==l?$t:Lt)(i(Et(e))),c=r(i(Et(t))),u=Ht(n,o),d=Ht(n,c);return 10==n&&(o<0&&(u=rn(u,-o)),c<0&&(d=rn(d,-c))),s||2==n?(e=u*l,t=d*a):(e=an(e,u),t=ln(t,d)),[e,t]}function kt(e,t,n,s){let l=jt(e,t,n,s);return 0==e&&(l[0]=0),0==t&&(l[1]=0),l}const Nt={mode:3,pad:.1},Mt={pad:0,soft:null,mode:0},Tt={min:Mt,max:Mt};function St(e,t,n,s){return gn(n)?_t(e,t,n):(Mt.pad=n,Mt.soft=s?0:null,Mt.mode=s?3:0,_t(e,t,Tt))}function Ct(e,t){return null==e?t:e}function _t(e,t,n){let s=n.min,l=n.max,a=Ct(s.pad,0),i=Ct(l.pad,0),r=Ct(s.hard,-It),o=Ct(l.hard,It),c=Ct(s.soft,It),u=Ct(l.soft,-It),d=Ct(s.mode,0),m=Ct(l.mode,0),h=t-e,f=Ot(h),p=Wt(Et(e),Et(t)),x=Ot(p),g=Et(x-f);(h<1e-24||g>10)&&(h=0,0!=e&&0!=t||(h=1e-24,2==d&&c!=It&&(a=0),2==m&&u!=-It&&(i=0)));let b=h||p||1e3,v=Ot(b),y=Ht(10,$t(v)),w=rn(an(e-b*(0==h?0==e?.1:1:a),y/10),24),j=e>=c&&(1==d||3==d&&w<=c||2==d&&w>=c)?c:It,k=Wt(r,w=j?j:zt(j,w)),N=rn(ln(t+b*(0==h?0==t?.1:1:i),y/10),24),M=t<=u&&(1==m||3==m&&N>=u||2==m&&N<=u)?u:-It,T=zt(o,N>M&&t<=M?M:Wt(M,N));return k==T&&0==k&&(T=100),[k,T]}const Pt=new Intl.NumberFormat(Xe?Ze.language:"en-US"),At=e=>Pt.format(e),Rt=Math,Dt=Rt.PI,Et=Rt.abs,$t=Rt.floor,Ft=Rt.round,Lt=Rt.ceil,zt=Rt.min,Wt=Rt.max,Ht=Rt.pow,Bt=Rt.sign,Ot=Rt.log10,Gt=Rt.log2,Vt=(e,t=1)=>Rt.asinh(e/t),It=1/0;function Yt(e){return 1+(0|Ot((e^e>>31)-(e>>31)))}function qt(e,t,n){return zt(Wt(e,t),n)}function Ut(e){return"function"==typeof e}function Xt(e){return Ut(e)?e:()=>e}const Kt=e=>e,Jt=(e,t)=>t,Zt=e=>null,Qt=e=>!0,en=(e,t)=>e==t,tn=/\.\d*?(?=9{6,}|0{6,})/gm,nn=e=>{if(pn(e)||on.has(e))return e;const t=`${e}`,n=t.match(tn);if(null==n)return e;let s=n[0].length-1;if(-1!=t.indexOf("e-")){let[e,n]=t.split("e");return+`${nn(e)}e${n}`}return rn(e,s)};function sn(e,t){return nn(rn(nn(e/t))*t)}function ln(e,t){return nn(Lt(nn(e/t))*t)}function an(e,t){return nn($t(nn(e/t))*t)}function rn(e,t=0){if(pn(e))return e;let n=10**t,s=e*n*(1+Number.EPSILON);return Ft(s)/n}const on=new Map;function cn(e){return((""+e).split(".")[1]||"").length}function un(e,t,n,s){let l=[],a=s.map(cn);for(let i=t;i=0?0:t)+(i>=a[r]?0:a[r]),u=10==e?o:rn(o,c);l.push(u),on.set(u,c)}}return l}const dn={},mn=[],hn=[null,null],fn=Array.isArray,pn=Number.isInteger;function xn(e){return"string"==typeof e}function gn(e){let t=!1;if(null!=e){let n=e.constructor;t=null==n||n==Object}return t}function bn(e){return null!=e&&"object"==typeof e}const vn=Object.getPrototypeOf(Uint8Array),yn="__proto__";function wn(e,t=gn){let n;if(fn(e)){let s=e.find(e=>null!=e);if(fn(s)||t(s)){n=Array(e.length);for(let s=0;sa){for(s=i-1;s>=0&&null==e[s];)e[s--]=null;for(s=i+1;sPromise.resolve().then(e):queueMicrotask,Mn=["January","February","March","April","May","June","July","August","September","October","November","December"],Tn=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function Sn(e){return e.slice(0,3)}const Cn=Tn.map(Sn),_n=Mn.map(Sn),Pn={MMMM:Mn,MMM:_n,WWWW:Tn,WWW:Cn};function An(e){return(e<10?"0":"")+e}const Rn={YYYY:e=>e.getFullYear(),YY:e=>(e.getFullYear()+"").slice(2),MMMM:(e,t)=>t.MMMM[e.getMonth()],MMM:(e,t)=>t.MMM[e.getMonth()],MM:e=>An(e.getMonth()+1),M:e=>e.getMonth()+1,DD:e=>An(e.getDate()),D:e=>e.getDate(),WWWW:(e,t)=>t.WWWW[e.getDay()],WWW:(e,t)=>t.WWW[e.getDay()],HH:e=>An(e.getHours()),H:e=>e.getHours(),h:e=>{let t=e.getHours();return 0==t?12:t>12?t-12:t},AA:e=>e.getHours()>=12?"PM":"AM",aa:e=>e.getHours()>=12?"pm":"am",a:e=>e.getHours()>=12?"p":"a",mm:e=>An(e.getMinutes()),m:e=>e.getMinutes(),ss:e=>An(e.getSeconds()),s:e=>e.getSeconds(),fff:e=>{return((t=e.getMilliseconds())<10?"00":t<100?"0":"")+t;var t}};function Dn(e,t){t=t||Pn;let n,s=[],l=/\{([a-z]+)\}|[^{]+/gi;for(;n=l.exec(e);)s.push("{"==n[0][0]?Rn[n[1]]:n[0]);return e=>{let n="";for(let l=0;le%1==0,Fn=[1,2,2.5,5],Ln=un(10,-32,0,Fn),zn=un(10,0,32,Fn),Wn=zn.filter($n),Hn=Ln.concat(zn),Bn="{YYYY}",On="\n"+Bn,Gn="{M}/{D}",Vn="\n"+Gn,In=Vn+"/{YY}",Yn="{aa}",qn="{h}:{mm}"+Yn,Un="\n"+qn,Xn=":{ss}",Kn=null;function Jn(e){let t=1e3*e,n=60*t,s=60*n,l=24*s,a=30*l,i=365*l;return[(1==e?un(10,0,3,Fn).filter($n):un(10,-3,0,Fn)).concat([t,5*t,10*t,15*t,30*t,n,5*n,10*n,15*n,30*n,s,2*s,3*s,4*s,6*s,8*s,12*s,l,2*l,3*l,4*l,5*l,6*l,7*l,8*l,9*l,10*l,15*l,a,2*a,3*a,4*a,6*a,i,2*i,5*i,10*i,25*i,50*i,100*i]),[[i,Bn,Kn,Kn,Kn,Kn,Kn,Kn,1],[28*l,"{MMM}",On,Kn,Kn,Kn,Kn,Kn,1],[l,Gn,On,Kn,Kn,Kn,Kn,Kn,1],[s,"{h}"+Yn,In,Kn,Vn,Kn,Kn,Kn,1],[n,qn,In,Kn,Vn,Kn,Kn,Kn,1],[t,Xn,In+" "+qn,Kn,Vn+" "+qn,Kn,Un,Kn,1],[e,Xn+".{fff}",In+" "+qn,Kn,Vn+" "+qn,Kn,Un,Kn,1]],function(t){return(r,o,c,u,d,m)=>{let h=[],f=d>=i,p=d>=a&&d=l?l:d,i=v+($t(c)-$t(g))+ln(g-v,a);h.push(i);let f=t(i),p=f.getHours()+f.getMinutes()/n+f.getSeconds()/s,x=d/s,b=m/r.axes[o]._space;for(;i=rn(i+d,1==e?0:3),!(i>u);)if(x>1){let e=$t(rn(p+x,6))%24,n=t(i).getHours()-e;n>1&&(n=-1),i-=n*s,p=(p+x)%24,rn((i-h[h.length-1])/d,3)*b>=.7&&h.push(i)}else h.push(i)}return h}}]}const[Zn,Qn,es]=Jn(1),[ts,ns,ss]=Jn(.001);function ls(e,t){return e.map(e=>e.map((n,s)=>0==s||8==s||null==n?n:t(1==s||0==e[8]?n:e[1]+n)))}function as(e,t){return(n,s,l,a,i)=>{let r,o,c,u,d,m,h=t.find(e=>i>=e[0])||t[t.length-1];return s.map(t=>{let n=e(t),s=n.getFullYear(),l=n.getMonth(),a=n.getDate(),i=n.getHours(),f=n.getMinutes(),p=n.getSeconds(),x=s!=r&&h[2]||l!=o&&h[3]||a!=c&&h[4]||i!=u&&h[5]||f!=d&&h[6]||p!=m&&h[7]||h[1];return r=s,o=l,c=a,u=i,d=f,m=p,x(n)})}}function is(e,t,n){return new Date(e,t,n)}function rs(e,t){return t(e)}function os(e,t){return(n,s,l,a)=>null==a?Ue:t(e(s))}un(2,-53,53,[1]);const cs={show:!0,live:!0,isolate:!1,mount:()=>{},markers:{show:!0,width:2,stroke:function(e,t){let n=e.series[t];return n.width?n.stroke(e,t):n.points.width?n.points.stroke(e,t):null},fill:function(e,t){return e.series[t].fill(e,t)},dash:"solid"},idx:null,idxs:null,values:[]},us=[0,0];function ds(e,t,n,s=!0){return e=>{0==e.button&&(!s||e.target==t)&&n(e)}}function ms(e,t,n,s=!0){return e=>{(!s||e.target==t)&&n(e)}}const hs={show:!0,x:!0,y:!0,lock:!1,move:function(e,t,n){return us[0]=t,us[1]=n,us},points:{one:!1,show:function(e,t){let n=e.cursor.points,s=at(),l=n.size(e,t);st(s,Re,l),st(s,De,l);let a=l/-2;st(s,"marginLeft",a),st(s,"marginTop",a);let i=n.width(e,t,l);return i&&st(s,"borderWidth",i),s},size:function(e,t){return e.series[t].points.size},width:0,stroke:function(e,t){let n=e.series[t].points;return n._stroke||n._fill},fill:function(e,t){let n=e.series[t].points;return n._fill||n._stroke}},bind:{mousedown:ds,mouseup:ds,click:ds,dblclick:ds,mousemove:ms,mouseleave:ms,mouseenter:ms},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,click:(e,t)=>{t.stopPropagation(),t.stopImmediatePropagation()},_x:!1,_y:!1},focus:{dist:(e,t,n,s,l)=>s-l,prox:-1,bias:0},hover:{skip:[void 0],prox:null,bias:0},left:-10,top:-10,idx:null,dataIdx:null,idxs:null,event:null},fs={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},ps=jn({},fs,{filter:Jt}),xs=jn({},ps,{size:10}),gs=jn({},fs,{show:!1}),bs='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',vs="bold "+bs,ys={show:!0,scale:"x",stroke:ze,space:50,gap:5,alignTo:1,size:50,labelGap:0,labelSize:30,labelFont:vs,side:2,grid:ps,ticks:xs,border:gs,font:bs,lineGap:1.5,rotate:0},ws={show:!0,scale:"x",auto:!1,sorted:1,min:It,max:-It,idxs:[]};function js(e,t,n,s,l){return t.map(e=>null==e?"":At(e))}function ks(e,t,n,s,l,a,i){let r=[],o=on.get(l)||0;for(let c=n=i?n:rn(ln(n,l),o);c<=s;c=rn(c+l,o))r.push(Object.is(c,-0)?0:c);return r}function Ns(e,t,n,s,l,a,i){const r=[],o=e.scales[e.axes[t].scale].log,c=$t((10==o?Ot:Gt)(n));l=Ht(o,c),10==o&&(l=Hn[xt(l,Hn)]);let u=n,d=l*o;10==o&&(d=Hn[xt(d,Hn)]);do{r.push(u),u+=l,10!=o||on.has(u)||(u=rn(u,on.get(l))),u>=d&&(d=(l=u)*o,10==o&&(d=Hn[xt(d,Hn)]))}while(u<=s);return r}function Ms(e,t,n,s,l,a,i){let r=e.scales[e.axes[t].scale].asinh,o=s>r?Ns(e,t,Wt(r,n),s,l):[r],c=s>=0&&n<=0?[0]:[];return(n<-r?Ns(e,t,Wt(r,-s),-n,l):[r]).reverse().map(e=>-e).concat(c,o)}const Ts=/./,Ss=/[12357]/,Cs=/[125]/,_s=/1/,Ps=(e,t,n,s)=>e.map((e,l)=>4==t&&0==e||l%s==0&&n.test(e.toExponential()[e<0?1:0])?e:null);function As(e,t,n,s,l){let a=e.axes[n],i=a.scale,r=e.scales[i],o=e.valToPos,c=a._space,u=o(10,i),d=o(9,i)-u>=c?Ts:o(7,i)-u>=c?Ss:o(5,i)-u>=c?Cs:_s;if(d==_s){let e=Et(o(1,i)-u);if(el,Ls={show:!0,auto:!0,sorted:0,gaps:Fs,alpha:1,facets:[jn({},$s,{scale:"x"}),jn({},$s,{scale:"y"})]},zs={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:Fs,alpha:1,points:{show:function(e,t){let{scale:n,idxs:s}=e.series[0],l=e._data[0],a=e.valToPos(l[s[0]],n,!0),i=e.valToPos(l[s[1]],n,!0),r=Et(i-a)/(e.series[t].points.space*Qe);return s[1]-s[0]<=r},filter:null},values:null,min:It,max:-It,idxs:[],path:null,clip:null};function Ws(e,t,n,s,l){return n/10}const Hs={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},Bs=jn({},Hs,{time:!1,ori:1}),Os={};function Gs(e,t){let n=Os[e];return n||(n={key:e,plots:[],sub(e){n.plots.push(e)},unsub(e){n.plots=n.plots.filter(t=>t!=e)},pub(e,t,s,l,a,i,r){for(let o=0;o{let p=e.pxRound;const x=r.dir*(0==r.ori?1:-1),g=0==r.ori?el:tl;let b,v;1==x?(b=n,v=s):(b=s,v=n);let y=p(c(t[b],r,h,d)),w=p(u(i[b],o,f,m)),j=p(c(t[v],r,h,d)),k=p(u(1==a?o.max:o.min,o,f,m)),N=new Path2D(l);return g(N,j,k),g(N,y,k),g(N,y,w),N})}function Us(e,t,n,s,l,a){let i=null;if(e.length>0){i=new Path2D;const r=0==t?nl:sl;let o=n;for(let t=0;tn[0]){let e=n[0]-o;e>0&&r(i,o,s,e,s+a),o=n[1]}}let c=n+l-o,u=10;c>0&&r(i,o,s-u/2,c,s+a+u)}return i}function Xs(e,t,n,s,l,a,i){let r=[],o=e.length;for(let c=1==l?n:s;c>=n&&c<=s;c+=l)if(null===t[c]){let u=c,d=c;if(1==l)for(;++c<=s&&null===t[c];)d=c;else for(;--c>=n&&null===t[c];)d=c;let m=a(e[u]),h=d==u?m:a(e[d]),f=u-l;m=i<=0&&f>=0&&f=0&&p>=0&&p=m&&r.push([m,h])}return r}function Ks(e){return 0==e?Kt:1==e?Ft:t=>sn(t,e)}function Js(e){let t=0==e?Zs:Qs,n=0==e?(e,t,n,s,l,a)=>{e.arcTo(t,n,s,l,a)}:(e,t,n,s,l,a)=>{e.arcTo(n,t,l,s,a)},s=0==e?(e,t,n,s,l)=>{e.rect(t,n,s,l)}:(e,t,n,s,l)=>{e.rect(n,t,l,s)};return(e,l,a,i,r,o=0,c=0)=>{0==o&&0==c?s(e,l,a,i,r):(o=zt(o,i/2,r/2),c=zt(c,i/2,r/2),t(e,l+o,a),n(e,l+i,a,l+i,a+r,o),n(e,l+i,a+r,l,a+r,c),n(e,l,a+r,l,a,c),n(e,l,a,l+i,a,o),e.closePath())}}const Zs=(e,t,n)=>{e.moveTo(t,n)},Qs=(e,t,n)=>{e.moveTo(n,t)},el=(e,t,n)=>{e.lineTo(t,n)},tl=(e,t,n)=>{e.lineTo(n,t)},nl=Js(0),sl=Js(1),ll=(e,t,n,s,l,a)=>{e.arc(t,n,s,l,a)},al=(e,t,n,s,l,a)=>{e.arc(n,t,s,l,a)},il=(e,t,n,s,l,a,i)=>{e.bezierCurveTo(t,n,s,l,a,i)},rl=(e,t,n,s,l,a,i)=>{e.bezierCurveTo(n,t,l,s,i,a)};function ol(e){return(e,t,n,s,l)=>Vs(e,t,(t,a,i,r,o,c,u,d,m,h,f)=>{let p,x,{pxRound:g,points:b}=t;0==r.ori?(p=Zs,x=ll):(p=Qs,x=al);const v=rn(b.width*Qe,3);let y=(b.size-b.width)/2*Qe,w=rn(2*y,3),j=new Path2D,k=new Path2D,{left:N,top:M,width:T,height:S}=e.bbox;nl(k,N-w,M-w,T+2*w,S+2*w);const C=e=>{if(null!=i[e]){let t=g(c(a[e],r,h,d)),n=g(u(i[e],o,f,m));p(j,t+y,n),x(j,t,n,y,0,2*Dt)}};if(l)l.forEach(C);else for(let e=n;e<=s;e++)C(e);return{stroke:v>0?j:null,fill:j,clip:k,flags:3}})}function cl(e){return(t,n,s,l,a,i)=>{s!=l&&(a!=s&&i!=s&&e(t,n,s),a!=l&&i!=l&&e(t,n,l),e(t,n,i))}}const ul=cl(el),dl=cl(tl);function ml(e){const t=Ct(null==e?void 0:e.alignGaps,0);return(e,n,s,l)=>Vs(e,n,(a,i,r,o,c,u,d,m,h,f,p)=>{[s,l]=yt(r,s,l);let x,g,b=a.pxRound,v=e=>b(u(e,o,f,m)),y=e=>b(d(e,c,p,h));0==o.ori?(x=el,g=ul):(x=tl,g=dl);const w=o.dir*(0==o.ori?1:-1),j={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},k=j.stroke;let N=!1;if(l-s>=4*f){let t,n,a,c=t=>e.posToVal(t,o.key,!0),u=null,d=null,m=v(i[1==w?s:l]),h=v(i[s]),f=v(i[l]),p=c(1==w?h+1:f-1);for(let e=1==w?s:l;e>=s&&e<=l;e+=w){let s=i[e],l=(1==w?sp)?m:v(s),a=r[e];l==m?null!=a?(n=a,null==u?(x(k,l,y(n)),t=u=d=n):nd&&(d=n)):null===a&&(N=!0):(null!=u&&g(k,m,y(u),y(d),y(t),y(n)),null!=a?(n=a,x(k,l,y(n)),u=d=t=n):(u=d=null,null===a&&(N=!0)),m=l,p=c(m+w))}null!=u&&u!=d&&a!=m&&g(k,m,y(u),y(d),y(t),y(n))}else for(let e=1==w?s:l;e>=s&&e<=l;e+=w){let t=r[e];null===t?N=!0:null!=t&&x(k,v(i[e]),y(t))}let[M,T]=Is(e,n);if(null!=a.fill||0!=M){let t=j.fill=new Path2D(k),r=y(a.fillTo(e,n,a.min,a.max,M)),o=v(i[s]),c=v(i[l]);-1==w&&([c,o]=[o,c]),x(t,c,r),x(t,o,r)}if(!a.spanGaps){let c=[];N&&c.push(...Xs(i,r,s,l,w,v,t)),j.gaps=c=a.gaps(e,n,s,l,c),j.clip=Us(c,o.ori,m,h,f,p)}return 0!=T&&(j.band=2==T?[qs(e,n,s,l,k,-1),qs(e,n,s,l,k,1)]:qs(e,n,s,l,k,T)),j})}function hl(e,t,n,s,l,a,i=It){if(e.length>1){let r=null;for(let o=0,c=1/0;o0!=s[e]>0?n[e]=0:(n[e]=3*(o[e-1]+o[e])/((2*o[e]+o[e-1])/s[e-1]+(o[e]+2*o[e-1])/s[e]),isFinite(n[e])||(n[e]=0));n[i-1]=s[i-2];for(let c=0;c{Pl.pxRatio=Qe}));const gl=ml(),bl=ol();function vl(e,t,n,s){return(s?[e[0],e[1]].concat(e.slice(2)):[e[0]].concat(e.slice(1))).map((e,s)=>yl(e,s,t,n))}function yl(e,t,n,s){return jn({},0==t?n:s,e)}function wl(e,t,n){return null==t?hn:[t,n]}const jl=wl;function kl(e,t,n){return null==t?hn:St(t,n,.1,!0)}function Nl(e,t,n,s){return null==t?hn:jt(t,n,e.scales[s].log,!1)}const Ml=Nl;function Tl(e,t,n,s){return null==t?hn:kt(t,n,e.scales[s].log,!1)}const Sl=Tl;function Cl(e){let t,n;return[e=e.replace(/(\d+)px/,(e,s)=>(t=Ft((n=+s)*Qe))+"px"),t,n]}function _l(e){e.show&&[e.font,e.labelFont].forEach(e=>{let t=rn(e[2]*Qe,1);e[0]=e[0].replace(/[0-9.]+px/,t+"px"),e[1]=t})}function Pl(e,t,n){const s={mode:Ct(e.mode,1)},l=s.mode;function a(e,t,n,s){let l=t.valToPct(e);return s+n*(-1==t.dir?1-l:l)}function i(e,t,n,s){let l=t.valToPct(e);return s+n*(-1==t.dir?l:1-l)}function r(e,t,n,s){return 0==t.ori?a(e,t,n,s):i(e,t,n,s)}s.valToPosH=a,s.valToPosV=i;let o=!1;s.status=0;const c=s.root=at("uplot");null!=e.id&&(c.id=e.id),tt(c,e.class),e.title&&(at("u-title",c).textContent=e.title);const u=lt("canvas"),d=s.ctx=u.getContext("2d"),m=at("u-wrap",c);ft("click",m,e=>{e.target===f&&(us!=Xn||ds!=Kn)&&Ss.click(s,e)},!0);const h=s.under=at("u-under",m);m.appendChild(u);const f=s.over=at("u-over",m),p=+Ct((e=wn(e)).pxAlign,1),x=Ks(p);(e.plugins||[]).forEach(t=>{t.opts&&(e=t.opts(s,e)||e)});const g=e.ms||.001,b=s.series=1==l?vl(e.series||[],ws,zs,!1):(v=e.series||[null],y=Ls,v.map((e,t)=>0==t?{}:jn({},y,e)));var v,y;const w=s.axes=vl(e.axes||[],ys,Es,!0),j=s.scales={},k=s.bands=e.bands||[];k.forEach(e=>{e.fill=Xt(e.fill||null),e.dir=Ct(e.dir,-1)});const N=2==l?b[1].facets[0].scale:b[0].scale,M={axes:function(){for(let e=0;evn[e]):g,v=2==h.distr?vn[g[1]]-vn[g[0]]:u,y=t.ticks,k=t.border,N=y.show?y.size:0,M=Ft(N*Qe),T=Ft((2==t.alignTo?t._size-N-t.gap:t.gap)*Qe),S=t._rotate*-Dt/180,C=x(t._pos*Qe),_=C+(M+T)*c;l=0==i?_:0,n=1==i?_:0,Sn(t.font[0],o,1==t.align?Fe:2==t.align?Le:S>0?Fe:S<0?Le:0==i?"center":3==a?Le:Fe,S||1==i?"middle":2==a?Ee:$e);let P=t.font[1]*t.lineGap,A=g.map(e=>x(r(e,h,f,p))),R=t._values;for(let e=0;e0){let e=b.some(e=>e._focus)&&pn!=ze.alpha;e&&(d.globalAlpha=pn=ze.alpha),b.forEach((e,n)=>{if(n>0&&e.show&&(Pn(n,!1),Pn(n,!0),null==e._paths)){let a=pn;pn!=e.alpha&&(d.globalAlpha=pn=e.alpha);let i=2==l?[0,t[n][0].length-1]:function(e){let t=qt(_t-1,0,Tt-1),n=qt(Pt+1,0,Tt-1);for(;null==e[t]&&t>0;)t--;for(;null==e[n]&&n{if(t>0&&e.show){let n=pn;pn!=e.alpha&&(d.globalAlpha=pn=e.alpha),null!=e._paths&&An(t,!1);{let n=null!=e._paths?e._paths.gaps:null,l=e.points.show(s,t,_t,Pt,n),a=e.points.filter(s,t,l,n);(l||a)&&(e.points._paths=e.points.paths(s,t,_t,Pt,a),An(t,!0))}pn!=n&&(d.globalAlpha=pn=n),$l("drawSeries",t)}}),e&&(d.globalAlpha=pn=1)}}},T=(e.drawOrder||["axes","series"]).map(e=>M[e]);function S(e){const t=3==e.distr?t=>Ot(t>0?t:e.clamp(s,t,e.min,e.max,e.key)):4==e.distr?t=>Vt(t,e.asinh):100==e.distr?t=>e.fwd(t):e=>e;return n=>{let s=t(n),{_min:l,_max:a}=e;return(s-l)/(a-l)}}function C(t){let n=j[t];if(null==n){let s=(e.scales||dn)[t]||dn;if(null!=s.from){C(s.from);let e=jn({},j[s.from],s,{key:t});e.valToPct=S(e),j[t]=e}else{n=j[t]=jn({},t==N?Hs:Bs,s),n.key=t;let e=n.time,a=n.range,i=fn(a);if((t!=N||2==l&&!e)&&(!i||null!=a[0]&&null!=a[1]||(a={min:null==a[0]?Nt:{mode:1,hard:a[0],soft:a[0]},max:null==a[1]?Nt:{mode:1,hard:a[1],soft:a[1]}},i=!1),!i&&gn(a))){let e=a;a=(t,n,s)=>null==n?hn:St(n,s,e)}n.range=Xt(a||(e?jl:t==N?3==n.distr?Ml:4==n.distr?Sl:wl:3==n.distr?Nl:4==n.distr?Tl:kl)),n.auto=Xt(!i&&n.auto),n.clamp=Xt(n.clamp||Ws),n._min=n._max=null,n.valToPct=S(n)}}}C("x"),C("y"),1==l&&b.forEach(e=>{C(e.scale)}),w.forEach(e=>{C(e.scale)});for(let Pe in e.scales)C(Pe);const _=j[N],P=_.distr;let A,R;0==_.ori?(tt(c,"u-hz"),A=a,R=i):(tt(c,"u-vt"),A=i,R=a);const D={};for(let Pe in j){let e=j[Pe];null==e.min&&null==e.max||(D[Pe]={min:e.min,max:e.max},e.min=e.max=null)}const E=e.tzDate||(e=>new Date(Ft(e/g))),$=e.fmtDate||Dn,F=1==g?es(E):ss(E),L=as(E,ls(1==g?Qn:ns,$)),z=os(E,rs("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",$)),W=[],H=s.legend=jn({},cs,e.legend),B=s.cursor=jn({},hs,{drag:{y:2==l}},e.cursor),O=H.show,G=B.show,V=H.markers;let I,Y,q;H.idxs=W,V.width=Xt(V.width),V.dash=Xt(V.dash),V.stroke=Xt(V.stroke),V.fill=Xt(V.fill);let U,X=[],K=[],J=!1,Z={};if(H.live){const e=b[1]?b[1].values:null;J=null!=e,U=J?e(s,1,0):{_:0};for(let t in U)Z[t]=Ue}if(O)if(I=lt("table","u-legend",c),q=lt("tbody",null,I),H.mount(s,I),J){Y=lt("thead",null,I,q);let e=lt("tr",null,Y);for(var Q in lt("th",null,e),U)lt("th",Ae,e).textContent=Q}else tt(I,"u-inline"),H.live&&tt(I,"u-live");const ee={show:!0},te={show:!1},ne=new Map;function se(e,t,n,l=!0){const a=ne.get(t)||{},i=B.bind[e](s,t,n,l);i&&(ft(e,t,a[e]=i),ne.set(t,a))}function le(e,t,n){const s=ne.get(t)||{};for(let l in s)null!=e&&l!=e||(pt(l,t,s[l]),delete s[l]);null==e&&ne.delete(t)}let ae=0,ie=0,re=0,oe=0,ce=0,ue=0,de=ce,me=ue,he=re,fe=oe,pe=0,xe=0,ge=0,be=0;s.bbox={};let ve=!1,ye=!1,we=!1,je=!1,ke=!1,Ne=!1;function Me(e,t,n){(n||e!=s.width||t!=s.height)&&Te(e,t),On(!1),we=!0,ye=!0,gs()}function Te(e,t){s.width=ae=re=e,s.height=ie=oe=t,ce=ue=0,function(){let e=!1,t=!1,n=!1,s=!1;w.forEach((l,a)=>{if(l.show&&l._show){let{side:a,_size:i}=l,r=a%2,o=i+(null!=l.label?l.labelSize:0);o>0&&(r?(re-=o,3==a?(ce+=o,s=!0):n=!0):(oe-=o,0==a?(ue+=o,e=!0):t=!0))}}),mt[0]=e,mt[1]=n,mt[2]=t,mt[3]=s,re-=Mt[1]+Mt[3],ce+=Mt[3],oe-=Mt[2]+Mt[0],ue+=Mt[0]}(),function(){let e=ce+re,t=ue+oe,n=ce,s=ue;function l(l,a){switch(l){case 1:return e+=a,e-a;case 2:return t+=a,t-a;case 3:return n-=a,n+a;case 0:return s-=a,s+a}}w.forEach((e,t)=>{if(e.show&&e._show){let t=e.side;e._pos=l(t,e._size),null!=e.label&&(e._lpos=l(t,e.labelSize))}})}();let n=s.bbox;pe=n.left=sn(ce*Qe,.5),xe=n.top=sn(ue*Qe,.5),ge=n.width=sn(re*Qe,.5),be=n.height=sn(oe*Qe,.5)}const Se=3;if(s.setSize=function({width:e,height:t}){Me(e,t)},null==B.dataIdx){let e=B.hover,n=e.skip=new Set(e.skip??[]);n.add(void 0);let s=e.prox=Xt(e.prox),l=e.bias??(e.bias=0);B.dataIdx=(e,a,i,r)=>{if(0==a)return i;let o=i,c=s(e,a,i,r)??It,u=c>=0&&c0;)n.has(f[e])||(t=e);if(0==l||1==l)for(e=i;null==s&&e++c&&(o=null);return o}}const Ce=e=>{B.event=e};B.idxs=W,B._lock=!1;let _e=B.points;_e.show=Xt(_e.show),_e.size=Xt(_e.size),_e.stroke=Xt(_e.stroke),_e.width=Xt(_e.width),_e.fill=Xt(_e.fill);const ze=s.focus=jn({},e.focus||{alpha:.3},B.focus),Ye=ze.prox>=0,Xe=Ye&&_e.one;let Ze=[],et=[],it=[];function ot(e,t){let n=_e.show(s,t);if(n instanceof HTMLElement)return tt(n,"u-cursor-pt"),tt(n,e.class),rt(n,-10,-10,re,oe),f.insertBefore(n,Ze[t]),n}function ut(e,t){if(1==l||t>0){let t=1==l&&j[e.scale].time,n=e.value;e.value=t?xn(n)?os(E,rs(n,$)):n||z:n||Ds,e.label=e.label||(t?"Time":"Value")}if(Xe||t>0){e.width=null==e.width?1:e.width,e.paths=e.paths||gl||Zt,e.fillTo=Xt(e.fillTo||Ys),e.pxAlign=+Ct(e.pxAlign,p),e.pxRound=Ks(e.pxAlign),e.stroke=Xt(e.stroke||null),e.fill=Xt(e.fill||null),e._stroke=e._fill=e._paths=e._focus=null;let t=rn(1*(3+2*(Wt(1,e.width)||1)),3),n=e.points=jn({},{size:t,width:Wt(1,.2*t),stroke:e.stroke,space:2*t,paths:bl,_stroke:null,_fill:null},e.points);n.show=Xt(n.show),n.filter=Xt(n.filter),n.fill=Xt(n.fill),n.stroke=Xt(n.stroke),n.paths=Xt(n.paths),n.pxAlign=e.pxAlign}if(O){let n=function(e,t){if(0==t&&(J||!H.live||2==l))return hn;let n=[],a=lt("tr","u-series",q,q.childNodes[t]);tt(a,e.class),e.show||tt(a,Pe);let i=lt("th",null,a);if(V.show){let e=at("u-marker",i);if(t>0){let n=V.width(s,t);n&&(e.style.border=n+"px "+V.dash(s,t)+" "+V.stroke(s,t)),e.style.background=V.fill(s,t)}}let r=at(Ae,i);for(var o in e.label instanceof HTMLElement?r.appendChild(e.label):r.textContent=e.label,t>0&&(V.show||(r.style.color=e.width>0?V.stroke(s,t):V.fill(s,t)),se("click",i,t=>{if(B._lock)return;Ce(t);let n=b.indexOf(e);if((t.ctrlKey||t.metaKey)!=H.isolate){let e=b.some((e,t)=>t>0&&t!=n&&e.show);b.forEach((t,s)=>{s>0&&Vs(s,e?s==n?ee:te:ee,!0,Ll.setSeries)})}else Vs(n,{show:!e.show},!0,Ll.setSeries)},!1),Ye&&se(Ge,i,t=>{B._lock||(Ce(t),Vs(b.indexOf(e),Xs,!0,Ll.setSeries))},!1)),U){let e=lt("td","u-value",a);e.textContent="--",n.push(e)}return[a,n]}(e,t);X.splice(t,0,n[0]),K.splice(t,0,n[1]),H.values.push(null)}if(G){W.splice(t,0,null);let n=null;Xe?0==t&&(n=ot(e,t)):t>0&&(n=ot(e,t)),Ze.splice(t,0,n),et.splice(t,0,0),it.splice(t,0,0)}$l("addSeries",t)}s.addSeries=function(e,t){t=null==t?b.length:t,e=1==l?yl(e,t,ws,zs):yl(e,t,{},Ls),b.splice(t,0,e),ut(b[t],t)},s.delSeries=function(e){if(b.splice(e,1),O){H.values.splice(e,1),K.splice(e,1);let t=X.splice(e,1)[0];le(null,t.firstChild),t.remove()}G&&(W.splice(e,1),Ze.splice(e,1)[0].remove(),et.splice(e,1),it.splice(e,1)),$l("delSeries",e)};const mt=[!1,!1,!1,!1];function ht(e,t,n,s){let[l,a,i,r]=n,o=t%2,c=0;return 0==o&&(r||a)&&(c=0==t&&!l||2==t&&!i?Ft(ys.size/3):0),1==o&&(l||i)&&(c=1==t&&!a||3==t&&!r?Ft(Es.size/2):0),c}const gt=s.padding=(e.padding||[ht,ht,ht,ht]).map(e=>Xt(Ct(e,ht))),Mt=s._padding=gt.map((e,t)=>e(s,t,mt,0));let Tt,_t=null,Pt=null;const At=1==l?b[0].idxs:null;let $t,Bt,Gt,Kt,tn,nn,ln,an,un,pn,vn=null,yn=!1;function kn(e,n){if(t=null==e?[]:e,s.data=s._data=t,2==l){Tt=0;for(let e=1;e=0,Ne=!0,gs()}}function Mn(){let e,n;yn=!0,1==l&&(Tt>0?(_t=At[0]=0,Pt=At[1]=Tt-1,e=t[0][_t],n=t[0][Pt],2==P?(e=_t,n=Pt):e==n&&(3==P?[e,n]=jt(e,e,_.log,!1):4==P?[e,n]=kt(e,e,_.log,!1):_.time?n=e+Ft(86400/g):[e,n]=St(e,n,.1,!0))):(_t=At[0]=e=null,Pt=At[1]=n=null)),Os(N,e,n)}function Tn(e,t,n,s,l,a){e??(e=We),n??(n=mn),s??(s="butt"),l??(l=We),a??(a="round"),e!=$t&&(d.strokeStyle=$t=e),l!=Bt&&(d.fillStyle=Bt=l),t!=Gt&&(d.lineWidth=Gt=t),a!=tn&&(d.lineJoin=tn=a),s!=nn&&(d.lineCap=nn=s),n!=Kt&&d.setLineDash(Kt=n)}function Sn(e,t,n,s){t!=Bt&&(d.fillStyle=Bt=t),e!=ln&&(d.font=ln=e),n!=an&&(d.textAlign=an=n),s!=un&&(d.textBaseline=un=s)}function Cn(e,t,n,l,a=0){if(l.length>0&&e.auto(s,yn)&&(null==t||null==t.min)){let t=Ct(_t,0),s=Ct(Pt,l.length-1),i=null==n.min?function(e,t,n,s=0,l=!1){let a=l?wt:yt,i=l?vt:bt;[t,n]=a(e,t,n);let r=e[t],o=e[t];if(t>-1)if(1==s)r=e[t],o=e[n];else if(-1==s)r=e[n],o=e[t];else for(let c=t;c<=n;c++){let t=e[c];i(t)&&(to&&(o=t))}return[r??It,o??-It]}(l,t,s,a,3==e.distr):[n.min,n.max];e.min=zt(e.min,n.min=i[0]),e.max=Wt(e.max,n.max=i[1])}}s.setData=kn;const _n={min:null,max:null};function Pn(e,t){let n=t?b[e].points:b[e];n._stroke=n.stroke(s,e),n._fill=n.fill(s,e)}function An(e,n){let l=n?b[e].points:b[e],{stroke:a,fill:i,clip:r,flags:o,_stroke:c=l._stroke,_fill:u=l._fill,_width:m=l.width}=l._paths;m=rn(m*Qe,3);let h=null,f=m%2/2;n&&null==u&&(u=m>0?"#fff":c);let p=1==l.pxAlign&&f>0;if(p&&d.translate(f,f),!n){let e=pe-m/2,t=xe-m/2,n=ge+m,s=be+m;h=new Path2D,h.rect(e,t,n,s)}n?En(c,m,l.dash,l.cap,u,a,i,o,r):function(e,n,l,a,i,r,o,c,u,d,m){let h=!1;0!=u&&k.forEach((f,p)=>{if(f.series[0]==e){let e,x=b[f.series[1]],g=t[f.series[1]],v=(x._paths||dn).band;fn(v)&&(v=1==f.dir?v[0]:v[1]);let y=null;x.show&&v&&function(e,t,n){for(t=Ct(t,0),n=Ct(n,e.length-1);t<=n;){if(null!=e[t])return!0;t++}return!1}(g,_t,Pt)?(y=f.fill(s,p)||r,e=x._paths.clip):v=null,En(n,l,a,i,y,o,c,u,d,m,e,v),h=!0}}),h||En(n,l,a,i,r,o,c,u,d,m)}(e,c,m,l.dash,l.cap,u,a,i,o,h,r),p&&d.translate(-f,-f)}const Rn=3;function En(e,t,n,s,l,a,i,r,o,c,u,m){Tn(e,t,n,s,l),(o||c||m)&&(d.save(),o&&d.clip(o),c&&d.clip(c)),m?(r&Rn)==Rn?(d.clip(m),u&&d.clip(u),Fn(l,i),$n(e,a,t)):2&r?(Fn(l,i),d.clip(m),$n(e,a,t)):1&r&&(d.save(),d.clip(m),u&&d.clip(u),Fn(l,i),d.restore(),$n(e,a,t)):(Fn(l,i),$n(e,a,t)),(o||c||m)&&d.restore()}function $n(e,t,n){n>0&&(t instanceof Map?t.forEach((e,t)=>{d.strokeStyle=$t=t,d.stroke(e)}):null!=t&&e&&d.stroke(t))}function Fn(e,t){t instanceof Map?t.forEach((e,t)=>{d.fillStyle=Bt=t,d.fill(e)}):null!=t&&e&&d.fill(t)}function Ln(e,t,n,s,l,a,i,r,o,c){let u=i%2/2;1==p&&d.translate(u,u),Tn(r,i,o,c,r),d.beginPath();let m,h,f,x,g=l+(0==s||3==s?-a:a);0==n?(h=l,x=g):(m=l,f=g);for(let p=0;p{if(!n.show)return;let a=j[n.scale];if(null==a.min)return void(n._show&&(t=!1,n._show=!1,On(!1)));n._show||(t=!1,n._show=!0,On(!1));let i=n.side,r=i%2,{min:o,max:c}=a,[u,d]=function(e,t,n,l){let a,i=w[e];if(l<=0)a=[0,0];else{let r=i._space=i.space(s,e,t,n,l);a=function(e,t,n,s,l){let a=Wt(Yt(e),Yt(t)),i=t-e,r=xt(l/s*i,n);do{let e=n[r],t=s*e/i;if(t>=l&&a+(e<5?on.get(e):0)<=17)return[e,t]}while(++rvn[e]):h,p=2==a.distr?vn[h[1]]-vn[h[0]]:u,x=n._values=n.values(s,n.filter(s,f,l,d,p),l,d,p);n._rotate=2==i?n.rotate(s,x,l,d):0;let g=n._size;n._size=Lt(n.size(s,x,l,e)),null!=g&&n._size!=g&&(t=!1)}),t}function Bn(e){let t=!0;return gt.forEach((n,l)=>{let a=n(s,l,mt,e);a!=Mt[l]&&(t=!1),Mt[l]=a}),t}function On(e){b.forEach((t,n)=>{n>0&&(t._paths=null,e&&(1==l?(t.min=null,t.max=null):t.facets.forEach(e=>{e.min=null,e.max=null})))})}let Gn,Vn,In,Yn,qn,Un,Xn,Kn,Jn,is,us,ds,ms=!1,fs=!1,ps=[];function xs(){fs=!1;for(let e=0;e0){b.forEach((n,a)=>{if(1==l){let l=n.scale,i=D[l];if(null==i)return;let r=e[l];if(0==a){let e=r.range(s,r.min,r.max,l);r.min=e[0],r.max=e[1],_t=xt(r.min,t[0]),Pt=xt(r.max,t[0]),Pt-_t>1&&(t[0][_t]r.max&&Pt--),n.min=vn[_t],n.max=vn[Pt]}else n.show&&n.auto&&Cn(r,i,n,t[a],n.sorted);n.idxs[0]=_t,n.idxs[1]=Pt}else if(a>0&&n.show&&n.auto){let[s,l]=n.facets,i=s.scale,r=l.scale,[o,c]=t[a],u=e[i],d=e[r];null!=u&&Cn(u,D[i],s,o,s.sorted),null!=d&&Cn(d,D[r],l,c,l.sorted),n.min=l.min,n.max=l.max}});for(let t in e){let n=e[t],l=D[t];if(null==n.from&&(null==l||null==l.min)){let e=n.range(s,n.min==It?null:n.min,n.max==-It?null:n.max,t);n.min=e[0],n.max=e[1]}}}for(let t in e){let n=e[t];if(null!=n.from){let l=e[n.from];if(null==l.min)n.min=n.max=null;else{let e=n.range(s,l.min,l.max,t);n.min=e[0],n.max=e[1]}}}let n={},a=!1;for(let t in e){let s=e[t],l=j[t];if(l.min!=s.min||l.max!=s.max){l.min=s.min,l.max=s.max;let e=l.distr;l._min=3==e?Ot(l.min):4==e?Vt(l.min,l.asinh):100==e?l.fwd(l.min):l.min,l._max=3==e?Ot(l.max):4==e?Vt(l.max,l.asinh):100==e?l.fwd(l.max):l.max,n[t]=a=!0}}if(a){b.forEach((e,t)=>{2==l?t>0&&n.y&&(e._paths=null):n[e.scale]&&(e._paths=null)});for(let e in n)we=!0,$l("setScale",e);G&&B.left>=0&&(je=Ne=!0)}for(let t in D)D[t]=null}(),ve=!1),we&&(function(){let e=!1,t=0;for(;!e;){t++;let n=zn(t),l=Bn(t);e=t==Se||n&&l,e||(Te(s.width,s.height),ye=!0)}}(),we=!1),ye){if(st(h,Fe,ce),st(h,Ee,ue),st(h,Re,re),st(h,De,oe),st(f,Fe,ce),st(f,Ee,ue),st(f,Re,re),st(f,De,oe),st(m,Re,ae),st(m,De,ie),u.width=Ft(ae*Qe),u.height=Ft(ie*Qe),w.forEach(({_el:e,_show:t,_size:n,_pos:s,side:l})=>{if(null!=e)if(t){let t=l%2==1;st(e,t?"left":"top",s-(3===l||0===l?n:0)),st(e,t?"width":"height",n),st(e,t?"top":"left",t?ue:ce),st(e,t?"height":"width",t?oe:re),nt(e,Pe)}else tt(e,Pe)}),$t=Bt=Gt=tn=nn=ln=an=un=Kt=null,pn=1,il(!0),ce!=de||ue!=me||re!=he||oe!=fe){On(!1);let e=re/he,t=oe/fe;if(G&&!je&&B.left>=0){B.left*=e,B.top*=t,In&&rt(In,Ft(B.left),0,re,oe),Yn&&rt(Yn,0,Ft(B.top),re,oe);for(let n=0;n=0&&Ps.width>0){Ps.left*=e,Ps.width*=e,Ps.top*=t,Ps.height*=t;for(let e in cl)st($s,e,Ps[e])}de=ce,me=ue,he=re,fe=oe}$l("setSize"),ye=!1}ae>0&&ie>0&&(d.clearRect(0,0,u.width,u.height),$l("drawClear"),T.forEach(e=>e()),$l("draw")),Ps.show&&ke&&(Fs(Ps),ke=!1),G&&je&&(ll(null,!0,!1),je=!1),H.show&&H.live&&Ne&&(nl(),Ne=!1),o||(o=!0,s.status=1,$l("ready")),yn=!1,ms=!1}function vs(e,n){let l=j[e];if(null==l.from){if(0==Tt){let t=l.range(s,n.min,n.max,e);n.min=t[0],n.max=t[1]}if(n.min>n.max){let e=n.min;n.min=n.max,n.max=e}if(Tt>1&&null!=n.min&&null!=n.max&&n.max-n.min<1e-16)return;e==N&&2==l.distr&&Tt>0&&(n.min=xt(n.min,t[0]),n.max=xt(n.max,t[0]),n.min==n.max&&n.max++),D[e]=n,ve=!0,gs()}}s.batch=function(e,t=!1){ms=!0,fs=t,e(s),bs(),t&&ps.length>0&&queueMicrotask(xs)},s.redraw=(e,t)=>{we=t||!1,!1!==e?Os(N,_.min,_.max):gs()},s.setScale=vs;let Ts=!1;const Ss=B.drag;let Cs=Ss.x,_s=Ss.y;G&&(B.x&&(Gn=at("u-cursor-x",f)),B.y&&(Vn=at("u-cursor-y",f)),0==_.ori?(In=Gn,Yn=Vn):(In=Vn,Yn=Gn),us=B.left,ds=B.top);const Ps=s.select=jn({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),$s=Ps.show?at("u-select",Ps.over?f:h):null;function Fs(e,t){if(Ps.show){for(let t in e)Ps[t]=e[t],t in cl&&st($s,t,e[t]);!1!==t&&$l("setSelect")}}function Os(e,t,n){vs(e,{min:t,max:n})}function Vs(e,t,n,a){null!=t.focus&&function(e){if(e!=Us){let t=null==e,n=1!=ze.alpha;b.forEach((s,a)=>{if(1==l||a>0){let l=t||0==a||a==e;s._focus=t?null:l,n&&function(e,t){b[e].alpha=t,G&&null!=Ze[e]&&(Ze[e].style.opacity=t),O&&X[e]&&(X[e].style.opacity=t)}(a,l?1:ze.alpha)}}),Us=e,n&&gs()}}(e),null!=t.show&&b.forEach((n,s)=>{s>0&&(e==s||null==e)&&(n.show=t.show,function(e){if(b[e].show)O&&nt(X[e],Pe);else if(O&&tt(X[e],Pe),G){let t=Xe?Ze[0]:Ze[e];null!=t&&rt(t,-10,-10,re,oe)}}(s),2==l?(Os(n.facets[0].scale,null,null),Os(n.facets[1].scale,null,null)):Os(n.scale,null,null),gs())}),!1!==n&&$l("setSeries",e,t),a&&Hl("setSeries",s,e,t)}let Is,qs,Us;s.setSelect=Fs,s.setSeries=Vs,s.addBand=function(e,t){e.fill=Xt(e.fill||null),e.dir=Ct(e.dir,-1),t=null==t?k.length:t,k.splice(t,0,e)},s.setBand=function(e,t){jn(k[e],t)},s.delBand=function(e){null==e?k.length=0:k.splice(e,1)};const Xs={focus:!0};function Js(e,t,n){let s=j[t];n&&(e=e/Qe-(1==s.ori?ue:ce));let l=re;1==s.ori&&(l=oe,e=l-e),-1==s.dir&&(e=l-e);let a=s._min,i=a+(s._max-a)*(e/l),r=s.distr;return 3==r?Ht(10,i):4==r?((e,t=1)=>Rt.sinh(e)*t)(i,s.asinh):100==r?s.bwd(i):i}function Zs(e,t){st($s,Fe,Ps.left=e),st($s,Re,Ps.width=t)}function Qs(e,t){st($s,Ee,Ps.top=e),st($s,De,Ps.height=t)}O&&Ye&&se(Ve,I,e=>{B._lock||(Ce(e),null!=Us&&Vs(null,Xs,!0,Ll.setSeries))}),s.valToIdx=e=>xt(e,t[0]),s.posToIdx=function(e,n){return xt(Js(e,N,n),t[0],_t,Pt)},s.posToVal=Js,s.valToPos=(e,t,n)=>0==j[t].ori?a(e,j[t],n?ge:re,n?pe:0):i(e,j[t],n?be:oe,n?xe:0),s.setCursor=(e,t,n)=>{us=e.left,ds=e.top,ll(null,t,n)};let el=0==_.ori?Zs:Qs,tl=1==_.ori?Zs:Qs;function nl(e,t){if(null!=e&&(e.idxs?e.idxs.forEach((e,t)=>{W[t]=e}):void 0!==e.idx&&W.fill(e.idx),H.idx=W[0]),O&&H.live){for(let e=0;e0||1==l&&!J)&&sl(e,W[e]);!function(){if(O&&H.live)for(let e=2==l?1:0;ePt;Is=It,qs=null;let o=0==_.ori?re:oe,c=1==_.ori?re:oe;if(us<0||0==Tt||r){i=B.idx=null;for(let e=0;e0&&e.show){let n=null==y?-10:y==i?a:A(1==l?t[0][y]:t[x][0][y],_,o,0),g=null==w?-10:R(w,1==l?j[e.scale]:j[e.facets[1].scale],c,0);if(Ye&&null!=w){let t=1==_.ori?us:ds,n=Et(ze.dist(s,x,y,g,t));if(n=0?1:-1;a==(w>=0?1:-1)&&(1==a?1==s?w>=l:w<=l:1==s?w<=l:w>=l)&&(Is=n,qs=x)}else Is=n,qs=x}}if(Ne||Xe){let e,t;0==_.ori?(e=n,t=g):(e=g,t=n);let l,a,i,o,c,b,v=!0,y=_e.bbox;if(null!=y){v=!1;let e=y(s,x);i=e.left,o=e.top,l=e.width,a=e.height}else i=e,o=t,l=a=_e.size(s,x);if(b=_e.fill(s,x),c=_e.stroke(s,x),Xe)x==qs&&Is<=ze.prox&&(r=i,u=o,d=l,m=a,h=v,f=b,p=c);else{let e=Ze[x];null!=e&&(et[x]=i,it[x]=o,dt(e,l,a,v),ct(e,b,c),rt(e,Lt(i),Lt(o),re,oe))}}}}if(Xe){let e=ze.prox;if(Ne||(null==Us?Is<=e:Is>e||qs!=Us)){let e=Ze[0];null!=e&&(et[0]=r,it[0]=u,dt(e,d,m,h),ct(e,f,p),rt(e,Lt(r),Lt(u),re,oe))}}}if(Ps.show&&Ts)if(null!=e){let[t,n]=Ll.scales,[s,l]=Ll.match,[a,i]=e.cursor.sync.scales,r=e.cursor.drag;if(Cs=r._x,_s=r._y,Cs||_s){let r,u,d,m,h,{left:f,top:p,width:x,height:g}=e.select,b=e.scales[a].ori,v=e.posToVal,y=null!=t&&s(t,a),w=null!=n&&l(n,i);y&&Cs?(0==b?(r=f,u=x):(r=p,u=g),d=j[t],m=A(v(r,a),d,o,0),h=A(v(r+u,a),d,o,0),el(zt(m,h),Et(h-m))):el(0,o),w&&_s?(1==b?(r=f,u=x):(r=p,u=g),d=j[n],m=R(v(r,i),d,c,0),h=R(v(r+u,i),d,c,0),tl(zt(m,h),Et(h-m))):tl(0,c)}else ul()}else{let e=Et(Jn-qn),t=Et(is-Un);if(1==_.ori){let n=e;e=t,t=n}Cs=Ss.x&&e>=Ss.dist,_s=Ss.y&&t>=Ss.dist;let n,s,l=Ss.uni;null!=l?Cs&&_s&&(Cs=e>=l,_s=t>=l,Cs||_s||(t>e?_s=!0:Cs=!0)):Ss.x&&Ss.y&&(Cs||_s)&&(Cs=_s=!0),Cs&&(0==_.ori?(n=Xn,s=us):(n=Kn,s=ds),el(zt(n,s),Et(s-n)),_s||tl(0,c)),_s&&(1==_.ori?(n=Xn,s=us):(n=Kn,s=ds),tl(zt(n,s),Et(s-n)),Cs||el(0,o)),Cs||_s||(el(0,0),tl(0,0))}if(Ss._x=Cs,Ss._y=_s,null==e){if(a){if(null!=zl){let[e,t]=Ll.scales;Ll.values[0]=null!=e?Js(0==_.ori?us:ds,e):null,Ll.values[1]=null!=t?Js(1==_.ori?us:ds,t):null}Hl(He,s,us,ds,re,oe,i)}if(Ye){let e=a&&Ll.setSeries,t=ze.prox;null==Us?Is<=t&&Vs(qs,Xs,!0,e):Is>t?Vs(null,Xs,!0,e):qs!=Us&&Vs(qs,Xs,!0,e)}}Ne&&(H.idx=i,nl()),!1!==n&&$l("setCursor")}s.setLegend=nl;let al=null;function il(e=!1){e?al=null:(al=f.getBoundingClientRect(),$l("syncRect",al))}function rl(e,t,n,s,l,a,i){B._lock||Ts&&null!=e&&0==e.movementX&&0==e.movementY||(ol(e,t,n,s,l,a,0,!1,null!=e),null!=e?ll(null,!0,!0):ll(t,!0,!1))}function ol(e,t,n,l,a,i,o,c,u){if(null==al&&il(!1),Ce(e),null!=e)n=e.clientX-al.left,l=e.clientY-al.top;else{if(n<0||l<0)return us=-10,void(ds=-10);let[e,s]=Ll.scales,o=t.cursor.sync,[c,u]=o.values,[d,m]=o.scales,[h,f]=Ll.match,p=t.axes[0].side%2==1,x=0==_.ori?re:oe,g=1==_.ori?re:oe,b=p?i:a,v=p?a:i,y=p?l:n,w=p?n:l;if(n=null!=d?h(e,d)?r(c,j[e],x,0):-10:x*(y/b),l=null!=m?f(s,m)?r(u,j[s],g,0):-10:g*(w/v),1==_.ori){let e=n;n=l,l=e}}!u||null!=t&&t.cursor.event.type!=He||((n<=1||n>=re-1)&&(n=sn(n,re)),(l<=1||l>=oe-1)&&(l=sn(l,oe))),c?(qn=n,Un=l,[Xn,Kn]=B.move(s,n,l)):(us=n,ds=l)}Object.defineProperty(s,"rect",{get:()=>(null==al&&il(!1),al)});const cl={width:0,height:0,left:0,top:0};function ul(){Fs(cl,!1)}let dl,ml,hl,fl;function xl(e,t,n,l,a,i,r){Ts=!0,Cs=_s=Ss._x=Ss._y=!1,ol(e,t,n,l,a,i,0,!0,!1),null!=e&&(se(Oe,Ke,Pl,!1),Hl(Be,s,Xn,Kn,re,oe,null));let{left:o,top:c,width:u,height:d}=Ps;dl=o,ml=c,hl=u,fl=d}function Pl(e,t,n,l,a,i,r){Ts=Ss._x=Ss._y=!1,ol(e,t,n,l,a,i,0,!1,!0);let{left:o,top:c,width:u,height:d}=Ps,m=u>0||d>0,h=dl!=o||ml!=c||hl!=u||fl!=d;if(m&&h&&Fs(Ps),Ss.setScale&&m&&h){let e=o,t=u,n=c,s=d;if(1==_.ori&&(e=c,t=d,n=o,s=u),Cs&&Os(N,Js(e,N),Js(e+t,N)),_s)for(let l in j){let e=j[l];l!=N&&null==e.from&&e.min!=It&&Os(l,Js(n+s,l),Js(n,l))}ul()}else B.lock&&(B._lock=!B._lock,ll(t,!0,null!=e));null!=e&&(le(Oe,Ke),Hl(Oe,s,us,ds,re,oe,null))}function Al(e,t,n,l,a,i,r){B._lock||(Ce(e),Mn(),ul(),null!=e&&Hl(Ie,s,us,ds,re,oe,null))}function Rl(){w.forEach(_l),Me(s.width,s.height,!0)}ft(qe,Je,Rl);const Dl={};Dl.mousedown=xl,Dl.mousemove=rl,Dl.mouseup=Pl,Dl.dblclick=Al,Dl.setSeries=(e,t,n,l)=>{-1!=(n=(0,Ll.match[2])(s,t,n))&&Vs(n,l,!0,!1)},G&&(se(Be,f,xl),se(He,f,rl),se(Ge,f,e=>{Ce(e),il(!1)}),se(Ve,f,function(e,t,n,s,l,a,i){if(B._lock)return;Ce(e);let r=Ts;if(Ts){let e,t,n=!0,s=!0,l=10;0==_.ori?(e=Cs,t=_s):(e=_s,t=Cs),e&&t&&(n=us<=l||us>=re-l,s=ds<=l||ds>=oe-l),e&&n&&(us=us{e.call(null,s,t,n)})}(e.plugins||[]).forEach(e=>{for(let t in e.hooks)El[t]=(El[t]||[]).concat(e.hooks[t])});const Fl=(e,t,n)=>n,Ll=jn({key:null,setSeries:!1,filters:{pub:Qt,sub:Qt},scales:[N,b[1]?b[1].scale:null],match:[en,en,Fl],values:[null,null]},B.sync);2==Ll.match.length&&Ll.match.push(Fl),B.sync=Ll;const zl=Ll.key,Wl=Gs(zl);function Hl(e,t,n,s,l,a,i){Ll.filters.pub(e,t,n,s,l,a,i)&&Wl.pub(e,t,n,s,l,a,i)}function Bl(){$l("init",e,t),kn(t||e.data,!1),D[N]?vs(N,D[N]):Mn(),ke=Ps.show&&(Ps.width>0||Ps.height>0),je=Ne=!0,Me(e.width,e.height)}return Wl.sub(s),s.pub=function(e,t,n,s,l,a,i){Ll.filters.sub(e,t,n,s,l,a,i)&&Dl[e](null,t,n,s,l,a,i)},s.destroy=function(){Wl.unsub(s),pl.delete(s),ne.clear(),pt(qe,Je,Rl),c.remove(),null==I||I.remove(),$l("destroy")},b.forEach(ut),w.forEach(function(e,t){if(e._show=e.show,e.show){let n=e.side%2,l=j[e.scale];null==l&&(e.scale=n?b[1].scale:N,l=j[e.scale]);let a=l.time;e.size=Xt(e.size),e.space=Xt(e.space),e.rotate=Xt(e.rotate),fn(e.incrs)&&e.incrs.forEach(e=>{!on.has(e)&&on.set(e,cn(e))}),e.incrs=Xt(e.incrs||(2==l.distr?Wn:a?1==g?Zn:ts:Hn)),e.splits=Xt(e.splits||(a&&1==l.distr?F:3==l.distr?Ns:4==l.distr?Ms:ks)),e.stroke=Xt(e.stroke),e.grid.stroke=Xt(e.grid.stroke),e.ticks.stroke=Xt(e.ticks.stroke),e.border.stroke=Xt(e.border.stroke);let i=e.values;e.values=fn(i)&&!fn(i[0])?Xt(i):a?fn(i)?as(E,ls(i,$)):xn(i)?function(e,t){let n=Dn(t);return(t,s,l,a,i)=>s.map(t=>n(e(t)))}(E,i):i||L:i||js,e.filter=Xt(e.filter||(l.distr>=3&&10==l.log?As:3==l.distr&&2==l.log?Rs:Jt)),e.font=Cl(e.font),e.labelFont=Cl(e.labelFont),e._size=e.size(s,null,t,0),e._space=e._rotate=e._incrs=e._found=e._splits=e._values=null,e._size>0&&(mt[t]=!0,e._el=at("u-axis",m))}}),n?n instanceof HTMLElement?(n.appendChild(c),Bl()):n(s,Bl):Bl(),s}Pl.assign=jn,Pl.fmtNum=At,Pl.rangeNum=St,Pl.rangeLog=jt,Pl.rangeAsinh=kt,Pl.orient=Vs,Pl.pxRatio=Qe,Pl.join=function(e,t){if(function(e){let t=e[0][0],n=t.length;for(let s=1;s=s&&null==e[l];)l--;if(l<=s)return!0;const a=Wt(1,$t((l-s+1)/t));for(let i=e[s],r=s+a;r<=l;r+=a){const t=e[r];if(null!=t){if(t<=i)return!1;i=t}}return!0}(t[0])||(t=function(e){let t=e[0],n=t.length,s=Array(n);for(let a=0;at[e]-t[n]);let l=[];for(let a=0;ae-t)],l=s[0].length,a=new Map;for(let i=0;iVs(e,a,(o,c,u,d,m,h,f,p,x,g,b)=>{[i,r]=yt(u,i,r);let v=o.pxRound,{left:y,width:w}=e.bbox,j=e=>v(h(e,d,g,p)),k=e=>v(f(e,m,b,x)),N=0==d.ori?el:tl;const M={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},T=M.stroke,S=d.dir*(0==d.ori?1:-1);let C=k(u[1==S?i:r]),_=j(c[1==S?i:r]),P=_,A=_;l&&-1==t&&(A=y,N(T,A,C)),N(T,_,C);for(let e=1==S?i:r;e>=i&&e<=r;e+=S){let n=u[e];if(null==n)continue;let s=j(c[e]),l=k(n);1==t?N(T,s,C):N(T,P,l),N(T,s,l),C=l,P=s}let R=P;l&&1==t&&(R=y+w,N(T,R,C));let[D,E]=Is(e,a);if(null!=o.fill||0!=D){let t=M.fill=new Path2D(T),n=k(o.fillTo(e,a,o.min,o.max,D));N(t,R,n),N(t,A,n)}if(!o.spanGaps){let l=[];l.push(...Xs(c,u,i,r,S,j,s));let m=o.width*Qe/2,h=n||1==t?m:-m,f=n||-1==t?-m:m;l.forEach(e=>{e[0]+=h,e[1]+=f}),M.gaps=l=o.gaps(e,a,i,r,l),M.clip=Us(l,d.ori,p,x,g,b)}return 0!=E&&(M.band=2==E?[qs(e,a,i,r,T,-1),qs(e,a,i,r,T,1)]:qs(e,a,i,r,T,E)),M})},e.bars=function(e){const t=Ct((e=e||dn).size,[.6,It,1]),n=e.align||0,s=e.gap||0;let l=e.radius;l=null==l?[0,0]:"number"==typeof l?[l,0]:l;const a=Xt(l),i=1-t[0],r=Ct(t[1],It),o=Ct(t[2],1),c=Ct(e.disp,dn),u=Ct(e.each,e=>{}),{fill:d,stroke:m}=c;return(e,t,l,h)=>Vs(e,t,(f,p,x,g,b,v,y,w,j,k,N)=>{let M,T,S=f.pxRound,C=n,_=s*Qe,P=r*Qe,A=o*Qe;0==g.ori?[M,T]=a(e,t):[T,M]=a(e,t);const R=g.dir*(0==g.ori?1:-1);let D,E,$,F=0==g.ori?nl:sl,L=0==g.ori?u:(e,t,n,s,l,a,i)=>{u(e,t,n,l,s,i,a)},z=Ct(e.bands,mn).find(e=>e.series[0]==t),W=null!=z?z.dir:0,H=f.fillTo(e,t,f.min,f.max,W),B=S(y(H,b,N,j)),O=k,G=S(f.width*Qe),V=!1,I=null,Y=null,q=null,U=null;null==d||0!=G&&null==m||(V=!0,I=d.values(e,t,l,h),Y=new Map,new Set(I).forEach(e=>{null!=e&&Y.set(e,new Path2D)}),G>0&&(q=m.values(e,t,l,h),U=new Map,new Set(q).forEach(e=>{null!=e&&U.set(e,new Path2D)})));let{x0:X,size:K}=c;if(null!=X&&null!=K){C=1,p=X.values(e,t,l,h),2==X.unit&&(p=p.map(t=>e.posToVal(w+t*k,g.key,!0)));let n=K.values(e,t,l,h);E=2==K.unit?n[0]*k:v(n[0],g,k,w)-v(0,g,k,w),O=hl(p,x,v,g,k,w,O),$=O-E+_}else O=hl(p,x,v,g,k,w,O),$=O*i+_,E=O-$;$<1&&($=0),G>=E/2&&(G=0),$<5&&(S=Kt);let J=$>0;E=S(qt(O-$-(J?G:0),A,P)),D=(0==C?E/2:C==R?0:E)-C*R*((0==C?_/2:0)+(J?G/2:0));const Z={stroke:null,fill:null,clip:null,band:null,gaps:null,flags:0},Q=V?null:new Path2D;let ee=null;if(null!=z)ee=e.data[z.series[1]];else{let{y0:n,y1:s}=c;null!=n&&null!=s&&(x=s.values(e,t,l,h),ee=n.values(e,t,l,h))}let te=M*E,ne=T*E;for(let n=1==R?l:h;n>=l&&n<=h;n+=R){let s=x[n];if(null==s)continue;if(null!=ee){let e=ee[n]??0;if(s-e==0)continue;B=y(e,b,N,j)}let l=v(2!=g.distr||null!=c?p[n]:n,g,k,w),a=y(Ct(s,H),b,N,j),i=S(l-D),r=S(Wt(a,B)),o=S(zt(a,B)),u=r-o;if(null!=s){let l=s<0?ne:te,a=s<0?te:ne;V?(G>0&&null!=q[n]&&F(U.get(q[n]),i,o+$t(G/2),E,Wt(0,u-G),l,a),null!=I[n]&&F(Y.get(I[n]),i,o+$t(G/2),E,Wt(0,u-G),l,a)):F(Q,i,o+$t(G/2),E,Wt(0,u-G),l,a),L(e,t,n,i-G/2,o,E+G,u)}}return G>0?Z.stroke=V?U:Q:V||(Z._fill=0==f.width?f._fill:f._stroke??f._fill,Z.width=0),Z.fill=V?Y:Q,Z})},e.spline=function(e){return function(e,t){const n=Ct(null==t?void 0:t.alignGaps,0);return(t,s,l,a)=>Vs(t,s,(i,r,o,c,u,d,m,h,f,p,x)=>{[l,a]=yt(o,l,a);let g,b,v,y=i.pxRound,w=e=>y(d(e,c,p,h)),j=e=>y(m(e,u,x,f));0==c.ori?(g=Zs,v=el,b=il):(g=Qs,v=tl,b=rl);const k=c.dir*(0==c.ori?1:-1);let N=w(r[1==k?l:a]),M=N,T=[],S=[];for(let e=1==k?l:a;e>=l&&e<=a;e+=k)if(null!=o[e]){let t=w(r[e]);T.push(M=t),S.push(j(o[e]))}const C={stroke:e(T,S,g,v,b,y),fill:null,clip:null,band:null,gaps:null,flags:1},_=C.stroke;let[P,A]=Is(t,s);if(null!=i.fill||0!=P){let e=C.fill=new Path2D(_),n=j(i.fillTo(t,s,i.min,i.max,P));v(e,M,n),v(e,N,n)}if(!i.spanGaps){let e=[];e.push(...Xs(r,o,l,a,k,w,n)),C.gaps=e=i.gaps(t,s,l,a,e),C.clip=Us(e,c.ori,h,f,p,x)}return 0!=A&&(C.band=2==A?[qs(t,s,l,a,_,-1),qs(t,s,l,a,_,1)]:qs(t,s,l,a,_,A)),C})}(fl,e)}}a.memo(function({options:e,data:t,className:n="",onCreate:s}){const i=a.useRef(null),r=a.useRef(null);return a.useEffect(()=>{const n=i.current;if(!n)return;const l=n.getBoundingClientRect(),a=Math.floor(l.width)||400,o=Math.floor(l.height)||200,c=new Pl({...e,width:a,height:o},t,n);return r.current=c,null==s||s(c),()=>{c.destroy(),r.current=null}},[e]),a.useEffect(()=>{r.current&&t&&r.current.setData(t)},[t]),a.useEffect(()=>{const e=i.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!r.current)return;const{width:n,height:s}=t.contentRect;n>0&&s>0&&r.current.setSize({width:Math.floor(n),height:Math.floor(s)})});return t.observe(e),()=>{t.disconnect()}},[]),l.jsx("div",{ref:i,className:`w-full h-full ${n}`,style:{minHeight:100}})});const Al=new Map;function Rl(e){var t;if(!e.startsWith("var("))return e;const n=Al.get(e);if(n)return n;const s=e.match(/var\(([^,)]+)(?:,\s*([^)]+))?\)/);if(!s)return e;const l=s[1].trim(),a=(null==(t=s[2])?void 0:t.trim())||"#888888",i=getComputedStyle(document.documentElement).getPropertyValue(l).trim()||a;return Al.set(e,i),i}const Dl=a.memo(function({timestamps:e,series:t,onHover:n,highlightedKey:s=null,cursorColor:i="rgba(255,255,255,0.5)"}){const r=a.useRef(null),o=a.useRef(null),c=a.useRef(t),u=a.useRef(s),d=a.useRef(n),m=a.useRef(e.length);c.current=t,u.current=s,d.current=n;const h=a.useMemo(()=>{const t=new Array(e.length).fill(1);return[e,t]},[e]),f=a.useMemo(()=>({hooks:{draw:e=>{!function(e,t,n){if(0===t.length)return;const s=e.ctx,l=e.bbox,a=l.left,i=l.top,r=l.width,o=l.height;if(r<=0||o<=0)return;const c=e.data[0],u=c.length;if(0===u)return;const d=c[0],m=c[u-1]-d||1,h=e=>{const t=c[e];return a+(t-d)/m*r},f=e=>i+o*(1-e);for(let p=0;p=0;t--){const e=h(t),n=f(a[t]);if(t===u-1)s.lineTo(e,n);else{const l=h(t+1);s.lineTo(l,n),s.lineTo(e,n)}}s.closePath(),s.fill(),s.restore()}}(e,c.current,u.current),function(e){const t=e.ctx,{left:n,top:s,width:l,height:a}=e.bbox;t.save(),t.strokeStyle="#1a3a4a",t.lineWidth=1,t.setLineDash([4,4]);for(const i of[.2,.4,.6,.8]){const e=s+a*(1-i);t.beginPath(),t.moveTo(n,e),t.lineTo(n+l,e),t.stroke()}t.restore(),t.save(),t.font='bold 10px "JetBrains Mono", monospace',t.fillStyle="#1a3a4a",t.textBaseline="bottom";for(const i of[20,40,60,80]){const e=s+a*(1-i/100);t.fillText(`${i}%`,n+4,e-4)}t.restore()}(e)}}}),[]),p=a.useMemo(()=>({width:400,height:200,padding:[0,0,0,0],cursor:{show:!0,x:!0,y:!1,drag:{x:!1,y:!1},points:{show:!1}},scales:{x:{time:!0},y:{range:[0,1]}},axes:[{show:!1},{show:!1}],series:[{},{show:!1}],hooks:{setCursor:[e=>{var t,n;const s=e.cursor.idx;if(null!=s&&s>=0){const n=e.data[0][s];null==(t=d.current)||t.call(d,s,n)}else null==(n=d.current)||n.call(d,null,null)}]},plugins:[f]}),[f]);a.useEffect(()=>{const t=r.current;if(!t||0===e.length)return;const n=m.current,s=e.length,l=Math.abs(s-n);if(!(!o.current||l>100||n>0&&l/n>.1)&&o.current)return o.current.setData(h),void(m.current=s);o.current&&o.current.destroy();const a=t.getBoundingClientRect(),i=Math.floor(a.width)||400,c=Math.floor(a.height)||200,u=new Pl({...p,width:i,height:c},h,t);return o.current=u,m.current=s,()=>{u.destroy(),o.current=null}},[p,h,e.length]),a.useEffect(()=>{const e=r.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!o.current)return;const{width:n,height:s}=t.contentRect;n>0&&s>0&&o.current.setSize({width:Math.floor(n),height:Math.floor(s)})});return t.observe(e),()=>{t.disconnect()}},[]),a.useEffect(()=>{o.current&&o.current.redraw()},[s,t]);const x=a.useCallback(()=>{null==n||n(null,null)},[n]);return 0===e.length?l.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No data available"}):l.jsx("div",{ref:r,className:"w-full h-full rounded-2xl overflow-hidden",onMouseLeave:x})}),El=new Map;function $l(e){var t;if(!e.startsWith("var("))return e;const n=El.get(e);if(n)return n;const s=e.match(/var\(([^,)]+)(?:,\s*([^)]+))?\)/);if(!s)return e;const l=s[1].trim(),a=(null==(t=s[2])?void 0:t.trim())||"#888888",i=getComputedStyle(document.documentElement).getPropertyValue(l).trim()||a;return El.set(e,i),i}function Fl(e,t,n=!1){if(t.length<2)return;if(e.beginPath(),e.moveTo(t[0].x,t[0].y),2===t.length)return void e.lineTo(t[1].x,t[1].y);const s=.5;for(let l=0;l{const a=e.current,i=t.current,r=n.current;if(0===a.length)return;const o=l.ctx,c=l.bbox,u=c.left,d=c.top,m=c.width,h=c.height;if(m<=0||h<=0)return;const f=l.data[0],p=f.length;if(0===p)return;const x=f[0],g=f[p-1]-x||1,b=e=>u+(e-x)/g*m,v=e=>d+h*(1-e/i),y={min:a.map(e=>({x:b(e.timestamp),y:v(e.min)})),max:a.map(e=>({x:b(e.timestamp),y:v(e.max)})),p5:a.map(e=>({x:b(e.timestamp),y:v(e.p5)})),p95:a.map(e=>({x:b(e.timestamp),y:v(e.p95)})),p25:a.map(e=>({x:b(e.timestamp),y:v(e.p25)})),p75:a.map(e=>({x:b(e.timestamp),y:v(e.p75)})),mean:a.map(e=>({x:b(e.timestamp),y:v(e.mean)})),median:a.map(e=>({x:b(e.timestamp),y:v(e.median)})),average:a.map(e=>({x:b(e.timestamp),y:v(e.average)}))},w=(e,t)=>r?r===e?Math.min(1,1.5*t):"minMax"===r||"p5p95"===r||"p25p75"===r?.3*t:t:t,j=e=>r?r===e?1:"mean"===r||"median"===r||"average"===r?.3:1:1,k={band:$l(s.band),innerBand:$l(s.innerBand),mean:$l(s.mean),median:$l(s.median),average:$l(s.average)};o.save(),o.strokeStyle=k.average,o.lineWidth=4,o.globalAlpha=j("average"),Fl(o,y.average),o.stroke(),o.globalAlpha=w("minMax",.15),o.fillStyle=k.band,o.beginPath(),Fl(o,y.max);const N=[...y.min].reverse();for(const e of N)o.lineTo(e.x,e.y);o.closePath(),o.fill(),o.globalAlpha=w("p5p95",.3),o.fillStyle=k.band,o.beginPath(),Fl(o,y.p95);const M=[...y.p5].reverse();for(const e of M)o.lineTo(e.x,e.y);o.closePath(),o.fill(),o.globalAlpha=w("p25p75",.55),o.fillStyle=k.innerBand,o.beginPath(),Fl(o,y.p75);const T=[...y.p25].reverse();for(const e of T)o.lineTo(e.x,e.y);o.closePath(),o.fill(),o.strokeStyle=k.median,o.lineWidth=1.5,o.globalAlpha=j("median"),o.setLineDash([4,4]),Fl(o,y.median),o.stroke(),o.strokeStyle=k.mean,o.lineWidth=1.5,o.globalAlpha=j("mean"),o.setLineDash([]),Fl(o,y.mean),o.stroke(),o.restore()}}}}a.memo(function({data:e,maxValue:t,onHover:n,highlightedItem:s=null,bandColor:i="#E12672",innerBandColor:r="#FF2D7A",meanColor:o="#FF6B9D",medianColor:c="#FF85AD",averageColor:u="#FFE135",cursorColor:d="rgba(255,255,255,0.5)"}){const m=a.useRef(null),h=a.useRef(null),f=a.useRef(e),p=a.useRef(t),x=a.useRef(s),g=a.useRef(n),b=a.useRef(e.length);f.current=e,p.current=t,x.current=s,g.current=n;const v=a.useMemo(()=>({band:i,innerBand:r,mean:o,median:c,average:u,cursor:d}),[i,r,o,c,u,d]),y=a.useMemo(()=>[e.map(e=>e.timestamp),e.map(e=>e.max)],[e]),w=a.useMemo(()=>({width:400,height:200,padding:[4,4,4,4],cursor:{show:!0,x:!0,y:!1,drag:{x:!1,y:!1},points:{show:!1}},scales:{x:{time:!0},y:{range:[0,t]}},axes:[{show:!1},{show:!1}],series:[{},{show:!1}],hooks:{setCursor:[e=>{var t,n;const s=e.cursor.idx;null!=s&&s>=0?null==(t=g.current)||t.call(g,s):null==(n=g.current)||n.call(g,null)}]},plugins:[Ll(f,p,x,v)]}),[t,v]);a.useEffect(()=>{const t=m.current;if(!t||0===e.length)return;const n=b.current,s=e.length,l=Math.abs(s-n);if(!(!h.current||l>100||n>0&&l/n>.1)&&h.current)return h.current.setData(y),void(b.current=s);h.current&&h.current.destroy();const a=t.getBoundingClientRect(),i=Math.floor(a.width)||400,r=Math.floor(a.height)||200,o=new Pl({...w,width:i,height:r},y,t);return h.current=o,b.current=s,()=>{o.destroy(),h.current=null}},[w,y,e.length]),a.useEffect(()=>{const e=m.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!h.current)return;const{width:n,height:s}=t.contentRect;n>0&&s>0&&h.current.setSize({width:Math.floor(n),height:Math.floor(s)})});return t.observe(e),()=>{t.disconnect()}},[]),a.useEffect(()=>{h.current&&h.current.redraw()},[s,e]);const j=a.useCallback(()=>{null==n||n(null)},[n]);return 0===e.length?l.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No data available"}):l.jsx("div",{ref:m,className:"w-full h-full rounded-2xl overflow-hidden",onMouseLeave:j})});const zl={useAbsoluteThresholds:!0,baselinePercentile:6,spikePercentile:50,baselineDbm:-107,spikeDbm:-100,mergeGapSeconds:45,minSequenceLength:16,similarityToleranceDbm:5};function Wl(e,t){if(0===e.length)return 0;const n=t/100*(e.length-1),s=Math.floor(n),l=Math.ceil(n);return s===l?e[s]:e[s]+(e[l]-e[s])*(n-s)}function Hl(e){if(0===e.length)return{median:0,p90:0,p95:0,p99:0,max:0,min:0};const t=[...e].sort((e,t)=>e-t);return{median:Wl(t,50),p90:Wl(t,90),p95:Wl(t,95),p99:Wl(t,99),max:t[t.length-1],min:t[0]}}function Bl(e,t,n){const s=n-t;if(0===s)return"moderate";const l=(e-t)/s;return l>.66?"critical":l>.33?"severe":"moderate"}function Ol(e){switch(e){case"critical":return"rgba(239, 68, 68, 0.6)";case"severe":return"rgba(249, 115, 22, 0.5)";case"moderate":return"rgba(250, 204, 21, 0.4)"}}function Gl(){const e=getComputedStyle(document.documentElement);return{fontFamily:e.getPropertyValue("--font-data").trim()||'"JetBrains Mono", ui-monospace, monospace',axisColor:e.getPropertyValue("--chart-axis-tick").trim()||"rgba(255, 255, 255, 0.4)",gridColor:e.getPropertyValue("--chart-grid").trim()||"rgba(255, 255, 255, 0.06)",textMuted:e.getPropertyValue("--text-muted").trim()||"#727272",textPrimary:e.getPropertyValue("--text-primary").trim()||"#FFFFFF"}}"undefined"!=typeof window&&(null==(t=null==(e=window.matchMedia)?void 0:e.call(window,"(color-gamut: p3)"))||t.matches);const Vl=["min","max","p75","p95","p99","mean","median","average","midpoint"];let Il=null,Yl=0;const ql={0:"--pkt-science-req",1:"--pkt-science-response",2:"--pkt-science-txt-msg",3:"--pkt-science-ack",4:"--pkt-science-advert",5:"--pkt-science-grp-txt",6:"--pkt-science-grp-data",7:"--pkt-science-anon-req",8:"--pkt-science-path",9:"--pkt-science-trace",10:"--pkt-science-multipart",15:"--pkt-science-raw-custom"};let Ul=null,Xl=0;function Kl(e){if(!e||!e.startsWith("#"))return{r:102,g:102,b:102};const t=e.slice(1);return 3===t.length?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16)}:6===t.length?{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16)}:{r:102,g:102,b:102}}function Jl(e){const t=function(){const e=Date.now();if(Ul&&e-Xl<1e3)return Ul;const t=getComputedStyle(document.documentElement),n=new Map;for(const[l,a]of Object.entries(ql)){const e=Kl(t.getPropertyValue(a).trim());n.set(parseInt(l),e)}const s=t.getPropertyValue("--pkt-science-unknown").trim();return n.set(255,Kl(s)),Ul=n,Xl=e,n}();return t.get(e)??t.get(255)??{r:102,g:102,b:102}}function Zl(e){const t=Date.now();(!Il||t-Yl>1e3)&&(Il={green:{r:34,g:197,b:94,p3:"color(display-p3 0.13 0.77 0.37)"},good:{r:132,g:204,b:22,p3:"color(display-p3 0.52 0.80 0.09)"},fair:{r:250,g:204,b:21,p3:"color(display-p3 0.98 0.80 0.08)"},poor:{r:249,g:115,b:22,p3:"color(display-p3 0.98 0.45 0.09)"},critical:{r:239,g:68,b:68,p3:"color(display-p3 0.94 0.27 0.27)"}},Yl=t);const n=Il;return e>=1?n.critical:e>=.75?n.poor:e>=.5?n.fair:e>=.25?n.good:n.green}const Ql=a.memo(function({data:e,maxValue:t,visibleLines:n=Vl,highlightedLine:s=null,onHover:i,scatterData:r=null,noiseFloorAnomalies:o=null,showNoiseFloorOverlay:c=!1,highlightedType:u=null,hoveredTimeRange:d=null,timeRangeHours:m=24}){const h=a.useRef(null),f=a.useRef(null),p=a.useRef(e),x=a.useRef(t),g=a.useRef(n),b=a.useRef(s),v=a.useRef(i),y=a.useRef(r),w=a.useRef(o),j=a.useRef(c),k=a.useRef(u),N=a.useRef(d),M=a.useRef(null),T=a.useRef(null),S=m<=12?1.2:1,C=a.useRef(S),_=a.useRef(e.length);p.current=e,x.current=t,g.current=n,b.current=s,v.current=i,y.current=r,w.current=o,j.current=c,k.current=u,N.current=d,C.current=S,a.useEffect(()=>{M.current=Gl()},[]);const P=a.useMemo(()=>[e.map(e=>e.timestamp),new Array(e.length).fill(1)],[e]),A=a.useMemo(()=>({hooks:{draw:e=>{const t=M.current||Gl();!function(e,t,n,s,l,a,i,r,o,c=null,u=null,d=1,m=null){if(0===t.length)return;const h=e.ctx,{left:f,top:p,width:x,height:g}=e.bbox,b=window.devicePixelRatio||1;if(x<=0||g<=0)return;const v=e.data[0],y=v.length;if(0===y)return;const w=v[0],j=v[y-1],k=n,N=getComputedStyle(document.documentElement),M=N.getPropertyValue("--signal-critical").trim()||"#EF4444",T=N.getPropertyValue("--bg-elevated").trim()||"#333233";h.save(),h.fillStyle="rgba(0, 0, 0, 0.4)";const S=8*b;if(h.beginPath(),h.roundRect(f,p,x,g,S),h.fill(),h.restore(),k>=20){h.save();const e=p+g*(1-20/k);h.fillStyle=T,h.globalAlpha=.5,h.fillRect(f,p,x,e-p),h.restore()}h.save(),h.lineWidth=1*b,h.setLineDash([4*b,4*b]);for(let _=5;_n+l)return;const r=getComputedStyle(document.documentElement).getPropertyValue("--text-primary").trim()||"#FFFFFF";e.save(),e.strokeStyle=r,e.globalAlpha=.5,e.lineWidth=1*i,e.setLineDash([4*i,4*i]),e.beginPath(),e.moveTo(Math.round(t)+.5,s),e.lineTo(Math.round(t)+.5,s+a),e.stroke(),e.restore()}(h,m,f,p,x,g,b),i){!function(e,t,n,s,l,a,i=null,r=null,o=1,c=25){const{points:u,rawValues:d,count:m,packetTypes:h,timestamps:f,maxValue:p}=t,x=3*o*(window.devicePixelRatio||1);e.globalCompositeOperation="source-over";const g=i?parseInt(i.replace("TYPE_",""),10):null;for(let b=0;b=r.start&&e0&&function(e,t,n,s,l,a,i,r,o,c){if(0===t.length)return;const u=o-r||1;e.save();for(const d of t){if(d.endTso)continue;const t=s+(Math.max(d.startTs,r)-r)/u*a,n=s+(Math.min(d.endTs,o)-r)/u*a,m=Math.max(n-t,2*c);e.fillStyle=Ol(d.severity),e.fillRect(t,l,m,i)}e.restore()}(h,r,0,f,p,x,g,w,j,b)}(e,p.current,x.current,g.current,b.current,t,y.current,w.current,j.current,k.current,N.current,C.current,T.current)}}}),[]),R=a.useMemo(()=>({width:400,height:200,padding:[8,0,8,28],cursor:{show:!1,x:!1,y:!1,drag:{x:!1,y:!1},points:{show:!1}},scales:{x:{time:!0},y:{range:[0,1]}},axes:[{show:!1},{show:!1}],series:[{},{show:!1}],plugins:[A]}),[A]);a.useEffect(()=>{const t=h.current;if(!t||0===e.length)return;const n=_.current,s=e.length,l=Math.abs(s-n);if(!(!f.current||l>100||n>0&&l/n>.1)&&f.current)return f.current.setData(P),void(_.current=s);f.current&&f.current.destroy();const a=t.getBoundingClientRect(),i=Math.floor(a.width)||400,r=Math.floor(a.height)||200,o=new Pl({...R,width:i,height:r},P,t);return f.current=o,_.current=s,()=>{o.destroy(),f.current=null}},[R,P,e.length]),a.useEffect(()=>{const e=h.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!f.current)return;const{width:n,height:s}=t.contentRect;n>0&&s>0&&f.current.setSize({width:Math.floor(n),height:Math.floor(s)})});return t.observe(e),()=>{t.disconnect()}},[]),a.useEffect(()=>{f.current&&f.current.redraw()},[s,n,e,r,o,c,u,d,S]);const D=a.useCallback(t=>{var n,s;const l=h.current,a=f.current;if(!l||!a||0===e.length)return;const i=l.getBoundingClientRect(),r=t.clientX-i.left,o=window.devicePixelRatio||1,c=a.bbox,u=c.left/o,d=c.width/o;if(ru+d)return T.current=null,a.redraw(),void(null==(n=v.current)||n.call(v,null));T.current=r*o;const m=(r-u)/d,p=e.length,x=Math.floor(m*p),g=Math.max(0,Math.min(p-1,x));a.redraw(),null==(s=v.current)||s.call(v,g)},[e.length]),E=a.useCallback(()=>{var e;T.current=null,f.current&&f.current.redraw(),null==(e=v.current)||e.call(v,null)},[]);return 0===e.length?l.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No data available"}):l.jsx("div",{ref:h,className:"w-full h-full rounded-lg overflow-hidden",onMouseMove:D,onMouseLeave:E})}),ea={[L.REQ]:"var(--pkt-science-req)",[L.ANON_REQ]:"var(--pkt-science-anon-req)",[L.RESPONSE]:"var(--pkt-science-response)",[L.ACK]:"var(--pkt-science-ack)",[L.ADVERT]:"var(--pkt-science-advert)",[L.TXT_MSG]:"var(--pkt-science-txt-msg)",[L.GRP_TXT]:"var(--pkt-science-grp-txt)",[L.GRP_DATA]:"var(--pkt-science-grp-data)",[L.PATH]:"var(--pkt-science-path)",[L.TRACE]:"var(--pkt-science-trace)",[L.MULTIPART]:"var(--pkt-science-multipart)",[L.RAW_CUSTOM]:"var(--pkt-science-raw-custom)"},ta="var(--pkt-science-unknown)";function na(e){return"number"!=typeof e?ta:ea[e]??ta}const sa=new class{constructor(){s(this,"buckets",new Map),s(this,"lastProcessedTimestamp",0),s(this,"processedPacketCount",0),s(this,"cacheKey",null),s(this,"bucketDuration",60),s(this,"bucketDurationMs",6e4)}getBuckets(e,t,n,s){const l={startTs:t,endTs:n,radioConfigHash:this.hashRadioConfig(s)};return this.isCacheValid(l)?this.processPackets(e,t,n,s,!1):(this.invalidate(l),this.processPackets(e,t,n,s,!0)),this.toBucketDataArray(t,n)}processPackets(e,t,n,s,l){const a=Math.ceil((n-t)/this.bucketDuration);let i=0;for(const r of e){const e=r.timestamp;if(e=n)continue;if(!l&&e<=this.lastProcessedTimestamp)continue;const o=Math.min(Math.floor((e-t)/this.bucketDuration),a-1),c=this.buckets.get(o)??{total:0,totalAirtime:0};c.total+=1;const u=$(r);c.totalAirtime+=F(u,{spreadingFactor:s.sf,bandwidthHz:s.bw,codingRate:s.cr,preambleLength:s.preamble}),this.buckets.set(o,c),e>this.lastProcessedTimestamp&&(this.lastProcessedTimestamp=e),i++}this.processedPacketCount+=i}toBucketDataArray(e,t){const n=t-e,s=Math.ceil(n/this.bucketDuration),l=n/3600,a=[];for(let i=0;i24?n.toLocaleDateString([],{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}):n.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),r=this.buckets.get(i)??{total:0,totalAirtime:0};a.push({timestamp:t,time:s,total:r.total,totalAirtime:r.totalAirtime,bucketDurationMs:this.bucketDurationMs})}return a}isCacheValid(e){return!!this.cacheKey&&this.cacheKey.startTs===e.startTs&&this.cacheKey.endTs===e.endTs&&this.cacheKey.radioConfigHash===e.radioConfigHash}invalidate(e){this.buckets.clear(),this.lastProcessedTimestamp=0,this.processedPacketCount=0,this.cacheKey=e}hashRadioConfig(e){return`${e.sf}-${e.bw}-${e.cr}-${e.preamble}`}clear(){this.buckets.clear(),this.lastProcessedTimestamp=0,this.processedPacketCount=0,this.cacheKey=null}getStats(){return{bucketCount:this.buckets.size,processedPackets:this.processedPacketCount,lastTimestamp:this.lastProcessedTimestamp,cacheKey:this.cacheKey}}};function la(e){return z[e]??`TYPE_${e.toString(16).toUpperCase()}`}const aa={sf:10,bw:25e4,cr:5,preamble:8};function ia(e,t){if(0===e.length)return[];const n=Math.floor((t-1)/2),s=[];for(let l=0;l=n?e[l-n]:e[0];s.push(e[l]+(e[l]-t))}return function(e,t){if(0===e.length)return[];const n=2/(t+1),s=[e[0]];for(let l=1;l{if(!i)return null;const e=new Map;for(const t of i.items)e.set(t.key,t.value);return e},[i]),o=null!==r;return l.jsx("div",{className:"flex-shrink-0 pt-3 mt-2",children:l.jsx("div",{className:"grid ml-9 gap-y-0.5",style:{gridTemplateColumns:"repeat(auto-fill, minmax(105px, 1fr))"},onMouseLeave:()=>n(null),children:e.map(e=>{const a=na(e.typeNum),i=(null==r?void 0:r.get(e.key))??0,c=s.get(e.key)??0,u=o?i:c,d=u>1e-4,m=t===e.key,h=t&&t!==e.key;let f="legend-item";return m?f+=" legend-item-active":h?f+=" legend-item-dimmed":o&&i>1e-4?f+=" legend-item-chart-active":o&&i<=1e-4&&(f+=" legend-item-dimmed"),l.jsxs("div",{className:f,onMouseEnter:()=>n(e.key),children:[l.jsx("div",{className:"w-2.5 h-2.5 rounded flex-shrink-0",style:{backgroundColor:a}}),l.jsx("span",{className:"legend-label",children:e.label}),d&&l.jsxs("span",{className:"legend-value "+(o?"legend-value-live":""),children:[(100*u).toFixed(1),"%"]})]},e.key)})})})}function oa({x:e,y:t,width:n,height:s,name:a,size:i,index:r,depth:o,hoveredIndex:c,onHover:u,total:d,typeNum:m}){if(1!==o)return null;const h=null!==c&&!(c===r),f=na(m),p=d>0?i/d*100:0,x=n>36&&s>20,g=n>36&&s>32;return l.jsxs("g",{onMouseEnter:e=>u(r,e),onMouseLeave:()=>u(null),style:{cursor:"default"},children:[l.jsx("rect",{x:e,y:t,width:n,height:s,fill:f,opacity:h?.4:1,stroke:"rgba(0,0,0,0.2)",strokeWidth:1,rx:3,style:{transition:"opacity 150ms ease"}}),x&&l.jsxs(l.Fragment,{children:[g&&l.jsxs("text",{x:e+4,y:t+s-4-11,textAnchor:"start",dominantBaseline:"auto",fill:"rgba(0,0,0,0.6)",fontSize:8,fontFamily:"'JetBrains Mono', monospace",fontWeight:500,style:{pointerEvents:"none"},children:[p.toFixed(1),"%"]}),l.jsx("text",{x:e+4,y:t+s-4,textAnchor:"start",dominantBaseline:"auto",fill:"rgba(0,0,0,0.85)",fontSize:9,fontFamily:"'JetBrains Mono', monospace",fontWeight:600,style:{pointerEvents:"none"},children:a})]})]})}function ca({data:e,total:t,color:n,position:s,containerWidth:a}){if(!e||!s)return null;const i=(e.value/t*100).toFixed(1),r=a-s.x<184?Math.max(8,s.x-160-8):s.x+16;return l.jsx("div",{className:"absolute z-50 pointer-events-none",style:{left:r,top:Math.max(8,s.y-60)},children:l.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 shadow-xl min-w-[140px]",children:[l.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[l.jsx("span",{className:"w-2.5 h-2.5 rounded-sm flex-shrink-0",style:{backgroundColor:n}}),l.jsx("span",{className:"type-data-sm font-semibold text-text-primary",children:e.name})]}),l.jsxs("div",{className:"space-y-0.5 type-data-xs text-text-muted",children:[l.jsxs("div",{className:"flex justify-between gap-4",children:[l.jsx("span",{children:"Count"}),l.jsx("span",{className:"text-text-primary tabular-nums font-medium",children:e.value.toLocaleString()})]}),l.jsxs("div",{className:"flex justify-between gap-4",children:[l.jsx("span",{children:"Share"}),l.jsxs("span",{className:"text-text-primary tabular-nums font-medium",children:[i,"%"]})]}),l.jsxs("div",{className:"flex justify-between gap-4",children:[l.jsx("span",{children:"Total"}),l.jsx("span",{className:"text-text-primary tabular-nums font-medium",children:t.toLocaleString()})]})]})]})})}function ua({sortedTypes:e,aggregateShares:t}){var n,s,i;const[r,o]=a.useState(null),[c,u]=a.useState(null),[d,m]=a.useState(0),[h,f]=a.useState(null),x=a.useRef(null),g=a.useMemo(()=>e.reduce((e,t)=>e+t.totalCount,0),[e]),b=a.useMemo(()=>e.map((e,t)=>({name:e.label,size:e.totalCount,index:t,typeNum:e.typeNum,key:e.key})),[e]),v=a.useCallback((e,t)=>{if(o(e),t&&null!==e){const e=x.current;if(e){const n=e.getBoundingClientRect();m(n.width),u({x:t.clientX-n.left,y:t.clientY-n.top})}}else u(null)},[]),y=a.useCallback(e=>{if(f(e),e){const t=b.findIndex(t=>t.key===e);o(t>=0?t:null)}else o(null)},[b]),w=null!==r?{name:(null==(n=b[r])?void 0:n.name)??"",value:(null==(s=b[r])?void 0:s.size)??0}:null,j=null!==r?na(null==(i=b[r])?void 0:i.typeNum):"";return 0===e.length||0===g?l.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[l.jsx(p,{className:"w-6 h-6 mr-2 opacity-50"}),l.jsx("span",{children:"No packet type data available"})]}):l.jsxs("div",{className:"flex flex-col",children:[l.jsxs("div",{className:"analyzer-chart-height relative flex-shrink-0",ref:x,children:[l.jsx(de,{width:"100%",height:"100%",children:l.jsx(me,{data:b,dataKey:"size",aspectRatio:4/3,stroke:"none",isAnimationActive:!1,content:l.jsx(oa,{x:0,y:0,width:0,height:0,name:"",size:0,index:0,depth:0,hoveredIndex:r,onHover:v,total:g,typeNum:0})})}),l.jsx(ca,{data:w,total:g,color:j,position:c,containerWidth:d})]}),l.jsx(ra,{sortedTypes:e,highlightedType:h,onTypeHover:y,aggregateShares:t})]})}function da(e){const{values:t,sum:n}=e;if(0===t.length)return{min:0,mean:0,median:0,p75:0,p95:0,p99:0,max:0};const s=[...t].sort((e,t)=>e-t),l=s.length,a=n/l,i=s[0],r=s[l-1],o=e=>{const t=Math.min(Math.ceil(e*l)-1,l-1);return s[Math.max(0,t)]};return{min:i,mean:a,median:l%2==0?(s[l/2-1]+s[l/2])/2:s[Math.floor(l/2)],p75:o(.75),p95:o(.95),p99:o(.99),max:r}}function ma({statsBuckets:e,bucketData:t,mode:n,packets:s,startTs:i,endTs:r,radioConfig:o,sortedTypes:c,aggregateShares:u,noiseFloorAnomalies:d,showNoiseFloorOverlay:m}){const[h,f]=a.useState(null),[x,g]=a.useState(null),b=a.useMemo(()=>(r-i)/3600,[i,r]),v=a.useCallback(e=>{g(e)},[]),y=function(e,t,n,s,l){return a.useMemo(()=>{if(0===e.length||!l)return null;const a=e.filter(e=>e.timestamp>=t&&e.timestamp<=n);if(0===a.length)return null;const i=Ce,r=[],o=new Map;for(const e of a){const n=e.type??e.payload_type??-1;let a;if("airtime"===s){const t=$(e);a=F(t,{spreadingFactor:l.sf,bandwidthHz:l.bw,codingRate:l.cr,preambleLength:l.preamble})}else a=1;if(a<=0)continue;const i=Math.floor((e.timestamp-t)/300),c={timestamp:e.timestamp,airtimeMs:a,packetType:n,bucketIndex:i};r.push(c),o.has(i)||o.set(i,[]),o.get(i).push(c)}if(0===r.length)return null;const c=[],u=[],d=[],m=new Map;for(const[,e]of o){const t=e.reduce((e,t)=>e+t.airtimeMs,0)/i*100,n=Math.max(...e.map(e=>e.airtimeMs));for(const s of e){const e=s.airtimeMs/n*t;m.set(s,e)}}for(const e of r){const t=m.get(e);void 0!==t&&(c.push(t),u.push(e.timestamp),d.push(e.packetType))}const h=Math.min(...u),f=Math.max(...u),p=f-h||1,x=[...c].sort((e,t)=>e-t),g=x[0],b=x[x.length-1],v=Math.floor(.05*x.length),y=Math.floor(.5*x.length),w=Math.min(Math.ceil(.95*x.length),x.length-1),j=x[v],k=x[y],N=x[w],M=new Map;for(const e of c){const t=Math.round(100*e)/100;M.set(t,(M.get(t)??0)+1)}const T=M.size,S=[...M.entries()].sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e,t])=>({value:e,count:t,percent:t/c.length*100})),C=5*Math.ceil(b/5),_=Math.max(C+5,10),P=new Float32Array(2*c.length),A=new Float32Array(c.length),R=new Uint8Array(c.length),D=new Float32Array(c.length);for(let e=0;e=0?d[e]:255,D[e]=u[e]}if(c.length>100){const e=[];for(const[,t]of o){const n=t.reduce((e,t)=>e+t.airtimeMs,0);e.push(n/i*100)}e.reduce((e,t)=>e+t,0),e.length,Math.max(...e)}return{points:P,rawValues:A,packetTypes:R,timestamps:D,count:c.length,minTime:h,maxTime:f,minValue:0,maxValue:_,rawMinValue:g,rawMaxValue:b,unit:"%",stats:{p5:j,p50:k,p95:N,uniqueValues:T,topValues:S}}},[e,t,n,s,l])}(s,i,r,"airtime"===n?"airtime":"rate",o),{data:w}=a.useMemo(()=>function(e,t){var n;const s=e.length;if(0===s)return{data:[],windowSize:0,windowDurationMs:0};const l=(null==(n=e[0])?void 0:n.bucketDurationMs)??1e3,a=Math.min(Math.max(5,Math.round(3e5/l)),s),i=Math.floor(a/2),r=[];let o=0,c=0;for(let u=0;uw.map(e=>({timestamp:e.timestamp,min:e.min,max:e.max,p75:e.p75,p95:e.p95,p99:e.p99,mean:e.mean,median:e.median,average:e.average,midpoint:e.midpoint})),[w]),k=a.useMemo(()=>{const e=(null==y?void 0:y.rawMaxValue)??5,t=5*Math.ceil(e/5);return Math.max(5,t)},[y]),N=a.useCallback(e=>{f(e)},[]),M=a.useMemo(()=>{if(null===h||!w[h])return null;const e=w[h];let t;t=b>=168?75:b>=72?35:b>=24?15:b>=3?10:5;const n=60*t/2,s=e.timestamp;return{start:s-n,end:s+n}},[h,w,b]),T=a.useMemo(()=>{if(null===h||!w[h]||!M)return null;const e=w[h].time,{start:t,end:l}=M,a=s.filter(e=>e.timestamp>=t&&e.timestamp({key:e.key,label:e.label,value:0,color:na(e.typeNum)}))};const i=new Map,r=new Map;let u=0,d=0;for(const n of a){const e=`TYPE_${n.type??n.payload_type??-1}`;if(i.set(e,(i.get(e)??0)+1),u++,o){const t=$(n),s=F(t,{spreadingFactor:o.sf,bandwidthHz:o.bw,codingRate:o.cr,preambleLength:o.preamble});r.set(e,(r.get(e)??0)+s),d+=s}}const m=c.map(e=>{let t;return t="airtime"===n?d>0?(r.get(e.key)??0)/d:0:u>0?(i.get(e.key)??0)/u:0,{key:e.key,label:e.label,value:t,color:na(e.typeNum)}});return{timestamp:w[h].timestamp,timeLabel:e,items:m}},[h,w,M,s,c,n,o]);if(0===w.length)return l.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[l.jsx(p,{className:"w-6 h-6 mr-2 opacity-50"}),l.jsx("span",{children:"No packet data available"})]});const S=(null==T?void 0:T.timeLabel)??null;return l.jsxs("div",{className:"flex flex-col",children:[l.jsxs("div",{className:"analyzer-chart-height relative flex-shrink-0",children:[l.jsx("div",{className:"absolute inset-0 rounded-lg overflow-hidden",children:l.jsx(Ql,{data:j,maxValue:k,onHover:N,scatterData:y,noiseFloorAnomalies:d,showNoiseFloorOverlay:m,highlightedType:x,hoveredTimeRange:M,timeRangeHours:b})}),S&&l.jsx("div",{className:"absolute top-1 right-1 px-2 py-0.5 bg-bg-elevated/90 rounded text-xs text-accent-secondary font-mono pointer-events-none",children:S})]}),l.jsx(ra,{sortedTypes:c,highlightedType:x,onTypeHover:v,aggregateShares:u,hoverData:T})]})}function ha({mode:e,onChange:t}){return l.jsxs("div",{className:"toggle-group toggle-group-sm",children:[l.jsx("button",{onClick:()=>t("share"),className:"toggle-group-item "+("share"===e?"active":""),children:"Total"}),l.jsx("button",{onClick:()=>t("airtime"),className:"toggle-group-item "+("airtime"===e?"active":""),children:"Airtime"})]})}function fa({enabled:e,onChange:t,anomalyCount:n=0,showTuning:s=!1,onTuningChange:a}){return l.jsxs("div",{className:"relative inline-flex items-center gap-1",children:[e&&a&&l.jsx("button",{onClick:()=>a(!s),className:"toggle-group toggle-group-sm "+(s?"active":""),title:s?"Hide tuning panel":"Show tuning panel",children:l.jsx("span",{className:"toggle-group-item "+(s?"active":""),children:l.jsx(i,{className:"w-3.5 h-3.5"})})}),l.jsx("button",{onClick:()=>t(!e),className:"toggle-group toggle-group-sm "+(e?"active":""),title:e?"Hide noise floor anomalies":"Show noise floor anomalies",children:l.jsx("span",{className:"toggle-group-item "+(e?"active":""),children:l.jsx(r,{className:"w-3.5 h-3.5"})})}),n>0&&l.jsx("span",{className:"absolute -top-2 -right-2 min-w-[18px] h-[18px] px-1 rounded-full bg-accent-danger text-white text-[10px] font-bold flex items-center justify-center pointer-events-none z-10",children:n>99?"99+":n})]})}function pa({smoothing:e,onChange:t}){return l.jsxs("div",{className:"toggle-group toggle-group-sm",children:[l.jsx("button",{onClick:()=>t("stats"),className:"toggle-group-item "+("stats"===e?"active":""),title:"Statistics view (scatter plot)",children:l.jsx(o,{className:"w-3.5 h-3.5"})}),l.jsx("button",{onClick:()=>t("raw"),className:"toggle-group-item "+("raw"===e?"active":""),title:"No smoothing (raw values)",children:l.jsx(c,{className:"w-3.5 h-3.5"})}),l.jsx("button",{onClick:()=>t("zlema"),className:"toggle-group-item "+("zlema"===e?"active":""),title:"6-period Zero-Lag EMA (light smoothing)",children:l.jsx(u,{className:"w-3.5 h-3.5"})}),l.jsx("button",{onClick:()=>t("ema"),className:"toggle-group-item "+("ema"===e?"active":""),title:"12-period Zero-Lag EMA (moderate smoothing)",children:l.jsx(d,{className:"w-3.5 h-3.5"})}),l.jsx("button",{onClick:()=>t("smooth"),className:"toggle-group-item "+("smooth"===e?"active":""),title:"24-period Zero-Lag EMA (heavy smoothing)",children:l.jsx(m,{className:"w-3.5 h-3.5"})}),l.jsx("button",{onClick:()=>t("ultra"),className:"toggle-group-item "+("ultra"===e?"active":""),title:"96-period Zero-Lag EMA (ultra smoothing)",children:l.jsx(h,{className:"w-3.5 h-3.5"})}),l.jsx("button",{onClick:()=>t("mosaic"),className:"toggle-group-item "+("mosaic"===e?"active":""),title:"Mosaic view (treemap chart)",children:l.jsx(f,{className:"w-3.5 h-3.5"})})]})}const xa=a.memo(function({packets:e,startTs:t,endTs:n,bucketCount:s,radioConfig:i=aa,mode:r="share",smoothing:o="raw",noiseFloorAnomalies:c=null,showNoiseFloorOverlay:u=!1}){const d=te(),[m,h]=a.useState(null),[f,x]=a.useState([]),g=a.useRef(null),b=a.useRef(0);a.useEffect(()=>{const t=Math.abs(e.length-b.current);if(0===t&&f.length>0)return;g.current&&clearTimeout(g.current);const n=t>100?50:500;return g.current=setTimeout(()=>{b.current=e.length,x(e)},n),()=>{g.current&&clearTimeout(g.current)}},[e,f.length]);const v=a.useMemo(()=>function(e){const t=new Map;for(const s of e){const e=s.type??s.payload_type??-1;t.set(e,(t.get(e)??0)+1)}const n=[];for(const[s,l]of t)n.push({typeNum:s,key:`TYPE_${s}`,label:la(s),totalCount:l});return n.sort((e,t)=>t.totalCount-e.totalCount)}(f),[f]),y=a.useMemo(()=>function(e,t,n,s,l,a){const i=n-t,r=i/s,o=1e3*r,c=[];for(let u=0;u24?n.toLocaleDateString([],{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}):n.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1});c.push({timestamp:e,time:s,counts:{},shares:{},airtimes:{},total:0,totalAirtime:0,bucketDurationMs:o});for(const t of a)c[u].counts[t.key]=0,c[u].airtimes[t.key]=0}for(const u of e){const e=u.timestamp;if(e=n)continue;const a=Math.min(Math.floor((e-t)/r),s-1),i=`TYPE_${u.type??u.payload_type??-1}`;c[a].counts[i]=(c[a].counts[i]??0)+1,c[a].total++;const o=$(u),d=F(o,{spreadingFactor:l.sf,bandwidthHz:l.bw,codingRate:l.cr,preambleLength:l.preamble});c[a].airtimes[i]=(c[a].airtimes[i]??0)+d,c[a].totalAirtime+=d}for(const u of c)for(const e of a)u.total>0?u.shares[e.key]=u.counts[e.key]/u.total*100:u.shares[e.key]=0;return c}(f,t,n,s,i,v),[f,t,n,s,i,v]),w=a.useMemo(()=>sa.getBuckets(f,t,n,i),[f,t,n,i]),j=a.useMemo(()=>v.reduce((e,t)=>e+t.totalCount,0),[v]),{sortedTypes:k,aggregateShares:N}=a.useMemo(()=>{const e=new Map;if("share"===r){if(j>0)for(const t of v)e.set(t.key,t.totalCount/j)}else{let t=0;const n=new Map;for(const e of y){t+=e.totalAirtime;for(const t of v){const s=n.get(t.key)??0;n.set(t.key,s+(e.airtimes[t.key]??0))}}if(t>0)for(const s of v)e.set(s.key,(n.get(s.key)??0)/t)}return{sortedTypes:[...v].sort((t,n)=>{const s=e.get(t.key)??0;return(e.get(n.key)??0)-s}),aggregateShares:e}},[v,j,r,y]),M=a.useMemo(()=>function(e,t,n,s="raw"){const l=function(e,t,n){if(e.length<=360)return e;const s=Math.ceil(e.length/360),l=[];for(let a=0;a0?i.counts[e.key]/i.total*100:0;l.push(i)}return l}(e,0,n),a=l.length,i=n.length,r=Array.from({length:i},()=>new Array(a).fill(0));for(let m=0;m0?(e.counts[s]??0)/e.total:0}else{let t=0;for(let s=0;s0?a/t:0}}}const o=Array.from({length:i},()=>new Array(a).fill(0));for(let m=0;mfunction(e,t){switch(t){case"zlema":return ia(e,6);case"ema":return ia(e,12);case"smooth":return ia(e,24);case"ultra":return ia(e,96);default:return e}}(e,s)),u=Array.from({length:i},()=>new Array(a).fill(0));for(let m=0;m0?c[m-1][e]:0;let n=c[m][e]-t;n<0&&(n=0),n>1&&(n=1),u[m][e]=n}for(let m=0;m0&&Math.abs(e-1)>1e-6){const t=1/e;for(let e=0;e{h(e)},[]),[S,C]=a.useState(null),_=a.useCallback(e=>{C(e)},[]),P=a.useMemo(()=>{if(null===S||!M[S])return null;const e=M[S];return{timestamp:e.timestamp,timeLabel:e.time,items:k.map(t=>({key:t.key,label:t.label,value:e[t.key]??0,color:na(t.typeNum)}))}},[S,M,k]),A=a.useMemo(()=>({timestamps:M.map(e=>e.timestamp),series:k.map(e=>({key:e.key,label:e.label,color:na(e.typeNum),values:M.map(t=>t[e.key]??0)}))}),[M,k]);return 0===f.length?0===e.length?l.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[l.jsx(p,{className:"w-6 h-6 mr-2 opacity-50"}),l.jsx("span",{children:"No packet data available"})]}):null:"mosaic"===o?l.jsx(ua,{sortedTypes:k,aggregateShares:N}):"stats"===o?l.jsx(ma,{statsBuckets:w,bucketData:y,mode:r,packets:f,startTs:t,endTs:n,radioConfig:i,sortedTypes:k,aggregateShares:N,noiseFloorAnomalies:c,showNoiseFloorOverlay:u}):l.jsxs("div",{className:"flex flex-col",children:[l.jsx("div",{className:"analyzer-chart-height relative flex-shrink-0",children:l.jsx("div",{className:"absolute inset-0 rounded-lg overflow-hidden",children:l.jsx(Dl,{timestamps:A.timestamps,series:A.series,highlightedKey:m,cursorColor:d.cursor,onHover:_})})}),l.jsx(ra,{sortedTypes:k,highlightedType:m,onTypeHover:T,aggregateShares:N,hoverData:P})]})});function ga(e){const t=e.match(/\(([^)]+)\)\s*$/);return t?t[1]:e.length>10?e.slice(0,10):e}function ba({x:e,y:t,width:n,height:s,name:a,size:i,index:r,colors:o,depth:c,hoveredIndex:u,onHover:d,total:m}){if(1!==c)return null;const h=null!==u&&!(u===r),f=o[r%o.length],p=m>0?i/m*100:0,x=n>36&&s>20,g=n>36&&s>32,b=ga(a);return l.jsxs("g",{onMouseEnter:e=>d(r,e),onMouseLeave:()=>d(null),style:{cursor:"default"},children:[l.jsx("rect",{x:e,y:t,width:n,height:s,fill:f,opacity:h?.4:1,stroke:"rgba(0,0,0,0.2)",strokeWidth:1,rx:3,style:{transition:"opacity 150ms ease"}}),x&&l.jsxs(l.Fragment,{children:[g&&l.jsxs("text",{x:e+4,y:t+s-4-11,textAnchor:"start",dominantBaseline:"auto",fill:"rgba(0,0,0,0.6)",fontSize:8,fontFamily:"'JetBrains Mono', monospace",fontWeight:500,style:{pointerEvents:"none"},children:[p.toFixed(1),"%"]}),l.jsx("text",{x:e+4,y:t+s-4,textAnchor:"start",dominantBaseline:"auto",fill:"rgba(0,0,0,0.85)",fontSize:9,fontFamily:"'JetBrains Mono', monospace",fontWeight:600,style:{pointerEvents:"none"},children:b})]})]})}function va({data:e,total:t,color:n,position:s,containerWidth:a}){if(!e||!s)return null;const i=(e.value/t*100).toFixed(1),r=a-s.x<184?Math.max(8,s.x-160-8):s.x+16;return l.jsx("div",{className:"absolute z-50 pointer-events-none",style:{left:r,top:Math.max(8,s.y-60)},children:l.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 shadow-xl min-w-[140px]",children:[l.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[l.jsx("span",{className:"w-2.5 h-2.5 rounded-sm flex-shrink-0",style:{backgroundColor:n}}),l.jsx("span",{className:"type-data-sm font-semibold text-text-primary",children:ga(e.name)})]}),l.jsxs("div",{className:"space-y-0.5 type-data-xs text-text-muted",children:[l.jsxs("div",{className:"flex justify-between gap-4",children:[l.jsx("span",{children:"Count"}),l.jsx("span",{className:"text-text-primary tabular-nums font-medium",children:e.value.toLocaleString()})]}),l.jsxs("div",{className:"flex justify-between gap-4",children:[l.jsx("span",{children:"Share"}),l.jsxs("span",{className:"text-text-primary tabular-nums font-medium",children:[i,"%"]})]}),l.jsxs("div",{className:"flex justify-between gap-4",children:[l.jsx("span",{children:"Total"}),l.jsx("span",{className:"text-text-primary tabular-nums font-medium",children:t.toLocaleString()})]})]})]})})}const ya=a.memo(function({data:e}){var t,n;const[s,i]=a.useState(null),[r,o]=a.useState(null),[c,u]=a.useState(0),d=a.useRef(null),m=ne(),{treemapData:h,total:f}=a.useMemo(()=>{const t=e.reduce((e,t)=>e+t.value,0);return{treemapData:[...e].sort((e,t)=>t.value-e.value).filter(e=>t>0&&e.value/t*100>=.5).map((e,t)=>({name:e.name,size:e.value,index:t})),total:t}},[e]),p=a.useCallback((e,t)=>{if(i(e),t&&null!==e){const e=d.current;if(e){const n=e.getBoundingClientRect();u(n.width),o({x:t.clientX-n.left,y:t.clientY-n.top})}}else o(null)},[]),x=null!==s?{name:(null==(t=h[s])?void 0:t.name)??"",value:(null==(n=h[s])?void 0:n.size)??0}:null,g=null!==s?m[s%m.length]:"";return 0===e.length||0===f?l.jsx("div",{className:"h-56 flex items-center justify-center text-text-muted",children:"No packet type data available"}):l.jsxs("div",{className:"relative treemap-container",style:{height:224},ref:d,children:[l.jsx(de,{width:"100%",height:224,minWidth:1,minHeight:1,children:l.jsx(me,{data:h,dataKey:"size",aspectRatio:4/3,stroke:"none",isAnimationActive:!1,content:l.jsx(ba,{x:0,y:0,width:0,height:0,name:"",value:0,size:0,index:0,colors:m,depth:0,hoveredIndex:s,onHover:p,total:f})})}),l.jsx(va,{data:x,total:f,color:g,position:r,containerWidth:c})]})}),wa="airtimeSpectrumBlur";function ja({active:e,payload:t,label:n}){if(!e||!t||0===t.length)return null;const s=t.filter(e=>null!==e.value&&void 0!==e.value);if(0===s.length)return null;const a=n?new Date(1e3*n).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}):"";return l.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 text-sm shadow-xl",children:[l.jsx("div",{className:"font-medium text-text-primary mb-1 font-mono",children:a}),s.map((e,t)=>l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("div",{className:"w-3 h-0.5",style:{backgroundColor:e.color}}),l.jsxs("span",{className:"text-text-muted",children:[e.name,":"]}),l.jsxs("span",{className:"text-text-primary tabular-nums font-mono",children:[Number(e.value).toFixed(2),"%"]})]},t))]})}function ka({payload:e,showDensityScale:t=!1}){return e?l.jsxs("div",{className:"flex items-center gap-4 justify-start text-xs font-mono pl-11",children:[e.map((e,t)=>l.jsxs("div",{className:"flex items-center gap-1.5",children:[l.jsx("div",{className:"w-4 h-0.5",style:{backgroundColor:e.color}}),l.jsx("span",{className:"text-text-muted",children:e.value})]},t)),t&&l.jsxs("div",{className:"flex items-center gap-1.5 ml-2",children:[l.jsx("div",{className:"w-16 h-2 rounded-sm",style:{background:"linear-gradient(to right, \n rgb(1,26,51), \n rgb(53,82,85), \n rgb(85,121,74), \n rgb(150,149,53), \n rgb(228,168,98), \n rgb(250,195,165)\n )"}}),l.jsx("span",{className:"text-text-muted",children:"Density"})]})]}):null}const Na=[[1,26,51],[20,43,67],[38,62,79],[53,82,85],[67,102,83],[85,121,74],[112,137,62],[150,149,53],[192,156,58],[228,168,98],[250,195,165]];function Ma(e){const t=Math.max(0,Math.min(1,e))*(Na.length-1),n=Math.floor(t),s=Math.min(n+1,Na.length-1),l=t-n;return`rgb(${Math.round(Na[n][0]+l*(Na[s][0]-Na[n][0]))},${Math.round(Na[n][1]+l*(Na[s][1]-Na[n][1]))},${Math.round(Na[n][2]+l*(Na[s][2]-Na[n][2]))})`}const Ta=a.memo(function({samples:e,startTs:t,endTs:n,yMax:s}){const i=se(),r=le(),o=ae(),c=a.useMemo(()=>void 0!==s?s:function(e){if(0===e.length)return 10;let t=0;for(const l of e){const e=l.rxRolling??l.rxUtilW;e>t&&(t=e)}const n=1.05*t,s=Math.ceil(n);return Math.max(1,s)}(e),[s,e]),u=r.critical,d=i.neutral,{cells:m,cellWidth:h,cellHeight:f}=a.useMemo(()=>function(e,t,n,s,l=120,a=30){const i=100/l+.5+"%",r=100/a+.5+"%";if(0===e.length||n<=t)return{cells:[],cellWidth:i,cellHeight:r};const o=n-t,c=a*l,u=new Float32Array(c),d=new Float32Array(c),m=(e,t)=>e*l+t;for(let y=0;yn)continue;const r=Math.floor((i.timestamp-t)/o*(l-1)),c=Math.max(0,Math.min(l-1,r));if(i.rxUtilW>0){const e=Math.min(i.rxUtilW/s,1),t=Math.floor((1-e)*(a-1));for(let n=t;n0?1-(n-t)/e*.7:1;u[m(n,c)]+=s}}if(i.txUtilW>0){const e=Math.min(i.txUtilW/s,1),t=Math.floor((1-e)*(a-1));for(let n=t;n0?1-(n-t)/e*.7:1;d[m(n,c)]+=s}}}const h=[];for(let y=0;y0&&h.push(u[y]),d[y]>0&&h.push(d[y]);h.sort((e,t)=>e-t);const f=h.length>0?h[Math.floor(.95*h.length)]:1,p=new Array(l),x=new Array(a),g=100/l,b=100/a;for(let y=0;y0&&f>0){const t=Math.min(n/f,1.5),s=Math.sqrt(t/1.5);v.push({xPct:p[e],yPct:x[y],intensity:s})}}return{cells:v,cellWidth:i,cellHeight:r}}(e,t,n,100,80,10),[e,t,n]),p=a.useMemo(()=>{if(0===e.length)return[];const t=e.filter(e=>"number"==typeof e.timestamp&&!isNaN(e.timestamp));if(t.length<=500)return t.map(e=>{const t=e.rxRolling??e.rxUtilW,n=e.txRolling??e.txUtilW;return{timestamp:e.timestamp,rx:"number"!=typeof t||isNaN(t)?0:t,tx:"number"!=typeof n||isNaN(n)?0:n}});const n=Math.ceil(t.length/250),s=[];for(let e=0;ei&&(i=t,o=e)}const c=r.timestamp{const e=n-t,s=e/3600;return[0,.25,.5,.75,1].map(n=>{const l=new Date(1e3*(t+e*n)),a=l.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),i=l.toLocaleDateString([],{weekday:"short"});return{pct:n,label:s>24?`${i} ${a}`:a}})},[t,n]);return 0===e.length?l.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No traffic data available"}):l.jsxs("div",{className:"flex flex-col h-full min-h-0",children:[l.jsx("div",{className:"flex items-center flex-shrink-0 text-text-muted",style:{height:20,paddingLeft:44,paddingRight:8},children:l.jsx("div",{className:"relative w-full h-full flex items-center",children:g.map((e,t)=>l.jsxs("div",{className:"absolute flex items-center gap-1 type-data-xs",style:{left:100*e.pct+"%",transform:0===e.pct?"translateX(0)":1===e.pct?"translateX(-100%)":"translateX(-50%)"},children:[l.jsx(x,{className:"w-2.5 h-2.5 opacity-60"}),l.jsx("span",{className:"tabular-nums",children:e.label})]},t))})}),l.jsx("div",{className:"relative",style:{height:160},children:l.jsx(de,{width:"100%",height:160,minWidth:1,minHeight:1,children:l.jsxs(he,{data:p,margin:{top:4,right:8,bottom:0,left:0},children:[l.jsx(fe,{strokeDasharray:"3 3",stroke:o.primary,strokeOpacity:.15,vertical:!1}),l.jsx(pe,{dataKey:"timestamp",type:"number",domain:[t,n],axisLine:!1,tickLine:!1,tick:!1,height:0}),l.jsx(xe,{axisLine:!1,tickLine:!1,tick:{fill:o.primary,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dx:-8,width:44,tickFormatter:e=>`${e.toFixed(0)}%`,domain:[0,c]}),l.jsx(ge,{content:l.jsx(ja,{})}),l.jsx(be,{type:"linear",dataKey:"rx",name:"RX Avg",stroke:u,strokeWidth:2.5,strokeOpacity:.9,dot:!1,connectNulls:!1,isAnimationActive:!1}),l.jsx(be,{type:"linear",dataKey:"tx",name:"TX Avg",stroke:d,strokeWidth:2.5,strokeOpacity:.9,dot:!1,connectNulls:!1,isAnimationActive:!1})]})})}),l.jsx("div",{className:"relative overflow-hidden",style:{height:32,marginLeft:44,marginRight:8},children:l.jsxs("svg",{className:"absolute inset-0 w-full h-full",preserveAspectRatio:"none","aria-hidden":"true",children:[l.jsx("defs",{children:l.jsx("filter",{id:wa,x:"-100%",y:"-100%",width:"300%",height:"300%",children:l.jsx("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"1 3"})})}),l.jsx("g",{filter:`url(#${wa})`,children:m.map((e,t)=>l.jsx("rect",{x:e.xPct,y:e.yPct,width:h,height:f,fill:Ma(e.intensity),opacity:.9},`cell-${t}`))})]})}),l.jsx("div",{className:"flex-shrink-0",style:{height:24,marginTop:8},children:l.jsx(ka,{payload:[{value:`RX (${Math.round(5)}m)`,color:u},{value:`TX (${Math.round(5)}m)`,color:d}],showDensityScale:!0})})]})}),Sa={"1x":1,"2x":2,"4x":4,"8x":8,"16x":16,"36x":36},Ca=[1,5,10,25,50,100,150];function _a(e,t,n,s){const l=Math.PI/180,a=(s-t)*l,i=e*l,r=n*l,o=Math.sin(a)*Math.cos(r),c=Math.cos(i)*Math.sin(r)-Math.sin(i)*Math.cos(r)*Math.cos(a);return(180*Math.atan2(o,c)/Math.PI+360)%360}function Pa(e,t,n,s){const l=Math.PI/180,a=(n-e)*l,i=(s-t)*l,r=Math.sin(a/2)**2+Math.cos(e*l)*Math.cos(n*l)*Math.sin(i/2)**2;return 12742*Math.atan2(Math.sqrt(r),Math.sqrt(1-r))}const Aa=[{min:10,label:"Excellent"},{min:7,label:"Very Good"},{min:4,label:"Good"},{min:1,label:"Fair+"},{min:-2,label:"Fair"},{min:-5,label:"Fair-"},{min:-8,label:"Poor"},{min:-11,label:"Bad"},{min:-1/0,label:"Critical"}];function Ra(e,t){return t[oe(e)]||"#808080"}const Da=a.memo(function({neighbors:e,quickNeighbors:t,localLat:n,localLon:s,onStatsChange:i}){const[r,o]=a.useState(null),[c,u]=a.useState(new Set),[d,m]=a.useState({width:0,height:0}),[h,f]=a.useState("1x"),[p,x]=a.useState(1),b=a.useRef(null),v=a.useRef({}),y=a.useRef(null),w=a.useRef(null),j=a.useRef(p);j.current=p;const k=ie(),N=le(),M=re(),T=ae();a.useEffect(()=>{const e=w.current;if(!e)return;const t=new ResizeObserver(e=>{for(const t of e){const{width:e,height:n}=t.contentRect;e>0&&n>0&&m({width:e,height:n})}});t.observe(e);const n=e.getBoundingClientRect();return n.width>0&&n.height>0&&m({width:n.width,height:n.height}),()=>t.disconnect()},[]);const S=a.useMemo(()=>{const e=new Set;if(t)for(const n of t)e.add(n.hash);return e},[t]),C=a.useMemo(()=>{const e=new Map;if(t)for(const n of t)e.set(n.hash,{snr:n.avgSnr,rssi:n.avgRssi});return e},[t]),{processedNeighbors:_,maxDistance:P,totalNeighbors:A,zeroHopCount:R}=a.useMemo(()=>{const t=[];for(const[a,i]of Object.entries(e)){if(!i.latitude||!i.longitude||0===i.latitude||0===i.longitude)continue;if(!S.has(a))continue;const e=_a(n,s,i.latitude,i.longitude),l=Pa(n,s,i.latitude,i.longitude),r=C.get(a);t.push({hash:a.slice(0,8),name:i.node_name||i.name||"Unknown",snr:(null==r?void 0:r.snr)??i.snr??null,rssi:(null==r?void 0:r.rssi)??i.rssi??null,bearing:e,distance:l,normalizedDistance:0,lastSeen:i.last_seen,isZeroHop:!0})}const l=1.08*(t.length>0?Math.max(...t.map(e=>e.distance)):0);return t.sort((e,t)=>(e.snr??-1/0)-(t.snr??-1/0)),{processedNeighbors:t,maxDistance:l,totalNeighbors:t.length,zeroHopCount:t.length}},[e,n,s,S,C]);a.useEffect(()=>{null==i||i({zeroHopCount:R,totalCount:A,maxDistanceKm:P})},[R,A,P]),a.useEffect(()=>{const e=Sa[h],t=j.current;b.current&&cancelAnimationFrame(b.current);const n=performance.now(),s=l=>{const a=l-n,i=Math.min(a/400,1),r=(o=i)<.5?8*o*o*o*o:1-Math.pow(-2*o+2,4)/2;var o;x(t+(e-t)*r),b.current=i<1?requestAnimationFrame(s):null};return b.current=requestAnimationFrame(s),()=>{b.current&&cancelAnimationFrame(b.current)}},[h]);const D=P/p,E=a.useMemo(()=>Ca.filter(e=>e<=1.1*D),[D]);a.useEffect(()=>{const e=[];for(const n of _){const t=v.current[n.hash];void 0!==t&&t!==n.lastSeen&&e.push(n.hash),v.current[n.hash]=n.lastSeen}if(0===e.length)return;queueMicrotask(()=>{u(t=>new Set([...t,...e]))});const t=setTimeout(()=>{u(t=>{const n=new Set(t);return e.forEach(e=>n.delete(e)),n})},600);return()=>clearTimeout(t)},[_]);const $=0!==n&&0!==s,F=a.useMemo(()=>{const{width:e,height:t}=d,n=e/2,s=t/2,l=Math.max(10,e/2-12),a=Math.max(10,t/2-12),i=Math.max(10,l-16),r=Math.max(10,a-16);return{width:e,height:t,centerX:n,centerY:s,maxRadiusX:i,maxRadiusY:r,labelRadiusX:l,labelRadiusY:a,cornerRadius:.2*Math.min(i,r)}},[d]),{width:L,height:z,centerX:W,centerY:H,maxRadiusX:B,maxRadiusY:O,labelRadiusX:G,labelRadiusY:V,cornerRadius:I}=F,Y=a.useCallback((e,t=1)=>{const n=B*t,s=O*t,l=Math.min(I*t,n,s),a=(e%360+360)%360,i=a*Math.PI/180,r=180*Math.atan2(s-l,n-l)/Math.PI;let o,c;if(a<=45-r||a>315+r){const e=Math.tan(i);o=Math.max(W-n+l,Math.min(W+n-l,W+s*e*(n/s))),c=H-s}else if(a>45-r&&a<=45+r)o=W+n-l+l*Math.sin(i),c=H-s+l-l*Math.cos(i);else if(a>45+r&&a<=135-r){const e=1/Math.tan(i);c=Math.max(H-s+l,Math.min(H+s-l,H-n*e*(s/n))),o=W+n}else if(a>135-r&&a<=135+r)o=W+n-l+l*Math.sin(i),c=H+s-l-l*Math.cos(i);else if(a>135+r&&a<=225-r){const e=Math.tan(i);o=Math.max(W-n+l,Math.min(W+n-l,W-s*e*(n/s))),c=H+s}else if(a>225-r&&a<=225+r)o=W-n+l+l*Math.sin(i),c=H+s-l-l*Math.cos(i);else if(a>225+r&&a<=315-r){const e=1/Math.tan(i);c=Math.max(H-s+l,Math.min(H+s-l,H-n*e*(s/n))),o=W-n}else o=W-n+l+l*Math.sin(i),c=H-s+l-l*Math.cos(i);return{x:o,y:c}},[W,H,B,O,I]),q=a.useCallback((e,t)=>{const n=Y(e,1);return{x:W+(n.x-W)*t,y:H+(n.y-H)*t}},[Y,W,H]),U=a.useCallback(e=>({N:{x:W,y:H-V},S:{x:W,y:H+V},E:{x:W+G,y:H},W:{x:W-G,y:H},NE:{x:W+G,y:H-V},SE:{x:W+G,y:H+V},SW:{x:W-G,y:H+V},NW:{x:W-G,y:H-V}}[e]),[W,H,G,V]),X=a.useCallback(e=>{const t=B*e,n=O*e,s=Math.min(I*e,t,n),l=W-t,a=W+t,i=H-n,r=H+n;return[`M ${l+s} ${i}`,`L ${a-s} ${i}`,`Q ${a} ${i} ${a} ${i+s}`,`L ${a} ${r-s}`,`Q ${a} ${r} ${a-s} ${r}`,`L ${l+s} ${r}`,`Q ${l} ${r} ${l} ${r-s}`,`L ${l} ${i+s}`,`Q ${l} ${i} ${l+s} ${i}`,"Z"].join(" ")},[W,H,B,O,I]),K=a.useCallback(e=>{o(e)},[]),J=a.useCallback(e=>{f(e)},[]),Z=a.useCallback(e=>P<=0?0:e/P*p,[P,p]),Q=e=>`${e}km`,ee=a.useMemo(()=>{const e=E.map(e=>{const t=e/P*p;return{km:e,scale:t,labelY:H-O*t*.71}}).filter(e=>e.scale<=1.05&&e.scale>=.02).sort((e,t)=>t.km-e.km),t=[];for(const n of e)t.some(e=>Math.abs(e.labelY-n.labelY)<28)||t.push(n);return t},[E,P,p,H,O]),te=d.width>0&&d.height>0;return $?0===A?l.jsxs("div",{ref:y,className:"flex flex-col items-center justify-center h-full text-text-muted",children:[l.jsx(g,{className:"w-8 h-8 mb-2 opacity-50"}),l.jsx("p",{children:"No nodes with location data"})]}):l.jsxs("div",{ref:y,className:"relative h-full w-full flex overflow-hidden",children:[l.jsx("div",{ref:w,className:"relative flex-1 min-w-0 h-full",children:te&&l.jsxs("svg",{width:L,height:z,className:"absolute inset-0 z-0",children:[l.jsxs("defs",{children:[l.jsx("style",{children:"\n @keyframes neighbor-blink-scale {\n 0%, 100% {\n transform: scale(1);\n opacity: 0;\n }\n 50% {\n transform: scale(1.3);\n opacity: 0.8;\n }\n }\n .neighbor-blink-ring {\n transform-origin: center;\n animation: neighbor-blink-scale 600ms ease-out forwards;\n }\n "}),l.jsx("clipPath",{id:"radar-clip",children:l.jsx("path",{d:X(1)})})]}),E.map(e=>{const t=Z(e);if(t>1.05||t<.02)return null;const n=ee.some(t=>t.km===e),s=W+B*t*.71,a=H-O*t*.71;return l.jsxs("g",{children:[l.jsx("path",{d:X(t),fill:"none",stroke:T.primary,strokeOpacity:.15,strokeWidth:1}),n&&l.jsx("text",{x:s+4,y:a-2,textAnchor:"start",dominantBaseline:"auto",className:"fill-text-secondary",fontSize:10,fontFamily:"'JetBrains Mono', monospace",children:Q(e)})]},`ring-${e}`)}),["N","E","S","W"].map(e=>{const t="N"===e||"S"===e,n=t?W:"E"===e?W+B:W-B,s=t?"N"===e?H-O:H+O:H;return l.jsx("line",{x1:W,y1:H,x2:n,y2:s,stroke:T.primary,strokeOpacity:.15,strokeWidth:1,strokeDasharray:"4 4"},e)}),["NE","SE","SW","NW"].map(e=>{const t=U(e);return l.jsx("line",{x1:W,y1:H,x2:t.x,y2:t.y,stroke:T.primary,strokeOpacity:.08,strokeWidth:1,strokeDasharray:"4 4"},`diag-${e}`)}),["N","E","S","W"].map(e=>{const t=U(e),n="E"===e?"end":"W"===e?"start":"middle",s="N"===e?"hanging":"S"===e?"auto":"middle";return l.jsx("text",{x:t.x,y:t.y,textAnchor:n,dominantBaseline:s,fill:N.critical,fontSize:16,fontWeight:600,fontFamily:"'JetBrains Mono', monospace","aria-hidden":"true",children:e},e)}),["NE","SE","SW","NW"].map(e=>{const t=U(e),n="NE"===e||"SE"===e?"end":"start",s="NE"===e||"NW"===e?"hanging":"auto";return l.jsx("text",{x:t.x,y:t.y,textAnchor:n,dominantBaseline:s,fill:N.critical,fontSize:16,fontWeight:600,fontFamily:"'JetBrains Mono', monospace","aria-hidden":"true",children:e},e)}),l.jsx("circle",{cx:W,cy:H,r:5,fill:M.chart6,stroke:"rgba(255,255,255,0.3)",strokeWidth:1,role:"img","aria-label":"Local node"}),l.jsx("g",{clipPath:"url(#radar-clip)",children:_.map(e=>{const t=P>0?e.distance/P*p:0;if(t>1)return null;const{x:n,y:s}=q(e.bearing,t),a=null!==e.snr?Ra(e.snr,k):"#808080",i=(null==r?void 0:r.hash)===e.hash,o=c.has(e.hash);return l.jsxs("g",{role:"img","aria-label":`${e.name}: ${e.distance.toFixed(1)}km ${e.bearing.toFixed(0)}°`,children:[o&&l.jsx("circle",{cx:n,cy:s,r:10.5,fill:"none",stroke:"rgba(255,255,255,0.9)",strokeWidth:2,className:"neighbor-blink-ring"}),i&&l.jsx("circle",{cx:n,cy:s,r:10.5,fill:a,opacity:.3}),l.jsx("circle",{cx:n,cy:s,r:i?7:5,fill:a,stroke:"rgba(0,0,0,0.5)",strokeWidth:1,style:{cursor:"pointer",transition:"r 0.15s"},onMouseEnter:()=>K(e),onMouseLeave:()=>K(null)})]},e.hash)})})]})}),l.jsx("div",{className:"flex flex-col h-full items-stretch gap-1 py-2 pl-2 flex-shrink-0",role:"group","aria-label":"Zoom level",children:["1x","2x","4x","8x","16x","36x"].map(e=>l.jsx("button",{onClick:()=>J(e),"aria-pressed":h===e,className:"flex flex-1 items-center justify-center px-1.5 text-xs font-medium rounded transition-colors "+(h===e?"bg-accent-primary/20 text-accent-primary":"bg-white/5 text-text-muted hover:bg-white/10 hover:text-text-secondary"),children:e},e))}),r&&l.jsxs("div",{className:"absolute bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 text-sm pointer-events-none z-10 shadow-xl",style:{left:"50%",bottom:8,transform:"translateX(-50%)"},children:[l.jsx("div",{className:"font-medium text-text-primary",children:r.name}),l.jsx("div",{className:"text-text-muted text-xs font-mono",children:r.hash}),null!==r.snr?l.jsx("div",{className:"flex gap-3 mt-1 text-xs",children:l.jsxs("span",{children:[l.jsx("span",{className:"text-text-muted",children:"SNR:"})," ",l.jsxs("span",{className:"tabular-nums",style:{color:Ra(r.snr,k)},children:[r.snr.toFixed(1)," dB"]}),l.jsxs("span",{className:"text-text-muted ml-1",children:["(",(ne=r.snr,(null==(se=Aa.find(e=>ne>=e.min))?void 0:se.label)??"Critical"),")"]})]})}):l.jsx("div",{className:"text-xs text-text-muted mt-1",children:"No SNR data"}),l.jsxs("div",{className:"flex gap-3 text-xs",children:[l.jsxs("span",{children:[l.jsx("span",{className:"text-text-muted",children:"Distance:"})," ",l.jsxs("span",{className:"tabular-nums text-text-secondary",children:[r.distance.toFixed(2)," km"]})]}),l.jsxs("span",{children:[l.jsx("span",{className:"text-text-muted",children:"Bearing:"})," ",l.jsxs("span",{className:"tabular-nums text-text-secondary",children:[r.bearing.toFixed(0),"°"]})]})]})]})]}):l.jsxs("div",{ref:y,className:"flex flex-col items-center justify-center h-full text-text-muted",children:[l.jsx(g,{className:"w-8 h-8 mb-2 opacity-50"}),l.jsx("p",{children:"Local node coordinates not configured"}),l.jsx("p",{className:"text-xs mt-1",children:"Set latitude/longitude in config to enable"})]});var ne,se});function Ea(e,t){if(0===e.length)return 0;const n=t/100*(e.length-1),s=Math.floor(n),l=Math.ceil(n);return s===l?e[s]:e[s]+(e[l]-e[s])*(n-s)}const $a=a.memo(function({timestamps:e,values:t,onStatsChange:n}){var s,i;const r=le(),[o,c]=a.useState(!0),u=a.useMemo(()=>{if(0===t.length)return null;const e=Math.min(...t),n=Math.max(...t),s=t.reduce((e,t)=>e+t,0)/t.length,l=[...t].sort((e,t)=>e-t);return{min:e,max:n,avg:s,p5:Ea(l,5),p95:Ea(l,95)}},[t]);a.useEffect(()=>{null==n||n(u)},[u]);const d=a.useCallback(()=>{c(e=>!e)},[]),{heatmapData:m,xLabels:h,yLabels:f}=a.useMemo(()=>{if(0===e.length||0===t.length||!u)return{heatmapData:null,xLabels:[],yLabels:[]};let n,s;if(o){const e=.1*(u.p95-u.p5||1);n=u.p5-e,s=u.p95+e}else{const e=.1*(u.max-u.min||1);n=u.min-e,s=u.max+e}const l=s-n,a=e[0],i=e[e.length-1]-a||1,r=new Float32Array(2*e.length);for(let o=0;oce(w)??{r:225,g:38,b:114},[w]);return a.useEffect(()=>{const e=x.current;if(!e)return;const t=new ResizeObserver(e=>{for(const t of e){const{width:e,height:n}=t.contentRect;e>0&&n>0&&y({width:e,height:n})}});t.observe(e);const n=e.getBoundingClientRect();return n.width>0&&n.height>0&&y({width:n.width,height:n.height}),()=>t.disconnect()},[]),a.useEffect(()=>{const e=p.current;if(!e||!m||0===g.width)return;const t=e.getContext("2d");if(!t)return;const{width:n,height:s}=g,l=window.devicePixelRatio||1;e.width=n*l,e.height=s*l,e.style.width=`${n}px`,e.style.height=`${s}px`,t.scale(l,l),t.clearRect(0,0,n,s);const{points:a,count:i}=m,{r:r,g:o,b:c}=j,u=Math.max(3,Math.min(8,n/i*4));t.globalCompositeOperation="source-over";for(let d=0;dl.jsx("span",{className:"type-data-xs text-text-muted tabular-nums text-right pr-1.5",style:{position:"absolute",top:`${e.pos}%`,transform:"translateY(-50%)",right:0},children:e.label},t))}),l.jsxs("div",{ref:x,className:"absolute overflow-hidden",style:{left:32,right:0,top:0,bottom:20},children:[l.jsx("svg",{className:"absolute inset-0 w-full h-full",preserveAspectRatio:"none","aria-hidden":"true",children:[0,25,50,75,100].map(e=>l.jsx("line",{x1:"0",y1:`${e}%`,x2:"100%",y2:`${e}%`,stroke:"rgba(255,255,255,0.06)",strokeDasharray:"3 3"},e))}),l.jsx("canvas",{ref:p,className:"absolute inset-0 w-full h-full","aria-hidden":"true"}),l.jsx("button",{type:"button",onClick:d,className:"absolute bottom-1 right-1 p-1.5 rounded bg-tooltip-bg/80 hover:bg-tooltip-bg active:bg-tooltip-bg transition-colors touch-manipulation",title:o?"Show full range (min/max)":"Show trimmed range (P5-P95)","aria-label":o?"Expand to show full data range":"Shrink to show trimmed percentile range","aria-pressed":!o,children:o?l.jsx(b,{className:"w-3.5 h-3.5 text-text-muted","aria-hidden":"true"}):l.jsx(v,{className:"w-3.5 h-3.5 text-text-muted","aria-hidden":"true"})})]}),l.jsx("div",{className:"absolute left-0 right-0 bottom-0",style:{left:32,height:20},"aria-hidden":"true",children:h.map((e,t)=>l.jsx("span",{className:"type-data-xs text-text-muted tabular-nums absolute top-1",style:{left:`${e.pos}%`,transform:"translateX(-50%)"},children:e.label},t))})]}):l.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No noise floor data available"})}),Fa={repeater:"var(--signal-critical)",companion:"var(--accent-tertiary)",room_server:"var(--accent-secondary)"};function La(e){if(e.contact_type){const t=e.contact_type.toLowerCase();if("repeater"===t||"rep"===t)return"repeater";if("room server"===t||"room_server"===t||"room"===t||"server"===t)return"room_server";if("companion"===t||"client"===t||"cli"===t)return"companion"}return e.is_repeater?"repeater":"companion"}const za=a.memo(function({neighbors:e}){const t=a.useMemo(()=>{const t={repeater:0,companion:0,room_server:0};for(const s of Object.values(e)){const e=La(s);t[e]=(t[e]||0)+1}const n=Object.values(t).reduce((e,t)=>e+t,0);return{items:[{label:"Repeaters",count:t.repeater,percent:0,color:Fa.repeater},{label:"Companions",count:t.companion,percent:0,color:Fa.companion},{label:"Room Servers",count:t.room_server,percent:0,color:Fa.room_server}].map(e=>({...e,percent:n>0?e.count/n*100:0})).filter(e=>e.count>0).sort((e,t)=>t.count-e.count),total:n}},[e]);return 0===t.total?l.jsx("div",{className:"h-full flex items-center justify-center text-text-muted type-body-sm",children:"No neighbors discovered yet"}):l.jsxs("div",{className:"h-full flex flex-col",children:[l.jsx("div",{className:"flex-1 flex flex-col justify-evenly",children:t.items.map(e=>l.jsxs("div",{className:"flex flex-col gap-1.5",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx("span",{className:"type-data-sm text-text-secondary",children:e.label}),l.jsxs("span",{className:"type-data-sm text-text-muted tabular-nums",children:[e.count," ",l.jsxs("span",{className:"text-text-muted/60",children:["(",e.percent.toFixed(0),"%)"]})]})]}),l.jsx("div",{className:"h-2.5 bg-bg-elevated rounded-full overflow-hidden",children:l.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${e.percent}%`,backgroundColor:e.color,minWidth:e.count>0?"4px":"0"}})})]},e.label))}),l.jsxs("div",{className:"flex items-center justify-between pt-2 border-t border-border-subtle",children:[l.jsx("span",{className:"type-data-xs text-text-muted",children:"Total Nodes"}),l.jsx("span",{className:"type-data-sm text-text-primary font-medium tabular-nums",children:t.total})]})]})});function Wa({children:e,minHeight:t="100%",rootMargin:n="200px 0px",keepMounted:s=!0,className:i=""}){const r=a.useRef(null),[o,c]=a.useState(!1),[u,d]=a.useState(!1);a.useEffect(()=>{const e=r.current;if(!e)return;const t=new IntersectionObserver(([e])=>{const t=e.isIntersecting;d(t),t&&c(!0)},{rootMargin:n,threshold:0});return t.observe(e),()=>{t.disconnect()}},[n]);const m=u||s&&o;return l.jsx("div",{ref:r,className:`h-full w-full ${i}`,style:{minHeight:t},children:m?e:l.jsx("div",{className:"h-full w-full flex items-center justify-center text-text-muted/50",children:l.jsx("div",{className:"animate-pulse text-xs",children:"Loading chart..."})})})}const Ha={excellent:"text-signal-excellent",good:"text-signal-good",fair:"text-signal-fair",poor:"text-signal-critical"},Ba={excellent:"bg-signal-excellent/10",good:"bg-signal-good/10",fair:"bg-signal-fair/10",poor:"bg-signal-critical/10"};function Oa({value:e,status:t}){const n={excellent:"bg-signal-excellent",good:"bg-signal-good",fair:"bg-signal-fair",poor:"bg-signal-critical"}[t];return l.jsx("div",{className:"w-full h-2 bg-surface-elevated rounded-full overflow-hidden",children:l.jsx("div",{className:`h-full ${n} transition-all duration-300`,style:{width:`${Math.min(100,Math.max(0,e))}%`}})})}function Ga(){const e=W(),t=H(),[n,s]=a.useState(null),i=a.useCallback((e,t)=>{s({prefix:e,candidateHashes:t})},[]),r=a.useCallback(()=>{s(null)},[]);if(!t)return l.jsxs(ve,{children:[l.jsx(ye,{icon:l.jsx(y,{}),title:"Prefix Conflicts",largeTitle:!0}),l.jsx("div",{className:"flex-1 flex items-center justify-center",children:l.jsxs("div",{className:"text-center text-text-muted",children:[l.jsx(w,{className:"w-8 h-8 mx-auto mb-2 opacity-50"}),l.jsx("p",{className:"type-data-xs",children:"No topology data available"}),l.jsx("p",{className:"type-data-xs opacity-70",children:"Run deep analysis to see stats"})]})})]});const o=(c=e.avgConfidence)>=.9?"excellent":c>=.7?"good":c>=.5?"fair":"poor";var c;const u=(d=e.collisionRate)<=10?"excellent":d<=25?"good":"poor";var d;const m="poor"===o||"poor"===u?"poor":"fair"===o||"fair"===u?"fair":"good"===o||"good"===u?"good":"excellent",h="excellent"===m||"good"===m?j:k;return l.jsxs(ve,{className:"flex flex-col overflow-hidden",children:[l.jsx(ye,{icon:l.jsx(y,{}),title:"Prefix Conflicts",largeTitle:!0,actions:l.jsxs("div",{className:`flex items-center gap-1.5 px-2.5 py-1 rounded-full ${Ba[m]}`,children:[l.jsx(h,{className:`w-3.5 h-3.5 ${Ha[m]}`}),l.jsx("span",{className:`type-data-xs font-medium ${Ha[m]}`,children:"excellent"===m?"Excellent":"good"===m?"Good":"fair"===m?"Fair":"Needs Attention"})]})}),l.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0",children:[l.jsxs("div",{className:"grid grid-cols-2 gap-3 mb-3",children:[l.jsxs("div",{className:"cursor-help",title:"Average confidence score across all disambiguated prefixes. Higher = more certain node identification. Based on geographic proximity, co-occurrence patterns, and observation recency.",children:[l.jsxs("div",{className:"flex items-baseline justify-between mb-1",children:[l.jsx("span",{className:"type-data-xs text-text-muted",children:"Avg Confidence"}),l.jsxs("span",{className:`type-data-lg font-semibold ${Ha[o]}`,children:[(100*e.avgConfidence).toFixed(1),"%"]})]}),l.jsx(Oa,{value:100*e.avgConfidence,status:o})]}),l.jsxs("div",{className:"cursor-help",title:"Percentage of 2-character prefixes that match multiple known nodes. Lower is better. Collisions require disambiguation to determine the correct node.",children:[l.jsxs("div",{className:"flex items-baseline justify-between mb-1",children:[l.jsx("span",{className:"type-data-xs text-text-muted",children:"Collision Rate"}),l.jsxs("span",{className:`type-data-lg font-semibold ${Ha[u]}`,children:[e.collisionRate.toFixed(1),"%"]})]}),l.jsx(Oa,{value:e.collisionRate,status:u})]})]}),l.jsxs("div",{className:"grid grid-cols-3 gap-2 mb-3 py-2 border-t border-b border-border-subtle",children:[l.jsxs("div",{className:"text-center cursor-help",title:"Total unique 2-character prefixes observed in packet paths. Each prefix represents the first 2 hex digits of a node's full hash.",children:[l.jsx("div",{className:"type-data-lg font-semibold text-text-primary",children:e.totalPrefixes}),l.jsx("div",{className:"type-data-xs text-text-muted",children:"Prefixes"})]}),l.jsxs("div",{className:"text-center cursor-help",title:"Prefixes that map to exactly one known node. No disambiguation needed—these are definitive identifications.",children:[l.jsx("div",{className:"type-data-lg font-semibold text-signal-good",children:e.unambiguousPrefixes}),l.jsx("div",{className:"type-data-xs text-text-muted",children:"Unique"})]}),l.jsxs("div",{className:"text-center cursor-help",title:"Prefixes matching multiple known nodes. Click a prefix below to explore candidates and see how disambiguation scores them.",children:[l.jsx("div",{className:"type-data-lg font-semibold "+(e.collisionPrefixes>0?"text-signal-critical":"text-text-primary"),children:e.collisionPrefixes}),l.jsx("div",{className:"type-data-xs "+(e.collisionPrefixes>0?"text-signal-critical":"text-text-muted"),children:"Collisions"})]})]}),e.highCollisionPrefixes.length>0&&l.jsxs("div",{className:"mb-2",children:[l.jsx("div",{className:"type-data-xs text-text-muted mb-1.5",children:"Highest Collisions"}),l.jsx("div",{className:"flex flex-wrap gap-1",children:e.highCollisionPrefixes.map(({prefix:e,candidateCount:t,candidateHashes:n})=>l.jsxs("button",{type:"button",onClick:()=>i(e,n),className:"inline-flex items-center gap-1 px-1.5 py-0.5 min-h-[24px] rounded bg-surface-elevated text-text-secondary type-data-xs font-mono hover:bg-signal-critical/20 hover:text-signal-critical focus:outline-none focus:ring-2 focus:ring-signal-critical/50 transition-colors cursor-pointer touch-manipulation",title:`Click to explore ${t} candidates matching this prefix`,"aria-label":`Explore prefix ${e} with ${t} colliding candidates`,children:[e,l.jsxs("span",{className:"text-signal-critical",children:["×",t]})]},e))})]}),e.lowConfidencePrefixes.length>0&&l.jsx("div",{className:"mt-auto pt-2 border-t border-border-subtle",children:l.jsxs("div",{className:"flex items-start gap-1.5",children:[l.jsx(k,{className:"w-3.5 h-3.5 text-signal-critical mt-0.5 flex-shrink-0"}),l.jsxs("div",{className:"min-w-0",children:[l.jsxs("div",{className:"type-data-xs text-signal-critical font-medium",children:[l.jsx("span",{className:"text-signal-critical",children:e.lowConfidencePrefixes.length})," prefix",1!==e.lowConfidencePrefixes.length?"es":""," with low confidence"]}),l.jsxs("div",{className:"type-data-xs text-text-muted font-mono truncate",children:[e.lowConfidencePrefixes.slice(0,5).join(", "),e.lowConfidencePrefixes.length>5&&l.jsxs("span",{className:"text-signal-critical",children:[" +",e.lowConfidencePrefixes.length-5," more"]})]})]})]})}),0===e.lowConfidencePrefixes.length&&0===e.collisionPrefixes&&l.jsx("div",{className:"mt-auto pt-2 border-t border-border-subtle",children:l.jsxs("div",{className:"flex items-center gap-1.5",children:[l.jsx(j,{className:"w-3.5 h-3.5 text-signal-excellent"}),l.jsx("span",{className:"type-data-xs text-signal-excellent",children:"All prefixes uniquely identified"})]})})]}),l.jsx(ke,{isOpen:!!n,prefix:(null==n?void 0:n.prefix)||"",candidateHashes:(null==n?void 0:n.candidateHashes)||[],onClose:r})]})}function Va({icon:e,label:t,value:n,sublabel:s,highlight:a,tooltip:i}){return l.jsxs("div",{className:"flex items-center justify-between py-2 "+(i?"cursor-help":""),title:i,children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("span",{className:"icon-xs text-icon-widget",children:e}),l.jsx("span",{className:"type-label text-text-secondary",children:t})]}),l.jsxs("div",{className:"text-right",children:[l.jsx("span",{className:"type-data-sm "+(a?"text-accent-tertiary":"text-text-primary"),children:n}),s&&l.jsx("span",{className:"type-data-xs text-text-muted ml-1",children:s})]})]})}function Ia(){const e=B(),t=O().length;if(!e||0===e.totalPaths)return null;const{totalPaths:n,pathsWithGhosts:s,observationOverrideCount:a,tracePacketsProcessed:i,pathPacketsProcessed:r,distantEdgesDiscovered:o,duplicateGroupsFound:c,duplicatePathsUnique:u,echolocationEdgesInferred:d}=e,m=n-s,f=n>0?(m/n*100).toFixed(1):"0",p=n>0?(s/n*100).toFixed(1):"0",x=n>0?(a/n*100).toFixed(1):"0",g=i+r,b=g>0||o>0,v=c>0||d>0;return l.jsxs(ve,{children:[l.jsx(ye,{title:"Viterbi HMM",icon:l.jsx(N,{}),largeTitle:!0,badge:t>0?`${t} GHOSTS`:void 0}),l.jsxs(Te,{children:[l.jsxs("div",{className:"divide-y divide-white/5",children:[l.jsx(Va,{icon:l.jsx(N,{className:"w-3.5 h-3.5"}),label:"Paths Decoded",value:n.toLocaleString(),tooltip:"Total packet paths analyzed by the Viterbi HMM algorithm. Each path is a sequence of node prefixes extracted from received packets."}),l.jsx(Va,{icon:l.jsx(M,{className:"w-3.5 h-3.5"}),label:"Paths with Ghosts",value:s.toLocaleString(),sublabel:`(${p}%)`,highlight:s>0,tooltip:"Paths containing prefixes that don't match any known node. These 'ghost' prefixes may represent repeaters not yet discovered via direct ADVERT."}),l.jsx(Va,{icon:l.jsx(T,{className:"w-3.5 h-3.5"}),label:"Observation Override",value:`${x}%`,sublabel:"of paths",tooltip:"Percentage of paths where real-world observations (signal strength, co-occurrence patterns) overrode the expected geographic transition model. Higher values indicate the algorithm is learning from actual mesh behavior."}),l.jsx(Va,{icon:l.jsx(S,{className:"w-3.5 h-3.5"}),label:"Fully Resolved",value:`${f}%`,sublabel:`(${m.toLocaleString()} paths)`,highlight:parseFloat(f)>=90,tooltip:"Percentage of paths where all node prefixes were successfully matched to known nodes. Higher values indicate better mesh visibility - the algorithm can identify every hop in the packet's journey."})]}),b&&l.jsxs("div",{className:"mt-3 pt-3 border-t border-border-subtle",children:[l.jsx("p",{className:"type-micro mb-2",children:"Distant Topology"}),l.jsxs("div",{className:"divide-y divide-white/5",children:[l.jsx(Va,{icon:l.jsx(C,{className:"w-3.5 h-3.5"}),label:"TRACE/PATH Packets",value:g.toLocaleString(),sublabel:i>0?`(${i} TRACE)`:void 0,tooltip:"TRACE and PATH packets contain pre-computed routes between distant nodes. These reveal mesh topology beyond what we can directly observe - edges between nodes that may never communicate with us."}),l.jsx(Va,{icon:l.jsx(_,{className:"w-3.5 h-3.5"}),label:"Distant Edges",value:o.toLocaleString(),highlight:o>0,tooltip:"Edges discovered from TRACE/PATH packet route data. These represent links between distant nodes that we wouldn't see from normal packet forwarding - revealing deeper mesh structure."})]})]}),v&&l.jsxs("div",{className:"mt-3 pt-3 border-t border-border-subtle",children:[l.jsx("p",{className:"type-micro mb-2",children:"Echolocation"}),l.jsxs("div",{className:"divide-y divide-white/5",children:[l.jsx(Va,{icon:l.jsx(P,{className:"w-3.5 h-3.5"}),label:"Duplicate Groups",value:c.toLocaleString(),sublabel:u>0?`(${u} paths)`:void 0,tooltip:"Packets received multiple times via different paths. Each duplicate is an 'echo' that reveals alternate routing through the mesh - like sonar mapping the network structure."}),l.jsx(Va,{icon:l.jsx(h,{className:"w-3.5 h-3.5"}),label:"Echo Edges",value:d.toLocaleString(),highlight:d>0,tooltip:"Edges inferred from echolocation analysis. When the same packet arrives via different forwarders, those forwarders are likely within RF range of each other - revealing hidden mesh connectivity."})]})]}),l.jsx("div",{className:"mt-3 pt-3 border-t border-border-subtle cursor-help",title:"Ghost nodes are high-confidence unknown repeaters inferred from path analysis. They appear frequently in packet paths (10+ observations), have consistent neighbor relationships (2+ common neighbors), confidence score ≥30%, and have reasonable location estimates. Check the Contacts page to see them on the map.",children:l.jsxs("p",{className:"type-label text-text-muted",children:[l.jsx("span",{className:"text-accent-tertiary type-data-sm",children:t})," ","unknown repeater",1!==t?"s":""," discovered via HMM analysis"]})})]})]})}function Ya(){var e,t,n,s,i,r,o,c,u,d,m,h,f,x,b,v,y;const w=G(),j=V(),k=I(),N=Y(),M=q(),[T,S]=a.useState(null),[C,_]=a.useState([]),[$,F]=a.useState(null),[L,z]=a.useState(null),[W,H]=a.useState(!0),[B,O]=a.useState(null),[te,ne]=a.useState(3),[se,le]=a.useState("airtime"),[ae,ie]=a.useState("smooth"),[re,oe]=a.useState(!1),[ce,ue]=a.useState(!1),[de,me]=a.useState(zl),he=N.length,fe=a.useCallback(e=>{a.startTransition(()=>{ne(e)})},[]),pe=U[te].hours,xe=60*pe,ge=X(pe),be=a.useMemo(()=>{var e;if(!(null==(e=null==w?void 0:w.config)?void 0:e.radio))return null;const t=w.config.radio;return{sf:t.spreading_factor??10,bw:t.bandwidth??25e4,cr:t.coding_rate??5,preamble:t.preamble_length??8}},[null==(t=null==(e=null==w?void 0:w.config)?void 0:e.radio)?void 0:t.spreading_factor,null==(s=null==(n=null==w?void 0:w.config)?void 0:n.radio)?void 0:s.bandwidth,null==(r=null==(i=null==w?void 0:w.config)?void 0:i.radio)?void 0:r.coding_rate,null==(c=null==(o=null==w?void 0:w.config)?void 0:o.radio)?void 0:c.preamble_length]),ke=a.useMemo(()=>0===he?null:Se.getBucketedStats(xe,ge,N,w),[he,xe,ge,be]),{utilSamples:Te,startTs:Ce,endTs:Pe}=a.useMemo(()=>{if(!ke)return{utilSamples:[],startTs:0,endTs:0};const{received:e,transmitted:t,forwarded:n,bucket_duration_seconds:s,start_time:l,end_time:a}=ke,i=function(e,t){const n=new Map;for(const s of e)n.set(s.start,{...s});for(const s of t){const e=n.get(s.start);e?(e.airtime_ms+=s.airtime_ms,e.count+=s.count):n.set(s.start,{...s})}return Array.from(n.values()).sort((e,t)=>e.start-t.start)}(t,n);return{utilSamples:_e(e,i),startTs:l,endTs:a}},[ke]),Ae=a.useMemo(()=>0===Te.length?{peak:0,mean:0}:{peak:Math.max(...Te.map(e=>e.rxUtilW)),mean:Te.reduce((e,t)=>e+t.rxUtilW,0)/Te.length},[Te]);a.useEffect(()=>{!async function(){var e;O(null);try{const[t,n]=await Promise.all([K(pe),J(pe)]);t.success&&t.data&&S(t.data),n.success&&(null==(e=n.data)?void 0:e.history)&&_(n.data.history)}catch(t){O(t instanceof Error?t.message:"Failed to load chart data")}finally{H(!1)}}()},[pe]);const Re=a.useMemo(()=>{switch(pe){case 72:return 6e5;case 168:return 18e5;default:return 3e5}},[pe]),De=a.useCallback(async()=>{try{const e=await K(pe);e.success&&e.data&&S(e.data)}catch{}},[pe]),Ee=a.useCallback(async()=>{var e;try{const t=await J(pe);t.success&&(null==(e=t.data)?void 0:e.history)&&_(t.data.history)}catch{}},[pe]);ee(De,Re,!0,!0),ee(Ee,Re,!0,!0);const $e=a.useMemo(()=>T&&T.series?T.series.map(e=>({name:e.name,value:e.data.reduce((e,t)=>e+(t[1]??0),0)})).filter(e=>e.value>0):[],[T]),Fe=a.useMemo(()=>0===C.length?{timestamps:[],values:[]}:{timestamps:C.map(e=>e.timestamp),values:C.map(e=>e.noise_floor_dbm)},[C]),Le=a.useMemo(()=>{if(C.length<10)return{anomalies:[],debug:void 0};const e=function(e,t={}){const n={...zl,...t};if(e.length<10)return{anomalies:[],thresholds:Hl([]),totalSamples:e.length,anomalySamples:0};const s=e.map(e=>e.noise_floor_dbm),l=Hl(s),a=[...s].sort((e,t)=>e-t);let i,r;n.useAbsoluteThresholds?(i=n.baselineDbm,r=n.spikeDbm):(i=Wl(a,n.baselinePercentile),r=Wl(a,n.spikePercentile));const o=[...e].sort((e,t)=>e.timestamp-t.timestamp),c=[];let u=null,d=0;for(const m of o)if(m.noise_floor_dbm>i&&m.noise_floor_dbme+t,0)/u.values.length):(u.values.length>=n.minSequenceLength&&c.push(u),u={startTs:m.timestamp,endTs:m.timestamp,values:[m.noise_floor_dbm],timestamps:[m.timestamp],rollingAvg:m.noise_floor_dbm})}else u={startTs:m.timestamp,endTs:m.timestamp,values:[m.noise_floor_dbm],timestamps:[m.timestamp],rollingAvg:m.noise_floor_dbm};else u&&u.values.length>=n.minSequenceLength&&c.push(u),u=null;return u&&u.values.length>=n.minSequenceLength&&c.push(u),0===c.length?{anomalies:[],thresholds:l,totalSamples:e.length,anomalySamples:d,debug:{baselineCutoff:i,spikeCutoff:r,midBandSamples:d}}:{anomalies:c.map(e=>{const t=Math.max(...e.values),n=e.values.reduce((e,t)=>e+t,0)/e.values.length;return{startTs:e.startTs,endTs:e.endTs,peakValue:t,avgValue:n,severity:Bl(n,i,r),sampleCount:e.values.length}}),thresholds:l,totalSamples:e.length,anomalySamples:d,debug:{baselineCutoff:i,spikeCutoff:r,midBandSamples:d}}}(C,de);return{anomalies:e.anomalies,debug:e.debug}},[C,de]),ze=Le.anomalies,We=U[te],He=a.useMemo(()=>{const e=(null==w?void 0:w.neighbors)??{};return Object.fromEntries(Object.entries(e).filter(([e])=>!j.has(e)))},[null==w?void 0:w.neighbors,j]),Be=a.useMemo(()=>{const e=Date.now()/1e3-3600*pe;return Object.fromEntries(Object.entries(He).filter(([,t])=>t.last_seen>=e))},[He,pe]),Oe=Z(pe),Ge=a.useMemo(()=>{const e=60*xe/Oe,t=Math.floor(Date.now()/1e3),n=Math.floor(t/e)*e;return{start:n-60*xe,end:n}},[xe,Oe]);return l.jsxs(we,{children:[l.jsx(je,{title:"Statistics",icon:l.jsx(A,{}),controls:l.jsx(Q,{ranges:U,selectedIndex:te,onSelect:fe})}),B&&l.jsx(ve,{className:"border border-accent-red/50 bg-accent-red/10",children:l.jsx("p",{className:"text-accent-red",children:B})}),re&&ce&&l.jsxs(ve,{className:"border border-accent-purple/30 bg-glass-surface/50",children:[l.jsxs("div",{className:"flex items-center justify-between mb-3",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("span",{className:"type-label",children:"Anomaly Detection Tuning"}),l.jsxs("span",{className:"type-data-xs text-text-muted",children:["(",We.label,")"]})]}),l.jsx("button",{onClick:()=>me(e=>({...e,useAbsoluteThresholds:!e.useAbsoluteThresholds})),className:"type-data-xs px-2 py-1 rounded transition-colors "+(de.useAbsoluteThresholds?"bg-accent-purple/30 text-accent-purple":"bg-glass-elevated text-text-muted hover:text-text-secondary"),children:de.useAbsoluteThresholds?"Absolute dBm":"Percentile"})]}),l.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[l.jsxs("div",{children:[l.jsx("span",{className:"type-micro",children:"Baseline"}),l.jsxs("span",{className:"ml-2 type-data-sm text-status-warning",children:[(null==(d=null==(u=Le.debug)?void 0:u.baselineCutoff)?void 0:d.toFixed(1))??"—"," dBm"]})]}),l.jsxs("div",{children:[l.jsx("span",{className:"type-micro",children:"Spike"}),l.jsxs("span",{className:"ml-2 type-data-sm text-status-warning",children:[(null==(h=null==(m=Le.debug)?void 0:m.spikeCutoff)?void 0:h.toFixed(1))??"—"," dBm"]})]}),l.jsxs("div",{children:[l.jsx("span",{className:"type-micro",children:"Mid-band"}),l.jsx("span",{className:"ml-2 type-data-sm text-accent-purple",children:(null==(f=Le.debug)?void 0:f.midBandSamples)??0})]}),l.jsxs("div",{children:[l.jsx("span",{className:"type-micro",children:"Anomalies"}),l.jsx("span",{className:"ml-2 type-data-sm text-status-danger",children:ze.length})]})]}),l.jsxs("div",{className:"mt-4 pt-4 border-t border-border-subtle",children:[de.useAbsoluteThresholds?l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-4",children:[l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Baseline (",de.baselineDbm," dBm)"]}),l.jsx("input",{type:"range",min:"-120",max:"-60",value:de.baselineDbm,onChange:e=>me(t=>({...t,baselineDbm:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Spike (",de.spikeDbm," dBm)"]}),l.jsx("input",{type:"range",min:"-100",max:"-20",value:de.spikeDbm,onChange:e=>me(t=>({...t,spikeDbm:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Merge Gap (",de.mergeGapSeconds,"s)"]}),l.jsx("input",{type:"range",min:"5",max:"120",step:"5",value:de.mergeGapSeconds,onChange:e=>me(t=>({...t,mergeGapSeconds:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Min Sequence (",de.minSequenceLength,")"]}),l.jsx("input",{type:"range",min:"2",max:"20",value:de.minSequenceLength,onChange:e=>me(t=>({...t,minSequenceLength:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Similarity (±",de.similarityToleranceDbm," dBm)"]}),l.jsx("input",{type:"range",min:"1",max:"15",value:de.similarityToleranceDbm,onChange:e=>me(t=>({...t,similarityToleranceDbm:Number(e.target.value)})),className:"w-full accent-accent-purple"})]})]}):l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-4",children:[l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Baseline (P",de.baselinePercentile,")"]}),l.jsx("input",{type:"range",min:"1",max:"50",value:de.baselinePercentile,onChange:e=>me(t=>({...t,baselinePercentile:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Spike (P",de.spikePercentile,")"]}),l.jsx("input",{type:"range",min:"50",max:"99",value:de.spikePercentile,onChange:e=>me(t=>({...t,spikePercentile:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Merge Gap (",de.mergeGapSeconds,"s)"]}),l.jsx("input",{type:"range",min:"5",max:"120",step:"5",value:de.mergeGapSeconds,onChange:e=>me(t=>({...t,mergeGapSeconds:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Min Sequence (",de.minSequenceLength,")"]}),l.jsx("input",{type:"range",min:"2",max:"20",value:de.minSequenceLength,onChange:e=>me(t=>({...t,minSequenceLength:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),l.jsxs("div",{children:[l.jsxs("label",{className:"type-micro block mb-1",children:["Similarity (±",de.similarityToleranceDbm," dBm)"]}),l.jsx("input",{type:"range",min:"1",max:"15",value:de.similarityToleranceDbm,onChange:e=>me(t=>({...t,similarityToleranceDbm:Number(e.target.value)})),className:"w-full accent-accent-purple"})]})]}),l.jsxs("div",{className:"mt-4 p-3 bg-glass-elevated rounded-lg",children:[l.jsx("div",{className:"type-micro mb-1",children:"Config output"}),l.jsxs("div",{className:"type-data-sm text-status-success",children:[de.useAbsoluteThresholds?`useAbsoluteThresholds: true, baselineDbm: ${de.baselineDbm}, spikeDbm: ${de.spikeDbm}`:`useAbsoluteThresholds: false, baselinePercentile: ${de.baselinePercentile}, spikePercentile: ${de.spikePercentile}`,", mergeGapSeconds: ",de.mergeGapSeconds,", minSequenceLength: ",de.minSequenceLength,", similarityToleranceDbm: ",de.similarityToleranceDbm]})]})]})]}),W?l.jsx(Ne,{template:"auto",children:l.jsx(ve,{className:"text-center py-12",children:l.jsx("div",{className:"animate-pulse text-text-muted",children:"Loading statistics..."})})}):l.jsxs(l.Fragment,{children:[l.jsx(Ne,{template:"hero-auto",children:l.jsxs(ve,{isLoaded:M,skeletonType:"chart",children:[l.jsx(ye,{icon:l.jsx(p,{}),title:"Packet Analyzer",badge:We.label,largeTitle:!0,actions:l.jsxs("div",{className:"flex flex-wrap items-center gap-2 justify-end",children:["stats"===ae&&l.jsx(fa,{enabled:re,onChange:oe,anomalyCount:ze.length,showTuning:ce,onTuningChange:ue}),l.jsx(pa,{smoothing:ae,onChange:ie}),l.jsx(ha,{mode:se,onChange:le})]})}),l.jsx("div",{className:"flex-1 min-h-0",children:l.jsx(xa,{packets:N,startTs:Ge.start,endTs:Ge.end,bucketCount:Oe,radioConfig:be??void 0,mode:se,smoothing:ae,noiseFloorAnomalies:ze,showNoiseFloorOverlay:re})})]})}),l.jsxs(Ne,{template:"panel",children:[l.jsx(Me,{span:12,md:6,children:l.jsxs(ve,{isLoaded:M,skeletonType:"chart",children:[l.jsx(ye,{icon:l.jsx(R,{}),title:"Airtime Utilization",badge:`${Math.round(5)}m window`,largeTitle:!0,actions:l.jsxs("div",{className:"flex items-center gap-3",children:[l.jsxs("span",{className:"type-data-xs text-text-muted",children:["Peak ",l.jsxs("span",{className:"text-text-secondary tabular-nums font-medium",children:[Ae.peak.toFixed(2),"%"]})]}),l.jsxs("span",{className:"type-data-xs text-text-muted",children:["Mean ",l.jsxs("span",{className:"text-text-secondary tabular-nums font-medium",children:[Ae.mean.toFixed(2),"%"]})]})]})}),l.jsx("div",{className:"flex-1 min-h-0",children:l.jsx(Wa,{children:l.jsx(Ta,{samples:Te,startTs:Ce,endTs:Pe})})})]})}),l.jsx(Me,{span:12,md:6,children:l.jsxs(ve,{isLoaded:M,skeletonType:"chart",children:[l.jsx(ye,{icon:l.jsx(g,{}),title:"Link Quality",badge:We.label,largeTitle:!0,actions:L?l.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 type-data-xs text-text-muted",children:[l.jsxs("span",{children:[l.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:L.zeroHopCount})," nbr"]}),l.jsxs("span",{children:[l.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:L.totalCount})," obs"]}),l.jsxs("span",{children:[l.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:L.maxDistanceKm.toFixed(0)})," km"]})]}):null}),l.jsx("div",{className:"flex-1 min-h-0",children:l.jsx(Wa,{children:l.jsx(Da,{neighbors:Be,quickNeighbors:k,localLat:(null==(b=null==(x=null==w?void 0:w.config)?void 0:x.repeater)?void 0:b.latitude)??0,localLon:(null==(y=null==(v=null==w?void 0:w.config)?void 0:v.repeater)?void 0:y.longitude)??0,onStatsChange:z})})})]})})]}),l.jsxs(Ne,{template:"panel",children:[l.jsx(Me,{span:12,md:6,children:l.jsxs(ve,{isLoaded:M,skeletonType:"chart",children:[l.jsx(ye,{icon:l.jsx(D,{}),title:"Packet Types",largeTitle:!0}),l.jsx("div",{className:"flex-1 min-h-0",children:l.jsx(Wa,{children:$e.length>0?l.jsx(ya,{data:$e}):l.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No packet type data available"})})})]})}),l.jsx(Me,{span:12,md:6,children:l.jsxs(ve,{isLoaded:M,skeletonType:"chart",children:[l.jsx(ye,{icon:l.jsx(E,{}),title:"Network Composition",badge:We.label,largeTitle:!0}),l.jsx("div",{className:"flex-1 min-h-0",children:l.jsx(Wa,{children:l.jsx(za,{neighbors:Be})})})]})})]}),l.jsxs(Ne,{template:"panel",children:[l.jsx(Me,{span:12,md:6,children:l.jsx(Ga,{})}),l.jsx(Me,{span:12,md:6,children:l.jsx(Ia,{})})]}),l.jsx(Ne,{template:"panel",children:l.jsx(Me,{span:12,children:l.jsxs(ve,{isLoaded:M,skeletonType:"chart",children:[l.jsx(ye,{icon:l.jsx(P,{}),title:"RF Noise Floor",largeTitle:!0,actions:$?l.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 md:gap-3",children:[l.jsxs("span",{className:"type-data-xs text-text-muted whitespace-nowrap",children:["min ",l.jsx("span",{className:"text-text-secondary tabular-nums",children:$.min.toFixed(0)})]}),l.jsxs("span",{className:"type-data-xs text-text-muted whitespace-nowrap",children:["avg ",l.jsx("span",{className:"text-text-secondary tabular-nums",children:$.avg.toFixed(0)})]}),l.jsxs("span",{className:"type-data-xs text-text-muted whitespace-nowrap",children:["max ",l.jsx("span",{className:"text-text-secondary tabular-nums",children:$.max.toFixed(0)})]}),l.jsx("span",{className:"type-data-xs text-text-muted",children:"dBm"})]}):l.jsx("span",{className:"type-data-xs text-text-muted",children:"dBm"})}),l.jsx("div",{className:"flex-1 min-h-0",children:l.jsx(Wa,{children:l.jsx($a,{timestamps:Fe.timestamps,values:Fe.values,onStatsChange:F})})})]})})})]})]})}export{Ya as default}; diff --git a/frontend/dist/assets/Statistics-CcE_ZMAZ.js b/frontend/dist/assets/Statistics-CcE_ZMAZ.js new file mode 100644 index 00000000..4d58603e --- /dev/null +++ b/frontend/dist/assets/Statistics-CcE_ZMAZ.js @@ -0,0 +1 @@ +var e,t,s=Object.defineProperty,a=(e,t,a)=>((e,t,a)=>t in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a)(e,"symbol"!=typeof t?t+"":t,a);import{j as n,r,ay as i,H as l,az as o,aA as c,aB as d,aC as m,aD as u,aE as h,aF as p,aG as x,o as g,aH as f,aI as b,aJ as y,aK as v,aL as j,aM as N,a4 as w,J as k,h as M,aa as C,ag as T,aN as S,a8 as P,p as R,C as A,T as $,aO as F,ap as _}from"./vendor-react-CWPBVwgk.js";import{L as D,M as L,N as E,O as W,U as B,p as H,Q as z,S as O,z as V,T as q,d as G,f as U,e as I,u as X,k as K,V as Y,X as J,Y as Q,h as Z,Z as ee}from"./index-BlYVqXhs.js";import{T as te}from"./TimeRangeSelector-B_qs4oni.js";import{u as se}from"./usePolling-BsbqQ0mQ.js";import{a as ae,b as ne,u as re,c as ie,d as le,e as oe,f as ce,s as de,p as me}from"./useThemeColors-f-o_FvwS.js";import{c as ue,R as he,d as pe,L as xe,C as ge,X as fe,Y as be,T as ye,a as ve}from"./recharts-cqZ_RWsW.js";import{a as je,c as Ne,P as we,b as ke}from"./PageLayout-Kh569_kh.js";import{C as Me}from"./CollisionExplorerModal-DFHbJ8T7.js";import{R as Ce,C as Te}from"./Grid-CguXkLgY.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";import"./leaflet-D_ckmI2R.js";function Se({children:e,centered:t,className:s}){return n.jsx("div",{className:ue("flex-1 min-h-0",t&&"flex items-center justify-center",s),children:e})}const Pe=new class{constructor(){a(this,"caches",new Map),a(this,"lastRadioConfigHash","")}getBucketedStats(e,t,s,a){const n=this.extractRadioConfig(a),r=this.hashRadioConfig(n);r!==this.lastRadioConfigHash&&(this.caches.clear(),this.lastRadioConfigHash=r);const i=60*e/t,l=Math.floor(Date.now()/1e3),o=Math.floor(l/i)*i,c=o-60*e;let d=this.caches.get(e);return d&&d.bucketCount===t&&d.radioConfigHash===r&&Math.abs(d.endTime-o){const e=new Array(t);for(let s=0;sr)continue;if(!a&&t<=e.lastProcessedTimestamp)continue;const c=Math.floor((t-n)/i);if(c<0||c>=l)continue;const d=D(o),m=L(d,{spreadingFactor:s.sf,bandwidthHz:s.bw,codingRate:s.cr,preambleLength:s.preamble}),u=o.packet_origin;"tx_local"===u?(e.transmitted[c].count++,e.transmitted[c].airtime_ms+=m):"tx_forward"===u||o.transmitted?(e.forwarded[c].count++,e.forwarded[c].airtime_ms+=m):o.drop_reason&&(e.dropped[c].count++,e.dropped[c].airtime_ms+=m),"tx_local"!==u&&(e.received[c].count++,e.received[c].airtime_ms+=m,e.received[c].snr_sum+=o.snr||0,e.received[c].rssi_sum+=o.rssi||0,e.received[c].signal_count++),t>e.lastProcessedTimestamp&&(e.lastProcessedTimestamp=t)}}shiftTimeWindow(e,t,s){const{bucketDuration:a,bucketCount:n}=e,r=Math.round((s-e.endTime)/a);if(0!==r){if(r>0&&r{const n=new Array(a);for(let r=0;r0?a.snr_sum/a.signal_count:0,avg_rssi:a.signal_count>0?a.rssi_sum/a.signal_count:0}}return n};return{time_range_minutes:e.minutes,bucket_count:e.bucketCount,bucket_duration_seconds:e.bucketDuration,start_time:e.startTime,end_time:e.endTime,received:n(e.received),transmitted:n(e.transmitted),forwarded:n(e.forwarded),dropped:n(e.dropped)}}extractRadioConfig(e){var t;const s=null==(t=null==e?void 0:e.config)?void 0:t.radio;return{sf:(null==s?void 0:s.spreading_factor)??10,bw:(null==s?void 0:s.bandwidth)??25e4,cr:(null==s?void 0:s.coding_rate)??5,preamble:(null==s?void 0:s.preamble_length)??8}}hashRadioConfig(e){return`${e.sf}-${e.bw}-${e.cr}-${e.preamble}`}},Re=3e5;function Ae(e,t,s,a=!0,n=60){const r=[...e].sort((e,t)=>e.start-t.start),i=[...t].sort((e,t)=>e.start-t.start),l=new Map(e.map(e=>[e.start,e])),o=new Map(t.map(e=>[e.start,e])),c=Array.from(new Set([...l.keys(),...o.keys()])).sort((e,t)=>e-t);if(0===c.length)return[];const d=new Float64Array(r.length+1),m=new Float64Array(i.length+1),u=new Float64Array(r.length),h=new Float64Array(i.length);for(let g=0;g{let s=0,a=e.length;for(;s>>1;e[n]{const t=e-300,s=p(u,t),a=p(u,e+1),n=d[a]-d[s],r=p(h,t),i=p(h,e+1),l=m[i]-m[r];return{timestamp:e,rxUtilW:n/Re*100,txUtilW:l/Re*100}});return a&&x.length>1?function(e,t=60){if(0===e.length)return[];const s=1-Math.pow(.5,1/t),a=Math.min(e.length,Math.max(10,Math.floor(t/3)));let n=0,r=0;for(let i=0;i(n=s*e.rxUtilW+(1-s)*n,r=s*e.txUtilW+(1-s)*r,{...e,rxRolling:n,txRolling:r}))}(x,n):x}r.memo(function({options:e,data:t,className:s="",onCreate:a}){const i=r.useRef(null),l=r.useRef(null);return r.useEffect(()=>{const s=i.current;if(!s)return;const n=s.getBoundingClientRect(),r=Math.floor(n.width)||400,o=Math.floor(n.height)||200,c=new E({...e,width:r,height:o},t,s);return l.current=c,null==a||a(c),()=>{c.destroy(),l.current=null}},[e]),r.useEffect(()=>{l.current&&t&&l.current.setData(t)},[t]),r.useEffect(()=>{const e=i.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!l.current)return;const{width:s,height:a}=t.contentRect;s>0&&a>0&&l.current.setSize({width:Math.floor(s),height:Math.floor(a)})});return t.observe(e),()=>{t.disconnect()}},[]),n.jsx("div",{ref:i,className:`w-full h-full ${s}`,style:{minHeight:100}})});const $e=new Map;function Fe(e){var t;if(!e.startsWith("var("))return e;const s=$e.get(e);if(s)return s;const a=e.match(/var\(([^,)]+)(?:,\s*([^)]+))?\)/);if(!a)return e;const n=a[1].trim(),r=(null==(t=a[2])?void 0:t.trim())||"#888888",i=getComputedStyle(document.documentElement).getPropertyValue(n).trim()||r;return $e.set(e,i),i}function _e(e,t,s=!1){if(t.length<2)return;if(e.beginPath(),e.moveTo(t[0].x,t[0].y),2===t.length)return void e.lineTo(t[1].x,t[1].y);const a=.5;for(let n=0;n{const r=e.current,i=t.current,l=s.current;if(0===r.length)return;const o=n.ctx,c=n.bbox,d=c.left,m=c.top,u=c.width,h=c.height;if(u<=0||h<=0)return;const p=n.data[0],x=p.length;if(0===x)return;const g=p[0],f=p[x-1]-g||1,b=e=>d+(e-g)/f*u,y=e=>m+h*(1-e/i),v={min:r.map(e=>({x:b(e.timestamp),y:y(e.min)})),max:r.map(e=>({x:b(e.timestamp),y:y(e.max)})),p5:r.map(e=>({x:b(e.timestamp),y:y(e.p5)})),p95:r.map(e=>({x:b(e.timestamp),y:y(e.p95)})),p25:r.map(e=>({x:b(e.timestamp),y:y(e.p25)})),p75:r.map(e=>({x:b(e.timestamp),y:y(e.p75)})),mean:r.map(e=>({x:b(e.timestamp),y:y(e.mean)})),median:r.map(e=>({x:b(e.timestamp),y:y(e.median)})),average:r.map(e=>({x:b(e.timestamp),y:y(e.average)}))},j=(e,t)=>l?l===e?Math.min(1,1.5*t):"minMax"===l||"p5p95"===l||"p25p75"===l?.3*t:t:t,N=e=>l?l===e?1:"mean"===l||"median"===l||"average"===l?.3:1:1,w={band:Fe(a.band),innerBand:Fe(a.innerBand),mean:Fe(a.mean),median:Fe(a.median),average:Fe(a.average)};o.save(),o.strokeStyle=w.average,o.lineWidth=4,o.globalAlpha=N("average"),_e(o,v.average),o.stroke(),o.globalAlpha=j("minMax",.15),o.fillStyle=w.band,o.beginPath(),_e(o,v.max);const k=[...v.min].reverse();for(const e of k)o.lineTo(e.x,e.y);o.closePath(),o.fill(),o.globalAlpha=j("p5p95",.3),o.fillStyle=w.band,o.beginPath(),_e(o,v.p95);const M=[...v.p5].reverse();for(const e of M)o.lineTo(e.x,e.y);o.closePath(),o.fill(),o.globalAlpha=j("p25p75",.55),o.fillStyle=w.innerBand,o.beginPath(),_e(o,v.p75);const C=[...v.p25].reverse();for(const e of C)o.lineTo(e.x,e.y);o.closePath(),o.fill(),o.strokeStyle=w.median,o.lineWidth=1.5,o.globalAlpha=N("median"),o.setLineDash([4,4]),_e(o,v.median),o.stroke(),o.strokeStyle=w.mean,o.lineWidth=1.5,o.globalAlpha=N("mean"),o.setLineDash([]),_e(o,v.mean),o.stroke(),o.restore()}}}}r.memo(function({data:e,maxValue:t,onHover:s,highlightedItem:a=null,bandColor:i="#E12672",innerBandColor:l="#FF2D7A",meanColor:o="#FF6B9D",medianColor:c="#FF85AD",averageColor:d="#FFE135",cursorColor:m="rgba(255,255,255,0.5)"}){const u=r.useRef(null),h=r.useRef(null),p=r.useRef(e),x=r.useRef(t),g=r.useRef(a),f=r.useRef(s),b=r.useRef(e.length);p.current=e,x.current=t,g.current=a,f.current=s;const y=r.useMemo(()=>({band:i,innerBand:l,mean:o,median:c,average:d,cursor:m}),[i,l,o,c,d,m]),v=r.useMemo(()=>[e.map(e=>e.timestamp),e.map(e=>e.max)],[e]),j=r.useMemo(()=>({width:400,height:200,padding:[4,4,4,4],cursor:{show:!0,x:!0,y:!1,drag:{x:!1,y:!1},points:{show:!1}},scales:{x:{time:!0},y:{range:[0,t]}},axes:[{show:!1},{show:!1}],series:[{},{show:!1}],hooks:{setCursor:[e=>{var t,s;const a=e.cursor.idx;null!=a&&a>=0?null==(t=f.current)||t.call(f,a):null==(s=f.current)||s.call(f,null)}]},plugins:[De(p,x,g,y)]}),[t,y]);r.useEffect(()=>{const t=u.current;if(!t||0===e.length)return;const s=b.current,a=e.length,n=Math.abs(a-s);if(!(!h.current||n>100||s>0&&n/s>.1)&&h.current)return h.current.setData(v),void(b.current=a);h.current&&h.current.destroy();const r=t.getBoundingClientRect(),i=Math.floor(r.width)||400,l=Math.floor(r.height)||200,o=new E({...j,width:i,height:l},v,t);return h.current=o,b.current=a,()=>{o.destroy(),h.current=null}},[j,v,e.length]),r.useEffect(()=>{const e=u.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!h.current)return;const{width:s,height:a}=t.contentRect;s>0&&a>0&&h.current.setSize({width:Math.floor(s),height:Math.floor(a)})});return t.observe(e),()=>{t.disconnect()}},[]),r.useEffect(()=>{h.current&&h.current.redraw()},[a,e]);const N=r.useCallback(()=>{null==s||s(null)},[s]);return 0===e.length?n.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No data available"}):n.jsx("div",{ref:u,className:"w-full h-full rounded-2xl overflow-hidden",onMouseLeave:N})});const Le="undefined"!=typeof window&&(null==(t=null==(e=window.matchMedia)?void 0:e.call(window,"(color-gamut: p3)"))?void 0:t.matches);function Ee(){const e=getComputedStyle(document.documentElement);return{fontFamily:e.getPropertyValue("--font-data").trim()||'"JetBrains Mono", ui-monospace, monospace',axisColor:e.getPropertyValue("--chart-axis-tick").trim()||"rgba(255, 255, 255, 0.4)",gridColor:e.getPropertyValue("--chart-grid").trim()||"rgba(255, 255, 255, 0.06)",textMuted:e.getPropertyValue("--text-muted").trim()||"#727272",textPrimary:e.getPropertyValue("--text-primary").trim()||"#FFFFFF"}}const We=["min","max","p75","p95","p99","mean","median","average","midpoint"];let Be=null,He=0;const ze={0:{r:0,g:144,b:255},7:{r:0,g:102,b:204},1:{r:102,g:204,b:255},3:{r:0,g:230,b:153},4:{r:255,g:242,b:0},2:{r:255,g:179,b:0},5:{r:255,g:128,b:192},6:{r:255,g:102,b:0},10:{r:179,g:179,b:179},15:{r:230,g:102,b:204},8:{r:102,g:179,b:255},9:{r:51,g:255,b:179},255:{r:128,g:128,b:128}};function Oe(e){return ze[e]??ze[255]}function Ve(e){const t=Date.now();(!Be||t-He>1e3)&&(Be={green:{r:34,g:197,b:94,p3:"color(display-p3 0.13 0.77 0.37)"},good:{r:132,g:204,b:22,p3:"color(display-p3 0.52 0.80 0.09)"},fair:{r:250,g:204,b:21,p3:"color(display-p3 0.98 0.80 0.08)"},poor:{r:249,g:115,b:22,p3:"color(display-p3 0.98 0.45 0.09)"},critical:{r:239,g:68,b:68,p3:"color(display-p3 0.94 0.27 0.27)"}},He=t);const s=Be;return e>=1?s.critical:e>=.75?s.poor:e>=.5?s.fair:e>=.25?s.good:s.green}function qe(e,t,s,a,n,r,i,l,o,c=null,d=null,m=1,u=null,h="airtime",p=.5){if(0===t.length)return;const x=e.ctx,{left:g,top:f,width:b,height:y}=e.bbox,v=window.devicePixelRatio||1;if(b<=0||y<=0)return;const j=e.data[0],N=j.length;if(0===N)return;const w=j[0],k=j[N-1],M=s,C="share"===h,T=C?function(e){const t=[10,20,25,50,100,200,250,500,1e3],s=e/4.5;for(const a of t)if(a>=s)return a;return e>5e3?1e3*Math.ceil(s/1e3):100*Math.ceil(s/100)}(M):5,S=getComputedStyle(document.documentElement),P=S.getPropertyValue("--signal-critical").trim()||"#EF4444",R=S.getPropertyValue("--bg-elevated").trim()||"#333233";x.save(),x.fillStyle="rgba(0, 0, 0, 0.4)";const A=8*v;if(x.beginPath(),x.roundRect(g,f,b,y,A),x.fill(),x.restore(),!C&&M>=20){x.save();const e=f+y*(1-20/M);x.fillStyle=R,x.globalAlpha=.5,x.fillRect(g,f,b,e-f),x.restore()}x.save(),x.lineWidth=1*v,x.setLineDash([4*v,4*v]);for(let F=T;Fs+n)return;const l=getComputedStyle(document.documentElement).getPropertyValue("--text-primary").trim()||"#FFFFFF";e.save(),e.strokeStyle=l,e.globalAlpha=.5,e.lineWidth=1*i,e.setLineDash([4*i,4*i]),e.beginPath(),e.moveTo(Math.round(t)+.5,a),e.lineTo(Math.round(t)+.5,a+r),e.stroke(),e.restore()}(x,u,g,f,b,y,v),i){!function(e,t,s,a,n,r,i=null,l=null,o=1,c=25){const{points:d,rawValues:m,count:u,packetTypes:h,timestamps:p,maxValue:x}=t,g=1*o*(window.devicePixelRatio||1);e.globalCompositeOperation="source-over";const f=i?parseInt(i.replace("TYPE_",""),10):null;for(let b=0;b=l.start&&e0&&function(e,t,s,a,n,r,i,l,o,c,d=.5){if(0===t.length)return;const m=o-l||1,u=function(e,t=1.3,s=.15){const a=function(e){const t=e.match(/color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(t){const e=parseFloat(t[1]),s=parseFloat(t[2]),a=parseFloat(t[3]);return{r:Math.round(255*e),g:Math.round(255*s),b:Math.round(255*a),p3r:e,p3g:s,p3b:a}}if(e.startsWith("#")){const t=e.replace("#",""),s=parseInt(t.slice(0,2),16),a=parseInt(t.slice(2,4),16),n=parseInt(t.slice(4,6),16);return{r:s,g:a,b:n,p3r:s/255,p3g:a/255,p3b:n/255}}const s=e.match(/rgba?\(([\d.]+),?\s*([\d.]+),?\s*([\d.]+)/);if(s){const e=Math.round(parseFloat(s[1])),t=Math.round(parseFloat(s[2])),a=Math.round(parseFloat(s[3]));return{r:e,g:t,b:a,p3r:e/255,p3g:t/255,p3b:a/255}}return{r:255,g:255,b:255,p3r:1,p3g:1,p3b:1}}(e),n=function(e,t,s,a=1.25,n=.15){const r=(Math.max(e,t,s)+Math.min(e,t,s))/2;return{p3r:Math.min(1,r+(e-r)*a+n),p3g:Math.min(1,r+(t-r)*a+n),p3b:Math.min(1,r+(s-r)*a+n)}}(a.p3r,a.p3g,a.p3b,t,s);return{r:Math.round(255*Math.min(1,n.p3r)),g:Math.round(255*Math.min(1,n.p3g)),b:Math.round(255*Math.min(1,n.p3b)),p3r:Math.min(1,n.p3r),p3g:Math.min(1,n.p3g),p3b:Math.min(1,n.p3b)}}(getComputedStyle(document.documentElement).getPropertyValue("--signal-critical").trim()||"#EF4444");e.save(),e.globalAlpha=d,e.fillStyle=Le?`color(display-p3 ${u.p3r} ${u.p3g} ${u.p3b})`:`rgb(${u.r}, ${u.g}, ${u.b})`;for(const h of t){if(h.endTso)continue;const t=a+(Math.max(h.startTs,l)-l)/m*r,s=a+(Math.min(h.endTs,o)-l)/m*r,d=Math.max(s-t,2*c);e.fillRect(t,n,d,i)}e.restore()}(x,l,0,g,f,b,y,w,k,v,d?Math.max(.03,.03*p):p)}const Ge=r.memo(function({data:e,maxValue:t,visibleLines:s=We,highlightedLine:a=null,onHover:i,scatterData:l=null,noiseFloorAnomalies:o=null,showNoiseFloorOverlay:c=!1,overlayOpacity:d=.5,highlightedType:m=null,hoveredTimeRange:u=null,timeRangeHours:h=24,yAxisMode:p="airtime"}){const x=r.useRef(null),g=r.useRef(null),f=r.useRef(e),b=r.useRef(t),y=r.useRef(s),v=r.useRef(a),j=r.useRef(i),N=r.useRef(l),w=r.useRef(o),k=r.useRef(c),M=r.useRef(m),C=r.useRef(u),T=r.useRef(null),S=r.useRef(null),P=r.useRef(p),R=r.useRef(d),A=h<=12?1.2:1,$=r.useRef(A),F=r.useRef(e.length);f.current=e,b.current=t,y.current=s,v.current=a,j.current=i,N.current=l,w.current=o,k.current=c,M.current=m,C.current=u,$.current=A,P.current=p,R.current=d,r.useEffect(()=>{T.current=Ee()},[]);const _=r.useMemo(()=>[e.map(e=>e.timestamp),new Array(e.length).fill(1)],[e]),D=r.useMemo(()=>({hooks:{draw:e=>{const t=T.current||Ee();qe(e,f.current,b.current,y.current,v.current,t,N.current,w.current,k.current,M.current,C.current,$.current,S.current,P.current,R.current)}}}),[]),L=r.useMemo(()=>({width:400,height:200,padding:[8,0,8,28],cursor:{show:!1,x:!1,y:!1,drag:{x:!1,y:!1},points:{show:!1}},scales:{x:{time:!0},y:{range:[0,1]}},axes:[{show:!1},{show:!1}],series:[{},{show:!1}],plugins:[D]}),[D]);r.useEffect(()=>{const t=x.current;if(!t||0===e.length)return;const s=F.current,a=e.length,n=Math.abs(a-s);if(!(!g.current||n>100||s>0&&n/s>.1)&&g.current)return g.current.setData(_),void(F.current=a);g.current&&g.current.destroy();const r=t.getBoundingClientRect(),i=Math.floor(r.width)||400,l=Math.floor(r.height)||200,o=new E({...L,width:i,height:l},_,t);return g.current=o,F.current=a,()=>{o.destroy(),g.current=null}},[L,_,e.length]),r.useEffect(()=>{const e=x.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!g.current)return;const{width:s,height:a}=t.contentRect;s>0&&a>0&&g.current.setSize({width:Math.floor(s),height:Math.floor(a)})});return t.observe(e),()=>{t.disconnect()}},[]),r.useEffect(()=>{g.current&&g.current.redraw()},[a,s,e,l,o,c,d,m,u,A]);const W=r.useCallback(t=>{var s,a;const n=x.current,r=g.current;if(!n||!r||0===e.length)return;const i=n.getBoundingClientRect(),l=t.clientX-i.left,o=window.devicePixelRatio||1,c=r.bbox,d=c.left/o,m=c.width/o;if(ld+m)return S.current=null,r.redraw(),void(null==(s=j.current)||s.call(j,null));S.current=l*o;const u=(l-d)/m,h=e.length,p=Math.floor(u*h),f=Math.max(0,Math.min(h-1,p));r.redraw(),null==(a=j.current)||a.call(j,f)},[e.length]),B=r.useCallback(()=>{var e;S.current=null,g.current&&g.current.redraw(),null==(e=j.current)||e.call(j,null)},[]);return 0===e.length?n.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No data available"}):n.jsx("div",{ref:x,className:"w-full h-full rounded-lg overflow-hidden",onMouseMove:W,onMouseLeave:B})}),Ue={[W.REQ]:"var(--pkt-science-req)",[W.ANON_REQ]:"var(--pkt-science-anon-req)",[W.RESPONSE]:"var(--pkt-science-response)",[W.ACK]:"var(--pkt-science-ack)",[W.ADVERT]:"var(--pkt-science-advert)",[W.TXT_MSG]:"var(--pkt-science-txt-msg)",[W.GRP_TXT]:"var(--pkt-science-grp-txt)",[W.GRP_DATA]:"var(--pkt-science-grp-data)",[W.PATH]:"var(--pkt-science-path)",[W.TRACE]:"var(--pkt-science-trace)",[W.MULTIPART]:"var(--pkt-science-multipart)",[W.RAW_CUSTOM]:"var(--pkt-science-raw-custom)"},Ie="var(--pkt-science-unknown)";function Xe(e){return"number"!=typeof e?Ie:Ue[e]??Ie}const Ke=new class{constructor(){a(this,"buckets",new Map),a(this,"lastProcessedTimestamp",0),a(this,"processedPacketCount",0),a(this,"cacheKey",null),a(this,"bucketDuration",60),a(this,"bucketDurationMs",6e4)}getBuckets(e,t,s,a){const n={startTs:t,endTs:s,radioConfigHash:this.hashRadioConfig(a)};return this.isCacheValid(n)?this.processPackets(e,t,s,a,!1):(this.invalidate(n),this.processPackets(e,t,s,a,!0)),this.toBucketDataArray(t,s)}processPackets(e,t,s,a,n){const r=Math.ceil((s-t)/this.bucketDuration);let i=0;for(const l of e){const e=l.timestamp;if(e=s)continue;if(!n&&e<=this.lastProcessedTimestamp)continue;const o=Math.min(Math.floor((e-t)/this.bucketDuration),r-1),c=this.buckets.get(o)??{total:0,totalAirtime:0};c.total+=1;const d=D(l);c.totalAirtime+=L(d,{spreadingFactor:a.sf,bandwidthHz:a.bw,codingRate:a.cr,preambleLength:a.preamble}),this.buckets.set(o,c),e>this.lastProcessedTimestamp&&(this.lastProcessedTimestamp=e),i++}this.processedPacketCount+=i}toBucketDataArray(e,t){const s=t-e,a=Math.ceil(s/this.bucketDuration),n=s/3600,r=[];for(let i=0;i24?s.toLocaleDateString([],{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}):s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),l=this.buckets.get(i)??{total:0,totalAirtime:0};r.push({timestamp:t,time:a,total:l.total,totalAirtime:l.totalAirtime,bucketDurationMs:this.bucketDurationMs})}return r}isCacheValid(e){return!!this.cacheKey&&this.cacheKey.startTs===e.startTs&&this.cacheKey.endTs===e.endTs&&this.cacheKey.radioConfigHash===e.radioConfigHash}invalidate(e){this.buckets.clear(),this.lastProcessedTimestamp=0,this.processedPacketCount=0,this.cacheKey=e}hashRadioConfig(e){return`${e.sf}-${e.bw}-${e.cr}-${e.preamble}`}clear(){this.buckets.clear(),this.lastProcessedTimestamp=0,this.processedPacketCount=0,this.cacheKey=null}getStats(){return{bucketCount:this.buckets.size,processedPackets:this.processedPacketCount,lastTimestamp:this.lastProcessedTimestamp,cacheKey:this.cacheKey}}};function Ye(e){return H[e]??`TYPE_${e.toString(16).toUpperCase()}`}const Je={sf:10,bw:25e4,cr:5,preamble:8};function Qe(e,t){if(0===e.length)return[];const s=Math.floor((t-1)/2),a=[];for(let n=0;n=s?e[n-s]:e[0];a.push(e[n]+(e[n]-t))}return function(e,t){if(0===e.length)return[];const s=2/(t+1),a=[e[0]];for(let n=1;n{if(!i)return null;const e=new Map;for(const t of i.items)e.set(t.key,t.value);return e},[i]),o=null!==l;return n.jsx("div",{className:"flex-shrink-0 pt-3 mt-2",children:n.jsx("div",{className:"grid ml-9 gap-y-0.5",style:{gridTemplateColumns:"repeat(auto-fill, minmax(105px, 1fr))"},onMouseLeave:()=>s(null),children:e.map(e=>{const r=Xe(e.typeNum),i=(null==l?void 0:l.get(e.key))??0,c=a.get(e.key)??0,d=o?i:c,m=d>1e-4,u=t===e.key,h=t&&t!==e.key;let p="legend-item";return u?p+=" legend-item-active":h?p+=" legend-item-dimmed":o&&i>1e-4?p+=" legend-item-chart-active":o&&i<=1e-4&&(p+=" legend-item-dimmed"),n.jsxs("div",{className:p,onMouseEnter:()=>s(e.key),children:[n.jsx("div",{className:"w-2.5 h-2.5 rounded flex-shrink-0",style:{backgroundColor:r}}),n.jsx("span",{className:"legend-label",children:e.label}),m&&n.jsxs("span",{className:"legend-value "+(o?"legend-value-live":""),children:[(100*d).toFixed(1),"%"]})]},e.key)})})})}function et({x:e,y:t,width:s,height:a,name:r,size:i,index:l,depth:o,hoveredIndex:c,onHover:d,total:m,typeNum:u}){if(1!==o)return null;const h=null!==c&&!(c===l),p=Xe(u),x=m>0?i/m*100:0,g=s>36&&a>20,f=s>36&&a>32;return n.jsxs("g",{onMouseEnter:e=>d(l,e),onMouseLeave:()=>d(null),style:{cursor:"default"},children:[n.jsx("rect",{x:e,y:t,width:s,height:a,fill:p,opacity:h?.4:1,stroke:"rgba(0,0,0,0.2)",strokeWidth:1,rx:3,style:{transition:"opacity 150ms ease"}}),g&&n.jsxs(n.Fragment,{children:[f&&n.jsxs("text",{x:e+4,y:t+a-4-11,textAnchor:"start",dominantBaseline:"auto",fill:"rgba(0,0,0,0.6)",fontSize:8,fontFamily:"'JetBrains Mono', monospace",fontWeight:500,style:{pointerEvents:"none"},children:[x.toFixed(1),"%"]}),n.jsx("text",{x:e+4,y:t+a-4,textAnchor:"start",dominantBaseline:"auto",fill:"rgba(0,0,0,0.85)",fontSize:9,fontFamily:"'JetBrains Mono', monospace",fontWeight:600,style:{pointerEvents:"none"},children:r})]})]})}function tt({data:e,total:t,color:s,position:a,containerWidth:r}){if(!e||!a)return null;const i=(e.value/t*100).toFixed(1),l=r-a.x<184?Math.max(8,a.x-160-8):a.x+16;return n.jsx("div",{className:"absolute z-50 pointer-events-none",style:{left:l,top:Math.max(8,a.y-60)},children:n.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 shadow-xl min-w-[140px]",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("span",{className:"w-2.5 h-2.5 rounded-sm flex-shrink-0",style:{backgroundColor:s}}),n.jsx("span",{className:"type-data-sm font-semibold text-text-primary",children:e.name})]}),n.jsxs("div",{className:"space-y-0.5 type-data-xs text-text-muted",children:[n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("span",{children:"Count"}),n.jsx("span",{className:"text-text-primary tabular-nums font-medium",children:e.value.toLocaleString()})]}),n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("span",{children:"Share"}),n.jsxs("span",{className:"text-text-primary tabular-nums font-medium",children:[i,"%"]})]}),n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("span",{children:"Total"}),n.jsx("span",{className:"text-text-primary tabular-nums font-medium",children:t.toLocaleString()})]})]})]})})}function st({sortedTypes:e,aggregateShares:t}){var s,a,i;const[l,o]=r.useState(null),[c,d]=r.useState(null),[m,u]=r.useState(0),[h,p]=r.useState(null),g=r.useRef(null),f=r.useMemo(()=>e.reduce((e,t)=>e+t.totalCount,0),[e]),b=r.useMemo(()=>e.map((e,t)=>({name:e.label,size:e.totalCount,index:t,typeNum:e.typeNum,key:e.key})),[e]),y=r.useCallback((e,t)=>{if(o(e),t&&null!==e){const e=g.current;if(e){const s=e.getBoundingClientRect();u(s.width),d({x:t.clientX-s.left,y:t.clientY-s.top})}}else d(null)},[]),v=r.useCallback(e=>{if(p(e),e){const t=b.findIndex(t=>t.key===e);o(t>=0?t:null)}else o(null)},[b]),j=null!==l?{name:(null==(s=b[l])?void 0:s.name)??"",value:(null==(a=b[l])?void 0:a.size)??0}:null,N=null!==l?Xe(null==(i=b[l])?void 0:i.typeNum):"";return 0===e.length||0===f?n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(x,{className:"w-6 h-6 mr-2 opacity-50"}),n.jsx("span",{children:"No packet type data available"})]}):n.jsxs("div",{className:"flex flex-col",children:[n.jsxs("div",{className:"analyzer-chart-height relative flex-shrink-0",ref:g,children:[n.jsx(he,{width:"100%",height:"100%",children:n.jsx(pe,{data:b,dataKey:"size",aspectRatio:4/3,stroke:"none",isAnimationActive:!1,content:n.jsx(et,{x:0,y:0,width:0,height:0,name:"",size:0,index:0,depth:0,hoveredIndex:l,onHover:y,total:f,typeNum:0})})}),n.jsx(tt,{data:j,total:f,color:N,position:c,containerWidth:m})]}),n.jsx(Ze,{sortedTypes:e,highlightedType:h,onTypeHover:v,aggregateShares:t})]})}function at(e){const{values:t,sum:s}=e;if(0===t.length)return{min:0,mean:0,median:0,p75:0,p95:0,p99:0,max:0};const a=[...t].sort((e,t)=>e-t),n=a.length,r=s/n,i=a[0],l=a[n-1],o=e=>{const t=Math.min(Math.ceil(e*n)-1,n-1);return a[Math.max(0,t)]};return{min:i,mean:r,median:n%2==0?(a[n/2-1]+a[n/2])/2:a[Math.floor(n/2)],p75:o(.75),p95:o(.95),p99:o(.99),max:l}}function nt({statsBuckets:e,bucketData:t,mode:s,packets:a,startTs:i,endTs:l,radioConfig:o,sortedTypes:c,aggregateShares:d,noiseFloorAnomalies:m,showNoiseFloorOverlay:u,overlayOpacity:h=.5}){const[p,g]=r.useState(null),[f,b]=r.useState(null),y=r.useMemo(()=>(l-i)/3600,[i,l]),v=r.useCallback(e=>{b(e)},[]),j=function(e,t,s,a,n){return r.useMemo(()=>{if(0===e.length||!n)return null;const r=e.filter(e=>e.timestamp>=t&&e.timestamp<=s);if(0===r.length)return null;const i=Re,l=[],o=new Map;for(const e of r){const s=e.type??e.payload_type??-1,r=D(e);let i;if(i="airtime"===a?L(r,{spreadingFactor:n.sf,bandwidthHz:n.bw,codingRate:n.cr,preambleLength:n.preamble}):1,r<=0)continue;const c=Math.floor((e.timestamp-t)/300),d={timestamp:e.timestamp,airtimeMs:i,byteSize:r,packetType:s,bucketIndex:c};l.push(d),o.has(c)||o.set(c,[]),o.get(c).push(d)}if(0===l.length)return null;const c=[],d=[],m=[],u=new Map;if("share"===a)for(const[,e]of o)for(const t of e)u.set(t,t.byteSize);else for(const[,e]of o){const t=e.reduce((e,t)=>e+t.airtimeMs,0)/i*100,s=Math.max(...e.map(e=>e.airtimeMs));for(const a of e){const e=a.airtimeMs/s*t;u.set(a,e)}}for(const e of l){const t=u.get(e);void 0!==t&&(c.push(t),d.push(e.timestamp),m.push(e.packetType))}const h=Math.min(...d),p=Math.max(...d),x=p-h||1,g=[...c].sort((e,t)=>e-t),f=g[0],b=g[g.length-1],y=Math.floor(.05*g.length),v=Math.floor(.5*g.length),j=Math.min(Math.ceil(.95*g.length),g.length-1),N=g[y],w=g[v],k=g[j],M=new Map;for(const e of c){const t=Math.round(100*e)/100;M.set(t,(M.get(t)??0)+1)}const C=M.size,T=[...M.entries()].sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e,t])=>({value:e,count:t,percent:t/c.length*100}));let S;if("share"===a){const e=50,t=Math.ceil(b/e)*e;S=Math.max(t,50)}else{const e=5,t=5,s=Math.ceil(b/e)*e;S=Math.max(s+t,10)}const P=new Float32Array(2*c.length),R=new Float32Array(c.length),A=new Uint8Array(c.length),$=new Float32Array(c.length);for(let e=0;e=0?m[e]:255,$[e]=d[e]}return{points:P,rawValues:R,packetTypes:A,timestamps:$,count:c.length,minTime:h,maxTime:p,minValue:0,maxValue:S,rawMinValue:f,rawMaxValue:b,unit:"%",stats:{p5:N,p50:w,p95:k,uniqueValues:C,topValues:T}}},[e,t,s,a,n])}(a,i,l,"share"===s?"share":"airtime",o),{data:N}=r.useMemo(()=>function(e,t){var s;const a=e.length;if(0===a)return{data:[],windowSize:0,windowDurationMs:0};const n=(null==(s=e[0])?void 0:s.bucketDurationMs)??1e3,r=Math.min(Math.max(5,Math.round(3e5/n)),a),i=Math.floor(r/2),l=[];let o=0,c=0;for(let d=0;dN.map(e=>({timestamp:e.timestamp,min:e.min,max:e.max,p75:e.p75,p95:e.p95,p99:e.p99,mean:e.mean,median:e.median,average:e.average,midpoint:e.midpoint})),[N]),k=r.useMemo(()=>(null==j?void 0:j.maxValue)?j.maxValue:"share"===s?200:10,[j,s]),M=r.useCallback(e=>{g(e)},[]),C=r.useMemo(()=>{if(null===p||!N[p])return null;const e=N[p];let t;t=y>=168?75:y>=72?35:y>=24?15:y>=3?10:5;const s=60*t/2,a=e.timestamp;return{start:a-s,end:a+s}},[p,N,y]),T=r.useMemo(()=>{if(null===p||!N[p]||!C)return null;const e=N[p].time,{start:t,end:n}=C,r=a.filter(e=>e.timestamp>=t&&e.timestamp({key:e.key,label:e.label,value:0,color:Xe(e.typeNum)}))};const i=new Map,l=new Map;let d=0,m=0;for(const s of r){const e=`TYPE_${s.type??s.payload_type??-1}`;if(i.set(e,(i.get(e)??0)+1),d++,o){const t=D(s),a=L(t,{spreadingFactor:o.sf,bandwidthHz:o.bw,codingRate:o.cr,preambleLength:o.preamble});l.set(e,(l.get(e)??0)+a),m+=a}}const u=c.map(e=>{let t;return t="airtime"===s?m>0?(l.get(e.key)??0)/m:0:d>0?(i.get(e.key)??0)/d:0,{key:e.key,label:e.label,value:t,color:Xe(e.typeNum)}});return{timestamp:N[p].timestamp,timeLabel:e,items:u}},[p,N,C,a,c,s,o]);if(0===N.length)return n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(x,{className:"w-6 h-6 mr-2 opacity-50"}),n.jsx("span",{children:"No packet data available"})]});const S=(null==T?void 0:T.timeLabel)??null;return n.jsxs("div",{className:"flex flex-col",children:[n.jsxs("div",{className:"analyzer-chart-height relative flex-shrink-0",children:[n.jsx("div",{className:"absolute inset-0 rounded-lg overflow-hidden",children:n.jsx(Ge,{data:w,maxValue:k,onHover:M,scatterData:j,noiseFloorAnomalies:m,showNoiseFloorOverlay:u,overlayOpacity:h,highlightedType:f,hoveredTimeRange:C,timeRangeHours:y,yAxisMode:"share"===s?"share":"airtime"})}),S&&n.jsx("div",{className:"absolute top-1 right-1 px-2 py-0.5 bg-bg-elevated/90 rounded text-xs text-accent-secondary font-mono pointer-events-none",children:S})]}),n.jsx(Ze,{sortedTypes:c,highlightedType:f,onTypeHover:v,aggregateShares:d,hoverData:T})]})}function rt({mode:e,onChange:t}){return n.jsxs("div",{className:"toggle-group toggle-group-sm",children:[n.jsx("button",{onClick:()=>t("share"),className:"toggle-group-item "+("share"===e?"active":""),children:"Total"}),n.jsx("button",{onClick:()=>t("airtime"),className:"toggle-group-item "+("airtime"===e?"active":""),children:"Airtime"})]})}function it({enabled:e,onChange:t,anomalyCount:s=0,showTuning:a=!1,onTuningChange:r}){return n.jsxs("div",{className:"relative inline-flex items-center gap-1",children:[e&&r&&n.jsx("button",{onClick:()=>r(!a),className:"toggle-group toggle-group-sm "+(a?"active":""),title:a?"Hide tuning panel":"Show tuning panel",children:n.jsx("span",{className:"toggle-group-item "+(a?"active":""),children:n.jsx(i,{className:"w-3.5 h-3.5"})})}),n.jsx("button",{onClick:()=>t(!e),className:"toggle-group toggle-group-sm "+(e?"active":""),title:e?"Hide noise floor anomalies":"Show noise floor anomalies",children:n.jsx("span",{className:"toggle-group-item "+(e?"active":""),children:n.jsx(l,{className:"w-3.5 h-3.5"})})}),s>0&&n.jsx("span",{className:"absolute -top-2 -right-2 min-w-[18px] h-[18px] px-1 rounded-full bg-accent-danger text-white text-[10px] font-bold flex items-center justify-center pointer-events-none z-10",children:s>99?"99+":s})]})}function lt({smoothing:e,onChange:t}){return n.jsxs("div",{className:"toggle-group toggle-group-sm",children:[n.jsx("button",{onClick:()=>t("stats"),className:"toggle-group-item "+("stats"===e?"active":""),title:"Statistics view (scatter plot)",children:n.jsx(o,{className:"w-3.5 h-3.5"})}),n.jsx("button",{onClick:()=>t("raw"),className:"toggle-group-item "+("raw"===e?"active":""),title:"No smoothing (raw values)",children:n.jsx(c,{className:"w-3.5 h-3.5"})}),n.jsx("button",{onClick:()=>t("zlema"),className:"toggle-group-item "+("zlema"===e?"active":""),title:"6-period Zero-Lag EMA (light smoothing)",children:n.jsx(d,{className:"w-3.5 h-3.5"})}),n.jsx("button",{onClick:()=>t("ema"),className:"toggle-group-item "+("ema"===e?"active":""),title:"12-period Zero-Lag EMA (moderate smoothing)",children:n.jsx(m,{className:"w-3.5 h-3.5"})}),n.jsx("button",{onClick:()=>t("smooth"),className:"toggle-group-item "+("smooth"===e?"active":""),title:"24-period Zero-Lag EMA (heavy smoothing)",children:n.jsx(u,{className:"w-3.5 h-3.5"})}),n.jsx("button",{onClick:()=>t("ultra"),className:"toggle-group-item "+("ultra"===e?"active":""),title:"96-period Zero-Lag EMA (ultra smoothing)",children:n.jsx(h,{className:"w-3.5 h-3.5"})}),n.jsx("button",{onClick:()=>t("mosaic"),className:"toggle-group-item "+("mosaic"===e?"active":""),title:"Mosaic view (treemap chart)",children:n.jsx(p,{className:"w-3.5 h-3.5"})})]})}const ot=r.memo(function({packets:e,startTs:t,endTs:s,bucketCount:a,radioConfig:i=Je,mode:l="share",smoothing:o="raw",noiseFloorAnomalies:c=null,showNoiseFloorOverlay:d=!1,overlayOpacity:m=.5}){const u=ae(),[h,p]=r.useState(null),[g,f]=r.useState([]),b=r.useRef(null),y=r.useRef(0);r.useEffect(()=>{const t=Math.abs(e.length-y.current);if(0===t&&g.length>0)return;b.current&&clearTimeout(b.current);const s=t>100?50:500;return b.current=setTimeout(()=>{y.current=e.length,f(e)},s),()=>{b.current&&clearTimeout(b.current)}},[e,g.length]);const v=r.useMemo(()=>function(e){const t=new Map;for(const a of e){const e=a.type??a.payload_type??-1;t.set(e,(t.get(e)??0)+1)}const s=[];for(const[a,n]of t)s.push({typeNum:a,key:`TYPE_${a}`,label:Ye(a),totalCount:n});return s.sort((e,t)=>t.totalCount-e.totalCount)}(g),[g]),j=r.useMemo(()=>function(e,t,s,a,n,r){const i=s-t,l=i/a,o=1e3*l,c=[];for(let d=0;d24?s.toLocaleDateString([],{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}):s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1});c.push({timestamp:e,time:a,counts:{},shares:{},airtimes:{},total:0,totalAirtime:0,bucketDurationMs:o});for(const t of r)c[d].counts[t.key]=0,c[d].airtimes[t.key]=0}for(const d of e){const e=d.timestamp;if(e=s)continue;const r=Math.min(Math.floor((e-t)/l),a-1),i=`TYPE_${d.type??d.payload_type??-1}`;c[r].counts[i]=(c[r].counts[i]??0)+1,c[r].total++;const o=D(d),m=L(o,{spreadingFactor:n.sf,bandwidthHz:n.bw,codingRate:n.cr,preambleLength:n.preamble});c[r].airtimes[i]=(c[r].airtimes[i]??0)+m,c[r].totalAirtime+=m}for(const d of c)for(const e of r)d.total>0?d.shares[e.key]=d.counts[e.key]/d.total*100:d.shares[e.key]=0;return c}(g,t,s,a,i,v),[g,t,s,a,i,v]),N=r.useMemo(()=>Ke.getBuckets(g,t,s,i),[g,t,s,i]),w=r.useMemo(()=>v.reduce((e,t)=>e+t.totalCount,0),[v]),{sortedTypes:k,aggregateShares:M}=r.useMemo(()=>{const e=new Map;if("share"===l){if(w>0)for(const t of v)e.set(t.key,t.totalCount/w)}else{let t=0;const s=new Map;for(const e of j){t+=e.totalAirtime;for(const t of v){const a=s.get(t.key)??0;s.set(t.key,a+(e.airtimes[t.key]??0))}}if(t>0)for(const a of v)e.set(a.key,(s.get(a.key)??0)/t)}return{sortedTypes:[...v].sort((t,s)=>{const a=e.get(t.key)??0;return(e.get(s.key)??0)-a}),aggregateShares:e}},[v,w,l,j]),C=r.useMemo(()=>function(e,t,s,a="raw"){const n=function(e,t,s){if(e.length<=360)return e;const a=Math.ceil(e.length/360),n=[];for(let r=0;r0?i.counts[e.key]/i.total*100:0;n.push(i)}return n}(e,0,s),r=n.length,i=s.length,l=Array.from({length:i},()=>new Array(r).fill(0));for(let u=0;u0?(e.counts[a]??0)/e.total:0}else{let t=0;for(let a=0;a0?r/t:0}}}const o=Array.from({length:i},()=>new Array(r).fill(0));for(let u=0;ufunction(e,t){switch(t){case"zlema":return Qe(e,6);case"ema":return Qe(e,12);case"smooth":return Qe(e,24);case"ultra":return Qe(e,96);default:return e}}(e,a)),d=Array.from({length:i},()=>new Array(r).fill(0));for(let u=0;u0?c[u-1][e]:0;let s=c[u][e]-t;s<0&&(s=0),s>1&&(s=1),d[u][e]=s}for(let u=0;u0&&Math.abs(e-1)>1e-6){const t=1/e;for(let e=0;e{p(e)},[]),[S,P]=r.useState(null),R=r.useCallback(e=>{P(e)},[]),A=r.useMemo(()=>{if(null===S||!C[S])return null;const e=C[S];return{timestamp:e.timestamp,timeLabel:e.time,items:k.map(t=>({key:t.key,label:t.label,value:e[t.key]??0,color:Xe(t.typeNum)}))}},[S,C,k]),$=r.useMemo(()=>({timestamps:C.map(e=>e.timestamp),series:k.map(e=>({key:e.key,label:e.label,color:Xe(e.typeNum),values:C.map(t=>t[e.key]??0)}))}),[C,k]);return 0===g.length?0===e.length?n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(x,{className:"w-6 h-6 mr-2 opacity-50"}),n.jsx("span",{children:"No packet data available"})]}):null:"mosaic"===o?n.jsx(st,{sortedTypes:k,aggregateShares:M}):"stats"===o?n.jsx(nt,{statsBuckets:N,bucketData:j,mode:l,packets:g,startTs:t,endTs:s,radioConfig:i,sortedTypes:k,aggregateShares:M,noiseFloorAnomalies:c,showNoiseFloorOverlay:d,overlayOpacity:m}):n.jsxs("div",{className:"flex flex-col",children:[n.jsx("div",{className:"analyzer-chart-height relative flex-shrink-0",children:n.jsx("div",{className:"absolute inset-0 rounded-lg overflow-hidden",children:n.jsx(B,{timestamps:$.timestamps,series:$.series,highlightedKey:h,cursorColor:u.cursor,onHover:R})})}),n.jsx(Ze,{sortedTypes:k,highlightedType:h,onTypeHover:T,aggregateShares:M,hoverData:A})]})});function ct(e){const t=e.match(/\(([^)]+)\)\s*$/);return t?t[1]:e.length>10?e.slice(0,10):e}function dt({x:e,y:t,width:s,height:a,name:r,size:i,index:l,colors:o,depth:c,hoveredIndex:d,onHover:m,total:u}){if(1!==c)return null;const h=null!==d&&!(d===l),p=o[l%o.length],x=u>0?i/u*100:0,g=s>36&&a>20,f=s>36&&a>32,b=ct(r);return n.jsxs("g",{onMouseEnter:e=>m(l,e),onMouseLeave:()=>m(null),style:{cursor:"default"},children:[n.jsx("rect",{x:e,y:t,width:s,height:a,fill:p,opacity:h?.4:1,stroke:"rgba(0,0,0,0.2)",strokeWidth:1,rx:3,style:{transition:"opacity 150ms ease"}}),g&&n.jsxs(n.Fragment,{children:[f&&n.jsxs("text",{x:e+4,y:t+a-4-11,textAnchor:"start",dominantBaseline:"auto",fill:"rgba(0,0,0,0.6)",fontSize:8,fontFamily:"'JetBrains Mono', monospace",fontWeight:500,style:{pointerEvents:"none"},children:[x.toFixed(1),"%"]}),n.jsx("text",{x:e+4,y:t+a-4,textAnchor:"start",dominantBaseline:"auto",fill:"rgba(0,0,0,0.85)",fontSize:9,fontFamily:"'JetBrains Mono', monospace",fontWeight:600,style:{pointerEvents:"none"},children:b})]})]})}function mt({data:e,total:t,color:s,position:a,containerWidth:r}){if(!e||!a)return null;const i=(e.value/t*100).toFixed(1),l=r-a.x<184?Math.max(8,a.x-160-8):a.x+16;return n.jsx("div",{className:"absolute z-50 pointer-events-none",style:{left:l,top:Math.max(8,a.y-60)},children:n.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 shadow-xl min-w-[140px]",children:[n.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[n.jsx("span",{className:"w-2.5 h-2.5 rounded-sm flex-shrink-0",style:{backgroundColor:s}}),n.jsx("span",{className:"type-data-sm font-semibold text-text-primary",children:ct(e.name)})]}),n.jsxs("div",{className:"space-y-0.5 type-data-xs text-text-muted",children:[n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("span",{children:"Count"}),n.jsx("span",{className:"text-text-primary tabular-nums font-medium",children:e.value.toLocaleString()})]}),n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("span",{children:"Share"}),n.jsxs("span",{className:"text-text-primary tabular-nums font-medium",children:[i,"%"]})]}),n.jsxs("div",{className:"flex justify-between gap-4",children:[n.jsx("span",{children:"Total"}),n.jsx("span",{className:"text-text-primary tabular-nums font-medium",children:t.toLocaleString()})]})]})]})})}const ut=r.memo(function({data:e}){var t,s;const[a,i]=r.useState(null),[l,o]=r.useState(null),[c,d]=r.useState(0),m=r.useRef(null),u=ne(),{treemapData:h,total:p}=r.useMemo(()=>{const t=e.reduce((e,t)=>e+t.value,0);return{treemapData:[...e].sort((e,t)=>t.value-e.value).filter(e=>t>0&&e.value/t*100>=.5).map((e,t)=>({name:e.name,size:e.value,index:t})),total:t}},[e]),x=r.useCallback((e,t)=>{if(i(e),t&&null!==e){const e=m.current;if(e){const s=e.getBoundingClientRect();d(s.width),o({x:t.clientX-s.left,y:t.clientY-s.top})}}else o(null)},[]),g=null!==a?{name:(null==(t=h[a])?void 0:t.name)??"",value:(null==(s=h[a])?void 0:s.size)??0}:null,f=null!==a?u[a%u.length]:"";return 0===e.length||0===p?n.jsx("div",{className:"h-56 flex items-center justify-center text-text-muted",children:"No packet type data available"}):n.jsxs("div",{className:"relative treemap-container",style:{height:224},ref:m,children:[n.jsx(he,{width:"100%",height:224,minWidth:1,minHeight:1,children:n.jsx(pe,{data:h,dataKey:"size",aspectRatio:4/3,stroke:"none",isAnimationActive:!1,content:n.jsx(dt,{x:0,y:0,width:0,height:0,name:"",value:0,size:0,index:0,colors:u,depth:0,hoveredIndex:a,onHover:x,total:p})})}),n.jsx(mt,{data:g,total:p,color:f,position:l,containerWidth:c})]})}),ht="airtimeSpectrumBlur";function pt({active:e,payload:t,label:s}){if(!e||!t||0===t.length)return null;const a=t.filter(e=>null!==e.value&&void 0!==e.value);if(0===a.length)return null;const r=s?new Date(1e3*s).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}):"";return n.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 text-sm shadow-xl",children:[n.jsx("div",{className:"font-medium text-text-primary mb-1 font-mono",children:r}),a.map((e,t)=>n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("div",{className:"w-3 h-0.5",style:{backgroundColor:e.color}}),n.jsxs("span",{className:"text-text-muted",children:[e.name,":"]}),n.jsxs("span",{className:"text-text-primary tabular-nums font-mono",children:[Number(e.value).toFixed(2),"%"]})]},t))]})}function xt({payload:e,showDensityScale:t=!1}){return e?n.jsxs("div",{className:"flex items-center gap-4 justify-start text-xs font-mono pl-11",children:[e.map((e,t)=>n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("div",{className:"w-4 h-0.5",style:{backgroundColor:e.color}}),n.jsx("span",{className:"text-text-muted",children:e.value})]},t)),t&&n.jsxs("div",{className:"flex items-center gap-1.5 ml-2",children:[n.jsx("div",{className:"w-16 h-2 rounded-sm",style:{background:"linear-gradient(to right, \n rgb(1,26,51), \n rgb(53,82,85), \n rgb(85,121,74), \n rgb(150,149,53), \n rgb(228,168,98), \n rgb(250,195,165)\n )"}}),n.jsx("span",{className:"text-text-muted",children:"Density"})]})]}):null}const gt=[[1,26,51],[20,43,67],[38,62,79],[53,82,85],[67,102,83],[85,121,74],[112,137,62],[150,149,53],[192,156,58],[228,168,98],[250,195,165]];function ft(e){const t=Math.max(0,Math.min(1,e))*(gt.length-1),s=Math.floor(t),a=Math.min(s+1,gt.length-1),n=t-s;return`rgb(${Math.round(gt[s][0]+n*(gt[a][0]-gt[s][0]))},${Math.round(gt[s][1]+n*(gt[a][1]-gt[s][1]))},${Math.round(gt[s][2]+n*(gt[a][2]-gt[s][2]))})`}const bt=r.memo(function({samples:e,startTs:t,endTs:s,yMax:a}){const i=re(),l=ie(),o=le(),c=r.useMemo(()=>void 0!==a?a:function(e){if(0===e.length)return 10;let t=0;for(const n of e){const e=n.rxRolling??n.rxUtilW;e>t&&(t=e)}const s=1.05*t,a=Math.ceil(s);return Math.max(1,a)}(e),[a,e]),d=l.critical,m=i.neutral,{cells:u,cellWidth:h,cellHeight:p}=r.useMemo(()=>function(e,t,s,a,n=120,r=30){const i=100/n+.5+"%",l=100/r+.5+"%";if(0===e.length||s<=t)return{cells:[],cellWidth:i,cellHeight:l};const o=s-t,c=r*n,d=new Float32Array(c),m=new Float32Array(c),u=(e,t)=>e*n+t;for(let v=0;vs)continue;const l=Math.floor((i.timestamp-t)/o*(n-1)),c=Math.max(0,Math.min(n-1,l));if(i.rxUtilW>0){const e=Math.min(i.rxUtilW/a,1),t=Math.floor((1-e)*(r-1));for(let s=t;s0?1-(s-t)/e*.7:1;d[u(s,c)]+=a}}if(i.txUtilW>0){const e=Math.min(i.txUtilW/a,1),t=Math.floor((1-e)*(r-1));for(let s=t;s0?1-(s-t)/e*.7:1;m[u(s,c)]+=a}}}const h=[];for(let v=0;v0&&h.push(d[v]),m[v]>0&&h.push(m[v]);h.sort((e,t)=>e-t);const p=h.length>0?h[Math.floor(.95*h.length)]:1,x=new Array(n),g=new Array(r),f=100/n,b=100/r;for(let v=0;v0&&p>0){const t=Math.min(s/p,1.5),a=Math.sqrt(t/1.5);y.push({xPct:x[e],yPct:g[v],intensity:a})}}return{cells:y,cellWidth:i,cellHeight:l}}(e,t,s,100,80,10),[e,t,s]),x=r.useMemo(()=>{if(0===e.length)return[];const t=e.filter(e=>"number"==typeof e.timestamp&&!isNaN(e.timestamp));if(t.length<=500)return t.map(e=>{const t=e.rxRolling??e.rxUtilW,s=e.txRolling??e.txUtilW;return{timestamp:e.timestamp,rx:"number"!=typeof t||isNaN(t)?0:t,tx:"number"!=typeof s||isNaN(s)?0:s}});const s=Math.ceil(t.length/250),a=[];for(let e=0;ei&&(i=t,o=e)}const c=l.timestamp{const e=s-t,a=e/3600;return[0,.25,.5,.75,1].map(s=>{const n=new Date(1e3*(t+e*s)),r=n.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),i=n.toLocaleDateString([],{weekday:"short"});return{pct:s,label:a>24?`${i} ${r}`:r}})},[t,s]);return 0===e.length?n.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No traffic data available"}):n.jsxs("div",{className:"flex flex-col h-full min-h-0",children:[n.jsx("div",{className:"flex items-center flex-shrink-0 text-text-muted",style:{height:20,paddingLeft:44,paddingRight:8},children:n.jsx("div",{className:"relative w-full h-full flex items-center",children:f.map((e,t)=>n.jsxs("div",{className:"absolute flex items-center gap-1 type-data-xs",style:{left:100*e.pct+"%",transform:0===e.pct?"translateX(0)":1===e.pct?"translateX(-100%)":"translateX(-50%)"},children:[n.jsx(g,{className:"w-2.5 h-2.5 opacity-60"}),n.jsx("span",{className:"tabular-nums",children:e.label})]},t))})}),n.jsx("div",{className:"relative",style:{height:160},children:n.jsx(he,{width:"100%",height:160,minWidth:1,minHeight:1,children:n.jsxs(xe,{data:x,margin:{top:4,right:8,bottom:0,left:0},children:[n.jsx(ge,{strokeDasharray:"3 3",stroke:o.primary,strokeOpacity:.15,vertical:!1}),n.jsx(fe,{dataKey:"timestamp",type:"number",domain:[t,s],axisLine:!1,tickLine:!1,tick:!1,height:0}),n.jsx(be,{axisLine:!1,tickLine:!1,tick:{fill:o.primary,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dx:-8,width:44,tickFormatter:e=>`${e.toFixed(0)}%`,domain:[0,c]}),n.jsx(ye,{content:n.jsx(pt,{})}),n.jsx(ve,{type:"linear",dataKey:"rx",name:"RX Avg",stroke:d,strokeWidth:2.5,strokeOpacity:.9,dot:!1,connectNulls:!1,isAnimationActive:!1}),n.jsx(ve,{type:"linear",dataKey:"tx",name:"TX Avg",stroke:m,strokeWidth:2.5,strokeOpacity:.9,dot:!1,connectNulls:!1,isAnimationActive:!1})]})})}),n.jsx("div",{className:"relative overflow-hidden",style:{height:32,marginLeft:44,marginRight:8},children:n.jsxs("svg",{className:"absolute inset-0 w-full h-full",preserveAspectRatio:"none","aria-hidden":"true",children:[n.jsx("defs",{children:n.jsx("filter",{id:ht,x:"-100%",y:"-100%",width:"300%",height:"300%",children:n.jsx("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"1 3"})})}),n.jsx("g",{filter:`url(#${ht})`,children:u.map((e,t)=>n.jsx("rect",{x:e.xPct,y:e.yPct,width:h,height:p,fill:ft(e.intensity),opacity:.9},`cell-${t}`))})]})}),n.jsx("div",{className:"flex-shrink-0",style:{height:24,marginTop:8},children:n.jsx(xt,{payload:[{value:`RX (${Math.round(5)}m)`,color:d},{value:`TX (${Math.round(5)}m)`,color:m}],showDensityScale:!0})})]})}),yt={"1x":1,"2x":2,"4x":4,"8x":8,"16x":16,"36x":36},vt=[1,5,10,25,50,100,150];function jt(e,t,s,a){const n=Math.PI/180,r=(a-t)*n,i=e*n,l=s*n,o=Math.sin(r)*Math.cos(l),c=Math.cos(i)*Math.sin(l)-Math.sin(i)*Math.cos(l)*Math.cos(r);return(180*Math.atan2(o,c)/Math.PI+360)%360}function Nt(e,t,s,a){const n=Math.PI/180,r=(s-e)*n,i=(a-t)*n,l=Math.sin(r/2)**2+Math.cos(e*n)*Math.cos(s*n)*Math.sin(i/2)**2;return 12742*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))}const wt=[{min:10,label:"Excellent"},{min:7,label:"Very Good"},{min:4,label:"Good"},{min:1,label:"Fair+"},{min:-2,label:"Fair"},{min:-5,label:"Fair-"},{min:-8,label:"Poor"},{min:-11,label:"Bad"},{min:-1/0,label:"Critical"}];function kt(e,t){return t[de(e)]||"#808080"}const Mt=r.memo(function({neighbors:e,quickNeighbors:t,localLat:s,localLon:a,onStatsChange:i}){const[l,o]=r.useState(null),[c,d]=r.useState(new Set),[m,u]=r.useState({width:0,height:0}),[h,p]=r.useState("1x"),[x,g]=r.useState(1),b=r.useRef(null),y=r.useRef({}),v=r.useRef(null),j=r.useRef(null),N=r.useRef(x);N.current=x;const w=oe(),k=ie(),M=ce(),C=le();r.useEffect(()=>{const e=j.current;if(!e)return;const t=new ResizeObserver(e=>{for(const t of e){const{width:e,height:s}=t.contentRect;e>0&&s>0&&u({width:e,height:s})}});t.observe(e);const s=e.getBoundingClientRect();return s.width>0&&s.height>0&&u({width:s.width,height:s.height}),()=>t.disconnect()},[]);const T=r.useMemo(()=>{const e=new Set;if(t)for(const s of t)e.add(s.hash);return e},[t]),S=r.useMemo(()=>{const e=new Map;if(t)for(const s of t)e.set(s.hash,{snr:s.avgSnr,rssi:s.avgRssi});return e},[t]),{processedNeighbors:P,maxDistance:R,totalNeighbors:A,zeroHopCount:$}=r.useMemo(()=>{const t=[];for(const[r,i]of Object.entries(e)){if(!i.latitude||!i.longitude||0===i.latitude||0===i.longitude)continue;if(!T.has(r))continue;const e=jt(s,a,i.latitude,i.longitude),n=Nt(s,a,i.latitude,i.longitude),l=S.get(r);t.push({hash:r.slice(0,8),name:i.node_name||i.name||"Unknown",snr:(null==l?void 0:l.snr)??i.snr??null,rssi:(null==l?void 0:l.rssi)??i.rssi??null,bearing:e,distance:n,normalizedDistance:0,lastSeen:i.last_seen,isZeroHop:!0})}const n=1.08*(t.length>0?Math.max(...t.map(e=>e.distance)):0);return t.sort((e,t)=>(e.snr??-1/0)-(t.snr??-1/0)),{processedNeighbors:t,maxDistance:n,totalNeighbors:t.length,zeroHopCount:t.length}},[e,s,a,T,S]);r.useEffect(()=>{null==i||i({zeroHopCount:$,totalCount:A,maxDistanceKm:R})},[$,A,R]),r.useEffect(()=>{const e=yt[h],t=N.current;b.current&&cancelAnimationFrame(b.current);const s=performance.now(),a=n=>{const r=n-s,i=Math.min(r/400,1),l=(o=i)<.5?8*o*o*o*o:1-Math.pow(-2*o+2,4)/2;var o;g(t+(e-t)*l),b.current=i<1?requestAnimationFrame(a):null};return b.current=requestAnimationFrame(a),()=>{b.current&&cancelAnimationFrame(b.current)}},[h]);const F=R/x,_=r.useMemo(()=>vt.filter(e=>e<=1.1*F),[F]);r.useEffect(()=>{const e=[];for(const s of P){const t=y.current[s.hash];void 0!==t&&t!==s.lastSeen&&e.push(s.hash),y.current[s.hash]=s.lastSeen}if(0===e.length)return;queueMicrotask(()=>{d(t=>new Set([...t,...e]))});const t=setTimeout(()=>{d(t=>{const s=new Set(t);return e.forEach(e=>s.delete(e)),s})},600);return()=>clearTimeout(t)},[P]);const D=0!==s&&0!==a,L=r.useMemo(()=>{const{width:e,height:t}=m,s=e/2,a=t/2,n=Math.max(10,e/2-12),r=Math.max(10,t/2-12),i=Math.max(10,n-16),l=Math.max(10,r-16);return{width:e,height:t,centerX:s,centerY:a,maxRadiusX:i,maxRadiusY:l,labelRadiusX:n,labelRadiusY:r,cornerRadius:.2*Math.min(i,l)}},[m]),{width:E,height:W,centerX:B,centerY:H,maxRadiusX:z,maxRadiusY:O,labelRadiusX:V,labelRadiusY:q,cornerRadius:G}=L,U=r.useCallback((e,t=1)=>{const s=z*t,a=O*t,n=Math.min(G*t,s,a),r=(e%360+360)%360,i=r*Math.PI/180,l=180*Math.atan2(a-n,s-n)/Math.PI;let o,c;if(r<=45-l||r>315+l){const e=Math.tan(i);o=Math.max(B-s+n,Math.min(B+s-n,B+a*e*(s/a))),c=H-a}else if(r>45-l&&r<=45+l)o=B+s-n+n*Math.sin(i),c=H-a+n-n*Math.cos(i);else if(r>45+l&&r<=135-l){const e=1/Math.tan(i);c=Math.max(H-a+n,Math.min(H+a-n,H-s*e*(a/s))),o=B+s}else if(r>135-l&&r<=135+l)o=B+s-n+n*Math.sin(i),c=H+a-n-n*Math.cos(i);else if(r>135+l&&r<=225-l){const e=Math.tan(i);o=Math.max(B-s+n,Math.min(B+s-n,B-a*e*(s/a))),c=H+a}else if(r>225-l&&r<=225+l)o=B-s+n+n*Math.sin(i),c=H+a-n-n*Math.cos(i);else if(r>225+l&&r<=315-l){const e=1/Math.tan(i);c=Math.max(H-a+n,Math.min(H+a-n,H-s*e*(a/s))),o=B-s}else o=B-s+n+n*Math.sin(i),c=H-a+n-n*Math.cos(i);return{x:o,y:c}},[B,H,z,O,G]),I=r.useCallback((e,t)=>{const s=U(e,1);return{x:B+(s.x-B)*t,y:H+(s.y-H)*t}},[U,B,H]),X=r.useCallback(e=>({N:{x:B,y:H-q},S:{x:B,y:H+q},E:{x:B+V,y:H},W:{x:B-V,y:H},NE:{x:B+V,y:H-q},SE:{x:B+V,y:H+q},SW:{x:B-V,y:H+q},NW:{x:B-V,y:H-q}}[e]),[B,H,V,q]),K=r.useCallback(e=>{const t=z*e,s=O*e,a=Math.min(G*e,t,s),n=B-t,r=B+t,i=H-s,l=H+s;return[`M ${n+a} ${i}`,`L ${r-a} ${i}`,`Q ${r} ${i} ${r} ${i+a}`,`L ${r} ${l-a}`,`Q ${r} ${l} ${r-a} ${l}`,`L ${n+a} ${l}`,`Q ${n} ${l} ${n} ${l-a}`,`L ${n} ${i+a}`,`Q ${n} ${i} ${n+a} ${i}`,"Z"].join(" ")},[B,H,z,O,G]),Y=r.useCallback(e=>{o(e)},[]),J=r.useCallback(e=>{p(e)},[]),Q=r.useCallback(e=>R<=0?0:e/R*x,[R,x]),Z=e=>`${e}km`,ee=r.useMemo(()=>{const e=_.map(e=>{const t=e/R*x;return{km:e,scale:t,labelY:H-O*t*.71}}).filter(e=>e.scale<=1.05&&e.scale>=.02).sort((e,t)=>t.km-e.km),t=[];for(const s of e)t.some(e=>Math.abs(e.labelY-s.labelY)<28)||t.push(s);return t},[_,R,x,H,O]),te=m.width>0&&m.height>0;return D?0===A?n.jsxs("div",{ref:v,className:"flex flex-col items-center justify-center h-full text-text-muted",children:[n.jsx(f,{className:"w-8 h-8 mb-2 opacity-50"}),n.jsx("p",{children:"No nodes with location data"})]}):n.jsxs("div",{ref:v,className:"relative h-full w-full flex overflow-hidden",children:[n.jsx("div",{ref:j,className:"relative flex-1 min-w-0 h-full",children:te&&n.jsxs("svg",{width:E,height:W,className:"absolute inset-0 z-0",children:[n.jsxs("defs",{children:[n.jsx("style",{children:"\n @keyframes neighbor-blink-scale {\n 0%, 100% {\n transform: scale(1);\n opacity: 0;\n }\n 50% {\n transform: scale(1.3);\n opacity: 0.8;\n }\n }\n .neighbor-blink-ring {\n transform-origin: center;\n animation: neighbor-blink-scale 600ms ease-out forwards;\n }\n "}),n.jsx("clipPath",{id:"radar-clip",children:n.jsx("path",{d:K(1)})})]}),_.map(e=>{const t=Q(e);if(t>1.05||t<.02)return null;const s=ee.some(t=>t.km===e),a=B+z*t*.71,r=H-O*t*.71;return n.jsxs("g",{children:[n.jsx("path",{d:K(t),fill:"none",stroke:C.primary,strokeOpacity:.15,strokeWidth:1}),s&&n.jsx("text",{x:a+4,y:r-2,textAnchor:"start",dominantBaseline:"auto",className:"fill-text-secondary",fontSize:10,fontFamily:"'JetBrains Mono', monospace",children:Z(e)})]},`ring-${e}`)}),["N","E","S","W"].map(e=>{const t="N"===e||"S"===e,s=t?B:"E"===e?B+z:B-z,a=t?"N"===e?H-O:H+O:H;return n.jsx("line",{x1:B,y1:H,x2:s,y2:a,stroke:C.primary,strokeOpacity:.15,strokeWidth:1,strokeDasharray:"4 4"},e)}),["NE","SE","SW","NW"].map(e=>{const t=X(e);return n.jsx("line",{x1:B,y1:H,x2:t.x,y2:t.y,stroke:C.primary,strokeOpacity:.08,strokeWidth:1,strokeDasharray:"4 4"},`diag-${e}`)}),["N","E","S","W"].map(e=>{const t=X(e),s="E"===e?"end":"W"===e?"start":"middle",a="N"===e?"hanging":"S"===e?"auto":"middle";return n.jsx("text",{x:t.x,y:t.y,textAnchor:s,dominantBaseline:a,fill:k.critical,fontSize:16,fontWeight:600,fontFamily:"'JetBrains Mono', monospace","aria-hidden":"true",children:e},e)}),["NE","SE","SW","NW"].map(e=>{const t=X(e),s="NE"===e||"SE"===e?"end":"start",a="NE"===e||"NW"===e?"hanging":"auto";return n.jsx("text",{x:t.x,y:t.y,textAnchor:s,dominantBaseline:a,fill:k.critical,fontSize:16,fontWeight:600,fontFamily:"'JetBrains Mono', monospace","aria-hidden":"true",children:e},e)}),n.jsx("circle",{cx:B,cy:H,r:5,fill:M.chart6,stroke:"rgba(255,255,255,0.3)",strokeWidth:1,role:"img","aria-label":"Local node"}),n.jsx("g",{clipPath:"url(#radar-clip)",children:P.map(e=>{const t=R>0?e.distance/R*x:0;if(t>1)return null;const{x:s,y:a}=I(e.bearing,t),r=null!==e.snr?kt(e.snr,w):"#808080",i=(null==l?void 0:l.hash)===e.hash,o=c.has(e.hash);return n.jsxs("g",{role:"img","aria-label":`${e.name}: ${e.distance.toFixed(1)}km ${e.bearing.toFixed(0)}°`,children:[o&&n.jsx("circle",{cx:s,cy:a,r:10.5,fill:"none",stroke:"rgba(255,255,255,0.9)",strokeWidth:2,className:"neighbor-blink-ring"}),i&&n.jsx("circle",{cx:s,cy:a,r:10.5,fill:r,opacity:.3}),n.jsx("circle",{cx:s,cy:a,r:i?7:5,fill:r,stroke:"rgba(0,0,0,0.5)",strokeWidth:1,style:{cursor:"pointer",transition:"r 0.15s"},onMouseEnter:()=>Y(e),onMouseLeave:()=>Y(null)})]},e.hash)})})]})}),n.jsx("div",{className:"flex flex-col h-full items-stretch gap-1 py-2 pl-2 flex-shrink-0",role:"group","aria-label":"Zoom level",children:["1x","2x","4x","8x","16x","36x"].map(e=>n.jsx("button",{onClick:()=>J(e),"aria-pressed":h===e,className:"flex flex-1 items-center justify-center px-1.5 text-xs font-medium rounded transition-colors "+(h===e?"bg-accent-primary/20 text-accent-primary":"bg-white/5 text-text-muted hover:bg-white/10 hover:text-text-secondary"),children:e},e))}),l&&n.jsxs("div",{className:"absolute bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 text-sm pointer-events-none z-10 shadow-xl",style:{left:"50%",bottom:8,transform:"translateX(-50%)"},children:[n.jsx("div",{className:"font-medium text-text-primary",children:l.name}),n.jsx("div",{className:"text-text-muted text-xs font-mono",children:l.hash}),null!==l.snr?n.jsx("div",{className:"flex gap-3 mt-1 text-xs",children:n.jsxs("span",{children:[n.jsx("span",{className:"text-text-muted",children:"SNR:"})," ",n.jsxs("span",{className:"tabular-nums",style:{color:kt(l.snr,w)},children:[l.snr.toFixed(1)," dB"]}),n.jsxs("span",{className:"text-text-muted ml-1",children:["(",(se=l.snr,(null==(ae=wt.find(e=>se>=e.min))?void 0:ae.label)??"Critical"),")"]})]})}):n.jsx("div",{className:"text-xs text-text-muted mt-1",children:"No SNR data"}),n.jsxs("div",{className:"flex gap-3 text-xs",children:[n.jsxs("span",{children:[n.jsx("span",{className:"text-text-muted",children:"Distance:"})," ",n.jsxs("span",{className:"tabular-nums text-text-secondary",children:[l.distance.toFixed(2)," km"]})]}),n.jsxs("span",{children:[n.jsx("span",{className:"text-text-muted",children:"Bearing:"})," ",n.jsxs("span",{className:"tabular-nums text-text-secondary",children:[l.bearing.toFixed(0),"°"]})]})]})]})]}):n.jsxs("div",{ref:v,className:"flex flex-col items-center justify-center h-full text-text-muted",children:[n.jsx(f,{className:"w-8 h-8 mb-2 opacity-50"}),n.jsx("p",{children:"Local node coordinates not configured"}),n.jsx("p",{className:"text-xs mt-1",children:"Set latitude/longitude in config to enable"})]});var se,ae});function Ct(e,t){if(0===e.length)return 0;const s=t/100*(e.length-1),a=Math.floor(s),n=Math.ceil(s);return a===n?e[a]:e[a]+(e[n]-e[a])*(s-a)}const Tt=r.memo(function({timestamps:e,values:t,onStatsChange:s}){var a,i;const l=ie(),[o,c]=r.useState(!0),d=r.useMemo(()=>{if(0===t.length)return null;const e=Math.min(...t),s=Math.max(...t),a=t.reduce((e,t)=>e+t,0)/t.length,n=[...t].sort((e,t)=>e-t);return{min:e,max:s,avg:a,p5:Ct(n,5),p95:Ct(n,95)}},[t]);r.useEffect(()=>{null==s||s(d)},[d]);const m=r.useCallback(()=>{c(e=>!e)},[]),{heatmapData:u,xLabels:h,yLabels:p}=r.useMemo(()=>{if(0===e.length||0===t.length||!d)return{heatmapData:null,xLabels:[],yLabels:[]};let s,a;if(o){const e=.1*(d.p95-d.p5||1);s=d.p5-e,a=d.p95+e}else{const e=.1*(d.max-d.min||1);s=d.min-e,a=d.max+e}const n=a-s,r=e[0],i=e[e.length-1]-r||1,l=new Float32Array(2*e.length);for(let o=0;ome(j)??{r:225,g:38,b:114},[j]);return r.useEffect(()=>{const e=g.current;if(!e)return;const t=new ResizeObserver(e=>{for(const t of e){const{width:e,height:s}=t.contentRect;e>0&&s>0&&v({width:e,height:s})}});t.observe(e);const s=e.getBoundingClientRect();return s.width>0&&s.height>0&&v({width:s.width,height:s.height}),()=>t.disconnect()},[]),r.useEffect(()=>{const e=x.current;if(!e||!u||0===f.width)return;const t=e.getContext("2d");if(!t)return;const{width:s,height:a}=f,n=window.devicePixelRatio||1;e.width=s*n,e.height=a*n,e.style.width=`${s}px`,e.style.height=`${a}px`,t.scale(n,n),t.clearRect(0,0,s,a);const{points:r,count:i}=u,{r:l,g:o,b:c}=N,d=Math.max(3,Math.min(8,s/i*4));t.globalCompositeOperation="source-over";for(let m=0;mn.jsx("span",{className:"type-data-xs text-text-muted tabular-nums text-right pr-1.5",style:{position:"absolute",top:`${e.pos}%`,transform:"translateY(-50%)",right:0},children:e.label},t))}),n.jsxs("div",{ref:g,className:"absolute overflow-hidden",style:{left:32,right:0,top:0,bottom:20},children:[n.jsx("svg",{className:"absolute inset-0 w-full h-full",preserveAspectRatio:"none","aria-hidden":"true",children:[0,25,50,75,100].map(e=>n.jsx("line",{x1:"0",y1:`${e}%`,x2:"100%",y2:`${e}%`,stroke:"rgba(255,255,255,0.06)",strokeDasharray:"3 3"},e))}),n.jsx("canvas",{ref:x,className:"absolute inset-0 w-full h-full","aria-hidden":"true"}),n.jsx("button",{type:"button",onClick:m,className:"absolute bottom-1 right-1 p-1.5 rounded bg-tooltip-bg/80 hover:bg-tooltip-bg active:bg-tooltip-bg transition-colors touch-manipulation",title:o?"Show full range (min/max)":"Show trimmed range (P5-P95)","aria-label":o?"Expand to show full data range":"Shrink to show trimmed percentile range","aria-pressed":!o,children:o?n.jsx(b,{className:"w-3.5 h-3.5 text-text-muted","aria-hidden":"true"}):n.jsx(y,{className:"w-3.5 h-3.5 text-text-muted","aria-hidden":"true"})})]}),n.jsx("div",{className:"absolute left-0 right-0 bottom-0",style:{left:32,height:20},"aria-hidden":"true",children:h.map((e,t)=>n.jsx("span",{className:"type-data-xs text-text-muted tabular-nums absolute top-1",style:{left:`${e.pos}%`,transform:"translateX(-50%)"},children:e.label},t))})]}):n.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No noise floor data available"})}),St={repeater:"var(--signal-critical)",companion:"var(--accent-tertiary)",room_server:"var(--accent-secondary)"};function Pt(e){if(e.contact_type){const t=e.contact_type.toLowerCase();if("repeater"===t||"rep"===t)return"repeater";if("room server"===t||"room_server"===t||"room"===t||"server"===t)return"room_server";if("companion"===t||"client"===t||"cli"===t)return"companion"}return e.is_repeater?"repeater":"companion"}const Rt=r.memo(function({neighbors:e}){const t=r.useMemo(()=>{const t={repeater:0,companion:0,room_server:0};for(const a of Object.values(e)){const e=Pt(a);t[e]=(t[e]||0)+1}const s=Object.values(t).reduce((e,t)=>e+t,0);return{items:[{label:"Repeaters",count:t.repeater,percent:0,color:St.repeater},{label:"Companions",count:t.companion,percent:0,color:St.companion},{label:"Room Servers",count:t.room_server,percent:0,color:St.room_server}].map(e=>({...e,percent:s>0?e.count/s*100:0})).filter(e=>e.count>0).sort((e,t)=>t.count-e.count),total:s}},[e]);return 0===t.total?n.jsx("div",{className:"h-full flex items-center justify-center text-text-muted type-body-sm",children:"No neighbors discovered yet"}):n.jsxs("div",{className:"h-full flex flex-col",children:[n.jsx("div",{className:"flex-1 flex flex-col justify-evenly",children:t.items.map(e=>n.jsxs("div",{className:"flex flex-col gap-1.5",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("span",{className:"type-data-sm text-text-secondary",children:e.label}),n.jsxs("span",{className:"type-data-sm text-text-muted tabular-nums",children:[e.count," ",n.jsxs("span",{className:"text-text-muted/60",children:["(",e.percent.toFixed(0),"%)"]})]})]}),n.jsx("div",{className:"h-2.5 bg-bg-elevated rounded-full overflow-hidden",children:n.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${e.percent}%`,backgroundColor:e.color,minWidth:e.count>0?"4px":"0"}})})]},e.label))}),n.jsxs("div",{className:"flex items-center justify-between pt-2 border-t border-border-subtle",children:[n.jsx("span",{className:"type-data-xs text-text-muted",children:"Total Nodes"}),n.jsx("span",{className:"type-data-sm text-text-primary font-medium tabular-nums",children:t.total})]})]})});function At({children:e,minHeight:t="100%",rootMargin:s="200px 0px",keepMounted:a=!0,className:i=""}){const l=r.useRef(null),[o,c]=r.useState(!1),[d,m]=r.useState(!1);r.useEffect(()=>{const e=l.current;if(!e)return;const t=new IntersectionObserver(([e])=>{const t=e.isIntersecting;m(t),t&&c(!0)},{rootMargin:s,threshold:0});return t.observe(e),()=>{t.disconnect()}},[s]);const u=d||a&&o;return n.jsx("div",{ref:l,className:`h-full w-full ${i}`,style:{minHeight:t},children:u?e:n.jsx("div",{className:"h-full w-full flex items-center justify-center text-text-muted/50",children:n.jsx("div",{className:"animate-pulse text-xs",children:"Loading chart..."})})})}const $t={excellent:"text-signal-excellent",good:"text-signal-good",fair:"text-signal-fair",poor:"text-signal-critical"},Ft={excellent:"bg-signal-excellent/10",good:"bg-signal-good/10",fair:"bg-signal-fair/10",poor:"bg-signal-critical/10"};function _t({value:e,status:t}){const s={excellent:"bg-signal-excellent",good:"bg-signal-good",fair:"bg-signal-fair",poor:"bg-signal-critical"}[t];return n.jsx("div",{className:"w-full h-2 bg-surface-elevated rounded-full overflow-hidden",children:n.jsx("div",{className:`h-full ${s} transition-all duration-300`,style:{width:`${Math.min(100,Math.max(0,e))}%`}})})}function Dt(){const e=z(),t=O(),[s,a]=r.useState(null),i=r.useCallback((e,t)=>{a({prefix:e,candidateHashes:t})},[]),l=r.useCallback(()=>{a(null)},[]);if(!t)return n.jsxs(je,{children:[n.jsx(Ne,{icon:n.jsx(v,{}),title:"Prefix Conflicts",largeTitle:!0}),n.jsx("div",{className:"flex-1 flex items-center justify-center",children:n.jsxs("div",{className:"text-center text-text-muted",children:[n.jsx(j,{className:"w-8 h-8 mx-auto mb-2 opacity-50"}),n.jsx("p",{className:"type-data-xs",children:"No topology data available"}),n.jsx("p",{className:"type-data-xs opacity-70",children:"Run deep analysis to see stats"})]})})]});const o=(c=e.avgConfidence)>=.9?"excellent":c>=.7?"good":c>=.5?"fair":"poor";var c;const d=(m=e.collisionRate)<=10?"excellent":m<=25?"good":"poor";var m;const u="poor"===o||"poor"===d?"poor":"fair"===o||"fair"===d?"fair":"good"===o||"good"===d?"good":"excellent",h="excellent"===u||"good"===u?N:w;return n.jsxs(je,{className:"flex flex-col overflow-hidden",children:[n.jsx(Ne,{icon:n.jsx(v,{}),title:"Prefix Conflicts",largeTitle:!0,actions:n.jsxs("div",{className:`flex items-center gap-1.5 px-2.5 py-1 rounded-full ${Ft[u]}`,children:[n.jsx(h,{className:`w-3.5 h-3.5 ${$t[u]}`}),n.jsx("span",{className:`type-data-xs font-medium ${$t[u]}`,children:"excellent"===u?"Excellent":"good"===u?"Good":"fair"===u?"Fair":"Needs Attention"})]})}),n.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0",children:[n.jsxs("div",{className:"grid grid-cols-2 gap-3 mb-3",children:[n.jsxs("div",{className:"cursor-help",title:"Average confidence score across all disambiguated prefixes. Higher = more certain node identification. Based on geographic proximity, co-occurrence patterns, and observation recency.",children:[n.jsxs("div",{className:"flex items-baseline justify-between mb-1",children:[n.jsx("span",{className:"type-data-xs text-text-muted",children:"Avg Confidence"}),n.jsxs("span",{className:`type-data-lg font-semibold ${$t[o]}`,children:[(100*e.avgConfidence).toFixed(1),"%"]})]}),n.jsx(_t,{value:100*e.avgConfidence,status:o})]}),n.jsxs("div",{className:"cursor-help",title:"Percentage of 2-character prefixes that match multiple known nodes. Lower is better. Collisions require disambiguation to determine the correct node.",children:[n.jsxs("div",{className:"flex items-baseline justify-between mb-1",children:[n.jsx("span",{className:"type-data-xs text-text-muted",children:"Collision Rate"}),n.jsxs("span",{className:`type-data-lg font-semibold ${$t[d]}`,children:[e.collisionRate.toFixed(1),"%"]})]}),n.jsx(_t,{value:e.collisionRate,status:d})]})]}),n.jsxs("div",{className:"grid grid-cols-3 gap-2 mb-3",children:[n.jsxs("div",{className:"text-center cursor-help px-2 py-1.5 rounded",style:{backgroundColor:"var(--hover-tint)"},title:"Total unique 2-character prefixes observed in packet paths. Each prefix represents the first 2 hex digits of a node's full hash.",children:[n.jsx("div",{className:"type-data-lg font-semibold text-text-primary",children:e.totalPrefixes}),n.jsx("div",{className:"type-data-xs text-text-muted",children:"Prefixes"})]}),n.jsxs("div",{className:"text-center cursor-help px-2 py-1.5 rounded",style:{backgroundColor:"var(--hover-tint)"},title:"Prefixes that map to exactly one known node. No disambiguation needed—these are definitive identifications.",children:[n.jsx("div",{className:"type-data-lg font-semibold text-signal-good",children:e.unambiguousPrefixes}),n.jsx("div",{className:"type-data-xs text-text-muted",children:"Unique"})]}),n.jsxs("div",{className:"text-center cursor-help px-2 py-1.5 rounded",style:{backgroundColor:"var(--hover-tint)"},title:"Prefixes matching multiple known nodes. Click a prefix below to explore candidates and see how disambiguation scores them.",children:[n.jsx("div",{className:"type-data-lg font-semibold "+(e.collisionPrefixes>0?"text-signal-critical":"text-text-primary"),children:e.collisionPrefixes}),n.jsx("div",{className:"type-data-xs "+(e.collisionPrefixes>0?"text-signal-critical":"text-text-muted"),children:"Collisions"})]})]}),e.highCollisionPrefixes.length>0&&n.jsxs("div",{className:"mb-2",children:[n.jsx("div",{className:"type-data-xs text-text-muted mb-1.5",children:"Highest Collisions"}),n.jsx("div",{className:"flex flex-wrap gap-1",children:e.highCollisionPrefixes.map(({prefix:e,candidateCount:t,candidateHashes:s})=>n.jsxs("button",{type:"button",onClick:()=>i(e,s),className:"inline-flex items-center gap-1 px-1.5 py-0.5 min-h-[24px] rounded bg-surface-elevated text-text-secondary type-data-xs font-mono hover:bg-signal-critical/20 hover:text-signal-critical focus:outline-none focus:ring-2 focus:ring-signal-critical/50 transition-colors cursor-pointer touch-manipulation",title:`Click to explore ${t} candidates matching this prefix`,"aria-label":`Explore prefix ${e} with ${t} colliding candidates`,children:[e,n.jsxs("span",{className:"text-signal-critical",children:["×",t]})]},e))})]}),e.lowConfidencePrefixes.length>0&&n.jsx("div",{className:"mt-auto pt-2",children:n.jsxs("div",{className:"flex items-start gap-1.5",children:[n.jsx(w,{className:"w-3.5 h-3.5 text-signal-critical mt-0.5 flex-shrink-0"}),n.jsxs("div",{className:"min-w-0",children:[n.jsxs("div",{className:"type-data-xs text-signal-critical font-medium",children:[n.jsx("span",{className:"text-signal-critical",children:e.lowConfidencePrefixes.length})," prefix",1!==e.lowConfidencePrefixes.length?"es":""," with low confidence"]}),n.jsxs("div",{className:"type-data-xs text-text-muted font-mono truncate",children:[e.lowConfidencePrefixes.slice(0,5).join(", "),e.lowConfidencePrefixes.length>5&&n.jsxs("span",{className:"text-signal-critical",children:[" +",e.lowConfidencePrefixes.length-5," more"]})]})]})]})}),0===e.lowConfidencePrefixes.length&&0===e.collisionPrefixes&&n.jsx("div",{className:"mt-auto pt-2",children:n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx(N,{className:"w-3.5 h-3.5 text-signal-excellent"}),n.jsx("span",{className:"type-data-xs text-signal-excellent",children:"All prefixes uniquely identified"})]})})]}),n.jsx(Me,{isOpen:!!s,prefix:(null==s?void 0:s.prefix)||"",candidateHashes:(null==s?void 0:s.candidateHashes)||[],onClose:l})]})}function Lt({icon:e,label:t,value:s,sublabel:a,highlight:r,tooltip:i}){return n.jsxs("div",{className:"flex items-center justify-between py-2 "+(i?"cursor-help":""),title:i,children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"icon-xs text-icon-widget",children:e}),n.jsx("span",{className:"type-label text-text-secondary",children:t})]}),n.jsxs("div",{className:"text-right",children:[n.jsx("span",{className:"type-data-sm "+(r?"text-accent-tertiary":"text-text-primary"),children:s}),a&&n.jsx("span",{className:"type-data-xs text-text-muted ml-1",children:a})]})]})}function Et(){const e=V(),t=q().length;if(!e||0===e.totalPaths)return null;const{totalPaths:s,pathsWithGhosts:a,observationOverrideCount:r,tracePacketsProcessed:i,pathPacketsProcessed:l,distantEdgesDiscovered:o,duplicateGroupsFound:c,duplicatePathsUnique:d,echolocationEdgesInferred:m}=e,u=s-a,p=s>0?(u/s*100).toFixed(1):"0",x=s>0?(a/s*100).toFixed(1):"0",g=s>0?(r/s*100).toFixed(1):"0",f=i+l,b=f>0||o>0,y=c>0||m>0;return n.jsxs(je,{children:[n.jsx(Ne,{title:"Viterbi HMM",icon:n.jsx(k,{}),largeTitle:!0,badge:t>0?`${t} GHOSTS`:void 0}),n.jsxs(Se,{children:[n.jsxs("div",{className:"divide-y divide-white/5",children:[n.jsx(Lt,{icon:n.jsx(k,{className:"w-3.5 h-3.5"}),label:"Paths Decoded",value:s.toLocaleString(),tooltip:"Total packet paths analyzed by the Viterbi HMM algorithm. Each path is a sequence of node prefixes extracted from received packets."}),n.jsx(Lt,{icon:n.jsx(M,{className:"w-3.5 h-3.5"}),label:"Paths with Ghosts",value:a.toLocaleString(),sublabel:`(${x}%)`,highlight:a>0,tooltip:"Paths containing prefixes that don't match any known node. These 'ghost' prefixes may represent repeaters not yet discovered via direct ADVERT."}),n.jsx(Lt,{icon:n.jsx(C,{className:"w-3.5 h-3.5"}),label:"Observation Override",value:`${g}%`,sublabel:"of paths",tooltip:"Percentage of paths where real-world observations (signal strength, co-occurrence patterns) overrode the expected geographic transition model. Higher values indicate the algorithm is learning from actual mesh behavior."}),n.jsx(Lt,{icon:n.jsx(T,{className:"w-3.5 h-3.5"}),label:"Fully Resolved",value:`${p}%`,sublabel:`(${u.toLocaleString()} paths)`,highlight:parseFloat(p)>=90,tooltip:"Percentage of paths where all node prefixes were successfully matched to known nodes. Higher values indicate better mesh visibility - the algorithm can identify every hop in the packet's journey."})]}),b&&n.jsxs("div",{className:"mt-3 pt-3 border-t border-border-subtle",children:[n.jsx("p",{className:"type-micro mb-2",children:"Distant Topology"}),n.jsxs("div",{className:"divide-y divide-white/5",children:[n.jsx(Lt,{icon:n.jsx(S,{className:"w-3.5 h-3.5"}),label:"TRACE/PATH Packets",value:f.toLocaleString(),sublabel:i>0?`(${i} TRACE)`:void 0,tooltip:"TRACE and PATH packets contain pre-computed routes between distant nodes. These reveal mesh topology beyond what we can directly observe - edges between nodes that may never communicate with us."}),n.jsx(Lt,{icon:n.jsx(P,{className:"w-3.5 h-3.5"}),label:"Distant Edges",value:o.toLocaleString(),highlight:o>0,tooltip:"Edges discovered from TRACE/PATH packet route data. These represent links between distant nodes that we wouldn't see from normal packet forwarding - revealing deeper mesh structure."})]})]}),y&&n.jsxs("div",{className:"mt-3 pt-3 border-t border-border-subtle",children:[n.jsx("p",{className:"type-micro mb-2",children:"Echolocation"}),n.jsxs("div",{className:"divide-y divide-white/5",children:[n.jsx(Lt,{icon:n.jsx(R,{className:"w-3.5 h-3.5"}),label:"Duplicate Groups",value:c.toLocaleString(),sublabel:d>0?`(${d} paths)`:void 0,tooltip:"Packets received multiple times via different paths. Each duplicate is an 'echo' that reveals alternate routing through the mesh - like sonar mapping the network structure."}),n.jsx(Lt,{icon:n.jsx(h,{className:"w-3.5 h-3.5"}),label:"Echo Edges",value:m.toLocaleString(),highlight:m>0,tooltip:"Edges inferred from echolocation analysis. When the same packet arrives via different forwarders, those forwarders are likely within RF range of each other - revealing hidden mesh connectivity."})]})]}),n.jsx("div",{className:"mt-3 pt-3 border-t border-border-subtle cursor-help",title:"Ghost nodes are high-confidence unknown repeaters inferred from path analysis. They appear frequently in packet paths (10+ observations), have consistent neighbor relationships (2+ common neighbors), confidence score ≥30%, and have reasonable location estimates. Check the Contacts page to see them on the map.",children:n.jsxs("p",{className:"type-label text-text-muted",children:[n.jsx("span",{className:"text-accent-tertiary type-data-sm",children:t})," ","unknown repeater",1!==t?"s":""," discovered via HMM analysis"]})})]})]})}const Wt={useAbsoluteThresholds:!0,baselinePercentile:6,spikePercentile:50,baselineDbm:-107,spikeDbm:-100,mergeGapSeconds:45,minSequenceLength:16,similarityToleranceDbm:5};function Bt(e,t){if(0===e.length)return 0;const s=t/100*(e.length-1),a=Math.floor(s),n=Math.ceil(s);return a===n?e[a]:e[a]+(e[n]-e[a])*(s-a)}function Ht(e){if(0===e.length)return{median:0,p90:0,p95:0,p99:0,max:0,min:0};const t=[...e].sort((e,t)=>e-t);return{median:Bt(t,50),p90:Bt(t,90),p95:Bt(t,95),p99:Bt(t,99),max:t[t.length-1],min:t[0]}}function zt(e,t,s){const a=s-t;if(0===a)return"moderate";const n=(e-t)/a;return n>.66?"critical":n>.33?"severe":"moderate"}function Ot(){var e,t,s,a,i,l,o,c,d,m,u,h,p,g,b,y,v;const j=G(),N=U(),w=I(),k=X(),M=K(),[C,T]=r.useState(null),[S,P]=r.useState([]),[D,L]=r.useState(null),[E,W]=r.useState(null),[B,H]=r.useState(!0),[z,O]=r.useState(null),[V,q]=r.useState(3),[ae,ne]=r.useState("airtime"),[re,ie]=r.useState("smooth"),[le,oe]=r.useState(!1),[ce,de]=r.useState(!1),[me,ue]=r.useState(Wt),[he,pe]=r.useState(.5),xe=k.length,ge=r.useCallback(e=>{r.startTransition(()=>{q(e)})},[]),fe=Y[V].hours,be=60*fe,ye=J(fe),ve=r.useMemo(()=>{var e;if(!(null==(e=null==j?void 0:j.config)?void 0:e.radio))return null;const t=j.config.radio;return{sf:t.spreading_factor??10,bw:t.bandwidth??25e4,cr:t.coding_rate??5,preamble:t.preamble_length??8}},[null==(t=null==(e=null==j?void 0:j.config)?void 0:e.radio)?void 0:t.spreading_factor,null==(a=null==(s=null==j?void 0:j.config)?void 0:s.radio)?void 0:a.bandwidth,null==(l=null==(i=null==j?void 0:j.config)?void 0:i.radio)?void 0:l.coding_rate,null==(c=null==(o=null==j?void 0:j.config)?void 0:o.radio)?void 0:c.preamble_length]),Me=r.useMemo(()=>0===xe?null:Pe.getBucketedStats(be,ye,k,j),[xe,be,ye,ve]),{utilSamples:Se,startTs:Re,endTs:$e}=r.useMemo(()=>{if(!Me)return{utilSamples:[],startTs:0,endTs:0};const{received:e,transmitted:t,forwarded:s,bucket_duration_seconds:a,start_time:n,end_time:r}=Me,i=function(e,t){const s=new Map;for(const a of e)s.set(a.start,{...a});for(const a of t){const e=s.get(a.start);e?(e.airtime_ms+=a.airtime_ms,e.count+=a.count):s.set(a.start,{...a})}return Array.from(s.values()).sort((e,t)=>e.start-t.start)}(t,s);return{utilSamples:Ae(e,i),startTs:n,endTs:r}},[Me]),Fe=r.useMemo(()=>0===Se.length?{peak:0,mean:0}:{peak:Math.max(...Se.map(e=>e.rxUtilW)),mean:Se.reduce((e,t)=>e+t.rxUtilW,0)/Se.length},[Se]);r.useEffect(()=>{!async function(){var e;O(null);try{const[t,s]=await Promise.all([Q(fe),Z(fe)]);t.success&&t.data&&T(t.data),s.success&&(null==(e=s.data)?void 0:e.history)&&P(s.data.history)}catch(t){O(t instanceof Error?t.message:"Failed to load chart data")}finally{H(!1)}}()},[fe]);const _e=r.useMemo(()=>{switch(fe){case 72:return 6e5;case 168:return 18e5;default:return 3e5}},[fe]),De=r.useCallback(async()=>{try{const e=await Q(fe);e.success&&e.data&&T(e.data)}catch{}},[fe]),Le=r.useCallback(async()=>{var e;try{const t=await Z(fe);t.success&&(null==(e=t.data)?void 0:e.history)&&P(t.data.history)}catch{}},[fe]);se(De,_e,!0,!0),se(Le,_e,!0,!0);const Ee=r.useMemo(()=>C&&C.series?C.series.map(e=>({name:e.name,value:e.data.reduce((e,t)=>e+(t[1]??0),0)})).filter(e=>e.value>0):[],[C]),We=r.useMemo(()=>0===S.length?{timestamps:[],values:[]}:{timestamps:S.map(e=>e.timestamp),values:S.map(e=>e.noise_floor_dbm)},[S]),Be=r.useMemo(()=>{if(S.length<10)return{anomalies:[],debug:void 0};const e=function(e,t={}){const s={...Wt,...t};if(e.length<10)return{anomalies:[],thresholds:Ht([]),totalSamples:e.length,anomalySamples:0};const a=e.map(e=>e.noise_floor_dbm),n=Ht(a),r=[...a].sort((e,t)=>e-t);let i,l;s.useAbsoluteThresholds?(i=s.baselineDbm,l=s.spikeDbm):(i=Bt(r,s.baselinePercentile),l=Bt(r,s.spikePercentile));const o=[...e].sort((e,t)=>e.timestamp-t.timestamp),c=[];let d=null,m=0;for(const u of o)if(u.noise_floor_dbm>i&&u.noise_floor_dbme+t,0)/d.values.length):(d.values.length>=s.minSequenceLength&&c.push(d),d={startTs:u.timestamp,endTs:u.timestamp,values:[u.noise_floor_dbm],timestamps:[u.timestamp],rollingAvg:u.noise_floor_dbm})}else d={startTs:u.timestamp,endTs:u.timestamp,values:[u.noise_floor_dbm],timestamps:[u.timestamp],rollingAvg:u.noise_floor_dbm};else d&&d.values.length>=s.minSequenceLength&&c.push(d),d=null;return d&&d.values.length>=s.minSequenceLength&&c.push(d),0===c.length?{anomalies:[],thresholds:n,totalSamples:e.length,anomalySamples:m,debug:{baselineCutoff:i,spikeCutoff:l,midBandSamples:m}}:{anomalies:c.map(e=>{const t=Math.max(...e.values),s=e.values.reduce((e,t)=>e+t,0)/e.values.length;return{startTs:e.startTs,endTs:e.endTs,peakValue:t,avgValue:s,severity:zt(s,i,l),sampleCount:e.values.length}}),thresholds:n,totalSamples:e.length,anomalySamples:m,debug:{baselineCutoff:i,spikeCutoff:l,midBandSamples:m}}}(S,me);return{anomalies:e.anomalies,debug:e.debug}},[S,me]),He=Be.anomalies,ze=Y[V],Oe=r.useMemo(()=>{const e=(null==j?void 0:j.neighbors)??{};return Object.fromEntries(Object.entries(e).filter(([e])=>!N.has(e)))},[null==j?void 0:j.neighbors,N]),Ve=r.useMemo(()=>{const e=Date.now()/1e3-3600*fe;return Object.fromEntries(Object.entries(Oe).filter(([,t])=>t.last_seen>=e))},[Oe,fe]),qe=ee(fe),Ge=r.useMemo(()=>{const e=60*be/qe,t=Math.floor(Date.now()/1e3),s=Math.floor(t/e)*e;return{start:s-60*be,end:s}},[be,qe]);return n.jsxs(we,{children:[n.jsx(ke,{title:"Statistics",icon:n.jsx(A,{}),controls:n.jsx(te,{ranges:Y,selectedIndex:V,onSelect:ge})}),z&&n.jsx(je,{className:"border border-accent-red/50 bg-accent-red/10",children:n.jsx("p",{className:"text-accent-red",children:z})}),le&&ce&&n.jsxs(je,{className:"border border-accent-purple/30 bg-glass-surface/50",children:[n.jsxs("div",{className:"flex items-center justify-between mb-3",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"type-label",children:"Anomaly Detection Tuning"}),n.jsxs("span",{className:"type-data-xs text-text-muted",children:["(",ze.label,")"]})]}),n.jsx("button",{onClick:()=>ue(e=>({...e,useAbsoluteThresholds:!e.useAbsoluteThresholds})),className:"type-data-xs px-2 py-1 rounded transition-colors "+(me.useAbsoluteThresholds?"bg-accent-purple/30 text-accent-purple":"bg-glass-elevated text-text-muted hover:text-text-secondary"),children:me.useAbsoluteThresholds?"Absolute dBm":"Percentile"})]}),n.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[n.jsxs("div",{children:[n.jsx("span",{className:"type-micro",children:"Baseline"}),n.jsxs("span",{className:"ml-2 type-data-sm text-status-warning",children:[(null==(m=null==(d=Be.debug)?void 0:d.baselineCutoff)?void 0:m.toFixed(1))??"—"," dBm"]})]}),n.jsxs("div",{children:[n.jsx("span",{className:"type-micro",children:"Spike"}),n.jsxs("span",{className:"ml-2 type-data-sm text-status-warning",children:[(null==(h=null==(u=Be.debug)?void 0:u.spikeCutoff)?void 0:h.toFixed(1))??"—"," dBm"]})]}),n.jsxs("div",{children:[n.jsx("span",{className:"type-micro",children:"Mid-band"}),n.jsx("span",{className:"ml-2 type-data-sm text-accent-purple",children:(null==(p=Be.debug)?void 0:p.midBandSamples)??0})]}),n.jsxs("div",{children:[n.jsx("span",{className:"type-micro",children:"Anomalies"}),n.jsx("span",{className:"ml-2 type-data-sm text-status-danger",children:He.length})]})]}),n.jsxs("div",{className:"mt-4 pt-4 border-t border-border-subtle space-y-4",children:[me.useAbsoluteThresholds?n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Baseline (",me.baselineDbm," dBm)"]}),n.jsx("input",{type:"range",min:"-120",max:"-60",value:me.baselineDbm,onChange:e=>ue(t=>({...t,baselineDbm:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Spike (",me.spikeDbm," dBm)"]}),n.jsx("input",{type:"range",min:"-100",max:"-20",value:me.spikeDbm,onChange:e=>ue(t=>({...t,spikeDbm:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Merge Gap (",me.mergeGapSeconds,"s)"]}),n.jsx("input",{type:"range",min:"5",max:"120",step:"5",value:me.mergeGapSeconds,onChange:e=>ue(t=>({...t,mergeGapSeconds:Number(e.target.value)})),className:"w-full accent-accent-purple"})]})]}),n.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Min Sequence (",me.minSequenceLength,")"]}),n.jsx("input",{type:"range",min:"2",max:"20",value:me.minSequenceLength,onChange:e=>ue(t=>({...t,minSequenceLength:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Similarity (±",me.similarityToleranceDbm," dBm)"]}),n.jsx("input",{type:"range",min:"1",max:"15",value:me.similarityToleranceDbm,onChange:e=>ue(t=>({...t,similarityToleranceDbm:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Opacity (",Math.round(100*he),"%)"]}),n.jsx("input",{type:"range",min:"0.1",max:"1",step:"0.05",value:he,onChange:e=>pe(Number(e.target.value)),className:"w-full accent-accent-purple"})]})]})]}):n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Baseline (P",me.baselinePercentile,")"]}),n.jsx("input",{type:"range",min:"1",max:"50",value:me.baselinePercentile,onChange:e=>ue(t=>({...t,baselinePercentile:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Spike (P",me.spikePercentile,")"]}),n.jsx("input",{type:"range",min:"50",max:"99",value:me.spikePercentile,onChange:e=>ue(t=>({...t,spikePercentile:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Merge Gap (",me.mergeGapSeconds,"s)"]}),n.jsx("input",{type:"range",min:"5",max:"120",step:"5",value:me.mergeGapSeconds,onChange:e=>ue(t=>({...t,mergeGapSeconds:Number(e.target.value)})),className:"w-full accent-accent-purple"})]})]}),n.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Min Sequence (",me.minSequenceLength,")"]}),n.jsx("input",{type:"range",min:"2",max:"20",value:me.minSequenceLength,onChange:e=>ue(t=>({...t,minSequenceLength:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Similarity (±",me.similarityToleranceDbm," dBm)"]}),n.jsx("input",{type:"range",min:"1",max:"15",value:me.similarityToleranceDbm,onChange:e=>ue(t=>({...t,similarityToleranceDbm:Number(e.target.value)})),className:"w-full accent-accent-purple"})]}),n.jsxs("div",{children:[n.jsxs("label",{className:"type-micro block mb-1",children:["Opacity (",Math.round(100*he),"%)"]}),n.jsx("input",{type:"range",min:"0.1",max:"1",step:"0.05",value:he,onChange:e=>pe(Number(e.target.value)),className:"w-full accent-accent-purple"})]})]})]}),n.jsxs("div",{className:"mt-4 p-3 bg-glass-elevated rounded-lg",children:[n.jsx("div",{className:"type-micro mb-1",children:"Config output"}),n.jsxs("div",{className:"type-data-sm text-status-success",children:[me.useAbsoluteThresholds?`useAbsoluteThresholds: true, baselineDbm: ${me.baselineDbm}, spikeDbm: ${me.spikeDbm}`:`useAbsoluteThresholds: false, baselinePercentile: ${me.baselinePercentile}, spikePercentile: ${me.spikePercentile}`,", mergeGapSeconds: ",me.mergeGapSeconds,", minSequenceLength: ",me.minSequenceLength,", similarityToleranceDbm: ",me.similarityToleranceDbm]})]})]})]}),B?n.jsx(Ce,{template:"auto",children:n.jsx(je,{className:"text-center py-12",children:n.jsx("div",{className:"animate-pulse text-text-muted",children:"Loading statistics..."})})}):n.jsxs(n.Fragment,{children:[n.jsx(Ce,{template:"hero-auto",children:n.jsxs(je,{isLoaded:M,skeletonType:"chart",children:[n.jsx(Ne,{icon:n.jsx(x,{}),title:"Packet Analyzer",badge:ze.label,largeTitle:!0,actions:n.jsxs("div",{className:"flex flex-wrap items-center gap-2 justify-end",children:["stats"===re&&n.jsx(it,{enabled:le,onChange:oe,anomalyCount:He.length,showTuning:ce,onTuningChange:de}),n.jsx(lt,{smoothing:re,onChange:ie}),n.jsx(rt,{mode:ae,onChange:ne})]})}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(ot,{packets:k,startTs:Ge.start,endTs:Ge.end,bucketCount:qe,radioConfig:ve??void 0,mode:ae,smoothing:re,noiseFloorAnomalies:He,showNoiseFloorOverlay:le,overlayOpacity:he})})]})}),n.jsxs(Ce,{template:"panel",children:[n.jsx(Te,{span:12,md:6,children:n.jsxs(je,{isLoaded:M,skeletonType:"chart",children:[n.jsx(Ne,{icon:n.jsx($,{}),title:"Airtime Utilization",badge:`${Math.round(5)}m window`,largeTitle:!0,actions:n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsxs("span",{className:"type-data-xs text-text-muted",children:["Peak ",n.jsxs("span",{className:"text-text-secondary tabular-nums font-medium",children:[Fe.peak.toFixed(2),"%"]})]}),n.jsxs("span",{className:"type-data-xs text-text-muted",children:["Mean ",n.jsxs("span",{className:"text-text-secondary tabular-nums font-medium",children:[Fe.mean.toFixed(2),"%"]})]})]})}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(At,{children:n.jsx(bt,{samples:Se,startTs:Re,endTs:$e})})})]})}),n.jsx(Te,{span:12,md:6,children:n.jsxs(je,{isLoaded:M,skeletonType:"chart",children:[n.jsx(Ne,{icon:n.jsx(f,{}),title:"Link Quality",badge:ze.label,largeTitle:!0,actions:E?n.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 type-data-xs text-text-muted",children:[n.jsxs("span",{children:[n.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:E.zeroHopCount})," nbr"]}),n.jsxs("span",{children:[n.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:E.totalCount})," obs"]}),n.jsxs("span",{children:[n.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:E.maxDistanceKm.toFixed(0)})," km"]})]}):null}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(At,{children:n.jsx(Mt,{neighbors:Ve,quickNeighbors:w,localLat:(null==(b=null==(g=null==j?void 0:j.config)?void 0:g.repeater)?void 0:b.latitude)??0,localLon:(null==(v=null==(y=null==j?void 0:j.config)?void 0:y.repeater)?void 0:v.longitude)??0,onStatsChange:W})})})]})})]}),n.jsxs(Ce,{template:"panel",children:[n.jsx(Te,{span:12,md:6,children:n.jsxs(je,{isLoaded:M,skeletonType:"chart",children:[n.jsx(Ne,{icon:n.jsx(F,{}),title:"Packet Types",largeTitle:!0}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(At,{children:Ee.length>0?n.jsx(ut,{data:Ee}):n.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No packet type data available"})})})]})}),n.jsx(Te,{span:12,md:6,children:n.jsxs(je,{isLoaded:M,skeletonType:"chart",children:[n.jsx(Ne,{icon:n.jsx(_,{}),title:"Network Composition",badge:ze.label,largeTitle:!0}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(At,{children:n.jsx(Rt,{neighbors:Ve})})})]})})]}),n.jsxs(Ce,{template:"panel",children:[n.jsx(Te,{span:12,md:6,children:n.jsx(Dt,{})}),n.jsx(Te,{span:12,md:6,children:n.jsx(Et,{})})]}),n.jsx(Ce,{template:"panel",children:n.jsx(Te,{span:12,children:n.jsxs(je,{isLoaded:M,skeletonType:"chart",children:[n.jsx(Ne,{icon:n.jsx(R,{}),title:"RF Noise Floor",largeTitle:!0,actions:D?n.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 md:gap-3",children:[n.jsxs("span",{className:"type-data-xs text-text-muted whitespace-nowrap",children:["min ",n.jsx("span",{className:"text-text-secondary tabular-nums",children:D.min.toFixed(0)})]}),n.jsxs("span",{className:"type-data-xs text-text-muted whitespace-nowrap",children:["avg ",n.jsx("span",{className:"text-text-secondary tabular-nums",children:D.avg.toFixed(0)})]}),n.jsxs("span",{className:"type-data-xs text-text-muted whitespace-nowrap",children:["max ",n.jsx("span",{className:"text-text-secondary tabular-nums",children:D.max.toFixed(0)})]}),n.jsx("span",{className:"type-data-xs text-text-muted",children:"dBm"})]}):n.jsx("span",{className:"type-data-xs text-text-muted",children:"dBm"})}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(At,{children:n.jsx(Tt,{timestamps:We.timestamps,values:We.values,onStatsChange:L})})})]})})})]})]})}export{Ot as default}; diff --git a/frontend/dist/assets/Statistics-D1GxaB_c.css b/frontend/dist/assets/Statistics-D1GxaB_c.css deleted file mode 100644 index 519078e5..00000000 --- a/frontend/dist/assets/Statistics-D1GxaB_c.css +++ /dev/null @@ -1 +0,0 @@ -.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none} diff --git a/frontend/dist/assets/System-BSF0fscu.js b/frontend/dist/assets/System-BSF0fscu.js deleted file mode 100644 index f4824966..00000000 --- a/frontend/dist/assets/System-BSF0fscu.js +++ /dev/null @@ -1 +0,0 @@ -import{r as e,j as t,$ as s,aL as a,ab as r,aM as l,aN as c}from"./vendor-react-CUlQ5-Td.js";import{Y as o,Z as n,_ as i,$ as d}from"./index-C1whtcFB.js";import{c as m,R as x,A as u,C as p,X as h,Y as j,T as y,e as f,b as g}from"./recharts-7RsRrQtf.js";import{P as v,b,a as N,c as w}from"./PageLayout-CViR4hDG.js";import{f as k,a as C}from"./useThemeColors-8RSyMp_o.js";import{R as F,C as _}from"./Grid-HJLNnEZz.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-MTXp-Y3t.js";const M={primary:"bg-accent-tertiary",secondary:"bg-accent-secondary",green:"bg-accent-success",red:"bg-accent-danger",yellow:"bg-accent-secondary"},S=e.memo(function({value:e,max:s=100,color:a="primary"}){const r=Math.min(e/s*100,100),l=r>90?"bg-accent-danger":r>70?"bg-accent-secondary":M[a];return t.jsx("div",{className:"h-2.5 bg-white/[0.02] rounded-full overflow-hidden",children:t.jsx("div",{className:m("h-full rounded-full",l),style:{width:`${r}%`}})})}),G={cold:30,normal:50,warm:65,hot:80},L=e.memo(function({value:e,label:s,min:a=20,max:r=100}){const l=Math.min(Math.max((e-a)/(r-a)*100,0),100),c=e{const t=l>0?e.pos/l*100:0;return`${e.color} ${Math.min(t,100)}%`}).join(", ")})`,width:`${l}%`}}),t.jsx("div",{className:"absolute inset-0 flex items-center pointer-events-none",children:[{threshold:G.cold,color:"var(--accent-tertiary)"},{threshold:G.normal,color:"var(--accent-success)"},{threshold:G.warm,color:"var(--accent-secondary)"},{threshold:G.hot,color:"var(--signal-poor)"}].map(({threshold:e,color:s})=>{const l=(e-a)/(r-a)*100;return l<0||l>100?null:t.jsx("div",{className:"absolute w-px h-full",style:{left:`${l}%`,backgroundColor:s}},e)})})]})]})}),$=Math.floor(12e5/d.system);function O({payload:e}){return e?t.jsx("div",{className:"flex items-center gap-4 justify-center text-xs font-mono",children:e.map((e,s)=>t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:e.color}}),t.jsx("span",{className:"text-text-muted",children:e.value})]},s))}):null}function T({active:e,payload:s,label:a}){return e&&s&&0!==s.length?t.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 text-sm shadow-xl",children:[t.jsx("div",{className:"font-medium text-text-primary mb-1",children:a}),s.map((e,s)=>t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:e.color}}),t.jsxs("span",{className:"text-text-muted",children:[e.name,":"]}),t.jsxs("span",{className:"text-text-primary tabular-nums",children:[e.value.toFixed(1),"%"]})]},s))]}):null}const U=e.memo(function({data:e,cpuColor:s,memoryColor:a,chartGridColors:r}){const l=function(e){const t=[],s=Math.max(0,$-e.length),a=Date.now(),r=d.system;for(let c=0;c`${e}%`}),t.jsx(y,{content:t.jsx(T,{})}),t.jsx(f,{content:t.jsx(O,{})}),t.jsx(g,{type:"stepAfter",dataKey:"cpu",name:"CPU",stroke:o,strokeWidth:2,fill:"url(#cpuGradient)",fillOpacity:.85,isAnimationActive:!1,connectNulls:!1}),t.jsx(g,{type:"stepAfter",dataKey:"memory",name:"Memory",stroke:n,strokeWidth:2,fill:"url(#memoryGradient)",fillOpacity:.85,isAnimationActive:!1,connectNulls:!1})]})})})});function A(){const[x,u]=e.useState(null),[p,h]=e.useState(!0),[j,y]=e.useState(null),[f,g]=e.useState(!1),M=o(),G=n(),O=k(),T=C(),A=O.chart3,P=O.chart4,R=e.useCallback(async()=>{try{const e=await i();e.success&&e.data?(u(e.data),y(null),G(e.data.cpu.usage_percent,e.data.memory.usage_percent,$)):y(e.error||"Failed to fetch hardware stats")}catch(e){y(e instanceof Error?e.message:"Failed to fetch hardware stats")}},[G]);return e.useEffect(()=>{let e=!0,t=null;if((async()=>{e&&(await R(),e&&h(!1))})(),"undefined"==typeof Worker){const t=setInterval(R,d.system);return()=>{e=!1,clearInterval(t)}}{const s=`\n const interval = ${d.system};\n setInterval(() => postMessage('tick'), interval);\n `,a=new Blob([s],{type:"application/javascript"});t=new Worker(URL.createObjectURL(a)),t.onmessage=()=>{e&&R()}}return()=>{e=!1,t&&t.terminate()}},[R]),t.jsxs(v,{children:[t.jsx(b,{title:"System Stats",icon:t.jsx(a,{}),controls:t.jsxs("button",{onClick:async()=>{g(!0),await R(),g(!1)},disabled:f,className:"flex items-center gap-2 px-3 py-1.5 sm:px-4 sm:py-2 bg-bg-subtle hover:bg-bg-elevated rounded-lg transition-colors text-sm text-text-muted hover:text-text-primary self-start sm:self-auto",children:[t.jsx(s,{className:m("w-4 h-4",f&&"animate-spin")}),"Refresh"]})}),j&&t.jsx(N,{className:"border border-accent-danger/50 bg-accent-danger/10",children:t.jsx("p",{className:"text-accent-danger",children:j})}),p?t.jsx(N,{className:"p-12 text-center",children:t.jsx("div",{className:"animate-pulse text-text-muted",children:"Loading system stats..."})}):x?t.jsxs(t.Fragment,{children:[t.jsx(F,{template:"hero",children:t.jsxs(N,{children:[t.jsx(w,{icon:t.jsx(r,{}),title:"System Resources",subtitle:"20 minute rolling window",iconColor:"text-accent-tertiary",largeTitle:!0,actions:t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"type-micro",children:"CPU"}),t.jsxs("span",{className:"type-data font-semibold tabular-nums",style:{color:A},children:[x.cpu.usage_percent.toFixed(0),"%"]})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"type-micro",children:"MEM"}),t.jsxs("span",{className:"type-data font-semibold tabular-nums",style:{color:P},children:[x.memory.usage_percent.toFixed(0),"%"]})]})]})}),t.jsx("div",{className:"flex-1 min-h-0",children:t.jsx(U,{data:M,cpuColor:A,memoryColor:P,chartGridColors:T})}),t.jsxs("div",{className:"flex items-center justify-between mt-3 pt-3 border-t border-border-subtle text-xs text-text-muted flex-shrink-0",children:[t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("span",{children:[x.cpu.count," CPU cores"]}),x.cpu.load_avg&&t.jsxs("span",{className:"tabular-nums",children:["Load: ",x.cpu.load_avg["1min"].toFixed(2)," / ",x.cpu.load_avg["5min"].toFixed(2)," / ",x.cpu.load_avg["15min"].toFixed(2)]})]}),t.jsxs("span",{className:"tabular-nums",children:[(x.memory.used/1048576).toFixed(0)," / ",(x.memory.total/1048576).toFixed(0)," MB"]})]})]})}),t.jsxs(F,{template:"compact",children:[t.jsx(_,{span:12,md:6,children:t.jsxs(N,{children:[t.jsx(w,{icon:t.jsx(l,{}),title:"Disk Usage",subtitle:"Storage utilization",iconColor:"text-accent-success",largeTitle:!0}),t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex justify-between text-sm",children:[t.jsx("span",{className:"text-text-muted",children:"Usage"}),t.jsxs("span",{className:"text-text-primary font-medium",children:[x.disk.usage_percent.toFixed(1),"%"]})]}),t.jsx(S,{value:x.disk.usage_percent,color:"green"}),t.jsxs("div",{className:"flex justify-between text-sm mt-2",children:[t.jsxs("span",{className:"text-text-muted",children:[(x.disk.used/1073741824).toFixed(1)," GB used"]}),t.jsxs("span",{className:"text-text-muted",children:[(x.disk.total/1073741824).toFixed(1)," GB total"]})]})]})]})}),t.jsx(_,{span:12,md:6,children:t.jsxs(N,{children:[t.jsx(w,{icon:t.jsx(c,{}),title:"Temperature",subtitle:"System sensors",iconColor:"text-accent-secondary",largeTitle:!0}),x.temperatures&&Object.keys(x.temperatures).length>0?t.jsxs("div",{className:"space-y-2.5",children:[void 0!==x.temperatures.cpu_thermal&&t.jsx(L,{value:x.temperatures.cpu_thermal,label:"CPU",min:20,max:100}),Object.entries(x.temperatures).filter(([e])=>"cpu_thermal"!==e).slice(0,3).map(([e,s])=>t.jsx(L,{value:s,label:e.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase()),min:20,max:100},e))]}):t.jsxs("div",{className:"flex items-center justify-center h-20 text-text-muted text-sm",children:[t.jsx(r,{className:"w-4 h-4 mr-2"}),"No sensors available"]})]})})]})]}):null]})}export{A as default}; diff --git a/frontend/dist/assets/System-tc2mHcQZ.js b/frontend/dist/assets/System-tc2mHcQZ.js new file mode 100644 index 00000000..797ba158 --- /dev/null +++ b/frontend/dist/assets/System-tc2mHcQZ.js @@ -0,0 +1 @@ +import{r as e,j as t,$ as s,aP as a,ab as r,aQ as l,aR as c}from"./vendor-react-CWPBVwgk.js";import{_ as o,$ as n,a0 as i,a1 as d}from"./index-BlYVqXhs.js";import{c as m,R as x,A as u,C as p,X as h,Y as j,T as y,e as f,b as g}from"./recharts-cqZ_RWsW.js";import{P as v,b,a as N,c as w}from"./PageLayout-Kh569_kh.js";import{f as k,a as C}from"./useThemeColors-f-o_FvwS.js";import{R as F,C as _}from"./Grid-CguXkLgY.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";const M={primary:"bg-accent-tertiary",secondary:"bg-accent-secondary",green:"bg-accent-success",red:"bg-accent-danger",yellow:"bg-accent-secondary"},S=e.memo(function({value:e,max:s=100,color:a="primary"}){const r=Math.min(e/s*100,100),l=r>90?"bg-accent-danger":r>70?"bg-accent-secondary":M[a];return t.jsx("div",{className:"h-2.5 bg-white/[0.02] rounded-full overflow-hidden",children:t.jsx("div",{className:m("h-full rounded-full",l),style:{width:`${r}%`}})})}),G={cold:30,normal:50,warm:65,hot:80},L=e.memo(function({value:e,label:s,min:a=20,max:r=100}){const l=Math.min(Math.max((e-a)/(r-a)*100,0),100),c=e{const t=l>0?e.pos/l*100:0;return`${e.color} ${Math.min(t,100)}%`}).join(", ")})`,width:`${l}%`}}),t.jsx("div",{className:"absolute inset-0 flex items-center pointer-events-none",children:[{threshold:G.cold,color:"var(--accent-tertiary)"},{threshold:G.normal,color:"var(--accent-success)"},{threshold:G.warm,color:"var(--accent-secondary)"},{threshold:G.hot,color:"var(--signal-poor)"}].map(({threshold:e,color:s})=>{const l=(e-a)/(r-a)*100;return l<0||l>100?null:t.jsx("div",{className:"absolute w-px h-full",style:{left:`${l}%`,backgroundColor:s}},e)})})]})]})}),$=Math.floor(12e5/d.system);function O({payload:e}){return e?t.jsx("div",{className:"flex items-center gap-4 justify-center text-xs font-mono",children:e.map((e,s)=>t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:e.color}}),t.jsx("span",{className:"text-text-muted",children:e.value})]},s))}):null}function T({active:e,payload:s,label:a}){return e&&s&&0!==s.length?t.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-3 py-2 text-sm shadow-xl",children:[t.jsx("div",{className:"font-medium text-text-primary mb-1",children:a}),s.map((e,s)=>t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:e.color}}),t.jsxs("span",{className:"text-text-muted",children:[e.name,":"]}),t.jsxs("span",{className:"text-text-primary tabular-nums",children:[e.value.toFixed(1),"%"]})]},s))]}):null}const U=e.memo(function({data:e,cpuColor:s,memoryColor:a,chartGridColors:r}){const l=function(e){const t=[],s=Math.max(0,$-e.length),a=Date.now(),r=d.system;for(let c=0;c`${e}%`}),t.jsx(y,{content:t.jsx(T,{})}),t.jsx(f,{content:t.jsx(O,{})}),t.jsx(g,{type:"stepAfter",dataKey:"cpu",name:"CPU",stroke:o,strokeWidth:2,fill:"url(#cpuGradient)",fillOpacity:.85,isAnimationActive:!1,connectNulls:!1}),t.jsx(g,{type:"stepAfter",dataKey:"memory",name:"Memory",stroke:n,strokeWidth:2,fill:"url(#memoryGradient)",fillOpacity:.85,isAnimationActive:!1,connectNulls:!1})]})})})});function A(){const[x,u]=e.useState(null),[p,h]=e.useState(!0),[j,y]=e.useState(null),[f,g]=e.useState(!1),M=o(),G=n(),O=k(),T=C(),A=O.chart3,P=O.chart4,R=e.useCallback(async()=>{try{const e=await i();e.success&&e.data?(u(e.data),y(null),G(e.data.cpu.usage_percent,e.data.memory.usage_percent,$)):y(e.error||"Failed to fetch hardware stats")}catch(e){y(e instanceof Error?e.message:"Failed to fetch hardware stats")}},[G]);return e.useEffect(()=>{let e=!0,t=null;if((async()=>{e&&(await R(),e&&h(!1))})(),"undefined"==typeof Worker){const t=setInterval(R,d.system);return()=>{e=!1,clearInterval(t)}}{const s=`\n const interval = ${d.system};\n setInterval(() => postMessage('tick'), interval);\n `,a=new Blob([s],{type:"application/javascript"});t=new Worker(URL.createObjectURL(a)),t.onmessage=()=>{e&&R()}}return()=>{e=!1,t&&t.terminate()}},[R]),t.jsxs(v,{children:[t.jsx(b,{title:"System Stats",icon:t.jsx(a,{}),controls:t.jsxs("button",{onClick:async()=>{g(!0),await R(),g(!1)},disabled:f,className:"flex items-center gap-2 px-3 py-1.5 sm:px-4 sm:py-2 bg-bg-subtle hover:bg-bg-elevated rounded-lg transition-colors text-sm text-text-muted hover:text-text-primary self-start sm:self-auto",children:[t.jsx(s,{className:m("w-4 h-4",f&&"animate-spin")}),"Refresh"]})}),j&&t.jsx(N,{className:"border border-accent-danger/50 bg-accent-danger/10",children:t.jsx("p",{className:"text-accent-danger",children:j})}),p?t.jsx(N,{className:"p-12 text-center",children:t.jsx("div",{className:"animate-pulse text-text-muted",children:"Loading system stats..."})}):x?t.jsxs(t.Fragment,{children:[t.jsx(F,{template:"hero",children:t.jsxs(N,{children:[t.jsx(w,{icon:t.jsx(r,{}),title:"System Resources",subtitle:"20 minute rolling window",iconColor:"text-accent-tertiary",largeTitle:!0,actions:t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"type-micro",children:"CPU"}),t.jsxs("span",{className:"type-data font-semibold tabular-nums",style:{color:A},children:[x.cpu.usage_percent.toFixed(0),"%"]})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"type-micro",children:"MEM"}),t.jsxs("span",{className:"type-data font-semibold tabular-nums",style:{color:P},children:[x.memory.usage_percent.toFixed(0),"%"]})]})]})}),t.jsx("div",{className:"flex-1 min-h-0",children:t.jsx(U,{data:M,cpuColor:A,memoryColor:P,chartGridColors:T})}),t.jsxs("div",{className:"flex items-center justify-between mt-3 pt-3 border-t border-border-subtle text-xs text-text-muted flex-shrink-0",children:[t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("span",{children:[x.cpu.count," CPU cores"]}),x.cpu.load_avg&&t.jsxs("span",{className:"tabular-nums",children:["Load: ",x.cpu.load_avg["1min"].toFixed(2)," / ",x.cpu.load_avg["5min"].toFixed(2)," / ",x.cpu.load_avg["15min"].toFixed(2)]})]}),t.jsxs("span",{className:"tabular-nums",children:[(x.memory.used/1048576).toFixed(0)," / ",(x.memory.total/1048576).toFixed(0)," MB"]})]})]})}),t.jsxs(F,{template:"compact",children:[t.jsx(_,{span:12,md:6,children:t.jsxs(N,{children:[t.jsx(w,{icon:t.jsx(l,{}),title:"Disk Usage",subtitle:"Storage utilization",iconColor:"text-accent-success",largeTitle:!0}),t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex justify-between text-sm",children:[t.jsx("span",{className:"text-text-muted",children:"Usage"}),t.jsxs("span",{className:"text-text-primary font-medium",children:[x.disk.usage_percent.toFixed(1),"%"]})]}),t.jsx(S,{value:x.disk.usage_percent,color:"green"}),t.jsxs("div",{className:"flex justify-between text-sm mt-2",children:[t.jsxs("span",{className:"text-text-muted",children:[(x.disk.used/1073741824).toFixed(1)," GB used"]}),t.jsxs("span",{className:"text-text-muted",children:[(x.disk.total/1073741824).toFixed(1)," GB total"]})]})]})]})}),t.jsx(_,{span:12,md:6,children:t.jsxs(N,{children:[t.jsx(w,{icon:t.jsx(c,{}),title:"Temperature",subtitle:"System sensors",iconColor:"text-accent-secondary",largeTitle:!0}),x.temperatures&&Object.keys(x.temperatures).length>0?t.jsxs("div",{className:"space-y-2.5",children:[void 0!==x.temperatures.cpu_thermal&&t.jsx(L,{value:x.temperatures.cpu_thermal,label:"CPU",min:20,max:100}),Object.entries(x.temperatures).filter(([e])=>"cpu_thermal"!==e).slice(0,3).map(([e,s])=>t.jsx(L,{value:s,label:e.replace(/_/g," ").replace(/\b\w/g,e=>e.toUpperCase()),min:20,max:100},e))]}):t.jsxs("div",{className:"flex items-center justify-center h-20 text-text-muted text-sm",children:[t.jsx(r,{className:"w-4 h-4 mr-2"}),"No sensors available"]})]})})]})]}):null]})}export{A as default}; diff --git a/frontend/dist/assets/Terminal-fFigQMKz.js b/frontend/dist/assets/Terminal-yBl-QLp9.js similarity index 98% rename from frontend/dist/assets/Terminal-fFigQMKz.js rename to frontend/dist/assets/Terminal-yBl-QLp9.js index 5d430aa9..4f91f503 100644 --- a/frontend/dist/assets/Terminal-fFigQMKz.js +++ b/frontend/dist/assets/Terminal-yBl-QLp9.js @@ -1 +1 @@ -import{c as e,r as a,j as t,S as r}from"./vendor-react-CUlQ5-Td.js";import{c as s}from"./recharts-7RsRrQtf.js";import{d as n,a5 as o,a6 as i,a7 as l,a8 as c,a9 as m,a3 as d}from"./index-C1whtcFB.js";import{P as p,b as y,a as u}from"./PageLayout-CViR4hDG.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-MTXp-Y3t.js";const g=e(e=>({entries:[],commandHistory:[],isInitialized:!1,addEntry:a=>{const t="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const a=16*Math.random()|0;return("x"===e?a:3&a|8).toString(16)}),r={...a,id:t,timestamp:Date.now()};return e(e=>({entries:[...e.entries,r]})),t},updateEntry:(a,t)=>{e(e=>({entries:e.entries.map(e=>e.id===a?{...e,...t}:e)}))},addCommand:a=>{e(e=>({commandHistory:[...e.commandHistory,a]}))},clearEntries:()=>{e({entries:[],commandHistory:[]})},setInitialized:a=>{e({isInitialized:a})}})),h=new Set(["start ota","erase","reboot"]),f=["gps","sensor"],v=[{cmd:"help",desc:"Show available commands"},{cmd:"clear",desc:"Clear terminal screen"},{cmd:"status",desc:"Get repeater status summary"},{cmd:"uptime",desc:"Show system uptime"},{cmd:"packets",desc:"Show packet statistics"},{cmd:"board",desc:"Show board/platform info"},...[{name:"get adc.multiplier",category:"get",params:[],description:"Get ADC multiplier for battery",serialOnly:!1,hasParam:!1},{name:"get advert.interval",category:"get",params:[],description:"Get local advert interval (minutes)",serialOnly:!1,hasParam:!1},{name:"get af",category:"get",params:[],description:"Get airtime factor",serialOnly:!1,hasParam:!1},{name:"get agc.reset.interval",category:"get",params:[],description:"Get AGC reset interval (seconds)",serialOnly:!1,hasParam:!1},{name:"get allow.read.only",category:"get",params:[],description:"Get read-only access setting",serialOnly:!1,hasParam:!1},{name:"get bridge.baud",category:"get",params:[],description:"Get bridge baud rate",serialOnly:!1,hasParam:!1},{name:"get bridge.channel",category:"get",params:[],description:"Get bridge channel (ESP-NOW)",serialOnly:!1,hasParam:!1},{name:"get bridge.delay",category:"get",params:[],description:"Get bridge delay (ms)",serialOnly:!1,hasParam:!1},{name:"get bridge.enabled",category:"get",params:[],description:"Get bridge enabled status",serialOnly:!1,hasParam:!1},{name:"get bridge.secret",category:"get",params:[],description:"Get bridge encryption secret",serialOnly:!1,hasParam:!1},{name:"get bridge.source",category:"get",params:[],description:"Get bridge packet source",serialOnly:!1,hasParam:!1},{name:"get bridge.type",category:"get",params:[],description:"Get bridge type (rs232/espnow/none)",serialOnly:!1,hasParam:!1},{name:"get direct.txdelay",category:"get",params:[],description:"Get direct TX delay factor",serialOnly:!1,hasParam:!1},{name:"get flood.advert.interval",category:"get",params:[],description:"Get flood advert interval (hours)",serialOnly:!1,hasParam:!1},{name:"get flood.max",category:"get",params:[],description:"Get max flood hops",serialOnly:!1,hasParam:!1},{name:"get freq",category:"get",params:[],description:"Get frequency (MHz)",serialOnly:!1,hasParam:!1},{name:"get guest.password",category:"get",params:[],description:"Get guest password",serialOnly:!1,hasParam:!1},{name:"get int.thresh",category:"get",params:[],description:"Get interference threshold",serialOnly:!1,hasParam:!1},{name:"get lat",category:"get",params:[],description:"Get latitude",serialOnly:!1,hasParam:!1},{name:"get lon",category:"get",params:[],description:"Get longitude",serialOnly:!1,hasParam:!1},{name:"get multi.acks",category:"get",params:[],description:"Get multi-ack setting",serialOnly:!1,hasParam:!1},{name:"get name",category:"get",params:[],description:"Get node name",serialOnly:!1,hasParam:!1},{name:"get prv.key",category:"get",params:[],description:"Get private key (hex)",serialOnly:!1,hasParam:!1},{name:"get public.key",category:"get",params:[],description:"Get public key (hex)",serialOnly:!1,hasParam:!1},{name:"get radio",category:"get",params:[],description:"Get radio params (freq,bw,sf,cr)",serialOnly:!1,hasParam:!1},{name:"get repeat",category:"get",params:[],description:"Get repeat/forward status (on/off)",serialOnly:!1,hasParam:!1},{name:"get role",category:"get",params:[],description:"Get device role",serialOnly:!1,hasParam:!1},{name:"get rxdelay",category:"get",params:[],description:"Get RX delay base",serialOnly:!1,hasParam:!1},{name:"get tx",category:"get",params:[],description:"Get TX power (dBm)",serialOnly:!1,hasParam:!1},{name:"get txdelay",category:"get",params:[],description:"Get TX delay factor",serialOnly:!1,hasParam:!1},{name:"gps",category:"gps",params:[],description:"Show GPS status",serialOnly:!1,hasParam:!1},{name:"gps advert",category:"gps",params:[],description:"Get/set GPS advert location policy",serialOnly:!1,hasParam:!0},{name:"gps off",category:"gps",params:[],description:"Disable GPS",serialOnly:!1,hasParam:!0},{name:"gps on",category:"gps",params:[],description:"Enable GPS",serialOnly:!1,hasParam:!0},{name:"gps setloc",category:"gps",params:[],description:"Set node location from GPS",serialOnly:!1,hasParam:!0},{name:"gps sync",category:"gps",params:[],description:"Sync time from GPS",serialOnly:!1,hasParam:!0},{name:"log",category:"logging",params:[],description:"Dump log file (serial only)",serialOnly:!0,hasParam:!1},{name:"log erase",category:"logging",params:[],description:"Erase log file",serialOnly:!1,hasParam:!0},{name:"log start",category:"logging",params:[],description:"Start packet logging",serialOnly:!1,hasParam:!0},{name:"log stop",category:"logging",params:[],description:"Stop packet logging",serialOnly:!1,hasParam:!0},{name:"neighbor.remove",category:"neighbor",params:[],description:"Remove neighbor by pubkey",serialOnly:!1,hasParam:!0},{name:"neighbors",category:"neighbor",params:[],description:"List neighbors",serialOnly:!1,hasParam:!1},{name:"get",category:"other",params:[],description:"Execute get command",serialOnly:!1,hasParam:!0},{name:"set",category:"other",params:[{name:"value",type:"float"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Execute set command",serialOnly:!1,hasParam:!0},{name:"tempradio",category:"radio",params:[{name:"value",type:"int"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Apply temporary radio params (freq bw sf cr timeout_mins)",serialOnly:!1,hasParam:!0},{name:"sensor get",category:"sensor",params:[],description:"Get sensor/custom variable value",serialOnly:!1,hasParam:!0},{name:"sensor list",category:"sensor",params:[{name:"value",type:"int"}],description:"List all sensor/custom variables",serialOnly:!1,hasParam:!0},{name:"sensor set",category:"sensor",params:[],description:"Set sensor/custom variable value",serialOnly:!1,hasParam:!0},{name:"set adc.multiplier",category:"set",params:[{name:"value",type:"float"}],description:"Set ADC multiplier",serialOnly:!1,hasParam:!0},{name:"set advert.interval",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"string"}],description:"Set local advert interval (1-10080 min, 0=off)",serialOnly:!1,hasParam:!0},{name:"set af",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"int"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set airtime factor (0-9)",serialOnly:!1,hasParam:!0},{name:"set agc.reset.interval",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set AGC reset interval (seconds, rounded to 4)",serialOnly:!1,hasParam:!0},{name:"set allow.read.only",category:"set",params:[{name:"value",type:"int"}],description:"Set read-only access (on/off)",serialOnly:!1,hasParam:!0},{name:"set bridge.baud",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set bridge baud (9600-115200)",serialOnly:!1,hasParam:!0},{name:"set bridge.channel",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"string"}],description:"Set bridge channel (1-14)",serialOnly:!1,hasParam:!0},{name:"set bridge.delay",category:"set",params:[{name:"value",type:"int"}],description:"Set bridge delay (0-10000 ms)",serialOnly:!1,hasParam:!0},{name:"set bridge.enabled",category:"set",params:[{name:"value",type:"int"}],description:"Enable/disable bridge",serialOnly:!1,hasParam:!0},{name:"set bridge.secret",category:"set",params:[{name:"value",type:"string"},{name:"value",type:"float"}],description:"Set bridge encryption secret",serialOnly:!1,hasParam:!0},{name:"set bridge.source",category:"set",params:[{name:"value",type:"int"}],description:"Set bridge source (rx/tx)",serialOnly:!1,hasParam:!0},{name:"set direct.txdelay",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"int"}],description:"Set direct TX delay factor",serialOnly:!1,hasParam:!0},{name:"set flood.advert.interval",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set flood advert interval (3-48 hours, 0=off)",serialOnly:!1,hasParam:!0},{name:"set flood.max",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"float"}],description:"Set max flood hops (0-64)",serialOnly:!1,hasParam:!0},{name:"set freq",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"int"}],description:"Set frequency MHz (serial only, reboot required)",serialOnly:!0,hasParam:!0},{name:"set guest.password",category:"set",params:[{name:"value",type:"string"}],description:"Set guest password",serialOnly:!1,hasParam:!0},{name:"set int.thresh",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set interference threshold",serialOnly:!1,hasParam:!0},{name:"set lat",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"float"},{name:"value",type:"float"}],description:"Set latitude",serialOnly:!1,hasParam:!0},{name:"set lon",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"float"},{name:"value",type:"float"}],description:"Set longitude",serialOnly:!1,hasParam:!0},{name:"set multi.acks",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set multi-ack (0/1)",serialOnly:!1,hasParam:!0},{name:"set name",category:"set",params:[{name:"value",type:"string"},{name:"value",type:"int"}],description:"Set node name",serialOnly:!1,hasParam:!0},{name:"set prv.key",category:"set",params:[{name:"value",type:"string"}],description:"Set private key (hex, restart required)",serialOnly:!1,hasParam:!0},{name:"set radio",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set radio params (freq bw sf cr)",serialOnly:!1,hasParam:!0},{name:"set repeat",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set repeat/forward (on/off)",serialOnly:!1,hasParam:!0},{name:"set rxdelay",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"float"}],description:"Set RX delay base",serialOnly:!1,hasParam:!0},{name:"set tx",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"float"}],description:"Set TX power (dBm)",serialOnly:!1,hasParam:!0},{name:"set txdelay",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"int"}],description:"Set TX delay factor",serialOnly:!1,hasParam:!0},{name:"stats-core",category:"stats",params:[],description:"Show core statistics (serial only)",serialOnly:!0,hasParam:!1},{name:"stats-packets",category:"stats",params:[],description:"Show packet statistics (serial only)",serialOnly:!0,hasParam:!1},{name:"stats-radio",category:"stats",params:[],description:"Show radio statistics (serial only)",serialOnly:!0,hasParam:!1},{name:"advert",category:"system",params:[],description:"Send self advertisement",serialOnly:!1,hasParam:!1},{name:"board",category:"system",params:[],description:"Show board/manufacturer name",serialOnly:!1,hasParam:!1},{name:"clear stats",category:"system",params:[],description:"Reset statistics counters",serialOnly:!1,hasParam:!0},{name:"clock",category:"system",params:[{name:"value",type:"int"}],description:"Display current time",serialOnly:!1,hasParam:!0},{name:"clock sync",category:"system",params:[],description:"Sync clock from sender timestamp",serialOnly:!1,hasParam:!0},{name:"password",category:"system",params:[{name:"value",type:"string"}],description:"Change admin password",serialOnly:!1,hasParam:!0},{name:"reboot",category:"system",params:[],description:"Reboot the device",serialOnly:!1,hasParam:!1},{name:"start ota",category:"system",params:[{name:"value",type:"int"}],description:"Start OTA firmware update",serialOnly:!1,hasParam:!0},{name:"time",category:"system",params:[{name:"value",type:"int"}],description:"Set time to epoch seconds",serialOnly:!1,hasParam:!0},{name:"ver",category:"system",params:[],description:"Show firmware version and build date",serialOnly:!1,hasParam:!1}].filter(e=>!e.serialOnly&&!h.has(e.name)&&!f.some(a=>e.name.startsWith(a))).map(e=>({cmd:e.name,desc:e.description,params:e.hasParam?"{value}":void 0,required:e.hasParam}))],x={"set mode":["forward","monitor"],"set duty":["on","off"],"set repeat":["on","off"],"set tx":["10","14","17","20","22"],"set sf":["7","8","9","10","11","12"],"set bw":["125","250","500"],"set af":["0.5","1.0","1.5","2.0"],"set txdelay":["0.5","0.7","1.0","1.5"],"set direct.txdelay":["0.3","0.5","0.7"],"set log":["debug","info","warning"]};function b(e){switch(e){case"success":return"text-accent-success";case"error":return"text-accent-danger";case"warning":return"text-amber-400";case"info":return"text-accent-tertiary";case"value":return"text-accent-primary";case"system":return"text-text-muted";default:return"text-text-secondary"}}const w=a.memo(function({entry:e}){return"command"===e.type?t.jsxs("div",{className:"flex items-center gap-2 py-1",children:[t.jsx("span",{className:"text-text-muted font-medium select-none",children:"$"}),t.jsx("span",{className:"text-text-primary font-semibold",children:e.content})]}):"system"===e.type?t.jsx("div",{className:s("py-0.5",b(e.outputType||"system")),children:e.content}):e.content.includes("██")?t.jsx("pre",{className:s("terminal-ascii font-mono leading-none py-2 whitespace-pre",b(e.outputType||"value")),children:e.content}):t.jsx("div",{className:"ml-4 font-mono text-[13px] py-1",children:e.content.split("\n").map((a,r)=>{const s=function(e,a){if(e.startsWith("HELP_HEADER:::"))return[{text:e.slice(14),color:"text-text-primary font-bold"}];if(e.startsWith("HELP_NOTE:::"))return[{text:e.slice(12),color:"text-text-muted italic"}];const t=e.match(/^([a-z][a-z0-9.]*(?:\s+[a-z][a-z0-9.]*)?):::(.+)$/);if(t){const[,e,a]=t,r=e.split(" "),s=r[0];let n="text-accent-tertiary";"get"===s?n="text-accent-success":"set"===s&&(n="text-amber-400");const o=[{text:` ${s}`,color:`${n} font-semibold`}];r.length>1&&o.push({text:` ${r.slice(1).join(" ")}`,color:"text-accent-primary"});const i=" ".repeat(Math.max(1,22-e.length));return o.push({text:`${i}${a}`,color:"text-text-muted"}),o}if("error"===a||"warning"===a)return[{text:e,color:b(a)}];if("value"===a)return[{text:e,color:b("value")}];const r=e.match(/^([\w\s.]+):\s*(.+)$/);if(r){const[,e,a]=r;return[{text:`${e}: `,color:"text-text-muted"},{text:a,color:"text-accent-primary font-semibold"}]}return e.startsWith("OK")?[{text:e,color:b("success")}]:[{text:e,color:b(a)}]}(a,e.outputType||"default");return t.jsx("div",{className:"leading-relaxed",children:s.map((e,a)=>t.jsx("span",{className:e.color,children:e.text},a))},r)})})});function O(){const e=n(),h=g(e=>e.entries),f=g(e=>e.commandHistory),b=g(e=>e.isInitialized),{addEntry:O,updateEntry:P,addCommand:k,clearEntries:S,setInitialized:$}=g(),[_,N]=a.useState(""),[E,j]=a.useState(-1),[G,T]=a.useState(!1),[C,F]=a.useState([]),[D,W]=a.useState(0),[L,A]=a.useState(0),[I,R]=a.useState(!1),H=a.useRef(null),K=a.useRef(null),M=a.useRef(null);a.useEffect(()=>{b||(async()=>{O({type:"output",content:"██████ ██ ██ ███ ███ ██████\n██ ██ ██ ██ ████ ████ ██ \n██████ ████ ██ ████ ██ ██ \n██ ██ ██ ██ ██ ██ \n██ ██ ██ ██ ██████",outputType:"value"}),await new Promise(e=>setTimeout(e,200));const e=O({type:"system",content:"● Initializing terminal...",outputType:"system"});await new Promise(e=>setTimeout(e,400)),P(e,{content:"✓ Initializing terminal...",outputType:"success"});const a=O({type:"system",content:"● Connecting to repeater...",outputType:"system"});await new Promise(e=>setTimeout(e,600)),P(a,{content:"✓ Connected to repeater",outputType:"success"}),O({type:"system",content:"Ready. Type 'help' for commands.",outputType:"system"}),$(!0)})()},[b,O,P,$]),a.useEffect(()=>{K.current&&(K.current.scrollTop=K.current.scrollHeight)},[h]);const q=a.useCallback(()=>{var e;null==(e=H.current)||e.focus()},[]),z=a.useCallback(e=>{const a=e.trim().toLowerCase();if(!a)return T(!1),void F([]);const t=v.filter(e=>e.cmd.toLowerCase().startsWith(a));if(t.length>0)return F(t),W(0),void T(!0);if(a.includes(" ")){const e=a.lastIndexOf(" "),t=a.substring(0,e),r=a.substring(e+1),s=v.find(e=>e.cmd.toLowerCase()===t);if(s&&x[s.cmd]){const e=x[s.cmd].filter(e=>e.toLowerCase().startsWith(r)).map(e=>({cmd:`${s.cmd} ${e}`,desc:`→ ${e}`}));if(e.length>0)return F(e),W(0),void T(!0)}}T(!1),F([])},[]),X=a.useCallback(e=>{var a;const t=C[e];t&&(t.required&&t.params?(N(t.cmd+" "),z(t.cmd+" ")):(N(t.cmd),T(!1)),null==(a=H.current)||a.focus())},[C,z]),U=a.useCallback(async e=>{var a,t,r,s,n,p,y,u;const g=e.trim();if(!g)return;const h=g.toLowerCase();if(k(g),O({type:"command",content:g}),"clear"===h)return void S();if("help"===h){const e=v.map(e=>`${e.cmd}:::${e.desc}`).join("\n");return void O({type:"output",content:`HELP_HEADER:::Available commands\n${e}\nHELP_NOTE:::Some MeshCore commands not available via HTTP.`,outputType:"default"})}const f=O({type:"output",content:"processing...",outputType:"system"});try{const e=await o();let v="",x="info";const b=e=>{const a=Math.floor(e/86400),t=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return a>0?`${a}d ${t}h ${r}m`:t>0?`${t}h ${r}m`:`${r}m`};if("status"===h){v=`Mode: ${(null==(t=null==(a=e.config)?void 0:a.repeater)?void 0:t.mode)||"unknown"} | Neighbors: ${Object.keys(e.neighbors||{}).length} | Uptime: ${b(e.uptime_seconds||0)}`}else if("uptime"===h)v=b(e.uptime_seconds||0),x="value";else if("packets"===h)v=`rx: ${e.rx_count??0}\ntx: ${e.tx_count??0}\nfwd: ${e.forwarded_count??0}\ndrop: ${e.dropped_count??0}`;else if("neighbors"===h){const a=e.neighbors||{},t=Object.entries(a);if(0===t.length)v="No neighbors discovered yet.",x="warning";else{const e=t.map(([e,a])=>{const t=a.name||a.node_name||"Unknown";return` ${e.slice(0,8)} ${t}`});v=`Neighbors (${t.length}):\n${e.join("\n")}`}}else if("board"===h)v="pyMC_Repeater (Linux/RPi)",x="value";else if(h.startsWith("get ")){const a=h.slice(4).trim(),t=null==(r=e.config)?void 0:r.delays,o=null==(s=e.config)?void 0:s.radio,i=null==(n=e.config)?void 0:n.repeater,l=null==(p=e.config)?void 0:p.duty_cycle;switch(a){case"name":v=(null==(y=e.config)?void 0:y.node_name)||"Unknown";break;case"role":v="repeater";break;case"lat":v=null!=(null==i?void 0:i.latitude)?String(i.latitude):"not set";break;case"lon":v=null!=(null==i?void 0:i.longitude)?String(i.longitude):"not set";break;case"freq":v=(null==o?void 0:o.frequency)?(o.frequency/1e6).toFixed(3):"?";break;case"tx":v=String((null==o?void 0:o.tx_power)??"?");break;case"bw":v=(null==o?void 0:o.bandwidth)?String(o.bandwidth/1e3):"?";break;case"sf":v=String((null==o?void 0:o.spreading_factor)??"?");break;case"cr":v=String((null==o?void 0:o.coding_rate)??"?");break;case"radio":v=o?`freq: ${(o.frequency/1e6).toFixed(3)} MHz\nbw: ${o.bandwidth/1e3} kHz\nsf: ${o.spreading_factor}\ncr: 4/${o.coding_rate}`:"?";break;case"af":case"txdelay":v=String((null==t?void 0:t.tx_delay_factor)??"1.0");break;case"direct.txdelay":v=String((null==t?void 0:t.direct_tx_delay_factor)??"0.5");break;case"mode":v=(null==i?void 0:i.mode)||"forward";break;case"repeat":v="forward"===(null==i?void 0:i.mode)?"on":"off";break;case"flood.max":v=String((null==i?void 0:i.max_flood_hops)??"3");break;case"flood.advert.interval":v=null!=(null==i?void 0:i.send_advert_interval_hours)?`${i.send_advert_interval_hours}h`:"?";break;case"advert.interval":v=null!=(null==i?void 0:i.advert_interval_minutes)?`${i.advert_interval_minutes}m`:"120m";break;case"rxdelay":v=String((null==t?void 0:t.rx_delay_base)??"0.0");break;case"duty":case"duty.enabled":v=(null==l?void 0:l.enforcement_enabled)?"on":"off";break;case"duty.max":v=null!=(null==l?void 0:l.max_airtime_percent)?`${l.max_airtime_percent}%`:"?";break;case"public.key":v=e.public_key||"not available";break;case"prv.key":v="Private key not available via stats API.\nRun: sudo ./manage.sh upgrade to apply PATCH 6",x="warning";break;case"guest.password":case"allow.read.only":v="Security settings not exposed via stats API.\nCheck /etc/pymc_repeater/config.yaml",x="warning";break;default:v=`Unknown parameter: ${a}\nAvailable: name, role, lat, lon, freq, tx, bw, sf, cr, radio, af, txdelay, direct.txdelay, rxdelay, mode, repeat, flood.max, advert.interval, duty, public.key`,x="error"}"error"!==x&&(x="value")}else if("advert"===h){const e=await i();v=e.success?"OK - Advert sent":`Error: ${e.error||"Failed"}`,x=e.success?"success":"error"}else if(h.startsWith("set mode ")){const e=h.split(" ")[2];if("forward"!==e&&"monitor"!==e)v='Error: Mode must be "forward" or "monitor"',x="error";else{const a=await l(e);v=a.success?`OK - Mode set to ${e}`:"Error: Failed",x=a.success?"success":"error"}}else if(h.startsWith("set duty ")){const e=h.split(" ")[2],a="on"===e||"1"===e,t=await c(a);v=t.success?"OK - Duty cycle "+(a?"enabled":"disabled"):"Error: Failed",x=t.success?"success":"error"}else if(h.startsWith("set tx ")){const e=parseInt(h.split(" ")[2]);if(isNaN(e)||e<2||e>22)v="Error: TX power must be 2-22 dBm (SX1262 chip max)",x="error";else{const a=await m({tx_power:e});v=a.success?`OK - TX power set to ${e}dBm`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set af ")||h.startsWith("set txdelay ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<0||e>5)v="Error: TX delay factor must be 0.0-5.0",x="error";else{const a=await m({tx_delay_factor:e});v=a.success?`OK - TX delay set to ${e}`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set direct.txdelay ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<0||e>5)v="Error: Direct TX delay must be 0.0-5.0",x="error";else{const a=await m({direct_tx_delay_factor:e});v=a.success?`OK - Direct TX delay set to ${e}`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set log ")){const e=null==(u=h.split(" ")[2])?void 0:u.toUpperCase();if(["DEBUG","INFO","WARNING","ERROR"].includes(e)){const a=await d(e);v=a.success?`OK - Log level set to ${e}`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}else v="Error: Level must be debug, info, warning, or error",x="error"}else if(h.startsWith("set rxdelay ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<0)v="Error: RX delay must be >= 0",x="error";else{const a=await m({rx_delay_base:e});v=a.success?`OK - RX delay base set to ${e}s`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set name ")){const e=g.substring(9).trim();if(e){const a=await m({node_name:e});v=a.success?`OK - Node name set to "${e}"`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}else v="Error: Node name cannot be empty",x="error"}else if(h.startsWith("set lat ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<-90||e>90)v="Error: Latitude must be -90 to 90",x="error";else{const a=await m({latitude:e});v=a.success?`OK - Latitude set to ${e}°`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set lon ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<-180||e>180)v="Error: Longitude must be -180 to 180",x="error";else{const a=await m({longitude:e});v=a.success?`OK - Longitude set to ${e}°`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set flood.max ")){const e=parseInt(h.split(" ")[2]);if(isNaN(e)||e<0||e>64)v="Error: Max flood hops must be 0-64",x="error";else{const a=await m({max_flood_hops:e});v=a.success?`OK - Max flood hops set to ${e}`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set flood.advert.interval ")){const e=parseInt(h.split(" ")[2]);if(isNaN(e)||0!==e&&(e<3||e>48))v="Error: Flood advert interval must be 0 (off) or 3-48 hours",x="error";else{const a=await m({flood_advert_interval_hours:e});v=a.success?0===e?"OK - Flood adverts disabled":`OK - Flood advert interval set to ${e}h`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set advert.interval ")){const e=parseInt(h.split(" ")[2]);if(isNaN(e)||0!==e&&(e<1||e>10080))v="Error: Advert interval must be 0 (off) or 1-10080 minutes",x="error";else{const a=await m({advert_interval_minutes:e});v=a.success?0===e?"OK - Local adverts disabled":`OK - Local advert interval set to ${e}m`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else v=`Unknown command: ${g}\nType 'help' for available commands.`,x="error";P(f,{content:v,outputType:x})}catch(x){P(f,{content:`Error: ${x instanceof Error?x.message:"Command failed"}`,outputType:"error"})}},[O,k,P,S]),B=a.useCallback(e=>{var a,t,r,s,n,o;if(G&&C.length>0){if("ArrowDown"===e.key){e.preventDefault();const s=Math.min(D+1,C.length-1);return W(s),void(null==(r=null==(t=null==(a=M.current)?void 0:a.children[0])?void 0:t.children[s])||r.scrollIntoView({block:"nearest"}))}if("ArrowUp"===e.key){e.preventDefault();const a=Math.max(D-1,0);return W(a),void(null==(o=null==(n=null==(s=M.current)?void 0:s.children[0])?void 0:n.children[a])||o.scrollIntoView({block:"nearest"}))}if("Tab"===e.key)return e.preventDefault(),void X(D);if("Escape"===e.key)return e.preventDefault(),void T(!1)}if("Enter"===e.key){e.preventDefault();const a=_;return N(""),j(-1),T(!1),void U(a)}if("ArrowUp"!==e.key||G)if("ArrowDown"!==e.key||G);else if(e.preventDefault(),E>0){const e=E-1;j(e),N(f[f.length-1-e]||"")}else 0===E&&(j(-1),N(""));else if(e.preventDefault(),f.length>0&&E{N(e.target.value),A(e.target.selectionStart||e.target.value.length),z(e.target.value)},[z]),J=a.useCallback(e=>{const a=e.target;A(a.selectionStart||0)},[]);return t.jsxs(p,{children:[t.jsx(y,{title:"Terminal",icon:t.jsx(r,{})}),t.jsxs(u,{noPadding:!0,className:"terminal-card overflow-hidden flex flex-col isolate",onClick:q,children:[t.jsx("div",{ref:K,className:"flex-1 overflow-y-auto font-mono text-sm bg-black/40 p-3 sm:p-4 md:p-5",children:h.map(e=>t.jsx(w,{entry:e},e.id))}),t.jsxs("div",{className:"relative border-t border-white/10 bg-black/50",children:[t.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 px-3 sm:px-4 py-2 sm:py-3",children:[t.jsx("span",{className:"text-text-muted font-mono font-bold select-none",children:"$"}),t.jsxs("div",{className:"flex-1 relative font-mono text-sm",children:[t.jsx("input",{ref:H,type:"text",value:_,onChange:V,onKeyDown:B,onSelect:J,onFocus:()=>R(!0),onBlur:()=>R(!1),disabled:!b,className:"absolute inset-0 w-full bg-transparent text-transparent outline-none disabled:opacity-50 selection:bg-transparent",style:{caretColor:"transparent"},autoFocus:!0,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:!1}),t.jsx("div",{className:"relative pointer-events-none select-none","aria-hidden":!0,children:b?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"text-text-primary",children:_.slice(0,L)}),t.jsx("span",{className:s("inline-block w-[0.6em] h-[1.2em] align-text-bottom",I?"bg-accent-primary":"bg-text-muted/30"),style:{marginBottom:"-0.1em"},children:t.jsx("span",{className:"text-bg-primary",children:_[L]||""})}),t.jsx("span",{className:"text-text-primary",children:_.slice(L+1)})]}):t.jsx("span",{className:"text-text-muted",children:"Connecting..."})})]})]}),t.jsxs("div",{className:"px-3 sm:px-4 py-1 border-t border-white/5 bg-black/30 flex justify-between text-[10px] text-text-muted",children:[t.jsx("span",{className:"hidden sm:inline",children:"↑↓ History"}),t.jsx("span",{className:"sm:hidden",children:"Terminal"}),(null==e?void 0:e.version)&&t.jsxs("span",{children:["pyMC v",e.version]})]})]}),G&&C.length>0&&t.jsxs("div",{ref:M,className:"absolute left-2 right-2 bottom-[72px] rounded-xl shadow-2xl overflow-hidden z-50 border border-white/20 bg-black/80 backdrop-blur-xl",children:[t.jsx("div",{className:"max-h-64 overflow-y-auto",children:C.map((e,a)=>t.jsxs("div",{onClick:()=>X(a),className:s("px-4 py-2.5 cursor-pointer border-b border-white/10 last:border-b-0 transition-colors",a===D?"bg-accent-primary/25":"hover:bg-white/10"),children:[t.jsx("span",{className:s("font-mono text-sm",a===D?"text-accent-primary":"text-text-primary"),children:e.cmd}),t.jsx("span",{className:"text-xs text-text-muted ml-4",children:e.desc})]},e.cmd))}),t.jsx("div",{className:"px-3 py-1.5 border-t border-white/10 text-[10px] text-text-muted text-right bg-white/5",children:"Tab to select"})]})]})]})}export{O as default}; +import{c as e,r as a,j as t,S as r}from"./vendor-react-CWPBVwgk.js";import{c as s}from"./recharts-cqZ_RWsW.js";import{d as n,a7 as o,a8 as i,a9 as l,aa as c,ab as m,a5 as d}from"./index-BlYVqXhs.js";import{P as p,b as y,a as u}from"./PageLayout-Kh569_kh.js";import"./vendor-core-XI_xDZ-M.js";import"./deckgl-DTsmDcfs.js";const g=e(e=>({entries:[],commandHistory:[],isInitialized:!1,addEntry:a=>{const t="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const a=16*Math.random()|0;return("x"===e?a:3&a|8).toString(16)}),r={...a,id:t,timestamp:Date.now()};return e(e=>({entries:[...e.entries,r]})),t},updateEntry:(a,t)=>{e(e=>({entries:e.entries.map(e=>e.id===a?{...e,...t}:e)}))},addCommand:a=>{e(e=>({commandHistory:[...e.commandHistory,a]}))},clearEntries:()=>{e({entries:[],commandHistory:[]})},setInitialized:a=>{e({isInitialized:a})}})),h=new Set(["start ota","erase","reboot"]),f=["gps","sensor"],v=[{cmd:"help",desc:"Show available commands"},{cmd:"clear",desc:"Clear terminal screen"},{cmd:"status",desc:"Get repeater status summary"},{cmd:"uptime",desc:"Show system uptime"},{cmd:"packets",desc:"Show packet statistics"},{cmd:"board",desc:"Show board/platform info"},...[{name:"get adc.multiplier",category:"get",params:[],description:"Get ADC multiplier for battery",serialOnly:!1,hasParam:!1},{name:"get advert.interval",category:"get",params:[],description:"Get local advert interval (minutes)",serialOnly:!1,hasParam:!1},{name:"get af",category:"get",params:[],description:"Get airtime factor",serialOnly:!1,hasParam:!1},{name:"get agc.reset.interval",category:"get",params:[],description:"Get AGC reset interval (seconds)",serialOnly:!1,hasParam:!1},{name:"get allow.read.only",category:"get",params:[],description:"Get read-only access setting",serialOnly:!1,hasParam:!1},{name:"get bridge.baud",category:"get",params:[],description:"Get bridge baud rate",serialOnly:!1,hasParam:!1},{name:"get bridge.channel",category:"get",params:[],description:"Get bridge channel (ESP-NOW)",serialOnly:!1,hasParam:!1},{name:"get bridge.delay",category:"get",params:[],description:"Get bridge delay (ms)",serialOnly:!1,hasParam:!1},{name:"get bridge.enabled",category:"get",params:[],description:"Get bridge enabled status",serialOnly:!1,hasParam:!1},{name:"get bridge.secret",category:"get",params:[],description:"Get bridge encryption secret",serialOnly:!1,hasParam:!1},{name:"get bridge.source",category:"get",params:[],description:"Get bridge packet source",serialOnly:!1,hasParam:!1},{name:"get bridge.type",category:"get",params:[],description:"Get bridge type (rs232/espnow/none)",serialOnly:!1,hasParam:!1},{name:"get direct.txdelay",category:"get",params:[],description:"Get direct TX delay factor",serialOnly:!1,hasParam:!1},{name:"get flood.advert.interval",category:"get",params:[],description:"Get flood advert interval (hours)",serialOnly:!1,hasParam:!1},{name:"get flood.max",category:"get",params:[],description:"Get max flood hops",serialOnly:!1,hasParam:!1},{name:"get freq",category:"get",params:[],description:"Get frequency (MHz)",serialOnly:!1,hasParam:!1},{name:"get guest.password",category:"get",params:[],description:"Get guest password",serialOnly:!1,hasParam:!1},{name:"get int.thresh",category:"get",params:[],description:"Get interference threshold",serialOnly:!1,hasParam:!1},{name:"get lat",category:"get",params:[],description:"Get latitude",serialOnly:!1,hasParam:!1},{name:"get lon",category:"get",params:[],description:"Get longitude",serialOnly:!1,hasParam:!1},{name:"get multi.acks",category:"get",params:[],description:"Get multi-ack setting",serialOnly:!1,hasParam:!1},{name:"get name",category:"get",params:[],description:"Get node name",serialOnly:!1,hasParam:!1},{name:"get prv.key",category:"get",params:[],description:"Get private key (hex)",serialOnly:!1,hasParam:!1},{name:"get public.key",category:"get",params:[],description:"Get public key (hex)",serialOnly:!1,hasParam:!1},{name:"get radio",category:"get",params:[],description:"Get radio params (freq,bw,sf,cr)",serialOnly:!1,hasParam:!1},{name:"get repeat",category:"get",params:[],description:"Get repeat/forward status (on/off)",serialOnly:!1,hasParam:!1},{name:"get role",category:"get",params:[],description:"Get device role",serialOnly:!1,hasParam:!1},{name:"get rxdelay",category:"get",params:[],description:"Get RX delay base",serialOnly:!1,hasParam:!1},{name:"get tx",category:"get",params:[],description:"Get TX power (dBm)",serialOnly:!1,hasParam:!1},{name:"get txdelay",category:"get",params:[],description:"Get TX delay factor",serialOnly:!1,hasParam:!1},{name:"gps",category:"gps",params:[],description:"Show GPS status",serialOnly:!1,hasParam:!1},{name:"gps advert",category:"gps",params:[],description:"Get/set GPS advert location policy",serialOnly:!1,hasParam:!0},{name:"gps off",category:"gps",params:[],description:"Disable GPS",serialOnly:!1,hasParam:!0},{name:"gps on",category:"gps",params:[],description:"Enable GPS",serialOnly:!1,hasParam:!0},{name:"gps setloc",category:"gps",params:[],description:"Set node location from GPS",serialOnly:!1,hasParam:!0},{name:"gps sync",category:"gps",params:[],description:"Sync time from GPS",serialOnly:!1,hasParam:!0},{name:"log",category:"logging",params:[],description:"Dump log file (serial only)",serialOnly:!0,hasParam:!1},{name:"log erase",category:"logging",params:[],description:"Erase log file",serialOnly:!1,hasParam:!0},{name:"log start",category:"logging",params:[],description:"Start packet logging",serialOnly:!1,hasParam:!0},{name:"log stop",category:"logging",params:[],description:"Stop packet logging",serialOnly:!1,hasParam:!0},{name:"neighbor.remove",category:"neighbor",params:[],description:"Remove neighbor by pubkey",serialOnly:!1,hasParam:!0},{name:"neighbors",category:"neighbor",params:[],description:"List neighbors",serialOnly:!1,hasParam:!1},{name:"get",category:"other",params:[],description:"Execute get command",serialOnly:!1,hasParam:!0},{name:"set",category:"other",params:[{name:"value",type:"float"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Execute set command",serialOnly:!1,hasParam:!0},{name:"tempradio",category:"radio",params:[{name:"value",type:"int"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Apply temporary radio params (freq bw sf cr timeout_mins)",serialOnly:!1,hasParam:!0},{name:"sensor get",category:"sensor",params:[],description:"Get sensor/custom variable value",serialOnly:!1,hasParam:!0},{name:"sensor list",category:"sensor",params:[{name:"value",type:"int"}],description:"List all sensor/custom variables",serialOnly:!1,hasParam:!0},{name:"sensor set",category:"sensor",params:[],description:"Set sensor/custom variable value",serialOnly:!1,hasParam:!0},{name:"set adc.multiplier",category:"set",params:[{name:"value",type:"float"}],description:"Set ADC multiplier",serialOnly:!1,hasParam:!0},{name:"set advert.interval",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"string"}],description:"Set local advert interval (1-10080 min, 0=off)",serialOnly:!1,hasParam:!0},{name:"set af",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"int"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set airtime factor (0-9)",serialOnly:!1,hasParam:!0},{name:"set agc.reset.interval",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set AGC reset interval (seconds, rounded to 4)",serialOnly:!1,hasParam:!0},{name:"set allow.read.only",category:"set",params:[{name:"value",type:"int"}],description:"Set read-only access (on/off)",serialOnly:!1,hasParam:!0},{name:"set bridge.baud",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set bridge baud (9600-115200)",serialOnly:!1,hasParam:!0},{name:"set bridge.channel",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"string"}],description:"Set bridge channel (1-14)",serialOnly:!1,hasParam:!0},{name:"set bridge.delay",category:"set",params:[{name:"value",type:"int"}],description:"Set bridge delay (0-10000 ms)",serialOnly:!1,hasParam:!0},{name:"set bridge.enabled",category:"set",params:[{name:"value",type:"int"}],description:"Enable/disable bridge",serialOnly:!1,hasParam:!0},{name:"set bridge.secret",category:"set",params:[{name:"value",type:"string"},{name:"value",type:"float"}],description:"Set bridge encryption secret",serialOnly:!1,hasParam:!0},{name:"set bridge.source",category:"set",params:[{name:"value",type:"int"}],description:"Set bridge source (rx/tx)",serialOnly:!1,hasParam:!0},{name:"set direct.txdelay",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"int"}],description:"Set direct TX delay factor",serialOnly:!1,hasParam:!0},{name:"set flood.advert.interval",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set flood advert interval (3-48 hours, 0=off)",serialOnly:!1,hasParam:!0},{name:"set flood.max",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"float"}],description:"Set max flood hops (0-64)",serialOnly:!1,hasParam:!0},{name:"set freq",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"int"}],description:"Set frequency MHz (serial only, reboot required)",serialOnly:!0,hasParam:!0},{name:"set guest.password",category:"set",params:[{name:"value",type:"string"}],description:"Set guest password",serialOnly:!1,hasParam:!0},{name:"set int.thresh",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set interference threshold",serialOnly:!1,hasParam:!0},{name:"set lat",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"float"},{name:"value",type:"float"}],description:"Set latitude",serialOnly:!1,hasParam:!0},{name:"set lon",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"float"},{name:"value",type:"float"}],description:"Set longitude",serialOnly:!1,hasParam:!0},{name:"set multi.acks",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set multi-ack (0/1)",serialOnly:!1,hasParam:!0},{name:"set name",category:"set",params:[{name:"value",type:"string"},{name:"value",type:"int"}],description:"Set node name",serialOnly:!1,hasParam:!0},{name:"set prv.key",category:"set",params:[{name:"value",type:"string"}],description:"Set private key (hex, restart required)",serialOnly:!1,hasParam:!0},{name:"set radio",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set radio params (freq bw sf cr)",serialOnly:!1,hasParam:!0},{name:"set repeat",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"int"}],description:"Set repeat/forward (on/off)",serialOnly:!1,hasParam:!0},{name:"set rxdelay",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"float"}],description:"Set RX delay base",serialOnly:!1,hasParam:!0},{name:"set tx",category:"set",params:[{name:"value",type:"int"},{name:"value",type:"float"}],description:"Set TX power (dBm)",serialOnly:!1,hasParam:!0},{name:"set txdelay",category:"set",params:[{name:"value",type:"float"},{name:"value",type:"int"}],description:"Set TX delay factor",serialOnly:!1,hasParam:!0},{name:"stats-core",category:"stats",params:[],description:"Show core statistics (serial only)",serialOnly:!0,hasParam:!1},{name:"stats-packets",category:"stats",params:[],description:"Show packet statistics (serial only)",serialOnly:!0,hasParam:!1},{name:"stats-radio",category:"stats",params:[],description:"Show radio statistics (serial only)",serialOnly:!0,hasParam:!1},{name:"advert",category:"system",params:[],description:"Send self advertisement",serialOnly:!1,hasParam:!1},{name:"board",category:"system",params:[],description:"Show board/manufacturer name",serialOnly:!1,hasParam:!1},{name:"clear stats",category:"system",params:[],description:"Reset statistics counters",serialOnly:!1,hasParam:!0},{name:"clock",category:"system",params:[{name:"value",type:"int"}],description:"Display current time",serialOnly:!1,hasParam:!0},{name:"clock sync",category:"system",params:[],description:"Sync clock from sender timestamp",serialOnly:!1,hasParam:!0},{name:"password",category:"system",params:[{name:"value",type:"string"}],description:"Change admin password",serialOnly:!1,hasParam:!0},{name:"reboot",category:"system",params:[],description:"Reboot the device",serialOnly:!1,hasParam:!1},{name:"start ota",category:"system",params:[{name:"value",type:"int"}],description:"Start OTA firmware update",serialOnly:!1,hasParam:!0},{name:"time",category:"system",params:[{name:"value",type:"int"}],description:"Set time to epoch seconds",serialOnly:!1,hasParam:!0},{name:"ver",category:"system",params:[],description:"Show firmware version and build date",serialOnly:!1,hasParam:!1}].filter(e=>!e.serialOnly&&!h.has(e.name)&&!f.some(a=>e.name.startsWith(a))).map(e=>({cmd:e.name,desc:e.description,params:e.hasParam?"{value}":void 0,required:e.hasParam}))],x={"set mode":["forward","monitor"],"set duty":["on","off"],"set repeat":["on","off"],"set tx":["10","14","17","20","22"],"set sf":["7","8","9","10","11","12"],"set bw":["125","250","500"],"set af":["0.5","1.0","1.5","2.0"],"set txdelay":["0.5","0.7","1.0","1.5"],"set direct.txdelay":["0.3","0.5","0.7"],"set log":["debug","info","warning"]};function b(e){switch(e){case"success":return"text-accent-success";case"error":return"text-accent-danger";case"warning":return"text-amber-400";case"info":return"text-accent-tertiary";case"value":return"text-accent-primary";case"system":return"text-text-muted";default:return"text-text-secondary"}}const w=a.memo(function({entry:e}){return"command"===e.type?t.jsxs("div",{className:"flex items-center gap-2 py-1",children:[t.jsx("span",{className:"text-text-muted font-medium select-none",children:"$"}),t.jsx("span",{className:"text-text-primary font-semibold",children:e.content})]}):"system"===e.type?t.jsx("div",{className:s("py-0.5",b(e.outputType||"system")),children:e.content}):e.content.includes("██")?t.jsx("pre",{className:s("terminal-ascii font-mono leading-none py-2 whitespace-pre",b(e.outputType||"value")),children:e.content}):t.jsx("div",{className:"ml-4 font-mono text-[13px] py-1",children:e.content.split("\n").map((a,r)=>{const s=function(e,a){if(e.startsWith("HELP_HEADER:::"))return[{text:e.slice(14),color:"text-text-primary font-bold"}];if(e.startsWith("HELP_NOTE:::"))return[{text:e.slice(12),color:"text-text-muted italic"}];const t=e.match(/^([a-z][a-z0-9.]*(?:\s+[a-z][a-z0-9.]*)?):::(.+)$/);if(t){const[,e,a]=t,r=e.split(" "),s=r[0];let n="text-accent-tertiary";"get"===s?n="text-accent-success":"set"===s&&(n="text-amber-400");const o=[{text:` ${s}`,color:`${n} font-semibold`}];r.length>1&&o.push({text:` ${r.slice(1).join(" ")}`,color:"text-accent-primary"});const i=" ".repeat(Math.max(1,22-e.length));return o.push({text:`${i}${a}`,color:"text-text-muted"}),o}if("error"===a||"warning"===a)return[{text:e,color:b(a)}];if("value"===a)return[{text:e,color:b("value")}];const r=e.match(/^([\w\s.]+):\s*(.+)$/);if(r){const[,e,a]=r;return[{text:`${e}: `,color:"text-text-muted"},{text:a,color:"text-accent-primary font-semibold"}]}return e.startsWith("OK")?[{text:e,color:b("success")}]:[{text:e,color:b(a)}]}(a,e.outputType||"default");return t.jsx("div",{className:"leading-relaxed",children:s.map((e,a)=>t.jsx("span",{className:e.color,children:e.text},a))},r)})})});function O(){const e=n(),h=g(e=>e.entries),f=g(e=>e.commandHistory),b=g(e=>e.isInitialized),{addEntry:O,updateEntry:P,addCommand:k,clearEntries:S,setInitialized:$}=g(),[_,N]=a.useState(""),[E,j]=a.useState(-1),[G,T]=a.useState(!1),[C,F]=a.useState([]),[D,W]=a.useState(0),[L,A]=a.useState(0),[I,R]=a.useState(!1),H=a.useRef(null),K=a.useRef(null),M=a.useRef(null);a.useEffect(()=>{b||(async()=>{O({type:"output",content:"██████ ██ ██ ███ ███ ██████\n██ ██ ██ ██ ████ ████ ██ \n██████ ████ ██ ████ ██ ██ \n██ ██ ██ ██ ██ ██ \n██ ██ ██ ██ ██████",outputType:"value"}),await new Promise(e=>setTimeout(e,200));const e=O({type:"system",content:"● Initializing terminal...",outputType:"system"});await new Promise(e=>setTimeout(e,400)),P(e,{content:"✓ Initializing terminal...",outputType:"success"});const a=O({type:"system",content:"● Connecting to repeater...",outputType:"system"});await new Promise(e=>setTimeout(e,600)),P(a,{content:"✓ Connected to repeater",outputType:"success"}),O({type:"system",content:"Ready. Type 'help' for commands.",outputType:"system"}),$(!0)})()},[b,O,P,$]),a.useEffect(()=>{K.current&&(K.current.scrollTop=K.current.scrollHeight)},[h]);const q=a.useCallback(()=>{var e;null==(e=H.current)||e.focus()},[]),z=a.useCallback(e=>{const a=e.trim().toLowerCase();if(!a)return T(!1),void F([]);const t=v.filter(e=>e.cmd.toLowerCase().startsWith(a));if(t.length>0)return F(t),W(0),void T(!0);if(a.includes(" ")){const e=a.lastIndexOf(" "),t=a.substring(0,e),r=a.substring(e+1),s=v.find(e=>e.cmd.toLowerCase()===t);if(s&&x[s.cmd]){const e=x[s.cmd].filter(e=>e.toLowerCase().startsWith(r)).map(e=>({cmd:`${s.cmd} ${e}`,desc:`→ ${e}`}));if(e.length>0)return F(e),W(0),void T(!0)}}T(!1),F([])},[]),X=a.useCallback(e=>{var a;const t=C[e];t&&(t.required&&t.params?(N(t.cmd+" "),z(t.cmd+" ")):(N(t.cmd),T(!1)),null==(a=H.current)||a.focus())},[C,z]),U=a.useCallback(async e=>{var a,t,r,s,n,p,y,u;const g=e.trim();if(!g)return;const h=g.toLowerCase();if(k(g),O({type:"command",content:g}),"clear"===h)return void S();if("help"===h){const e=v.map(e=>`${e.cmd}:::${e.desc}`).join("\n");return void O({type:"output",content:`HELP_HEADER:::Available commands\n${e}\nHELP_NOTE:::Some MeshCore commands not available via HTTP.`,outputType:"default"})}const f=O({type:"output",content:"processing...",outputType:"system"});try{const e=await o();let v="",x="info";const b=e=>{const a=Math.floor(e/86400),t=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return a>0?`${a}d ${t}h ${r}m`:t>0?`${t}h ${r}m`:`${r}m`};if("status"===h){v=`Mode: ${(null==(t=null==(a=e.config)?void 0:a.repeater)?void 0:t.mode)||"unknown"} | Neighbors: ${Object.keys(e.neighbors||{}).length} | Uptime: ${b(e.uptime_seconds||0)}`}else if("uptime"===h)v=b(e.uptime_seconds||0),x="value";else if("packets"===h)v=`rx: ${e.rx_count??0}\ntx: ${e.tx_count??0}\nfwd: ${e.forwarded_count??0}\ndrop: ${e.dropped_count??0}`;else if("neighbors"===h){const a=e.neighbors||{},t=Object.entries(a);if(0===t.length)v="No neighbors discovered yet.",x="warning";else{const e=t.map(([e,a])=>{const t=a.name||a.node_name||"Unknown";return` ${e.slice(0,8)} ${t}`});v=`Neighbors (${t.length}):\n${e.join("\n")}`}}else if("board"===h)v="pyMC_Repeater (Linux/RPi)",x="value";else if(h.startsWith("get ")){const a=h.slice(4).trim(),t=null==(r=e.config)?void 0:r.delays,o=null==(s=e.config)?void 0:s.radio,i=null==(n=e.config)?void 0:n.repeater,l=null==(p=e.config)?void 0:p.duty_cycle;switch(a){case"name":v=(null==(y=e.config)?void 0:y.node_name)||"Unknown";break;case"role":v="repeater";break;case"lat":v=null!=(null==i?void 0:i.latitude)?String(i.latitude):"not set";break;case"lon":v=null!=(null==i?void 0:i.longitude)?String(i.longitude):"not set";break;case"freq":v=(null==o?void 0:o.frequency)?(o.frequency/1e6).toFixed(3):"?";break;case"tx":v=String((null==o?void 0:o.tx_power)??"?");break;case"bw":v=(null==o?void 0:o.bandwidth)?String(o.bandwidth/1e3):"?";break;case"sf":v=String((null==o?void 0:o.spreading_factor)??"?");break;case"cr":v=String((null==o?void 0:o.coding_rate)??"?");break;case"radio":v=o?`freq: ${(o.frequency/1e6).toFixed(3)} MHz\nbw: ${o.bandwidth/1e3} kHz\nsf: ${o.spreading_factor}\ncr: 4/${o.coding_rate}`:"?";break;case"af":case"txdelay":v=String((null==t?void 0:t.tx_delay_factor)??"1.0");break;case"direct.txdelay":v=String((null==t?void 0:t.direct_tx_delay_factor)??"0.5");break;case"mode":v=(null==i?void 0:i.mode)||"forward";break;case"repeat":v="forward"===(null==i?void 0:i.mode)?"on":"off";break;case"flood.max":v=String((null==i?void 0:i.max_flood_hops)??"3");break;case"flood.advert.interval":v=null!=(null==i?void 0:i.send_advert_interval_hours)?`${i.send_advert_interval_hours}h`:"?";break;case"advert.interval":v=null!=(null==i?void 0:i.advert_interval_minutes)?`${i.advert_interval_minutes}m`:"120m";break;case"rxdelay":v=String((null==t?void 0:t.rx_delay_base)??"0.0");break;case"duty":case"duty.enabled":v=(null==l?void 0:l.enforcement_enabled)?"on":"off";break;case"duty.max":v=null!=(null==l?void 0:l.max_airtime_percent)?`${l.max_airtime_percent}%`:"?";break;case"public.key":v=e.public_key||"not available";break;case"prv.key":v="Private key not available via stats API.\nRun: sudo ./manage.sh upgrade to apply PATCH 6",x="warning";break;case"guest.password":case"allow.read.only":v="Security settings not exposed via stats API.\nCheck /etc/pymc_repeater/config.yaml",x="warning";break;default:v=`Unknown parameter: ${a}\nAvailable: name, role, lat, lon, freq, tx, bw, sf, cr, radio, af, txdelay, direct.txdelay, rxdelay, mode, repeat, flood.max, advert.interval, duty, public.key`,x="error"}"error"!==x&&(x="value")}else if("advert"===h){const e=await i();v=e.success?"OK - Advert sent":`Error: ${e.error||"Failed"}`,x=e.success?"success":"error"}else if(h.startsWith("set mode ")){const e=h.split(" ")[2];if("forward"!==e&&"monitor"!==e)v='Error: Mode must be "forward" or "monitor"',x="error";else{const a=await l(e);v=a.success?`OK - Mode set to ${e}`:"Error: Failed",x=a.success?"success":"error"}}else if(h.startsWith("set duty ")){const e=h.split(" ")[2],a="on"===e||"1"===e,t=await c(a);v=t.success?"OK - Duty cycle "+(a?"enabled":"disabled"):"Error: Failed",x=t.success?"success":"error"}else if(h.startsWith("set tx ")){const e=parseInt(h.split(" ")[2]);if(isNaN(e)||e<2||e>22)v="Error: TX power must be 2-22 dBm (SX1262 chip max)",x="error";else{const a=await m({tx_power:e});v=a.success?`OK - TX power set to ${e}dBm`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set af ")||h.startsWith("set txdelay ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<0||e>5)v="Error: TX delay factor must be 0.0-5.0",x="error";else{const a=await m({tx_delay_factor:e});v=a.success?`OK - TX delay set to ${e}`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set direct.txdelay ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<0||e>5)v="Error: Direct TX delay must be 0.0-5.0",x="error";else{const a=await m({direct_tx_delay_factor:e});v=a.success?`OK - Direct TX delay set to ${e}`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set log ")){const e=null==(u=h.split(" ")[2])?void 0:u.toUpperCase();if(["DEBUG","INFO","WARNING","ERROR"].includes(e)){const a=await d(e);v=a.success?`OK - Log level set to ${e}`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}else v="Error: Level must be debug, info, warning, or error",x="error"}else if(h.startsWith("set rxdelay ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<0)v="Error: RX delay must be >= 0",x="error";else{const a=await m({rx_delay_base:e});v=a.success?`OK - RX delay base set to ${e}s`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set name ")){const e=g.substring(9).trim();if(e){const a=await m({node_name:e});v=a.success?`OK - Node name set to "${e}"`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}else v="Error: Node name cannot be empty",x="error"}else if(h.startsWith("set lat ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<-90||e>90)v="Error: Latitude must be -90 to 90",x="error";else{const a=await m({latitude:e});v=a.success?`OK - Latitude set to ${e}°`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set lon ")){const e=parseFloat(h.split(" ")[2]);if(isNaN(e)||e<-180||e>180)v="Error: Longitude must be -180 to 180",x="error";else{const a=await m({longitude:e});v=a.success?`OK - Longitude set to ${e}°`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set flood.max ")){const e=parseInt(h.split(" ")[2]);if(isNaN(e)||e<0||e>64)v="Error: Max flood hops must be 0-64",x="error";else{const a=await m({max_flood_hops:e});v=a.success?`OK - Max flood hops set to ${e}`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set flood.advert.interval ")){const e=parseInt(h.split(" ")[2]);if(isNaN(e)||0!==e&&(e<3||e>48))v="Error: Flood advert interval must be 0 (off) or 3-48 hours",x="error";else{const a=await m({flood_advert_interval_hours:e});v=a.success?0===e?"OK - Flood adverts disabled":`OK - Flood advert interval set to ${e}h`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else if(h.startsWith("set advert.interval ")){const e=parseInt(h.split(" ")[2]);if(isNaN(e)||0!==e&&(e<1||e>10080))v="Error: Advert interval must be 0 (off) or 1-10080 minutes",x="error";else{const a=await m({advert_interval_minutes:e});v=a.success?0===e?"OK - Local adverts disabled":`OK - Local advert interval set to ${e}m`:`Error: ${a.error||"Failed"}`,x=a.success?"success":"error"}}else v=`Unknown command: ${g}\nType 'help' for available commands.`,x="error";P(f,{content:v,outputType:x})}catch(x){P(f,{content:`Error: ${x instanceof Error?x.message:"Command failed"}`,outputType:"error"})}},[O,k,P,S]),B=a.useCallback(e=>{var a,t,r,s,n,o;if(G&&C.length>0){if("ArrowDown"===e.key){e.preventDefault();const s=Math.min(D+1,C.length-1);return W(s),void(null==(r=null==(t=null==(a=M.current)?void 0:a.children[0])?void 0:t.children[s])||r.scrollIntoView({block:"nearest"}))}if("ArrowUp"===e.key){e.preventDefault();const a=Math.max(D-1,0);return W(a),void(null==(o=null==(n=null==(s=M.current)?void 0:s.children[0])?void 0:n.children[a])||o.scrollIntoView({block:"nearest"}))}if("Tab"===e.key)return e.preventDefault(),void X(D);if("Escape"===e.key)return e.preventDefault(),void T(!1)}if("Enter"===e.key){e.preventDefault();const a=_;return N(""),j(-1),T(!1),void U(a)}if("ArrowUp"!==e.key||G)if("ArrowDown"!==e.key||G);else if(e.preventDefault(),E>0){const e=E-1;j(e),N(f[f.length-1-e]||"")}else 0===E&&(j(-1),N(""));else if(e.preventDefault(),f.length>0&&E{N(e.target.value),A(e.target.selectionStart||e.target.value.length),z(e.target.value)},[z]),J=a.useCallback(e=>{const a=e.target;A(a.selectionStart||0)},[]);return t.jsxs(p,{children:[t.jsx(y,{title:"Terminal",icon:t.jsx(r,{})}),t.jsxs(u,{noPadding:!0,className:"terminal-card overflow-hidden flex flex-col isolate",onClick:q,children:[t.jsx("div",{ref:K,className:"flex-1 overflow-y-auto font-mono text-sm bg-black/40 p-3 sm:p-4 md:p-5",children:h.map(e=>t.jsx(w,{entry:e},e.id))}),t.jsxs("div",{className:"relative border-t border-white/10 bg-black/50",children:[t.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 px-3 sm:px-4 py-2 sm:py-3",children:[t.jsx("span",{className:"text-text-muted font-mono font-bold select-none",children:"$"}),t.jsxs("div",{className:"flex-1 relative font-mono text-sm",children:[t.jsx("input",{ref:H,type:"text",value:_,onChange:V,onKeyDown:B,onSelect:J,onFocus:()=>R(!0),onBlur:()=>R(!1),disabled:!b,className:"absolute inset-0 w-full bg-transparent text-transparent outline-none disabled:opacity-50 selection:bg-transparent",style:{caretColor:"transparent"},autoFocus:!0,autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:!1}),t.jsx("div",{className:"relative pointer-events-none select-none","aria-hidden":!0,children:b?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"text-text-primary",children:_.slice(0,L)}),t.jsx("span",{className:s("inline-block w-[0.6em] h-[1.2em] align-text-bottom",I?"bg-accent-primary":"bg-text-muted/30"),style:{marginBottom:"-0.1em"},children:t.jsx("span",{className:"text-bg-primary",children:_[L]||""})}),t.jsx("span",{className:"text-text-primary",children:_.slice(L+1)})]}):t.jsx("span",{className:"text-text-muted",children:"Connecting..."})})]})]}),t.jsxs("div",{className:"px-3 sm:px-4 py-1 border-t border-white/5 bg-black/30 flex justify-between text-[10px] text-text-muted",children:[t.jsx("span",{className:"hidden sm:inline",children:"↑↓ History"}),t.jsx("span",{className:"sm:hidden",children:"Terminal"}),(null==e?void 0:e.version)&&t.jsxs("span",{children:["pyMC v",e.version]})]})]}),G&&C.length>0&&t.jsxs("div",{ref:M,className:"absolute left-2 right-2 bottom-[72px] rounded-xl shadow-2xl overflow-hidden z-50 border border-white/20 bg-black/80 backdrop-blur-xl",children:[t.jsx("div",{className:"max-h-64 overflow-y-auto",children:C.map((e,a)=>t.jsxs("div",{onClick:()=>X(a),className:s("px-4 py-2.5 cursor-pointer border-b border-white/10 last:border-b-0 transition-colors",a===D?"bg-accent-primary/25":"hover:bg-white/10"),children:[t.jsx("span",{className:s("font-mono text-sm",a===D?"text-accent-primary":"text-text-primary"),children:e.cmd}),t.jsx("span",{className:"text-xs text-text-muted ml-4",children:e.desc})]},e.cmd))}),t.jsx("div",{className:"px-3 py-1.5 border-t border-white/10 text-[10px] text-text-muted text-right bg-white/5",children:"Tab to select"})]})]})]})}export{O as default}; diff --git a/frontend/dist/assets/TimeRangeSelector-Pa-lVKQc.js b/frontend/dist/assets/TimeRangeSelector-B_qs4oni.js similarity index 83% rename from frontend/dist/assets/TimeRangeSelector-Pa-lVKQc.js rename to frontend/dist/assets/TimeRangeSelector-B_qs4oni.js index 6bbe9503..4c1ea821 100644 --- a/frontend/dist/assets/TimeRangeSelector-Pa-lVKQc.js +++ b/frontend/dist/assets/TimeRangeSelector-B_qs4oni.js @@ -1 +1 @@ -import{r as e,j as o}from"./vendor-react-CUlQ5-Td.js";const t=e.memo(function({ranges:e,selectedIndex:t,onSelect:a,isPending:l}){return o.jsx("div",{className:"toggle-group flex-shrink-0 overflow-x-auto "+(l?"opacity-70":""),children:e.map((e,l)=>o.jsx("button",{onClick:()=>a(l),className:"toggle-group-item "+(t===l?"active":""),children:e.label},e.label))})});export{t as T}; +import{r as e,j as o}from"./vendor-react-CWPBVwgk.js";const t=e.memo(function({ranges:e,selectedIndex:t,onSelect:a,isPending:l}){return o.jsx("div",{className:"toggle-group flex-shrink-0 overflow-x-auto "+(l?"opacity-70":""),children:e.map((e,l)=>o.jsx("button",{onClick:()=>a(l),className:"toggle-group-item "+(t===l?"active":""),children:e.label},e.label))})});export{t as T}; diff --git a/frontend/dist/assets/deckgl-DTsmDcfs.js b/frontend/dist/assets/deckgl-DTsmDcfs.js new file mode 100644 index 00000000..f5435762 --- /dev/null +++ b/frontend/dist/assets/deckgl-DTsmDcfs.js @@ -0,0 +1 @@ +function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}const t={},n=function(e,n,r){let o=Promise.resolve();if(n&&n.length>0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e}))))};document.getElementsByTagName("link");const r=document.querySelector("meta[property=csp-nonce]"),l=(null==r?void 0:r.nonce)||(null==r?void 0:r.getAttribute("nonce"));o=e(n.map(e=>{if((e=function(e){return"/"+e}(e))in t)return;t[e]=!0;const n=e.endsWith(".css"),r=n?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${r}`))return;const o=document.createElement("link");return o.rel=n?"stylesheet":"modulepreload",n||(o.as="script"),o.crossOrigin="",o.href=e,l&&o.setAttribute("nonce",l),document.head.appendChild(o),n?new Promise((t,n)=>{o.addEventListener("load",t),o.addEventListener("error",()=>n(new Error(`Unable to preload CSS for ${e}`)))}):void 0}))}function l(e){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(t=>{for(const e of t||[])"rejected"===e.status&&l(e.reason);return e().catch(l)})};export{n as _,e as g}; diff --git a/frontend/dist/assets/deckgl-MTXp-Y3t.js b/frontend/dist/assets/deckgl-MTXp-Y3t.js deleted file mode 100644 index 50eb14dc..00000000 --- a/frontend/dist/assets/deckgl-MTXp-Y3t.js +++ /dev/null @@ -1 +0,0 @@ -var e,t,i=Object.defineProperty,n=(e,t,n)=>((e,t,n)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}const s={},o=function(e,t,i){let n=Promise.resolve();if(t&&t.length>0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),r=(null==i?void 0:i.nonce)||(null==i?void 0:i.getAttribute("nonce"));n=e(t.map(e=>{if((e=function(e){return"/"+e}(e))in s)return;s[e]=!0;const t=e.endsWith(".css"),i=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${i}`))return;const n=document.createElement("link");return n.rel=t?"stylesheet":"modulepreload",t||(n.as="script"),n.crossOrigin="",n.href=e,r&&n.setAttribute("nonce",r),document.head.appendChild(n),t?new Promise((t,i)=>{n.addEventListener("load",t),n.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${e}`)))}):void 0}))}function r(e){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return n.then(t=>{for(const e of t||[])"rejected"===e.status&&r(e.reason);return e().catch(r)})};function a(e,t){if(!e)throw new Error(t||"loader assertion failed.")}const c=Boolean("object"!=typeof process||"[object process]"!==String(process)||process.browser),l="undefined"!=typeof process&&process.version&&/v([0-9]*)/.exec(process.version);l&&parseFloat(l[1]);const h=globalThis,u=globalThis.process||{},d=globalThis.navigator||{};function p(e){var t,i;if("undefined"!=typeof window&&"renderer"===(null==(t=window.process)?void 0:t.type))return!0;if("undefined"!=typeof process&&Boolean(null==(i=process.versions)?void 0:i.electron))return!0;const n="undefined"!=typeof navigator&&navigator.userAgent;return Boolean(n&&n.indexOf("Electron")>=0)}function f(){return!("object"==typeof process&&"[object process]"===String(process)&&!(null==process?void 0:process.browser))||p()}const _="4.1.0";class g{constructor(e,t,i="sessionStorage"){this.storage=function(e){try{const t=window[e],i="__storage_test__";return t.setItem(i,i),t.removeItem(i),t}catch(t){return null}}(i),this.id=e,this.config=t,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){if(Object.assign(this.config,e),this.storage){const e=JSON.stringify(this.config);this.storage.setItem(this.id,e)}}_loadConfiguration(){let e={};if(this.storage){const t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}}var m,E;function v(e){return"string"!=typeof e?e:(e=e.toUpperCase(),m[e]||m.WHITE)}function T(e,t){if(!e)throw new Error("Assertion failed")}function R(){var e,t,i;let n;if(f()&&h.performance)n=null==(t=null==(e=null==h?void 0:h.performance)?void 0:e.now)?void 0:t.call(e);else if("hrtime"in u){const e=null==(i=null==u?void 0:u.hrtime)?void 0:i.call(u);n=1e3*e[0]+e[1]/1e6}else n=Date.now();return n}(E=m||(m={}))[E.BLACK=30]="BLACK",E[E.RED=31]="RED",E[E.GREEN=32]="GREEN",E[E.YELLOW=33]="YELLOW",E[E.BLUE=34]="BLUE",E[E.MAGENTA=35]="MAGENTA",E[E.CYAN=36]="CYAN",E[E.WHITE=37]="WHITE",E[E.BRIGHT_BLACK=90]="BRIGHT_BLACK",E[E.BRIGHT_RED=91]="BRIGHT_RED",E[E.BRIGHT_GREEN=92]="BRIGHT_GREEN",E[E.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",E[E.BRIGHT_BLUE=94]="BRIGHT_BLUE",E[E.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",E[E.BRIGHT_CYAN=96]="BRIGHT_CYAN",E[E.BRIGHT_WHITE=97]="BRIGHT_WHITE";const b={debug:f()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},A={enabled:!0,level:0};function S(){}const y={},w={once:!0};class M{constructor({id:e}={id:""}){this.VERSION=_,this._startTs=R(),this._deltaTs=R(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=e,this.userData={},this._storage=new g(`__probe-${this.id}__`,A),this.timeStamp(`${this.id} started`),function(e,t=["constructor"]){const i=Object.getPrototypeOf(e),n=Object.getOwnPropertyNames(i),r=e;for(const s of n){const i=r[s];"function"==typeof i&&(t.find(e=>s===e)||(r[s]=i.bind(e)))}}(this),Object.seal(this)}set level(e){this.setLevel(e)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((R()-this._startTs).toPrecision(10))}getDelta(){return Number((R()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(e=!0){return this._storage.setConfiguration({enabled:e}),this}setLevel(e){return this._storage.setConfiguration({level:e}),this}get(e){return this._storage.config[e]}set(e,t){this._storage.setConfiguration({[e]:t})}settings(){console.table}assert(e,t){if(!e)throw new Error(t||"Assertion failed")}warn(e){return this._getLogFunction(0,e,b.warn,arguments,w)}error(e){return this._getLogFunction(0,e,b.error,arguments)}deprecated(e,t){return this.warn(`\`${e}\` is deprecated and will be removed in a later version. Use \`${t}\` instead`)}removed(e,t){return this.error(`\`${e}\` has been removed. Use \`${t}\` instead`)}probe(e,t){return this._getLogFunction(e,t,b.log,arguments,{time:!0,once:!0})}log(e,t){return this._getLogFunction(e,t,b.debug,arguments)}info(e,t){return this._getLogFunction(e,t,console.info,arguments)}once(e,t){return this._getLogFunction(e,t,b.debug||b.info,arguments,w)}table(e,t,i){return t?this._getLogFunction(e,t,console.table||S,i&&[i],{tag:I(t)}):S}time(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}timeEnd(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}timeStamp(e,t){return this._getLogFunction(e,t,console.timeStamp||S)}group(e,t,i={collapsed:!1}){const n=P({logLevel:e,message:t,opts:i}),{collapsed:r}=i;return n.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(n)}groupCollapsed(e,t,i={}){return this.group(e,t,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._getLogFunction(e,"",console.groupEnd||S)}withGroup(e,t,i){this.group(e,t)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace}_shouldLog(e){return this.isEnabled()&&this.getLevel()>=C(e)}_getLogFunction(e,t,i,n,r){if(this._shouldLog(e)){r=P({logLevel:e,message:t,args:n,opts:r}),T(i=i||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=R();const s=r.tag||r.message;if(r.once&&s){if(y[s])return S;y[s]=R()}return t=function(e,t,i){if("string"==typeof t){const o=i.time?function(e,t=8){const i=Math.max(t-e.length,0);return`${" ".repeat(i)}${e}`}(function(e){let t;return t=e<10?`${e.toFixed(2)}ms`:e<100?`${e.toFixed(1)}ms`:e<1e3?`${e.toFixed(0)}ms`:`${(e/1e3).toFixed(2)}s`,t}(i.total)):"";n=t=i.time?`${e}: ${o} ${t}`:`${e}: ${t}`,r=i.color,s=i.background,f||"string"!=typeof n||(r&&(n=`[${v(r)}m${n}`),s&&(n=`[${v(s)+10}m${n}`)),t=n}var n,r,s;return t}(this.id,r.message,r),i.bind(console,t,...r.args)}return S}}function C(e){if(!e)return 0;let t;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return T(Number.isFinite(t)&&t>=0),t}function P(e){const{logLevel:t,message:i}=e;e.logLevel=C(t);const n=e.args?Array.from(e.args):[];for(;n.length&&n.shift()!==i;);switch(typeof t){case"string":case"function":void 0!==i&&n.unshift(i),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());const r=typeof e.message;return T("string"===r||"object"===r),Object.assign(e,{args:n},e.opts)}function I(e){for(const t in e)for(const i in e[t])return i||"untitled";return"empty"}M.VERSION=_;const L="4.3.3",O=L[0]>="0"&&L[0]<="9"?`v${L}`:"",N=function(){const e=new M({id:"loaders.gl"});return globalThis.loaders=globalThis.loaders||{},globalThis.loaders.log=e,globalThis.loaders.version=O,globalThis.probe=globalThis.probe||{},globalThis.probe.loaders=e,e}();function x(e,t){return D(e||{},t)}function D(e,t,i=0){if(i>3)return t;const n={...e};for(const[r,s]of Object.entries(t))s&&"object"==typeof s&&!Array.isArray(s)?n[r]=D(n[r]||{},t[r],i+1):n[r]=t[r];return n}var F;function B(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}(null==(F=globalThis._loadersgl_)?void 0:F.version)||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.3.3"),globalThis._loadersgl_.version;const U="object"!=typeof process||"[object process]"!==String(process)||process.browser,k="undefined"!=typeof window&&void 0!==window.orientation,G="undefined"!=typeof process&&process.version&&/v([0-9]*)/.exec(process.version);G&&parseFloat(G[1]);class V{constructor(e,t){n(this,"name"),n(this,"workerThread"),n(this,"isRunning",!0),n(this,"result"),n(this,"_resolve",()=>{}),n(this,"_reject",()=>{}),this.name=e,this.workerThread=t,this.result=new Promise((e,t)=>{this._resolve=e,this._reject=t})}postMessage(e,t){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:t})}done(e){B(this.isRunning),this.isRunning=!1,this._resolve(e)}error(e){B(this.isRunning),this.isRunning=!1,this._reject(e)}}class j{terminate(){}}const W=new Map;function z(e){const t=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(t)}function H(e,t=!0,i){const n=i||new Set;if(e)if(X(e))n.add(e);else if(X(e.buffer))n.add(e.buffer);else if(ArrayBuffer.isView(e));else if(t&&"object"==typeof e)for(const r in e)H(e[r],t,n);return void 0===i?Array.from(n):[]}function X(e){return!!e&&(e instanceof ArrayBuffer||"undefined"!=typeof MessagePort&&e instanceof MessagePort||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)}const $=()=>{};class Y{constructor(e){n(this,"name"),n(this,"source"),n(this,"url"),n(this,"terminated",!1),n(this,"worker"),n(this,"onMessage"),n(this,"onError"),n(this,"_loadableURL","");const{name:t,source:i,url:r}=e;B(i||r),this.name=t,this.source=i,this.url=r,this.onMessage=$,this.onError=e=>{},this.worker=U?this._createBrowserWorker():this._createNodeWorker()}static isSupported(){return"undefined"!=typeof Worker&&U||void 0!==j&&!U}destroy(){this.onMessage=$,this.onError=$,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(e,t){t=t||H(e),this.worker.postMessage(e,t)}_getErrorFromErrorEvent(e){let t="Failed to load ";return t+=`worker ${this.name} from ${this.url}. `,e.message&&(t+=`${e.message} in `),e.lineno&&(t+=`:${e.lineno}:${e.colno}`),new Error(t)}_createBrowserWorker(){this._loadableURL=function(e){B(e.source&&!e.url||!e.source&&e.url);let t=W.get(e.source||e.url);return t||(e.url&&(t=(i=e.url).startsWith("http")?z(`try {\n importScripts('${i}');\n} catch (error) {\n console.error(error);\n throw error;\n}`):i,W.set(e.url,t)),e.source&&(t=z(e.source),W.set(e.source,t))),B(t),t;var i}({source:this.source,url:this.url});const e=new Worker(this._loadableURL,{name:this.name});return e.onmessage=e=>{e.data?this.onMessage(e.data):this.onError(new Error("No data received"))},e.onerror=e=>{this.onError(this._getErrorFromErrorEvent(e)),this.terminated=!0},e.onmessageerror=e=>{},e}_createNodeWorker(){let e;if(this.url){const t=this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`;e=new j(t,{eval:!1})}else{if(!this.source)throw new Error("no worker");e=new j(this.source,{eval:!0})}return e.on("message",e=>{this.onMessage(e)}),e.on("error",e=>{this.onError(e)}),e.on("exit",e=>{}),e}}class K{constructor(e){n(this,"name","unnamed"),n(this,"source"),n(this,"url"),n(this,"maxConcurrency",1),n(this,"maxMobileConcurrency",1),n(this,"onDebug",()=>{}),n(this,"reuseWorkers",!0),n(this,"props",{}),n(this,"jobQueue",[]),n(this,"idleQueue",[]),n(this,"count",0),n(this,"isDestroyed",!1),this.source=e.source,this.url=e.url,this.setProps(e)}static isSupported(){return Y.isSupported()}destroy(){this.idleQueue.forEach(e=>e.destroy()),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}async startJob(e,t=(e,t,i)=>e.done(i),i=(e,t)=>e.error(t)){const n=new Promise(n=>(this.jobQueue.push({name:e,onMessage:t,onError:i,onStart:n}),this));return this._startQueuedJob(),await n}async _startQueuedJob(){if(!this.jobQueue.length)return;const e=this._getAvailableWorker();if(!e)return;const t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:e,backlog:this.jobQueue.length});const n=new V(t.name,e);e.onMessage=e=>t.onMessage(n,e.type,e.payload),e.onError=e=>t.onError(n,e),t.onStart(n);try{await n.result}catch(i){}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){!U||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count{}},q=class e{constructor(e){n(this,"props"),n(this,"workerPools",new Map),this.props={...Z},this.setProps(e),this.workerPools=new Map}static isSupported(){return Y.isSupported()}static getWorkerFarm(t={}){return e._workerFarm=e._workerFarm||new e({}),e._workerFarm.setProps(t),e._workerFarm}destroy(){for(const e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){this.props={...this.props,...e};for(const t of this.workerPools.values())t.setProps(this._getWorkerPoolProps())}getWorkerPool(e){const{name:t,source:i,url:n}=e;let r=this.workerPools.get(t);return r||(r=new K({name:t,source:i,url:n}),r.setProps(this._getWorkerPoolProps()),this.workerPools.set(t,r)),r}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}};n(q,"_workerFarm");let Q=q;async function J(e,t,i,n,r){const s=e.id,o=function(e,t={}){const i=t[e.id]||{},n=U?`${e.id}-worker.js`:`${e.id}-worker-node.js`;let r=i.workerUrl;if(r||"compression"!==e.id||(r=t.workerUrl),"test"===t._workerType&&(r=U?`modules/${e.module}/dist/${n}`:`modules/${e.module}/src/workers/${e.id}-worker-node.ts`),!r){let t=e.version;"latest"===t&&(t="latest");const i=t?`@${t}`:"";r=`https://unpkg.com/@loaders.gl/${e.module}${i}/dist/${n}`}return B(r),r}(e,i),a=Q.getWorkerFarm(i).getWorkerPool({name:s,url:o});i=JSON.parse(JSON.stringify(i)),n=JSON.parse(JSON.stringify(n||{}));const c=await a.startJob("process-on-worker",ee.bind(null,r));c.postMessage("process",{input:t,options:i,context:n});const l=await c.result;return await l.result}async function ee(e,t,i,n){switch(i){case"done":t.done(n);break;case"error":t.error(new Error(n.error));break;case"process":const{id:i,input:s,options:o}=n;try{const n=await e(s,o);t.postMessage("done",{id:i,result:n})}catch(r){const e=r instanceof Error?r.message:"unknown error";t.postMessage("error",{id:i,error:e})}}}function te(){let e;if("undefined"!=typeof window&&window.performance)e=window.performance.now();else if("undefined"!=typeof process&&process.hrtime){const t=process.hrtime();e=1e3*t[0]+t[1]/1e6}else e=Date.now();return e}class ie{constructor(e,t){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=e,this.type=t,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(e){return this.sampleSize=e,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(e){return this._count+=e,this._samples++,this._checkSampling(),this}subtractCount(e){return this._count-=e,this._samples++,this._checkSampling(),this}addTime(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=te(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(te()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}}class ne{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,t="count"){return this._getOrCreate({name:e,type:t})}get size(){return Object.keys(this.stats).length}reset(){for(const e of Object.values(this.stats))e.reset();return this}forEach(e){for(const t of Object.values(this.stats))e(t)}getTable(){const e={};return this.forEach(t=>{e[t.name]={time:t.time||0,count:t.count||0,average:t.getAverageTime()||0,hz:t.getHz()||0}}),e}_initializeStats(e=[]){e.forEach(e=>this._getOrCreate(e))}_getOrCreate(e){const{name:t,type:i}=e;let n=this.stats[t];return n||(n=e instanceof ie?e:new ie(t,i),this.stats[t]=n),n}}const re={};function se(e){if((t=e)&&"object"==typeof t&&t.isBuffer)return e;var t;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return 0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if("string"==typeof e){const t=e;return(new TextEncoder).encode(t).buffer}if(e&&"object"==typeof e&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function oe(e){const t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):""}const ae=e=>"function"==typeof e,ce=e=>null!==e&&"object"==typeof e,le=e=>ce(e)&&e.constructor==={}.constructor,he=e=>"undefined"!=typeof Response&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json,ue=e=>"undefined"!=typeof Blob&&e instanceof Blob,de=e=>(e=>"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||ce(e)&&ae(e.tee)&&ae(e.cancel)&&ae(e.getReader))(e)||(e=>ce(e)&&ae(e.read)&&ae(e.pipe)&&(e=>"boolean"==typeof e)(e.readable))(e);class pe extends Error{constructor(e,t){super(e),n(this,"reason"),n(this,"url"),n(this,"response"),this.reason=t.reason,this.url=t.url,this.response=t.response}}const fe=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,_e=/^([-\w.]+\/[-\w.+]+)/;function ge(e,t){return e.toLowerCase()===t.toLowerCase()}function me(e){const t=fe.exec(e);return t?t[1]:""}const Ee=/\?.*/;function ve(e){return e.replace(Ee,"")}function Te(e){return he(e)?e.url:ue(e)?e.name||"":"string"==typeof e?e:""}function Re(e){if(he(e)){const t=e,i=t.headers.get("content-type")||"",n=ve(t.url);return function(e){const t=_e.exec(e);return t?t[1]:e}(i)||me(n)}return ue(e)?e.type||"":"string"==typeof e?me(e):""}async function be(e){if(he(e))return e;const t={},i=function(e){return he(e)?e.headers["content-length"]||-1:ue(e)?e.size:"string"==typeof e?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}(e);i>=0&&(t["content-length"]=String(i));const n=Te(e),r=Re(e);r&&(t["content-type"]=r);const s=await async function(e){if("string"==typeof e)return`data:,${e.slice(0,5)}`;if(e instanceof Blob){const t=e.slice(0,5);return await new Promise(e=>{const i=new FileReader;i.onload=t=>{var i;return e(null==(i=null==t?void 0:t.target)?void 0:i.result)},i.readAsDataURL(t)})}return e instanceof ArrayBuffer?`data:base64,${function(e){let t="";const i=new Uint8Array(e);for(let n=0;n{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}}const we={fetch:null,mimeType:void 0,nothrow:!1,log:new class{constructor(){n(this,"console"),this.console=console}log(...e){return this.console.log.bind(this.console,...e)}info(...e){return this.console.info.bind(this.console,...e)}warn(...e){return this.console.warn.bind(this.console,...e)}error(...e){return this.console.error.bind(this.console,...e)}},useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:c,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},Me={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function Ce(){globalThis.loaders=globalThis.loaders||{};const{loaders:e}=globalThis;return e._state||(e._state={}),e._state}function Pe(){const e=Ce();return e.globalOptions=e.globalOptions||{...we},e.globalOptions}function Ie(e,t,i,n,r){const s=t||"Top level",o=t?`${t}.`:"";for(const a in e){const c=!t&&ce(e[a]);if(!(a in i)&&("baseUri"!==a||t)&&("workerUrl"!==a||!t))if(a in n)Se.warn(`${s} loader option '${o}${a}' no longer supported, use '${n[a]}'`)();else if(!c){const e=Le(a,r);Se.warn(`${s} loader option '${o}${a}' not recognized. ${e}`)()}}}function Le(e,t){const i=e.toLowerCase();let n="";for(const r of t)for(const t in r.options){if(e===t)return`Did you mean '${r.id}.${t}'?`;const s=t.toLowerCase();(i.startsWith(s)||s.startsWith(i))&&(n=n||`Did you mean '${r.id}.${t}'?`)}return n}function Oe(e,t){for(const i in t)if(i in t){const n=t[i];le(n)&&le(e[i])?e[i]={...e[i],...t[i]}:e[i]=t[i]}}function Ne(e){return!!e&&(Array.isArray(e)&&(e=e[0]),Array.isArray(null==e?void 0:e.extensions))}function xe(e){let t;return a(e,"null loader"),a(Ne(e),"invalid loader"),Array.isArray(e)&&(t=e[1],e=e[0],e={...e,options:{...e.options,...t}}),((null==e?void 0:e.parseTextSync)||(null==e?void 0:e.parseText))&&(e.text=!0),e.text||(e.binary=!0),e}const De=()=>{const e=Ce();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry},Fe=/\.([^.]+)$/;function Be(e,t=[],i,n){if(!Ue(e))return null;if(t&&!Array.isArray(t))return xe(t);let r=[];t&&(r=r.concat(t)),(null==i?void 0:i.ignoreRegisteredLoaders)||r.push(...De()),function(e){for(const t of e)xe(t)}(r);const s=function(e,t,i,n){const r=Te(e),s=Re(e),o=ve(r)||(null==n?void 0:n.url);let a=null,c="";return(null==i?void 0:i.mimeType)&&(a=Ge(t,null==i?void 0:i.mimeType),c=`match forced by supplied MIME type ${null==i?void 0:i.mimeType}`),a=a||function(e,t){const i=t&&Fe.exec(t),n=i&&i[1];return n?function(e,t){t=t.toLowerCase();for(const i of e)for(const e of i.extensions)if(e.toLowerCase()===t)return i;return null}(e,n):null}(t,o),c=c||(a?`matched url ${o}`:""),a=a||Ge(t,s),c=c||(a?`matched MIME type ${s}`:""),a=a||function(e,t){if(!t)return null;for(const i of e)if("string"==typeof t){if(Ve(t,i))return i}else if(ArrayBuffer.isView(t)){if(je(t.buffer,t.byteOffset,i))return i}else if(t instanceof ArrayBuffer&&je(t,0,i))return i;return null}(t,e),c=c||(a?`matched initial data ${We(e)}`:""),(null==i?void 0:i.fallbackMimeType)&&(a=a||Ge(t,null==i?void 0:i.fallbackMimeType),c=c||(a?`matched fallback MIME type ${s}`:"")),c&&N.log(1,`selectLoader selected ${null==a?void 0:a.name}: ${c}.`),a}(e,r,i,n);if(!s&&!(null==i?void 0:i.nothrow))throw new Error(ke(e));return s}function Ue(e){return!(e instanceof Response&&204===e.status)}function ke(e){const t=Te(e),i=Re(e);let n="No valid loader found (";n+=t?`${oe(t)}, `:"no url provided, ",n+=`MIME type: ${i?`"${i}"`:"not provided"}, `;const r=e?We(e):"";return n+=r?` first bytes: "${r}"`:"first bytes: not available",n+=")",n}function Ge(e,t){var i;for(const n of e){if(null==(i=n.mimeTypes)?void 0:i.some(e=>ge(t,e)))return n;if(ge(t,`application/x.${n.id}`))return n}return null}function Ve(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some(t=>e.startsWith(t))}function je(e,t,i){return(Array.isArray(i.tests)?i.tests:[i.tests]).some(i=>function(e,t,i,n){if(n instanceof ArrayBuffer)return function(e,t,i){if(i=i||e.byteLength,e.byteLength100?`${n.slice(0,100)}...`:n;const r={reason:e.statusText,url:e.url,response:e};try{const t=e.headers.get("Content-Type");r.reason=!e.bodyUsed&&(null==t?void 0:t.includes("application/json"))?await e.json():await e.text()}catch(t){}return new pe(n,r)}(e);throw t}}(i),t.binary?await i.arrayBuffer():await i.text()}if(de(e)&&(e=function(e,t){if("string"==typeof e)return function*(e,t){const i=(null==t?void 0:t.chunkSize)||262144;let n=0;const r=new TextEncoder;for(;ne&&"function"==typeof e[Symbol.asyncIterator])(e))return async function(e){const t=[];for await(const i of e)t.push(i);return function(...e){return function(e){const t=e.map(e=>e instanceof ArrayBuffer?new Uint8Array(e):e),i=t.reduce((e,t)=>e+t.byteLength,0),n=new Uint8Array(i);let r=0;for(const s of t)n.set(s,r),r+=s.byteLength;return n.buffer}(e)}(...t)}(e);var r;throw new Error($e)}function Ke(e,t){const i=Pe(),n=e||i;return"function"==typeof n.fetch?n.fetch:ce(n.fetch)?e=>Ae(e,n.fetch):(null==t?void 0:t.fetch)?null==t?void 0:t.fetch:Ae}async function Ze(e,t,i,n){!t||Array.isArray(t)||Ne(t)||(n=void 0,i=t,t=void 0),i=i||{};const r=Te(e=await e),s=function(e,t){if(e&&!Array.isArray(e))return e;let i;if(e&&(i=Array.isArray(e)?e:[e]),t&&t.loaders){const e=Array.isArray(t.loaders)?t.loaders:[t.loaders];i=i?[...i,...e]:e}return i&&i.length?i:void 0}(t,n),o=await async function(e,t=[],i,n){if(!Ue(e))return null;let r=Be(e,t,{...i,nothrow:!0},n);if(r)return r;if(ue(e)&&(r=Be(e=await e.slice(0,10).arrayBuffer(),t,i,n)),!r&&!(null==i?void 0:i.nothrow))throw new Error(ke(e));return r}(e,s,i);return o?(n=function(e,t,i){if(i)return i;const n={fetch:Ke(t,e),...e};if(n.url){const e=ve(n.url);n.baseUrl=e,n.queryString=function(e){const t=e.match(Ee);return t&&t[0]}(n.url),n.filename=oe(e),n.baseUrl=function(e){const t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}(e)}return Array.isArray(n.loaders)||(n.loaders=null),n}({url:r,_parse:Ze,loaders:s},i=function(e,t,i,n){return i=i||[],function(e,t){Ie(e,null,we,Me,t);for(const i of t){const n=e&&e[i.id]||{},r=i.options&&i.options[i.id]||{},s=i.deprecatedOptions&&i.deprecatedOptions[i.id]||{};Ie(n,i.id,r,s,t)}}(e,i=Array.isArray(i)?i:[i]),function(e,t,i){const n={...e.options||{}};return function(e,t){t&&!("baseUri"in e)&&(e.baseUri=t)}(n,i),null===n.log&&(n.log=new ye),Oe(n,Pe()),Oe(n,t),n}(t,e,n)}(i,o,s,r),n||null),await async function(e,t,i,n){if(function(e){B(e,"no worker provided");e.version}(e),i=x(e.options,i),he(t)){const e=t,{ok:i,redirected:r,status:s,statusText:o,type:a,url:c}=e,l=Object.fromEntries(e.headers.entries());n.response={headers:l,ok:i,redirected:r,status:s,statusText:o,type:a,url:c}}t=await Ye(t,e,i);const r=e;if(r.parseTextSync&&"string"==typeof t)return r.parseTextSync(t,i,n);if(function(e,t){return!!Q.isSupported()&&!(!U&&!(null==t?void 0:t._nodeWorkers))&&e.worker&&(null==t?void 0:t.worker)}(e,i))return await J(e,t,i,n,Ze);if(r.parseText&&"string"==typeof t)return await r.parseText(t,i,n);if(r.parse)return await r.parse(t,i,n);throw B(!r.parseSync),new Error(`${e.id} loader - no parser found and worker is disabled`)}(o,e,i,n)):null}const qe=null==(e=globalThis.loaders)?void 0:e.parseImageNode,Qe="undefined"!=typeof Image,Je="undefined"!=typeof ImageBitmap,et=Boolean(qe),tt=!!c||et;const it=/^data:image\/svg\+xml/,nt=/\.svg((\?|#).*)?$/;function rt(e){return e&&(it.test(e)||nt.test(e))}function st(e,t){if(rt(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function ot(e,t,i){const n=function(e,t){if(rt(t)){let t=(new TextDecoder).decode(e);try{"function"==typeof unescape&&"function"==typeof encodeURIComponent&&(t=unescape(encodeURIComponent(t)))}catch(i){throw new Error(i.message)}return`data:image/svg+xml;base64,${btoa(t)}`}return st(e,t)}(e,i),r=self.URL||self.webkitURL,s="string"!=typeof n&&r.createObjectURL(n);try{return await async function(e,t){const i=new Image;return i.src=e,t.image&&t.image.decode&&i.decode?(await i.decode(),i):await new Promise((e,t)=>{try{i.onload=()=>e(i),i.onerror=e=>{const i=e instanceof Error?e.message:"error";t(new Error(i))}}catch(n){t(n)}})}(s||n,t)}finally{s&&r.revokeObjectURL(s)}}const at={};let ct=!0;const lt=!1,ht=!0;function ut(e){const t=dt(e);return function(e){const t=dt(e);return t.byteLength>=24&&2303741511===t.getUint32(0,lt)?{mimeType:"image/png",width:t.getUint32(16,lt),height:t.getUint32(20,lt)}:null}(t)||function(e){const t=dt(e);if(!(t.byteLength>=3&&65496===t.getUint16(0,lt)&&255===t.getUint8(2)))return null;const{tableMarkers:i,sofMarkers:n}=function(){const e=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)e.add(t);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}();let r=2;for(;r+9=10&&1195984440===t.getUint32(0,lt)?{mimeType:"image/gif",width:t.getUint16(6,ht),height:t.getUint16(8,ht)}:null}(t)||function(e){const t=dt(e);return t.byteLength>=14&&16973===t.getUint16(0,lt)&&t.getUint32(2,ht)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,ht),height:t.getUint32(22,ht)}:null}(t)||function(e){const t=function(e){return function(e,t,i=0){const n=(r="ftyp",[...r].map(e=>e.charCodeAt(0)));var r;for(let s=0;sBoolean(ut(new DataView(e)))],options:{image:{type:"auto",decode:!0}}},ft=new M({id:"deck"});let _t={};function gt(e){_t=e}function mt(e,t,i,n){ft.level>0&&_t[e]&&_t[e].call(null,t,i,n)}const Et={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:function(e){const t=e[0],i=e[e.length-1];return"{"===t&&"}"===i||"["===t&&"]"===i},parseTextSync:JSON.parse},vt=function(){const e="9.2.5",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==e)throw new Error(`deck.gl - multiple versions detected: ${t} vs ${e}`);return t||(ft.log(1,`deck.gl ${e}`)(),globalThis.deck={...globalThis.deck,VERSION:e,version:e,log:ft,_registerLoggers:gt},function(e){const t=De();e=Array.isArray(e)?e:[e];for(const i of e){const e=xe(i);t.find(t=>e===t)||t.unshift(e)}}([Et,[pt,{imagebitmap:{premultiplyAlpha:"none"}}]])),e}();function Tt(e,t){if(!e)throw new Error(t||"shadertools: assertion failed.")}const Rt={number:{type:"number",validate:(e,t)=>Number.isFinite(e)&&"object"==typeof t&&(void 0===t.max||e<=t.max)&&(void 0===t.min||e>=t.min)},array:{type:"array",validate:(e,t)=>Array.isArray(e)||ArrayBuffer.isView(e)}};function bt(e){let t=At(e);if("object"!==t)return{value:e,...Rt[t],type:t};if("object"==typeof e)return e?void 0!==e.type?{...e,...Rt[e.type],type:e.type}:void 0===e.value?{type:"object",value:e}:(t=At(e.value),{...e,...Rt[t],type:t}):{type:"object",value:null};throw new Error("props")}function At(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}const St={vertex:"#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n",fragment:"#ifdef MODULE_MATERIAL\n fragColor = material_filterColor(fragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n fragColor = lighting_filterColor(fragColor);\n#endif\n\n#ifdef MODULE_FOG\n fragColor = fog_filterColor(fragColor);\n#endif\n\n#ifdef MODULE_PICKING\n fragColor = picking_filterHighlightColor(fragColor);\n fragColor = picking_filterPickingColor(fragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n"},yt=/void\s+main\s*\([^)]*\)\s*\{\n?/,wt=/}\n?[^{}]*$/,Mt=[],Ct="__LUMA_INJECT_DECLARATIONS__";function Pt(e){const t={vertex:{},fragment:{}};for(const i in e){let n=e[i];"string"==typeof n&&(n={order:0,injection:n}),t[It(i)][i]=n}return t}function It(e){const t=e.slice(0,2);switch(t){case"vs":return"vertex";case"fs":return"fragment";default:throw new Error(t)}}function Lt(e,t,i,n=!1){const r="vertex"===t;for(const s in i){const t=i[s];t.sort((e,t)=>e.order-t.order),Mt.length=t.length;for(let e=0,i=t.length;ee+n));break;case"vs:#main-end":r&&(e=e.replace(wt,e=>n+e));break;case"fs:#decl":r||(e=e.replace(Ct,n));break;case"fs:#main-start":r||(e=e.replace(yt,e=>e+n));break;case"fs:#main-end":r||(e=e.replace(wt,e=>n+e));break;default:e=e.replace(s,e=>e+n)}}return e=e.replace(Ct,""),n&&(e=e.replace(/\}\s*$/,e=>e+St[t])),e}function Ot(e){e.map(e=>function(e){if(e.instance)return;Ot(e.dependencies||[]);const{propTypes:t={},deprecations:i=[],inject:n={}}=e,r={normalizedInjections:Pt(n),parsedDeprecations:xt(i)};t&&(r.propValidators=function(e){const t={};for(const[i,n]of Object.entries(e))t[i]=bt(n);return t}(t)),e.instance=r;let s={};t&&(s=Object.entries(t).reduce((e,[t,i])=>{const n=null==i?void 0:i.value;return n&&(e[t]=n),e},{})),e.defaultUniforms={...e.defaultUniforms,...s}}(e))}function Nt(e,t,i){var n;null==(n=e.deprecations)||n.forEach(e=>{var n;(null==(n=e.regex)?void 0:n.test(t))&&(e.deprecated?i.deprecated(e.old,e.new)():i.removed(e.old,e.new)())})}function xt(e){return e.forEach(e=>{"function"===e.type?e.regex=new RegExp(`\\b${e.old}\\(`):e.regex=new RegExp(`${e.type} ${e.old};`)}),e}function Dt(e){Ot(e);const t={},i={};Ft({modules:e,level:0,moduleMap:t,moduleDepth:i});const n=Object.keys(i).sort((e,t)=>i[t]-i[e]).map(e=>t[e]);return Ot(n),n}function Ft(e){const{modules:t,level:i,moduleMap:n,moduleDepth:r}=e;if(i>=5)throw new Error("Possible loop in shader dependency graph");for(const s of t)n[s.name]=s,(void 0===r[s.name]||r[s.name]e.order-t.order);for(const t of e)i+=` ${t.injection}\n`}r.footer&&(i+=` ${r.footer}`),i+="}\n"}return i}function Wt(e){const t={vertex:{},fragment:{}};for(const i of e){let e,n;"string"!=typeof i?(e=i,n=e.hook):(e={},n=i),n=n.trim();const[r,s]=n.split(":"),o=n.replace(/\(.+/,""),a=Object.assign(e,{signature:s});switch(r){case"vs":t.vertex[o]=a;break;case"fs":t.fragment[o]=a;break;default:throw new Error(r)}}return t}function zt(e,t="unnamed"){const i=/#define[^\S\r\n]*SHADER_NAME[^\S\r\n]*([A-Za-z0-9_-]+)\s*/.exec(e);return i?i[1]:t}function Ht(e){let t=100;const i=e.match(/[^\s]+/g);if(i&&i.length>=2&&"#version"===i[0]){const e=parseInt(i[1],10);Number.isFinite(e)&&(t=e)}if(100!==t&&300!==t)throw new Error(`Invalid GLSL version ${t}`);return t}const Xt=`\n\n${Ct}\n`;function $t(e,t){var i;const{source:n,stage:r,modules:s,hookFunctions:o=[],inject:a={},log:c}=t;Tt("string"==typeof n,"shader source must be a string");const l=n;let h="";const u=Wt(o),d={},p={},f={};for(const g in a){const e="string"==typeof a[g]?{injection:a[g],order:0}:a[g],t=/^(v|f)s:(#)?([\w-]+)$/.exec(g);if(t){const i=t[2],n=t[3];i?"decl"===n?p[g]=[e]:f[g]=[e]:d[g]=[e]}else f[g]=[e]}const _=s;for(const g of _){c&&Nt(g,l,c),h+=Zt(g,"wgsl");const e=(null==(i=g.injections)?void 0:i[r])||{};for(const t in e){const i=/^(v|f)s:#([\w-]+)$/.exec(t);if(i){const n="decl"===i[2]?p:f;n[t]=n[t]||[],n[t].push(e[t])}else d[t]=d[t]||[],d[t].push(e[t])}}return h+=Xt,h=Lt(h,r,p),h+=jt(u[r],d),h+=l,h=Lt(h,r,f),h}function Yt(e,t){var i;const{source:n,stage:r,language:s="glsl",modules:o,defines:a={},hookFunctions:c=[],inject:l={},prologue:h=!0,log:u}=t;Tt("string"==typeof n,"shader source must be a string");const d="glsl"===s?function(e){return{name:zt(e,void 0),language:"glsl",version:Ht(e)}}(n).version:-1,p=e.shaderLanguageVersion,f=100===d?"#version 100":"#version 300 es",_=n.split("\n").slice(1).join("\n"),g={};o.forEach(e=>{Object.assign(g,e.defines)}),Object.assign(g,a);let m="";switch(s){case"wgsl":break;case"glsl":m=h?`${f}\n\n// ----- PROLOGUE -------------------------\n#define SHADER_TYPE_${r.toUpperCase()}\n\n${function(e){switch(null==e?void 0:e.gpu.toLowerCase()){case"apple":return"#define APPLE_GPU\n// Apple optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n";case"nvidia":return"#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n";case"intel":return"#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n";case"amd":return"#define AMD_GPU\n";default:return"#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Headless Chrome's software shader 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// If the GPU doesn't have full 32 bits precision, will causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n"}}(e)}\n${"fragment"===r?"precision highp float;\n":""}\n\n// ----- APPLICATION DEFINES -------------------------\n\n${function(e={}){let t="";for(const i in e){const n=e[i];(n||Number.isFinite(n))&&(t+=`#define ${i.toUpperCase()} ${e[i]}\n`)}return t}(g)}\n\n`:`${f}\n`}const E=Wt(c),v={},T={},R={};for(const b in l){const e="string"==typeof l[b]?{injection:l[b],order:0}:l[b],t=/^(v|f)s:(#)?([\w-]+)$/.exec(b);if(t){const i=t[2],n=t[3];i?"decl"===n?T[b]=[e]:R[b]=[e]:v[b]=[e]}else R[b]=[e]}for(const b of o){u&&Nt(b,_,u),m+=Zt(b,r);const e=(null==(i=b.instance)?void 0:i.normalizedInjections[r])||{};for(const t in e){const i=/^(v|f)s:#([\w-]+)$/.exec(t);if(i){const n="decl"===i[2]?T:R;n[t]=n[t]||[],n[t].push(e[t])}else v[t]=v[t]||[],v[t].push(e[t])}}return m+="// ----- MAIN SHADER SOURCE -------------------------",m+=Xt,m=Lt(m,r,T),m+=jt(E[r],v),m+=_,m=Lt(m,r,R),"glsl"===s&&d!==p&&(m=function(e,t){var i;if(300!==Number((null==(i=e.match(/^#version[ \t]+(\d+)/m))?void 0:i[1])||100))throw new Error("luma.gl v9 only supports GLSL 3.00 shader sources");switch(t){case"vertex":return Gt(e,Ut);case"fragment":return Gt(e,kt);default:throw new Error(t)}}(m,r)),m.trim()}function Kt(e){return function(t){var i;const n={};for(const r of e){const e=null==(i=r.getUniforms)?void 0:i.call(r,t,n);Object.assign(n,e)}return n}}function Zt(e,t){let i;switch(t){case"vertex":i=e.vs||"";break;case"fragment":i=e.fs||"";break;case"wgsl":i=e.source||"";break;default:Tt(!1)}if(!e.name)throw new Error("Shader module must have a name");const n=e.name.toUpperCase().replace(/[^0-9a-z]/gi,"_");let r=`// ----- MODULE ${e.name} ---------------\n\n`;return"wgsl"!==t&&(r+=`#define MODULE_${n}\n`),r+=`${i}\n`,r}const qt=/^\s*\#\s*ifdef\s*([a-zA-Z_]+)\s*$/,Qt=/^\s*\#\s*endif\s*$/,Jt=class e{constructor(){n(this,"_hookFunctions",[]),n(this,"_defaultModules",[])}static getDefaultShaderAssembler(){return e.defaultShaderAssembler=e.defaultShaderAssembler||new e,e.defaultShaderAssembler}addDefaultModule(e){this._defaultModules.find(t=>t.name===("string"==typeof e?e:e.name))||this._defaultModules.push(e)}removeDefaultModule(e){const t="string"==typeof e?e:e.name;this._defaultModules=this._defaultModules.filter(e=>e.name!==t)}addShaderHook(e,t){t&&(e=Object.assign(t,{hook:e})),this._hookFunctions.push(e)}assembleWGSLShader(e){const t=this._getModuleList(e.modules),i=this._hookFunctions,{source:n,getUniforms:r}=function(e){const t=Dt(e.modules||[]);return{source:$t(e.platformInfo,{...e,source:e.source,stage:"vertex",modules:t}),getUniforms:Kt(t)}}({...e,source:e.source,modules:t,hookFunctions:i}),s="wgsl"===e.platformInfo.shaderLanguage?function(e){const t=e.split("\n"),i=[];let n=!0,r=null;for(const s of t){const e=s.match(qt),t=s.match(Qt);e?(r=e[1],n=Boolean(null==void 0?void 0:undefined[r])):t?n=!0:n&&i.push(s)}return i.join("\n")}(n):n;return{source:s,getUniforms:r,modules:t}}assembleGLSLShaderPair(e){const t=this._getModuleList(e.modules),i=this._hookFunctions,n=function(e){const{vs:t,fs:i}=e,n=Dt(e.modules||[]);return{vs:Yt(e.platformInfo,{...e,source:t,stage:"vertex",modules:n}),fs:Yt(e.platformInfo,{...e,source:i,stage:"fragment",modules:n}),getUniforms:Kt(n)}}({...e,vs:e.vs,fs:e.fs,modules:t,hookFunctions:i});return{...n,modules:t}}_getModuleList(e=[]){const t=new Array(this._defaultModules.length+e.length),i={};let n=0;for(let r=0,s=this._defaultModules.length;re.startsWith(t))}getCapabilities(e){const t=Ai(e),i={format:e,create:t.f??!0,render:t.render??!0,filter:t.filter??!0,blend:t.blend??!0,store:t.store??!0},n=Ci(e),r=e.startsWith("depth")||e.startsWith("stencil"),s=null==n?void 0:n.signed,o=null==n?void 0:n.integer,a=null==n?void 0:n.webgl;return i.render&&(i.render=!s),i.filter&&(i.filter=!(r||s||o||a)),i}};function Ci(e){let t=function(e){var t;const i=Ai(e),n=i.bytesPerPixel||1,r=i.bitsPerChannel||[8,8,8,8];delete i.bitsPerChannel,delete i.bytesPerPixel,delete i.f,delete i.render,delete i.filter,delete i.blend,delete i.store;return{...i,format:e,attachment:i.attachment||"color",channels:i.channels||"r",components:i.components||(null==(t=i.channels)?void 0:t.length)||1,bytesPerPixel:n,bitsPerChannel:r,dataType:i.dataType||"uint8",srgb:i.srgb??!1,packed:i.packed??!1,webgl:i.webgl??!1,integer:i.integer??!1,signed:i.signed??!1,normalized:i.normalized??!1,compressed:i.compressed??!1}}(e);if(Mi.isCompressed(e)){t.channels="rgb",t.components=3,t.bytesPerPixel=1,t.srgb=!1,t.compressed=!0;const i=function(e){const t=/.*-(\d+)x(\d+)-.*/.exec(e);if(t){const[,e,i]=t;return{blockWidth:Number(e),blockHeight:Number(i)}}return null}(e);i&&(t.blockWidth=i.blockWidth,t.blockHeight=i.blockHeight)}const i=wi.exec(e);if(i){const[,n,r,s,o,a]=i,c=ci(`${s}${r}`),l=8*c.byteLength,h=n.length,u=[l,h>=2?l:0,h>=3?l:0,h>=4?l:0];t={format:e,attachment:t.attachment,dataType:c.signedType,components:h,channels:n,integer:c.integer,signed:c.signed,normalized:c.normalized,bitsPerChannel:u,bytesPerPixel:c.byteLength*n.length,packed:t.packed,srgb:t.srgb},"-webgl"===a&&(t.webgl=!0),"-srgb"===o&&(t.srgb=!0)}return e.endsWith("-webgl")&&(t.webgl=!0),e.endsWith("-srgb")&&(t.srgb=!0),t}class Pi{}class Ii{constructor(e=[],t){n(this,"features"),n(this,"disabledFeatures"),this.features=new Set(e),this.disabledFeatures=t||{}}*[Symbol.iterator](){yield*this.features}has(e){var t;return!(null==(t=this.disabledFeatures)?void 0:t[e])&&this.features.has(e)}}const Li=class e{constructor(t){n(this,"id"),n(this,"props"),n(this,"userData",{}),n(this,"statsManager",ti),n(this,"timestamp",0),n(this,"_reused",!1),n(this,"_lumaData",{}),n(this,"_textureCaps",{}),this.props={...e.defaultProps,...t},this.id=this.props.id||ri(this[Symbol.toStringTag].toLowerCase())}get[Symbol.toStringTag](){return"Device"}toString(){return`Device(${this.id})`}getVertexFormatInfo(e){return hi(e)}isVertexFormatSupported(e){return!0}getTextureFormatInfo(e){return Mi.getInfo(e)}getTextureFormatCapabilities(e){let t=this._textureCaps[e];if(!t){const i=this._getDeviceTextureFormatCapabilities(e);t=this._getDeviceSpecificTextureFormatCapabilities(i),this._textureCaps[e]=t}return t}getMipLevelCount(e,t,i=1){const n=Math.max(e,t,i);return 1+Math.floor(Math.log2(n))}isExternalImage(e){return function(e){return"undefined"!=typeof ImageData&&e instanceof ImageData||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLVideoElement&&e instanceof HTMLVideoElement||"undefined"!=typeof VideoFrame&&e instanceof VideoFrame||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas}(e)}getExternalImageSize(e){return function(e){if("undefined"!=typeof ImageData&&e instanceof ImageData||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)return{width:e.width,height:e.height};if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement)return{width:e.naturalWidth,height:e.naturalHeight};if("undefined"!=typeof HTMLVideoElement&&e instanceof HTMLVideoElement)return{width:e.videoWidth,height:e.videoHeight};if("undefined"!=typeof VideoFrame&&e instanceof VideoFrame)return{width:e.displayWidth,height:e.displayHeight};throw new Error("Unknown image type")}(e)}isTextureFormatSupported(e){return this.getTextureFormatCapabilities(e).create}isTextureFormatFilterable(e){return this.getTextureFormatCapabilities(e).filter}isTextureFormatRenderable(e){return this.getTextureFormatCapabilities(e).render}isTextureFormatCompressed(e){return Mi.isCompressed(e)}pushDebugGroup(e){this.commandEncoder.pushDebugGroup(e)}popDebugGroup(){var e;null==(e=this.commandEncoder)||e.popDebugGroup()}insertDebugMarker(e){var t;null==(t=this.commandEncoder)||t.insertDebugMarker(e)}loseDevice(){return!1}incrementTimestamp(){return this.timestamp++}reportError(e,t,...i){return this.props.onError(e,t)?()=>{}:ii.error(e.message,t,...i)}debug(){if(this.props.debug);else{const e="'Type luma.log.set({debug: true}) in console to enable debug breakpoints',\nor create a device with the 'debug: true' prop.";ii.once(0,e)()}}getDefaultCanvasContext(){if(!this.canvasContext)throw new Error("Device has no default CanvasContext. See props.createCanvasContext");return this.canvasContext}beginRenderPass(e){return this.commandEncoder.beginRenderPass(e)}beginComputePass(e){return this.commandEncoder.beginComputePass(e)}getCanvasContext(){return this.getDefaultCanvasContext()}readPixelsToArrayWebGL(e,t){throw new Error("not implemented")}readPixelsToBufferWebGL(e,t){throw new Error("not implemented")}setParametersWebGL(e){throw new Error("not implemented")}getParametersWebGL(e){throw new Error("not implemented")}withParametersWebGL(e,t){throw new Error("not implemented")}clearWebGL(e){throw new Error("not implemented")}resetWebGL(){throw new Error("not implemented")}static _getCanvasContextProps(e){return!0===e.createCanvasContext?{}:e.createCanvasContext}_getDeviceTextureFormatCapabilities(e){const t=Mi.getCapabilities(e),i=e=>("string"==typeof e?this.features.has(e):e)??!0,n=i(t.create);return{format:e,create:n,render:n&&i(t.render),filter:n&&i(t.filter),blend:n&&i(t.blend),store:n&&i(t.store)}}_normalizeBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});const t={...e};if((e.usage||0)&ai.INDEX&&(e.indexType||(e.data instanceof Uint32Array?t.indexType="uint32":e.data instanceof Uint16Array&&(t.indexType="uint16")),!t.indexType))throw new Error("indices buffer content must be of type uint16 or uint32");return t}};n(Li,"defaultProps",{id:null,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,createCanvasContext:void 0,webgl:{},onError:(e,t)=>{},onResize:(e,t)=>{const[i,n]=e.getDevicePixelSize();ii.log(1,`${e} resized => ${i}x${n}px`)()},onPositionChange:(e,t)=>{const[i,n]=e.getPosition();ii.log(1,`${e} repositioned => ${i},${n}`)()},onVisibilityChange:e=>ii.log(1,`${e} Visibility changed ${e.isVisible}`)(),onDevicePixelRatioChange:(e,t)=>ii.log(1,`${e} DPR changed ${t.oldRatio} => ${e.devicePixelRatio}`)(),debug:ii.get("debug")||void 0,debugShaders:ii.get("debug-shaders")||void 0,debugFramebuffers:Boolean(ii.get("debug-framebuffers")),debugFactories:Boolean(ii.get("debug-factories")),debugWebGL:Boolean(ii.get("debug-webgl")),debugSpectorJS:void 0,debugSpectorJSUrl:void 0,_reuseDevices:!1,_requestMaxLimits:!0,_cacheShaders:!1,_cachePipelines:!1,_cacheDestroyPolicy:"unused",_initializeFeatures:!0,_disabledFeatures:{"compilation-status-async-webgl":!0},_handle:void 0});let Oi=Li;const Ni="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.",xi=class e{constructor(){if(n(this,"stats",ti),n(this,"log",ii),n(this,"VERSION","9.2.5"),n(this,"spector"),n(this,"preregisteredAdapters",new Map),globalThis.luma){if(globalThis.luma.VERSION!==this.VERSION)throw ii.error(`Found luma.gl ${globalThis.luma.VERSION} while initialzing ${this.VERSION}`)(),ii.error("'yarn why @luma.gl/core' can help identify the source of the conflict")(),new Error("luma.gl - multiple versions detected: see console log");ii.error("This version of luma.gl has already been initialized")()}ii.log(1,`${this.VERSION} - set luma.log.level=1 (or higher) to trace rendering`)(),globalThis.luma=this}async createDevice(t={}){const i={...e.defaultProps,...t},n=this.selectAdapter(i.type,i.adapters);if(!n)throw new Error(Ni);return i.waitForPageLoad&&await n.pageLoaded,await n.create(i)}async attachDevice(e,t){var i;const n=this._getTypeFromHandle(e,t.adapters),r=n&&this.selectAdapter(n,t.adapters);if(!r)throw new Error(Ni);return await(null==(i=null==r?void 0:r.attach)?void 0:i.call(r,e,t))}registerAdapters(e){for(const t of e)this.preregisteredAdapters.set(t.type,t)}getSupportedAdapters(e=[]){const t=this._getAdapterMap(e);return Array.from(t).map(([,e])=>e).filter(e=>{var t;return null==(t=e.isSupported)?void 0:t.call(e)}).map(e=>e.type)}getBestAvailableAdapterType(e=[]){var t,i;const n=["webgpu","webgl","null"],r=this._getAdapterMap(e);for(const s of n)if(null==(i=null==(t=r.get(s))?void 0:t.isSupported)?void 0:i.call(t))return s;return null}selectAdapter(e,t=[]){let i=e;"best-available"===e&&(i=this.getBestAvailableAdapterType(t));const n=this._getAdapterMap(t);return i&&n.get(i)||null}enforceWebGL2(e=!0,t=[]){var i;const n=this._getAdapterMap(t).get("webgl");n||ii.warn("enforceWebGL2: webgl adapter not found")(),null==(i=null==n?void 0:n.enforceWebGL2)||i.call(n,e)}setDefaultDeviceProps(t){Object.assign(e.defaultProps,t)}_getAdapterMap(e=[]){const t=new Map(this.preregisteredAdapters);for(const i of e)t.set(i.type,i);return t}_getTypeFromHandle(e,t=[]){return e instanceof WebGL2RenderingContext?"webgl":"undefined"!=typeof GPUDevice&&e instanceof GPUDevice||(null==e?void 0:e.queue)?"webgpu":null===e?"null":(e instanceof WebGLRenderingContext?ii.warn("WebGL1 is not supported",e)():ii.warn("Unknown handle type",e)(),null)}};n(xi,"defaultProps",{...Oi.defaultProps,type:"best-available",adapters:void 0,waitForPageLoad:!0});const Di=new xi;class Fi{get pageLoaded(){return ki||(ki=Ui()||"undefined"==typeof window?Promise.resolve():new Promise(e=>window.addEventListener("load",()=>e()))),ki}}const Bi=f()&&"undefined"!=typeof document,Ui=()=>Bi&&"complete"===document.readyState;let ki=null;const Gi=class e{constructor(t){var i,r;if(n(this,"id"),n(this,"props"),n(this,"canvas"),n(this,"htmlCanvas"),n(this,"offscreenCanvas"),n(this,"type"),n(this,"initialized"),n(this,"isInitialized",!1),n(this,"isVisible",!0),n(this,"cssWidth"),n(this,"cssHeight"),n(this,"devicePixelRatio"),n(this,"devicePixelWidth"),n(this,"devicePixelHeight"),n(this,"drawingBufferWidth"),n(this,"drawingBufferHeight"),n(this,"_initializedResolvers",function(){let e,t;return{promise:new Promise((i,n)=>{e=i,t=n}),resolve:e,reject:t}}()),n(this,"_resizeObserver"),n(this,"_intersectionObserver"),n(this,"_position"),n(this,"destroyed",!1),this.props={...e.defaultProps,...t},t=this.props,this.initialized=this._initializedResolvers.promise,f()?t.canvas?"string"==typeof t.canvas?this.canvas=function(e){const t=document.getElementById(e);if(!Vi.isHTMLCanvas(t))throw new Error("Object is not a canvas element");return t}(t.canvas):this.canvas=t.canvas:this.canvas=function(e){const{width:t,height:i}=e,n=document.createElement("canvas");n.id=ri("lumagl-auto-created-canvas"),n.width=t||1,n.height=i||1,n.style.width=Number.isFinite(t)?`${t}px`:"100%",n.style.height=Number.isFinite(i)?`${i}px`:"100%",(null==e?void 0:e.visible)||(n.style.visibility="hidden");const r=function(e){if("string"==typeof e){const t=document.getElementById(e);if(!t)throw new Error(`${e} is not an HTML element`);return t}return e||document.body}((null==e?void 0:e.container)||null);return r.insertBefore(n,r.firstChild),n}(t):this.canvas={width:t.width||1,height:t.height||1},e.isHTMLCanvas(this.canvas)?(this.id=t.id||this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):e.isOffscreenCanvas(this.canvas)?(this.id=t.id||"offscreen-canvas",this.type="offscreen-canvas",this.offscreenCanvas=this.canvas):(this.id=t.id||"node-canvas-context",this.type="node"),this.cssWidth=(null==(i=this.htmlCanvas)?void 0:i.clientWidth)||this.canvas.width,this.cssHeight=(null==(r=this.htmlCanvas)?void 0:r.clientHeight)||this.canvas.height,this.devicePixelWidth=this.canvas.width,this.devicePixelHeight=this.canvas.height,this.drawingBufferWidth=this.canvas.width,this.drawingBufferHeight=this.canvas.height,this.devicePixelRatio=globalThis.devicePixelRatio||1,this._position=[0,0],e.isHTMLCanvas(this.canvas)){this._intersectionObserver=new IntersectionObserver(e=>this._handleIntersection(e)),this._intersectionObserver.observe(this.canvas),this._resizeObserver=new ResizeObserver(e=>this._handleResize(e));try{this._resizeObserver.observe(this.canvas,{box:"device-pixel-content-box"})}catch{this._resizeObserver.observe(this.canvas,{box:"content-box"})}setTimeout(()=>this._observeDevicePixelRatio(),0),this.props.trackPosition&&this._trackPosition()}}static isHTMLCanvas(e){return"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement}static isOffscreenCanvas(e){return"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas}toString(){return`${this[Symbol.toStringTag]}(${this.id})`}destroy(){this.destroyed=!0}setProps(e){return"useDevicePixels"in e&&(this.props.useDevicePixels=e.useDevicePixels||!1,this._updateDrawingBufferSize()),this}getCSSSize(){return[this.cssWidth,this.cssHeight]}getPosition(){return this._position}getDevicePixelSize(){return[this.devicePixelWidth,this.devicePixelHeight]}getDrawingBufferSize(){return[this.drawingBufferWidth,this.drawingBufferHeight]}getMaxDrawingBufferSize(){const e=this.device.limits.maxTextureDimension2D;return[e,e]}setDrawingBufferSize(e,t){this.canvas.width=e,this.canvas.height=t,this.drawingBufferWidth=e,this.drawingBufferHeight=t}getDevicePixelRatio(){return"undefined"!=typeof window&&window.devicePixelRatio||1}cssToDevicePixels(e,t=!0){const i=this.cssToDeviceRatio(),[n,r]=this.getDrawingBufferSize();return function(e,t,i,n,r){const s=e,o=ji(s[0],t,i);let a=Wi(s[1],t,n,r),c=ji(s[0]+1,t,i);const l=c===i-1?c:c-1;let h;return c=Wi(s[1]+1,t,n,r),r?(c=0===c?c:c+1,h=a,a=c):h=c===n-1?c:c-1,{x:o,y:a,width:Math.max(l-o+1,1),height:Math.max(h-a+1,1)}}(e,i,n,r,t)}getPixelSize(){return this.getDevicePixelSize()}getAspect(){const[e,t]=this.getDevicePixelSize();return e/t}cssToDeviceRatio(){try{const[e]=this.getDrawingBufferSize(),[t]=this.getCSSSize();return t?e/t:1}catch{return 1}}resize(e){this.setDrawingBufferSize(e.width,e.height)}_setAutoCreatedCanvasId(e){var t;"lumagl-auto-created-canvas"===(null==(t=this.htmlCanvas)?void 0:t.id)&&(this.htmlCanvas.id=e)}_handleIntersection(e){const t=e.find(e=>e.target===this.canvas);if(!t)return;const i=t.isIntersecting;this.isVisible!==i&&(this.isVisible=i,this.device.props.onVisibilityChange(this))}_handleResize(e){var t,i;const n=e.find(e=>e.target===this.canvas);if(!n)return;this.cssWidth=n.contentBoxSize[0].inlineSize,this.cssHeight=n.contentBoxSize[0].blockSize;const r=this.getDevicePixelSize(),s=(null==(t=n.devicePixelContentBoxSize)?void 0:t[0].inlineSize)||n.contentBoxSize[0].inlineSize*devicePixelRatio,o=(null==(i=n.devicePixelContentBoxSize)?void 0:i[0].blockSize)||n.contentBoxSize[0].blockSize*devicePixelRatio,[a,c]=this.getMaxDrawingBufferSize();this.devicePixelWidth=Math.max(1,Math.min(s,a)),this.devicePixelHeight=Math.max(1,Math.min(o,c)),this._updateDrawingBufferSize(),this.device.props.onResize(this,{oldPixelSize:r})}_updateDrawingBufferSize(){if(this.props.autoResize){if("number"==typeof this.props.useDevicePixels){const e=this.props.useDevicePixels;this.setDrawingBufferSize(this.cssWidth*e,this.cssHeight*e)}else this.props.useDevicePixels?this.setDrawingBufferSize(this.devicePixelWidth,this.devicePixelHeight):this.setDrawingBufferSize(this.cssWidth,this.cssHeight);this._updateDevice()}this._initializedResolvers.resolve(),this.isInitialized=!0,this.updatePosition()}_observeDevicePixelRatio(){const e=this.devicePixelRatio;this.devicePixelRatio=window.devicePixelRatio,this.updatePosition(),this.device.props.onDevicePixelRatioChange(this,{oldRatio:e}),matchMedia(`(resolution: ${this.devicePixelRatio}dppx)`).addEventListener("change",()=>this._observeDevicePixelRatio(),{once:!0})}_trackPosition(e=100){const t=setInterval(()=>{this.destroyed?clearInterval(t):this.updatePosition()},e)}updatePosition(){var e,t,i;const n=null==(e=this.htmlCanvas)?void 0:e.getBoundingClientRect();if(n){const e=[n.left,n.top];if(this._position??(this._position=e),e[0]!==this._position[0]||e[1]!==this._position[1]){const n=this._position;this._position=e,null==(i=(t=this.device.props).onPositionChange)||i.call(t,this,{oldPosition:n})}}}};n(Gi,"defaultProps",{id:void 0,canvas:null,width:800,height:600,useDevicePixels:!0,autoResize:!0,container:null,visible:!0,alphaMode:"opaque",colorSpace:"srgb",trackPosition:!1});let Vi=Gi;function ji(e,t,i){return Math.min(Math.round(e*t),i-1)}function Wi(e,t,i,n){return n?Math.max(0,i-1-Math.round(e*t)):Math.min(Math.round(e*t),i-1)}const zi=class e extends si{get[Symbol.toStringTag](){return"Sampler"}constructor(t,i){super(t,i=e.normalizeProps(t,i),e.defaultProps)}static normalizeProps(e,t){return t}};n(zi,"defaultProps",{...si.defaultProps,type:"color-sampler",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest",mipmapFilter:"none",lodMinClamp:0,lodMaxClamp:32,compare:"less-equal",maxAnisotropy:1});let Hi=zi;const Xi={"1d":"1d","2d":"2d","2d-array":"2d",cube:"2d","cube-array":"2d","3d":"3d"},$i=class e extends si{constructor(t,i){if(super(t,i=e.normalizeProps(t,i),e.defaultProps),n(this,"dimension"),n(this,"baseDimension"),n(this,"format"),n(this,"width"),n(this,"height"),n(this,"depth"),n(this,"mipLevels"),n(this,"updateTimestamp"),this.dimension=this.props.dimension,this.baseDimension=Xi[this.dimension],this.format=this.props.format,this.width=this.props.width,this.height=this.props.height,this.depth=this.props.depth,this.mipLevels=this.props.mipLevels,void 0===this.props.width||void 0===this.props.height)if(t.isExternalImage(i.data)){const e=t.getExternalImageSize(i.data);this.width=(null==e?void 0:e.width)||1,this.height=(null==e?void 0:e.height)||1}else this.width=1,this.height=1,void 0!==this.props.width&&void 0!==this.props.height||ii.warn(`${this} created with undefined width or height. This is deprecated. Use AsyncTexture instead.`)();this.updateTimestamp=t.incrementTimestamp()}get[Symbol.toStringTag](){return"Texture"}toString(){return`Texture(${this.id},${this.format},${this.width}x${this.height})`}setSampler(e){this.sampler=e instanceof Hi?e:this.device.createSampler(e)}clone(e){return this.device.createTexture({...this.props,...e})}static normalizeProps(e,t){const i={...t},{width:n,height:r}=i;return"number"==typeof n&&(i.width=Math.max(1,Math.ceil(n))),"number"==typeof r&&(i.height=Math.max(1,Math.ceil(r))),i}_initializeData(e){this.device.isExternalImage(e)?this.copyExternalImage({image:e,width:this.width,height:this.height,depth:this.depth,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1}):e&&this.copyImageData({data:e,mipLevel:0,x:0,y:0,z:0,aspect:"all"})}_normalizeCopyImageDataOptions(t){const{width:i,height:n,depth:r}=this,s={...e.defaultCopyDataOptions,width:i,height:n,depth:r,...t},o=this.device.getTextureFormatInfo(this.format);if(!t.bytesPerRow&&!o.bytesPerPixel)throw new Error(`bytesPerRow must be provided for texture format ${this.format}`);return s.bytesPerRow=t.bytesPerRow||i*(o.bytesPerPixel||4),s.rowsPerImage=t.rowsPerImage||n,s}_normalizeCopyExternalImageOptions(t){const i=this.device.getExternalImageSize(t.image),n={...e.defaultCopyExternalImageOptions,...i,...t};return n.width=Math.min(n.width,this.width-n.x),n.height=Math.min(n.height,this.height-n.y),n}};n($i,"SAMPLE",4),n($i,"STORAGE",8),n($i,"RENDER",16),n($i,"COPY_SRC",1),n($i,"COPY_DST",2),n($i,"TEXTURE",4),n($i,"RENDER_ATTACHMENT",16),n($i,"defaultProps",{...si.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",usage:$i.TEXTURE|$i.RENDER_ATTACHMENT|$i.COPY_DST,width:void 0,height:void 0,depth:1,mipLevels:1,samples:void 0,sampler:{},view:void 0}),n($i,"defaultCopyDataOptions",{data:void 0,byteOffset:0,bytesPerRow:void 0,rowsPerImage:void 0,mipLevel:0,x:0,y:0,z:0,aspect:"all"}),n($i,"defaultCopyExternalImageOptions",{image:void 0,sourceX:0,sourceY:0,width:void 0,height:void 0,depth:1,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1});let Yi=$i;const Ki=class e extends si{get[Symbol.toStringTag](){return"TextureView"}constructor(t,i){super(t,i,e.defaultProps)}};n(Ki,"defaultProps",{...si.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0});let Zi=Ki;function qi(e,t,i,n){if(null==n?void 0:n.inlineSource){const n=function(e,t){let i="";for(let n=t-2;n<=t;n++){const r=e[n-1];void 0!==r&&(i+=Qi(r,t,undefined))}return i}(t,i);return`\n${n}${e.linePos>0?`${" ".repeat(e.linePos+5)}^^^\n`:""}${e.type.toUpperCase()}: ${e.message}\n\n`}const r="error"===e.type?"red":"#8B4000";return(null==n?void 0:n.html)?`
${e.type.toUpperCase()}: ${e.message}
`:`${e.type.toUpperCase()}: ${e.message}`}function Qi(e,t,i){const n=(null==i?void 0:i.html)?e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'"):e;return`${function(e){let t="";for(let i=e.length;i<4;++i)t+=" ";return t+e}(String(t))}: ${n}${(null==i?void 0:i.html)?"
":"\n"}`}const Ji=class e extends si{constructor(t,i){super(t,{id:tn(i={...i,debugShaders:i.debugShaders||t.props.debugShaders||"errors"}),...i},e.defaultProps),n(this,"stage"),n(this,"source"),n(this,"compilationStatus","pending"),this.stage=this.props.stage,this.source=this.props.source}get[Symbol.toStringTag](){return"Shader"}getCompilationInfoSync(){return null}getTranslatedSource(){return null}async debugShader(){const e=this.props.debugShaders;switch(e){case"never":return;case"errors":if("success"===this.compilationStatus)return}const t=await this.getCompilationInfo();"warnings"===e&&0===(null==t?void 0:t.length)||this._displayShaderLog(t,this.id)}_displayShaderLog(e,t){var i;if("undefined"==typeof document||!(null==document?void 0:document.createElement))return;const n=t,r=`${this.stage} shader "${n}"`;let s=function(e,t,i){let n="";const r=t.split(/\r?\n/),s=e.slice().sort((e,t)=>e.lineNum-t.lineNum);switch((null==i?void 0:i.showSourceCode)||"no"){case"all":let t=0;for(let e=1;e<=r.length;e++)for(n+=Qi(r[e-1],e,i);s.length>t&&s[t].lineNum===e;){const e=s[t++];n+=qi(e,r,e.lineNum,{...i,inlineSource:!1})}for(;s.length>t;)n+=qi(s[t++],[],0,{...i,inlineSource:!1});return n;case"issues":case"no":for(const s of e)n+=qi(s,r,s.lineNum,{inlineSource:"no"!==(null==i?void 0:i.showSourceCode)});return n}}(e,this.source,{showSourceCode:"all",html:!0});const o=this.getTranslatedSource();o&&(s+=`

Translated Source



${o}
`);const a=document.createElement("Button");a.innerHTML=`\n

Compilation error in ${r}



\n
\n${s}\n
`,a.style.top="10px",a.style.left="10px",a.style.position="absolute",a.style.zIndex="9999",a.style.width="100%",a.style.textAlign="left",document.body.appendChild(a),null==(i=document.getElementsByClassName("luma-compiler-log-error")[0])||i.scrollIntoView(),a.onclick=()=>{const e=`data:text/plain,${encodeURIComponent(this.source)}`;navigator.clipboard.writeText(e)}}};n(Ji,"defaultProps",{...si.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debugShaders:void 0});let en=Ji;function tn(e){return function(e,t="unnamed"){const i=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(e);return i?i[1]:t}(e.source)||e.id||ri(`unnamed ${e.stage}-shader`)}const nn=class e extends si{constructor(t,i={}){super(t,i,e.defaultProps),n(this,"width"),n(this,"height"),this.width=this.props.width,this.height=this.props.height}get[Symbol.toStringTag](){return"Framebuffer"}clone(e){const t=this.colorAttachments.map(t=>t.texture.clone(e)),i=this.depthStencilAttachment&&this.depthStencilAttachment.texture.clone(e);return this.device.createFramebuffer({...this.props,colorAttachments:t,depthStencilAttachment:i})}resize(e){let t=!e;if(e){const[i,n]=Array.isArray(e)?e:[e.width,e.height];t=t||n!==this.height||i!==this.width,this.width=i,this.height=n}t&&(ii.log(2,`Resizing framebuffer ${this.id} to ${this.width}x${this.height}`)(),this.resizeAttachments(this.width,this.height))}autoCreateAttachmentTextures(){if(0===this.props.colorAttachments.length&&!this.props.depthStencilAttachment)throw new Error("Framebuffer has noattachments");this.colorAttachments=this.props.colorAttachments.map((e,t)=>{if("string"==typeof e){const i=this.createColorTexture(e,t);return this.attachResource(i),i.view}return e instanceof Yi?e.view:e});const e=this.props.depthStencilAttachment;if(e)if("string"==typeof e){const t=this.createDepthStencilTexture(e);this.attachResource(t),this.depthStencilAttachment=t.view}else this.depthStencilAttachment=e instanceof Yi?e.view:e}createColorTexture(e,t){return this.device.createTexture({id:`${this.id}-color-attachment-${t}`,usage:Yi.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height,sampler:{magFilter:"linear",minFilter:"linear"}})}createDepthStencilTexture(e){return this.device.createTexture({id:`${this.id}-depth-stencil-attachment`,usage:Yi.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height})}resizeAttachments(e,t){for(let i=0;i":["f32",2],"vec3":["f32",3],"vec4":["f32",4],f16:["f16",1],"vec2":["f16",2],"vec3":["f16",3],"vec4":["f16",4],i32:["i32",1],"vec2":["i32",2],"vec3":["i32",3],"vec4":["i32",4],u32:["u32",1],"vec2":["u32",2],"vec3":["u32",3],"vec4":["u32",4]},gn={f32:{type:"f32",components:1},f16:{type:"f16",components:1},i32:{type:"i32",components:1},u32:{type:"u32",components:1},"vec2":{type:"f32",components:2},"vec3":{type:"f32",components:3},"vec4":{type:"f32",components:4},"vec2":{type:"f16",components:2},"vec3":{type:"f16",components:3},"vec4":{type:"f16",components:4},"vec2":{type:"i32",components:2},"vec3":{type:"i32",components:3},"vec4":{type:"i32",components:4},"vec2":{type:"u32",components:2},"vec3":{type:"u32",components:3},"vec4":{type:"u32",components:4},"mat2x2":{type:"f32",components:4},"mat2x3":{type:"f32",components:6},"mat2x4":{type:"f32",components:8},"mat3x2":{type:"f32",components:6},"mat3x3":{type:"f32",components:9},"mat3x4":{type:"f32",components:12},"mat4x2":{type:"f32",components:8},"mat4x3":{type:"f32",components:12},"mat4x4":{type:"f32",components:16},"mat2x2":{type:"f16",components:4},"mat2x3":{type:"f16",components:6},"mat2x4":{type:"f16",components:8},"mat3x2":{type:"f16",components:6},"mat3x3":{type:"f16",components:9},"mat3x4":{type:"f16",components:12},"mat4x2":{type:"f16",components:8},"mat4x3":{type:"f16",components:12},"mat4x4":{type:"f16",components:16},"mat2x2":{type:"i32",components:4},"mat2x3":{type:"i32",components:6},"mat2x4":{type:"i32",components:8},"mat3x2":{type:"i32",components:6},"mat3x3":{type:"i32",components:9},"mat3x4":{type:"i32",components:12},"mat4x2":{type:"i32",components:8},"mat4x3":{type:"i32",components:12},"mat4x4":{type:"i32",components:16},"mat2x2":{type:"u32",components:4},"mat2x3":{type:"u32",components:6},"mat2x4":{type:"u32",components:8},"mat3x2":{type:"u32",components:6},"mat3x3":{type:"u32",components:9},"mat3x4":{type:"u32",components:12},"mat4x2":{type:"u32",components:8},"mat4x3":{type:"u32",components:12},"mat4x4":{type:"u32",components:16}};function mn(e,t,i){const n=function(e,t){const i=e.attributes.find(e=>e.name===t);return i||ii.warn(`shader layout attribute "${t}" not present in shader`),i||null}(e,i),r=function(e,t){!function(e){for(const t of e)(t.attributes&&t.format||!t.attributes&&!t.format)&&ii.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`)}(e);let i=function(e,t){for(const i of e)if(i.format&&i.name===t)return{attributeName:i.name,bufferName:t,stepMode:i.stepMode,vertexFormat:i.format,byteOffset:0,byteStride:i.byteStride||0};return null}(e,t);return i||(i=function(e,t){var i;for(const n of e){let e=n.byteStride;if("number"!=typeof n.byteStride)for(const t of n.attributes||[])e+=hi(t.format).byteLength;const r=null==(i=n.attributes)?void 0:i.find(e=>e.attribute===t);if(r)return{attributeName:r.attribute,bufferName:n.name,stepMode:n.stepMode,vertexFormat:r.format,byteOffset:r.byteOffset,byteStride:e}}return null}(e,t),i||(ii.warn(`layout for attribute "${t}" not present in buffer layout`),null))}(t,i);if(!n)return null;const s=function(e){const[t,i]=_n[e];return{primitiveType:t,components:i,byteLength:fn[t]*i,integer:"i32"===t||"u32"===t,signed:"u32"!==t}}(n.type),o=function(e){let t;switch(e.primitiveType){case"f32":t="float32";break;case"i32":t="sint32";break;case"u32":t="uint32";break;case"f16":return e.components<=2?"float16x2":"float16x4"}return 1===e.components?t:`${t}x${e.components}`}(s),a=(null==r?void 0:r.vertexFormat)||o,c=hi(a);return{attributeName:(null==r?void 0:r.attributeName)||n.name,bufferName:(null==r?void 0:r.bufferName)||n.name,location:n.location,shaderType:n.type,primitiveType:s.primitiveType,shaderComponents:s.components,vertexFormat:a,bufferDataType:c.type,bufferComponents:c.components,normalized:c.normalized,integer:s.integer,stepMode:(null==r?void 0:r.stepMode)||n.stepMode||"vertex",byteOffset:(null==r?void 0:r.byteOffset)||0,byteStride:(null==r?void 0:r.byteStride)||0}}const En=class e extends si{constructor(t,i){super(t,i,e.defaultProps),n(this,"maxVertexAttributes"),n(this,"attributeInfos"),n(this,"indexBuffer",null),n(this,"attributes"),this.maxVertexAttributes=t.limits.maxVertexAttributes,this.attributes=new Array(this.maxVertexAttributes).fill(null),this.attributeInfos=function(e,t,i=16){const n=function(e,t){const i={};for(const n of e.attributes){const r=mn(e,t,n.name);r&&(i[n.name]=r)}return i}(e,t),r=new Array(i).fill(null);for(const s of Object.values(n))r[s.location]=s;return r}(i.shaderLayout,i.bufferLayout,this.maxVertexAttributes)}get[Symbol.toStringTag](){return"VertexArray"}setConstantWebGL(e,t){this.device.reportError(new Error("constant attributes not supported"),this)()}};n(En,"defaultProps",{...si.defaultProps,shaderLayout:void 0,bufferLayout:[]});let vn=En;const Tn=class e extends si{get[Symbol.toStringTag](){return"TransformFeedback"}constructor(t,i){super(t,i,e.defaultProps)}};n(Tn,"defaultProps",{...si.defaultProps,layout:void 0,buffers:{}});let Rn=Tn;const bn=class e extends si{get[Symbol.toStringTag](){return"QuerySet"}constructor(t,i){super(t,i,e.defaultProps)}};n(bn,"defaultProps",{...si.defaultProps,type:void 0,count:void 0});let An,Sn=bn;globalThis.mathgl=globalThis.mathgl||{config:{EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1}};const yn=globalThis.mathgl.config;function wn(e,{precision:t=yn.precision}={}){return e=function(e){return Math.round(e/yn.EPSILON)*yn.EPSILON}(e),`${parseFloat(e.toPrecision(t))}`}function Mn(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Cn(e,t,i){return function(e,t,i){if(Mn(e)){const n=e;i=i||function(e){return e.clone?e.clone():new Array(e.length)}(n);for(let r=0;rMath.max(t,Math.min(i,e)))}function Pn(e,t,i){return Mn(e)?e.map((e,n)=>Pn(e,t[n],i)):i*t+(1-i)*e}function In(e,t,i){const n=yn.EPSILON;try{if(e===t)return!0;if(Mn(e)&&Mn(t)){if(e.length!==t.length)return!1;for(let i=0;i0?", ":"")+wn(this[i],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t=0&&e=0&&e2*Math.PI)throw Error("expected radians")}const dr="uniform layerUniforms {\n uniform float opacity;\n} layer;\n",pr={name:"layer",vs:dr,fs:dr,getUniforms:e=>({opacity:Math.pow(e.opacity,1/2.2)}),uniformTypes:{opacity:"f32"}},fr="#define SMOOTH_EDGE_RADIUS 0.5",_r={name:"geometry",source:"const SMOOTH_EDGE_RADIUS: f32 = 0.5;\n\nstruct VertexGeometry {\n position: vec4,\n worldPosition: vec3,\n worldPositionAlt: vec3,\n normal: vec3,\n uv: vec2,\n pickingColor: vec3,\n};\n\nvar geometry_: VertexGeometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0, 0.0, 0.0),\n vec3(0.0, 0.0, 0.0),\n vec3(0.0, 0.0, 0.0),\n vec2(0.0, 0.0),\n vec3(0.0, 0.0, 0.0)\n);\n\nstruct FragmentGeometry {\n uv: vec2,\n};\n\nvar fragmentGeometry: FragmentGeometry;\n\nfn smoothedge(edge: f32, x: f32) -> f32 {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n",vs:`${fr}\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n`,fs:`${fr}\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n`};var gr,mr,Er,vr,Tr,Rr;(mr=gr||(gr={}))[mr.Start=1]="Start",mr[mr.Move=2]="Move",mr[mr.End=4]="End",mr[mr.Cancel=8]="Cancel",(vr=Er||(Er={}))[vr.None=0]="None",vr[vr.Left=1]="Left",vr[vr.Right=2]="Right",vr[vr.Up=4]="Up",vr[vr.Down=8]="Down",vr[vr.Horizontal=3]="Horizontal",vr[vr.Vertical=12]="Vertical",vr[vr.All=15]="All",(Rr=Tr||(Tr={}))[Rr.Possible=1]="Possible",Rr[Rr.Began=2]="Began",Rr[Rr.Changed=4]="Changed",Rr[Rr.Ended=8]="Ended",Rr[Rr.Recognized=8]="Recognized",Rr[Rr.Cancelled=16]="Cancelled",Rr[Rr.Failed=32]="Failed";const br="manipulation",Ar="none",Sr="pan-x",yr="pan-y";class wr{constructor(e,t){this.actions="",this.manager=e,this.set(t)}set(e){"compute"===e&&(e=this.compute()),this.manager.element&&(this.manager.element.style.touchAction=e,this.actions=e)}update(){this.set(this.manager.options.touchAction)}compute(){let e=[];for(const t of this.manager.recognizers)t.options.enable&&(e=e.concat(t.getTouchAction()));return function(e){if(e.includes(Ar))return Ar;const t=e.includes(Sr),i=e.includes(yr);return t&&i?Ar:t||i?t?Sr:yr:e.includes(br)?br:"auto"}(e.join(" "))}}function Mr(e){return e.trim().split(/\s+/g)}function Cr(e,t,i){if(e)for(const n of Mr(t))e.addEventListener(n,i,!1)}function Pr(e,t,i){if(e)for(const n of Mr(t))e.removeEventListener(n,i,!1)}function Ir(e){return(e.ownerDocument||e).defaultView}function Lr(e){const t=e.length;if(1===t)return{x:Math.round(e[0].clientX),y:Math.round(e[0].clientY)};let i=0,n=0,r=0;for(;r=Math.abs(t)?e<0?Er.Left:Er.Right:t<0?Er.Up:Er.Down}function Br(e,t,i){return{x:t/e||0,y:i/e||0}}let Ur=class{constructor(e){this.evEl="",this.evWin="",this.evTarget="",this.domHandler=e=>{this.manager.options.enable&&this.handler(e)},this.manager=e,this.element=e.element,this.target=e.options.inputTarget||e.element}callback(e,t){!function(e,t,i){const n=i.pointers.length,r=i.changedPointers.length,s=t&gr.Start&&n-r===0,o=t&(gr.End|gr.Cancel)&&n-r===0;i.isFirst=Boolean(s),i.isFinal=Boolean(o),s&&(e.session={}),i.eventType=t;const a=function(e,t){const{session:i}=e,{pointers:n}=t,{length:r}=n;i.firstInput||(i.firstInput=Or(t)),r>1&&!i.firstMultiple?i.firstMultiple=Or(t):1===r&&(i.firstMultiple=!1);const{firstInput:s,firstMultiple:o}=i,a=o?o.center:s.center,c=t.center=Lr(n);t.timeStamp=Date.now(),t.deltaTime=t.timeStamp-s.timeStamp,t.angle=function(e,t){const i=t.x-e.x,n=t.y-e.y;return 180*Math.atan2(n,i)/Math.PI}(a,c),t.distance=Nr(a,c);const{deltaX:l,deltaY:h}=function(e,t){const i=t.center;let n=e.offsetDelta,r=e.prevDelta;const s=e.prevInput;return t.eventType!==gr.Start&&(null==s?void 0:s.eventType)!==gr.End||(r=e.prevDelta={x:(null==s?void 0:s.deltaX)||0,y:(null==s?void 0:s.deltaY)||0},n=e.offsetDelta={x:i.x,y:i.y}),{deltaX:r.x+(i.x-n.x),deltaY:r.y+(i.y-n.y)}}(i,t);t.deltaX=l,t.deltaY=h,t.offsetDirection=Fr(t.deltaX,t.deltaY);const u=Br(t.deltaTime,t.deltaX,t.deltaY);var d,p;t.overallVelocityX=u.x,t.overallVelocityY=u.y,t.overallVelocity=Math.abs(u.x)>Math.abs(u.y)?u.x:u.y,t.scale=o?(d=o.pointers,xr((p=n)[0],p[1])/xr(d[0],d[1])):1,t.rotation=o?function(e,t){return Dr(t[1],t[0])-Dr(e[1],e[0])}(o.pointers,n):0,t.maxPointers=i.prevInput?t.pointers.length>i.prevInput.maxPointers?t.pointers.length:i.prevInput.maxPointers:t.pointers.length;let f=e.element;return function(e,t){let i=e;for(;i;){if(i===t)return!0;i=i.parentNode}return!1}(t.srcEvent.target,f)&&(f=t.srcEvent.target),t.target=f,function(e,t){const i=e.lastInterval||t,n=t.timeStamp-i.timeStamp;let r,s,o,a;if(t.eventType!==gr.Cancel&&(n>25||void 0===i.velocity)){const c=t.deltaX-i.deltaX,l=t.deltaY-i.deltaY,h=Br(n,c,l);s=h.x,o=h.y,r=Math.abs(h.x)>Math.abs(h.y)?h.x:h.y,a=Fr(c,l),e.lastInterval=t}else r=i.velocity,s=i.velocityX,o=i.velocityY,a=i.direction;t.velocity=r,t.velocityX=s,t.velocityY=o,t.direction=a}(i,t),t}(e,i);e.emit("hammer.input",a),e.recognize(a),e.session.prevInput=a}(this.manager,e,t)}init(){Cr(this.element,this.evEl,this.domHandler),Cr(this.target,this.evTarget,this.domHandler),Cr(Ir(this.element),this.evWin,this.domHandler)}destroy(){Pr(this.element,this.evEl,this.domHandler),Pr(this.target,this.evTarget,this.domHandler),Pr(Ir(this.element),this.evWin,this.domHandler)}};const kr={pointerdown:gr.Start,pointermove:gr.Move,pointerup:gr.End,pointercancel:gr.Cancel,pointerout:gr.Cancel};class Gr extends Ur{constructor(e){super(e),this.evEl="pointerdown",this.evWin="pointermove pointerup pointercancel",this.store=this.manager.session.pointerEvents=[],this.init()}handler(e){const{store:t}=this;let i=!1;const n=kr[e.type],r=e.pointerType,s="touch"===r;let o=t.findIndex(t=>t.pointerId===e.pointerId);n&gr.Start&&(e.buttons||s)?o<0&&(t.push(e),o=t.length-1):n&(gr.End|gr.Cancel)&&(i=!0),o<0||(t[o]=e,this.callback(n,{pointers:t,changedPointers:[e],eventType:n,pointerType:r,srcEvent:e}),i&&t.splice(o,1))}}const Vr=["","webkit","Moz","MS","ms","o"];function jr(e,t){const i=t[0].toUpperCase()+t.slice(1);for(const n of Vr){const r=n?n+i:t;if(r in e)return r}}const Wr={touchAction:"compute",enable:!0,inputTarget:null,cssProps:{userSelect:"none",userDrag:"none",touchCallout:"none",tapHighlightColor:"rgba(0,0,0,0)"}};class zr{constructor(e,t){this.options={...Wr,...t,cssProps:{...Wr.cssProps,...t.cssProps},inputTarget:t.inputTarget||e},this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=new Gr(this),this.touchAction=new wr(this,this.options.touchAction),this.toggleCssProps(!0)}set(e){return Object.assign(this.options,e),e.touchAction&&this.touchAction.update(),e.inputTarget&&(this.input.destroy(),this.input.target=e.inputTarget,this.input.init()),this}stop(e){this.session.stopped=e?2:1}recognize(e){const{session:t}=this;if(t.stopped)return;let i;this.session.prevented&&e.srcEvent.preventDefault();const{recognizers:n}=this;let{curRecognizer:r}=t;(!r||r&&r.state&Tr.Recognized)&&(r=t.curRecognizer=null);let s=0;for(;s-1&&this.requireFail.splice(e,1)}return this}hasRequireFailures(){return Boolean(this.requireFail.find(e=>e.options.enable))}canRecognizeWith(e){return Boolean(this.simultaneous[e.id])}emit(e){if(!e)return;const{state:t}=this;t=Tr.Ended&&this.manager.emit(this.options.event+Xr(t),e)}tryEmit(e){this.canEmit()?this.emit(e):this.state=Tr.Failed}canEmit(){let e=0;for(;e{this.state=Tr.Recognized,this.tryEmit(this._input)},t.interval),Tr.Began):Tr.Recognized}return Tr.Failed}failTimeout(){return this._timer=setTimeout(()=>{this.state=Tr.Failed},this.options.interval),Tr.Failed}reset(){clearTimeout(this._timer)}emit(e){this.state===Tr.Recognized&&(e.tapCount=this.count,this.manager.emit(this.options.event,e))}}const Zr=["","start","move","end","cancel","up","down","left","right"];class qr extends Yr{constructor(e={}){super({enable:!0,pointers:1,event:"pan",threshold:10,direction:Er.All,...e}),this.pX=null,this.pY=null}getTouchAction(){const{options:{direction:e}}=this,t=[];return e&Er.Horizontal&&t.push(yr),e&Er.Vertical&&t.push(Sr),t}getEventNames(){return Zr.map(e=>this.options.event+e)}directionTest(e){const{options:t}=this;let i=!0,{distance:n}=e,{direction:r}=e;const s=e.deltaX,o=e.deltaY;return r&t.direction||(t.direction&Er.Horizontal?(r=0===s?Er.None:s<0?Er.Left:Er.Right,i=s!==this.pX,n=Math.abs(e.deltaX)):(r=0===o?Er.None:o<0?Er.Up:Er.Down,i=o!==this.pY,n=Math.abs(e.deltaY))),e.direction=r,i&&n>t.threshold&&Boolean(r&t.direction)}attrTest(e){return super.attrTest(e)&&(Boolean(this.state&Tr.Began)||!(this.state&Tr.Began)&&this.directionTest(e))}emit(e){this.pX=e.deltaX,this.pY=e.deltaY;const t=Er[e.direction].toLowerCase();t&&(e.additionalEvent=this.options.event+t),super.emit(e)}}const Qr=["","start","move","end","cancel","in","out"];class Jr{constructor(e,t,i){this.element=e,this.callback=t,this.options=i}}const es=-1!==("undefined"!=typeof navigator&&navigator.userAgent?navigator.userAgent.toLowerCase():"").indexOf("firefox"),ts=4.000244140625;class is extends Jr{constructor(e,t,i){super(e,t,{enable:!0,...i}),this.handleEvent=e=>{if(!this.options.enable)return;let t=e.deltaY;globalThis.WheelEvent&&(es&&e.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(t/=globalThis.devicePixelRatio),e.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(t*=40)),0!==t&&t%ts===0&&(t=Math.floor(t/ts)),e.shiftKey&&t&&(t*=.25),this.callback({type:"wheel",center:{x:e.clientX,y:e.clientY},delta:-t,srcEvent:e,pointerType:"mouse",target:e.target})},e.addEventListener("wheel",this.handleEvent,{passive:!1})}destroy(){this.element.removeEventListener("wheel",this.handleEvent)}enableEventType(e,t){"wheel"===e&&(this.options.enable=t)}}const ns=["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"];class rs extends Jr{constructor(e,t,i){super(e,t,{enable:!0,...i}),this.handleEvent=e=>{this.handleOverEvent(e),this.handleOutEvent(e),this.handleEnterEvent(e),this.handleLeaveEvent(e),this.handleMoveEvent(e)},this.pressed=!1;const{enable:n}=this.options;this.enableMoveEvent=n,this.enableLeaveEvent=n,this.enableEnterEvent=n,this.enableOutEvent=n,this.enableOverEvent=n,ns.forEach(t=>e.addEventListener(t,this.handleEvent))}destroy(){ns.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,t){switch(e){case"pointermove":this.enableMoveEvent=t;break;case"pointerover":this.enableOverEvent=t;break;case"pointerout":this.enableOutEvent=t;break;case"pointerenter":this.enableEnterEvent=t;break;case"pointerleave":this.enableLeaveEvent=t}}handleOverEvent(e){this.enableOverEvent&&"mouseover"===e.type&&this._emit("pointerover",e)}handleOutEvent(e){this.enableOutEvent&&"mouseout"===e.type&&this._emit("pointerout",e)}handleEnterEvent(e){this.enableEnterEvent&&"mouseenter"===e.type&&this._emit("pointerenter",e)}handleLeaveEvent(e){this.enableLeaveEvent&&"mouseleave"===e.type&&this._emit("pointerleave",e)}handleMoveEvent(e){if(this.enableMoveEvent)switch(e.type){case"mousedown":e.button>=0&&(this.pressed=!0);break;case"mousemove":0===e.buttons&&(this.pressed=!1),this.pressed||this._emit("pointermove",e);break;case"mouseup":this.pressed=!1}}_emit(e,t){this.callback({type:e,center:{x:t.clientX,y:t.clientY},srcEvent:t,pointerType:"mouse",target:t.target})}}const ss=["keydown","keyup"];class os extends Jr{constructor(e,t,i){super(e,t,{enable:!0,tabIndex:0,...i}),this.handleEvent=e=>{const t=e.target||e.srcElement;"INPUT"===t.tagName&&"text"===t.type||"TEXTAREA"===t.tagName||(this.enableDownEvent&&"keydown"===e.type&&this.callback({type:"keydown",srcEvent:e,key:e.key,target:e.target}),this.enableUpEvent&&"keyup"===e.type&&this.callback({type:"keyup",srcEvent:e,key:e.key,target:e.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,e.tabIndex=this.options.tabIndex,e.style.outline="none",ss.forEach(t=>e.addEventListener(t,this.handleEvent))}destroy(){ss.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,t){"keydown"===e&&(this.enableDownEvent=t),"keyup"===e&&(this.enableUpEvent=t)}}class as extends Jr{constructor(e,t,i){super(e,t,i),this.handleEvent=e=>{this.options.enable&&this.callback({type:"contextmenu",center:{x:e.clientX,y:e.clientY},srcEvent:e,pointerType:"mouse",target:e.target})},e.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(e,t){"contextmenu"===e&&(this.options.enable=t)}}const cs={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4};function ls(e){const t=cs[e.srcEvent.type];if(!t)return null;const{buttons:i,button:n}=e.srcEvent;let r=!1,s=!1,o=!1;return 2===t?(r=Boolean(1&i),s=Boolean(4&i),o=Boolean(2&i)):(r=0===n,s=1===n,o=2===n),{leftButton:r,middleButton:s,rightButton:o}}function hs(e,t){const i=e.center;if(!i)return null;const n=t.getBoundingClientRect(),r=n.width/t.offsetWidth||1,s=n.height/t.offsetHeight||1;return{center:i,offsetCenter:{x:(i.x-n.left-t.clientLeft)/r,y:(i.y-n.top-t.clientTop)/s}}}const us={srcElement:"root",priority:0};class ds{constructor(e,t){this.handleEvent=e=>{if(this.isEmpty())return;const t=this._normalizeEvent(e);let i=e.srcEvent.target;for(;i&&i!==t.rootElement;){if(this._emit(t,i),t.handled)return;i=i.parentNode}this._emit(t,"root")},this.eventManager=e,this.recognizerName=t,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(e,t,i,n=!1,r=!1){const{handlers:s,handlersByElement:o}=this,a={...us,...i};let c=o.get(a.srcElement);c||(c=[],o.set(a.srcElement,c));const l={type:e,handler:t,srcElement:a.srcElement,priority:a.priority};n&&(l.once=!0),r&&(l.passive=!0),s.push(l),this._active=this._active||!l.passive;let h=c.length-1;for(;h>=0&&!(c[h].priority>=l.priority);)h--;c.splice(h+1,0,l)}remove(e,t){const{handlers:i,handlersByElement:n}=this;for(let r=i.length-1;r>=0;r--){const s=i[r];if(s.type===e&&s.handler===t){i.splice(r,1);const e=n.get(s.srcElement);e.splice(e.indexOf(s),1),0===e.length&&n.delete(s.srcElement)}}this._active=i.some(e=>!e.passive)}_emit(e,t){const i=this.handlersByElement.get(t);if(i){let t=!1;const n=()=>{e.handled=!0},r=()=>{e.handled=!0,t=!0},s=[];for(let o=0;o{e.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:t}}}function ps(e){if("recognizer"in e)return e;let t;const i=Array.isArray(e)?[...e]:[e];return t="function"==typeof i[0]?new(i.shift())(i.shift()||{}):i.shift(),{recognizer:t,recognizeWith:"string"==typeof i[0]?[i[0]]:i[0],requireFailure:"string"==typeof i[1]?[i[1]]:i[1]}}class fs{constructor(e=null,t={}){if(this._onBasicInput=e=>{this.manager.emit(e.srcEvent.type,e)},this._onOtherEvent=e=>{this.manager.emit(e.type,e)},this.options={recognizers:[],events:{},touchAction:"compute",tabIndex:0,cssProps:{},...t},this.events=new Map,this.element=e,e){this.manager=new zr(e,this.options);for(const e of this.options.recognizers){const{recognizer:t,recognizeWith:i,requireFailure:n}=ps(e);this.manager.add(t),i&&t.recognizeWith(i),n&&t.requireFailure(n)}this.manager.on("hammer.input",this._onBasicInput),this.wheelInput=new is(e,this._onOtherEvent,{enable:!1}),this.moveInput=new rs(e,this._onOtherEvent,{enable:!1}),this.keyInput=new os(e,this._onOtherEvent,{enable:!1,tabIndex:t.tabIndex}),this.contextmenuInput=new as(e,this._onOtherEvent,{enable:!1}),this.on(this.options.events)}}getElement(){return this.element}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy())}on(e,t,i){this._addEventHandler(e,t,i,!1)}once(e,t,i){this._addEventHandler(e,t,i,!0)}watch(e,t,i){this._addEventHandler(e,t,i,!1,!0)}off(e,t){this._removeEventHandler(e,t)}_toggleRecognizer(e,t){var i,n,r,s;const{manager:o}=this;if(!o)return;const a=o.get(e);a&&(a.set({enable:t}),o.touchAction.update()),null==(i=this.wheelInput)||i.enableEventType(e,t),null==(n=this.moveInput)||n.enableEventType(e,t),null==(r=this.keyInput)||r.enableEventType(e,t),null==(s=this.contextmenuInput)||s.enableEventType(e,t)}_addEventHandler(e,t,i,n,r){if("string"!=typeof e){i=t;for(const[t,s]of Object.entries(e))this._addEventHandler(t,s,i,n,r);return}const{manager:s,events:o}=this;if(!s)return;let a=o.get(e);if(!a){const t=this._getRecognizerName(e)||e;a=new ds(this,t),o.set(e,a),s&&s.on(e,a.handleEvent)}a.add(e,t,i,n,r),a.isEmpty()||this._toggleRecognizer(a.recognizerName,!0)}_removeEventHandler(e,t){if("string"!=typeof e){for(const[t,i]of Object.entries(e))this._removeEventHandler(t,i);return}const{events:i}=this,n=i.get(e);if(n&&(n.remove(e,t),n.isEmpty())){const{recognizerName:e}=n;let t=!1;for(const n of i.values())if(n.recognizerName===e&&!n.isEmpty()){t=!0;break}t||this._toggleRecognizer(e,!1)}}_getRecognizerName(e){var t;return null==(t=this.manager.recognizers.find(t=>t.getEventNames().includes(e)))?void 0:t.options.event}}const _s={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(_s,"IDENTITY",{get:()=>(ft.deprecated("COORDINATE_SYSTEM.IDENTITY","COORDINATE_SYSTEM.CARTESIAN")(),0)});const gs={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},ms={common:0,meters:1,pixels:2},Es={click:"onClick",dblclick:"onClick",panstart:"onDragStart",panmove:"onDrag",panend:"onDragEnd"},vs={multipan:[qr,{threshold:10,direction:Er.Vertical,pointers:2}],pinch:[class extends Yr{constructor(e={}){super({enable:!0,event:"pinch",threshold:0,pointers:2,...e})}getTouchAction(){return[Ar]}getEventNames(){return Qr.map(e=>this.options.event+e)}attrTest(e){return super.attrTest(e)&&(Math.abs(e.scale-1)>this.options.threshold||Boolean(this.state&Tr.Began))}emit(e){if(1!==e.scale){const t=e.scale<1?"in":"out";e.additionalEvent=this.options.event+t}super.emit(e)}},{},null,["multipan"]],pan:[qr,{threshold:1},["pinch"],["multipan"]],dblclick:[Kr,{event:"dblclick",taps:2}],click:[Kr,{event:"click"},null,["dblclick"]]};function Ts(e,t){if(e===t)return!0;if(Array.isArray(e)){const i=e.length;if(!t||t.length!==i)return!1;for(let n=0;n{for(const r in n)if(!Ts(n[r],i[r])){t=e(n),i=n;break}return t}}const bs=[0,0,0,0],As=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],Ss=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],ys=[0,0,0],ws=[0,0,0],Ms=Rs(function({viewport:e,devicePixelRatio:t,coordinateSystem:i,coordinateOrigin:n}){const{projectionCenter:r,viewProjectionMatrix:s,originCommon:o,cameraPosCommon:a,shaderCoordinateOrigin:c,geospatialOrigin:l}=function(e,t,i){const{viewMatrixUncentered:n,projectionMatrix:r}=e;let{viewMatrix:s,viewProjectionMatrix:o}=e,a=bs,c=bs,l=e.cameraPosition;const{geospatialOrigin:h,shaderCoordinateOrigin:u,offsetMode:d}=function(e,t,i=ws){i.length<3&&(i=[i[0],i[1],0]);let n,r=i,s=!0;switch(n=t===_s.LNGLAT_OFFSETS||t===_s.METER_OFFSETS?i:e.isGeospatial?[Math.fround(e.longitude),Math.fround(e.latitude),0]:null,e.projectionMode){case gs.WEB_MERCATOR:t!==_s.LNGLAT&&t!==_s.CARTESIAN||(n=[0,0,0],s=!1);break;case gs.WEB_MERCATOR_AUTO_OFFSET:t===_s.LNGLAT?r=n:t===_s.CARTESIAN&&(r=[Math.fround(e.center[0]),Math.fround(e.center[1]),0],n=e.unprojectPosition(r),r[0]-=i[0],r[1]-=i[1],r[2]-=i[2]);break;case gs.IDENTITY:r=e.position.map(Math.fround),r[2]=r[2]||0;break;case gs.GLOBE:s=!1,n=null;break;default:s=!1}return{geospatialOrigin:n,shaderCoordinateOrigin:r,offsetMode:s}}(e,t,i);return d&&(c=e.projectPosition(h||u),l=[l[0]-c[0],l[1]-c[1],l[2]-c[2]],c[3]=1,a=er([],c,o),s=n||s,o=Yn([],r,s),o=Yn([],o,As)),{viewMatrix:s,viewProjectionMatrix:o,projectionCenter:a,originCommon:c,cameraPosCommon:l,shaderCoordinateOrigin:u,geospatialOrigin:h}}(e,i,n),h=e.getDistanceScales(),u=[e.width*t,e.height*t],d=er([],[0,0,-e.focalDistance,1],e.projectionMatrix)[3]||1,p={coordinateSystem:i,projectionMode:e.projectionMode,coordinateOrigin:c,commonOrigin:o.slice(0,3),center:r,pseudoMeters:Boolean(e._pseudoMeters),viewportSize:u,devicePixelRatio:t,focalDistance:d,commonUnitsPerMeter:h.unitsPerMeter,commonUnitsPerWorldUnit:h.unitsPerMeter,commonUnitsPerWorldUnit2:ys,scale:e.scale,wrapLongitude:!1,viewProjectionMatrix:s,modelMatrix:Ss,cameraPosition:a};if(l){const t=e.getDistanceScales(l);switch(i){case _s.METER_OFFSETS:p.commonUnitsPerWorldUnit=t.unitsPerMeter,p.commonUnitsPerWorldUnit2=t.unitsPerMeter2;break;case _s.LNGLAT:case _s.LNGLAT_OFFSETS:e._pseudoMeters||(p.commonUnitsPerMeter=t.unitsPerMeter),p.commonUnitsPerWorldUnit=t.unitsPerDegree,p.commonUnitsPerWorldUnit2=t.unitsPerDegree2;break;case _s.CARTESIAN:p.commonUnitsPerWorldUnit=[1,1,t.unitsPerMeter[2]],p.commonUnitsPerWorldUnit2=[0,0,t.unitsPerMeter2[2]]}}return p}),Cs=`${Object.keys(_s).map(e=>`const COORDINATE_SYSTEM_${e}: i32 = ${_s[e]};`).join("")}\n${Object.keys(gs).map(e=>`const PROJECTION_MODE_${e}: i32 = ${gs[e]};`).join("")}\n${Object.keys(ms).map(e=>`const UNIT_${e.toUpperCase()}: i32 = ${ms[e]};`).join("")}\n\nconst TILE_SIZE: f32 = 512.0;\nconst PI: f32 = 3.1415926536;\nconst WORLD_SCALE: f32 = TILE_SIZE / (PI * 2.0);\nconst ZERO_64_LOW: vec3 = vec3(0.0, 0.0, 0.0);\nconst EARTH_RADIUS: f32 = 6370972.0; // meters\nconst GLOBE_RADIUS: f32 = 256.0;\n\n// -----------------------------------------------------------------------------\n// Uniform block (converted from GLSL uniform block)\n// -----------------------------------------------------------------------------\nstruct ProjectUniforms {\n wrapLongitude: i32,\n coordinateSystem: i32,\n commonUnitsPerMeter: vec3,\n projectionMode: i32,\n scale: f32,\n commonUnitsPerWorldUnit: vec3,\n commonUnitsPerWorldUnit2: vec3,\n center: vec4,\n modelMatrix: mat4x4,\n viewProjectionMatrix: mat4x4,\n viewportSize: vec2,\n devicePixelRatio: f32,\n focalDistance: f32,\n cameraPosition: vec3,\n coordinateOrigin: vec3,\n commonOrigin: vec3,\n pseudoMeters: i32,\n};\n\n@group(0) @binding(0)\nvar project: ProjectUniforms;\n\n// -----------------------------------------------------------------------------\n// Geometry data\n// (In your GLSL code, "geometry" was assumed to be available globally. In WGSL,\n// you might supply this via vertex attributes or a uniform. Here we define a\n// uniform struct for demonstration.)\n// -----------------------------------------------------------------------------\n\n// Structure to carry additional geometry data used by deck.gl filters.\nstruct Geometry {\n worldPosition: vec3,\n worldPositionAlt: vec3,\n position: vec4,\n normal: vec3,\n uv: vec2,\n pickingColor: vec3,\n};\n\n// @group(0) @binding(1)\nvar geometry: Geometry;\n\n\n// -----------------------------------------------------------------------------\n// Functions\n// -----------------------------------------------------------------------------\n\n// Returns an adjustment factor for commonUnitsPerMeter\nfn _project_size_at_latitude(lat: f32) -> f32 {\n let y = clamp(lat, -89.9, 89.9);\n return 1.0 / cos(radians(y));\n}\n\n// Overloaded version: scales a value in meters at a given latitude.\nfn _project_size_at_latitude_m(meters: f32, lat: f32) -> f32 {\n return meters * project.commonUnitsPerMeter.z * _project_size_at_latitude(lat);\n}\n\n// Computes a non-linear scale factor based on geometry.\n// (Note: This function relies on "geometry" being provided.)\nfn project_size() -> f32 {\n if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR &&\n project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\n project.pseudoMeters == 0) {\n if (geometry.position.w == 0.0) {\n return _project_size_at_latitude(geometry.worldPosition.y);\n }\n let y: f32 = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\n let y2 = y * y;\n let y4 = y2 * y2;\n let y6 = y4 * y2;\n return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\n }\n return 1.0;\n}\n\n// Overloads to scale offsets (meters to world units)\nfn project_size_float(meters: f32) -> f32 {\n return meters * project.commonUnitsPerMeter.z * project_size();\n}\n\nfn project_size_vec2(meters: vec2) -> vec2 {\n return meters * project.commonUnitsPerMeter.xy * project_size();\n}\n\nfn project_size_vec3(meters: vec3) -> vec3 {\n return meters * project.commonUnitsPerMeter * project_size();\n}\n\nfn project_size_vec4(meters: vec4) -> vec4 {\n return vec4(meters.xyz * project.commonUnitsPerMeter, meters.w);\n}\n\n// Returns a rotation matrix aligning the z‑axis with the given up vector.\nfn project_get_orientation_matrix(up: vec3) -> mat3x3 {\n let uz = normalize(up);\n let ux = select(\n vec3(1.0, 0.0, 0.0),\n normalize(vec3(uz.y, -uz.x, 0.0)),\n abs(uz.z) == 1.0\n );\n let uy = cross(uz, ux);\n return mat3x3(ux, uy, uz);\n}\n\n// Since WGSL does not support "out" parameters, we return a struct.\nstruct RotationResult {\n needsRotation: bool,\n transform: mat3x3,\n};\n\nfn project_needs_rotation(commonPosition: vec3) -> RotationResult {\n if (project.projectionMode == PROJECTION_MODE_GLOBE) {\n return RotationResult(true, project_get_orientation_matrix(commonPosition));\n } else {\n return RotationResult(false, mat3x3()); // identity alternative if needed\n };\n}\n\n// Projects a normal vector from the current coordinate system to world space.\nfn project_normal(vector: vec3) -> vec3 {\n let normal_modelspace = project.modelMatrix * vec4(vector, 0.0);\n var n = normalize(normal_modelspace.xyz * project.commonUnitsPerMeter);\n let rotResult = project_needs_rotation(geometry.position.xyz);\n if (rotResult.needsRotation) {\n n = rotResult.transform * n;\n }\n return n;\n}\n\n// Applies a scale offset based on y-offset (dy)\nfn project_offset_(offset: vec4) -> vec4 {\n let dy: f32 = offset.y;\n let commonUnitsPerWorldUnit = project.commonUnitsPerWorldUnit + project.commonUnitsPerWorldUnit2 * dy;\n return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\n}\n\n// Projects lng/lat coordinates to a unit tile [0,1]\nfn project_mercator_(lnglat: vec2) -> vec2 {\n var x = lnglat.x;\n if (project.wrapLongitude != 0) {\n x = ((x + 180.0) % 360.0) - 180.0;\n }\n let y = clamp(lnglat.y, -89.9, 89.9);\n return vec2(\n radians(x) + PI,\n PI + log(tan(PI * 0.25 + radians(y) * 0.5))\n ) * WORLD_SCALE;\n}\n\n// Projects lng/lat/z coordinates for a globe projection.\nfn project_globe_(lnglatz: vec3) -> vec3 {\n let lambda = radians(lnglatz.x);\n let phi = radians(lnglatz.y);\n let cosPhi = cos(phi);\n let D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\n return vec3(\n sin(lambda) * cosPhi,\n -cos(lambda) * cosPhi,\n sin(phi)\n ) * D;\n}\n\n// Projects positions (with an optional 64-bit low part) from the input\n// coordinate system to the common space.\nfn project_position_vec4_f64(position: vec4, position64Low: vec3) -> vec4 {\n var position_world = project.modelMatrix * position;\n\n // Work around for a Mac+NVIDIA bug:\n if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR) {\n if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_mercator_(position_world.xy),\n _project_size_at_latitude_m(position_world.z, position_world.y),\n position_world.w\n );\n }\n if (project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\n position_world = vec4f(position_world.xyz + project.coordinateOrigin, position_world.w);\n }\n }\n if (project.projectionMode == PROJECTION_MODE_GLOBE) {\n if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n return vec4(\n project_globe_(position_world.xyz),\n position_world.w\n );\n }\n }\n if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\n if (abs(position_world.y - project.coordinateOrigin.y) > 0.25) {\n return vec4(\n project_mercator_(position_world.xy) - project.commonOrigin.xy,\n project_size_float(position_world.z),\n position_world.w\n );\n }\n }\n }\n if (project.projectionMode == PROJECTION_MODE_IDENTITY ||\n (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\n (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\n project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\n position_world = vec4f(position_world.xyz - project.coordinateOrigin, position_world.w);\n }\n\n return project_offset_(position_world) +\n project_offset_(project.modelMatrix * vec4(position64Low, 0.0));\n}\n\n// Overloaded versions for different input types.\nfn project_position_vec4_f32(position: vec4) -> vec4 {\n return project_position_vec4_f64(position, ZERO_64_LOW);\n}\n\nfn project_position_vec3_f64(position: vec3, position64Low: vec3) -> vec3 {\n let projected_position = project_position_vec4_f64(vec4(position, 1.0), position64Low);\n return projected_position.xyz;\n}\n\nfn project_position_vec3_f32(position: vec3) -> vec3 {\n let projected_position = project_position_vec4_f64(vec4(position, 1.0), ZERO_64_LOW);\n return projected_position.xyz;\n}\n\nfn project_position_vec2_f32(position: vec2) -> vec2 {\n let projected_position = project_position_vec4_f64(vec4(position, 0.0, 1.0), ZERO_64_LOW);\n return projected_position.xy;\n}\n\n// Transforms a common space position to clip space.\nfn project_common_position_to_clipspace_with_projection(position: vec4, viewProjectionMatrix: mat4x4, center: vec4) -> vec4 {\n return viewProjectionMatrix * position + center;\n}\n\n// Uses the project viewProjectionMatrix and center.\nfn project_common_position_to_clipspace(position: vec4) -> vec4 {\n return project_common_position_to_clipspace_with_projection(position, project.viewProjectionMatrix, project.center);\n}\n\n// Returns a clip space offset corresponding to a given number of screen pixels.\nfn project_pixel_size_to_clipspace(pixels: vec2) -> vec2 {\n let offset = pixels / project.viewportSize * project.devicePixelRatio * 2.0;\n return offset * project.focalDistance;\n}\n\nfn project_meter_size_to_pixel(meters: f32) -> f32 {\n return project_size_float(meters) * project.scale;\n}\n\nfn project_unit_size_to_pixel(size: f32, unit: i32) -> f32 {\n if (unit == UNIT_METERS) {\n return project_meter_size_to_pixel(size);\n } else if (unit == UNIT_COMMON) {\n return size * project.scale;\n }\n // UNIT_PIXELS: no scaling applied.\n return size;\n}\n\nfn project_pixel_size_float(pixels: f32) -> f32 {\n return pixels / project.scale;\n}\n\nfn project_pixel_size_vec2(pixels: vec2) -> vec2 {\n return pixels / project.scale;\n}\n`,Ps=Object.keys(_s).map(e=>`const int COORDINATE_SYSTEM_${e} = ${_s[e]};`).join(""),Is=Object.keys(gs).map(e=>`const int PROJECTION_MODE_${e} = ${gs[e]};`).join(""),Ls=Object.keys(ms).map(e=>`const int UNIT_${e.toUpperCase()} = ${ms[e]};`).join(""),Os={},Ns={name:"project",dependencies:[{name:"fp32",vs:"#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n\n// All these functions are for substituting tan() function from Intel GPU only\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; // 1/3!\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; // 1/5!\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; // 1/7!\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; // 1/9!\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n // 2pi range reduction\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 1.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 1.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n"},_r],source:Cs,vs:`${Ps}\n${Is}\n${Ls}\nuniform projectUniforms {\nbool wrapLongitude;\nint coordinateSystem;\nvec3 commonUnitsPerMeter;\nint projectionMode;\nfloat scale;\nvec3 commonUnitsPerWorldUnit;\nvec3 commonUnitsPerWorldUnit2;\nvec4 center;\nmat4 modelMatrix;\nmat4 viewProjectionMatrix;\nvec2 viewportSize;\nfloat devicePixelRatio;\nfloat focalDistance;\nvec3 cameraPosition;\nvec3 coordinateOrigin;\nvec3 commonOrigin;\nbool pseudoMeters;\n} project;\nconst float TILE_SIZE = 512.0;\nconst float PI = 3.1415926536;\nconst float WORLD_SCALE = TILE_SIZE / (PI * 2.0);\nconst vec3 ZERO_64_LOW = vec3(0.0);\nconst float EARTH_RADIUS = 6370972.0;\nconst float GLOBE_RADIUS = 256.0;\nfloat project_size_at_latitude(float lat) {\nfloat y = clamp(lat, -89.9, 89.9);\nreturn 1.0 / cos(radians(y));\n}\nfloat project_size() {\nif (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR &&\nproject.coordinateSystem == COORDINATE_SYSTEM_LNGLAT &&\nproject.pseudoMeters == false) {\nif (geometry.position.w == 0.0) {\nreturn project_size_at_latitude(geometry.worldPosition.y);\n}\nfloat y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;\nfloat y2 = y * y;\nfloat y4 = y2 * y2;\nfloat y6 = y4 * y2;\nreturn 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;\n}\nreturn 1.0;\n}\nfloat project_size_at_latitude(float meters, float lat) {\nreturn meters * project.commonUnitsPerMeter.z * project_size_at_latitude(lat);\n}\nfloat project_size(float meters) {\nreturn meters * project.commonUnitsPerMeter.z * project_size();\n}\nvec2 project_size(vec2 meters) {\nreturn meters * project.commonUnitsPerMeter.xy * project_size();\n}\nvec3 project_size(vec3 meters) {\nreturn meters * project.commonUnitsPerMeter * project_size();\n}\nvec4 project_size(vec4 meters) {\nreturn vec4(meters.xyz * project.commonUnitsPerMeter, meters.w);\n}\nmat3 project_get_orientation_matrix(vec3 up) {\nvec3 uz = normalize(up);\nvec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));\nvec3 uy = cross(uz, ux);\nreturn mat3(ux, uy, uz);\n}\nbool project_needs_rotation(vec3 commonPosition, out mat3 transform) {\nif (project.projectionMode == PROJECTION_MODE_GLOBE) {\ntransform = project_get_orientation_matrix(commonPosition);\nreturn true;\n}\nreturn false;\n}\nvec3 project_normal(vec3 vector) {\nvec4 normal_modelspace = project.modelMatrix * vec4(vector, 0.0);\nvec3 n = normalize(normal_modelspace.xyz * project.commonUnitsPerMeter);\nmat3 rotation;\nif (project_needs_rotation(geometry.position.xyz, rotation)) {\nn = rotation * n;\n}\nreturn n;\n}\nvec4 project_offset_(vec4 offset) {\nfloat dy = offset.y;\nvec3 commonUnitsPerWorldUnit = project.commonUnitsPerWorldUnit + project.commonUnitsPerWorldUnit2 * dy;\nreturn vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);\n}\nvec2 project_mercator_(vec2 lnglat) {\nfloat x = lnglat.x;\nif (project.wrapLongitude) {\nx = mod(x + 180., 360.0) - 180.;\n}\nfloat y = clamp(lnglat.y, -89.9, 89.9);\nreturn vec2(\nradians(x) + PI,\nPI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))\n) * WORLD_SCALE;\n}\nvec3 project_globe_(vec3 lnglatz) {\nfloat lambda = radians(lnglatz.x);\nfloat phi = radians(lnglatz.y);\nfloat cosPhi = cos(phi);\nfloat D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;\nreturn vec3(\nsin(lambda) * cosPhi,\n-cos(lambda) * cosPhi,\nsin(phi)\n) * D;\n}\nvec4 project_position(vec4 position, vec3 position64Low) {\nvec4 position_world = project.modelMatrix * position;\nif (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR) {\nif (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\nreturn vec4(\nproject_mercator_(position_world.xy),\nproject_size_at_latitude(position_world.z, position_world.y),\nposition_world.w\n);\n}\nif (project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {\nposition_world.xyz += project.coordinateOrigin;\n}\n}\nif (project.projectionMode == PROJECTION_MODE_GLOBE) {\nif (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\nreturn vec4(\nproject_globe_(position_world.xyz),\nposition_world.w\n);\n}\n}\nif (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\nif (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {\nif (abs(position_world.y - project.coordinateOrigin.y) > 0.25) {\nreturn vec4(\nproject_mercator_(position_world.xy) - project.commonOrigin.xy,\nproject_size(position_world.z),\nposition_world.w\n);\n}\n}\n}\nif (project.projectionMode == PROJECTION_MODE_IDENTITY ||\n(project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&\n(project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT ||\nproject.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {\nposition_world.xyz -= project.coordinateOrigin;\n}\nreturn project_offset_(position_world) + project_offset_(project.modelMatrix * vec4(position64Low, 0.0));\n}\nvec4 project_position(vec4 position) {\nreturn project_position(position, ZERO_64_LOW);\n}\nvec3 project_position(vec3 position, vec3 position64Low) {\nvec4 projected_position = project_position(vec4(position, 1.0), position64Low);\nreturn projected_position.xyz;\n}\nvec3 project_position(vec3 position) {\nvec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);\nreturn projected_position.xyz;\n}\nvec2 project_position(vec2 position) {\nvec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);\nreturn projected_position.xy;\n}\nvec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {\nreturn viewProjectionMatrix * position + center;\n}\nvec4 project_common_position_to_clipspace(vec4 position) {\nreturn project_common_position_to_clipspace(position, project.viewProjectionMatrix, project.center);\n}\nvec2 project_pixel_size_to_clipspace(vec2 pixels) {\nvec2 offset = pixels / project.viewportSize * project.devicePixelRatio * 2.0;\nreturn offset * project.focalDistance;\n}\nfloat project_size_to_pixel(float meters) {\nreturn project_size(meters) * project.scale;\n}\nfloat project_size_to_pixel(float size, int unit) {\nif (unit == UNIT_METERS) return project_size_to_pixel(size);\nif (unit == UNIT_COMMON) return size * project.scale;\nreturn size;\n}\nfloat project_pixel_size(float pixels) {\nreturn pixels / project.scale;\n}\nvec2 project_pixel_size(vec2 pixels) {\nreturn pixels / project.scale;\n}\n`,getUniforms:function(e=Os){return"viewport"in e?function({viewport:e,devicePixelRatio:t=1,modelMatrix:i=null,coordinateSystem:n=_s.DEFAULT,coordinateOrigin:r=ws,autoWrapLongitude:s=!1}){n===_s.DEFAULT&&(n=e.isGeospatial?_s.LNGLAT:_s.CARTESIAN);const o=Ms({viewport:e,devicePixelRatio:t,coordinateSystem:n,coordinateOrigin:r});return o.wrapLongitude=s,o.modelMatrix=i||Ss,o}(e):{}},uniformTypes:{wrapLongitude:"f32",coordinateSystem:"i32",commonUnitsPerMeter:"vec3",projectionMode:"i32",scale:"f32",commonUnitsPerWorldUnit:"vec3",commonUnitsPerWorldUnit2:"vec3",center:"vec4",modelMatrix:"mat4x4",viewProjectionMatrix:"mat4x4",viewportSize:"vec2",devicePixelRatio:"f32",focalDistance:"f32",cameraPosition:"vec3",coordinateOrigin:"vec3",commonOrigin:"vec3",pseudoMeters:"f32"}};function xs(e,t){const i=er([],t,e);return Jn(i,i,1/i[3]),i}function Ds(e,t){const i=e%t;return i<0?t+i:i}function Fs(e,t,i){return ei?i:e}const Bs=Math.log2||function(e){return Math.log(e)*Math.LOG2E};function Us(e,t){if(!e)throw new Error(t||"@math.gl/web-mercator: assertion failed.")}const ks=Math.PI,Gs=ks/4,Vs=ks/180,js=180/ks,Ws=512,zs=85.051129,Hs=1.5;function Xs(e){const[t,i]=e;Us(Number.isFinite(t)),Us(Number.isFinite(i)&&i>=-90&&i<=90,"invalid latitude");const n=i*Vs;return[Ws*(t*Vs+ks)/(2*ks),Ws*(ks+Math.log(Math.tan(Gs+.5*n)))/(2*ks)]}function $s(e){const[t,i]=e,n=t/Ws*(2*ks)-ks,r=2*(Math.atan(Math.exp(i/Ws*(2*ks)-ks))-Gs);return[n*js,r*js]}function Ys(e){return 12790407194604047e-21/Math.cos(e*Vs)}function Ks(e){const{latitude:t,longitude:i,highPrecision:n=!1}=e;Us(Number.isFinite(t)&&Number.isFinite(i));const r=Math.cos(t*Vs),s=512/360,o=s/r,a=12790407194604047e-21/r,c={unitsPerMeter:[a,a,a],metersPerUnit:[1/a,1/a,1/a],unitsPerDegree:[s,o,a],degreesPerUnit:[.703125,1/o,1/a]};if(n){const e=Vs*Math.tan(t*Vs)/r,i=s*e/2,n=12790407194604047e-21*e,l=n/o*a;c.unitsPerDegree2=[0,i,n],c.unitsPerMeter2=[l,0,l]}return c}function Zs(e){return 2*Math.atan(.5/e)*js}function qs(e){return.5/Math.tan(.5*e*Vs)}function Qs(e,t,i=0){const[n,r,s]=e;if(Us(Number.isFinite(n)&&Number.isFinite(r),"invalid pixel coordinate"),Number.isFinite(s))return xs(t,[n,r,s,1]);const o=xs(t,[n,r,0,1]),a=xs(t,[n,r,1,1]),c=o[2],l=a[2];return kn([],o,a,c===l?0:((i||0)-c)/(l-c))}const Js=Math.PI/180;function eo(e,t,i){const{pixelUnprojectionMatrix:n}=e,r=xs(n,[t,0,1,1]),s=xs(n,[t,e.height,1,1]),o=$s(kn([],r,s,(i*e.distanceScales.unitsPerMeter[2]-r[2])/(s[2]-r[2])));return o.push(i),o}const to="\nuniform shadowUniforms {\n bool drawShadowMap;\n bool useShadowMap;\n vec4 color;\n highp int lightId;\n float lightCount;\n mat4 viewProjectionMatrix0;\n mat4 viewProjectionMatrix1;\n vec4 projectCenter0;\n vec4 projectCenter1;\n} shadow;\n",io=`\n${to}\n\nconst int max_lights = 2;\n\nout vec3 shadow_vPosition[max_lights];\n\nvec4 shadow_setVertexPosition(vec4 position_commonspace) {\n mat4 viewProjectionMatrices[max_lights];\n viewProjectionMatrices[0] = shadow.viewProjectionMatrix0;\n viewProjectionMatrices[1] = shadow.viewProjectionMatrix1;\n vec4 projectCenters[max_lights];\n projectCenters[0] = shadow.projectCenter0;\n projectCenters[1] = shadow.projectCenter1;\n\n if (shadow.drawShadowMap) {\n return project_common_position_to_clipspace(position_commonspace, viewProjectionMatrices[shadow.lightId], projectCenters[shadow.lightId]);\n }\n if (shadow.useShadowMap) {\n for (int i = 0; i < max_lights; i++) {\n if(i < int(shadow.lightCount)) {\n vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, viewProjectionMatrices[i], projectCenters[i]);\n shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;\n }\n }\n }\n return gl_Position;\n}\n\n`,no=`\n${to}\n\nconst int max_lights = 2;\nuniform sampler2D shadow_uShadowMap0;\nuniform sampler2D shadow_uShadowMap1;\n\nin vec3 shadow_vPosition[max_lights];\n\nconst vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);\nconst vec4 bitUnpackShift = 1.0 / bitPackShift;\nconst vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n\nfloat shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {\n vec4 rgbaDepth = texture(shadowMap, position.xy);\n\n float z = dot(rgbaDepth, bitUnpackShift);\n return smoothstep(0.001, 0.01, position.z - z);\n}\n\nvec4 shadow_filterShadowColor(vec4 color) {\n if (shadow.drawShadowMap) {\n vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);\n rgbaDepth -= rgbaDepth.gbaa * bitMask;\n return rgbaDepth;\n }\n if (shadow.useShadowMap) {\n float shadowAlpha = 0.0;\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);\n if(shadow.lightCount > 1.0) {\n shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);\n }\n shadowAlpha *= shadow.color.a / shadow.lightCount;\n float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);\n\n return vec4(\n mix(color.rgb, shadow.color.rgb, shadowAlpha / blendedAlpha),\n blendedAlpha\n );\n }\n return color;\n}\n\n`,ro=Rs(function({viewport:e,center:t}){return new cr(e.viewProjectionMatrix).invert().transform(t)}),so=Rs(function({viewport:e,shadowMatrices:t}){const i=[],n=e.pixelUnprojectionMatrix,r=e.isGeospatial?void 0:1,s=[[0,0,r],[e.width,0,r],[0,e.height,r],[e.width,e.height,r],[0,0,-1],[e.width,0,-1],[0,e.height,-1],[e.width,e.height,-1]].map(e=>function(e,t){const[i,n,r]=e,s=Qs([i,n,r],t);return Number.isFinite(r)?s:[s[0],s[1],0]}(e,n));for(const o of t){const t=o.clone().translate(new Hn(e.center).negate()),n=s.map(e=>t.transform(e)),r=(new cr).ortho({left:Math.min(...n.map(e=>e[0])),right:Math.max(...n.map(e=>e[0])),bottom:Math.min(...n.map(e=>e[1])),top:Math.max(...n.map(e=>e[1])),near:Math.min(...n.map(e=>-e[2])),far:Math.max(...n.map(e=>-e[2]))});i.push(r.multiplyRight(o))}return i}),oo=[0,0,0,1],ao=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],co={name:"shadow",dependencies:[Ns],vs:io,fs:no,inject:{"vs:DECKGL_FILTER_GL_POSITION":"\n position = shadow_setVertexPosition(geometry.position);\n ","fs:DECKGL_FILTER_COLOR":"\n color = shadow_filterShadowColor(color);\n "},getUniforms:function(e){const{shadowEnabled:t=!0,project:i}=e;if(!(t&&i&&e.shadowMatrices&&e.shadowMatrices.length))return{drawShadowMap:!1,useShadowMap:!1,shadow_uShadowMap0:e.dummyShadowMap,shadow_uShadowMap1:e.dummyShadowMap};const n=Ns.getUniforms(i),r=ro({viewport:i.viewport,center:n.center}),s=[],o=so({shadowMatrices:e.shadowMatrices,viewport:i.viewport}).slice();for(let c=0;c0,color:e.shadowColor||oo,lightId:e.shadowLightId||0,lightCount:e.shadowMatrices.length,shadow_uShadowMap0:e.dummyShadowMap,shadow_uShadowMap1:e.dummyShadowMap};for(let c=0;c",lightId:"i32",lightCount:"f32",viewProjectionMatrix0:"mat4x4",viewProjectionMatrix1:"mat4x4",projectCenter0:"vec4",projectCenter1:"vec4"}},lo=[_r],ho=["vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)","vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)","vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)","fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)"],uo=[];function po(e){const t=ei.getDefaultShaderAssembler();for(const n of lo)t.addDefaultModule(n);t._hookFunctions.length=0;const i="glsl"===e?ho:uo;for(const n of i)t.addShaderHook(n);return t}const fo=[255,255,255],_o=1;let go=0;class mo{constructor(e={}){this.type="ambient";const{color:t=fo}=e,{intensity:i=_o}=e;this.id=e.id||"ambient-"+go++,this.color=t,this.intensity=i}}const Eo=[255,255,255],vo=1,To=[0,0,-1];let Ro=0;class bo{constructor(e={}){this.type="directional";const{color:t=Eo}=e,{intensity:i=vo}=e,{direction:n=To}=e,{_shadow:r=!1}=e;this.id=e.id||"directional-"+Ro++,this.color=t,this.intensity=i,this.type="directional",this.direction=new Hn(n).normalize().toArray(),this.shadow=r}getProjectedLight(e){return this}}class Ao{constructor(e,t={id:"pass"}){const{id:i}=t;this.id=i,this.device=e,this.props={...t}}setProps(e){Object.assign(this.props,e)}render(e){}cleanup(){}}class So extends Ao{constructor(){super(...arguments),this._lastRenderIndex=-1}render(e){const[t,i]=this.device.canvasContext.getDrawingBufferSize(),n=e.clearCanvas??!0,r=e.clearColor??(!!n&&[0,0,0,0]),s=!!n&&1,o=!!n&&0,a=e.colorMask??15,c={viewport:[0,0,t,i]};e.colorMask&&(c.colorMask=a),e.scissorRect&&(c.scissorRect=e.scissorRect);const l=this.device.beginRenderPass({framebuffer:e.target,parameters:c,clearColor:r,clearDepth:s,clearStencil:o});try{return this._drawLayers(l,e)}finally{l.end(),this.device.submit()}}_drawLayers(e,t){const{target:i,shaderModuleProps:n,viewports:r,views:s,onViewportActive:o,clearStack:a=!0}=t;t.pass=t.pass||"unknown",a&&(this._lastRenderIndex=-1);const c=[];for(const l of r){const r=s&&s[l.id];null==o||o(l);const a=this._getDrawLayerParams(l,t),h=l.subViewports||[l];for(const s of h){const o=this._drawLayersInViewport(e,{target:i,shaderModuleProps:n,viewport:s,view:r,pass:t.pass,layers:t.layers},a);c.push(o)}}return c}_getDrawLayerParams(e,{layers:t,pass:i,isPicking:n=!1,layerFilter:r,cullRect:s,effects:o,shaderModuleProps:a},c=!1){var l;const h=[],u=yo(this._lastRenderIndex+1),d={layer:t[0],viewport:e,isPicking:n,renderPass:i,cullRect:s},p={};for(let f=0;fe/255):!1===t&&(e=!1),void 0!==i&&(s=i),void 0!==n&&(o=n),this.device.beginRenderPass({framebuffer:r,parameters:{viewport:c,scissorRect:c},clearColor:e,clearDepth:s,clearStencil:o}).end()}}const l={totalCount:t.length,visibleCount:0,compositeCount:0,pickableCount:0};e.setParameters({viewport:c});for(let u=0;u{const o=r.props._offset,a=r.id,c=r.parent&&r.parent.id;let l;if(c&&!(c in t)&&n(r.parent,!1),c in i){const e=i[c]=i[c]||yo(t[c],t);l=e(r,s),i[a]=e}else Number.isFinite(o)?(l=o+(t[c]||0),i[a]=null):l=e;return s&&l>=e&&(e=l+1),t[a]=l,l};return n}function wo(e,...t){for(const i of t)if(i)for(const t in i)e[t]?Object.assign(e[t],i[t]):e[t]=i[t];return e}class Mo extends So{constructor(e,t){super(e,t);const i=e.createTexture({format:"rgba8unorm",width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),n=e.createTexture({format:"depth16unorm",width:1,height:1});this.fbo=e.createFramebuffer({id:"shadowmap",width:1,height:1,colorAttachments:[i],depthStencilAttachment:n})}delete(){this.fbo&&(this.fbo.destroy(),this.fbo=null)}getShadowMap(){return this.fbo.colorAttachments[0].texture}render(e){const t=this.fbo,i=this.device.canvasContext.cssToDeviceRatio(),n=e.viewports[0],r=n.width*i,s=n.height*i;r===t.width&&s===t.height||t.resize({width:r,height:s}),super.render({...e,clearColor:[1,1,1,1],target:t,pass:"shadow"})}getLayerParameters(e,t,i){return{...e.props.parameters,blend:!1,depthWriteEnabled:!0,depthCompare:"less-equal"}}shouldDrawLayer(e){return!1!==e.props.shadowEnabled}getShaderModuleProps(e,t,i){return{shadow:{project:i.project,drawToShadowMap:!0}}}}const Co={color:[255,255,255],intensity:1},Po=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],Io=[0,0,0,200/255];class Lo{constructor(e={}){this.id="lighting-effect",this.shadowColor=Io,this.shadow=!1,this.directionalLights=[],this.pointLights=[],this.shadowPasses=[],this.dummyShadowMap=null,this.setProps(e)}setup(e){this.context=e;const{device:t,deck:i}=e;this.shadow&&!this.dummyShadowMap&&(this._createShadowPasses(t),i._addDefaultShaderModule(co),this.dummyShadowMap=t.createTexture({width:1,height:1}))}setProps(e){this.ambientLight=void 0,this.directionalLights=[],this.pointLights=[];for(const t in e){const i=e[t];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i)}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(e=>e.shadow),this.context&&this.setup(this.context),this.props=e}preRender({layers:e,layerFilter:t,viewports:i,onViewportActive:n,views:r}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let s=0;se.getShadowMap()),dummyShadowMap:this.dummyShadowMap,shadowColor:this.shadowColor,shadowMatrices:this.shadowMatrices}:{},n={enabled:!0,ambientLight:this.ambientLight,directionalLights:this.directionalLights.map(t=>t.getProjectedLight({layer:e})),pointLights:this.pointLights.map(t=>t.getProjectedLight({layer:e}))},r=e.props.material;return{shadow:i,lighting:n,phongMaterial:r,gouraudMaterial:r}}cleanup(e){for(const t of this.shadowPasses)t.delete();this.shadowPasses.length=0,this.dummyShadowMap&&(this.dummyShadowMap.destroy(),this.dummyShadowMap=null,e.deck._removeDefaultShaderModule(co))}_calculateMatrices(){const e=[];for(const t of this.directionalLights){const i=(new cr).lookAt({eye:new Hn(t.direction).negate()});e.push(i)}return e}_createShadowPasses(e){for(let t=0;tn&&(r=n);const s=this._pool,o=e.BYTES_PER_ELEMENT*r,a=s.findIndex(e=>e.byteLength>=o);if(a>=0){const t=new e(s.splice(a,1)[0],0,r);return i&&t.fill(0),t}return new e(r)}_release(e){if(!ArrayBuffer.isView(e))return;const t=this._pool,{buffer:i}=e,{byteLength:n}=i,r=t.findIndex(e=>e.byteLength>=n);r<0?t.push(i):(r>0||t.lengththis.opts.poolSize&&t.shift()}},No=new Hn;function xo(e,t,i,n){No.set(e,t,i);const r=No.len();return{distance:n/r,normal:new Hn(-e/r,-t/r,-i/r)}}const Do=Math.PI/180,Fo=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],Bo=[0,0,0],Uo={unitsPerMeter:[1,1,1],metersPerUnit:[1,1,1]};class ko{constructor(e={}){this._frustumPlanes={},this.id=e.id||this.constructor.displayName||"viewport",this.x=e.x||0,this.y=e.y||0,this.width=e.width||1,this.height=e.height||1,this.zoom=e.zoom||0,this.padding=e.padding,this.distanceScales=e.distanceScales||Uo,this.focalDistance=e.focalDistance||1,this.position=e.position||Bo,this.modelMatrix=e.modelMatrix||null;const{longitude:t,latitude:i}=e;this.isGeospatial=Number.isFinite(i)&&Number.isFinite(t),this._initProps(e),this._initMatrices(e),this.equals=this.equals.bind(this),this.project=this.project.bind(this),this.unproject=this.unproject.bind(this),this.projectPosition=this.projectPosition.bind(this),this.unprojectPosition=this.unprojectPosition.bind(this),this.projectFlat=this.projectFlat.bind(this),this.unprojectFlat=this.unprojectFlat.bind(this)}get subViewports(){return null}get metersPerPixel(){return this.distanceScales.metersPerUnit[2]/this.scale}get projectionMode(){return this.isGeospatial?this.zoom<12?gs.WEB_MERCATOR:gs.WEB_MERCATOR_AUTO_OFFSET:gs.IDENTITY}equals(e){return e instanceof ko&&(this===e||e.width===this.width&&e.height===this.height&&e.scale===this.scale&&In(e.projectionMatrix,this.projectionMatrix)&&In(e.viewMatrix,this.viewMatrix))}project(e,{topLeft:t=!0}={}){const i=function(e,t){const[i,n,r=0]=e;return Us(Number.isFinite(i)&&Number.isFinite(n)&&Number.isFinite(r)),xs(t,[i,n,r,1])}(this.projectPosition(e),this.pixelProjectionMatrix),[n,r]=i,s=t?r:this.height-r;return 2===e.length?[n,s]:[n,s,i[2]]}unproject(e,{topLeft:t=!0,targetZ:i}={}){const[n,r,s]=e,o=t?r:this.height-r,a=i&&i*this.distanceScales.unitsPerMeter[2],c=Qs([n,o,s],this.pixelUnprojectionMatrix,a),[l,h,u]=this.unprojectPosition(c);return Number.isFinite(s)?[l,h,u]:Number.isFinite(i)?[l,h,i]:[l,h]}projectPosition(e){const[t,i]=this.projectFlat(e);return[t,i,(e[2]||0)*this.distanceScales.unitsPerMeter[2]]}unprojectPosition(e){const[t,i]=this.unprojectFlat(e);return[t,i,(e[2]||0)*this.distanceScales.metersPerUnit[2]]}projectFlat(e){if(this.isGeospatial){const t=Xs(e);return t[1]=Cn(t[1],-318,830),t}return e}unprojectFlat(e){return this.isGeospatial?$s(e):e}getBounds(e={}){const t={targetZ:e.z||0},i=this.unproject([0,0],t),n=this.unproject([this.width,0],t),r=this.unproject([0,this.height],t),s=this.unproject([this.width,this.height],t);return[Math.min(i[0],n[0],r[0],s[0]),Math.min(i[1],n[1],r[1],s[1]),Math.max(i[0],n[0],r[0],s[0]),Math.max(i[1],n[1],r[1],s[1])]}getDistanceScales(e){return e&&this.isGeospatial?Ks({longitude:e[0],latitude:e[1],highPrecision:!0}):this.distanceScales}containsPixel({x:e,y:t,width:i=1,height:n=1}){return e(90-e.pitch)*Js-.01?(c=eo(e,0,t),l=eo(e,i,t)):(c=r([0,0],s),l=r([i,0],s)),[o,a,l,c]}(this,e.z||0);return[Math.min(t[0][0],t[1][0],t[2][0],t[3][0]),Math.min(t[0][1],t[1][1],t[2][1],t[3][1]),Math.max(t[0][0],t[1][0],t[2][0],t[3][0]),Math.max(t[0][1],t[1][1],t[2][1],t[3][1])]}fitBounds(e,t={}){const{width:i,height:n}=this,{longitude:r,latitude:s,zoom:o}=function(e){const{width:t,height:i,bounds:n,minExtent:r=0,maxZoom:s=24,offset:o=[0,0]}=e,[[a,c],[l,h]]=n,u=function(e=0){return"number"==typeof e?{top:e,bottom:e,left:e,right:e}:(Us(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}(e.padding),d=Xs([a,Fs(h,-85.051129,zs)]),p=Xs([l,Fs(c,-85.051129,zs)]),f=[Math.max(Math.abs(p[0]-d[0]),r),Math.max(Math.abs(p[1]-d[1]),r)],_=[t-u.left-u.right-2*Math.abs(o[0]),i-u.top-u.bottom-2*Math.abs(o[1])];Us(_[0]>0&&_[1]>0);const g=_[0]/f[0],m=_[1]/f[1],E=(u.right-u.left)/2/g,v=(u.top-u.bottom)/2/m,T=$s([(p[0]+d[0])/2+E,(p[1]+d[1])/2+v]),R=Math.min(s,Bs(Math.abs(Math.min(g,m))));return Us(Number.isFinite(R)),{longitude:T[0],latitude:T[1],zoom:R}}({width:i,height:n,bounds:e,...t});return new Go({width:i,height:n,longitude:r,latitude:s,zoom:o})}}Go.displayName="WebMercatorViewport";let Vo=1,jo=1;class Wo{constructor(){n(this,"time",0),n(this,"channels",new Map),n(this,"animations",new Map),n(this,"playing",!1),n(this,"lastEngineTime",-1)}addChannel(e){const{delay:t=0,duration:i=Number.POSITIVE_INFINITY,rate:n=1,repeat:r=1}=e,s=Vo++,o={time:0,delay:t,duration:i,rate:n,repeat:r};return this._setChannelTime(o,this.time),this.channels.set(s,o),s}removeChannel(e){this.channels.delete(e);for(const[t,i]of this.animations)i.channel===e&&this.detachAnimation(t)}isFinished(e){const t=this.channels.get(e);return void 0!==t&&this.time>=t.delay+t.duration*t.repeat}getTime(e){if(void 0===e)return this.time;const t=this.channels.get(e);return void 0===t?-1:t.time}setTime(e){this.time=Math.max(0,e);const t=this.channels.values();for(const n of t)this._setChannelTime(n,this.time);const i=this.animations.values();for(const n of i){const{animation:e,channel:t}=n;e.setTime(this.getTime(t))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(e,t){const i=jo++;return this.animations.set(i,{animation:e,channel:t}),e.setTime(this.getTime(t)),i}detachAnimation(e){this.animations.delete(e)}update(e){this.playing&&(-1===this.lastEngineTime&&(this.lastEngineTime=e),this.setTime(this.time+(e-this.lastEngineTime)),this.lastEngineTime=e)}_setChannelTime(e,t){const i=t-e.delay;i>=e.duration*e.repeat?e.time=e.duration*e.rate:(e.time=Math.max(0,i)%e.duration,e.time*=e.rate)}}let zo=0;const Ho=class e{constructor(t){if(n(this,"device",null),n(this,"canvas",null),n(this,"props"),n(this,"animationProps",null),n(this,"timeline",null),n(this,"stats"),n(this,"cpuTime"),n(this,"gpuTime"),n(this,"frameRate"),n(this,"display"),n(this,"needsRedraw","initialized"),n(this,"_initialized",!1),n(this,"_running",!1),n(this,"_animationFrameId",null),n(this,"_nextFramePromise",null),n(this,"_resolveNextFrame",null),n(this,"_cpuStartTime",0),n(this,"_error",null),this.props={...e.defaultAnimationLoopProps,...t},!(t=this.props).device)throw new Error("No device provided");this.stats=t.stats||new ne({id:"animation-loop-stats"}),this.cpuTime=this.stats.get("CPU Time"),this.gpuTime=this.stats.get("GPU Time"),this.frameRate=this.stats.get("Frame Rate"),this.setProps({autoResizeViewport:t.autoResizeViewport}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}destroy(){this.stop(),this._setDisplay(null)}delete(){this.destroy()}reportError(e){this.props.onError(e),this._error=e}setNeedsRedraw(e){return this.needsRedraw=this.needsRedraw||e,this}setProps(e){return"autoResizeViewport"in e&&(this.props.autoResizeViewport=e.autoResizeViewport||!1),this}async start(){if(this._running)return this;this._running=!0;try{let e;return this._initialized||(this._initialized=!0,await this._initDevice(),this._initialize(),await this.props.onInitialize(this._getAnimationProps())),this._running?(!1!==e&&(this._cancelAnimationFrame(),this._requestAnimationFrame()),this):null}catch(e){const t=e instanceof Error?e:new Error("Unknown error");throw this.props.onError(t),t}}stop(){return this._running&&(this.animationProps&&!this._error&&this.props.onFinalize(this.animationProps),this._cancelAnimationFrame(),this._nextFramePromise=null,this._resolveNextFrame=null,this._running=!1),this}redraw(){var e;return(null==(e=this.device)?void 0:e.isLost)||this._error||(this._beginFrameTimers(),this._setupFrame(),this._updateAnimationProps(),this._renderFrame(this._getAnimationProps()),this._clearNeedsRedraw(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endFrameTimers()),this}attachTimeline(e){return this.timeline=e,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(e=>{this._resolveNextFrame=e})),this._nextFramePromise}async toDataURL(){if(this.setNeedsRedraw("toDataURL"),await this.waitForRender(),this.canvas instanceof HTMLCanvasElement)return this.canvas.toDataURL();throw new Error("OffscreenCanvas")}_initialize(){this._startEventHandling(),this._initializeAnimationProps(),this._updateAnimationProps(),this._resizeViewport()}_setDisplay(e){this.display&&(this.display.destroy(),this.display.animationLoop=null),e&&(e.animationLoop=this),this.display=e}_requestAnimationFrame(){var e;this._running&&(this._animationFrameId=(e=this._animationFrame.bind(this),"undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame(e):setTimeout(e,1e3/60)))}_cancelAnimationFrame(){var e;null!==this._animationFrameId&&(e=this._animationFrameId,"undefined"!=typeof window&&window.cancelAnimationFrame?window.cancelAnimationFrame(e):clearTimeout(e),this._animationFrameId=null)}_animationFrame(){this._running&&(this.redraw(),this._requestAnimationFrame())}_renderFrame(e){var t;this.display?this.display._renderFrame(e):(this.props.onRender(this._getAnimationProps()),null==(t=this.device)||t.submit())}_clearNeedsRedraw(){this.needsRedraw=!1}_setupFrame(){this._resizeViewport()}_initializeAnimationProps(){var e;const t=null==(e=this.device)?void 0:e.getDefaultCanvasContext();if(!this.device||!t)throw new Error("loop");const i=null==t?void 0:t.canvas,n=t.props.useDevicePixels;this.animationProps={animationLoop:this,device:this.device,canvasContext:t,canvas:i,useDevicePixels:n,timeline:this.timeline,needsRedraw:!1,width:1,height:1,aspect:1,time:0,startTime:Date.now(),engineTime:0,tick:0,tock:0,_mousePosition:null}}_getAnimationProps(){if(!this.animationProps)throw new Error("animationProps");return this.animationProps}_updateAnimationProps(){if(!this.animationProps)return;const{width:e,height:t,aspect:i}=this._getSizeAndAspect();e===this.animationProps.width&&t===this.animationProps.height||this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=e,this.animationProps.height=t,this.animationProps.aspect=i,this.animationProps.needsRedraw=this.needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime}async _initDevice(){if(this.device=await this.props.device,!this.device)throw new Error("No device provided");this.canvas=this.device.getDefaultCanvasContext().canvas||null}_createInfoDiv(){if(this.canvas&&this.props.onAddHTML){const e=document.createElement("div");document.body.appendChild(e),e.style.position="relative";const t=document.createElement("div");t.style.position="absolute",t.style.left="10px",t.style.bottom="10px",t.style.width="300px",t.style.background="white",this.canvas instanceof HTMLCanvasElement&&e.appendChild(this.canvas),e.appendChild(t);const i=this.props.onAddHTML(t);i&&(t.innerHTML=i)}}_getSizeAndAspect(){var e,t;if(!this.device)return{width:1,height:1,aspect:1};const[i,n]=(null==(e=this.device)?void 0:e.getDefaultCanvasContext().getDevicePixelSize())||[1,1];let r=1;const s=null==(t=this.device)?void 0:t.getDefaultCanvasContext().canvas;return s&&s.clientHeight?r=s.clientWidth/s.clientHeight:i>0&&n>0&&(r=i/n),{width:i,height:n,aspect:r}}_resizeViewport(){this.props.autoResizeViewport&&this.device.gl&&this.device.gl.viewport(0,0,this.device.gl.drawingBufferWidth,this.device.gl.drawingBufferHeight)}_beginFrameTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this.cpuTime.timeStart()}_endFrameTimers(){this.cpuTime.timeEnd()}_startEventHandling(){this.canvas&&(this.canvas.addEventListener("mousemove",this._onMousemove.bind(this)),this.canvas.addEventListener("mouseleave",this._onMouseleave.bind(this)))}_onMousemove(e){e instanceof MouseEvent&&(this._getAnimationProps()._mousePosition=[e.offsetX,e.offsetY])}_onMouseleave(e){this._getAnimationProps()._mousePosition=null}};n(Ho,"defaultAnimationLoopProps",{device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:e=>{},stats:Di.stats.get("animation-loop-"+zo++),autoResizeViewport:!1});let Xo=Ho;const $o={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"};class Yo extends So{constructor(){super(...arguments),this._colorEncoderState=null}render(e){return"pickingFBO"in e?this._drawPickingBuffer(e):super.render(e)}_drawPickingBuffer({layers:e,layerFilter:t,views:i,viewports:n,onViewportActive:r,pickingFBO:s,deviceRect:{x:o,y:a,width:c,height:l},cullRect:h,effects:u,pass:d="picking",pickZ:p,shaderModuleProps:f}){this.pickZ=p;const _=this._resetColorEncoder(p),g=[o,a,c,l],m=super.render({target:s,layers:e,layerFilter:t,views:i,viewports:n,onViewportActive:r,cullRect:h,effects:null==u?void 0:u.filter(e=>e.useInPicking),pass:d,isPicking:!0,shaderModuleProps:f,clearColor:[0,0,0,0],colorMask:15,scissorRect:g});return this._colorEncoderState=null,{decodePickingColor:_&&Ko.bind(null,_),stats:m}}shouldDrawLayer(e){const{pickable:t,operation:i}=e.props;return t&&i.includes("draw")||i.includes("terrain")||i.includes("mask")}getShaderModuleProps(e,t,i){return{picking:{isActive:1,isAttribute:this.pickZ},lighting:{enabled:!1}}}getLayerParameters(e,t,i){const n={...e.props.parameters},{pickable:r,operation:s}=e.props;return!this._colorEncoderState||s.includes("terrain")?n.blend=!1:r&&s.includes("draw")&&(Object.assign(n,$o),n.blend=!0,n.blendColor=function(e,t,i){const{byLayer:n,byAlpha:r}=e;let s,o=n.get(t);return o?(o.viewports.push(i),s=o.a):(s=n.size+1,s<=255?(o={a:s,layer:t,viewports:[i]},n.set(t,o),r[s]=o):(ft.warn("Too many pickable layers, only picking the first 255")(),s=0)),[0,0,0,s/255]}(this._colorEncoderState,e,i)),n}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}}function Ko(e,t){const i=e.byAlpha[t[3]];return i&&{pickedLayer:i.layer,pickedViewports:i.viewports,pickedObjectIndex:i.layer.decodePickingColor(t)}}function Zo(e,t=()=>!0){return Array.isArray(e)?qo(e,t,[]):t(e)?[e]:[]}function qo(e,t,i){let n=-1;for(;++n0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(e,t){if(e===this._data&&!t)return;this._data=e;const i=++this._loadCount;let n=e;"string"==typeof e&&(n=async function(e,t){let i,n;Array.isArray(t)||Ne(t)?(i=t,n=void 0):(i=[],n=t);const r=Ke(n);let s=e;return"string"==typeof e&&(s=await r(e)),ue(e)&&(s=await r(e)),Array.isArray(i),await Ze(s,i,n)}(e)),n instanceof Promise?(this.isLoaded=!1,this._loader=n.then(e=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=e)}).catch(e=>{this._loadCount===i&&(this.isLoaded=!0,this._error=e||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e);for(const r of this._subscribers)r.onChange(this.getData())}}class Jo{constructor(e){var t;this.protocol=e.protocol||"resource://",this._context={device:e.device,gl:null==(t=e.device)?void 0:t.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(e){return!!e.startsWith(this.protocol)||e in this._resources}add({resourceId:e,data:t,forceUpdate:i=!1,persistent:n=!0}){let r=this._resources[e];r?r.setData(t,i):(r=new Qo(e,t,this._context),this._resources[e]=r),r.persistent=n}remove(e){const t=this._resources[e];t&&(t.delete(),delete this._resources[e])}unsubscribe({consumerId:e}){const t=this._consumers[e];if(t){for(const e in t){const i=t[e],n=this._resources[i.resourceId];n&&n.unsubscribe(i)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:t,consumerId:i,requestId:n="default"}){const{_resources:r,protocol:s}=this;e.startsWith(s)&&(r[e=e.replace(s,"")]||this.add({resourceId:e,data:null,persistent:!1}));const o=r[e];if(this._track(i,n,o,t),o)return o.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(const e in this._resources)this._resources[e].delete()}_track(e,t,i,n){const r=this._consumers,s=r[e]=r[e]||{};let o=s[t];const a=o&&o.resourceId&&this._resources[o.resourceId];a&&(a.unsubscribe(o),this.prune()),i&&(o?(o.onChange=n,o.resourceId=i.id):o={onChange:n,resourceId:i.id},s[t]=o,i.subscribe(o))}_prune(){this._pruneRequest=null;for(const e of Object.keys(this._resources)){const t=this._resources[e];t.persistent||t.inUse()||(t.delete(),delete this._resources[e])}}}class ea{constructor(e,t){var i;this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=e=>{mt("layerManager.activateViewport",this,e),e&&(this.context.viewport=e)};const{deck:n,stats:r,viewport:s,timeline:o}=t||{};this.layers=[],this.resourceManager=new Jo({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:null==e?void 0:e.gl,deck:n,shaderAssembler:po((null==(i=null==e?void 0:e.info)?void 0:i.shadingLanguage)||"glsl"),defaultShaderModules:[pr],renderPass:void 0,stats:r||new ne({id:"deck.gl"}),viewport:s||new ko({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:o||new Wo,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(const e of this.layers)this._finalizeLayer(e)}needsRedraw(e={clearRedrawFlags:!1}){let t=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);for(const i of this.layers){const n=i.getNeedsRedraw(e);t=t||n}return t}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(e){this._needsRedraw=this._needsRedraw||e}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e}getLayers({layerIds:e}={}){return e?this.layers.filter(t=>e.find(e=>0===t.id.indexOf(e))):this.layers}setProps(e){"debug"in e&&(this._debug=e.debug),"userData"in e&&(this.context.userData=e.userData),"layers"in e&&(this._nextLayers=e.layers),"onError"in e&&(this.context.onError=e.onError)}setLayers(e,t){mt("layerManager.setLayers",this,t,e),this._lastRenderedLayers=e;const i=Zo(e,Boolean);for(const n of i)n.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){const e=this.needsUpdate();e&&(this.setNeedsRedraw(`updating layers: ${e}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,e)),this._nextLayers=null}addDefaultShaderModule(e){const{defaultShaderModules:t}=this.context;t.find(t=>t.name===e.name)||(t.push(e),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(e){const{defaultShaderModules:t}=this.context,i=t.findIndex(t=>t.name===e.name);i>=0&&(t.splice(i,1),this._defaultShaderModulesChanged=!0)}_handleError(e,t,i){i.raiseError(t,`${e} of ${i}`)}_updateLayers(e,t){const i={};for(const s of e)i[s.id]?ft.warn(`Multiple old layers with same id ${s.id}`)():i[s.id]=s;if(this._defaultShaderModulesChanged){for(const t of e)t.setNeedsUpdate(),t.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}const n=[];this._updateSublayersRecursively(t,i,n),this._finalizeOldLayers(i);let r=!1;for(const s of n)if(s.hasUniformTransition()){r=`Uniform transition in ${s}`;break}this._needsUpdate=r,this.layers=n}_updateSublayersRecursively(e,t,i){for(const r of e){r.context=this.context;const e=t[r.id];null===e&&ft.warn(`Multiple new layers with same id ${r.id}`)(),t[r.id]=null;let s=null;try{this._debug&&e!==r&&r.validateProps(),e?(this._transferLayerState(e,r),this._updateLayer(r)):this._initializeLayer(r),i.push(r),s=r.isComposite?r.getSubLayers():null}catch(n){this._handleError("matching",n,r)}s&&this._updateSublayersRecursively(s,t,i)}}_finalizeOldLayers(e){for(const t in e){const i=e[t];i&&this._finalizeLayer(i)}}_initializeLayer(e){try{e._initialize(),e.lifecycle="Initialized"}catch(t){this._handleError("initialization",t,e)}}_transferLayerState(e,t){t._transferState(e),t.lifecycle="Matched. State transferred from previous layer",t!==e&&(e.lifecycle="Discarded. Awaiting garbage collection")}_updateLayer(e){try{e._update()}catch(t){this._handleError("update",t,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle="No longer matched. Awaiting garbage collection";try{e._finalize(),e.lifecycle="Finalized! Awaiting garbage collection"}catch(t){this._handleError("finalization",t,e)}}}function ta(e,t,i){if(e===t)return!0;if(!i||!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;nt.containsPixel(e)):this._viewports}getViews(){const e={};return this.views.forEach(t=>{e[t.id]=t}),e}getView(e){return this.views.find(t=>t.id===e)}getViewState(e){const t="string"==typeof e?this.getView(e):e,i=t&&this.viewState[t.getViewStateId()]||this.viewState;return t?t.filterViewState(i):i}getViewport(e){return this._viewportMap[e]}unproject(e,t){const i=this.getViewports(),n={x:e[0],y:e[1]};for(let r=i.length-1;r>=0;--r){const s=i[r];if(s.containsPixel(n)){const i=e.slice();return i[0]-=s.x,i[1]-=s.y,s.unproject(i,t)}}return null}setProps(e){e.views&&this._setViews(e.views),e.viewState&&this._setViewState(e.viewState),("width"in e||"height"in e)&&this._setSize(e.width,e.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(e,t){e===this.width&&t===this.height||(this.width=e,this.height=t,this.setNeedsUpdate("Size changed"))}_setViews(e){e=Zo(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?(!ta(e,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=e):ft.warn("missing `viewState` or `initialViewState`")()}_createController(e,t){const i=new(0,t.type)({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:t=>{var i;return null==(i=this.getView(e.id))?void 0:i.makeViewport({viewState:t,width:this.width,height:this.height})}});return i}_updateController(e,t,i,n){const r=e.controller;if(r&&i){const s={...t,...r,id:e.id,x:i.x,y:i.y,width:i.width,height:i.height};return n&&n.constructor===r.type||(n=this._createController(e,s)),n&&n.setProps(s),n}return null}_rebuildViewports(){const{views:e}=this,t=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let n=e.length;n--;){const r=e[n],s=this.getViewState(r),o=r.makeViewport({viewState:s,width:this.width,height:this.height});let a=t[r.id];const c=Boolean(r.controller);c&&!a&&(i=!0),!i&&c||!a||(a.finalize(),a=null),this.controllers[r.id]=this._updateController(r,s,o,a),o&&this._viewports.unshift(o)}for(const n in t){const e=t[n];e&&!this.controllers[n]&&e.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(e=>{e.id&&(this._viewportMap[e.id]=this._viewportMap[e.id]||e)})}_diffViews(e,t){return e.length!==t.length||e.some((i,n)=>!e[n].equals(t[n]))}}const na=/([0-9]+\.?[0-9]*)(%|px)/;function ra(e){switch(typeof e){case"number":return{position:e,relative:!1};case"string":const t=na.exec(e);if(t&&t.length>=3){const e="%"===t[2],i=parseFloat(t[1]);return{position:e?i/100:i,relative:e}}default:throw new Error(`Could not parse position string ${e}`)}}function sa(e,t){return e.relative?Math.round(e.position*t):e.position}class oa{constructor(e){const{id:t,x:i=0,y:n=0,width:r="100%",height:s="100%",padding:o=null}=e;this.id=t||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=ra(i),this._y=ra(n),this._width=ra(r),this._height=ra(s),this._padding=o&&{left:ra(o.left||0),right:ra(o.right||0),top:ra(o.top||0),bottom:ra(o.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e||this.constructor===e.constructor&&ta(this.props,e.props,2)}clone(e){return new(0,this.constructor)({...this.props,...e})}makeViewport({width:e,height:t,viewState:i}){i=this.filterViewState(i);const n=this.getDimensions({width:e,height:t});return n.height&&n.width?new(this.getViewportType(i))({...i,...this.props,...n}):null}getViewStateId(){const{viewState:e}=this.props;return"string"==typeof e?e:(null==e?void 0:e.id)||this.id}filterViewState(e){if(this.props.viewState&&"object"==typeof this.props.viewState){if(!this.props.viewState.id)return this.props.viewState;const t={...e};for(const e in this.props.viewState)"id"!==e&&(t[e]=this.props.viewState[e]);return t}return e}getDimensions({width:e,height:t}){const i={x:sa(this._x,e),y:sa(this._y,t),width:sa(this._width,e),height:sa(this._height,t)};return this._padding&&(i.padding={left:sa(this._padding.left,e),top:sa(this._padding.top,t),right:sa(this._padding.right,e),bottom:sa(this._padding.bottom,t)}),i}get controller(){const e=this.props.controller;return e?!0===e?{type:this.ControllerType}:"function"==typeof e?{type:e}:{type:this.ControllerType,...e}:null}}class aa{constructor(e){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=e}get inProgress(){return this._inProgress}start(e){var t,i;this.cancel(),this.settings=e,this._inProgress=!0,null==(i=(t=this.settings).onStart)||i.call(t,this)}end(){var e,t;this._inProgress&&(this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,null==(t=(e=this.settings).onEnd)||t.call(e,this))}cancel(){var e,t;this._inProgress&&(null==(t=(e=this.settings).onInterrupt)||t.call(e,this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1)}update(){var e,t;if(!this._inProgress)return!1;if(null===this._handle){const{_timeline:e,settings:t}=this;this._handle=e.addChannel({delay:e.getTime(),duration:t.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),null==(t=(e=this.settings).onUpdate)||t.call(e,this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}}const ca=()=>{},la=e=>e;class ha{constructor(e){this._onTransitionUpdate=e=>{const{time:t,settings:{interpolator:i,startProps:n,endProps:r,duration:s,easing:o}}=e,a=o(t/s),c=i.interpolateProps(n,r,a);this.propsInTransition=this.getControllerState({...this.props,...c}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=e.getControllerState,this.propsInTransition=null,this.transition=new aa(e.timeline),this.onViewStateChange=e.onViewStateChange||ca,this.onStateChange=e.onStateChange||ca}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(e){let t=!1;const i=this.props;if(this.props=e,!i||this._shouldIgnoreViewportChange(i,e))return!1;if(this._isTransitionEnabled(e)){let n=i;if(this.transition.inProgress){const{interruption:e,endProps:t}=this.transition.settings;n={...i,...2===e?t:this.propsInTransition||i}}this._triggerTransition(n,e),t=!0}else this.transition.cancel();return t}updateTransition(){this.transition.update()}_isTransitionEnabled(e){const{transitionDuration:t,transitionInterpolator:i}=e;return(t>0||"auto"===t)&&Boolean(i)}_isUpdateDueToCurrentTransition(e){return!(!this.transition.inProgress||!this.propsInTransition)&&this.transition.settings.interpolator.arePropsEqual(e,this.propsInTransition)}_shouldIgnoreViewportChange(e,t){return this.transition.inProgress?3===this.transition.settings.interruption||this._isUpdateDueToCurrentTransition(t):!this._isTransitionEnabled(t)||t.transitionInterpolator.arePropsEqual(e,t)}_triggerTransition(e,t){const i=this.getControllerState(e),n=this.getControllerState(t).shortestPathFrom(i),r=t.transitionInterpolator,s=r.getDuration?r.getDuration(e,t):t.transitionDuration;if(0===s)return;const o=r.initializeProps(e,n);this.propsInTransition={};const a={duration:s,easing:t.transitionEasing||la,interpolator:r,interruption:t.transitionInterruption||1,startProps:o.start,endProps:o.end,onStart:t.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(t.onTransitionInterrupt),onEnd:this._onTransitionEnd(t.onTransitionEnd)};this.transition.start(a),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(e){return t=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),null==e||e(t)}}}function ua(e,t){if(!e)throw new Error(t||"deck.gl: assertion failed.")}class da{constructor(e){const{compare:t,extract:i,required:n}=e;this._propsToCompare=t,this._propsToExtract=i||t,this._requiredProps=n}arePropsEqual(e,t){for(const i of this._propsToCompare)if(!(i in e)||!(i in t)||!In(e[i],t[i]))return!1;return!0}initializeProps(e,t){const i={},n={};for(const r of this._propsToExtract)(r in e||r in t)&&(i[r]=e[r],n[r]=t[r]);return this._checkRequiredProps(i),this._checkRequiredProps(n),{start:i,end:n}}getDuration(e,t){return t.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(t=>{const i=e[t];ua(Number.isFinite(i)||Array.isArray(i),`${t} is required for transition`)})}}const pa=["longitude","latitude","zoom","bearing","pitch"],fa=["longitude","latitude","zoom"];class _a extends da{constructor(e={}){const t=Array.isArray(e)?e:e.transitionProps,i=Array.isArray(e)?{}:e;i.transitionProps=Array.isArray(t)?{compare:t,required:t}:t||{compare:pa,required:fa},super(i.transitionProps),this.opts=i}initializeProps(e,t){const i=super.initializeProps(e,t),{makeViewport:n,around:r}=this.opts;if(n&&r){const s=n(e),o=n(t),a=s.unproject(r);i.start.around=r,Object.assign(i.end,{around:o.project(a),aroundPosition:a,width:t.width,height:t.height})}return i}interpolateProps(e,t,i){const n={};for(const r of this._propsToExtract)n[r]=Pn(e[r]||0,t[r]||0,i);if(t.aroundPosition&&this.opts.makeViewport){const r=this.opts.makeViewport({...t,...n});Object.assign(n,r.panByPosition(t.aroundPosition,Pn(e.around,t.around,i)))}return n}}const ga={transitionDuration:0},ma=e=>1-(1-e)*(1-e),Ea=["wheel"],va=["panstart","panmove","panend"],Ta=["pinchstart","pinchmove","pinchend"],Ra=["multipanstart","multipanmove","multipanend"],ba=["dblclick"],Aa=["keydown"],Sa={};class ya{constructor(e){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.keyboard=!0,this.transitionManager=new ha({...e,getControllerState:e=>new this.ControllerState(e),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=e.eventManager,this.onViewStateChange=e.onViewStateChange||(()=>{}),this.onStateChange=e.onStateChange||(()=>{}),this.makeViewport=e.makeViewport}set events(e){this.toggleEvents(this._customEvents,!1),this.toggleEvents(e,!0),this._customEvents=e,this.props&&this.setProps(this.props)}finalize(){var e;for(const t in this._events)this._events[t]&&(null==(e=this.eventManager)||e.off(t,this.handleEvent));this.transitionManager.finalize()}handleEvent(e){this._controllerState=void 0;const t=this._eventStartBlocked;switch(e.type){case"panstart":return!t&&this._onPanStart(e);case"panmove":return this._onPan(e);case"panend":return this._onPanEnd(e);case"pinchstart":return!t&&this._onPinchStart(e);case"pinchmove":return this._onPinch(e);case"pinchend":return this._onPinchEnd(e);case"multipanstart":return!t&&this._onMultiPanStart(e);case"multipanmove":return this._onMultiPan(e);case"multipanend":return this._onMultiPanEnd(e);case"dblclick":return this._onDoubleClick(e);case"wheel":return this._onWheel(e);case"keydown":return this._onKeyDown(e);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(e){const{x:t,y:i}=this.props,{offsetCenter:n}=e;return[n.x-t,n.y-i]}isPointInBounds(e,t){const{width:i,height:n}=this.props;if(t&&t.handled)return!1;const r=e[0]>=0&&e[0]<=i&&e[1]>=0&&e[1]<=n;return r&&t&&t.stopPropagation(),r}isFunctionKeyPressed(e){const{srcEvent:t}=e;return Boolean(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(e){const t=setTimeout(()=>{this._eventStartBlocked===t&&(this._eventStartBlocked=null)},e);this._eventStartBlocked=t}setProps(e){e.dragMode&&(this.dragMode=e.dragMode),this.props=e,"transitionInterpolator"in e||(e.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(e);const{inertia:t}=e;this.inertia=Number.isFinite(t)?t:!0===t?300:0;const{scrollZoom:i=!0,dragPan:n=!0,dragRotate:r=!0,doubleClickZoom:s=!0,touchZoom:o=!0,touchRotate:a=!1,keyboard:c=!0}=e,l=Boolean(this.onViewStateChange);this.toggleEvents(Ea,l&&i),this.toggleEvents(va,l),this.toggleEvents(Ta,l&&(o||a)),this.toggleEvents(Ra,l&&a),this.toggleEvents(ba,l&&s),this.toggleEvents(Aa,l&&c),this.scrollZoom=i,this.dragPan=n,this.dragRotate=r,this.doubleClickZoom=s,this.touchZoom=o,this.touchRotate=a,this.keyboard=c}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(e,t){this.eventManager&&e.forEach(e=>{this._events[e]!==t&&(this._events[e]=t,t?this.eventManager.on(e,this.handleEvent):this.eventManager.off(e,this.handleEvent))})}updateViewport(e,t=null,i={}){const n={...e.getViewportProps(),...t},r=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(i),r){const e=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:n,interactionState:this._interactionState,oldViewState:e,viewId:this.props.id})}}_onTransition(e){this.onViewStateChange({...e,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(e){Object.assign(this._interactionState,e),this.onStateChange(this._interactionState)}_onPanStart(e){const t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;let i=this.isFunctionKeyPressed(e)||e.rightButton||!1;(this.invertPan||"pan"===this.dragMode)&&(i=!i);const n=this.controllerState[i?"panStart":"rotateStart"]({pos:t});return this._panMove=i,this.updateViewport(n,ga,{isDragging:!0}),!0}_onPan(e){return!!this.isDragging()&&(this._panMove?this._onPanMove(e):this._onPanRotate(e))}_onPanEnd(e){return!!this.isDragging()&&(this._panMove?this._onPanMoveEnd(e):this._onPanRotateEnd(e))}_onPanMove(e){if(!this.dragPan)return!1;const t=this.getCenter(e),i=this.controllerState.pan({pos:t});return this.updateViewport(i,ga,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){const{inertia:t}=this;if(this.dragPan&&t&&e.velocity){const i=this.getCenter(e),n=[i[0]+e.velocityX*t/2,i[1]+e.velocityY*t/2],r=this.controllerState.pan({pos:n}).panEnd();this.updateViewport(r,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:ma},{isDragging:!1,isPanning:!0})}else{const e=this.controllerState.panEnd();this.updateViewport(e,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(e){if(!this.dragRotate)return!1;const t=this.getCenter(e),i=this.controllerState.rotate({pos:t});return this.updateViewport(i,ga,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){const{inertia:t}=this;if(this.dragRotate&&t&&e.velocity){const i=this.getCenter(e),n=[i[0]+e.velocityX*t/2,i[1]+e.velocityY*t/2],r=this.controllerState.rotate({pos:n}).rotateEnd();this.updateViewport(r,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:ma},{isDragging:!1,isRotating:!0})}else{const e=this.controllerState.rotateEnd();this.updateViewport(e,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(e){if(!this.scrollZoom)return!1;const t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;e.srcEvent.preventDefault();const{speed:i=.01,smooth:n=!1}=!0===this.scrollZoom?{}:this.scrollZoom,{delta:r}=e;let s=2/(1+Math.exp(-Math.abs(r*i)));r<0&&0!==s&&(s=1/s);const o=n?{...this._getTransitionProps({around:t}),transitionDuration:250}:ga,a=this.controllerState.zoom({pos:t,scale:s});return this.updateViewport(a,o,{isZooming:!0,isPanning:!0}),!0}_onMultiPanStart(e){const t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;const i=this.controllerState.rotateStart({pos:t});return this.updateViewport(i,ga,{isDragging:!0}),!0}_onMultiPan(e){if(!this.touchRotate)return!1;if(!this.isDragging())return!1;const t=this.getCenter(e);t[0]-=e.deltaX;const i=this.controllerState.rotate({pos:t});return this.updateViewport(i,ga,{isDragging:!0,isRotating:!0}),!0}_onMultiPanEnd(e){if(!this.isDragging())return!1;const{inertia:t}=this;if(this.touchRotate&&t&&e.velocityY){const i=this.getCenter(e),n=[i[0],i[1]+=e.velocityY*t/2],r=this.controllerState.rotate({pos:n});this.updateViewport(r,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:ma},{isDragging:!1,isRotating:!0}),this.blockEvents(t)}else{const e=this.controllerState.rotateEnd();this.updateViewport(e,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(e){const t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;const i=this.controllerState.zoomStart({pos:t}).rotateStart({pos:t});return Sa._startPinchRotation=e.rotation,Sa._lastPinchEvent=e,this.updateViewport(i,ga,{isDragging:!0}),!0}_onPinch(e){if(!this.touchZoom&&!this.touchRotate)return!1;if(!this.isDragging())return!1;let t=this.controllerState;if(this.touchZoom){const{scale:i}=e,n=this.getCenter(e);t=t.zoom({pos:n,scale:i})}if(this.touchRotate){const{rotation:i}=e;t=t.rotate({deltaAngleX:Sa._startPinchRotation-i})}return this.updateViewport(t,ga,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),Sa._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;const{inertia:t}=this,{_lastPinchEvent:i}=Sa;if(this.touchZoom&&t&&i&&e.scale!==i.scale){const n=this.getCenter(e);let r=this.controllerState.rotateEnd();const s=Math.log2(e.scale),o=(s-Math.log2(i.scale))/(e.deltaTime-i.deltaTime),a=Math.pow(2,s+o*t/2);r=r.zoom({pos:n,scale:a}).zoomEnd(),this.updateViewport(r,{...this._getTransitionProps({around:n}),transitionDuration:t,transitionEasing:ma},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(t)}else{const e=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(e,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return Sa._startPinchRotation=null,Sa._lastPinchEvent=null,!0}_onDoubleClick(e){if(!this.doubleClickZoom)return!1;const t=this.getCenter(e);if(!this.isPointInBounds(t,e))return!1;const i=this.isFunctionKeyPressed(e),n=this.controllerState.zoom({pos:t,scale:i?.5:2});return this.updateViewport(n,this._getTransitionProps({around:t}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(e){if(!this.keyboard)return!1;const t=this.isFunctionKeyPressed(e),{zoomSpeed:i,moveSpeed:n,rotateSpeedX:r,rotateSpeedY:s}=!0===this.keyboard?{}:this.keyboard,{controllerState:o}=this;let a;const c={};switch(e.srcEvent.code){case"Minus":a=t?o.zoomOut(i).zoomOut(i):o.zoomOut(i),c.isZooming=!0;break;case"Equal":a=t?o.zoomIn(i).zoomIn(i):o.zoomIn(i),c.isZooming=!0;break;case"ArrowLeft":t?(a=o.rotateLeft(r),c.isRotating=!0):(a=o.moveLeft(n),c.isPanning=!0);break;case"ArrowRight":t?(a=o.rotateRight(r),c.isRotating=!0):(a=o.moveRight(n),c.isPanning=!0);break;case"ArrowUp":t?(a=o.rotateUp(s),c.isRotating=!0):(a=o.moveUp(n),c.isPanning=!0);break;case"ArrowDown":t?(a=o.rotateDown(s),c.isRotating=!0):(a=o.moveDown(n),c.isPanning=!0);break;default:return!1}return this.updateViewport(a,this._getTransitionProps(),c),!0}_getTransitionProps(e){const{transition:t}=this;return t&&t.transitionInterpolator?e?{...t,transitionInterpolator:new _a({...e,...t.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:t:ga}}class wa{constructor(e,t){this._viewportProps=this.applyConstraints(e),this._state=t}getViewportProps(){return this._viewportProps}getState(){return this._state}}class Ma extends wa{constructor(e){const{width:t,height:i,latitude:n,longitude:r,zoom:s,bearing:o=0,pitch:a=0,altitude:c=1.5,position:l=[0,0,0],maxZoom:h=20,minZoom:u=0,maxPitch:d=60,minPitch:p=0,startPanLngLat:f,startZoomLngLat:_,startRotatePos:g,startBearing:m,startPitch:E,startZoom:v,normalize:T=!0}=e;ua(Number.isFinite(r)),ua(Number.isFinite(n)),ua(Number.isFinite(s)),super({width:t,height:i,latitude:n,longitude:r,zoom:s,bearing:o,pitch:a,altitude:c,maxZoom:h,minZoom:u,maxPitch:d,minPitch:p,normalize:T,position:l},{startPanLngLat:f,startZoomLngLat:_,startRotatePos:g,startBearing:m,startPitch:E,startZoom:v}),this.makeViewport=e.makeViewport}panStart({pos:e}){return this._getUpdatedState({startPanLngLat:this._unproject(e)})}pan({pos:e,startPos:t}){const i=this.getState().startPanLngLat||this._unproject(t);if(!i)return this;const n=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(n)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:t=0,deltaAngleY:i=0}){const{startRotatePos:n,startBearing:r,startPitch:s}=this.getState();if(!n||void 0===r||void 0===s)return this;let o;return o=e?this._getNewRotation(e,n,s,r):{bearing:r+t,pitch:s+i},this._getUpdatedState(o)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:e}){return this._getUpdatedState({startZoomLngLat:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:t,scale:i}){let{startZoom:n,startZoomLngLat:r}=this.getState();if(r||(n=this.getViewportProps().zoom,r=this._unproject(t)||this._unproject(e)),!r)return this;const{maxZoom:s,minZoom:o}=this.getViewportProps();let a=n+Math.log2(i);a=Cn(a,o,s);const c=this.makeViewport({...this.getViewportProps(),zoom:a});return this._getUpdatedState({zoom:a,...c.panByPosition(r,e)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(e=2){return this._zoomFromCenter(e)}zoomOut(e=2){return this._zoomFromCenter(1/e)}moveLeft(e=100){return this._panFromCenter([e,0])}moveRight(e=100){return this._panFromCenter([-e,0])}moveUp(e=100){return this._panFromCenter([0,e])}moveDown(e=100){return this._panFromCenter([0,-e])}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}shortestPathFrom(e){const t=e.getViewportProps(),i={...this.getViewportProps()},{bearing:n,longitude:r}=i;return Math.abs(n-t.bearing)>180&&(i.bearing=n<0?n+360:n-360),Math.abs(r-t.longitude)>180&&(i.longitude=r<0?r+360:r-360),i}applyConstraints(e){const{maxZoom:t,minZoom:i,zoom:n}=e;e.zoom=Cn(n,i,t);const{maxPitch:r,minPitch:s,pitch:o}=e;e.pitch=Cn(o,s,r);const{normalize:a=!0}=e;return a&&Object.assign(e,function(e){const{width:t,height:i,pitch:n=0}=e;let{longitude:r,latitude:s,zoom:o,bearing:a=0}=e;(r<-180||r>180)&&(r=Ds(r+180,360)-180),(a<-180||a>180)&&(a=Ds(a+180,360)-180);const c=Bs(i/512);if(o<=c)o=c,s=0;else{const e=i/2/Math.pow(2,o),t=$s([0,e])[1];if(st&&(s=t)}}return{width:t,height:i,longitude:r,latitude:s,zoom:o,pitch:n,bearing:a}}(e)),e}_zoomFromCenter(e){const{width:t,height:i}=this.getViewportProps();return this.zoom({pos:[t/2,i/2],scale:e})}_panFromCenter(e){const{width:t,height:i}=this.getViewportProps();return this.pan({startPos:[t/2,i/2],pos:[t/2+e[0],i/2+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}_unproject(e){const t=this.makeViewport(this.getViewportProps());return e&&t.unproject(e)}_getNewRotation(e,t,i,n){const r=e[0]-t[0],s=e[1]-t[1],o=e[1],a=t[1],{width:c,height:l}=this.getViewportProps(),h=r/c;let u=0;s>0?Math.abs(l-a)>5&&(u=s/(a-l)*1.2):s<0&&a>5&&(u=1-o/a),u=Cn(u,-1,1);const{minPitch:d,maxPitch:p}=this.getViewportProps();let f=i;return u>0?f=i+u*(p-i):u<0&&(f=i-u*(d-i)),{pitch:f,bearing:n+180*h}}}class Ca extends ya{constructor(){super(...arguments),this.ControllerState=Ma,this.transition={transitionDuration:300,transitionInterpolator:new _a({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan"}setProps(e){e.position=e.position||[0,0,0];const t=this.props;super.setProps(e),(!t||t.height!==e.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...e,...this.state}))}}class Pa extends oa{constructor(e={}){super(e)}getViewportType(){return Go}get ControllerType(){return Ca}}Pa.displayName="MapView";const Ia=new Lo;class La{constructor(e){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=e,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(e){const t=this._defaultEffects;if(!t.find(t=>t.id===e.id)){const i=t.findIndex(t=>{return i=e,(t.order??1/0)-(i.order??1/0)>0;var i});i<0?t.push(e):t.splice(i,0,e),e.setup(this._context),this._setEffects(this.effects)}}setProps(e){"effects"in e&&(ta(e.effects,this.effects,1)||this._setEffects(e.effects))}needsRedraw(e={clearRedrawFlags:!1}){const t=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),t}getEffects(){return this._resolvedEffects}_setEffects(e){const t={};for(const n of this.effects)t[n.id]=n;const i=[];for(const n of e){const e=t[n.id];let r=n;e&&e!==n?e.setProps?(e.setProps(n.props),r=e):e.cleanup(this._context):e||n.setup(this._context),i.push(r),delete t[n.id]}for(const n in t)t[n].cleanup(this._context);this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),e.some(e=>e instanceof Lo)||this._resolvedEffects.push(Ia),this._needsRedraw="effects changed"}finalize(){for(const e of this._resolvedEffects)e.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}}class Oa extends So{shouldDrawLayer(e){const{operation:t}=e.props;return t.includes("draw")||t.includes("terrain")}}class Na{constructor(e){this.device=e,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Oa(e),this.pickLayersPass=new Yo(e),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(e){this.layerFilter!==e.layerFilter&&(this.layerFilter=e.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==e.drawPickingColors&&(this.drawPickingColors=e.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(e){if(!e.viewports.length)return;const t=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...e};i.effects&&this._preRender(i.effects,i);const n=this.lastPostProcessEffect?this.renderBuffers[0]:i.target;this.lastPostProcessEffect&&(i.clearColor=[0,0,0,0],i.clearCanvas=!0);const r=t.render({...i,target:n});i.effects&&(this.lastPostProcessEffect&&(i.clearCanvas=void 0===e.clearCanvas||e.clearCanvas),this._postRender(i.effects,i)),this.renderCount++,mt("deckRenderer.renderLayers",this,r,e)}needsRedraw(e={clearRedrawFlags:!1}){const t=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),t}finalize(){const{renderBuffers:e}=this;for(const t of e)t.delete();e.length=0}_preRender(e,t){this.lastPostProcessEffect=null,t.preRenderStats=t.preRenderStats||{};for(const i of e)t.preRenderStats[i.id]=i.preRender(t),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){const{renderBuffers:e}=this,t=this.device.canvasContext.getDrawingBufferSize(),[i,n]=t;0===e.length&&[0,1].map(t=>{const r=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:i,height:n});e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${t}`,colorAttachments:[r]}))});for(const r of e)r.resize(t)}_postRender(e,t){const{renderBuffers:i}=this,n={...t,inputBuffer:i[0],swapBuffer:i[1]};for(const r of e)if(r.postRender){n.target=r.id===this.lastPostProcessEffect?t.target:void 0;const e=r.postRender(n);n.inputBuffer=e,n.swapBuffer=e===i[0]?i[1]:i[0]}}}const xa={pickedColor:null,pickedObjectIndex:-1};function Da({pickedColors:e,decodePickingColor:t,deviceX:i,deviceY:n,deviceRadius:r,deviceRect:s}){const{x:o,y:a,width:c,height:l}=s;let h=r*r,u=-1,d=0;for(let p=0;ph)d+=4*c;else for(let n=0;n=0){const e=n+o-i,t=e*e+r;t<=h&&(h=t,u=d)}d+=4}}if(u>=0){const i=e.slice(u,u+4),n=t(i);if(n){const e=Math.floor(u/4/c),t=u/4-e*c;return{...n,pickedColor:i,pickedX:o+t,pickedY:a+e}}ft.error("Picked non-existent layer. Is picking buffer corrupt?")()}return xa}function Fa({pickedColors:e,decodePickingColor:t}){const i=new Map;if(e)for(let n=0;n=0){const r=e.slice(n,n+4),s=r.join(",");if(!i.has(s)){const e=t(r);e?i.set(s,{...e,color:r}):ft.error("Picked non-existent layer. Is picking buffer corrupt?")()}}return Array.from(i.values())}function Ba({pickInfo:e,viewports:t,pixelRatio:i,x:n,y:r,z:s}){let o,a=t[0];if(t.length>1&&(a=function(e,t){for(let i=e.length-1;i>=0;i--){const n=e[i];if(n.containsPixel(t))return n}return e[0]}((null==e?void 0:e.pickedViewports)||t,{x:n,y:r})),a){const e=[n-a.x,r-a.y];void 0!==s&&(e[2]=s),o=a.unproject(e)}return{color:null,layer:null,viewport:a,index:-1,picked:!1,x:n,y:r,pixel:[n,r],coordinate:o,devicePixel:e&&"pickedX"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:i}}function Ua(e){const{pickInfo:t,lastPickedInfo:i,mode:n,layers:r}=e,{pickedColor:s,pickedLayer:o,pickedObjectIndex:a}=t,c=o?[o]:[];if("hover"===n){const e=i.index,t=i.layerId,n=o?o.props.id:null;if(n!==t||a!==e){if(n!==t){const e=r.find(e=>e.props.id===t);e&&c.unshift(e)}i.layerId=n,i.index=a,i.info=null}}const l=Ba(e),h=new Map;return h.set(null,l),c.forEach(e=>{let t={...l};e===o&&(t.color=s,t.index=a,t.picked=!0),t=ka({layer:e,info:t,mode:n});const r=t.layer;e===o&&"hover"===n&&(i.info=t),h.set(r.id,t),"hover"===n&&r.updateAutoHighlight(t)}),h}function ka({layer:e,info:t,mode:i}){for(;e&&t;){const n=t.layer||null;t.sourceLayer=n,t.layer=e,t=e.getPickingInfo({info:t,mode:i,sourceLayer:n}),e=e.parent}return t}class Ga{constructor(e){this._pickable=!0,this.device=e,this.pickLayersPass=new Yo(e),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(e){"layerFilter"in e&&(this.layerFilter=e.layerFilter),"_pickable"in e&&(this._pickable=e._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObjectAsync(e){return this._pickClosestObjectAsync(e)}pickObjectsAsync(e){return this._pickVisibleObjectsAsync(e)}pickObject(e){return this._pickClosestObject(e)}pickObjects(e){return this._pickVisibleObjects(e)}getLastPickedObject({x:e,y:t,layers:i,viewports:n},r=this.lastPickedInfo.info){const s=r&&r.layer&&r.layer.id,o=r&&r.viewport&&r.viewport.id,a=s?i.find(e=>e.id===s):null,c=o&&n.find(e=>e.id===o)||n[0],l=c&&c.unproject([e-c.x,t-c.y]),h={x:e,y:t,viewport:c,coordinate:l,layer:a};return{...r,...h}}_resizeBuffer(){var e,t;if(!this.pickingFBO&&(this.pickingFBO=this.device.createFramebuffer({colorAttachments:["rgba8unorm"],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float"))){const e=this.device.createFramebuffer({colorAttachments:["rgba32float"],depthStencilAttachment:"depth16unorm"});this.depthFBO=e}const{canvas:i}=this.device.getDefaultCanvasContext();null==(e=this.pickingFBO)||e.resize({width:i.width,height:i.height}),null==(t=this.depthFBO)||t.resize({width:i.width,height:i.height})}_getPickable(e){if(!1===this._pickable)return null;const t=e.filter(e=>this.pickLayersPass.shouldDrawLayer(e)&&!e.isComposite);return t.length?t:null}async _pickClosestObjectAsync({layers:e,views:t,viewports:i,x:n,y:r,radius:s=0,depth:o=1,mode:a="query",unproject3D:c,onViewportActive:l,effects:h}){const u=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(e);if(!d||0===i.length)return{result:[],emptyInfo:Ba({viewports:i,x:n,y:r,pixelRatio:u})};this._resizeBuffer();const p=this.device.canvasContext.cssToDevicePixels([n,r],!0),f=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],_=Math.round(s*u),{width:g,height:m}=this.pickingFBO,E=this._getPickingRect({deviceX:f[0],deviceY:f[1],deviceRadius:_,deviceWidth:g,deviceHeight:m}),v={x:n-s,y:r-s,width:2*s+1,height:2*s+1};let T;const R=[],b=new Set;for(let A=0;A=c);S++){const e=T[S];let t={color:e.pickedColor,layer:null,index:e.pickedObjectIndex,picked:!0,x:n,y:r,pixelRatio:d};t=ka({layer:e.pickedLayer,info:t,mode:a});const i=t.layer.id;R.has(i)||R.set(i,new Set);const s=R.get(i),o=t.object??t.index;s.has(o)||(s.add(o),b.push(t))}return b}_pickVisibleObjects({layers:e,views:t,viewports:i,x:n,y:r,width:s=1,height:o=1,mode:a="query",maxObjects:c=null,onViewportActive:l,effects:h}){const u=this._getPickable(e);if(!u||0===i.length)return[];this._resizeBuffer();const d=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([n,r],!0),f=p.x,_=p.y+p.height,g=this.device.canvasContext.cssToDevicePixels([n+s,r+o],!0),m=g.x+g.width,E=g.y,v={x:f,y:E,width:m-f,height:_-E},T=Fa(this._drawAndSample({layers:u,views:t,viewports:i,onViewportActive:l,deviceRect:v,cullRect:{x:n,y:r,width:s,height:o},effects:h,pass:`picking:${a}`})),R=new Map,b=[],A=Number.isFinite(c);for(let S=0;S=c);S++){const e=T[S];let t={color:e.pickedColor,layer:null,index:e.pickedObjectIndex,picked:!0,x:n,y:r,pixelRatio:d};t=ka({layer:e.pickedLayer,info:t,mode:a});const i=t.layer.id;R.has(i)||R.set(i,new Set);const s=R.get(i),o=t.object??t.index;s.has(o)||(s.add(o),b.push(t))}return b}async _drawAndSampleAsync({layers:e,views:t,viewports:i,onViewportActive:n,deviceRect:r,cullRect:s,effects:o,pass:a},c=!1){const l=c?this.depthFBO:this.pickingFBO,h={layers:e,layerFilter:this.layerFilter,views:t,viewports:i,onViewportActive:n,pickingFBO:l,deviceRect:r,cullRect:s,effects:o,pass:a,pickZ:c,preRenderStats:{},isPicking:!0};for(const m of o)m.useInPicking&&(h.preRenderStats[m.id]=m.preRender(h));const{decodePickingColor:u}=this.pickLayersPass.render(h),{x:d,y:p,width:f,height:_}=r,g=new(c?Float32Array:Uint8Array)(f*_*4);return this.device.readPixelsToArrayWebGL(l,{sourceX:d,sourceY:p,sourceWidth:f,sourceHeight:_,target:g}),{pickedColors:g,decodePickingColor:u}}_drawAndSample({layers:e,views:t,viewports:i,onViewportActive:n,deviceRect:r,cullRect:s,effects:o,pass:a},c=!1){const l=c?this.depthFBO:this.pickingFBO,h={layers:e,layerFilter:this.layerFilter,views:t,viewports:i,onViewportActive:n,pickingFBO:l,deviceRect:r,cullRect:s,effects:o,pass:a,pickZ:c,preRenderStats:{},isPicking:!0};for(const m of o)m.useInPicking&&(h.preRenderStats[m.id]=m.preRender(h));const{decodePickingColor:u}=this.pickLayersPass.render(h),{x:d,y:p,width:f,height:_}=r,g=new(c?Float32Array:Uint8Array)(f*_*4);return this.device.readPixelsToArrayWebGL(l,{sourceX:d,sourceY:p,sourceWidth:f,sourceHeight:_,target:g}),{pickedColors:g,decodePickingColor:u}}_getPickingRect({deviceX:e,deviceY:t,deviceRadius:i,deviceWidth:n,deviceHeight:r}){const s=Math.max(0,e-i),o=Math.max(0,t-i),a=Math.min(n,e+i+1)-s,c=Math.min(r,t+i+1)-o;return a<=0||c<=0?null:{x:s,y:o,width:a,height:c}}}const Va={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},ja="top-left",Wa="__root";class za{constructor({deck:e,parentElement:t}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=e,null==t||t.classList.add("deck-widget-container"),this.parentElement=t}getWidgets(){return this.resolvedWidgets}setProps(e){if(e.widgets&&!ta(e.widgets,this.widgets,1)){const t=e.widgets.filter(Boolean);this._setWidgets(t)}}finalize(){for(const e of this.getWidgets())this._removeWidget(e);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(const e in this.containers)this.containers[e].remove()}addDefault(e){this.defaultWidgets.find(t=>t.id===e.id)||(this._addWidget(e),this.defaultWidgets.push(e),this._setWidgets(this.widgets))}onRedraw({viewports:e,layers:t}){var i,n;const r=e.reduce((e,t)=>(e[t.id]=t,e),{});for(const s of this.getWidgets()){const{viewId:o}=s;if(o){const e=r[o];e&&(s.onViewportChange&&s.onViewportChange(e),null==(i=s.onRedraw)||i.call(s,{viewports:[e],layers:t}))}else{if(s.onViewportChange)for(const t of e)s.onViewportChange(t);null==(n=s.onRedraw)||n.call(s,{viewports:e,layers:t})}}this.lastViewports=r,this._updateContainers()}onHover(e,t){var i,n;for(const r of this.getWidgets()){const{viewId:s}=r;s&&s!==(null==(i=e.viewport)?void 0:i.id)||null==(n=r.onHover)||n.call(r,e,t)}}onEvent(e,t){var i,n;const r=Es[t.type];if(r)for(const s of this.getWidgets()){const{viewId:o}=s;o&&o!==(null==(i=e.viewport)?void 0:i.id)||null==(n=s[r])||n.call(s,e,t)}}_setWidgets(e){const t={};for(const i of this.resolvedWidgets)t[i.id]=i;this.resolvedWidgets.length=0;for(const i of this.defaultWidgets)t[i.id]=null,this.resolvedWidgets.push(i);for(let i of e){const e=t[i.id];e?e.viewId!==i.viewId||e.placement!==i.placement?(this._removeWidget(e),this._addWidget(i)):i!==e&&(e.setProps(i.props),i=e):this._addWidget(i),t[i.id]=null,this.resolvedWidgets.push(i)}for(const i in t){const e=t[i];e&&this._removeWidget(e)}this.widgets=e}_addWidget(e){const{viewId:t=null,placement:i=ja}=e;e.widgetManager=this,e.deck=this.deck,e.rootElement=e._onAdd({deck:this.deck,viewId:t}),e.rootElement&&this._getContainer(t,i).append(e.rootElement),e.updateHTML()}_removeWidget(e){var t;null==(t=e.onRemove)||t.call(e),e.rootElement&&e.rootElement.remove(),e.rootElement=void 0,e.deck=void 0,e.widgetManager=void 0}_getContainer(e,t){var i;const n=e||Wa;let r=this.containers[n];r||(r=document.createElement("div"),r.style.pointerEvents="none",r.style.position="absolute",r.style.overflow="hidden",null==(i=this.parentElement)||i.append(r),this.containers[n]=r);let s=r.querySelector(`.${t}`);return s||(s=globalThis.document.createElement("div"),s.className=t,s.style.position="absolute",s.style.zIndex="2",Object.assign(s.style,Va[t]),r.append(s)),s}_updateContainers(){const e=this.deck.width,t=this.deck.height;for(const i in this.containers){const n=this.lastViewports[i]||null,r=i===Wa||n,s=this.containers[i];r?(s.style.display="block",s.style.left=`${n?n.x:0}px`,s.style.top=`${n?n.y:0}px`,s.style.width=`${n?n.width:e}px`,s.style.height=`${n?n.height:t}px`):s.style.display="none"}}}function Ha(e,t){t&&Object.entries(t).map(([t,i])=>{t.startsWith("--")?e.style.setProperty(t,i):e.style[t]=i})}class Xa{constructor(e){this.viewId=null,this.props={...this.constructor.defaultProps,...e},this.id=this.props.id}setProps(e){const t=this.props,i=this.rootElement;var n,r;i&&t.className!==e.className&&(t.className&&i.classList.remove(t.className),e.className&&i.classList.add(e.className)),i&&!ta(t.style,e.style,1)&&(n=i,(r=t.style)&&Object.keys(r).map(e=>{e.startsWith("--")?n.style.removeProperty(e):n.style[e]=""}),Ha(i,e.style)),Object.assign(this.props,e),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}onCreateRootElement(){const e=["deck-widget",this.className,this.props.className],t=document.createElement("div");return e.filter(e=>"string"==typeof e&&e.length>0).forEach(e=>t.classList.add(e)),Ha(t,this.props.style),t}_onAdd(e){return this.onAdd(e)??this.onCreateRootElement()}onAdd(e){}onRemove(){}onViewportChange(e){}onRedraw(e){}onHover(e,t){}onClick(e,t){}onDrag(e,t){}onDragStart(e,t){}onDragEnd(e,t){}}Xa.defaultProps={id:"widget",style:{},className:""};const $a={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"};class Ya extends Xa{constructor(e={}){super(e),this.id="default-tooltip",this.placement="fill",this.className="deck-tooltip",this.isVisible=!1,this.setProps(e)}onCreateRootElement(){const e=document.createElement("div");return e.className=this.className,Object.assign(e.style,$a),e}onRenderHTML(e){}onViewportChange(e){var t;this.isVisible&&e.id===(null==(t=this.lastViewport)?void 0:t.id)&&!e.equals(this.lastViewport)&&this.setTooltip(null),this.lastViewport=e}onHover(e){const{deck:t}=this,i=t&&t.props.getTooltip;if(!i)return;const n=i(e);this.setTooltip(n,e.x,e.y)}setTooltip(e,t,i){const n=this.rootElement;if(n){if("string"==typeof e)n.innerText=e;else{if(!e)return this.isVisible=!1,void(n.style.display="none");e.text&&(n.innerText=e.text),e.html&&(n.innerHTML=e.html),e.className&&(n.className=e.className)}this.isVisible=!0,n.style.display="block",n.style.transform=`translate(${t}px, ${i}px)`,e&&"object"==typeof e&&"style"in e&&Object.assign(n.style,e.style)}}}var Ka,Za;Ya.defaultProps={...Xa.defaultProps},(Za=Ka||(Ka={}))[Za.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",Za[Za.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",Za[Za.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",Za[Za.POINTS=0]="POINTS",Za[Za.LINES=1]="LINES",Za[Za.LINE_LOOP=2]="LINE_LOOP",Za[Za.LINE_STRIP=3]="LINE_STRIP",Za[Za.TRIANGLES=4]="TRIANGLES",Za[Za.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",Za[Za.TRIANGLE_FAN=6]="TRIANGLE_FAN",Za[Za.ZERO=0]="ZERO",Za[Za.ONE=1]="ONE",Za[Za.SRC_COLOR=768]="SRC_COLOR",Za[Za.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",Za[Za.SRC_ALPHA=770]="SRC_ALPHA",Za[Za.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",Za[Za.DST_ALPHA=772]="DST_ALPHA",Za[Za.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",Za[Za.DST_COLOR=774]="DST_COLOR",Za[Za.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",Za[Za.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",Za[Za.CONSTANT_COLOR=32769]="CONSTANT_COLOR",Za[Za.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",Za[Za.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",Za[Za.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",Za[Za.FUNC_ADD=32774]="FUNC_ADD",Za[Za.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",Za[Za.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",Za[Za.BLEND_EQUATION=32777]="BLEND_EQUATION",Za[Za.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",Za[Za.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",Za[Za.BLEND_DST_RGB=32968]="BLEND_DST_RGB",Za[Za.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",Za[Za.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",Za[Za.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",Za[Za.BLEND_COLOR=32773]="BLEND_COLOR",Za[Za.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",Za[Za.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",Za[Za.LINE_WIDTH=2849]="LINE_WIDTH",Za[Za.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",Za[Za.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",Za[Za.CULL_FACE_MODE=2885]="CULL_FACE_MODE",Za[Za.FRONT_FACE=2886]="FRONT_FACE",Za[Za.DEPTH_RANGE=2928]="DEPTH_RANGE",Za[Za.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",Za[Za.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",Za[Za.DEPTH_FUNC=2932]="DEPTH_FUNC",Za[Za.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",Za[Za.STENCIL_FUNC=2962]="STENCIL_FUNC",Za[Za.STENCIL_FAIL=2964]="STENCIL_FAIL",Za[Za.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",Za[Za.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",Za[Za.STENCIL_REF=2967]="STENCIL_REF",Za[Za.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",Za[Za.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",Za[Za.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",Za[Za.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",Za[Za.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",Za[Za.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",Za[Za.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",Za[Za.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",Za[Za.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",Za[Za.VIEWPORT=2978]="VIEWPORT",Za[Za.SCISSOR_BOX=3088]="SCISSOR_BOX",Za[Za.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",Za[Za.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",Za[Za.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",Za[Za.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",Za[Za.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",Za[Za.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",Za[Za.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",Za[Za.RED_BITS=3410]="RED_BITS",Za[Za.GREEN_BITS=3411]="GREEN_BITS",Za[Za.BLUE_BITS=3412]="BLUE_BITS",Za[Za.ALPHA_BITS=3413]="ALPHA_BITS",Za[Za.DEPTH_BITS=3414]="DEPTH_BITS",Za[Za.STENCIL_BITS=3415]="STENCIL_BITS",Za[Za.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",Za[Za.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",Za[Za.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",Za[Za.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",Za[Za.SAMPLES=32937]="SAMPLES",Za[Za.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",Za[Za.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",Za[Za.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",Za[Za.VENDOR=7936]="VENDOR",Za[Za.RENDERER=7937]="RENDERER",Za[Za.VERSION=7938]="VERSION",Za[Za.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",Za[Za.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",Za[Za.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",Za[Za.STATIC_DRAW=35044]="STATIC_DRAW",Za[Za.STREAM_DRAW=35040]="STREAM_DRAW",Za[Za.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",Za[Za.ARRAY_BUFFER=34962]="ARRAY_BUFFER",Za[Za.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",Za[Za.BUFFER_SIZE=34660]="BUFFER_SIZE",Za[Za.BUFFER_USAGE=34661]="BUFFER_USAGE",Za[Za.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",Za[Za.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",Za[Za.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",Za[Za.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",Za[Za.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",Za[Za.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",Za[Za.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",Za[Za.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",Za[Za.CULL_FACE=2884]="CULL_FACE",Za[Za.FRONT=1028]="FRONT",Za[Za.BACK=1029]="BACK",Za[Za.FRONT_AND_BACK=1032]="FRONT_AND_BACK",Za[Za.BLEND=3042]="BLEND",Za[Za.DEPTH_TEST=2929]="DEPTH_TEST",Za[Za.DITHER=3024]="DITHER",Za[Za.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",Za[Za.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",Za[Za.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",Za[Za.SCISSOR_TEST=3089]="SCISSOR_TEST",Za[Za.STENCIL_TEST=2960]="STENCIL_TEST",Za[Za.NO_ERROR=0]="NO_ERROR",Za[Za.INVALID_ENUM=1280]="INVALID_ENUM",Za[Za.INVALID_VALUE=1281]="INVALID_VALUE",Za[Za.INVALID_OPERATION=1282]="INVALID_OPERATION",Za[Za.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",Za[Za.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",Za[Za.CW=2304]="CW",Za[Za.CCW=2305]="CCW",Za[Za.DONT_CARE=4352]="DONT_CARE",Za[Za.FASTEST=4353]="FASTEST",Za[Za.NICEST=4354]="NICEST",Za[Za.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",Za[Za.BYTE=5120]="BYTE",Za[Za.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",Za[Za.SHORT=5122]="SHORT",Za[Za.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",Za[Za.INT=5124]="INT",Za[Za.UNSIGNED_INT=5125]="UNSIGNED_INT",Za[Za.FLOAT=5126]="FLOAT",Za[Za.DOUBLE=5130]="DOUBLE",Za[Za.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",Za[Za.ALPHA=6406]="ALPHA",Za[Za.RGB=6407]="RGB",Za[Za.RGBA=6408]="RGBA",Za[Za.LUMINANCE=6409]="LUMINANCE",Za[Za.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",Za[Za.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",Za[Za.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",Za[Za.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",Za[Za.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",Za[Za.VERTEX_SHADER=35633]="VERTEX_SHADER",Za[Za.COMPILE_STATUS=35713]="COMPILE_STATUS",Za[Za.DELETE_STATUS=35712]="DELETE_STATUS",Za[Za.LINK_STATUS=35714]="LINK_STATUS",Za[Za.VALIDATE_STATUS=35715]="VALIDATE_STATUS",Za[Za.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",Za[Za.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",Za[Za.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",Za[Za.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",Za[Za.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",Za[Za.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",Za[Za.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",Za[Za.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",Za[Za.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",Za[Za.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",Za[Za.SHADER_TYPE=35663]="SHADER_TYPE",Za[Za.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",Za[Za.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",Za[Za.NEVER=512]="NEVER",Za[Za.LESS=513]="LESS",Za[Za.EQUAL=514]="EQUAL",Za[Za.LEQUAL=515]="LEQUAL",Za[Za.GREATER=516]="GREATER",Za[Za.NOTEQUAL=517]="NOTEQUAL",Za[Za.GEQUAL=518]="GEQUAL",Za[Za.ALWAYS=519]="ALWAYS",Za[Za.KEEP=7680]="KEEP",Za[Za.REPLACE=7681]="REPLACE",Za[Za.INCR=7682]="INCR",Za[Za.DECR=7683]="DECR",Za[Za.INVERT=5386]="INVERT",Za[Za.INCR_WRAP=34055]="INCR_WRAP",Za[Za.DECR_WRAP=34056]="DECR_WRAP",Za[Za.NEAREST=9728]="NEAREST",Za[Za.LINEAR=9729]="LINEAR",Za[Za.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",Za[Za.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",Za[Za.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",Za[Za.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",Za[Za.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",Za[Za.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",Za[Za.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",Za[Za.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",Za[Za.TEXTURE_2D=3553]="TEXTURE_2D",Za[Za.TEXTURE=5890]="TEXTURE",Za[Za.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",Za[Za.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",Za[Za.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",Za[Za.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",Za[Za.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",Za[Za.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",Za[Za.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",Za[Za.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",Za[Za.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",Za[Za.TEXTURE0=33984]="TEXTURE0",Za[Za.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",Za[Za.REPEAT=10497]="REPEAT",Za[Za.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",Za[Za.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",Za[Za.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",Za[Za.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",Za[Za.FLOAT_VEC2=35664]="FLOAT_VEC2",Za[Za.FLOAT_VEC3=35665]="FLOAT_VEC3",Za[Za.FLOAT_VEC4=35666]="FLOAT_VEC4",Za[Za.INT_VEC2=35667]="INT_VEC2",Za[Za.INT_VEC3=35668]="INT_VEC3",Za[Za.INT_VEC4=35669]="INT_VEC4",Za[Za.BOOL=35670]="BOOL",Za[Za.BOOL_VEC2=35671]="BOOL_VEC2",Za[Za.BOOL_VEC3=35672]="BOOL_VEC3",Za[Za.BOOL_VEC4=35673]="BOOL_VEC4",Za[Za.FLOAT_MAT2=35674]="FLOAT_MAT2",Za[Za.FLOAT_MAT3=35675]="FLOAT_MAT3",Za[Za.FLOAT_MAT4=35676]="FLOAT_MAT4",Za[Za.SAMPLER_2D=35678]="SAMPLER_2D",Za[Za.SAMPLER_CUBE=35680]="SAMPLER_CUBE",Za[Za.LOW_FLOAT=36336]="LOW_FLOAT",Za[Za.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",Za[Za.HIGH_FLOAT=36338]="HIGH_FLOAT",Za[Za.LOW_INT=36339]="LOW_INT",Za[Za.MEDIUM_INT=36340]="MEDIUM_INT",Za[Za.HIGH_INT=36341]="HIGH_INT",Za[Za.FRAMEBUFFER=36160]="FRAMEBUFFER",Za[Za.RENDERBUFFER=36161]="RENDERBUFFER",Za[Za.RGBA4=32854]="RGBA4",Za[Za.RGB5_A1=32855]="RGB5_A1",Za[Za.RGB565=36194]="RGB565",Za[Za.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",Za[Za.STENCIL_INDEX=6401]="STENCIL_INDEX",Za[Za.STENCIL_INDEX8=36168]="STENCIL_INDEX8",Za[Za.DEPTH_STENCIL=34041]="DEPTH_STENCIL",Za[Za.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",Za[Za.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",Za[Za.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",Za[Za.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",Za[Za.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",Za[Za.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",Za[Za.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",Za[Za.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",Za[Za.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",Za[Za.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",Za[Za.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",Za[Za.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",Za[Za.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",Za[Za.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",Za[Za.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",Za[Za.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",Za[Za.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",Za[Za.NONE=0]="NONE",Za[Za.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",Za[Za.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",Za[Za.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",Za[Za.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",Za[Za.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",Za[Za.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",Za[Za.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",Za[Za.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",Za[Za.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",Za[Za.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",Za[Za.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",Za[Za.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",Za[Za.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",Za[Za.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",Za[Za.READ_BUFFER=3074]="READ_BUFFER",Za[Za.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",Za[Za.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",Za[Za.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",Za[Za.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",Za[Za.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",Za[Za.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",Za[Za.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",Za[Za.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",Za[Za.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",Za[Za.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",Za[Za.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",Za[Za.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",Za[Za.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",Za[Za.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",Za[Za.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",Za[Za.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",Za[Za.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",Za[Za.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",Za[Za.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",Za[Za.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",Za[Za.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",Za[Za.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",Za[Za.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",Za[Za.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",Za[Za.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",Za[Za.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",Za[Za.RED=6403]="RED",Za[Za.RGB8=32849]="RGB8",Za[Za.RGBA8=32856]="RGBA8",Za[Za.RGB10_A2=32857]="RGB10_A2",Za[Za.TEXTURE_3D=32879]="TEXTURE_3D",Za[Za.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",Za[Za.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",Za[Za.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",Za[Za.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",Za[Za.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",Za[Za.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",Za[Za.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",Za[Za.SRGB=35904]="SRGB",Za[Za.SRGB8=35905]="SRGB8",Za[Za.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",Za[Za.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",Za[Za.RGBA32F=34836]="RGBA32F",Za[Za.RGB32F=34837]="RGB32F",Za[Za.RGBA16F=34842]="RGBA16F",Za[Za.RGB16F=34843]="RGB16F",Za[Za.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",Za[Za.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",Za[Za.R11F_G11F_B10F=35898]="R11F_G11F_B10F",Za[Za.RGB9_E5=35901]="RGB9_E5",Za[Za.RGBA32UI=36208]="RGBA32UI",Za[Za.RGB32UI=36209]="RGB32UI",Za[Za.RGBA16UI=36214]="RGBA16UI",Za[Za.RGB16UI=36215]="RGB16UI",Za[Za.RGBA8UI=36220]="RGBA8UI",Za[Za.RGB8UI=36221]="RGB8UI",Za[Za.RGBA32I=36226]="RGBA32I",Za[Za.RGB32I=36227]="RGB32I",Za[Za.RGBA16I=36232]="RGBA16I",Za[Za.RGB16I=36233]="RGB16I",Za[Za.RGBA8I=36238]="RGBA8I",Za[Za.RGB8I=36239]="RGB8I",Za[Za.RED_INTEGER=36244]="RED_INTEGER",Za[Za.RGB_INTEGER=36248]="RGB_INTEGER",Za[Za.RGBA_INTEGER=36249]="RGBA_INTEGER",Za[Za.R8=33321]="R8",Za[Za.RG8=33323]="RG8",Za[Za.R16F=33325]="R16F",Za[Za.R32F=33326]="R32F",Za[Za.RG16F=33327]="RG16F",Za[Za.RG32F=33328]="RG32F",Za[Za.R8I=33329]="R8I",Za[Za.R8UI=33330]="R8UI",Za[Za.R16I=33331]="R16I",Za[Za.R16UI=33332]="R16UI",Za[Za.R32I=33333]="R32I",Za[Za.R32UI=33334]="R32UI",Za[Za.RG8I=33335]="RG8I",Za[Za.RG8UI=33336]="RG8UI",Za[Za.RG16I=33337]="RG16I",Za[Za.RG16UI=33338]="RG16UI",Za[Za.RG32I=33339]="RG32I",Za[Za.RG32UI=33340]="RG32UI",Za[Za.R8_SNORM=36756]="R8_SNORM",Za[Za.RG8_SNORM=36757]="RG8_SNORM",Za[Za.RGB8_SNORM=36758]="RGB8_SNORM",Za[Za.RGBA8_SNORM=36759]="RGBA8_SNORM",Za[Za.RGB10_A2UI=36975]="RGB10_A2UI",Za[Za.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",Za[Za.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",Za[Za.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",Za[Za.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",Za[Za.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",Za[Za.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",Za[Za.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",Za[Za.HALF_FLOAT=5131]="HALF_FLOAT",Za[Za.RG=33319]="RG",Za[Za.RG_INTEGER=33320]="RG_INTEGER",Za[Za.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",Za[Za.CURRENT_QUERY=34917]="CURRENT_QUERY",Za[Za.QUERY_RESULT=34918]="QUERY_RESULT",Za[Za.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",Za[Za.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",Za[Za.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",Za[Za.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",Za[Za.DRAW_BUFFER0=34853]="DRAW_BUFFER0",Za[Za.DRAW_BUFFER1=34854]="DRAW_BUFFER1",Za[Za.DRAW_BUFFER2=34855]="DRAW_BUFFER2",Za[Za.DRAW_BUFFER3=34856]="DRAW_BUFFER3",Za[Za.DRAW_BUFFER4=34857]="DRAW_BUFFER4",Za[Za.DRAW_BUFFER5=34858]="DRAW_BUFFER5",Za[Za.DRAW_BUFFER6=34859]="DRAW_BUFFER6",Za[Za.DRAW_BUFFER7=34860]="DRAW_BUFFER7",Za[Za.DRAW_BUFFER8=34861]="DRAW_BUFFER8",Za[Za.DRAW_BUFFER9=34862]="DRAW_BUFFER9",Za[Za.DRAW_BUFFER10=34863]="DRAW_BUFFER10",Za[Za.DRAW_BUFFER11=34864]="DRAW_BUFFER11",Za[Za.DRAW_BUFFER12=34865]="DRAW_BUFFER12",Za[Za.DRAW_BUFFER13=34866]="DRAW_BUFFER13",Za[Za.DRAW_BUFFER14=34867]="DRAW_BUFFER14",Za[Za.DRAW_BUFFER15=34868]="DRAW_BUFFER15",Za[Za.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",Za[Za.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",Za[Za.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",Za[Za.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",Za[Za.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",Za[Za.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",Za[Za.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",Za[Za.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",Za[Za.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",Za[Za.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",Za[Za.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",Za[Za.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",Za[Za.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",Za[Za.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",Za[Za.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",Za[Za.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",Za[Za.SAMPLER_3D=35679]="SAMPLER_3D",Za[Za.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",Za[Za.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",Za[Za.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",Za[Za.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",Za[Za.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",Za[Za.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",Za[Za.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",Za[Za.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",Za[Za.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",Za[Za.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",Za[Za.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",Za[Za.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",Za[Za.MAX_SAMPLES=36183]="MAX_SAMPLES",Za[Za.SAMPLER_BINDING=35097]="SAMPLER_BINDING",Za[Za.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",Za[Za.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",Za[Za.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",Za[Za.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",Za[Za.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",Za[Za.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",Za[Za.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",Za[Za.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",Za[Za.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",Za[Za.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",Za[Za.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",Za[Za.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",Za[Za.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",Za[Za.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",Za[Za.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",Za[Za.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",Za[Za.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",Za[Za.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",Za[Za.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",Za[Za.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",Za[Za.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",Za[Za.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",Za[Za.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",Za[Za.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",Za[Za.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",Za[Za.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",Za[Za.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",Za[Za.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",Za[Za.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",Za[Za.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",Za[Za.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",Za[Za.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",Za[Za.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",Za[Za.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",Za[Za.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",Za[Za.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",Za[Za.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",Za[Za.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",Za[Za.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",Za[Za.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",Za[Za.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",Za[Za.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",Za[Za.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",Za[Za.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",Za[Za.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",Za[Za.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",Za[Za.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",Za[Za.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",Za[Za.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",Za[Za.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",Za[Za.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",Za[Za.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",Za[Za.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",Za[Za.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",Za[Za.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",Za[Za.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",Za[Za.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",Za[Za.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",Za[Za.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",Za[Za.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",Za[Za.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",Za[Za.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",Za[Za.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",Za[Za.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",Za[Za.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",Za[Za.UNIFORM_TYPE=35383]="UNIFORM_TYPE",Za[Za.UNIFORM_SIZE=35384]="UNIFORM_SIZE",Za[Za.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",Za[Za.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",Za[Za.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",Za[Za.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",Za[Za.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",Za[Za.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",Za[Za.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",Za[Za.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",Za[Za.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",Za[Za.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",Za[Za.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",Za[Za.OBJECT_TYPE=37138]="OBJECT_TYPE",Za[Za.SYNC_CONDITION=37139]="SYNC_CONDITION",Za[Za.SYNC_STATUS=37140]="SYNC_STATUS",Za[Za.SYNC_FLAGS=37141]="SYNC_FLAGS",Za[Za.SYNC_FENCE=37142]="SYNC_FENCE",Za[Za.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",Za[Za.UNSIGNALED=37144]="UNSIGNALED",Za[Za.SIGNALED=37145]="SIGNALED",Za[Za.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",Za[Za.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",Za[Za.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",Za[Za.WAIT_FAILED=37149]="WAIT_FAILED",Za[Za.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",Za[Za.COLOR=6144]="COLOR",Za[Za.DEPTH=6145]="DEPTH",Za[Za.STENCIL=6146]="STENCIL",Za[Za.MIN=32775]="MIN",Za[Za.MAX=32776]="MAX",Za[Za.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",Za[Za.STREAM_READ=35041]="STREAM_READ",Za[Za.STREAM_COPY=35042]="STREAM_COPY",Za[Za.STATIC_READ=35045]="STATIC_READ",Za[Za.STATIC_COPY=35046]="STATIC_COPY",Za[Za.DYNAMIC_READ=35049]="DYNAMIC_READ",Za[Za.DYNAMIC_COPY=35050]="DYNAMIC_COPY",Za[Za.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",Za[Za.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",Za[Za.INVALID_INDEX=4294967295]="INVALID_INDEX",Za[Za.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",Za[Za.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",Za[Za.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",Za[Za.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",Za[Za.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",Za[Za.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",Za[Za.R16_EXT=33322]="R16_EXT",Za[Za.RG16_EXT=33324]="RG16_EXT",Za[Za.RGB16_EXT=32852]="RGB16_EXT",Za[Za.RGBA16_EXT=32859]="RGBA16_EXT",Za[Za.R16_SNORM_EXT=36760]="R16_SNORM_EXT",Za[Za.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",Za[Za.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",Za[Za.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",Za[Za.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",Za[Za.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",Za[Za.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",Za[Za.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",Za[Za.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",Za[Za.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",Za[Za.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",Za[Za.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",Za[Za.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",Za[Za.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",Za[Za.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",Za[Za.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",Za[Za.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",Za[Za.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",Za[Za.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",Za[Za.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",Za[Za.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",Za[Za.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",Za[Za.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",Za[Za.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",Za[Za.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",Za[Za.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",Za[Za.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",Za[Za.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",Za[Za.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",Za[Za.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",Za[Za.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",Za[Za.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",Za[Za.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",Za[Za.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",Za[Za.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",Za[Za.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",Za[Za.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",Za[Za.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",Za[Za.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",Za[Za.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",Za[Za.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",Za[Za.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",Za[Za.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",Za[Za.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",Za[Za.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",Za[Za.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",Za[Za.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",Za[Za.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",Za[Za.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",Za[Za.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",Za[Za.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",Za[Za.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",Za[Za.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",Za[Za.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",Za[Za.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",Za[Za.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",Za[Za.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",Za[Za.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",Za[Za.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",Za[Za.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",Za[Za.COMPLETION_STATUS_KHR=37297]="COMPLETION_STATUS_KHR",Za[Za.DEPTH_CLAMP_EXT=34383]="DEPTH_CLAMP_EXT",Za[Za.FIRST_VERTEX_CONVENTION_WEBGL=36429]="FIRST_VERTEX_CONVENTION_WEBGL",Za[Za.LAST_VERTEX_CONVENTION_WEBGL=36430]="LAST_VERTEX_CONVENTION_WEBGL",Za[Za.PROVOKING_VERTEX_WEBL=36431]="PROVOKING_VERTEX_WEBL",Za[Za.POLYGON_MODE_WEBGL=2880]="POLYGON_MODE_WEBGL",Za[Za.POLYGON_OFFSET_LINE_WEBGL=10754]="POLYGON_OFFSET_LINE_WEBGL",Za[Za.LINE_WEBGL=6913]="LINE_WEBGL",Za[Za.FILL_WEBGL=6914]="FILL_WEBGL",Za[Za.MAX_CLIP_DISTANCES_WEBGL=3378]="MAX_CLIP_DISTANCES_WEBGL",Za[Za.MAX_CULL_DISTANCES_WEBGL=33529]="MAX_CULL_DISTANCES_WEBGL",Za[Za.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL=33530]="MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL",Za[Za.CLIP_DISTANCE0_WEBGL=12288]="CLIP_DISTANCE0_WEBGL",Za[Za.CLIP_DISTANCE1_WEBGL=12289]="CLIP_DISTANCE1_WEBGL",Za[Za.CLIP_DISTANCE2_WEBGL=12290]="CLIP_DISTANCE2_WEBGL",Za[Za.CLIP_DISTANCE3_WEBGL=12291]="CLIP_DISTANCE3_WEBGL",Za[Za.CLIP_DISTANCE4_WEBGL=12292]="CLIP_DISTANCE4_WEBGL",Za[Za.CLIP_DISTANCE5_WEBGL=12293]="CLIP_DISTANCE5_WEBGL",Za[Za.CLIP_DISTANCE6_WEBGL=12294]="CLIP_DISTANCE6_WEBGL",Za[Za.CLIP_DISTANCE7_WEBGL=12295]="CLIP_DISTANCE7_WEBGL",Za[Za.POLYGON_OFFSET_CLAMP_EXT=36379]="POLYGON_OFFSET_CLAMP_EXT",Za[Za.LOWER_LEFT_EXT=36001]="LOWER_LEFT_EXT",Za[Za.UPPER_LEFT_EXT=36002]="UPPER_LEFT_EXT",Za[Za.NEGATIVE_ONE_TO_ONE_EXT=37726]="NEGATIVE_ONE_TO_ONE_EXT",Za[Za.ZERO_TO_ONE_EXT=37727]="ZERO_TO_ONE_EXT",Za[Za.CLIP_ORIGIN_EXT=37724]="CLIP_ORIGIN_EXT",Za[Za.CLIP_DEPTH_MODE_EXT=37725]="CLIP_DEPTH_MODE_EXT",Za[Za.SRC1_COLOR_WEBGL=35065]="SRC1_COLOR_WEBGL",Za[Za.SRC1_ALPHA_WEBGL=34185]="SRC1_ALPHA_WEBGL",Za[Za.ONE_MINUS_SRC1_COLOR_WEBGL=35066]="ONE_MINUS_SRC1_COLOR_WEBGL",Za[Za.ONE_MINUS_SRC1_ALPHA_WEBGL=35067]="ONE_MINUS_SRC1_ALPHA_WEBGL",Za[Za.MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL=35068]="MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL",Za[Za.MIRROR_CLAMP_TO_EDGE_EXT=34627]="MIRROR_CLAMP_TO_EDGE_EXT";const qa={WEBGL_depth_texture:{UNSIGNED_INT_24_8_WEBGL:34042},OES_element_index_uint:{},OES_texture_float:{},OES_texture_half_float:{HALF_FLOAT_OES:5131},EXT_color_buffer_float:{},OES_standard_derivatives:{FRAGMENT_SHADER_DERIVATIVE_HINT_OES:35723},EXT_frag_depth:{},EXT_blend_minmax:{MIN_EXT:32775,MAX_EXT:32776},EXT_shader_texture_lod:{}},Qa=e=>({drawBuffersWEBGL:t=>e.drawBuffers(t),COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067}),Ja=e=>({VERTEX_ARRAY_BINDING_OES:34229,createVertexArrayOES:()=>e.createVertexArray(),deleteVertexArrayOES:t=>e.deleteVertexArray(t),isVertexArrayOES:t=>e.isVertexArray(t),bindVertexArrayOES:t=>e.bindVertexArray(t)}),ec=e=>({VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:35070,drawArraysInstancedANGLE:(...t)=>e.drawArraysInstanced(...t),drawElementsInstancedANGLE:(...t)=>e.drawElementsInstanced(...t),vertexAttribDivisorANGLE:(...t)=>e.vertexAttribDivisor(...t)});async function tc(e,t){const i=document.getElementsByTagName("head")[0];if(!i)throw new Error("loadScript");const n=document.createElement("script");return n.setAttribute("type","text/javascript"),n.setAttribute("src",e),new Promise((t,r)=>{n.onload=t,n.onerror=t=>r(new Error(`Unable to load script '${e}': ${t}`)),i.appendChild(n)})}let ic=null,nc=!1;const rc={debugSpectorJS:ii.get("debug-spectorjs"),debugSpectorJSUrl:"https://cdn.jsdelivr.net/npm/spectorjs@0.9.30/dist/spector.bundle.js",gl:void 0};function sc(e){return e.luma=e.luma||{},e.luma}function oc(e,t={}){return t.debugWebGL||t.traceWebGL?function(e,t){if(!globalThis.WebGLDebugUtils)return ii.warn("webgl-debug not loaded")(),e;const i=sc(e);if(i.debugContext)return i.debugContext;globalThis.WebGLDebugUtils.init({...Ka,...e});const n=globalThis.WebGLDebugUtils.makeDebugContext(e,cc.bind(null,t),lc.bind(null,t));for(const o in Ka)o in n||"number"!=typeof Ka[o]||(n[o]=Ka[o]);class r{}Object.setPrototypeOf(n,Object.getPrototypeOf(e)),Object.setPrototypeOf(r,n);const s=Object.create(r);return i.realContext=e,i.debugContext=s,s.debug=!0,s}(e,t):function(e){const t=sc(e);return t.realContext?t.realContext:e}(e)}function ac(e,t){t=Array.from(t).map(e=>void 0===e?"undefined":e);let i=globalThis.WebGLDebugUtils.glFunctionArgsToString(e,t);return i=`${i.slice(0,100)}${i.length>100?"...":""}`,`gl.${e}(${i})`}function cc(e,t,i,n){n=Array.from(n).map(e=>void 0===e?"undefined":e);const r=`${globalThis.WebGLDebugUtils.glEnumToString(t)} in gl.${i}(${globalThis.WebGLDebugUtils.glFunctionArgsToString(i,n)})`;ii.error(r)()}function lc(e,t,i){let n="";ii.level>=1&&(n=ac(t,i),e.traceWebGL&&ii.log(1,n)());for(const r of i)void 0===r&&(n=n||ac(t,i))}const hc=new class extends Fi{constructor(){super(),n(this,"type","webgl"),Oi.defaultProps={...Oi.defaultProps,...rc}}enforceWebGL2(e){!function(e=!0){const t=HTMLCanvasElement.prototype;if(!e&&t.originalGetContext)return t.getContext=t.originalGetContext,void(t.originalGetContext=void 0);t.originalGetContext=t.getContext,t.getContext=function(e,t){if("webgl"===e||"experimental-webgl"===e){const e=this.originalGetContext("webgl2",t);return e instanceof HTMLElement&&function(e){e.getExtension("EXT_color_buffer_float");const t={...qa,WEBGL_disjoint_timer_query:e.getExtension("EXT_disjoint_timer_query_webgl2"),WEBGL_draw_buffers:Qa(e),OES_vertex_array_object:Ja(e),ANGLE_instanced_arrays:ec(e)},i=e.getExtension;e.getExtension=function(n){return i.call(e,n)||(n in t?t[n]:null)};const n=e.getSupportedExtensions;e.getSupportedExtensions=function(){const i=n.apply(e)||[];return null==i?void 0:i.concat(Object.keys(t))}}(e),e}return this.originalGetContext(e,t)}}(e)}isSupported(){return"undefined"!=typeof WebGL2RenderingContext}isDeviceHandle(e){return"undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext||("undefined"!=typeof WebGLRenderingContext&&e instanceof WebGLRenderingContext&&ii.warn("WebGL1 is not supported",e)(),!1)}async attach(e,t={}){const{WebGLDevice:i}=await o(async()=>{const{WebGLDevice:e}=await Promise.resolve().then(()=>Vl);return{WebGLDevice:e}},void 0);if(e instanceof i)return e;if((null==e?void 0:e.device)instanceof i)return e.device;if(!function(e){return"undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext||Boolean(e&&Number.isFinite(e._version))}(e))throw new Error("Invalid WebGL2RenderingContext");const n=!0===t.createCanvasContext?{}:t.createCanvasContext;return new i({...t,_handle:e,createCanvasContext:{canvas:e.canvas,autoResize:!1,...n}})}async create(e={}){const{WebGLDevice:t}=await o(async()=>{const{WebGLDevice:e}=await Promise.resolve().then(()=>Vl);return{WebGLDevice:e}},void 0);ii.groupCollapsed(1,"WebGLDevice created")();try{const i=[];(e.debugWebGL||e.debug)&&i.push(async function(){f()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await tc("https://unpkg.com/webgl-debug@2.0.1/index.js"))}()),e.debugSpectorJS&&i.push(async function(e){if(!globalThis.SPECTOR)try{await tc(e.debugSpectorJSUrl||rc.debugSpectorJSUrl)}catch(t){ii.warn(String(t))}}(e));const n=await Promise.allSettled(i);for(const e of n)"rejected"===e.status&&ii.error(`Failed to initialize debug libraries ${e.reason}`)();const r=new t(e),s=`${r._reused?"Reusing":"Created"} device with WebGL2 ${r.props.debug?"debug ":""}context: ${r.info.vendor}, ${r.info.renderer} for canvas: ${r.canvasContext.id}`;return ii.probe(1,s)(),ii.table(1,r.info)(),r}finally{ii.groupEnd(1)()}}},uc={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,35725:null,36006:null,36007:null,34229:null,34964:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32926:!1,32928:!1,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:4294967295,36005:4294967295,2962:519,2967:0,2963:4294967295,34816:519,36003:0,36004:4294967295,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],36389:null,36662:null,36663:null,35053:null,35055:null,35723:4352,36010:null,35977:!1,3333:4,3317:4,37440:!1,37441:!1,37443:37444,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0},dc=(e,t,i)=>t?e.enable(i):e.disable(i),pc=(e,t,i)=>e.hint(i,t),fc=(e,t,i)=>e.pixelStorei(i,t),_c=(e,t,i)=>{const n=36006===i?36009:36008;return e.bindFramebuffer(n,t)},gc=(e,t,i)=>{const n={34964:34962,36662:36662,36663:36663,35053:35051,35055:35052}[i];e.bindBuffer(n,t)};function mc(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}const Ec={3042:dc,32773:(e,t)=>e.blendColor(...t),32777:"blendEquation",34877:"blendEquation",32969:"blendFunc",32968:"blendFunc",32971:"blendFunc",32970:"blendFunc",3106:(e,t)=>e.clearColor(...t),3107:(e,t)=>e.colorMask(...t),2884:dc,2885:(e,t)=>e.cullFace(t),2929:dc,2931:(e,t)=>e.clearDepth(t),2932:(e,t)=>e.depthFunc(t),2928:(e,t)=>e.depthRange(...t),2930:(e,t)=>e.depthMask(t),3024:dc,35723:pc,35725:(e,t)=>e.useProgram(t),36007:(e,t)=>e.bindRenderbuffer(36161,t),36389:(e,t)=>{var i;return null==(i=e.bindTransformFeedback)?void 0:i.call(e,36386,t)},34229:(e,t)=>e.bindVertexArray(t),36006:_c,36010:_c,34964:gc,36662:gc,36663:gc,35053:gc,35055:gc,2886:(e,t)=>e.frontFace(t),33170:pc,2849:(e,t)=>e.lineWidth(t),32823:dc,32824:"polygonOffset",10752:"polygonOffset",35977:dc,32926:dc,32928:dc,32938:"sampleCoverage",32939:"sampleCoverage",3089:dc,3088:(e,t)=>e.scissor(...t),2960:dc,2961:(e,t)=>e.clearStencil(t),2968:(e,t)=>e.stencilMaskSeparate(1028,t),36005:(e,t)=>e.stencilMaskSeparate(1029,t),2962:"stencilFuncFront",2967:"stencilFuncFront",2963:"stencilFuncFront",34816:"stencilFuncBack",36003:"stencilFuncBack",36004:"stencilFuncBack",2964:"stencilOpFront",2965:"stencilOpFront",2966:"stencilOpFront",34817:"stencilOpBack",34818:"stencilOpBack",34819:"stencilOpBack",2978:(e,t)=>e.viewport(...t),34383:dc,10754:dc,12288:dc,12289:dc,12290:dc,12291:dc,12292:dc,12293:dc,12294:dc,12295:dc,3333:fc,3317:fc,37440:fc,37441:fc,37443:fc,3330:fc,3332:fc,3331:fc,3314:fc,32878:fc,3316:fc,3315:fc,32877:fc,framebuffer:(e,t)=>{const i=t&&"handle"in t?t.handle:t;return e.bindFramebuffer(36160,i)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{const i="number"==typeof t?[t,t]:t;e.blendEquationSeparate(...i)},blendFunc:(e,t)=>{const i=2===(null==t?void 0:t.length)?[...t,...t]:t;e.blendFuncSeparate(...i)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(t[0],t[1]||!1),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{t=mc(t)?t:[t,t];const[i,n]=t;e.stencilMaskSeparate(1028,i),e.stencilMaskSeparate(1029,n)},stencilFunc:(e,t)=>{t=mc(t)&&3===t.length?[...t,...t]:t;const[i,n,r,s,o,a]=t;e.stencilFuncSeparate(1028,i,n,r),e.stencilFuncSeparate(1029,s,o,a)},stencilOp:(e,t)=>{t=mc(t)&&3===t.length?[...t,...t]:t;const[i,n,r,s,o,a]=t;e.stencilOpSeparate(1028,i,n,r),e.stencilOpSeparate(1029,s,o,a)},viewport:(e,t)=>e.viewport(...t)};function vc(e,t,i){return void 0!==t[e]?t[e]:i[e]}const Tc={blendEquation:(e,t,i)=>e.blendEquationSeparate(vc(32777,t,i),vc(34877,t,i)),blendFunc:(e,t,i)=>e.blendFuncSeparate(vc(32969,t,i),vc(32968,t,i),vc(32971,t,i),vc(32970,t,i)),polygonOffset:(e,t,i)=>e.polygonOffset(vc(32824,t,i),vc(10752,t,i)),sampleCoverage:(e,t,i)=>e.sampleCoverage(vc(32938,t,i),vc(32939,t,i)),stencilFuncFront:(e,t,i)=>e.stencilFuncSeparate(1028,vc(2962,t,i),vc(2967,t,i),vc(2963,t,i)),stencilFuncBack:(e,t,i)=>e.stencilFuncSeparate(1029,vc(34816,t,i),vc(36003,t,i),vc(36004,t,i)),stencilOpFront:(e,t,i)=>e.stencilOpSeparate(1028,vc(2964,t,i),vc(2965,t,i),vc(2966,t,i)),stencilOpBack:(e,t,i)=>e.stencilOpSeparate(1029,vc(34817,t,i),vc(34818,t,i),vc(34819,t,i))},Rc={enable:(e,t)=>e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,i)=>e({[t]:i}),hint:(e,t,i)=>e({[t]:i}),useProgram:(e,t)=>e({35725:t}),bindRenderbuffer:(e,t,i)=>e({36007:i}),bindTransformFeedback:(e,t,i)=>e({36389:i}),bindVertexArray:(e,t)=>e({34229:t}),bindFramebuffer:(e,t,i)=>{switch(t){case 36160:return e({36006:i,36010:i});case 36009:return e({36006:i});case 36008:return e({36010:i});default:return null}},bindBuffer:(e,t,i)=>{const n={34962:[34964],36662:[36662],36663:[36663],35051:[35053],35052:[35055]}[t];return n?e({[n]:i}):{valueChanged:!0}},blendColor:(e,t,i,n,r)=>e({32773:new Float32Array([t,i,n,r])}),blendEquation:(e,t)=>e({32777:t,34877:t}),blendEquationSeparate:(e,t,i)=>e({32777:t,34877:i}),blendFunc:(e,t,i)=>e({32969:t,32968:i,32971:t,32970:i}),blendFuncSeparate:(e,t,i,n,r)=>e({32969:t,32968:i,32971:n,32970:r}),clearColor:(e,t,i,n,r)=>e({3106:new Float32Array([t,i,n,r])}),clearDepth:(e,t)=>e({2931:t}),clearStencil:(e,t)=>e({2961:t}),colorMask:(e,t,i,n,r)=>e({3107:[t,i,n,r]}),cullFace:(e,t)=>e({2885:t}),depthFunc:(e,t)=>e({2932:t}),depthRange:(e,t,i)=>e({2928:new Float32Array([t,i])}),depthMask:(e,t)=>e({2930:t}),frontFace:(e,t)=>e({2886:t}),lineWidth:(e,t)=>e({2849:t}),polygonOffset:(e,t,i)=>e({32824:t,10752:i}),sampleCoverage:(e,t,i)=>e({32938:t,32939:i}),scissor:(e,t,i,n,r)=>e({3088:new Int32Array([t,i,n,r])}),stencilMask:(e,t)=>e({2968:t,36005:t}),stencilMaskSeparate:(e,t,i)=>e({[1028===t?2968:36005]:i}),stencilFunc:(e,t,i,n)=>e({2962:t,2967:i,2963:n,34816:t,36003:i,36004:n}),stencilFuncSeparate:(e,t,i,n,r)=>e({[1028===t?2962:34816]:i,[1028===t?2967:36003]:n,[1028===t?2963:36004]:r}),stencilOp:(e,t,i,n)=>e({2964:t,2965:i,2966:n,34817:t,34818:i,34819:n}),stencilOpSeparate:(e,t,i,n,r)=>e({[1028===t?2964:34817]:i,[1028===t?2965:34818]:n,[1028===t?2966:34819]:r}),viewport:(e,t,i,n,r)=>e({2978:[t,i,n,r]})},bc=(e,t)=>e.isEnabled(t),Ac={3042:bc,2884:bc,2929:bc,3024:bc,32823:bc,32926:bc,32928:bc,3089:bc,2960:bc,35977:bc},Sc=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068]);function yc(e,t){if(function(e){for(const t in e)return!1;return!0}(t))return;const i={};for(const r in t){const n=Number(r),s=Ec[r];s&&("string"==typeof s?i[s]=!0:s(e,t[r],n))}const n=e.state&&e.state.cache;if(n)for(const r in i)(0,Tc[r])(e,t,n)}function wc(e,t=uc){if("number"==typeof t){const i=t,n=Ac[i];return n?n(e,i):e.getParameter(i)}const i=Array.isArray(t)?t:Object.keys(t),n={};for(const r of i){const t=Ac[r];n[r]=t?t(e,Number(r)):e.getParameter(Number(r))}return n}function Mc(e,t){if(e===t)return!0;if(Cc(e)&&Cc(t)&&e.length===t.length){for(let i=0;i{}),this._updateCache=this._updateCache.bind(this),Object.seal(this)}static get(e){return e.state}push(e={}){this.stateStack.push({})}pop(){const e=this.stateStack[this.stateStack.length-1];yc(this.gl,e),this.stateStack.pop()}trackState(e,t){if(this.cache=(null==t?void 0:t.copyState)?wc(e):Object.assign({},uc),this.initialized)throw new Error("WebGLStateTracker");this.initialized=!0,this.gl.state=this,function(e){const t=e.useProgram.bind(e);e.useProgram=function(i){const n=Pc.get(e);n.program!==i&&(t(i),n.program=i)}}(e);for(const i in Rc)Lc(e,i,Rc[i]);Ic(e,"getParameter"),Ic(e,"isEnabled")}_updateCache(e){let t,i=!1;const n=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(const r in e){const s=e[r],o=this.cache[r];Mc(s,o)||(i=!0,t=o,n&&!(r in n)&&(n[r]=o),this.cache[r]=s)}return{valueChanged:i,oldValue:t}}}function Ic(e,t){const i=e[t].bind(e);e[t]=function(t){if(void 0===t||Sc.has(t))return i(t);const n=Pc.get(e);return t in n.cache||(n.cache[t]=i(t)),n.enable?n.cache[t]:i(t)},Object.defineProperty(e[t],"name",{value:`${t}-from-cache`,configurable:!1})}function Lc(e,t,i){if(!e[t])return;const n=e[t].bind(e);e[t]=function(...t){const r=Pc.get(e),{valueChanged:s,oldValue:o}=i(r._updateCache,...t);return s&&n(...t),o},Object.defineProperty(e[t],"name",{value:`${t}-to-cache`,configurable:!1})}function Oc(e,t,i){return void 0===i[t]&&(i[t]=e.getExtension(t)||null),i[t]}function Nc(e,t){return/NVIDIA/i.exec(e)||/NVIDIA/i.exec(t)?"nvidia":/INTEL/i.exec(e)||/INTEL/i.exec(t)?"intel":/Apple/i.exec(e)||/Apple/i.exec(t)?"apple":/AMD/i.exec(e)||/AMD/i.exec(t)||/ATI/i.exec(e)||/ATI/i.exec(t)?"amd":/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t)?"software":"unknown"}function xc(e){switch(e){case"uint8":case"unorm8":return 5121;case"sint8":case"snorm8":return 5120;case"uint16":case"unorm16":return 5123;case"sint16":case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw new Error(String(e))}const Dc="WEBGL_compressed_texture_s3tc",Fc="WEBGL_compressed_texture_s3tc_srgb",Bc="EXT_texture_compression_rgtc",Uc="EXT_texture_compression_bptc",kc="EXT_texture_norm16",Gc="EXT_render_snorm",Vc={"float32-renderable-webgl":["EXT_color_buffer_float"],"float16-renderable-webgl":["EXT_color_buffer_half_float"],"rgb9e5ufloat-renderable-webgl":["WEBGL_render_shared_exponent"],"snorm8-renderable-webgl":[Gc],"norm16-renderable-webgl":[kc],"snorm16-renderable-webgl":[kc,Gc],"float32-filterable":["OES_texture_float_linear"],"float16-filterable-webgl":["OES_texture_half_float_linear"],"texture-filterable-anisotropic-webgl":["EXT_texture_filter_anisotropic"],"texture-blend-float-webgl":["EXT_float_blend"],"texture-compression-bc":[Dc,Fc,Bc,Uc],"texture-compression-bc5-webgl":[Bc],"texture-compression-bc7-webgl":[Uc],"texture-compression-etc2":["WEBGL_compressed_texture_etc"],"texture-compression-astc":["WEBGL_compressed_texture_astc"],"texture-compression-etc1-webgl":["WEBGL_compressed_texture_etc1"],"texture-compression-pvrtc-webgl":["WEBGL_compressed_texture_pvrtc"],"texture-compression-atc-webgl":["WEBGL_compressed_texture_atc"]},jc={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757},rg8uint:{gl:33336,rb:!0},rg8sint:{gl:33335,rb:!0},r16uint:{gl:33332,rb:!0},r16sint:{gl:33331,rb:!0},r16float:{gl:33325,rb:!0},r16unorm:{gl:33322,rb:!0},r16snorm:{gl:36760},"rgba4unorm-webgl":{gl:32854,rb:!0},"rgb565unorm-webgl":{gl:36194,rb:!0},"rgb5a1unorm-webgl":{gl:32855,rb:!0},"rgb8unorm-webgl":{gl:32849},"rgb8snorm-webgl":{gl:36758},rgba8unorm:{gl:32856},"rgba8unorm-srgb":{gl:35907},rgba8snorm:{gl:36759},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0},rg16unorm:{gl:33324},rg16snorm:{gl:36761},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326},rgb9e5ufloat:{gl:35901},rg11b10ufloat:{gl:35898,rb:!0},rgb10a2unorm:{gl:32857,rb:!0},rgb10a2uint:{gl:36975,rb:!0},"rgb16unorm-webgl":{gl:32852},"rgb16snorm-webgl":{gl:36762},rg32uint:{gl:33340,rb:!0},rg32sint:{gl:33339,rb:!0},rg32float:{gl:33328,rb:!0},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842},rgba16unorm:{gl:32859,rb:!0},rgba16snorm:{gl:36763},"rgb32float-webgl":{gl:34837,x:"EXT_color_buffer_float",dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0},stencil8:{gl:36168,rb:!0},depth16unorm:{gl:33189,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,dataFormat:6402,types:[5125]},depth32float:{gl:36012,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth32float-stencil8":{gl:36013,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:Dc},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:Fc},"bc1-rgba-unorm":{gl:33777,x:Dc},"bc1-rgba-unorm-srgb":{gl:35916,x:Fc},"bc2-rgba-unorm":{gl:33778,x:Dc},"bc2-rgba-unorm-srgb":{gl:35918,x:Fc},"bc3-rgba-unorm":{gl:33779,x:Dc},"bc3-rgba-unorm-srgb":{gl:35919,x:Fc},"bc4-r-unorm":{gl:36283,x:Bc},"bc4-r-snorm":{gl:36284,x:Bc},"bc5-rg-unorm":{gl:36285,x:Bc},"bc5-rg-snorm":{gl:36286,x:Bc},"bc6h-rgb-ufloat":{gl:36495,x:Uc},"bc6h-rgb-float":{gl:36494,x:Uc},"bc7-rgba-unorm":{gl:36492,x:Uc},"bc7-rgba-unorm-srgb":{gl:36493,x:Uc},"etc2-rgb8unorm":{gl:37492},"etc2-rgb8unorm-srgb":{gl:37494},"etc2-rgb8a1unorm":{gl:37496},"etc2-rgb8a1unorm-srgb":{gl:37497},"etc2-rgba8unorm":{gl:37493},"etc2-rgba8unorm-srgb":{gl:37495},"eac-r11unorm":{gl:37488},"eac-r11snorm":{gl:37489},"eac-rg11unorm":{gl:37490},"eac-rg11snorm":{gl:37491},"astc-4x4-unorm":{gl:37808},"astc-4x4-unorm-srgb":{gl:37840},"astc-5x4-unorm":{gl:37809},"astc-5x4-unorm-srgb":{gl:37841},"astc-5x5-unorm":{gl:37810},"astc-5x5-unorm-srgb":{gl:37842},"astc-6x5-unorm":{gl:37811},"astc-6x5-unorm-srgb":{gl:37843},"astc-6x6-unorm":{gl:37812},"astc-6x6-unorm-srgb":{gl:37844},"astc-8x5-unorm":{gl:37813},"astc-8x5-unorm-srgb":{gl:37845},"astc-8x6-unorm":{gl:37814},"astc-8x6-unorm-srgb":{gl:37846},"astc-8x8-unorm":{gl:37815},"astc-8x8-unorm-srgb":{gl:37847},"astc-10x5-unorm":{gl:37819},"astc-10x5-unorm-srgb":{gl:37851},"astc-10x6-unorm":{gl:37817},"astc-10x6-unorm-srgb":{gl:37849},"astc-10x8-unorm":{gl:37818},"astc-10x8-unorm-srgb":{gl:37850},"astc-10x10-unorm":{gl:37819},"astc-10x10-unorm-srgb":{gl:37851},"astc-12x10-unorm":{gl:37820},"astc-12x10-unorm-srgb":{gl:37852},"astc-12x12-unorm":{gl:37821},"astc-12x12-unorm-srgb":{gl:37853},"pvrtc-rgb4unorm-webgl":{gl:35840},"pvrtc-rgba4unorm-webgl":{gl:35842},"pvrtc-rbg2unorm-webgl":{gl:35841},"pvrtc-rgba2unorm-webgl":{gl:35843},"etc1-rbg-unorm-webgl":{gl:36196},"atc-rgb-unorm-webgl":{gl:35986},"atc-rgba-unorm-webgl":{gl:35986},"atc-rgbai-unorm-webgl":{gl:34798}};function Wc(e){var t;const i=jc[e],n=function(e){const t=jc[e],i=null==t?void 0:t.gl;if(void 0===i)throw new Error(`Unsupported texture format ${e}`);return i}(e),r=Mi.getInfo(e);return r.compressed&&(i.dataFormat=n),{internalFormat:n,format:(null==i?void 0:i.dataFormat)||zc(r.channels,r.integer,r.normalized,n),type:r.dataType?xc(r.dataType):(null==(t=null==i?void 0:i.types)?void 0:t[0])||5121,compressed:r.compressed||!1}}function zc(e,t,i,n){if(6408===n||6407===n)return n;switch(e){case"r":return t&&!i?36244:6403;case"rg":return t&&!i?33320:33319;case"rgb":return t&&!i?36248:6407;case"rgba":return t&&!i?36249:6408;case"bgra":throw new Error("bgra pixels not supported by WebGL");default:return 6408}}const Hc={"depth-clip-control":"EXT_depth_clamp","timer-query-webgl":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"};class Xc extends Ii{constructor(e,t,i){super([],i),n(this,"gl"),n(this,"extensions"),n(this,"testedFeatures",new Set),this.gl=e,this.extensions=t,Oc(e,"EXT_color_buffer_float",t)}*[Symbol.iterator](){const e=this.getFeatures();for(const t of e)this.has(t)&&(yield t);return[]}has(e){var t;return!(null==(t=this.disabledFeatures)?void 0:t[e])&&(this.testedFeatures.has(e)||(this.testedFeatures.add(e),function(e){return e in Vc}(e)&&function(e,t,i){return(Vc[t]||[]).every(t=>Oc(e,t,i))}(this.gl,e,this.extensions)&&this.features.add(e),this.getWebGLFeature(e)&&this.features.add(e)),this.features.has(e))}initializeFeatures(){const e=this.getFeatures().filter(e=>"polygon-mode-webgl"!==e);for(const t of e)this.has(t)}getFeatures(){return[...Object.keys(Hc),...Object.keys(Vc)]}getWebGLFeature(e){const t=Hc[e];return"string"==typeof t?Boolean(Oc(this.gl,t,this.extensions)):Boolean(t)}}class $c extends Pi{constructor(e){super(),n(this,"gl"),n(this,"limits",{}),this.gl=e}get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderVariables(){return this.getParameter(35659)}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}getParameter(e){return void 0===this.limits[e]&&(this.limits[e]=this.gl.getParameter(e)),this.limits[e]||0}}class Yc extends rn{constructor(e,t){super(e,t),n(this,"device"),n(this,"gl"),n(this,"handle"),n(this,"colorAttachments",[]),n(this,"depthStencilAttachment",null);const i=null===t.handle;this.device=e,this.gl=e.gl,this.handle=this.props.handle||i?this.props.handle:this.gl.createFramebuffer(),i||(e._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.autoCreateAttachmentTextures(),this.updateAttachments())}destroy(){super.destroy(),this.destroyed||null===this.handle||this.gl.deleteFramebuffer(this.handle)}updateAttachments(){const e=this.gl.bindFramebuffer(36160,this.handle);for(let t=0;t(this._getCompilationStatus(),this.compilationStatus))}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){const e=this.device.gl.getShaderInfoLog(this.handle);return e?function(e){const t=e.split(/\r?\n/),i=[];for(const n of t){if(n.length<=1)continue;const e=n.split(":");if(2===e.length){const[t,n]=e;i.push({message:n.trim(),type:Jc(t),lineNum:0,linePos:0});continue}const[t,r,s,...o]=e;let a=parseInt(s,10);isNaN(a)&&(a=0);let c=parseInt(r,10);isNaN(c)&&(c=0),i.push({message:o.join(":").trim(),type:Jc(t),lineNum:a,linePos:c})}return i}(e):[]}getTranslatedSource(){const e=this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders;return(null==e?void 0:e.getTranslatedShaderSource(this.handle))||null}async _compile(e){e=e.startsWith("#version ")?e:`#version 300 es\n${e}`;const{gl:t}=this.device;if(t.shaderSource(this.handle,e),t.compileShader(this.handle),this.device.props.debug){if(this.device.features.has("compilation-status-async-webgl"))ii.once(1,"Shader compilation is asynchronous")(),await this._waitForCompilationComplete(),ii.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader();else if(this._getCompilationStatus(),this.debugShader(),"error"===this.compilationStatus)throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`)}else this.compilationStatus="pending"}async _waitForCompilationComplete(){const e=async e=>await new Promise(t=>setTimeout(t,e));if(!this.device.features.has("compilation-status-async-webgl"))return void(await e(10));const{gl:t}=this.device;for(;;){if(t.getShaderParameter(this.handle,37297))return;await e(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error"}}function tl(e,t){return sl(e,t,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function il(e,t){return sl(e,t,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function nl(e,t){return sl(e,t,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function rl(e,t,i="color"){return sl(e,t,{one:1,zero:0,src:768,"one-minus-src":769,dst:774,"one-minus-dst":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,constant:"color"===i?32769:32771,"one-minus-constant":"color"===i?32770:32772,src1:768,"one-minus-src1":769,"src1-alpha":770,"one-minus-src1-alpha":771})}function sl(e,t,i){if(!(t in i))throw new Error(function(e,t){return`Illegal parameter ${t} for ${e}`}(e,t));return i[t]}function ol(e){const t={};return e.addressModeU&&(t[10242]=al(e.addressModeU)),e.addressModeV&&(t[10243]=al(e.addressModeV)),e.addressModeW&&(t[32882]=al(e.addressModeW)),e.magFilter&&(t[10240]=cl(e.magFilter)),(e.minFilter||e.mipmapFilter)&&(t[10241]=function(e,t="none"){if(!t)return cl(e);switch(t){case"none":return cl(e);case"nearest":switch(e){case"nearest":return 9984;case"linear":return 9985}break;case"linear":switch(e){case"nearest":return 9986;case"linear":return 9987}}}(e.minFilter||"linear",e.mipmapFilter)),void 0!==e.lodMinClamp&&(t[33082]=e.lodMinClamp),void 0!==e.lodMaxClamp&&(t[33083]=e.lodMaxClamp),"comparison-sampler"===e.type&&(t[34892]=34894),e.compare&&(t[34893]=tl("compare",e.compare)),e.maxAnisotropy&&(t[34046]=e.maxAnisotropy),t}function al(e){switch(e){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function cl(e){switch(e){case"nearest":return 9728;case"linear":return 9729}}class ll extends Hi{constructor(e,t){super(e,t),n(this,"device"),n(this,"handle"),n(this,"parameters"),this.device=e,this.parameters=ol(t),this.handle=t.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(e){for(const[t,i]of Object.entries(e)){const e=Number(t);switch(e){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,e,i);break;default:this.device.gl.samplerParameteri(this.handle,e,i)}}}}function hl(e,t,i){if(function(e){for(const t in e)return!1;return!0}(t))return i(e);const{nocatch:n=!0}=t,r=Pc.get(e);let s;if(r.push(),yc(e,t),n)s=i(e),r.pop();else try{s=i(e)}finally{r.pop()}return s}class ul extends Zi{constructor(e,t){super(e,{...Yi.defaultProps,...t}),n(this,"device"),n(this,"gl"),n(this,"handle"),n(this,"texture"),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=t.texture}}class dl extends Yi{constructor(e,t){super(e,t),n(this,"device"),n(this,"gl"),n(this,"handle"),n(this,"sampler"),n(this,"view"),n(this,"glTarget"),n(this,"glFormat"),n(this,"glType"),n(this,"glInternalFormat"),n(this,"compressed"),n(this,"_textureUnit",0),this.device=e,this.gl=this.device.gl;const i=Wc(this.props.format);this.glTarget=function(e){switch(e){case"1d":break;case"2d":return 3553;case"3d":return 32879;case"cube":return 34067;case"2d-array":return 35866}throw new Error(e)}(this.props.dimension),this.glInternalFormat=i.internalFormat,this.glFormat=i.format,this.glType=i.type,this.compressed=i.compressed,this.handle=this.props.handle||this.gl.createTexture(),this.device._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.gl.bindTexture(this.glTarget,this.handle);const{dimension:r,width:s,height:o,depth:a,mipLevels:c,glTarget:l,glInternalFormat:h}=this;switch(r){case"2d":case"cube":this.gl.texStorage2D(l,c,h,s,o);break;case"2d-array":case"3d":this.gl.texStorage3D(l,c,h,s,o,a);break;default:throw new Error(r)}this.gl.bindTexture(this.glTarget,null),this._initializeData(t.data),this.setSampler(this.props.sampler),this.view=new ul(this.device,{...this.props,texture:this}),Object.seal(this)}destroy(){this.handle&&(this.gl.deleteTexture(this.handle),this.removeStats(),this.trackDeallocatedMemory("Texture"),this.destroyed=!0)}createView(e){return new ul(this.device,{...e,texture:this})}setSampler(e={}){super.setSampler(e);const t=ol(this.sampler.props);this._setSamplerParameters(t)}copyImageData(e){const t=this._normalizeCopyImageDataOptions(e),i=t.data,{width:n,height:r,depth:s}=this,{mipLevel:o=0,byteOffset:a=0,x:c=0,y:l=0,z:h=0}=t,{glFormat:u,glType:d,compressed:p}=this,f=pl(this.glTarget,this.dimension,h);let _;if(!this.compressed){const{bytesPerPixel:e}=this.device.getTextureFormatInfo(this.format);if(e){if(t.bytesPerRow%e!==0)throw new Error(`bytesPerRow (${t.bytesPerRow}) must be a multiple of bytesPerPixel (${e}) for ${this.format}`);_=t.bytesPerRow/e}}const g=this.compressed?{}:{...void 0!==_?{3314:_}:{},32878:t.rowsPerImage};this.gl.bindTexture(f,this.handle),hl(this.gl,g,()=>{switch(this.dimension){case"2d":case"cube":p?this.gl.compressedTexSubImage2D(f,o,c,l,n,r,u,i,a):this.gl.texSubImage2D(f,o,c,l,n,r,u,d,i,a);break;case"2d-array":case"3d":p?this.gl.compressedTexSubImage3D(f,o,c,l,h,n,r,s,u,i,a):this.gl.texSubImage3D(f,o,c,l,h,n,r,s,u,d,i,a)}}),this.gl.bindTexture(f,null)}copyExternalImage(e){const t=this._normalizeCopyExternalImageOptions(e);if(t.sourceX||t.sourceY)throw new Error("WebGL does not support sourceX/sourceY)");const{glFormat:i,glType:n}=this,{image:r,depth:s,mipLevel:o,x:a,y:c,z:l,width:h,height:u}=t,d=pl(this.glTarget,this.dimension,s),p=t.flipY?{37440:!0}:{};return this.gl.bindTexture(this.glTarget,this.handle),hl(this.gl,p,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(d,o,a,c,h,u,i,n,r);break;case"2d-array":case"3d":this.gl.texSubImage3D(d,o,a,c,l,h,u,s,i,n,r)}}),this.gl.bindTexture(this.glTarget,null),{width:t.width,height:t.height}}generateMipmapsWebGL(e){if(this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format)||(ii.warn(`${this} is not renderable or filterable, may not be able to generate mipmaps`)(),null==e?void 0:e.force))try{this.gl.bindTexture(this.glTarget,this.handle),this.gl.generateMipmap(this.glTarget)}catch(t){ii.warn(`Error generating mipmap for ${this}: ${t.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}_setSamplerParameters(e){ii.log(2,`${this.id} sampler parameters`,this.device.getGLKeys(e))(),this.gl.bindTexture(this.glTarget,this.handle);for(const[t,i]of Object.entries(e)){const e=Number(t),n=i;switch(e){case 33082:case 33083:this.gl.texParameterf(this.glTarget,e,n);break;case 10240:case 10241:case 10242:case 10243:case 32882:case 34892:case 34893:this.gl.texParameteri(this.glTarget,e,n);break;case 34046:this.device.features.has("texture-filterable-anisotropic-webgl")&&this.gl.texParameteri(this.glTarget,e,n)}}this.gl.bindTexture(this.glTarget,null)}_getActiveUnit(){return this.gl.getParameter(34016)-33984}_bind(e){const{gl:t}=this;return void 0!==e&&(this._textureUnit=e,t.activeTexture(33984+e)),t.bindTexture(this.glTarget,this.handle),e}_unbind(e){const{gl:t}=this;return void 0!==e&&(this._textureUnit=e,t.activeTexture(33984+e)),t.bindTexture(this.glTarget,null),e}}function pl(e,t,i){return"cube"===t?34069+i:e}function fl(e){return ml[e]}function _l(e){return Boolean(El[e])}function gl(e){return El[e]}const ml={5126:"f32",35664:"vec2",35665:"vec3",35666:"vec4",5124:"i32",35667:"vec2",35668:"vec3",35669:"vec4",5125:"u32",36294:"vec2",36295:"vec3",36296:"vec4",35670:"f32",35671:"vec2",35672:"vec3",35673:"vec4",35674:"mat2x2",35685:"mat2x3",35686:"mat2x4",35687:"mat3x2",35675:"mat3x3",35688:"mat3x4",35689:"mat4x2",35690:"mat4x3",35676:"mat4x4"},El={35678:{viewDimension:"2d",sampleType:"float"},35680:{viewDimension:"cube",sampleType:"float"},35679:{viewDimension:"3d",sampleType:"float"},35682:{viewDimension:"3d",sampleType:"depth"},36289:{viewDimension:"2d-array",sampleType:"float"},36292:{viewDimension:"2d-array",sampleType:"depth"},36293:{viewDimension:"cube",sampleType:"float"},36298:{viewDimension:"2d",sampleType:"sint"},36299:{viewDimension:"3d",sampleType:"sint"},36300:{viewDimension:"cube",sampleType:"sint"},36303:{viewDimension:"2d-array",sampleType:"uint"},36306:{viewDimension:"2d",sampleType:"uint"},36307:{viewDimension:"3d",sampleType:"uint"},36308:{viewDimension:"cube",sampleType:"uint"},36311:{viewDimension:"2d-array",sampleType:"uint"}},vl={uint8:5121,sint8:5120,unorm8:5121,snorm8:5120,uint16:5123,sint16:5122,unorm16:5123,snorm16:5122,uint32:5125,sint32:5124,float16:5131,float32:5126};function Tl(e){if("]"!==e[e.length-1])return{name:e,length:1,isArray:!1};const t=/([^[]*)(\[[0-9]+\])?/.exec(e);if(!t||t.length<2)throw new Error(`Failed to parse GLSL uniform name ${e}`);return{name:t[1],length:t[2]?1:0,isArray:Boolean(t[2])}}function Rl(e,t,i,n){const r=e;let s=n;!0===s&&(s=1),!1===s&&(s=0);const o="number"==typeof s?[s]:s;switch(i){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if("number"!=typeof n)throw new Error("samplers must be set to integers");return e.uniform1i(t,n);case 5126:return e.uniform1fv(t,o);case 35664:return e.uniform2fv(t,o);case 35665:return e.uniform3fv(t,o);case 35666:return e.uniform4fv(t,o);case 5124:case 35670:return e.uniform1iv(t,o);case 35667:case 35671:return e.uniform2iv(t,o);case 35668:case 35672:return e.uniform3iv(t,o);case 35669:case 35673:return e.uniform4iv(t,o);case 5125:return r.uniform1uiv(t,o,1);case 36294:return r.uniform2uiv(t,o,2);case 36295:return r.uniform3uiv(t,o,3);case 36296:return r.uniform4uiv(t,o,4);case 35674:return e.uniformMatrix2fv(t,!1,o);case 35675:return e.uniformMatrix3fv(t,!1,o);case 35676:return e.uniformMatrix4fv(t,!1,o);case 35685:return r.uniformMatrix2x3fv(t,!1,o);case 35686:return r.uniformMatrix2x4fv(t,!1,o);case 35687:return r.uniformMatrix3x2fv(t,!1,o);case 35688:return r.uniformMatrix3x4fv(t,!1,o);case 35689:return r.uniformMatrix4x2fv(t,!1,o);case 35690:return r.uniformMatrix4x3fv(t,!1,o)}throw new Error("Illegal uniform")}class bl extends on{constructor(e,t){super(e,t),n(this,"device"),n(this,"handle"),n(this,"vs"),n(this,"fs"),n(this,"introspectedLayout"),n(this,"uniforms",{}),n(this,"bindings",{}),n(this,"varyings",null),n(this,"_uniformCount",0),n(this,"_uniformSetters",{}),this.device=e,this.handle=this.props.handle||this.device.gl.createProgram(),this.device._setWebGLDebugMetadata(this.handle,this,{spector:{id:this.props.id}}),this.vs=t.vs,this.fs=t.fs;const{varyings:i,bufferMode:r=35981}=t;i&&i.length>0&&(this.varyings=i,this.device.gl.transformFeedbackVaryings(this.handle,i,r)),this._linkShaders(),ii.time(3,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=function(e,t){const i={attributes:[],bindings:[]};i.attributes=function(e,t){const i=[],n=e.getProgramParameter(t,35721);for(let r=0;r=0){const e=fl(o),t=/instance/i.test(s)?"instance":"vertex";i.push({name:s,location:a,stepMode:t,type:e})}}return i.sort((e,t)=>e.location-t.location),i}(e,t);const n=function(e,t){const i=(i,n)=>e.getActiveUniformBlockParameter(t,i,n),n=[],r=e.getProgramParameter(t,35382);for(let s=0;se.location-t.location),n}(e,t);for(const a of n){const e=a.uniforms.map(e=>({name:e.name,format:e.format,byteOffset:e.byteOffset,byteStride:e.byteStride,arrayLength:e.arrayLength}));i.bindings.push({type:"uniform",name:a.name,group:0,location:a.location,visibility:(a.vertex?1:0)&(a.fragment?2:0),minBindingSize:a.byteLength,uniforms:e})}const r=function(e,t){const i=[],n=e.getProgramParameter(t,35718);for(let r=0;r1)for(let r=0;re.location-t.location),i}(e,t);return(null==o?void 0:o.length)&&(i.varyings=o),i}(this.device.gl,this.handle),ii.timeEnd(3,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.shaderLayout=t.shaderLayout?function(e,t){const i={...e,attributes:e.attributes.map(e=>({...e}))};for(const n of(null==t?void 0:t.attributes)||[]){const e=i.attributes.find(e=>e.name===n.name);e?(e.type=n.type||e.type,e.stepMode=n.stepMode||e.stepMode):ii.warn(`shader layout attribute ${n.name} not present in shader`)}return i}(this.introspectedLayout,t.shaderLayout):this.introspectedLayout}get[Symbol.toStringTag](){return"WEBGLRenderPipeline"}destroy(){this.handle&&(this.device.gl.useProgram(null),this.device.gl.deleteProgram(this.handle),this.destroyed=!0,this.handle.destroyed=!0,this.handle=null)}setBindings(e,t){for(const[i,n]of Object.entries(e)){const e=this.shaderLayout.bindings.find(e=>e.name===i)||this.shaderLayout.bindings.find(e=>e.name===`${i}Uniforms`);if(!e){const e=this.shaderLayout.bindings.map(e=>`"${e.name}"`).join(", ");(null==t?void 0:t.disableWarnings)||ii.warn(`No binding "${i}" in render pipeline "${this.id}", expected one of ${e}`,n)();continue}switch(n||ii.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),e.type){case"uniform":if(!(n instanceof Qc||n.buffer instanceof Qc))throw new Error("buffer value");break;case"texture":if(!(n instanceof ul||n instanceof dl||n instanceof Yc))throw new Error(`${this} Bad texture binding for ${i}`);break;case"sampler":ii.warn(`Ignoring sampler ${i}`)();break;default:throw new Error(e.type)}this.bindings[i]=n}}draw(e){var t;const{renderPass:i,parameters:n=this.props.parameters,topology:r=this.props.topology,vertexArray:s,vertexCount:o,instanceCount:a,isInstanced:c=!1,firstVertex:l=0,transformFeedback:h}=e,u=function(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"triangle-list":return 4;case"triangle-strip":return 5;default:throw new Error(e)}}(r),d=Boolean(s.indexBuffer),p=null==(t=s.indexBuffer)?void 0:t.glIndexType;if("success"!==this.linkStatus)return ii.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable())return ii.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(this.handle),s.bindBeforeRender(i),h&&h.begin(this.props.topology),this._applyBindings(),this._applyUniforms();const f=i;return function(e,t,i,n){if(function(e){let t=!0;for(const i in e){t=!1;break}return t}(t))return n(e);const r=e;r.pushState();try{return function(e,t){const i=e,{gl:n}=i;if(t.cullMode)switch(t.cullMode){case"none":n.disable(2884);break;case"front":n.enable(2884),n.cullFace(1028);break;case"back":n.enable(2884),n.cullFace(1029)}if(t.frontFace&&n.frontFace(sl("frontFace",t.frontFace,{ccw:2305,cw:2304})),t.unclippedDepth&&e.features.has("depth-clip-control")&&n.enable(34383),void 0!==t.depthBias&&(n.enable(32823),n.polygonOffset(t.depthBias,t.depthBiasSlopeScale||0)),t.provokingVertex&&e.features.has("provoking-vertex-webgl")){const e=i.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,n=sl("provokingVertex",t.provokingVertex,{first:36429,last:36430});null==e||e.provokingVertexWEBGL(n)}if((t.polygonMode||t.polygonOffsetLine)&&e.features.has("polygon-mode-webgl")){if(t.polygonMode){const e=i.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,n=sl("polygonMode",t.polygonMode,{fill:6914,line:6913});null==e||e.polygonModeWEBGL(1028,n),null==e||e.polygonModeWEBGL(1029,n)}t.polygonOffsetLine&&n.enable(10754)}if(e.features.has("shader-clip-cull-distance-webgl")&&(t.clipDistance0&&n.enable(12288),t.clipDistance1&&n.enable(12289),t.clipDistance2&&n.enable(12290),t.clipDistance3&&n.enable(12291),t.clipDistance4&&n.enable(12292),t.clipDistance5&&n.enable(12293),t.clipDistance6&&n.enable(12294),t.clipDistance7&&n.enable(12295)),void 0!==t.depthWriteEnabled&&n.depthMask(t.depthWriteEnabled),t.depthCompare&&("always"!==t.depthCompare?n.enable(2929):n.disable(2929),n.depthFunc(tl("depthCompare",t.depthCompare))),t.stencilWriteMask){const e=t.stencilWriteMask;n.stencilMaskSeparate(1028,e),n.stencilMaskSeparate(1029,e)}if(t.stencilReadMask&&ii.warn("stencilReadMask not supported under WebGL"),t.stencilCompare){const e=t.stencilReadMask||4294967295,i=tl("depthCompare",t.stencilCompare);"always"!==t.stencilCompare?n.enable(2960):n.disable(2960),n.stencilFuncSeparate(1028,i,0,e),n.stencilFuncSeparate(1029,i,0,e)}if(t.stencilPassOperation&&t.stencilFailOperation&&t.stencilDepthFailOperation){const e=il("stencilPassOperation",t.stencilPassOperation),i=il("stencilFailOperation",t.stencilFailOperation),r=il("stencilDepthFailOperation",t.stencilDepthFailOperation);n.stencilOpSeparate(1028,i,r,e),n.stencilOpSeparate(1029,i,r,e)}switch(t.blend){case!0:n.enable(3042);break;case!1:n.disable(3042)}if(t.blendColorOperation||t.blendAlphaOperation){const e=nl("blendColorOperation",t.blendColorOperation||"add"),i=nl("blendAlphaOperation",t.blendAlphaOperation||"add");n.blendEquationSeparate(e,i);const r=rl("blendColorSrcFactor",t.blendColorSrcFactor||"one"),s=rl("blendColorDstFactor",t.blendColorDstFactor||"zero"),o=rl("blendAlphaSrcFactor",t.blendAlphaSrcFactor||"one"),a=rl("blendAlphaDstFactor",t.blendAlphaDstFactor||"zero");n.blendFuncSeparate(r,s,o,a)}}(e,t),yc(r.gl,i),n(e)}finally{r.popState()}}(this.device,n,f.glParameters,()=>{d&&c?this.device.gl.drawElementsInstanced(u,o||0,p,l,a||0):d?this.device.gl.drawElements(u,o||0,p,l):c?this.device.gl.drawArraysInstanced(u,l,o||0,a||0):this.device.gl.drawArrays(u,l,o||0),h&&h.end()}),s.unbindAfterRender(i),!0}async _linkShaders(){const{gl:e}=this.device;if(e.attachShader(this.handle,this.vs.handle),e.attachShader(this.handle,this.fs.handle),ii.time(4,`linkProgram for ${this.id}`)(),e.linkProgram(this.handle),ii.timeEnd(4,`linkProgram for ${this.id}`)(),ii.level,!this.device.features.has("compilation-status-async-webgl")){const e=this._getLinkStatus();return void this._reportLinkStatus(e)}ii.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),ii.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();const t=this._getLinkStatus();this._reportLinkStatus(t)}async _reportLinkStatus(e){var t;if("success"!==e){const i="link-error"===e?"Link error":"Validation error";switch(this.vs.compilationStatus){case"error":throw this.vs.debugShader(),new Error(`${this} ${i} during compilation of ${this.vs}`);case"pending":await this.vs.asyncCompilationStatus,this.vs.debugShader()}switch(null==(t=this.fs)?void 0:t.compilationStatus){case"error":throw this.fs.debugShader(),new Error(`${this} ${i} during compilation of ${this.fs}`);case"pending":await this.fs.asyncCompilationStatus,this.fs.debugShader()}const n=this.device.gl.getProgramInfoLog(this.handle);this.device.reportError(new Error(`${i} during ${e}: ${n}`),this)(),this.device.debug()}}_getLinkStatus(){const{gl:e}=this.device;return e.getProgramParameter(this.handle,35714)?(e.validateProgram(this.handle),e.getProgramParameter(this.handle,35715)?(this.linkStatus="success","success"):(this.linkStatus="error","validation-error")):(this.linkStatus="error","link-error")}async _waitForLinkComplete(){const e=async e=>await new Promise(t=>setTimeout(t,e));if(!this.device.features.has("compilation-status-async-webgl"))return void(await e(10));const{gl:t}=this.device;for(;;){if(t.getProgramParameter(this.handle,37297))return;await e(10)}}_areTexturesRenderable(){let e=!0;for(const t of this.shaderLayout.bindings)this.bindings[t.name]||this.bindings[t.name.replace(/Uniforms$/,"")]||(ii.warn(`Binding ${t.name} not found in ${this.id}`)(),e=!1);return e}_applyBindings(){if("success"!==this.linkStatus)return;const{gl:e}=this.device;e.useProgram(this.handle);let t=0,i=0;for(const n of this.shaderLayout.bindings){const r=this.bindings[n.name]||this.bindings[n.name.replace(/Uniforms$/,"")];if(!r)throw new Error(`No value for binding ${n.name} in ${this.id}`);switch(n.type){case"uniform":const{name:s}=n,o=e.getUniformBlockIndex(this.handle,s);if(4294967295===o)throw new Error(`Invalid uniform block name ${s}`);e.uniformBlockBinding(this.handle,i,o),r instanceof Qc?e.bindBufferBase(35345,i,r.handle):e.bindBufferRange(35345,i,r.buffer.handle,r.offset||0,r.size||r.buffer.byteLength-r.offset),i+=1;break;case"texture":if(!(r instanceof ul||r instanceof dl||r instanceof Yc))throw new Error("texture");let a;if(r instanceof ul)a=r.texture;else if(r instanceof dl)a=r;else{if(!(r instanceof Yc&&r.colorAttachments[0]instanceof ul))throw new Error("No texture");ii.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),a=r.colorAttachments[0].texture}e.activeTexture(33984+t),e.bindTexture(a.glTarget,a.handle),t+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw new Error(`binding type '${n.type}' not supported in WebGL`)}}}_applyUniforms(){for(const e of this.shaderLayout.uniforms||[]){const{name:t,location:i,type:n,textureUnit:r}=e,s=this.uniforms[t]??r;void 0!==s&&Rl(this.device.gl,i,n,s)}}}class Al extends dn{constructor(e){super(e,{}),n(this,"device"),n(this,"handle",null),n(this,"commands",[]),this.device=e}_executeCommands(e=this.commands){for(const t of e)switch(t.name){case"copy-buffer-to-buffer":Sl(this.device,t.options);break;case"copy-buffer-to-texture":yl(this.device,t.options);break;case"copy-texture-to-buffer":wl(this.device,t.options);break;case"copy-texture-to-texture":Ml(this.device,t.options);break;default:throw new Error(t.name)}}}function Sl(e,t){const i=t.sourceBuffer,n=t.destinationBuffer;e.gl.bindBuffer(36662,i.handle),e.gl.bindBuffer(36663,n.handle),e.gl.copyBufferSubData(36662,36663,t.sourceOffset??0,t.destinationOffset??0,t.size),e.gl.bindBuffer(36662,null),e.gl.bindBuffer(36663,null)}function yl(e,t){throw new Error("Not implemented")}function wl(e,t){const{sourceTexture:i,mipLevel:n=0,aspect:r="all",width:s=t.sourceTexture.width,height:o=t.sourceTexture.height,depthOrArrayLayers:a=0,origin:c=[0,0],destinationBuffer:l,byteOffset:h=0,bytesPerRow:u,rowsPerImage:d}=t;if("all"!==r)throw new Error("aspect not supported in WebGL");if(0!==n||0!==a||u||d)throw new Error("not implemented");const{framebuffer:p,destroyFramebuffer:f}=Cl(i);let _;try{const t=l,i=s||p.width,n=o||p.height,r=Wc(p.colorAttachments[0].texture.props.format),a=r.format,u=r.type;e.gl.bindBuffer(35051,t.handle),_=e.gl.bindFramebuffer(36160,p.handle),e.gl.readPixels(c[0],c[1],i,n,a,u,h)}finally{e.gl.bindBuffer(35051,null),void 0!==_&&e.gl.bindFramebuffer(36160,_),f&&p.destroy()}}function Ml(e,t){const{sourceTexture:i,destinationMipLevel:n=0,origin:r=[0,0],destinationOrigin:s=[0,0],destinationTexture:o}=t;let{width:a=t.destinationTexture.width,height:c=t.destinationTexture.height}=t;const{framebuffer:l,destroyFramebuffer:h}=Cl(i),[u,d]=r,[p,f,_]=s,g=e.gl.bindFramebuffer(36160,l.handle);let m,E;if(!(o instanceof dl))throw new Error("invalid destination");switch(m=o,a=Number.isFinite(a)?a:m.width,c=Number.isFinite(c)?c:m.height,m._bind(0),E=m.glTarget,E){case 3553:case 34067:e.gl.copyTexSubImage2D(E,n,p,f,u,d,a,c);break;case 35866:case 32879:e.gl.copyTexSubImage3D(E,n,p,f,_,u,d,a,c)}m&&m._unbind(),e.gl.bindFramebuffer(36160,g),h&&l.destroy()}function Cl(e){if(e instanceof Yi){const{width:t,height:i,id:n}=e;return{framebuffer:e.device.createFramebuffer({id:`framebuffer-for-${n}`,width:t,height:i,colorAttachments:[e]}),destroyFramebuffer:!0}}return{framebuffer:e,destroyFramebuffer:!1}}const Pl=[1,2,4,8];class Il extends cn{constructor(e,t){var i;let r;if(super(e,t),n(this,"device"),n(this,"handle",null),n(this,"glParameters",{}),this.device=e,!(null==(i=null==t?void 0:t.parameters)?void 0:i.viewport))if(null==t?void 0:t.framebuffer){const{width:e,height:i}=t.framebuffer;r=[0,0,e,i]}else{const[t,i]=e.getDefaultCanvasContext().getDrawingBufferSize();r=[0,0,t,i]}this.device.pushState(),this.setParameters({viewport:r,...this.props.parameters});const s=this.props.framebuffer;if(this.props.framebuffer&&(null==s?void 0:s.handle)){const e=this.props.framebuffer.colorAttachments.map((e,t)=>36064+t);this.device.gl.drawBuffers(e)}else this.device.gl.drawBuffers([1029]);this.clear()}end(){this.device.popState()}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}setParameters(e={}){const t={...this.glParameters};t.framebuffer=this.props.framebuffer||null,this.props.depthReadOnly&&(t.depthMask=!this.props.depthReadOnly),t.stencilMask=this.props.stencilReadOnly?0:1,t[35977]=this.props.discard,e.viewport&&(e.viewport.length>=6?(t.viewport=e.viewport.slice(0,4),t.depthRange=[e.viewport[4],e.viewport[5]]):t.viewport=e.viewport),e.scissorRect&&(t.scissorTest=!0,t.scissor=e.scissorRect),e.blendConstant&&(t.blendColor=e.blendConstant),e.stencilReference&&(t[2967]=e.stencilReference),"colorMask"in e&&(t.colorMask=Pl.map(t=>Boolean(t&e.colorMask))),this.glParameters=t,yc(this.device.gl,t)}beginOcclusionQuery(e){const t=this.props.occlusionQuerySet;null==t||t.beginOcclusionQuery()}endOcclusionQuery(){const e=this.props.occlusionQuerySet;null==e||e.endOcclusionQuery()}clear(){const e={...this.glParameters};let t=0;this.props.clearColors&&this.props.clearColors.forEach((e,t)=>{e&&this.clearColorBuffer(t,e)}),!1!==this.props.clearColor&&void 0===this.props.clearColors&&(t|=16384,e.clearColor=this.props.clearColor),!1!==this.props.clearDepth&&(t|=256,e.clearDepth=this.props.clearDepth),!1!==this.props.clearStencil&&(t|=1024,e.clearStencil=this.props.clearStencil),0!==t&&hl(this.device.gl,e,()=>{this.device.gl.clear(t)})}clearColorBuffer(e=0,t=[0,0,0,0]){hl(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(t.constructor){case Int8Array:case Int16Array:case Int32Array:this.device.gl.clearBufferiv(6144,e,t);break;case Uint8Array:case Uint8ClampedArray:case Uint16Array:case Uint32Array:this.device.gl.clearBufferuiv(6144,e,t);break;case Float32Array:this.device.gl.clearBufferfv(6144,e,t);break;default:throw new Error("clearColorBuffer: color must be typed array")}})}}class Ll extends hn{constructor(e,t){super(e,t),n(this,"device"),n(this,"handle",null),n(this,"commandBuffer"),this.device=e,this.commandBuffer=new Al(e)}destroy(){}finish(){return this.commandBuffer}beginRenderPass(e){return new Il(this.device,e)}beginComputePass(e){throw new Error("ComputePass not supported in WebGL")}copyBufferToBuffer(e){this.commandBuffer.commands.push({name:"copy-buffer-to-buffer",options:e})}copyBufferToTexture(e){this.commandBuffer.commands.push({name:"copy-buffer-to-texture",options:e})}copyTextureToBuffer(e){this.commandBuffer.commands.push({name:"copy-texture-to-buffer",options:e})}copyTextureToTexture(e){this.commandBuffer.commands.push({name:"copy-texture-to-texture",options:e})}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}resolveQuerySet(e,t,i){}}class Ol extends vn{constructor(e,t){super(e,t),n(this,"device"),n(this,"handle"),n(this,"buffer",null),n(this,"bufferValue",null),this.device=e,this.handle=this.device.gl.createVertexArray()}get[Symbol.toStringTag](){return"VertexArray"}static isConstantAttributeZeroSupported(e){return"Chrome"==(f()?p()?"Electron":(d.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown":"Node")}destroy(){var e;super.destroy(),this.buffer&&(null==(e=this.buffer)||e.destroy()),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(e){const t=e;if(t&&34963!==t.glTarget)throw new Error("Use .setBuffer()");this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,t?t.handle:null),this.indexBuffer=t,this.device.gl.bindVertexArray(null)}setBuffer(e,t){const i=t;if(34963===i.glTarget)throw new Error("Use .setIndexBuffer()");const{size:n,type:r,stride:s,offset:o,normalized:a,integer:c,divisor:l}=this._getAccessor(e);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,i.handle),c?this.device.gl.vertexAttribIPointer(e,n,r,s,o):this.device.gl.vertexAttribPointer(e,n,r,a,s,o),this.device.gl.bindBuffer(34962,null),this.device.gl.enableVertexAttribArray(e),this.device.gl.vertexAttribDivisor(e,l||0),this.attributes[e]=i,this.device.gl.bindVertexArray(null)}setConstantWebGL(e,t){this._enable(e,!1),this.attributes[e]=t}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let e=0;e{for(const t in e)this.setBuffer(t,e[t])})}setBuffer(e,t){const i=this._getVaryingIndex(e),{buffer:n,byteLength:r,byteOffset:s}=this._getBufferRange(t);if(i<0)return this.unusedBuffers[e]=n,void ii.warn(`${this.id} unusedBuffers varying buffer ${e}`)();this.buffers[i]={buffer:n,byteLength:r,byteOffset:s},this.bindOnUse||this._bindBuffer(i,n,s,r)}getBuffer(e){if(xl(e))return this.buffers[e]||null;const t=this._getVaryingIndex(e);return t>=0?this.buffers[t]:null}bind(e=this.handle){if("function"!=typeof e)return this.gl.bindTransformFeedback(36386,e),this;let t;return this._bound?t=e():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,t=e(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),t}unbind(){this.bind(null)}_getBufferRange(e){if(e instanceof Qc)return{buffer:e,byteOffset:0,byteLength:e.byteLength};const{buffer:t,byteOffset:i=0,byteLength:n=e.buffer.byteLength}=e;return{buffer:t,byteOffset:i,byteLength:n}}_getVaryingIndex(e){if(xl(e))return Number(e);for(const t of this.layout.varyings||[])if(e===t.name)return t.location;return-1}_bindBuffers(){for(const e in this.buffers){const{buffer:t,byteLength:i,byteOffset:n}=this._getBufferRange(this.buffers[e]);this._bindBuffer(Number(e),t,n,i)}}_unbindBuffers(){for(const e in this.buffers)this.gl.bindBufferBase(35982,Number(e),null)}_bindBuffer(e,t,i=0,n){const r=t&&t.handle;r&&void 0!==n?this.gl.bindBufferRange(35982,e,r,i,n):this.gl.bindBufferBase(35982,e,r)}}function xl(e){return"number"==typeof e?Number.isInteger(e):/^\d+$/.test(e)}class Dl extends Sn{constructor(e,t){if(super(e,t),n(this,"device"),n(this,"handle"),n(this,"target",null),n(this,"_queryPending",!1),n(this,"_pollingPromise",null),this.device=e,t.count>1)throw new Error("WebGL QuerySet can only have one value");const i=this.device.gl.createQuery();if(!i)throw new Error("WebGL query not supported");this.handle=i,Object.seal(this)}get[Symbol.toStringTag](){return"Query"}destroy(){this.device.gl.deleteQuery(this.handle)}beginTimestampQuery(){return this._begin(35007)}endTimestampQuery(){this._end()}beginOcclusionQuery(e){return this._begin((null==e?void 0:e.conservative)?36202:35887)}endOcclusionQuery(){this._end()}beginTransformFeedbackQuery(){return this._begin(35976)}endTransformFeedbackQuery(){this._end()}async resolveQuery(){return[await this.pollQuery()]}_begin(e){this._queryPending||(this.target=e,this.device.gl.beginQuery(this.target,this.handle))}_end(){this._queryPending||this.target&&(this.device.gl.endQuery(this.target),this.target=null,this._queryPending=!0)}isResultAvailable(){if(!this._queryPending)return!1;const e=this.device.gl.getQueryParameter(this.handle,34919);return e&&(this._queryPending=!1),e}isTimerDisjoint(){return this.device.gl.getParameter(36795)}getResult(){return this.device.gl.getQueryParameter(this.handle,34918)}getTimerMilliseconds(){return this.getResult()/1e6}pollQuery(e=Number.POSITIVE_INFINITY){if(this._pollingPromise)return this._pollingPromise;let t=0;return this._pollingPromise=new Promise((i,n)=>{const r=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):t++>e?(n("Timed out"),this._pollingPromise=null):requestAnimationFrame(r)};requestAnimationFrame(r)}),this._pollingPromise}}function Fl(e){switch(e){case 6406:case 33326:case 6403:case 36244:return 1;case 33339:case 33340:case 33328:case 33320:case 33319:return 2;case 6407:case 36248:case 34837:return 3;case 6408:case 36249:case 34836:return 4;default:return 0}}const Bl={5124:"sint32",5125:"uint32",5122:"sint16",5123:"uint16",5120:"sint8",5121:"uint8",5126:"float32",5131:"float16",33635:"uint16",32819:"uint16",32820:"uint16",33640:"uint32",35899:"uint32",35902:"uint32",34042:"uint32",36269:"uint32"};function Ul(e){return e instanceof rn?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:kl(e),deleteFramebuffer:!0}}function kl(e,t){const{device:i,width:n,height:r,id:s}=e;return i.createFramebuffer({...t,id:`framebuffer-for-${s}`,width:n,height:r,colorAttachments:[e]})}class Gl extends Oi{constructor(e){var t,i;super({...e,id:e.id||qc("webgl-device")}),n(this,"type","webgl"),n(this,"handle"),n(this,"features"),n(this,"limits"),n(this,"info"),n(this,"canvasContext"),n(this,"preferredColorFormat","rgba8unorm"),n(this,"preferredDepthFormat","depth24plus"),n(this,"commandEncoder"),n(this,"lost"),n(this,"_resolveContextLost"),n(this,"gl"),n(this,"_constants"),n(this,"_extensions",{}),n(this,"_polyfilled",!1),n(this,"spectorJS");const r=Oi._getCanvasContextProps(e);if(!r)throw new Error("WebGLDevice requires props.createCanvasContext to be set");let s=null==(i=null==(t=r.canvas)?void 0:t.gl)?void 0:i.device;if(s)throw new Error(`WebGL context already attached to device ${s.id}`);this.canvasContext=new Kc(this,r),this.lost=new Promise(e=>{this._resolveContextLost=e});const o={...e.webgl};"premultiplied"===r.alphaMode&&(o.premultipliedAlpha=!0),void 0!==e.powerPreference&&(o.powerPreference=e.powerPreference);const a=this.props._handle||function(e,t,i){let n="";const r={preserveDrawingBuffer:!0,...i};let s=null;if(s||(s=e.getContext("webgl2",r)),r.failIfMajorPerformanceCaveat&&(n||(n="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow.")),s||i.failIfMajorPerformanceCaveat||(r.failIfMajorPerformanceCaveat=!1,s=e.getContext("webgl2",r),s.luma||(s.luma={}),s.luma.softwareRenderer=!0),s||(s=e.getContext("webgl",{}),s&&(s=null,n||(n="Your browser only supports WebGL1"))),!s)throw n||(n="Your browser does not support WebGL"),new Error(`Failed to create WebGL context: ${n}`);const{onContextLost:o,onContextRestored:a}=t;return e.addEventListener("webglcontextlost",e=>o(e),!1),e.addEventListener("webglcontextrestored",e=>a(e),!1),s.luma||(s.luma={}),s}(this.canvasContext.canvas,{onContextLost:e=>{var t;return null==(t=this._resolveContextLost)?void 0:t.call(this,{reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."})},onContextRestored:e=>{}},o);if(!a)throw new Error("WebGL context creation failed");if(s=a.device,s){if(e._reuseDevices)return ii.log(1,`Not creating a new Device, instead returning a reference to Device ${s.id} already attached to WebGL context`,s)(),s._reused=!0,s;throw new Error(`WebGL context already attached to device ${s.id}`)}this.handle=a,this.gl=a,this.spectorJS=function(e){var t;if(!(e={...rc,...e}).debugSpectorJS)return null;if(!ic&&globalThis.SPECTOR&&!(null==(t=globalThis.luma)?void 0:t.spector)){ii.probe(1,"SPECTOR found and initialized. Start with `luma.spector.displayUI()`")();const{Spector:e}=globalThis.SPECTOR;ic=new e,globalThis.luma&&(globalThis.luma.spector=ic)}if(!ic)return null;if(nc||(nc=!0,ic.spyCanvases(),null==ic||ic.onCaptureStarted.add(e=>ii.info("Spector capture started:",e)()),null==ic||ic.onCapture.add(e=>{ii.info("Spector capture complete:",e)(),null==ic||ic.getResultUI(),null==ic||ic.resultView.display(),null==ic||ic.resultView.addCapture(e)})),e.gl){const t=e.gl,i=t.device;null==ic||ic.startCapture(e.gl,500),t.device=i,new Promise(e=>setTimeout(e,2e3)).then(e=>{ii.info("Spector capture stopped after 2 seconds")(),null==ic||ic.stopCapture()})}return ic}({...this.props,gl:this.handle}),this.gl.device=this,this.gl._version=2,this.info=function(e,t){const i=e.getParameter(7936),n=e.getParameter(7937);Oc(e,"WEBGL_debug_renderer_info",t);const r=t.WEBGL_debug_renderer_info,s=e.getParameter(r?r.UNMASKED_VENDOR_WEBGL:7936)||i,o=e.getParameter(r?r.UNMASKED_RENDERER_WEBGL:7937)||n,a=e.getParameter(7938),c=Nc(s,o),l=function(e,t){return/Metal/i.exec(e)||/Metal/i.exec(t)?"metal":/ANGLE/i.exec(e)||/ANGLE/i.exec(t)?"opengl":"unknown"}(s,o),h=function(e,t){if(/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t))return"cpu";switch(Nc(e,t)){case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}(s,o);return{type:"webgl",gpu:c,gpuType:h,gpuBackend:l,vendor:s,renderer:o,version:a,shadingLanguage:"glsl",shadingLanguageVersion:300}}(this.gl,this._extensions),this.limits=new $c(this.gl),this.features=new Xc(this.gl,this._extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new Pc(this.gl,{log:(...e)=>ii.log(1,...e)()}).trackState(this.gl,{copyState:!1});const c=e.debugWebGL||e.debug,l=e.debugWebGL;c&&(this.gl=oc(this.gl,{debugWebGL:c,traceWebGL:l}),ii.warn("WebGL debug mode activated. Performance reduced.")(),e.debugWebGL&&(ii.level=Math.max(ii.level,1))),this.commandEncoder=new Ll(this,{id:`${this}-command-encoder`})}get[Symbol.toStringTag](){return"WebGLDevice"}toString(){return`${this[Symbol.toStringTag]}(${this.id})`}isVertexFormatSupported(e){return"unorm8x4-bgra"!==e}destroy(){this.props._reuseDevices||this._reused||delete this.gl.device}get isLost(){return this.gl.isContextLost()}getTextureByteAlignment(){return 4}createCanvasContext(e){throw new Error("WebGL only supports a single canvas")}createBuffer(e){const t=this._normalizeBufferProps(e);return new Qc(this,t)}createTexture(e){return new dl(this,e)}createExternalTexture(e){throw new Error("createExternalTexture() not implemented")}createSampler(e){return new ll(this,e)}createShader(e){return new el(this,e)}createFramebuffer(e){return new Yc(this,e)}createVertexArray(e){return new Ol(this,e)}createTransformFeedback(e){return new Nl(this,e)}createQuerySet(e){return new Dl(this,e)}createRenderPipeline(e){return new bl(this,e)}createComputePipeline(e){throw new Error("ComputePipeline not supported in WebGL")}createCommandEncoder(e={}){return new Ll(this,e)}submit(e){e||(e=this.commandEncoder.finish(),this.commandEncoder.destroy(),this.commandEncoder=this.createCommandEncoder({id:`${this.id}-default-encoder`})),e._executeCommands()}readPixelsToArrayWebGL(e,t){return function(e,t){var i;const{sourceX:n=0,sourceY:r=0,sourceAttachment:s=0}=t||{};let{target:o=null,sourceWidth:a,sourceHeight:c,sourceDepth:l,sourceFormat:h,sourceType:u}=t||{};const{framebuffer:d,deleteFramebuffer:p}=Ul(e),{gl:f,handle:_}=d;a||(a=d.width),c||(c=d.height);const g=null==(i=d.colorAttachments[s])?void 0:i.texture;if(!g)throw new Error(`Invalid framebuffer attachment ${s}`);l=(null==g?void 0:g.depth)||1,h||(h=(null==g?void 0:g.glFormat)||6408),u||(u=(null==g?void 0:g.glType)||5121),m=o,E=u,v=h,T=a,R=c,o=m||(E||(E=5121),new(function(e){const[,,,,t]=li[e];return t}(Bl[E]))(T*R*Fl(v)));var m,E,v,T,R;const b=function(e){const t=ArrayBuffer.isView(e)?e.constructor:e;if(t===Uint8ClampedArray)return"uint8";const i=Object.values(li).find(e=>t===e[4]);if(!i)throw new Error(t.name);return i[0]}(o);u=u||vl[b];const A=f.bindFramebuffer(36160,_);return f.readBuffer(36064+s),f.readPixels(n,r,a,c,h,u,o),f.readBuffer(36064),f.bindFramebuffer(36160,A||null),p&&d.destroy(),o}(e,t)}readPixelsToBufferWebGL(e,t){return function(e,t){const{target:i,sourceX:n=0,sourceY:r=0,sourceFormat:s=6408,targetByteOffset:o=0}=t||{};let{sourceWidth:a,sourceHeight:c,sourceType:l}=t||{};const{framebuffer:h,deleteFramebuffer:u}=Ul(e);a=a||h.width,c=c||h.height;const d=h;l=l||5121;let p=i;if(!p){const e=o+a*c*Fl(s)*function(e){switch(e){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}(l);p=d.device.createBuffer({byteLength:e})}const f=e.device.createCommandEncoder();return f.copyTextureToBuffer({sourceTexture:e,width:a,height:c,origin:[n,r],destinationBuffer:p,byteOffset:o}),f.destroy(),u&&h.destroy(),p}(e,t)}setParametersWebGL(e){yc(this.gl,e)}getParametersWebGL(e){return wc(this.gl,e)}withParametersWebGL(e,t){return hl(this.gl,e,t)}resetWebGL(){ii.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),yc(this.gl,uc)}_getDeviceSpecificTextureFormatCapabilities(e){return function(e,t,i){let n=t.create;const r=jc[t.format];return void 0===(null==r?void 0:r.gl)&&(n=!1),(null==r?void 0:r.x)&&(n=n&&Boolean(Oc(e,r.x,i))),{format:t.format,create:n&&t.create,render:n&&t.render,filter:n&&t.filter,blend:n&&t.blend,store:n&&t.store}}(this.gl,e,this._extensions)}loseDevice(){var e;let t=!1;const i=this.getExtension("WEBGL_lose_context").WEBGL_lose_context;return i&&(t=!0,i.loseContext()),null==(e=this._resolveContextLost)||e.call(this,{reason:"destroyed",message:"Application triggered context loss"}),t}pushState(){Pc.get(this.gl).push()}popState(){Pc.get(this.gl).pop()}getGLKey(e,t){const i=Number(e);for(const n in this.gl)if(this.gl[n]===i)return`GL.${n}`;return(null==t?void 0:t.emptyIfUnknown)?"":String(e)}getGLKeys(e){const t={emptyIfUnknown:!0};return Object.entries(e).reduce((e,[i,n])=>(e[`${i}:${this.getGLKey(i,t)}`]=`${n}:${this.getGLKey(n,t)}`,e),{})}setConstantAttributeWebGL(e,t){const i=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(i).fill(null);const n=this._constants[e];switch(n&&function(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let i=0;ift.error(e.message,e.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:({isDragging:e})=>e?"grabbing":"grab",getTooltip:null,debug:!1,drawPickingColors:!1};class zl{constructor(e){var t;this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new ne({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null},this._lastPointerDownInfo=null,this._onPointerMove=e=>{const{_pickRequest:t}=this;if("pointerleave"===e.type)t.x=-1,t.y=-1,t.radius=0;else{if(e.leftButton||e.rightButton)return;{const i=e.offsetCenter;if(!i)return;t.x=i.x,t.y=i.y,t.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:t.x,y:t.y}),t.event=e},this._onEvent=e=>{const t=Es[e.type],i=e.offsetCenter;if(!t||!i||!this.layerManager)return;const n=this.layerManager.getLayers(),r=this.deckPicker.getLastPickedObject({x:i.x,y:i.y,layers:n,viewports:this.getViewports(i)},this._lastPointerDownInfo),{layer:s}=r,o=s&&(s[t]||s.props[t]),a=this.props[t];let c=!1;o&&(c=o.call(s,r,e)),c||(null==a||a(r,e),this.widgetManager.onEvent(r,e))},this._onPointerDown=e=>{var t;if("webgpu"===(null==(t=this.device)?void 0:t.type))return;const i=e.offsetCenter,n=this._pick("pickObject","pickObject Time",{x:i.x,y:i.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=n.result[0]||n.emptyInfo},this.props={...Wl,...e},(e=this.props).viewState&&e.initialViewState&&ft.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,e.device&&(this.device=e.device);let i=this.device;if(!i&&e.gl){e.gl instanceof WebGLRenderingContext&&ft.error("WebGL1 context not supported.")();const n=null==(t=this.props.deviceProps)?void 0:t.onResize;i=hc.attach(e.gl,{...this.props.deviceProps,onResize:(e,t)=>{const{width:i,height:r}=e.canvas;e.drawingBufferWidth=i,e.drawingBufferHeight=r,this._needsRedraw="Canvas resized",null==n||n(e,t)}})}i||(i=this._createDevice(e)),this.animationLoop=this._createAnimationLoop(i,e),this.setProps(e),e._typedArrayManagerProps&&Oo.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){var e,t,i,n,r,s,o,a,c,l;null==(e=this.animationLoop)||e.stop(),null==(t=this.animationLoop)||t.destroy(),this.animationLoop=null,this._lastPointerDownInfo=null,null==(i=this.layerManager)||i.finalize(),this.layerManager=null,null==(n=this.viewManager)||n.finalize(),this.viewManager=null,null==(r=this.effectManager)||r.finalize(),this.effectManager=null,null==(s=this.deckRenderer)||s.finalize(),this.deckRenderer=null,null==(o=this.deckPicker)||o.finalize(),this.deckPicker=null,null==(a=this.eventManager)||a.destroy(),this.eventManager=null,null==(c=this.widgetManager)||c.finalize(),this.widgetManager=null,this.props.canvas||this.props.device||this.props.gl||!this.canvas||(null==(l=this.canvas.parentElement)||l.removeChild(this.canvas),this.canvas=null)}setProps(e){var t,i,n,r,s,o,a;this.stats.get("setProps Time").timeStart(),"onLayerHover"in e&&ft.removed("onLayerHover","onHover")(),"onLayerClick"in e&&ft.removed("onLayerClick","onClick")(),e.initialViewState&&!ta(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),Object.assign(this.props,e),this._setCanvasSize(this.props);const c=Object.create(this.props);Object.assign(c,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),e.device&&e.device.id!==(null==(t=this.device)?void 0:t.id)&&(null==(i=this.animationLoop)||i.stop(),this.canvas!==(null==(n=e.device.canvasContext)?void 0:n.canvas)&&(null==(r=this.canvas)||r.remove(),null==(s=this.eventManager)||s.destroy(),this.canvas=null),ft.log(`recreating animation loop for new device! id=${e.device.id}`)(),this.animationLoop=this._createAnimationLoop(e.device,e),this.animationLoop.start()),null==(o=this.animationLoop)||o.setProps(c),void 0!==e.useDevicePixels&&(null==(a=this.device)?void 0:a.canvasContext)&&this.device.canvasContext.setProps({useDevicePixels:e.useDevicePixels}),this.layerManager&&(this.viewManager.setProps(c),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(c),this.effectManager.setProps(c),this.deckRenderer.setProps(c),this.deckPicker.setProps(c),this.widgetManager.setProps(c)),this.stats.get("setProps Time").timeEnd()}needsRedraw(e={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let t=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);const i=this.viewManager.needsRedraw(e),n=this.layerManager.needsRedraw(e),r=this.effectManager.needsRedraw(e),s=this.deckRenderer.needsRedraw(e);return t=t||i||n||r||s,t}redraw(e){if(!this.layerManager)return;let t=this.needsRedraw({clearRedrawFlags:!0});t=e||t,t&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(t):this._drawLayers(t))}get isInitialized(){return null!==this.viewManager}getViews(){return ua(this.viewManager),this.viewManager.views}getViewports(e){return ua(this.viewManager),this.viewManager.getViewports(e)}getCanvas(){return this.canvas}pickObject(e){const t=this._pick("pickObject","pickObject Time",e).result;return t.length?t[0]:null}pickMultipleObjects(e){return e.depth=e.depth||10,this._pick("pickObject","pickMultipleObjects Time",e).result}pickObjects(e){return this._pick("pickObjects","pickObjects Time",e)}_addResources(e,t=!1){for(const i in e)this.layerManager.resourceManager.add({resourceId:i,data:e[i],forceUpdate:t})}_removeResources(e){for(const t of e)this.layerManager.resourceManager.remove(t)}_addDefaultEffect(e){this.effectManager.addDefaultEffect(e)}_addDefaultShaderModule(e){this.layerManager.addDefaultShaderModule(e)}_removeDefaultShaderModule(e){var t;null==(t=this.layerManager)||t.removeDefaultShaderModule(e)}_pick(e,t,i){ua(this.deckPicker);const{stats:n}=this;n.get("Pick Count").incrementCount(),n.get(t).timeStart();const r=this.deckPicker[e]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return n.get(t).timeEnd(),r}_createCanvas(e){let t=e.canvas;return"string"==typeof t&&(t=document.getElementById(t),ua(t)),t||(t=document.createElement("canvas"),t.id=e.id||"deckgl-overlay",e.width&&"number"==typeof e.width&&(t.width=e.width),e.height&&"number"==typeof e.height&&(t.height=e.height),(e.parent||document.body).appendChild(t)),Object.assign(t.style,e.style),t}_setCanvasSize(e){var t;if(!this.canvas)return;const{width:i,height:n}=e;if(i||0===i){const e=Number.isFinite(i)?`${i}px`:i;this.canvas.style.width=e}if(n||0===n){const i=Number.isFinite(n)?`${n}px`:n;this.canvas.style.position=(null==(t=e.style)?void 0:t.position)||"absolute",this.canvas.style.height=i}}_updateCanvasSize(){var e,t;const{canvas:i}=this;if(!i)return;const n=i.clientWidth??i.width,r=i.clientHeight??i.height;n===this.width&&r===this.height||(this.width=n,this.height=r,null==(e=this.viewManager)||e.setProps({width:n,height:r}),null==(t=this.layerManager)||t.activateViewport(this.getViewports()[0]),this.props.onResize({width:n,height:r}))}_createAnimationLoop(e,t){const{gl:i,onError:n}=t;return new Xo({device:e,autoResizeDrawingBuffer:!i,autoResizeViewport:!1,onInitialize:e=>this._setDevice(e.device),onRender:this._onRenderFrame.bind(this),onError:n})}_createDevice(e){var t,i,n;const r=null==(t=this.props.deviceProps)?void 0:t.createCanvasContext,s="object"==typeof r?r:void 0,o={adapters:[],_cacheShaders:!0,_cachePipelines:!0,...e.deviceProps};o.adapters.includes(hc)||o.adapters.push(hc);const a={alphaMode:"webgpu"===(null==(i=this.props.deviceProps)?void 0:i.type)?"premultiplied":void 0},c=null==(n=this.props.deviceProps)?void 0:n.onResize;return Di.createDevice({_reuseDevices:!0,type:"webgl",...o,createCanvasContext:{...a,...s,canvas:this._createCanvas(e),useDevicePixels:this.props.useDevicePixels,autoResize:!0},onResize:(e,t)=>{this._needsRedraw="Canvas resized",null==c||c(e,t)}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){const{views:e}=this.props,t=Array.isArray(e)?e:e?[e]:[new Pa({id:"default-view"})];return t.length&&this.props.controller&&(t[0].props.controller=this.props.controller),t}_onContextLost(){const{onError:e}=this.props;this.animationLoop&&e&&e(new Error("WebGL context is lost"))}_pickAndCallback(){var e,t,i,n;if("webgpu"===(null==(e=this.device)?void 0:e.type))return;const{_pickRequest:r}=this;if(r.event){const{result:e,emptyInfo:s}=this._pick("pickObject","pickObject Time",r);this.cursorState.isHovering=e.length>0;let o=s,a=!1;for(const i of e)o=i,a=(null==(t=i.layer)?void 0:t.onHover(i,r.event))||a;a||(null==(n=(i=this.props).onHover)||n.call(i,o,r.event),this.widgetManager.onHover(o,r.event)),r.event=null}}_updateCursor(){const e=this.props.parent||this.canvas;e&&(e.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(e){var t,i;if(this.device=e,!this.animationLoop)return;this.canvas||(this.canvas=null==(t=this.device.canvasContext)?void 0:t.canvas,!this.canvas.isConnected&&this.props.parent&&this.props.parent.insertBefore(this.canvas,this.props.parent.firstChild)),"webgl"===this.device.type&&this.device.setParametersWebGL({blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onDeviceInitialized(this.device),"webgl"===this.device.type&&this.props.onWebGLInitialized(this.device.gl);const n=new Wo;n.play(),this.animationLoop.attachTimeline(n),this.eventManager=new fs(this.props.parent||this.canvas,{touchAction:this.props.touchAction,recognizers:Object.keys(vs).map(e=>{var t;const[i,n,r,s]=vs[e];return{recognizer:new i({...n,...null==(t=this.props.eventRecognizerOptions)?void 0:t[e],event:e}),recognizeWith:r,requestFailure:s}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(const s in Es)this.eventManager.on(s,this._onEvent);this.viewManager=new ia({timeline:n,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});const r=this.viewManager.getViewports()[0];this.layerManager=new ea(this.device,{deck:this,stats:this.stats,viewport:r,timeline:n}),this.effectManager=new La({deck:this,device:this.device}),this.deckRenderer=new Na(this.device),this.deckPicker=new Ga(this.device),this.widgetManager=new za({deck:this,parentElement:null==(i=this.canvas)?void 0:i.parentElement}),this.widgetManager.addDefault(new Ya),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(e,t){var i;const{device:n,gl:r}=this.layerManager.context;this.props.onBeforeRender({device:n,gl:r});const s={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...t};null==(i=this.deckRenderer)||i.renderLayers(s),"screen"===s.pass&&this.widgetManager.onRedraw({viewports:s.viewports,layers:s.layers}),this.props.onAfterRender({device:n,gl:r})}_onRenderFrame(){var e;this._getFrameStats(),this._metricsCounter++%60==0&&(this._getMetrics(),this.stats.reset(),ft.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.layerManager.updateLayers(),"webgpu"!==(null==(e=this.device)?void 0:e.type)&&this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(e){const t=this.props.onViewStateChange(e)||e.viewState;this.viewState&&(this.viewState={...this.viewState,[e.viewId]:t},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(e){this.cursorState.isDragging=e.isDragging||!1,this.props.onInteractionStateChange(e)}_getFrameStats(){const{stats:e}=this;e.get("frameRate").timeEnd(),e.get("frameRate").timeStart();const t=this.animationLoop.stats;e.get("GPU Time").addTime(t.get("GPU Time").lastTiming),e.get("CPU Time").addTime(t.get("CPU Time").lastTiming)}_getMetrics(){const{metrics:e,stats:t}=this;e.fps=t.get("frameRate").getHz(),e.setPropsTime=t.get("setProps Time").time,e.updateAttributesTime=t.get("Update Attributes").time,e.framesRedrawn=t.get("Redraw Count").count,e.pickTime=t.get("pickObject Time").time+t.get("pickMultipleObjects Time").time+t.get("pickObjects Time").time,e.pickCount=t.get("Pick Count").count,e.gpuTime=t.get("GPU Time").time,e.cpuTime=t.get("CPU Time").time,e.gpuTimePerFrame=t.get("GPU Time").getAverageTime(),e.cpuTimePerFrame=t.get("CPU Time").getAverageTime();const i=Di.stats.get("Memory Usage");e.bufferMemory=i.get("Buffer Memory").count,e.textureMemory=i.get("Texture Memory").count,e.renderbufferMemory=i.get("Renderbuffer Memory").count,e.gpuMemory=i.get("GPU Memory").count}}zl.defaultProps=Wl,zl.VERSION=vt;const Hl=Math.PI/180,Xl=180/Math.PI,$l=6370972,Yl=256;function Kl(){const e=4018225162502676e-20,t=Math.PI/180*Yl;return{unitsPerMeter:[e,e,e],unitsPerMeter2:[0,0,0],metersPerUnit:[24886.609375,24886.609375,24886.609375],unitsPerDegree:[t,t,e],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/t,1/t,24886.609375]}}class Zl extends ko{constructor(e={}){const{longitude:t=0,zoom:i=0,nearZMultiplier:n=.5,farZMultiplier:r=1,resolution:s=10}=e;let{latitude:o=0,height:a,altitude:c=1.5,fovy:l}=e;o=Math.max(Math.min(o,zs),-85.051129),a=a||1,l?c=qs(l):l=Zs(c);const h=1/Math.PI/Math.cos(o*Math.PI/180),u=Math.pow(2,i)*h,d=e.nearZ??n,p=e.farZ??(c+512*u/a)*r,f=(new cr).lookAt({eye:[0,-c,0],up:[0,0,1]});f.rotateX(o*Hl),f.rotateZ(-t*Hl),f.scale(u/a),super({...e,height:a,viewMatrix:f,longitude:t,latitude:o,zoom:i,distanceScales:Kl(),fovy:l,focalDistance:c,near:d,far:p}),this.scale=u,this.latitude=o,this.longitude=t,this.resolution=s}get projectionMode(){return gs.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(e={}){const t={targetZ:e.z||0},i=this.unproject([0,this.height/2],t),n=this.unproject([this.width/2,0],t),r=this.unproject([this.width,this.height/2],t),s=this.unproject([this.width/2,this.height],t);return r[0]this.longitude&&(i[0]-=360),[Math.min(i[0],r[0],n[0],s[0]),Math.min(i[1],r[1],n[1],s[1]),Math.max(i[0],r[0],n[0],s[0]),Math.max(i[1],r[1],n[1],s[1])]}unproject(e,{topLeft:t=!0,targetZ:i}={}){const[n,r,s]=e,o=t?r:this.height-r,{pixelUnprojectionMatrix:a}=this;let c;if(Number.isFinite(s))c=ql(a,[n,o,s,1]);else{const e=ql(a,[n,o,-1,1]),t=ql(a,[n,o,1,1]),r=((i||0)/$l+1)*Yl,s=jn((u=t,(l=[])[0]=(h=e)[0]-u[0],l[1]=h[1]-u[1],l[2]=h[2]-u[2],l)),d=jn(e),p=jn(t),f=(4*d*p-(s-d-p)**2)/16*4/s;c=function(e,t,i,n){const r=t[0],s=t[1],o=t[2];return e[0]=r+n*(i[0]-r),e[1]=s+n*(i[1]-s),e[2]=o+n*(i[2]-o),e}([],e,t,(Math.sqrt(d-f)-Math.sqrt(Math.max(0,r*r-f)))/Math.sqrt(s))}var l,h,u;const[d,p,f]=this.unprojectPosition(c);return Number.isFinite(s)?[d,p,f]:Number.isFinite(i)?[d,p,i]:[d,p]}projectPosition(e){const[t,i,n=0]=e,r=t*Hl,s=i*Hl,o=Math.cos(s),a=(n/$l+1)*Yl;return[Math.sin(r)*o*a,-Math.cos(r)*o*a,Math.sin(s)*a]}unprojectPosition(e){const[t,i,n]=e,r=function(e){const t=e[0],i=e[1],n=e[2];return Math.sqrt(t*t+i*i+n*n)}(e),s=Math.asin(n/r);return[Math.atan2(t,-i)*Xl,s*Xl,(r/Yl-1)*$l]}projectFlat(e){return e}unprojectFlat(e){return e}panByPosition(e,t){const i=this.unproject(t);return{longitude:e[0]-i[0]+this.longitude,latitude:e[1]-i[1]+this.latitude}}}function ql(e,t){const i=er([],t,e);return Jn(i,i,1/i[3]),i}class Ql extends Ma{applyConstraints(e){const{maxZoom:t,minZoom:i,zoom:n}=e;e.zoom=Cn(n,i,t);const{longitude:r,latitude:s}=e;return(r<-180||r>180)&&(e.longitude=function(e){const t=e%360;return t<0?360+t:t}(r+180)-180),e.latitude=Cn(s,-85.051129,zs),e}}class Jl extends ya{constructor(){super(...arguments),this.ControllerState=Ql,this.transition={transitionDuration:300,transitionInterpolator:new _a(["longitude","latitude","zoom"])},this.dragMode="pan"}setProps(e){super.setProps(e),this.dragRotate=!1,this.touchRotate=!1}}class eh extends oa{constructor(e={}){super(e)}getViewportType(e){return e.zoom>12?Go:Zl}get ControllerType(){return Jl}}eh.displayName="GlobeView";const th="mapbox",ih=Math.PI/180;function nh({map:e,gl:t,deck:i}){if(e.__deck)return e.__deck;const n=null==i?void 0:i.props._customRender,r=null==i?void 0:i.props.onLoad,s={...null==i?void 0:i.props,_customRender:()=>{e.triggerRepaint(),null==n||n("")}};let o;return s.parameters={...oh(e,!0),...s.parameters},s.views||(s.views=ch(e)),i&&i.props.gl!==t||(Object.assign(s,{gl:t,width:null,height:null,touchAction:"unset",viewState:lh(e)}),(null==i?void 0:i.isInitialized)?rh(i,e):s.onLoad=()=>{null==r||r(),rh(o,e)}),i?(o=i,i.setProps(s),i.userData.isExternal=!0):(o=new zl(s),e.on("remove",()=>{sh(e)})),o.userData.mapboxLayers=new Set,e.__deck=o,e.on("render",()=>{o.isInitialized&&function(e,t){const{mapboxLayers:i,isExternal:n}=e.userData;if(n){const n=Array.from(i,e=>e.id),r=Zo(e.props.layers,Boolean).some(e=>e&&!n.includes(e.id));let s=e.getViewports();const o=s.findIndex(e=>e.id===th),a=s.length>1||o<0;(r||a)&&(o>=0&&(s=s.slice(),s[o]=hh(e,t)),e._drawLayers("mapbox-repaint",{viewports:s,layerFilter:t=>(!e.props.layerFilter||e.props.layerFilter(t))&&(t.viewport.id!==th||!n.includes(t.layer.id)),clearCanvas:!1}))}e.userData.currentViewport=null}(o,e)}),o}function rh(e,t){const i=()=>{e.isInitialized?function(e,t){e.setProps({viewState:lh(t)}),e.needsRedraw({clearRedrawFlags:!0})}(e,t):t.off("move",i)};t.on("move",i)}function sh(e){var t;null==(t=e.__deck)||t.finalize(),e.__deck=null}function oh(e,t){const i=t?{depthWriteEnabled:!0,depthCompare:"less-equal",depthBias:0,blend:!0,blendColorSrcFactor:"src-alpha",blendColorDstFactor:"one-minus-src-alpha",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one-minus-src-alpha",blendColorOperation:"add",blendAlphaOperation:"add"}:{};return"globe"===ah(e)&&(i.cullMode="back"),i}function ah(e){var t;const i=null==(t=e.getProjection)?void 0:t.call(e),n=(null==i?void 0:i.type)||(null==i?void 0:i.name);if("globe"===n)return"globe";if(n&&"mercator"!==n)throw new Error("Unsupported projection");return"mercator"}function ch(e){return"globe"===ah(e)?new eh({id:th}):new Pa({id:th})}function lh(e){var t;const{lng:i,lat:n}=e.getCenter(),r={longitude:(i+540)%360-180,latitude:n,zoom:e.getZoom(),bearing:e.getBearing(),pitch:e.getPitch(),padding:e.getPadding(),repeat:e.getRenderWorldCopies()};return(null==(t=e.getTerrain)?void 0:t.call(e))&&function(e,t){if(e.getFreeCameraOptions){const{position:i}=e.getFreeCameraOptions();if(!i||void 0===i.z)return;const n=e.transform.height,{longitude:r,latitude:s,pitch:o}=t,a=512*i.x,c=512*(1-i.y),l=512*i.z,h=Xs([r,s]),u=a-h[0],d=c-h[1],p=Math.sqrt(u*u+d*d),f=o*ih,_=1.5*n,g=f<.001?_*Math.cos(f)/l:_*Math.sin(f)/p;t.zoom=Math.log2(g);const m=l-_*Math.cos(f)/g;t.position=[0,0,m/Ys(s)]}else"number"==typeof e.transform.elevation&&(t.position=[0,0,e.transform.elevation])}(e,r),r}function hh(e,t,i){const n=lh(t),{views:r}=e.props,s=r&&Zo(r).find(e=>e.id===th)||ch(t);i&&(s.props.nearZMultiplier=.2);const o=(null==i?void 0:i.nearZ)??t.transform._nearZ,a=(null==i?void 0:i.farZ)??t.transform._farZ;return Number.isFinite(o)&&(n.nearZ=o/t.transform.height,n.farZ=a/t.transform.height),s.makeViewport({width:e.width,height:e.height,viewState:n})}function uh(e){if(e.userData.isExternal)return;const t=[];e.userData.mapboxLayers.forEach(e=>{const i=new(0,e.props.type)(e.props);t.push(i)}),e.setProps({layers:t})}class dh{constructor(e){if(!e.id)throw new Error("Layer must have an unique id");this.id=e.id,this.type="custom",this.renderingMode=e.renderingMode||"3d",this.slot=e.slot,this.map=null,this.deck=null,this.props=e}onAdd(e,t){var i;this.map=e,this.deck=nh({map:e,gl:t,deck:this.props.deck}),(i=this.deck).userData.mapboxLayers.add(this),uh(i)}onRemove(){var e;this.deck&&((e=this.deck).userData.mapboxLayers.delete(this),uh(e))}setProps(e){Object.assign(this.props,e,{id:this.id}),this.deck&&uh(this.deck)}render(e,t){!function(e,t,i,n){let{currentViewport:r}=e.userData,s=!1;r||(r=hh(e,t,n),e.userData.currentViewport=r,s=!0),e.isInitialized&&e._drawLayers("mapbox-repaint",{viewports:[r],layerFilter:t=>(!e.props.layerFilter||e.props.layerFilter(t))&&(i.id===t.layer.id||t.layer.props.operation.includes("terrain")),clearStack:s,clearCanvas:!1})}(this.deck,this.map,this,t)}}const ph="__UNDEFINED__";function fh(e,t,i,n){if(!(e&&t&&e.style&&e.style._loaded))return;const r=Zo(n,Boolean);if(i!==n){const t=Zo(i,Boolean),n=new Set(t.map(e=>e.id));for(const e of r)n.delete(e.id);for(const i of n)e.getLayer(i)&&e.removeLayer(i)}for(const a of r){const i=e.getLayer(a.id);i?(i.implementation||i).setProps(a.props):e.addLayer(new dh({id:a.id,deck:t,slot:a.props.slot}),a.props.beforeId)}const s=e.style._order,o={};for(const a of r){let{beforeId:e}=a.props;e&&s.includes(e)||(e=ph),o[e]=o[e]||[],o[e].push(a.id)}for(const a in o){const t=o[a];let i=a===ph?s.length:s.indexOf(a),n=a===ph?void 0:a;for(let r=t.length-1;r>=0;r--){const o=t[r],a=s.indexOf(o);a!==i-1&&(e.moveLayer(o,n),a>i&&i++),i--,n=o}}}class _h{constructor(e){this._handleStyleChange=()=>{var e;fh(this._map,this._deck,this._props.layers,this._props.layers),this._map&&ah(this._map)&&!this._props.views&&(null==(e=this._deck)||e.setProps({views:ch(this._map)}))},this._updateContainerSize=()=>{if(this._map&&this._container){const{clientWidth:e,clientHeight:t}=this._map.getContainer();Object.assign(this._container.style,{width:`${e}px`,height:`${t}px`})}},this._updateViewState=()=>{const e=this._deck,t=this._map;e&&t&&(e.setProps({views:this._props.views||ch(t),viewState:lh(t)}),e.isInitialized&&e.redraw())},this._handleMouseEvent=e=>{const t=this._deck;if(!t||!t.isInitialized)return;const i={type:e.type,offsetCenter:e.point,srcEvent:e},n=this._lastMouseDownPoint;switch(!e.point&&n&&(i.deltaX=e.originalEvent.clientX-n.clientX,i.deltaY=e.originalEvent.clientY-n.clientY,i.offsetCenter={x:n.x+i.deltaX,y:n.y+i.deltaY}),i.type){case"mousedown":t._onPointerDown(i),this._lastMouseDownPoint={...e.point,clientX:e.originalEvent.clientX,clientY:e.originalEvent.clientY};break;case"dragstart":i.type="panstart",t._onEvent(i);break;case"drag":i.type="panmove",t._onEvent(i);break;case"dragend":i.type="panend",t._onEvent(i);break;case"click":i.tapCount=1,t._onEvent(i);break;case"dblclick":i.type="click",i.tapCount=2,t._onEvent(i);break;case"mousemove":i.type="pointermove",t._onPointerMove(i);break;case"mouseout":i.type="pointerleave",t._onPointerMove(i);break;default:return}};const{interleaved:t=!1}=e;this._interleaved=t,this._props=this.filterProps(e)}filterProps(e){const{interleaved:t=!1,useDevicePixels:i,...n}=e;return t||void 0===i||(n.useDevicePixels=i),n}setProps(e){this._interleaved&&e.layers&&fh(this._map,this._deck,this._props.layers,e.layers),Object.assign(this._props,this.filterProps(e)),this._deck&&this._map&&this._deck.setProps({...this._props,parameters:{...oh(this._map,this._interleaved),...this._props.parameters}})}onAdd(e){return this._map=e,this._interleaved?this._onAddInterleaved(e):this._onAddOverlaid(e)}_onAddOverlaid(e){const t=document.createElement("div");return Object.assign(t.style,{position:"absolute",left:0,top:0,textAlign:"initial",pointerEvents:"none"}),this._container=t,this._deck=new zl({...this._props,parent:t,parameters:{...oh(e,!1),...this._props.parameters},views:this._props.views||ch(e),viewState:lh(e)}),e.on("resize",this._updateContainerSize),e.on("render",this._updateViewState),e.on("mousedown",this._handleMouseEvent),e.on("dragstart",this._handleMouseEvent),e.on("drag",this._handleMouseEvent),e.on("dragend",this._handleMouseEvent),e.on("mousemove",this._handleMouseEvent),e.on("mouseout",this._handleMouseEvent),e.on("click",this._handleMouseEvent),e.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),t}_onAddInterleaved(e){const t=e.painter.context.gl;return t instanceof WebGLRenderingContext&&ft.warn("Incompatible basemap library. See: https://deck.gl/docs/api-reference/mapbox/overview#compatibility")(),this._deck=nh({map:e,gl:t,deck:new zl({...this._props,gl:t,parameters:{...oh(e,!0),...this._props.parameters}})}),e.on("styledata",this._handleStyleChange),fh(e,this._deck,[],this._props.layers),document.createElement("div")}onRemove(){const e=this._map;e&&(this._interleaved?this._onRemoveInterleaved(e):this._onRemoveOverlaid(e)),this._deck=void 0,this._map=void 0,this._container=void 0}_onRemoveOverlaid(e){var t;e.off("resize",this._updateContainerSize),e.off("render",this._updateViewState),e.off("mousedown",this._handleMouseEvent),e.off("dragstart",this._handleMouseEvent),e.off("drag",this._handleMouseEvent),e.off("dragend",this._handleMouseEvent),e.off("mousemove",this._handleMouseEvent),e.off("mouseout",this._handleMouseEvent),e.off("click",this._handleMouseEvent),e.off("dblclick",this._handleMouseEvent),null==(t=this._deck)||t.finalize()}_onRemoveInterleaved(e){e.off("styledata",this._handleStyleChange),fh(e,this._deck,this._props.layers,[]),sh(e)}getDefaultPosition(){return"top-left"}pickObject(e){return ua(this._deck),this._deck.pickObject(e)}pickMultipleObjects(e){return ua(this._deck),this._deck.pickMultipleObjects(e)}pickObjects(e){return ua(this._deck),this._deck.pickObjects(e)}finalize(){this._map&&this._map.removeControl(this)}getCanvas(){return this._map?this._interleaved?this._map.getCanvas():this._deck.getCanvas():null}}export{_h as M,o as _,r as g}; diff --git a/frontend/dist/assets/index-BlYVqXhs.js b/frontend/dist/assets/index-BlYVqXhs.js new file mode 100644 index 00000000..cfd31dcb --- /dev/null +++ b/frontend/dist/assets/index-BlYVqXhs.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Login-DdFKhylJ.js","assets/vendor-react-CWPBVwgk.js","assets/vendor-core-XI_xDZ-M.js","assets/Dashboard-D1niW_DD.js","assets/useThemeColors-f-o_FvwS.js","assets/PageLayout-Kh569_kh.js","assets/PacketDetailModal-D_VE4qlE.js","assets/SignalIndicator-QKnbwhAo.js","assets/HashBadge-Bq5n5xgM.js","assets/TimeRangeSelector-B_qs4oni.js","assets/Grid-CguXkLgY.js","assets/Packets-n3vuO2F7.js","assets/Contacts-wP4j6lyB.js","assets/ConfirmModal-u7cxXX4i.js","assets/CollisionExplorerModal-DFHbJ8T7.js","assets/leaflet-CIGW-MKW.css","assets/Statistics-CcE_ZMAZ.js","assets/usePolling-BsbqQ0mQ.js","assets/System-tc2mHcQZ.js","assets/Logs-CeWO7emM.js","assets/Terminal-yBl-QLp9.js","assets/Configuration-mimYKnlX.js"])))=>i.map(i=>d[i]); +var e=Object.defineProperty,t=(t,s,n)=>((t,s,n)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[s]=n)(t,"symbol"!=typeof s?s+"":s,n);import{r as s,j as n,c as a,u as o,X as i,M as l,L as r,d as c,e as u,C as d,G as h,F as f,S as p,f as m,g,h as y,i as w,k as x,l as b,m as k,n as v,o as S,p as _,q as j,t as M,v as C,N as T,w as N,B as L}from"./vendor-react-CWPBVwgk.js";import{_ as P}from"./deckgl-DTsmDcfs.js";import{c as E}from"./recharts-cqZ_RWsW.js";import"./vendor-core-XI_xDZ-M.js";!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver(e=>{for(const s of e)if("childList"===s.type)for(const e of s.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)}).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?t.credentials="include":"anonymous"===e.crossOrigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();const I=[{id:"default",name:"Shades of Purple",dataTheme:null,previewColor:"#B39DF3"},{id:"amber",name:"Gruvbox",dataTheme:"amber",previewColor:"#fabd2f"},{id:"grey",name:"Deus",dataTheme:"grey",previewColor:"#83a598"},{id:"black",name:"Gotham",dataTheme:"black",previewColor:"#33859d"},{id:"flora",name:"Sonokai",dataTheme:"flora",previewColor:"#9ed072"},{id:"kanagawa",name:"Kanagawa",dataTheme:"kanagawa",previewColor:"#7E9CD8"}],A=[{id:"sand",src:"/assets/sand.jpg",suggestedScheme:"default",suggestedBrightness:80},{id:"water",src:"/assets/water.webp",suggestedScheme:"grey",suggestedBrightness:40},{id:"magma",src:"/assets/magma.webp",suggestedScheme:"amber",suggestedBrightness:50},{id:"stars",src:"/assets/stars.jpg",suggestedScheme:"black",suggestedBrightness:100},{id:"ribbons",src:"/assets/ribbons.webp",suggestedScheme:"flora",suggestedBrightness:75},{id:"folds",src:"/assets/folds.webp",suggestedScheme:"kanagawa",suggestedBrightness:50}],D=[{id:"default",name:"Shades of Purple",displayName:"BlkSand",colorScheme:"default",backgroundImage:"/assets/sand.jpg",paletteColors:[["#B49DFF","#F9D26F","#71F8E5","#39D98A","#FF5C7A"],["#4CFFB5","#FF8A5C","#A78BFA","#60A5FA","#F472B6"]],displayFont:"'Rubik Mono One', monospace",displayColor:"#4A4A52",displaySize:.8},{id:"amber",name:"Gruvbox",displayName:"Magma",colorScheme:"amber",backgroundImage:"/assets/magma.webp",paletteColors:[["#fabd2f","#fb4934","#8ec07c","#b8bb26","#d3869b"],["#fe8019","#83a598","#d65d0e","#928374","#ebdbb2"]],displayFont:"'Jacquard 12', serif",displayColor:"#fe8019",displaySize:1.75},{id:"grey",name:"Deus",displayName:"Waves",colorScheme:"grey",backgroundImage:"/assets/water.webp",paletteColors:[["#83a598","#a89984","#8ec07c","#d79921","#b16286"],["#fe8019","#cc241d","#7c6f64","#bdae93","#ebdbb2"]],displayFont:"'Cantora One', sans-serif",displayColor:"#83a598",displaySize:1.25},{id:"black",name:"Gotham",displayName:"Stars",colorScheme:"black",backgroundImage:"/assets/stars.jpg",paletteColors:[["#33859d","#edb54b","#26a98b","#c23127","#888ca6"],["#195465","#d26939","#99d1ce","#4e5165","#0c1014"]],displayFont:"'IBM Plex Mono', monospace",displayColor:"#c23127",displaySize:1.25},{id:"flora",name:"Sonokai",displayName:"Ribbon",colorScheme:"flora",backgroundImage:"/assets/ribbons.webp",paletteColors:[["#9ed072","#fc5d7c","#76cce0","#e7c664","#b39df3"],["#f39660","#7f8490","#e2e2e3","#55575e","#2c2e34"]],displayFont:"'Instrument Serif', serif",displayColor:"#E2E2E3",displaySize:1.4},{id:"kanagawa",name:"Kanagawa",displayName:"Folds",colorScheme:"kanagawa",backgroundImage:"/assets/folds.webp",paletteColors:[["#7E9CD8","#E46876","#7AA89F","#DCA561","#957FB8"],["#7FB4CA","#D27E99","#98BB6C","#727169","#1F1F28"]],displayFont:"'Inter', sans-serif",displayColor:"#7E9CD8",displaySize:1.25}],R={colorScheme:"grey",backgroundImage:"/assets/water.webp",brightness:60},z="pymc-color-scheme",F="pymc-background-image",O="pymc-bg-brightness",W="pymc-background";function $(e){(new Image).src=e}const H={50:.97,100:.92,200:.84,300:.73,400:.62,500:.5,600:.4,700:.32,800:.24,900:.16},B=[50,100,200,300,400,500,600,700,800,900],U=["red","orange","yellow","green","aqua","blue","purple"];function q(e,t,s){const n=e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0");return`#${n(e)}${n(t)}${n(s)}`}function G(e){const t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function J(e){const t=e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055;return Math.round(255*t)}function Y(e,t,s){const n=s*(Math.PI/180),a=t*Math.cos(n),o=t*Math.sin(n),i=e+.3963377774*a+.2158037573*o,l=e-.1055613458*a-.0638541728*o,r=e-.0894841775*a-1.291485548*o,c=i*i*i,u=l*l*l,d=r*r*r,h=-1.2684380046*c+2.6097574011*u-.3413193965*d,f=-.0041960863*c-.7034186147*u+1.707614701*d;return[J(4.0767416621*c-3.3077115913*u+.2309699292*d),J(h),J(f)]}function V(e){const[t,s,n]=function(e){const t=e.replace("#","");return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]}(e),[,a,o]=function(e,t,s){const n=G(e),a=G(t),o=G(s),i=.4122214708*n+.5363325363*a+.0514459929*o,l=.2119034982*n+.6806995451*a+.1073969566*o,r=.0883024619*n+.2817188376*a+.6299787005*o,c=Math.cbrt(i),u=Math.cbrt(l),d=Math.cbrt(r),h=.2104542553*c+.793617785*u-.0040720468*d,f=1.9779984951*c-2.428592205*u+.4505937099*d,p=.0259040371*c+.7827717662*u-.808675766*d,m=Math.sqrt(f*f+p*p);let g=Math.atan2(p,f)*(180/Math.PI);return g<0&&(g+=360),[h,m,g]}(t,s,n),i={};for(const l of B){const e=H[l],t=a*(1-.3*Math.abs(e-.5)),[s,n,r]=Y(e,t,o);i[l]=q(s,n,r)}return i}function K(e){return"undefined"==typeof window?"":getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function X(e,t){"undefined"!=typeof document&&document.documentElement.style.setProperty(e,t)}const Q="u-off",Z="u-label",ee="width",te="height",se="top",ne="bottom",ae="left",oe="right",ie="#000",le=ie+"0",re="mousemove",ce="mousedown",ue="mouseup",de="mouseenter",he="mouseleave",fe="dblclick",pe="change",me="dppxchange",ge="--",ye="undefined"!=typeof window,we=ye?document:null,xe=ye?window:null,be=ye?navigator:null;let ke,ve;function Se(e,t){if(null!=t){let s=e.classList;!s.contains(t)&&s.add(t)}}function _e(e,t){let s=e.classList;s.contains(t)&&s.remove(t)}function je(e,t,s){e.style[t]=s+"px"}function Me(e,t,s,n){let a=we.createElement(e);return null!=t&&Se(a,t),null!=s&&s.insertBefore(a,n),a}function Ce(e,t){return Me("div",e,t)}const Te=new WeakMap;function Ne(e,t,s,n,a){let o="translate("+t+"px,"+s+"px)";o!=Te.get(e)&&(e.style.transform=o,Te.set(e,o),t<0||s<0||t>n||s>a?Se(e,Q):_e(e,Q))}const Le=new WeakMap;function Pe(e,t,s){let n=t+s;n!=Le.get(e)&&(Le.set(e,n),e.style.background=t,e.style.borderColor=s)}const Ee=new WeakMap;function Ie(e,t,s,n){let a=t+""+s;a!=Ee.get(e)&&(Ee.set(e,a),e.style.height=s+"px",e.style.width=t+"px",e.style.marginLeft=n?-t/2+"px":0,e.style.marginTop=n?-s/2+"px":0)}const Ae={passive:!0},De={...Ae,capture:!0};function Re(e,t,s,n){t.addEventListener(e,s,n?De:Ae)}function ze(e,t,s,n){t.removeEventListener(e,s,Ae)}function Fe(e,t,s,n){let a;s=s||0;let o=(n=n||t.length-1)<=2147483647;for(;n-s>1;)a=o?s+n>>1:nt((s+n)/2),t[a]{let a=-1,o=-1;for(let i=s;i<=n;i++)if(e(t[i])){a=i;break}for(let i=n;i>=s;i--)if(e(t[i])){o=i;break}return[a,o]}}ye&&function e(){let t=devicePixelRatio;ke!=t&&(ke=t,ve&&ze(pe,ve,e),ve=matchMedia(`(min-resolution: ${ke-.001}dppx) and (max-resolution: ${ke+.001}dppx)`),Re(pe,ve,e),xe.dispatchEvent(new CustomEvent(me)))}();const We=e=>null!=e,$e=e=>null!=e&&e>0,He=Oe(We),Be=Oe($e);function Ue(e,t,s,n){let a=ct(e),o=ct(t);e==t&&(-1==a?(e*=s,t/=s):(e/=s,t*=s));let i=10==s?ut:dt,l=1==o?ot:nt,r=(1==a?nt:ot)(i(st(e))),c=l(i(st(t))),u=rt(s,r),d=rt(s,c);return 10==s&&(r<0&&(u=Tt(u,-r)),c<0&&(d=Tt(d,-c))),n||2==s?(e=u*a,t=d*o):(e=Ct(e,u),t=Mt(t,d)),[e,t]}function qe(e,t,s,n){let a=Ue(e,t,s,n);return 0==e&&(a[0]=0),0==t&&(a[1]=0),a}const Ge={mode:3,pad:.1},Je={pad:0,soft:null,mode:0},Ye={min:Je,max:Je};function Ve(e,t,s,n){return Ft(s)?Xe(e,t,s):(Je.pad=s,Je.soft=n?0:null,Je.mode=n?3:0,Xe(e,t,Ye))}function Ke(e,t){return null==e?t:e}function Xe(e,t,s){let n=s.min,a=s.max,o=Ke(n.pad,0),i=Ke(a.pad,0),l=Ke(n.hard,-ft),r=Ke(a.hard,ft),c=Ke(n.soft,ft),u=Ke(a.soft,-ft),d=Ke(n.mode,0),h=Ke(a.mode,0),f=t-e,p=ut(f),m=lt(st(e),st(t)),g=ut(m),y=st(g-p);(f<1e-24||y>10)&&(f=0,0!=e&&0!=t||(f=1e-24,2==d&&c!=ft&&(o=0),2==h&&u!=-ft&&(i=0)));let w=f||m||1e3,x=ut(w),b=rt(10,nt(x)),k=Tt(Ct(e-w*(0==f?0==e?.1:1:o),b/10),24),v=e>=c&&(1==d||3==d&&k<=c||2==d&&k>=c)?c:ft,S=lt(l,k=v?v:it(v,k)),_=Tt(Mt(t+w*(0==f?0==t?.1:1:i),b/10),24),j=t<=u&&(1==h||3==h&&_>=u||2==h&&_<=u)?u:-ft,M=it(r,_>j&&t<=j?j:lt(j,_));return S==M&&0==S&&(M=100),[S,M]}const Qe=new Intl.NumberFormat(ye?be.language:"en-US"),Ze=e=>Qe.format(e),et=Math,tt=et.PI,st=et.abs,nt=et.floor,at=et.round,ot=et.ceil,it=et.min,lt=et.max,rt=et.pow,ct=et.sign,ut=et.log10,dt=et.log2,ht=(e,t=1)=>et.asinh(e/t),ft=1/0;function pt(e){return 1+(0|ut((e^e>>31)-(e>>31)))}function mt(e,t,s){return it(lt(e,t),s)}function gt(e){return"function"==typeof e}function yt(e){return gt(e)?e:()=>e}const wt=e=>e,xt=(e,t)=>t,bt=e=>null,kt=e=>!0,vt=(e,t)=>e==t,St=/\.\d*?(?=9{6,}|0{6,})/gm,_t=e=>{if(Rt(e)||Nt.has(e))return e;const t=`${e}`,s=t.match(St);if(null==s)return e;let n=s[0].length-1;if(-1!=t.indexOf("e-")){let[e,s]=t.split("e");return+`${_t(e)}e${s}`}return Tt(e,n)};function jt(e,t){return _t(Tt(_t(e/t))*t)}function Mt(e,t){return _t(ot(_t(e/t))*t)}function Ct(e,t){return _t(nt(_t(e/t))*t)}function Tt(e,t=0){if(Rt(e))return e;let s=10**t,n=e*s*(1+Number.EPSILON);return at(n)/s}const Nt=new Map;function Lt(e){return((""+e).split(".")[1]||"").length}function Pt(e,t,s,n){let a=[],o=n.map(Lt);for(let i=t;i=0?0:t)+(i>=o[l]?0:o[l]),u=10==e?r:Tt(r,c);a.push(u),Nt.set(u,c)}}return a}const Et={},It=[],At=[null,null],Dt=Array.isArray,Rt=Number.isInteger;function zt(e){return"string"==typeof e}function Ft(e){let t=!1;if(null!=e){let s=e.constructor;t=null==s||s==Object}return t}function Ot(e){return null!=e&&"object"==typeof e}const Wt=Object.getPrototypeOf(Uint8Array),$t="__proto__";function Ht(e,t=Ft){let s;if(Dt(e)){let n=e.find(e=>null!=e);if(Dt(n)||t(n)){s=Array(e.length);for(let n=0;no){for(n=i-1;n>=0&&null==e[n];)e[n--]=null;for(n=i+1;nPromise.resolve().then(e):queueMicrotask,Gt=["January","February","March","April","May","June","July","August","September","October","November","December"],Jt=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function Yt(e){return e.slice(0,3)}const Vt=Jt.map(Yt),Kt=Gt.map(Yt),Xt={MMMM:Gt,MMM:Kt,WWWW:Jt,WWW:Vt};function Qt(e){return(e<10?"0":"")+e}const Zt={YYYY:e=>e.getFullYear(),YY:e=>(e.getFullYear()+"").slice(2),MMMM:(e,t)=>t.MMMM[e.getMonth()],MMM:(e,t)=>t.MMM[e.getMonth()],MM:e=>Qt(e.getMonth()+1),M:e=>e.getMonth()+1,DD:e=>Qt(e.getDate()),D:e=>e.getDate(),WWWW:(e,t)=>t.WWWW[e.getDay()],WWW:(e,t)=>t.WWW[e.getDay()],HH:e=>Qt(e.getHours()),H:e=>e.getHours(),h:e=>{let t=e.getHours();return 0==t?12:t>12?t-12:t},AA:e=>e.getHours()>=12?"PM":"AM",aa:e=>e.getHours()>=12?"pm":"am",a:e=>e.getHours()>=12?"p":"a",mm:e=>Qt(e.getMinutes()),m:e=>e.getMinutes(),ss:e=>Qt(e.getSeconds()),s:e=>e.getSeconds(),fff:e=>{return((t=e.getMilliseconds())<10?"00":t<100?"0":"")+t;var t}};function es(e,t){t=t||Xt;let s,n=[],a=/\{([a-z]+)\}|[^{]+/gi;for(;s=a.exec(e);)n.push("{"==s[0][0]?Zt[s[1]]:s[0]);return e=>{let s="";for(let a=0;ae%1==0,ns=[1,2,2.5,5],as=Pt(10,-32,0,ns),os=Pt(10,0,32,ns),is=os.filter(ss),ls=as.concat(os),rs="{YYYY}",cs="\n"+rs,us="{M}/{D}",ds="\n"+us,hs=ds+"/{YY}",fs="{aa}",ps="{h}:{mm}"+fs,ms="\n"+ps,gs=":{ss}",ys=null;function ws(e){let t=1e3*e,s=60*t,n=60*s,a=24*n,o=30*a,i=365*a;return[(1==e?Pt(10,0,3,ns).filter(ss):Pt(10,-3,0,ns)).concat([t,5*t,10*t,15*t,30*t,s,5*s,10*s,15*s,30*s,n,2*n,3*n,4*n,6*n,8*n,12*n,a,2*a,3*a,4*a,5*a,6*a,7*a,8*a,9*a,10*a,15*a,o,2*o,3*o,4*o,6*o,i,2*i,5*i,10*i,25*i,50*i,100*i]),[[i,rs,ys,ys,ys,ys,ys,ys,1],[28*a,"{MMM}",cs,ys,ys,ys,ys,ys,1],[a,us,cs,ys,ys,ys,ys,ys,1],[n,"{h}"+fs,hs,ys,ds,ys,ys,ys,1],[s,ps,hs,ys,ds,ys,ys,ys,1],[t,gs,hs+" "+ps,ys,ds+" "+ps,ys,ms,ys,1],[e,gs+".{fff}",hs+" "+ps,ys,ds+" "+ps,ys,ms,ys,1]],function(t){return(l,r,c,u,d,h)=>{let f=[],p=d>=i,m=d>=o&&d=a?a:d,i=x+(nt(c)-nt(y))+Mt(y-x,o);f.push(i);let p=t(i),m=p.getHours()+p.getMinutes()/s+p.getSeconds()/n,g=d/n,w=h/l.axes[r]._space;for(;i=Tt(i+d,1==e?0:3),!(i>u);)if(g>1){let e=nt(Tt(m+g,6))%24,s=t(i).getHours()-e;s>1&&(s=-1),i-=s*n,m=(m+g)%24,Tt((i-f[f.length-1])/d,3)*w>=.7&&f.push(i)}else f.push(i)}return f}}]}const[xs,bs,ks]=ws(1),[vs,Ss,_s]=ws(.001);function js(e,t){return e.map(e=>e.map((s,n)=>0==n||8==n||null==s?s:t(1==n||0==e[8]?s:e[1]+s)))}function Ms(e,t){return(s,n,a,o,i)=>{let l,r,c,u,d,h,f=t.find(e=>i>=e[0])||t[t.length-1];return n.map(t=>{let s=e(t),n=s.getFullYear(),a=s.getMonth(),o=s.getDate(),i=s.getHours(),p=s.getMinutes(),m=s.getSeconds(),g=n!=l&&f[2]||a!=r&&f[3]||o!=c&&f[4]||i!=u&&f[5]||p!=d&&f[6]||m!=h&&f[7]||f[1];return l=n,r=a,c=o,u=i,d=p,h=m,g(s)})}}function Cs(e,t,s){return new Date(e,t,s)}function Ts(e,t){return t(e)}function Ns(e,t){return(s,n,a,o)=>null==o?ge:t(e(n))}Pt(2,-53,53,[1]);const Ls={show:!0,live:!0,isolate:!1,mount:()=>{},markers:{show:!0,width:2,stroke:function(e,t){let s=e.series[t];return s.width?s.stroke(e,t):s.points.width?s.points.stroke(e,t):null},fill:function(e,t){return e.series[t].fill(e,t)},dash:"solid"},idx:null,idxs:null,values:[]},Ps=[0,0];function Es(e,t,s,n=!0){return e=>{0==e.button&&(!n||e.target==t)&&s(e)}}function Is(e,t,s,n=!0){return e=>{(!n||e.target==t)&&s(e)}}const As={show:!0,x:!0,y:!0,lock:!1,move:function(e,t,s){return Ps[0]=t,Ps[1]=s,Ps},points:{one:!1,show:function(e,t){let s=e.cursor.points,n=Ce(),a=s.size(e,t);je(n,ee,a),je(n,te,a);let o=a/-2;je(n,"marginLeft",o),je(n,"marginTop",o);let i=s.width(e,t,a);return i&&je(n,"borderWidth",i),n},size:function(e,t){return e.series[t].points.size},width:0,stroke:function(e,t){let s=e.series[t].points;return s._stroke||s._fill},fill:function(e,t){let s=e.series[t].points;return s._fill||s._stroke}},bind:{mousedown:Es,mouseup:Es,click:Es,dblclick:Es,mousemove:Is,mouseleave:Is,mouseenter:Is},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,click:(e,t)=>{t.stopPropagation(),t.stopImmediatePropagation()},_x:!1,_y:!1},focus:{dist:(e,t,s,n,a)=>n-a,prox:-1,bias:0},hover:{skip:[void 0],prox:null,bias:0},left:-10,top:-10,idx:null,dataIdx:null,idxs:null,event:null},Ds={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},Rs=Bt({},Ds,{filter:xt}),zs=Bt({},Rs,{size:10}),Fs=Bt({},Ds,{show:!1}),Os='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',Ws="bold "+Os,$s={show:!0,scale:"x",stroke:ie,space:50,gap:5,alignTo:1,size:50,labelGap:0,labelSize:30,labelFont:Ws,side:2,grid:Rs,ticks:zs,border:Fs,font:Os,lineGap:1.5,rotate:0},Hs={show:!0,scale:"x",auto:!1,sorted:1,min:ft,max:-ft,idxs:[]};function Bs(e,t,s,n,a){return t.map(e=>null==e?"":Ze(e))}function Us(e,t,s,n,a,o,i){let l=[],r=Nt.get(a)||0;for(let c=s=i?s:Tt(Mt(s,a),r);c<=n;c=Tt(c+a,r))l.push(Object.is(c,-0)?0:c);return l}function qs(e,t,s,n,a,o,i){const l=[],r=e.scales[e.axes[t].scale].log,c=nt((10==r?ut:dt)(s));a=rt(r,c),10==r&&(a=ls[Fe(a,ls)]);let u=s,d=a*r;10==r&&(d=ls[Fe(d,ls)]);do{l.push(u),u+=a,10!=r||Nt.has(u)||(u=Tt(u,Nt.get(a))),u>=d&&(d=(a=u)*r,10==r&&(d=ls[Fe(d,ls)]))}while(u<=n);return l}function Gs(e,t,s,n,a,o,i){let l=e.scales[e.axes[t].scale].asinh,r=n>l?qs(e,t,lt(l,s),n,a):[l],c=n>=0&&s<=0?[0]:[];return(s<-l?qs(e,t,lt(l,-n),-s,a):[l]).reverse().map(e=>-e).concat(c,r)}const Js=/./,Ys=/[12357]/,Vs=/[125]/,Ks=/1/,Xs=(e,t,s,n)=>e.map((e,a)=>4==t&&0==e||a%n==0&&s.test(e.toExponential()[e<0?1:0])?e:null);function Qs(e,t,s,n,a){let o=e.axes[s],i=o.scale,l=e.scales[i],r=e.valToPos,c=o._space,u=r(10,i),d=r(9,i)-u>=c?Js:r(7,i)-u>=c?Ys:r(5,i)-u>=c?Vs:Ks;if(d==Ks){let e=st(r(1,i)-u);if(ea,an={show:!0,auto:!0,sorted:0,gaps:nn,alpha:1,facets:[Bt({},sn,{scale:"x"}),Bt({},sn,{scale:"y"})]},on={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:nn,alpha:1,points:{show:function(e,t){let{scale:s,idxs:n}=e.series[0],a=e._data[0],o=e.valToPos(a[n[0]],s,!0),i=e.valToPos(a[n[1]],s,!0),l=st(i-o)/(e.series[t].points.space*ke);return n[1]-n[0]<=l},filter:null},values:null,min:ft,max:-ft,idxs:[],path:null,clip:null};function ln(e,t,s,n,a){return s/10}const rn={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},cn=Bt({},rn,{time:!1,ori:1}),un={};function dn(e,t){let s=un[e];return s||(s={key:e,plots:[],sub(e){s.plots.push(e)},unsub(e){s.plots=s.plots.filter(t=>t!=e)},pub(e,t,n,a,o,i,l){for(let r=0;r{let m=e.pxRound;const g=l.dir*(0==l.ori?1:-1),y=0==l.ori?vn:Sn;let w,x;1==g?(w=s,x=n):(w=n,x=s);let b=m(c(t[w],l,f,d)),k=m(u(i[w],r,p,h)),v=m(c(t[x],l,f,d)),S=m(u(1==o?r.max:r.min,r,p,h)),_=new Path2D(a);return y(_,v,S),y(_,b,S),y(_,b,k),_})}function gn(e,t,s,n,a,o){let i=null;if(e.length>0){i=new Path2D;const l=0==t?_n:jn;let r=s;for(let t=0;ts[0]){let e=s[0]-r;e>0&&l(i,r,n,e,n+o),r=s[1]}}let c=s+a-r,u=10;c>0&&l(i,r,n-u/2,c,n+o+u)}return i}function yn(e,t,s,n,a,o,i){let l=[],r=e.length;for(let c=1==a?s:n;c>=s&&c<=n;c+=a)if(null===t[c]){let u=c,d=c;if(1==a)for(;++c<=n&&null===t[c];)d=c;else for(;--c>=s&&null===t[c];)d=c;let h=o(e[u]),f=d==u?h:o(e[d]),p=u-a;h=i<=0&&p>=0&&p=0&&m>=0&&m=h&&l.push([h,f])}return l}function wn(e){return 0==e?wt:1==e?at:t=>jt(t,e)}function xn(e){let t=0==e?bn:kn,s=0==e?(e,t,s,n,a,o)=>{e.arcTo(t,s,n,a,o)}:(e,t,s,n,a,o)=>{e.arcTo(s,t,a,n,o)},n=0==e?(e,t,s,n,a)=>{e.rect(t,s,n,a)}:(e,t,s,n,a)=>{e.rect(s,t,a,n)};return(e,a,o,i,l,r=0,c=0)=>{0==r&&0==c?n(e,a,o,i,l):(r=it(r,i/2,l/2),c=it(c,i/2,l/2),t(e,a+r,o),s(e,a+i,o,a+i,o+l,r),s(e,a+i,o+l,a,o+l,c),s(e,a,o+l,a,o,c),s(e,a,o,a+i,o,r),e.closePath())}}const bn=(e,t,s)=>{e.moveTo(t,s)},kn=(e,t,s)=>{e.moveTo(s,t)},vn=(e,t,s)=>{e.lineTo(t,s)},Sn=(e,t,s)=>{e.lineTo(s,t)},_n=xn(0),jn=xn(1),Mn=(e,t,s,n,a,o)=>{e.arc(t,s,n,a,o)},Cn=(e,t,s,n,a,o)=>{e.arc(s,t,n,a,o)},Tn=(e,t,s,n,a,o,i)=>{e.bezierCurveTo(t,s,n,a,o,i)},Nn=(e,t,s,n,a,o,i)=>{e.bezierCurveTo(s,t,a,n,i,o)};function Ln(e){return(e,t,s,n,a)=>hn(e,t,(t,o,i,l,r,c,u,d,h,f,p)=>{let m,g,{pxRound:y,points:w}=t;0==l.ori?(m=bn,g=Mn):(m=kn,g=Cn);const x=Tt(w.width*ke,3);let b=(w.size-w.width)/2*ke,k=Tt(2*b,3),v=new Path2D,S=new Path2D,{left:_,top:j,width:M,height:C}=e.bbox;_n(S,_-k,j-k,M+2*k,C+2*k);const T=e=>{if(null!=i[e]){let t=y(c(o[e],l,f,d)),s=y(u(i[e],r,p,h));m(v,t+b,s),g(v,t,s,b,0,2*tt)}};if(a)a.forEach(T);else for(let e=s;e<=n;e++)T(e);return{stroke:x>0?v:null,fill:v,clip:S,flags:3}})}function Pn(e){return(t,s,n,a,o,i)=>{n!=a&&(o!=n&&i!=n&&e(t,s,n),o!=a&&i!=a&&e(t,s,a),e(t,s,i))}}const En=Pn(vn),In=Pn(Sn);function An(e){const t=Ke(null==e?void 0:e.alignGaps,0);return(e,s,n,a)=>hn(e,s,(o,i,l,r,c,u,d,h,f,p,m)=>{[n,a]=He(l,n,a);let g,y,w=o.pxRound,x=e=>w(u(e,r,p,h)),b=e=>w(d(e,c,m,f));0==r.ori?(g=vn,y=En):(g=Sn,y=In);const k=r.dir*(0==r.ori?1:-1),v={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},S=v.stroke;let _=!1;if(a-n>=4*p){let t,s,o,c=t=>e.posToVal(t,r.key,!0),u=null,d=null,h=x(i[1==k?n:a]),f=x(i[n]),p=x(i[a]),m=c(1==k?f+1:p-1);for(let e=1==k?n:a;e>=n&&e<=a;e+=k){let n=i[e],a=(1==k?nm)?h:x(n),o=l[e];a==h?null!=o?(s=o,null==u?(g(S,a,b(s)),t=u=d=s):sd&&(d=s)):null===o&&(_=!0):(null!=u&&y(S,h,b(u),b(d),b(t),b(s)),null!=o?(s=o,g(S,a,b(s)),u=d=t=s):(u=d=null,null===o&&(_=!0)),h=a,m=c(h+k))}null!=u&&u!=d&&o!=h&&y(S,h,b(u),b(d),b(t),b(s))}else for(let e=1==k?n:a;e>=n&&e<=a;e+=k){let t=l[e];null===t?_=!0:null!=t&&g(S,x(i[e]),b(t))}let[j,M]=fn(e,s);if(null!=o.fill||0!=j){let t=v.fill=new Path2D(S),l=b(o.fillTo(e,s,o.min,o.max,j)),r=x(i[n]),c=x(i[a]);-1==k&&([c,r]=[r,c]),g(t,c,l),g(t,r,l)}if(!o.spanGaps){let c=[];_&&c.push(...yn(i,l,n,a,k,x,t)),v.gaps=c=o.gaps(e,s,n,a,c),v.clip=gn(c,r.ori,h,f,p,m)}return 0!=M&&(v.band=2==M?[mn(e,s,n,a,S,-1),mn(e,s,n,a,S,1)]:mn(e,s,n,a,S,M)),v})}function Dn(e,t,s,n,a,o,i=ft){if(e.length>1){let l=null;for(let r=0,c=1/0;r0!=n[e]>0?s[e]=0:(s[e]=3*(r[e-1]+r[e])/((2*r[e]+r[e-1])/n[e-1]+(r[e]+2*r[e-1])/n[e]),isFinite(s[e])||(s[e]=0));s[i-1]=n[i-2];for(let c=0;c{Qn.pxRatio=ke}));const On=An(),Wn=Ln();function $n(e,t,s,n){return(n?[e[0],e[1]].concat(e.slice(2)):[e[0]].concat(e.slice(1))).map((e,n)=>Hn(e,n,t,s))}function Hn(e,t,s,n){return Bt({},0==t?s:n,e)}function Bn(e,t,s){return null==t?At:[t,s]}const Un=Bn;function qn(e,t,s){return null==t?At:Ve(t,s,.1,!0)}function Gn(e,t,s,n){return null==t?At:Ue(t,s,e.scales[n].log,!1)}const Jn=Gn;function Yn(e,t,s,n){return null==t?At:qe(t,s,e.scales[n].log,!1)}const Vn=Yn;function Kn(e){let t,s;return[e=e.replace(/(\d+)px/,(e,n)=>(t=at((s=+n)*ke))+"px"),t,s]}function Xn(e){e.show&&[e.font,e.labelFont].forEach(e=>{let t=Tt(e[2]*ke,1);e[0]=e[0].replace(/[0-9.]+px/,t+"px"),e[1]=t})}function Qn(e,t,s){const n={mode:Ke(e.mode,1)},a=n.mode;function o(e,t,s,n){let a=t.valToPct(e);return n+s*(-1==t.dir?1-a:a)}function i(e,t,s,n){let a=t.valToPct(e);return n+s*(-1==t.dir?a:1-a)}function l(e,t,s,n){return 0==t.ori?o(e,t,s,n):i(e,t,s,n)}n.valToPosH=o,n.valToPosV=i;let r=!1;n.status=0;const c=n.root=Ce("uplot");null!=e.id&&(c.id=e.id),Se(c,e.class),e.title&&(Ce("u-title",c).textContent=e.title);const u=Me("canvas"),d=n.ctx=u.getContext("2d"),h=Ce("u-wrap",c);Re("click",h,e=>{e.target===p&&(Nn!=jn||Ln!=Mn)&&Zn.click(n,e)},!0);const f=n.under=Ce("u-under",h);h.appendChild(u);const p=n.over=Ce("u-over",h),m=+Ke((e=Ht(e)).pxAlign,1),g=wn(m);(e.plugins||[]).forEach(t=>{t.opts&&(e=t.opts(n,e)||e)});const y=e.ms||.001,w=n.series=1==a?$n(e.series||[],Hs,on,!1):(x=e.series||[null],b=an,x.map((e,t)=>0==t?{}:Bt({},b,e)));var x,b;const k=n.axes=$n(e.axes||[],$s,tn,!0),v=n.scales={},S=n.bands=e.bands||[];S.forEach(e=>{e.fill=yt(e.fill||null),e.dir=Ke(e.dir,-1)});const _=2==a?w[1].facets[0].scale:w[0].scale,j={axes:function(){for(let e=0;eRs[e]):y,x=2==f.distr?Rs[y[1]]-Rs[y[0]]:u,b=t.ticks,S=t.border,_=b.show?b.size:0,j=at(_*ke),M=at((2==t.alignTo?t._size-_-t.gap:t.gap)*ke),C=t._rotate*-tt/180,T=g(t._pos*ke),N=T+(j+M)*c;a=0==i?N:0,s=1==i?N:0,Js(t.font[0],r,1==t.align?ae:2==t.align?oe:C>0?ae:C<0?oe:0==i?"center":3==o?oe:ae,C||1==i?"middle":2==o?se:ne);let L=t.font[1]*t.lineGap,P=y.map(e=>g(l(e,f,p,m))),E=t._values;for(let e=0;e0){let e=w.some(e=>e._focus)&&Ds!=Vt.alpha;e&&(d.globalAlpha=Ds=Vt.alpha),w.forEach((e,s)=>{if(s>0&&e.show&&(Ks(s,!1),Ks(s,!0),null==e._paths)){let o=Ds;Ds!=e.alpha&&(d.globalAlpha=Ds=e.alpha);let i=2==a?[0,t[s][0].length-1]:function(e){let t=mt(ds-1,0,us-1),s=mt(hs+1,0,us-1);for(;null==e[t]&&t>0;)t--;for(;null==e[s]&&s{if(t>0&&e.show){let s=Ds;Ds!=e.alpha&&(d.globalAlpha=Ds=e.alpha),null!=e._paths&&Xs(t,!1);{let s=null!=e._paths?e._paths.gaps:null,a=e.points.show(n,t,ds,hs,s),o=e.points.filter(n,t,a,s);(a||o)&&(e.points._paths=e.points.paths(n,t,ds,hs,o),Xs(t,!0))}Ds!=s&&(d.globalAlpha=Ds=s),Da("drawSeries",t)}}),e&&(d.globalAlpha=Ds=1)}}},M=(e.drawOrder||["axes","series"]).map(e=>j[e]);function C(e){const t=3==e.distr?t=>ut(t>0?t:e.clamp(n,t,e.min,e.max,e.key)):4==e.distr?t=>ht(t,e.asinh):100==e.distr?t=>e.fwd(t):e=>e;return s=>{let n=t(s),{_min:a,_max:o}=e;return(n-a)/(o-a)}}function T(t){let s=v[t];if(null==s){let n=(e.scales||Et)[t]||Et;if(null!=n.from){T(n.from);let e=Bt({},v[n.from],n,{key:t});e.valToPct=C(e),v[t]=e}else{s=v[t]=Bt({},t==_?rn:cn,n),s.key=t;let e=s.time,o=s.range,i=Dt(o);if((t!=_||2==a&&!e)&&(!i||null!=o[0]&&null!=o[1]||(o={min:null==o[0]?Ge:{mode:1,hard:o[0],soft:o[0]},max:null==o[1]?Ge:{mode:1,hard:o[1],soft:o[1]}},i=!1),!i&&Ft(o))){let e=o;o=(t,s,n)=>null==s?At:Ve(s,n,e)}s.range=yt(o||(e?Un:t==_?3==s.distr?Jn:4==s.distr?Vn:Bn:3==s.distr?Gn:4==s.distr?Yn:qn)),s.auto=yt(!i&&s.auto),s.clamp=yt(s.clamp||ln),s._min=s._max=null,s.valToPct=C(s)}}}T("x"),T("y"),1==a&&w.forEach(e=>{T(e.scale)}),k.forEach(e=>{T(e.scale)});for(let Q in e.scales)T(Q);const N=v[_],L=N.distr;let P,E;0==N.ori?(Se(c,"u-hz"),P=o,E=i):(Se(c,"u-vt"),P=i,E=o);const I={};for(let Q in v){let e=v[Q];null==e.min&&null==e.max||(I[Q]={min:e.min,max:e.max},e.min=e.max=null)}const A=e.tzDate||(e=>new Date(at(e/y))),D=e.fmtDate||es,R=1==y?ks(A):_s(A),z=Ms(A,js(1==y?bs:Ss,D)),F=Ns(A,Ts("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",D)),O=[],W=n.legend=Bt({},Ls,e.legend),$=n.cursor=Bt({},As,{drag:{y:2==a}},e.cursor),H=W.show,B=$.show,U=W.markers;let q,G,J;W.idxs=O,U.width=yt(U.width),U.dash=yt(U.dash),U.stroke=yt(U.stroke),U.fill=yt(U.fill);let Y,V=[],K=[],X=!1,ie={};if(W.live){const e=w[1]?w[1].values:null;X=null!=e,Y=X?e(n,1,0):{_:0};for(let t in Y)ie[t]=ge}if(H)if(q=Me("table","u-legend",c),J=Me("tbody",null,q),W.mount(n,q),X){G=Me("thead",null,q,J);let e=Me("tr",null,G);for(var pe in Me("th",null,e),Y)Me("th",Z,e).textContent=pe}else Se(q,"u-inline"),W.live&&Se(q,"u-live");const ye={show:!0},be={show:!1},ve=new Map;function Te(e,t,s,a=!0){const o=ve.get(t)||{},i=$.bind[e](n,t,s,a);i&&(Re(e,t,o[e]=i),ve.set(t,o))}function Le(e,t,s){const n=ve.get(t)||{};for(let a in n)null!=e&&a!=e||(ze(a,t,n[a]),delete n[a]);null==e&&ve.delete(t)}let Ee=0,Ae=0,De=0,Oe=0,Je=0,Ye=0,Xe=Je,Qe=Ye,Ze=De,nt=Oe,ct=0,dt=0,wt=0,St=0;n.bbox={};let _t=!1,Mt=!1,Ct=!1,Pt=!1,Rt=!1,Wt=!1;function $t(e,t,s){(s||e!=n.width||t!=n.height)&&Ut(e,t),yn(!1),Ct=!0,Mt=!0,Dn()}function Ut(e,t){n.width=Ee=De=e,n.height=Ae=Oe=t,Je=Ye=0,function(){let e=!1,t=!1,s=!1,n=!1;k.forEach((a,o)=>{if(a.show&&a._show){let{side:o,_size:i}=a,l=o%2,r=i+(null!=a.label?a.labelSize:0);r>0&&(l?(De-=r,3==o?(Je+=r,n=!0):s=!0):(Oe-=r,0==o?(Ye+=r,e=!0):t=!0))}}),as[0]=e,as[1]=s,as[2]=t,as[3]=n,De-=cs[1]+cs[3],Je+=cs[3],Oe-=cs[2]+cs[0],Ye+=cs[0]}(),function(){let e=Je+De,t=Ye+Oe,s=Je,n=Ye;function a(a,o){switch(a){case 1:return e+=o,e-o;case 2:return t+=o,t-o;case 3:return s-=o,s+o;case 0:return n-=o,n+o}}k.forEach((e,t)=>{if(e.show&&e._show){let t=e.side;e._pos=a(t,e._size),null!=e.label&&(e._lpos=a(t,e.labelSize))}})}();let s=n.bbox;ct=s.left=jt(Je*ke,.5),dt=s.top=jt(Ye*ke,.5),wt=s.width=jt(De*ke,.5),St=s.height=jt(Oe*ke,.5)}const Gt=3;if(n.setSize=function({width:e,height:t}){$t(e,t)},null==$.dataIdx){let e=$.hover,s=e.skip=new Set(e.skip??[]);s.add(void 0);let n=e.prox=yt(e.prox),a=e.bias??(e.bias=0);$.dataIdx=(e,o,i,l)=>{if(0==o)return i;let r=i,c=n(e,o,i,l)??ft,u=c>=0&&c0;)s.has(p[e])||(t=e);if(0==a||1==a)for(e=i;null==n&&e++c&&(r=null);return r}}const Jt=e=>{$.event=e};$.idxs=O,$._lock=!1;let Yt=$.points;Yt.show=yt(Yt.show),Yt.size=yt(Yt.size),Yt.stroke=yt(Yt.stroke),Yt.width=yt(Yt.width),Yt.fill=yt(Yt.fill);const Vt=n.focus=Bt({},e.focus||{alpha:.3},$.focus),Kt=Vt.prox>=0,Xt=Kt&&Yt.one;let Qt=[],Zt=[],ts=[];function ss(e,t){let s=Yt.show(n,t);if(s instanceof HTMLElement)return Se(s,"u-cursor-pt"),Se(s,e.class),Ne(s,-10,-10,De,Oe),p.insertBefore(s,Qt[t]),s}function ns(e,t){if(1==a||t>0){let t=1==a&&v[e.scale].time,s=e.value;e.value=t?zt(s)?Ns(A,Ts(s,D)):s||F:s||en,e.label=e.label||(t?"Time":"Value")}if(Xt||t>0){e.width=null==e.width?1:e.width,e.paths=e.paths||On||bt,e.fillTo=yt(e.fillTo||pn),e.pxAlign=+Ke(e.pxAlign,m),e.pxRound=wn(e.pxAlign),e.stroke=yt(e.stroke||null),e.fill=yt(e.fill||null),e._stroke=e._fill=e._paths=e._focus=null;let t=Tt(1*(3+2*(lt(1,e.width)||1)),3),s=e.points=Bt({},{size:t,width:lt(1,.2*t),stroke:e.stroke,space:2*t,paths:Wn,_stroke:null,_fill:null},e.points);s.show=yt(s.show),s.filter=yt(s.filter),s.fill=yt(s.fill),s.stroke=yt(s.stroke),s.paths=yt(s.paths),s.pxAlign=e.pxAlign}if(H){let s=function(e,t){if(0==t&&(X||!W.live||2==a))return At;let s=[],o=Me("tr","u-series",J,J.childNodes[t]);Se(o,e.class),e.show||Se(o,Q);let i=Me("th",null,o);if(U.show){let e=Ce("u-marker",i);if(t>0){let s=U.width(n,t);s&&(e.style.border=s+"px "+U.dash(n,t)+" "+U.stroke(n,t)),e.style.background=U.fill(n,t)}}let l=Ce(Z,i);for(var r in e.label instanceof HTMLElement?l.appendChild(e.label):l.textContent=e.label,t>0&&(U.show||(l.style.color=e.width>0?U.stroke(n,t):U.fill(n,t)),Te("click",i,t=>{if($._lock)return;Jt(t);let s=w.indexOf(e);if((t.ctrlKey||t.metaKey)!=W.isolate){let e=w.some((e,t)=>t>0&&t!=s&&e.show);w.forEach((t,n)=>{n>0&&ia(n,e?n==s?ye:be:ye,!0,za.setSeries)})}else ia(s,{show:!e.show},!0,za.setSeries)},!1),Kt&&Te(de,i,t=>{$._lock||(Jt(t),ia(w.indexOf(e),ua,!0,za.setSeries))},!1)),Y){let e=Me("td","u-value",o);e.textContent="--",s.push(e)}return[o,s]}(e,t);V.splice(t,0,s[0]),K.splice(t,0,s[1]),W.values.push(null)}if(B){O.splice(t,0,null);let s=null;Xt?0==t&&(s=ss(e,t)):t>0&&(s=ss(e,t)),Qt.splice(t,0,s),Zt.splice(t,0,0),ts.splice(t,0,0)}Da("addSeries",t)}n.addSeries=function(e,t){t=null==t?w.length:t,e=1==a?Hn(e,t,Hs,on):Hn(e,t,{},an),w.splice(t,0,e),ns(w[t],t)},n.delSeries=function(e){if(w.splice(e,1),H){W.values.splice(e,1),K.splice(e,1);let t=V.splice(e,1)[0];Le(null,t.firstChild),t.remove()}B&&(O.splice(e,1),Qt.splice(e,1)[0].remove(),Zt.splice(e,1),ts.splice(e,1)),Da("delSeries",e)};const as=[!1,!1,!1,!1];function os(e,t,s,n){let[a,o,i,l]=s,r=t%2,c=0;return 0==r&&(l||o)&&(c=0==t&&!a||2==t&&!i?at($s.size/3):0),1==r&&(a||i)&&(c=1==t&&!o||3==t&&!l?at(tn.size/2):0),c}const rs=n.padding=(e.padding||[os,os,os,os]).map(e=>yt(Ke(e,os))),cs=n._padding=rs.map((e,t)=>e(n,t,as,0));let us,ds=null,hs=null;const fs=1==a?w[0].idxs:null;let ps,ms,gs,ys,ws,Cs,Ps,Es,Is,Ds,Rs=null,zs=!1;function Fs(e,s){if(t=null==e?[]:e,n.data=n._data=t,2==a){us=0;for(let e=1;e=0,Wt=!0,Dn()}}function Os(){let e,s;zs=!0,1==a&&(us>0?(ds=fs[0]=0,hs=fs[1]=us-1,e=t[0][ds],s=t[0][hs],2==L?(e=ds,s=hs):e==s&&(3==L?[e,s]=Ue(e,e,N.log,!1):4==L?[e,s]=qe(e,e,N.log,!1):N.time?s=e+at(86400/y):[e,s]=Ve(e,s,.1,!0))):(ds=fs[0]=e=null,hs=fs[1]=s=null)),oa(_,e,s)}function Ws(e,t,s,n,a,o){e??(e=le),s??(s=It),n??(n="butt"),a??(a=le),o??(o="round"),e!=ps&&(d.strokeStyle=ps=e),a!=ms&&(d.fillStyle=ms=a),t!=gs&&(d.lineWidth=gs=t),o!=ws&&(d.lineJoin=ws=o),n!=Cs&&(d.lineCap=Cs=n),s!=ys&&d.setLineDash(ys=s)}function Js(e,t,s,n){t!=ms&&(d.fillStyle=ms=t),e!=Ps&&(d.font=Ps=e),s!=Es&&(d.textAlign=Es=s),n!=Is&&(d.textBaseline=Is=n)}function Ys(e,t,s,a,o=0){if(a.length>0&&e.auto(n,zs)&&(null==t||null==t.min)){let t=Ke(ds,0),n=Ke(hs,a.length-1),i=null==s.min?function(e,t,s,n=0,a=!1){let o=a?Be:He,i=a?$e:We;[t,s]=o(e,t,s);let l=e[t],r=e[t];if(t>-1)if(1==n)l=e[t],r=e[s];else if(-1==n)l=e[s],r=e[t];else for(let c=t;c<=s;c++){let t=e[c];i(t)&&(tr&&(r=t))}return[l??ft,r??-ft]}(a,t,n,o,3==e.distr):[s.min,s.max];e.min=it(e.min,s.min=i[0]),e.max=lt(e.max,s.max=i[1])}}n.setData=Fs;const Vs={min:null,max:null};function Ks(e,t){let s=t?w[e].points:w[e];s._stroke=s.stroke(n,e),s._fill=s.fill(n,e)}function Xs(e,s){let a=s?w[e].points:w[e],{stroke:o,fill:i,clip:l,flags:r,_stroke:c=a._stroke,_fill:u=a._fill,_width:h=a.width}=a._paths;h=Tt(h*ke,3);let f=null,p=h%2/2;s&&null==u&&(u=h>0?"#fff":c);let m=1==a.pxAlign&&p>0;if(m&&d.translate(p,p),!s){let e=ct-h/2,t=dt-h/2,s=wt+h,n=St+h;f=new Path2D,f.rect(e,t,s,n)}s?nn(c,h,a.dash,a.cap,u,o,i,r,l):function(e,s,a,o,i,l,r,c,u,d,h){let f=!1;0!=u&&S.forEach((p,m)=>{if(p.series[0]==e){let e,g=w[p.series[1]],y=t[p.series[1]],x=(g._paths||Et).band;Dt(x)&&(x=1==p.dir?x[0]:x[1]);let b=null;g.show&&x&&function(e,t,s){for(t=Ke(t,0),s=Ke(s,e.length-1);t<=s;){if(null!=e[t])return!0;t++}return!1}(y,ds,hs)?(b=p.fill(n,m)||l,e=g._paths.clip):x=null,nn(s,a,o,i,b,r,c,u,d,h,e,x),f=!0}}),f||nn(s,a,o,i,l,r,c,u,d,h)}(e,c,h,a.dash,a.cap,u,o,i,r,f,l),m&&d.translate(-p,-p)}const sn=3;function nn(e,t,s,n,a,o,i,l,r,c,u,h){Ws(e,t,s,n,a),(r||c||h)&&(d.save(),r&&d.clip(r),c&&d.clip(c)),h?(l&sn)==sn?(d.clip(h),u&&d.clip(u),hn(a,i),un(e,o,t)):2&l?(hn(a,i),d.clip(h),un(e,o,t)):1&l&&(d.save(),d.clip(h),u&&d.clip(u),hn(a,i),d.restore(),un(e,o,t)):(hn(a,i),un(e,o,t)),(r||c||h)&&d.restore()}function un(e,t,s){s>0&&(t instanceof Map?t.forEach((e,t)=>{d.strokeStyle=ps=t,d.stroke(e)}):null!=t&&e&&d.stroke(t))}function hn(e,t){t instanceof Map?t.forEach((e,t)=>{d.fillStyle=ms=t,d.fill(e)}):null!=t&&e&&d.fill(t)}function fn(e,t,s,n,a,o,i,l,r,c){let u=i%2/2;1==m&&d.translate(u,u),Ws(l,i,r,c,l),d.beginPath();let h,f,p,g,y=a+(0==n||3==n?-o:o);0==s?(f=a,g=y):(h=a,p=y);for(let m=0;m{if(!s.show)return;let o=v[s.scale];if(null==o.min)return void(s._show&&(t=!1,s._show=!1,yn(!1)));s._show||(t=!1,s._show=!0,yn(!1));let i=s.side,l=i%2,{min:r,max:c}=o,[u,d]=function(e,t,s,a){let o,i=k[e];if(a<=0)o=[0,0];else{let l=i._space=i.space(n,e,t,s,a);o=function(e,t,s,n,a){let o=lt(pt(e),pt(t)),i=t-e,l=Fe(a/n*i,s);do{let e=s[l],t=n*e/i;if(t>=a&&o+(e<5?Nt.get(e):0)<=17)return[e,t]}while(++lRs[e]):f,m=2==o.distr?Rs[f[1]]-Rs[f[0]]:u,g=s._values=s.values(n,s.filter(n,p,a,d,m),a,d,m);s._rotate=2==i?s.rotate(n,g,a,d):0;let y=s._size;s._size=ot(s.size(n,g,a,e)),null!=y&&s._size!=y&&(t=!1)}),t}function gn(e){let t=!0;return rs.forEach((s,a)=>{let o=s(n,a,as,e);o!=cs[a]&&(t=!1),cs[a]=o}),t}function yn(e){w.forEach((t,s)=>{s>0&&(t._paths=null,e&&(1==a?(t.min=null,t.max=null):t.facets.forEach(e=>{e.min=null,e.max=null})))})}let xn,bn,kn,vn,Sn,_n,jn,Mn,Cn,Tn,Nn,Ln,Pn=!1,En=!1,In=[];function An(){En=!1;for(let e=0;e0){w.forEach((s,o)=>{if(1==a){let a=s.scale,i=I[a];if(null==i)return;let l=e[a];if(0==o){let e=l.range(n,l.min,l.max,a);l.min=e[0],l.max=e[1],ds=Fe(l.min,t[0]),hs=Fe(l.max,t[0]),hs-ds>1&&(t[0][ds]l.max&&hs--),s.min=Rs[ds],s.max=Rs[hs]}else s.show&&s.auto&&Ys(l,i,s,t[o],s.sorted);s.idxs[0]=ds,s.idxs[1]=hs}else if(o>0&&s.show&&s.auto){let[n,a]=s.facets,i=n.scale,l=a.scale,[r,c]=t[o],u=e[i],d=e[l];null!=u&&Ys(u,I[i],n,r,n.sorted),null!=d&&Ys(d,I[l],a,c,a.sorted),s.min=a.min,s.max=a.max}});for(let t in e){let s=e[t],a=I[t];if(null==s.from&&(null==a||null==a.min)){let e=s.range(n,s.min==ft?null:s.min,s.max==-ft?null:s.max,t);s.min=e[0],s.max=e[1]}}}for(let t in e){let s=e[t];if(null!=s.from){let a=e[s.from];if(null==a.min)s.min=s.max=null;else{let e=s.range(n,a.min,a.max,t);s.min=e[0],s.max=e[1]}}}let s={},o=!1;for(let t in e){let n=e[t],a=v[t];if(a.min!=n.min||a.max!=n.max){a.min=n.min,a.max=n.max;let e=a.distr;a._min=3==e?ut(a.min):4==e?ht(a.min,a.asinh):100==e?a.fwd(a.min):a.min,a._max=3==e?ut(a.max):4==e?ht(a.max,a.asinh):100==e?a.fwd(a.max):a.max,s[t]=o=!0}}if(o){w.forEach((e,t)=>{2==a?t>0&&s.y&&(e._paths=null):s[e.scale]&&(e._paths=null)});for(let e in s)Ct=!0,Da("setScale",e);B&&$.left>=0&&(Pt=Wt=!0)}for(let t in I)I[t]=null}(),_t=!1),Ct&&(function(){let e=!1,t=0;for(;!e;){t++;let s=mn(t),a=gn(t);e=t==Gt||s&&a,e||(Ut(n.width,n.height),Mt=!0)}}(),Ct=!1),Mt){if(je(f,ae,Je),je(f,se,Ye),je(f,ee,De),je(f,te,Oe),je(p,ae,Je),je(p,se,Ye),je(p,ee,De),je(p,te,Oe),je(h,ee,Ee),je(h,te,Ae),u.width=at(Ee*ke),u.height=at(Ae*ke),k.forEach(({_el:e,_show:t,_size:s,_pos:n,side:a})=>{if(null!=e)if(t){let t=a%2==1;je(e,t?"left":"top",n-(3===a||0===a?s:0)),je(e,t?"width":"height",s),je(e,t?"top":"left",t?Ye:Je),je(e,t?"height":"width",t?Oe:De),_e(e,Q)}else Se(e,Q)}),ps=ms=gs=ws=Cs=Ps=Es=Is=ys=null,Ds=1,ba(!0),Je!=Xe||Ye!=Qe||De!=Ze||Oe!=nt){yn(!1);let e=De/Ze,t=Oe/nt;if(B&&!Pt&&$.left>=0){$.left*=e,$.top*=t,kn&&Ne(kn,at($.left),0,De,Oe),vn&&Ne(vn,0,at($.top),De,Oe);for(let s=0;s=0&&sa.width>0){sa.left*=e,sa.width*=e,sa.top*=t,sa.height*=t;for(let e in Sa)je(na,e,sa[e])}Xe=Je,Qe=Ye,Ze=De,nt=Oe}Da("setSize"),Mt=!1}Ee>0&&Ae>0&&(d.clearRect(0,0,u.width,u.height),Da("drawClear"),M.forEach(e=>e()),Da("draw")),sa.show&&Rt&&(aa(sa),Rt=!1),B&&Pt&&(wa(null,!0,!1),Pt=!1),W.show&&W.live&&Wt&&(ga(),Wt=!1),r||(r=!0,n.status=1,Da("ready")),zs=!1,Pn=!1}function Fn(e,s){let a=v[e];if(null==a.from){if(0==us){let t=a.range(n,s.min,s.max,e);s.min=t[0],s.max=t[1]}if(s.min>s.max){let e=s.min;s.min=s.max,s.max=e}if(us>1&&null!=s.min&&null!=s.max&&s.max-s.min<1e-16)return;e==_&&2==a.distr&&us>0&&(s.min=Fe(s.min,t[0]),s.max=Fe(s.max,t[0]),s.min==s.max&&s.max++),I[e]=s,_t=!0,Dn()}}n.batch=function(e,t=!1){Pn=!0,En=t,e(n),Rn(),t&&In.length>0&&queueMicrotask(An)},n.redraw=(e,t)=>{Ct=t||!1,!1!==e?oa(_,N.min,N.max):Dn()},n.setScale=Fn;let Qn=!1;const Zn=$.drag;let ea=Zn.x,ta=Zn.y;B&&($.x&&(xn=Ce("u-cursor-x",p)),$.y&&(bn=Ce("u-cursor-y",p)),0==N.ori?(kn=xn,vn=bn):(kn=bn,vn=xn),Nn=$.left,Ln=$.top);const sa=n.select=Bt({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),na=sa.show?Ce("u-select",sa.over?p:f):null;function aa(e,t){if(sa.show){for(let t in e)sa[t]=e[t],t in Sa&&je(na,t,e[t]);!1!==t&&Da("setSelect")}}function oa(e,t,s){Fn(e,{min:t,max:s})}function ia(e,t,s,o){null!=t.focus&&function(e){if(e!=ca){let t=null==e,s=1!=Vt.alpha;w.forEach((n,o)=>{if(1==a||o>0){let a=t||0==o||o==e;n._focus=t?null:a,s&&function(e,t){w[e].alpha=t,B&&null!=Qt[e]&&(Qt[e].style.opacity=t),H&&V[e]&&(V[e].style.opacity=t)}(o,a?1:Vt.alpha)}}),ca=e,s&&Dn()}}(e),null!=t.show&&w.forEach((s,n)=>{n>0&&(e==n||null==e)&&(s.show=t.show,function(e){if(w[e].show)H&&_e(V[e],Q);else if(H&&Se(V[e],Q),B){let t=Xt?Qt[0]:Qt[e];null!=t&&Ne(t,-10,-10,De,Oe)}}(n),2==a?(oa(s.facets[0].scale,null,null),oa(s.facets[1].scale,null,null)):oa(s.scale,null,null),Dn())}),!1!==s&&Da("setSeries",e,t),o&&Wa("setSeries",n,e,t)}let la,ra,ca;n.setSelect=aa,n.setSeries=ia,n.addBand=function(e,t){e.fill=yt(e.fill||null),e.dir=Ke(e.dir,-1),t=null==t?S.length:t,S.splice(t,0,e)},n.setBand=function(e,t){Bt(S[e],t)},n.delBand=function(e){null==e?S.length=0:S.splice(e,1)};const ua={focus:!0};function da(e,t,s){let n=v[t];s&&(e=e/ke-(1==n.ori?Ye:Je));let a=De;1==n.ori&&(a=Oe,e=a-e),-1==n.dir&&(e=a-e);let o=n._min,i=o+(n._max-o)*(e/a),l=n.distr;return 3==l?rt(10,i):4==l?((e,t=1)=>et.sinh(e)*t)(i,n.asinh):100==l?n.bwd(i):i}function ha(e,t){je(na,ae,sa.left=e),je(na,ee,sa.width=t)}function fa(e,t){je(na,se,sa.top=e),je(na,te,sa.height=t)}H&&Kt&&Te(he,q,e=>{$._lock||(Jt(e),null!=ca&&ia(null,ua,!0,za.setSeries))}),n.valToIdx=e=>Fe(e,t[0]),n.posToIdx=function(e,s){return Fe(da(e,_,s),t[0],ds,hs)},n.posToVal=da,n.valToPos=(e,t,s)=>0==v[t].ori?o(e,v[t],s?wt:De,s?ct:0):i(e,v[t],s?St:Oe,s?dt:0),n.setCursor=(e,t,s)=>{Nn=e.left,Ln=e.top,wa(null,t,s)};let pa=0==N.ori?ha:fa,ma=1==N.ori?ha:fa;function ga(e,t){if(null!=e&&(e.idxs?e.idxs.forEach((e,t)=>{O[t]=e}):void 0!==e.idx&&O.fill(e.idx),W.idx=O[0]),H&&W.live){for(let e=0;e0||1==a&&!X)&&ya(e,O[e]);!function(){if(H&&W.live)for(let e=2==a?1:0;ehs;la=ft,ra=null;let r=0==N.ori?De:Oe,c=1==N.ori?De:Oe;if(Nn<0||0==us||l){i=$.idx=null;for(let e=0;e0&&e.show){let s=null==b?-10:b==i?o:P(1==a?t[0][b]:t[g][0][b],N,r,0),y=null==k?-10:E(k,1==a?v[e.scale]:v[e.facets[1].scale],c,0);if(Kt&&null!=k){let t=1==N.ori?Nn:Ln,s=st(Vt.dist(n,g,b,y,t));if(s=0?1:-1;o==(k>=0?1:-1)&&(1==o?1==n?k>=a:k<=a:1==n?k<=a:k>=a)&&(la=s,ra=g)}else la=s,ra=g}}if(Wt||Xt){let e,t;0==N.ori?(e=s,t=y):(e=y,t=s);let a,o,i,r,c,w,x=!0,b=Yt.bbox;if(null!=b){x=!1;let e=b(n,g);i=e.left,r=e.top,a=e.width,o=e.height}else i=e,r=t,a=o=Yt.size(n,g);if(w=Yt.fill(n,g),c=Yt.stroke(n,g),Xt)g==ra&&la<=Vt.prox&&(l=i,u=r,d=a,h=o,f=x,p=w,m=c);else{let e=Qt[g];null!=e&&(Zt[g]=i,ts[g]=r,Ie(e,a,o,x),Pe(e,w,c),Ne(e,ot(i),ot(r),De,Oe))}}}}if(Xt){let e=Vt.prox;if(Wt||(null==ca?la<=e:la>e||ra!=ca)){let e=Qt[0];null!=e&&(Zt[0]=l,ts[0]=u,Ie(e,d,h,f),Pe(e,p,m),Ne(e,ot(l),ot(u),De,Oe))}}}if(sa.show&&Qn)if(null!=e){let[t,s]=za.scales,[n,a]=za.match,[o,i]=e.cursor.sync.scales,l=e.cursor.drag;if(ea=l._x,ta=l._y,ea||ta){let l,u,d,h,f,{left:p,top:m,width:g,height:y}=e.select,w=e.scales[o].ori,x=e.posToVal,b=null!=t&&n(t,o),k=null!=s&&a(s,i);b&&ea?(0==w?(l=p,u=g):(l=m,u=y),d=v[t],h=P(x(l,o),d,r,0),f=P(x(l+u,o),d,r,0),pa(it(h,f),st(f-h))):pa(0,r),k&&ta?(1==w?(l=p,u=g):(l=m,u=y),d=v[s],h=E(x(l,i),d,c,0),f=E(x(l+u,i),d,c,0),ma(it(h,f),st(f-h))):ma(0,c)}else _a()}else{let e=st(Cn-Sn),t=st(Tn-_n);if(1==N.ori){let s=e;e=t,t=s}ea=Zn.x&&e>=Zn.dist,ta=Zn.y&&t>=Zn.dist;let s,n,a=Zn.uni;null!=a?ea&&ta&&(ea=e>=a,ta=t>=a,ea||ta||(t>e?ta=!0:ea=!0)):Zn.x&&Zn.y&&(ea||ta)&&(ea=ta=!0),ea&&(0==N.ori?(s=jn,n=Nn):(s=Mn,n=Ln),pa(it(s,n),st(n-s)),ta||ma(0,c)),ta&&(1==N.ori?(s=jn,n=Nn):(s=Mn,n=Ln),ma(it(s,n),st(n-s)),ea||pa(0,r)),ea||ta||(pa(0,0),ma(0,0))}if(Zn._x=ea,Zn._y=ta,null==e){if(o){if(null!=Fa){let[e,t]=za.scales;za.values[0]=null!=e?da(0==N.ori?Nn:Ln,e):null,za.values[1]=null!=t?da(1==N.ori?Nn:Ln,t):null}Wa(re,n,Nn,Ln,De,Oe,i)}if(Kt){let e=o&&za.setSeries,t=Vt.prox;null==ca?la<=t&&ia(ra,ua,!0,e):la>t?ia(null,ua,!0,e):ra!=ca&&ia(ra,ua,!0,e)}}Wt&&(W.idx=i,ga()),!1!==s&&Da("setCursor")}n.setLegend=ga;let xa=null;function ba(e=!1){e?xa=null:(xa=p.getBoundingClientRect(),Da("syncRect",xa))}function ka(e,t,s,n,a,o,i){$._lock||Qn&&null!=e&&0==e.movementX&&0==e.movementY||(va(e,t,s,n,a,o,0,!1,null!=e),null!=e?wa(null,!0,!0):wa(t,!0,!1))}function va(e,t,s,a,o,i,r,c,u){if(null==xa&&ba(!1),Jt(e),null!=e)s=e.clientX-xa.left,a=e.clientY-xa.top;else{if(s<0||a<0)return Nn=-10,void(Ln=-10);let[e,n]=za.scales,r=t.cursor.sync,[c,u]=r.values,[d,h]=r.scales,[f,p]=za.match,m=t.axes[0].side%2==1,g=0==N.ori?De:Oe,y=1==N.ori?De:Oe,w=m?i:o,x=m?o:i,b=m?a:s,k=m?s:a;if(s=null!=d?f(e,d)?l(c,v[e],g,0):-10:g*(b/w),a=null!=h?p(n,h)?l(u,v[n],y,0):-10:y*(k/x),1==N.ori){let e=s;s=a,a=e}}!u||null!=t&&t.cursor.event.type!=re||((s<=1||s>=De-1)&&(s=jt(s,De)),(a<=1||a>=Oe-1)&&(a=jt(a,Oe))),c?(Sn=s,_n=a,[jn,Mn]=$.move(n,s,a)):(Nn=s,Ln=a)}Object.defineProperty(n,"rect",{get:()=>(null==xa&&ba(!1),xa)});const Sa={width:0,height:0,left:0,top:0};function _a(){aa(Sa,!1)}let ja,Ma,Ca,Ta;function Na(e,t,s,a,o,i,l){Qn=!0,ea=ta=Zn._x=Zn._y=!1,va(e,t,s,a,o,i,0,!0,!1),null!=e&&(Te(ue,we,La,!1),Wa(ce,n,jn,Mn,De,Oe,null));let{left:r,top:c,width:u,height:d}=sa;ja=r,Ma=c,Ca=u,Ta=d}function La(e,t,s,a,o,i,l){Qn=Zn._x=Zn._y=!1,va(e,t,s,a,o,i,0,!1,!0);let{left:r,top:c,width:u,height:d}=sa,h=u>0||d>0,f=ja!=r||Ma!=c||Ca!=u||Ta!=d;if(h&&f&&aa(sa),Zn.setScale&&h&&f){let e=r,t=u,s=c,n=d;if(1==N.ori&&(e=c,t=d,s=r,n=u),ea&&oa(_,da(e,_),da(e+t,_)),ta)for(let a in v){let e=v[a];a!=_&&null==e.from&&e.min!=ft&&oa(a,da(s+n,a),da(s,a))}_a()}else $.lock&&($._lock=!$._lock,wa(t,!0,null!=e));null!=e&&(Le(ue,we),Wa(ue,n,Nn,Ln,De,Oe,null))}function Pa(e,t,s,a,o,i,l){$._lock||(Jt(e),Os(),_a(),null!=e&&Wa(fe,n,Nn,Ln,De,Oe,null))}function Ea(){k.forEach(Xn),$t(n.width,n.height,!0)}Re(me,xe,Ea);const Ia={};Ia.mousedown=Na,Ia.mousemove=ka,Ia.mouseup=La,Ia.dblclick=Pa,Ia.setSeries=(e,t,s,a)=>{-1!=(s=(0,za.match[2])(n,t,s))&&ia(s,a,!0,!1)},B&&(Te(ce,p,Na),Te(re,p,ka),Te(de,p,e=>{Jt(e),ba(!1)}),Te(he,p,function(e,t,s,n,a,o,i){if($._lock)return;Jt(e);let l=Qn;if(Qn){let e,t,s=!0,n=!0,a=10;0==N.ori?(e=ea,t=ta):(e=ta,t=ea),e&&t&&(s=Nn<=a||Nn>=De-a,n=Ln<=a||Ln>=Oe-a),e&&s&&(Nn=Nn{e.call(null,n,t,s)})}(e.plugins||[]).forEach(e=>{for(let t in e.hooks)Aa[t]=(Aa[t]||[]).concat(e.hooks[t])});const Ra=(e,t,s)=>s,za=Bt({key:null,setSeries:!1,filters:{pub:kt,sub:kt},scales:[_,w[1]?w[1].scale:null],match:[vt,vt,Ra],values:[null,null]},$.sync);2==za.match.length&&za.match.push(Ra),$.sync=za;const Fa=za.key,Oa=dn(Fa);function Wa(e,t,s,n,a,o,i){za.filters.pub(e,t,s,n,a,o,i)&&Oa.pub(e,t,s,n,a,o,i)}function $a(){Da("init",e,t),Fs(t||e.data,!1),I[_]?Fn(_,I[_]):Os(),Rt=sa.show&&(sa.width>0||sa.height>0),Pt=Wt=!0,$t(e.width,e.height)}return Oa.sub(n),n.pub=function(e,t,s,n,a,o,i){za.filters.sub(e,t,s,n,a,o,i)&&Ia[e](null,t,s,n,a,o,i)},n.destroy=function(){Oa.unsub(n),zn.delete(n),ve.clear(),ze(me,xe,Ea),c.remove(),null==q||q.remove(),Da("destroy")},w.forEach(ns),k.forEach(function(e,t){if(e._show=e.show,e.show){let s=e.side%2,a=v[e.scale];null==a&&(e.scale=s?w[1].scale:_,a=v[e.scale]);let o=a.time;e.size=yt(e.size),e.space=yt(e.space),e.rotate=yt(e.rotate),Dt(e.incrs)&&e.incrs.forEach(e=>{!Nt.has(e)&&Nt.set(e,Lt(e))}),e.incrs=yt(e.incrs||(2==a.distr?is:o?1==y?xs:vs:ls)),e.splits=yt(e.splits||(o&&1==a.distr?R:3==a.distr?qs:4==a.distr?Gs:Us)),e.stroke=yt(e.stroke),e.grid.stroke=yt(e.grid.stroke),e.ticks.stroke=yt(e.ticks.stroke),e.border.stroke=yt(e.border.stroke);let i=e.values;e.values=Dt(i)&&!Dt(i[0])?yt(i):o?Dt(i)?Ms(A,js(i,D)):zt(i)?function(e,t){let s=es(t);return(t,n,a,o,i)=>n.map(t=>s(e(t)))}(A,i):i||z:i||Bs,e.filter=yt(e.filter||(a.distr>=3&&10==a.log?Qs:3==a.distr&&2==a.log?Zs:xt)),e.font=Kn(e.font),e.labelFont=Kn(e.labelFont),e._size=e.size(n,null,t,0),e._space=e._rotate=e._incrs=e._found=e._splits=e._values=null,e._size>0&&(as[t]=!0,e._el=Ce("u-axis",h))}}),s?s instanceof HTMLElement?(s.appendChild(c),$a()):s(n,$a):$a(),n}Qn.assign=Bt,Qn.fmtNum=Ze,Qn.rangeNum=Ve,Qn.rangeLog=Ue,Qn.rangeAsinh=qe,Qn.orient=hn,Qn.pxRatio=ke,Qn.join=function(e,t){if(function(e){let t=e[0][0],s=t.length;for(let n=1;n=n&&null==e[a];)a--;if(a<=n)return!0;const o=lt(1,nt((a-n+1)/t));for(let i=e[n],l=n+o;l<=a;l+=o){const t=e[l];if(null!=t){if(t<=i)return!1;i=t}}return!0}(t[0])||(t=function(e){let t=e[0],s=t.length,n=Array(s);for(let o=0;ot[e]-t[s]);let a=[];for(let o=0;oe-t)],a=n[0].length,o=new Map;for(let i=0;ihn(e,o,(r,c,u,d,h,f,p,m,g,y,w)=>{[i,l]=He(u,i,l);let x=r.pxRound,{left:b,width:k}=e.bbox,v=e=>x(f(e,d,y,m)),S=e=>x(p(e,h,w,g)),_=0==d.ori?vn:Sn;const j={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},M=j.stroke,C=d.dir*(0==d.ori?1:-1);let T=S(u[1==C?i:l]),N=v(c[1==C?i:l]),L=N,P=N;a&&-1==t&&(P=b,_(M,P,T)),_(M,N,T);for(let e=1==C?i:l;e>=i&&e<=l;e+=C){let s=u[e];if(null==s)continue;let n=v(c[e]),a=S(s);1==t?_(M,n,T):_(M,L,a),_(M,n,a),T=a,L=n}let E=L;a&&1==t&&(E=b+k,_(M,E,T));let[I,A]=fn(e,o);if(null!=r.fill||0!=I){let t=j.fill=new Path2D(M),s=S(r.fillTo(e,o,r.min,r.max,I));_(t,E,s),_(t,P,s)}if(!r.spanGaps){let a=[];a.push(...yn(c,u,i,l,C,v,n));let h=r.width*ke/2,f=s||1==t?h:-h,p=s||-1==t?-h:h;a.forEach(e=>{e[0]+=f,e[1]+=p}),j.gaps=a=r.gaps(e,o,i,l,a),j.clip=gn(a,d.ori,m,g,y,w)}return 0!=A&&(j.band=2==A?[mn(e,o,i,l,M,-1),mn(e,o,i,l,M,1)]:mn(e,o,i,l,M,A)),j})},e.bars=function(e){const t=Ke((e=e||Et).size,[.6,ft,1]),s=e.align||0,n=e.gap||0;let a=e.radius;a=null==a?[0,0]:"number"==typeof a?[a,0]:a;const o=yt(a),i=1-t[0],l=Ke(t[1],ft),r=Ke(t[2],1),c=Ke(e.disp,Et),u=Ke(e.each,e=>{}),{fill:d,stroke:h}=c;return(e,t,a,f)=>hn(e,t,(p,m,g,y,w,x,b,k,v,S,_)=>{let j,M,C=p.pxRound,T=s,N=n*ke,L=l*ke,P=r*ke;0==y.ori?[j,M]=o(e,t):[M,j]=o(e,t);const E=y.dir*(0==y.ori?1:-1);let I,A,D,R=0==y.ori?_n:jn,z=0==y.ori?u:(e,t,s,n,a,o,i)=>{u(e,t,s,a,n,i,o)},F=Ke(e.bands,It).find(e=>e.series[0]==t),O=null!=F?F.dir:0,W=p.fillTo(e,t,p.min,p.max,O),$=C(b(W,w,_,v)),H=S,B=C(p.width*ke),U=!1,q=null,G=null,J=null,Y=null;null==d||0!=B&&null==h||(U=!0,q=d.values(e,t,a,f),G=new Map,new Set(q).forEach(e=>{null!=e&&G.set(e,new Path2D)}),B>0&&(J=h.values(e,t,a,f),Y=new Map,new Set(J).forEach(e=>{null!=e&&Y.set(e,new Path2D)})));let{x0:V,size:K}=c;if(null!=V&&null!=K){T=1,m=V.values(e,t,a,f),2==V.unit&&(m=m.map(t=>e.posToVal(k+t*S,y.key,!0)));let s=K.values(e,t,a,f);A=2==K.unit?s[0]*S:x(s[0],y,S,k)-x(0,y,S,k),H=Dn(m,g,x,y,S,k,H),D=H-A+N}else H=Dn(m,g,x,y,S,k,H),D=H*i+N,A=H-D;D<1&&(D=0),B>=A/2&&(B=0),D<5&&(C=wt);let X=D>0;A=C(mt(H-D-(X?B:0),P,L)),I=(0==T?A/2:T==E?0:A)-T*E*((0==T?N/2:0)+(X?B/2:0));const Q={stroke:null,fill:null,clip:null,band:null,gaps:null,flags:0},Z=U?null:new Path2D;let ee=null;if(null!=F)ee=e.data[F.series[1]];else{let{y0:s,y1:n}=c;null!=s&&null!=n&&(g=n.values(e,t,a,f),ee=s.values(e,t,a,f))}let te=j*A,se=M*A;for(let s=1==E?a:f;s>=a&&s<=f;s+=E){let n=g[s];if(null==n)continue;if(null!=ee){let e=ee[s]??0;if(n-e==0)continue;$=b(e,w,_,v)}let a=x(2!=y.distr||null!=c?m[s]:s,y,S,k),o=b(Ke(n,W),w,_,v),i=C(a-I),l=C(lt(o,$)),r=C(it(o,$)),u=l-r;if(null!=n){let a=n<0?se:te,o=n<0?te:se;U?(B>0&&null!=J[s]&&R(Y.get(J[s]),i,r+nt(B/2),A,lt(0,u-B),a,o),null!=q[s]&&R(G.get(q[s]),i,r+nt(B/2),A,lt(0,u-B),a,o)):R(Z,i,r+nt(B/2),A,lt(0,u-B),a,o),z(e,t,s,i-B/2,r,A+B,u)}}return B>0?Q.stroke=U?Y:Z:U||(Q._fill=0==p.width?p._fill:p._stroke??p._fill,Q.width=0),Q.fill=U?G:Z,Q})},e.spline=function(e){return function(e,t){const s=Ke(null==t?void 0:t.alignGaps,0);return(t,n,a,o)=>hn(t,n,(i,l,r,c,u,d,h,f,p,m,g)=>{[a,o]=He(r,a,o);let y,w,x,b=i.pxRound,k=e=>b(d(e,c,m,f)),v=e=>b(h(e,u,g,p));0==c.ori?(y=bn,x=vn,w=Tn):(y=kn,x=Sn,w=Nn);const S=c.dir*(0==c.ori?1:-1);let _=k(l[1==S?a:o]),j=_,M=[],C=[];for(let e=1==S?a:o;e>=a&&e<=o;e+=S)if(null!=r[e]){let t=k(l[e]);M.push(j=t),C.push(v(r[e]))}const T={stroke:e(M,C,y,x,w,b),fill:null,clip:null,band:null,gaps:null,flags:1},N=T.stroke;let[L,P]=fn(t,n);if(null!=i.fill||0!=L){let e=T.fill=new Path2D(N),s=v(i.fillTo(t,n,i.min,i.max,L));x(e,j,s),x(e,_,s)}if(!i.spanGaps){let e=[];e.push(...yn(l,r,a,o,S,k,s)),T.gaps=e=i.gaps(t,n,a,o,e),T.clip=gn(e,c.ori,f,p,m,g)}return 0!=P&&(T.band=2==P?[mn(t,n,a,o,N,-1),mn(t,n,a,o,N,1)]:mn(t,n,a,o,N,P)),T})}(Rn,e)}}const Zn=new Map;function ea(e){var t;if(!e.startsWith("var("))return e;const s=Zn.get(e);if(s)return s;const n=e.match(/var\(([^,)]+)(?:,\s*([^)]+))?\)/);if(!n)return e;const a=n[1].trim(),o=(null==(t=n[2])?void 0:t.trim())||"#888888",i=getComputedStyle(document.documentElement).getPropertyValue(a).trim()||o;return Zn.set(e,i),i}const ta=s.memo(function({timestamps:e,series:t,onHover:a,highlightedKey:o=null,cursorColor:i="rgba(255,255,255,0.5)"}){const l=s.useRef(null),r=s.useRef(null),c=s.useRef(t),u=s.useRef(o),d=s.useRef(a),h=s.useRef(e.length);c.current=t,u.current=o,d.current=a;const f=s.useMemo(()=>{const t=new Array(e.length).fill(1);return[e,t]},[e]),p=s.useMemo(()=>({hooks:{draw:e=>{!function(e,t,s){if(0===t.length)return;const n=e.ctx,a=e.bbox,o=a.left,i=a.top,l=a.width,r=a.height;if(l<=0||r<=0)return;const c=e.data[0],u=c.length;if(0===u)return;const d=c[0],h=c[u-1]-d||1,f=e=>{const t=c[e];return o+(t-d)/h*l},p=e=>i+r*(1-e);for(let m=0;m=0;t--){const e=f(t),s=p(o[t]);if(t===u-1)n.lineTo(e,s);else{const a=f(t+1);n.lineTo(a,s),n.lineTo(e,s)}}n.closePath(),n.fill(),n.restore()}}(e,c.current,u.current),function(e){const t=e.ctx,{left:s,top:n,width:a,height:o}=e.bbox;t.save(),t.strokeStyle="#1a3a4a",t.lineWidth=1,t.setLineDash([4,4]);for(const i of[.2,.4,.6,.8]){const e=n+o*(1-i);t.beginPath(),t.moveTo(s,e),t.lineTo(s+a,e),t.stroke()}t.restore(),t.save(),t.font='bold 10px "JetBrains Mono", monospace',t.fillStyle="#1a3a4a",t.textBaseline="bottom";for(const i of[20,40,60,80]){const e=n+o*(1-i/100);t.fillText(`${i}%`,s+4,e-4)}t.restore()}(e)}}}),[]),m=s.useMemo(()=>({width:400,height:200,padding:[0,0,0,0],cursor:{show:!0,x:!0,y:!1,drag:{x:!1,y:!1},points:{show:!1}},scales:{x:{time:!0},y:{range:[0,1]}},axes:[{show:!1},{show:!1}],series:[{},{show:!1}],hooks:{setCursor:[e=>{var t,s;const n=e.cursor.idx;if(null!=n&&n>=0){const s=e.data[0][n];null==(t=d.current)||t.call(d,n,s)}else null==(s=d.current)||s.call(d,null,null)}]},plugins:[p]}),[p]);s.useEffect(()=>{const t=l.current;if(!t||0===e.length)return;const s=h.current,n=e.length,a=Math.abs(n-s);if(!(!r.current||a>100||s>0&&a/s>.1)&&r.current)return r.current.setData(f),void(h.current=n);r.current&&r.current.destroy();const o=t.getBoundingClientRect(),i=Math.floor(o.width)||400,c=Math.floor(o.height)||200,u=new Qn({...m,width:i,height:c},f,t);return r.current=u,h.current=n,()=>{u.destroy(),r.current=null}},[m,f,e.length]),s.useEffect(()=>{const e=l.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!r.current)return;const{width:s,height:n}=t.contentRect;s>0&&n>0&&r.current.setSize({width:Math.floor(s),height:Math.floor(n)})});return t.observe(e),()=>{t.disconnect()}},[]),s.useEffect(()=>{r.current&&r.current.redraw()},[o,t]);const g=s.useCallback(()=>{null==a||a(null,null)},[a]);return 0===e.length?n.jsx("div",{className:"h-full flex items-center justify-center text-text-muted",children:"No data available"}):n.jsx("div",{ref:l,className:"w-full h-full rounded-2xl overflow-hidden",onMouseLeave:g})}),sa=s.createContext(null);function na({children:e}){const[t,a]=s.useState(()=>function(){if("undefined"==typeof window)return R;try{let t=localStorage.getItem(z),s=localStorage.getItem(F);const n=localStorage.getItem(O);if(!t&&!s){const e=localStorage.getItem(W);if(e){const n=D.find(t=>t.id===e);n&&(t=n.colorScheme,s=n.backgroundImage,localStorage.setItem(z,t),localStorage.setItem(F,s),localStorage.removeItem(W))}}const a="string"==typeof(e=t)&&I.some(t=>t.id===e)?t:R.colorScheme,o=s||R.backgroundImage;let i=R.brightness;if(n){const e=parseInt(n,10);!isNaN(e)&&e>=0&&e<=100&&(i=e)}return{colorScheme:a,backgroundImage:o,brightness:i}}catch{return R}var e}());s.useEffect(()=>{(function(e){const t=(s=e,I.find(e=>e.id===s)??I[0]);var s;t.dataTheme?document.documentElement.setAttribute("data-theme",t.dataTheme):document.documentElement.removeAttribute("data-theme")})(t.colorScheme),Zn.clear(),requestAnimationFrame(()=>{!function(){if("undefined"==typeof window)return;for(const t of U){const e=K(`--palette-${t}-bright`),s=K(`--palette-${t}`),n=e||s;if(!n)continue;const a=V(n);for(const o of B)X(`--palette-${t}-${o}`,a[o])}const e=K("--palette-bg-4");if(e){const t=V(e);for(const e of B)X(`--palette-neutral-${e}`,t[e])}}()})},[t.colorScheme]),s.useEffect(()=>{!function(e){if("undefined"!=typeof window)try{localStorage.setItem(z,e.colorScheme),localStorage.setItem(F,e.backgroundImage),localStorage.setItem(O,String(e.brightness))}catch{}}(t)},[t]),s.useEffect(()=>{A.forEach(e=>{(new Image).src=e.src})},[]);const o=s.useCallback(e=>{a(t=>({...t,colorScheme:e}))},[]),i=s.useCallback(e=>{const t=A.find(t=>t.src===e);a(s=>({...s,backgroundImage:e,brightness:(null==t?void 0:t.suggestedBrightness)??s.brightness}))},[]),l=s.useCallback(e=>{const t=Math.max(0,Math.min(100,Math.round(e)));a(e=>({...e,brightness:t}))},[]),r=s.useCallback(e=>{const t=D.find(t=>t.id===e);t&&a(e=>({...e,colorScheme:t.colorScheme,backgroundImage:t.backgroundImage}))},[]),c=s.useMemo(()=>({theme:t,setColorScheme:o,setBackgroundImage:i,setBrightness:l,setThemePreset:r}),[t,o,i,l,r]);return n.jsx(sa.Provider,{value:c,children:e})}function aa(){const e=s.useContext(sa);if(!e)throw new Error("useTheme must be used within a ThemeProvider. Wrap your app with in App.tsx.");return e}const oa="0.9.134",ia="/assets/WCM_Waves-RN-_ocPH.gif",la=s.memo(function({height:e=16,className:t=""}){const s={fontFamily:"'Space Mono', monospace",fontSize:`${"string"==typeof e?parseFloat(e):e}px`,fontWeight:400,lineHeight:1,letterSpacing:"-0.02em",whiteSpace:"nowrap"},a="rgba(255, 255, 255, 0.7)",o="#FFFFFF";return n.jsxs("span",{className:t,style:s,role:"img","aria-label":"pyMC:Console",children:[n.jsx("span",{style:{color:a},children:"py"}),n.jsx("span",{style:{color:o},children:"MC"}),n.jsx("span",{style:{color:a},children:":"}),n.jsx("span",{style:{color:o},children:"Console"})]})}),ra={0:"REQ",1:"RESPONSE",2:"TXT_MSG",3:"ACK",4:"ADVERT",5:"GRP_TXT",6:"GRP_DATA",7:"ANON_REQ",8:"PATH",9:"TRACE",10:"MULTIPART",15:"RAW_CUSTOM"},ca={0:"T_FLOOD",1:"FLOOD",2:"DIRECT",3:"T_DIRECT"},ua={REQ:0,RESPONSE:1,TXT_MSG:2,ACK:3,ADVERT:4,GRP_TXT:5,GRP_DATA:6,ANON_REQ:7,PATH:8,TRACE:9,MULTIPART:10,RAW_CUSTOM:15};function da(e){return 1===e||0===e}const ha={spreadingFactor:7,bandwidthHz:125e3,codingRate:5,preambleLength:8,crcEnabled:!0,explicitHeader:!0};function fa(e){if(e.raw_packet){const t=e.raw_packet;if(/^[0-9a-fA-F]+$/.test(t)&&t.length%2==0)return t.length/2;if(/^[A-Za-z0-9+/=]+$/.test(t)){const e=(t.match(/=+$/)||[""])[0].length;return Math.floor(3*t.length/4)-e}return t.length}if(e.length&&e.length>0)return e.length;if(e.payload_length&&e.payload_length>0)return e.payload_length;if(e.payload){const t=e.payload;return/^[0-9a-fA-F]+$/.test(t)&&t.length%2==0?t.length/2:t.length}return 32}function pa(e,t={}){const s=t.spreadingFactor??ha.spreadingFactor,n=t.bandwidthHz??ha.bandwidthHz,a=t.codingRate??ha.codingRate,o=t.preambleLength??ha.preambleLength??8,i=t.crcEnabled??ha.crcEnabled?1:0,l=t.explicitHeader??ha.explicitHeader?0:1,r=s>=11&&n<=125e3?1:0,c=n/1e3,u=Math.pow(2,s)/c,d=(o+4.25)*u,h=Math.max(8*e-4*s+28+16*i-20*l,0),f=4*(s-2*r);return d+(8+Math.ceil(h/f)*a)*u}const ma="pymc_jwt_token",ga="pymc_client_id";function ya(){let e=localStorage.getItem(ga);return e||(e=`${Date.now()}-${Math.random().toString(36).substring(2,15)}`,localStorage.setItem(ga,e)),e}function wa(){return localStorage.getItem(ma)}function xa(e){localStorage.setItem(ma,e)}function ba(){localStorage.removeItem(ma)}function ka(){return!!wa()&&!Sa()}function va(e){try{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),s=decodeURIComponent(atob(t).split("").map(e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)).join(""));return JSON.parse(s)}catch{return null}}function Sa(){const e=wa();if(!e)return!0;const t=va(e);return!t||!t.exp||Date.now()>=1e3*t.exp-6e4}function _a(){const e=wa();if(!e)return!1;const t=va(e);if(!t||!t.exp)return!1;const s=1e3*t.exp-Date.now();return s>0&&s<18e4}function ja(){const e=wa();if(!e)return null;const t=va(e);return t&&t.sub?t.sub:null}async function Ma(e,t){try{const s=await fetch("/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t,client_id:ya()})}),n=s.headers.get("content-type");if(!n||!n.includes("application/json"))return{success:!1,error:`Server error: ${s.status}`};const a=await s.json();return a.success&&a.token?(xa(a.token),{success:!0}):{success:!1,error:a.error||"Login failed"}}catch(s){return{success:!1,error:"Connection error. Please try again."}}}async function Ca(){const e=wa();if(!e)return!1;try{const t=await fetch("/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({client_id:ya()})});if(!t.ok)return!1;const s=await t.json();return!(!s.success||!s.token||(xa(s.token),0))}catch(t){return!1}}function Ta(){ba()}const Na=Object.freeze(Object.defineProperty({__proto__:null,clearToken:ba,getClientId:ya,getToken:wa,getUsername:ja,isAuthenticated:ka,isTokenExpired:Sa,login:Ma,logout:Ta,parseJWT:va,refreshToken:Ca,setToken:xa,shouldRefreshToken:_a},Symbol.toStringTag,{value:"Module"})),La=new Map;let Pa=!1;async function Ea(e,t,s=!1){const n=function(e,t){return(null==t?void 0:t.method)&&"GET"!==t.method?"":e}(e,t);if(n){const e=La.get(n);if(e)return e}const a=`${e}`;!s&&_a()&&await Ca();const o=wa(),i=o?{Authorization:`Bearer ${o}`}:{};if(null==t?void 0:t.headers){const e=t.headers;e instanceof Headers?e.forEach((e,t)=>{i[t]=e}):Array.isArray(e)?e.forEach(([e,t])=>{i[e]=t}):Object.assign(i,e)}(null==t?void 0:t.body)&&(i["Content-Type"]="application/json");const l=(async()=>{const n=await fetch(a,{...t,headers:i});if(401===n.status){if(!s&&!Pa&&await Ca())return Ea(e,t,!0);throw Pa||(Pa=!0,ba(),window.location.href="/login"),new Error("Session expired. Please log in again.")}if(!n.ok)throw new Error(`API error: ${n.status} ${n.statusText}`);return n.json()})();return n&&(La.set(n,l),l.finally(()=>{La.delete(n)})),l}function Ia(e){return e&&"chat node"===e.toLowerCase()?"Companion":e}async function Aa(){return function(e){if(e.neighbors)for(const t of Object.values(e.neighbors))t.contact_type=Ia(t.contact_type);return e}(await Ea("/api/stats"))}async function Da(){return Ea("/api/logs")}async function Ra(e=24){return Ea(`/api/packet_type_graph_data?hours=${e}`)}async function za(e=24){return Ea(`/api/noise_floor_history?hours=${e}`)}async function Fa(){return Ea("/api/hardware_stats")}async function Oa(){return Ea("/api/send_advert",{method:"POST",body:"{}"})}async function Wa(e){return Ea("/api/set_mode",{method:"POST",body:JSON.stringify({mode:e})})}async function $a(e){return Ea("/api/set_duty_cycle",{method:"POST",body:JSON.stringify({enabled:e})})}const Ha=new Map;function Ba(e=!1){if(e)Ha.clear();else for(const[t]of Ha)parseInt(t.split("-")[0],10)<=60&&Ha.delete(t)}function Ua(e,t,s,n){const a=60*e/t,o=Math.floor(Date.now()/1e3),i=Math.floor(o/a)*a,l=i-60*e,r=s.filter(e=>e.timestamp>=l&&e.timestamp<=i),c=n?function(e){var t;const s=null==(t=null==e?void 0:e.config)?void 0:t.radio;return{spreadingFactor:(null==s?void 0:s.spreading_factor)??ha.spreadingFactor,bandwidthHz:(null==s?void 0:s.bandwidth)??ha.bandwidthHz,codingRate:(null==s?void 0:s.coding_rate)??ha.codingRate,preambleLength:(null==s?void 0:s.preamble_length)??ha.preambleLength,crcEnabled:!0,explicitHeader:!0}}(n):ha,u=function(e,t,s,n,a){const o=new Array(t),i=new Array(t),l=new Array(t),r=new Array(t),c=new Array(t);for(let d=0;d=t)continue;const f=pa(fa(u),a),p=u.packet_origin;"tx_local"===p?(i[h].count++,i[h].airtime_ms+=f):"tx_forward"===p||u.transmitted?(l[h].count++,l[h].airtime_ms+=f):u.drop_reason&&(r[h].count++,r[h].airtime_ms+=f),"tx_local"!==p&&(o[h].count++,o[h].airtime_ms+=f,c[h].snr+=u.snr||0,c[h].rssi+=u.rssi||0,c[h].count++)}for(let d=0;d0&&(o[d].avg_snr=c[d].snr/c[d].count,o[d].avg_rssi=c[d].rssi/c[d].count);return{received:o,transmitted:i,forwarded:l,dropped:r}}(r,t,l,a,c);return{time_range_minutes:e,bucket_count:t,bucket_duration_seconds:a,start_time:l,end_time:i,...u}}async function qa(e){return Ea("/api/update_radio_config",{method:"POST",body:JSON.stringify(e)})}async function Ga(e){return Ea("/api/set_log_level",{method:"POST",body:JSON.stringify({level:e})})}async function Ja(){return Ea("/api/transport_keys")}async function Ya(e){return Ea("/api/transport_keys",{method:"POST",body:JSON.stringify(e)})}async function Va(e,t){return Ea(`/api/transport_key/${e}`,{method:"PUT",body:JSON.stringify(t)})}async function Ka(e){return Ea(`/api/transport_key/${e}`,{method:"DELETE"})}async function Xa(e){return Ea("/api/global_flood_policy",{method:"POST",body:JSON.stringify({global_flood_allow:e})})}async function Qa(e,t=10){return Ea("/api/ping_neighbor",{method:"POST",body:JSON.stringify({target_id:e,timeout:t})})}async function Za(e){return Ea("/api/update_web_config",{method:"POST",body:JSON.stringify(e)})}async function eo(){return Ea("/api/check_pymc_console")}async function to(){return Ea("/api/restart_service",{method:"POST",body:"{}"})}async function so(){return Ea("/auth/tokens")}async function no(e){return Ea("/auth/tokens",{method:"POST",body:JSON.stringify({name:e})})}async function ao(e){return Ea(`/auth/tokens/${e}`,{method:"DELETE"})}const oo="pymc-packet-cache",io="pymc-packet-cache-meta",lo=36e5,ro=75e3,co=75e3,uo=5e3,ho=75e3,fo=new class{constructor(){t(this,"packets",new Map),t(this,"sortedPackets",[]),t(this,"sortedDirty",!0),t(this,"meta",{oldestTimestamp:0,newestTimestamp:0,lastUpdated:0,packetCount:0,backgroundLoadComplete:!1,topologyLoadComplete:!1}),t(this,"isLoading",!1),t(this,"isBackgroundLoading",!1),t(this,"isTopologyLoading",!1),t(this,"listeners",new Set),t(this,"loadProgress",null),t(this,"statusMessage",""),this.loadFromStorage()}subscribe(e){return this.listeners.add(e),e(this.getState()),()=>this.listeners.delete(e)}getState(){return{isLoading:this.isLoading,isBackgroundLoading:this.isBackgroundLoading,isTopologyLoading:this.isTopologyLoading,backgroundLoadComplete:this.meta.backgroundLoadComplete,topologyLoadComplete:this.meta.topologyLoadComplete,packetCount:this.packets.size,statusMessage:this.statusMessage,loadProgress:this.loadProgress}}getPackets(){return this.sortedDirty&&(this.sortedPackets=Array.from(this.packets.values()).sort((e,t)=>(e.timestamp??0)-(t.timestamp??0)),this.sortedDirty=!1),this.sortedPackets}isStale(){return 0===this.packets.size||Date.now()-this.meta.lastUpdated>lo}isHeavyLoadInProgress(){return this.isBackgroundLoading||this.isTopologyLoading}async initialLoad(e){if(this.isStale()&&this.packets.size>0&&this.clear(),this.meta.backgroundLoadComplete&&this.packets.size>0)return this.getPackets();this.isLoading=!0,this.loadProgress={loaded:0,target:ro,percent:0},this.statusMessage="Loading packets...",this.notifyListeners();try{let t;this.packets.size>0&&(this.packets.clear(),this.sortedPackets=[],this.sortedDirty=!0,this.meta.oldestTimestamp=0,this.meta.newestTimestamp=0);let s=0,n=0,a=0;const o=Math.ceil(15);for(let i=0;i0?Math.min(99,Math.round(this.packets.size/ro*100)):0;this.statusMessage="Loading packets...",this.loadProgress={loaded:this.packets.size,target:ro,percent:l},this.notifyListeners();const r=await this.fetchChunkWithRetry(t,uo,i,o);if(null!==r){if(a=0,!(r.success&&r.data&&r.data.length>0))break;{const a=this.packets.size;this.mergePackets(r.data);const o=this.packets.size-a;s+=o;const i=Math.min(...r.data.map(e=>e.timestamp??1/0));if(i!==1/0&&(void 0===t||i=2)break}else n=0;if(r.data.length=ho)break}i=5){this.statusMessage="Connection issues, loaded partial data",this.notifyListeners();break}await this.delay(2e3)}}this.enforceMemoryCap(),this.meta.backgroundLoadComplete=!0,this.loadProgress={loaded:this.packets.size,target:this.packets.size,percent:100},this.notifyListeners(),this.saveToStorage()}catch(t){this.statusMessage="Load failed"}finally{this.isLoading=!1,this.statusMessage="",this.loadProgress=null,this.notifyListeners()}return this.getPackets()}async quickLoad(){return this.initialLoad()}async backgroundLoad(){await this.initialLoad()}async topologyLoad(){if(!this.meta.topologyLoadComplete&&!this.isTopologyLoading)return this.doTopologyLoad()}async forceTopologyLoad(){if(!this.isTopologyLoading)return this.meta.topologyLoadComplete=!1,this.doTopologyLoad()}async forceDeepLoad(){return this.forceTopologyLoad()}async doTopologyLoad(){this.isTopologyLoading=!0,this.statusMessage="Fetching topology data...",this.loadProgress={loaded:0,target:co,percent:0},this.notifyListeners();try{let e,t=0,s=0,n=0;const a=Math.ceil(15);for(let o=0;o0?Math.min(99,Math.round(this.packets.size/co*100)):0;this.statusMessage=`Loading ${this.packets.size.toLocaleString()} packets...`,this.loadProgress={loaded:this.packets.size,target:co,percent:i},this.notifyListeners();const l=await this.fetchChunkWithRetry(e,uo,o,a);if(null!==l){if(n=0,!(l.success&&l.data&&l.data.length>0))break;{const n=this.packets.size;this.mergePackets(l.data);const a=this.packets.size-n;t+=a;const o=Math.min(...l.data.map(e=>e.timestamp??1/0));if(o!==1/0&&(void 0===e||o=2)break}else s=0;if(l.data.length=ho)break}o=5){this.statusMessage="Connection issues, loaded partial data",this.notifyListeners();break}await this.delay(2e3)}}this.statusMessage=`Processing ${this.packets.size.toLocaleString()} packets...`,this.loadProgress={loaded:this.packets.size,target:this.packets.size,percent:100},this.notifyListeners(),this.enforceMemoryCap(),this.meta.topologyLoadComplete=!0,this.saveToStorage()}catch(e){this.statusMessage="Topology load failed"}finally{this.isTopologyLoading=!1,this.statusMessage="",this.loadProgress=null,this.notifyListeners()}}async poll(){try{const e=await this.fetchRecentPackets(100);if(e.success&&e.data){const t=this.packets.size;this.mergePackets(e.data),this.packets.size>t&&(this.saveToStorage(),this.notifyListeners())}}catch(e){}return this.getPackets()}clear(){this.packets.clear(),this.sortedPackets=[],this.sortedDirty=!0,this.meta={oldestTimestamp:0,newestTimestamp:0,lastUpdated:0,packetCount:0,backgroundLoadComplete:!1,topologyLoadComplete:!1},this.clearStorage(),this.notifyListeners()}mergePacketsDirectly(e){const t=this.packets.size;this.mergePackets(e);const s=this.packets.size-t;return s>0&&(this.enforceMemoryCap(),this.saveToStorage(),this.notifyListeners()),s}mergePackets(e){let t=!1;for(const s of e){const e=s.packet_hash;if(e&&!this.packets.has(e)){this.packets.set(e,s),t=!0;const n=s.timestamp??0;(0===this.meta.oldestTimestamp||nthis.meta.newestTimestamp&&(this.meta.newestTimestamp=n)}}t&&(this.sortedDirty=!0),this.meta.lastUpdated=Date.now(),this.meta.packetCount=this.packets.size}notifyListeners(){const e=this.getState();for(const t of this.listeners)t(e)}waitForIdle(){return new Promise(e=>{"requestIdleCallback"in window?window.requestIdleCallback(()=>e(),{timeout:2e3}):setTimeout(e,100)})}delay(e){return new Promise(t=>setTimeout(t,e))}async fetchChunkWithRetry(e,t,s,n){for(let o=0;o<3;o++)try{return await this.fetchFilteredPackets(e,t)}catch(a){const e=2===o,t=1e3*Math.pow(2,o);a instanceof Error&&a.name,e||(this.statusMessage=`Retry in ${Math.round(t/1e3)}s...`,this.notifyListeners(),await this.delay(t))}return null}enforceMemoryCap(){if(this.packets.size<=ho)return;const e=this.getPackets(),t=e.length-ho;for(let s=0;st&&(this.meta.oldestTimestamp=e[t].timestamp??0)}loadFromStorage(){if("undefined"!=typeof window)try{const e=localStorage.getItem(io);e&&(this.meta=JSON.parse(e));const t=localStorage.getItem(oo);if(t){const e=JSON.parse(t);for(const t of e)t.packet_hash&&this.packets.set(t.packet_hash,t)}if(this.meta.lastUpdated>0&&Date.now()-this.meta.lastUpdated>lo)return void this.clear();this.meta.backgroundLoadComplete=!1;const s=37500;this.meta.topologyLoadComplete&&this.packets.size3e3?e.slice(-3e3):e;localStorage.setItem(oo,JSON.stringify(t))}catch(e){if(e instanceof DOMException&&"QuotaExceededError"===e.name)try{localStorage.removeItem(oo),localStorage.setItem(io,JSON.stringify(this.meta))}catch{}}}clearStorage(){if("undefined"!=typeof window)try{localStorage.removeItem(oo),localStorage.removeItem(io)}catch(e){}}async fetchRecentPackets(e=1e3,t=!1){const s=`/api/recent_packets?limit=${e}`,n=localStorage.getItem("pymc_jwt_token"),a={};n&&(a.Authorization=`Bearer ${n}`);const o=await fetch(s,{headers:a});if(401===o.status&&!t){const{refreshToken:t}=await P(async()=>{const{refreshToken:e}=await Promise.resolve().then(()=>Na);return{refreshToken:e}},void 0);if(await t())return this.fetchRecentPackets(e,!0)}if(!o.ok)throw new Error(`API error: ${o.status}`);return o.json()}async fetchFilteredPackets(e,t=5e3,s=!1){const n=new URLSearchParams;n.set("limit",String(t)),void 0!==e&&n.set("end_timestamp",String(e-.001));const a=`/api/filtered_packets?${n}`,o=localStorage.getItem("pymc_jwt_token"),i={};o&&(i.Authorization=`Bearer ${o}`);const l=new AbortController,r=setTimeout(()=>l.abort(),3e4);try{const n=await fetch(a,{headers:i,signal:l.signal});if(401===n.status&&!s){const{refreshToken:s}=await P(async()=>{const{refreshToken:e}=await Promise.resolve().then(()=>Na);return{refreshToken:e}},void 0);if(await s())return this.fetchFilteredPackets(e,t,!0)}if(!n.ok)throw new Error(`API error: ${n.status}`);return n.json()}finally{clearTimeout(r)}}};function po(e){return{paths:e.paths,byEndpoints:new Map(e.byEndpointsEntries),canonicalPaths:new Map(e.canonicalPathsEntries),totalObservations:e.totalObservations,uniquePathCount:e.uniquePathCount}}function mo(){return{paths:[],byEndpoints:new Map,canonicalPaths:new Map,totalObservations:0,uniquePathCount:0}}const go=new class{constructor(){t(this,"worker",null),t(this,"listeners",new Set),t(this,"currentTopology",{edges:[],validatedEdges:[],weakEdges:[],certainEdges:[],uncertainEdges:[],edgeMap:new Map,maxPacketCount:0,maxCertainCount:0,neighborAffinity:new Map,fullAffinity:new Map,localPrefix:null,centrality:new Map,hubNodes:[],gatewayNodes:[],loops:[],loopEdgeKeys:new Set,txDelayRecommendations:new Map,pathRegistry:mo(),edgeBetweenness:new Map,backboneEdges:[],nodeMobility:new Map,mobileNodes:[],pathHealth:[],lastHopNeighbors:[],disambiguationStats:{totalPrefixes:0,unambiguousPrefixes:0,collisionPrefixes:0,collisionRate:0,avgConfidence:0,lowConfidencePrefixes:[],highCollisionPrefixes:[],totalResolutions:0},discoveredNodes:[],viterbiStats:{totalPaths:0,pathsWithGhosts:0,avgPathCost:0,avgPathConfidence:0,observationOverrideCount:0,tracePacketsProcessed:0,pathPacketsProcessed:0,distantEdgesDiscovered:0,duplicateGroupsFound:0,duplicatePathsUnique:0,echolocationEdgesInferred:0}}),t(this,"isComputing",!1),t(this,"pendingRequest",null),t(this,"debounceTimer",null),t(this,"debounceMs",100),this.initWorker()}initWorker(){if("undefined"!=typeof window)try{this.worker=new Worker(new URL("/assets/topology.worker-BHEhB0-W.js",import.meta.url),{type:"module"}),this.worker.onmessage=e=>{this.handleWorkerMessage(e.data)},this.worker.onerror=e=>{}}catch(e){}}handleWorkerMessage(e){if(this.isComputing=!1,"error"!==e.type){var t;this.currentTopology={edges:(t=e.payload).edges??[],validatedEdges:t.validatedEdges??[],weakEdges:t.weakEdges??[],certainEdges:t.certainEdges??[],uncertainEdges:t.uncertainEdges??[],maxPacketCount:t.maxPacketCount??0,maxCertainCount:t.maxCertainCount??0,localPrefix:t.localPrefix??null,hubNodes:t.hubNodes??[],gatewayNodes:t.gatewayNodes??[],edgeMap:new Map(t.edgeMapEntries??[]),neighborAffinity:new Map(t.neighborAffinityEntries??[]),fullAffinity:new Map(t.fullAffinityEntries??[]),centrality:new Map(t.centralityEntries??[]),loops:t.loops??[],loopEdgeKeys:new Set(t.loopEdgeKeyEntries??[]),txDelayRecommendations:new Map(t.txDelayRecommendationEntries??[]),pathRegistry:t.pathRegistry?po(t.pathRegistry):mo(),edgeBetweenness:new Map(t.edgeBetweennessEntries??[]),backboneEdges:t.backboneEdges??[],nodeMobility:new Map(t.nodeMobilityEntries??[]),mobileNodes:t.mobileNodes??[],pathHealth:t.pathHealth??[],lastHopNeighbors:t.lastHopNeighbors??[],disambiguationStats:t.disambiguationStats??{totalPrefixes:0,unambiguousPrefixes:0,collisionPrefixes:0,collisionRate:0,avgConfidence:0,lowConfidencePrefixes:[],highCollisionPrefixes:[],totalResolutions:0},discoveredNodes:t.discoveredNodes??[],viterbiStats:t.viterbiStats??{totalPaths:0,pathsWithGhosts:0,avgPathCost:0,avgPathConfidence:0,observationOverrideCount:0,tracePacketsProcessed:0,pathPacketsProcessed:0,distantEdgesDiscovered:0,duplicateGroupsFound:0,duplicatePathsUnique:0,echolocationEdgesInferred:0}};for(const t of this.listeners)try{t(this.currentTopology,e.computeTimeMs)}catch(s){}if(this.pendingRequest){const e=this.pendingRequest;this.pendingRequest=null,this.computeInternal(e)}}}computeInternal(e){if(!this.worker)return;this.isComputing=!0;const t={type:"compute",payload:e};this.worker.postMessage(t)}compute(e,t,s,n,a,o,i,l){const r={packets:e,neighbors:t,localHash:s,localLat:n,localLon:a,airtimeMs:o,zeroHopNeighbors:i,terrainGrid:l,enableTerrainAware:void 0!==l};this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.isComputing?this.pendingRequest=r:this.computeInternal(r)},this.debounceMs)}subscribe(e){return this.listeners.add(e),this.currentTopology.edges.length>0&&e(this.currentTopology,0),()=>{this.listeners.delete(e)}}getTopology(){return this.currentTopology}isWorking(){return this.isComputing}terminate(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.worker&&(this.worker.terminate(),this.worker=null),this.listeners.clear()}},yo=new class{constructor(){t(this,"worker",null),t(this,"listeners",new Set),t(this,"sparklines",new Map),t(this,"isComputing",!1),t(this,"lastComputeTimeMs",0),t(this,"pendingRequest",null),t(this,"debounceTimer",null),t(this,"debounceMs",150),this.initWorker()}initWorker(){if("undefined"!=typeof window)try{this.worker=new Worker(new URL("/assets/sparkline.worker-CmKhBAy5.js",import.meta.url),{type:"module"}),this.worker.onmessage=e=>{this.handleWorkerMessage(e.data)},this.worker.onerror=e=>{this.isComputing=!1,this.notifyListeners()}}catch(e){}}handleWorkerMessage(e){if(this.isComputing=!1,"error"!==e.type){if(this.sparklines=new Map(e.payload.sparklineEntries),this.lastComputeTimeMs=e.computeTimeMs,this.notifyListeners(),this.pendingRequest){const e=this.pendingRequest;this.pendingRequest=null,this.computeInternal(e.packets,e.nodeHashes)}}else this.notifyListeners()}computeInternal(e,t){if(!this.worker)return;if(0===t.length)return this.isComputing=!1,void this.notifyListeners();this.isComputing=!0,this.notifyListeners();const s={type:"compute",payload:{packets:e,nodeHashes:t}};this.worker.postMessage(s)}notifyListeners(){for(const t of this.listeners)try{t(this.sparklines,this.isComputing)}catch(e){}}compute(e,t){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.isComputing?this.pendingRequest={packets:e,nodeHashes:t}:this.computeInternal(e,t)},this.debounceMs)}getSparkline(e){return this.sparklines.get(e)??[]}getAllSparklines(){return this.sparklines}hasSparkline(e){return this.sparklines.has(e)}isWorking(){return this.isComputing}getLastComputeTime(){return this.lastComputeTimeMs}subscribe(e){return this.listeners.add(e),e(this.sparklines,this.isComputing),()=>{this.listeners.delete(e)}}clear(){this.sparklines.clear(),this.notifyListeners()}terminate(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.worker&&(this.worker.terminate(),this.worker=null),this.listeners.clear()}},wo=new class{constructor(){t(this,"worker",null),t(this,"isInitialized",!1),t(this,"statsListeners",new Set),t(this,"packetsListeners",new Set),t(this,"errorListeners",new Set),t(this,"readyResolve",null),t(this,"readyPromise",null)}async init(e){if(!this.isInitialized&&"undefined"!=typeof window){this.readyPromise=new Promise(e=>{this.readyResolve=e});try{this.worker=new Worker(new URL("/assets/polling.worker-DFp1Qyu0.js",import.meta.url),{type:"module"}),this.worker.onmessage=this.handleMessage.bind(this),this.worker.onerror=e=>{};const t={type:"init",config:{apiBaseUrl:e.apiBaseUrl,authToken:e.authToken,statsIntervalMs:e.statsIntervalMs??3e3,packetsIntervalMs:e.packetsIntervalMs??3e3}};this.worker.postMessage(t),this.isInitialized=!0,await this.readyPromise}catch(t){throw t}}}handleMessage(e){var t;const s=e.data;switch(s.type){case"ready":null==(t=this.readyResolve)||t.call(this);break;case"stats":for(const e of this.statsListeners)try{e(s.data,s.timestamp)}catch(n){}break;case"packets":for(const e of this.packetsListeners)try{e(s.newPackets,s.totalCount,s.newestTimestamp)}catch(n){}break;case"packetsReset":for(const e of this.packetsListeners)try{e([],0,s.newestTimestamp)}catch(n){}break;case"error":for(const e of this.errorListeners)try{e(s.source,s.error)}catch(n){}}}onStats(e){return this.statsListeners.add(e),()=>this.statsListeners.delete(e)}onPackets(e){return this.packetsListeners.add(e),()=>this.packetsListeners.delete(e)}onError(e){return this.errorListeners.add(e),()=>this.errorListeners.delete(e)}setAuthToken(e){if(!this.worker)return;const t={type:"setAuth",token:e};this.worker.postMessage(t)}setLiveMode(e){if(!this.worker)return;const t={type:"setLiveMode",enabled:e};this.worker.postMessage(t)}forceRefresh(){this.worker&&this.worker.postMessage({type:"forceRefresh"})}clearCache(){this.worker&&this.worker.postMessage({type:"clearCache"})}terminate(){if(this.worker){const e={type:"stop"};this.worker.postMessage(e),this.worker.terminate(),this.worker=null}this.isInitialized=!1,this.statsListeners.clear(),this.packetsListeners.clear(),this.errorListeners.clear()}isReady(){return this.isInitialized}},xo=.05,bo=1e3,ko="terrarium";function vo(e,t,s){try{return e.queryTerrainElevation({lng:t,lat:s})??0}catch{return 0}}const So=a((e,t)=>({terrainGrid:null,isLoading:!1,error:null,lastLoadedAt:null,cachedBounds:null,terrainDisambiguationEnabled:!0,loadTerrain:async(s,n)=>{const a=t();if(!(a.isLoading||(o=a.cachedBounds,i=s,o&&o.minLat<=i.minLat&&o.maxLat>=i.maxLat&&o.minLng<=i.minLng&&o.maxLng>=i.maxLng))){var o,i;e({isLoading:!0,error:null});try{n.getTerrain()||(n.getSource(ko)||(n.addSource(ko,{type:"raster-dem",tiles:["https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png"],encoding:"terrarium",tileSize:256}),await new Promise((e,t)=>{const s=setTimeout(()=>t(new Error("Terrain source load timeout")),1e4),a=t=>{t.sourceId===ko&&t.isSourceLoaded&&(clearTimeout(s),n.off("sourcedata",a),e())};n.on("sourcedata",a)})),n.setTerrain({source:ko}),await new Promise(e=>setTimeout(e,500)));const t=await async function(e,t){const{minLat:s,maxLat:n,minLng:a,maxLng:o}=t;let i=Math.ceil((o-a)/.001),l=Math.ceil((n-s)/.001);i>bo&&(i=bo),l>bo&&(l=bo);const r=(o-a)/i,c=(n-s)/l,u=Math.max(r,c),d=new Float32Array(i*l);let h=0;for(let f=0;fsetTimeout(e,0))}}return{origin:[s,a],cellSize:u,width:i,height:l,elevations:d}}(n,s);e({terrainGrid:t,isLoading:!1,lastLoadedAt:Date.now(),cachedBounds:s})}catch(l){const t=l instanceof Error?l.message:"Unknown error loading terrain";e({isLoading:!1,error:t})}}},preloadFromNodes:async(e,s)=>{const n=function(e){const t=e.filter(e=>void 0!==e.latitude&&void 0!==e.longitude&&(0!==e.latitude||0!==e.longitude));if(0===t.length)return null;let s=1/0,n=-1/0,a=1/0,o=-1/0;for(const i of t)s=Math.min(s,i.latitude),n=Math.max(n,i.latitude),a=Math.min(a,i.longitude),o=Math.max(o,i.longitude);return{minLat:s-xo,maxLat:n+xo,minLng:a-xo,maxLng:o+xo}}(e);n&&await t().loadTerrain(n,s)},clearTerrain:()=>{e({terrainGrid:null,cachedBounds:null,lastLoadedAt:null,error:null})},setTerrainDisambiguationEnabled:t=>{e({terrainDisambiguationEnabled:t})},getTerrainGridForDisambiguation:()=>{const e=t();return e.terrainDisambiguationEnabled?e.terrainGrid:null}}));function _o(e){return e.startsWith("0x")||e.startsWith("0X")?e.slice(2,4).toUpperCase():e.slice(0,2).toUpperCase()}function jo(e,t){let s=e.forwarded_path??e.original_path;if("string"==typeof s)try{s=JSON.parse(s)}catch{return null}if(!s||!Array.isArray(s)||0===s.length)return null;const n=s.map(e=>String(e).toUpperCase()),a=t?_o(t):null,o=n[n.length-1],i=null!==a&&o===a,l=i?n.slice(0,-1):[...n];return{effective:l,original:n,hadLocal:i,effectiveLength:l.length}}function Mo(e,t){const s=e.toUpperCase();return t.startsWith("0x")||t.startsWith("0X")?t.slice(2).toUpperCase().startsWith(s):t.toUpperCase().startsWith(s)}const Co=[{label:"20m",minutes:20,buckets:40},{label:"1h",minutes:60,buckets:60},{label:"3h",minutes:180,buckets:90},{label:"12h",minutes:720,buckets:72},{label:"24h",minutes:1440,buckets:96},{label:"3d",minutes:4320,buckets:72},{label:"7d",minutes:10080,buckets:84}],To=[{label:"1h",hours:1},{label:"3h",hours:3},{label:"12h",hours:12},{label:"24h",hours:24},{label:"3d",hours:72},{label:"7d",hours:168}];function No(e){switch(e){case 1:return 3600;case 3:case 12:return 5400;case 24:return 8640;case 72:return 14400;case 168:return 10080;default:{const t=3600*e;return Math.max(360,Math.round(t/10))}}}function Lo(e){switch(e){case 1:return 3600;case 3:case 12:return 5400;case 24:return 8640;case 72:case 168:return 720;default:{const t=3600*e,s=Math.round(t/10);return Math.min(Math.max(360,s),720)}}}const Po={stats:3e3,packets:3e3,charts:3e4,logs:2e3,system:3e3},Eo={DEBUG:"text-[var(--log-debug)]",INFO:"text-[var(--log-info)]",WARNING:"text-[var(--log-warning)]",ERROR:"text-[var(--log-error)]",CRITICAL:"text-[var(--log-critical)]"};function Io(e){return Eo[e]||"text-text-muted border-border-subtle"}const Ao="pymc-resource-history",Do="pymc-resource-last-fetch",Ro="pymc-hidden-contacts",zo="pymc-quick-neighbors",Fo="pymc-local-hash";let Oo=null,Wo=null;function $o(e,t){const s=t-1e3*e;return s<=6048e5?"active":s<=12096e5?"stale":"expired"}function Ho(e){return 4===(e.type??e.payload_type)&&!0!==e.transmitted&&function(e){const t=function(e){if(Array.isArray(e))return e;if("string"==typeof e&&e.startsWith("["))try{const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}return[]}(e.original_path),s=e.route??e.route_type;return 2===(n=s)||3===n?0===t.length:da(s)?t.length<=1:0===t.length;var n}(e)}function Bo(e,t,s,n,a){if(!e)return null;let o=e;if(e.length<=4){const n=e.replace(/^0x/i,"").toUpperCase();if(n===t)return null;const a=s.get(n);if(!a)return null;o=a}return n.has(o)?o===a?null:o:null}function Uo(e,t){e.count++,void 0!==t.rssi&&null!==t.rssi&&(e.rssiSum+=t.rssi,e.rssiCount++),void 0!==t.snr&&null!==t.snr&&(e.snrSum+=t.snr,e.snrCount++);const s=t.timestamp??0;s>e.lastSeen&&(e.lastSeen=s)}function qo(e){return{hash:e,count:0,rssiSum:0,rssiCount:0,snrSum:0,snrCount:0,lastSeen:0}}function Go(e,t){const s=$o(e.lastSeen,t);return"expired"===s?null:{hash:e.hash,prefix:_o(e.hash),count:e.count,avgRssi:e.rssiCount>0?e.rssiSum/e.rssiCount:null,avgSnr:e.snrCount>0?e.snrSum/e.snrCount:null,lastSeen:e.lastSeen,status:s}}function Jo(){if("undefined"==typeof window)return[];try{const e=localStorage.getItem(zo);if(e)return JSON.parse(e)}catch{}return[]}function Yo(e){"undefined"!=typeof window&&(Wo&&clearTimeout(Wo),Wo=setTimeout(()=>{try{localStorage.setItem(zo,JSON.stringify(e))}catch{}Wo=null},1e3))}function Vo(){if("undefined"!=typeof window)try{const e=localStorage.getItem(Fo);if(e)return e}catch{}}function Ko(e){if("undefined"!=typeof window)try{localStorage.setItem(Fo,e)}catch{}}function Xo(){if("undefined"==typeof window)return[];try{const e=localStorage.getItem(Ao);if(e)return JSON.parse(e)}catch{}return[]}function Qo(){if("undefined"==typeof window)return new Set;try{const e=localStorage.getItem(Ro);if(e)return new Set(JSON.parse(e))}catch{}return new Set}function Zo(){if("undefined"==typeof window)return 0;try{const e=localStorage.getItem(Do);if(e)return parseInt(e,10)||0}catch{}return 0}const ei=a((e,t)=>({stats:null,statsLoading:!1,statsError:null,packets:[],packetsLoading:!1,packetsError:null,lastPacketTimestamp:0,logs:[],logsLoading:!1,liveMode:!0,flashReceived:0,flashAdvert:0,resourceHistory:Xo(),lastResourceFetch:Zo(),hiddenContacts:Qo(),quickNeighbors:Jo(),cachedLocalHash:Vo(),initialized:!1,packetCacheState:fo.getState(),mutationsInFlight:new Set,initializeApp:async()=>{const{initialized:s}=t();if(!s){e({initialized:!0,statsLoading:!0,packetsLoading:!0}),fo.subscribe(t=>{e({packetCacheState:t})});try{const{hiddenContacts:s}=t(),n=await Aa(),a=n.neighbors??{},o=Date.now(),i=[];for(const[e,t]of Object.entries(a)){if(s.has(e))continue;if(!t.zero_hop)continue;const n=$o(t.last_seen??0,o);"expired"!==n&&i.push({hash:e,prefix:_o(e),count:t.advert_count??0,avgRssi:t.rssi??null,avgSnr:t.snr??null,lastSeen:t.last_seen??0,status:n})}i.sort((e,t)=>t.count!==e.count?t.count-e.count:t.lastSeen-e.lastSeen);const l=n.local_hash;e({stats:n,statsLoading:!1,quickNeighbors:i,cachedLocalHash:l}),Yo(i),l&&Ko(l);const r=()=>{const s=fo.getPackets();if(s.length>0){const n=s.reduce((e,t)=>{const s=t.timestamp??0;return s>e?s:e},0);e({packets:[...s],lastPacketTimestamp:n}),t().triggerTopologyCompute(),t().triggerSparklineCompute()}},c=await fo.initialLoad(r);if(c.length>0){const s=c.reduce((e,t)=>{const s=t.timestamp??0;return s>e?s:e},0);e({packets:[...c],packetsLoading:!1,lastPacketTimestamp:s}),t().triggerTopologyCompute(),t().triggerSparklineCompute()}else e({packetsLoading:!1})}catch(n){e({statsError:n instanceof Error?n.message:"Failed to initialize",statsLoading:!1,packetsLoading:!1})}try{await wo.init({apiBaseUrl:"",authToken:localStorage.getItem("pymc_jwt_token")??void 0,statsIntervalMs:Po.stats,packetsIntervalMs:Po.packets}),wo.onStats((s,n)=>{const{mutationsInFlight:a,hiddenContacts:o}=t();if(a.size>0)return;const i=s.neighbors??{},l=Date.now(),r=[];for(const[e,t]of Object.entries(i)){if(o.has(e))continue;if(!t.zero_hop)continue;const s=$o(t.last_seen??0,l);"expired"!==s&&r.push({hash:e,prefix:_o(e),count:t.advert_count??0,avgRssi:t.rssi??null,avgSnr:t.snr??null,lastSeen:t.last_seen??0,status:s})}r.sort((e,t)=>t.count!==e.count?t.count-e.count:t.lastSeen-e.lastSeen);const c=s.local_hash;e({stats:s,statsLoading:!1,quickNeighbors:r,cachedLocalHash:c}),Yo(r),c&&Ko(c)}),wo.onPackets((s,n,a)=>{if(0===s.length)return;const{lastPacketTimestamp:o}=t();for(const e of s)if(e.packet_hash){fo.mergePacketsDirectly(s);break}const i=a>o;i&&(e({flashReceived:t().flashReceived+1}),Ba());const l=fo.getPackets();e({packets:l,packetsLoading:!1,lastPacketTimestamp:a}),i&&t().triggerTopologyCompute()}),wo.onError((t,s)=>{e("stats"===t?{statsError:s}:{packetsError:s})}),"undefined"!=typeof document&&document.addEventListener("visibilitychange",()=>{document.hidden||wo.forceRefresh()})}catch(n){!function(e){setInterval(()=>{e().fetchStats()},Po.stats),setInterval(()=>{e().liveMode&&!fo.isHeavyLoadInProgress()&&e().fetchPackets()},Po.packets)}(t)}}},prefetchForRoute:e=>{switch(e){case"/logs":Da().catch(()=>{});break;case"/system":Fa().catch(()=>{});break;case"/statistics":Ra(3).catch(()=>{}),za(3).catch(()=>{});break;case"/settings":(async function(){return Ea("/api/radio_presets")})().catch(()=>{})}},fetchStats:async s=>{const{stats:n,mutationsInFlight:a,hiddenContacts:o}=t();if(!(a.size>0)||(null==s?void 0:s.force)){n||e({statsLoading:!0}),e({statsError:null});try{const t=await Aa(),s=t.neighbors??{},n=Date.now(),a=[];for(const[e,l]of Object.entries(s)){if(o.has(e))continue;if(!l.zero_hop)continue;const t=$o(l.last_seen??0,n);"expired"!==t&&a.push({hash:e,prefix:_o(e),count:l.advert_count??0,avgRssi:l.rssi??null,avgSnr:l.snr??null,lastSeen:l.last_seen??0,status:t})}a.sort((e,t)=>t.count!==e.count?t.count-e.count:t.lastSeen-e.lastSeen);const i=t.local_hash;e({stats:t,statsLoading:!1,quickNeighbors:a,cachedLocalHash:i}),Yo(a),i&&Ko(i)}catch(i){e({statsError:i instanceof Error?i.message:"Failed to fetch stats",statsLoading:!1})}}},fetchPackets:async s=>{const{packets:n,lastPacketTimestamp:a}=t();0===n.length&&e({packetsLoading:!0}),e({packetsError:null});try{const s=await fo.poll(),o=s.length>0?s.reduce((e,t)=>Math.max(e,t.timestamp??0),0):0,i=o>a&&a>0,l=s.length!==n.length||i;i&&(e({flashReceived:t().flashReceived+1}),Ba()),e(l?{packets:s,packetsLoading:!1,lastPacketTimestamp:o||a}:{packetsLoading:!1}),i&&t().triggerTopologyCompute()}catch(o){e({packetsError:o instanceof Error?o.message:"Failed to fetch packets",packetsLoading:!1})}},fetchLogs:async()=>{const{logs:s}=t();0===s.length&&e({logsLoading:!0});try{const t=await Da();e({logs:t.logs,logsLoading:!1})}catch{e({logsLoading:!1})}},setLiveMode:t=>{e({liveMode:t}),wo.isReady()&&wo.setLiveMode(t)},setMode:async s=>{const n="setMode",{mutationsInFlight:a}=t(),o=new Set(a);o.add(n),e({mutationsInFlight:o});try{if(!(await Wa(s)).success)throw new Error("Backend returned unsuccessful response");await t().fetchStats({force:!0})}catch(i){const{mutationsInFlight:s}=t(),a=new Set(s);throw a.delete(n),e({mutationsInFlight:a}),i}},clearModeMutation:()=>{const{mutationsInFlight:s}=t(),n=new Set(s);n.delete("setMode"),e({mutationsInFlight:n})},setDutyCycle:async s=>{const n="setDutyCycle",{mutationsInFlight:a}=t(),o=new Set(a);o.add(n),e({mutationsInFlight:o});try{if(!(await $a(s)).success)throw new Error("Backend returned unsuccessful response");await t().fetchStats({force:!0})}finally{const{mutationsInFlight:s}=t(),a=new Set(s);a.delete(n),e({mutationsInFlight:a})}},setDutyCycleConfig:async s=>{var n;const a="setDutyCycleConfig",{mutationsInFlight:o}=t(),i=new Set(o);i.add(a),e({mutationsInFlight:i});try{const e=await async function(e){return Ea("/api/update_duty_cycle_config",{method:"POST",body:JSON.stringify(e)})}(s);if(!e.success&&!(null==(n=e.data)?void 0:n.persisted))throw new Error("Backend returned unsuccessful response");await t().fetchStats({force:!0})}catch(l){const{mutationsInFlight:s}=t(),n=new Set(s);throw n.delete(a),e({mutationsInFlight:n}),l}},clearDutyCycleMutation:()=>{const{mutationsInFlight:s}=t(),n=new Set(s);n.delete("setDutyCycleConfig"),e({mutationsInFlight:n})},sendAdvert:async()=>{try{const s=await Oa();return s.success&&e({flashAdvert:t().flashAdvert+1}),s.success}catch(s){return!1}},triggerFlashReceived:()=>{e({flashReceived:t().flashReceived+1})},triggerFlashAdvert:()=>{e({flashAdvert:t().flashAdvert+1})},addResourceDataPoint:(s,n,a)=>{const o=Date.now(),{lastResourceFetch:i,resourceHistory:l}=t();if(o-i<1e3)return;const r=[...l,{timestamp:o,time:new Date(o).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}),cpu:s,memory:n}],c=r.length>a?r.slice(-a):r;var u,d;e({resourceHistory:c,lastResourceFetch:o}),u=c,d=o,"undefined"!=typeof window&&(Oo&&clearTimeout(Oo),Oo=setTimeout(()=>{try{localStorage.setItem(Ao,JSON.stringify(u)),localStorage.setItem(Do,d.toString())}catch{}Oo=null},1e3))},hideContact:s=>{const{hiddenContacts:n}=t(),a=new Set(n);a.add(s),e({hiddenContacts:a}),function(e){if("undefined"!=typeof window)try{localStorage.setItem(Ro,JSON.stringify([...e]))}catch{}}(a)},clearPacketCache:()=>{fo.clear(),e({packets:[],lastPacketTimestamp:0}),fo.quickLoad().then(s=>{if(s.length>0){const n=s.reduce((e,t)=>Math.max(e,t.timestamp??0),0);e({packets:s,lastPacketTimestamp:n}),t().triggerTopologyCompute()}})},triggerTopologyCompute:()=>{var e,s,n,a;const{packets:o,stats:i,hiddenContacts:l}=t();if(0===o.length||!i)return;const r=i.neighbors??{},c=Object.fromEntries(Object.entries(r).filter(([e])=>!l.has(e))),u=i.local_hash,d=null==(s=null==(e=i.config)?void 0:e.repeater)?void 0:s.latitude,h=null==(a=null==(n=i.config)?void 0:n.repeater)?void 0:a.longitude,f=[];for(const[t,m]of Object.entries(c))m.zero_hop&&f.push({hash:t,advertCount:m.advert_count??1,avgRssi:m.rssi??null,avgSnr:m.snr??null,lastSeen:m.last_seen??0,latitude:m.latitude,longitude:m.longitude});const p=So.getState().getTerrainGridForDisambiguation();go.compute(o,c,u,d,h,void 0,f,p??void 0)},triggerDeepAnalysis:async()=>{await fo.forceDeepLoad();const s=fo.getPackets();if(s.length>0){const n=s.reduce((e,t)=>Math.max(e,t.timestamp??0),0);e({packets:s,lastPacketTimestamp:n}),t().triggerTopologyCompute(),t().triggerSparklineCompute()}},updateQuickNeighbors:()=>{const{packets:s,stats:n,hiddenContacts:a}=t();if(0===s.length||!n)return;const o=n.neighbors??{},i=function(e,t,s){if(!s||0===e.length||0===Object.keys(t).length)return[];const n=Date.now(),a=_o(s),o=new Set(Object.keys(t)),i=function(e){var t,s;const n=new Map;for(const a of Object.keys(e)){const o=_o(a),i=n.get(o);if(i){const l=null==(t=e[i])?void 0:t.zero_hop;(null==(s=e[a])?void 0:s.zero_hop)&&!l&&n.set(o,a)}else n.set(o,a)}return n}(t),l=new Map;for(const c of e){if(!Ho(c))continue;const e=Bo(c.src_hash,a,i,o,s);if(!e)continue;let t=l.get(e);t||(t=qo(e),l.set(e,t)),Uo(t,c)}for(const[c,u]of Object.entries(t))u.zero_hop&&!l.has(c)&&l.set(c,{hash:c,count:u.advert_count??0,rssiSum:u.rssi??0,rssiCount:void 0!==u.rssi?1:0,snrSum:u.snr??0,snrCount:void 0!==u.snr?1:0,lastSeen:u.last_seen??0});const r=[];for(const c of l.values()){const e=Go(c,n);e&&r.push(e)}return r.sort((e,t)=>t.count!==e.count?t.count-e.count:t.lastSeen-e.lastSeen),r}(s,Object.fromEntries(Object.entries(o).filter(([e])=>!a.has(e))),n.local_hash),l=t().quickNeighbors;(i.length!==l.length||i.some((e,t)=>{var s,n;return e.hash!==(null==(s=l[t])?void 0:s.hash)||e.count!==(null==(n=l[t])?void 0:n.count)}))&&(e({quickNeighbors:i}),Yo(i))},triggerSparklineCompute:()=>{const{packets:e,stats:s,hiddenContacts:n}=t();if(0===e.length||!s)return;const a=s.neighbors??{},o=Object.keys(a).filter(e=>!n.has(e));0!==o.length&&yo.compute(e,o)}})),ti=ei,si=()=>ei(e=>e.stats),ni=()=>ei(e=>e.statsError),ai=()=>ei(e=>e.packets),oi=()=>ei(e=>e.packetsLoading),ii=()=>ei(e=>e.logs),li=()=>ei(e=>e.logsLoading),ri=()=>ei(e=>e.liveMode),ci=()=>ei(e=>e.flashAdvert),ui=()=>ei(e=>e.fetchLogs),di=()=>ei(e=>e.setLiveMode),hi=()=>ei(e=>e.resourceHistory),fi=()=>ei(e=>e.addResourceDataPoint),pi=()=>ei(e=>e.hiddenContacts),mi=()=>ei(e=>e.hideContact),gi=()=>ei(e=>e.packetCacheState),yi=()=>ei(e=>e.triggerDeepAnalysis),wi=()=>ei(e=>e.quickNeighbors),xi=()=>ei(e=>e.cachedLocalHash),bi=()=>ei(e=>e.lastPacketTimestamp),ki=()=>ei(e=>e.packetCacheState.backgroundLoadComplete);function vi({showLabel:e=!1,className:t}){const a=ei(e=>e.flashReceived),o=ci(),[i,l]=s.useState("idle");return s.useEffect(()=>{if(a>0){l("received");const e=setTimeout(()=>l("idle"),300);return()=>clearTimeout(e)}},[a]),s.useEffect(()=>{if(o>0){l("transmitted");const e=setTimeout(()=>l("idle"),300);return()=>clearTimeout(e)}},[o]),n.jsxs("span",{className:E("inline-flex items-center gap-2",t),children:[n.jsx("span",{className:E("inline-flex rounded-full h-2 w-2 transition-all duration-150","received"===i&&"bg-accent-danger scale-150","transmitted"===i&&"bg-white scale-150","idle"===i&&"bg-accent-success")}),e&&n.jsx("span",{className:"type-data-xs text-text-muted uppercase tracking-wide",children:"Live"})]})}const Si=a(e=>({sparklines:new Map,isComputing:!1,lastUpdated:0,nodeCount:0,setSparklines:t=>e({sparklines:t,lastUpdated:Date.now(),nodeCount:t.size,isComputing:!1}),setComputing:t=>e({isComputing:t})}));"undefined"!=typeof window&&setTimeout(()=>{yo.subscribe((e,t)=>{const s=Si.getState();t&&!s.isComputing?s.setComputing(!0):!t&&e.size>0?s.setSparklines(e):!t&&s.isComputing&&s.setComputing(!1)})},0);const _i=()=>Si(e=>e.isComputing),ji=[],Mi=new Map;function Ci(e){return Si(t=>{const s=t.sparklines.get(e);if(!s||0===s.length)return ji;const n=Mi.get(e);return n===s?n:(Mi.set(e,s),s)})}const Ti=a(e=>({topology:{edges:[],validatedEdges:[],weakEdges:[],certainEdges:[],uncertainEdges:[],edgeMap:new Map,maxPacketCount:0,maxCertainCount:0,neighborAffinity:new Map,fullAffinity:new Map,localPrefix:null,centrality:new Map,hubNodes:[],gatewayNodes:[],loops:[],loopEdgeKeys:new Set,txDelayRecommendations:new Map,pathRegistry:mo(),edgeBetweenness:new Map,backboneEdges:[],nodeMobility:new Map,mobileNodes:[],pathHealth:[],lastHopNeighbors:[],disambiguationStats:{totalPrefixes:0,unambiguousPrefixes:0,collisionPrefixes:0,collisionRate:0,avgConfidence:0,lowConfidencePrefixes:[],highCollisionPrefixes:[],totalResolutions:0},discoveredNodes:[],viterbiStats:{totalPaths:0,pathsWithGhosts:0,avgPathCost:0,avgPathConfidence:0,observationOverrideCount:0,tracePacketsProcessed:0,pathPacketsProcessed:0,distantEdgesDiscovered:0,duplicateGroupsFound:0,duplicatePathsUnique:0,echolocationEdgesInferred:0}},isComputing:!1,lastComputeTimeMs:0,lastUpdated:0,setTopology:(t,s)=>e({topology:t,lastComputeTimeMs:s,lastUpdated:Date.now(),isComputing:!1}),setComputing:t=>e({isComputing:t})}));"undefined"!=typeof window&&go.subscribe((e,t)=>{Ti.getState().setTopology(e,t)});const Ni=()=>Ti(e=>e.topology),Li=()=>Ti(e=>e.topology.hubNodes),Pi=()=>Ti(e=>e.topology.centrality),Ei=()=>Ti(e=>e.topology.fullAffinity);let Ii=null,Ai=null,Di=null,Ri=null;const zi=()=>Ti(e=>(e.topology.hubNodes!==Ai&&(Ai=e.topology.hubNodes,Ii=new Set(e.topology.hubNodes)),Ii)),Fi=()=>Ti(e=>e.topology.pathHealth),Oi=()=>Ti(e=>e.topology.disambiguationStats),Wi=()=>Ti(e=>e.topology.disambiguationStats.highCollisionPrefixes),$i=()=>Ti(e=>e.topology.disambiguationStats.totalPrefixes>0),Hi=()=>Ti(e=>e.topology.discoveredNodes),Bi=()=>Ti(e=>e.topology.viterbiStats),Ui=()=>Ti(e=>(e.topology.discoveredNodes!==Ri&&(Ri=e.topology.discoveredNodes,Di=e.topology.discoveredNodes.filter(e=>e.isLikelyReal)),Di));function qi(e){if(e<60)return`${Math.floor(e)}s`;const t=Math.floor(e/86400),s=Math.floor(e%86400/3600),n=Math.floor(e%3600/60),a=[];return t>0&&a.push(`${t}d`),s>0&&a.push(`${s}h`),(n>0||0===a.length)&&a.push(`${n}m`),a.join(" ")}function Gi(e){const t=Date.now()/1e3-e;return t<60?"just now":t<3600?`${Math.floor(t/60)}m ago`:t<86400?`${Math.floor(t/3600)}h ago`:`${Math.floor(t/86400)}d ago`}function Ji(e){const t=Date.now()/1e3-e;return t<60?`${Math.floor(t)}s`:t<3600?`${Math.floor(t/60)}m`:t<86400?`${Math.floor(t/3600)}h`:`${Math.floor(t/86400)}d`}function Yi(e){return new Date(1e3*e).toLocaleString()}function Vi(e){const t=new Date(1e3*e);return`${t.toLocaleString("en-US",{month:"short"})} ${t.getDate()}, ${t.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}`}function Ki(e){return`${(e/1e6).toFixed(3)} MHz`}function Xi(e){return`${(e/1e3).toFixed(1)} kHz`}function Qi(e){const t=e>1e12?e:1e3*e,s=Date.now(),n=Math.abs(s-t),a=Math.floor(n/1e3),o=Math.floor(a/60),i=Math.floor(o/60),l=Math.floor(i/24);return l>0?`${l} day${1!==l?"s":""}`:i>0?`${i} hour${1!==i?"s":""}`:o>0?`${o} minute${1!==o?"s":""}`:`${a} second${1!==a?"s":""}`}const Zi=[{name:"Dashboard",to:"/",icon:r},{name:"Contacts",to:"/contacts",icon:c},{name:"Packets",to:"/packets",icon:u},{name:"Statistics",to:"/statistics",icon:d},{name:"System",to:"/system",icon:h},{name:"Logs",to:"/logs",icon:f},{name:"Terminal",to:"/terminal",icon:p},{name:"Configuration",to:"/configuration",icon:m}],el="pymc-controls-expanded";function tl(){var e,t,a,r;const{pathname:c}=o(),{stats:u,setMode:d,setDutyCycle:f,sendAdvert:p}=ti(),m=ja(),M=ei(e=>e.prefetchForRoute),C=gi(),T=_i(),N=Ti(e=>e.isComputing),L=Ui(),[P,I]=s.useState(!1),[A,D]=s.useState(!0),[R,z]=s.useState(!1),F=s.useRef(null),O=s.useCallback(e=>{e!==c&&(F.current&&clearTimeout(F.current),F.current=setTimeout(()=>{M(e)},100))},[c,M]),W=s.useCallback(()=>{F.current&&(clearTimeout(F.current),F.current=null)},[]);s.useEffect(()=>{const e=localStorage.getItem(el);null!==e&&queueMicrotask(()=>D("true"===e))},[]);const $=()=>{const e=!A;D(e),localStorage.setItem(el,String(e))};s.useEffect(()=>{queueMicrotask(()=>I(!1))},[c]),s.useEffect(()=>(document.body.style.overflow=P?"hidden":"",()=>{document.body.style.overflow=""}),[P]);const H=null==u?void 0:u.noise_floor_dbm,B=(null==(t=null==(e=null==u?void 0:u.config)?void 0:e.repeater)?void 0:t.mode)??"forward",U=(null==(r=null==(a=null==u?void 0:u.config)?void 0:a.duty_cycle)?void 0:r.enforcement_enabled)??!1,q=async()=>{z(!0),await p(),setTimeout(()=>z(!1),1e3)},G=()=>{d("forward"===B?"monitor":"forward")},J=()=>{f(!U)},Y=()=>{Ta(),window.location.href="/login"},V=C.isLoading||C.isTopologyLoading,K=V||T||N,X=C.loadProgress,Q=()=>{if(!K)return null;let e="Analyzing database";V&&X?e=`Loading ${X.loaded.toLocaleString()} packets`:T?e="Computing sparklines":N&&(e="Building topology");const t=(null==X?void 0:X.percent)??null,s=null!==t&&V;return n.jsxs("div",{className:"px-3 pb-2",children:[n.jsxs("div",{className:"flex items-center gap-2 px-2 py-1.5",children:[n.jsxs("div",{className:"relative flex h-2 w-2",children:[n.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-accent-primary opacity-75"}),n.jsx("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-accent-primary"})]}),n.jsx("span",{className:"type-data-xs text-text-muted",children:e}),s&&n.jsxs("span",{className:"type-data-xs text-text-muted ml-auto",children:[t,"%"]})]}),n.jsx("div",{className:"mx-2 h-0.5 bg-white/5 rounded-full overflow-hidden",children:s?n.jsx("div",{className:"h-full bg-accent-primary/60 rounded-full transition-all duration-300 ease-out",style:{width:`${t}%`}}):n.jsx("div",{className:"h-full bg-accent-primary/60 rounded-full animate-pulse",style:{width:"100%",animation:"shimmer 1.5s ease-in-out infinite"}})})]})},Z=()=>n.jsx("nav",{className:"flex-1 px-3 py-4 space-y-1 overflow-y-auto",children:Zi.map(e=>{const t=c===e.to;return n.jsxs(g,{to:e.to,onClick:()=>I(!1),onMouseEnter:()=>O(e.to),onMouseLeave:W,className:E("flex items-center gap-3 px-3 py-2.5 rounded-xl transition-all duration-150 min-h-[44px]",t?"bg-accent-primary/15 text-accent-primary":"text-text-muted hover:text-text-primary hover:bg-white/5"),children:[n.jsx(e.icon,{className:E("w-5 h-5 flex-shrink-0",t&&"text-accent-primary")}),n.jsx("span",{className:"type-body-sm font-medium",children:e.name}),"/contacts"===e.to&&L.length>0&&n.jsxs("span",{className:"ml-auto flex items-center gap-1 px-1.5 py-0.5 rounded-full bg-accent-tertiary/20 text-accent-tertiary",children:[n.jsx(y,{className:"w-3 h-3"}),n.jsx("span",{className:"type-data-xs font-medium",children:L.length})]})]},e.name)})}),ee=()=>n.jsxs("div",{className:"px-3 py-3",children:[n.jsxs("button",{onClick:$,className:"w-full flex items-center justify-between px-2 py-1.5 mb-2 rounded-lg hover:bg-white/5 transition-colors",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(w,{className:"w-4 h-4 text-accent-primary"}),n.jsx("span",{className:"type-data-xs text-text-muted uppercase tracking-wide",children:"Controls"})]}),n.jsx(x,{className:E("w-4 h-4 text-text-muted transition-transform duration-200",A?"rotate-0":"-rotate-90")})]}),n.jsx("div",{className:E("overflow-hidden transition-all duration-300 ease-out",A?"max-h-96 opacity-100":"max-h-0 opacity-0"),children:n.jsxs("div",{className:"control-panel-skeuo",children:[n.jsxs("button",{onClick:q,disabled:R,className:E("control-btn control-btn-primary w-full",R&&"opacity-70"),children:[n.jsx(b,{className:E("w-4 h-4",R&&"animate-pulse")}),n.jsx("span",{children:R?"Sending...":"Send Advert"})]}),n.jsxs("div",{className:"control-toggle-group",children:[n.jsxs("div",{className:"control-toggle-label",children:[n.jsx("span",{children:"Mode"}),n.jsx("span",{className:E("control-toggle-status","forward"===B?"text-accent-success":"text-accent-secondary"),children:"forward"===B?"FWD":"MON"})]}),n.jsx("button",{onClick:G,className:E("control-btn w-full","forward"===B?"control-btn-success":"control-btn-warning"),children:"forward"===B?n.jsxs(n.Fragment,{children:[n.jsx(k,{className:"w-4 h-4"}),n.jsx("span",{children:"Forward"})]}):n.jsxs(n.Fragment,{children:[n.jsx(v,{className:"w-4 h-4"}),n.jsx("span",{children:"Monitor"})]})})]}),n.jsxs("div",{className:"control-toggle-group",children:[n.jsxs("div",{className:"control-toggle-label",children:[n.jsx("span",{children:"Duty Cycle"}),n.jsx("span",{className:E("control-toggle-status",U?"text-accent-success":"text-text-muted"),children:U?"ON":"OFF"})]}),n.jsxs("button",{onClick:J,className:E("control-btn w-full",U?"control-btn-success":"control-btn-neutral"),children:[n.jsx(h,{className:"w-4 h-4"}),n.jsx("span",{children:U?"Enabled":"Disabled"})]})]})]})})]}),te=()=>n.jsxs("div",{className:"mt-auto border-t border-white/5",children:[void 0!==(null==u?void 0:u.uptime_seconds)&&n.jsxs("div",{className:"px-4 py-3 flex items-center gap-2",children:[n.jsx(S,{className:"w-3.5 h-3.5 text-text-muted"}),n.jsxs("span",{className:"type-data-xs text-text-secondary tabular-nums",children:[qi(u.uptime_seconds)," uptime"]})]}),n.jsx("div",{className:"px-3 pb-3",children:n.jsx("div",{className:"bg-white/[0.03] rounded-xl p-3",children:n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(_,{className:"w-4 h-4 text-accent-primary"}),n.jsx("span",{className:"type-data-xs text-text-muted",children:"Noise Floor"})]}),n.jsx("span",{className:"type-data text-text-primary tabular-nums",children:null!=H?`${H.toFixed(0)} dBm`:"—"})]})})}),n.jsxs("div",{className:"px-4 py-3 flex items-center justify-between border-t border-white/5",children:[n.jsx(vi,{showLabel:!0}),(null==u?void 0:u.version)&&n.jsxs("span",{className:"type-data-xs text-text-muted",children:["v",u.version]})]}),n.jsx("div",{className:"px-3 pb-3",children:n.jsxs("button",{onClick:Y,className:"w-full flex items-center gap-3 px-3 py-2.5 rounded-xl text-text-muted hover:text-accent-danger hover:bg-accent-danger/10 transition-all duration-150",children:[n.jsx(j,{className:"w-4 h-4"}),n.jsx("span",{className:"type-body-sm",children:"Sign Out"}),m&&n.jsxs("span",{className:"ml-auto type-data-xs text-text-muted",children:["(",m,")"]})]})})]});return n.jsxs(n.Fragment,{children:[n.jsx("header",{className:"lg:hidden fixed top-0 inset-x-0 z-[10001] h-14 bg-bg-body/70 backdrop-blur-xl border-b border-white/10",children:n.jsxs("div",{className:"flex items-center justify-between h-full px-4",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"w-10 h-10 rounded-xl overflow-hidden border border-white/10 shadow-lg shadow-black/20 hover:border-white/20 hover:shadow-xl transition-all flex-shrink-0",title:"West Coast Mesh",children:n.jsx("img",{src:ia,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),n.jsx("h1",{className:"sr-only",children:"pyMC Console"}),n.jsx(la,{height:20,className:"block"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsxs("p",{className:"type-data-xs text-text-muted",children:["v",oa]}),n.jsx(vi,{}),n.jsx("button",{onClick:()=>I(!P),className:"w-10 h-10 flex items-center justify-center rounded-xl hover:bg-white/5 active:bg-white/10 transition-colors","aria-label":P?"Close menu":"Open menu",children:P?n.jsx(i,{className:"w-5 h-5 text-text-primary"}):n.jsx(l,{className:"w-5 h-5 text-text-primary"})})]})]})}),n.jsx("div",{className:E("lg:hidden fixed inset-0 z-[10002] bg-black/60 backdrop-blur-sm transition-opacity duration-300",P?"opacity-100":"opacity-0 pointer-events-none"),onClick:()=>I(!1),"aria-hidden":"true"}),n.jsxs("aside",{className:E("lg:hidden fixed top-0 left-0 z-[10003] w-72 max-w-[85vw] h-full","glass-sidebar","flex flex-col","transform transition-transform duration-300 ease-out",P?"translate-x-0":"-translate-x-full pointer-events-none"),children:[n.jsxs("div",{className:"flex items-center gap-3 px-4 py-5 border-b border-white/5",children:[n.jsx("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"w-11 h-11 rounded-xl overflow-hidden border border-white/10 shadow-lg shadow-black/20 hover:border-white/20 hover:shadow-xl transition-all flex-shrink-0",title:"West Coast Mesh",children:n.jsx("img",{src:ia,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),n.jsxs("div",{className:"flex-1 min-w-0",children:[n.jsx("h1",{className:"sr-only",children:"pyMC Console"}),n.jsx(la,{height:18,className:"block"}),n.jsxs("p",{className:"type-data-xs text-text-muted mt-0.5",children:["v",oa]})]})]}),Z(),Q(),ee(),te()]}),n.jsxs("aside",{className:"hidden lg:flex flex-col w-64 flex-shrink-0 h-full relative glass-sidebar",children:[n.jsxs("div",{className:"flex items-center gap-3 px-5 py-6 border-b border-white/5",children:[n.jsx("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"w-11 h-11 rounded-xl overflow-hidden border border-white/10 shadow-lg shadow-black/20 hover:border-white/20 hover:shadow-xl transition-all flex-shrink-0",title:"West Coast Mesh",children:n.jsx("img",{src:ia,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),n.jsxs("div",{className:"flex-1 min-w-0",children:[n.jsx("h1",{className:"sr-only",children:"pyMC Console"}),n.jsx(la,{height:18,className:"block"}),n.jsxs("p",{className:"type-data-xs text-text-muted mt-0.5",children:["v",oa]})]})]}),Z(),Q(),ee(),te()]})]})}const sl=s.memo(function(){const{theme:e}=aa(),{backgroundImage:t,brightness:a}=e,[o,i]=s.useState(t),[l,r]=s.useState(!1);s.useEffect(()=>{if(t===o)return;const e=new Image;e.onload=()=>{r(!0),requestAnimationFrame(()=>{i(t),setTimeout(()=>r(!1),300)})},e.onerror=()=>{i(t)},e.src=t},[t,o]);const c=(100-a)/100;return n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"fixed inset-0 -z-20",style:{contain:"paint",willChange:l?"opacity":"auto"},"aria-hidden":"true",children:n.jsx("div",{className:"absolute inset-0 bg-cover bg-center bg-no-repeat transition-opacity duration-300 ease-out",style:{backgroundImage:`url(${o})`,opacity:l?.7:1}})}),n.jsx("div",{className:"fixed inset-0 -z-10 bg-black pointer-events-none transition-opacity duration-200 ease-out",style:{opacity:c,contain:"paint"},"aria-hidden":"true"})]})});function nl({className:e=""}){return n.jsx("div",{className:`bg-white/5 animate-pulse rounded-lg ${e}`,"aria-hidden":"true"})}function al(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading dashboard",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(nl,{className:"h-8 w-48"}),n.jsx(nl,{className:"h-8 w-32"})]}),n.jsx(nl,{className:"h-72"}),n.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-8 gap-3",children:Array.from({length:8}).map((e,t)=>n.jsx(nl,{className:"h-24"},t))}),n.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:Array.from({length:4}).map((e,t)=>n.jsx(nl,{className:"h-44"},t))}),n.jsx(nl,{className:"h-96"})]})}function ol(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading list",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(nl,{className:"h-8 w-40"}),n.jsx(nl,{className:"h-8 w-24"})]}),n.jsx(nl,{className:"h-20"}),n.jsxs("div",{className:"glass-card overflow-hidden",children:[n.jsx(nl,{className:"h-10 rounded-none"}),n.jsx("div",{className:"divide-y divide-border-subtle/30",children:Array.from({length:10}).map((e,t)=>n.jsx("div",{className:"px-4 py-3",children:n.jsx(nl,{className:"h-6"})},t))})]})]})}function il(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading map",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(nl,{className:"h-8 w-32"}),n.jsx(nl,{className:"h-6 w-48"})]}),n.jsx(nl,{className:"h-[500px]"}),n.jsx(nl,{className:"h-64"})]})}function ll(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading charts",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(nl,{className:"h-8 w-36"}),n.jsx(nl,{className:"h-8 w-40"})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[n.jsx(nl,{className:"h-80"}),n.jsx(nl,{className:"h-80"})]}),n.jsx(nl,{className:"h-64"})]})}function rl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading settings",children:[n.jsx(nl,{className:"h-8 w-32"}),n.jsxs("div",{className:"space-y-6",children:[n.jsx(nl,{className:"h-48"}),n.jsx(nl,{className:"h-64"}),n.jsx(nl,{className:"h-32"})]})]})}function cl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading system info",children:[n.jsx(nl,{className:"h-8 w-28"}),n.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:Array.from({length:4}).map((e,t)=>n.jsx(nl,{className:"h-28"},t))}),n.jsx(nl,{className:"h-64"}),n.jsx(nl,{className:"h-48"})]})}const ul=s.lazy(()=>P(()=>import("./Login-DdFKhylJ.js"),__vite__mapDeps([0,1,2]))),dl=s.lazy(()=>P(()=>import("./Dashboard-D1niW_DD.js"),__vite__mapDeps([3,1,2,4,5,6,7,8,9,10]))),hl=s.lazy(()=>P(()=>import("./Packets-n3vuO2F7.js"),__vite__mapDeps([11,1,2,6,7,8,5]))),fl=s.lazy(()=>P(()=>import("./Contacts-wP4j6lyB.js").then(e=>e.C),__vite__mapDeps([12,1,2,7,8,13,14,5,15]))),pl=s.lazy(()=>P(()=>import("./Statistics-CcE_ZMAZ.js"),__vite__mapDeps([16,1,2,9,17,4,5,14,10,15]))),ml=s.lazy(()=>P(()=>import("./System-tc2mHcQZ.js"),__vite__mapDeps([18,1,2,5,4,10]))),gl=s.lazy(()=>P(()=>import("./Logs-CeWO7emM.js"),__vite__mapDeps([19,1,2,17,5]))),yl=s.lazy(()=>P(()=>import("./Terminal-yBl-QLp9.js"),__vite__mapDeps([20,1,2,5]))),wl=s.lazy(()=>P(()=>import("./Configuration-mimYKnlX.js"),__vite__mapDeps([21,1,2,8,13,5,10])));function xl({children:e}){const t=o();return ka()?n.jsx(n.Fragment,{children:e}):n.jsx(T,{to:"/login",state:{from:t},replace:!0})}class bl extends s.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){var e;return this.state.hasError?n.jsxs("div",{className:"glass-card p-8 text-center",children:[n.jsx("p",{className:"type-subheading text-accent-red mb-2",children:"Page failed to render"}),n.jsx("p",{className:"type-body text-white/50 mb-4",children:(null==(e=this.state.error)?void 0:e.message)||"Unknown error"}),n.jsx("button",{onClick:()=>this.setState({hasError:!1}),className:"px-4 py-2 bg-accent-primary/20 text-accent-primary rounded-lg hover:bg-accent-primary/30 transition-colors",children:"Try Again"})]}):this.props.children}}function kl(){const e=ei(e=>e.initializeApp),t=ka();return s.useEffect(()=>{t&&e()},[e,t]),n.jsxs(n.Fragment,{children:[n.jsx(sl,{}),n.jsxs(M,{children:[n.jsx(C,{path:"/login",element:n.jsx(s.Suspense,{fallback:n.jsx("div",{className:"min-h-screen bg-bg-body"}),children:n.jsx(ul,{})})}),n.jsx(C,{path:"/*",element:n.jsx(xl,{children:n.jsxs("div",{className:"flex h-screen overflow-hidden",children:[n.jsx(tl,{}),n.jsx("main",{className:"flex-1 w-full min-w-0 pt-14 lg:pt-0 overflow-y-auto",children:n.jsx("div",{className:"p-4 sm:p-6 lg:p-8 max-w-7xl mx-auto",children:n.jsx(bl,{children:n.jsxs(M,{children:[n.jsx(C,{path:"/",element:n.jsx(s.Suspense,{fallback:n.jsx(al,{}),children:n.jsx(dl,{})})}),n.jsx(C,{path:"/packets",element:n.jsx(s.Suspense,{fallback:n.jsx(ol,{}),children:n.jsx(hl,{})})}),n.jsx(C,{path:"/contacts",element:n.jsx(s.Suspense,{fallback:n.jsx(il,{}),children:n.jsx(fl,{})})}),n.jsx(C,{path:"/statistics",element:n.jsx(s.Suspense,{fallback:n.jsx(ll,{}),children:n.jsx(pl,{})})}),n.jsx(C,{path:"/system",element:n.jsx(s.Suspense,{fallback:n.jsx(cl,{}),children:n.jsx(ml,{})})}),n.jsx(C,{path:"/logs",element:n.jsx(s.Suspense,{fallback:n.jsx(ol,{}),children:n.jsx(gl,{})})}),n.jsx(C,{path:"/terminal",element:n.jsx(s.Suspense,{fallback:n.jsx(ol,{}),children:n.jsx(yl,{})})}),n.jsx(C,{path:"/configuration",element:n.jsx(s.Suspense,{fallback:n.jsx(rl,{}),children:n.jsx(wl,{})})})]})})})})]})})})]})]})}const vl=console.warn;console.warn=(...e)=>{const t=e[0];"string"==typeof t&&t.includes("width")&&t.includes("height")&&t.includes("chart should be greater than 0")||vl.apply(console,e)},N.createRoot(document.getElementById("root")).render(n.jsx(s.StrictMode,{children:n.jsx(na,{children:n.jsx(L,{children:n.jsx(kl,{})})})}));export{fi as $,Qi as A,Ci as B,_i as C,Co as D,Wi as E,ti as F,mi as G,Li as H,Pi as I,Qa as J,Gi as K,fa as L,pa as M,Qn as N,ua as O,la as P,Oi as Q,ca as R,$i as S,Ui as T,ta as U,To as V,ia as W,No as X,Ra as Y,Lo as Z,hi as _,oi as a,Fa as a0,Po as a1,ii as a2,li as a3,ui as a4,Ga as a5,Io as a6,Aa as a7,Oa as a8,Wa as a9,So as aA,$a as aa,qa as ab,aa as ac,D as ad,$ as ae,so as af,Ja as ag,Ki as ah,Xi as ai,Za as aj,eo as ak,to as al,no as am,ao as an,Xa as ao,Ya as ap,Va as aq,Ka as ar,bi as as,fo as at,jo as au,da as av,Ni as aw,yi as ax,gi as ay,xi as az,ri as b,ci as c,si as d,wi as e,pi as f,_o as g,za as h,ka as i,ni as j,ki as k,Ma as l,Ua as m,qi as n,di as o,ra as p,Ji as q,Vi as r,Mo as s,zi as t,ai as u,Ei as v,Hi as w,Yi as x,Fi as y,Bi as z}; diff --git a/frontend/dist/assets/index-BuNKvX_5.css b/frontend/dist/assets/index-BuNKvX_5.css new file mode 100644 index 00000000..fb017ded --- /dev/null +++ b/frontend/dist/assets/index-BuNKvX_5.css @@ -0,0 +1 @@ +.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/jetbrains-mono-latin-800-normal-D2mQHRMK.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-800-normal-Dj9qwObk.woff) format("woff")}@font-face{font-family:Rubik Mono One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-mono-one-latin-400-normal-U2Afr9Di.woff2) format("woff2"),url(/assets/rubik-mono-one-latin-400-normal-Cd19iSlZ.woff) format("woff")}@font-face{font-family:"Jacquard 12";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jacquard-12-latin-400-normal-CFgZUtB9.woff2) format("woff2"),url(/assets/jacquard-12-latin-400-normal-DUTP1itc.woff) format("woff")}@font-face{font-family:Cantora One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cantora-one-latin-400-normal-BBwF22QI.woff2) format("woff2"),url(/assets/cantora-one-latin-400-normal-DwNspYVg.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}@font-face{font-family:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2) format("woff2"),url(/assets/instrument-serif-latin-400-normal-BVbkICAY.woff) format("woff")}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-teal-400:oklch(77.7% .152 181.912);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-indigo-400:oklch(67.3% .182 276.935);--color-violet-400:oklch(70.2% .183 293.541);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-5xl:3rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--drop-shadow-lg:0 4px 4px #00000026;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-display);--default-mono-font-family:var(--font-data)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-x-1{inset-inline:calc(var(--spacing)*1)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-2{top:calc(var(--spacing)*-2)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-\[2px\]{top:2px}.top-\[var\(--tip-y\,0\)\]{top:var(--tip-y,0)}.-right-0\.5{right:calc(var(--spacing)*-.5)}.-right-2{right:calc(var(--spacing)*-2)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-1\.5{right:calc(var(--spacing)*1.5)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.-bottom-0\.5{bottom:calc(var(--spacing)*-.5)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-\[72px\]{bottom:72px}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.left-4{left:calc(var(--spacing)*4)}.left-\[var\(--tip-x\,0\)\]{left:var(--tip-x,0)}.isolate{isolation:isolate}.-z-10{z-index:-10}.-z-20{z-index:-20}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.z-\[600\]{z-index:600}.z-\[9999\]{z-index:9999}.z-\[10001\]{z-index:10001}.z-\[10002\]{z-index:10002}.z-\[10003\]{z-index:10003}.z-\[10010\]{z-index:10010}.col-auto{grid-column:auto}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.container{width:100%}@media(min-width:475px){.container{max-width:475px}}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-0\.5{margin-inline:calc(var(--spacing)*.5)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing)*-1)}.mr-0\.5{margin-right:calc(var(--spacing)*.5)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-1\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-7{margin-left:calc(var(--spacing)*7)}.ml-8{margin-left:calc(var(--spacing)*8)}.ml-9{margin-left:calc(var(--spacing)*9)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-1\/2{height:50%}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-28{height:calc(var(--spacing)*28)}.h-32{height:calc(var(--spacing)*32)}.h-44{height:calc(var(--spacing)*44)}.h-48{height:calc(var(--spacing)*48)}.h-56{height:calc(var(--spacing)*56)}.h-64{height:calc(var(--spacing)*64)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-96{height:calc(var(--spacing)*96)}.h-\[1\.2em\]{height:1.2em}.h-\[18px\]{height:18px}.h-\[32px\]{height:32px}.h-\[36px\]{height:36px}.h-\[38px\]{height:38px}.h-\[200px\]{height:200px}.h-\[500px\]{height:500px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:calc(var(--spacing)*0)}.max-h-64{max-height:calc(var(--spacing)*64)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(100vh-300px\)\]{max-height:calc(100vh - 300px)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[3rem\]{min-height:3rem}.min-h-\[24px\]{min-height:24px}.min-h-\[44px\]{min-height:44px}.min-h-\[120px\]{min-height:120px}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-44{width:calc(var(--spacing)*44)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-\[0\.6em\]{width:.6em}.w-\[3px\]{width:3px}.w-\[240px\]{width:240px}.w-\[540px\]{width:540px}.w-full{width:100%}.w-px{width:1px}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[85vw\]{max-width:85vw}.max-w-\[240px\]{max-width:240px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[18px\]{min-width:18px}.min-w-\[60px\]{min-width:60px}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-x-1\/4{--tw-translate-x: -25% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-150{--tw-scale-x:150%;--tw-scale-y:150%;--tw-scale-z:150%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-rotate-90{rotate:-90deg}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[135deg\]{rotate:135deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.touch-manipulation{touch-action:manipulation}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.columns-2{columns:2}.columns-3{columns:3}.columns-4{columns:4}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-\[1px\]{gap:1px}.gap-\[2px\]{gap:2px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing)*3)}.gap-x-4{column-gap:calc(var(--spacing)*4)}.gap-y-0\.5{row-gap:calc(var(--spacing)*.5)}.gap-y-1{row-gap:calc(var(--spacing)*1)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border-subtle>:not(:last-child)),:where(.divide-border-subtle\/30>:not(:last-child)){border-color:var(--border-subtle)}@supports (color:color-mix(in lab,red,red)){:where(.divide-border-subtle\/30>:not(:last-child)){border-color:color-mix(in oklab,var(--border-subtle)30%,transparent)}}:where(.divide-white\/5>:not(:last-child)){border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){:where(.divide-white\/5>:not(:last-child)){border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[1\.125rem\]{border-radius:1.125rem}.rounded-\[1px\]{border-radius:1px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:1px}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-sm{border-top-left-radius:var(--radius-sm);border-top-right-radius:var(--radius-sm)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[var\(--route-direct\)\]\/30{border-color:var(--route-direct)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--route-direct\)\]\/30{border-color:color-mix(in oklab,var(--route-direct)30%,transparent)}}.border-\[var\(--route-flood\)\]\/30{border-color:var(--route-flood)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--route-flood\)\]\/30{border-color:color-mix(in oklab,var(--route-flood)30%,transparent)}}.border-\[var\(--route-transport\)\]\/30{border-color:var(--route-transport)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--route-transport\)\]\/30{border-color:color-mix(in oklab,var(--route-transport)30%,transparent)}}.border-accent-danger\/30{border-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.border-accent-danger\/30{border-color:color-mix(in oklab,var(--accent-danger)30%,transparent)}}.border-accent-danger\/50{border-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.border-accent-danger\/50{border-color:color-mix(in oklab,var(--accent-danger)50%,transparent)}}.border-accent-primary,.border-accent-primary\/30{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-primary\/30{border-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.border-accent-primary\/40{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-primary\/40{border-color:color-mix(in oklab,var(--accent-primary)40%,transparent)}}.border-accent-primary\/50{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-primary\/50{border-color:color-mix(in oklab,var(--accent-primary)50%,transparent)}}.border-accent-purple\/30{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-purple\/30{border-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.border-accent-red\/50{border-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.border-accent-red\/50{border-color:color-mix(in oklab,var(--accent-danger)50%,transparent)}}.border-accent-secondary\/20{border-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.border-accent-secondary\/20{border-color:color-mix(in oklab,var(--accent-secondary)20%,transparent)}}.border-accent-secondary\/30{border-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.border-accent-secondary\/30{border-color:color-mix(in oklab,var(--accent-secondary)30%,transparent)}}.border-accent-secondary\/50{border-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.border-accent-secondary\/50{border-color:color-mix(in oklab,var(--accent-secondary)50%,transparent)}}.border-accent-success\/20{border-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.border-accent-success\/20{border-color:color-mix(in oklab,var(--accent-success)20%,transparent)}}.border-accent-success\/30{border-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.border-accent-success\/30{border-color:color-mix(in oklab,var(--accent-success)30%,transparent)}}.border-accent-success\/40{border-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.border-accent-success\/40{border-color:color-mix(in oklab,var(--accent-success)40%,transparent)}}.border-accent-success\/50{border-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.border-accent-success\/50{border-color:color-mix(in oklab,var(--accent-success)50%,transparent)}}.border-accent-tertiary\/20{border-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.border-accent-tertiary\/20{border-color:color-mix(in oklab,var(--accent-tertiary)20%,transparent)}}.border-accent-tertiary\/30{border-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.border-accent-tertiary\/30{border-color:color-mix(in oklab,var(--accent-tertiary)30%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-border,.border-border-subtle,.border-border-subtle\/50{border-color:var(--border-subtle)}@supports (color:color-mix(in lab,red,red)){.border-border-subtle\/50{border-color:color-mix(in oklab,var(--border-subtle)50%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500)30%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.border-signal-poor\/30{border-color:var(--signal-poor)}@supports (color:color-mix(in lab,red,red)){.border-signal-poor\/30{border-color:color-mix(in oklab,var(--signal-poor)30%,transparent)}}.border-toggle-on{border-color:var(--toggle-on)}.border-transparent{border-color:#0000}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-white\/\[0\.06\]{border-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.06\]{border-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-amber-400{border-left-color:var(--color-amber-400)}.bg-\[\#F9D26F\]\/10{background-color:#f9d26f1a}.bg-\[var\(--route-direct\)\]\/20{background-color:var(--route-direct)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--route-direct\)\]\/20{background-color:color-mix(in oklab,var(--route-direct)20%,transparent)}}.bg-\[var\(--route-flood\)\]\/20{background-color:var(--route-flood)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--route-flood\)\]\/20{background-color:color-mix(in oklab,var(--route-flood)20%,transparent)}}.bg-\[var\(--route-transport\)\]\/20{background-color:var(--route-transport)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--route-transport\)\]\/20{background-color:color-mix(in oklab,var(--route-transport)20%,transparent)}}.bg-\[var\(--signal-critical\)\]{background-color:var(--signal-critical)}.bg-\[var\(--signal-excellent\)\]{background-color:var(--signal-excellent)}.bg-\[var\(--signal-fair\)\]{background-color:var(--signal-fair)}.bg-\[var\(--signal-good\)\]{background-color:var(--signal-good)}.bg-\[var\(--signal-poor\)\]{background-color:var(--signal-poor)}.bg-\[var\(--signal-unknown\)\]{background-color:var(--signal-unknown)}.bg-accent-danger,.bg-accent-danger\/10{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-danger\/10{background-color:color-mix(in oklab,var(--accent-danger)10%,transparent)}}.bg-accent-danger\/15{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-danger\/15{background-color:color-mix(in oklab,var(--accent-danger)15%,transparent)}}.bg-accent-danger\/20{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-danger\/20{background-color:color-mix(in oklab,var(--accent-danger)20%,transparent)}}.bg-accent-primary,.bg-accent-primary\/5{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/5{background-color:color-mix(in oklab,var(--accent-primary)5%,transparent)}}.bg-accent-primary\/10{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/10{background-color:color-mix(in oklab,var(--accent-primary)10%,transparent)}}.bg-accent-primary\/15{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/15{background-color:color-mix(in oklab,var(--accent-primary)15%,transparent)}}.bg-accent-primary\/20{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/20{background-color:color-mix(in oklab,var(--accent-primary)20%,transparent)}}.bg-accent-primary\/25{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/25{background-color:color-mix(in oklab,var(--accent-primary)25%,transparent)}}.bg-accent-primary\/60{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/60{background-color:color-mix(in oklab,var(--accent-primary)60%,transparent)}}.bg-accent-purple\/30{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-purple\/30{background-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.bg-accent-red\/10{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-red\/10{background-color:color-mix(in oklab,var(--accent-danger)10%,transparent)}}.bg-accent-secondary,.bg-accent-secondary\/5{background-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-secondary\/5{background-color:color-mix(in oklab,var(--accent-secondary)5%,transparent)}}.bg-accent-secondary\/10{background-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-secondary\/10{background-color:color-mix(in oklab,var(--accent-secondary)10%,transparent)}}.bg-accent-secondary\/15{background-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-secondary\/15{background-color:color-mix(in oklab,var(--accent-secondary)15%,transparent)}}.bg-accent-secondary\/20{background-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-secondary\/20{background-color:color-mix(in oklab,var(--accent-secondary)20%,transparent)}}.bg-accent-success,.bg-accent-success\/10{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.bg-accent-success\/10{background-color:color-mix(in oklab,var(--accent-success)10%,transparent)}}.bg-accent-success\/15{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.bg-accent-success\/15{background-color:color-mix(in oklab,var(--accent-success)15%,transparent)}}.bg-accent-success\/20{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.bg-accent-success\/20{background-color:color-mix(in oklab,var(--accent-success)20%,transparent)}}.bg-accent-tertiary,.bg-accent-tertiary\/5{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-tertiary\/5{background-color:color-mix(in oklab,var(--accent-tertiary)5%,transparent)}}.bg-accent-tertiary\/10{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-tertiary\/10{background-color:color-mix(in oklab,var(--accent-tertiary)10%,transparent)}}.bg-accent-tertiary\/15{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-tertiary\/15{background-color:color-mix(in oklab,var(--accent-tertiary)15%,transparent)}}.bg-accent-tertiary\/20{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-tertiary\/20{background-color:color-mix(in oklab,var(--accent-tertiary)20%,transparent)}}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-400\/5{background-color:#fcbb000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-400\/5{background-color:color-mix(in oklab,var(--color-amber-400)5%,transparent)}}.bg-amber-400\/90{background-color:#fcbb00e6}@supports (color:color-mix(in lab,red,red)){.bg-amber-400\/90{background-color:color-mix(in oklab,var(--color-amber-400)90%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500)5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-amber-500\/25{background-color:#f99c0040}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/25{background-color:color-mix(in oklab,var(--color-amber-500)25%,transparent)}}.bg-bg-body,.bg-bg-body\/70{background-color:var(--bg-body)}@supports (color:color-mix(in lab,red,red)){.bg-bg-body\/70{background-color:color-mix(in oklab,var(--bg-body)70%,transparent)}}.bg-bg-elevated,.bg-bg-elevated\/20{background-color:var(--bg-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-bg-elevated\/20{background-color:color-mix(in oklab,var(--bg-elevated)20%,transparent)}}.bg-bg-elevated\/30{background-color:var(--bg-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-bg-elevated\/30{background-color:color-mix(in oklab,var(--bg-elevated)30%,transparent)}}.bg-bg-elevated\/50{background-color:var(--bg-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-bg-elevated\/50{background-color:color-mix(in oklab,var(--bg-elevated)50%,transparent)}}.bg-bg-elevated\/90{background-color:var(--bg-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-bg-elevated\/90{background-color:color-mix(in oklab,var(--bg-elevated)90%,transparent)}}.bg-bg-elevated\/95{background-color:var(--bg-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-bg-elevated\/95{background-color:color-mix(in oklab,var(--bg-elevated)95%,transparent)}}.bg-bg-subtle,.bg-bg-subtle\/30{background-color:var(--bg-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-bg-subtle\/30{background-color:color-mix(in oklab,var(--bg-subtle)30%,transparent)}}.bg-bg-subtle\/80{background-color:var(--bg-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-bg-subtle\/80{background-color:color-mix(in oklab,var(--bg-subtle)80%,transparent)}}.bg-bg-surface,.bg-bg-surface\/60{background-color:var(--bg-surface)}@supports (color:color-mix(in lab,red,red)){.bg-bg-surface\/60{background-color:color-mix(in oklab,var(--bg-surface)60%,transparent)}}.bg-bg-surface\/80{background-color:var(--bg-surface)}@supports (color:color-mix(in lab,red,red)){.bg-bg-surface\/80{background-color:color-mix(in oklab,var(--bg-surface)80%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-border-subtle{background-color:var(--border-subtle)}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/20{background-color:color-mix(in oklab,var(--color-cyan-500)20%,transparent)}}.bg-gray-500\/20{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/20{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.bg-gray-500\/30{background-color:#6a72824d}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/30{background-color:color-mix(in oklab,var(--color-gray-500)30%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-orange-500\/25{background-color:#fe6e0040}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/25{background-color:color-mix(in oklab,var(--color-orange-500)25%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.bg-purple-500\/80{background-color:#ac4bffcc}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/80{background-color:color-mix(in oklab,var(--color-purple-500)80%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-signal-critical,.bg-signal-critical\/10{background-color:var(--signal-critical)}@supports (color:color-mix(in lab,red,red)){.bg-signal-critical\/10{background-color:color-mix(in oklab,var(--signal-critical)10%,transparent)}}.bg-signal-excellent,.bg-signal-excellent\/10{background-color:var(--signal-excellent)}@supports (color:color-mix(in lab,red,red)){.bg-signal-excellent\/10{background-color:color-mix(in oklab,var(--signal-excellent)10%,transparent)}}.bg-signal-fair,.bg-signal-fair\/10{background-color:var(--signal-fair)}@supports (color:color-mix(in lab,red,red)){.bg-signal-fair\/10{background-color:color-mix(in oklab,var(--signal-fair)10%,transparent)}}.bg-signal-good,.bg-signal-good\/10{background-color:var(--signal-good)}@supports (color:color-mix(in lab,red,red)){.bg-signal-good\/10{background-color:color-mix(in oklab,var(--signal-good)10%,transparent)}}.bg-signal-poor,.bg-signal-poor\/10{background-color:var(--signal-poor)}@supports (color:color-mix(in lab,red,red)){.bg-signal-poor\/10{background-color:color-mix(in oklab,var(--signal-poor)10%,transparent)}}.bg-text-muted,.bg-text-muted\/20{background-color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.bg-text-muted\/20{background-color:color-mix(in oklab,var(--text-muted)20%,transparent)}}.bg-text-muted\/30{background-color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.bg-text-muted\/30{background-color:color-mix(in oklab,var(--text-muted)30%,transparent)}}.bg-toggle-off{background-color:var(--toggle-off)}.bg-toggle-on{background-color:var(--toggle-on)}.bg-tooltip-bg,.bg-tooltip-bg\/80{background-color:var(--tooltip-bg)}@supports (color:color-mix(in lab,red,red)){.bg-tooltip-bg\/80{background-color:color-mix(in oklab,var(--tooltip-bg)80%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-white\/\[0\.02\]{background-color:#ffffff05}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.02\]{background-color:color-mix(in oklab,var(--color-white)2%,transparent)}}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-white)3%,transparent)}}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.bg-white\/\[0\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.bg-white\/\[0\.08\]{background-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.08\]{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.bg-white\/\[0\.15\]{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.15\]{background-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.bg-gradient-to-bl{--tw-gradient-position:to bottom left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-\[\#9cf15b\]{--tw-gradient-from:#9cf15b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-\[\#9cf15b\]\/5{--tw-gradient-from:oklab(87.4074% -.139284 .1444/.05);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-black\/20{--tw-gradient-from:#0003}@supports (color:color-mix(in lab,red,red)){.from-black\/20{--tw-gradient-from:color-mix(in oklab,var(--color-black)20%,transparent)}}.from-black\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/\[0\.03\]{--tw-gradient-from:#ffffff08}@supports (color:color-mix(in lab,red,red)){.from-white\/\[0\.03\]{--tw-gradient-from:color-mix(in oklab,var(--color-white)3%,transparent)}}.from-white\/\[0\.03\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/20{--tw-gradient-via:#fff3}@supports (color:color-mix(in lab,red,red)){.via-white\/20{--tw-gradient-via:color-mix(in oklab,var(--color-white)20%,transparent)}}.via-white\/20{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-\[\#8de04a\]{--tw-gradient-to:#8de04a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-\[\#9cf15b\]\/3{--tw-gradient-to:oklab(87.4074% -.139284 .1444/.03);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-accent-success{fill:var(--accent-success)}.fill-text-secondary{fill:var(--text-secondary)}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-12{padding:calc(var(--spacing)*12)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-14{padding-top:calc(var(--spacing)*14)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-1\.5{padding-right:calc(var(--spacing)*1.5)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-6{padding-right:calc(var(--spacing)*6)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-11{padding-left:calc(var(--spacing)*11)}.text-center{text-align:center}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.align-text-bottom{vertical-align:text-bottom}.font-mono{font-family:var(--font-data)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#F9D26F\]{color:#f9d26f}.text-\[\#FBBF24\]{color:#fbbf24}.text-\[\#FF8000\]{color:#ff8000}.text-\[var\(--log-critical\)\]{color:var(--log-critical)}.text-\[var\(--log-debug\)\]{color:var(--log-debug)}.text-\[var\(--log-error\)\]{color:var(--log-error)}.text-\[var\(--log-info\)\]{color:var(--log-info)}.text-\[var\(--log-warning\)\]{color:var(--log-warning)}.text-\[var\(--metric-dropped\)\]{color:var(--metric-dropped)}.text-\[var\(--metric-forwarded\)\]{color:var(--metric-forwarded)}.text-\[var\(--metric-received\)\]{color:var(--metric-received)}.text-\[var\(--metric-transmitted\)\]{color:var(--metric-transmitted)}.text-\[var\(--pkt-ack\)\]{color:var(--pkt-ack)}.text-\[var\(--pkt-advert\)\]{color:var(--pkt-advert)}.text-\[var\(--pkt-anon\)\]{color:var(--pkt-anon)}.text-\[var\(--pkt-flood\)\]{color:var(--pkt-flood)}.text-\[var\(--pkt-grp-data\)\]{color:var(--pkt-grp-data)}.text-\[var\(--pkt-grp-txt\)\]{color:var(--pkt-grp-txt)}.text-\[var\(--pkt-path\)\]{color:var(--pkt-path)}.text-\[var\(--pkt-req\)\]{color:var(--pkt-req)}.text-\[var\(--pkt-response\)\]{color:var(--pkt-response)}.text-\[var\(--pkt-trace\)\]{color:var(--pkt-trace)}.text-\[var\(--pkt-txt-msg\)\]{color:var(--pkt-txt-msg)}.text-\[var\(--pkt-unknown\)\]{color:var(--pkt-unknown)}.text-\[var\(--route-direct\)\]{color:var(--route-direct)}.text-\[var\(--route-flood\)\]{color:var(--route-flood)}.text-\[var\(--route-transport\)\]{color:var(--route-transport)}.text-\[var\(--signal-fair\)\]{color:var(--signal-fair)}.text-\[var\(--status-warning\)\]{color:var(--status-warning)}.text-accent-danger{color:var(--accent-danger)}.text-accent-primary,.text-accent-purple{color:var(--accent-primary)}.text-accent-red{color:var(--accent-danger)}.text-accent-secondary{color:var(--accent-secondary)}.text-accent-success{color:var(--accent-success)}.text-accent-tertiary{color:var(--accent-tertiary)}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/30{color:#fcbb004d}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/30{color:color-mix(in oklab,var(--color-amber-400)30%,transparent)}}.text-amber-400\/70{color:#fcbb00b3}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/70{color:color-mix(in oklab,var(--color-amber-400)70%,transparent)}}.text-amber-400\/80{color:#fcbb00cc}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/80{color:color-mix(in oklab,var(--color-amber-400)80%,transparent)}}.text-bg-body{color:var(--bg-body)}.text-black{color:var(--color-black)}.text-border-subtle{color:var(--border-subtle)}.text-cyan-400{color:var(--color-cyan-400)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-400\/80{color:#05df72cc}@supports (color:color-mix(in lab,red,red)){.text-green-400\/80{color:color-mix(in oklab,var(--color-green-400)80%,transparent)}}.text-icon-card-title{color:var(--icon-card-title)}.text-icon-page-title{color:var(--icon-page-title)}.text-icon-widget{color:var(--icon-widget)}.text-indigo-400{color:var(--color-indigo-400)}.text-orange-300{color:var(--color-orange-300)}.text-primary{color:var(--accent-tertiary)}.text-purple-400{color:var(--color-purple-400)}.text-red-400{color:var(--color-red-400)}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.text-red-400\/80{color:color-mix(in oklab,var(--color-red-400)80%,transparent)}}.text-secondary{color:var(--accent-secondary)}.text-signal-critical{color:var(--signal-critical)}.text-signal-excellent{color:var(--signal-excellent)}.text-signal-fair{color:var(--signal-fair)}.text-signal-good{color:var(--signal-good)}.text-signal-poor{color:var(--signal-poor)}.text-teal-400{color:var(--color-teal-400)}.text-text-muted,.text-text-muted\/30{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/30{color:color-mix(in oklab,var(--text-muted)30%,transparent)}}.text-text-muted\/50{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/50{color:color-mix(in oklab,var(--text-muted)50%,transparent)}}.text-text-muted\/60{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/60{color:color-mix(in oklab,var(--text-muted)60%,transparent)}}.text-text-muted\/70{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/70{color:color-mix(in oklab,var(--text-muted)70%,transparent)}}.text-text-muted\/80{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/80{color:color-mix(in oklab,var(--text-muted)80%,transparent)}}.text-text-primary{color:var(--text-primary)}.text-text-secondary{color:var(--text-secondary)}.text-transparent{color:#0000}.text-violet-400{color:var(--color-violet-400)}.text-violet-400\/70{color:#a685ffb3}@supports (color:color-mix(in lab,red,red)){.text-violet-400\/70{color:color-mix(in oklab,var(--color-violet-400)70%,transparent)}}.text-white{color:var(--color-white)}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab,red,red)){.text-white\/20{color:color-mix(in oklab,var(--color-white)20%,transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.text-white\/30{color:color-mix(in oklab,var(--color-white)30%,transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\/50{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.placeholder-text-muted::placeholder{color:var(--text-muted)}.accent-accent-purple{accent-color:var(--accent-primary)}.accent-amber-400{accent-color:var(--color-amber-400)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab,red,red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)20%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-accent-primary,.ring-accent-primary\/50{--tw-ring-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.ring-accent-primary\/50{--tw-ring-color:color-mix(in oklab,var(--accent-primary)50%,transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:border-white\/20:is(:where(.group):hover *){border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.group-hover\:border-white\/20:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.group-hover\/tip\:visible:is(:where(.group\/tip):hover *){visibility:visible}.group-hover\/tip\:opacity-100:is(:where(.group\/tip):hover *){opacity:1}}.selection\:bg-transparent ::selection{background-color:#0000}.selection\:bg-transparent::selection{background-color:#0000}.placeholder\:text-text-muted::placeholder{color:var(--text-muted)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:border-accent-primary\/30:hover{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent-primary\/30:hover{border-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.hover\:border-border-strong:hover{border-color:var(--border-strong)}.hover\:border-white\/20:hover{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:border-white\/20:hover{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\:border-white\/\[0\.12\]:hover{border-color:#ffffff1f}@supports (color:color-mix(in lab,red,red)){.hover\:border-white\/\[0\.12\]:hover{border-color:color-mix(in oklab,var(--color-white)12%,transparent)}}.hover\:bg-accent-danger\/10:hover{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-danger\/10:hover{background-color:color-mix(in oklab,var(--accent-danger)10%,transparent)}}.hover\:bg-accent-danger\/20:hover{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-danger\/20:hover{background-color:color-mix(in oklab,var(--accent-danger)20%,transparent)}}.hover\:bg-accent-danger\/30:hover{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-danger\/30:hover{background-color:color-mix(in oklab,var(--accent-danger)30%,transparent)}}.hover\:bg-accent-primary\/10:hover{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-primary\/10:hover{background-color:color-mix(in oklab,var(--accent-primary)10%,transparent)}}.hover\:bg-accent-primary\/20:hover{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-primary\/20:hover{background-color:color-mix(in oklab,var(--accent-primary)20%,transparent)}}.hover\:bg-accent-primary\/30:hover{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-primary\/30:hover{background-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.hover\:bg-accent-secondary\/20:hover{background-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-secondary\/20:hover{background-color:color-mix(in oklab,var(--accent-secondary)20%,transparent)}}.hover\:bg-accent-success\/10:hover{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-success\/10:hover{background-color:color-mix(in oklab,var(--accent-success)10%,transparent)}}.hover\:bg-accent-success\/20:hover{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-success\/20:hover{background-color:color-mix(in oklab,var(--accent-success)20%,transparent)}}.hover\:bg-accent-tertiary\/10:hover{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-tertiary\/10:hover{background-color:color-mix(in oklab,var(--accent-tertiary)10%,transparent)}}.hover\:bg-accent-tertiary\/20:hover{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-tertiary\/20:hover{background-color:color-mix(in oklab,var(--accent-tertiary)20%,transparent)}}.hover\:bg-accent-tertiary\/25:hover{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-tertiary\/25:hover{background-color:color-mix(in oklab,var(--accent-tertiary)25%,transparent)}}.hover\:bg-amber-400:hover{background-color:var(--color-amber-400)}.hover\:bg-bg-elevated:hover{background-color:var(--bg-elevated)}.hover\:bg-bg-subtle:hover{background-color:var(--bg-subtle)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\:bg-signal-critical\/20:hover{background-color:var(--signal-critical)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-signal-critical\/20:hover{background-color:color-mix(in oklab,var(--signal-critical)20%,transparent)}}.hover\:bg-signal-fair\/10:hover{background-color:var(--signal-fair)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-signal-fair\/10:hover{background-color:color-mix(in oklab,var(--signal-fair)10%,transparent)}}.hover\:bg-tooltip-bg:hover{background-color:var(--tooltip-bg)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:bg-white\/\[0\.02\]:hover{background-color:#ffffff05}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.02\]:hover{background-color:color-mix(in oklab,var(--color-white)2%,transparent)}}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.03\]:hover{background-color:color-mix(in oklab,var(--color-white)3%,transparent)}}.hover\:bg-white\/\[0\.04\]:hover{background-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.04\]:hover{background-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.hover\:bg-white\/\[0\.05\]:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.05\]:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.08\]:hover{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.hover\:from-\[\#8de04a\]:hover{--tw-gradient-from:#8de04a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.hover\:to-\[\#7dd03a\]:hover{--tw-gradient-to:#7dd03a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.hover\:text-accent-danger:hover{color:var(--accent-danger)}.hover\:text-accent-primary:hover{color:var(--accent-primary)}.hover\:text-accent-secondary:hover{color:var(--accent-secondary)}.hover\:text-accent-tertiary:hover{color:var(--accent-tertiary)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-signal-critical:hover{color:var(--signal-critical)}.hover\:text-text-primary:hover{color:var(--text-primary)}.hover\:text-text-secondary:hover{color:var(--text-secondary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:border-accent-primary:focus,.focus\:border-accent-primary\/50:focus{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.focus\:border-accent-primary\/50:focus{border-color:color-mix(in oklab,var(--accent-primary)50%,transparent)}}.focus\:border-amber-500\/50:focus{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.focus\:border-amber-500\/50:focus{border-color:color-mix(in oklab,var(--color-amber-500)50%,transparent)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[\#9cf15b\]\/50:focus{--tw-ring-color:oklab(87.4074% -.139284 .1444/.5)}.focus\:ring-accent-primary:focus,.focus\:ring-accent-primary\/50:focus{--tw-ring-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent-primary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--accent-primary)50%,transparent)}}.focus\:ring-accent-tertiary\/50:focus{--tw-ring-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent-tertiary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--accent-tertiary)50%,transparent)}}.focus\:ring-amber-500\/50:focus{--tw-ring-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.focus\:ring-amber-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-amber-500)50%,transparent)}}.focus\:ring-signal-critical\/50:focus{--tw-ring-color:var(--signal-critical)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-signal-critical\/50:focus{--tw-ring-color:color-mix(in oklab,var(--signal-critical)50%,transparent)}}.focus\:ring-signal-fair\/50:focus{--tw-ring-color:var(--signal-fair)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-signal-fair\/50:focus{--tw-ring-color:color-mix(in oklab,var(--signal-fair)50%,transparent)}}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:ring-offset-bg-elevated:focus{--tw-ring-offset-color:var(--bg-elevated)}.focus\:ring-offset-bg-surface:focus{--tw-ring-offset-color:var(--bg-surface)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-\[0\.98\]:active{scale:.98}.active\:bg-bg-elevated:active{background-color:var(--bg-elevated)}.active\:bg-tooltip-bg:active{background-color:var(--tooltip-bg)}.active\:bg-white\/10:active{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.active\:bg-white\/10:active{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.active\:brightness-90:active{--tw-brightness:brightness(90%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:475px){.xs\:inline{display:inline}}@media(min-width:40rem){.sm\:top-4{top:calc(var(--spacing)*4)}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:mx-4{margin-inline:calc(var(--spacing)*4)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-auto{height:auto}.sm\:max-h-96{max-height:calc(var(--spacing)*96)}.sm\:max-h-\[80vh\]{max-height:80vh}.sm\:max-h-\[calc\(100vh-250px\)\]{max-height:calc(100vh - 250px)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-28{width:calc(var(--spacing)*28)}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-\[280px\]{max-width:280px}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:flex-1{flex:1}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:calc(var(--spacing)*1)}.sm\:gap-2{gap:calc(var(--spacing)*2)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-6{gap:calc(var(--spacing)*6)}.sm\:self-auto{align-self:auto}.sm\:rounded-xl{border-radius:var(--radius-xl)}.sm\:rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.sm\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.sm\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.sm\:border-border-subtle{border-color:var(--border-subtle)}.sm\:p-1\.5{padding:calc(var(--spacing)*1.5)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:px-5{padding-inline:calc(var(--spacing)*5)}.sm\:py-1\.5{padding-block:calc(var(--spacing)*1.5)}.sm\:py-2{padding-block:calc(var(--spacing)*2)}.sm\:py-3{padding-block:calc(var(--spacing)*3)}.sm\:pt-0{padding-top:calc(var(--spacing)*0)}.sm\:pl-7{padding-left:calc(var(--spacing)*7)}.sm\:text-left{text-align:left}.sm\:opacity-100{opacity:1}}@media(min-width:48rem){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:gap-3{gap:calc(var(--spacing)*3)}.md\:p-5{padding:calc(var(--spacing)*5)}}@media(min-width:64rem){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-32{width:calc(var(--spacing)*32)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:p-8{padding:calc(var(--spacing)*8)}.lg\:pt-0{padding-top:calc(var(--spacing)*0)}}}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;top:0;left:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{-webkit-transform-origin:0 0;width:1600px;height:1600px}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{width:auto;padding:0;max-width:none!important;max-height:none!important}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:#33b5e566}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{box-sizing:border-box;z-index:800;width:0;height:0}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{z-index:800;pointer-events:visiblePainted;pointer-events:auto;position:relative}.leaflet-top,.leaflet-bottom{z-index:1000;pointer-events:none;position:absolute}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{outline-offset:1px;background:#ddd}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{background:#ffffff80;border:2px dotted #38f}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-bar{border-radius:4px;box-shadow:0 1px 5px #000000a6}.leaflet-bar a{text-align:center;color:#000;background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-decoration:none;display:block}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom:none;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.leaflet-bar a.leaflet-disabled{cursor:default;color:#bbb;background-color:#f4f4f4}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{text-indent:1px;font:700 18px Lucida Console,Monaco,monospace}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{background:#fff;border-radius:5px;box-shadow:0 1px 5px #0006}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{color:#333;background:#fff;padding:6px 10px 6px 6px}.leaflet-control-layers-scrollbar{padding-right:5px;overflow:hidden scroll}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{font-size:1.08333em;display:block}.leaflet-control-layers-separator{border-top:1px solid #ddd;height:0;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{color:#333;padding:0 5px;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{width:1em;height:.6669em;vertical-align:baseline!important;display:inline!important}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{white-space:nowrap;box-sizing:border-box;text-shadow:1px 1px #fff;background:#fffc;border:2px solid #777;border-top:none;padding:2px 5px 1px;line-height:1.1}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{background-clip:padding-box;border:2px solid #0003}.leaflet-popup{text-align:center;margin-bottom:20px;position:absolute}.leaflet-popup-content-wrapper{text-align:left;border-radius:12px;padding:1px}.leaflet-popup-content{min-height:1px;margin:13px 24px 13px 20px;font-size:1.08333em;line-height:1.3}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{pointer-events:none;width:40px;height:20px;margin-top:-1px;margin-left:-20px;position:absolute;left:50%;overflow:hidden}.leaflet-popup-tip{pointer-events:auto;width:17px;height:17px;margin:-10px auto 0;padding:1px;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{color:#333;background:#fff;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{text-align:center;color:#757575;background:0 0;border:none;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;text-decoration:none;position:absolute;top:0;right:0}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";width:24px;filter:progid:DXImageTransform.Microsoft.Matrix(M11=.707107,M12=.707107,M21=-.707107,M22=.707107);margin:0 auto}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{color:#222;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;background-color:#fff;border:1px solid #fff;border-radius:3px;padding:6px;position:absolute;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{pointer-events:none;content:"";background:0 0;border:6px solid #0000;position:absolute}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{margin-left:-6px;left:50%}.leaflet-tooltip-top:before{border-top-color:#fff;margin-bottom:-12px;bottom:0}.leaflet-tooltip-bottom:before{border-bottom-color:#fff;margin-top:-12px;margin-left:-6px;top:0}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{margin-top:-6px;top:50%}.leaflet-tooltip-left:before{border-left-color:#fff;margin-right:-12px;right:0}.leaflet-tooltip-right:before{border-right-color:#fff;margin-left:-12px;left:0}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}:root{--bg-body:#171717;--bg-surface:#252525;--bg-elevated:#333233;--bg-subtle:#3f3f3f;--border-subtle:#4b4b4b;--border-strong:#616161;--text-primary:#e1e1e1;--text-secondary:#bfbfbf;--text-muted:#727272;--text-invert:#171717;--accent-primary:#719cdf;--accent-secondary:#dfbc72;--accent-tertiary:#6fbcbd;--accent-danger:#e12672;--accent-success:#719872;--overlay-soft:#ffffff0a;--shadow-tint:#719cdf59;--sidebar-tint:#719cdf0f;--tooltip-bg:#252525;--hover-tint:#719cdf14;--glass-tint:#252525;--glass-light:#fff;--glass-dark:#000;--glass-reflex-light:.15;--glass-reflex-dark:.8;--glass-blur:6px;--glass-blur-elevated:8px;--glass-brightness:1;--glass-surface-tint:linear-gradient(to bottom,#ffffff06,#ffffff04);--glass-reflection-top:linear-gradient(to bottom,#ffffff05 0px,transparent 16px);--glass-reflection-bottom:linear-gradient(to top,#ffffff05 0px,transparent 20px);--glass-bg-opacity:8%;--glass-bg-opacity-elevated:12%;--signal-excellent:#719872;--signal-good:#6fbcbd;--signal-fair:#dfbc72;--signal-poor:#be7572;--signal-critical:#e12672;--signal-unknown:#616161;--sparkline-excellent:#22d370;--sparkline-good:#00d4ff;--sparkline-fair:#ffd600;--sparkline-poor:#ff7a3d;--sparkline-critical:#f36;--status-success:#719872;--status-warning:#dfbc72;--status-danger:#e12672;--status-info:#6fbcbd;--status-muted:#616161;--pkt-advert:#dfbc72;--pkt-flood:#6fbcbd;--pkt-txt-msg:#719872;--pkt-ack:#999abd;--pkt-trace:#70bddf;--pkt-req:#0074be;--pkt-response:#98bc99;--pkt-grp-txt:#e17899;--pkt-grp-data:#be7572;--pkt-path:#70bddf;--pkt-anon:#bdbb72;--pkt-unknown:#616161;--pkt-science-req:#0090ff;--pkt-science-anon-req:#06c;--pkt-science-response:#6cf;--pkt-science-ack:#00e699;--pkt-science-advert:#fff200;--pkt-science-txt-msg:#ffb300;--pkt-science-grp-txt:#ff80c0;--pkt-science-grp-data:#f60;--pkt-science-multipart:#b3b3b3;--pkt-science-raw-custom:#e666cc;--pkt-science-path:#66b3ff;--pkt-science-trace:#33ffb3;--pkt-science-unknown:gray;--route-flood:#6fbcbd;--route-direct:#dfbc72;--route-transport:#999abd;--chart-1:#719cdf;--chart-2:#0074be;--chart-3:#6fbcbd;--chart-4:#dfbc72;--chart-5:#719872;--chart-6:#e12672;--chart-7:#e17899;--chart-8:#999abd;--chart-grid:#ffffff0f;--chart-axis-tick:#fff6;--chart-cursor:#fff3;--metric-received:#719872;--metric-forwarded:#0074be;--metric-transmitted:#dfbc72;--metric-dropped:#e12672;--metric-neutral:#bfbfbf;--log-debug:#616161;--log-info:#6fbcbd;--log-warning:#dfbc72;--log-error:#e12672;--log-critical:#be7572;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#f5f5f0;--map-node-stroke:#4a5568;--map-hub-color:#8b7bad;--map-local-color:#fbbf24;--map-neighbor-color:#fbbf24;--map-mobile-color:#f97316;--map-room-color:#e17899;--palette-bg-0:#171717;--palette-bg-1:#1f1f1f;--palette-bg-2:#252525;--palette-bg-3:#2d2d2d;--palette-bg-4:#3f3f3f;--palette-bg-5:#4b4b4b;--palette-bg-6:#616161;--palette-bg-7:#727272;--palette-fg-0:#8a8a8a;--palette-fg-1:#a3a3a3;--palette-fg-2:#bfbfbf;--palette-fg-3:#e1e1e1;--palette-fg-4:#f5f5f5;--palette-red:#be7572;--palette-red-bright:#e12672;--palette-orange:#d97742;--palette-orange-bright:#f59e0b;--palette-yellow:#bdbb72;--palette-yellow-bright:#dfbc72;--palette-green:#719872;--palette-green-bright:#98bc99;--palette-aqua:#6fbcbd;--palette-aqua-bright:#70bddf;--palette-blue:#0074be;--palette-blue-bright:#719cdf;--palette-purple:#8b7bad;--palette-purple-bright:#999abd;--map-edge-rest:#4b4b4b;--map-edge-rest-bright:#616161;--map-edge-rest-dim:#3f3f3f;--map-edge-hover-direct:#6fbcbd;--map-edge-hover-loop:#8b7bad;--map-edge-hover-standard:#8a8a8a;--map-edge-hover-neighbor:#fbbf24;--map-edge-highlight:gold;--link-strong:#719872;--link-medium:#dfbc72;--link-weak:#be7572;--hop-0:#6fbcbd;--hop-1:#719872;--hop-2:#98bc99;--hop-3:#dfbc72;--hop-distant:#727272;--hop-hub:#fbbf24;--ctrl-base:var(--palette-bg-4);--ctrl-base-hover:var(--palette-bg-5);--ctrl-base-active:var(--palette-bg-3);--ctrl-border:var(--palette-bg-5);--ctrl-border-hover:var(--palette-bg-6);--ctrl-shadow-dark:var(--palette-bg-1);--ctrl-shadow-mid:var(--palette-bg-0);--ctrl-highlight:var(--palette-bg-6);--ctrl-inset:var(--palette-bg-3);--ctrl-primary:#5a6b9f;--ctrl-primary-hover:#6a7baf;--ctrl-primary-border:#7a8bbf;--ctrl-primary-shadow:#2a3b5f;--ctrl-primary-highlight:#8a9bcf;--ctrl-primary-inset:#4a5b8f;--ctrl-success:#4a7854;--ctrl-success-hover:#5a8864;--ctrl-success-border:#6a9874;--ctrl-success-shadow:#2a4834;--ctrl-success-highlight:#7aa884;--ctrl-success-inset:#3a6844;--ctrl-warning:#9f8a4a;--ctrl-warning-hover:#af9a5a;--ctrl-warning-border:#bfaa6a;--ctrl-warning-shadow:#5f4a2a;--ctrl-warning-highlight:#cfba7a;--ctrl-warning-inset:#8f7a3a;--ctrl-panel-top:var(--palette-bg-2);--ctrl-panel-mid:var(--palette-bg-1);--ctrl-panel-bottom:var(--palette-bg-0);--ctrl-panel-border:var(--palette-bg-4);--background:var(--bg-body);--foreground:var(--text-secondary);--foreground-muted:var(--text-muted);--foreground-subtle:var(--border-subtle);--primary:var(--accent-tertiary);--secondary:var(--accent-secondary);--accent-green:var(--accent-success);--accent-red:var(--accent-danger);--accent-purple:var(--accent-primary);--accent-cyan:var(--accent-tertiary);--card-bg:var(--bg-surface);--border:var(--border-subtle);--theme-transition:.4s ease}@supports (color:color(display-p3 1 1 1)){:root{--accent-primary:color(display-p3 .443 .612 .875);--accent-secondary:color(display-p3 .875 .737 .447);--accent-tertiary:color(display-p3 .435 .737 .741);--accent-danger:color(display-p3 .882 .15 .447);--accent-success:color(display-p3 .443 .596 .447);--signal-excellent:color(display-p3 .443 .596 .447);--signal-good:color(display-p3 .435 .737 .741);--signal-fair:color(display-p3 .875 .737 .447);--signal-poor:color(display-p3 .745 .459 .447);--signal-critical:color(display-p3 .882 .15 .447);--sparkline-excellent:color(display-p3 .133 .878 .439);--sparkline-good:color(display-p3 0 .878 1);--sparkline-fair:color(display-p3 1 .878 0);--sparkline-poor:color(display-p3 1 .518 .2);--sparkline-critical:color(display-p3 1 .2 .42);--status-success:color(display-p3 .443 .596 .447);--status-warning:color(display-p3 .875 .737 .447);--status-danger:color(display-p3 .882 .15 .447);--status-info:color(display-p3 .435 .737 .741);--pkt-advert:color(display-p3 .875 .737 .447);--pkt-flood:color(display-p3 .435 .737 .741);--pkt-txt-msg:color(display-p3 .443 .596 .447);--pkt-ack:color(display-p3 .6 .604 .741);--pkt-trace:color(display-p3 .439 .741 .875);--pkt-req:color(display-p3 0 .455 .745);--pkt-response:color(display-p3 .596 .737 .6);--pkt-grp-txt:color(display-p3 .882 .471 .6);--pkt-grp-data:color(display-p3 .745 .459 .447);--pkt-path:color(display-p3 .439 .741 .875);--pkt-anon:color(display-p3 .741 .733 .447);--chart-1:color(display-p3 .443 .612 .875);--chart-2:color(display-p3 0 .455 .745);--chart-3:color(display-p3 .435 .737 .741);--chart-4:color(display-p3 .875 .737 .447);--chart-5:color(display-p3 .443 .596 .447);--chart-6:color(display-p3 .882 .15 .447);--chart-7:color(display-p3 .882 .471 .6);--chart-8:color(display-p3 .6 .604 .741);--metric-received:color(display-p3 .443 .596 .447);--metric-forwarded:color(display-p3 0 .455 .745);--metric-transmitted:color(display-p3 .875 .737 .447);--metric-dropped:color(display-p3 .882 .15 .447);--log-info:color(display-p3 .435 .737 .741);--log-warning:color(display-p3 .875 .737 .447);--log-error:color(display-p3 .882 .15 .447);--log-critical:color(display-p3 .745 .459 .447);--map-hub-color:color(display-p3 .65 .5 .85);--map-local-color:color(display-p3 1 .8 .1);--map-neighbor-color:color(display-p3 1 .8 .1);--map-mobile-color:color(display-p3 1 .5 .1);--map-room-color:color(display-p3 1 .45 .65);--link-strong:color(display-p3 .443 .596 .447);--link-medium:color(display-p3 .875 .737 .447);--link-weak:color(display-p3 .745 .459 .447);--hop-0:color(display-p3 .435 .737 .741);--hop-1:color(display-p3 .443 .596 .447);--hop-2:color(display-p3 .596 .737 .6);--hop-3:color(display-p3 .875 .737 .447);--hop-hub:color(display-p3 .984 .749 .141);--palette-red:color(display-p3 .745 .459 .447);--palette-red-bright:color(display-p3 .882 .15 .447);--palette-orange:color(display-p3 .851 .467 .259);--palette-orange-bright:color(display-p3 .961 .62 .043);--palette-yellow:color(display-p3 .741 .733 .447);--palette-yellow-bright:color(display-p3 .875 .737 .447);--palette-green:color(display-p3 .443 .596 .447);--palette-green-bright:color(display-p3 .596 .737 .6);--palette-aqua:color(display-p3 .435 .737 .741);--palette-aqua-bright:color(display-p3 .439 .741 .875);--palette-blue:color(display-p3 0 .455 .745);--palette-blue-bright:color(display-p3 .443 .612 .875);--palette-purple:color(display-p3 .545 .482 .678);--palette-purple-bright:color(display-p3 .6 .604 .741);--map-edge-hover-direct:color(display-p3 .2 .9 .92);--map-edge-hover-loop:color(display-p3 .7 .5 .92);--map-edge-hover-neighbor:color(display-p3 1 .8 0);--map-edge-highlight:color(display-p3 1 .9 0)}}html{transition:--accent-primary var(--theme-transition),--accent-secondary var(--theme-transition),--accent-tertiary var(--theme-transition)}[data-theme=amber]{--accent-primary:#fabd2f;--accent-secondary:#fb4934;--accent-tertiary:#8ec07c;--accent-success:#b8bb26;--accent-danger:#fb4934;--shadow-tint:#fabd2f59;--sidebar-tint:#fabd2f0f;--tooltip-bg:#32302f;--hover-tint:#fabd2f14;--glass-tint:#282828;--card-fallback-bg:#282828eb;--signal-excellent:#b8bb26;--signal-good:#8ec07c;--signal-fair:#fabd2f;--signal-poor:#fe8019;--signal-critical:#fb4934;--signal-unknown:#928374;--sparkline-excellent:#a6e22e;--sparkline-good:#7dd68b;--sparkline-fair:#ffe135;--sparkline-poor:#ff9533;--sparkline-critical:#f44;--status-success:#b8bb26;--status-warning:#fabd2f;--status-danger:#fb4934;--status-info:#83a598;--status-muted:#928374;--chart-1:#fabd2f;--chart-2:#fe8019;--chart-3:#fb4934;--chart-4:#d3869b;--chart-5:#b8bb26;--chart-6:#8ec07c;--chart-7:#83a598;--chart-8:#d65d0e;--chart-grid:#fbf1c70f;--chart-axis-tick:#fbf1c766;--chart-cursor:#fbf1c733;--pkt-advert:#fabd2f;--pkt-flood:#8ec07c;--pkt-txt-msg:#b8bb26;--pkt-ack:#d3869b;--pkt-trace:#83a598;--pkt-req:#fe8019;--pkt-response:#b8bb26;--pkt-grp-txt:#d3869b;--pkt-grp-data:#fb4934;--pkt-path:#8ec07c;--pkt-anon:#fabd2f;--pkt-unknown:#928374;--route-flood:#8ec07c;--route-direct:#fabd2f;--route-transport:#d3869b;--metric-received:#b8bb26;--metric-forwarded:#83a598;--metric-transmitted:#fabd2f;--metric-dropped:#fb4934;--log-debug:#928374;--log-info:#83a598;--log-warning:#fabd2f;--log-error:#fb4934;--log-critical:#cc241d;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#fbf1c7;--map-node-stroke:#504945;--map-hub-color:#b16286;--map-local-color:#fabd2f;--map-neighbor-color:#fabd2f;--map-mobile-color:#fe8019;--map-room-color:#d3869b;--palette-bg-0:#1d2021;--palette-bg-1:#282828;--palette-bg-2:#32302f;--palette-bg-3:#3c3836;--palette-bg-4:#504945;--palette-bg-5:#665c54;--palette-bg-6:#7c6f64;--palette-bg-7:#928374;--palette-fg-0:#a89984;--palette-fg-1:#bdae93;--palette-fg-2:#d5c4a1;--palette-fg-3:#ebdbb2;--palette-fg-4:#fbf1c7;--palette-red:#cc241d;--palette-red-bright:#fb4934;--palette-orange:#d65d0e;--palette-orange-bright:#fe8019;--palette-yellow:#d79921;--palette-yellow-bright:#fabd2f;--palette-green:#98971a;--palette-green-bright:#b8bb26;--palette-aqua:#689d6a;--palette-aqua-bright:#8ec07c;--palette-blue:#458588;--palette-blue-bright:#83a598;--palette-purple:#b16286;--palette-purple-bright:#d3869b;--map-edge-rest:#665c54;--map-edge-rest-bright:#7c6f64;--map-edge-rest-dim:#504945;--map-edge-hover-direct:#8ec07c;--map-edge-hover-loop:#b16286;--map-edge-hover-standard:#a89984;--map-edge-hover-neighbor:#fabd2f;--link-strong:#b8bb26;--link-medium:#fabd2f;--link-weak:#fb4934;--hop-0:#8ec07c;--hop-1:#b8bb26;--hop-2:#83a598;--hop-3:#fabd2f;--hop-distant:#928374;--hop-hub:#d79921;--ctrl-primary:#d79921;--ctrl-primary-hover:#e7a931;--ctrl-primary-border:#fabd2f;--ctrl-primary-shadow:#6a4a10;--ctrl-primary-highlight:#fcc94f;--ctrl-primary-inset:#c78911;--ctrl-success:#689d6a;--ctrl-success-hover:#78ad7a;--ctrl-success-border:#8ec07c;--ctrl-success-shadow:#344e35;--ctrl-success-highlight:#9ed08c;--ctrl-success-inset:#588d5a;--ctrl-warning:#cc241d;--ctrl-warning-hover:#dc342d;--ctrl-warning-border:#fb4934;--ctrl-warning-shadow:#66120e;--ctrl-warning-highlight:#fc6954;--ctrl-warning-inset:#bc140d}@supports (color:color(display-p3 1 1 1)){[data-theme=amber]{--accent-primary:color(display-p3 .98 .741 .184);--accent-secondary:color(display-p3 .984 .286 .204);--accent-tertiary:color(display-p3 .557 .753 .486);--accent-success:color(display-p3 .722 .733 .149);--accent-danger:color(display-p3 .984 .286 .204);--signal-excellent:color(display-p3 .722 .733 .149);--signal-good:color(display-p3 .557 .753 .486);--signal-fair:color(display-p3 .98 .741 .184);--signal-poor:color(display-p3 .996 .502 .098);--signal-critical:color(display-p3 .984 .286 .204);--sparkline-excellent:color(display-p3 .651 .886 .18);--sparkline-good:color(display-p3 .49 .839 .545);--sparkline-fair:color(display-p3 1 .882 .208);--sparkline-poor:color(display-p3 1 .584 .2);--sparkline-critical:color(display-p3 1 .267 .267);--status-success:color(display-p3 .722 .733 .149);--status-warning:color(display-p3 .98 .741 .184);--status-danger:color(display-p3 .984 .286 .204);--status-info:color(display-p3 .514 .647 .596);--chart-1:color(display-p3 .98 .741 .184);--chart-2:color(display-p3 .996 .502 .098);--chart-3:color(display-p3 .984 .286 .204);--chart-4:color(display-p3 .827 .525 .608);--chart-5:color(display-p3 .722 .733 .149);--chart-6:color(display-p3 .557 .753 .486);--chart-7:color(display-p3 .514 .647 .596);--chart-8:color(display-p3 .839 .365 .055);--metric-received:color(display-p3 .722 .733 .149);--metric-forwarded:color(display-p3 .514 .647 .596);--metric-transmitted:color(display-p3 .98 .741 .184);--metric-dropped:color(display-p3 .984 .286 .204);--map-hub-color:color(display-p3 .8 .4 .65);--map-local-color:color(display-p3 1 .82 .1);--map-neighbor-color:color(display-p3 1 .82 .1);--map-mobile-color:color(display-p3 1 .55 .1);--map-room-color:color(display-p3 1 .5 .65);--link-strong:color(display-p3 .722 .733 .149);--link-medium:color(display-p3 .98 .741 .184);--link-weak:color(display-p3 .984 .286 .204);--hop-0:color(display-p3 .557 .753 .486);--hop-1:color(display-p3 .722 .733 .149);--hop-2:color(display-p3 .514 .647 .596);--hop-3:color(display-p3 .98 .741 .184);--hop-hub:color(display-p3 .843 .6 .129);--map-edge-hover-direct:color(display-p3 .4 .92 .58);--map-edge-hover-loop:color(display-p3 .85 .45 .65);--map-edge-hover-neighbor:color(display-p3 1 .82 .1);--map-edge-highlight:color(display-p3 1 .9 .2);--palette-red-bright:--palette-orange-bright: color(display-p3 .996 .502 .098);--palette-yellow-bright:color(display-p3 .98 .741 .184);--palette-green-bright:color(display-p3 .722 .733 .149);--palette-aqua-bright:color(display-p3 .557 .753 .486);--palette-purple-bright:color(display-p3 .827 .525 .608)}}[data-theme=grey]{--accent-primary:#83a598;--accent-secondary:#a89984;--accent-tertiary:#8ec07c;--accent-success:#8ec07c;--accent-danger:#cc241d;--shadow-tint:#83a59859;--sidebar-tint:#83a5980f;--tooltip-bg:#282828;--hover-tint:#83a59814;--glass-tint:#1e1e1e;--card-fallback-bg:#1e1e1eeb;--signal-excellent:#8ec07c;--signal-good:#83a598;--signal-fair:#d79921;--signal-poor:#fe8019;--signal-critical:#cc241d;--signal-unknown:#7c6f64;--sparkline-excellent:#5de08d;--sparkline-good:#5dd8d8;--sparkline-fair:#ffd633;--sparkline-poor:#ff7a3d;--sparkline-critical:#e53939;--status-success:#8ec07c;--status-warning:#d79921;--status-danger:#cc241d;--status-info:#83a598;--status-muted:#7c6f64;--chart-1:#83a598;--chart-2:#8ec07c;--chart-3:#d79921;--chart-4:#b16286;--chart-5:#fe8019;--chart-6:#cc241d;--chart-7:#a89984;--chart-8:#7c6f64;--chart-grid:#d5c4a10f;--chart-axis-tick:#d5c4a166;--chart-cursor:#d5c4a133;--pkt-advert:#d79921;--pkt-flood:#83a598;--pkt-txt-msg:#8ec07c;--pkt-ack:#b16286;--pkt-trace:#83a598;--pkt-req:#fe8019;--pkt-response:#8ec07c;--pkt-grp-txt:#b16286;--pkt-grp-data:#cc241d;--pkt-path:#83a598;--pkt-anon:#a89984;--pkt-unknown:#7c6f64;--route-flood:#83a598;--route-direct:#d79921;--route-transport:#b16286;--metric-received:#8ec07c;--metric-forwarded:#83a598;--metric-transmitted:#d79921;--metric-dropped:#cc241d;--log-debug:#7c6f64;--log-info:#83a598;--log-warning:#d79921;--log-error:#cc241d;--log-critical:#9d0006;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#ebdbb2;--map-node-stroke:#504945;--map-hub-color:#b16286;--map-local-color:#d79921;--map-neighbor-color:#d79921;--map-mobile-color:#fe8019;--map-room-color:#b16286;--palette-bg-0:#1a1a1a;--palette-bg-1:#1e1e1e;--palette-bg-2:#242424;--palette-bg-3:#2a2a2a;--palette-bg-4:#3c3836;--palette-bg-5:#504945;--palette-bg-6:#665c54;--palette-bg-7:#7c6f64;--palette-fg-0:#a89984;--palette-fg-1:#bdae93;--palette-fg-2:#d5c4a1;--palette-fg-3:#ebdbb2;--palette-fg-4:#fbf1c7;--palette-red:#9d0006;--palette-red-bright:#cc241d;--palette-orange:#af3a03;--palette-orange-bright:#fe8019;--palette-yellow:#b57614;--palette-yellow-bright:#d79921;--palette-green:#79740e;--palette-green-bright:#8ec07c;--palette-aqua:#427b58;--palette-aqua-bright:#83a598;--palette-blue:#076678;--palette-blue-bright:#83a598;--palette-purple:#8f3f71;--palette-purple-bright:#b16286;--map-edge-rest:#504945;--map-edge-rest-bright:#665c54;--map-edge-rest-dim:#3c3836;--map-edge-hover-direct:#83a598;--map-edge-hover-loop:#b16286;--map-edge-hover-standard:#a89984;--map-edge-hover-neighbor:#d79921;--link-strong:#8ec07c;--link-medium:#d79921;--link-weak:#cc241d;--hop-0:#83a598;--hop-1:#8ec07c;--hop-2:#a89984;--hop-3:#d79921;--hop-distant:#7c6f64;--hop-hub:#b57614;--ctrl-primary:#5a8a7a;--ctrl-primary-hover:#6a9a8a;--ctrl-primary-border:#83a598;--ctrl-primary-shadow:#2d453d;--ctrl-primary-highlight:#93b5a8;--ctrl-primary-inset:#4a7a6a;--ctrl-success:#6a9a6a;--ctrl-success-hover:#7aaa7a;--ctrl-success-border:#8ec07c;--ctrl-success-shadow:#354d35;--ctrl-success-highlight:#9ed08c;--ctrl-success-inset:#5a8a5a;--ctrl-warning:#b57614;--ctrl-warning-hover:#c58624;--ctrl-warning-border:#d79921;--ctrl-warning-shadow:#5a3b0a;--ctrl-warning-highlight:#e7a931;--ctrl-warning-inset:#a56604}@supports (color:color(display-p3 1 1 1)){[data-theme=grey]{--accent-primary:color(display-p3 .514 .647 .596);--accent-tertiary:color(display-p3 .557 .753 .486);--accent-success:color(display-p3 .557 .753 .486);--accent-danger:color(display-p3 .8 .141 .114);--signal-excellent:color(display-p3 .557 .753 .486);--signal-good:color(display-p3 .514 .647 .596);--signal-fair:color(display-p3 .843 .6 .129);--signal-poor:color(display-p3 .996 .502 .098);--signal-critical:color(display-p3 .8 .141 .114);--sparkline-excellent:color(display-p3 .365 .878 .553);--sparkline-good:color(display-p3 .365 .847 .847);--sparkline-fair:color(display-p3 1 .839 .2);--sparkline-poor:color(display-p3 1 .478 .239);--sparkline-critical:color(display-p3 .898 .224 .224);--status-success:color(display-p3 .557 .753 .486);--status-warning:color(display-p3 .843 .6 .129);--status-danger:color(display-p3 .8 .141 .114);--status-info:color(display-p3 .514 .647 .596);--chart-1:color(display-p3 .514 .647 .596);--chart-2:color(display-p3 .557 .753 .486);--chart-3:color(display-p3 .843 .6 .129);--chart-4:color(display-p3 .694 .384 .525);--chart-5:color(display-p3 .996 .502 .098);--chart-6:color(display-p3 .8 .141 .114);--metric-received:color(display-p3 .557 .753 .486);--metric-forwarded:color(display-p3 .514 .647 .596);--metric-transmitted:color(display-p3 .843 .6 .129);--metric-dropped:color(display-p3 .8 .141 .114);--map-hub-color:color(display-p3 .8 .4 .65);--map-local-color:color(display-p3 1 .75 .1);--map-neighbor-color:color(display-p3 1 .75 .1);--map-mobile-color:color(display-p3 1 .55 .1);--map-room-color:color(display-p3 .8 .4 .65);--link-strong:color(display-p3 .557 .753 .486);--link-medium:color(display-p3 .843 .6 .129);--link-weak:color(display-p3 .8 .141 .114);--hop-0:color(display-p3 .514 .647 .596);--hop-1:color(display-p3 .557 .753 .486);--hop-3:color(display-p3 .843 .6 .129);--map-edge-hover-direct:color(display-p3 .3 .9 .9);--map-edge-hover-loop:color(display-p3 .85 .45 .65);--map-edge-hover-neighbor:color(display-p3 1 .78 .1);--map-edge-highlight:color(display-p3 1 .88 .2);--palette-red-bright:--palette-orange-bright: color(display-p3 .996 .502 .098);--palette-yellow-bright:color(display-p3 .843 .6 .129);--palette-green-bright:color(display-p3 .557 .753 .486);--palette-aqua-bright:color(display-p3 .514 .647 .596);--palette-purple-bright:color(display-p3 .694 .384 .525)}}[data-theme=black]{--accent-primary:#33859d;--accent-secondary:#edb54b;--accent-tertiary:#26a98b;--accent-success:#26a98b;--accent-danger:#c33027;--shadow-tint:#33859d59;--sidebar-tint:#33859d0f;--tooltip-bg:#0d1117;--hover-tint:#33859d1a;--glass-tint:#0a0e14;--glass-blur:1px;--glass-blur-elevated:2px;--card-fallback-bg:#0a0e14f2;--bg-surface:#ffffff08;--bg-elevated:#ffffff0f;--bg-subtle:#ffffff14;--border-subtle:#ffffff1a;--border-strong:#ffffff26;--signal-excellent:#26a98b;--signal-good:#599caa;--signal-fair:#edb54b;--signal-poor:#d26939;--signal-critical:#c33027;--signal-unknown:#195465;--sparkline-excellent:#00e5b0;--sparkline-good:#00d4ff;--sparkline-fair:#ffd600;--sparkline-poor:#f74;--sparkline-critical:#f44;--status-success:#26a98b;--status-warning:#edb54b;--status-danger:#c33027;--status-info:#599caa;--status-muted:#195465;--chart-1:#33859d;--chart-2:#edb54b;--chart-3:#26a98b;--chart-4:#599caa;--chart-5:#d26939;--chart-6:#c33027;--chart-7:#888ba5;--chart-8:#195465;--chart-grid:#99d1ce0f;--chart-axis-tick:#99d1ce66;--chart-cursor:#99d1ce33;--pkt-advert:#edb54b;--pkt-flood:#33859d;--pkt-txt-msg:#26a98b;--pkt-ack:#599caa;--pkt-trace:#33859d;--pkt-req:#d26939;--pkt-response:#26a98b;--pkt-grp-txt:#888ba5;--pkt-grp-data:#c33027;--pkt-path:#33859d;--pkt-anon:#edb54b;--pkt-unknown:#195465;--route-flood:#33859d;--route-direct:#edb54b;--route-transport:#888ba5;--metric-received:#26a98b;--metric-forwarded:#33859d;--metric-transmitted:#edb54b;--metric-dropped:#c33027;--log-debug:#195465;--log-info:#599caa;--log-warning:#edb54b;--log-error:#c33027;--log-critical:#c33027;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#edf5f4;--map-node-stroke:#195465;--map-hub-color:#888ba5;--map-local-color:#edb54b;--map-neighbor-color:#edb54b;--map-mobile-color:#d26939;--map-room-color:#888ba5;--palette-bg-0:#0a0f14;--palette-bg-1:#11151c;--palette-bg-2:#091f2e;--palette-bg-3:#0a3749;--palette-bg-4:#195465;--palette-bg-5:#245361;--palette-bg-6:#2b6271;--palette-bg-7:#33859d;--palette-fg-0:#599caa;--palette-fg-1:#88c0d0;--palette-fg-2:#99d1ce;--palette-fg-3:#d3ebe9;--palette-fg-4:#edf5f4;--palette-red:#c33027;--palette-red-bright:#d26939;--palette-orange:#d26939;--palette-orange-bright:#edb54b;--palette-yellow:#edb54b;--palette-yellow-bright:#f0c66d;--palette-green:#26a98b;--palette-green-bright:#33d6a0;--palette-aqua:#26a98b;--palette-aqua-bright:#99d1ce;--palette-blue:#195465;--palette-blue-bright:#33859d;--palette-purple:#888ba5;--palette-purple-bright:#a5a8bd;--map-edge-rest:#245361;--map-edge-rest-bright:#2b6271;--map-edge-rest-dim:#195465;--map-edge-hover-direct:#26a98b;--map-edge-hover-loop:#888ba5;--map-edge-hover-standard:#599caa;--map-edge-hover-neighbor:#edb54b;--link-strong:#26a98b;--link-medium:#edb54b;--link-weak:#c33027;--hop-0:#26a98b;--hop-1:#33859d;--hop-2:#599caa;--hop-3:#edb54b;--hop-distant:#195465;--hop-hub:#d26939;--ctrl-primary:#28758d;--ctrl-primary-hover:#38859d;--ctrl-primary-border:#4895ad;--ctrl-primary-shadow:#143a46;--ctrl-primary-highlight:#58a5bd;--ctrl-primary-inset:#18657d;--ctrl-success:#1c9978;--ctrl-success-hover:#2ca988;--ctrl-success-border:#3cb998;--ctrl-success-shadow:#0e4c3c;--ctrl-success-highlight:#4cc9a8;--ctrl-success-inset:#0c8968;--ctrl-warning:#dda53b;--ctrl-warning-hover:#edb54b;--ctrl-warning-border:#fdc55b;--ctrl-warning-shadow:#6e521d;--ctrl-warning-highlight:#fdd56b;--ctrl-warning-inset:#cd952b}@supports (color:color(display-p3 1 1 1)){[data-theme=black]{--accent-primary:color(display-p3 .2 .522 .616);--accent-secondary:color(display-p3 .929 .71 .294);--accent-tertiary:color(display-p3 .149 .663 .545);--accent-success:color(display-p3 .149 .663 .545);--accent-danger:color(display-p3 .765 .188 .153);--signal-excellent:color(display-p3 .149 .663 .545);--signal-good:color(display-p3 .349 .612 .667);--signal-fair:color(display-p3 .929 .71 .294);--signal-poor:color(display-p3 .824 .412 .224);--signal-critical:color(display-p3 .765 .188 .153);--sparkline-excellent:color(display-p3 0 .898 .69);--sparkline-good:color(display-p3 0 .831 1);--sparkline-fair:color(display-p3 1 .839 0);--sparkline-poor:color(display-p3 1 .467 .267);--sparkline-critical:color(display-p3 1 .267 .267);--status-success:color(display-p3 .149 .663 .545);--status-warning:color(display-p3 .929 .71 .294);--status-danger:color(display-p3 .765 .188 .153);--status-info:color(display-p3 .349 .612 .667);--chart-1:color(display-p3 .2 .522 .616);--chart-2:color(display-p3 .929 .71 .294);--chart-3:color(display-p3 .149 .663 .545);--chart-4:color(display-p3 .349 .612 .667);--chart-5:color(display-p3 .824 .412 .224);--chart-6:color(display-p3 .765 .188 .153);--metric-received:color(display-p3 .149 .663 .545);--metric-forwarded:color(display-p3 .2 .522 .616);--metric-transmitted:color(display-p3 .929 .71 .294);--metric-dropped:color(display-p3 .765 .188 .153);--map-hub-color:color(display-p3 .6 .58 .85);--map-local-color:color(display-p3 1 .82 .2);--map-neighbor-color:color(display-p3 1 .82 .2);--map-mobile-color:color(display-p3 1 .5 .2);--map-room-color:color(display-p3 .6 .58 .85);--link-strong:color(display-p3 .149 .663 .545);--link-medium:color(display-p3 .929 .71 .294);--link-weak:color(display-p3 .765 .188 .153);--hop-0:color(display-p3 .149 .663 .545);--hop-1:color(display-p3 .2 .522 .616);--hop-2:color(display-p3 .349 .612 .667);--hop-3:color(display-p3 .929 .71 .294);--hop-hub:color(display-p3 .824 .412 .224);--map-edge-hover-direct:color(display-p3 0 .92 .78);--map-edge-hover-loop:color(display-p3 .6 .58 .8);--map-edge-hover-neighbor:color(display-p3 1 .8 .2);--map-edge-highlight:color(display-p3 1 .92 0);--palette-green-bright:--palette-aqua-bright: color(display-p3 .6 .82 .808);--palette-blue-bright:color(display-p3 .2 .522 .616)}}[data-theme=flora]{--accent-primary:#9ed072;--accent-secondary:#e7c664;--accent-tertiary:#76cce0;--accent-success:#9ed072;--accent-danger:#fc5d7c;--shadow-tint:#9ed07259;--sidebar-tint:#9ed0720f;--tooltip-bg:#2d2b3b;--hover-tint:#9ed07214;--glass-tint:#23212d;--card-fallback-bg:#23212deb;--signal-excellent:#9ed072;--signal-good:#76cce0;--signal-fair:#e7c664;--signal-poor:#f39660;--signal-critical:#fc5d7c;--signal-unknown:#7f8490;--sparkline-excellent:#6f6;--sparkline-good:#00e5ff;--sparkline-fair:#ffea00;--sparkline-poor:#f84;--sparkline-critical:#f58;--status-success:#9ed072;--status-warning:#e7c664;--status-danger:#fc5d7c;--status-info:#76cce0;--status-muted:#7f8490;--chart-1:#9ed072;--chart-2:#fc5d7c;--chart-3:#e7c664;--chart-4:#76cce0;--chart-5:#b39df3;--chart-6:#f39660;--chart-7:#7f8490;--chart-8:#e2e2e3;--chart-grid:#e2e2e30f;--chart-axis-tick:#e2e2e366;--chart-cursor:#e2e2e333;--pkt-advert:#e7c664;--pkt-flood:#76cce0;--pkt-txt-msg:#9ed072;--pkt-ack:#b39df3;--pkt-trace:#76cce0;--pkt-req:#f39660;--pkt-response:#9ed072;--pkt-grp-txt:#fc5d7c;--pkt-grp-data:#f39660;--pkt-path:#76cce0;--pkt-anon:#e7c664;--pkt-unknown:#7f8490;--route-flood:#76cce0;--route-direct:#e7c664;--route-transport:#b39df3;--metric-received:#9ed072;--metric-forwarded:#76cce0;--metric-transmitted:#e7c664;--metric-dropped:#fc5d7c;--log-debug:#7f8490;--log-info:#76cce0;--log-warning:#e7c664;--log-error:#fc5d7c;--log-critical:#ff6077;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#e2e2e3;--map-node-stroke:#33353f;--map-hub-color:#b39df3;--map-local-color:#e7c664;--map-neighbor-color:#e7c664;--map-mobile-color:#f39660;--map-room-color:#fc5d7c;--palette-bg-0:#181a1c;--palette-bg-1:#23212d;--palette-bg-2:#2c2e34;--palette-bg-3:#33353f;--palette-bg-4:#3b3d47;--palette-bg-5:#444751;--palette-bg-6:#55575e;--palette-bg-7:#7f8490;--palette-fg-0:#9ca0a4;--palette-fg-1:#b9bdc4;--palette-fg-2:#d6dae4;--palette-fg-3:#e2e2e3;--palette-fg-4:#f5f5f6;--palette-red:#ff6077;--palette-red-bright:#fc5d7c;--palette-orange:#e69875;--palette-orange-bright:#f39660;--palette-yellow:#d4b36a;--palette-yellow-bright:#e7c664;--palette-green:#7eb36a;--palette-green-bright:#9ed072;--palette-aqua:#5fb3b3;--palette-aqua-bright:#76cce0;--palette-blue:#5aa5c0;--palette-blue-bright:#76cce0;--palette-purple:#9a7ecc;--palette-purple-bright:#b39df3;--map-edge-rest:#444751;--map-edge-rest-bright:#55575e;--map-edge-rest-dim:#3b3d47;--map-edge-hover-direct:#76cce0;--map-edge-hover-loop:#b39df3;--map-edge-hover-standard:#9ca0a4;--map-edge-hover-neighbor:#e7c664;--link-strong:#9ed072;--link-medium:#e7c664;--link-weak:#fc5d7c;--hop-0:#76cce0;--hop-1:#9ed072;--hop-2:#b39df3;--hop-3:#e7c664;--hop-distant:#7f8490;--hop-hub:#f39660;--ctrl-primary:#7eb36a;--ctrl-primary-hover:#8ec37a;--ctrl-primary-border:#9ed072;--ctrl-primary-shadow:#3f5935;--ctrl-primary-highlight:#aee082;--ctrl-primary-inset:#6ea35a;--ctrl-success:#5fb3b3;--ctrl-success-hover:#6fc3c3;--ctrl-success-border:#76cce0;--ctrl-success-shadow:#2f5959;--ctrl-success-highlight:#86dcf0;--ctrl-success-inset:#4fa3a3;--ctrl-warning:#d4b36a;--ctrl-warning-hover:#e4c37a;--ctrl-warning-border:#e7c664;--ctrl-warning-shadow:#6a5935;--ctrl-warning-highlight:#f7d674;--ctrl-warning-inset:#c4a35a}@supports (color:color(display-p3 1 1 1)){[data-theme=flora]{--accent-primary:color(display-p3 .62 .816 .447);--accent-secondary:color(display-p3 .906 .776 .392);--accent-tertiary:color(display-p3 .463 .8 .878);--accent-success:color(display-p3 .62 .816 .447);--accent-danger:color(display-p3 .988 .365 .486);--signal-excellent:color(display-p3 .62 .816 .447);--signal-good:color(display-p3 .463 .8 .878);--signal-fair:color(display-p3 .906 .776 .392);--signal-poor:color(display-p3 .953 .588 .376);--signal-critical:color(display-p3 .988 .365 .486);--sparkline-excellent:color(display-p3 .4 1 .4);--sparkline-good:color(display-p3 0 .898 1);--sparkline-fair:color(display-p3 1 .918 0);--sparkline-poor:color(display-p3 1 .533 .267);--sparkline-critical:color(display-p3 1 .333 .533);--status-success:color(display-p3 .62 .816 .447);--status-warning:color(display-p3 .906 .776 .392);--status-danger:color(display-p3 .988 .365 .486);--status-info:color(display-p3 .463 .8 .878);--chart-1:color(display-p3 .62 .816 .447);--chart-2:color(display-p3 .988 .365 .486);--chart-3:color(display-p3 .906 .776 .392);--chart-4:color(display-p3 .463 .8 .878);--chart-5:color(display-p3 .702 .616 .953);--chart-6:color(display-p3 .953 .588 .376);--metric-received:color(display-p3 .62 .816 .447);--metric-forwarded:color(display-p3 .463 .8 .878);--metric-transmitted:color(display-p3 .906 .776 .392);--metric-dropped:color(display-p3 .988 .365 .486);--map-hub-color:color(display-p3 .8 .65 1);--map-local-color:color(display-p3 1 .85 .2);--map-neighbor-color:color(display-p3 1 .85 .2);--map-mobile-color:color(display-p3 1 .6 .35);--map-room-color:color(display-p3 1 .4 .55);--link-strong:color(display-p3 .62 .816 .447);--link-medium:color(display-p3 .906 .776 .392);--link-weak:color(display-p3 .988 .365 .486);--hop-0:color(display-p3 .463 .8 .878);--hop-1:color(display-p3 .62 .816 .447);--hop-2:color(display-p3 .702 .616 .953);--hop-3:color(display-p3 .906 .776 .392);--hop-hub:color(display-p3 .953 .588 .376);--map-edge-hover-direct:color(display-p3 .2 .95 1);--map-edge-hover-loop:color(display-p3 .8 .65 1);--map-edge-hover-neighbor:color(display-p3 1 .85 .2);--map-edge-highlight:color(display-p3 1 .95 0);--palette-red-bright:--palette-orange-bright: color(display-p3 .953 .588 .376);--palette-yellow-bright:color(display-p3 .906 .776 .392);--palette-green-bright:color(display-p3 .62 .816 .447);--palette-aqua-bright:color(display-p3 .463 .8 .878);--palette-purple-bright:color(display-p3 .702 .616 .953)}}[data-theme=kanagawa]{--accent-primary:#7e9cd8;--accent-secondary:#e6c384;--accent-tertiary:#7fb4ca;--accent-success:#98bb6c;--accent-danger:#e46876;--shadow-tint:#7e9cd859;--sidebar-tint:#7e9cd80f;--tooltip-bg:#1f1f28;--hover-tint:#7e9cd814;--glass-tint:#1f1f28;--glass-blur:6px;--glass-blur-elevated:8px;--card-fallback-bg:#1f1f28eb;--signal-excellent:#98bb6c;--signal-good:#7aa89f;--signal-fair:#e6c384;--signal-poor:#ffa066;--signal-critical:#e46876;--signal-unknown:#54546d;--sparkline-excellent:#7fe07f;--sparkline-good:#6dd;--sparkline-fair:#ffd966;--sparkline-poor:#f95;--sparkline-critical:#ff6b7f;--status-success:#98bb6c;--status-warning:#e6c384;--status-danger:#e46876;--status-info:#7fb4ca;--status-muted:#727169;--chart-1:#7e9cd8;--chart-2:#e6c384;--chart-3:#98bb6c;--chart-4:#957fb8;--chart-5:#7fb4ca;--chart-6:#e46876;--chart-7:#ffa066;--chart-8:#d27e99;--chart-grid:#dcd7ba0f;--chart-axis-tick:#dcd7ba66;--chart-cursor:#dcd7ba33;--pkt-advert:#e6c384;--pkt-flood:#7e9cd8;--pkt-txt-msg:#98bb6c;--pkt-ack:#957fb8;--pkt-trace:#7fb4ca;--pkt-req:#ffa066;--pkt-response:#98bb6c;--pkt-grp-txt:#d27e99;--pkt-grp-data:#e46876;--pkt-path:#7e9cd8;--pkt-anon:#e6c384;--pkt-unknown:#54546d;--route-flood:#7e9cd8;--route-direct:#e6c384;--route-transport:#957fb8;--metric-received:#98bb6c;--metric-forwarded:#7e9cd8;--metric-transmitted:#e6c384;--metric-dropped:#e46876;--log-debug:#54546d;--log-info:#7fb4ca;--log-warning:#e6c384;--log-error:#e46876;--log-critical:#c34043;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#dcd7ba;--map-node-stroke:#363646;--map-hub-color:#957fb8;--map-local-color:#e6c384;--map-neighbor-color:#e6c384;--map-mobile-color:#ffa066;--map-room-color:#d27e99;--palette-bg-0:#16161d;--palette-bg-1:#1f1f28;--palette-bg-2:#2a2a37;--palette-bg-3:#363646;--palette-bg-4:#54546d;--palette-bg-5:#4c566a;--palette-bg-6:#727169;--palette-bg-7:#8a8980;--palette-fg-0:#938aa9;--palette-fg-1:#c8c093;--palette-fg-2:#dcd7ba;--palette-fg-3:#e6dfb8;--palette-fg-4:#f5f1dc;--palette-red:#c34043;--palette-red-bright:#e46876;--palette-orange:#dca561;--palette-orange-bright:#ffa066;--palette-yellow:#c0a36e;--palette-yellow-bright:#e6c384;--palette-green:#6f894e;--palette-green-bright:#98bb6c;--palette-aqua:#6a9589;--palette-aqua-bright:#7aa89f;--palette-blue:#658594;--palette-blue-bright:#7e9cd8;--palette-purple:#624c83;--palette-purple-bright:#957fb8;--map-edge-rest:#54546d;--map-edge-rest-bright:#727169;--map-edge-rest-dim:#363646;--map-edge-hover-direct:#7aa89f;--map-edge-hover-loop:#957fb8;--map-edge-hover-standard:#938aa9;--map-edge-hover-neighbor:#e6c384;--link-strong:#98bb6c;--link-medium:#e6c384;--link-weak:#e46876;--hop-0:#7aa89f;--hop-1:#98bb6c;--hop-2:#7e9cd8;--hop-3:#e6c384;--hop-distant:#727169;--hop-hub:#ffa066;--ctrl-primary:#5a7ab0;--ctrl-primary-hover:#6a8ac0;--ctrl-primary-border:#7e9cd8;--ctrl-primary-shadow:#2d3d58;--ctrl-primary-highlight:#8eace8;--ctrl-primary-inset:#4a6aa0;--ctrl-success:#6a9a54;--ctrl-success-hover:#7aaa64;--ctrl-success-border:#98bb6c;--ctrl-success-shadow:#354d2a;--ctrl-success-highlight:#a8cb7c;--ctrl-success-inset:#5a8a44;--ctrl-warning:#c6a36c;--ctrl-warning-hover:#d6b37c;--ctrl-warning-border:#e6c384;--ctrl-warning-shadow:#635136;--ctrl-warning-highlight:#f6d394;--ctrl-warning-inset:#b6935c}@supports (color:color(display-p3 1 1 1)){[data-theme=kanagawa]{--accent-primary:color(display-p3 .494 .612 .847);--accent-secondary:color(display-p3 .902 .765 .518);--accent-tertiary:color(display-p3 .498 .706 .792);--accent-success:color(display-p3 .596 .733 .424);--accent-danger:color(display-p3 .894 .408 .463);--signal-excellent:color(display-p3 .596 .733 .424);--signal-good:color(display-p3 .478 .659 .624);--signal-fair:color(display-p3 .902 .765 .518);--signal-poor:color(display-p3 1 .627 .4);--signal-critical:color(display-p3 .894 .408 .463);--sparkline-excellent:color(display-p3 .498 .878 .498);--sparkline-good:color(display-p3 .4 .867 .867);--sparkline-fair:color(display-p3 1 .851 .4);--sparkline-poor:color(display-p3 1 .6 .333);--sparkline-critical:color(display-p3 1 .42 .498);--status-success:color(display-p3 .596 .733 .424);--status-warning:color(display-p3 .902 .765 .518);--status-danger:color(display-p3 .894 .408 .463);--status-info:color(display-p3 .498 .706 .792);--chart-1:color(display-p3 .494 .612 .847);--chart-2:color(display-p3 .902 .765 .518);--chart-3:color(display-p3 .596 .733 .424);--chart-4:color(display-p3 .584 .498 .722);--chart-5:color(display-p3 .498 .706 .792);--chart-6:color(display-p3 .894 .408 .463);--chart-7:color(display-p3 1 .627 .4);--chart-8:color(display-p3 .824 .494 .6);--metric-received:color(display-p3 .596 .733 .424);--metric-forwarded:color(display-p3 .494 .612 .847);--metric-transmitted:color(display-p3 .902 .765 .518);--metric-dropped:color(display-p3 .894 .408 .463);--map-hub-color:color(display-p3 .7 .55 .9);--map-local-color:color(display-p3 1 .85 .4);--map-neighbor-color:color(display-p3 1 .85 .4);--map-mobile-color:color(display-p3 1 .65 .35);--map-room-color:color(display-p3 1 .5 .65);--link-strong:color(display-p3 .596 .733 .424);--link-medium:color(display-p3 .902 .765 .518);--link-weak:color(display-p3 .894 .408 .463);--hop-0:color(display-p3 .478 .659 .624);--hop-1:color(display-p3 .596 .733 .424);--hop-2:color(display-p3 .494 .612 .847);--hop-3:color(display-p3 .902 .765 .518);--hop-hub:color(display-p3 1 .627 .4);--map-edge-hover-direct:color(display-p3 .4 .9 .85);--map-edge-hover-loop:color(display-p3 .7 .55 .9);--map-edge-hover-neighbor:color(display-p3 1 .85 .4);--map-edge-highlight:color(display-p3 1 .92 .3);--palette-red-bright:--palette-orange-bright: color(display-p3 1 .627 .4);--palette-yellow-bright:color(display-p3 .902 .765 .518);--palette-green-bright:color(display-p3 .596 .733 .424);--palette-aqua-bright:color(display-p3 .478 .659 .624);--palette-blue-bright:color(display-p3 .494 .612 .847);--palette-purple-bright:color(display-p3 .584 .498 .722)}}a,button,[role=button],.interactive,.glass-card,.data-card,.chart-container,.pill-tag,.pill-subtle,.toggle-group-item,.roster-row,.nav-item{transition:all .15s ease-out}a:hover,button:hover,[role=button]:hover,.interactive:hover,.glass-card:hover,.data-card:hover,.chart-container:hover,.pill-tag:hover,.pill-subtle:hover,.toggle-group-item:hover,.roster-row:hover,.nav-item:hover{transition-duration:0s}a,button,[role=button],input,select,textarea{touch-action:manipulation;-webkit-tap-highlight-color:transparent}a,button{cursor:pointer}body{background:var(--bg-body);color:var(--text-secondary);font-family:var(--font-display),system-ui,-apple-system,sans-serif;font-weight:var(--font-normal);font-size:var(--text-base);line-height:var(--leading-normal);letter-spacing:var(--tracking-normal);font-feature-settings:"cv02","cv03","cv04";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh}.type-hero{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-5xl);font-weight:var(--font-semibold);letter-spacing:var(--tracking-tight);color:var(--text-primary);line-height:1.05}.type-metric{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-4xl);font-weight:var(--font-semibold);letter-spacing:var(--tracking-tight);color:var(--text-primary);line-height:1.1}.type-title{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-xl);font-weight:var(--font-semibold);line-height:var(--leading-snug);color:var(--text-primary)}.type-heading,.type-subheading{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-lg);font-weight:var(--font-semibold);line-height:var(--leading-snug);color:var(--text-primary)}.type-body{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-base);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--text-secondary)}.type-body-lg{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-md);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--text-secondary)}.type-body-sm,.type-label{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:var(--leading-normal);color:var(--text-secondary)}.type-micro{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-normal);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.type-data{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-base);font-weight:var(--font-normal);line-height:var(--leading-normal);letter-spacing:var(--tracking-wide);font-feature-settings:"zero","tnum"}.type-data-lg{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-lg);font-weight:var(--font-medium);line-height:var(--leading-snug);letter-spacing:var(--tracking-normal);font-feature-settings:"zero","tnum"}.type-data-hero{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-3xl);font-weight:var(--font-medium);letter-spacing:var(--tracking-normal);font-feature-settings:"zero","tnum";line-height:1.1}.type-data-sm{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-sm);font-weight:var(--font-normal);line-height:var(--leading-normal);letter-spacing:var(--tracking-wider);font-feature-settings:"zero","tnum"}.type-data-xs{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-normal);letter-spacing:var(--tracking-widest);font-feature-settings:"zero","tnum"}.type-code{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:.875em;font-weight:var(--font-normal);line-height:var(--leading-relaxed);font-feature-settings:"zero","tnum"}.type-badge{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-xs);font-weight:var(--font-medium);letter-spacing:.08em;text-transform:uppercase;line-height:1}.type-tag{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-xs);font-weight:var(--font-medium);letter-spacing:.05em;line-height:1}.liquid-glass{background-color:var(--glass-tint);border:none;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.liquid-glass{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.liquid-glass{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.liquid-glass{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.liquid-glass:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.liquid-glass-elevated{background-color:var(--glass-tint);border:none;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.liquid-glass-elevated{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity-elevated),transparent)}}.liquid-glass-elevated{-webkit-backdrop-filter:blur(var(--glass-blur-elevated))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur-elevated))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 2px 1px 0 -1px var(--glass-light),inset -1.5px -1px 0 -1px var(--glass-light),inset -2px -6px 1px -5px var(--glass-light),inset -1px 2px 3px -1px var(--glass-dark),inset 0 -4px 1px -2px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.liquid-glass-elevated{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 2px 1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -1.5px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -2px -6px 1px -5px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -1px 2px 3px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 -4px 1px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.liquid-glass-elevated:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.liquid-glass-glow{background-color:var(--glass-tint);border:none;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.liquid-glass-glow{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.liquid-glass-glow{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--accent-primary),inset 1.8px 3px 0 -2px var(--accent-primary),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.liquid-glass-glow{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-primary)calc(var(--glass-reflex-light)*15%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--accent-primary)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.liquid-glass-glow:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.liquid-glass-sm{border-radius:.5rem}.liquid-glass-md{border-radius:.875rem}.liquid-glass-lg{border-radius:1.125rem}.liquid-glass-xl{border-radius:1.5rem}.liquid-glass-pill{border-radius:9999px}.liquid-glass-none{border-radius:0}.glass-card{background-color:var(--glass-tint);border:none;border-radius:1.125rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.glass-card{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.glass-card{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-card{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.glass-card:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.glass-card-glow{background-color:var(--glass-tint);border:none;border-radius:1.125rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.glass-card-glow{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.glass-card-glow{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--accent-primary),inset 1.8px 3px 0 -2px var(--accent-primary),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-card-glow{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-primary)calc(var(--glass-reflex-light)*15%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--accent-primary)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.glass-card-glow:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.glass-card-elevated{background-color:var(--glass-tint);border:none;border-radius:1.125rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.glass-card-elevated{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity-elevated),transparent)}}.glass-card-elevated{-webkit-backdrop-filter:blur(var(--glass-blur-elevated))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur-elevated))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 2px 1px 0 -1px var(--glass-light),inset -1.5px -1px 0 -1px var(--glass-light),inset -2px -6px 1px -5px var(--glass-light),inset -1px 2px 3px -1px var(--glass-dark),inset 0 -4px 1px -2px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-card-elevated{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 2px 1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -1.5px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -2px -6px 1px -5px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -1px 2px 3px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 -4px 1px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.glass-card-elevated:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.glass-sidebar{background-color:var(--glass-tint);border:none;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.glass-sidebar{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.glass-sidebar{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset -1px 0 0 0 var(--glass-light),inset 1px 0 0 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-sidebar{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset -1px 0 color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*8%),transparent),inset 1px 0 color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent)}}.glass-sidebar:before{content:"";pointer-events:none;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.glass-card-inner{background-color:var(--glass-tint)}@supports (color:color-mix(in lab,red,red)){.glass-card-inner{background-color:color-mix(in srgb,var(--glass-tint)8%,transparent)}}.glass-card-inner{border:1px solid var(--glass-light)}@supports (color:color-mix(in lab,red,red)){.glass-card-inner{border:1px solid color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*5%),transparent)}}.glass-card-inner{box-shadow:inset 0 1px 2px var(--glass-dark);border-radius:.75rem}@supports (color:color-mix(in lab,red,red)){.glass-card-inner{box-shadow:inset 0 1px 2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*5%),transparent)}}.glass-thumbnail{border:none;border-radius:.375rem;position:relative;overflow:hidden}.glass-thumbnail:after{content:"";z-index:10;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 0 .5px var(--glass-light),inset .9px 1.5px 0 -1px var(--glass-light),inset -1px -1px 0 -1px var(--glass-light),inset -1.5px -4px .5px -3px var(--glass-light),inset -.15px -.5px 2px 0 var(--glass-dark),inset -.75px 1.25px 0 -1px var(--glass-dark),inset 0 1.5px 2px -1px var(--glass-dark);position:absolute;top:0;right:0;bottom:0;left:0}@supports (color:color-mix(in lab,red,red)){.glass-thumbnail:after{box-shadow:inset 0 0 0 .5px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*16%),transparent),inset .9px 1.5px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*140%),transparent),inset -1px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*125%),transparent),inset -1.5px -4px .5px -3px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*94%),transparent),inset -.15px -.5px 2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*18%),transparent),inset -.75px 1.25px 0 -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*31%),transparent),inset 0 1.5px 2px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*31%),transparent)}}.glass-thumbnail-selected:after{box-shadow:inset 0 0 0 1.5px var(--accent-primary),inset .9px 1.5px 0 -1px var(--glass-light),inset -1px -1px 0 -1px var(--glass-light),inset -1.5px -4px .5px -3px var(--glass-light),inset -.15px -.5px 2px 0 var(--glass-dark),inset -.75px 1.25px 0 -1px var(--glass-dark),inset 0 1.5px 2px -1px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-thumbnail-selected:after{box-shadow:inset 0 0 0 1.5px var(--accent-primary),inset .9px 1.5px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*140%),transparent),inset -1px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*125%),transparent),inset -1.5px -4px .5px -3px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*94%),transparent),inset -.15px -.5px 2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*18%),transparent),inset -.75px 1.25px 0 -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*31%),transparent),inset 0 1.5px 2px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*31%),transparent)}}.glass-card-frame{z-index:1000;box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark);border-radius:1.125rem;position:relative}@supports (color:color-mix(in lab,red,red)){.glass-card-frame{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*15%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*15%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*25%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*25%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*15%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent)}}.glass-card-frame:before{content:"";pointer-events:none;border-radius:inherit;z-index:1001;background:var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.separator-line{background:linear-gradient(to right,transparent,var(--glass-light)20%,var(--glass-light)80%,transparent);height:1px}@supports (color:color-mix(in lab,red,red)){.separator-line{background:linear-gradient(to right,transparent,color-mix(in srgb,var(--glass-light)8%,transparent)20%,color-mix(in srgb,var(--glass-light)8%,transparent)80%,transparent)}}.separator-line-vertical{background:linear-gradient(to bottom,transparent,var(--glass-light)20%,var(--glass-light)80%,transparent);width:1px}@supports (color:color-mix(in lab,red,red)){.separator-line-vertical{background:linear-gradient(to bottom,transparent,color-mix(in srgb,var(--glass-light)8%,transparent)20%,color-mix(in srgb,var(--glass-light)8%,transparent)80%,transparent)}}.rounded-pill{border-radius:9999px}.rounded-card{border-radius:1.125rem}.card-sm{min-height:7rem}.card-md{min-height:11rem}.card-lg{min-height:14rem}.card-hero{min-height:20rem}.card-auto{min-height:auto}@media(max-width:640px){.card-sm{min-height:6rem}.card-md{min-height:9rem}.card-lg{min-height:12rem}.card-hero{min-height:16rem}}.icon-sm{flex-shrink:0;width:1rem;height:1rem}.icon-md{flex-shrink:0;width:1.25rem;height:1.25rem}.icon-lg{flex-shrink:0;width:1.5rem;height:1.5rem}.icon-xl{flex-shrink:0;width:2rem;height:2rem}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-surface)}::-webkit-scrollbar-thumb{background-color:var(--border-strong);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--text-muted)}.map-container-16-9{aspect-ratio:16/9;width:100%;position:relative}@supports not (aspect-ratio:16 / 9){.map-container-16-9{height:0;padding-bottom:56.25%}}.map-container-16-9{min-height:280px;max-height:80dvh}@supports not (aspect-ratio:16 / 9){.map-container-16-9>*{width:100%;height:100%;position:absolute;top:0;left:0}}@media(max-width:639px){.map-container-16-9{aspect-ratio:4/5;min-height:320px;max-height:75dvh}@supports not (aspect-ratio:4 / 5){.map-container-16-9{padding-bottom:125%}}}@media(min-width:640px)and (max-width:1023px){.map-container-16-9{aspect-ratio:3/2}@supports not (aspect-ratio:3 / 2){.map-container-16-9{padding-bottom:66.67%}}}@media(min-width:1920px){.map-container-16-9{max-height:720px}}.map-container-fullscreen{width:100vw!important;height:calc(100dvh - 3.5rem)!important;aspect-ratio:unset!important;min-height:unset!important;max-height:unset!important;z-index:999!important;border-radius:0!important;padding-bottom:0!important;position:fixed!important;top:3.5rem!important;right:0!important;bottom:0!important;left:0!important}@media(min-width:1024px){.map-container-fullscreen{height:100dvh!important;top:0!important}}.map-blue-water{position:relative}.map-blue-water .leaflet-tile-pane{filter:sepia(.15)hue-rotate(180deg)saturate(.7)brightness(.95)}.map-blue-water:after{content:"";pointer-events:none;z-index:400;mix-blend-mode:multiply;background:linear-gradient(#0d1e3226,#14284614);position:absolute;top:0;right:0;bottom:0;left:0}.map-blue-water .leaflet-marker-pane,.map-blue-water .leaflet-popup-pane,.map-blue-water .leaflet-overlay-pane{filter:none!important}.leaflet-control-attribution{color:var(--text-muted)!important;background:#141416d9!important;border-radius:4px 0 0!important;padding:2px 6px!important;font-size:10px!important}.leaflet-control-attribution a{color:var(--text-secondary)!important}.leaflet-control-zoom{-webkit-backdrop-filter:blur(12px);overflow:hidden;background:#141416d9!important;border:1px solid #8ca0c833!important;border-radius:.75rem!important;margin-top:1rem!important;margin-left:1rem!important}.leaflet-control-zoom a{color:var(--text-secondary)!important;background:0 0!important;border:none!important;border-bottom:1px solid #8ca0c826!important;width:32px!important;height:32px!important;font-size:16px!important;font-weight:500!important;line-height:32px!important}.leaflet-control-zoom a:last-child{border-bottom:none!important}.leaflet-control-zoom a:hover{color:var(--text-primary)!important;background:#ffffff1a!important}.leaflet-control-zoom a.leaflet-disabled{opacity:.5;color:var(--text-muted)!important}.map-dot-marker{background:0 0!important;border:none!important}.map-ring-marker,.map-filled-marker,.map-local-marker{cursor:pointer!important;z-index:500!important;pointer-events:auto!important;background:0 0!important;border:none!important}.leaflet-marker-pane{z-index:600!important;pointer-events:auto!important}.leaflet-marker-pane .leaflet-marker-icon{pointer-events:auto!important}.leaflet-popup-content-wrapper{-webkit-backdrop-filter:blur(12px)brightness(.7)saturate(.9)!important;backdrop-filter:blur(12px)brightness(.7)saturate(.9)!important;background-color:#20242aeb!important;border:none!important;border-radius:.75rem!important;padding:0!important;position:relative!important;overflow:hidden!important;box-shadow:inset 0 0 0 1px #ffffff1a,0 4px 16px #00000080!important}.leaflet-popup-content{color:var(--text-primary)!important;margin:.75rem!important}.leaflet-popup-content strong{color:var(--text-primary)!important}.leaflet-popup-content hr{border-color:#8ca0c826!important;margin:.5rem 0!important}.leaflet-popup-tip-container{display:none!important}.leaflet-popup-close-button{color:var(--text-muted)!important;width:24px!important;height:24px!important;padding:6px!important;font-size:18px!important;top:4px!important;right:4px!important}.leaflet-popup-close-button:hover{color:var(--text-primary)!important;background:#ffffff1a!important;border-radius:4px!important}.leaflet-tooltip{white-space:nowrap;color:var(--text-primary)!important;background-color:#050505!important;border:none!important;border-radius:.5rem!important;padding:.375rem .5rem!important;font-size:11px!important;position:relative!important;overflow:hidden!important;box-shadow:inset 0 0 0 1px #ffffff14,inset 1.5px 2px 0 -1px #ffffff1f,inset -1.5px -1.5px 0 -1px #ffffff14,inset 0 -1px 3px #00000026!important}.leaflet-tooltip:after{content:""!important;pointer-events:none!important;border-radius:inherit!important;z-index:999!important;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom)!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important}.leaflet-tooltip:before{display:none!important}.leaflet-tooltip .text-text-muted{color:var(--text-muted)!important}.maplibregl-popup{font-family:var(--font-display),system-ui,-apple-system,sans-serif;font-size:var(--text-sm)}.maplibregl-popup-content{min-width:140px;color:var(--text-primary)!important;background-color:#050505!important;border:none!important;border-radius:.75rem!important;padding:.75rem!important;position:relative!important;overflow:hidden!important;box-shadow:inset 0 0 0 1px #ffffff14,inset 1.8px 3px 0 -2px #ffffff1f,inset -2px -2px 0 -2px #ffffff14,inset -3px -8px 1px -6px #ffffff0f,inset -.3px -1px 4px #00000026,inset 0 3px 4px -2px #0000001f!important}.maplibregl-popup-content:after{content:""!important;pointer-events:none!important;border-radius:inherit!important;z-index:999!important;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom)!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important}.maplibregl-popup-close-button{border-radius:4px;transition:background .1s,color .1s;color:var(--text-muted)!important;width:24px!important;height:24px!important;padding:6px!important;font-size:18px!important;top:4px!important;right:4px!important}.maplibregl-popup-close-button:hover{color:var(--text-primary)!important;background:#ffffff1a!important}.maplibregl-popup-tip{display:none!important}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{border-top-color:var(--tooltip-bg)!important}.maplibregl-marker.local-node-marker{z-index:10!important}.maplibregl-popup{z-index:100!important}.maplibregl-ctrl-attrib{color:var(--text-muted)!important;background:#141416cc!important;padding:2px 6px!important;font-size:10px!important}.maplibregl-ctrl-attrib a{color:var(--text-secondary)!important}.maplibregl-ctrl-attrib.maplibregl-compact{background:#141416cc!important;border-radius:4px!important}.maplibregl-map,.leaflet-container{touch-action:pan-x pan-y;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.maplibregl-ctrl button:focus,.leaflet-control a:focus{outline:2px solid var(--accent-primary);outline-offset:2px}@media(prefers-contrast:high){.maplibregl-ctrl button,.leaflet-control a{border:2px solid!important}.map-legend,.map-controls{border:2px solid var(--text-primary)!important}}@media(prefers-reduced-motion:reduce){.maplibregl-map,.leaflet-container{transition:none!important}.maplibregl-map *{transition:none!important;animation:none!important}}@-moz-document url-prefix(){.maplibregl-canvas{transform:translateZ(0)}}@supports (-webkit-touch-callout:none){.maplibregl-canvas{will-change:transform;transform:translateZ(0)}}@media(forced-colors:active){.maplibregl-ctrl button,.leaflet-control a{forced-color-adjust:none;color:buttontext!important;background:canvas!important;border:1px solid buttontext!important}.maplibregl-popup-content,.leaflet-popup-content-wrapper{color:canvastext!important;background:canvas!important;border:2px solid canvastext!important}}.maplibregl-ctrl-attrib-button{background-color:#141416cc!important;border-radius:4px!important}.maplibregl-ctrl-group{background-color:#050505!important;border:none!important;border-radius:.75rem!important;position:relative!important;overflow:hidden!important;box-shadow:inset 0 0 0 1px #ffffff14,inset 1.5px 2px 0 -1px #ffffff1f,inset -1.5px -1.5px 0 -1px #ffffff14,inset 0 -1px 3px #00000026!important}.maplibregl-ctrl-group:after{content:""!important;pointer-events:none!important;border-radius:inherit!important;z-index:999!important;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom)!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important}.maplibregl-ctrl-group button{background:0 0!important;border:none!important;border-bottom:1px solid #8ca0c81f!important;width:32px!important;height:32px!important}.maplibregl-ctrl-group button:last-child{border-bottom:none!important}.maplibregl-ctrl-group button:hover{background:#ffffff14!important}.maplibregl-ctrl-group button .maplibregl-ctrl-icon{filter:invert()brightness(.75)}.maplibregl-ctrl-group button:hover .maplibregl-ctrl-icon{filter:invert()brightness()}.maplibregl-ctrl-scale{border:1px solid var(--map-local-color)!important;color:var(--map-local-color)!important;font-size:10px!important;font-family:var(--font-data),monospace!important;background:0 0!important;border-top:none!important;border-radius:0!important;padding:2px 6px!important;line-height:1.2!important}.map-control-glass{background-color:#050505;border:none;border-radius:.75rem;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff14,inset 1.5px 2px 0 -1px #ffffff1f,inset -1.5px -1.5px 0 -1px #ffffff14,inset 0 -1px 3px #00000026}.map-control-glass:after{content:"";pointer-events:none;border-radius:inherit;z-index:999;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.map-control-glass-active{background-color:#050505;border:none;border-radius:.75rem;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff1f,inset 1.5px 2px 0 -1px #ffffff2e,inset -1.5px -1.5px 0 -1px #ffffff1a,inset 0 -1px 3px #00000026}.map-control-glass-active:after{content:"";pointer-events:none;border-radius:inherit;z-index:999;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.map-controls-container{flex-direction:column;align-items:flex-end;gap:.375rem;max-width:calc(100vw - 1.5rem);display:flex}.map-controls-row{flex-wrap:wrap;justify-content:flex-end;gap:.375rem;display:flex}.map-controls-secondary{flex-wrap:wrap}.map-control-btn{padding:.5rem;transition:background-color .15s}.map-control-btn:hover{background-color:#ffffff1a}.map-control-icon{width:16px;height:16px}@media(max-width:639px){.map-controls-container{gap:.25rem;max-width:calc(100vw - 1rem)}.map-controls-row{gap:.25rem}.map-control-btn{padding:.375rem}.map-control-icon{width:14px;height:14px}.map-control-label{display:none}}@media(min-width:640px)and (max-width:1023px){.map-controls-container{gap:.375rem}}@media(min-width:1024px){.map-controls-container,.map-controls-row{gap:.5rem}}.map-legend-stack{z-index:600;flex-direction:column;gap:.5rem;max-width:130px;display:flex;position:absolute;bottom:.75rem;left:.75rem}@media(min-width:640px){.map-legend-stack{max-width:150px;bottom:1rem;left:1rem}}.map-edge-tooltip{z-index:1000;pointer-events:none;position:absolute;bottom:1rem;left:calc(50% + 85px);transform:translate(-50%)}.map-edge-tooltip-inner{pointer-events:auto;padding:.625rem 1rem}.map-container-fullscreen .map-edge-tooltip{bottom:1.5rem}.font-mono{font-feature-settings:"zero";font-family:var(--font-data),"SF Mono",Monaco,monospace!important}.font-display{font-family:var(--font-display),system-ui,sans-serif!important}.tabular-nums{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.layout-container{width:100%;max-width:80rem;margin-left:auto;margin-right:auto}.grid-12{grid-template-columns:repeat(12,minmax(0,1fr));gap:1rem;display:grid}@media(min-width:768px){.grid-12{gap:1.5rem}}.col-span-6{grid-column:span 6/span 6}.col-span-4{grid-column:span 4/span 4}.col-span-3{grid-column:span 3/span 3}@media(min-width:640px){.sm\:col-span-6{grid-column:span 6/span 6}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-3{grid-column:span 3/span 3}}@media(min-width:768px){.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-span-12{grid-column:span 12/span 12}}@media(min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-span-12{grid-column:span 12/span 12}}@media(min-width:1280px){.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-span-3{grid-column:span 3/span 3}.xl\:col-span-4{grid-column:span 4/span 4}.xl\:col-span-8{grid-column:span 8/span 8}}.gap-space-2{gap:.5rem}.gap-space-3{gap:.75rem}.gap-space-4{gap:1rem}.gap-space-6{gap:1.5rem}.gap-space-8{gap:2rem}.gap-y-space-4{row-gap:1rem}.gap-y-space-6{row-gap:1.5rem}.gap-y-space-8{row-gap:2rem}.gap-x-space-4{column-gap:1rem}.gap-x-space-6{column-gap:1.5rem}.gap-x-space-8{column-gap:2rem}.card-padding{padding:1rem}@media(min-width:768px){.card-padding{padding:1.5rem}}.card-padding-sm{padding:.75rem}@media(min-width:768px){.card-padding-sm{padding:1rem}}.section-gap{flex-direction:column;gap:1rem;display:flex}@media(min-width:640px){.section-gap{gap:1.5rem}}@media(min-width:1024px){.section-gap{gap:2rem}}.stats-row-hero{grid-template-columns:repeat(2,1fr);gap:1rem;display:grid}@media(min-width:768px){.stats-row-hero{grid-template-columns:repeat(3,1fr);gap:1.5rem}}@media(min-width:1280px){.stats-row-hero{grid-template-columns:repeat(5,1fr)}}.stats-row-secondary{grid-template-columns:1fr;gap:1rem;display:grid}@media(min-width:640px){.stats-row-secondary{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.stats-row-secondary{grid-template-columns:repeat(4,1fr);gap:1.5rem}}.content-grid{grid-template-columns:1fr;gap:1rem;display:grid}@media(min-width:768px){.content-grid{gap:1.5rem}}@media(min-width:1280px){.content-grid{grid-template-columns:2fr 1fr}}.content-main,.content-sidebar{min-width:0}.pill-filled{background:var(--accent-primary);color:var(--bg-body);border-radius:9999px;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;line-height:1;transition:opacity .15s;display:inline-flex}.pill-filled:hover{opacity:.9}.pill-subtle{background:var(--bg-subtle);color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:9999px;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;line-height:1;transition:all .15s;display:inline-flex}.pill-subtle:hover{background:var(--bg-elevated);color:var(--text-primary)}.pill-metric{text-transform:uppercase;letter-spacing:.05em;border-radius:9999px;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.625rem;font-weight:600;line-height:1;display:inline-flex}.pill-metric-positive{background:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.pill-metric-positive{background:color-mix(in srgb,var(--accent-success)15%,transparent)}}.pill-metric-positive{color:var(--accent-success)}.pill-metric-negative{background:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.pill-metric-negative{background:color-mix(in srgb,var(--accent-danger)15%,transparent)}}.pill-metric-negative{color:var(--accent-danger)}.pill-metric-neutral{background:var(--overlay-soft);color:var(--text-secondary)}.pill-tag{background:var(--accent-primary);border-radius:9999px;align-items:center;padding:.125rem .5rem;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.pill-tag{background:color-mix(in srgb,var(--accent-primary)10%,transparent)}}.pill-tag{color:var(--accent-primary);text-transform:uppercase;letter-spacing:.08em;font-size:.625rem;font-weight:600}.toggle-group{background-color:var(--glass-tint);border-radius:9999px;padding:.25rem;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.toggle-group{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.toggle-group{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.toggle-group{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent)}}.toggle-group:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.toggle-group-item{color:var(--text-muted);border-radius:9999px;padding:.375rem .75rem;font-size:.75rem;font-weight:500;transition:all .15s}.toggle-group-item:hover{color:var(--text-secondary)}.toggle-group-item.active{background-color:var(--glass-tint)}@supports (color:color-mix(in lab,red,red)){.toggle-group-item.active{background-color:color-mix(in srgb,var(--glass-tint)36%,transparent)}}.toggle-group-item.active{color:var(--accent-primary);box-shadow:inset 0 0 0 1px var(--glass-light),inset 2px 1px 0 -1px var(--glass-light),inset -1.5px -1px 0 -1px var(--glass-light),inset -2px -6px 1px -5px var(--glass-light),inset -1px 2px 3px -1px var(--glass-dark),inset 0 -4px 1px -2px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.toggle-group-item.active{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 2px 1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -1.5px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -2px -6px 1px -5px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -1px 2px 3px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 0 -4px 1px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*6%),transparent)}}.toggle-group-sm{padding:.1875rem}.toggle-group-sm .toggle-group-item{padding:.25rem .5rem;font-size:.6875rem}.data-card{contain:layout style;isolation:isolate;background-color:var(--glass-tint);border:none;border-radius:1.125rem;padding:1.25rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.data-card{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.data-card{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.data-card{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*6%),transparent)}}.data-card:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.data-card-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.data-card-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);font-size:.6875rem;font-weight:600}.data-card-controls{align-items:center;gap:.5rem;display:flex}.data-card-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:2rem;font-weight:600;line-height:1.1}.data-card-secondary{color:var(--text-muted);margin-top:.25rem;font-size:.75rem}.chart-container{isolation:isolate;background-color:var(--glass-tint);border:none;border-radius:1.125rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.chart-container{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.chart-container{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.chart-container{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*6%),transparent)}}.chart-container:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.chart-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.chart-title{color:var(--text-primary);align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;display:flex}.chart-title-icon{width:1.125rem;height:1.125rem;color:var(--icon-card-title)}.chart-body{padding:1rem;position:relative}.chart-axis-label{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.6875rem}.chart-gridline{stroke:var(--chart-grid);stroke-dasharray:4 4}.chart-glow-primary{filter:drop-shadow(0 0 6px var(--accent-primary))}.chart-glow-secondary{filter:drop-shadow(0 0 6px var(--accent-secondary))}.chart-glow-tertiary{filter:drop-shadow(0 0 6px var(--accent-tertiary))}.roster-list{flex-direction:column;display:flex}.roster-row{border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem .75rem .75rem .5rem;transition:background .15s;display:flex}@media(min-width:640px){.roster-row{gap:.75rem;padding:.75rem 1rem .75rem .75rem}}.roster-row:hover{background:var(--bg-subtle)}@supports (color:color-mix(in lab,red,red)){.roster-row:hover{background:color-mix(in srgb,var(--bg-subtle)80%,transparent)}}.roster-row-interactive{cursor:pointer}.roster-row-interactive:active{background:var(--bg-subtle)}.roster-row.selected{background:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.roster-row.selected{background:color-mix(in srgb,var(--accent-primary)8%,transparent)}}.roster-icon{background-color:var(--glass-tint);border-radius:.625rem;flex-shrink:0;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;display:flex}@supports (color:color-mix(in lab,red,red)){.roster-icon{background-color:color-mix(in srgb,var(--glass-tint)10%,transparent)}}.roster-icon{box-shadow:inset 0 0 0 1px var(--glass-light),inset .5px 1px 0 0 var(--glass-light)}@supports (color:color-mix(in lab,red,red)){.roster-icon{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*5%),transparent),inset .5px 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*30%),transparent)}}.roster-icon-sm{border-radius:.5rem;width:2rem;height:2rem}.roster-content{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.roster-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:500;overflow:hidden}.roster-subtitle{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.roster-metrics{color:var(--text-muted);align-items:center;gap:1rem;display:flex}.roster-metric{color:var(--text-secondary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.8125rem;font-weight:600}@media(max-width:639px){.roster-row{flex-wrap:wrap;gap:.375rem;padding:.5rem .5rem .5rem .375rem}.roster-icon{border-radius:.375rem;width:1.75rem;height:1.75rem}.roster-content{flex:1 1 0;min-width:0;overflow:hidden}.roster-title{font-size:.75rem}.roster-metrics{flex-wrap:wrap;order:3;gap:.5rem;width:100%;margin-top:.25rem;padding-left:2.25rem}.roster-metric{flex-shrink:0;margin-left:auto;font-size:.6875rem}}@media(min-width:640px)and (max-width:767px){.roster-row{gap:.5rem}.roster-icon{border-radius:.5rem;width:2rem;height:2rem}.roster-metrics{gap:.75rem}}@media(min-width:768px)and (max-width:1023px){.roster-metrics{gap:.875rem}}@media(min-width:1024px){.roster-row{gap:.875rem}.roster-metrics{gap:1rem}}.contacts-grid-header,.contacts-grid-row{grid-template-columns:1fr;grid-template-areas:"node";align-items:center;gap:.75rem;display:grid}.contacts-grid-row{padding:.625rem .75rem;transition:background .15s}.contacts-grid-row:hover{background:var(--bg-subtle)}@supports (color:color-mix(in lab,red,red)){.contacts-grid-row:hover{background:color-mix(in srgb,var(--bg-subtle)80%,transparent)}}@media(max-width:639px){.contacts-grid-row{flex-wrap:nowrap;gap:.5rem;padding:.5rem .625rem;display:flex}.contacts-col-signal,.contacts-col-distance,.contacts-col-centrality,.contacts-col-activity{display:none}.contacts-col-node{flex:1 1 0;min-width:0}.contacts-col-seen,.contacts-col-actions{flex-shrink:0;align-self:center}}@media(min-width:640px){.contacts-grid-header,.contacts-grid-row{grid-template-columns:minmax(200px,1fr) 100px 60px 68px;grid-template-areas:"node signal seen actions"}.contacts-col-node{grid-area:node}.contacts-col-signal{grid-area:signal;display:flex}.contacts-col-seen{grid-area:seen}.contacts-col-actions{grid-area:actions}.contacts-col-distance,.contacts-col-centrality,.contacts-col-activity{display:none}}@media(min-width:768px){.contacts-grid-header,.contacts-grid-row{grid-template-columns:minmax(240px,1fr) 110px 80px 60px 68px;grid-template-areas:"node signal distance seen actions"}.contacts-col-distance{grid-area:distance;display:flex}}@media(min-width:1024px){.contacts-grid-header,.contacts-grid-row{grid-template-columns:minmax(280px,1fr) 110px 80px 64px 64px 68px;grid-template-areas:"node signal distance centrality seen actions"}.contacts-col-centrality{grid-area:centrality;display:flex}}@media(min-width:1280px){.contacts-grid-header,.contacts-grid-row{grid-template-columns:minmax(320px,1fr) 120px 80px 64px 64px 68px 68px;grid-template-areas:"node signal distance centrality activity seen actions"}.contacts-col-activity{grid-area:activity;display:flex}}.contacts-col-node{min-width:0}.contacts-col-signal,.contacts-col-distance,.contacts-col-centrality,.contacts-col-activity,.contacts-col-seen,.contacts-col-actions{white-space:nowrap;flex-shrink:0;overflow:hidden}.roster-separator{background:linear-gradient(to right,transparent,var(--border-subtle)20%,var(--border-subtle)80%,transparent);height:1px;margin:0 1rem}.roster-empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:3rem 1.5rem;display:flex}.roster-empty-icon{width:3rem;height:3rem;color:var(--text-muted);opacity:.5;margin-bottom:1rem}.roster-empty-title{color:var(--text-secondary);margin-bottom:.25rem;font-size:.875rem;font-weight:500}.roster-empty-text{color:var(--text-muted);font-size:.75rem}.btn-skeuo{cursor:pointer;background:var(--ctrl-base);border:1px solid var(--ctrl-border);color:var(--text-primary);box-shadow:0 3px 0 var(--ctrl-shadow-dark),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-highlight),inset 0 -2px 0 var(--ctrl-inset);border-radius:.5rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:.875rem;font-weight:600;transition:all .12s ease-out;display:inline-flex;position:relative}.btn-skeuo:hover{background:var(--ctrl-base-hover);border-color:var(--ctrl-border-hover);box-shadow:0 4px 0 var(--ctrl-shadow-dark),0 8px 20px var(--ctrl-shadow-mid),0 3px 8px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-highlight),inset 0 -2px 0 var(--ctrl-inset)}.btn-skeuo:active{background:var(--ctrl-base-active);box-shadow:0 0 0 var(--ctrl-shadow-dark),0 1px 3px var(--ctrl-shadow-mid),inset 0 3px 6px var(--ctrl-shadow-mid),inset 0 1px 0 var(--ctrl-shadow-dark);transform:translateY(3px)}.btn-skeuo:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn-skeuo-primary{background:var(--ctrl-primary);border-color:var(--ctrl-primary-border);color:var(--text-primary);box-shadow:0 3px 0 var(--ctrl-primary-shadow),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-primary-highlight),inset 0 -2px 0 var(--ctrl-primary-inset)}.btn-skeuo-primary:hover{background:var(--ctrl-primary-hover);border-color:var(--ctrl-primary-highlight);box-shadow:0 4px 0 var(--ctrl-primary-shadow),0 8px 20px var(--ctrl-shadow-mid),0 3px 8px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-primary-highlight),inset 0 -2px 0 var(--ctrl-primary-inset)}.btn-skeuo-success{background:var(--ctrl-success);border-color:var(--ctrl-success-border);color:var(--text-primary);box-shadow:0 3px 0 var(--ctrl-success-shadow),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-success-highlight),inset 0 -2px 0 var(--ctrl-success-inset)}.btn-skeuo-success:hover{background:var(--ctrl-success-hover);border-color:var(--ctrl-success-highlight);box-shadow:0 4px 0 var(--ctrl-success-shadow),0 8px 20px var(--ctrl-shadow-mid),0 3px 8px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-success-highlight),inset 0 -2px 0 var(--ctrl-success-inset)}.btn-skeuo-warning{background:var(--ctrl-warning);border-color:var(--ctrl-warning-border);color:var(--text-primary);box-shadow:0 3px 0 var(--ctrl-warning-shadow),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-warning-highlight),inset 0 -2px 0 var(--ctrl-warning-inset)}.btn-skeuo-warning:hover{background:var(--ctrl-warning-hover);border-color:var(--ctrl-warning-highlight);box-shadow:0 4px 0 var(--ctrl-warning-shadow),0 8px 20px var(--ctrl-shadow-mid),0 3px 8px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-warning-highlight),inset 0 -2px 0 var(--ctrl-warning-inset)}.btn-skeuo-neutral{background:var(--ctrl-base);border-color:var(--ctrl-border);color:var(--text-secondary);box-shadow:0 3px 0 var(--ctrl-shadow-dark),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-highlight),inset 0 -2px 0 var(--ctrl-inset)}.btn-skeuo-neutral:hover{background:var(--ctrl-base-hover);color:var(--text-primary);box-shadow:0 4px #18191d,0 8px 20px #08090b,0 3px 8px #0d0e12,inset 0 1px #5e5f6b,inset 0 -2px #26272e}.control-card{background-color:var(--glass-tint);border-radius:.875rem;padding:1rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.control-card{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.control-card{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.control-card{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent)}}.control-card:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.control-card-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.control-card-label{color:var(--text-muted);font-size:.8125rem}.control-card-value{font-size:.8125rem;font-weight:600}.control-card-value-active{color:var(--accent-success)}.control-card-value-inactive{color:var(--text-muted)}.btn-skeuo-icon{stroke-width:2.5px;width:1.125rem;height:1.125rem}.control-panel-skeuo{background:linear-gradient(180deg,var(--ctrl-panel-top)0%,var(--ctrl-panel-mid)50%,var(--ctrl-panel-bottom)100%);border:1px solid var(--ctrl-panel-border);box-shadow:inset 0 1px 0 var(--glass-light),inset 0 -1px 0 var(--glass-dark),0 4px 12px var(--glass-dark),0 1px 3px var(--glass-dark);border-radius:.75rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}@supports (color:color-mix(in lab,red,red)){.control-panel-skeuo{box-shadow:inset 0 1px color-mix(in srgb,var(--glass-light)4%,transparent),inset 0 -1px color-mix(in srgb,var(--glass-dark)30%,transparent),0 4px 12px color-mix(in srgb,var(--glass-dark)40%,transparent),0 1px 3px color-mix(in srgb,var(--glass-dark)30%,transparent)}}.control-btn{letter-spacing:.01em;cursor:pointer;background:var(--ctrl-base);border:1px solid var(--ctrl-border);color:var(--text-primary);box-shadow:0 2px 0 var(--ctrl-shadow-dark),0 3px 8px var(--glass-dark),inset 0 1px 0 var(--glass-light);border-radius:.5rem;justify-content:center;align-items:center;gap:.375rem;padding:.5rem .75rem;font-size:.75rem;font-weight:600;transition:all .1s ease-out;display:flex;position:relative}@supports (color:color-mix(in lab,red,red)){.control-btn{box-shadow:0 2px 0 var(--ctrl-shadow-dark),0 3px 8px color-mix(in srgb,var(--glass-dark)30%,transparent),inset 0 1px color-mix(in srgb,var(--glass-light)6%,transparent)}}.control-btn:hover{background:var(--ctrl-base-hover);box-shadow:0 2px 0 var(--ctrl-shadow-dark),0 4px 10px var(--glass-dark),inset 0 1px 0 var(--glass-light)}@supports (color:color-mix(in lab,red,red)){.control-btn:hover{box-shadow:0 2px 0 var(--ctrl-shadow-dark),0 4px 10px color-mix(in srgb,var(--glass-dark)35%,transparent),inset 0 1px color-mix(in srgb,var(--glass-light)8%,transparent)}}.control-btn:active{box-shadow:0 0 0 var(--ctrl-shadow-dark),0 1px 2px var(--glass-dark),inset 0 2px 4px var(--glass-dark);transform:translateY(2px)}@supports (color:color-mix(in lab,red,red)){.control-btn:active{box-shadow:0 0 0 var(--ctrl-shadow-dark),0 1px 2px color-mix(in srgb,var(--glass-dark)20%,transparent),inset 0 2px 4px color-mix(in srgb,var(--glass-dark)20%,transparent)}}.control-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.control-btn-primary{background:linear-gradient(180deg,var(--ctrl-primary-hover)0%,var(--ctrl-primary)100%);border-color:var(--ctrl-primary-border);box-shadow:0 2px 0 var(--ctrl-primary-shadow),0 3px 8px var(--glass-dark),inset 0 1px 0 var(--ctrl-primary-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-primary{box-shadow:0 2px 0 var(--ctrl-primary-shadow),0 3px 8px color-mix(in srgb,var(--glass-dark)40%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-primary-highlight)30%,transparent)}}.control-btn-primary:hover{background:linear-gradient(180deg,var(--ctrl-primary-border)0%,var(--ctrl-primary-hover)100%);box-shadow:0 2px 0 var(--ctrl-primary-shadow),0 4px 10px var(--glass-dark),inset 0 1px 0 var(--ctrl-primary-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-primary:hover{box-shadow:0 2px 0 var(--ctrl-primary-shadow),0 4px 10px color-mix(in srgb,var(--glass-dark)45%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-primary-highlight)40%,transparent)}}.control-btn-success{background:linear-gradient(180deg,var(--ctrl-success-hover)0%,var(--ctrl-success)100%);border-color:var(--ctrl-success-border);box-shadow:0 2px 0 var(--ctrl-success-shadow),0 3px 8px var(--glass-dark),inset 0 1px 0 var(--ctrl-success-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-success{box-shadow:0 2px 0 var(--ctrl-success-shadow),0 3px 8px color-mix(in srgb,var(--glass-dark)40%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-success-highlight)25%,transparent)}}.control-btn-success:hover{background:linear-gradient(180deg,var(--ctrl-success-border)0%,var(--ctrl-success-hover)100%);box-shadow:0 2px 0 var(--ctrl-success-shadow),0 4px 10px var(--glass-dark),inset 0 1px 0 var(--ctrl-success-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-success:hover{box-shadow:0 2px 0 var(--ctrl-success-shadow),0 4px 10px color-mix(in srgb,var(--glass-dark)45%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-success-highlight)35%,transparent)}}.control-btn-warning{background:linear-gradient(180deg,var(--ctrl-warning-hover)0%,var(--ctrl-warning)100%);border-color:var(--ctrl-warning-border);box-shadow:0 2px 0 var(--ctrl-warning-shadow),0 3px 8px var(--glass-dark),inset 0 1px 0 var(--ctrl-warning-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-warning{box-shadow:0 2px 0 var(--ctrl-warning-shadow),0 3px 8px color-mix(in srgb,var(--glass-dark)40%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-warning-highlight)25%,transparent)}}.control-btn-warning:hover{background:linear-gradient(180deg,var(--ctrl-warning-border)0%,var(--ctrl-warning-hover)100%);box-shadow:0 2px 0 var(--ctrl-warning-shadow),0 4px 10px var(--glass-dark),inset 0 1px 0 var(--ctrl-warning-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-warning:hover{box-shadow:0 2px 0 var(--ctrl-warning-shadow),0 4px 10px color-mix(in srgb,var(--glass-dark)45%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-warning-highlight)35%,transparent)}}.control-btn-neutral{background:var(--ctrl-base-active);border-color:var(--ctrl-border);color:var(--text-secondary)}.control-btn-neutral:hover{background:var(--ctrl-base);color:var(--text-primary)}.control-toggle-group{flex-direction:column;gap:.25rem;display:flex}.control-toggle-label{color:var(--text-muted);justify-content:space-between;align-items:center;padding:0 .25rem;font-size:.6875rem;display:flex}.control-toggle-status{text-transform:uppercase;letter-spacing:.05em;font-size:.625rem;font-weight:600}@keyframes flash-white-fade{0%{opacity:.2}to{opacity:0}}.flash-overlay{border-radius:inherit;pointer-events:none;z-index:50;background-color:#fff;animation:.6s ease-out forwards flash-white-fade;position:absolute;top:0;right:0;bottom:0;left:0}@keyframes flash-row-bg{0%{background-color:#fff3}to{background-color:#0000}}.flash-row{animation:.6s ease-out forwards flash-row-bg}@keyframes flash-icon-pulse{0%{color:#fff;filter:drop-shadow(0 0 6px #fffc)}to{color:var(--text-muted);filter:none}}.flash-icon{animation:.6s ease-out forwards flash-icon-pulse}.mini-widget{contain:layout style;background-color:var(--glass-tint);border-radius:.875rem;flex-direction:column;gap:.25rem;padding:.75rem;display:flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.mini-widget{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.mini-widget{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.mini-widget{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.mini-widget:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.mini-widget:hover{box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.mini-widget:hover{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*15%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*100%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.mini-widget-header{align-items:center;gap:.375rem;min-height:1.25rem;display:flex}.mini-widget-icon{width:1rem;height:1rem;color:var(--icon-widget);flex-shrink:0}.mini-widget-title{font-family:Poppins,sans-serif;font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;text-overflow:ellipsis;font-weight:500;line-height:1.2;overflow:hidden}.mini-widget-value{font-family:JetBrains Mono,monospace;font-size:var(--text-xl);color:var(--text-primary);font-weight:600;line-height:1.1}.mini-widget-value-lg{font-size:var(--text-2xl)}.mini-widget-value-sm{font-size:var(--text-lg)}.mini-widget-unit{font-size:var(--text-xs);color:var(--text-muted);margin-left:.125rem;font-weight:400}.mini-widget-subtitle{font-family:JetBrains Mono,monospace;font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;line-height:1.3;overflow:hidden}.mini-widget-status-dot{border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem}.mini-widget-status-dot.excellent{background:var(--signal-excellent)}.mini-widget-status-dot.good{background:var(--signal-good)}.mini-widget-status-dot.fair{background:var(--signal-fair)}.mini-widget-status-dot.poor{background:var(--signal-poor)}.mini-widget-status-dot.critical{background:var(--signal-critical)}.mini-widget-status-dot.unknown{background:var(--signal-unknown)}.mini-widget-trend{font-size:var(--text-xs);align-items:center;gap:.125rem;font-weight:500;display:flex}.mini-widget-trend.up{color:var(--accent-danger)}.mini-widget-trend.down{color:var(--accent-success)}.mini-widget-trend.stable{color:var(--text-muted)}.mini-widget-sparkline{width:100%;min-width:1px;height:1.5rem;min-height:1px;margin-top:auto}.mini-widget-loading{justify-content:center;align-items:center;min-height:4rem;display:flex}.mini-widget-loading-spinner{border:2px solid var(--border-subtle);border-top-color:var(--accent-primary);border-radius:50%;width:1rem;height:1rem;animation:.8s linear infinite spin}.mini-widget-error{min-height:4rem;color:var(--text-muted);font-size:var(--text-xs);justify-content:center;align-items:center;display:flex}.mini-widget-progress{background:var(--bg-subtle);border-radius:.125rem;height:.25rem;margin-top:auto;overflow:hidden}.mini-widget-progress-bar{border-radius:.125rem;height:100%;transition:width .3s}.mini-widget-progress-bar.excellent{background:var(--signal-excellent)}.mini-widget-progress-bar.good{background:var(--signal-good)}.mini-widget-progress-bar.fair{background:var(--signal-fair)}.mini-widget-progress-bar.poor{background:var(--signal-poor)}.mini-widget-progress-bar.critical{background:var(--signal-critical)}.mini-widget-toggle{align-items:center;gap:.5rem;display:flex}.mini-widget-toggle-track{background:var(--bg-subtle);border:1px solid var(--border-subtle);cursor:pointer;border-radius:.5rem;width:2rem;height:1rem;transition:all .2s;position:relative}.mini-widget-toggle-track.active{background:var(--accent-success);border-color:var(--accent-success)}.mini-widget-toggle-thumb{background:#fff;border-radius:50%;width:.75rem;height:.75rem;transition:left .2s;position:absolute;top:50%;left:.125rem;transform:translateY(-50%)}.mini-widget-toggle-track.active .mini-widget-toggle-thumb{left:calc(100% - .875rem)}.mesh-health-container{margin-bottom:1.5rem}.mesh-health-header{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.widget-row{gap:.75rem;display:grid}@media(min-width:768px){.widget-row{grid-template-columns:repeat(3,1fr)}.mini-widget{height:7.5rem}}@media(max-width:767px){.widget-row{grid-template-columns:repeat(2,1fr)}.mini-widget{height:7rem;padding:.625rem}.mini-widget-value{font-size:var(--text-lg)}.mini-widget-value-lg{font-size:var(--text-xl)}}.mini-widget-value.excellent{color:var(--signal-excellent)}.mini-widget-value.good{color:var(--signal-good)}.mini-widget-value.fair{color:var(--signal-fair)}.mini-widget-value.poor{color:var(--signal-poor)}.mini-widget-value.critical{color:var(--signal-critical)}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0)}.pt-safe{padding-top:env(safe-area-inset-top,0)}.pl-safe{padding-left:env(safe-area-inset-left,0)}.pr-safe{padding-right:env(safe-area-inset-right,0)}.p-safe{padding-top:env(safe-area-inset-top,0);padding-right:env(safe-area-inset-right,0);padding-bottom:env(safe-area-inset-bottom,0);padding-left:env(safe-area-inset-left,0)}@keyframes shimmer{0%{opacity:.5;transform:translate(-100%)}50%{opacity:1}to{opacity:.5;transform:translate(100%)}}.bento-row{grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch;display:grid}.bento-row-hero{min-height:15rem}@media(min-width:768px){.bento-row-hero{min-height:17.5rem}}@media(min-width:1024px){.bento-row-hero{min-height:20rem}}.bento-row-hero-tall{height:20rem;min-height:20rem}@media(min-width:768px){.bento-row-hero-tall{height:23.3125rem;min-height:23.3125rem}}@media(min-width:1024px){.bento-row-hero-tall{height:26.625rem;min-height:26.625rem}}.bento-row-hero-auto{min-height:20rem}@media(min-width:768px){.bento-row-hero-auto{min-height:23.3125rem}}@media(min-width:1024px){.bento-row-hero-auto{min-height:26.625rem}}.bento-row-panel{grid-auto-rows:18.75rem}.bento-row-feature{grid-auto-rows:12.5rem}@media(min-width:768px){.bento-row-feature{grid-auto-rows:15rem}}@media(min-width:1024px){.bento-row-feature{grid-auto-rows:16.25rem}}.bento-row-standard{min-height:11.25rem}@media(min-width:768px){.bento-row-standard{min-height:12.5rem}}@media(min-width:1024px){.bento-row-standard{min-height:13.75rem}}.bento-row-compact{min-height:8.75rem}@media(min-width:768px){.bento-row-compact{min-height:10rem}}@media(min-width:1024px){.bento-row-compact{min-height:11.25rem}}.bento-row-widget{min-height:6.25rem}@media(min-width:768px){.bento-row-widget{min-height:6.875rem}}@media(min-width:1024px){.bento-row-widget{min-height:7.5rem}}.bento-row-auto{min-height:auto}.analyzer-chart-height{height:13rem}@media(min-width:768px){.analyzer-chart-height{height:17rem}}@media(min-width:1024px){.analyzer-chart-height{height:20rem}}.legend-item{cursor:pointer;border-radius:.25rem;align-items:center;gap:.25rem;padding:.25rem .375rem;font-size:.6875rem;line-height:1.2;transition:background-color .15s,opacity .15s;display:flex}.legend-item:hover{background-color:var(--hover-tint)}.legend-item-active{background-color:var(--bg-subtle);opacity:1}.legend-item-dimmed{opacity:.35}.legend-item-chart-active{background-color:var(--hover-tint);opacity:1}.legend-label{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:5.5rem;overflow:hidden}.legend-value{font-variant-numeric:tabular-nums;color:var(--text-secondary);flex-shrink:0;margin-left:auto;font-family:JetBrains Mono,monospace;font-weight:600}.legend-value-live{color:var(--text-primary)}.bento-gap{gap:.75rem}@media(min-width:640px){.bento-gap{gap:1rem}}@media(min-width:768px){.bento-gap{gap:1.25rem}}@media(min-width:1024px){.bento-gap{gap:1.5rem}}.bento-gap-sm{gap:.5rem}@media(min-width:640px){.bento-gap-sm{gap:.75rem}}@media(min-width:768px){.bento-gap-sm{gap:1rem}}.bento-gap-lg{gap:1rem}@media(min-width:640px){.bento-gap-lg{gap:1.25rem}}@media(min-width:768px){.bento-gap-lg{gap:1.5rem}}@media(min-width:1024px){.bento-gap-lg{gap:2rem}}.bento-cell{flex-direction:column;min-width:0;min-height:0;display:flex}.bento-cell>*{flex:auto;min-height:0}.bento-col-1{grid-column:span 1/span 1}.bento-col-2{grid-column:span 2/span 2}.bento-col-3{grid-column:span 3/span 3}.bento-col-4{grid-column:span 4/span 4}.bento-col-5{grid-column:span 5/span 5}.bento-col-6{grid-column:span 6/span 6}.bento-col-7{grid-column:span 7/span 7}.bento-col-8{grid-column:span 8/span 8}.bento-col-9{grid-column:span 9/span 9}.bento-col-10{grid-column:span 10/span 10}.bento-col-11{grid-column:span 11/span 11}.bento-col-12{grid-column:span 12/span 12}.col-span-full{grid-column:1/-1}.col-auto{grid-column:auto}.bento-col-1-5{grid-column:span 2/span 2}@media(min-width:640px){.sm\:bento-col-1{grid-column:span 1/span 1}.sm\:bento-col-2{grid-column:span 2/span 2}.sm\:bento-col-3{grid-column:span 3/span 3}.sm\:bento-col-4{grid-column:span 4/span 4}.sm\:bento-col-5{grid-column:span 5/span 5}.sm\:bento-col-6{grid-column:span 6/span 6}.sm\:bento-col-7{grid-column:span 7/span 7}.sm\:bento-col-8{grid-column:span 8/span 8}.sm\:bento-col-9{grid-column:span 9/span 9}.sm\:bento-col-10{grid-column:span 10/span 10}.sm\:bento-col-11{grid-column:span 11/span 11}.sm\:bento-col-12{grid-column:span 12/span 12}.sm\:col-span-full{grid-column:1/-1}.sm\:bento-col-1-5{grid-column:span 2/span 2}}@media(min-width:768px){.md\:bento-col-1{grid-column:span 1/span 1}.md\:bento-col-2{grid-column:span 2/span 2}.md\:bento-col-3{grid-column:span 3/span 3}.md\:bento-col-4{grid-column:span 4/span 4}.md\:bento-col-5{grid-column:span 5/span 5}.md\:bento-col-6{grid-column:span 6/span 6}.md\:bento-col-7{grid-column:span 7/span 7}.md\:bento-col-8{grid-column:span 8/span 8}.md\:bento-col-9{grid-column:span 9/span 9}.md\:bento-col-10{grid-column:span 10/span 10}.md\:bento-col-11{grid-column:span 11/span 11}.md\:bento-col-12{grid-column:span 12/span 12}.md\:col-span-full{grid-column:1/-1}.md\:bento-col-1-5{grid-column:span 2/span 2}}@media(min-width:1024px){.lg\:bento-col-1{grid-column:span 1/span 1}.lg\:bento-col-2{grid-column:span 2/span 2}.lg\:bento-col-3{grid-column:span 3/span 3}.lg\:bento-col-4{grid-column:span 4/span 4}.lg\:bento-col-5{grid-column:span 5/span 5}.lg\:bento-col-6{grid-column:span 6/span 6}.lg\:bento-col-7{grid-column:span 7/span 7}.lg\:bento-col-8{grid-column:span 8/span 8}.lg\:bento-col-9{grid-column:span 9/span 9}.lg\:bento-col-10{grid-column:span 10/span 10}.lg\:bento-col-11{grid-column:span 11/span 11}.lg\:bento-col-12{grid-column:span 12/span 12}.lg\:col-span-full{grid-column:1/-1}.lg\:bento-col-1-5{grid-column:span 2/span 2}}@media(min-width:1280px){.xl\:bento-col-1{grid-column:span 1/span 1}.xl\:bento-col-2{grid-column:span 2/span 2}.xl\:bento-col-3{grid-column:span 3/span 3}.xl\:bento-col-4{grid-column:span 4/span 4}.xl\:bento-col-5{grid-column:span 5/span 5}.xl\:bento-col-6{grid-column:span 6/span 6}.xl\:bento-col-7{grid-column:span 7/span 7}.xl\:bento-col-8{grid-column:span 8/span 8}.xl\:bento-col-9{grid-column:span 9/span 9}.xl\:bento-col-10{grid-column:span 10/span 10}.xl\:bento-col-11{grid-column:span 11/span 11}.xl\:bento-col-12{grid-column:span 12/span 12}.xl\:col-span-full{grid-column:1/-1}.xl\:bento-col-1-5{grid-column:span 2/span 2}}.terminal-card{height:calc(100dvh - 160px);min-height:300px;max-height:calc(100vh - 120px);padding-bottom:env(safe-area-inset-bottom,0)}@media(min-width:640px){.terminal-card{height:calc(100dvh - 180px);min-height:400px}}@media(min-width:1024px){.terminal-card{height:calc(100vh - 180px);min-height:500px}}.terminal-ascii{letter-spacing:-.5px;font-size:8px}@media(min-width:375px){.terminal-ascii{letter-spacing:0;font-size:9px}}@media(min-width:414px){.terminal-ascii{font-size:10px}}@media(min-width:640px){.terminal-ascii{font-size:11px}}@media(min-width:768px){.terminal-ascii{font-size:12px}}@media(min-width:1024px){.terminal-ascii{font-size:13px}}@supports (-webkit-touch-callout:none){.terminal-card input{font-size:16px}}.terminal-card>div:first-child{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}} diff --git a/frontend/dist/assets/index-C1whtcFB.js b/frontend/dist/assets/index-C1whtcFB.js deleted file mode 100644 index 0271d341..00000000 --- a/frontend/dist/assets/index-C1whtcFB.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Login-BVGfeeRd.js","assets/vendor-react-CUlQ5-Td.js","assets/vendor-core-XI_xDZ-M.js","assets/Dashboard-BfZs_ThN.js","assets/useThemeColors-8RSyMp_o.js","assets/PageLayout-CViR4hDG.js","assets/PacketDetailModal-BvhyK15u.js","assets/SignalIndicator-DOiETQwB.js","assets/HashBadge-Do84dDmK.js","assets/TimeRangeSelector-Pa-lVKQc.js","assets/Grid-HJLNnEZz.js","assets/Packets-wtXWXIE0.js","assets/Contacts-CZV5Ovbv.js","assets/ConfirmModal-DLMcH5KX.js","assets/CollisionExplorerModal-BU96fXkT.js","assets/leaflet-CIGW-MKW.css","assets/Statistics-C2Q9qDtH.js","assets/usePolling-BvmU-1bN.js","assets/Statistics-D1GxaB_c.css","assets/System-BSF0fscu.js","assets/Logs-CZ5S1k0r.js","assets/Terminal-fFigQMKz.js","assets/Configuration-HwYFsp1c.js"])))=>i.map(i=>d[i]); -var e=Object.defineProperty,t=(t,s,a)=>((t,s,a)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[s]=a)(t,"symbol"!=typeof s?s+"":s,a);import{r as s,j as a,c as n,u as o,X as i,M as r,L as c,d as l,e as d,C as u,G as h,F as p,S as m,f as g,g as f,h as y,i as b,k as x,l as w,m as k,n as v,o as j,p as S,q as C,t as N,v as _,N as T,w as M,B as P}from"./vendor-react-CUlQ5-Td.js";import{_ as L}from"./deckgl-MTXp-Y3t.js";import{c as E}from"./recharts-7RsRrQtf.js";import"./vendor-core-XI_xDZ-M.js";!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver(e=>{for(const s of e)if("childList"===s.type)for(const e of s.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)}).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?t.credentials="include":"anonymous"===e.crossOrigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();const I=[{id:"default",name:"Shades of Purple",dataTheme:null,previewColor:"#B39DF3"},{id:"amber",name:"Gruvbox",dataTheme:"amber",previewColor:"#fabd2f"},{id:"grey",name:"Deus",dataTheme:"grey",previewColor:"#83a598"},{id:"black",name:"Gotham",dataTheme:"black",previewColor:"#33859d"},{id:"flora",name:"Sonokai",dataTheme:"flora",previewColor:"#9ed072"},{id:"kanagawa",name:"Kanagawa",dataTheme:"kanagawa",previewColor:"#7E9CD8"}],A=[{id:"sand",src:"/assets/sand.jpg",suggestedScheme:"default",suggestedBrightness:80},{id:"water",src:"/assets/water.webp",suggestedScheme:"grey",suggestedBrightness:40},{id:"magma",src:"/assets/magma.webp",suggestedScheme:"amber",suggestedBrightness:50},{id:"stars",src:"/assets/stars.jpg",suggestedScheme:"black",suggestedBrightness:100},{id:"ribbons",src:"/assets/ribbons.webp",suggestedScheme:"flora",suggestedBrightness:75},{id:"folds",src:"/assets/folds.webp",suggestedScheme:"kanagawa",suggestedBrightness:50}],R=[{id:"default",name:"Shades of Purple",displayName:"BlkSand",colorScheme:"default",backgroundImage:"/assets/sand.jpg",paletteColors:[["#B49DFF","#F9D26F","#71F8E5","#39D98A","#FF5C7A"],["#4CFFB5","#FF8A5C","#A78BFA","#60A5FA","#F472B6"]],displayFont:"'Rubik Mono One', monospace",displayColor:"#4A4A52",displaySize:.8},{id:"amber",name:"Gruvbox",displayName:"Magma",colorScheme:"amber",backgroundImage:"/assets/magma.webp",paletteColors:[["#fabd2f","#fb4934","#8ec07c","#b8bb26","#d3869b"],["#fe8019","#83a598","#d65d0e","#928374","#ebdbb2"]],displayFont:"'Jacquard 12', serif",displayColor:"#fe8019",displaySize:1.75},{id:"grey",name:"Deus",displayName:"Waves",colorScheme:"grey",backgroundImage:"/assets/water.webp",paletteColors:[["#83a598","#a89984","#8ec07c","#d79921","#b16286"],["#fe8019","#cc241d","#7c6f64","#bdae93","#ebdbb2"]],displayFont:"'Cantora One', sans-serif",displayColor:"#83a598",displaySize:1.25},{id:"black",name:"Gotham",displayName:"Stars",colorScheme:"black",backgroundImage:"/assets/stars.jpg",paletteColors:[["#33859d","#edb54b","#26a98b","#c23127","#888ca6"],["#195465","#d26939","#99d1ce","#4e5165","#0c1014"]],displayFont:"'IBM Plex Mono', monospace",displayColor:"#c23127",displaySize:1.25},{id:"flora",name:"Sonokai",displayName:"Ribbon",colorScheme:"flora",backgroundImage:"/assets/ribbons.webp",paletteColors:[["#9ed072","#fc5d7c","#76cce0","#e7c664","#b39df3"],["#f39660","#7f8490","#e2e2e3","#55575e","#2c2e34"]],displayFont:"'Instrument Serif', serif",displayColor:"#E2E2E3",displaySize:1.4},{id:"kanagawa",name:"Kanagawa",displayName:"Folds",colorScheme:"kanagawa",backgroundImage:"/assets/folds.webp",paletteColors:[["#7E9CD8","#E46876","#7AA89F","#DCA561","#957FB8"],["#7FB4CA","#D27E99","#98BB6C","#727169","#1F1F28"]],displayFont:"'Inter', sans-serif",displayColor:"#7E9CD8",displaySize:1.25}],F={colorScheme:"grey",backgroundImage:"/assets/water.webp",brightness:60},O="pymc-color-scheme",D="pymc-background-image",z="pymc-bg-brightness",$="pymc-background";function B(e){(new Image).src=e}const W={50:.97,100:.92,200:.84,300:.73,400:.62,500:.5,600:.4,700:.32,800:.24,900:.16},H=[50,100,200,300,400,500,600,700,800,900],q=["red","orange","yellow","green","aqua","blue","purple"];function U(e,t,s){const a=e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0");return`#${a(e)}${a(t)}${a(s)}`}function J(e){const t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function G(e){const t=e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055;return Math.round(255*t)}function V(e,t,s){const a=s*(Math.PI/180),n=t*Math.cos(a),o=t*Math.sin(a),i=e+.3963377774*n+.2158037573*o,r=e-.1055613458*n-.0638541728*o,c=e-.0894841775*n-1.291485548*o,l=i*i*i,d=r*r*r,u=c*c*c,h=-1.2684380046*l+2.6097574011*d-.3413193965*u,p=-.0041960863*l-.7034186147*d+1.707614701*u;return[G(4.0767416621*l-3.3077115913*d+.2309699292*u),G(h),G(p)]}function K(e){const[t,s,a]=function(e){const t=e.replace("#","");return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]}(e),[,n,o]=function(e,t,s){const a=J(e),n=J(t),o=J(s),i=.4122214708*a+.5363325363*n+.0514459929*o,r=.2119034982*a+.6806995451*n+.1073969566*o,c=.0883024619*a+.2817188376*n+.6299787005*o,l=Math.cbrt(i),d=Math.cbrt(r),u=Math.cbrt(c),h=.2104542553*l+.793617785*d-.0040720468*u,p=1.9779984951*l-2.428592205*d+.4505937099*u,m=.0259040371*l+.7827717662*d-.808675766*u,g=Math.sqrt(p*p+m*m);let f=Math.atan2(m,p)*(180/Math.PI);return f<0&&(f+=360),[h,g,f]}(t,s,a),i={};for(const r of H){const e=W[r],t=n*(1-.3*Math.abs(e-.5)),[s,a,c]=V(e,t,o);i[r]=U(s,a,c)}return i}function Q(e){return"undefined"==typeof window?"":getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function X(e,t){"undefined"!=typeof document&&document.documentElement.style.setProperty(e,t)}const Z=s.createContext(null);function Y({children:e}){const[t,n]=s.useState(()=>function(){if("undefined"==typeof window)return F;try{let t=localStorage.getItem(O),s=localStorage.getItem(D);const a=localStorage.getItem(z);if(!t&&!s){const e=localStorage.getItem($);if(e){const a=R.find(t=>t.id===e);a&&(t=a.colorScheme,s=a.backgroundImage,localStorage.setItem(O,t),localStorage.setItem(D,s),localStorage.removeItem($))}}const n="string"==typeof(e=t)&&I.some(t=>t.id===e)?t:F.colorScheme,o=s||F.backgroundImage;let i=F.brightness;if(a){const e=parseInt(a,10);!isNaN(e)&&e>=0&&e<=100&&(i=e)}return{colorScheme:n,backgroundImage:o,brightness:i}}catch{return F}var e}());s.useEffect(()=>{(function(e){const t=(s=e,I.find(e=>e.id===s)??I[0]);var s;t.dataTheme?document.documentElement.setAttribute("data-theme",t.dataTheme):document.documentElement.removeAttribute("data-theme")})(t.colorScheme),requestAnimationFrame(()=>{!function(){if("undefined"==typeof window)return;for(const t of q){const e=Q(`--palette-${t}-bright`),s=Q(`--palette-${t}`),a=e||s;if(!a)continue;const n=K(a);for(const o of H)X(`--palette-${t}-${o}`,n[o])}const e=Q("--palette-bg-4");if(e){const t=K(e);for(const e of H)X(`--palette-neutral-${e}`,t[e])}}()})},[t.colorScheme]),s.useEffect(()=>{!function(e){if("undefined"!=typeof window)try{localStorage.setItem(O,e.colorScheme),localStorage.setItem(D,e.backgroundImage),localStorage.setItem(z,String(e.brightness))}catch{}}(t)},[t]),s.useEffect(()=>{A.forEach(e=>{(new Image).src=e.src})},[]);const o=s.useCallback(e=>{n(t=>({...t,colorScheme:e}))},[]),i=s.useCallback(e=>{const t=A.find(t=>t.src===e);n(s=>({...s,backgroundImage:e,brightness:(null==t?void 0:t.suggestedBrightness)??s.brightness}))},[]),r=s.useCallback(e=>{const t=Math.max(0,Math.min(100,Math.round(e)));n(e=>({...e,brightness:t}))},[]),c=s.useCallback(e=>{const t=R.find(t=>t.id===e);t&&n(e=>({...e,colorScheme:t.colorScheme,backgroundImage:t.backgroundImage}))},[]),l=s.useMemo(()=>({theme:t,setColorScheme:o,setBackgroundImage:i,setBrightness:r,setThemePreset:c}),[t,o,i,r,c]);return a.jsx(Z.Provider,{value:l,children:e})}function ee(){const e=s.useContext(Z);if(!e)throw new Error("useTheme must be used within a ThemeProvider. Wrap your app with in App.tsx.");return e}const te="0.9.133",se="/assets/WCM_Waves-RN-_ocPH.gif",ae=s.memo(function({height:e=16,className:t=""}){const s={fontFamily:"'Space Mono', monospace",fontSize:`${"string"==typeof e?parseFloat(e):e}px`,fontWeight:400,lineHeight:1,letterSpacing:"-0.02em",whiteSpace:"nowrap"},n="rgba(255, 255, 255, 0.7)",o="#FFFFFF";return a.jsxs("span",{className:t,style:s,role:"img","aria-label":"pyMC:Console",children:[a.jsx("span",{style:{color:n},children:"py"}),a.jsx("span",{style:{color:o},children:"MC"}),a.jsx("span",{style:{color:n},children:":"}),a.jsx("span",{style:{color:o},children:"Console"})]})}),ne={0:"REQ",1:"RESPONSE",2:"TXT_MSG",3:"ACK",4:"ADVERT",5:"GRP_TXT",6:"GRP_DATA",7:"ANON_REQ",8:"PATH",9:"TRACE",10:"MULTIPART",15:"RAW_CUSTOM"},oe={0:"T_FLOOD",1:"FLOOD",2:"DIRECT",3:"T_DIRECT"},ie={REQ:0,RESPONSE:1,TXT_MSG:2,ACK:3,ADVERT:4,GRP_TXT:5,GRP_DATA:6,ANON_REQ:7,PATH:8,TRACE:9,MULTIPART:10,RAW_CUSTOM:15},re={spreadingFactor:7,bandwidthHz:125e3,codingRate:5,preambleLength:8,crcEnabled:!0,explicitHeader:!0};function ce(e){if(e.raw_packet){const t=e.raw_packet;if(/^[0-9a-fA-F]+$/.test(t)&&t.length%2==0)return t.length/2;if(/^[A-Za-z0-9+/=]+$/.test(t)){const e=(t.match(/=+$/)||[""])[0].length;return Math.floor(3*t.length/4)-e}return t.length}if(e.length&&e.length>0)return e.length;if(e.payload_length&&e.payload_length>0)return e.payload_length;if(e.payload){const t=e.payload;return/^[0-9a-fA-F]+$/.test(t)&&t.length%2==0?t.length/2:t.length}return 32}function le(e,t={}){const s=t.spreadingFactor??re.spreadingFactor,a=t.bandwidthHz??re.bandwidthHz,n=t.codingRate??re.codingRate,o=t.preambleLength??re.preambleLength??8,i=t.crcEnabled??re.crcEnabled?1:0,r=t.explicitHeader??re.explicitHeader?0:1,c=s>=11&&a<=125e3?1:0,l=a/1e3,d=Math.pow(2,s)/l,u=(o+4.25)*d,h=Math.max(8*e-4*s+28+16*i-20*r,0),p=4*(s-2*c);return u+(8+Math.ceil(h/p)*n)*d}const de="pymc_jwt_token",ue="pymc_client_id";function he(){let e=localStorage.getItem(ue);return e||(e=`${Date.now()}-${Math.random().toString(36).substring(2,15)}`,localStorage.setItem(ue,e)),e}function pe(){return localStorage.getItem(de)}function me(e){localStorage.setItem(de,e)}function ge(){localStorage.removeItem(de)}function fe(){return!!pe()&&!be()}function ye(e){try{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),s=decodeURIComponent(atob(t).split("").map(e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)).join(""));return JSON.parse(s)}catch{return null}}function be(){const e=pe();if(!e)return!0;const t=ye(e);return!t||!t.exp||Date.now()>=1e3*t.exp-6e4}function xe(){const e=pe();if(!e)return!1;const t=ye(e);if(!t||!t.exp)return!1;const s=1e3*t.exp-Date.now();return s>0&&s<18e4}function we(){const e=pe();if(!e)return null;const t=ye(e);return t&&t.sub?t.sub:null}async function ke(e,t){try{const s=await fetch("/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t,client_id:he()})}),a=s.headers.get("content-type");if(!a||!a.includes("application/json"))return{success:!1,error:`Server error: ${s.status}`};const n=await s.json();return n.success&&n.token?(me(n.token),{success:!0}):{success:!1,error:n.error||"Login failed"}}catch(s){return{success:!1,error:"Connection error. Please try again."}}}async function ve(){const e=pe();if(!e)return!1;try{const t=await fetch("/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({client_id:he()})});if(!t.ok)return!1;const s=await t.json();return!(!s.success||!s.token||(me(s.token),0))}catch(t){return!1}}function je(){ge()}const Se=Object.freeze(Object.defineProperty({__proto__:null,clearToken:ge,getClientId:he,getToken:pe,getUsername:we,isAuthenticated:fe,isTokenExpired:be,login:ke,logout:je,parseJWT:ye,refreshToken:ve,setToken:me,shouldRefreshToken:xe},Symbol.toStringTag,{value:"Module"})),Ce=new Map;let Ne=!1;async function _e(e,t,s=!1){const a=function(e,t){return(null==t?void 0:t.method)&&"GET"!==t.method?"":e}(e,t);if(a){const e=Ce.get(a);if(e)return e}const n=`${e}`;!s&&xe()&&await ve();const o=pe(),i=o?{Authorization:`Bearer ${o}`}:{};if(null==t?void 0:t.headers){const e=t.headers;e instanceof Headers?e.forEach((e,t)=>{i[t]=e}):Array.isArray(e)?e.forEach(([e,t])=>{i[e]=t}):Object.assign(i,e)}(null==t?void 0:t.body)&&(i["Content-Type"]="application/json");const r=(async()=>{const a=await fetch(n,{...t,headers:i});if(401===a.status){if(!s&&!Ne&&await ve())return _e(e,t,!0);throw Ne||(Ne=!0,ge(),window.location.href="/login"),new Error("Session expired. Please log in again.")}if(!a.ok)throw new Error(`API error: ${a.status} ${a.statusText}`);return a.json()})();return a&&(Ce.set(a,r),r.finally(()=>{Ce.delete(a)})),r}function Te(e){return e&&"chat node"===e.toLowerCase()?"Companion":e}async function Me(){return function(e){if(e.neighbors)for(const t of Object.values(e.neighbors))t.contact_type=Te(t.contact_type);return e}(await _e("/api/stats"))}async function Pe(){return _e("/api/logs")}async function Le(e=24){return _e(`/api/packet_type_graph_data?hours=${e}`)}async function Ee(e=24){return _e(`/api/noise_floor_history?hours=${e}`)}async function Ie(){return _e("/api/hardware_stats")}async function Ae(){return _e("/api/send_advert",{method:"POST",body:"{}"})}async function Re(e){return _e("/api/set_mode",{method:"POST",body:JSON.stringify({mode:e})})}async function Fe(e){return _e("/api/set_duty_cycle",{method:"POST",body:JSON.stringify({enabled:e})})}const Oe=new Map;function De(e,t,s,a){const n=60*e/t,o=Math.floor(Date.now()/1e3),i=Math.floor(o/n)*n,r=i-60*e,c=s.filter(e=>e.timestamp>=r&&e.timestamp<=i),l=a?function(e){var t;const s=null==(t=null==e?void 0:e.config)?void 0:t.radio;return{spreadingFactor:(null==s?void 0:s.spreading_factor)??re.spreadingFactor,bandwidthHz:(null==s?void 0:s.bandwidth)??re.bandwidthHz,codingRate:(null==s?void 0:s.coding_rate)??re.codingRate,preambleLength:(null==s?void 0:s.preamble_length)??re.preambleLength,crcEnabled:!0,explicitHeader:!0}}(a):re,d=function(e,t,s,a,n){const o=new Array(t),i=new Array(t),r=new Array(t),c=new Array(t),l=new Array(t);for(let u=0;u=t)continue;const p=le(ce(d),n),m=d.packet_origin;"tx_local"===m?(i[h].count++,i[h].airtime_ms+=p):"tx_forward"===m||d.transmitted?(r[h].count++,r[h].airtime_ms+=p):d.drop_reason&&(c[h].count++,c[h].airtime_ms+=p),"tx_local"!==m&&(o[h].count++,o[h].airtime_ms+=p,l[h].snr+=d.snr||0,l[h].rssi+=d.rssi||0,l[h].count++)}for(let u=0;u0&&(o[u].avg_snr=l[u].snr/l[u].count,o[u].avg_rssi=l[u].rssi/l[u].count);return{received:o,transmitted:i,forwarded:r,dropped:c}}(c,t,r,n,l);return{time_range_minutes:e,bucket_count:t,bucket_duration_seconds:n,start_time:r,end_time:i,...d}}async function ze(e){return _e("/api/update_radio_config",{method:"POST",body:JSON.stringify(e)})}async function $e(e){return _e("/api/set_log_level",{method:"POST",body:JSON.stringify({level:e})})}async function Be(){return _e("/api/transport_keys")}async function We(e){return _e("/api/transport_keys",{method:"POST",body:JSON.stringify(e)})}async function He(e,t){return _e(`/api/transport_key/${e}`,{method:"PUT",body:JSON.stringify(t)})}async function qe(e){return _e(`/api/transport_key/${e}`,{method:"DELETE"})}async function Ue(e){return _e("/api/global_flood_policy",{method:"POST",body:JSON.stringify({global_flood_allow:e})})}async function Je(e,t=10){return _e("/api/ping_neighbor",{method:"POST",body:JSON.stringify({target_id:e,timeout:t})})}async function Ge(e){return _e("/api/update_web_config",{method:"POST",body:JSON.stringify(e)})}async function Ve(){return _e("/api/check_pymc_console")}async function Ke(){return _e("/api/restart_service",{method:"POST",body:"{}"})}async function Qe(){return _e("/auth/tokens")}async function Xe(e){return _e("/auth/tokens",{method:"POST",body:JSON.stringify({name:e})})}async function Ze(e){return _e(`/auth/tokens/${e}`,{method:"DELETE"})}const Ye="pymc-packet-cache",et="pymc-packet-cache-meta",tt=36e5,st=75e3,at=75e3,nt=5e3,ot=75e3,it=new class{constructor(){t(this,"packets",new Map),t(this,"sortedPackets",[]),t(this,"sortedDirty",!0),t(this,"meta",{oldestTimestamp:0,newestTimestamp:0,lastUpdated:0,packetCount:0,backgroundLoadComplete:!1,topologyLoadComplete:!1}),t(this,"isLoading",!1),t(this,"isBackgroundLoading",!1),t(this,"isTopologyLoading",!1),t(this,"listeners",new Set),t(this,"loadProgress",null),t(this,"statusMessage",""),this.loadFromStorage()}subscribe(e){return this.listeners.add(e),e(this.getState()),()=>this.listeners.delete(e)}getState(){return{isLoading:this.isLoading,isBackgroundLoading:this.isBackgroundLoading,isTopologyLoading:this.isTopologyLoading,backgroundLoadComplete:this.meta.backgroundLoadComplete,topologyLoadComplete:this.meta.topologyLoadComplete,packetCount:this.packets.size,statusMessage:this.statusMessage,loadProgress:this.loadProgress}}getPackets(){return this.sortedDirty&&(this.sortedPackets=Array.from(this.packets.values()).sort((e,t)=>(e.timestamp??0)-(t.timestamp??0)),this.sortedDirty=!1),this.sortedPackets}isStale(){return 0===this.packets.size||Date.now()-this.meta.lastUpdated>tt}isHeavyLoadInProgress(){return this.isBackgroundLoading||this.isTopologyLoading}async initialLoad(e){if(this.isStale()&&this.packets.size>0&&this.clear(),this.meta.backgroundLoadComplete&&this.packets.size>0)return this.getPackets();this.isLoading=!0,this.loadProgress={loaded:0,target:st,percent:0},this.statusMessage="Loading packets...",this.notifyListeners();try{let t;this.packets.size>0&&(this.packets.clear(),this.sortedPackets=[],this.sortedDirty=!0,this.meta.oldestTimestamp=0,this.meta.newestTimestamp=0);let s=0,a=0,n=0;const o=Math.ceil(15);for(let i=0;i0?Math.min(99,Math.round(this.packets.size/st*100)):0;this.statusMessage="Loading packets...",this.loadProgress={loaded:this.packets.size,target:st,percent:r},this.notifyListeners();const c=await this.fetchChunkWithRetry(t,nt,i,o);if(null!==c){if(n=0,!(c.success&&c.data&&c.data.length>0))break;{const n=this.packets.size;this.mergePackets(c.data);const o=this.packets.size-n;s+=o;const i=Math.min(...c.data.map(e=>e.timestamp??1/0));if(i!==1/0&&(void 0===t||i=2)break}else a=0;if(c.data.length=ot)break}i=5){this.statusMessage="Connection issues, loaded partial data",this.notifyListeners();break}await this.delay(2e3)}}this.enforceMemoryCap(),this.meta.backgroundLoadComplete=!0,this.loadProgress={loaded:this.packets.size,target:this.packets.size,percent:100},this.notifyListeners(),this.saveToStorage()}catch(t){this.statusMessage="Load failed"}finally{this.isLoading=!1,this.statusMessage="",this.loadProgress=null,this.notifyListeners()}return this.getPackets()}async quickLoad(){return this.initialLoad()}async backgroundLoad(){await this.initialLoad()}async topologyLoad(){if(!this.meta.topologyLoadComplete&&!this.isTopologyLoading)return this.doTopologyLoad()}async forceTopologyLoad(){if(!this.isTopologyLoading)return this.meta.topologyLoadComplete=!1,this.doTopologyLoad()}async forceDeepLoad(){return this.forceTopologyLoad()}async doTopologyLoad(){this.isTopologyLoading=!0,this.statusMessage="Fetching topology data...",this.loadProgress={loaded:0,target:at,percent:0},this.notifyListeners();try{let e,t=0,s=0,a=0;const n=Math.ceil(15);for(let o=0;o0?Math.min(99,Math.round(this.packets.size/at*100)):0;this.statusMessage=`Loading ${this.packets.size.toLocaleString()} packets...`,this.loadProgress={loaded:this.packets.size,target:at,percent:i},this.notifyListeners();const r=await this.fetchChunkWithRetry(e,nt,o,n);if(null!==r){if(a=0,!(r.success&&r.data&&r.data.length>0))break;{const a=this.packets.size;this.mergePackets(r.data);const n=this.packets.size-a;t+=n;const o=Math.min(...r.data.map(e=>e.timestamp??1/0));if(o!==1/0&&(void 0===e||o=2)break}else s=0;if(r.data.length=ot)break}o=5){this.statusMessage="Connection issues, loaded partial data",this.notifyListeners();break}await this.delay(2e3)}}this.statusMessage=`Processing ${this.packets.size.toLocaleString()} packets...`,this.loadProgress={loaded:this.packets.size,target:this.packets.size,percent:100},this.notifyListeners(),this.enforceMemoryCap(),this.meta.topologyLoadComplete=!0,this.saveToStorage()}catch(e){this.statusMessage="Topology load failed"}finally{this.isTopologyLoading=!1,this.statusMessage="",this.loadProgress=null,this.notifyListeners()}}async poll(){try{const e=await this.fetchRecentPackets(200);if(e.success&&e.data){const t=this.packets.size;this.mergePackets(e.data),this.packets.size>t&&(this.saveToStorage(),this.notifyListeners())}}catch(e){}return this.getPackets()}clear(){this.packets.clear(),this.sortedPackets=[],this.sortedDirty=!0,this.meta={oldestTimestamp:0,newestTimestamp:0,lastUpdated:0,packetCount:0,backgroundLoadComplete:!1,topologyLoadComplete:!1},this.clearStorage(),this.notifyListeners()}mergePackets(e){let t=!1;for(const s of e){const e=s.packet_hash;if(e&&!this.packets.has(e)){this.packets.set(e,s),t=!0;const a=s.timestamp??0;(0===this.meta.oldestTimestamp||athis.meta.newestTimestamp&&(this.meta.newestTimestamp=a)}}t&&(this.sortedDirty=!0),this.meta.lastUpdated=Date.now(),this.meta.packetCount=this.packets.size}notifyListeners(){const e=this.getState();for(const t of this.listeners)t(e)}waitForIdle(){return new Promise(e=>{"requestIdleCallback"in window?window.requestIdleCallback(()=>e(),{timeout:2e3}):setTimeout(e,100)})}delay(e){return new Promise(t=>setTimeout(t,e))}async fetchChunkWithRetry(e,t,s,a){for(let o=0;o<3;o++)try{return await this.fetchFilteredPackets(e,t)}catch(n){const e=2===o,t=1e3*Math.pow(2,o);n instanceof Error&&n.name,e||(this.statusMessage=`Retry in ${Math.round(t/1e3)}s...`,this.notifyListeners(),await this.delay(t))}return null}enforceMemoryCap(){if(this.packets.size<=ot)return;const e=this.getPackets(),t=e.length-ot;for(let s=0;st&&(this.meta.oldestTimestamp=e[t].timestamp??0)}loadFromStorage(){if("undefined"!=typeof window)try{const e=localStorage.getItem(et);e&&(this.meta=JSON.parse(e));const t=localStorage.getItem(Ye);if(t){const e=JSON.parse(t);for(const t of e)t.packet_hash&&this.packets.set(t.packet_hash,t)}if(this.meta.lastUpdated>0&&Date.now()-this.meta.lastUpdated>tt)return void this.clear();this.meta.backgroundLoadComplete=!1;const s=37500;this.meta.topologyLoadComplete&&this.packets.size3e3?e.slice(-3e3):e;localStorage.setItem(Ye,JSON.stringify(t))}catch(e){if(e instanceof DOMException&&"QuotaExceededError"===e.name)try{localStorage.removeItem(Ye),localStorage.setItem(et,JSON.stringify(this.meta))}catch{}}}clearStorage(){if("undefined"!=typeof window)try{localStorage.removeItem(Ye),localStorage.removeItem(et)}catch(e){}}async fetchRecentPackets(e=1e3,t=!1){const s=`/api/recent_packets?limit=${e}`,a=localStorage.getItem("pymc_jwt_token"),n={};a&&(n.Authorization=`Bearer ${a}`);const o=await fetch(s,{headers:n});if(401===o.status&&!t){const{refreshToken:t}=await L(async()=>{const{refreshToken:e}=await Promise.resolve().then(()=>Se);return{refreshToken:e}},void 0);if(await t())return this.fetchRecentPackets(e,!0)}if(!o.ok)throw new Error(`API error: ${o.status}`);return o.json()}async fetchFilteredPackets(e,t=5e3,s=!1){const a=new URLSearchParams;a.set("limit",String(t)),void 0!==e&&a.set("end_timestamp",String(e-.001));const n=`/api/filtered_packets?${a}`,o=localStorage.getItem("pymc_jwt_token"),i={};o&&(i.Authorization=`Bearer ${o}`);const r=new AbortController,c=setTimeout(()=>r.abort(),3e4);try{const a=await fetch(n,{headers:i,signal:r.signal});if(401===a.status&&!s){const{refreshToken:s}=await L(async()=>{const{refreshToken:e}=await Promise.resolve().then(()=>Se);return{refreshToken:e}},void 0);if(await s())return this.fetchFilteredPackets(e,t,!0)}if(!a.ok)throw new Error(`API error: ${a.status}`);return a.json()}finally{clearTimeout(c)}}};function rt(e){return{paths:e.paths,byEndpoints:new Map(e.byEndpointsEntries),canonicalPaths:new Map(e.canonicalPathsEntries),totalObservations:e.totalObservations,uniquePathCount:e.uniquePathCount}}function ct(){return{paths:[],byEndpoints:new Map,canonicalPaths:new Map,totalObservations:0,uniquePathCount:0}}const lt=new class{constructor(){t(this,"worker",null),t(this,"listeners",new Set),t(this,"currentTopology",{edges:[],validatedEdges:[],weakEdges:[],certainEdges:[],uncertainEdges:[],edgeMap:new Map,maxPacketCount:0,maxCertainCount:0,neighborAffinity:new Map,fullAffinity:new Map,localPrefix:null,centrality:new Map,hubNodes:[],gatewayNodes:[],loops:[],loopEdgeKeys:new Set,txDelayRecommendations:new Map,pathRegistry:ct(),edgeBetweenness:new Map,backboneEdges:[],nodeMobility:new Map,mobileNodes:[],pathHealth:[],lastHopNeighbors:[],disambiguationStats:{totalPrefixes:0,unambiguousPrefixes:0,collisionPrefixes:0,collisionRate:0,avgConfidence:0,lowConfidencePrefixes:[],highCollisionPrefixes:[],totalResolutions:0},discoveredNodes:[],viterbiStats:{totalPaths:0,pathsWithGhosts:0,avgPathCost:0,avgPathConfidence:0,observationOverrideCount:0,tracePacketsProcessed:0,pathPacketsProcessed:0,distantEdgesDiscovered:0,duplicateGroupsFound:0,duplicatePathsUnique:0,echolocationEdgesInferred:0}}),t(this,"isComputing",!1),t(this,"pendingRequest",null),t(this,"debounceTimer",null),t(this,"debounceMs",100),this.initWorker()}initWorker(){if("undefined"!=typeof window)try{this.worker=new Worker(new URL("/assets/topology.worker-eIne159M.js",import.meta.url),{type:"module"}),this.worker.onmessage=e=>{this.handleWorkerMessage(e.data)},this.worker.onerror=e=>{}}catch(e){}}handleWorkerMessage(e){if(this.isComputing=!1,"error"!==e.type){var t;this.currentTopology={edges:(t=e.payload).edges??[],validatedEdges:t.validatedEdges??[],weakEdges:t.weakEdges??[],certainEdges:t.certainEdges??[],uncertainEdges:t.uncertainEdges??[],maxPacketCount:t.maxPacketCount??0,maxCertainCount:t.maxCertainCount??0,localPrefix:t.localPrefix??null,hubNodes:t.hubNodes??[],gatewayNodes:t.gatewayNodes??[],edgeMap:new Map(t.edgeMapEntries??[]),neighborAffinity:new Map(t.neighborAffinityEntries??[]),fullAffinity:new Map(t.fullAffinityEntries??[]),centrality:new Map(t.centralityEntries??[]),loops:t.loops??[],loopEdgeKeys:new Set(t.loopEdgeKeyEntries??[]),txDelayRecommendations:new Map(t.txDelayRecommendationEntries??[]),pathRegistry:t.pathRegistry?rt(t.pathRegistry):ct(),edgeBetweenness:new Map(t.edgeBetweennessEntries??[]),backboneEdges:t.backboneEdges??[],nodeMobility:new Map(t.nodeMobilityEntries??[]),mobileNodes:t.mobileNodes??[],pathHealth:t.pathHealth??[],lastHopNeighbors:t.lastHopNeighbors??[],disambiguationStats:t.disambiguationStats??{totalPrefixes:0,unambiguousPrefixes:0,collisionPrefixes:0,collisionRate:0,avgConfidence:0,lowConfidencePrefixes:[],highCollisionPrefixes:[],totalResolutions:0},discoveredNodes:t.discoveredNodes??[],viterbiStats:t.viterbiStats??{totalPaths:0,pathsWithGhosts:0,avgPathCost:0,avgPathConfidence:0,observationOverrideCount:0,tracePacketsProcessed:0,pathPacketsProcessed:0,distantEdgesDiscovered:0,duplicateGroupsFound:0,duplicatePathsUnique:0,echolocationEdgesInferred:0}};for(const t of this.listeners)try{t(this.currentTopology,e.computeTimeMs)}catch(s){}if(this.pendingRequest){const e=this.pendingRequest;this.pendingRequest=null,this.computeInternal(e)}}}computeInternal(e){if(!this.worker)return;this.isComputing=!0;const t={type:"compute",payload:e};this.worker.postMessage(t)}compute(e,t,s,a,n,o,i){const r={packets:e,neighbors:t,localHash:s,localLat:a,localLon:n,airtimeMs:o,zeroHopNeighbors:i};this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.isComputing?this.pendingRequest=r:this.computeInternal(r)},this.debounceMs)}subscribe(e){return this.listeners.add(e),this.currentTopology.edges.length>0&&e(this.currentTopology,0),()=>{this.listeners.delete(e)}}getTopology(){return this.currentTopology}isWorking(){return this.isComputing}terminate(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.worker&&(this.worker.terminate(),this.worker=null),this.listeners.clear()}},dt=new class{constructor(){t(this,"worker",null),t(this,"listeners",new Set),t(this,"sparklines",new Map),t(this,"isComputing",!1),t(this,"lastComputeTimeMs",0),t(this,"pendingRequest",null),t(this,"debounceTimer",null),t(this,"debounceMs",150),this.initWorker()}initWorker(){if("undefined"!=typeof window)try{this.worker=new Worker(new URL("/assets/sparkline.worker-CmKhBAy5.js",import.meta.url),{type:"module"}),this.worker.onmessage=e=>{this.handleWorkerMessage(e.data)},this.worker.onerror=e=>{this.isComputing=!1,this.notifyListeners()}}catch(e){}}handleWorkerMessage(e){if(this.isComputing=!1,"error"!==e.type){if(this.sparklines=new Map(e.payload.sparklineEntries),this.lastComputeTimeMs=e.computeTimeMs,this.notifyListeners(),this.pendingRequest){const e=this.pendingRequest;this.pendingRequest=null,this.computeInternal(e.packets,e.nodeHashes)}}else this.notifyListeners()}computeInternal(e,t){if(!this.worker)return;if(0===t.length)return this.isComputing=!1,void this.notifyListeners();this.isComputing=!0,this.notifyListeners();const s={type:"compute",payload:{packets:e,nodeHashes:t}};this.worker.postMessage(s)}notifyListeners(){for(const t of this.listeners)try{t(this.sparklines,this.isComputing)}catch(e){}}compute(e,t){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.isComputing?this.pendingRequest={packets:e,nodeHashes:t}:this.computeInternal(e,t)},this.debounceMs)}getSparkline(e){return this.sparklines.get(e)??[]}getAllSparklines(){return this.sparklines}hasSparkline(e){return this.sparklines.has(e)}isWorking(){return this.isComputing}getLastComputeTime(){return this.lastComputeTimeMs}subscribe(e){return this.listeners.add(e),e(this.sparklines,this.isComputing),()=>{this.listeners.delete(e)}}clear(){this.sparklines.clear(),this.notifyListeners()}terminate(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.worker&&(this.worker.terminate(),this.worker=null),this.listeners.clear()}};function ut(e){return e.startsWith("0x")||e.startsWith("0X")?e.slice(2,4).toUpperCase():e.slice(0,2).toUpperCase()}function ht(e,t){let s=e.forwarded_path??e.original_path;if("string"==typeof s)try{s=JSON.parse(s)}catch{return null}if(!s||!Array.isArray(s)||0===s.length)return null;const a=s.map(e=>String(e).toUpperCase()),n=t?ut(t):null,o=a[a.length-1],i=null!==n&&o===n,r=i?a.slice(0,-1):[...a];return{effective:r,original:a,hadLocal:i,effectiveLength:r.length}}function pt(e,t){const s=e.toUpperCase();return t.startsWith("0x")||t.startsWith("0X")?t.slice(2).toUpperCase().startsWith(s):t.toUpperCase().startsWith(s)}const mt=[{label:"20m",minutes:20,buckets:40},{label:"1h",minutes:60,buckets:60},{label:"3h",minutes:180,buckets:90},{label:"12h",minutes:720,buckets:72},{label:"24h",minutes:1440,buckets:96},{label:"3d",minutes:4320,buckets:72},{label:"7d",minutes:10080,buckets:84}],gt=[{label:"1h",hours:1},{label:"3h",hours:3},{label:"12h",hours:12},{label:"24h",hours:24},{label:"3d",hours:72},{label:"7d",hours:168}];function ft(e){switch(e){case 1:return 3600;case 3:case 12:return 5400;case 24:return 8640;case 72:return 14400;case 168:return 10080;default:{const t=3600*e;return Math.max(360,Math.round(t/10))}}}function yt(e){switch(e){case 1:return 3600;case 3:case 12:return 5400;case 24:return 8640;case 72:case 168:return 720;default:{const t=3600*e,s=Math.round(t/10);return Math.min(Math.max(360,s),720)}}}const bt={stats:3e3,packets:3e3,logs:2e3,system:3e3},xt={DEBUG:"text-[var(--log-debug)]",INFO:"text-[var(--log-info)]",WARNING:"text-[var(--log-warning)]",ERROR:"text-[var(--log-error)]",CRITICAL:"text-[var(--log-critical)]"};function wt(e){return xt[e]||"text-text-muted border-border-subtle"}const kt="pymc-resource-history",vt="pymc-resource-last-fetch",jt="pymc-hidden-contacts",St="pymc-quick-neighbors",Ct="pymc-local-hash";let Nt=null,_t=null;function Tt(e,t){const s=t-1e3*e;return s<=6048e5?"active":s<=12096e5?"stale":"expired"}function Mt(e){return 4===(e.type??e.payload_type)&&!0!==e.transmitted&&function(e){const t=function(e){if(Array.isArray(e))return e;if("string"==typeof e&&e.startsWith("["))try{const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}return[]}(e.original_path),s=e.route??e.route_type;return 2===(a=s)||3===a?0===t.length:function(e){return 1===e||0===e}(s)?t.length<=1:0===t.length;var a}(e)}function Pt(e,t,s,a,n){if(!e)return null;let o=e;if(e.length<=4){const a=e.replace(/^0x/i,"").toUpperCase();if(a===t)return null;const n=s.get(a);if(!n)return null;o=n}return a.has(o)?o===n?null:o:null}function Lt(e,t){e.count++,void 0!==t.rssi&&null!==t.rssi&&(e.rssiSum+=t.rssi,e.rssiCount++),void 0!==t.snr&&null!==t.snr&&(e.snrSum+=t.snr,e.snrCount++);const s=t.timestamp??0;s>e.lastSeen&&(e.lastSeen=s)}function Et(e){return{hash:e,count:0,rssiSum:0,rssiCount:0,snrSum:0,snrCount:0,lastSeen:0}}function It(e,t){const s=Tt(e.lastSeen,t);return"expired"===s?null:{hash:e.hash,prefix:ut(e.hash),count:e.count,avgRssi:e.rssiCount>0?e.rssiSum/e.rssiCount:null,avgSnr:e.snrCount>0?e.snrSum/e.snrCount:null,lastSeen:e.lastSeen,status:s}}function At(){if("undefined"==typeof window)return[];try{const e=localStorage.getItem(St);if(e)return JSON.parse(e)}catch{}return[]}function Rt(e){"undefined"!=typeof window&&(_t&&clearTimeout(_t),_t=setTimeout(()=>{try{localStorage.setItem(St,JSON.stringify(e))}catch{}_t=null},1e3))}function Ft(){if("undefined"!=typeof window)try{const e=localStorage.getItem(Ct);if(e)return e}catch{}}function Ot(e){if("undefined"!=typeof window)try{localStorage.setItem(Ct,e)}catch{}}function Dt(){if("undefined"==typeof window)return[];try{const e=localStorage.getItem(kt);if(e)return JSON.parse(e)}catch{}return[]}function zt(){if("undefined"==typeof window)return new Set;try{const e=localStorage.getItem(jt);if(e)return new Set(JSON.parse(e))}catch{}return new Set}function $t(){if("undefined"==typeof window)return 0;try{const e=localStorage.getItem(vt);if(e)return parseInt(e,10)||0}catch{}return 0}const Bt=n((e,t)=>({stats:null,statsLoading:!1,statsError:null,packets:[],packetsLoading:!1,packetsError:null,lastPacketTimestamp:0,logs:[],logsLoading:!1,liveMode:!0,flashReceived:0,flashAdvert:0,resourceHistory:Dt(),lastResourceFetch:$t(),hiddenContacts:zt(),quickNeighbors:At(),cachedLocalHash:Ft(),initialized:!1,packetCacheState:it.getState(),mutationsInFlight:new Set,initializeApp:async()=>{const{initialized:s}=t();if(!s){e({initialized:!0,statsLoading:!0,packetsLoading:!0}),it.subscribe(t=>{e({packetCacheState:t})});try{const{hiddenContacts:s}=t(),a=await Me(),n=a.neighbors??{},o=Date.now(),i=[];for(const[e,t]of Object.entries(n)){if(s.has(e))continue;if(!t.zero_hop)continue;const a=Tt(t.last_seen??0,o);"expired"!==a&&i.push({hash:e,prefix:ut(e),count:t.advert_count??0,avgRssi:t.rssi??null,avgSnr:t.snr??null,lastSeen:t.last_seen??0,status:a})}i.sort((e,t)=>t.count!==e.count?t.count-e.count:t.lastSeen-e.lastSeen);const r=a.local_hash;e({stats:a,statsLoading:!1,quickNeighbors:i,cachedLocalHash:r}),Rt(i),r&&Ot(r);const c=()=>{const s=it.getPackets();if(s.length>0){const a=s.reduce((e,t)=>{const s=t.timestamp??0;return s>e?s:e},0);e({packets:[...s],lastPacketTimestamp:a}),t().triggerTopologyCompute(),t().triggerSparklineCompute()}},l=await it.initialLoad(c);if(l.length>0){const s=l.reduce((e,t)=>{const s=t.timestamp??0;return s>e?s:e},0);e({packets:[...l],packetsLoading:!1,lastPacketTimestamp:s}),t().triggerTopologyCompute(),t().triggerSparklineCompute()}else e({packetsLoading:!1})}catch(a){e({statsError:a instanceof Error?a.message:"Failed to initialize",statsLoading:!1,packetsLoading:!1})}setInterval(()=>{t().fetchStats()},bt.stats),setInterval(()=>{t().liveMode&&!it.isHeavyLoadInProgress()&&t().fetchPackets()},bt.packets)}},prefetchForRoute:e=>{switch(e){case"/logs":Pe().catch(()=>{});break;case"/system":Ie().catch(()=>{});break;case"/statistics":Le(3).catch(()=>{}),Ee(3).catch(()=>{});break;case"/settings":(async function(){return _e("/api/radio_presets")})().catch(()=>{})}},fetchStats:async s=>{const{stats:a,mutationsInFlight:n,hiddenContacts:o}=t();if(!(n.size>0)||(null==s?void 0:s.force)){a||e({statsLoading:!0}),e({statsError:null});try{const t=await Me(),s=t.neighbors??{},a=Date.now(),n=[];for(const[e,r]of Object.entries(s)){if(o.has(e))continue;if(!r.zero_hop)continue;const t=Tt(r.last_seen??0,a);"expired"!==t&&n.push({hash:e,prefix:ut(e),count:r.advert_count??0,avgRssi:r.rssi??null,avgSnr:r.snr??null,lastSeen:r.last_seen??0,status:t})}n.sort((e,t)=>t.count!==e.count?t.count-e.count:t.lastSeen-e.lastSeen);const i=t.local_hash;e({stats:t,statsLoading:!1,quickNeighbors:n,cachedLocalHash:i}),Rt(n),i&&Ot(i)}catch(i){e({statsError:i instanceof Error?i.message:"Failed to fetch stats",statsLoading:!1})}}},fetchPackets:async s=>{const{packets:a}=t();0===a.length&&e({packetsLoading:!0}),e({packetsError:null});try{const s=await it.poll(),{lastPacketTimestamp:a}=t(),n=s.length>0?s.reduce((e,t)=>Math.max(e,t.timestamp??0),0):0,o=n>a&&a>0;o&&(e({flashReceived:t().flashReceived+1}),function(e=!1){if(e)Oe.clear();else for(const[t]of Oe)parseInt(t.split("-")[0],10)<=60&&Oe.delete(t)}()),e({packets:s,packetsLoading:!1,lastPacketTimestamp:n||a}),o&&t().triggerTopologyCompute()}catch(n){e({packetsError:n instanceof Error?n.message:"Failed to fetch packets",packetsLoading:!1})}},fetchLogs:async()=>{const{logs:s}=t();0===s.length&&e({logsLoading:!0});try{const t=await Pe();e({logs:t.logs,logsLoading:!1})}catch{e({logsLoading:!1})}},setLiveMode:t=>{e({liveMode:t})},setMode:async s=>{const a="setMode",{mutationsInFlight:n}=t(),o=new Set(n);o.add(a),e({mutationsInFlight:o});try{if(!(await Re(s)).success)throw new Error("Backend returned unsuccessful response");await t().fetchStats({force:!0})}catch(i){const{mutationsInFlight:s}=t(),n=new Set(s);throw n.delete(a),e({mutationsInFlight:n}),i}},clearModeMutation:()=>{const{mutationsInFlight:s}=t(),a=new Set(s);a.delete("setMode"),e({mutationsInFlight:a})},setDutyCycle:async s=>{const a="setDutyCycle",{mutationsInFlight:n}=t(),o=new Set(n);o.add(a),e({mutationsInFlight:o});try{if(!(await Fe(s)).success)throw new Error("Backend returned unsuccessful response");await t().fetchStats({force:!0})}finally{const{mutationsInFlight:s}=t(),n=new Set(s);n.delete(a),e({mutationsInFlight:n})}},setDutyCycleConfig:async s=>{var a;const n="setDutyCycleConfig",{mutationsInFlight:o}=t(),i=new Set(o);i.add(n),e({mutationsInFlight:i});try{const e=await async function(e){return _e("/api/update_duty_cycle_config",{method:"POST",body:JSON.stringify(e)})}(s);if(!e.success&&!(null==(a=e.data)?void 0:a.persisted))throw new Error("Backend returned unsuccessful response");await t().fetchStats({force:!0})}catch(r){const{mutationsInFlight:s}=t(),a=new Set(s);throw a.delete(n),e({mutationsInFlight:a}),r}},clearDutyCycleMutation:()=>{const{mutationsInFlight:s}=t(),a=new Set(s);a.delete("setDutyCycleConfig"),e({mutationsInFlight:a})},sendAdvert:async()=>{try{const s=await Ae();return s.success&&e({flashAdvert:t().flashAdvert+1}),s.success}catch(s){return!1}},triggerFlashReceived:()=>{e({flashReceived:t().flashReceived+1})},triggerFlashAdvert:()=>{e({flashAdvert:t().flashAdvert+1})},addResourceDataPoint:(s,a,n)=>{const o=Date.now(),{lastResourceFetch:i,resourceHistory:r}=t();if(o-i<1e3)return;const c=[...r,{timestamp:o,time:new Date(o).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}),cpu:s,memory:a}],l=c.length>n?c.slice(-n):c;var d,u;e({resourceHistory:l,lastResourceFetch:o}),d=l,u=o,"undefined"!=typeof window&&(Nt&&clearTimeout(Nt),Nt=setTimeout(()=>{try{localStorage.setItem(kt,JSON.stringify(d)),localStorage.setItem(vt,u.toString())}catch{}Nt=null},1e3))},hideContact:s=>{const{hiddenContacts:a}=t(),n=new Set(a);n.add(s),e({hiddenContacts:n}),function(e){if("undefined"!=typeof window)try{localStorage.setItem(jt,JSON.stringify([...e]))}catch{}}(n)},clearPacketCache:()=>{it.clear(),e({packets:[],lastPacketTimestamp:0}),it.quickLoad().then(s=>{if(s.length>0){const a=s.reduce((e,t)=>Math.max(e,t.timestamp??0),0);e({packets:s,lastPacketTimestamp:a}),t().triggerTopologyCompute()}})},triggerTopologyCompute:()=>{var e,s,a,n;const{packets:o,stats:i,hiddenContacts:r}=t();if(0===o.length||!i)return;const c=i.neighbors??{},l=Object.fromEntries(Object.entries(c).filter(([e])=>!r.has(e))),d=i.local_hash,u=null==(s=null==(e=i.config)?void 0:e.repeater)?void 0:s.latitude,h=null==(n=null==(a=i.config)?void 0:a.repeater)?void 0:n.longitude,p=[];for(const[t,m]of Object.entries(l))m.zero_hop&&p.push({hash:t,advertCount:m.advert_count??1,avgRssi:m.rssi??null,avgSnr:m.snr??null,lastSeen:m.last_seen??0,latitude:m.latitude,longitude:m.longitude});lt.compute(o,l,d,u,h,void 0,p)},triggerDeepAnalysis:async()=>{await it.forceDeepLoad();const s=it.getPackets();if(s.length>0){const a=s.reduce((e,t)=>Math.max(e,t.timestamp??0),0);e({packets:s,lastPacketTimestamp:a}),t().triggerTopologyCompute(),t().triggerSparklineCompute()}},updateQuickNeighbors:()=>{const{packets:s,stats:a,hiddenContacts:n}=t();if(0===s.length||!a)return;const o=a.neighbors??{},i=function(e,t,s){if(!s||0===e.length||0===Object.keys(t).length)return[];const a=Date.now(),n=ut(s),o=new Set(Object.keys(t)),i=function(e){var t,s;const a=new Map;for(const n of Object.keys(e)){const o=ut(n),i=a.get(o);if(i){const r=null==(t=e[i])?void 0:t.zero_hop;(null==(s=e[n])?void 0:s.zero_hop)&&!r&&a.set(o,n)}else a.set(o,n)}return a}(t),r=new Map;for(const l of e){if(!Mt(l))continue;const e=Pt(l.src_hash,n,i,o,s);if(!e)continue;let t=r.get(e);t||(t=Et(e),r.set(e,t)),Lt(t,l)}for(const[l,d]of Object.entries(t))d.zero_hop&&!r.has(l)&&r.set(l,{hash:l,count:d.advert_count??0,rssiSum:d.rssi??0,rssiCount:void 0!==d.rssi?1:0,snrSum:d.snr??0,snrCount:void 0!==d.snr?1:0,lastSeen:d.last_seen??0});const c=[];for(const l of r.values()){const e=It(l,a);e&&c.push(e)}return c.sort((e,t)=>t.count!==e.count?t.count-e.count:t.lastSeen-e.lastSeen),c}(s,Object.fromEntries(Object.entries(o).filter(([e])=>!n.has(e))),a.local_hash),r=t().quickNeighbors;(i.length!==r.length||i.some((e,t)=>{var s,a;return e.hash!==(null==(s=r[t])?void 0:s.hash)||e.count!==(null==(a=r[t])?void 0:a.count)}))&&(e({quickNeighbors:i}),Rt(i))},triggerSparklineCompute:()=>{const{packets:e,stats:s,hiddenContacts:a}=t();if(0===e.length||!s)return;const n=s.neighbors??{},o=Object.keys(n).filter(e=>!a.has(e));0!==o.length&&dt.compute(e,o)}})),Wt=Bt,Ht=()=>Bt(e=>e.stats),qt=()=>Bt(e=>e.statsError),Ut=()=>Bt(e=>e.packets),Jt=()=>Bt(e=>e.packetsLoading),Gt=()=>Bt(e=>e.logs),Vt=()=>Bt(e=>e.logsLoading),Kt=()=>Bt(e=>e.liveMode),Qt=()=>Bt(e=>e.flashAdvert),Xt=()=>Bt(e=>e.fetchLogs),Zt=()=>Bt(e=>e.setLiveMode),Yt=()=>Bt(e=>e.resourceHistory),es=()=>Bt(e=>e.addResourceDataPoint),ts=()=>Bt(e=>e.hiddenContacts),ss=()=>Bt(e=>e.hideContact),as=()=>Bt(e=>e.packetCacheState),ns=()=>Bt(e=>e.triggerDeepAnalysis),os=()=>Bt(e=>e.quickNeighbors),is=()=>Bt(e=>e.cachedLocalHash),rs=()=>Bt(e=>e.packetCacheState.backgroundLoadComplete);function cs({showLabel:e=!1,className:t}){const n=Bt(e=>e.flashReceived),o=Qt(),[i,r]=s.useState("idle");return s.useEffect(()=>{if(n>0){r("received");const e=setTimeout(()=>r("idle"),300);return()=>clearTimeout(e)}},[n]),s.useEffect(()=>{if(o>0){r("transmitted");const e=setTimeout(()=>r("idle"),300);return()=>clearTimeout(e)}},[o]),a.jsxs("span",{className:E("inline-flex items-center gap-2",t),children:[a.jsx("span",{className:E("inline-flex rounded-full h-2 w-2 transition-all duration-150","received"===i&&"bg-accent-danger scale-150","transmitted"===i&&"bg-white scale-150","idle"===i&&"bg-accent-success")}),e&&a.jsx("span",{className:"type-data-xs text-text-muted uppercase tracking-wide",children:"Live"})]})}const ls=n(e=>({sparklines:new Map,isComputing:!1,lastUpdated:0,nodeCount:0,setSparklines:t=>e({sparklines:t,lastUpdated:Date.now(),nodeCount:t.size,isComputing:!1}),setComputing:t=>e({isComputing:t})}));"undefined"!=typeof window&&setTimeout(()=>{dt.subscribe((e,t)=>{const s=ls.getState();t&&!s.isComputing?s.setComputing(!0):!t&&e.size>0?s.setSparklines(e):!t&&s.isComputing&&s.setComputing(!1)})},0);const ds=()=>ls(e=>e.isComputing),us=[],hs=new Map;function ps(e){return ls(t=>{const s=t.sparklines.get(e);if(!s||0===s.length)return us;const a=hs.get(e);return a===s?a:(hs.set(e,s),s)})}const ms=n(e=>({topology:{edges:[],validatedEdges:[],weakEdges:[],certainEdges:[],uncertainEdges:[],edgeMap:new Map,maxPacketCount:0,maxCertainCount:0,neighborAffinity:new Map,fullAffinity:new Map,localPrefix:null,centrality:new Map,hubNodes:[],gatewayNodes:[],loops:[],loopEdgeKeys:new Set,txDelayRecommendations:new Map,pathRegistry:ct(),edgeBetweenness:new Map,backboneEdges:[],nodeMobility:new Map,mobileNodes:[],pathHealth:[],lastHopNeighbors:[],disambiguationStats:{totalPrefixes:0,unambiguousPrefixes:0,collisionPrefixes:0,collisionRate:0,avgConfidence:0,lowConfidencePrefixes:[],highCollisionPrefixes:[],totalResolutions:0},discoveredNodes:[],viterbiStats:{totalPaths:0,pathsWithGhosts:0,avgPathCost:0,avgPathConfidence:0,observationOverrideCount:0,tracePacketsProcessed:0,pathPacketsProcessed:0,distantEdgesDiscovered:0,duplicateGroupsFound:0,duplicatePathsUnique:0,echolocationEdgesInferred:0}},isComputing:!1,lastComputeTimeMs:0,lastUpdated:0,setTopology:(t,s)=>e({topology:t,lastComputeTimeMs:s,lastUpdated:Date.now(),isComputing:!1}),setComputing:t=>e({isComputing:t})}));"undefined"!=typeof window&<.subscribe((e,t)=>{ms.getState().setTopology(e,t)});const gs=()=>ms(e=>e.topology),fs=()=>ms(e=>e.topology.hubNodes),ys=()=>ms(e=>e.topology.centrality),bs=()=>ms(e=>e.topology.fullAffinity);let xs=null,ws=null,ks=null,vs=null;const js=()=>ms(e=>(e.topology.hubNodes!==ws&&(ws=e.topology.hubNodes,xs=new Set(e.topology.hubNodes)),xs)),Ss=()=>ms(e=>e.topology.pathHealth),Cs=()=>ms(e=>e.topology.disambiguationStats),Ns=()=>ms(e=>e.topology.disambiguationStats.highCollisionPrefixes),_s=()=>ms(e=>e.topology.disambiguationStats.totalPrefixes>0),Ts=()=>ms(e=>e.topology.discoveredNodes),Ms=()=>ms(e=>e.topology.viterbiStats),Ps=()=>ms(e=>(e.topology.discoveredNodes!==vs&&(vs=e.topology.discoveredNodes,ks=e.topology.discoveredNodes.filter(e=>e.isLikelyReal)),ks));function Ls(e){if(e<60)return`${Math.floor(e)}s`;const t=Math.floor(e/86400),s=Math.floor(e%86400/3600),a=Math.floor(e%3600/60),n=[];return t>0&&n.push(`${t}d`),s>0&&n.push(`${s}h`),(a>0||0===n.length)&&n.push(`${a}m`),n.join(" ")}function Es(e){const t=Date.now()/1e3-e;return t<60?"just now":t<3600?`${Math.floor(t/60)}m ago`:t<86400?`${Math.floor(t/3600)}h ago`:`${Math.floor(t/86400)}d ago`}function Is(e){const t=Date.now()/1e3-e;return t<60?`${Math.floor(t)}s`:t<3600?`${Math.floor(t/60)}m`:t<86400?`${Math.floor(t/3600)}h`:`${Math.floor(t/86400)}d`}function As(e){return new Date(1e3*e).toLocaleString()}function Rs(e){const t=new Date(1e3*e);return`${t.toLocaleString("en-US",{month:"short"})} ${t.getDate()}, ${t.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}`}function Fs(e){return`${(e/1e6).toFixed(3)} MHz`}function Os(e){return`${(e/1e3).toFixed(1)} kHz`}function Ds(e){const t=e>1e12?e:1e3*e,s=Date.now(),a=Math.abs(s-t),n=Math.floor(a/1e3),o=Math.floor(n/60),i=Math.floor(o/60),r=Math.floor(i/24);return r>0?`${r} day${1!==r?"s":""}`:i>0?`${i} hour${1!==i?"s":""}`:o>0?`${o} minute${1!==o?"s":""}`:`${n} second${1!==n?"s":""}`}const zs=[{name:"Dashboard",to:"/",icon:c},{name:"Contacts",to:"/contacts",icon:l},{name:"Packets",to:"/packets",icon:d},{name:"Statistics",to:"/statistics",icon:u},{name:"System",to:"/system",icon:h},{name:"Logs",to:"/logs",icon:p},{name:"Terminal",to:"/terminal",icon:m},{name:"Configuration",to:"/configuration",icon:g}],$s="pymc-controls-expanded";function Bs(){var e,t,n,c;const{pathname:l}=o(),{stats:d,setMode:u,setDutyCycle:p,sendAdvert:m}=Wt(),g=we(),N=Bt(e=>e.prefetchForRoute),_=as(),T=ds(),M=ms(e=>e.isComputing),P=Ps(),[L,I]=s.useState(!1),[A,R]=s.useState(!0),[F,O]=s.useState(!1),D=s.useRef(null),z=s.useCallback(e=>{e!==l&&(D.current&&clearTimeout(D.current),D.current=setTimeout(()=>{N(e)},100))},[l,N]),$=s.useCallback(()=>{D.current&&(clearTimeout(D.current),D.current=null)},[]);s.useEffect(()=>{const e=localStorage.getItem($s);null!==e&&queueMicrotask(()=>R("true"===e))},[]);const B=()=>{const e=!A;R(e),localStorage.setItem($s,String(e))};s.useEffect(()=>{queueMicrotask(()=>I(!1))},[l]),s.useEffect(()=>(document.body.style.overflow=L?"hidden":"",()=>{document.body.style.overflow=""}),[L]);const W=null==d?void 0:d.noise_floor_dbm,H=(null==(t=null==(e=null==d?void 0:d.config)?void 0:e.repeater)?void 0:t.mode)??"forward",q=(null==(c=null==(n=null==d?void 0:d.config)?void 0:n.duty_cycle)?void 0:c.enforcement_enabled)??!1,U=async()=>{O(!0),await m(),setTimeout(()=>O(!1),1e3)},J=()=>{u("forward"===H?"monitor":"forward")},G=()=>{p(!q)},V=()=>{je(),window.location.href="/login"},K=_.isLoading||_.isTopologyLoading,Q=K||T||M,X=_.loadProgress,Z=()=>{if(!Q)return null;let e="Analyzing database";K&&X?e=`Loading ${X.loaded.toLocaleString()} packets`:T?e="Computing sparklines":M&&(e="Building topology");const t=(null==X?void 0:X.percent)??null,s=null!==t&&K;return a.jsxs("div",{className:"px-3 pb-2",children:[a.jsxs("div",{className:"flex items-center gap-2 px-2 py-1.5",children:[a.jsxs("div",{className:"relative flex h-2 w-2",children:[a.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-accent-primary opacity-75"}),a.jsx("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-accent-primary"})]}),a.jsx("span",{className:"type-data-xs text-text-muted",children:e}),s&&a.jsxs("span",{className:"type-data-xs text-text-muted ml-auto",children:[t,"%"]})]}),a.jsx("div",{className:"mx-2 h-0.5 bg-white/5 rounded-full overflow-hidden",children:s?a.jsx("div",{className:"h-full bg-accent-primary/60 rounded-full transition-all duration-300 ease-out",style:{width:`${t}%`}}):a.jsx("div",{className:"h-full bg-accent-primary/60 rounded-full animate-pulse",style:{width:"100%",animation:"shimmer 1.5s ease-in-out infinite"}})})]})},Y=()=>a.jsx("nav",{className:"flex-1 px-3 py-4 space-y-1 overflow-y-auto",children:zs.map(e=>{const t=l===e.to;return a.jsxs(f,{to:e.to,onClick:()=>I(!1),onMouseEnter:()=>z(e.to),onMouseLeave:$,className:E("flex items-center gap-3 px-3 py-2.5 rounded-xl transition-all duration-150 min-h-[44px]",t?"bg-accent-primary/15 text-accent-primary":"text-text-muted hover:text-text-primary hover:bg-white/5"),children:[a.jsx(e.icon,{className:E("w-5 h-5 flex-shrink-0",t&&"text-accent-primary")}),a.jsx("span",{className:"type-body-sm font-medium",children:e.name}),"/contacts"===e.to&&P.length>0&&a.jsxs("span",{className:"ml-auto flex items-center gap-1 px-1.5 py-0.5 rounded-full bg-accent-tertiary/20 text-accent-tertiary",children:[a.jsx(y,{className:"w-3 h-3"}),a.jsx("span",{className:"type-data-xs font-medium",children:P.length})]})]},e.name)})}),ee=()=>a.jsxs("div",{className:"px-3 py-3",children:[a.jsxs("button",{onClick:B,className:"w-full flex items-center justify-between px-2 py-1.5 mb-2 rounded-lg hover:bg-white/5 transition-colors",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(b,{className:"w-4 h-4 text-accent-primary"}),a.jsx("span",{className:"type-data-xs text-text-muted uppercase tracking-wide",children:"Controls"})]}),a.jsx(x,{className:E("w-4 h-4 text-text-muted transition-transform duration-200",A?"rotate-0":"-rotate-90")})]}),a.jsx("div",{className:E("overflow-hidden transition-all duration-300 ease-out",A?"max-h-96 opacity-100":"max-h-0 opacity-0"),children:a.jsxs("div",{className:"control-panel-skeuo",children:[a.jsxs("button",{onClick:U,disabled:F,className:E("control-btn control-btn-primary w-full",F&&"opacity-70"),children:[a.jsx(w,{className:E("w-4 h-4",F&&"animate-pulse")}),a.jsx("span",{children:F?"Sending...":"Send Advert"})]}),a.jsxs("div",{className:"control-toggle-group",children:[a.jsxs("div",{className:"control-toggle-label",children:[a.jsx("span",{children:"Mode"}),a.jsx("span",{className:E("control-toggle-status","forward"===H?"text-accent-success":"text-accent-secondary"),children:"forward"===H?"FWD":"MON"})]}),a.jsx("button",{onClick:J,className:E("control-btn w-full","forward"===H?"control-btn-success":"control-btn-warning"),children:"forward"===H?a.jsxs(a.Fragment,{children:[a.jsx(k,{className:"w-4 h-4"}),a.jsx("span",{children:"Forward"})]}):a.jsxs(a.Fragment,{children:[a.jsx(v,{className:"w-4 h-4"}),a.jsx("span",{children:"Monitor"})]})})]}),a.jsxs("div",{className:"control-toggle-group",children:[a.jsxs("div",{className:"control-toggle-label",children:[a.jsx("span",{children:"Duty Cycle"}),a.jsx("span",{className:E("control-toggle-status",q?"text-accent-success":"text-text-muted"),children:q?"ON":"OFF"})]}),a.jsxs("button",{onClick:G,className:E("control-btn w-full",q?"control-btn-success":"control-btn-neutral"),children:[a.jsx(h,{className:"w-4 h-4"}),a.jsx("span",{children:q?"Enabled":"Disabled"})]})]})]})})]}),ne=()=>a.jsxs("div",{className:"mt-auto border-t border-white/5",children:[void 0!==(null==d?void 0:d.uptime_seconds)&&a.jsxs("div",{className:"px-4 py-3 flex items-center gap-2",children:[a.jsx(j,{className:"w-3.5 h-3.5 text-text-muted"}),a.jsxs("span",{className:"type-data-xs text-text-secondary tabular-nums",children:[Ls(d.uptime_seconds)," uptime"]})]}),a.jsx("div",{className:"px-3 pb-3",children:a.jsx("div",{className:"bg-white/[0.03] rounded-xl p-3",children:a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(S,{className:"w-4 h-4 text-accent-primary"}),a.jsx("span",{className:"type-data-xs text-text-muted",children:"Noise Floor"})]}),a.jsx("span",{className:"type-data text-text-primary tabular-nums",children:null!=W?`${W.toFixed(0)} dBm`:"—"})]})})}),a.jsxs("div",{className:"px-4 py-3 flex items-center justify-between border-t border-white/5",children:[a.jsx(cs,{showLabel:!0}),(null==d?void 0:d.version)&&a.jsxs("span",{className:"type-data-xs text-text-muted",children:["v",d.version]})]}),a.jsx("div",{className:"px-3 pb-3",children:a.jsxs("button",{onClick:V,className:"w-full flex items-center gap-3 px-3 py-2.5 rounded-xl text-text-muted hover:text-accent-danger hover:bg-accent-danger/10 transition-all duration-150",children:[a.jsx(C,{className:"w-4 h-4"}),a.jsx("span",{className:"type-body-sm",children:"Sign Out"}),g&&a.jsxs("span",{className:"ml-auto type-data-xs text-text-muted",children:["(",g,")"]})]})})]});return a.jsxs(a.Fragment,{children:[a.jsx("header",{className:"lg:hidden fixed top-0 inset-x-0 z-[10001] h-14 bg-bg-body/70 backdrop-blur-xl border-b border-white/10",children:a.jsxs("div",{className:"flex items-center justify-between h-full px-4",children:[a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"w-10 h-10 rounded-xl overflow-hidden border border-white/10 shadow-lg shadow-black/20 hover:border-white/20 hover:shadow-xl transition-all flex-shrink-0",title:"West Coast Mesh",children:a.jsx("img",{src:se,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),a.jsx("h1",{className:"sr-only",children:"pyMC Console"}),a.jsx(ae,{height:20,className:"block"})]}),a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsxs("p",{className:"type-data-xs text-text-muted",children:["v",te]}),a.jsx(cs,{}),a.jsx("button",{onClick:()=>I(!L),className:"w-10 h-10 flex items-center justify-center rounded-xl hover:bg-white/5 active:bg-white/10 transition-colors","aria-label":L?"Close menu":"Open menu",children:L?a.jsx(i,{className:"w-5 h-5 text-text-primary"}):a.jsx(r,{className:"w-5 h-5 text-text-primary"})})]})]})}),a.jsx("div",{className:E("lg:hidden fixed inset-0 z-[10002] bg-black/60 backdrop-blur-sm transition-opacity duration-300",L?"opacity-100":"opacity-0 pointer-events-none"),onClick:()=>I(!1),"aria-hidden":"true"}),a.jsxs("aside",{className:E("lg:hidden fixed top-0 left-0 z-[10003] w-72 max-w-[85vw] h-full","glass-sidebar","flex flex-col","transform transition-transform duration-300 ease-out",L?"translate-x-0":"-translate-x-full pointer-events-none"),children:[a.jsxs("div",{className:"flex items-center gap-3 px-4 py-5 border-b border-white/5",children:[a.jsx("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"w-11 h-11 rounded-xl overflow-hidden border border-white/10 shadow-lg shadow-black/20 hover:border-white/20 hover:shadow-xl transition-all flex-shrink-0",title:"West Coast Mesh",children:a.jsx("img",{src:se,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),a.jsxs("div",{className:"flex-1 min-w-0",children:[a.jsx("h1",{className:"sr-only",children:"pyMC Console"}),a.jsx(ae,{height:18,className:"block"}),a.jsxs("p",{className:"type-data-xs text-text-muted mt-0.5",children:["v",te]})]})]}),Y(),Z(),ee(),ne()]}),a.jsxs("aside",{className:"hidden lg:flex flex-col w-64 flex-shrink-0 h-full relative glass-sidebar",children:[a.jsxs("div",{className:"flex items-center gap-3 px-5 py-6 border-b border-white/5",children:[a.jsx("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"w-11 h-11 rounded-xl overflow-hidden border border-white/10 shadow-lg shadow-black/20 hover:border-white/20 hover:shadow-xl transition-all flex-shrink-0",title:"West Coast Mesh",children:a.jsx("img",{src:se,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),a.jsxs("div",{className:"flex-1 min-w-0",children:[a.jsx("h1",{className:"sr-only",children:"pyMC Console"}),a.jsx(ae,{height:18,className:"block"}),a.jsxs("p",{className:"type-data-xs text-text-muted mt-0.5",children:["v",te]})]})]}),Y(),Z(),ee(),ne()]})]})}const Ws=s.memo(function(){const{theme:e}=ee(),{backgroundImage:t,brightness:n}=e,[o,i]=s.useState(t),[r,c]=s.useState(!1);s.useEffect(()=>{if(t===o)return;const e=new Image;e.onload=()=>{c(!0),requestAnimationFrame(()=>{i(t),setTimeout(()=>c(!1),300)})},e.onerror=()=>{i(t)},e.src=t},[t,o]);const l=(100-n)/100;return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"fixed inset-0 -z-20",style:{contain:"paint",willChange:r?"opacity":"auto"},"aria-hidden":"true",children:a.jsx("div",{className:"absolute inset-0 bg-cover bg-center bg-no-repeat transition-opacity duration-300 ease-out",style:{backgroundImage:`url(${o})`,opacity:r?.7:1}})}),a.jsx("div",{className:"fixed inset-0 -z-10 bg-black pointer-events-none transition-opacity duration-200 ease-out",style:{opacity:l,contain:"paint"},"aria-hidden":"true"})]})});function Hs({className:e=""}){return a.jsx("div",{className:`bg-white/5 animate-pulse rounded-lg ${e}`,"aria-hidden":"true"})}function qs(){return a.jsxs("div",{className:"section-gap","aria-label":"Loading dashboard",children:[a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx(Hs,{className:"h-8 w-48"}),a.jsx(Hs,{className:"h-8 w-32"})]}),a.jsx(Hs,{className:"h-72"}),a.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-8 gap-3",children:Array.from({length:8}).map((e,t)=>a.jsx(Hs,{className:"h-24"},t))}),a.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:Array.from({length:4}).map((e,t)=>a.jsx(Hs,{className:"h-44"},t))}),a.jsx(Hs,{className:"h-96"})]})}function Us(){return a.jsxs("div",{className:"section-gap","aria-label":"Loading list",children:[a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx(Hs,{className:"h-8 w-40"}),a.jsx(Hs,{className:"h-8 w-24"})]}),a.jsx(Hs,{className:"h-20"}),a.jsxs("div",{className:"glass-card overflow-hidden",children:[a.jsx(Hs,{className:"h-10 rounded-none"}),a.jsx("div",{className:"divide-y divide-border-subtle/30",children:Array.from({length:10}).map((e,t)=>a.jsx("div",{className:"px-4 py-3",children:a.jsx(Hs,{className:"h-6"})},t))})]})]})}function Js(){return a.jsxs("div",{className:"section-gap","aria-label":"Loading map",children:[a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx(Hs,{className:"h-8 w-32"}),a.jsx(Hs,{className:"h-6 w-48"})]}),a.jsx(Hs,{className:"h-[500px]"}),a.jsx(Hs,{className:"h-64"})]})}function Gs(){return a.jsxs("div",{className:"section-gap","aria-label":"Loading charts",children:[a.jsxs("div",{className:"flex items-center justify-between",children:[a.jsx(Hs,{className:"h-8 w-36"}),a.jsx(Hs,{className:"h-8 w-40"})]}),a.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[a.jsx(Hs,{className:"h-80"}),a.jsx(Hs,{className:"h-80"})]}),a.jsx(Hs,{className:"h-64"})]})}function Vs(){return a.jsxs("div",{className:"section-gap","aria-label":"Loading settings",children:[a.jsx(Hs,{className:"h-8 w-32"}),a.jsxs("div",{className:"space-y-6",children:[a.jsx(Hs,{className:"h-48"}),a.jsx(Hs,{className:"h-64"}),a.jsx(Hs,{className:"h-32"})]})]})}function Ks(){return a.jsxs("div",{className:"section-gap","aria-label":"Loading system info",children:[a.jsx(Hs,{className:"h-8 w-28"}),a.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:Array.from({length:4}).map((e,t)=>a.jsx(Hs,{className:"h-28"},t))}),a.jsx(Hs,{className:"h-64"}),a.jsx(Hs,{className:"h-48"})]})}const Qs=s.lazy(()=>L(()=>import("./Login-BVGfeeRd.js"),__vite__mapDeps([0,1,2]))),Xs=s.lazy(()=>L(()=>import("./Dashboard-BfZs_ThN.js"),__vite__mapDeps([3,1,2,4,5,6,7,8,9,10]))),Zs=s.lazy(()=>L(()=>import("./Packets-wtXWXIE0.js"),__vite__mapDeps([11,1,2,6,7,8,5]))),Ys=s.lazy(()=>L(()=>import("./Contacts-CZV5Ovbv.js").then(e=>e.C),__vite__mapDeps([12,1,2,7,8,13,14,5,15]))),ea=s.lazy(()=>L(()=>import("./Statistics-C2Q9qDtH.js"),__vite__mapDeps([16,1,2,9,17,4,5,14,10,15,18]))),ta=s.lazy(()=>L(()=>import("./System-BSF0fscu.js"),__vite__mapDeps([19,1,2,5,4,10]))),sa=s.lazy(()=>L(()=>import("./Logs-CZ5S1k0r.js"),__vite__mapDeps([20,1,2,17,5]))),aa=s.lazy(()=>L(()=>import("./Terminal-fFigQMKz.js"),__vite__mapDeps([21,1,2,5]))),na=s.lazy(()=>L(()=>import("./Configuration-HwYFsp1c.js"),__vite__mapDeps([22,1,2,8,13,5,10])));function oa({children:e}){const t=o();return fe()?a.jsx(a.Fragment,{children:e}):a.jsx(T,{to:"/login",state:{from:t},replace:!0})}class ia extends s.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){var e;return this.state.hasError?a.jsxs("div",{className:"glass-card p-8 text-center",children:[a.jsx("p",{className:"type-subheading text-accent-red mb-2",children:"Page failed to render"}),a.jsx("p",{className:"type-body text-white/50 mb-4",children:(null==(e=this.state.error)?void 0:e.message)||"Unknown error"}),a.jsx("button",{onClick:()=>this.setState({hasError:!1}),className:"px-4 py-2 bg-accent-primary/20 text-accent-primary rounded-lg hover:bg-accent-primary/30 transition-colors",children:"Try Again"})]}):this.props.children}}function ra(){const e=Bt(e=>e.initializeApp),t=fe();return s.useEffect(()=>{t&&e()},[e,t]),a.jsxs(a.Fragment,{children:[a.jsx(Ws,{}),a.jsxs(N,{children:[a.jsx(_,{path:"/login",element:a.jsx(s.Suspense,{fallback:a.jsx("div",{className:"min-h-screen bg-bg-body"}),children:a.jsx(Qs,{})})}),a.jsx(_,{path:"/*",element:a.jsx(oa,{children:a.jsxs("div",{className:"flex h-screen overflow-hidden",children:[a.jsx(Bs,{}),a.jsx("main",{className:"flex-1 w-full min-w-0 pt-14 lg:pt-0 overflow-y-auto",children:a.jsx("div",{className:"p-4 sm:p-6 lg:p-8 max-w-7xl mx-auto",children:a.jsx(ia,{children:a.jsxs(N,{children:[a.jsx(_,{path:"/",element:a.jsx(s.Suspense,{fallback:a.jsx(qs,{}),children:a.jsx(Xs,{})})}),a.jsx(_,{path:"/packets",element:a.jsx(s.Suspense,{fallback:a.jsx(Us,{}),children:a.jsx(Zs,{})})}),a.jsx(_,{path:"/contacts",element:a.jsx(s.Suspense,{fallback:a.jsx(Js,{}),children:a.jsx(Ys,{})})}),a.jsx(_,{path:"/statistics",element:a.jsx(s.Suspense,{fallback:a.jsx(Gs,{}),children:a.jsx(ea,{})})}),a.jsx(_,{path:"/system",element:a.jsx(s.Suspense,{fallback:a.jsx(Ks,{}),children:a.jsx(ta,{})})}),a.jsx(_,{path:"/logs",element:a.jsx(s.Suspense,{fallback:a.jsx(Us,{}),children:a.jsx(sa,{})})}),a.jsx(_,{path:"/terminal",element:a.jsx(s.Suspense,{fallback:a.jsx(Us,{}),children:a.jsx(aa,{})})}),a.jsx(_,{path:"/configuration",element:a.jsx(s.Suspense,{fallback:a.jsx(Vs,{}),children:a.jsx(na,{})})})]})})})})]})})})]})]})}const ca=console.warn;console.warn=(...e)=>{const t=e[0];"string"==typeof t&&t.includes("width")&&t.includes("height")&&t.includes("chart should be greater than 0")||ca.apply(console,e)},M.createRoot(document.getElementById("root")).render(a.jsx(s.StrictMode,{children:a.jsx(Y,{children:a.jsx(P,{children:a.jsx(ra,{})})})}));export{bt as $,Ds as A,ps as B,ds as C,mt as D,Ns as E,Wt as F,ss as G,fs as H,ys as I,Ps as J,Je as K,Es as L,ce as M,le as N,ie as O,ae as P,Cs as Q,oe as R,_s as S,gt as T,ft as U,Le as V,se as W,yt as X,Yt as Y,es as Z,Ie as _,Jt as a,Gt as a0,Vt as a1,Xt as a2,$e as a3,wt as a4,Me as a5,Ae as a6,Re as a7,Fe as a8,ze as a9,ee as aa,R as ab,B as ac,Qe as ad,Be as ae,Fs as af,Os as ag,Ge as ah,Ve as ai,Ke as aj,Xe as ak,Ze as al,Ue as am,We as an,He as ao,qe as ap,ht as aq,gs as ar,ns as as,as as at,is as au,Kt as b,Qt as c,Ht as d,os as e,ts as f,Ee as g,qt as h,fe as i,rs as j,De as k,ke as l,Ls as m,Zt as n,ne as o,Is as p,Rs as q,pt as r,ut as s,js as t,Ut as u,bs as v,Ts as w,As as x,Ss as y,Ms as z}; diff --git a/frontend/dist/assets/index-CiR3C65a.css b/frontend/dist/assets/index-CiR3C65a.css deleted file mode 100644 index 53bbb76b..00000000 --- a/frontend/dist/assets/index-CiR3C65a.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/jetbrains-mono-latin-800-normal-D2mQHRMK.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-800-normal-Dj9qwObk.woff) format("woff")}@font-face{font-family:Rubik Mono One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/rubik-mono-one-latin-400-normal-U2Afr9Di.woff2) format("woff2"),url(/assets/rubik-mono-one-latin-400-normal-Cd19iSlZ.woff) format("woff")}@font-face{font-family:"Jacquard 12";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jacquard-12-latin-400-normal-CFgZUtB9.woff2) format("woff2"),url(/assets/jacquard-12-latin-400-normal-DUTP1itc.woff) format("woff")}@font-face{font-family:Cantora One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cantora-one-latin-400-normal-BBwF22QI.woff2) format("woff2"),url(/assets/cantora-one-latin-400-normal-DwNspYVg.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}@font-face{font-family:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2) format("woff2"),url(/assets/instrument-serif-latin-400-normal-BVbkICAY.woff) format("woff")}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-teal-400:oklch(77.7% .152 181.912);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-blue-400:oklch(70.7% .165 254.624);--color-indigo-400:oklch(67.3% .182 276.935);--color-violet-400:oklch(70.2% .183 293.541);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-5xl:3rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--drop-shadow-lg:0 4px 4px #00000026;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-display);--default-mono-font-family:var(--font-data)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-x-1{inset-inline:calc(var(--spacing)*1)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-2{top:calc(var(--spacing)*-2)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-\[2px\]{top:2px}.-right-0\.5{right:calc(var(--spacing)*-.5)}.-right-2{right:calc(var(--spacing)*-2)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-1\.5{right:calc(var(--spacing)*1.5)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.-bottom-0\.5{bottom:calc(var(--spacing)*-.5)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-\[72px\]{bottom:72px}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.left-4{left:calc(var(--spacing)*4)}.isolate{isolation:isolate}.-z-10{z-index:-10}.-z-20{z-index:-20}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.z-\[600\]{z-index:600}.z-\[10001\]{z-index:10001}.z-\[10002\]{z-index:10002}.z-\[10003\]{z-index:10003}.z-\[10010\]{z-index:10010}.col-auto{grid-column:auto}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.container{width:100%}@media(min-width:475px){.container{max-width:475px}}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-0\.5{margin-inline:calc(var(--spacing)*.5)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing)*-1)}.mr-0\.5{margin-right:calc(var(--spacing)*.5)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-1\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-7{margin-left:calc(var(--spacing)*7)}.ml-8{margin-left:calc(var(--spacing)*8)}.ml-9{margin-left:calc(var(--spacing)*9)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-1\/2{height:50%}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-28{height:calc(var(--spacing)*28)}.h-32{height:calc(var(--spacing)*32)}.h-44{height:calc(var(--spacing)*44)}.h-48{height:calc(var(--spacing)*48)}.h-56{height:calc(var(--spacing)*56)}.h-64{height:calc(var(--spacing)*64)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-96{height:calc(var(--spacing)*96)}.h-\[1\.2em\]{height:1.2em}.h-\[18px\]{height:18px}.h-\[32px\]{height:32px}.h-\[36px\]{height:36px}.h-\[38px\]{height:38px}.h-\[200px\]{height:200px}.h-\[500px\]{height:500px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:calc(var(--spacing)*0)}.max-h-64{max-height:calc(var(--spacing)*64)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(100vh-300px\)\]{max-height:calc(100vh - 300px)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[3rem\]{min-height:3rem}.min-h-\[24px\]{min-height:24px}.min-h-\[44px\]{min-height:44px}.min-h-\[120px\]{min-height:120px}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-44{width:calc(var(--spacing)*44)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-\[0\.6em\]{width:.6em}.w-\[3px\]{width:3px}.w-\[240px\]{width:240px}.w-\[540px\]{width:540px}.w-full{width:100%}.w-px{width:1px}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[85vw\]{max-width:85vw}.max-w-\[240px\]{max-width:240px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[18px\]{min-width:18px}.min-w-\[60px\]{min-width:60px}.min-w-\[80px\]{min-width:80px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-150{--tw-scale-x:150%;--tw-scale-y:150%;--tw-scale-z:150%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-rotate-90{rotate:-90deg}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[135deg\]{rotate:135deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.touch-manipulation{touch-action:manipulation}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.columns-2{columns:2}.columns-3{columns:3}.columns-4{columns:4}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-\[1px\]{gap:1px}.gap-\[2px\]{gap:2px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing)*3)}.gap-y-0\.5{row-gap:calc(var(--spacing)*.5)}.gap-y-1{row-gap:calc(var(--spacing)*1)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border-subtle>:not(:last-child)),:where(.divide-border-subtle\/30>:not(:last-child)){border-color:var(--border-subtle)}@supports (color:color-mix(in lab,red,red)){:where(.divide-border-subtle\/30>:not(:last-child)){border-color:color-mix(in oklab,var(--border-subtle)30%,transparent)}}:where(.divide-white\/5>:not(:last-child)){border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){:where(.divide-white\/5>:not(:last-child)){border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[1\.125rem\]{border-radius:1.125rem}.rounded-\[1px\]{border-radius:1px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:1px}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-sm{border-top-left-radius:var(--radius-sm);border-top-right-radius:var(--radius-sm)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[var\(--route-direct\)\]\/30{border-color:var(--route-direct)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--route-direct\)\]\/30{border-color:color-mix(in oklab,var(--route-direct)30%,transparent)}}.border-\[var\(--route-flood\)\]\/30{border-color:var(--route-flood)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--route-flood\)\]\/30{border-color:color-mix(in oklab,var(--route-flood)30%,transparent)}}.border-\[var\(--route-transport\)\]\/30{border-color:var(--route-transport)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--route-transport\)\]\/30{border-color:color-mix(in oklab,var(--route-transport)30%,transparent)}}.border-accent-danger\/30{border-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.border-accent-danger\/30{border-color:color-mix(in oklab,var(--accent-danger)30%,transparent)}}.border-accent-danger\/50{border-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.border-accent-danger\/50{border-color:color-mix(in oklab,var(--accent-danger)50%,transparent)}}.border-accent-primary,.border-accent-primary\/30{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-primary\/30{border-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.border-accent-primary\/40{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-primary\/40{border-color:color-mix(in oklab,var(--accent-primary)40%,transparent)}}.border-accent-primary\/50{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-primary\/50{border-color:color-mix(in oklab,var(--accent-primary)50%,transparent)}}.border-accent-purple\/30{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.border-accent-purple\/30{border-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.border-accent-red\/50{border-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.border-accent-red\/50{border-color:color-mix(in oklab,var(--accent-danger)50%,transparent)}}.border-accent-secondary\/30{border-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.border-accent-secondary\/30{border-color:color-mix(in oklab,var(--accent-secondary)30%,transparent)}}.border-accent-secondary\/50{border-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.border-accent-secondary\/50{border-color:color-mix(in oklab,var(--accent-secondary)50%,transparent)}}.border-accent-success\/20{border-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.border-accent-success\/20{border-color:color-mix(in oklab,var(--accent-success)20%,transparent)}}.border-accent-success\/30{border-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.border-accent-success\/30{border-color:color-mix(in oklab,var(--accent-success)30%,transparent)}}.border-accent-success\/50{border-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.border-accent-success\/50{border-color:color-mix(in oklab,var(--accent-success)50%,transparent)}}.border-accent-tertiary\/20{border-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.border-accent-tertiary\/20{border-color:color-mix(in oklab,var(--accent-tertiary)20%,transparent)}}.border-accent-tertiary\/30{border-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.border-accent-tertiary\/30{border-color:color-mix(in oklab,var(--accent-tertiary)30%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-border,.border-border-subtle,.border-border-subtle\/50{border-color:var(--border-subtle)}@supports (color:color-mix(in lab,red,red)){.border-border-subtle\/50{border-color:color-mix(in oklab,var(--border-subtle)50%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500)30%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.border-toggle-on{border-color:var(--toggle-on)}.border-transparent{border-color:#0000}.border-white\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.border-white\/5{border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-white\/\[0\.06\]{border-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.06\]{border-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-amber-400{border-left-color:var(--color-amber-400)}.bg-\[\#F9D26F\]\/10{background-color:#f9d26f1a}.bg-\[var\(--route-direct\)\]\/20{background-color:var(--route-direct)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--route-direct\)\]\/20{background-color:color-mix(in oklab,var(--route-direct)20%,transparent)}}.bg-\[var\(--route-flood\)\]\/20{background-color:var(--route-flood)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--route-flood\)\]\/20{background-color:color-mix(in oklab,var(--route-flood)20%,transparent)}}.bg-\[var\(--route-transport\)\]\/20{background-color:var(--route-transport)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--route-transport\)\]\/20{background-color:color-mix(in oklab,var(--route-transport)20%,transparent)}}.bg-\[var\(--signal-critical\)\]{background-color:var(--signal-critical)}.bg-\[var\(--signal-excellent\)\]{background-color:var(--signal-excellent)}.bg-\[var\(--signal-fair\)\]{background-color:var(--signal-fair)}.bg-\[var\(--signal-good\)\]{background-color:var(--signal-good)}.bg-\[var\(--signal-poor\)\]{background-color:var(--signal-poor)}.bg-\[var\(--signal-unknown\)\]{background-color:var(--signal-unknown)}.bg-accent-danger,.bg-accent-danger\/10{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-danger\/10{background-color:color-mix(in oklab,var(--accent-danger)10%,transparent)}}.bg-accent-danger\/15{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-danger\/15{background-color:color-mix(in oklab,var(--accent-danger)15%,transparent)}}.bg-accent-danger\/20{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-danger\/20{background-color:color-mix(in oklab,var(--accent-danger)20%,transparent)}}.bg-accent-primary,.bg-accent-primary\/5{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/5{background-color:color-mix(in oklab,var(--accent-primary)5%,transparent)}}.bg-accent-primary\/10{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/10{background-color:color-mix(in oklab,var(--accent-primary)10%,transparent)}}.bg-accent-primary\/15{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/15{background-color:color-mix(in oklab,var(--accent-primary)15%,transparent)}}.bg-accent-primary\/20{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/20{background-color:color-mix(in oklab,var(--accent-primary)20%,transparent)}}.bg-accent-primary\/25{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/25{background-color:color-mix(in oklab,var(--accent-primary)25%,transparent)}}.bg-accent-primary\/60{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-primary\/60{background-color:color-mix(in oklab,var(--accent-primary)60%,transparent)}}.bg-accent-purple\/30{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-purple\/30{background-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.bg-accent-red\/10{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.bg-accent-red\/10{background-color:color-mix(in oklab,var(--accent-danger)10%,transparent)}}.bg-accent-secondary,.bg-accent-secondary\/10{background-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-secondary\/10{background-color:color-mix(in oklab,var(--accent-secondary)10%,transparent)}}.bg-accent-secondary\/15{background-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-secondary\/15{background-color:color-mix(in oklab,var(--accent-secondary)15%,transparent)}}.bg-accent-secondary\/20{background-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-secondary\/20{background-color:color-mix(in oklab,var(--accent-secondary)20%,transparent)}}.bg-accent-success,.bg-accent-success\/10{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.bg-accent-success\/10{background-color:color-mix(in oklab,var(--accent-success)10%,transparent)}}.bg-accent-success\/15{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.bg-accent-success\/15{background-color:color-mix(in oklab,var(--accent-success)15%,transparent)}}.bg-accent-success\/20{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.bg-accent-success\/20{background-color:color-mix(in oklab,var(--accent-success)20%,transparent)}}.bg-accent-tertiary,.bg-accent-tertiary\/5{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-tertiary\/5{background-color:color-mix(in oklab,var(--accent-tertiary)5%,transparent)}}.bg-accent-tertiary\/10{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-tertiary\/10{background-color:color-mix(in oklab,var(--accent-tertiary)10%,transparent)}}.bg-accent-tertiary\/15{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-tertiary\/15{background-color:color-mix(in oklab,var(--accent-tertiary)15%,transparent)}}.bg-accent-tertiary\/20{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.bg-accent-tertiary\/20{background-color:color-mix(in oklab,var(--accent-tertiary)20%,transparent)}}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-400\/5{background-color:#fcbb000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-400\/5{background-color:color-mix(in oklab,var(--color-amber-400)5%,transparent)}}.bg-amber-400\/90{background-color:#fcbb00e6}@supports (color:color-mix(in lab,red,red)){.bg-amber-400\/90{background-color:color-mix(in oklab,var(--color-amber-400)90%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500)5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-amber-500\/25{background-color:#f99c0040}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/25{background-color:color-mix(in oklab,var(--color-amber-500)25%,transparent)}}.bg-bg-body,.bg-bg-body\/70{background-color:var(--bg-body)}@supports (color:color-mix(in lab,red,red)){.bg-bg-body\/70{background-color:color-mix(in oklab,var(--bg-body)70%,transparent)}}.bg-bg-elevated,.bg-bg-elevated\/20{background-color:var(--bg-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-bg-elevated\/20{background-color:color-mix(in oklab,var(--bg-elevated)20%,transparent)}}.bg-bg-elevated\/30{background-color:var(--bg-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-bg-elevated\/30{background-color:color-mix(in oklab,var(--bg-elevated)30%,transparent)}}.bg-bg-elevated\/90{background-color:var(--bg-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-bg-elevated\/90{background-color:color-mix(in oklab,var(--bg-elevated)90%,transparent)}}.bg-bg-elevated\/95{background-color:var(--bg-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-bg-elevated\/95{background-color:color-mix(in oklab,var(--bg-elevated)95%,transparent)}}.bg-bg-subtle,.bg-bg-subtle\/30{background-color:var(--bg-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-bg-subtle\/30{background-color:color-mix(in oklab,var(--bg-subtle)30%,transparent)}}.bg-bg-subtle\/80{background-color:var(--bg-subtle)}@supports (color:color-mix(in lab,red,red)){.bg-bg-subtle\/80{background-color:color-mix(in oklab,var(--bg-subtle)80%,transparent)}}.bg-bg-surface,.bg-bg-surface\/60{background-color:var(--bg-surface)}@supports (color:color-mix(in lab,red,red)){.bg-bg-surface\/60{background-color:color-mix(in oklab,var(--bg-surface)60%,transparent)}}.bg-bg-surface\/80{background-color:var(--bg-surface)}@supports (color:color-mix(in lab,red,red)){.bg-bg-surface\/80{background-color:color-mix(in oklab,var(--bg-surface)80%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-border-subtle{background-color:var(--border-subtle)}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/20{background-color:color-mix(in oklab,var(--color-cyan-500)20%,transparent)}}.bg-gray-500\/20{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/20{background-color:color-mix(in oklab,var(--color-gray-500)20%,transparent)}}.bg-gray-500\/30{background-color:#6a72824d}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/30{background-color:color-mix(in oklab,var(--color-gray-500)30%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-orange-500\/25{background-color:#fe6e0040}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/25{background-color:color-mix(in oklab,var(--color-orange-500)25%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500)20%,transparent)}}.bg-purple-500\/80{background-color:#ac4bffcc}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/80{background-color:color-mix(in oklab,var(--color-purple-500)80%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-signal-critical,.bg-signal-critical\/10{background-color:var(--signal-critical)}@supports (color:color-mix(in lab,red,red)){.bg-signal-critical\/10{background-color:color-mix(in oklab,var(--signal-critical)10%,transparent)}}.bg-signal-excellent,.bg-signal-excellent\/10{background-color:var(--signal-excellent)}@supports (color:color-mix(in lab,red,red)){.bg-signal-excellent\/10{background-color:color-mix(in oklab,var(--signal-excellent)10%,transparent)}}.bg-signal-fair,.bg-signal-fair\/10{background-color:var(--signal-fair)}@supports (color:color-mix(in lab,red,red)){.bg-signal-fair\/10{background-color:color-mix(in oklab,var(--signal-fair)10%,transparent)}}.bg-signal-good,.bg-signal-good\/10{background-color:var(--signal-good)}@supports (color:color-mix(in lab,red,red)){.bg-signal-good\/10{background-color:color-mix(in oklab,var(--signal-good)10%,transparent)}}.bg-signal-poor,.bg-signal-poor\/10{background-color:var(--signal-poor)}@supports (color:color-mix(in lab,red,red)){.bg-signal-poor\/10{background-color:color-mix(in oklab,var(--signal-poor)10%,transparent)}}.bg-text-muted,.bg-text-muted\/30{background-color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.bg-text-muted\/30{background-color:color-mix(in oklab,var(--text-muted)30%,transparent)}}.bg-toggle-off{background-color:var(--toggle-off)}.bg-toggle-on{background-color:var(--toggle-on)}.bg-tooltip-bg,.bg-tooltip-bg\/80{background-color:var(--tooltip-bg)}@supports (color:color-mix(in lab,red,red)){.bg-tooltip-bg\/80{background-color:color-mix(in oklab,var(--tooltip-bg)80%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-white\/\[0\.02\]{background-color:#ffffff05}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.02\]{background-color:color-mix(in oklab,var(--color-white)2%,transparent)}}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-white)3%,transparent)}}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.bg-white\/\[0\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.bg-white\/\[0\.08\]{background-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.08\]{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.bg-white\/\[0\.15\]{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.15\]{background-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.bg-gradient-to-bl{--tw-gradient-position:to bottom left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-\[\#9cf15b\]{--tw-gradient-from:#9cf15b;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-\[\#9cf15b\]\/5{--tw-gradient-from:oklab(87.4074% -.139284 .1444/.05);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-black\/20{--tw-gradient-from:#0003}@supports (color:color-mix(in lab,red,red)){.from-black\/20{--tw-gradient-from:color-mix(in oklab,var(--color-black)20%,transparent)}}.from-black\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\/\[0\.03\]{--tw-gradient-from:#ffffff08}@supports (color:color-mix(in lab,red,red)){.from-white\/\[0\.03\]{--tw-gradient-from:color-mix(in oklab,var(--color-white)3%,transparent)}}.from-white\/\[0\.03\]{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/20{--tw-gradient-via:#fff3}@supports (color:color-mix(in lab,red,red)){.via-white\/20{--tw-gradient-via:color-mix(in oklab,var(--color-white)20%,transparent)}}.via-white\/20{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-\[\#8de04a\]{--tw-gradient-to:#8de04a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-\[\#9cf15b\]\/3{--tw-gradient-to:oklab(87.4074% -.139284 .1444/.03);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-accent-success{fill:var(--accent-success)}.fill-text-secondary{fill:var(--text-secondary)}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-12{padding:calc(var(--spacing)*12)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-14{padding-top:calc(var(--spacing)*14)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-1\.5{padding-right:calc(var(--spacing)*1.5)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-6{padding-right:calc(var(--spacing)*6)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-11{padding-left:calc(var(--spacing)*11)}.text-center{text-align:center}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.align-text-bottom{vertical-align:text-bottom}.font-mono{font-family:var(--font-data)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#F9D26F\]{color:#f9d26f}.text-\[var\(--log-critical\)\]{color:var(--log-critical)}.text-\[var\(--log-debug\)\]{color:var(--log-debug)}.text-\[var\(--log-error\)\]{color:var(--log-error)}.text-\[var\(--log-info\)\]{color:var(--log-info)}.text-\[var\(--log-warning\)\]{color:var(--log-warning)}.text-\[var\(--metric-dropped\)\]{color:var(--metric-dropped)}.text-\[var\(--metric-forwarded\)\]{color:var(--metric-forwarded)}.text-\[var\(--metric-received\)\]{color:var(--metric-received)}.text-\[var\(--metric-transmitted\)\]{color:var(--metric-transmitted)}.text-\[var\(--pkt-ack\)\]{color:var(--pkt-ack)}.text-\[var\(--pkt-advert\)\]{color:var(--pkt-advert)}.text-\[var\(--pkt-anon\)\]{color:var(--pkt-anon)}.text-\[var\(--pkt-flood\)\]{color:var(--pkt-flood)}.text-\[var\(--pkt-grp-data\)\]{color:var(--pkt-grp-data)}.text-\[var\(--pkt-grp-txt\)\]{color:var(--pkt-grp-txt)}.text-\[var\(--pkt-path\)\]{color:var(--pkt-path)}.text-\[var\(--pkt-req\)\]{color:var(--pkt-req)}.text-\[var\(--pkt-response\)\]{color:var(--pkt-response)}.text-\[var\(--pkt-trace\)\]{color:var(--pkt-trace)}.text-\[var\(--pkt-txt-msg\)\]{color:var(--pkt-txt-msg)}.text-\[var\(--pkt-unknown\)\]{color:var(--pkt-unknown)}.text-\[var\(--route-direct\)\]{color:var(--route-direct)}.text-\[var\(--route-flood\)\]{color:var(--route-flood)}.text-\[var\(--route-transport\)\]{color:var(--route-transport)}.text-\[var\(--signal-fair\)\]{color:var(--signal-fair)}.text-\[var\(--status-warning\)\]{color:var(--status-warning)}.text-accent-danger{color:var(--accent-danger)}.text-accent-primary,.text-accent-purple{color:var(--accent-primary)}.text-accent-red{color:var(--accent-danger)}.text-accent-secondary{color:var(--accent-secondary)}.text-accent-success{color:var(--accent-success)}.text-accent-tertiary{color:var(--accent-tertiary)}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/30{color:#fcbb004d}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/30{color:color-mix(in oklab,var(--color-amber-400)30%,transparent)}}.text-amber-400\/70{color:#fcbb00b3}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/70{color:color-mix(in oklab,var(--color-amber-400)70%,transparent)}}.text-amber-400\/80{color:#fcbb00cc}@supports (color:color-mix(in lab,red,red)){.text-amber-400\/80{color:color-mix(in oklab,var(--color-amber-400)80%,transparent)}}.text-bg-body{color:var(--bg-body)}.text-black{color:var(--color-black)}.text-border-subtle{color:var(--border-subtle)}.text-cyan-400{color:var(--color-cyan-400)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-400\/80{color:#05df72cc}@supports (color:color-mix(in lab,red,red)){.text-green-400\/80{color:color-mix(in oklab,var(--color-green-400)80%,transparent)}}.text-icon-card-title{color:var(--icon-card-title)}.text-icon-page-title{color:var(--icon-page-title)}.text-icon-widget{color:var(--icon-widget)}.text-indigo-400{color:var(--color-indigo-400)}.text-orange-300{color:var(--color-orange-300)}.text-primary{color:var(--accent-tertiary)}.text-purple-400{color:var(--color-purple-400)}.text-red-400{color:var(--color-red-400)}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.text-red-400\/80{color:color-mix(in oklab,var(--color-red-400)80%,transparent)}}.text-secondary{color:var(--accent-secondary)}.text-signal-critical{color:var(--signal-critical)}.text-signal-excellent{color:var(--signal-excellent)}.text-signal-fair{color:var(--signal-fair)}.text-signal-good{color:var(--signal-good)}.text-signal-poor{color:var(--signal-poor)}.text-teal-400{color:var(--color-teal-400)}.text-text-muted,.text-text-muted\/30{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/30{color:color-mix(in oklab,var(--text-muted)30%,transparent)}}.text-text-muted\/50{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/50{color:color-mix(in oklab,var(--text-muted)50%,transparent)}}.text-text-muted\/60{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/60{color:color-mix(in oklab,var(--text-muted)60%,transparent)}}.text-text-muted\/70{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/70{color:color-mix(in oklab,var(--text-muted)70%,transparent)}}.text-text-muted\/80{color:var(--text-muted)}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/80{color:color-mix(in oklab,var(--text-muted)80%,transparent)}}.text-text-primary{color:var(--text-primary)}.text-text-secondary{color:var(--text-secondary)}.text-transparent{color:#0000}.text-violet-400{color:var(--color-violet-400)}.text-violet-400\/70{color:#a685ffb3}@supports (color:color-mix(in lab,red,red)){.text-violet-400\/70{color:color-mix(in oklab,var(--color-violet-400)70%,transparent)}}.text-white{color:var(--color-white)}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab,red,red)){.text-white\/20{color:color-mix(in oklab,var(--color-white)20%,transparent)}}.text-white\/30{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.text-white\/30{color:color-mix(in oklab,var(--color-white)30%,transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\/50{color:color-mix(in oklab,var(--color-white)50%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.placeholder-text-muted::placeholder{color:var(--text-muted)}.accent-accent-purple{accent-color:var(--accent-primary)}.accent-amber-400{accent-color:var(--color-amber-400)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab,red,red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)20%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-accent-primary,.ring-accent-primary\/50{--tw-ring-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.ring-accent-primary\/50{--tw-ring-color:color-mix(in oklab,var(--accent-primary)50%,transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:border-white\/20:is(:where(.group):hover *){border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.group-hover\:border-white\/20:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}}.selection\:bg-transparent ::selection{background-color:#0000}.selection\:bg-transparent::selection{background-color:#0000}.placeholder\:text-text-muted::placeholder{color:var(--text-muted)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:scale-\[1\.02\]:hover{scale:1.02}.hover\:border-accent-primary\/30:hover{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent-primary\/30:hover{border-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.hover\:border-border-strong:hover{border-color:var(--border-strong)}.hover\:border-white\/20:hover{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:border-white\/20:hover{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.hover\:border-white\/\[0\.12\]:hover{border-color:#ffffff1f}@supports (color:color-mix(in lab,red,red)){.hover\:border-white\/\[0\.12\]:hover{border-color:color-mix(in oklab,var(--color-white)12%,transparent)}}.hover\:bg-accent-danger\/10:hover{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-danger\/10:hover{background-color:color-mix(in oklab,var(--accent-danger)10%,transparent)}}.hover\:bg-accent-danger\/20:hover{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-danger\/20:hover{background-color:color-mix(in oklab,var(--accent-danger)20%,transparent)}}.hover\:bg-accent-danger\/30:hover{background-color:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-danger\/30:hover{background-color:color-mix(in oklab,var(--accent-danger)30%,transparent)}}.hover\:bg-accent-primary\/10:hover{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-primary\/10:hover{background-color:color-mix(in oklab,var(--accent-primary)10%,transparent)}}.hover\:bg-accent-primary\/20:hover{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-primary\/20:hover{background-color:color-mix(in oklab,var(--accent-primary)20%,transparent)}}.hover\:bg-accent-primary\/30:hover{background-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-primary\/30:hover{background-color:color-mix(in oklab,var(--accent-primary)30%,transparent)}}.hover\:bg-accent-secondary\/20:hover{background-color:var(--accent-secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-secondary\/20:hover{background-color:color-mix(in oklab,var(--accent-secondary)20%,transparent)}}.hover\:bg-accent-success\/10:hover{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-success\/10:hover{background-color:color-mix(in oklab,var(--accent-success)10%,transparent)}}.hover\:bg-accent-success\/20:hover{background-color:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-success\/20:hover{background-color:color-mix(in oklab,var(--accent-success)20%,transparent)}}.hover\:bg-accent-tertiary\/10:hover{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-tertiary\/10:hover{background-color:color-mix(in oklab,var(--accent-tertiary)10%,transparent)}}.hover\:bg-accent-tertiary\/20:hover{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-tertiary\/20:hover{background-color:color-mix(in oklab,var(--accent-tertiary)20%,transparent)}}.hover\:bg-accent-tertiary\/25:hover{background-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent-tertiary\/25:hover{background-color:color-mix(in oklab,var(--accent-tertiary)25%,transparent)}}.hover\:bg-amber-400:hover{background-color:var(--color-amber-400)}.hover\:bg-bg-elevated:hover{background-color:var(--bg-elevated)}.hover\:bg-bg-subtle:hover{background-color:var(--bg-subtle)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\:bg-signal-critical\/20:hover{background-color:var(--signal-critical)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-signal-critical\/20:hover{background-color:color-mix(in oklab,var(--signal-critical)20%,transparent)}}.hover\:bg-signal-fair\/10:hover{background-color:var(--signal-fair)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-signal-fair\/10:hover{background-color:color-mix(in oklab,var(--signal-fair)10%,transparent)}}.hover\:bg-tooltip-bg:hover{background-color:var(--tooltip-bg)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:bg-white\/\[0\.02\]:hover{background-color:#ffffff05}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.02\]:hover{background-color:color-mix(in oklab,var(--color-white)2%,transparent)}}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.03\]:hover{background-color:color-mix(in oklab,var(--color-white)3%,transparent)}}.hover\:bg-white\/\[0\.04\]:hover{background-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.04\]:hover{background-color:color-mix(in oklab,var(--color-white)4%,transparent)}}.hover\:bg-white\/\[0\.05\]:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.05\]:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.08\]:hover{background-color:color-mix(in oklab,var(--color-white)8%,transparent)}}.hover\:from-\[\#8de04a\]:hover{--tw-gradient-from:#8de04a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.hover\:to-\[\#7dd03a\]:hover{--tw-gradient-to:#7dd03a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.hover\:text-accent-danger:hover{color:var(--accent-danger)}.hover\:text-accent-primary:hover,.hover\:text-accent-primary\/80:hover{color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:text-accent-primary\/80:hover{color:color-mix(in oklab,var(--accent-primary)80%,transparent)}}.hover\:text-accent-secondary:hover{color:var(--accent-secondary)}.hover\:text-accent-tertiary:hover{color:var(--accent-tertiary)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-signal-critical:hover{color:var(--signal-critical)}.hover\:text-text-primary:hover{color:var(--text-primary)}.hover\:text-text-secondary:hover{color:var(--text-secondary)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:border-accent-primary:focus,.focus\:border-accent-primary\/50:focus{border-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.focus\:border-accent-primary\/50:focus{border-color:color-mix(in oklab,var(--accent-primary)50%,transparent)}}.focus\:border-amber-500\/50:focus{border-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.focus\:border-amber-500\/50:focus{border-color:color-mix(in oklab,var(--color-amber-500)50%,transparent)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[\#9cf15b\]\/50:focus{--tw-ring-color:oklab(87.4074% -.139284 .1444/.5)}.focus\:ring-accent-primary:focus,.focus\:ring-accent-primary\/50:focus{--tw-ring-color:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent-primary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--accent-primary)50%,transparent)}}.focus\:ring-accent-tertiary\/50:focus{--tw-ring-color:var(--accent-tertiary)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent-tertiary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--accent-tertiary)50%,transparent)}}.focus\:ring-amber-500\/50:focus{--tw-ring-color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.focus\:ring-amber-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-amber-500)50%,transparent)}}.focus\:ring-signal-critical\/50:focus{--tw-ring-color:var(--signal-critical)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-signal-critical\/50:focus{--tw-ring-color:color-mix(in oklab,var(--signal-critical)50%,transparent)}}.focus\:ring-signal-fair\/50:focus{--tw-ring-color:var(--signal-fair)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-signal-fair\/50:focus{--tw-ring-color:color-mix(in oklab,var(--signal-fair)50%,transparent)}}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:ring-offset-bg-elevated:focus{--tw-ring-offset-color:var(--bg-elevated)}.focus\:ring-offset-bg-surface:focus{--tw-ring-offset-color:var(--bg-surface)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:scale-\[0\.98\]:active{scale:.98}.active\:bg-bg-elevated:active{background-color:var(--bg-elevated)}.active\:bg-tooltip-bg:active{background-color:var(--tooltip-bg)}.active\:bg-white\/10:active{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.active\:bg-white\/10:active{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.active\:brightness-90:active{--tw-brightness:brightness(90%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:475px){.xs\:inline{display:inline}}@media(min-width:40rem){.sm\:top-4{top:calc(var(--spacing)*4)}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:mx-4{margin-inline:calc(var(--spacing)*4)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-auto{height:auto}.sm\:max-h-96{max-height:calc(var(--spacing)*96)}.sm\:max-h-\[80vh\]{max-height:80vh}.sm\:max-h-\[calc\(100vh-250px\)\]{max-height:calc(100vh - 250px)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-28{width:calc(var(--spacing)*28)}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-\[280px\]{max-width:280px}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:flex-1{flex:1}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:calc(var(--spacing)*1)}.sm\:gap-2{gap:calc(var(--spacing)*2)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-6{gap:calc(var(--spacing)*6)}.sm\:self-auto{align-self:auto}.sm\:rounded-xl{border-radius:var(--radius-xl)}.sm\:rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.sm\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.sm\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.sm\:border-border-subtle{border-color:var(--border-subtle)}.sm\:p-1\.5{padding:calc(var(--spacing)*1.5)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:px-5{padding-inline:calc(var(--spacing)*5)}.sm\:py-1\.5{padding-block:calc(var(--spacing)*1.5)}.sm\:py-2{padding-block:calc(var(--spacing)*2)}.sm\:py-3{padding-block:calc(var(--spacing)*3)}.sm\:pt-0{padding-top:calc(var(--spacing)*0)}.sm\:pl-7{padding-left:calc(var(--spacing)*7)}.sm\:text-left{text-align:left}.sm\:opacity-100{opacity:1}}@media(min-width:48rem){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:gap-3{gap:calc(var(--spacing)*3)}.md\:p-5{padding:calc(var(--spacing)*5)}}@media(min-width:64rem){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-32{width:calc(var(--spacing)*32)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:p-8{padding:calc(var(--spacing)*8)}.lg\:pt-0{padding-top:calc(var(--spacing)*0)}}}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;top:0;left:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{-webkit-transform-origin:0 0;width:1600px;height:1600px}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{width:auto;padding:0;max-width:none!important;max-height:none!important}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:#33b5e566}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{box-sizing:border-box;z-index:800;width:0;height:0}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{z-index:800;pointer-events:visiblePainted;pointer-events:auto;position:relative}.leaflet-top,.leaflet-bottom{z-index:1000;pointer-events:none;position:absolute}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{outline-offset:1px;background:#ddd}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{background:#ffffff80;border:2px dotted #38f}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-bar{border-radius:4px;box-shadow:0 1px 5px #000000a6}.leaflet-bar a{text-align:center;color:#000;background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-decoration:none;display:block}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom:none;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.leaflet-bar a.leaflet-disabled{cursor:default;color:#bbb;background-color:#f4f4f4}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{text-indent:1px;font:700 18px Lucida Console,Monaco,monospace}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{background:#fff;border-radius:5px;box-shadow:0 1px 5px #0006}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{color:#333;background:#fff;padding:6px 10px 6px 6px}.leaflet-control-layers-scrollbar{padding-right:5px;overflow:hidden scroll}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{font-size:1.08333em;display:block}.leaflet-control-layers-separator{border-top:1px solid #ddd;height:0;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{color:#333;padding:0 5px;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{width:1em;height:.6669em;vertical-align:baseline!important;display:inline!important}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{white-space:nowrap;box-sizing:border-box;text-shadow:1px 1px #fff;background:#fffc;border:2px solid #777;border-top:none;padding:2px 5px 1px;line-height:1.1}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{background-clip:padding-box;border:2px solid #0003}.leaflet-popup{text-align:center;margin-bottom:20px;position:absolute}.leaflet-popup-content-wrapper{text-align:left;border-radius:12px;padding:1px}.leaflet-popup-content{min-height:1px;margin:13px 24px 13px 20px;font-size:1.08333em;line-height:1.3}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{pointer-events:none;width:40px;height:20px;margin-top:-1px;margin-left:-20px;position:absolute;left:50%;overflow:hidden}.leaflet-popup-tip{pointer-events:auto;width:17px;height:17px;margin:-10px auto 0;padding:1px;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{color:#333;background:#fff;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{text-align:center;color:#757575;background:0 0;border:none;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;text-decoration:none;position:absolute;top:0;right:0}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";width:24px;filter:progid:DXImageTransform.Microsoft.Matrix(M11=.707107,M12=.707107,M21=-.707107,M22=.707107);margin:0 auto}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{color:#222;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;background-color:#fff;border:1px solid #fff;border-radius:3px;padding:6px;position:absolute;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{pointer-events:none;content:"";background:0 0;border:6px solid #0000;position:absolute}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{margin-left:-6px;left:50%}.leaflet-tooltip-top:before{border-top-color:#fff;margin-bottom:-12px;bottom:0}.leaflet-tooltip-bottom:before{border-bottom-color:#fff;margin-top:-12px;margin-left:-6px;top:0}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{margin-top:-6px;top:50%}.leaflet-tooltip-left:before{border-left-color:#fff;margin-right:-12px;right:0}.leaflet-tooltip-right:before{border-right-color:#fff;margin-left:-12px;left:0}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}:root{--bg-body:#171717;--bg-surface:#252525;--bg-elevated:#333233;--bg-subtle:#3f3f3f;--border-subtle:#4b4b4b;--border-strong:#616161;--text-primary:#e1e1e1;--text-secondary:#bfbfbf;--text-muted:#727272;--text-invert:#171717;--accent-primary:#719cdf;--accent-secondary:#dfbc72;--accent-tertiary:#6fbcbd;--accent-danger:#e12672;--accent-success:#719872;--overlay-soft:#ffffff0a;--shadow-tint:#719cdf59;--sidebar-tint:#719cdf0f;--tooltip-bg:#252525;--hover-tint:#719cdf14;--glass-tint:#252525;--glass-light:#fff;--glass-dark:#000;--glass-reflex-light:.15;--glass-reflex-dark:.8;--glass-blur:6px;--glass-blur-elevated:8px;--glass-brightness:1;--glass-surface-tint:linear-gradient(to bottom,#ffffff06,#ffffff04);--glass-reflection-top:linear-gradient(to bottom,#ffffff05 0px,transparent 16px);--glass-reflection-bottom:linear-gradient(to top,#ffffff05 0px,transparent 20px);--glass-bg-opacity:8%;--glass-bg-opacity-elevated:12%;--signal-excellent:#719872;--signal-good:#6fbcbd;--signal-fair:#dfbc72;--signal-poor:#be7572;--signal-critical:#e12672;--signal-unknown:#616161;--sparkline-excellent:#22d370;--sparkline-good:#00d4ff;--sparkline-fair:#ffd600;--sparkline-poor:#ff7a3d;--sparkline-critical:#f36;--status-success:#719872;--status-warning:#dfbc72;--status-danger:#e12672;--status-info:#6fbcbd;--status-muted:#616161;--pkt-advert:#dfbc72;--pkt-flood:#6fbcbd;--pkt-txt-msg:#719872;--pkt-ack:#999abd;--pkt-trace:#70bddf;--pkt-req:#0074be;--pkt-response:#98bc99;--pkt-grp-txt:#e17899;--pkt-grp-data:#be7572;--pkt-path:#70bddf;--pkt-anon:#bdbb72;--pkt-unknown:#616161;--pkt-science-req:#0072b2;--pkt-science-anon-req:#005082;--pkt-science-response:#56b4e9;--pkt-science-ack:#009e73;--pkt-science-advert:#f0e442;--pkt-science-txt-msg:#e69f00;--pkt-science-grp-txt:#cc79a7;--pkt-science-grp-data:#d55e00;--pkt-science-multipart:#999;--pkt-science-raw-custom:#b660a1;--pkt-science-path:#4ea0d8;--pkt-science-trace:#33c19b;--pkt-science-unknown:#666;--route-flood:#6fbcbd;--route-direct:#dfbc72;--route-transport:#999abd;--chart-1:#719cdf;--chart-2:#0074be;--chart-3:#6fbcbd;--chart-4:#dfbc72;--chart-5:#719872;--chart-6:#e12672;--chart-7:#e17899;--chart-8:#999abd;--chart-grid:#ffffff0f;--chart-axis-tick:#fff6;--chart-cursor:#fff3;--metric-received:#719872;--metric-forwarded:#0074be;--metric-transmitted:#dfbc72;--metric-dropped:#e12672;--metric-neutral:#bfbfbf;--log-debug:#616161;--log-info:#6fbcbd;--log-warning:#dfbc72;--log-error:#e12672;--log-critical:#be7572;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#f5f5f0;--map-node-stroke:#4a5568;--map-hub-color:#8b7bad;--map-local-color:#fbbf24;--map-neighbor-color:#fbbf24;--map-mobile-color:#f97316;--map-room-color:#e17899;--palette-bg-0:#171717;--palette-bg-1:#1f1f1f;--palette-bg-2:#252525;--palette-bg-3:#2d2d2d;--palette-bg-4:#3f3f3f;--palette-bg-5:#4b4b4b;--palette-bg-6:#616161;--palette-bg-7:#727272;--palette-fg-0:#8a8a8a;--palette-fg-1:#a3a3a3;--palette-fg-2:#bfbfbf;--palette-fg-3:#e1e1e1;--palette-fg-4:#f5f5f5;--palette-red:#be7572;--palette-red-bright:#e12672;--palette-orange:#d97742;--palette-orange-bright:#f59e0b;--palette-yellow:#bdbb72;--palette-yellow-bright:#dfbc72;--palette-green:#719872;--palette-green-bright:#98bc99;--palette-aqua:#6fbcbd;--palette-aqua-bright:#70bddf;--palette-blue:#0074be;--palette-blue-bright:#719cdf;--palette-purple:#8b7bad;--palette-purple-bright:#999abd;--map-edge-rest:#4b4b4b;--map-edge-rest-bright:#616161;--map-edge-rest-dim:#3f3f3f;--map-edge-hover-direct:#6fbcbd;--map-edge-hover-loop:#8b7bad;--map-edge-hover-standard:#8a8a8a;--map-edge-hover-neighbor:#fbbf24;--map-edge-highlight:gold;--link-strong:#719872;--link-medium:#dfbc72;--link-weak:#be7572;--hop-0:#6fbcbd;--hop-1:#719872;--hop-2:#98bc99;--hop-3:#dfbc72;--hop-distant:#727272;--hop-hub:#fbbf24;--ctrl-base:var(--palette-bg-4);--ctrl-base-hover:var(--palette-bg-5);--ctrl-base-active:var(--palette-bg-3);--ctrl-border:var(--palette-bg-5);--ctrl-border-hover:var(--palette-bg-6);--ctrl-shadow-dark:var(--palette-bg-1);--ctrl-shadow-mid:var(--palette-bg-0);--ctrl-highlight:var(--palette-bg-6);--ctrl-inset:var(--palette-bg-3);--ctrl-primary:#5a6b9f;--ctrl-primary-hover:#6a7baf;--ctrl-primary-border:#7a8bbf;--ctrl-primary-shadow:#2a3b5f;--ctrl-primary-highlight:#8a9bcf;--ctrl-primary-inset:#4a5b8f;--ctrl-success:#4a7854;--ctrl-success-hover:#5a8864;--ctrl-success-border:#6a9874;--ctrl-success-shadow:#2a4834;--ctrl-success-highlight:#7aa884;--ctrl-success-inset:#3a6844;--ctrl-warning:#9f8a4a;--ctrl-warning-hover:#af9a5a;--ctrl-warning-border:#bfaa6a;--ctrl-warning-shadow:#5f4a2a;--ctrl-warning-highlight:#cfba7a;--ctrl-warning-inset:#8f7a3a;--ctrl-panel-top:var(--palette-bg-2);--ctrl-panel-mid:var(--palette-bg-1);--ctrl-panel-bottom:var(--palette-bg-0);--ctrl-panel-border:var(--palette-bg-4);--background:var(--bg-body);--foreground:var(--text-secondary);--foreground-muted:var(--text-muted);--foreground-subtle:var(--border-subtle);--primary:var(--accent-tertiary);--secondary:var(--accent-secondary);--accent-green:var(--accent-success);--accent-red:var(--accent-danger);--accent-purple:var(--accent-primary);--accent-cyan:var(--accent-tertiary);--card-bg:var(--bg-surface);--border:var(--border-subtle);--theme-transition:.4s ease}@supports (color:color(display-p3 1 1 1)){:root{--accent-primary:color(display-p3 .443 .612 .875);--accent-secondary:color(display-p3 .875 .737 .447);--accent-tertiary:color(display-p3 .435 .737 .741);--accent-danger:color(display-p3 .882 .15 .447);--accent-success:color(display-p3 .443 .596 .447);--signal-excellent:color(display-p3 .443 .596 .447);--signal-good:color(display-p3 .435 .737 .741);--signal-fair:color(display-p3 .875 .737 .447);--signal-poor:color(display-p3 .745 .459 .447);--signal-critical:color(display-p3 .882 .15 .447);--sparkline-excellent:color(display-p3 .133 .878 .439);--sparkline-good:color(display-p3 0 .878 1);--sparkline-fair:color(display-p3 1 .878 0);--sparkline-poor:color(display-p3 1 .518 .2);--sparkline-critical:color(display-p3 1 .2 .42);--status-success:color(display-p3 .443 .596 .447);--status-warning:color(display-p3 .875 .737 .447);--status-danger:color(display-p3 .882 .15 .447);--status-info:color(display-p3 .435 .737 .741);--pkt-advert:color(display-p3 .875 .737 .447);--pkt-flood:color(display-p3 .435 .737 .741);--pkt-txt-msg:color(display-p3 .443 .596 .447);--pkt-ack:color(display-p3 .6 .604 .741);--pkt-trace:color(display-p3 .439 .741 .875);--pkt-req:color(display-p3 0 .455 .745);--pkt-response:color(display-p3 .596 .737 .6);--pkt-grp-txt:color(display-p3 .882 .471 .6);--pkt-grp-data:color(display-p3 .745 .459 .447);--pkt-path:color(display-p3 .439 .741 .875);--pkt-anon:color(display-p3 .741 .733 .447);--chart-1:color(display-p3 .443 .612 .875);--chart-2:color(display-p3 0 .455 .745);--chart-3:color(display-p3 .435 .737 .741);--chart-4:color(display-p3 .875 .737 .447);--chart-5:color(display-p3 .443 .596 .447);--chart-6:color(display-p3 .882 .15 .447);--chart-7:color(display-p3 .882 .471 .6);--chart-8:color(display-p3 .6 .604 .741);--metric-received:color(display-p3 .443 .596 .447);--metric-forwarded:color(display-p3 0 .455 .745);--metric-transmitted:color(display-p3 .875 .737 .447);--metric-dropped:color(display-p3 .882 .15 .447);--log-info:color(display-p3 .435 .737 .741);--log-warning:color(display-p3 .875 .737 .447);--log-error:color(display-p3 .882 .15 .447);--log-critical:color(display-p3 .745 .459 .447);--map-hub-color:color(display-p3 .65 .5 .85);--map-local-color:color(display-p3 1 .8 .1);--map-neighbor-color:color(display-p3 1 .8 .1);--map-mobile-color:color(display-p3 1 .5 .1);--map-room-color:color(display-p3 1 .45 .65);--link-strong:color(display-p3 .443 .596 .447);--link-medium:color(display-p3 .875 .737 .447);--link-weak:color(display-p3 .745 .459 .447);--hop-0:color(display-p3 .435 .737 .741);--hop-1:color(display-p3 .443 .596 .447);--hop-2:color(display-p3 .596 .737 .6);--hop-3:color(display-p3 .875 .737 .447);--hop-hub:color(display-p3 .984 .749 .141);--palette-red:color(display-p3 .745 .459 .447);--palette-red-bright:color(display-p3 .882 .15 .447);--palette-orange:color(display-p3 .851 .467 .259);--palette-orange-bright:color(display-p3 .961 .62 .043);--palette-yellow:color(display-p3 .741 .733 .447);--palette-yellow-bright:color(display-p3 .875 .737 .447);--palette-green:color(display-p3 .443 .596 .447);--palette-green-bright:color(display-p3 .596 .737 .6);--palette-aqua:color(display-p3 .435 .737 .741);--palette-aqua-bright:color(display-p3 .439 .741 .875);--palette-blue:color(display-p3 0 .455 .745);--palette-blue-bright:color(display-p3 .443 .612 .875);--palette-purple:color(display-p3 .545 .482 .678);--palette-purple-bright:color(display-p3 .6 .604 .741);--map-edge-hover-direct:color(display-p3 .2 .9 .92);--map-edge-hover-loop:color(display-p3 .7 .5 .92);--map-edge-hover-neighbor:color(display-p3 1 .8 0);--map-edge-highlight:color(display-p3 1 .9 0)}}html{transition:--accent-primary var(--theme-transition),--accent-secondary var(--theme-transition),--accent-tertiary var(--theme-transition)}[data-theme=amber]{--accent-primary:#fabd2f;--accent-secondary:#fb4934;--accent-tertiary:#8ec07c;--accent-success:#b8bb26;--accent-danger:#fb4934;--shadow-tint:#fabd2f59;--sidebar-tint:#fabd2f0f;--tooltip-bg:#32302f;--hover-tint:#fabd2f14;--glass-tint:#282828;--card-fallback-bg:#282828eb;--signal-excellent:#b8bb26;--signal-good:#8ec07c;--signal-fair:#fabd2f;--signal-poor:#fe8019;--signal-critical:#fb4934;--signal-unknown:#928374;--sparkline-excellent:#a6e22e;--sparkline-good:#7dd68b;--sparkline-fair:#ffe135;--sparkline-poor:#ff9533;--sparkline-critical:#f44;--status-success:#b8bb26;--status-warning:#fabd2f;--status-danger:#fb4934;--status-info:#83a598;--status-muted:#928374;--chart-1:#fabd2f;--chart-2:#fe8019;--chart-3:#fb4934;--chart-4:#d3869b;--chart-5:#b8bb26;--chart-6:#8ec07c;--chart-7:#83a598;--chart-8:#d65d0e;--chart-grid:#fbf1c70f;--chart-axis-tick:#fbf1c766;--chart-cursor:#fbf1c733;--pkt-advert:#fabd2f;--pkt-flood:#8ec07c;--pkt-txt-msg:#b8bb26;--pkt-ack:#d3869b;--pkt-trace:#83a598;--pkt-req:#fe8019;--pkt-response:#b8bb26;--pkt-grp-txt:#d3869b;--pkt-grp-data:#fb4934;--pkt-path:#8ec07c;--pkt-anon:#fabd2f;--pkt-unknown:#928374;--route-flood:#8ec07c;--route-direct:#fabd2f;--route-transport:#d3869b;--metric-received:#b8bb26;--metric-forwarded:#83a598;--metric-transmitted:#fabd2f;--metric-dropped:#fb4934;--log-debug:#928374;--log-info:#83a598;--log-warning:#fabd2f;--log-error:#fb4934;--log-critical:#cc241d;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#fbf1c7;--map-node-stroke:#504945;--map-hub-color:#b16286;--map-local-color:#fabd2f;--map-neighbor-color:#fabd2f;--map-mobile-color:#fe8019;--map-room-color:#d3869b;--palette-bg-0:#1d2021;--palette-bg-1:#282828;--palette-bg-2:#32302f;--palette-bg-3:#3c3836;--palette-bg-4:#504945;--palette-bg-5:#665c54;--palette-bg-6:#7c6f64;--palette-bg-7:#928374;--palette-fg-0:#a89984;--palette-fg-1:#bdae93;--palette-fg-2:#d5c4a1;--palette-fg-3:#ebdbb2;--palette-fg-4:#fbf1c7;--palette-red:#cc241d;--palette-red-bright:#fb4934;--palette-orange:#d65d0e;--palette-orange-bright:#fe8019;--palette-yellow:#d79921;--palette-yellow-bright:#fabd2f;--palette-green:#98971a;--palette-green-bright:#b8bb26;--palette-aqua:#689d6a;--palette-aqua-bright:#8ec07c;--palette-blue:#458588;--palette-blue-bright:#83a598;--palette-purple:#b16286;--palette-purple-bright:#d3869b;--map-edge-rest:#665c54;--map-edge-rest-bright:#7c6f64;--map-edge-rest-dim:#504945;--map-edge-hover-direct:#8ec07c;--map-edge-hover-loop:#b16286;--map-edge-hover-standard:#a89984;--map-edge-hover-neighbor:#fabd2f;--link-strong:#b8bb26;--link-medium:#fabd2f;--link-weak:#fb4934;--hop-0:#8ec07c;--hop-1:#b8bb26;--hop-2:#83a598;--hop-3:#fabd2f;--hop-distant:#928374;--hop-hub:#d79921;--ctrl-primary:#d79921;--ctrl-primary-hover:#e7a931;--ctrl-primary-border:#fabd2f;--ctrl-primary-shadow:#6a4a10;--ctrl-primary-highlight:#fcc94f;--ctrl-primary-inset:#c78911;--ctrl-success:#689d6a;--ctrl-success-hover:#78ad7a;--ctrl-success-border:#8ec07c;--ctrl-success-shadow:#344e35;--ctrl-success-highlight:#9ed08c;--ctrl-success-inset:#588d5a;--ctrl-warning:#cc241d;--ctrl-warning-hover:#dc342d;--ctrl-warning-border:#fb4934;--ctrl-warning-shadow:#66120e;--ctrl-warning-highlight:#fc6954;--ctrl-warning-inset:#bc140d}@supports (color:color(display-p3 1 1 1)){[data-theme=amber]{--accent-primary:color(display-p3 .98 .741 .184);--accent-secondary:color(display-p3 .984 .286 .204);--accent-tertiary:color(display-p3 .557 .753 .486);--accent-success:color(display-p3 .722 .733 .149);--accent-danger:color(display-p3 .984 .286 .204);--signal-excellent:color(display-p3 .722 .733 .149);--signal-good:color(display-p3 .557 .753 .486);--signal-fair:color(display-p3 .98 .741 .184);--signal-poor:color(display-p3 .996 .502 .098);--signal-critical:color(display-p3 .984 .286 .204);--sparkline-excellent:color(display-p3 .651 .886 .18);--sparkline-good:color(display-p3 .49 .839 .545);--sparkline-fair:color(display-p3 1 .882 .208);--sparkline-poor:color(display-p3 1 .584 .2);--sparkline-critical:color(display-p3 1 .267 .267);--status-success:color(display-p3 .722 .733 .149);--status-warning:color(display-p3 .98 .741 .184);--status-danger:color(display-p3 .984 .286 .204);--status-info:color(display-p3 .514 .647 .596);--chart-1:color(display-p3 .98 .741 .184);--chart-2:color(display-p3 .996 .502 .098);--chart-3:color(display-p3 .984 .286 .204);--chart-4:color(display-p3 .827 .525 .608);--chart-5:color(display-p3 .722 .733 .149);--chart-6:color(display-p3 .557 .753 .486);--chart-7:color(display-p3 .514 .647 .596);--chart-8:color(display-p3 .839 .365 .055);--metric-received:color(display-p3 .722 .733 .149);--metric-forwarded:color(display-p3 .514 .647 .596);--metric-transmitted:color(display-p3 .98 .741 .184);--metric-dropped:color(display-p3 .984 .286 .204);--map-hub-color:color(display-p3 .8 .4 .65);--map-local-color:color(display-p3 1 .82 .1);--map-neighbor-color:color(display-p3 1 .82 .1);--map-mobile-color:color(display-p3 1 .55 .1);--map-room-color:color(display-p3 1 .5 .65);--link-strong:color(display-p3 .722 .733 .149);--link-medium:color(display-p3 .98 .741 .184);--link-weak:color(display-p3 .984 .286 .204);--hop-0:color(display-p3 .557 .753 .486);--hop-1:color(display-p3 .722 .733 .149);--hop-2:color(display-p3 .514 .647 .596);--hop-3:color(display-p3 .98 .741 .184);--hop-hub:color(display-p3 .843 .6 .129);--map-edge-hover-direct:color(display-p3 .4 .92 .58);--map-edge-hover-loop:color(display-p3 .85 .45 .65);--map-edge-hover-neighbor:color(display-p3 1 .82 .1);--map-edge-highlight:color(display-p3 1 .9 .2);--palette-red-bright:--palette-orange-bright: color(display-p3 .996 .502 .098);--palette-yellow-bright:color(display-p3 .98 .741 .184);--palette-green-bright:color(display-p3 .722 .733 .149);--palette-aqua-bright:color(display-p3 .557 .753 .486);--palette-purple-bright:color(display-p3 .827 .525 .608)}}[data-theme=grey]{--accent-primary:#83a598;--accent-secondary:#a89984;--accent-tertiary:#8ec07c;--accent-success:#8ec07c;--accent-danger:#cc241d;--shadow-tint:#83a59859;--sidebar-tint:#83a5980f;--tooltip-bg:#282828;--hover-tint:#83a59814;--glass-tint:#1e1e1e;--card-fallback-bg:#1e1e1eeb;--signal-excellent:#8ec07c;--signal-good:#83a598;--signal-fair:#d79921;--signal-poor:#fe8019;--signal-critical:#cc241d;--signal-unknown:#7c6f64;--sparkline-excellent:#5de08d;--sparkline-good:#5dd8d8;--sparkline-fair:#ffd633;--sparkline-poor:#ff7a3d;--sparkline-critical:#e53939;--status-success:#8ec07c;--status-warning:#d79921;--status-danger:#cc241d;--status-info:#83a598;--status-muted:#7c6f64;--chart-1:#83a598;--chart-2:#8ec07c;--chart-3:#d79921;--chart-4:#b16286;--chart-5:#fe8019;--chart-6:#cc241d;--chart-7:#a89984;--chart-8:#7c6f64;--chart-grid:#d5c4a10f;--chart-axis-tick:#d5c4a166;--chart-cursor:#d5c4a133;--pkt-advert:#d79921;--pkt-flood:#83a598;--pkt-txt-msg:#8ec07c;--pkt-ack:#b16286;--pkt-trace:#83a598;--pkt-req:#fe8019;--pkt-response:#8ec07c;--pkt-grp-txt:#b16286;--pkt-grp-data:#cc241d;--pkt-path:#83a598;--pkt-anon:#a89984;--pkt-unknown:#7c6f64;--route-flood:#83a598;--route-direct:#d79921;--route-transport:#b16286;--metric-received:#8ec07c;--metric-forwarded:#83a598;--metric-transmitted:#d79921;--metric-dropped:#cc241d;--log-debug:#7c6f64;--log-info:#83a598;--log-warning:#d79921;--log-error:#cc241d;--log-critical:#9d0006;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#ebdbb2;--map-node-stroke:#504945;--map-hub-color:#b16286;--map-local-color:#d79921;--map-neighbor-color:#d79921;--map-mobile-color:#fe8019;--map-room-color:#b16286;--palette-bg-0:#1a1a1a;--palette-bg-1:#1e1e1e;--palette-bg-2:#242424;--palette-bg-3:#2a2a2a;--palette-bg-4:#3c3836;--palette-bg-5:#504945;--palette-bg-6:#665c54;--palette-bg-7:#7c6f64;--palette-fg-0:#a89984;--palette-fg-1:#bdae93;--palette-fg-2:#d5c4a1;--palette-fg-3:#ebdbb2;--palette-fg-4:#fbf1c7;--palette-red:#9d0006;--palette-red-bright:#cc241d;--palette-orange:#af3a03;--palette-orange-bright:#fe8019;--palette-yellow:#b57614;--palette-yellow-bright:#d79921;--palette-green:#79740e;--palette-green-bright:#8ec07c;--palette-aqua:#427b58;--palette-aqua-bright:#83a598;--palette-blue:#076678;--palette-blue-bright:#83a598;--palette-purple:#8f3f71;--palette-purple-bright:#b16286;--map-edge-rest:#504945;--map-edge-rest-bright:#665c54;--map-edge-rest-dim:#3c3836;--map-edge-hover-direct:#83a598;--map-edge-hover-loop:#b16286;--map-edge-hover-standard:#a89984;--map-edge-hover-neighbor:#d79921;--link-strong:#8ec07c;--link-medium:#d79921;--link-weak:#cc241d;--hop-0:#83a598;--hop-1:#8ec07c;--hop-2:#a89984;--hop-3:#d79921;--hop-distant:#7c6f64;--hop-hub:#b57614;--ctrl-primary:#5a8a7a;--ctrl-primary-hover:#6a9a8a;--ctrl-primary-border:#83a598;--ctrl-primary-shadow:#2d453d;--ctrl-primary-highlight:#93b5a8;--ctrl-primary-inset:#4a7a6a;--ctrl-success:#6a9a6a;--ctrl-success-hover:#7aaa7a;--ctrl-success-border:#8ec07c;--ctrl-success-shadow:#354d35;--ctrl-success-highlight:#9ed08c;--ctrl-success-inset:#5a8a5a;--ctrl-warning:#b57614;--ctrl-warning-hover:#c58624;--ctrl-warning-border:#d79921;--ctrl-warning-shadow:#5a3b0a;--ctrl-warning-highlight:#e7a931;--ctrl-warning-inset:#a56604}@supports (color:color(display-p3 1 1 1)){[data-theme=grey]{--accent-primary:color(display-p3 .514 .647 .596);--accent-tertiary:color(display-p3 .557 .753 .486);--accent-success:color(display-p3 .557 .753 .486);--accent-danger:color(display-p3 .8 .141 .114);--signal-excellent:color(display-p3 .557 .753 .486);--signal-good:color(display-p3 .514 .647 .596);--signal-fair:color(display-p3 .843 .6 .129);--signal-poor:color(display-p3 .996 .502 .098);--signal-critical:color(display-p3 .8 .141 .114);--sparkline-excellent:color(display-p3 .365 .878 .553);--sparkline-good:color(display-p3 .365 .847 .847);--sparkline-fair:color(display-p3 1 .839 .2);--sparkline-poor:color(display-p3 1 .478 .239);--sparkline-critical:color(display-p3 .898 .224 .224);--status-success:color(display-p3 .557 .753 .486);--status-warning:color(display-p3 .843 .6 .129);--status-danger:color(display-p3 .8 .141 .114);--status-info:color(display-p3 .514 .647 .596);--chart-1:color(display-p3 .514 .647 .596);--chart-2:color(display-p3 .557 .753 .486);--chart-3:color(display-p3 .843 .6 .129);--chart-4:color(display-p3 .694 .384 .525);--chart-5:color(display-p3 .996 .502 .098);--chart-6:color(display-p3 .8 .141 .114);--metric-received:color(display-p3 .557 .753 .486);--metric-forwarded:color(display-p3 .514 .647 .596);--metric-transmitted:color(display-p3 .843 .6 .129);--metric-dropped:color(display-p3 .8 .141 .114);--map-hub-color:color(display-p3 .8 .4 .65);--map-local-color:color(display-p3 1 .75 .1);--map-neighbor-color:color(display-p3 1 .75 .1);--map-mobile-color:color(display-p3 1 .55 .1);--map-room-color:color(display-p3 .8 .4 .65);--link-strong:color(display-p3 .557 .753 .486);--link-medium:color(display-p3 .843 .6 .129);--link-weak:color(display-p3 .8 .141 .114);--hop-0:color(display-p3 .514 .647 .596);--hop-1:color(display-p3 .557 .753 .486);--hop-3:color(display-p3 .843 .6 .129);--map-edge-hover-direct:color(display-p3 .3 .9 .9);--map-edge-hover-loop:color(display-p3 .85 .45 .65);--map-edge-hover-neighbor:color(display-p3 1 .78 .1);--map-edge-highlight:color(display-p3 1 .88 .2);--palette-red-bright:--palette-orange-bright: color(display-p3 .996 .502 .098);--palette-yellow-bright:color(display-p3 .843 .6 .129);--palette-green-bright:color(display-p3 .557 .753 .486);--palette-aqua-bright:color(display-p3 .514 .647 .596);--palette-purple-bright:color(display-p3 .694 .384 .525)}}[data-theme=black]{--accent-primary:#33859d;--accent-secondary:#edb54b;--accent-tertiary:#26a98b;--accent-success:#26a98b;--accent-danger:#c33027;--shadow-tint:#33859d59;--sidebar-tint:#33859d0f;--tooltip-bg:#0d1117;--hover-tint:#33859d1a;--glass-tint:#0a0e14;--glass-blur:1px;--glass-blur-elevated:2px;--card-fallback-bg:#0a0e14f2;--bg-surface:#ffffff08;--bg-elevated:#ffffff0f;--bg-subtle:#ffffff14;--border-subtle:#ffffff1a;--border-strong:#ffffff26;--signal-excellent:#26a98b;--signal-good:#599caa;--signal-fair:#edb54b;--signal-poor:#d26939;--signal-critical:#c33027;--signal-unknown:#195465;--sparkline-excellent:#00e5b0;--sparkline-good:#00d4ff;--sparkline-fair:#ffd600;--sparkline-poor:#f74;--sparkline-critical:#f44;--status-success:#26a98b;--status-warning:#edb54b;--status-danger:#c33027;--status-info:#599caa;--status-muted:#195465;--chart-1:#33859d;--chart-2:#edb54b;--chart-3:#26a98b;--chart-4:#599caa;--chart-5:#d26939;--chart-6:#c33027;--chart-7:#888ba5;--chart-8:#195465;--chart-grid:#99d1ce0f;--chart-axis-tick:#99d1ce66;--chart-cursor:#99d1ce33;--pkt-advert:#edb54b;--pkt-flood:#33859d;--pkt-txt-msg:#26a98b;--pkt-ack:#599caa;--pkt-trace:#33859d;--pkt-req:#d26939;--pkt-response:#26a98b;--pkt-grp-txt:#888ba5;--pkt-grp-data:#c33027;--pkt-path:#33859d;--pkt-anon:#edb54b;--pkt-unknown:#195465;--route-flood:#33859d;--route-direct:#edb54b;--route-transport:#888ba5;--metric-received:#26a98b;--metric-forwarded:#33859d;--metric-transmitted:#edb54b;--metric-dropped:#c33027;--log-debug:#195465;--log-info:#599caa;--log-warning:#edb54b;--log-error:#c33027;--log-critical:#c33027;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#edf5f4;--map-node-stroke:#195465;--map-hub-color:#888ba5;--map-local-color:#edb54b;--map-neighbor-color:#edb54b;--map-mobile-color:#d26939;--map-room-color:#888ba5;--palette-bg-0:#0a0f14;--palette-bg-1:#11151c;--palette-bg-2:#091f2e;--palette-bg-3:#0a3749;--palette-bg-4:#195465;--palette-bg-5:#245361;--palette-bg-6:#2b6271;--palette-bg-7:#33859d;--palette-fg-0:#599caa;--palette-fg-1:#88c0d0;--palette-fg-2:#99d1ce;--palette-fg-3:#d3ebe9;--palette-fg-4:#edf5f4;--palette-red:#c33027;--palette-red-bright:#d26939;--palette-orange:#d26939;--palette-orange-bright:#edb54b;--palette-yellow:#edb54b;--palette-yellow-bright:#f0c66d;--palette-green:#26a98b;--palette-green-bright:#33d6a0;--palette-aqua:#26a98b;--palette-aqua-bright:#99d1ce;--palette-blue:#195465;--palette-blue-bright:#33859d;--palette-purple:#888ba5;--palette-purple-bright:#a5a8bd;--map-edge-rest:#245361;--map-edge-rest-bright:#2b6271;--map-edge-rest-dim:#195465;--map-edge-hover-direct:#26a98b;--map-edge-hover-loop:#888ba5;--map-edge-hover-standard:#599caa;--map-edge-hover-neighbor:#edb54b;--link-strong:#26a98b;--link-medium:#edb54b;--link-weak:#c33027;--hop-0:#26a98b;--hop-1:#33859d;--hop-2:#599caa;--hop-3:#edb54b;--hop-distant:#195465;--hop-hub:#d26939;--ctrl-primary:#28758d;--ctrl-primary-hover:#38859d;--ctrl-primary-border:#4895ad;--ctrl-primary-shadow:#143a46;--ctrl-primary-highlight:#58a5bd;--ctrl-primary-inset:#18657d;--ctrl-success:#1c9978;--ctrl-success-hover:#2ca988;--ctrl-success-border:#3cb998;--ctrl-success-shadow:#0e4c3c;--ctrl-success-highlight:#4cc9a8;--ctrl-success-inset:#0c8968;--ctrl-warning:#dda53b;--ctrl-warning-hover:#edb54b;--ctrl-warning-border:#fdc55b;--ctrl-warning-shadow:#6e521d;--ctrl-warning-highlight:#fdd56b;--ctrl-warning-inset:#cd952b}@supports (color:color(display-p3 1 1 1)){[data-theme=black]{--accent-primary:color(display-p3 .2 .522 .616);--accent-secondary:color(display-p3 .929 .71 .294);--accent-tertiary:color(display-p3 .149 .663 .545);--accent-success:color(display-p3 .149 .663 .545);--accent-danger:color(display-p3 .765 .188 .153);--signal-excellent:color(display-p3 .149 .663 .545);--signal-good:color(display-p3 .349 .612 .667);--signal-fair:color(display-p3 .929 .71 .294);--signal-poor:color(display-p3 .824 .412 .224);--signal-critical:color(display-p3 .765 .188 .153);--sparkline-excellent:color(display-p3 0 .898 .69);--sparkline-good:color(display-p3 0 .831 1);--sparkline-fair:color(display-p3 1 .839 0);--sparkline-poor:color(display-p3 1 .467 .267);--sparkline-critical:color(display-p3 1 .267 .267);--status-success:color(display-p3 .149 .663 .545);--status-warning:color(display-p3 .929 .71 .294);--status-danger:color(display-p3 .765 .188 .153);--status-info:color(display-p3 .349 .612 .667);--chart-1:color(display-p3 .2 .522 .616);--chart-2:color(display-p3 .929 .71 .294);--chart-3:color(display-p3 .149 .663 .545);--chart-4:color(display-p3 .349 .612 .667);--chart-5:color(display-p3 .824 .412 .224);--chart-6:color(display-p3 .765 .188 .153);--metric-received:color(display-p3 .149 .663 .545);--metric-forwarded:color(display-p3 .2 .522 .616);--metric-transmitted:color(display-p3 .929 .71 .294);--metric-dropped:color(display-p3 .765 .188 .153);--map-hub-color:color(display-p3 .6 .58 .85);--map-local-color:color(display-p3 1 .82 .2);--map-neighbor-color:color(display-p3 1 .82 .2);--map-mobile-color:color(display-p3 1 .5 .2);--map-room-color:color(display-p3 .6 .58 .85);--link-strong:color(display-p3 .149 .663 .545);--link-medium:color(display-p3 .929 .71 .294);--link-weak:color(display-p3 .765 .188 .153);--hop-0:color(display-p3 .149 .663 .545);--hop-1:color(display-p3 .2 .522 .616);--hop-2:color(display-p3 .349 .612 .667);--hop-3:color(display-p3 .929 .71 .294);--hop-hub:color(display-p3 .824 .412 .224);--map-edge-hover-direct:color(display-p3 0 .92 .78);--map-edge-hover-loop:color(display-p3 .6 .58 .8);--map-edge-hover-neighbor:color(display-p3 1 .8 .2);--map-edge-highlight:color(display-p3 1 .92 0);--palette-green-bright:--palette-aqua-bright: color(display-p3 .6 .82 .808);--palette-blue-bright:color(display-p3 .2 .522 .616)}}[data-theme=flora]{--accent-primary:#9ed072;--accent-secondary:#e7c664;--accent-tertiary:#76cce0;--accent-success:#9ed072;--accent-danger:#fc5d7c;--shadow-tint:#9ed07259;--sidebar-tint:#9ed0720f;--tooltip-bg:#2d2b3b;--hover-tint:#9ed07214;--glass-tint:#23212d;--card-fallback-bg:#23212deb;--signal-excellent:#9ed072;--signal-good:#76cce0;--signal-fair:#e7c664;--signal-poor:#f39660;--signal-critical:#fc5d7c;--signal-unknown:#7f8490;--sparkline-excellent:#6f6;--sparkline-good:#00e5ff;--sparkline-fair:#ffea00;--sparkline-poor:#f84;--sparkline-critical:#f58;--status-success:#9ed072;--status-warning:#e7c664;--status-danger:#fc5d7c;--status-info:#76cce0;--status-muted:#7f8490;--chart-1:#9ed072;--chart-2:#fc5d7c;--chart-3:#e7c664;--chart-4:#76cce0;--chart-5:#b39df3;--chart-6:#f39660;--chart-7:#7f8490;--chart-8:#e2e2e3;--chart-grid:#e2e2e30f;--chart-axis-tick:#e2e2e366;--chart-cursor:#e2e2e333;--pkt-advert:#e7c664;--pkt-flood:#76cce0;--pkt-txt-msg:#9ed072;--pkt-ack:#b39df3;--pkt-trace:#76cce0;--pkt-req:#f39660;--pkt-response:#9ed072;--pkt-grp-txt:#fc5d7c;--pkt-grp-data:#f39660;--pkt-path:#76cce0;--pkt-anon:#e7c664;--pkt-unknown:#7f8490;--route-flood:#76cce0;--route-direct:#e7c664;--route-transport:#b39df3;--metric-received:#9ed072;--metric-forwarded:#76cce0;--metric-transmitted:#e7c664;--metric-dropped:#fc5d7c;--log-debug:#7f8490;--log-info:#76cce0;--log-warning:#e7c664;--log-error:#fc5d7c;--log-critical:#ff6077;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#e2e2e3;--map-node-stroke:#33353f;--map-hub-color:#b39df3;--map-local-color:#e7c664;--map-neighbor-color:#e7c664;--map-mobile-color:#f39660;--map-room-color:#fc5d7c;--palette-bg-0:#181a1c;--palette-bg-1:#23212d;--palette-bg-2:#2c2e34;--palette-bg-3:#33353f;--palette-bg-4:#3b3d47;--palette-bg-5:#444751;--palette-bg-6:#55575e;--palette-bg-7:#7f8490;--palette-fg-0:#9ca0a4;--palette-fg-1:#b9bdc4;--palette-fg-2:#d6dae4;--palette-fg-3:#e2e2e3;--palette-fg-4:#f5f5f6;--palette-red:#ff6077;--palette-red-bright:#fc5d7c;--palette-orange:#e69875;--palette-orange-bright:#f39660;--palette-yellow:#d4b36a;--palette-yellow-bright:#e7c664;--palette-green:#7eb36a;--palette-green-bright:#9ed072;--palette-aqua:#5fb3b3;--palette-aqua-bright:#76cce0;--palette-blue:#5aa5c0;--palette-blue-bright:#76cce0;--palette-purple:#9a7ecc;--palette-purple-bright:#b39df3;--map-edge-rest:#444751;--map-edge-rest-bright:#55575e;--map-edge-rest-dim:#3b3d47;--map-edge-hover-direct:#76cce0;--map-edge-hover-loop:#b39df3;--map-edge-hover-standard:#9ca0a4;--map-edge-hover-neighbor:#e7c664;--link-strong:#9ed072;--link-medium:#e7c664;--link-weak:#fc5d7c;--hop-0:#76cce0;--hop-1:#9ed072;--hop-2:#b39df3;--hop-3:#e7c664;--hop-distant:#7f8490;--hop-hub:#f39660;--ctrl-primary:#7eb36a;--ctrl-primary-hover:#8ec37a;--ctrl-primary-border:#9ed072;--ctrl-primary-shadow:#3f5935;--ctrl-primary-highlight:#aee082;--ctrl-primary-inset:#6ea35a;--ctrl-success:#5fb3b3;--ctrl-success-hover:#6fc3c3;--ctrl-success-border:#76cce0;--ctrl-success-shadow:#2f5959;--ctrl-success-highlight:#86dcf0;--ctrl-success-inset:#4fa3a3;--ctrl-warning:#d4b36a;--ctrl-warning-hover:#e4c37a;--ctrl-warning-border:#e7c664;--ctrl-warning-shadow:#6a5935;--ctrl-warning-highlight:#f7d674;--ctrl-warning-inset:#c4a35a}@supports (color:color(display-p3 1 1 1)){[data-theme=flora]{--accent-primary:color(display-p3 .62 .816 .447);--accent-secondary:color(display-p3 .906 .776 .392);--accent-tertiary:color(display-p3 .463 .8 .878);--accent-success:color(display-p3 .62 .816 .447);--accent-danger:color(display-p3 .988 .365 .486);--signal-excellent:color(display-p3 .62 .816 .447);--signal-good:color(display-p3 .463 .8 .878);--signal-fair:color(display-p3 .906 .776 .392);--signal-poor:color(display-p3 .953 .588 .376);--signal-critical:color(display-p3 .988 .365 .486);--sparkline-excellent:color(display-p3 .4 1 .4);--sparkline-good:color(display-p3 0 .898 1);--sparkline-fair:color(display-p3 1 .918 0);--sparkline-poor:color(display-p3 1 .533 .267);--sparkline-critical:color(display-p3 1 .333 .533);--status-success:color(display-p3 .62 .816 .447);--status-warning:color(display-p3 .906 .776 .392);--status-danger:color(display-p3 .988 .365 .486);--status-info:color(display-p3 .463 .8 .878);--chart-1:color(display-p3 .62 .816 .447);--chart-2:color(display-p3 .988 .365 .486);--chart-3:color(display-p3 .906 .776 .392);--chart-4:color(display-p3 .463 .8 .878);--chart-5:color(display-p3 .702 .616 .953);--chart-6:color(display-p3 .953 .588 .376);--metric-received:color(display-p3 .62 .816 .447);--metric-forwarded:color(display-p3 .463 .8 .878);--metric-transmitted:color(display-p3 .906 .776 .392);--metric-dropped:color(display-p3 .988 .365 .486);--map-hub-color:color(display-p3 .8 .65 1);--map-local-color:color(display-p3 1 .85 .2);--map-neighbor-color:color(display-p3 1 .85 .2);--map-mobile-color:color(display-p3 1 .6 .35);--map-room-color:color(display-p3 1 .4 .55);--link-strong:color(display-p3 .62 .816 .447);--link-medium:color(display-p3 .906 .776 .392);--link-weak:color(display-p3 .988 .365 .486);--hop-0:color(display-p3 .463 .8 .878);--hop-1:color(display-p3 .62 .816 .447);--hop-2:color(display-p3 .702 .616 .953);--hop-3:color(display-p3 .906 .776 .392);--hop-hub:color(display-p3 .953 .588 .376);--map-edge-hover-direct:color(display-p3 .2 .95 1);--map-edge-hover-loop:color(display-p3 .8 .65 1);--map-edge-hover-neighbor:color(display-p3 1 .85 .2);--map-edge-highlight:color(display-p3 1 .95 0);--palette-red-bright:--palette-orange-bright: color(display-p3 .953 .588 .376);--palette-yellow-bright:color(display-p3 .906 .776 .392);--palette-green-bright:color(display-p3 .62 .816 .447);--palette-aqua-bright:color(display-p3 .463 .8 .878);--palette-purple-bright:color(display-p3 .702 .616 .953)}}[data-theme=kanagawa]{--accent-primary:#7e9cd8;--accent-secondary:#e6c384;--accent-tertiary:#7fb4ca;--accent-success:#98bb6c;--accent-danger:#e46876;--shadow-tint:#7e9cd859;--sidebar-tint:#7e9cd80f;--tooltip-bg:#1f1f28;--hover-tint:#7e9cd814;--glass-tint:#1f1f28;--glass-blur:6px;--glass-blur-elevated:8px;--card-fallback-bg:#1f1f28eb;--signal-excellent:#98bb6c;--signal-good:#7aa89f;--signal-fair:#e6c384;--signal-poor:#ffa066;--signal-critical:#e46876;--signal-unknown:#54546d;--sparkline-excellent:#7fe07f;--sparkline-good:#6dd;--sparkline-fair:#ffd966;--sparkline-poor:#f95;--sparkline-critical:#ff6b7f;--status-success:#98bb6c;--status-warning:#e6c384;--status-danger:#e46876;--status-info:#7fb4ca;--status-muted:#727169;--chart-1:#7e9cd8;--chart-2:#e6c384;--chart-3:#98bb6c;--chart-4:#957fb8;--chart-5:#7fb4ca;--chart-6:#e46876;--chart-7:#ffa066;--chart-8:#d27e99;--chart-grid:#dcd7ba0f;--chart-axis-tick:#dcd7ba66;--chart-cursor:#dcd7ba33;--pkt-advert:#e6c384;--pkt-flood:#7e9cd8;--pkt-txt-msg:#98bb6c;--pkt-ack:#957fb8;--pkt-trace:#7fb4ca;--pkt-req:#ffa066;--pkt-response:#98bb6c;--pkt-grp-txt:#d27e99;--pkt-grp-data:#e46876;--pkt-path:#7e9cd8;--pkt-anon:#e6c384;--pkt-unknown:#54546d;--route-flood:#7e9cd8;--route-direct:#e6c384;--route-transport:#957fb8;--metric-received:#98bb6c;--metric-forwarded:#7e9cd8;--metric-transmitted:#e6c384;--metric-dropped:#e46876;--log-debug:#54546d;--log-info:#7fb4ca;--log-warning:#e6c384;--log-error:#e46876;--log-critical:#c34043;--icon-page-title:var(--accent-primary);--icon-card-title:var(--accent-primary);--icon-widget:var(--text-muted);--icon-action:var(--text-secondary);--icon-nav:var(--text-muted);--icon-nav-active:var(--accent-primary);--toggle-on:var(--accent-success);--toggle-off:var(--bg-elevated);--map-node-fill:#dcd7ba;--map-node-stroke:#363646;--map-hub-color:#957fb8;--map-local-color:#e6c384;--map-neighbor-color:#e6c384;--map-mobile-color:#ffa066;--map-room-color:#d27e99;--palette-bg-0:#16161d;--palette-bg-1:#1f1f28;--palette-bg-2:#2a2a37;--palette-bg-3:#363646;--palette-bg-4:#54546d;--palette-bg-5:#4c566a;--palette-bg-6:#727169;--palette-bg-7:#8a8980;--palette-fg-0:#938aa9;--palette-fg-1:#c8c093;--palette-fg-2:#dcd7ba;--palette-fg-3:#e6dfb8;--palette-fg-4:#f5f1dc;--palette-red:#c34043;--palette-red-bright:#e46876;--palette-orange:#dca561;--palette-orange-bright:#ffa066;--palette-yellow:#c0a36e;--palette-yellow-bright:#e6c384;--palette-green:#6f894e;--palette-green-bright:#98bb6c;--palette-aqua:#6a9589;--palette-aqua-bright:#7aa89f;--palette-blue:#658594;--palette-blue-bright:#7e9cd8;--palette-purple:#624c83;--palette-purple-bright:#957fb8;--map-edge-rest:#54546d;--map-edge-rest-bright:#727169;--map-edge-rest-dim:#363646;--map-edge-hover-direct:#7aa89f;--map-edge-hover-loop:#957fb8;--map-edge-hover-standard:#938aa9;--map-edge-hover-neighbor:#e6c384;--link-strong:#98bb6c;--link-medium:#e6c384;--link-weak:#e46876;--hop-0:#7aa89f;--hop-1:#98bb6c;--hop-2:#7e9cd8;--hop-3:#e6c384;--hop-distant:#727169;--hop-hub:#ffa066;--ctrl-primary:#5a7ab0;--ctrl-primary-hover:#6a8ac0;--ctrl-primary-border:#7e9cd8;--ctrl-primary-shadow:#2d3d58;--ctrl-primary-highlight:#8eace8;--ctrl-primary-inset:#4a6aa0;--ctrl-success:#6a9a54;--ctrl-success-hover:#7aaa64;--ctrl-success-border:#98bb6c;--ctrl-success-shadow:#354d2a;--ctrl-success-highlight:#a8cb7c;--ctrl-success-inset:#5a8a44;--ctrl-warning:#c6a36c;--ctrl-warning-hover:#d6b37c;--ctrl-warning-border:#e6c384;--ctrl-warning-shadow:#635136;--ctrl-warning-highlight:#f6d394;--ctrl-warning-inset:#b6935c}@supports (color:color(display-p3 1 1 1)){[data-theme=kanagawa]{--accent-primary:color(display-p3 .494 .612 .847);--accent-secondary:color(display-p3 .902 .765 .518);--accent-tertiary:color(display-p3 .498 .706 .792);--accent-success:color(display-p3 .596 .733 .424);--accent-danger:color(display-p3 .894 .408 .463);--signal-excellent:color(display-p3 .596 .733 .424);--signal-good:color(display-p3 .478 .659 .624);--signal-fair:color(display-p3 .902 .765 .518);--signal-poor:color(display-p3 1 .627 .4);--signal-critical:color(display-p3 .894 .408 .463);--sparkline-excellent:color(display-p3 .498 .878 .498);--sparkline-good:color(display-p3 .4 .867 .867);--sparkline-fair:color(display-p3 1 .851 .4);--sparkline-poor:color(display-p3 1 .6 .333);--sparkline-critical:color(display-p3 1 .42 .498);--status-success:color(display-p3 .596 .733 .424);--status-warning:color(display-p3 .902 .765 .518);--status-danger:color(display-p3 .894 .408 .463);--status-info:color(display-p3 .498 .706 .792);--chart-1:color(display-p3 .494 .612 .847);--chart-2:color(display-p3 .902 .765 .518);--chart-3:color(display-p3 .596 .733 .424);--chart-4:color(display-p3 .584 .498 .722);--chart-5:color(display-p3 .498 .706 .792);--chart-6:color(display-p3 .894 .408 .463);--chart-7:color(display-p3 1 .627 .4);--chart-8:color(display-p3 .824 .494 .6);--metric-received:color(display-p3 .596 .733 .424);--metric-forwarded:color(display-p3 .494 .612 .847);--metric-transmitted:color(display-p3 .902 .765 .518);--metric-dropped:color(display-p3 .894 .408 .463);--map-hub-color:color(display-p3 .7 .55 .9);--map-local-color:color(display-p3 1 .85 .4);--map-neighbor-color:color(display-p3 1 .85 .4);--map-mobile-color:color(display-p3 1 .65 .35);--map-room-color:color(display-p3 1 .5 .65);--link-strong:color(display-p3 .596 .733 .424);--link-medium:color(display-p3 .902 .765 .518);--link-weak:color(display-p3 .894 .408 .463);--hop-0:color(display-p3 .478 .659 .624);--hop-1:color(display-p3 .596 .733 .424);--hop-2:color(display-p3 .494 .612 .847);--hop-3:color(display-p3 .902 .765 .518);--hop-hub:color(display-p3 1 .627 .4);--map-edge-hover-direct:color(display-p3 .4 .9 .85);--map-edge-hover-loop:color(display-p3 .7 .55 .9);--map-edge-hover-neighbor:color(display-p3 1 .85 .4);--map-edge-highlight:color(display-p3 1 .92 .3);--palette-red-bright:--palette-orange-bright: color(display-p3 1 .627 .4);--palette-yellow-bright:color(display-p3 .902 .765 .518);--palette-green-bright:color(display-p3 .596 .733 .424);--palette-aqua-bright:color(display-p3 .478 .659 .624);--palette-blue-bright:color(display-p3 .494 .612 .847);--palette-purple-bright:color(display-p3 .584 .498 .722)}}a,button,[role=button],.interactive,.glass-card,.data-card,.chart-container,.pill-tag,.pill-subtle,.toggle-group-item,.roster-row,.nav-item{transition:all .15s ease-out}a:hover,button:hover,[role=button]:hover,.interactive:hover,.glass-card:hover,.data-card:hover,.chart-container:hover,.pill-tag:hover,.pill-subtle:hover,.toggle-group-item:hover,.roster-row:hover,.nav-item:hover{transition-duration:0s}a,button,[role=button],input,select,textarea{touch-action:manipulation;-webkit-tap-highlight-color:transparent}a,button{cursor:pointer}body{background:var(--bg-body);color:var(--text-secondary);font-family:var(--font-display),system-ui,-apple-system,sans-serif;font-weight:var(--font-normal);font-size:var(--text-base);line-height:var(--leading-normal);letter-spacing:var(--tracking-normal);font-feature-settings:"cv02","cv03","cv04";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh}.type-hero{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-5xl);font-weight:var(--font-semibold);letter-spacing:var(--tracking-tight);color:var(--text-primary);line-height:1.05}.type-metric{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-4xl);font-weight:var(--font-semibold);letter-spacing:var(--tracking-tight);color:var(--text-primary);line-height:1.1}.type-title{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-xl);font-weight:var(--font-semibold);line-height:var(--leading-snug);color:var(--text-primary)}.type-heading,.type-subheading{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-lg);font-weight:var(--font-semibold);line-height:var(--leading-snug);color:var(--text-primary)}.type-body{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-base);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--text-secondary)}.type-body-lg{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-md);font-weight:var(--font-normal);line-height:var(--leading-normal);color:var(--text-secondary)}.type-body-sm,.type-label{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-sm);font-weight:var(--font-medium);line-height:var(--leading-normal);color:var(--text-secondary)}.type-micro{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-normal);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.type-data{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-base);font-weight:var(--font-normal);line-height:var(--leading-normal);letter-spacing:var(--tracking-wide);font-feature-settings:"zero","tnum"}.type-data-lg{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-lg);font-weight:var(--font-medium);line-height:var(--leading-snug);letter-spacing:var(--tracking-normal);font-feature-settings:"zero","tnum"}.type-data-hero{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-3xl);font-weight:var(--font-medium);letter-spacing:var(--tracking-normal);font-feature-settings:"zero","tnum";line-height:1.1}.type-data-sm{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-sm);font-weight:var(--font-normal);line-height:var(--leading-normal);letter-spacing:var(--tracking-wider);font-feature-settings:"zero","tnum"}.type-data-xs{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-xs);font-weight:var(--font-medium);line-height:var(--leading-normal);letter-spacing:var(--tracking-widest);font-feature-settings:"zero","tnum"}.type-code{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:.875em;font-weight:var(--font-normal);line-height:var(--leading-relaxed);font-feature-settings:"zero","tnum"}.type-badge{font-family:var(--font-data),"SF Mono",Monaco,monospace;font-size:var(--text-xs);font-weight:var(--font-medium);letter-spacing:.08em;text-transform:uppercase;line-height:1}.type-tag{font-family:var(--font-display),system-ui,sans-serif;font-size:var(--text-xs);font-weight:var(--font-medium);letter-spacing:.05em;line-height:1}.liquid-glass{background-color:var(--glass-tint);border:none;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.liquid-glass{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.liquid-glass{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.liquid-glass{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.liquid-glass:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.liquid-glass-elevated{background-color:var(--glass-tint);border:none;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.liquid-glass-elevated{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity-elevated),transparent)}}.liquid-glass-elevated{-webkit-backdrop-filter:blur(var(--glass-blur-elevated))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur-elevated))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 2px 1px 0 -1px var(--glass-light),inset -1.5px -1px 0 -1px var(--glass-light),inset -2px -6px 1px -5px var(--glass-light),inset -1px 2px 3px -1px var(--glass-dark),inset 0 -4px 1px -2px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.liquid-glass-elevated{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 2px 1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -1.5px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -2px -6px 1px -5px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -1px 2px 3px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 -4px 1px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.liquid-glass-elevated:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.liquid-glass-glow{background-color:var(--glass-tint);border:none;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.liquid-glass-glow{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.liquid-glass-glow{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--accent-primary),inset 1.8px 3px 0 -2px var(--accent-primary),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.liquid-glass-glow{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-primary)calc(var(--glass-reflex-light)*15%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--accent-primary)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.liquid-glass-glow:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.liquid-glass-sm{border-radius:.5rem}.liquid-glass-md{border-radius:.875rem}.liquid-glass-lg{border-radius:1.125rem}.liquid-glass-xl{border-radius:1.5rem}.liquid-glass-pill{border-radius:9999px}.liquid-glass-none{border-radius:0}.glass-card{background-color:var(--glass-tint);border:none;border-radius:1.125rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.glass-card{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.glass-card{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-card{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.glass-card:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.glass-card-glow{background-color:var(--glass-tint);border:none;border-radius:1.125rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.glass-card-glow{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.glass-card-glow{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--accent-primary),inset 1.8px 3px 0 -2px var(--accent-primary),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-card-glow{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-primary)calc(var(--glass-reflex-light)*15%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--accent-primary)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.glass-card-glow:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.glass-card-elevated{background-color:var(--glass-tint);border:none;border-radius:1.125rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.glass-card-elevated{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity-elevated),transparent)}}.glass-card-elevated{-webkit-backdrop-filter:blur(var(--glass-blur-elevated))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur-elevated))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 2px 1px 0 -1px var(--glass-light),inset -1.5px -1px 0 -1px var(--glass-light),inset -2px -6px 1px -5px var(--glass-light),inset -1px 2px 3px -1px var(--glass-dark),inset 0 -4px 1px -2px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-card-elevated{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 2px 1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -1.5px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -2px -6px 1px -5px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -1px 2px 3px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 -4px 1px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.glass-card-elevated:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.glass-sidebar{background-color:var(--glass-tint);border:none;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.glass-sidebar{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.glass-sidebar{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset -1px 0 0 0 var(--glass-light),inset 1px 0 0 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-sidebar{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset -1px 0 color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*8%),transparent),inset 1px 0 color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent)}}.glass-sidebar:before{content:"";pointer-events:none;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.glass-card-inner{background-color:var(--glass-tint)}@supports (color:color-mix(in lab,red,red)){.glass-card-inner{background-color:color-mix(in srgb,var(--glass-tint)8%,transparent)}}.glass-card-inner{border:1px solid var(--glass-light)}@supports (color:color-mix(in lab,red,red)){.glass-card-inner{border:1px solid color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*5%),transparent)}}.glass-card-inner{box-shadow:inset 0 1px 2px var(--glass-dark);border-radius:.75rem}@supports (color:color-mix(in lab,red,red)){.glass-card-inner{box-shadow:inset 0 1px 2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*5%),transparent)}}.glass-thumbnail{border:none;border-radius:.375rem;position:relative;overflow:hidden}.glass-thumbnail:after{content:"";z-index:10;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 0 .5px var(--glass-light),inset .9px 1.5px 0 -1px var(--glass-light),inset -1px -1px 0 -1px var(--glass-light),inset -1.5px -4px .5px -3px var(--glass-light),inset -.15px -.5px 2px 0 var(--glass-dark),inset -.75px 1.25px 0 -1px var(--glass-dark),inset 0 1.5px 2px -1px var(--glass-dark);position:absolute;top:0;right:0;bottom:0;left:0}@supports (color:color-mix(in lab,red,red)){.glass-thumbnail:after{box-shadow:inset 0 0 0 .5px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*16%),transparent),inset .9px 1.5px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*140%),transparent),inset -1px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*125%),transparent),inset -1.5px -4px .5px -3px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*94%),transparent),inset -.15px -.5px 2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*18%),transparent),inset -.75px 1.25px 0 -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*31%),transparent),inset 0 1.5px 2px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*31%),transparent)}}.glass-thumbnail-selected:after{box-shadow:inset 0 0 0 1.5px var(--accent-primary),inset .9px 1.5px 0 -1px var(--glass-light),inset -1px -1px 0 -1px var(--glass-light),inset -1.5px -4px .5px -3px var(--glass-light),inset -.15px -.5px 2px 0 var(--glass-dark),inset -.75px 1.25px 0 -1px var(--glass-dark),inset 0 1.5px 2px -1px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.glass-thumbnail-selected:after{box-shadow:inset 0 0 0 1.5px var(--accent-primary),inset .9px 1.5px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*140%),transparent),inset -1px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*125%),transparent),inset -1.5px -4px .5px -3px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*94%),transparent),inset -.15px -.5px 2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*18%),transparent),inset -.75px 1.25px 0 -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*31%),transparent),inset 0 1.5px 2px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*31%),transparent)}}.glass-card-frame{z-index:1000;box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark);border-radius:1.125rem;position:relative}@supports (color:color-mix(in lab,red,red)){.glass-card-frame{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*15%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*15%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*25%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*25%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*15%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent)}}.glass-card-frame:before{content:"";pointer-events:none;border-radius:inherit;z-index:1001;background:var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.separator-line{background:linear-gradient(to right,transparent,var(--glass-light)20%,var(--glass-light)80%,transparent);height:1px}@supports (color:color-mix(in lab,red,red)){.separator-line{background:linear-gradient(to right,transparent,color-mix(in srgb,var(--glass-light)8%,transparent)20%,color-mix(in srgb,var(--glass-light)8%,transparent)80%,transparent)}}.separator-line-vertical{background:linear-gradient(to bottom,transparent,var(--glass-light)20%,var(--glass-light)80%,transparent);width:1px}@supports (color:color-mix(in lab,red,red)){.separator-line-vertical{background:linear-gradient(to bottom,transparent,color-mix(in srgb,var(--glass-light)8%,transparent)20%,color-mix(in srgb,var(--glass-light)8%,transparent)80%,transparent)}}.rounded-pill{border-radius:9999px}.rounded-card{border-radius:1.125rem}.card-sm{min-height:7rem}.card-md{min-height:11rem}.card-lg{min-height:14rem}.card-hero{min-height:20rem}.card-auto{min-height:auto}@media(max-width:640px){.card-sm{min-height:6rem}.card-md{min-height:9rem}.card-lg{min-height:12rem}.card-hero{min-height:16rem}}.icon-sm{flex-shrink:0;width:1rem;height:1rem}.icon-md{flex-shrink:0;width:1.25rem;height:1.25rem}.icon-lg{flex-shrink:0;width:1.5rem;height:1.5rem}.icon-xl{flex-shrink:0;width:2rem;height:2rem}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-surface)}::-webkit-scrollbar-thumb{background-color:var(--border-strong);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--text-muted)}.map-container-16-9{aspect-ratio:16/9;width:100%;position:relative}@supports not (aspect-ratio:16 / 9){.map-container-16-9{height:0;padding-bottom:56.25%}}.map-container-16-9{min-height:280px;max-height:80dvh}@supports not (aspect-ratio:16 / 9){.map-container-16-9>*{width:100%;height:100%;position:absolute;top:0;left:0}}@media(max-width:639px){.map-container-16-9{aspect-ratio:4/5;min-height:320px;max-height:75dvh}@supports not (aspect-ratio:4 / 5){.map-container-16-9{padding-bottom:125%}}}@media(min-width:640px)and (max-width:1023px){.map-container-16-9{aspect-ratio:3/2}@supports not (aspect-ratio:3 / 2){.map-container-16-9{padding-bottom:66.67%}}}@media(min-width:1920px){.map-container-16-9{max-height:720px}}.map-container-fullscreen{width:100vw!important;height:calc(100dvh - 3.5rem)!important;aspect-ratio:unset!important;min-height:unset!important;max-height:unset!important;z-index:999!important;border-radius:0!important;padding-bottom:0!important;position:fixed!important;top:3.5rem!important;right:0!important;bottom:0!important;left:0!important}@media(min-width:1024px){.map-container-fullscreen{height:100dvh!important;top:0!important}}.map-blue-water{position:relative}.map-blue-water .leaflet-tile-pane{filter:sepia(.15)hue-rotate(180deg)saturate(.7)brightness(.95)}.map-blue-water:after{content:"";pointer-events:none;z-index:400;mix-blend-mode:multiply;background:linear-gradient(#0d1e3226,#14284614);position:absolute;top:0;right:0;bottom:0;left:0}.map-blue-water .leaflet-marker-pane,.map-blue-water .leaflet-popup-pane,.map-blue-water .leaflet-overlay-pane{filter:none!important}.leaflet-control-attribution{color:var(--text-muted)!important;background:#141416d9!important;border-radius:4px 0 0!important;padding:2px 6px!important;font-size:10px!important}.leaflet-control-attribution a{color:var(--text-secondary)!important}.leaflet-control-zoom{-webkit-backdrop-filter:blur(12px);overflow:hidden;background:#141416d9!important;border:1px solid #8ca0c833!important;border-radius:.75rem!important;margin-top:1rem!important;margin-left:1rem!important}.leaflet-control-zoom a{color:var(--text-secondary)!important;background:0 0!important;border:none!important;border-bottom:1px solid #8ca0c826!important;width:32px!important;height:32px!important;font-size:16px!important;font-weight:500!important;line-height:32px!important}.leaflet-control-zoom a:last-child{border-bottom:none!important}.leaflet-control-zoom a:hover{color:var(--text-primary)!important;background:#ffffff1a!important}.leaflet-control-zoom a.leaflet-disabled{opacity:.5;color:var(--text-muted)!important}.map-dot-marker{background:0 0!important;border:none!important}.map-ring-marker,.map-filled-marker,.map-local-marker{cursor:pointer!important;z-index:500!important;pointer-events:auto!important;background:0 0!important;border:none!important}.leaflet-marker-pane{z-index:600!important;pointer-events:auto!important}.leaflet-marker-pane .leaflet-marker-icon{pointer-events:auto!important}.leaflet-popup-content-wrapper{-webkit-backdrop-filter:blur(12px)brightness(.7)saturate(.9)!important;backdrop-filter:blur(12px)brightness(.7)saturate(.9)!important;background-color:#20242aeb!important;border:none!important;border-radius:.75rem!important;padding:0!important;position:relative!important;overflow:hidden!important;box-shadow:inset 0 0 0 1px #ffffff1a,0 4px 16px #00000080!important}.leaflet-popup-content{color:var(--text-primary)!important;margin:.75rem!important}.leaflet-popup-content strong{color:var(--text-primary)!important}.leaflet-popup-content hr{border-color:#8ca0c826!important;margin:.5rem 0!important}.leaflet-popup-tip-container{display:none!important}.leaflet-popup-close-button{color:var(--text-muted)!important;width:24px!important;height:24px!important;padding:6px!important;font-size:18px!important;top:4px!important;right:4px!important}.leaflet-popup-close-button:hover{color:var(--text-primary)!important;background:#ffffff1a!important;border-radius:4px!important}.leaflet-tooltip{white-space:nowrap;color:var(--text-primary)!important;background-color:#050505!important;border:none!important;border-radius:.5rem!important;padding:.375rem .5rem!important;font-size:11px!important;position:relative!important;overflow:hidden!important;box-shadow:inset 0 0 0 1px #ffffff14,inset 1.5px 2px 0 -1px #ffffff1f,inset -1.5px -1.5px 0 -1px #ffffff14,inset 0 -1px 3px #00000026!important}.leaflet-tooltip:after{content:""!important;pointer-events:none!important;border-radius:inherit!important;z-index:999!important;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom)!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important}.leaflet-tooltip:before{display:none!important}.leaflet-tooltip .text-text-muted{color:var(--text-muted)!important}.maplibregl-popup{font-family:var(--font-display),system-ui,-apple-system,sans-serif;font-size:var(--text-sm)}.maplibregl-popup-content{min-width:140px;color:var(--text-primary)!important;background-color:#050505!important;border:none!important;border-radius:.75rem!important;padding:.75rem!important;position:relative!important;overflow:hidden!important;box-shadow:inset 0 0 0 1px #ffffff14,inset 1.8px 3px 0 -2px #ffffff1f,inset -2px -2px 0 -2px #ffffff14,inset -3px -8px 1px -6px #ffffff0f,inset -.3px -1px 4px #00000026,inset 0 3px 4px -2px #0000001f!important}.maplibregl-popup-content:after{content:""!important;pointer-events:none!important;border-radius:inherit!important;z-index:999!important;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom)!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important}.maplibregl-popup-close-button{border-radius:4px;transition:background .1s,color .1s;color:var(--text-muted)!important;width:24px!important;height:24px!important;padding:6px!important;font-size:18px!important;top:4px!important;right:4px!important}.maplibregl-popup-close-button:hover{color:var(--text-primary)!important;background:#ffffff1a!important}.maplibregl-popup-tip{display:none!important}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{border-top-color:var(--tooltip-bg)!important}.maplibregl-marker.local-node-marker{z-index:10!important}.maplibregl-popup{z-index:100!important}.maplibregl-ctrl-attrib{color:var(--text-muted)!important;background:#141416cc!important;padding:2px 6px!important;font-size:10px!important}.maplibregl-ctrl-attrib a{color:var(--text-secondary)!important}.maplibregl-ctrl-attrib.maplibregl-compact{background:#141416cc!important;border-radius:4px!important}.maplibregl-map,.leaflet-container{touch-action:pan-x pan-y;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.maplibregl-ctrl button:focus,.leaflet-control a:focus{outline:2px solid var(--accent-primary);outline-offset:2px}@media(prefers-contrast:high){.maplibregl-ctrl button,.leaflet-control a{border:2px solid!important}.map-legend,.map-controls{border:2px solid var(--text-primary)!important}}@media(prefers-reduced-motion:reduce){.maplibregl-map,.leaflet-container{transition:none!important}.maplibregl-map *{transition:none!important;animation:none!important}}@-moz-document url-prefix(){.maplibregl-canvas{transform:translateZ(0)}}@supports (-webkit-touch-callout:none){.maplibregl-canvas{will-change:transform;transform:translateZ(0)}}@media(forced-colors:active){.maplibregl-ctrl button,.leaflet-control a{forced-color-adjust:none;color:buttontext!important;background:canvas!important;border:1px solid buttontext!important}.maplibregl-popup-content,.leaflet-popup-content-wrapper{color:canvastext!important;background:canvas!important;border:2px solid canvastext!important}}.maplibregl-ctrl-attrib-button{background-color:#141416cc!important;border-radius:4px!important}.maplibregl-ctrl-group{background-color:#050505!important;border:none!important;border-radius:.75rem!important;position:relative!important;overflow:hidden!important;box-shadow:inset 0 0 0 1px #ffffff14,inset 1.5px 2px 0 -1px #ffffff1f,inset -1.5px -1.5px 0 -1px #ffffff14,inset 0 -1px 3px #00000026!important}.maplibregl-ctrl-group:after{content:""!important;pointer-events:none!important;border-radius:inherit!important;z-index:999!important;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom)!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important}.maplibregl-ctrl-group button{background:0 0!important;border:none!important;border-bottom:1px solid #8ca0c81f!important;width:32px!important;height:32px!important}.maplibregl-ctrl-group button:last-child{border-bottom:none!important}.maplibregl-ctrl-group button:hover{background:#ffffff14!important}.maplibregl-ctrl-group button .maplibregl-ctrl-icon{filter:invert()brightness(.75)}.maplibregl-ctrl-group button:hover .maplibregl-ctrl-icon{filter:invert()brightness()}.maplibregl-ctrl-scale{border:1px solid var(--map-local-color)!important;color:var(--map-local-color)!important;font-size:10px!important;font-family:var(--font-data),monospace!important;background:0 0!important;border-top:none!important;border-radius:0!important;padding:2px 6px!important;line-height:1.2!important}.map-control-glass{background-color:#050505;border:none;border-radius:.75rem;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff14,inset 1.5px 2px 0 -1px #ffffff1f,inset -1.5px -1.5px 0 -1px #ffffff14,inset 0 -1px 3px #00000026}.map-control-glass:after{content:"";pointer-events:none;border-radius:inherit;z-index:999;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.map-control-glass-active{background-color:#050505;border:none;border-radius:.75rem;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff1f,inset 1.5px 2px 0 -1px #ffffff2e,inset -1.5px -1.5px 0 -1px #ffffff1a,inset 0 -1px 3px #00000026}.map-control-glass-active:after{content:"";pointer-events:none;border-radius:inherit;z-index:999;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.map-controls-container{flex-direction:column;align-items:flex-end;gap:.375rem;max-width:calc(100vw - 1.5rem);display:flex}.map-controls-row{flex-wrap:wrap;justify-content:flex-end;gap:.375rem;display:flex}.map-controls-secondary{flex-wrap:wrap}.map-control-btn{padding:.5rem;transition:background-color .15s}.map-control-btn:hover{background-color:#ffffff1a}.map-control-icon{width:16px;height:16px}@media(max-width:639px){.map-controls-container{gap:.25rem;max-width:calc(100vw - 1rem)}.map-controls-row{gap:.25rem}.map-control-btn{padding:.375rem}.map-control-icon{width:14px;height:14px}.map-control-label{display:none}}@media(min-width:640px)and (max-width:1023px){.map-controls-container{gap:.375rem}}@media(min-width:1024px){.map-controls-container,.map-controls-row{gap:.5rem}}.map-legend-stack{z-index:600;flex-direction:column;gap:.5rem;max-width:130px;display:flex;position:absolute;bottom:.75rem;left:.75rem}@media(min-width:640px){.map-legend-stack{max-width:150px;bottom:1rem;left:1rem}}.map-edge-tooltip{z-index:1000;pointer-events:none;position:absolute;bottom:1rem;left:calc(50% + 85px);transform:translate(-50%)}.map-edge-tooltip-inner{pointer-events:auto;padding:.625rem 1rem}.map-container-fullscreen .map-edge-tooltip{bottom:1.5rem}.font-mono{font-feature-settings:"zero";font-family:var(--font-data),"SF Mono",Monaco,monospace!important}.font-display{font-family:var(--font-display),system-ui,sans-serif!important}.tabular-nums{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.layout-container{width:100%;max-width:80rem;margin-left:auto;margin-right:auto}.grid-12{grid-template-columns:repeat(12,minmax(0,1fr));gap:1rem;display:grid}@media(min-width:768px){.grid-12{gap:1.5rem}}.col-span-6{grid-column:span 6/span 6}.col-span-4{grid-column:span 4/span 4}.col-span-3{grid-column:span 3/span 3}@media(min-width:640px){.sm\:col-span-6{grid-column:span 6/span 6}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-3{grid-column:span 3/span 3}}@media(min-width:768px){.md\:col-span-6{grid-column:span 6/span 6}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-span-12{grid-column:span 12/span 12}}@media(min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-8{grid-column:span 8/span 8}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:col-span-10{grid-column:span 10/span 10}.lg\:col-span-12{grid-column:span 12/span 12}}@media(min-width:1280px){.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-span-3{grid-column:span 3/span 3}.xl\:col-span-4{grid-column:span 4/span 4}.xl\:col-span-8{grid-column:span 8/span 8}}.gap-space-2{gap:.5rem}.gap-space-3{gap:.75rem}.gap-space-4{gap:1rem}.gap-space-6{gap:1.5rem}.gap-space-8{gap:2rem}.gap-y-space-4{row-gap:1rem}.gap-y-space-6{row-gap:1.5rem}.gap-y-space-8{row-gap:2rem}.gap-x-space-4{column-gap:1rem}.gap-x-space-6{column-gap:1.5rem}.gap-x-space-8{column-gap:2rem}.card-padding{padding:1rem}@media(min-width:768px){.card-padding{padding:1.5rem}}.card-padding-sm{padding:.75rem}@media(min-width:768px){.card-padding-sm{padding:1rem}}.section-gap{flex-direction:column;gap:1rem;display:flex}@media(min-width:640px){.section-gap{gap:1.5rem}}@media(min-width:1024px){.section-gap{gap:2rem}}.stats-row-hero{grid-template-columns:repeat(2,1fr);gap:1rem;display:grid}@media(min-width:768px){.stats-row-hero{grid-template-columns:repeat(3,1fr);gap:1.5rem}}@media(min-width:1280px){.stats-row-hero{grid-template-columns:repeat(5,1fr)}}.stats-row-secondary{grid-template-columns:1fr;gap:1rem;display:grid}@media(min-width:640px){.stats-row-secondary{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.stats-row-secondary{grid-template-columns:repeat(4,1fr);gap:1.5rem}}.content-grid{grid-template-columns:1fr;gap:1rem;display:grid}@media(min-width:768px){.content-grid{gap:1.5rem}}@media(min-width:1280px){.content-grid{grid-template-columns:2fr 1fr}}.content-main,.content-sidebar{min-width:0}.pill-filled{background:var(--accent-primary);color:var(--bg-body);border-radius:9999px;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;line-height:1;transition:opacity .15s;display:inline-flex}.pill-filled:hover{opacity:.9}.pill-subtle{background:var(--bg-subtle);color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:9999px;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;line-height:1;transition:all .15s;display:inline-flex}.pill-subtle:hover{background:var(--bg-elevated);color:var(--text-primary)}.pill-metric{text-transform:uppercase;letter-spacing:.05em;border-radius:9999px;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.625rem;font-weight:600;line-height:1;display:inline-flex}.pill-metric-positive{background:var(--accent-success)}@supports (color:color-mix(in lab,red,red)){.pill-metric-positive{background:color-mix(in srgb,var(--accent-success)15%,transparent)}}.pill-metric-positive{color:var(--accent-success)}.pill-metric-negative{background:var(--accent-danger)}@supports (color:color-mix(in lab,red,red)){.pill-metric-negative{background:color-mix(in srgb,var(--accent-danger)15%,transparent)}}.pill-metric-negative{color:var(--accent-danger)}.pill-metric-neutral{background:var(--overlay-soft);color:var(--text-secondary)}.pill-tag{background:var(--accent-primary);border-radius:9999px;align-items:center;padding:.125rem .5rem;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.pill-tag{background:color-mix(in srgb,var(--accent-primary)10%,transparent)}}.pill-tag{color:var(--accent-primary);text-transform:uppercase;letter-spacing:.08em;font-size:.625rem;font-weight:600}.toggle-group{background-color:var(--glass-tint);border-radius:9999px;padding:.25rem;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.toggle-group{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.toggle-group{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.toggle-group{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent)}}.toggle-group:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.toggle-group-item{color:var(--text-muted);border-radius:9999px;padding:.375rem .75rem;font-size:.75rem;font-weight:500;transition:all .15s}.toggle-group-item:hover{color:var(--text-secondary)}.toggle-group-item.active{background-color:var(--glass-tint)}@supports (color:color-mix(in lab,red,red)){.toggle-group-item.active{background-color:color-mix(in srgb,var(--glass-tint)36%,transparent)}}.toggle-group-item.active{color:var(--accent-primary);box-shadow:inset 0 0 0 1px var(--glass-light),inset 2px 1px 0 -1px var(--glass-light),inset -1.5px -1px 0 -1px var(--glass-light),inset -2px -6px 1px -5px var(--glass-light),inset -1px 2px 3px -1px var(--glass-dark),inset 0 -4px 1px -2px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.toggle-group-item.active{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 2px 1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -1.5px -1px 0 -1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -2px -6px 1px -5px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -1px 2px 3px -1px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 0 -4px 1px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*6%),transparent)}}.toggle-group-sm{padding:.1875rem}.toggle-group-sm .toggle-group-item{padding:.25rem .5rem;font-size:.6875rem}.data-card{contain:layout style;isolation:isolate;background-color:var(--glass-tint);border:none;border-radius:1.125rem;padding:1.25rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.data-card{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.data-card{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.data-card{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*6%),transparent)}}.data-card:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.data-card-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.data-card-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);font-size:.6875rem;font-weight:600}.data-card-controls{align-items:center;gap:.5rem;display:flex}.data-card-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:2rem;font-weight:600;line-height:1.1}.data-card-secondary{color:var(--text-muted);margin-top:.25rem;font-size:.75rem}.chart-container{isolation:isolate;background-color:var(--glass-tint);border:none;border-radius:1.125rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.chart-container{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.chart-container{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.chart-container{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*6%),transparent)}}.chart-container:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.chart-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.chart-title{color:var(--text-primary);align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;display:flex}.chart-title-icon{width:1.125rem;height:1.125rem;color:var(--icon-card-title)}.chart-body{padding:1rem;position:relative}.chart-axis-label{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.6875rem}.chart-gridline{stroke:var(--chart-grid);stroke-dasharray:4 4}.chart-glow-primary{filter:drop-shadow(0 0 6px var(--accent-primary))}.chart-glow-secondary{filter:drop-shadow(0 0 6px var(--accent-secondary))}.chart-glow-tertiary{filter:drop-shadow(0 0 6px var(--accent-tertiary))}.roster-list{flex-direction:column;display:flex}.roster-row{border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem .75rem .75rem .5rem;transition:background .15s;display:flex}@media(min-width:640px){.roster-row{gap:.75rem;padding:.75rem 1rem .75rem .75rem}}.roster-row:hover{background:var(--bg-subtle)}@supports (color:color-mix(in lab,red,red)){.roster-row:hover{background:color-mix(in srgb,var(--bg-subtle)80%,transparent)}}.roster-row-interactive{cursor:pointer}.roster-row-interactive:active{background:var(--bg-subtle)}.roster-row.selected{background:var(--accent-primary)}@supports (color:color-mix(in lab,red,red)){.roster-row.selected{background:color-mix(in srgb,var(--accent-primary)8%,transparent)}}.roster-icon{background-color:var(--glass-tint);border-radius:.625rem;flex-shrink:0;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;display:flex}@supports (color:color-mix(in lab,red,red)){.roster-icon{background-color:color-mix(in srgb,var(--glass-tint)10%,transparent)}}.roster-icon{box-shadow:inset 0 0 0 1px var(--glass-light),inset .5px 1px 0 0 var(--glass-light)}@supports (color:color-mix(in lab,red,red)){.roster-icon{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*5%),transparent),inset .5px 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*30%),transparent)}}.roster-icon-sm{border-radius:.5rem;width:2rem;height:2rem}.roster-content{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.roster-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:500;overflow:hidden}.roster-subtitle{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.roster-metrics{color:var(--text-muted);align-items:center;gap:1rem;display:flex}.roster-metric{color:var(--text-secondary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.8125rem;font-weight:600}@media(max-width:639px){.roster-row{flex-wrap:wrap;gap:.375rem;padding:.5rem .5rem .5rem .375rem}.roster-icon{border-radius:.375rem;width:1.75rem;height:1.75rem}.roster-content{flex:1 1 0;min-width:0;overflow:hidden}.roster-title{font-size:.75rem}.roster-metrics{flex-wrap:wrap;order:3;gap:.5rem;width:100%;margin-top:.25rem;padding-left:2.25rem}.roster-metric{flex-shrink:0;margin-left:auto;font-size:.6875rem}}@media(min-width:640px)and (max-width:767px){.roster-row{gap:.5rem}.roster-icon{border-radius:.5rem;width:2rem;height:2rem}.roster-metrics{gap:.75rem}}@media(min-width:768px)and (max-width:1023px){.roster-metrics{gap:.875rem}}@media(min-width:1024px){.roster-row{gap:.875rem}.roster-metrics{gap:1rem}}.contacts-grid-header,.contacts-grid-row{grid-template-columns:1fr;grid-template-areas:"node";align-items:center;gap:.75rem;display:grid}.contacts-grid-row{padding:.625rem .75rem;transition:background .15s}.contacts-grid-row:hover{background:var(--bg-subtle)}@supports (color:color-mix(in lab,red,red)){.contacts-grid-row:hover{background:color-mix(in srgb,var(--bg-subtle)80%,transparent)}}@media(max-width:639px){.contacts-grid-row{flex-wrap:nowrap;gap:.5rem;padding:.5rem .625rem;display:flex}.contacts-col-signal,.contacts-col-distance,.contacts-col-centrality,.contacts-col-activity{display:none}.contacts-col-node{flex:1 1 0;min-width:0}.contacts-col-seen,.contacts-col-actions{flex-shrink:0;align-self:center}}@media(min-width:640px){.contacts-grid-header,.contacts-grid-row{grid-template-columns:minmax(200px,1fr) 100px 60px 68px;grid-template-areas:"node signal seen actions"}.contacts-col-node{grid-area:node}.contacts-col-signal{grid-area:signal;display:flex}.contacts-col-seen{grid-area:seen}.contacts-col-actions{grid-area:actions}.contacts-col-distance,.contacts-col-centrality,.contacts-col-activity{display:none}}@media(min-width:768px){.contacts-grid-header,.contacts-grid-row{grid-template-columns:minmax(240px,1fr) 110px 80px 60px 68px;grid-template-areas:"node signal distance seen actions"}.contacts-col-distance{grid-area:distance;display:flex}}@media(min-width:1024px){.contacts-grid-header,.contacts-grid-row{grid-template-columns:minmax(280px,1fr) 110px 80px 64px 64px 68px;grid-template-areas:"node signal distance centrality seen actions"}.contacts-col-centrality{grid-area:centrality;display:flex}}@media(min-width:1280px){.contacts-grid-header,.contacts-grid-row{grid-template-columns:minmax(320px,1fr) 120px 80px 64px 64px 68px 68px;grid-template-areas:"node signal distance centrality activity seen actions"}.contacts-col-activity{grid-area:activity;display:flex}}.contacts-col-node{min-width:0}.contacts-col-signal,.contacts-col-distance,.contacts-col-centrality,.contacts-col-activity,.contacts-col-seen,.contacts-col-actions{white-space:nowrap;flex-shrink:0;overflow:hidden}.roster-separator{background:linear-gradient(to right,transparent,var(--border-subtle)20%,var(--border-subtle)80%,transparent);height:1px;margin:0 1rem}.roster-empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:3rem 1.5rem;display:flex}.roster-empty-icon{width:3rem;height:3rem;color:var(--text-muted);opacity:.5;margin-bottom:1rem}.roster-empty-title{color:var(--text-secondary);margin-bottom:.25rem;font-size:.875rem;font-weight:500}.roster-empty-text{color:var(--text-muted);font-size:.75rem}.btn-skeuo{cursor:pointer;background:var(--ctrl-base);border:1px solid var(--ctrl-border);color:var(--text-primary);box-shadow:0 3px 0 var(--ctrl-shadow-dark),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-highlight),inset 0 -2px 0 var(--ctrl-inset);border-radius:.5rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:.875rem;font-weight:600;transition:all .12s ease-out;display:inline-flex;position:relative}.btn-skeuo:hover{background:var(--ctrl-base-hover);border-color:var(--ctrl-border-hover);box-shadow:0 4px 0 var(--ctrl-shadow-dark),0 8px 20px var(--ctrl-shadow-mid),0 3px 8px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-highlight),inset 0 -2px 0 var(--ctrl-inset)}.btn-skeuo:active{background:var(--ctrl-base-active);box-shadow:0 0 0 var(--ctrl-shadow-dark),0 1px 3px var(--ctrl-shadow-mid),inset 0 3px 6px var(--ctrl-shadow-mid),inset 0 1px 0 var(--ctrl-shadow-dark);transform:translateY(3px)}.btn-skeuo:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn-skeuo-primary{background:var(--ctrl-primary);border-color:var(--ctrl-primary-border);color:var(--text-primary);box-shadow:0 3px 0 var(--ctrl-primary-shadow),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-primary-highlight),inset 0 -2px 0 var(--ctrl-primary-inset)}.btn-skeuo-primary:hover{background:var(--ctrl-primary-hover);border-color:var(--ctrl-primary-highlight);box-shadow:0 4px 0 var(--ctrl-primary-shadow),0 8px 20px var(--ctrl-shadow-mid),0 3px 8px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-primary-highlight),inset 0 -2px 0 var(--ctrl-primary-inset)}.btn-skeuo-success{background:var(--ctrl-success);border-color:var(--ctrl-success-border);color:var(--text-primary);box-shadow:0 3px 0 var(--ctrl-success-shadow),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-success-highlight),inset 0 -2px 0 var(--ctrl-success-inset)}.btn-skeuo-success:hover{background:var(--ctrl-success-hover);border-color:var(--ctrl-success-highlight);box-shadow:0 4px 0 var(--ctrl-success-shadow),0 8px 20px var(--ctrl-shadow-mid),0 3px 8px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-success-highlight),inset 0 -2px 0 var(--ctrl-success-inset)}.btn-skeuo-warning{background:var(--ctrl-warning);border-color:var(--ctrl-warning-border);color:var(--text-primary);box-shadow:0 3px 0 var(--ctrl-warning-shadow),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-warning-highlight),inset 0 -2px 0 var(--ctrl-warning-inset)}.btn-skeuo-warning:hover{background:var(--ctrl-warning-hover);border-color:var(--ctrl-warning-highlight);box-shadow:0 4px 0 var(--ctrl-warning-shadow),0 8px 20px var(--ctrl-shadow-mid),0 3px 8px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-warning-highlight),inset 0 -2px 0 var(--ctrl-warning-inset)}.btn-skeuo-neutral{background:var(--ctrl-base);border-color:var(--ctrl-border);color:var(--text-secondary);box-shadow:0 3px 0 var(--ctrl-shadow-dark),0 6px 16px var(--ctrl-shadow-mid),0 2px 6px var(--ctrl-shadow-dark),inset 0 1px 0 var(--ctrl-highlight),inset 0 -2px 0 var(--ctrl-inset)}.btn-skeuo-neutral:hover{background:var(--ctrl-base-hover);color:var(--text-primary);box-shadow:0 4px #18191d,0 8px 20px #08090b,0 3px 8px #0d0e12,inset 0 1px #5e5f6b,inset 0 -2px #26272e}.control-card{background-color:var(--glass-tint);border-radius:.875rem;padding:1rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.control-card{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.control-card{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.control-card{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*50%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*40%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent)}}.control-card:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.control-card-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.control-card-label{color:var(--text-muted);font-size:.8125rem}.control-card-value{font-size:.8125rem;font-weight:600}.control-card-value-active{color:var(--accent-success)}.control-card-value-inactive{color:var(--text-muted)}.btn-skeuo-icon{stroke-width:2.5px;width:1.125rem;height:1.125rem}.control-panel-skeuo{background:linear-gradient(180deg,var(--ctrl-panel-top)0%,var(--ctrl-panel-mid)50%,var(--ctrl-panel-bottom)100%);border:1px solid var(--ctrl-panel-border);box-shadow:inset 0 1px 0 var(--glass-light),inset 0 -1px 0 var(--glass-dark),0 4px 12px var(--glass-dark),0 1px 3px var(--glass-dark);border-radius:.75rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}@supports (color:color-mix(in lab,red,red)){.control-panel-skeuo{box-shadow:inset 0 1px color-mix(in srgb,var(--glass-light)4%,transparent),inset 0 -1px color-mix(in srgb,var(--glass-dark)30%,transparent),0 4px 12px color-mix(in srgb,var(--glass-dark)40%,transparent),0 1px 3px color-mix(in srgb,var(--glass-dark)30%,transparent)}}.control-btn{letter-spacing:.01em;cursor:pointer;background:var(--ctrl-base);border:1px solid var(--ctrl-border);color:var(--text-primary);box-shadow:0 2px 0 var(--ctrl-shadow-dark),0 3px 8px var(--glass-dark),inset 0 1px 0 var(--glass-light);border-radius:.5rem;justify-content:center;align-items:center;gap:.375rem;padding:.5rem .75rem;font-size:.75rem;font-weight:600;transition:all .1s ease-out;display:flex;position:relative}@supports (color:color-mix(in lab,red,red)){.control-btn{box-shadow:0 2px 0 var(--ctrl-shadow-dark),0 3px 8px color-mix(in srgb,var(--glass-dark)30%,transparent),inset 0 1px color-mix(in srgb,var(--glass-light)6%,transparent)}}.control-btn:hover{background:var(--ctrl-base-hover);box-shadow:0 2px 0 var(--ctrl-shadow-dark),0 4px 10px var(--glass-dark),inset 0 1px 0 var(--glass-light)}@supports (color:color-mix(in lab,red,red)){.control-btn:hover{box-shadow:0 2px 0 var(--ctrl-shadow-dark),0 4px 10px color-mix(in srgb,var(--glass-dark)35%,transparent),inset 0 1px color-mix(in srgb,var(--glass-light)8%,transparent)}}.control-btn:active{box-shadow:0 0 0 var(--ctrl-shadow-dark),0 1px 2px var(--glass-dark),inset 0 2px 4px var(--glass-dark);transform:translateY(2px)}@supports (color:color-mix(in lab,red,red)){.control-btn:active{box-shadow:0 0 0 var(--ctrl-shadow-dark),0 1px 2px color-mix(in srgb,var(--glass-dark)20%,transparent),inset 0 2px 4px color-mix(in srgb,var(--glass-dark)20%,transparent)}}.control-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.control-btn-primary{background:linear-gradient(180deg,var(--ctrl-primary-hover)0%,var(--ctrl-primary)100%);border-color:var(--ctrl-primary-border);box-shadow:0 2px 0 var(--ctrl-primary-shadow),0 3px 8px var(--glass-dark),inset 0 1px 0 var(--ctrl-primary-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-primary{box-shadow:0 2px 0 var(--ctrl-primary-shadow),0 3px 8px color-mix(in srgb,var(--glass-dark)40%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-primary-highlight)30%,transparent)}}.control-btn-primary:hover{background:linear-gradient(180deg,var(--ctrl-primary-border)0%,var(--ctrl-primary-hover)100%);box-shadow:0 2px 0 var(--ctrl-primary-shadow),0 4px 10px var(--glass-dark),inset 0 1px 0 var(--ctrl-primary-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-primary:hover{box-shadow:0 2px 0 var(--ctrl-primary-shadow),0 4px 10px color-mix(in srgb,var(--glass-dark)45%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-primary-highlight)40%,transparent)}}.control-btn-success{background:linear-gradient(180deg,var(--ctrl-success-hover)0%,var(--ctrl-success)100%);border-color:var(--ctrl-success-border);box-shadow:0 2px 0 var(--ctrl-success-shadow),0 3px 8px var(--glass-dark),inset 0 1px 0 var(--ctrl-success-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-success{box-shadow:0 2px 0 var(--ctrl-success-shadow),0 3px 8px color-mix(in srgb,var(--glass-dark)40%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-success-highlight)25%,transparent)}}.control-btn-success:hover{background:linear-gradient(180deg,var(--ctrl-success-border)0%,var(--ctrl-success-hover)100%);box-shadow:0 2px 0 var(--ctrl-success-shadow),0 4px 10px var(--glass-dark),inset 0 1px 0 var(--ctrl-success-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-success:hover{box-shadow:0 2px 0 var(--ctrl-success-shadow),0 4px 10px color-mix(in srgb,var(--glass-dark)45%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-success-highlight)35%,transparent)}}.control-btn-warning{background:linear-gradient(180deg,var(--ctrl-warning-hover)0%,var(--ctrl-warning)100%);border-color:var(--ctrl-warning-border);box-shadow:0 2px 0 var(--ctrl-warning-shadow),0 3px 8px var(--glass-dark),inset 0 1px 0 var(--ctrl-warning-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-warning{box-shadow:0 2px 0 var(--ctrl-warning-shadow),0 3px 8px color-mix(in srgb,var(--glass-dark)40%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-warning-highlight)25%,transparent)}}.control-btn-warning:hover{background:linear-gradient(180deg,var(--ctrl-warning-border)0%,var(--ctrl-warning-hover)100%);box-shadow:0 2px 0 var(--ctrl-warning-shadow),0 4px 10px var(--glass-dark),inset 0 1px 0 var(--ctrl-warning-highlight)}@supports (color:color-mix(in lab,red,red)){.control-btn-warning:hover{box-shadow:0 2px 0 var(--ctrl-warning-shadow),0 4px 10px color-mix(in srgb,var(--glass-dark)45%,transparent),inset 0 1px color-mix(in srgb,var(--ctrl-warning-highlight)35%,transparent)}}.control-btn-neutral{background:var(--ctrl-base-active);border-color:var(--ctrl-border);color:var(--text-secondary)}.control-btn-neutral:hover{background:var(--ctrl-base);color:var(--text-primary)}.control-toggle-group{flex-direction:column;gap:.25rem;display:flex}.control-toggle-label{color:var(--text-muted);justify-content:space-between;align-items:center;padding:0 .25rem;font-size:.6875rem;display:flex}.control-toggle-status{text-transform:uppercase;letter-spacing:.05em;font-size:.625rem;font-weight:600}@keyframes flash-white-fade{0%{opacity:.2}to{opacity:0}}.flash-overlay{border-radius:inherit;pointer-events:none;z-index:50;background-color:#fff;animation:.6s ease-out forwards flash-white-fade;position:absolute;top:0;right:0;bottom:0;left:0}@keyframes flash-row-bg{0%{background-color:#fff3}to{background-color:#0000}}.flash-row{animation:.6s ease-out forwards flash-row-bg}@keyframes flash-icon-pulse{0%{color:#fff;filter:drop-shadow(0 0 6px #fffc)}to{color:var(--text-muted);filter:none}}.flash-icon{animation:.6s ease-out forwards flash-icon-pulse}.mini-widget{contain:layout style;background-color:var(--glass-tint);border-radius:.875rem;flex-direction:column;gap:.25rem;padding:.75rem;display:flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.mini-widget{background-color:color-mix(in srgb,var(--glass-tint)var(--glass-bg-opacity),transparent)}}.mini-widget{-webkit-backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur))brightness(var(--glass-brightness));box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.mini-widget{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*10%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*80%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*60%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.mini-widget:before{content:"";pointer-events:none;border-radius:inherit;background:var(--glass-surface-tint),var(--glass-reflection-top),var(--glass-reflection-bottom);position:absolute;top:0;right:0;bottom:0;left:0}.mini-widget:hover{box-shadow:inset 0 0 0 1px var(--glass-light),inset 1.8px 3px 0 -2px var(--glass-light),inset -2px -2px 0 -2px var(--glass-light),inset -3px -8px 1px -6px var(--glass-light),inset -.3px -1px 4px 0 var(--glass-dark),inset -1.5px 2.5px 0 -2px var(--glass-dark),inset 0 3px 4px -2px var(--glass-dark),inset 2px -6.5px 1px -4px var(--glass-dark),0 1px 5px 0 var(--glass-dark),0 6px 16px 0 var(--glass-dark)}@supports (color:color-mix(in lab,red,red)){.mini-widget:hover{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*15%),transparent),inset 1.8px 3px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*100%),transparent),inset -2px -2px 0 -2px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*90%),transparent),inset -3px -8px 1px -6px color-mix(in srgb,var(--glass-light)calc(var(--glass-reflex-light)*70%),transparent),inset -.3px -1px 4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*12%),transparent),inset -1.5px 2.5px 0 -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 0 3px 4px -2px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*20%),transparent),inset 2px -6.5px 1px -4px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 1px 5px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*10%),transparent),0 6px 16px color-mix(in srgb,var(--glass-dark)calc(var(--glass-reflex-dark)*8%),transparent)}}.mini-widget-header{align-items:center;gap:.375rem;min-height:1.25rem;display:flex}.mini-widget-icon{width:1rem;height:1rem;color:var(--icon-widget);flex-shrink:0}.mini-widget-title{font-family:Poppins,sans-serif;font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;text-overflow:ellipsis;font-weight:500;line-height:1.2;overflow:hidden}.mini-widget-value{font-family:JetBrains Mono,monospace;font-size:var(--text-xl);color:var(--text-primary);font-weight:600;line-height:1.1}.mini-widget-value-lg{font-size:var(--text-2xl)}.mini-widget-value-sm{font-size:var(--text-lg)}.mini-widget-unit{font-size:var(--text-xs);color:var(--text-muted);margin-left:.125rem;font-weight:400}.mini-widget-subtitle{font-family:JetBrains Mono,monospace;font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;line-height:1.3;overflow:hidden}.mini-widget-status-dot{border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem}.mini-widget-status-dot.excellent{background:var(--signal-excellent)}.mini-widget-status-dot.good{background:var(--signal-good)}.mini-widget-status-dot.fair{background:var(--signal-fair)}.mini-widget-status-dot.poor{background:var(--signal-poor)}.mini-widget-status-dot.critical{background:var(--signal-critical)}.mini-widget-status-dot.unknown{background:var(--signal-unknown)}.mini-widget-trend{font-size:var(--text-xs);align-items:center;gap:.125rem;font-weight:500;display:flex}.mini-widget-trend.up{color:var(--accent-danger)}.mini-widget-trend.down{color:var(--accent-success)}.mini-widget-trend.stable{color:var(--text-muted)}.mini-widget-sparkline{width:100%;min-width:1px;height:1.5rem;min-height:1px;margin-top:auto}.mini-widget-loading{justify-content:center;align-items:center;min-height:4rem;display:flex}.mini-widget-loading-spinner{border:2px solid var(--border-subtle);border-top-color:var(--accent-primary);border-radius:50%;width:1rem;height:1rem;animation:.8s linear infinite spin}.mini-widget-error{min-height:4rem;color:var(--text-muted);font-size:var(--text-xs);justify-content:center;align-items:center;display:flex}.mini-widget-progress{background:var(--bg-subtle);border-radius:.125rem;height:.25rem;margin-top:auto;overflow:hidden}.mini-widget-progress-bar{border-radius:.125rem;height:100%;transition:width .3s}.mini-widget-progress-bar.excellent{background:var(--signal-excellent)}.mini-widget-progress-bar.good{background:var(--signal-good)}.mini-widget-progress-bar.fair{background:var(--signal-fair)}.mini-widget-progress-bar.poor{background:var(--signal-poor)}.mini-widget-progress-bar.critical{background:var(--signal-critical)}.mini-widget-toggle{align-items:center;gap:.5rem;display:flex}.mini-widget-toggle-track{background:var(--bg-subtle);border:1px solid var(--border-subtle);cursor:pointer;border-radius:.5rem;width:2rem;height:1rem;transition:all .2s;position:relative}.mini-widget-toggle-track.active{background:var(--accent-success);border-color:var(--accent-success)}.mini-widget-toggle-thumb{background:#fff;border-radius:50%;width:.75rem;height:.75rem;transition:left .2s;position:absolute;top:50%;left:.125rem;transform:translateY(-50%)}.mini-widget-toggle-track.active .mini-widget-toggle-thumb{left:calc(100% - .875rem)}.mesh-health-container{margin-bottom:1.5rem}.mesh-health-header{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.widget-row{gap:.75rem;display:grid}@media(min-width:768px){.widget-row{grid-template-columns:repeat(3,1fr)}.mini-widget{height:7.5rem}}@media(max-width:767px){.widget-row{grid-template-columns:repeat(2,1fr)}.mini-widget{height:7rem;padding:.625rem}.mini-widget-value{font-size:var(--text-lg)}.mini-widget-value-lg{font-size:var(--text-xl)}}.mini-widget-value.excellent{color:var(--signal-excellent)}.mini-widget-value.good{color:var(--signal-good)}.mini-widget-value.fair{color:var(--signal-fair)}.mini-widget-value.poor{color:var(--signal-poor)}.mini-widget-value.critical{color:var(--signal-critical)}.pb-safe{padding-bottom:env(safe-area-inset-bottom,0)}.pt-safe{padding-top:env(safe-area-inset-top,0)}.pl-safe{padding-left:env(safe-area-inset-left,0)}.pr-safe{padding-right:env(safe-area-inset-right,0)}.p-safe{padding-top:env(safe-area-inset-top,0);padding-right:env(safe-area-inset-right,0);padding-bottom:env(safe-area-inset-bottom,0);padding-left:env(safe-area-inset-left,0)}@keyframes shimmer{0%{opacity:.5;transform:translate(-100%)}50%{opacity:1}to{opacity:.5;transform:translate(100%)}}.bento-row{grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch;display:grid}.bento-row-hero{min-height:15rem}@media(min-width:768px){.bento-row-hero{min-height:17.5rem}}@media(min-width:1024px){.bento-row-hero{min-height:20rem}}.bento-row-hero-tall{height:20rem;min-height:20rem}@media(min-width:768px){.bento-row-hero-tall{height:23.3125rem;min-height:23.3125rem}}@media(min-width:1024px){.bento-row-hero-tall{height:26.625rem;min-height:26.625rem}}.bento-row-hero-auto{min-height:20rem}@media(min-width:768px){.bento-row-hero-auto{min-height:23.3125rem}}@media(min-width:1024px){.bento-row-hero-auto{min-height:26.625rem}}.bento-row-panel{grid-auto-rows:18.75rem}.bento-row-feature{grid-auto-rows:12.5rem}@media(min-width:768px){.bento-row-feature{grid-auto-rows:15rem}}@media(min-width:1024px){.bento-row-feature{grid-auto-rows:16.25rem}}.bento-row-standard{min-height:11.25rem}@media(min-width:768px){.bento-row-standard{min-height:12.5rem}}@media(min-width:1024px){.bento-row-standard{min-height:13.75rem}}.bento-row-compact{min-height:8.75rem}@media(min-width:768px){.bento-row-compact{min-height:10rem}}@media(min-width:1024px){.bento-row-compact{min-height:11.25rem}}.bento-row-widget{min-height:6.25rem}@media(min-width:768px){.bento-row-widget{min-height:6.875rem}}@media(min-width:1024px){.bento-row-widget{min-height:7.5rem}}.bento-row-auto{min-height:auto}.analyzer-chart-height{height:13rem}@media(min-width:768px){.analyzer-chart-height{height:17rem}}@media(min-width:1024px){.analyzer-chart-height{height:20rem}}.legend-item{cursor:pointer;border-radius:.25rem;align-items:center;gap:.25rem;padding:.25rem .375rem;font-size:.6875rem;line-height:1.2;transition:background-color .15s,opacity .15s;display:flex}.legend-item:hover{background-color:var(--hover-tint)}.legend-item-active{background-color:var(--bg-subtle);opacity:1}.legend-item-dimmed{opacity:.35}.legend-item-chart-active{background-color:var(--hover-tint);opacity:1}.legend-label{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:5.5rem;overflow:hidden}.legend-value{font-variant-numeric:tabular-nums;color:var(--text-secondary);flex-shrink:0;margin-left:auto;font-family:JetBrains Mono,monospace;font-weight:600}.legend-value-live{color:var(--text-primary)}.bento-gap{gap:.75rem}@media(min-width:640px){.bento-gap{gap:1rem}}@media(min-width:768px){.bento-gap{gap:1.25rem}}@media(min-width:1024px){.bento-gap{gap:1.5rem}}.bento-gap-sm{gap:.5rem}@media(min-width:640px){.bento-gap-sm{gap:.75rem}}@media(min-width:768px){.bento-gap-sm{gap:1rem}}.bento-gap-lg{gap:1rem}@media(min-width:640px){.bento-gap-lg{gap:1.25rem}}@media(min-width:768px){.bento-gap-lg{gap:1.5rem}}@media(min-width:1024px){.bento-gap-lg{gap:2rem}}.bento-cell{flex-direction:column;min-width:0;min-height:0;display:flex}.bento-cell>*{flex:auto;min-height:0}.bento-col-1{grid-column:span 1/span 1}.bento-col-2{grid-column:span 2/span 2}.bento-col-3{grid-column:span 3/span 3}.bento-col-4{grid-column:span 4/span 4}.bento-col-5{grid-column:span 5/span 5}.bento-col-6{grid-column:span 6/span 6}.bento-col-7{grid-column:span 7/span 7}.bento-col-8{grid-column:span 8/span 8}.bento-col-9{grid-column:span 9/span 9}.bento-col-10{grid-column:span 10/span 10}.bento-col-11{grid-column:span 11/span 11}.bento-col-12{grid-column:span 12/span 12}.col-span-full{grid-column:1/-1}.col-auto{grid-column:auto}.bento-col-1-5{grid-column:span 2/span 2}@media(min-width:640px){.sm\:bento-col-1{grid-column:span 1/span 1}.sm\:bento-col-2{grid-column:span 2/span 2}.sm\:bento-col-3{grid-column:span 3/span 3}.sm\:bento-col-4{grid-column:span 4/span 4}.sm\:bento-col-5{grid-column:span 5/span 5}.sm\:bento-col-6{grid-column:span 6/span 6}.sm\:bento-col-7{grid-column:span 7/span 7}.sm\:bento-col-8{grid-column:span 8/span 8}.sm\:bento-col-9{grid-column:span 9/span 9}.sm\:bento-col-10{grid-column:span 10/span 10}.sm\:bento-col-11{grid-column:span 11/span 11}.sm\:bento-col-12{grid-column:span 12/span 12}.sm\:col-span-full{grid-column:1/-1}.sm\:bento-col-1-5{grid-column:span 2/span 2}}@media(min-width:768px){.md\:bento-col-1{grid-column:span 1/span 1}.md\:bento-col-2{grid-column:span 2/span 2}.md\:bento-col-3{grid-column:span 3/span 3}.md\:bento-col-4{grid-column:span 4/span 4}.md\:bento-col-5{grid-column:span 5/span 5}.md\:bento-col-6{grid-column:span 6/span 6}.md\:bento-col-7{grid-column:span 7/span 7}.md\:bento-col-8{grid-column:span 8/span 8}.md\:bento-col-9{grid-column:span 9/span 9}.md\:bento-col-10{grid-column:span 10/span 10}.md\:bento-col-11{grid-column:span 11/span 11}.md\:bento-col-12{grid-column:span 12/span 12}.md\:col-span-full{grid-column:1/-1}.md\:bento-col-1-5{grid-column:span 2/span 2}}@media(min-width:1024px){.lg\:bento-col-1{grid-column:span 1/span 1}.lg\:bento-col-2{grid-column:span 2/span 2}.lg\:bento-col-3{grid-column:span 3/span 3}.lg\:bento-col-4{grid-column:span 4/span 4}.lg\:bento-col-5{grid-column:span 5/span 5}.lg\:bento-col-6{grid-column:span 6/span 6}.lg\:bento-col-7{grid-column:span 7/span 7}.lg\:bento-col-8{grid-column:span 8/span 8}.lg\:bento-col-9{grid-column:span 9/span 9}.lg\:bento-col-10{grid-column:span 10/span 10}.lg\:bento-col-11{grid-column:span 11/span 11}.lg\:bento-col-12{grid-column:span 12/span 12}.lg\:col-span-full{grid-column:1/-1}.lg\:bento-col-1-5{grid-column:span 2/span 2}}@media(min-width:1280px){.xl\:bento-col-1{grid-column:span 1/span 1}.xl\:bento-col-2{grid-column:span 2/span 2}.xl\:bento-col-3{grid-column:span 3/span 3}.xl\:bento-col-4{grid-column:span 4/span 4}.xl\:bento-col-5{grid-column:span 5/span 5}.xl\:bento-col-6{grid-column:span 6/span 6}.xl\:bento-col-7{grid-column:span 7/span 7}.xl\:bento-col-8{grid-column:span 8/span 8}.xl\:bento-col-9{grid-column:span 9/span 9}.xl\:bento-col-10{grid-column:span 10/span 10}.xl\:bento-col-11{grid-column:span 11/span 11}.xl\:bento-col-12{grid-column:span 12/span 12}.xl\:col-span-full{grid-column:1/-1}.xl\:bento-col-1-5{grid-column:span 2/span 2}}.terminal-card{height:calc(100dvh - 160px);min-height:300px;max-height:calc(100vh - 120px);padding-bottom:env(safe-area-inset-bottom,0)}@media(min-width:640px){.terminal-card{height:calc(100dvh - 180px);min-height:400px}}@media(min-width:1024px){.terminal-card{height:calc(100vh - 180px);min-height:500px}}.terminal-ascii{letter-spacing:-.5px;font-size:8px}@media(min-width:375px){.terminal-ascii{letter-spacing:0;font-size:9px}}@media(min-width:414px){.terminal-ascii{font-size:10px}}@media(min-width:640px){.terminal-ascii{font-size:11px}}@media(min-width:768px){.terminal-ascii{font-size:12px}}@media(min-width:1024px){.terminal-ascii{font-size:13px}}@supports (-webkit-touch-callout:none){.terminal-card input{font-size:16px}}.terminal-card>div:first-child{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}} diff --git a/frontend/dist/assets/leaflet-ChRwnWLk.js b/frontend/dist/assets/leaflet-D_ckmI2R.js similarity index 99% rename from frontend/dist/assets/leaflet-ChRwnWLk.js rename to frontend/dist/assets/leaflet-D_ckmI2R.js index 121ad2a5..8da59e25 100644 --- a/frontend/dist/assets/leaflet-ChRwnWLk.js +++ b/frontend/dist/assets/leaflet-D_ckmI2R.js @@ -1 +1 @@ -import{g as t}from"./deckgl-MTXp-Y3t.js";var i,e={exports:{}};const n=t((i||(i=1,function(t){function i(t){var i,e,n,o;for(e=1,n=arguments.length;e0?Math.floor(t):Math.ceil(t)};function O(t,i,e){return t instanceof k?t:f(t)?new k(t[0],t[1]):null==t?t:"object"==typeof t&&"x"in t&&"y"in t?new k(t.x,t.y):new k(t,i,e)}function A(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=B(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=B(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.xi.y&&n.y=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=R(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=R(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lati.lng&&n.lng1,Zt=function(){var t=!1;try{var i=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassiveEventSupport",h,i),window.removeEventListener("testPassiveEventSupport",h,i)}catch(e){}return t}(),St=!!document.createElement("canvas").getContext,kt=!(!document.createElementNS||!X("svg").createSVGRect),Et=!!kt&&(($=document.createElement("div")).innerHTML="","http://www.w3.org/2000/svg"===($.firstChild&&$.firstChild.namespaceURI)),Ot=!kt&&function(){try{var t=document.createElement("div");t.innerHTML='';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(e){return!1}}();function At(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var Bt={ie:tt,ielt9:it,edge:et,webkit:nt,android:ot,android23:st,androidStock:at,opera:ht,chrome:lt,gecko:ut,safari:ct,phantom:_t,opera12:dt,win:pt,ie3d:mt,webkit3d:ft,gecko3d:gt,any3d:vt,mobile:yt,mobileWebkit:xt,mobileWebkit3d:wt,msPointer:bt,pointer:Pt,touch:Tt,touchNative:Lt,mobileOpera:Mt,mobileGecko:zt,retina:Ct,passiveEvents:Zt,canvas:St,svg:kt,vml:Ot,inlineSvg:Et,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},It=Bt.msPointer?"MSPointerDown":"pointerdown",Rt=Bt.msPointer?"MSPointerMove":"pointermove",Nt=Bt.msPointer?"MSPointerUp":"pointerup",Dt=Bt.msPointer?"MSPointerCancel":"pointercancel",jt={touchstart:It,touchmove:Rt,touchend:Nt,touchcancel:Dt},Ht={touchstart:function(t,i){i.MSPOINTER_TYPE_TOUCH&&i.pointerType===i.MSPOINTER_TYPE_TOUCH&&Ni(i),Kt(t,i)},touchmove:Kt,touchend:Kt,touchcancel:Kt},Wt={},Ft=!1;function Ut(t,i,e){return"touchstart"===i&&(Ft||(document.addEventListener(It,Vt,!0),document.addEventListener(Rt,qt,!0),document.addEventListener(Nt,Gt,!0),document.addEventListener(Dt,Gt,!0),Ft=!0)),Ht[i]?(e=Ht[i].bind(this,e),t.addEventListener(jt[i],e,!1),e):h}function Vt(t){Wt[t.pointerId]=t}function qt(t){Wt[t.pointerId]&&(Wt[t.pointerId]=t)}function Gt(t){delete Wt[t.pointerId]}function Kt(t,i){if(i.pointerType!==(i.MSPOINTER_TYPE_MOUSE||"mouse")){for(var e in i.touches=[],Wt)i.touches.push(Wt[e]);i.changedTouches=[i],t(i)}}var Yt,Xt,Jt,$t,Qt,ti=fi(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ii=fi(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),ei="webkitTransition"===ii||"OTransition"===ii?ii+"End":"transitionend";function ni(t){return"string"==typeof t?document.getElementById(t):t}function oi(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function si(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function ri(t){var i=t.parentNode;i&&i.removeChild(t)}function ai(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function hi(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function li(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function ui(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=pi(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function ci(t,i){if(void 0!==t.classList)for(var e=c(i),n=0,o=e.length;n0?2*window.devicePixelRatio:1;function Fi(t){return Bt.edge?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/Wi:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function Ui(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(n){return!1}return e!==t}var Vi={__proto__:null,on:Ci,off:Si,stopPropagation:Bi,disableScrollPropagation:Ii,disableClickPropagation:Ri,preventDefault:Ni,stop:Di,getPropagationPath:ji,getMousePosition:Hi,getWheelDelta:Fi,isExternalTarget:Ui,addListener:Ci,removeListener:Si},qi=S.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=yi(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=T(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;ithis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,R(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},panInside:function(t,i){var e=O((i=i||{}).paddingTopLeft||i.padding||[0,0]),n=O(i.paddingBottomRight||i.padding||[0,0]),o=this.project(this.getCenter()),s=this.project(t),r=this.getPixelBounds(),a=B([r.min.add(e),r.max.subtract(n)]),h=a.getSize();if(!a.contains(s)){this._enforcingBounds=!0;var l=s.subtract(a.getCenter()),u=a.extend(s).getSize().subtract(h);o.x+=l.x<0?-u.x:u.x,o.y+=l.y<0?-u.y:u.y,this.panTo(this.unproject(o),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=e.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(n(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=n(this._handleGeolocationResponse,this),o=n(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,o,t):navigator.geolocation.getCurrentPosition(e,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){if(this._container._leaflet_id){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})}},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var i=new N(t.coords.latitude,t.coords.longitude),e=i.toBounds(2*t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)}},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(i){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ri(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(M(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)ri(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=si("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new I(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=R(t),e=O(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),l=B(this.project(a,n),this.project(r,n)).getSize(),u=Bt.any3d?this.options.zoomSnap:1,c=h.x/l.x,_=h.y/l.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),u&&(n=Math.round(n/(u/100))*(u/100),n=i?Math.ceil(n/u)*u:Math.floor(n/u)*u),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new k(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new A(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(D(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(O(t),i)},layerPointToLatLng:function(t){var i=O(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(D(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(D(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(R(t))},distance:function(t,i){return this.options.crs.distance(D(t),D(i))},containerPointToLayerPoint:function(t){return O(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return O(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(O(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(D(t)))},mouseEventToContainerPoint:function(t){return Hi(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=ni(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");Ci(i,"scroll",this._onScroll,this),this._containerId=s(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Bt.any3d,ci(t,"leaflet-container"+(Bt.touch?" leaflet-touch":"")+(Bt.retina?" leaflet-retina":"")+(Bt.ielt9?" leaflet-oldie":"")+(Bt.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=oi(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&"sticky"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),vi(this._mapPane,new k(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(ci(t.markerPane,"leaflet-zoom-hide"),ci(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i,e){vi(this._mapPane,new k(0,0));var n=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var o=this._zoom!==i;this._moveStart(o,e)._move(t,i)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e,n){void 0===i&&(i=this._zoom);var o=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?e&&e.pinch&&this.fire("zoom",e):((o||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return M(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){vi(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[s(this._container)]=this;var i=t?Si:Ci;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),Bt.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){M(this._resizeRequest),this._resizeRequest=T(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,n=[],o="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[s(r)])&&("click"===i||"preclick"===i)&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(o&&!Ui(r,t))break;if(n.push(e),o)break}if(r===this._container)break;r=r.parentNode}return n.length||a||o||!this.listens(i,!0)||(n=[this]),n},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var i=t.target||t.srcElement;if(!(!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i))){var e=t.type;"mousedown"===e&&Pi(i),this._fireDOMEvent(t,e)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}var s=this._findEventTargets(t,e);if(n){for(var r=[],a=0;a0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Bt.any3d?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){_i(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e)||(this.panBy(e,i),0))},_createAnimProxy:function(){var t=this._proxy=si("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=ti,e=this._proxy.style[i];gi(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ri(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var t=this.getCenter(),i=this.getZoom();gi(this._proxy,this.project(t,i),this.getZoomScale(i,1))},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o)||(T(function(){this._moveStart(!0,e.noMoveStart||!1)._animateZoom(t,i,!0)},this),0))},_animateZoom:function(t,i,e,o){this._mapPane&&(e&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,ci(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(n(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&_i(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});var Ki=C.extend({options:{position:"topright"},initialize:function(t){_(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return ci(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(ri(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),Yi=function(t){return new Ki(t)};Gi.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},i="leaflet-",e=this._controlContainer=si("div",i+"control-container",this._container);function n(n,o){var s=i+n+" "+i+o;t[n+o]=si("div",s,e)}n("top","left"),n("top","right"),n("bottom","left"),n("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ri(this._controlCorners[t]);ri(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Xi=Ki.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(s(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),n=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=n):i=this._createRadioElement("leaflet-base-layers_"+s(this),n),this._layerControlInputs.push(i),i.layerId=s(t.layer),Ci(i,"click",this._onInputClick,this);var o=document.createElement("span");o.innerHTML=" "+t.name;var r=document.createElement("span");return e.appendChild(r),r.appendChild(i),r.appendChild(o),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){if(!this._preventClick){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&ni.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section;this._preventClick=!0,Ci(t,"click",Ni),this.expand();var i=this;setTimeout(function(){Si(t,"click",Ni),i._preventClick=!1})}}),Ji=Ki.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=si("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=si("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),Ri(s),Ci(s,"click",Di),Ci(s,"click",o,this),Ci(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";_i(this._zoomInButton,i),_i(this._zoomOutButton,i),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||t._zoom===t.getMinZoom())&&(ci(this._zoomOutButton,i),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||t._zoom===t.getMaxZoom())&&(ci(this._zoomInButton,i),this._zoomInButton.setAttribute("aria-disabled","true"))}});Gi.mergeOptions({zoomControl:!0}),Gi.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ji,this.addControl(this.zoomControl))});var $i=Ki.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i="leaflet-control-scale",e=si("div",i),n=this.options;return this._addScales(n,i+"-line",e),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),e},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=si("div",i,e)),t.imperial&&(this._iScale=si("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return i*(e>=10?10:e>=5?5:e>=3?3:e>=2?2:1)}}),Qi=Ki.extend({options:{position:"bottomright",prefix:'
'+(Bt.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){_(this,t),this._attributions={}},onAdd:function(t){for(var i in t.attributionControl=this,this._container=si("div","leaflet-control-attribution"),Ri(this._container),t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(' ')}}});Gi.mergeOptions({attributionControl:!0}),Gi.addInitHook(function(){this.options.attributionControl&&(new Qi).addTo(this)});Ki.Layers=Xi,Ki.Zoom=Ji,Ki.Scale=$i,Ki.Attribution=Qi,Yi.layers=function(t,i,e){return new Xi(t,i,e)},Yi.zoom=function(t){return new Ji(t)},Yi.scale=function(t){return new $i(t)},Yi.attribution=function(t){return new Qi(t)};var te=C.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});te.addTo=function(t,i){return t.addHandler(i,this),this};var ie={Events:Z},ee=Bt.touch?"touchstart mousedown":"mousedown",ne=S.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){_(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(Ci(this._dragStartTarget,ee,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(ne._dragging===this&&this.finishDrag(!0),Si(this._dragStartTarget,ee,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(this._enabled&&(this._moved=!1,!ui(this._element,"leaflet-zoom-anim")))if(t.touches&&1!==t.touches.length)ne._dragging===this&&this.finishDrag();else if(!(ne._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(ne._dragging=this,this._preventOutline&&Pi(this._element),wi(),Yt(),this._moving))){this.fire("down");var i=t.touches?t.touches[0]:t,e=Ti(this._element);this._startPoint=new k(i.clientX,i.clientY),this._startPos=yi(this._element),this._parentScale=Mi(e);var n="mousedown"===t.type;Ci(document,n?"mousemove":"touchmove",this._onMove,this),Ci(document,n?"mouseup":"touchend touchcancel",this._onUp,this)}},_onMove:function(t){if(this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new k(i.clientX,i.clientY)._subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)i&&(e.push(t[n]),o=n);return oh&&(s=r,h=a);h>e&&(i[s]=1,ce(t,i,e,n,s),ce(t,i,e,s,o))}function _e(t,i,e,n,o){var s,r,a,h=n?ae:pe(t,e),l=pe(i,e);for(ae=l;;){if(!(h|l))return[t,i];if(h&l)return!1;a=pe(r=de(t,i,s=h||l,e,o),e),s===h?(t=r,h=a):(i=r,l=a)}}function de(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,l=n.min,u=n.max;return 8&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):4&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):2&e?(s=u.x,r=t.y+h*(u.x-t.x)/a):1&e&&(s=l.x,r=t.y+h*(l.x-t.x)/a),new k(s,r,o)}function pe(t,i){var e=0;return t.xi.max.x&&(e|=2),t.yi.max.y&&(e|=8),e}function me(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function fe(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,l=a*a+h*h;return l>0&&((o=((t.x-s)*a+(t.y-r)*h)/l)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new k(s,r)}function ge(t){return!f(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function ve(t){return ge(t)}function ye(t,i){var e,n,o,s,r,a,h,l;if(!t||0===t.length)throw new Error("latlngs not passed");ge(t)||(t=t[0]);var u=D([0,0]),c=R(t);c.getNorthWest().distanceTo(c.getSouthWest())*c.getNorthEast().distanceTo(c.getNorthWest())<1700&&(u=re(t));var _=t.length,d=[];for(e=0;e<_;e++){var p=D(t[e]);d.push(i.project(D([p.lat-u.lat,p.lng-u.lng])))}for(e=0,n=0;e<_-1;e++)n+=d[e].distanceTo(d[e+1])/2;if(0===n)l=d[0];else for(e=0,s=0;e<_-1;e++)if(r=d[e],a=d[e+1],(s+=o=r.distanceTo(a))>n){h=(s-n)/o,l=[a.x-h*(a.x-r.x),a.y-h*(a.y-r.y)];break}var m=i.unproject(O(l));return D([m.lat+u.lat,m.lng+u.lng])}var xe={__proto__:null,simplify:le,pointToSegmentDistance:ue,closestPointOnSegment:function(t,i,e){return fe(t,i,e)},clipSegment:_e,_getEdgeIntersection:de,_getBitCode:pe,_sqClosestPointOnSegment:fe,isFlat:ge,_flat:ve,polylineCenter:ye},we={project:function(t){return new k(t.lng,t.lat)},unproject:function(t){return new N(t.y,t.x)},bounds:new A([-180,-90],[180,90])},be={R:6378137,R_MINOR:6356752.314245179,bounds:new A([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new k(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,l=.1;h<15&&Math.abs(l)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=l=Math.PI/2-2*Math.atan(r*i)-a;return new N(a*e,t.x*e/n)}},Pe={__proto__:null,LonLat:we,Mercator:be,SphericalMercator:U},Le=i({},W,{code:"EPSG:3395",projection:be,transformation:function(){var t=.5/(Math.PI*be.R);return q(t,.5,-t,.5)}()}),Te=i({},W,{code:"EPSG:4326",projection:we,transformation:q(1/180,1,-1/180,.5)}),Me=i({},H,{projection:we,transformation:q(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});H.Earth=W,H.EPSG3395=Le,H.EPSG3857=K,H.EPSG900913=Y,H.EPSG4326=Te,H.Simple=Me;var ze=S.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[s(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[s(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.fire("add"),i.fire("layeradd",{layer:this})}}});Gi.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=s(t);return this._layers[i]||(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var i=s(t);return this._layers[i]?(this._loaded&&t.onRemove(this),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return s(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?f(t)?t:[t]:[]).length;ithis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()=2&&i[0]instanceof N&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){Re.prototype._setLatLngs.call(this,t),ge(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return ge(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new k(i,i);if(t=new A(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;ot.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(l=!l);return l||Re.prototype._containsPoint.call(this,t,!0)}});var De=Ze.extend({initialize:function(t,i){_(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=f(t)?t:t.features;if(o){for(i=0,e=o.length;i0&&o.push(o[0].slice()),o}function qe(t,e){return t.feature?i({},t.feature,{geometry:e}):Ge(e)}function Ge(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}var Ke={toGeoJSON:function(t){return qe(this,{type:"Point",coordinates:Ue(this.getLatLng(),t)})}};function Ye(t,i){return new De(t,i)}Oe.include(Ke),Ie.include(Ke),Be.include(Ke),Re.include({toGeoJSON:function(t){var i=!ge(this._latlngs);return qe(this,{type:(i?"Multi":"")+"LineString",coordinates:Ve(this._latlngs,i?1:0,!1,t)})}}),Ne.include({toGeoJSON:function(t){var i=!ge(this._latlngs),e=i&&!ge(this._latlngs[0]),n=Ve(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),qe(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ce.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),qe(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===i)return this.toMultiPoint(t);var e="GeometryCollection"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Ge(o);"FeatureCollection"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?qe(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});var Xe=Ye,Je=ze.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=R(i),_(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(ci(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ri(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&hi(this._image),this},bringToBack:function(){return this._map&&li(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=R(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:si("img");ci(i,"leaflet-image-layer"),this._zoomAnimated&&ci(i,"leaflet-zoom-animated"),this.options.className&&ci(i,this.options.className),i.onselectstart=h,i.onmousemove=h,i.onload=n(this.fire,this,"load"),i.onerror=n(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;gi(this._image,e,i)},_reset:function(){var t=this._image,i=new A(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();vi(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){mi(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)},getCenter:function(){return this._bounds.getCenter()}}),$e=Je.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInline:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:si("video");if(ci(i,"leaflet-image-layer"),this._zoomAnimated&&ci(i,"leaflet-zoom-animated"),this.options.className&&ci(i,this.options.className),i.onselectstart=h,i.onmousemove=h,i.onloadeddata=n(this.fire,this,"load"),t){for(var e=i.getElementsByTagName("source"),o=[],s=0;s0?o:[i.src]}else{f(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(i.style,"objectFit")&&(i.style.objectFit="fill"),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop,i.muted=!!this.options.muted,i.playsInline=!!this.options.playsInline;for(var r=0;ro?(i.height=o+"px",ci(t,s)):_i(t,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();vi(this._container,i.add(e))},_adjustPan:function(){if(this.options.autoPan)if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning)this._autopanning=!1;else{var t=this._map,i=parseInt(oi(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new k(this._containerLeft,-e-this._containerBottom);o._add(yi(this._container));var s=t.layerPointToContainerPoint(o),r=O(this.options.autoPanPadding),a=O(this.options.autoPanPaddingTopLeft||r),h=O(this.options.autoPanPaddingBottomRight||r),l=t.getSize(),u=0,c=0;s.x+n+h.x>l.x&&(u=s.x+n-l.x+h.x),s.x-u-a.x<0&&(u=s.x-a.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(u||c)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([u,c]))}},_getAnchor:function(){return O(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Gi.mergeOptions({closePopupOnClick:!0}),Gi.include({openPopup:function(t,i,e){return this._initOverlay(en,t,i,e).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),ze.include({bindPopup:function(t,i){return this._popup=this._initOverlay(en,this._popup,t,i),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof Ze||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){if(this._popup&&this._map){Di(t);var i=t.layer||t.target;this._popup._source!==i||i instanceof Ae?(this._popup._source=i,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng)}},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var nn=tn.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){tn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){tn.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=tn.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=si("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+s(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i,e,n=this._map,o=this._container,s=n.latLngToContainerPoint(n.getCenter()),r=n.layerPointToContainerPoint(t),a=this.options.direction,h=o.offsetWidth,l=o.offsetHeight,u=O(this.options.offset),c=this._getAnchor();"top"===a?(i=h/2,e=l):"bottom"===a?(i=h/2,e=0):"center"===a?(i=h/2,e=l/2):"right"===a?(i=0,e=l/2):"left"===a?(i=h,e=l/2):r.xthis.options.maxZoom||en&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new k(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1this.options.maxZoom||void 0!==this.options.minZoom&&o1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new k(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_e.max.x)||!i.wrapLat&&(t.ye.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return R(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new I(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new k(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(ri(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){ci(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=h,t.onmousemove=h,Bt.ielt9&&this.options.opacity<1&&mi(t,this.options.opacity)},_addTile:function(t,i){var e=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),n(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&T(n(this._tileReady,this,t,null,s)),vi(s,e),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,e){i&&this.fire("tileerror",{error:i,tile:e,coords:t});var o=this._tileCoordsToKey(t);(e=this._tiles[o])&&(e.loaded=+new Date,this._map._fadeAnimated?(mi(e.el,0),M(this._fadeFrame),this._fadeFrame=T(this._updateOpacity,this)):(e.active=!0,this._pruneTiles()),i||(ci(e.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:e.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Bt.ielt9||!this._map._fadeAnimated?T(this._pruneTiles,this):setTimeout(n(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new k(this._wrapX?a(t.x,this._wrapX):t.x,this._wrapY?a(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new A(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var rn=sn.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,i){this._url=t,(i=_(this,i)).detectRetina&&Bt.retina&&i.maxZoom>0?(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom=Math.min(i.maxZoom,i.minZoom+1)):(i.zoomOffset++,i.maxZoom=Math.max(i.minZoom,i.maxZoom-1)),i.minZoom=Math.max(0,i.minZoom)):i.zoomReverse?i.minZoom=Math.min(i.maxZoom,i.minZoom):i.maxZoom=Math.max(i.minZoom,i.maxZoom),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url===t&&void 0===i&&(i=!0),this._url=t,i||this.redraw(),this},createTile:function(t,i){var e=document.createElement("img");return Ci(e,"load",n(this._tileOnLoad,this,i,e)),Ci(e,"error",n(this._tileOnError,this,i,e)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),"string"==typeof this.options.referrerPolicy&&(e.referrerPolicy=this.options.referrerPolicy),e.alt="",e.src=this.getTileUrl(t),e},getTileUrl:function(t){var e={r:Bt.retina?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return m(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Bt.ielt9?setTimeout(n(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom;return this.options.zoomReverse&&(t=i-t),t+this.options.zoomOffset},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)if(this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=h,i.onerror=h,!i.complete)){i.src=v;var e=this._tiles[t].coords;ri(i),delete this._tiles[t],this.fire("tileabort",{tile:i,coords:e})}},_removeTile:function(t){var i=this._tiles[t];if(i)return i.el.setAttribute("src",v),sn.prototype._removeTile.call(this,t)},_tileReady:function(t,i,e){if(this._map&&(!e||e.getAttribute("src")!==v))return sn.prototype._tileReady.call(this,t,i,e)}});function an(t,i){return new rn(t,i)}var hn=rn.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=_(this,e)).detectRetina&&Bt.retina?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,rn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=B(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===Te?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=rn.prototype.getTileUrl.call(this,t);return a+d(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});rn.WMS=hn,an.wms=function(t,i){return new hn(t,i)};var ln=ze.extend({options:{padding:.1},initialize:function(t){_(this,t),s(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),ci(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=this._map.getSize().multiplyBy(.5+this.options.padding),o=this._map.project(this._center,i),s=n.multiplyBy(-e).add(o).subtract(this._map._getNewPixelOrigin(t,i));Bt.any3d?gi(this._container,s,e):vi(this._container,s)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new A(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),un=ln.extend({options:{tolerance:0},getEvents:function(){var t=ln.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){ln.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");Ci(t,"mousemove",this._onMouseMove,this),Ci(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Ci(t,"mouseout",this._handleMouseOut,this),t._leaflet_disable_events=!0,this._ctx=t.getContext("2d")},_destroyContainer:function(){M(this._redrawRequest),delete this._ctx,ri(this._container),Si(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){ln.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Bt.retina?2:1;vi(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Bt.retina&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){ln.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[s(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[s(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var i,e,n=t.options.dashArray.split(/[, ]+/),o=[];for(e=0;e')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),dn={_initContainer:function(){this._container=si("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(ln.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=_n("shape");ci(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=_n("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[s(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ri(i),t.removeInteractiveTarget(i),delete this._layers[s(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=_n("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=f(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=_n("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){hi(t._container)},_bringToBack:function(t){li(t._container)}},pn=Bt.vml?_n:X,mn=ln.extend({_initContainer:function(){this._container=pn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=pn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ri(this._container),Si(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!this._map._animatingZoom||!this._bounds){ln.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),vi(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=pn("path");t.options.className&&ci(i,t.options.className),t.options.interactive&&ci(i,"leaflet-interactive"),this._updateStyle(t),this._layers[s(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ri(t._path),t.removeInteractiveTarget(t._path),delete this._layers[s(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,J(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){hi(t._path)},_bringToBack:function(t){li(t._path)}});function fn(t){return Bt.svg||Bt.vml?new mn(t):null}Bt.vml&&mn.include(dn),Gi.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&cn(t)||fn(t)}});var gn=Ne.extend({initialize:function(t,i){Ne.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=R(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});mn.create=pn,mn.pointsToPath=J,De.geometryToLayer=je,De.coordsToLatLng=We,De.coordsToLatLngs=Fe,De.latLngToCoords=Ue,De.latLngsToCoords=Ve,De.getFeature=qe,De.asFeature=Ge,Gi.mergeOptions({boxZoom:!0});var vn=te.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){Ci(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Si(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ri(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),Yt(),wi(),this._startPoint=this._map.mouseEventToContainerPoint(t),Ci(document,{contextmenu:Di,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=si("div","leaflet-zoom-box",this._container),ci(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new A(this._point,this._startPoint),e=i.getSize();vi(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(ri(this._box),_i(this._container,"leaflet-crosshair")),Xt(),bi(),Si(document,{contextmenu:Di,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(n(this._resetState,this),0);var i=new I(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});Gi.addInitHook("addHandler","boxZoom",vn),Gi.mergeOptions({doubleClickZoom:!0});var yn=te.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Gi.addInitHook("addHandler","doubleClickZoom",yn),Gi.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var xn=te.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new ne(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}ci(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){_i(this._map._container,"leaflet-grab"),_i(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=R(this._map.options.maxBounds);this._offsetLimit=B(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.xi.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Gi.addInitHook("addHandler","scrollWheelZoom",bn);Gi.mergeOptions({tapHold:Bt.touchNative&&Bt.safari&&Bt.mobile,tapTolerance:15});var Pn=te.extend({addHooks:function(){Ci(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Si(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(clearTimeout(this._holdTimeout),1===t.touches.length){var i=t.touches[0];this._startPos=this._newPos=new k(i.clientX,i.clientY),this._holdTimeout=setTimeout(n(function(){this._cancel(),this._isTapValid()&&(Ci(document,"touchend",Ni),Ci(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",i))},this),600),Ci(document,"touchend touchcancel contextmenu",this._cancel,this),Ci(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function t(){Si(document,"touchend",Ni),Si(document,"touchend touchcancel",t)},_cancel:function(){clearTimeout(this._holdTimeout),Si(document,"touchend touchcancel contextmenu",this._cancel,this),Si(document,"touchmove",this._onMove,this)},_onMove:function(t){var i=t.touches[0];this._newPos=new k(i.clientX,i.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(t,i){var e=new MouseEvent(t,{bubbles:!0,cancelable:!0,view:window,screenX:i.screenX,screenY:i.screenY,clientX:i.clientX,clientY:i.clientY});e._simulated=!0,i.target.dispatchEvent(e)}});Gi.addInitHook("addHandler","tapHold",Pn),Gi.mergeOptions({touchZoom:Bt.touch,bounceAtZoomLimits:!0});var Ln=te.extend({addHooks:function(){ci(this._map._container,"leaflet-touch-zoom"),Ci(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){_i(this._map._container,"leaflet-touch-zoom"),Si(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),Ci(document,"touchmove",this._onTouchMove,this),Ci(document,"touchend touchcancel",this._onTouchEnd,this),Ni(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,e=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=e.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=e._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),M(this._animRequest);var a=n(i._move,i,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=T(a,this,!0),Ni(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,M(this._animRequest),Si(document,"touchmove",this._onTouchMove,this),Si(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Gi.addInitHook("addHandler","touchZoom",Ln),Gi.BoxZoom=vn,Gi.DoubleClickZoom=yn,Gi.Drag=xn,Gi.Keyboard=wn,Gi.ScrollWheelZoom=bn,Gi.TapHold=Pn,Gi.TouchZoom=Ln,t.Bounds=A,t.Browser=Bt,t.CRS=H,t.Canvas=un,t.Circle=Ie,t.CircleMarker=Be,t.Class=C,t.Control=Ki,t.DivIcon=on,t.DivOverlay=tn,t.DomEvent=Vi,t.DomUtil=zi,t.Draggable=ne,t.Evented=S,t.FeatureGroup=Ze,t.GeoJSON=De,t.GridLayer=sn,t.Handler=te,t.Icon=Se,t.ImageOverlay=Je,t.LatLng=N,t.LatLngBounds=I,t.Layer=ze,t.LayerGroup=Ce,t.LineUtil=xe,t.Map=Gi,t.Marker=Oe,t.Mixin=ie,t.Path=Ae,t.Point=k,t.PolyUtil=he,t.Polygon=Ne,t.Polyline=Re,t.Popup=en,t.PosAnimation=qi,t.Projection=Pe,t.Rectangle=gn,t.Renderer=ln,t.SVG=mn,t.SVGOverlay=Qe,t.TileLayer=rn,t.Tooltip=nn,t.Transformation=V,t.Util=z,t.VideoOverlay=$e,t.bind=n,t.bounds=B,t.canvas=cn,t.circle=function(t,i,e){return new Ie(t,i,e)},t.circleMarker=function(t,i){return new Be(t,i)},t.control=Yi,t.divIcon=function(t){return new on(t)},t.extend=i,t.featureGroup=function(t,i){return new Ze(t,i)},t.geoJSON=Ye,t.geoJson=Xe,t.gridLayer=function(t){return new sn(t)},t.icon=function(t){return new Se(t)},t.imageOverlay=function(t,i,e){return new Je(t,i,e)},t.latLng=D,t.latLngBounds=R,t.layerGroup=function(t,i){return new Ce(t,i)},t.map=function(t,i){return new Gi(t,i)},t.marker=function(t,i){return new Oe(t,i)},t.point=O,t.polygon=function(t,i){return new Ne(t,i)},t.polyline=function(t,i){return new Re(t,i)},t.popup=function(t,i){return new en(t,i)},t.rectangle=function(t,i){return new gn(t,i)},t.setOptions=_,t.stamp=s,t.svg=fn,t.svgOverlay=function(t,i,e){return new Qe(t,i,e)},t.tileLayer=an,t.tooltip=function(t,i){return new nn(t,i)},t.transformation=q,t.version="1.9.4",t.videoOverlay=function(t,i,e){return new $e(t,i,e)};var Tn=window.L;t.noConflict=function(){return window.L=Tn,this},window.L=t}(e.exports)),e.exports));export{n as L}; +import{g as t}from"./deckgl-DTsmDcfs.js";var i,e={exports:{}};const n=t((i||(i=1,function(t){function i(t){var i,e,n,o;for(e=1,n=arguments.length;e0?Math.floor(t):Math.ceil(t)};function O(t,i,e){return t instanceof k?t:f(t)?new k(t[0],t[1]):null==t?t:"object"==typeof t&&"x"in t&&"y"in t?new k(t.x,t.y):new k(t,i,e)}function A(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=B(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=B(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.xi.y&&n.y=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=R(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=R(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lati.lng&&n.lng1,Zt=function(){var t=!1;try{var i=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassiveEventSupport",h,i),window.removeEventListener("testPassiveEventSupport",h,i)}catch(e){}return t}(),St=!!document.createElement("canvas").getContext,kt=!(!document.createElementNS||!X("svg").createSVGRect),Et=!!kt&&(($=document.createElement("div")).innerHTML="","http://www.w3.org/2000/svg"===($.firstChild&&$.firstChild.namespaceURI)),Ot=!kt&&function(){try{var t=document.createElement("div");t.innerHTML='';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(e){return!1}}();function At(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var Bt={ie:tt,ielt9:it,edge:et,webkit:nt,android:ot,android23:st,androidStock:at,opera:ht,chrome:lt,gecko:ut,safari:ct,phantom:_t,opera12:dt,win:pt,ie3d:mt,webkit3d:ft,gecko3d:gt,any3d:vt,mobile:yt,mobileWebkit:xt,mobileWebkit3d:wt,msPointer:bt,pointer:Pt,touch:Tt,touchNative:Lt,mobileOpera:Mt,mobileGecko:zt,retina:Ct,passiveEvents:Zt,canvas:St,svg:kt,vml:Ot,inlineSvg:Et,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},It=Bt.msPointer?"MSPointerDown":"pointerdown",Rt=Bt.msPointer?"MSPointerMove":"pointermove",Nt=Bt.msPointer?"MSPointerUp":"pointerup",Dt=Bt.msPointer?"MSPointerCancel":"pointercancel",jt={touchstart:It,touchmove:Rt,touchend:Nt,touchcancel:Dt},Ht={touchstart:function(t,i){i.MSPOINTER_TYPE_TOUCH&&i.pointerType===i.MSPOINTER_TYPE_TOUCH&&Ni(i),Kt(t,i)},touchmove:Kt,touchend:Kt,touchcancel:Kt},Wt={},Ft=!1;function Ut(t,i,e){return"touchstart"===i&&(Ft||(document.addEventListener(It,Vt,!0),document.addEventListener(Rt,qt,!0),document.addEventListener(Nt,Gt,!0),document.addEventListener(Dt,Gt,!0),Ft=!0)),Ht[i]?(e=Ht[i].bind(this,e),t.addEventListener(jt[i],e,!1),e):h}function Vt(t){Wt[t.pointerId]=t}function qt(t){Wt[t.pointerId]&&(Wt[t.pointerId]=t)}function Gt(t){delete Wt[t.pointerId]}function Kt(t,i){if(i.pointerType!==(i.MSPOINTER_TYPE_MOUSE||"mouse")){for(var e in i.touches=[],Wt)i.touches.push(Wt[e]);i.changedTouches=[i],t(i)}}var Yt,Xt,Jt,$t,Qt,ti=fi(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ii=fi(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),ei="webkitTransition"===ii||"OTransition"===ii?ii+"End":"transitionend";function ni(t){return"string"==typeof t?document.getElementById(t):t}function oi(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function si(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function ri(t){var i=t.parentNode;i&&i.removeChild(t)}function ai(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function hi(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function li(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function ui(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=pi(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function ci(t,i){if(void 0!==t.classList)for(var e=c(i),n=0,o=e.length;n0?2*window.devicePixelRatio:1;function Fi(t){return Bt.edge?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/Wi:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function Ui(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(n){return!1}return e!==t}var Vi={__proto__:null,on:Ci,off:Si,stopPropagation:Bi,disableScrollPropagation:Ii,disableClickPropagation:Ri,preventDefault:Ni,stop:Di,getPropagationPath:ji,getMousePosition:Hi,getWheelDelta:Fi,isExternalTarget:Ui,addListener:Ci,removeListener:Si},qi=S.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=yi(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=T(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;ithis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,R(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},panInside:function(t,i){var e=O((i=i||{}).paddingTopLeft||i.padding||[0,0]),n=O(i.paddingBottomRight||i.padding||[0,0]),o=this.project(this.getCenter()),s=this.project(t),r=this.getPixelBounds(),a=B([r.min.add(e),r.max.subtract(n)]),h=a.getSize();if(!a.contains(s)){this._enforcingBounds=!0;var l=s.subtract(a.getCenter()),u=a.extend(s).getSize().subtract(h);o.x+=l.x<0?-u.x:u.x,o.y+=l.y<0?-u.y:u.y,this.panTo(this.unproject(o),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=e.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(n(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=n(this._handleGeolocationResponse,this),o=n(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,o,t):navigator.geolocation.getCurrentPosition(e,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){if(this._container._leaflet_id){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})}},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var i=new N(t.coords.latitude,t.coords.longitude),e=i.toBounds(2*t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)}},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(i){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ri(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(M(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)ri(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=si("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new I(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=R(t),e=O(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),l=B(this.project(a,n),this.project(r,n)).getSize(),u=Bt.any3d?this.options.zoomSnap:1,c=h.x/l.x,_=h.y/l.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),u&&(n=Math.round(n/(u/100))*(u/100),n=i?Math.ceil(n/u)*u:Math.floor(n/u)*u),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new k(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new A(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(D(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(O(t),i)},layerPointToLatLng:function(t){var i=O(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(D(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(D(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(R(t))},distance:function(t,i){return this.options.crs.distance(D(t),D(i))},containerPointToLayerPoint:function(t){return O(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return O(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(O(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(D(t)))},mouseEventToContainerPoint:function(t){return Hi(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=ni(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");Ci(i,"scroll",this._onScroll,this),this._containerId=s(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Bt.any3d,ci(t,"leaflet-container"+(Bt.touch?" leaflet-touch":"")+(Bt.retina?" leaflet-retina":"")+(Bt.ielt9?" leaflet-oldie":"")+(Bt.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=oi(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&"sticky"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),vi(this._mapPane,new k(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(ci(t.markerPane,"leaflet-zoom-hide"),ci(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i,e){vi(this._mapPane,new k(0,0));var n=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var o=this._zoom!==i;this._moveStart(o,e)._move(t,i)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e,n){void 0===i&&(i=this._zoom);var o=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?e&&e.pinch&&this.fire("zoom",e):((o||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return M(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){vi(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[s(this._container)]=this;var i=t?Si:Ci;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),Bt.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){M(this._resizeRequest),this._resizeRequest=T(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,n=[],o="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[s(r)])&&("click"===i||"preclick"===i)&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(o&&!Ui(r,t))break;if(n.push(e),o)break}if(r===this._container)break;r=r.parentNode}return n.length||a||o||!this.listens(i,!0)||(n=[this]),n},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var i=t.target||t.srcElement;if(!(!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i))){var e=t.type;"mousedown"===e&&Pi(i),this._fireDOMEvent(t,e)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}var s=this._findEventTargets(t,e);if(n){for(var r=[],a=0;a0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Bt.any3d?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){_i(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e)||(this.panBy(e,i),0))},_createAnimProxy:function(){var t=this._proxy=si("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=ti,e=this._proxy.style[i];gi(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ri(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var t=this.getCenter(),i=this.getZoom();gi(this._proxy,this.project(t,i),this.getZoomScale(i,1))},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o)||(T(function(){this._moveStart(!0,e.noMoveStart||!1)._animateZoom(t,i,!0)},this),0))},_animateZoom:function(t,i,e,o){this._mapPane&&(e&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,ci(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(n(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&_i(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});var Ki=C.extend({options:{position:"topright"},initialize:function(t){_(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return ci(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(ri(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),Yi=function(t){return new Ki(t)};Gi.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},i="leaflet-",e=this._controlContainer=si("div",i+"control-container",this._container);function n(n,o){var s=i+n+" "+i+o;t[n+o]=si("div",s,e)}n("top","left"),n("top","right"),n("bottom","left"),n("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ri(this._controlCorners[t]);ri(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Xi=Ki.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(s(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),n=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=n):i=this._createRadioElement("leaflet-base-layers_"+s(this),n),this._layerControlInputs.push(i),i.layerId=s(t.layer),Ci(i,"click",this._onInputClick,this);var o=document.createElement("span");o.innerHTML=" "+t.name;var r=document.createElement("span");return e.appendChild(r),r.appendChild(i),r.appendChild(o),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){if(!this._preventClick){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&ni.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section;this._preventClick=!0,Ci(t,"click",Ni),this.expand();var i=this;setTimeout(function(){Si(t,"click",Ni),i._preventClick=!1})}}),Ji=Ki.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=si("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=si("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),Ri(s),Ci(s,"click",Di),Ci(s,"click",o,this),Ci(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";_i(this._zoomInButton,i),_i(this._zoomOutButton,i),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||t._zoom===t.getMinZoom())&&(ci(this._zoomOutButton,i),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||t._zoom===t.getMaxZoom())&&(ci(this._zoomInButton,i),this._zoomInButton.setAttribute("aria-disabled","true"))}});Gi.mergeOptions({zoomControl:!0}),Gi.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ji,this.addControl(this.zoomControl))});var $i=Ki.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i="leaflet-control-scale",e=si("div",i),n=this.options;return this._addScales(n,i+"-line",e),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),e},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=si("div",i,e)),t.imperial&&(this._iScale=si("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return i*(e>=10?10:e>=5?5:e>=3?3:e>=2?2:1)}}),Qi=Ki.extend({options:{position:"bottomright",prefix:''+(Bt.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){_(this,t),this._attributions={}},onAdd:function(t){for(var i in t.attributionControl=this,this._container=si("div","leaflet-control-attribution"),Ri(this._container),t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(' ')}}});Gi.mergeOptions({attributionControl:!0}),Gi.addInitHook(function(){this.options.attributionControl&&(new Qi).addTo(this)});Ki.Layers=Xi,Ki.Zoom=Ji,Ki.Scale=$i,Ki.Attribution=Qi,Yi.layers=function(t,i,e){return new Xi(t,i,e)},Yi.zoom=function(t){return new Ji(t)},Yi.scale=function(t){return new $i(t)},Yi.attribution=function(t){return new Qi(t)};var te=C.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});te.addTo=function(t,i){return t.addHandler(i,this),this};var ie={Events:Z},ee=Bt.touch?"touchstart mousedown":"mousedown",ne=S.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){_(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(Ci(this._dragStartTarget,ee,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(ne._dragging===this&&this.finishDrag(!0),Si(this._dragStartTarget,ee,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(this._enabled&&(this._moved=!1,!ui(this._element,"leaflet-zoom-anim")))if(t.touches&&1!==t.touches.length)ne._dragging===this&&this.finishDrag();else if(!(ne._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(ne._dragging=this,this._preventOutline&&Pi(this._element),wi(),Yt(),this._moving))){this.fire("down");var i=t.touches?t.touches[0]:t,e=Ti(this._element);this._startPoint=new k(i.clientX,i.clientY),this._startPos=yi(this._element),this._parentScale=Mi(e);var n="mousedown"===t.type;Ci(document,n?"mousemove":"touchmove",this._onMove,this),Ci(document,n?"mouseup":"touchend touchcancel",this._onUp,this)}},_onMove:function(t){if(this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new k(i.clientX,i.clientY)._subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)i&&(e.push(t[n]),o=n);return oh&&(s=r,h=a);h>e&&(i[s]=1,ce(t,i,e,n,s),ce(t,i,e,s,o))}function _e(t,i,e,n,o){var s,r,a,h=n?ae:pe(t,e),l=pe(i,e);for(ae=l;;){if(!(h|l))return[t,i];if(h&l)return!1;a=pe(r=de(t,i,s=h||l,e,o),e),s===h?(t=r,h=a):(i=r,l=a)}}function de(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,l=n.min,u=n.max;return 8&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):4&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):2&e?(s=u.x,r=t.y+h*(u.x-t.x)/a):1&e&&(s=l.x,r=t.y+h*(l.x-t.x)/a),new k(s,r,o)}function pe(t,i){var e=0;return t.xi.max.x&&(e|=2),t.yi.max.y&&(e|=8),e}function me(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function fe(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,l=a*a+h*h;return l>0&&((o=((t.x-s)*a+(t.y-r)*h)/l)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new k(s,r)}function ge(t){return!f(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function ve(t){return ge(t)}function ye(t,i){var e,n,o,s,r,a,h,l;if(!t||0===t.length)throw new Error("latlngs not passed");ge(t)||(t=t[0]);var u=D([0,0]),c=R(t);c.getNorthWest().distanceTo(c.getSouthWest())*c.getNorthEast().distanceTo(c.getNorthWest())<1700&&(u=re(t));var _=t.length,d=[];for(e=0;e<_;e++){var p=D(t[e]);d.push(i.project(D([p.lat-u.lat,p.lng-u.lng])))}for(e=0,n=0;e<_-1;e++)n+=d[e].distanceTo(d[e+1])/2;if(0===n)l=d[0];else for(e=0,s=0;e<_-1;e++)if(r=d[e],a=d[e+1],(s+=o=r.distanceTo(a))>n){h=(s-n)/o,l=[a.x-h*(a.x-r.x),a.y-h*(a.y-r.y)];break}var m=i.unproject(O(l));return D([m.lat+u.lat,m.lng+u.lng])}var xe={__proto__:null,simplify:le,pointToSegmentDistance:ue,closestPointOnSegment:function(t,i,e){return fe(t,i,e)},clipSegment:_e,_getEdgeIntersection:de,_getBitCode:pe,_sqClosestPointOnSegment:fe,isFlat:ge,_flat:ve,polylineCenter:ye},we={project:function(t){return new k(t.lng,t.lat)},unproject:function(t){return new N(t.y,t.x)},bounds:new A([-180,-90],[180,90])},be={R:6378137,R_MINOR:6356752.314245179,bounds:new A([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new k(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,l=.1;h<15&&Math.abs(l)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=l=Math.PI/2-2*Math.atan(r*i)-a;return new N(a*e,t.x*e/n)}},Pe={__proto__:null,LonLat:we,Mercator:be,SphericalMercator:U},Le=i({},W,{code:"EPSG:3395",projection:be,transformation:function(){var t=.5/(Math.PI*be.R);return q(t,.5,-t,.5)}()}),Te=i({},W,{code:"EPSG:4326",projection:we,transformation:q(1/180,1,-1/180,.5)}),Me=i({},H,{projection:we,transformation:q(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});H.Earth=W,H.EPSG3395=Le,H.EPSG3857=K,H.EPSG900913=Y,H.EPSG4326=Te,H.Simple=Me;var ze=S.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[s(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[s(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.fire("add"),i.fire("layeradd",{layer:this})}}});Gi.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=s(t);return this._layers[i]||(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var i=s(t);return this._layers[i]?(this._loaded&&t.onRemove(this),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return s(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?f(t)?t:[t]:[]).length;ithis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()=2&&i[0]instanceof N&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){Re.prototype._setLatLngs.call(this,t),ge(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return ge(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new k(i,i);if(t=new A(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;ot.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(l=!l);return l||Re.prototype._containsPoint.call(this,t,!0)}});var De=Ze.extend({initialize:function(t,i){_(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=f(t)?t:t.features;if(o){for(i=0,e=o.length;i0&&o.push(o[0].slice()),o}function qe(t,e){return t.feature?i({},t.feature,{geometry:e}):Ge(e)}function Ge(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}var Ke={toGeoJSON:function(t){return qe(this,{type:"Point",coordinates:Ue(this.getLatLng(),t)})}};function Ye(t,i){return new De(t,i)}Oe.include(Ke),Ie.include(Ke),Be.include(Ke),Re.include({toGeoJSON:function(t){var i=!ge(this._latlngs);return qe(this,{type:(i?"Multi":"")+"LineString",coordinates:Ve(this._latlngs,i?1:0,!1,t)})}}),Ne.include({toGeoJSON:function(t){var i=!ge(this._latlngs),e=i&&!ge(this._latlngs[0]),n=Ve(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),qe(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ce.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),qe(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===i)return this.toMultiPoint(t);var e="GeometryCollection"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Ge(o);"FeatureCollection"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?qe(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});var Xe=Ye,Je=ze.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=R(i),_(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(ci(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ri(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&hi(this._image),this},bringToBack:function(){return this._map&&li(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=R(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:si("img");ci(i,"leaflet-image-layer"),this._zoomAnimated&&ci(i,"leaflet-zoom-animated"),this.options.className&&ci(i,this.options.className),i.onselectstart=h,i.onmousemove=h,i.onload=n(this.fire,this,"load"),i.onerror=n(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;gi(this._image,e,i)},_reset:function(){var t=this._image,i=new A(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();vi(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){mi(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)},getCenter:function(){return this._bounds.getCenter()}}),$e=Je.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInline:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:si("video");if(ci(i,"leaflet-image-layer"),this._zoomAnimated&&ci(i,"leaflet-zoom-animated"),this.options.className&&ci(i,this.options.className),i.onselectstart=h,i.onmousemove=h,i.onloadeddata=n(this.fire,this,"load"),t){for(var e=i.getElementsByTagName("source"),o=[],s=0;s0?o:[i.src]}else{f(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(i.style,"objectFit")&&(i.style.objectFit="fill"),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop,i.muted=!!this.options.muted,i.playsInline=!!this.options.playsInline;for(var r=0;ro?(i.height=o+"px",ci(t,s)):_i(t,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();vi(this._container,i.add(e))},_adjustPan:function(){if(this.options.autoPan)if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning)this._autopanning=!1;else{var t=this._map,i=parseInt(oi(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new k(this._containerLeft,-e-this._containerBottom);o._add(yi(this._container));var s=t.layerPointToContainerPoint(o),r=O(this.options.autoPanPadding),a=O(this.options.autoPanPaddingTopLeft||r),h=O(this.options.autoPanPaddingBottomRight||r),l=t.getSize(),u=0,c=0;s.x+n+h.x>l.x&&(u=s.x+n-l.x+h.x),s.x-u-a.x<0&&(u=s.x-a.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(u||c)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([u,c]))}},_getAnchor:function(){return O(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Gi.mergeOptions({closePopupOnClick:!0}),Gi.include({openPopup:function(t,i,e){return this._initOverlay(en,t,i,e).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),ze.include({bindPopup:function(t,i){return this._popup=this._initOverlay(en,this._popup,t,i),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof Ze||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){if(this._popup&&this._map){Di(t);var i=t.layer||t.target;this._popup._source!==i||i instanceof Ae?(this._popup._source=i,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng)}},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var nn=tn.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){tn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){tn.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=tn.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=si("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+s(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i,e,n=this._map,o=this._container,s=n.latLngToContainerPoint(n.getCenter()),r=n.layerPointToContainerPoint(t),a=this.options.direction,h=o.offsetWidth,l=o.offsetHeight,u=O(this.options.offset),c=this._getAnchor();"top"===a?(i=h/2,e=l):"bottom"===a?(i=h/2,e=0):"center"===a?(i=h/2,e=l/2):"right"===a?(i=0,e=l/2):"left"===a?(i=h,e=l/2):r.xthis.options.maxZoom||en&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new k(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1this.options.maxZoom||void 0!==this.options.minZoom&&o1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new k(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_e.max.x)||!i.wrapLat&&(t.ye.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return R(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new I(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new k(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(ri(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){ci(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=h,t.onmousemove=h,Bt.ielt9&&this.options.opacity<1&&mi(t,this.options.opacity)},_addTile:function(t,i){var e=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),n(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&T(n(this._tileReady,this,t,null,s)),vi(s,e),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,e){i&&this.fire("tileerror",{error:i,tile:e,coords:t});var o=this._tileCoordsToKey(t);(e=this._tiles[o])&&(e.loaded=+new Date,this._map._fadeAnimated?(mi(e.el,0),M(this._fadeFrame),this._fadeFrame=T(this._updateOpacity,this)):(e.active=!0,this._pruneTiles()),i||(ci(e.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:e.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Bt.ielt9||!this._map._fadeAnimated?T(this._pruneTiles,this):setTimeout(n(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new k(this._wrapX?a(t.x,this._wrapX):t.x,this._wrapY?a(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new A(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var rn=sn.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,i){this._url=t,(i=_(this,i)).detectRetina&&Bt.retina&&i.maxZoom>0?(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom=Math.min(i.maxZoom,i.minZoom+1)):(i.zoomOffset++,i.maxZoom=Math.max(i.minZoom,i.maxZoom-1)),i.minZoom=Math.max(0,i.minZoom)):i.zoomReverse?i.minZoom=Math.min(i.maxZoom,i.minZoom):i.maxZoom=Math.max(i.minZoom,i.maxZoom),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url===t&&void 0===i&&(i=!0),this._url=t,i||this.redraw(),this},createTile:function(t,i){var e=document.createElement("img");return Ci(e,"load",n(this._tileOnLoad,this,i,e)),Ci(e,"error",n(this._tileOnError,this,i,e)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),"string"==typeof this.options.referrerPolicy&&(e.referrerPolicy=this.options.referrerPolicy),e.alt="",e.src=this.getTileUrl(t),e},getTileUrl:function(t){var e={r:Bt.retina?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return m(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Bt.ielt9?setTimeout(n(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom;return this.options.zoomReverse&&(t=i-t),t+this.options.zoomOffset},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)if(this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=h,i.onerror=h,!i.complete)){i.src=v;var e=this._tiles[t].coords;ri(i),delete this._tiles[t],this.fire("tileabort",{tile:i,coords:e})}},_removeTile:function(t){var i=this._tiles[t];if(i)return i.el.setAttribute("src",v),sn.prototype._removeTile.call(this,t)},_tileReady:function(t,i,e){if(this._map&&(!e||e.getAttribute("src")!==v))return sn.prototype._tileReady.call(this,t,i,e)}});function an(t,i){return new rn(t,i)}var hn=rn.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=_(this,e)).detectRetina&&Bt.retina?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,rn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=B(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===Te?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=rn.prototype.getTileUrl.call(this,t);return a+d(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});rn.WMS=hn,an.wms=function(t,i){return new hn(t,i)};var ln=ze.extend({options:{padding:.1},initialize:function(t){_(this,t),s(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),ci(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=this._map.getSize().multiplyBy(.5+this.options.padding),o=this._map.project(this._center,i),s=n.multiplyBy(-e).add(o).subtract(this._map._getNewPixelOrigin(t,i));Bt.any3d?gi(this._container,s,e):vi(this._container,s)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new A(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),un=ln.extend({options:{tolerance:0},getEvents:function(){var t=ln.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){ln.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");Ci(t,"mousemove",this._onMouseMove,this),Ci(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Ci(t,"mouseout",this._handleMouseOut,this),t._leaflet_disable_events=!0,this._ctx=t.getContext("2d")},_destroyContainer:function(){M(this._redrawRequest),delete this._ctx,ri(this._container),Si(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){ln.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Bt.retina?2:1;vi(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Bt.retina&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){ln.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[s(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[s(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var i,e,n=t.options.dashArray.split(/[, ]+/),o=[];for(e=0;e')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),dn={_initContainer:function(){this._container=si("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(ln.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=_n("shape");ci(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=_n("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[s(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ri(i),t.removeInteractiveTarget(i),delete this._layers[s(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=_n("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=f(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=_n("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){hi(t._container)},_bringToBack:function(t){li(t._container)}},pn=Bt.vml?_n:X,mn=ln.extend({_initContainer:function(){this._container=pn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=pn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ri(this._container),Si(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!this._map._animatingZoom||!this._bounds){ln.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),vi(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=pn("path");t.options.className&&ci(i,t.options.className),t.options.interactive&&ci(i,"leaflet-interactive"),this._updateStyle(t),this._layers[s(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ri(t._path),t.removeInteractiveTarget(t._path),delete this._layers[s(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,J(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){hi(t._path)},_bringToBack:function(t){li(t._path)}});function fn(t){return Bt.svg||Bt.vml?new mn(t):null}Bt.vml&&mn.include(dn),Gi.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&cn(t)||fn(t)}});var gn=Ne.extend({initialize:function(t,i){Ne.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=R(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});mn.create=pn,mn.pointsToPath=J,De.geometryToLayer=je,De.coordsToLatLng=We,De.coordsToLatLngs=Fe,De.latLngToCoords=Ue,De.latLngsToCoords=Ve,De.getFeature=qe,De.asFeature=Ge,Gi.mergeOptions({boxZoom:!0});var vn=te.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){Ci(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Si(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ri(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),Yt(),wi(),this._startPoint=this._map.mouseEventToContainerPoint(t),Ci(document,{contextmenu:Di,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=si("div","leaflet-zoom-box",this._container),ci(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new A(this._point,this._startPoint),e=i.getSize();vi(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(ri(this._box),_i(this._container,"leaflet-crosshair")),Xt(),bi(),Si(document,{contextmenu:Di,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(n(this._resetState,this),0);var i=new I(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});Gi.addInitHook("addHandler","boxZoom",vn),Gi.mergeOptions({doubleClickZoom:!0});var yn=te.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Gi.addInitHook("addHandler","doubleClickZoom",yn),Gi.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var xn=te.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new ne(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}ci(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){_i(this._map._container,"leaflet-grab"),_i(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=R(this._map.options.maxBounds);this._offsetLimit=B(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.xi.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Gi.addInitHook("addHandler","scrollWheelZoom",bn);Gi.mergeOptions({tapHold:Bt.touchNative&&Bt.safari&&Bt.mobile,tapTolerance:15});var Pn=te.extend({addHooks:function(){Ci(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Si(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(clearTimeout(this._holdTimeout),1===t.touches.length){var i=t.touches[0];this._startPos=this._newPos=new k(i.clientX,i.clientY),this._holdTimeout=setTimeout(n(function(){this._cancel(),this._isTapValid()&&(Ci(document,"touchend",Ni),Ci(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",i))},this),600),Ci(document,"touchend touchcancel contextmenu",this._cancel,this),Ci(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function t(){Si(document,"touchend",Ni),Si(document,"touchend touchcancel",t)},_cancel:function(){clearTimeout(this._holdTimeout),Si(document,"touchend touchcancel contextmenu",this._cancel,this),Si(document,"touchmove",this._onMove,this)},_onMove:function(t){var i=t.touches[0];this._newPos=new k(i.clientX,i.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(t,i){var e=new MouseEvent(t,{bubbles:!0,cancelable:!0,view:window,screenX:i.screenX,screenY:i.screenY,clientX:i.clientX,clientY:i.clientY});e._simulated=!0,i.target.dispatchEvent(e)}});Gi.addInitHook("addHandler","tapHold",Pn),Gi.mergeOptions({touchZoom:Bt.touch,bounceAtZoomLimits:!0});var Ln=te.extend({addHooks:function(){ci(this._map._container,"leaflet-touch-zoom"),Ci(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){_i(this._map._container,"leaflet-touch-zoom"),Si(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),Ci(document,"touchmove",this._onTouchMove,this),Ci(document,"touchend touchcancel",this._onTouchEnd,this),Ni(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,e=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=e.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=e._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),M(this._animRequest);var a=n(i._move,i,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=T(a,this,!0),Ni(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,M(this._animRequest),Si(document,"touchmove",this._onTouchMove,this),Si(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Gi.addInitHook("addHandler","touchZoom",Ln),Gi.BoxZoom=vn,Gi.DoubleClickZoom=yn,Gi.Drag=xn,Gi.Keyboard=wn,Gi.ScrollWheelZoom=bn,Gi.TapHold=Pn,Gi.TouchZoom=Ln,t.Bounds=A,t.Browser=Bt,t.CRS=H,t.Canvas=un,t.Circle=Ie,t.CircleMarker=Be,t.Class=C,t.Control=Ki,t.DivIcon=on,t.DivOverlay=tn,t.DomEvent=Vi,t.DomUtil=zi,t.Draggable=ne,t.Evented=S,t.FeatureGroup=Ze,t.GeoJSON=De,t.GridLayer=sn,t.Handler=te,t.Icon=Se,t.ImageOverlay=Je,t.LatLng=N,t.LatLngBounds=I,t.Layer=ze,t.LayerGroup=Ce,t.LineUtil=xe,t.Map=Gi,t.Marker=Oe,t.Mixin=ie,t.Path=Ae,t.Point=k,t.PolyUtil=he,t.Polygon=Ne,t.Polyline=Re,t.Popup=en,t.PosAnimation=qi,t.Projection=Pe,t.Rectangle=gn,t.Renderer=ln,t.SVG=mn,t.SVGOverlay=Qe,t.TileLayer=rn,t.Tooltip=nn,t.Transformation=V,t.Util=z,t.VideoOverlay=$e,t.bind=n,t.bounds=B,t.canvas=cn,t.circle=function(t,i,e){return new Ie(t,i,e)},t.circleMarker=function(t,i){return new Be(t,i)},t.control=Yi,t.divIcon=function(t){return new on(t)},t.extend=i,t.featureGroup=function(t,i){return new Ze(t,i)},t.geoJSON=Ye,t.geoJson=Xe,t.gridLayer=function(t){return new sn(t)},t.icon=function(t){return new Se(t)},t.imageOverlay=function(t,i,e){return new Je(t,i,e)},t.latLng=D,t.latLngBounds=R,t.layerGroup=function(t,i){return new Ce(t,i)},t.map=function(t,i){return new Gi(t,i)},t.marker=function(t,i){return new Oe(t,i)},t.point=O,t.polygon=function(t,i){return new Ne(t,i)},t.polyline=function(t,i){return new Re(t,i)},t.popup=function(t,i){return new en(t,i)},t.rectangle=function(t,i){return new gn(t,i)},t.setOptions=_,t.stamp=s,t.svg=fn,t.svgOverlay=function(t,i,e){return new Qe(t,i,e)},t.tileLayer=an,t.tooltip=function(t,i){return new nn(t,i)},t.transformation=q,t.version="1.9.4",t.videoOverlay=function(t,i,e){return new $e(t,i,e)};var Tn=window.L;t.noConflict=function(){return window.L=Tn,this},window.L=t}(e.exports)),e.exports));export{n as L}; diff --git a/frontend/dist/assets/maplibre-gl-WBl_4I3M.js b/frontend/dist/assets/maplibre-gl-Bk5DsYkB.js similarity index 99% rename from frontend/dist/assets/maplibre-gl-WBl_4I3M.js rename to frontend/dist/assets/maplibre-gl-Bk5DsYkB.js index 9e79951f..2078ca0c 100644 --- a/frontend/dist/assets/maplibre-gl-WBl_4I3M.js +++ b/frontend/dist/assets/maplibre-gl-Bk5DsYkB.js @@ -1 +1 @@ -var e=Object.defineProperty,t=(t,i,r)=>((t,i,r)=>i in t?e(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r)(t,"symbol"!=typeof i?i+"":i,r);import{g as i}from"./deckgl-MTXp-Y3t.js";function r(e,t){for(var i=0;ir[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var n,s={exports:{}},o=(n||(n=1,s.exports=function(){var e={},i={};function r(t,r,n){if(i[t]=n,"index"===t){var s="var sharedModule = {}; ("+i.shared+")(sharedModule); ("+i.worker+")(sharedModule);",o={};return i.shared(o),i.index(e,o),"undefined"!=typeof window&&e.setWorkerUrl(window.URL.createObjectURL(new Blob([s],{type:"text/javascript"}))),e}}return r("shared",0,function(e){function i(e,t,i,r){return new(i||(i=Promise))(function(n,s){function o(e){try{l(r.next(e))}catch(t){s(t)}}function a(e){try{l(r.throw(e))}catch(t){s(t)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(o,a)}l((r=r.apply(e,t||[])).next())})}function r(e,t){this.x=e,this.y=t}function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var s,o;"function"==typeof SuppressedError&&SuppressedError,r.prototype={clone(){return new r(this.x,this.y)},add(e){return this.clone()._add(e)},sub(e){return this.clone()._sub(e)},multByPoint(e){return this.clone()._multByPoint(e)},divByPoint(e){return this.clone()._divByPoint(e)},mult(e){return this.clone()._mult(e)},div(e){return this.clone()._div(e)},rotate(e){return this.clone()._rotate(e)},rotateAround(e,t){return this.clone()._rotateAround(e,t)},matMult(e){return this.clone()._matMult(e)},unit(){return this.clone()._unit()},perp(){return this.clone()._perp()},round(){return this.clone()._round()},mag(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals(e){return this.x===e.x&&this.y===e.y},dist(e){return Math.sqrt(this.distSqr(e))},distSqr(e){const t=e.x-this.x,i=e.y-this.y;return t*t+i*i},angle(){return Math.atan2(this.y,this.x)},angleTo(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith(e){return this.angleWithSep(e.x,e.y)},angleWithSep(e,t){return Math.atan2(this.x*t-this.y*e,this.x*e+this.y*t)},_matMult(e){const t=e[2]*this.x+e[3]*this.y;return this.x=e[0]*this.x+e[1]*this.y,this.y=t,this},_add(e){return this.x+=e.x,this.y+=e.y,this},_sub(e){return this.x-=e.x,this.y-=e.y,this},_mult(e){return this.x*=e,this.y*=e,this},_div(e){return this.x/=e,this.y/=e,this},_multByPoint(e){return this.x*=e.x,this.y*=e.y,this},_divByPoint(e){return this.x/=e.x,this.y/=e.y,this},_unit(){return this._div(this.mag()),this},_perp(){const e=this.y;return this.y=this.x,this.x=-e,this},_rotate(e){const t=Math.cos(e),i=Math.sin(e),r=i*this.x+t*this.y;return this.x=t*this.x-i*this.y,this.y=r,this},_rotateAround(e,t){const i=Math.cos(e),r=Math.sin(e),n=t.y+r*(this.x-t.x)+i*(this.y-t.y);return this.x=t.x+i*(this.x-t.x)-r*(this.y-t.y),this.y=n,this},_round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},constructor:r},r.convert=function(e){if(e instanceof r)return e;if(Array.isArray(e))return new r(+e[0],+e[1]);if(void 0!==e.x&&void 0!==e.y)return new r(+e.x,+e.y);throw new Error("Expected [x, y] or {x, y} point format")};var a=function(){if(o)return s;function e(e,t,i,r){this.cx=3*e,this.bx=3*(i-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*t,this.by=3*(r-t)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=t,this.p2x=i,this.p2y=r}return o=1,s=e,e.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,t){if(void 0===t&&(t=1e-6),e<0)return 0;if(e>1)return 1;for(var i=e,r=0;r<8;r++){var n=this.sampleCurveX(i)-e;if(Math.abs(n)n?o=i:a=i,i=.5*(a-o)+o;return i},solve:function(e,t){return this.sampleCurveY(this.solveCurveX(e,t))}},s}(),l=n(a);let c,h;function u(){return null==c&&(c="undefined"!=typeof OffscreenCanvas&&new OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof createImageBitmap),c}function d(){if(null==h&&(h=!1,u())){const e=5,t=new OffscreenCanvas(e,e).getContext("2d",{willReadFrequently:!0});if(t){for(let r=0;r4&&void 0!==arguments[4]?arguments[4]:"zyx",s=Math.PI/360;t*=s,r*=s,i*=s;var o=Math.sin(t),a=Math.cos(t),l=Math.sin(i),c=Math.cos(i),h=Math.sin(r),u=Math.cos(r);switch(n){case"xyz":e[0]=o*c*u+a*l*h,e[1]=a*l*u-o*c*h,e[2]=a*c*h+o*l*u,e[3]=a*c*u-o*l*h;break;case"xzy":e[0]=o*c*u-a*l*h,e[1]=a*l*u-o*c*h,e[2]=a*c*h+o*l*u,e[3]=a*c*u+o*l*h;break;case"yxz":e[0]=o*c*u+a*l*h,e[1]=a*l*u-o*c*h,e[2]=a*c*h-o*l*u,e[3]=a*c*u+o*l*h;break;case"yzx":e[0]=o*c*u+a*l*h,e[1]=a*l*u+o*c*h,e[2]=a*c*h-o*l*u,e[3]=a*c*u-o*l*h;break;case"zxy":e[0]=o*c*u-a*l*h,e[1]=a*l*u+o*c*h,e[2]=a*c*h+o*l*u,e[3]=a*c*u-o*l*h;break;case"zyx":e[0]=o*c*u-a*l*h,e[1]=a*l*u+o*c*h,e[2]=a*c*h-o*l*u,e[3]=a*c*u+o*l*h;break;default:throw new Error("Unknown angle order "+n)}return e}function E(){var e=new f(2);return f!=Float32Array&&(e[0]=0,e[1]=0),e}function C(e,t){var i=new f(2);return i[0]=e,i[1]=t,i}g(),T=new f(4),f!=Float32Array&&(T[0]=0,T[1]=0,T[2]=0,T[3]=0),g(),x(1,0,0),x(0,1,0),I(),I(),m(),E();const A=8192;function D(e,t,i){return t*(A/(e.tileSize*Math.pow(2,i-e.tileID.overscaledZ)))}function z(e,t){return(e%t+t)%t}function k(e,t,i){return e*(1-i)+t*i}function R(e){if(e<=0)return 0;if(e>=1)return 1;const t=e*e,i=t*e;return 4*(e<.5?i:3*(e-t)+i-.75)}function L(e,t,i,r){const n=new l(e,t,i,r);return e=>n.solve(e)}const F=L(.25,.1,.25,1);function B(e,t,i){return Math.min(i,Math.max(t,e))}function O(e,t,i){const r=i-t,n=((e-t)%r+r)%r+t;return n===t?i:n}function V(e,...t){for(const i of t)for(const t in i)e[t]=i[t];return e}let j=1;function N(e,t,i){const r={};for(const n in e)r[n]=t.call(this,e[n],n,e);return r}function U(e,t,i){const r={};for(const n in e)t.call(this,e[n],n,e)&&(r[n]=e[n]);return r}function G(e){return Array.isArray(e)?e.map(G):"object"==typeof e&&e?N(e,G):e}const q={};function Z(e){q[e]||(q[e]=!0)}function $(e,t,i){return(i.y-e.y)*(t.x-e.x)>(t.y-e.y)*(i.x-e.x)}function W(e){return"undefined"!=typeof WorkerGlobalScope&&void 0!==e&&e instanceof WorkerGlobalScope}let H=null;function X(e){return"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap}const Y="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function K(e,t,r,n,s){return i(this,void 0,void 0,function*(){if("undefined"==typeof VideoFrame)throw new Error("VideoFrame not supported");const i=new VideoFrame(e,{timestamp:0});try{const o=null==i?void 0:i.format;if(!o||!o.startsWith("BGR")&&!o.startsWith("RGB"))throw new Error(`Unrecognized format ${o}`);const a=o.startsWith("BGR"),l=new Uint8ClampedArray(n*s*4);if(yield i.copyTo(l,function(e,t,i,r,n){const s=4*Math.max(-t,0),o=(Math.max(0,i)-i)*r*4+s,a=4*r,l=Math.max(0,t),c=Math.max(0,i);return{rect:{x:l,y:c,width:Math.min(e.width,t+r)-l,height:Math.min(e.height,i+n)-c},layout:[{offset:o,stride:a}]}}(e,t,r,n,s)),a)for(let e=0;e{e.removeEventListener(t,i,r)}}}function te(e){return e*Math.PI/180}function ie(e){return e/Math.PI*180}const re={touchstart:!0,touchmove:!0,touchmoveWindow:!0,touchend:!0,touchcancel:!0},ne={dblclick:!0,click:!0,mouseover:!0,mouseout:!0,mousedown:!0,mousemove:!0,mousemoveWindow:!0,mouseup:!0,mouseupWindow:!0,contextmenu:!0,wheel:!0},se="AbortError";class oe extends Error{constructor(e=se){super(e instanceof Error?e.message:e),this.name=se,e instanceof Error&&e.stack&&(this.stack=e.stack)}}function ae(e){return e.name===se}const le={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};function ce(e){return le.REGISTERED_PROTOCOLS[e.substring(0,e.indexOf("://"))]}const he="global-dispatcher";class ue extends Error{constructor(e,t,i,r){super(`AJAXError: ${t} (${e}): ${i}`),this.status=e,this.statusText=t,this.url=i,this.body=r}}const de=()=>W(self)?self.worker&&self.worker.referrer:("blob:"===window.location.protocol?window.parent:window).location.href,pe=function(e,t){if(/:\/\//.test(e.url)&&!/^https?:|^file:/.test(e.url)){const i=ce(e.url);if(i)return i(e,t);if(W(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:e,targetMapId:he},t)}if(!(/^file:/.test(r=e.url)||/^file:/.test(de())&&!/^\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(e,t){return i(this,void 0,void 0,function*(){const i=new Request(e.url,{method:e.method||"GET",body:e.body,credentials:e.credentials,headers:e.headers,cache:e.cache,referrer:de(),signal:t.signal});let r,n;"json"!==e.type||i.headers.has("Accept")||i.headers.set("Accept","application/json");try{r=yield fetch(i)}catch(o){if(ae(o))throw o;throw new ue(0,o.message,e.url,new Blob)}if(!r.ok){const t=yield r.blob();throw new ue(r.status,r.statusText,e.url,t)}n="arrayBuffer"===e.type||"image"===e.type?r.arrayBuffer():"json"===e.type?r.json():r.text();const s=yield n;return t.signal.throwIfAborted(),{data:s,cacheControl:r.headers.get("Cache-Control"),expires:r.headers.get("Expires")}})}(e,t);if(W(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:e,mustQueue:!0,targetMapId:he},t)}var r,n,s;return n=e,s=t,new Promise((e,t)=>{var i;const r=new XMLHttpRequest;r.open(n.method||"GET",n.url,!0),"arrayBuffer"!==n.type&&"image"!==n.type||(r.responseType="arraybuffer");for(const s in n.headers)r.setRequestHeader(s,n.headers[s]);"json"===n.type&&(r.responseType="text",(null===(i=n.headers)||void 0===i?void 0:i.Accept)||r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===n.credentials,r.onerror=()=>{t(new Error(r.statusText))},r.onload=()=>{if(!s.signal.aborted)if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let s=r.response;if("json"===n.type)try{s=JSON.parse(r.response)}catch(i){return void t(i)}e({data:s,cacheControl:r.getResponseHeader("Cache-Control"),expires:r.getResponseHeader("Expires")})}else{const e=new Blob([r.response],{type:r.getResponseHeader("Content-Type")});t(new ue(r.status,r.statusText,n.url,e))}},s.signal.addEventListener("abort",()=>{r.abort(),t(new oe(s.signal.reason))}),r.send(n.body)})};function fe(e){if(!e||e.indexOf("://")<=0||0===e.indexOf("data:image/")||0===e.indexOf("blob:"))return!0;const t=new URL(e),i=window.location;return t.protocol===i.protocol&&t.host===i.host}function me(e,t,i){i[e]&&-1!==i[e].indexOf(t)||(i[e]=i[e]||[],i[e].push(t))}function _e(e,t,i){if(i&&i[e]){const r=i[e].indexOf(t);-1!==r&&i[e].splice(r,1)}}class ge{constructor(e,t={}){V(this,t),this.type=e}}class ye extends ge{constructor(e,t={}){super("error",V({error:e},t))}}class xe{on(e,t){return this._listeners=this._listeners||{},me(e,t,this._listeners),{unsubscribe:()=>{this.off(e,t)}}}off(e,t){return _e(e,t,this._listeners),_e(e,t,this._oneTimeListeners),this}once(e,t){return t?(this._oneTimeListeners=this._oneTimeListeners||{},me(e,t,this._oneTimeListeners),this):new Promise(t=>this.once(e,t))}fire(e,t){"string"==typeof e&&(e=new ge(e,t||{}));const i=e.type;if(this.listens(i)){e.target=this;const t=this._listeners&&this._listeners[i]?this._listeners[i].slice():[];for(const i of t)i.call(this,e);const r=this._oneTimeListeners&&this._oneTimeListeners[i]?this._oneTimeListeners[i].slice():[];for(const s of r)_e(i,s,this._oneTimeListeners),s.call(this,e);const n=this._eventedParent;n&&(V(e,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),n.fire(e))}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,t){return this._eventedParent=e,this._eventedParentData=t,this}}var ve={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number",length:2},centerAltitude:{type:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},roll:{type:"number",default:0,units:"degrees"},state:{type:"state",default:{}},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},"font-faces":{type:"fontFaces"},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},encoding:{type:"enum",values:{mvt:{},mlt:{}},default:"mvt"},"*":{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:"filter"},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:{},"color-relief":{},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_color-relief","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_color-relief":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},filter:{type:"boolean",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},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:"expression_name",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:"projectionDefinition",default:"mercator","property-type":"data-constant",transition:!1,expression:{interpolated:!0,parameters:["zoom"]}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_color-relief","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","feature"]},"property-type":"cross-faded-data-driven"},"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:"numberArray",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-altitude":{type:"numberArray",default:45,minimum:0,maximum:90,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:"colorArray",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"colorArray",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"},"hillshade-method":{type:"enum",values:{standard:{},basic:{},combined:{},igor:{},multidirectional:{}},default:"standard",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},"paint_color-relief":{"color-relief-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"color-relief-color":{type:"color",transition:!1,expression:{interpolated:!0,parameters:["elevation"]},"property-type":"color-ramp"}},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"}},interpolation:{type:"array",value:"interpolation_name",minimum:1},interpolation_name:{type:"enum",values:{linear:{syntax:{overloads:[{parameters:[],"output-type":"interpolation"}],parameters:[]}},exponential:{syntax:{overloads:[{parameters:["base"],"output-type":"interpolation"}],parameters:[{name:"base",type:"number literal"}]}},"cubic-bezier":{syntax:{overloads:[{parameters:["x1","y1","x2","y2"],"output-type":"interpolation"}],parameters:[{name:"x1",type:"number literal"},{name:"y1",type:"number literal"},{name:"x2",type:"number literal"},{name:"y2",type:"number literal"}]}}}}};const be=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function we(e,t){const i={};for(const r in e)"ref"!==r&&(i[r]=e[r]);return be.forEach(e=>{e in t&&(i[e]=t[e])}),i}function Te(e,t){if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let i=0;i`:"value"===e.itemType.kind?"array":`array<${t}>`}return e.kind}const Qe=[Fe,Be,Oe,Ve,je,Ne,Ze,Ue,Ke(Ge),$e,He,We,Xe,Ye];function et(e,t){if("error"===t.kind)return null;if("array"===e.kind){if("array"===t.kind&&(0===t.N&&"value"===t.itemType.kind||!et(e.itemType,t.itemType))&&("number"!=typeof e.N||e.N===t.N))return null}else{if(e.kind===t.kind)return null;if("value"===e.kind)for(const e of Qe)if(!et(e,t))return null}return`Expected ${Je(e)} but found ${Je(t)} instead.`}function tt(e,t){return t.some(t=>t.kind===e.kind)}function it(e,t){return t.some(t=>"null"===t?null===e:"array"===t?Array.isArray(e):"object"===t?e&&!Array.isArray(e)&&"object"==typeof e:t===typeof e)}function rt(e,t){return"array"===e.kind&&"array"===t.kind?e.itemType.kind===t.itemType.kind&&"number"==typeof e.N:e.kind===t.kind}const nt=.96422,st=.82521,ot=4/29,at=6/29,lt=3*at*at,ct=at*at*at,ht=Math.PI/180,ut=180/Math.PI;function dt(e){return(e%=360)<0&&(e+=360),e}function pt([e,t,i,r]){let n,s;const o=mt((.2225045*(e=ft(e))+.7168786*(t=ft(t))+.0606169*(i=ft(i)))/1);e===t&&t===i?n=s=o:(n=mt((.4360747*e+.3850649*t+.1430804*i)/nt),s=mt((.0139322*e+.0971045*t+.7141733*i)/st));const a=116*o-16;return[a<0?0:a,500*(n-o),200*(o-s),r]}function ft(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function mt(e){return e>ct?Math.pow(e,1/3):e/lt+ot}function _t([e,t,i,r]){let n=(e+16)/116,s=isNaN(t)?n:n+t/500,o=isNaN(i)?n:n-i/200;return n=1*yt(n),s=nt*yt(s),o=st*yt(o),[gt(3.1338561*s-1.6168667*n-.4906146*o),gt(-.9787684*s+1.9161415*n+.033454*o),gt(.0719453*s-.2289914*n+1.4052427*o),r]}function gt(e){return(e=e<=.00304?12.92*e:1.055*Math.pow(e,1/2.4)-.055)<0?0:e>1?1:e}function yt(e){return e>at?e*e*e:lt*(e-ot)}const xt=Object.hasOwn||function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};function vt(e,t){return xt(e,t)?e[t]:void 0}function bt(e){return parseInt(e.padEnd(2,e),16)/255}function wt(e,t){return Tt(t?e/100:e,0,1)}function Tt(e,t,i){return Math.min(Math.max(t,e),i)}function St(e){return!e.some(Number.isNaN)}const Pt={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]};function It(e,t,i){return e+i*(t-e)}function Mt(e,t,i){return e.map((e,r)=>It(e,t[r],i))}class Et{constructor(e,t,i,r=1,n=!0){this.r=e,this.g=t,this.b=i,this.a=r,n||(this.r*=r,this.g*=r,this.b*=r,r||this.overwriteGetter("rgb",[e,t,i,r]))}static parse(e){if(e instanceof Et)return e;if("string"!=typeof e)return;const t=function(e){if("transparent"===(e=e.toLowerCase().trim()))return[0,0,0,0];const t=vt(Pt,e);if(t){const[e,i,r]=t;return[e/255,i/255,r/255,1]}if(e.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(e)){const t=e.length<6?1:2;let i=1;return[bt(e.slice(i,i+=t)),bt(e.slice(i,i+=t)),bt(e.slice(i,i+=t)),bt(e.slice(i,i+t)||"ff")]}if(e.startsWith("rgb")){const t=e.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(t){const[e,i,r,n,s,o,a,l,c,h,u,d]=t,p=[n||" ",a||" ",h].join("");if(" "===p||" /"===p||",,"===p||",,,"===p){const e=[r,o,c].join(""),t="%%%"===e?100:""===e?255:0;if(t){const e=[Tt(+i/t,0,1),Tt(+s/t,0,1),Tt(+l/t,0,1),u?wt(+u,d):1];if(St(e))return e}}return}}const i=e.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(i){const[e,t,r,n,s,o,a,l,c]=i,h=[r||" ",s||" ",a].join("");if(" "===h||" /"===h||",,"===h||",,,"===h){const e=[+t,Tt(+n,0,100),Tt(+o,0,100),l?wt(+l,c):1];if(St(e))return function([e,t,i,r]){function n(r){const n=(r+e/30)%12,s=t*Math.min(i,1-i);return i-s*Math.max(-1,Math.min(n-3,9-n,1))}return e=dt(e),t/=100,i/=100,[n(0),n(8),n(4),r]}(e)}}}(e);return t?new Et(...t,!1):void 0}get rgb(){const{r:e,g:t,b:i,a:r}=this,n=r||1/0;return this.overwriteGetter("rgb",[e/n,t/n,i/n,r])}get hcl(){return this.overwriteGetter("hcl",function(e){const[t,i,r,n]=pt(e),s=Math.sqrt(i*i+r*r);return[Math.round(1e4*s)?dt(Math.atan2(r,i)*ut):NaN,s,t,n]}(this.rgb))}get lab(){return this.overwriteGetter("lab",pt(this.rgb))}overwriteGetter(e,t){return Object.defineProperty(this,e,{value:t}),t}toString(){const[e,t,i,r]=this.rgb;return`rgba(${[e,t,i].map(e=>Math.round(255*e)).join(",")},${r})`}static interpolate(e,t,i,r="rgb"){switch(r){case"rgb":{const[r,n,s,o]=Mt(e.rgb,t.rgb,i);return new Et(r,n,s,o,!1)}case"hcl":{const[r,n,s,o]=e.hcl,[a,l,c,h]=t.hcl;let u,d;if(isNaN(r)||isNaN(a))isNaN(r)?isNaN(a)?u=NaN:(u=a,1!==s&&0!==s||(d=l)):(u=r,1!==c&&0!==c||(d=n));else{let e=a-r;a>r&&e>180?e-=360:a180&&(e+=360),u=r+i*e}const[p,f,m,_]=function([e,t,i,r]){return e=isNaN(e)?0:e*ht,_t([i,Math.cos(e)*t,Math.sin(e)*t,r])}([u,null!=d?d:It(n,l,i),It(s,c,i),It(o,h,i)]);return new Et(p,f,m,_,!1)}case"lab":{const[r,n,s,o]=_t(Mt(e.lab,t.lab,i));return new Et(r,n,s,o,!1)}}}}Et.black=new Et(0,0,0,1),Et.white=new Et(1,1,1,1),Et.transparent=new Et(0,0,0,0),Et.red=new Et(1,0,0,1);class Ct{constructor(e,t,i){this.sensitivity=e?t?"variant":"case":t?"accent":"base",this.locale=i,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,t){return this.collator.compare(e,t)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}const At=["bottom","center","top"];class Dt{constructor(e,t,i,r,n,s){this.text=e,this.image=t,this.scale=i,this.fontStack=r,this.textColor=n,this.verticalAlign=s}}class zt{constructor(e){this.sections=e}static fromString(e){return new zt([new Dt(e,null,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some(e=>0!==e.text.length||e.image&&0!==e.image.name.length)}static factory(e){return e instanceof zt?e:zt.fromString(e)}toString(){return 0===this.sections.length?"":this.sections.map(e=>e.text).join("")}}class kt{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof kt)return e;if("number"==typeof e)return new kt([e,e,e,e]);if(Array.isArray(e)&&!(e.length<1||e.length>4)){for(const t of e)if("number"!=typeof t)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 kt(e)}}toString(){return JSON.stringify(this.values)}static interpolate(e,t,i){return new kt(Mt(e.values,t.values,i))}}class Rt{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Rt)return e;if("number"==typeof e)return new Rt([e]);if(Array.isArray(e)){for(const t of e)if("number"!=typeof t)return;return new Rt(e)}}toString(){return JSON.stringify(this.values)}static interpolate(e,t,i){return new Rt(Mt(e.values,t.values,i))}}class Lt{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Lt)return e;if("string"==typeof e){const t=Et.parse(e);if(!t)return;return new Lt([t])}if(!Array.isArray(e))return;const t=[];for(const i of e){if("string"!=typeof i)return;const e=Et.parse(i);if(!e)return;t.push(e)}return new Lt(t)}toString(){return JSON.stringify(this.values)}static interpolate(e,t,i,r="rgb"){const n=[];if(e.values.length!=t.values.length)throw new Error(`colorArray: Arrays have mismatched length (${e.values.length} vs. ${t.values.length}), cannot interpolate.`);for(let s=0;s=0&&e<=255&&"number"==typeof t&&t>=0&&t<=255&&"number"==typeof i&&i>=0&&i<=255?void 0===r||"number"==typeof r&&r>=0&&r<=1?null:`Invalid rgba value [${[e,t,i,r].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${("number"==typeof r?[e,t,i,r]:[e,t,i]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Ut(e){if(null===e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e||e instanceof jt||e instanceof Et||e instanceof Ct||e instanceof zt||e instanceof kt||e instanceof Rt||e instanceof Lt||e instanceof Ot||e instanceof Vt)return!0;if(Array.isArray(e)){for(const t of e)if(!Ut(t))return!1;return!0}if("object"==typeof e){for(const t in e)if(!Ut(e[t]))return!1;return!0}return!1}function Gt(e){if(null===e)return Fe;if("string"==typeof e)return Oe;if("boolean"==typeof e)return Ve;if("number"==typeof e)return Be;if(e instanceof Et)return je;if(e instanceof jt)return Ne;if(e instanceof Ct)return qe;if(e instanceof zt)return Ze;if(e instanceof kt)return $e;if(e instanceof Rt)return He;if(e instanceof Lt)return We;if(e instanceof Ot)return Ye;if(e instanceof Vt)return Xe;if(Array.isArray(e)){const t=e.length;let i;for(const r of e){const e=Gt(r);if(i){if(i===e)continue;i=Ge;break}i=e}return Ke(i||Ge,t)}return Ue}function qt(e){const t=typeof e;return null===e?"":"string"===t||"number"===t||"boolean"===t?String(e):e instanceof Et||e instanceof jt||e instanceof zt||e instanceof kt||e instanceof Rt||e instanceof Lt||e instanceof Ot||e instanceof Vt?e.toString():JSON.stringify(e)}class Zt{constructor(e,t){this.type=e,this.value=t}static parse(e,t){if(2!==e.length)return t.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Ut(e[1]))return t.error("invalid value");const i=e[1];let r=Gt(i);const n=t.expectedType;return"array"!==r.kind||0!==r.N||!n||"array"!==n.kind||"number"==typeof n.N&&0!==n.N||(r=n),new Zt(r,i)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}const $t={string:Oe,number:Be,boolean:Ve,object:Ue};class Wt{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");let i,r=1;const n=e[0];if("array"===n){let n,s;if(e.length>2){const i=e[1];if("string"!=typeof i||!(i in $t)||"object"===i)return t.error('The item type argument of "array" must be one of string, number, boolean',1);n=$t[i],r++}else n=Ge;if(e.length>3){if(null!==e[2]&&("number"!=typeof e[2]||e[2]<0||e[2]!==Math.floor(e[2])))return t.error('The length argument to "array" must be a positive integer literal',2);s=e[2],r++}i=Ke(n,s)}else{if(!$t[n])throw new Error(`Types doesn't contain name = ${n}`);i=$t[n]}const s=[];for(;re.outputDefined())}}const Ht={"to-boolean":Ve,"to-color":je,"to-number":Be,"to-string":Oe};class Xt{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");const i=e[0];if(!Ht[i])throw new Error(`Can't parse ${i} as it is not part of the known types`);if(("to-boolean"===i||"to-string"===i)&&2!==e.length)return t.error("Expected one argument.");const r=Ht[i],n=[];for(let s=1;s4?`Invalid rgba value ${JSON.stringify(t)}: expected an array containing either three or four numeric values.`:Nt(t[0],t[1],t[2],t[3]),!i))return new Et(t[0]/255,t[1]/255,t[2]/255,t[3])}throw new Ft(i||`Could not parse color from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"padding":{let t;for(const i of this.args){t=i.evaluate(e);const r=kt.parse(t);if(r)return r}throw new Ft(`Could not parse padding from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"numberArray":{let t;for(const i of this.args){t=i.evaluate(e);const r=Rt.parse(t);if(r)return r}throw new Ft(`Could not parse numberArray from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"colorArray":{let t;for(const i of this.args){t=i.evaluate(e);const r=Lt.parse(t);if(r)return r}throw new Ft(`Could not parse colorArray from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"variableAnchorOffsetCollection":{let t;for(const i of this.args){t=i.evaluate(e);const r=Ot.parse(t);if(r)return r}throw new Ft(`Could not parse variableAnchorOffsetCollection from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"number":{let t=null;for(const i of this.args){if(t=i.evaluate(e),null===t)return 0;const r=Number(t);if(!isNaN(r))return r}throw new Ft(`Could not convert ${JSON.stringify(t)} to number.`)}case"formatted":return zt.fromString(qt(this.args[0].evaluate(e)));case"resolvedImage":return Vt.fromString(qt(this.args[0].evaluate(e)));case"projectionDefinition":return this.args[0].evaluate(e);default:return qt(this.args[0].evaluate(e))}}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}const Yt=["Unknown","Point","LineString","Polygon"];class Kt{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache=new Map,this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?Yt[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 t=this._parseColorCache.get(e);return t||(t=Et.parse(e),this._parseColorCache.set(e,t)),t}}class Jt{constructor(e,t,i=[],r,n=new Le,s=[]){this.registry=e,this.path=i,this.key=i.map(e=>`[${e}]`).join(""),this.scope=n,this.errors=s,this.expectedType=r,this._isConstant=t}parse(e,t,i,r,n={}){return t?this.concat(t,i,r)._parse(e,n):this._parse(e,n)}_parse(e,t){function i(e,t,i){return"assert"===i?new Wt(t,[e]):"coerce"===i?new Xt(t,[e]):e}if(null!==e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e||(e=["literal",e]),Array.isArray(e)){if(0===e.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const n=e[0];if("string"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const s=this.registry[n];if(s){let n=s.parse(e,this);if(!n)return null;if(this.expectedType){const e=this.expectedType,r=n.type;if("string"!==e.kind&&"number"!==e.kind&&"boolean"!==e.kind&&"object"!==e.kind&&"array"!==e.kind||"value"!==r.kind){if("projectionDefinition"===e.kind&&["string","array"].includes(r.kind)||["color","formatted","resolvedImage"].includes(e.kind)&&["value","string"].includes(r.kind)||["padding","numberArray"].includes(e.kind)&&["value","number","array"].includes(r.kind)||"colorArray"===e.kind&&["value","string","array"].includes(r.kind)||"variableAnchorOffsetCollection"===e.kind&&["value","array"].includes(r.kind))n=i(n,e,t.typeAnnotation||"coerce");else if(this.checkSubtype(e,r))return null}else n=i(n,e,t.typeAnnotation||"assert")}if(!(n instanceof Zt)&&"resolvedImage"!==n.type.kind&&this._isConstant(n)){const e=new Kt;try{n=new Zt(n.type,n.evaluate(e))}catch(r){return this.error(r.message),null}}return n}return this.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(void 0===e?"'undefined' value invalid. Use null instead.":"object"==typeof e?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,t,i){const r="number"==typeof e?this.path.concat(e):this.path,n=i?this.scope.concat(i):this.scope;return new Jt(this.registry,this._isConstant,r,t||null,n,this.errors)}error(e,...t){const i=`${this.key}${t.map(e=>`[${e}]`).join("")}`;this.errors.push(new Re(i,e))}checkSubtype(e,t){const i=et(e,t);return i&&this.error(i),i}}class Qt{constructor(e,t){this.type=t.type,this.bindings=[].concat(e),this.result=t}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const t of this.bindings)e(t[1]);e(this.result)}static parse(e,t){if(e.length<4)return t.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const i=[];for(let n=1;n=i.length)throw new Ft(`Array index out of bounds: ${t} > ${i.length-1}.`);if(t!==Math.floor(t))throw new Ft(`Array index must be an integer, but found ${t} instead.`);return i[t]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}}class ii{constructor(e,t){this.type=Ve,this.needle=e,this.haystack=t}static parse(e,t){if(3!==e.length)return t.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Ge),r=t.parse(e[2],2,Ge);return i&&r?tt(i.type,[Ve,Oe,Be,Fe,Ge])?new ii(i,r):t.error(`Expected first argument to be of type boolean, string, number or null, but found ${Je(i.type)} instead`):null}evaluate(e){const t=this.needle.evaluate(e),i=this.haystack.evaluate(e);if(!i)return!1;if(!it(t,["boolean","string","number","null"]))throw new Ft(`Expected first argument to be of type boolean, string, number or null, but found ${Je(Gt(t))} instead.`);if(!it(i,["string","array"]))throw new Ft(`Expected second argument to be of type array or string, but found ${Je(Gt(i))} instead.`);return i.indexOf(t)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}}class ri{constructor(e,t,i){this.type=Be,this.needle=e,this.haystack=t,this.fromIndex=i}static parse(e,t){if(e.length<=2||e.length>=5)return t.error(`Expected 2 or 3 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Ge),r=t.parse(e[2],2,Ge);if(!i||!r)return null;if(!tt(i.type,[Ve,Oe,Be,Fe,Ge]))return t.error(`Expected first argument to be of type boolean, string, number or null, but found ${Je(i.type)} instead`);if(4===e.length){const n=t.parse(e[3],3,Be);return n?new ri(i,r,n):null}return new ri(i,r)}evaluate(e){const t=this.needle.evaluate(e),i=this.haystack.evaluate(e);if(!it(t,["boolean","string","number","null"]))throw new Ft(`Expected first argument to be of type boolean, string, number or null, but found ${Je(Gt(t))} instead.`);let r;if(this.fromIndex&&(r=this.fromIndex.evaluate(e)),it(i,["string"])){const e=i.indexOf(t,r);return-1===e?-1:[...i.slice(0,e)].length}if(it(i,["array"]))return i.indexOf(t,r);throw new Ft(`Expected second argument to be of type array or string, but found ${Je(Gt(i))} instead.`)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}}class ni{constructor(e,t,i,r,n,s){this.inputType=e,this.type=t,this.input=i,this.cases=r,this.outputs=n,this.otherwise=s}static parse(e,t){if(e.length<5)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return t.error("Expected an even number of arguments.");let i,r;t.expectedType&&"value"!==t.expectedType.kind&&(r=t.expectedType);const n={},s=[];for(let l=2;lNumber.MAX_SAFE_INTEGER)return c.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof e&&Math.floor(e)!==e)return c.error("Numeric branch labels must be integer values.");if(i){if(c.checkSubtype(i,Gt(e)))return null}else i=Gt(e);if(void 0!==n[String(e)])return c.error("Branch labels must be unique.");n[String(e)]=s.length}const h=t.parse(a,l,r);if(!h)return null;r=r||h.type,s.push(h)}const o=t.parse(e[1],1,Ge);if(!o)return null;const a=t.parse(e[e.length-1],e.length-1,r);return a?"value"!==o.type.kind&&t.concat(1).checkSubtype(i,o.type)?null:new ni(i,r,o,n,s,a):null}evaluate(e){const t=this.input.evaluate(e);return(Gt(t)===this.inputType&&this.outputs[this.cases[t]]||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 si{constructor(e,t,i){this.type=e,this.branches=t,this.otherwise=i}static parse(e,t){if(e.length<4)return t.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return t.error("Expected an odd number of arguments.");let i;t.expectedType&&"value"!==t.expectedType.kind&&(i=t.expectedType);const r=[];for(let s=1;st.outputDefined())&&this.otherwise.outputDefined()}}class oi{constructor(e,t,i,r){this.type=e,this.input=t,this.beginIndex=i,this.endIndex=r}static parse(e,t){if(e.length<=2||e.length>=5)return t.error(`Expected 2 or 3 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Ge),r=t.parse(e[2],2,Be);if(!i||!r)return null;if(!tt(i.type,[Ke(Ge),Oe,Ge]))return t.error(`Expected first argument to be of type array or string, but found ${Je(i.type)} instead`);if(4===e.length){const n=t.parse(e[3],3,Be);return n?new oi(i.type,i,r,n):null}return new oi(i.type,i,r)}evaluate(e){const t=this.input.evaluate(e),i=this.beginIndex.evaluate(e);let r;if(this.endIndex&&(r=this.endIndex.evaluate(e)),it(t,["string"]))return[...t].slice(i,r).join("");if(it(t,["array"]))return t.slice(i,r);throw new Ft(`Expected first argument to be of type array or string, but found ${Je(Gt(t))} instead.`)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}}function ai(e,t){const i=e.length-1;let r,n,s=0,o=i,a=0;for(;s<=o;)if(a=Math.floor((s+o)/2),r=e[a],n=e[a+1],r<=t){if(a===i||tt))throw new Ft("Input is not a number.");o=a-1}return 0}class li{constructor(e,t,i){this.type=e,this.input=t,this.labels=[],this.outputs=[];for(const[r,n]of i)this.labels.push(r),this.outputs.push(n)}static parse(e,t){if(e.length-1<4)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return t.error("Expected an even number of arguments.");const i=t.parse(e[1],1,Be);if(!i)return null;const r=[];let n=null;t.expectedType&&"value"!==t.expectedType.kind&&(n=t.expectedType);for(let s=1;s=i)return t.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',a);const c=t.parse(o,l,n);if(!c)return null;n=n||c.type,r.push([i,c])}return new li(n,i,r)}evaluate(e){const t=this.labels,i=this.outputs;if(1===t.length)return i[0].evaluate(e);const r=this.input.evaluate(e);if(r<=t[0])return i[0].evaluate(e);const n=t.length;return r>=t[n-1]?i[n-1].evaluate(e):i[ai(t,r)].evaluate(e)}eachChild(e){e(this.input);for(const t of this.outputs)e(t)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}var ci,hi,ui=function(){if(hi)return ci;function e(e,t,i,r){this.cx=3*e,this.bx=3*(i-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*t,this.by=3*(r-t)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=t,this.p2x=i,this.p2y=r}return hi=1,ci=e,e.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,t){if(void 0===t&&(t=1e-6),e<0)return 0;if(e>1)return 1;for(var i=e,r=0;r<8;r++){var n=this.sampleCurveX(i)-e;if(Math.abs(n)n?o=i:a=i,i=.5*(a-o)+o;return i},solve:function(e,t){return this.sampleCurveY(this.solveCurveX(e,t))}},ci}(),di=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(ui);class pi{constructor(e,t,i,r,n){this.type=e,this.operator=t,this.interpolation=i,this.input=r,this.labels=[],this.outputs=[];for(const[s,o]of n)this.labels.push(s),this.outputs.push(o)}static interpolationFactor(e,t,i,r){let n=0;if("exponential"===e.name)n=fi(t,e.base,i,r);else if("linear"===e.name)n=fi(t,1,i,r);else if("cubic-bezier"===e.name){const s=e.controlPoints;n=new di(s[0],s[1],s[2],s[3]).solve(fi(t,1,i,r))}return n}static parse(e,t){let[i,r,n,...s]=e;if(!Array.isArray(r)||0===r.length)return t.error("Expected an interpolation type expression.",1);if("linear"===r[0])r={name:"linear"};else if("exponential"===r[0]){const e=r[1];if("number"!=typeof e)return t.error("Exponential interpolation requires a numeric base.",1,1);r={name:"exponential",base:e}}else{if("cubic-bezier"!==r[0])return t.error(`Unknown interpolation type ${String(r[0])}`,1,0);{const e=r.slice(1);if(4!==e.length||e.some(e=>"number"!=typeof e||e<0||e>1))return t.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);r={name:"cubic-bezier",controlPoints:e}}}if(e.length-1<4)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return t.error("Expected an even number of arguments.");if(n=t.parse(n,2,Be),!n)return null;const o=[];let a=null;"interpolate-hcl"!==i&&"interpolate-lab"!==i||t.expectedType==We?t.expectedType&&"value"!==t.expectedType.kind&&(a=t.expectedType):a=je;for(let l=0;l=e)return t.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',r);const c=t.parse(i,n,a);if(!c)return null;a=a||c.type,o.push([e,c])}return rt(a,Be)||rt(a,Ne)||rt(a,je)||rt(a,$e)||rt(a,He)||rt(a,We)||rt(a,Ye)||rt(a,Ke(Be))?new pi(a,i,r,n,o):t.error(`Type ${Je(a)} is not interpolatable.`)}evaluate(e){const t=this.labels,i=this.outputs;if(1===t.length)return i[0].evaluate(e);const r=this.input.evaluate(e);if(r<=t[0])return i[0].evaluate(e);const n=t.length;if(r>=t[n-1])return i[n-1].evaluate(e);const s=ai(t,r),o=pi.interpolationFactor(this.interpolation,r,t[s],t[s+1]),a=i[s].evaluate(e),l=i[s+1].evaluate(e);switch(this.operator){case"interpolate":switch(this.type.kind){case"number":return It(a,l,o);case"color":return Et.interpolate(a,l,o);case"padding":return kt.interpolate(a,l,o);case"colorArray":return Lt.interpolate(a,l,o);case"numberArray":return Rt.interpolate(a,l,o);case"variableAnchorOffsetCollection":return Ot.interpolate(a,l,o);case"array":return Mt(a,l,o);case"projectionDefinition":return jt.interpolate(a,l,o)}case"interpolate-hcl":switch(this.type.kind){case"color":return Et.interpolate(a,l,o,"hcl");case"colorArray":return Lt.interpolate(a,l,o,"hcl")}case"interpolate-lab":switch(this.type.kind){case"color":return Et.interpolate(a,l,o,"lab");case"colorArray":return Lt.interpolate(a,l,o,"lab")}}}eachChild(e){e(this.input);for(const t of this.outputs)e(t)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function fi(e,t,i,r){const n=r-i,s=e-i;return 0===n?0:1===t?s/n:(Math.pow(t,s)-1)/(Math.pow(t,n)-1)}const mi={color:Et.interpolate,number:It,padding:kt.interpolate,numberArray:Rt.interpolate,colorArray:Lt.interpolate,variableAnchorOffsetCollection:Ot.interpolate,array:Mt};class _i{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");let i=null;const r=t.expectedType;r&&"value"!==r.kind&&(i=r);const n=[];for(const o of e.slice(1)){const e=t.parse(o,1+n.length,i,void 0,{typeAnnotation:"omit"});if(!e)return null;i=i||e.type,n.push(e)}if(!i)throw new Error("No output type");const s=r&&n.some(e=>et(r,e.type));return new _i(s?Ge:i,n)}evaluate(e){let t,i=null,r=0;for(const n of this.args)if(r++,i=n.evaluate(e),i&&i instanceof Vt&&!i.available&&(t||(t=i.name),i=null,r===this.args.length&&(i=t)),null!==i)break;return i}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}function gi(e,t){return"=="===e||"!="===e?"boolean"===t.kind||"string"===t.kind||"number"===t.kind||"null"===t.kind||"value"===t.kind:"string"===t.kind||"number"===t.kind||"value"===t.kind}function yi(e,t,i,r){return 0===r.compare(t,i)}function xi(e,t,i){const r="=="!==e&&"!="!==e;return class n{constructor(e,t,i){this.type=Ve,this.lhs=e,this.rhs=t,this.collator=i,this.hasUntypedArgument="value"===e.type.kind||"value"===t.type.kind}static parse(e,t){if(3!==e.length&&4!==e.length)return t.error("Expected two or three arguments.");const i=e[0];let s=t.parse(e[1],1,Ge);if(!s)return null;if(!gi(i,s.type))return t.concat(1).error(`"${i}" comparisons are not supported for type '${Je(s.type)}'.`);let o=t.parse(e[2],2,Ge);if(!o)return null;if(!gi(i,o.type))return t.concat(2).error(`"${i}" comparisons are not supported for type '${Je(o.type)}'.`);if(s.type.kind!==o.type.kind&&"value"!==s.type.kind&&"value"!==o.type.kind)return t.error(`Cannot compare types '${Je(s.type)}' and '${Je(o.type)}'.`);r&&("value"===s.type.kind&&"value"!==o.type.kind?s=new Wt(o.type,[s]):"value"!==s.type.kind&&"value"===o.type.kind&&(o=new Wt(s.type,[o])));let a=null;if(4===e.length){if("string"!==s.type.kind&&"string"!==o.type.kind&&"value"!==s.type.kind&&"value"!==o.type.kind)return t.error("Cannot use collator to compare non-string types.");if(a=t.parse(e[3],3,qe),!a)return null}return new n(s,o,a)}evaluate(n){const s=this.lhs.evaluate(n),o=this.rhs.evaluate(n);if(r&&this.hasUntypedArgument){const t=Gt(s),i=Gt(o);if(t.kind!==i.kind||"string"!==t.kind&&"number"!==t.kind)throw new Ft(`Expected arguments for "${e}" to be (string, string) or (number, number), but found (${t.kind}, ${i.kind}) instead.`)}if(this.collator&&!r&&this.hasUntypedArgument){const e=Gt(s),i=Gt(o);if("string"!==e.kind||"string"!==i.kind)return t(n,s,o)}return this.collator?i(n,s,o,this.collator.evaluate(n)):t(n,s,o)}eachChild(e){e(this.lhs),e(this.rhs),this.collator&&e(this.collator)}outputDefined(){return!0}}}const vi=xi("==",function(e,t,i){return t===i},yi),bi=xi("!=",function(e,t,i){return t!==i},function(e,t,i,r){return!yi(0,t,i,r)}),wi=xi("<",function(e,t,i){return t",function(e,t,i){return t>i},function(e,t,i,r){return r.compare(t,i)>0}),Si=xi("<=",function(e,t,i){return t<=i},function(e,t,i,r){return r.compare(t,i)<=0}),Pi=xi(">=",function(e,t,i){return t>=i},function(e,t,i,r){return r.compare(t,i)>=0});class Ii{constructor(e,t,i){this.type=qe,this.locale=i,this.caseSensitive=e,this.diacriticSensitive=t}static parse(e,t){if(2!==e.length)return t.error("Expected one argument.");const i=e[1];if("object"!=typeof i||Array.isArray(i))return t.error("Collator options argument must be an object.");const r=t.parse(void 0!==i["case-sensitive"]&&i["case-sensitive"],1,Ve);if(!r)return null;const n=t.parse(void 0!==i["diacritic-sensitive"]&&i["diacritic-sensitive"],1,Ve);if(!n)return null;let s=null;return i.locale&&(s=t.parse(i.locale,1,Oe),!s)?null:new Ii(r,n,s)}evaluate(e){return new Ct(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 Mi{constructor(e,t,i,r,n){this.type=Oe,this.number=e,this.locale=t,this.currency=i,this.minFractionDigits=r,this.maxFractionDigits=n}static parse(e,t){if(3!==e.length)return t.error("Expected two arguments.");const i=t.parse(e[1],1,Be);if(!i)return null;const r=e[2];if("object"!=typeof r||Array.isArray(r))return t.error("NumberFormat options argument must be an object.");let n=null;if(r.locale&&(n=t.parse(r.locale,1,Oe),!n))return null;let s=null;if(r.currency&&(s=t.parse(r.currency,1,Oe),!s))return null;let o=null;if(r["min-fraction-digits"]&&(o=t.parse(r["min-fraction-digits"],1,Be),!o))return null;let a=null;return r["max-fraction-digits"]&&(a=t.parse(r["max-fraction-digits"],1,Be),!a)?null:new Mi(i,n,s,o,a)}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 Ei{constructor(e){this.type=Ze,this.sections=e}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");const i=e[1];if(!Array.isArray(i)&&"object"==typeof i)return t.error("First argument must be an image or text section.");const r=[];let n=!1;for(let s=1;s<=e.length-1;++s){const i=e[s];if(n&&"object"==typeof i&&!Array.isArray(i)){n=!1;let e=null;if(i["font-scale"]&&(e=t.parse(i["font-scale"],1,Be),!e))return null;let s=null;if(i["text-font"]&&(s=t.parse(i["text-font"],1,Ke(Oe)),!s))return null;let o=null;if(i["text-color"]&&(o=t.parse(i["text-color"],1,je),!o))return null;let a=null;if(i["vertical-align"]){if("string"==typeof i["vertical-align"]&&!At.includes(i["vertical-align"]))return t.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${i["vertical-align"]}' instead.`);if(a=t.parse(i["vertical-align"],1,Oe),!a)return null}const l=r[r.length-1];l.scale=e,l.font=s,l.textColor=o,l.verticalAlign=a}else{const i=t.parse(e[s],1,Ge);if(!i)return null;const o=i.type.kind;if("string"!==o&&"value"!==o&&"null"!==o&&"resolvedImage"!==o)return t.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");n=!0,r.push({content:i,scale:null,font:null,textColor:null,verticalAlign:null})}}return new Ei(r)}evaluate(e){return new zt(this.sections.map(t=>{const i=t.content.evaluate(e);return Gt(i)===Xe?new Dt("",i,null,null,null,t.verticalAlign?t.verticalAlign.evaluate(e):null):new Dt(qt(i),null,t.scale?t.scale.evaluate(e):null,t.font?t.font.evaluate(e).join(","):null,t.textColor?t.textColor.evaluate(e):null,t.verticalAlign?t.verticalAlign.evaluate(e):null)}))}eachChild(e){for(const t of this.sections)e(t.content),t.scale&&e(t.scale),t.font&&e(t.font),t.textColor&&e(t.textColor),t.verticalAlign&&e(t.verticalAlign)}outputDefined(){return!1}}class Ci{constructor(e){this.type=Xe,this.input=e}static parse(e,t){if(2!==e.length)return t.error("Expected two arguments.");const i=t.parse(e[1],1,Oe);return i?new Ci(i):t.error("No image name provided.")}evaluate(e){const t=this.input.evaluate(e),i=Vt.fromString(t);return i&&e.availableImages&&(i.available=e.availableImages.indexOf(t)>-1),i}eachChild(e){e(this.input)}outputDefined(){return!1}}class Ai{constructor(e){this.type=Be,this.input=e}static parse(e,t){if(2!==e.length)return t.error(`Expected 1 argument, but found ${e.length-1} instead.`);const i=t.parse(e[1],1);return i?"array"!==i.type.kind&&"string"!==i.type.kind&&"value"!==i.type.kind?t.error(`Expected argument of type string or array, but found ${Je(i.type)} instead.`):new Ai(i):null}evaluate(e){const t=this.input.evaluate(e);if("string"==typeof t)return[...t].length;if(Array.isArray(t))return t.length;throw new Ft(`Expected value to be of type string or array, but found ${Je(Gt(t))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}}const Di=8192;function zi(e,t){const i=(180+e[0])/360,r=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e[1]*Math.PI/360)))/360,n=Math.pow(2,t.z);return[Math.round(i*n*Di),Math.round(r*n*Di)]}function ki(e,t){const i=Math.pow(2,t.z);return[(n=(e[0]/Di+t.x)/i,360*n-180),(r=(e[1]/Di+t.y)/i,360/Math.PI*Math.atan(Math.exp((180-360*r)*Math.PI/180))-90)];var r,n}function Ri(e,t){e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[0]),e[3]=Math.max(e[3],t[1])}function Li(e,t){return!(e[0]<=t[0]||e[2]>=t[2]||e[1]<=t[1]||e[3]>=t[3])}function Fi(e,t,i){const r=e[0]-t[0],n=e[1]-t[1],s=e[0]-i[0],o=e[1]-i[1];return r*o-s*n==0&&r*s<=0&&n*o<=0}function Bi(e,t,i,r){return 0!=(n=[r[0]-i[0],r[1]-i[1]])[0]*(s=[t[0]-e[0],t[1]-e[1]])[1]-n[1]*s[0]&&!(!Gi(e,t,i,r)||!Gi(i,r,e,t));var n,s}function Oi(e,t,i){for(const r of i)for(let i=0;i(n=e)[1]!=(o=a[t+1])[1]>n[1]&&n[0]<(o[0]-s[0])*(n[1]-s[1])/(o[1]-s[1])+s[0]&&(r=!r)}var n,s,o;return r}function ji(e,t){for(const i of t)if(Vi(e,i))return!0;return!1}function Ni(e,t){for(const i of e)if(!Vi(i,t))return!1;for(let i=0;i0&&a<0||o<0&&a>0}function qi(e,t,i){const r=[];for(let n=0;ni[2]){const t=.5*r;let n=e[0]-i[0]>t?-r:i[0]-e[0]>t?r:0;0===n&&(n=e[0]-i[2]>t?-r:i[2]-e[0]>t?r:0),e[0]+=n}Ri(t,e)}function Wi(e,t,i,r){const n=Math.pow(2,r.z)*Di,s=[r.x*Di,r.y*Di],o=[];for(const a of e)for(const e of a){const r=[e.x+s[0],e.y+s[1]];$i(r,t,i,n),o.push(r)}return o}function Hi(e,t,i,r){const n=Math.pow(2,r.z)*Di,s=[r.x*Di,r.y*Di],o=[];for(const l of e){const e=[];for(const i of l){const r=[i.x+s[0],i.y+s[1]];Ri(t,r),e.push(r)}o.push(e)}if(t[2]-t[0]<=n/2){(a=t)[0]=a[1]=1/0,a[2]=a[3]=-1/0;for(const e of o)for(const r of e)$i(r,t,i,n)}var a;return o}class Xi{constructor(e,t){this.type=Ve,this.geojson=e,this.geometries=t}static parse(e,t){if(2!==e.length)return t.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Ut(e[1])){const t=e[1];if("FeatureCollection"===t.type){const e=[];for(const i of t.features){const{type:t,coordinates:r}=i.geometry;"Polygon"===t&&e.push(r),"MultiPolygon"===t&&e.push(...r)}if(e.length)return new Xi(t,{type:"MultiPolygon",coordinates:e})}else if("Feature"===t.type){const e=t.geometry.type;if("Polygon"===e||"MultiPolygon"===e)return new Xi(t,t.geometry)}else if("Polygon"===t.type||"MultiPolygon"===t.type)return new Xi(t,t)}return t.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(null!=e.geometry()&&null!=e.canonicalID()){if("Point"===e.geometryType())return function(e,t){const i=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],n=e.canonicalID();if("Polygon"===t.type){const s=qi(t.coordinates,r,n),o=Wi(e.geometry(),i,r,n);if(!Li(i,r))return!1;for(const e of o)if(!Vi(e,s))return!1}if("MultiPolygon"===t.type){const s=Zi(t.coordinates,r,n),o=Wi(e.geometry(),i,r,n);if(!Li(i,r))return!1;for(const e of o)if(!ji(e,s))return!1}return!0}(e,this.geometries);if("LineString"===e.geometryType())return function(e,t){const i=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],n=e.canonicalID();if("Polygon"===t.type){const s=qi(t.coordinates,r,n),o=Hi(e.geometry(),i,r,n);if(!Li(i,r))return!1;for(const e of o)if(!Ni(e,s))return!1}if("MultiPolygon"===t.type){const s=Zi(t.coordinates,r,n),o=Hi(e.geometry(),i,r,n);if(!Li(i,r))return!1;for(const e of o)if(!Ui(e,s))return!1}return!0}(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let Yi=class{constructor(e=[],t=(e,t)=>et?1:0){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let i=(this.length>>1)-1;i>=0;i--)this._down(i)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:i}=this,r=t[e];for(;e>0;){const n=e-1>>1,s=t[n];if(i(r,s)>=0)break;t[e]=s,e=n}t[e]=r}_down(e){const{data:t,compare:i}=this,r=this.length>>1,n=t[e];for(;e=0)break;t[e]=t[r],e=r}t[e]=n}};function Ki(e,t,i=0,r=e.length-1,n=Qi){for(;r>i;){if(r-i>600){const s=r-i+1,o=t-i+1,a=Math.log(s),l=.5*Math.exp(2*a/3),c=.5*Math.sqrt(a*l*(s-l)/s)*(o-s/2<0?-1:1);Ki(e,t,Math.max(i,Math.floor(t-o*l/s+c)),Math.min(r,Math.floor(t+(s-o)*l/s+c)),n)}const s=e[t];let o=i,a=r;for(Ji(e,i,t),n(e[r],s)>0&&Ji(e,i,r);o0;)a--}0===n(e[i],s)?Ji(e,i,a):(a++,Ji(e,a,r)),a<=t&&(i=a+1),t<=a&&(r=a-1)}}function Ji(e,t,i){const r=e[t];e[t]=e[i],e[i]=r}function Qi(e,t){return et?1:0}function er(e,t){if(e.length<=1)return[e];const i=[];let r,n;for(const s of e){const e=ir(s);0!==e&&(s.area=Math.abs(e),void 0===n&&(n=e<0),n===e<0?(r&&i.push(r),r=[s]):r.push(s))}if(r&&i.push(r),t>1)for(let s=0;s1?(l=e[a+1][0],c=e[a+1][1]):d>0&&(l+=h/this.kx*d,c+=u/this.ky*d)),h=this.wrap(t[0]-l)*this.kx,u=(t[1]-c)*this.ky;const p=h*h+u*u;p180;)e-=360;return e}}function ar(e,t){return t[0]-e[0]}function lr(e){return e[1]-e[0]+1}function cr(e,t){return e[1]>=e[0]&&e[1]e[1])return[null,null];const i=lr(e);if(t){if(2===i)return[e,null];const t=Math.floor(i/2);return[[e[0],e[0]+t],[e[0]+t,e[1]]]}if(1===i)return[e,null];const r=Math.floor(i/2)-1;return[[e[0],e[0]+r],[e[0]+r+1,e[1]]]}function ur(e,t){if(!cr(t,e.length))return[1/0,1/0,-1/0,-1/0];const i=[1/0,1/0,-1/0,-1/0];for(let r=t[0];r<=t[1];++r)Ri(i,e[r]);return i}function dr(e){const t=[1/0,1/0,-1/0,-1/0];for(const i of e)for(const e of i)Ri(t,e);return t}function pr(e){return e[0]!==-1/0&&e[1]!==-1/0&&e[2]!==1/0&&e[3]!==1/0}function fr(e,t,i){if(!pr(e)||!pr(t))return NaN;let r=0,n=0;return e[2]t[2]&&(r=e[0]-t[2]),e[1]>t[3]&&(n=e[1]-t[3]),e[3]=r)return r;if(Li(n,s)){if(br(e,t))return 0}else if(br(t,e))return 0;let o=1/0;for(const a of e)for(let e=0,r=a.length,n=r-1;e0;){const n=o.pop();if(n[0]>=s)continue;const l=n[1],c=t?50:100;if(lr(l)<=c){if(!cr(l,e.length))return NaN;if(t){const t=vr(e,l,i,r);if(isNaN(t)||0===t)return t;s=Math.min(s,t)}else for(let t=l[0];t<=l[1];++t){const n=xr(e[t],i,r);if(s=Math.min(s,n),0===s)return 0}}else{const i=hr(l,t);Tr(o,s,r,e,a,i[0]),Tr(o,s,r,e,a,i[1])}}return s}function Ir(e,t,i,r,n,s=1/0){let o=Math.min(s,n.distance(e[0],i[0]));if(0===o)return o;const a=new Yi([[0,[0,e.length-1],[0,i.length-1]]],ar);for(;a.length>0;){const s=a.pop();if(s[0]>=o)continue;const l=s[1],c=s[2],h=t?50:100,u=r?50:100;if(lr(l)<=h&&lr(c)<=u){if(!cr(l,e.length)&&cr(c,i.length))return NaN;let s;if(t&&r)s=gr(e,l,i,c,n),o=Math.min(o,s);else if(t&&!r){const t=e.slice(l[0],l[1]+1);for(let e=c[0];e<=c[1];++e)if(s=mr(i[e],t,n),o=Math.min(o,s),0===o)return o}else if(!t&&r){const t=i.slice(c[0],c[1]+1);for(let i=l[0];i<=l[1];++i)if(s=mr(e[i],t,n),o=Math.min(o,s),0===o)return o}else s=yr(e,l,i,c,n),o=Math.min(o,s)}else{const s=hr(l,t),h=hr(c,r);Sr(a,o,n,e,i,s[0],h[0]),Sr(a,o,n,e,i,s[0],h[1]),Sr(a,o,n,e,i,s[1],h[0]),Sr(a,o,n,e,i,s[1],h[1])}}return o}function Mr(e){return"MultiPolygon"===e.type?e.coordinates.map(e=>({type:"Polygon",coordinates:e})):"MultiLineString"===e.type?e.coordinates.map(e=>({type:"LineString",coordinates:e})):"MultiPoint"===e.type?e.coordinates.map(e=>({type:"Point",coordinates:e})):[e]}class Er{constructor(e,t){this.type=Be,this.geojson=e,this.geometries=t}static parse(e,t){if(2!==e.length)return t.error(`'distance' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Ut(e[1])){const t=e[1];if("FeatureCollection"===t.type)return new Er(t,t.features.map(e=>Mr(e.geometry)).flat());if("Feature"===t.type)return new Er(t,Mr(t.geometry));if("type"in t&&"coordinates"in t)return new Er(t,Mr(t))}return t.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(null!=e.geometry()&&null!=e.canonicalID()){if("Point"===e.geometryType())return function(e,t){const i=e.geometry(),r=i.flat().map(t=>ki([t.x,t.y],e.canonical));if(0===i.length)return NaN;const n=new or(r[0][1]);let s=1/0;for(const o of t){switch(o.type){case"Point":s=Math.min(s,Ir(r,!1,[o.coordinates],!1,n,s));break;case"LineString":s=Math.min(s,Ir(r,!1,o.coordinates,!0,n,s));break;case"Polygon":s=Math.min(s,Pr(r,!1,o.coordinates,n,s))}if(0===s)return s}return s}(e,this.geometries);if("LineString"===e.geometryType())return function(e,t){const i=e.geometry(),r=i.flat().map(t=>ki([t.x,t.y],e.canonical));if(0===i.length)return NaN;const n=new or(r[0][1]);let s=1/0;for(const o of t){switch(o.type){case"Point":s=Math.min(s,Ir(r,!0,[o.coordinates],!1,n,s));break;case"LineString":s=Math.min(s,Ir(r,!0,o.coordinates,!0,n,s));break;case"Polygon":s=Math.min(s,Pr(r,!0,o.coordinates,n,s))}if(0===s)return s}return s}(e,this.geometries);if("Polygon"===e.geometryType())return function(e,t){const i=e.geometry();if(0===i.length||0===i[0].length)return NaN;const r=er(i,0).map(t=>t.map(t=>t.map(t=>ki([t.x,t.y],e.canonical)))),n=new or(r[0][0][0][1]);let s=1/0;for(const o of t)for(const e of r){switch(o.type){case"Point":s=Math.min(s,Pr([o.coordinates],!1,e,n,s));break;case"LineString":s=Math.min(s,Pr(o.coordinates,!0,e,n,s));break;case"Polygon":s=Math.min(s,wr(e,o.coordinates,n,s))}if(0===s)return s}return s}(e,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}class Cr{constructor(e){this.type=Ge,this.key=e}static parse(e,t){if(2!==e.length)return t.error(`Expected 1 argument, but found ${e.length-1} instead.`);const i=e[1];return null==i?t.error("Global state property must be defined."):"string"!=typeof i?t.error(`Global state property must be string, but found ${typeof e[1]} instead.`):new Cr(i)}evaluate(e){var t;const i=null===(t=e.globals)||void 0===t?void 0:t.globalState;return i&&0!==Object.keys(i).length?vt(i,this.key):null}eachChild(){}outputDefined(){return!1}}const Ar={"==":vi,"!=":bi,">":Ti,"<":wi,">=":Pi,"<=":Si,array:Wt,at:ti,boolean:Wt,case:si,coalesce:_i,collator:Ii,format:Ei,image:Ci,in:ii,"index-of":ri,interpolate:pi,"interpolate-hcl":pi,"interpolate-lab":pi,length:Ai,let:Qt,literal:Zt,match:ni,number:Wt,"number-format":Mi,object:Wt,slice:oi,step:li,string:Wt,"to-boolean":Xt,"to-color":Xt,"to-number":Xt,"to-string":Xt,var:ei,within:Xi,distance:Er,"global-state":Cr};class Dr{constructor(e,t,i,r){this.name=e,this.type=t,this._evaluate=i,this.args=r}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}static parse(e,t){const i=e[0],r=Dr.definitions[i];if(!r)return t.error(`Unknown expression "${i}". If you wanted a literal array, use ["literal", [...]].`,0);const n=Array.isArray(r)?r[0]:r.type,s=Array.isArray(r)?[[r[1],r[2]]]:r.overloads,o=s.filter(([t])=>!Array.isArray(t)||t.length===e.length-1);let a=null;for(const[l,c]of o){a=new Jt(t.registry,Fr,t.path,null,t.scope);const r=[];let s=!1;for(let t=1;t{return t=e,Array.isArray(t)?`(${t.map(Je).join(", ")})`:`(${Je(t.type)}...)`;var t}).join(" | "),r=[];for(let n=1;n{i=t?i&&Fr(e):i&&e instanceof Zt}),!!i&&Br(e)&&Vr(e,["zoom","heatmap-density","elevation","line-progress","accumulated","is-supported-script"])}function Br(e){if(e instanceof Dr){if("get"===e.name&&1===e.args.length)return!1;if("feature-state"===e.name)return!1;if("has"===e.name&&1===e.args.length)return!1;if("properties"===e.name||"geometry-type"===e.name||"id"===e.name)return!1;if(/^filter-/.test(e.name))return!1}if(e instanceof Xi)return!1;if(e instanceof Er)return!1;let t=!0;return e.eachChild(e=>{t&&!Br(e)&&(t=!1)}),t}function Or(e){if(e instanceof Dr&&"feature-state"===e.name)return!1;let t=!0;return e.eachChild(e=>{t&&!Or(e)&&(t=!1)}),t}function Vr(e,t){if(e instanceof Dr&&t.indexOf(e.name)>=0)return!1;let i=!0;return e.eachChild(e=>{i&&!Vr(e,t)&&(i=!1)}),i}function jr(e){return{result:"success",value:e}}function Nr(e){return{result:"error",value:e}}function Ur(e){return"data-driven"===e["property-type"]||"cross-faded-data-driven"===e["property-type"]}function Gr(e){return!!e.expression&&e.expression.parameters.indexOf("zoom")>-1}function qr(e){return!!e.expression&&e.expression.interpolated}function Zr(e){return e instanceof Number?"number":e instanceof String?"string":e instanceof Boolean?"boolean":Array.isArray(e)?"array":null===e?"null":typeof e}function $r(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&Gt(e)===Ue}function Wr(e){return e}function Hr(e,t){const i=e.stops&&"object"==typeof e.stops[0][0],r=i||!(i||void 0!==e.property),n=e.type||(qr(t)?"exponential":"interval"),s=function(e){switch(e.type){case"color":return Et.parse;case"padding":return kt.parse;case"numberArray":return Rt.parse;case"colorArray":return Lt.parse;default:return null}}(t);if(s&&((e=ke({},e)).stops&&(e.stops=e.stops.map(e=>[e[0],s(e[1])])),e.default=s(e.default?e.default:t.default)),e.colorSpace&&"rgb"!==(o=e.colorSpace)&&"hcl"!==o&&"lab"!==o)throw new Error(`Unknown color space: "${e.colorSpace}"`);var o;const a=function(e){switch(e){case"exponential":return Jr;case"interval":return Kr;case"categorical":return Yr;case"identity":return Qr;default:throw new Error(`Unknown function type "${e}"`)}}(n);let l,c;if("categorical"===n){l=Object.create(null);for(const t of e.stops)l[t[0]]=t[1];c=typeof e.stops[0][0]}if(i){const i={},r=[];for(let t=0;te[0]),evaluate:({zoom:i},r)=>Jr({stops:n,base:e.base},t,i).evaluate(i,r)}}if(r){const i="exponential"===n?{name:"exponential",base:void 0!==e.base?e.base:1}:null;return{kind:"camera",interpolationType:i,interpolationFactor:pi.interpolationFactor.bind(void 0,i),zoomStops:e.stops.map(e=>e[0]),evaluate:({zoom:i})=>a(e,t,i,l,c)}}return{kind:"source",evaluate(i,r){const n=r&&r.properties?r.properties[e.property]:void 0;return void 0===n?Xr(e.default,t.default):a(e,t,n,l,c)}}}function Xr(e,t,i){return void 0!==e?e:void 0!==t?t:void 0!==i?i:void 0}function Yr(e,t,i,r,n){return Xr(typeof i===n?r[i]:void 0,e.default,t.default)}function Kr(e,t,i){if("number"!==Zr(i))return Xr(e.default,t.default);const r=e.stops.length;if(1===r)return e.stops[0][1];if(i<=e.stops[0][0])return e.stops[0][1];if(i>=e.stops[r-1][0])return e.stops[r-1][1];const n=ai(e.stops.map(e=>e[0]),i);return e.stops[n][1]}function Jr(e,t,i){const r=void 0!==e.base?e.base:1;if("number"!==Zr(i))return Xr(e.default,t.default);const n=e.stops.length;if(1===n)return e.stops[0][1];if(i<=e.stops[0][0])return e.stops[0][1];if(i>=e.stops[n-1][0])return e.stops[n-1][1];const s=ai(e.stops.map(e=>e[0]),i),o=function(e,t,i,r){const n=r-i,s=e-i;return 0===n?0:1===t?s/n:(Math.pow(t,s)-1)/(Math.pow(t,n)-1)}(i,r,e.stops[s][0],e.stops[s+1][0]),a=e.stops[s][1],l=e.stops[s+1][1],c=mi[t.type]||Wr;return"function"==typeof a.evaluate?{evaluate(...t){const i=a.evaluate.apply(void 0,t),r=l.evaluate.apply(void 0,t);if(void 0!==i&&void 0!==r)return c(i,r,o,e.colorSpace)}}:c(a,l,o,e.colorSpace)}function Qr(e,t,i){switch(t.type){case"color":i=Et.parse(i);break;case"formatted":i=zt.fromString(i.toString());break;case"resolvedImage":i=Vt.fromString(i.toString());break;case"padding":i=kt.parse(i);break;case"colorArray":i=Lt.parse(i);break;case"numberArray":i=Rt.parse(i);break;default:Zr(i)===t.type||"enum"===t.type&&t.values[i]||(i=void 0)}return Xr(i,e.default,t.default)}Dr.register(Ar,{error:[{kind:"error"},[Oe],(e,[t])=>{throw new Ft(t.evaluate(e))}],typeof:[Oe,[Ge],(e,[t])=>Je(Gt(t.evaluate(e)))],"to-rgba":[Ke(Be,4),[je],(e,[t])=>{const[i,r,n,s]=t.evaluate(e).rgb;return[255*i,255*r,255*n,s]}],rgb:[je,[Be,Be,Be],zr],rgba:[je,[Be,Be,Be,Be],zr],has:{type:Ve,overloads:[[[Oe],(e,[t])=>kr(t.evaluate(e),e.properties())],[[Oe,Ue],(e,[t,i])=>kr(t.evaluate(e),i.evaluate(e))]]},get:{type:Ge,overloads:[[[Oe],(e,[t])=>Rr(t.evaluate(e),e.properties())],[[Oe,Ue],(e,[t,i])=>Rr(t.evaluate(e),i.evaluate(e))]]},"feature-state":[Ge,[Oe],(e,[t])=>Rr(t.evaluate(e),e.featureState||{})],properties:[Ue,[],e=>e.properties()],"geometry-type":[Oe,[],e=>e.geometryType()],id:[Ge,[],e=>e.id()],zoom:[Be,[],e=>e.globals.zoom],"heatmap-density":[Be,[],e=>e.globals.heatmapDensity||0],elevation:[Be,[],e=>e.globals.elevation||0],"line-progress":[Be,[],e=>e.globals.lineProgress||0],accumulated:[Ge,[],e=>void 0===e.globals.accumulated?null:e.globals.accumulated],"+":[Be,Lr(Be),(e,t)=>{let i=0;for(const r of t)i+=r.evaluate(e);return i}],"*":[Be,Lr(Be),(e,t)=>{let i=1;for(const r of t)i*=r.evaluate(e);return i}],"-":{type:Be,overloads:[[[Be,Be],(e,[t,i])=>t.evaluate(e)-i.evaluate(e)],[[Be],(e,[t])=>-t.evaluate(e)]]},"/":[Be,[Be,Be],(e,[t,i])=>t.evaluate(e)/i.evaluate(e)],"%":[Be,[Be,Be],(e,[t,i])=>t.evaluate(e)%i.evaluate(e)],ln2:[Be,[],()=>Math.LN2],pi:[Be,[],()=>Math.PI],e:[Be,[],()=>Math.E],"^":[Be,[Be,Be],(e,[t,i])=>Math.pow(t.evaluate(e),i.evaluate(e))],sqrt:[Be,[Be],(e,[t])=>Math.sqrt(t.evaluate(e))],log10:[Be,[Be],(e,[t])=>Math.log(t.evaluate(e))/Math.LN10],ln:[Be,[Be],(e,[t])=>Math.log(t.evaluate(e))],log2:[Be,[Be],(e,[t])=>Math.log(t.evaluate(e))/Math.LN2],sin:[Be,[Be],(e,[t])=>Math.sin(t.evaluate(e))],cos:[Be,[Be],(e,[t])=>Math.cos(t.evaluate(e))],tan:[Be,[Be],(e,[t])=>Math.tan(t.evaluate(e))],asin:[Be,[Be],(e,[t])=>Math.asin(t.evaluate(e))],acos:[Be,[Be],(e,[t])=>Math.acos(t.evaluate(e))],atan:[Be,[Be],(e,[t])=>Math.atan(t.evaluate(e))],min:[Be,Lr(Be),(e,t)=>Math.min(...t.map(t=>t.evaluate(e)))],max:[Be,Lr(Be),(e,t)=>Math.max(...t.map(t=>t.evaluate(e)))],abs:[Be,[Be],(e,[t])=>Math.abs(t.evaluate(e))],round:[Be,[Be],(e,[t])=>{const i=t.evaluate(e);return i<0?-Math.round(-i):Math.round(i)}],floor:[Be,[Be],(e,[t])=>Math.floor(t.evaluate(e))],ceil:[Be,[Be],(e,[t])=>Math.ceil(t.evaluate(e))],"filter-==":[Ve,[Oe,Ge],(e,[t,i])=>e.properties()[t.value]===i.value],"filter-id-==":[Ve,[Ge],(e,[t])=>e.id()===t.value],"filter-type-==":[Ve,[Oe],(e,[t])=>e.geometryType()===t.value],"filter-<":[Ve,[Oe,Ge],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r{const i=e.id(),r=t.value;return typeof i==typeof r&&i":[Ve,[Oe,Ge],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r>n}],"filter-id->":[Ve,[Ge],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i>r}],"filter-<=":[Ve,[Oe,Ge],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r<=n}],"filter-id-<=":[Ve,[Ge],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i<=r}],"filter->=":[Ve,[Oe,Ge],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r>=n}],"filter-id->=":[Ve,[Ge],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i>=r}],"filter-has":[Ve,[Ge],(e,[t])=>t.value in e.properties()],"filter-has-id":[Ve,[],e=>null!==e.id()&&void 0!==e.id()],"filter-type-in":[Ve,[Ke(Oe)],(e,[t])=>t.value.indexOf(e.geometryType())>=0],"filter-id-in":[Ve,[Ke(Ge)],(e,[t])=>t.value.indexOf(e.id())>=0],"filter-in-small":[Ve,[Oe,Ke(Ge)],(e,[t,i])=>i.value.indexOf(e.properties()[t.value])>=0],"filter-in-large":[Ve,[Oe,Ke(Ge)],(e,[t,i])=>function(e,t,i,r){for(;i<=r;){const n=i+r>>1;if(t[n]===e)return!0;t[n]>e?r=n-1:i=n+1}return!1}(e.properties()[t.value],i.value,0,i.value.length-1)],all:{type:Ve,overloads:[[[Ve,Ve],(e,[t,i])=>t.evaluate(e)&&i.evaluate(e)],[Lr(Ve),(e,t)=>{for(const i of t)if(!i.evaluate(e))return!1;return!0}]]},any:{type:Ve,overloads:[[[Ve,Ve],(e,[t,i])=>t.evaluate(e)||i.evaluate(e)],[Lr(Ve),(e,t)=>{for(const i of t)if(i.evaluate(e))return!0;return!1}]]},"!":[Ve,[Ve],(e,[t])=>!t.evaluate(e)],"is-supported-script":[Ve,[Oe],(e,[t])=>{const i=e.globals&&e.globals.isSupportedScript;return!i||i(t.evaluate(e))}],upcase:[Oe,[Oe],(e,[t])=>t.evaluate(e).toUpperCase()],downcase:[Oe,[Oe],(e,[t])=>t.evaluate(e).toLowerCase()],concat:[Oe,Lr(Ge),(e,t)=>t.map(t=>qt(t.evaluate(e))).join("")],"resolved-locale":[Oe,[qe],(e,[t])=>t.evaluate(e).resolvedLocale()]});class en{constructor(e,t,i){this.expression=e,this._warningHistory={},this._evaluator=new Kt,this._defaultValue=t?function(e){if("color"===e.type&&$r(e.default))return new Et(0,0,0,0);switch(e.type){case"color":return Et.parse(e.default)||null;case"padding":return kt.parse(e.default)||null;case"numberArray":return Rt.parse(e.default)||null;case"colorArray":return Lt.parse(e.default)||null;case"variableAnchorOffsetCollection":return Ot.parse(e.default)||null;case"projectionDefinition":return jt.parse(e.default)||null;default:return void 0===e.default?null:e.default}}(t):null,this._enumValues=t&&"enum"===t.type?t.values:null,this._globalState=i}evaluateWithoutErrorHandling(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=t,this._evaluator.featureState=i,this._evaluator.canonical=r,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=s,this.expression.evaluate(this._evaluator)}evaluate(e,t,i,r,n,s){this._globalState&&(e=hn(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=t||null,this._evaluator.featureState=i||null,this._evaluator.canonical=r,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=s||null;try{const e=this.expression.evaluate(this._evaluator);if(null==e||"number"==typeof e&&e!=e)return this._defaultValue;if(this._enumValues&&!(e in this._enumValues))throw new Ft(`Expected value to be one of ${Object.keys(this._enumValues).map(e=>JSON.stringify(e)).join(", ")}, but found ${JSON.stringify(e)} instead.`);return e}catch(o){return this._warningHistory[o.message]||(this._warningHistory[o.message]=!0),this._defaultValue}}}function tn(e){return Array.isArray(e)&&e.length>0&&"string"==typeof e[0]&&e[0]in Ar}function rn(e,t,i){const r=new Jt(Ar,Fr,[],t?function(e){const t={color:je,string:Oe,number:Be,enum:Oe,boolean:Ve,formatted:Ze,padding:$e,numberArray:He,colorArray:We,projectionDefinition:Ne,resolvedImage:Xe,variableAnchorOffsetCollection:Ye};return"array"===e.type?Ke(t[e.value]||Ge,e.length):t[e.type]}(t):void 0),n=r.parse(e,void 0,void 0,void 0,t&&"string"===t.type?{typeAnnotation:"coerce"}:void 0);return n?jr(new en(n,t,i)):Nr(r.errors)}class nn{constructor(e,t,i){this.kind=e,this._styleExpression=t,this.isStateDependent="constant"!==e&&!Or(t.expression),this.globalStateRefs=cn(t.expression),this._globalState=i}evaluateWithoutErrorHandling(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,t,i,r,n,s)}evaluate(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluate(e,t,i,r,n,s)}}class sn{constructor(e,t,i,r,n){this.kind=e,this.zoomStops=i,this._styleExpression=t,this.isStateDependent="camera"!==e&&!Or(t.expression),this.globalStateRefs=cn(t.expression),this.interpolationType=r,this._globalState=n}evaluateWithoutErrorHandling(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,t,i,r,n,s)}evaluate(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluate(e,t,i,r,n,s)}interpolationFactor(e,t,i){return this.interpolationType?pi.interpolationFactor(this.interpolationType,e,t,i):0}}function on(e,t,i){const r=rn(e,t,i);if("error"===r.result)return r;const n=r.value.expression,s=Br(n);if(!s&&!Ur(t))return Nr([new Re("","data expressions not supported")]);const o=Vr(n,["zoom"]);if(!o&&!Gr(t))return Nr([new Re("","zoom expressions not supported")]);const a=ln(n);return a||o?a instanceof Re?Nr([a]):a instanceof pi&&!qr(t)?Nr([new Re("",'"interpolate" expressions cannot be used with this property')]):jr(a?new sn(s?"camera":"composite",r.value,a.labels,a instanceof pi?a.interpolation:void 0,i):new nn(s?"constant":"source",r.value,i)):Nr([new Re("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class an{constructor(e,t){this._parameters=e,this._specification=t,ke(this,Hr(this._parameters,this._specification))}static deserialize(e){return new an(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function ln(e){let t=null;if(e instanceof Qt)t=ln(e.result);else if(e instanceof _i){for(const i of e.args)if(t=ln(i),t)break}else(e instanceof li||e instanceof pi)&&e.input instanceof Dr&&"zoom"===e.input.name&&(t=e);return t instanceof Re||e.eachChild(e=>{const i=ln(e);i instanceof Re?t=i:!t&&i?t=new Re("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):t&&i&&t!==i&&(t=new Re("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),t}function cn(e,t=new Set){return e instanceof Cr&&t.add(e.key),e.eachChild(e=>{cn(e,t)}),t}function hn(e,t){const{zoom:i,heatmapDensity:r,elevation:n,lineProgress:s,isSupportedScript:o,accumulated:a}=null!=e?e:{};return{zoom:i,heatmapDensity:r,elevation:n,lineProgress:s,isSupportedScript:o,accumulated:a,globalState:t}}function un(e){if(!0===e||!1===e)return!0;if(!Array.isArray(e)||0===e.length)return!1;switch(e[0]){case"has":return e.length>=2&&"$id"!==e[1]&&"$type"!==e[1];case"in":return e.length>=3&&("string"!=typeof e[1]||Array.isArray(e[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==e.length||Array.isArray(e[1])||Array.isArray(e[2]);case"any":case"all":for(const t of e.slice(1))if(!un(t)&&"boolean"!=typeof t)return!1;return!0;default:return!0}}const dn={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function pn(e,t){if(null==e)return{filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set};un(e)||(e=_n(e));const i=rn(e,dn,t);if("error"===i.result)throw new Error(i.value.map(e=>`${e.key}: ${e.message}`).join(", "));return{filter:(e,t,r)=>i.value.evaluate(e,t,{},r),needGeometry:mn(e),getGlobalStateRefs:()=>cn(i.value.expression)}}function fn(e,t){return et?1:0}function mn(e){if(!Array.isArray(e))return!1;if("within"===e[0]||"distance"===e[0])return!0;for(let t=1;t"===t||"<="===t||">="===t?gn(e[1],e[2],t):"any"===t?(i=e.slice(1),["any"].concat(i.map(_n))):"all"===t?["all"].concat(e.slice(1).map(_n)):"none"===t?["all"].concat(e.slice(1).map(_n).map(vn)):"in"===t?yn(e[1],e.slice(2)):"!in"===t?vn(yn(e[1],e.slice(2))):"has"===t?xn(e[1]):"!has"!==t||vn(xn(e[1]));var i}function gn(e,t,i){switch(e){case"$type":return[`filter-type-${i}`,t];case"$id":return[`filter-id-${i}`,t];default:return[`filter-${i}`,e,t]}}function yn(e,t){if(0===t.length)return!1;switch(e){case"$type":return["filter-type-in",["literal",t]];case"$id":return["filter-id-in",["literal",t]];default:return t.length>200&&!t.some(e=>typeof e!=typeof t[0])?["filter-in-large",e,["literal",t.sort(fn)]]:["filter-in-small",e,["literal",t]]}}function xn(e){switch(e){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",e]}}function vn(e){return["!",e]}function bn(e){const t=typeof e;if("number"===t||"boolean"===t||"string"===t||null==e)return JSON.stringify(e);if(Array.isArray(e)){let t="[";for(const i of e)t+=`${bn(i)},`;return`${t}]`}const i=Object.keys(e).sort();let r="{";for(let n=0;nr.maximum?[new ze(t,i,`${i} is greater than the maximum value ${r.maximum}`)]:[]}function Cn(e){const t=e.valueSpec,i=Sn(e.value.type);let r,n,s,o={};const a="categorical"!==i&&void 0===e.value.property,l=!a,c="array"===Zr(e.value.stops)&&"array"===Zr(e.value.stops[0])&&"object"===Zr(e.value.stops[0][0]),h=In({key:e.key,value:e.value,valueSpec:e.styleSpec.function,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{stops:function(e){if("identity"===i)return[new ze(e.key,e.value,'identity function may not have a "stops" property')];let t=[];const r=e.value;return t=t.concat(Mn({key:e.key,value:r,valueSpec:e.valueSpec,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec,arrayElementValidator:u})),"array"===Zr(r)&&0===r.length&&t.push(new ze(e.key,r,"array must have at least one stop")),t},default:function(e){return e.validateSpec({key:e.key,value:e.value,valueSpec:t,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec})}}});return"identity"===i&&a&&h.push(new ze(e.key,e.value,'missing required property "property"')),"identity"===i||e.value.stops||h.push(new ze(e.key,e.value,'missing required property "stops"')),"exponential"===i&&e.valueSpec.expression&&!qr(e.valueSpec)&&h.push(new ze(e.key,e.value,"exponential functions not supported")),e.styleSpec.$version>=8&&(l&&!Ur(e.valueSpec)?h.push(new ze(e.key,e.value,"property functions not supported")):a&&!Gr(e.valueSpec)&&h.push(new ze(e.key,e.value,"zoom functions not supported"))),"categorical"!==i&&!c||void 0!==e.value.property||h.push(new ze(e.key,e.value,'"property" property is required')),h;function u(e){let i=[];const r=e.value,a=e.key;if("array"!==Zr(r))return[new ze(a,r,`array expected, ${Zr(r)} found`)];if(2!==r.length)return[new ze(a,r,`array length 2 expected, length ${r.length} found`)];if(c){if("object"!==Zr(r[0]))return[new ze(a,r,`object expected, ${Zr(r[0])} found`)];if(void 0===r[0].zoom)return[new ze(a,r,"object stop key must have zoom")];if(void 0===r[0].value)return[new ze(a,r,"object stop key must have value")];if(s&&s>Sn(r[0].zoom))return[new ze(a,r[0].zoom,"stop zoom values must appear in ascending order")];Sn(r[0].zoom)!==s&&(s=Sn(r[0].zoom),n=void 0,o={}),i=i.concat(In({key:`${a}[0]`,value:r[0],valueSpec:{zoom:{}},validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{zoom:En,value:d}}))}else i=i.concat(d({key:`${a}[0]`,value:r[0],validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec},r));return tn(Pn(r[1]))?i.concat([new ze(`${a}[1]`,r[1],"expressions are not allowed in function stops.")]):i.concat(e.validateSpec({key:`${a}[1]`,value:r[1],valueSpec:t,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec}))}function d(e,s){const a=Zr(e.value),l=Sn(e.value),c=null!==e.value?e.value:s;if(r){if(a!==r)return[new ze(e.key,c,`${a} stop domain type must match previous stop domain type ${r}`)]}else r=a;if("number"!==a&&"string"!==a&&"boolean"!==a)return[new ze(e.key,c,"stop domain value must be a number, string, or boolean")];if("number"!==a&&"categorical"!==i){let r=`number expected, ${a} found`;return Ur(t)&&void 0===i&&(r+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new ze(e.key,c,r)]}return"categorical"!==i||"number"!==a||isFinite(l)&&Math.floor(l)===l?"categorical"!==i&&"number"===a&&void 0!==n&&lnew ze(`${e.key}${t.key}`,e.value,t.message));const i=t.value.expression||t.value._styleExpression.expression;if("property"===e.expressionContext&&"text-font"===e.propertyKey&&!i.outputDefined())return[new ze(e.key,e.value,`Invalid data expression for "${e.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===e.expressionContext&&"layout"===e.propertyType&&!Or(i))return[new ze(e.key,e.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===e.expressionContext&&!Or(i))return[new ze(e.key,e.value,'"feature-state" data expressions are not supported with filters.')];if(e.expressionContext&&0===e.expressionContext.indexOf("cluster")){if(!Vr(i,["zoom","feature-state"]))return[new ze(e.key,e.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===e.expressionContext&&!Br(i))return[new ze(e.key,e.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function Dn(e){const t=e.key,i=e.value,r=Zr(i);return"string"!==r?[new ze(t,i,`color expected, ${r} found`)]:Et.parse(String(i))?[]:[new ze(t,i,`color expected, "${i}" found`)]}function zn(e){const t=e.key,i=e.value,r=e.valueSpec,n=[];return Array.isArray(r.values)?-1===r.values.indexOf(Sn(i))&&n.push(new ze(t,i,`expected one of [${r.values.join(", ")}], ${JSON.stringify(i)} found`)):-1===Object.keys(r.values).indexOf(Sn(i))&&n.push(new ze(t,i,`expected one of [${Object.keys(r.values).join(", ")}], ${JSON.stringify(i)} found`)),n}function kn(e){return un(Pn(e.value))?An(ke({},e,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Rn(e)}function Rn(e){const t=e.value,i=e.key;if("array"!==Zr(t))return[new ze(i,t,`array expected, ${Zr(t)} found`)];const r=e.styleSpec;let n,s=[];if(t.length<1)return[new ze(i,t,"filter array must have at least 1 element")];switch(s=s.concat(zn({key:`${i}[0]`,value:t[0],valueSpec:r.filter_operator,style:e.style,styleSpec:e.styleSpec})),Sn(t[0])){case"<":case"<=":case">":case">=":t.length>=2&&"$type"===Sn(t[1])&&s.push(new ze(i,t,`"$type" cannot be use with operator "${t[0]}"`));case"==":case"!=":3!==t.length&&s.push(new ze(i,t,`filter array for operator "${t[0]}" must have 3 elements`));case"in":case"!in":t.length>=2&&(n=Zr(t[1]),"string"!==n&&s.push(new ze(`${i}[1]`,t[1],`string expected, ${n} found`)));for(let o=2;o{e in i&&t.push(new ze(r,i[e],`"${e}" is prohibited for ref layers`))}),n.layers.forEach(t=>{Sn(t.id)===a&&(e=t)}),e?e.ref?t.push(new ze(r,i.ref,"ref cannot reference another ref layer")):o=Sn(e.type):t.push(new ze(r,i.ref,`ref layer "${a}" not found`))}else if("background"!==o)if(i.source){const e=n.sources&&n.sources[i.source],s=e&&Sn(e.type);e?"vector"===s&&"raster"===o?t.push(new ze(r,i.source,`layer "${i.id}" requires a raster source`)):"raster-dem"!==s&&"hillshade"===o||"raster-dem"!==s&&"color-relief"===o?t.push(new ze(r,i.source,`layer "${i.id}" requires a raster-dem source`)):"raster"===s&&"raster"!==o?t.push(new ze(r,i.source,`layer "${i.id}" requires a vector source`)):"vector"!==s||i["source-layer"]?"raster-dem"===s&&"hillshade"!==o&&"color-relief"!==o?t.push(new ze(r,i.source,"raster-dem source can only be used with layer type 'hillshade' or 'color-relief'.")):"line"!==o||!i.paint||!i.paint["line-gradient"]||"geojson"===s&&e.lineMetrics||t.push(new ze(r,i,`layer "${i.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):t.push(new ze(r,i,`layer "${i.id}" must specify a "source-layer"`)):t.push(new ze(r,i.source,`source "${i.source}" not found`))}else t.push(new ze(r,i,'missing required property "source"'));return t=t.concat(In({key:r,value:i,valueSpec:s.layer,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,objectElementValidators:{"*":()=>[],type:()=>e.validateSpec({key:`${r}.type`,value:i.type,valueSpec:s.layer.type,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,object:i,objectKey:"type"}),filter:kn,layout:e=>In({layer:i,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,objectElementValidators:{"*":e=>Bn(ke({layerType:o},e))}}),paint:e=>In({layer:i,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,objectElementValidators:{"*":e=>Fn(ke({layerType:o},e))}})}})),t}function Vn(e){const t=e.value,i=e.key,r=Zr(t);return"string"!==r?[new ze(i,t,`string expected, ${r} found`)]:[]}const jn={promoteId:function({key:e,value:t}){if("string"===Zr(t))return Vn({key:e,value:t});{const i=[];for(const r in t)i.push(...Vn({key:`${e}.${r}`,value:t[r]}));return i}}};function Nn(e){const t=e.value,i=e.key,r=e.styleSpec,n=e.style,s=e.validateSpec;if(!t.type)return[new ze(i,t,'"type" is required')];const o=Sn(t.type);let a;switch(o){case"vector":case"raster":return a=In({key:i,value:t,valueSpec:r[`source_${o.replace("-","_")}`],style:e.style,styleSpec:r,objectElementValidators:jn,validateSpec:s}),a;case"raster-dem":return a=function(e){var t;const i=null!==(t=e.sourceName)&&void 0!==t?t:"",r=e.value,n=e.styleSpec,s=n.source_raster_dem,o=e.style;let a=[];const l=Zr(r);if(void 0===r)return a;if("object"!==l)return a.push(new ze("source_raster_dem",r,`object expected, ${l} found`)),a;const c="custom"===Sn(r.encoding),h=["redFactor","greenFactor","blueFactor","baseShift"],u=e.value.encoding?`"${e.value.encoding}"`:"Default";for(const d in r)!c&&h.includes(d)?a.push(new ze(d,r[d],`In "${i}": "${d}" is only valid when "encoding" is set to "custom". ${u} encoding found`)):s[d]?a=a.concat(e.validateSpec({key:d,value:r[d],valueSpec:s[d],validateSpec:e.validateSpec,style:o,styleSpec:n})):a.push(new ze(d,r[d],`unknown property "${d}"`));return a}({sourceName:i,value:t,style:e.style,styleSpec:r,validateSpec:s}),a;case"geojson":if(a=In({key:i,value:t,valueSpec:r.source_geojson,style:n,styleSpec:r,validateSpec:s,objectElementValidators:jn}),t.cluster)for(const e in t.clusterProperties){const[r,n]=t.clusterProperties[e],s="string"==typeof r?[r,["accumulated"],["get",e]]:r;a.push(...An({key:`${i}.${e}.map`,value:n,expressionContext:"cluster-map"})),a.push(...An({key:`${i}.${e}.reduce`,value:s,expressionContext:"cluster-reduce"}))}return a;case"video":return In({key:i,value:t,valueSpec:r.source_video,style:n,validateSpec:s,styleSpec:r});case"image":return In({key:i,value:t,valueSpec:r.source_image,style:n,validateSpec:s,styleSpec:r});case"canvas":return[new ze(i,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return zn({key:`${i}.type`,value:t.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]}})}}function Un(e){const t=e.value,i=e.styleSpec,r=i.light,n=e.style;let s=[];const o=Zr(t);if(void 0===t)return s;if("object"!==o)return s=s.concat([new ze("light",t,`object expected, ${o} found`)]),s;for(const a in t){const o=a.match(/^(.*)-transition$/);s=s.concat(o&&r[o[1]]&&r[o[1]].transition?e.validateSpec({key:a,value:t[a],valueSpec:i.transition,validateSpec:e.validateSpec,style:n,styleSpec:i}):r[a]?e.validateSpec({key:a,value:t[a],valueSpec:r[a],validateSpec:e.validateSpec,style:n,styleSpec:i}):[new ze(a,t[a],`unknown property "${a}"`)])}return s}function Gn(e){const t=e.value,i=e.styleSpec,r=i.sky,n=e.style,s=Zr(t);if(void 0===t)return[];if("object"!==s)return[new ze("sky",t,`object expected, ${s} found`)];let o=[];for(const a in t)o=o.concat(r[a]?e.validateSpec({key:a,value:t[a],valueSpec:r[a],style:n,styleSpec:i}):[new ze(a,t[a],`unknown property "${a}"`)]);return o}function qn(e){const t=e.value,i=e.styleSpec,r=i.terrain,n=e.style;let s=[];const o=Zr(t);if(void 0===t)return s;if("object"!==o)return s=s.concat([new ze("terrain",t,`object expected, ${o} found`)]),s;for(const a in t)s=s.concat(r[a]?e.validateSpec({key:a,value:t[a],valueSpec:r[a],validateSpec:e.validateSpec,style:n,styleSpec:i}):[new ze(a,t[a],`unknown property "${a}"`)]);return s}function Zn(e){let t=[];const i=e.value,r=e.key;if(Array.isArray(i)){const n=[],s=[];for(const o in i)i[o].id&&n.includes(i[o].id)&&t.push(new ze(r,i,`all the sprites' ids must be unique, but ${i[o].id} is duplicated`)),n.push(i[o].id),i[o].url&&s.includes(i[o].url)&&t.push(new ze(r,i,`all the sprites' URLs must be unique, but ${i[o].url} is duplicated`)),s.push(i[o].url),t=t.concat(In({key:`${r}[${o}]`,value:i[o],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:e.validateSpec}));return t}return Vn({key:r,value:i})}function $n(e){return Boolean(e)&&e.constructor===Object}function Wn(e){return $n(e.value)?[]:[new ze(e.key,e.value,`object expected, ${Zr(e.value)} found`)]}const Hn={"*":()=>[],array:Mn,boolean:function(e){const t=e.value,i=e.key,r=Zr(t);return"boolean"!==r?[new ze(i,t,`boolean expected, ${r} found`)]:[]},number:En,color:Dn,constants:Tn,enum:zn,filter:kn,function:Cn,layer:On,object:In,source:Nn,light:Un,sky:Gn,terrain:qn,projection:function(e){const t=e.value,i=e.styleSpec,r=i.projection,n=e.style,s=Zr(t);if(void 0===t)return[];if("object"!==s)return[new ze("projection",t,`object expected, ${s} found`)];let o=[];for(const a in t)o=o.concat(r[a]?e.validateSpec({key:a,value:t[a],valueSpec:r[a],style:n,styleSpec:i}):[new ze(a,t[a],`unknown property "${a}"`)]);return o},projectionDefinition:function(e){const t=e.key;let i=e.value;i=i instanceof String?i.valueOf():i;const r=Zr(i);return"array"!==r||(n=i,Array.isArray(n)&&3===n.length&&"string"==typeof n[0]&&"string"==typeof n[1]&&"number"==typeof n[2])||function(e){return!!["interpolate","step","literal"].includes(e[0])}(i)?["array","string"].includes(r)?[]:[new ze(t,i,`projection expected, invalid type "${r}" found`)]:[new ze(t,i,`projection expected, invalid array ${JSON.stringify(i)} found`)];var n},string:Vn,formatted:function(e){return 0===Vn(e).length?[]:An(e)},resolvedImage:function(e){return 0===Vn(e).length?[]:An(e)},padding:function(e){const t=e.key,i=e.value;if("array"===Zr(i)){if(i.length<1||i.length>4)return[new ze(t,i,`padding requires 1 to 4 values; ${i.length} values found`)];const r={type:"number"};let n=[];for(let s=0;s[]}})),e.constants&&(i=i.concat(Tn({key:"constants",value:e.constants}))),Qn(i)}function Jn(e){return function(t){return e(Object.assign({},t,{validateSpec:Xn}))}}function Qn(e){return[].concat(e).sort((e,t)=>e.line-t.line)}function es(e){return function(...t){return Qn(e.apply(this,t))}}Kn.source=es(Jn(Nn)),Kn.sprite=es(Jn(Zn)),Kn.glyphs=es(Jn(Yn)),Kn.light=es(Jn(Un)),Kn.sky=es(Jn(Gn)),Kn.terrain=es(Jn(qn)),Kn.state=es(Jn(Wn)),Kn.layer=es(Jn(On)),Kn.filter=es(Jn(kn)),Kn.paintProperty=es(Jn(Fn)),Kn.layoutProperty=es(Jn(Bn));const ts={type:"enum","property-type":"data-constant",expression:{interpolated:!1,parameters:["global-state"]},values:{visible:{},none:{}},transition:!1,default:"visible"};class is{constructor(e,t){this._globalState=t,this.setValue(e)}evaluate(){var e;return null!==(e=this._literalValue)&&void 0!==e?e:this._compiledValue.evaluate({})}setValue(e){if(null==e||"visible"===e||"none"===e)return this._literalValue="none"===e?"none":"visible",this._compiledValue=void 0,void(this._globalStateRefs=new Set);const t=rn(e,ts,this._globalState);if("error"===t.result)throw this._literalValue="visible",this._compiledValue=void 0,new Error(t.value.map(e=>`${e.key}: ${e.message}`).join(", "));this._literalValue=void 0,this._compiledValue=t.value,this._globalStateRefs=cn(t.value.expression)}getGlobalStateRefs(){return this._globalStateRefs}}const rs=ve,ns=Kn,ss=ns.light,os=ns.sky,as=ns.paintProperty,ls=ns.layoutProperty;function cs(e,t){let i=!1;if(t&&t.length)for(const r of t)e.fire(new ye(new Error(r.message))),i=!0;return i}class hs{constructor(e,t,i){const r=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;const n=new Int32Array(this.arrayBuffer);e=n[0],this.d=(t=n[1])+2*(i=n[2]);for(let e=0;e=c[l+0]&&r>=c[l+1])?(o[u]=!0,s.push(n[u])):o[u]=!1}}}}_forEachCell(e,t,i,r,n,s,o,a){const l=this._convertToCellCoord(e),c=this._convertToCellCoord(t),h=this._convertToCellCoord(i),u=this._convertToCellCoord(r);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++){const c=this.d*l+d;if((!a||a(this._convertFromCellCoord(d),this._convertFromCellCoord(l),this._convertFromCellCoord(d+1),this._convertFromCellCoord(l+1)))&&n.call(this,e,t,i,r,c,s,o,a))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;const e=this.cells,t=3+this.cells.length+1+1;let i=0;for(let s=0;s=0)continue;const s=e[r];n[r]=us[i].shallow.indexOf(r)>=0?s:_s(s,t)}e instanceof Error&&(n.message=e.message)}if(n.$name)throw new Error("$name property is reserved for worker serialization logic.");return"Object"!==i&&(n.$name=i),n}function gs(e){if(ms(e))return e;if(Array.isArray(e))return e.map(gs);if("object"!=typeof e)throw new Error("can't deserialize object of type "+typeof e);const t=fs(e)||"Object";if(!us[t])throw new Error(`can't deserialize unregistered class ${t}`);const{klass:i}=us[t];if(!i)throw new Error(`can't deserialize unregistered class ${t}`);if(i.deserialize)return i.deserialize(e);const r=Object.create(i.prototype);for(const n of Object.keys(e)){if("$name"===n)continue;const i=e[n];r[n]=us[t].shallow.indexOf(n)>=0?i:gs(i)}return r}class ys{constructor(){this.first=!0}update(e,t){const i=Math.floor(e);return this.first?(this.first=!1,this.lastIntegerZoom=i,this.lastIntegerZoomTime=0,this.lastZoom=e,this.lastFloorZoom=i,!0):(this.lastFloorZoom>i?(this.lastIntegerZoom=i+1,this.lastIntegerZoomTime=t):this.lastFloorZoom{try{return new RegExp(`\\p{sc=${e}}`,"u").source}catch(t){return null}}).filter(e=>e);return new RegExp(t.join("|"),"u")}const Ps=Ss(["Arab","Dupl","Mong","Ougr","Syrc"]);function Is(e){return!Ps.test(String.fromCodePoint(e))}function Ms(e){return!(vs(e)||(t=e,/[\xA7\xA9\xAE\xB1\xBC-\xBE\xD7\xF7\u2016\u2020\u2021\u2030\u2031\u203B\u203C\u2042\u2047-\u2049\u2051\u2100-\u218F\u221E\u2234\u2235\u2300-\u2307\u230C-\u231F\u2324-\u2328\u232B\u237D-\u239A\u23BE-\u23CD\u23CF\u23D1-\u23DB\u23E2-\u2422\u2424-\u24FF\u25A0-\u2619\u2620-\u2767\u2776-\u2793\u2B12-\u2B2F\u2B50-\u2B59\u2BB8-\u2BEB\u3000-\u303F\u30A0-\u30FF\uE000-\uF8FF\uFE30-\uFE6F\uFF00-\uFFEF\uFFFC\uFFFD]|[\uDB80-\uDBFF][\uDC00-\uDFFF]/gim.test(String.fromCodePoint(t))));var t}const Es=Ss(["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 Cs(e){return Es.test(String.fromCodePoint(e))}function As(e,t){return!(!t&&Cs(e)||/[\u0900-\u0DFF\u0F00-\u109F\u1780-\u17FF]/gim.test(String.fromCodePoint(e)))}function Ds(e){for(const t of e)if(Cs(t.codePointAt(0)))return!0;return!1}const zs=new class{constructor(){this.TIMEOUT=5e3,this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null,this.loadScriptResolve=()=>{}}setState(e){this.pluginStatus=e.pluginStatus,this.pluginURL=e.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(e){if(zs.isParsed())throw new Error("RTL text plugin already registered.");this.applyArabicShaping=e.applyArabicShaping,this.processBidirectionalText=e.processBidirectionalText,this.processStyledBidirectionalText=e.processStyledBidirectionalText,this.loadScriptResolve()}isParsed(){return null!=this.applyArabicShaping&&null!=this.processBidirectionalText&&null!=this.processStyledBidirectionalText}getRTLTextPluginStatus(){return this.pluginStatus}syncState(e,t){return i(this,void 0,void 0,function*(){if(this.isParsed())return this.getState();if("loading"!==e.pluginStatus)return this.setState(e),e;const i=e.pluginURL,r=new Promise(e=>{this.loadScriptResolve=e});t(i);const n=new Promise(e=>setTimeout(()=>e(),this.TIMEOUT));if(yield Promise.race([r,n]),this.isParsed()){const e={pluginStatus:"loaded",pluginURL:i};return this.setState(e),e}throw this.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${i}`)})}};class ks{constructor(e,t){this.isSupportedScript=Rs,this.zoom=e,t?(this.now=t.now||0,this.fadeDuration=t.fadeDuration||0,this.zoomHistory=t.zoomHistory||new ys,this.transition=t.transition||{}):(this.now=0,this.fadeDuration=0,this.zoomHistory=new ys,this.transition={})}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const e=this.zoom,t=e-Math.floor(e),i=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:t+(1-t)*i}:{fromScale:.5,toScale:1,t:1-(1-i)*t}}}function Rs(e){return function(e,t){for(const i of e)if(!As(i.codePointAt(0),t))return!1;return!0}(e,"loaded"===zs.getRTLTextPluginStatus())}const Ls="-transition";class Fs{constructor(e,t,i){this.property=e,this.value=t,this.expression=function(e,t,i){if($r(e))return new an(e,t);if(tn(e)){const r=on(e,t,i);if("error"===r.result)throw new Error(r.value.map(e=>`${e.key}: ${e.message}`).join(", "));return r.value}{let i=e;return"color"===t.type&&"string"==typeof e?i=Et.parse(e):"padding"!==t.type||"number"!=typeof e&&!Array.isArray(e)?"numberArray"!==t.type||"number"!=typeof e&&!Array.isArray(e)?"colorArray"!==t.type||"string"!=typeof e&&!Array.isArray(e)?"variableAnchorOffsetCollection"===t.type&&Array.isArray(e)?i=Ot.parse(e):"projectionDefinition"===t.type&&"string"==typeof e&&(i=jt.parse(e)):i=Lt.parse(e):i=Rt.parse(e):i=kt.parse(e),{globalStateRefs:new Set,_globalState:null,kind:"constant",evaluate:()=>i}}}(void 0===t?e.specification.default:t,e.specification,i)}isDataDriven(){return"source"===this.expression.kind||"composite"===this.expression.kind}getGlobalStateRefs(){return this.expression.globalStateRefs||new Set}possiblyEvaluate(e,t,i){return this.property.possiblyEvaluate(this,e,t,i)}}class Bs{constructor(e,t){this.property=e,this.value=new Fs(e,void 0,t)}transitioned(e,t){return new Vs(this.property,this.value,t,V({},e.transition,this.transition),e.now)}untransitioned(){return new Vs(this.property,this.value,null,{},0)}}class Os{constructor(e,t){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues),this._globalState=t}getValue(e){return G(this._values[e].value.value)}setValue(e,t){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new Bs(this._values[e].property,this._globalState)),this._values[e].value=new Fs(this._values[e].property,null===t?void 0:G(t),this._globalState)}getTransition(e){return G(this._values[e].transition)}setTransition(e,t){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new Bs(this._values[e].property,this._globalState)),this._values[e].transition=G(t)||void 0}serialize(){const e={};for(const t of Object.keys(this._values)){const i=this.getValue(t);void 0!==i&&(e[t]=i);const r=this.getTransition(t);void 0!==r&&(e[`${t}${Ls}`]=r)}return e}transitioned(e,t){const i=new js(this._properties);for(const r of Object.keys(this._values))i._values[r]=this._values[r].transitioned(e,t._values[r]);return i}untransitioned(){const e=new js(this._properties);for(const t of Object.keys(this._values))e._values[t]=this._values[t].untransitioned();return e}}class Vs{constructor(e,t,i,r,n){this.property=e,this.value=t,this.begin=n+r.delay||0,this.end=this.begin+r.duration||0,e.specification.transition&&(r.delay||r.duration)&&(this.prior=i)}possiblyEvaluate(e,t,i){const r=e.now||0,n=this.value.possiblyEvaluate(e,t,i),s=this.prior;if(s){if(r>this.end)return this.prior=null,n;if(this.value.isDataDriven())return this.prior=null,n;if(rr.zoomHistory.lastIntegerZoom?{from:e,to:t}:{from:i,to:t}}interpolate(e){return e}}class Ws{constructor(e){this.specification=e}possiblyEvaluate(e,t,i,r){if(void 0!==e.value){if("constant"===e.expression.kind){const n=e.expression.evaluate(t,null,{},i,r);return this._calculate(n,n,n,t)}return this._calculate(e.expression.evaluate(new ks(Math.floor(t.zoom-1),t)),e.expression.evaluate(new ks(Math.floor(t.zoom),t)),e.expression.evaluate(new ks(Math.floor(t.zoom+1),t)),t)}}_calculate(e,t,i,r){return r.zoom>r.zoomHistory.lastIntegerZoom?{from:e,to:t}:{from:i,to:t}}interpolate(e){return e}}class Hs{constructor(e){this.specification=e}possiblyEvaluate(e,t,i,r){return!!e.expression.evaluate(t,null,{},i,r)}interpolate(){return!1}}class Xs{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const t in e){const i=e[t];i.specification.overridable&&this.overridableProperties.push(t);const r=this.defaultPropertyValues[t]=new Fs(i,void 0,void 0),n=this.defaultTransitionablePropertyValues[t]=new Bs(i,void 0);this.defaultTransitioningPropertyValues[t]=n.untransitioned(),this.defaultPossiblyEvaluatedValues[t]=r.possiblyEvaluate({})}}}ds("DataDrivenProperty",Zs),ds("DataConstantProperty",qs),ds("CrossFadedDataDrivenProperty",$s),ds("CrossFadedProperty",Ws),ds("ColorRampProperty",Hs);class Ys extends xe{constructor(e,t,i){if(super(),this.id=e.id,this.type=e.type,this._globalState=i,this._featureFilter={filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set},"custom"!==e.type&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,this._visibilityExpression=(r=this.visibility,new is(r,i)),"background"!==e.type&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter,this._featureFilter=pn(e.filter,i)),t.layout&&(this._unevaluatedLayout=new Ns(t.layout,i)),t.paint)){this._transitionablePaint=new Os(t.paint,i);for(const t in e.paint)this.setPaintProperty(t,e.paint[t],{validate:!1});for(const t in e.layout)this.setLayoutProperty(t,e.layout[t],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Gs(t.paint)}var r}setFilter(e){this.filter=e,this._featureFilter=pn(e,this._globalState)}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){return"visibility"===e?this.visibility:this._unevaluatedLayout.getValue(e)}getLayoutAffectingGlobalStateRefs(){const e=new Set;for(const t of this._visibilityExpression.getGlobalStateRefs())e.add(t);if(this._unevaluatedLayout)for(const t in this._unevaluatedLayout._values){const i=this._unevaluatedLayout._values[t];for(const t of i.getGlobalStateRefs())e.add(t)}for(const t of this._featureFilter.getGlobalStateRefs())e.add(t);return e}getPaintAffectingGlobalStateRefs(){var e;const t=new globalThis.Map;if(this._transitionablePaint)for(const i in this._transitionablePaint._values){const r=this._transitionablePaint._values[i].value;for(const n of r.getGlobalStateRefs()){const s=null!==(e=t.get(n))&&void 0!==e?e:[];s.push({name:i,value:r.value}),t.set(n,s)}}return t}getVisibilityAffectingGlobalStateRefs(){return this._visibilityExpression.getGlobalStateRefs()}setLayoutProperty(e,t,i={}){if(null==t||!this._validate(ls,`layers.${this.id}.layout.${e}`,e,t,i))return"visibility"===e?(this.visibility=t,this._visibilityExpression.setValue(t),void this.recalculateVisibility()):void this._unevaluatedLayout.setValue(e,t)}getPaintProperty(e){return e.endsWith(Ls)?this._transitionablePaint.getTransition(e.slice(0,-11)):this._transitionablePaint.getValue(e)}setPaintProperty(e,t,i={}){if(null!=t&&this._validate(as,`layers.${this.id}.paint.${e}`,e,t,i))return!1;if(e.endsWith(Ls))return this._transitionablePaint.setTransition(e.slice(0,-11),t||void 0),!1;{const i=this._transitionablePaint._values[e],r="cross-faded-data-driven"===i.property.specification["property-type"],n=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(e,t),this._handleSpecialPaintPropertyUpdate(e);const o=this._transitionablePaint._values[e].value;return o.isDataDriven()||n||r||this._handleOverridablePaintPropertyUpdate(e,s,o)}}_handleSpecialPaintPropertyUpdate(e){}_handleOverridablePaintPropertyUpdate(e,t,i){return!1}isHidden(e=this.minzoom,t=!1){return!!(this.minzoom&&e<(t?Math.floor(this.minzoom):this.minzoom))||!!(this.maxzoom&&e>=this.maxzoom)||"none"===this._evaluatedVisibility}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculateVisibility(){this._evaluatedVisibility=this._visibilityExpression.evaluate()}recalculate(e,t){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,t)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,t)}serialize(){const e={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(e.layout=e.layout||{},e.layout.visibility=this.visibility),U(e,(e,t)=>!(void 0===e||"layout"===t&&!Object.keys(e).length||"paint"===t&&!Object.keys(e).length))}_validate(e,t,i,r,n={}){return(!n||!1!==n.validate)&&cs(this,e.call(ns,{key:t,layerType:this.type,objectKey:i,value:r,styleSpec:ve,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const e in this.paint._values){const t=this.paint.get(e);if(t instanceof Us&&Ur(t.property.specification)&&("source"===t.value.kind||"composite"===t.value.kind)&&t.value.isStateDependent)return!0}return!1}}let Ks;var Js={get paint(){return Ks=Ks||new Xs({"raster-opacity":new qs(ve.paint_raster["raster-opacity"]),"raster-hue-rotate":new qs(ve.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new qs(ve.paint_raster["raster-brightness-min"]),"raster-brightness-max":new qs(ve.paint_raster["raster-brightness-max"]),"raster-saturation":new qs(ve.paint_raster["raster-saturation"]),"raster-contrast":new qs(ve.paint_raster["raster-contrast"]),"raster-resampling":new qs(ve.paint_raster["raster-resampling"]),"raster-fade-duration":new qs(ve.paint_raster["raster-fade-duration"])})}};class Qs extends Ys{constructor(e,t){super(e,Js,t)}}const eo={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class to{constructor(e,t){this._structArray=e,this._pos1=t*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class io{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,t){return e._trim(),t&&(e.isTransferred=!0,t.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){const t=Object.create(this.prototype);return t.arrayBuffer=e.arrayBuffer,t.length=e.length,t.capacity=e.arrayBuffer.byteLength/t.bytesPerElement,t._refreshViews(),t}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(e){this.reserve(e),this.length=e}reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const t=this.uint8;this._refreshViews(),t&&this.uint8.set(t)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function ro(e,t=1){let i=0,r=0;return{members:e.map(e=>{const n=eo[e.type].BYTES_PER_ELEMENT,s=i=no(i,Math.max(t,n)),o=e.components||1;return r=Math.max(r,n),i+=n*o,{name:e.name,type:e.type,components:o,offset:s}}),size:no(i,Math.max(r,t)),alignment:t}}function no(e,t){return Math.ceil(e/t)*t}class so extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.int16[r+0]=t,this.int16[r+1]=i,e}}so.prototype.bytesPerElement=4,ds("StructArrayLayout2i4",so);class oo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.int16[n+0]=t,this.int16[n+1]=i,this.int16[n+2]=r,e}}oo.prototype.bytesPerElement=6,ds("StructArrayLayout3i6",oo);class ao extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const s=4*e;return this.int16[s+0]=t,this.int16[s+1]=i,this.int16[s+2]=r,this.int16[s+3]=n,e}}ao.prototype.bytesPerElement=8,ds("StructArrayLayout4i8",ao);class lo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n,s)}emplace(e,t,i,r,n,s,o){const a=6*e;return this.int16[a+0]=t,this.int16[a+1]=i,this.int16[a+2]=r,this.int16[a+3]=n,this.int16[a+4]=s,this.int16[a+5]=o,e}}lo.prototype.bytesPerElement=12,ds("StructArrayLayout2i4i12",lo);class co extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n,s)}emplace(e,t,i,r,n,s,o){const a=4*e,l=8*e;return this.int16[a+0]=t,this.int16[a+1]=i,this.uint8[l+4]=r,this.uint8[l+5]=n,this.uint8[l+6]=s,this.uint8[l+7]=o,e}}co.prototype.bytesPerElement=8,ds("StructArrayLayout2i4ub8",co);class ho extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.float32[r+0]=t,this.float32[r+1]=i,e}}ho.prototype.bytesPerElement=8,ds("StructArrayLayout2f8",ho);class uo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s,o,a,l,c){const h=this.length;return this.resize(h+1),this.emplace(h,e,t,i,r,n,s,o,a,l,c)}emplace(e,t,i,r,n,s,o,a,l,c,h){const u=10*e;return this.uint16[u+0]=t,this.uint16[u+1]=i,this.uint16[u+2]=r,this.uint16[u+3]=n,this.uint16[u+4]=s,this.uint16[u+5]=o,this.uint16[u+6]=a,this.uint16[u+7]=l,this.uint16[u+8]=c,this.uint16[u+9]=h,e}}uo.prototype.bytesPerElement=20,ds("StructArrayLayout10ui20",uo);class po extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s,o,a){const l=this.length;return this.resize(l+1),this.emplace(l,e,t,i,r,n,s,o,a)}emplace(e,t,i,r,n,s,o,a,l){const c=8*e;return this.uint16[c+0]=t,this.uint16[c+1]=i,this.uint16[c+2]=r,this.uint16[c+3]=n,this.uint16[c+4]=s,this.uint16[c+5]=o,this.uint16[c+6]=a,this.uint16[c+7]=l,e}}po.prototype.bytesPerElement=16,ds("StructArrayLayout8ui16",po);class fo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s,o,a,l,c,h,u){const d=this.length;return this.resize(d+1),this.emplace(d,e,t,i,r,n,s,o,a,l,c,h,u)}emplace(e,t,i,r,n,s,o,a,l,c,h,u,d){const p=12*e;return this.int16[p+0]=t,this.int16[p+1]=i,this.int16[p+2]=r,this.int16[p+3]=n,this.uint16[p+4]=s,this.uint16[p+5]=o,this.uint16[p+6]=a,this.uint16[p+7]=l,this.int16[p+8]=c,this.int16[p+9]=h,this.int16[p+10]=u,this.int16[p+11]=d,e}}fo.prototype.bytesPerElement=24,ds("StructArrayLayout4i4ui4i24",fo);class mo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.float32[n+0]=t,this.float32[n+1]=i,this.float32[n+2]=r,e}}mo.prototype.bytesPerElement=12,ds("StructArrayLayout3f12",mo);class _o extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.uint32[1*e+0]=t,e}}_o.prototype.bytesPerElement=4,ds("StructArrayLayout1ul4",_o);class go extends io{_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,t,i,r,n,s,o,a,l){const c=this.length;return this.resize(c+1),this.emplace(c,e,t,i,r,n,s,o,a,l)}emplace(e,t,i,r,n,s,o,a,l,c){const h=10*e,u=5*e;return this.int16[h+0]=t,this.int16[h+1]=i,this.int16[h+2]=r,this.int16[h+3]=n,this.int16[h+4]=s,this.int16[h+5]=o,this.uint32[u+3]=a,this.uint16[h+8]=l,this.uint16[h+9]=c,e}}go.prototype.bytesPerElement=20,ds("StructArrayLayout6i1ul2ui20",go);class yo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n,s)}emplace(e,t,i,r,n,s,o){const a=6*e;return this.int16[a+0]=t,this.int16[a+1]=i,this.int16[a+2]=r,this.int16[a+3]=n,this.int16[a+4]=s,this.int16[a+5]=o,e}}yo.prototype.bytesPerElement=12,ds("StructArrayLayout2i2i2i12",yo);class xo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n){const s=this.length;return this.resize(s+1),this.emplace(s,e,t,i,r,n)}emplace(e,t,i,r,n,s){const o=4*e,a=8*e;return this.float32[o+0]=t,this.float32[o+1]=i,this.float32[o+2]=r,this.int16[a+6]=n,this.int16[a+7]=s,e}}xo.prototype.bytesPerElement=16,ds("StructArrayLayout2f1f2i16",xo);class vo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n,s)}emplace(e,t,i,r,n,s,o){const a=16*e,l=4*e,c=8*e;return this.uint8[a+0]=t,this.uint8[a+1]=i,this.float32[l+1]=r,this.float32[l+2]=n,this.int16[c+6]=s,this.int16[c+7]=o,e}}vo.prototype.bytesPerElement=16,ds("StructArrayLayout2ub2f2i16",vo);class bo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.uint16[n+0]=t,this.uint16[n+1]=i,this.uint16[n+2]=r,e}}bo.prototype.bytesPerElement=6,ds("StructArrayLayout3ui6",bo);class wo extends io{_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,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_){const g=this.length;return this.resize(g+1),this.emplace(g,e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_)}emplace(e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g){const y=24*e,x=12*e,v=48*e;return this.int16[y+0]=t,this.int16[y+1]=i,this.uint16[y+2]=r,this.uint16[y+3]=n,this.uint32[x+2]=s,this.uint32[x+3]=o,this.uint32[x+4]=a,this.uint16[y+10]=l,this.uint16[y+11]=c,this.uint16[y+12]=h,this.float32[x+7]=u,this.float32[x+8]=d,this.uint8[v+36]=p,this.uint8[v+37]=f,this.uint8[v+38]=m,this.uint32[x+10]=_,this.int16[y+22]=g,e}}wo.prototype.bytesPerElement=48,ds("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",wo);class To extends io{_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,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,S,P,I,M){const E=this.length;return this.resize(E+1),this.emplace(E,e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,S,P,I,M)}emplace(e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,S,P,I,M,E){const C=32*e,A=16*e;return this.int16[C+0]=t,this.int16[C+1]=i,this.int16[C+2]=r,this.int16[C+3]=n,this.int16[C+4]=s,this.int16[C+5]=o,this.int16[C+6]=a,this.int16[C+7]=l,this.uint16[C+8]=c,this.uint16[C+9]=h,this.uint16[C+10]=u,this.uint16[C+11]=d,this.uint16[C+12]=p,this.uint16[C+13]=f,this.uint16[C+14]=m,this.uint16[C+15]=_,this.uint16[C+16]=g,this.uint16[C+17]=y,this.uint16[C+18]=x,this.uint16[C+19]=v,this.uint16[C+20]=b,this.uint16[C+21]=w,this.uint16[C+22]=T,this.uint32[A+12]=S,this.float32[A+13]=P,this.float32[A+14]=I,this.uint16[C+30]=M,this.uint16[C+31]=E,e}}To.prototype.bytesPerElement=64,ds("StructArrayLayout8i15ui1ul2f2ui64",To);class So extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.float32[1*e+0]=t,e}}So.prototype.bytesPerElement=4,ds("StructArrayLayout1f4",So);class Po extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.uint16[6*e+0]=t,this.float32[n+1]=i,this.float32[n+2]=r,e}}Po.prototype.bytesPerElement=12,ds("StructArrayLayout1ui2f12",Po);class Io extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=4*e;return this.uint32[2*e+0]=t,this.uint16[n+2]=i,this.uint16[n+3]=r,e}}Io.prototype.bytesPerElement=8,ds("StructArrayLayout1ul2ui8",Io);class Mo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.uint16[r+0]=t,this.uint16[r+1]=i,e}}Mo.prototype.bytesPerElement=4,ds("StructArrayLayout2ui4",Mo);class Eo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.uint16[1*e+0]=t,e}}Eo.prototype.bytesPerElement=2,ds("StructArrayLayout1ui2",Eo);class Co extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const s=4*e;return this.float32[s+0]=t,this.float32[s+1]=i,this.float32[s+2]=r,this.float32[s+3]=n,e}}Co.prototype.bytesPerElement=16,ds("StructArrayLayout4f16",Co);class Ao extends to{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 r(this.anchorPointX,this.anchorPointY)}}Ao.prototype.size=20;class Do extends go{get(e){return new Ao(this,e)}}ds("CollisionBoxArray",Do);class zo extends to{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]}}zo.prototype.size=48;class ko extends wo{get(e){return new zo(this,e)}}ds("PlacedSymbolArray",ko);class Ro extends to{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]}}Ro.prototype.size=64;class Lo extends To{get(e){return new Ro(this,e)}}ds("SymbolInstanceArray",Lo);class Fo extends So{getoffsetX(e){return this.float32[1*e+0]}}ds("GlyphOffsetArray",Fo);class Bo extends oo{getx(e){return this.int16[3*e+0]}gety(e){return this.int16[3*e+1]}gettileUnitDistanceFromAnchor(e){return this.int16[3*e+2]}}ds("SymbolLineVertexArray",Bo);class Oo extends to{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]}}Oo.prototype.size=12;class Vo extends Po{get(e){return new Oo(this,e)}}ds("TextAnchorOffsetArray",Vo);class jo extends to{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]}}jo.prototype.size=8;class No extends Io{get(e){return new jo(this,e)}}ds("FeatureIndexArray",No);class Uo extends so{}class Go extends so{}class qo extends so{}class Zo extends lo{}class $o extends co{}class Wo extends ho{}class Ho extends uo{}class Xo extends po{}class Yo extends fo{}class Ko extends mo{}class Jo extends _o{}class Qo extends yo{}class ea extends vo{}class ta extends bo{}class ia extends Mo{}const ra=ro([{name:"a_pos",components:2,type:"Int16"}],4),{members:na}=ra;class sa{constructor(e=[]){this._forceNewSegmentOnNextPrepare=!1,this.segments=e}prepareSegment(e,t,i,r){const n=this.segments[this.segments.length-1];return e>sa.MAX_VERTEX_ARRAY_LENGTH&&Z(`Max vertices per segment is ${sa.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}. Consider using the \`fillLargeMeshArrays\` function if you require meshes with more than ${sa.MAX_VERTEX_ARRAY_LENGTH} vertices.`),this._forceNewSegmentOnNextPrepare||!n||n.vertexLength+e>sa.MAX_VERTEX_ARRAY_LENGTH||n.sortKey!==r?this.createNewSegment(t,i,r):n}createNewSegment(e,t,i){const r={vertexOffset:e.length,primitiveOffset:t.length,vertexLength:0,primitiveLength:0,vaos:{}};return void 0!==i&&(r.sortKey=i),this._forceNewSegmentOnNextPrepare=!1,this.segments.push(r),r}getOrCreateLatestSegment(e,t,i){return this.prepareSegment(0,e,t,i)}forceNewSegmentOnNextPrepare(){this._forceNewSegmentOnNextPrepare=!0}get(){return this.segments}destroy(){for(const e of this.segments)for(const t in e.vaos)e.vaos[t].destroy()}static simpleSegment(e,t,i,r){return new sa([{vertexOffset:e,primitiveOffset:t,vertexLength:i,primitiveLength:r,vaos:{},sortKey:0}])}}function oa(e,t){return 256*(e=B(Math.floor(e),0,255))+B(Math.floor(t),0,255)}sa.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,ds("SegmentVector",sa);const aa=ro([{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"}]),la=ro([{name:"a_dasharray_from",components:4,type:"Uint16"},{name:"a_dasharray_to",components:4,type:"Uint16"}]);var ca,ha,ua,da={exports:{}},pa={exports:{}},fa={exports:{}},ma=function(){if(ua)return da.exports;ua=1;var e=(ca||(ca=1,pa.exports=function(e,t){var i,r,n,s,o,a,l,c;for(r=e.length-(i=3&e.length),n=t,o=3432918353,a=461845907,c=0;c>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<13|n>>>19))+((5*(n>>>16)&65535)<<16)&4294967295))+((58964+(s>>>16)&65535)<<16);switch(l=0,i){case 3:l^=(255&e.charCodeAt(c+2))<<16;case 2:l^=(255&e.charCodeAt(c+1))<<8;case 1:n^=l=(65535&(l=(l=(65535&(l^=255&e.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295}return n^=e.length,n=2246822507*(65535&(n^=n>>>16))+((2246822507*(n>>>16)&65535)<<16)&4294967295,n=3266489909*(65535&(n^=n>>>13))+((3266489909*(n>>>16)&65535)<<16)&4294967295,(n^=n>>>16)>>>0}),pa.exports),t=(ha||(ha=1,fa.exports=function(e,t){for(var i,r=e.length,n=t^r,s=0;r>=4;)i=1540483477*(65535&(i=255&e.charCodeAt(s)|(255&e.charCodeAt(++s))<<8|(255&e.charCodeAt(++s))<<16|(255&e.charCodeAt(++s))<<24))+((1540483477*(i>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^(i=1540483477*(65535&(i^=i>>>24))+((1540483477*(i>>>16)&65535)<<16)),r-=4,++s;switch(r){case 3:n^=(255&e.charCodeAt(s+2))<<16;case 2:n^=(255&e.charCodeAt(s+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(s)))+((1540483477*(n>>>16)&65535)<<16)}return n=1540483477*(65535&(n^=n>>>13))+((1540483477*(n>>>16)&65535)<<16),(n^=n>>>15)>>>0}),fa.exports);return da.exports=e,da.exports.murmur3=e,da.exports.murmur2=t,da.exports}(),_a=n(ma);class ga{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,t,i,r){this.ids.push(ya(e)),this.positions.push(t,i,r)}getPositions(e){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const t=ya(e);let i=0,r=this.ids.length-1;for(;i>1;this.ids[e]>=t?r=e:i=e+1}const n=[];for(;this.ids[i]===t;)n.push({index:this.positions[3*i],start:this.positions[3*i+1],end:this.positions[3*i+2]}),i++;return n}static serialize(e,t){const i=new Float64Array(e.ids),r=new Uint32Array(e.positions);return xa(i,r,0,i.length-1),t&&t.push(i.buffer,r.buffer),{ids:i,positions:r}}static deserialize(e){const t=new ga;return t.ids=e.ids,t.positions=e.positions,t.indexed=!0,t}}function ya(e){const t=+e;return!isNaN(t)&&t<=Number.MAX_SAFE_INTEGER?t:_a(String(e))}function xa(e,t,i,r){for(;i>1];let s=i-1,o=r+1;for(;;){do{s++}while(e[s]n);if(s>=o)break;va(e,s,o),va(t,3*s,3*o),va(t,3*s+1,3*o+1),va(t,3*s+2,3*o+2)}o-i`u_${e}`),this.type=i}setUniform(e,t,i){e.set(i.constantOr(this.value))}getBinding(e,t,i){return"color"===this.type?new Sa(e,t):new wa(e,t)}}class Ea{constructor(e,t){this.uniformNames=t.map(e=>`u_${e}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,t){this.pixelRatioFrom=t.pixelRatio,this.pixelRatioTo=e.pixelRatio,this.patternFrom=t.tlbr,this.patternTo=e.tlbr}setConstantDashPositions(e,t){this.dashTo=[0,e.y,e.height,e.width],this.dashFrom=[0,t.y,t.height,t.width]}setUniform(e,t,i,r){let n=null;"u_pattern_to"===r?n=this.patternTo:"u_pattern_from"===r?n=this.patternFrom:"u_dasharray_to"===r?n=this.dashTo:"u_dasharray_from"===r?n=this.dashFrom:"u_pixel_ratio_to"===r?n=this.pixelRatioTo:"u_pixel_ratio_from"===r&&(n=this.pixelRatioFrom),null!==n&&e.set(n)}getBinding(e,t,i){return"u_pattern"===i.substr(0,9)||"u_dasharray_"===i.substr(0,12)?new Ta(e,t):new wa(e,t)}}class Ca{constructor(e,t,i,r){this.expression=e,this.type=i,this.maxValue=0,this.paintVertexAttributes=t.map(e=>({name:`a_${e}`,type:"Float32",components:"color"===i?2:1,offset:0})),this.paintVertexArray=new r}populatePaintArray(e,t,i){const r=this.paintVertexArray.length,n=this.expression.evaluate(new ks(0,i),t,{},i.canonical,[],i.formattedSection);this.paintVertexArray.resize(e),this._setPaintValue(r,e,n)}updatePaintArray(e,t,i,r,n){const s=this.expression.evaluate(new ks(0,n),i,r);this._setPaintValue(e,t,s)}_setPaintValue(e,t,i){if("color"===this.type){const r=Ia(i);for(let i=e;i`u_${e}_t`),this.type=i,this.useIntegerZoom=r,this.zoom=n,this.maxValue=0,this.paintVertexAttributes=t.map(e=>({name:`a_${e}`,type:"Float32",components:"color"===i?4:2,offset:0})),this.paintVertexArray=new s}populatePaintArray(e,t,i){const r=this.expression.evaluate(new ks(this.zoom,i),t,{},i.canonical,[],i.formattedSection),n=this.expression.evaluate(new ks(this.zoom+1,i),t,{},i.canonical,[],i.formattedSection),s=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(s,e,r,n)}updatePaintArray(e,t,i,r,n){const s=this.expression.evaluate(new ks(this.zoom,n),i,r),o=this.expression.evaluate(new ks(this.zoom+1,n),i,r);this._setPaintValue(e,t,s,o)}_setPaintValue(e,t,i,r){if("color"===this.type){const n=Ia(i),s=Ia(r);for(let i=e;i`#define HAS_UNIFORM_${e}`))}return e}getBinderAttributes(){const e=[];for(const t in this.binders){const i=this.binders[t];if(i instanceof Ca||i instanceof Aa)for(let t=0;t!0){this.programConfigurations={};for(const r of e)this.programConfigurations[r.id]=new Ra(r,t,i);this.needsUpload=!1,this._featureMap=new ga,this._bufferOffset=0}populatePaintArrays(e,t,i,r){for(const n in this.programConfigurations)this.programConfigurations[n].populatePaintArrays(e,t,r);void 0!==t.id&&this._featureMap.add(t.id,i,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,t,i,r){for(const n of i)this.needsUpload=this.programConfigurations[n.id].updatePaintArrays(e,this._featureMap,t,n,r)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const t in this.programConfigurations)this.programConfigurations[t].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}function Fa(e,t){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-dasharray":["dasharray_to","dasharray_from"],"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"]}[e]||[e.replace(`${t}-`,"").replace(/-/g,"_")]}function Ba(e,t,i){const r={color:{source:ho,composite:Co},number:{source:So,composite:ho}},n={"line-pattern":{source:Ho,composite:Ho},"fill-pattern":{source:Ho,composite:Ho},"fill-extrusion-pattern":{source:Ho,composite:Ho},"line-dasharray":{source:Xo,composite:Xo}}[e];return n&&n[i]||r[t][i]}ds("ConstantBinder",Ma),ds("CrossFadedConstantBinder",Ea),ds("SourceExpressionBinder",Ca),ds("CrossFadedPatternBinder",za),ds("CrossFadedDasharrayBinder",ka),ds("CompositeExpressionBinder",Aa),ds("ProgramConfiguration",Ra,{omit:["_buffers"]}),ds("ProgramConfigurationSet",La);const Oa=Math.pow(2,14)-1,Va=-Oa-1;function ja(e){const t=A/e.extent,i=e.loadGeometry();for(let r=0;rr.x+1||sr.y+1)&&Z("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return i}function Na(e,t){return{type:e.type,id:e.id,properties:e.properties,geometry:t?ja(e):[]}}const Ua=-32768;function Ga(e,t,i,r,n){e.emplaceBack(Ua+8*t+r,Ua+8*i+n)}class qa{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new Go,this.indexArray=new ta,this.segments=new sa,this.programConfigurations=new La(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,i){const r=this.layers[0],n=[];let s=null,o=!1,a="heatmap"===r.type;if("circle"===r.type){const e=r;s=e.layout.get("circle-sort-key"),o=!s.isConstant(),a=a||"map"===e.paint.get("circle-pitch-alignment")}const l=a?t.subdivisionGranularity.circle:1;for(const{feature:c,id:h,index:u,sourceLayerIndex:d}of e){const e=this.layers[0]._featureFilter.needGeometry,t=Na(c,e);if(!this.layers[0]._featureFilter.filter(new ks(this.zoom),t,i))continue;const r=o?s.evaluate(t,{},i):void 0,a={id:h,properties:c.properties,type:c.type,sourceLayerIndex:d,index:u,geometry:e?t.geometry:ja(c),patterns:{},sortKey:r};n.push(a)}o&&n.sort((e,t)=>e.sortKey-t.sortKey);for(const c of n){const{geometry:r,index:n,sourceLayerIndex:s}=c,o=e[n].feature;this.addFeature(c,r,n,i,l),t.featureIndex.insert(o,r,n,s,this.index)}}update(e,t,i){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:i})}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,na),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,t,i,r,n=1){let s;switch(n){case 1:s=[0,7];break;case 3:s=[0,2,5,7];break;case 5:s=[0,1,3,4,6,7];break;case 7:s=[0,1,2,3,4,5,6,7];break;default:throw new Error(`Invalid circle bucket granularity: ${n}; valid values are 1, 3, 5, 7.`)}const o=s.length;for(const a of t)for(const t of a){const i=t.x,r=t.y;if(i<0||i>=A||r<0||r>=A)continue;const n=this.segments.prepareSegment(o*o,this.layoutVertexArray,this.indexArray,e.sortKey),a=n.vertexLength;for(let e=0;e1){if(Xa(e,t))return!0;for(let r=0;r1?i:i.sub(t)._mult(n)._add(t))}function Qa(e,t){let i,r,n,s=!1;for(let o=0;ot.y!=n.y>t.y&&t.x<(n.x-r.x)*(t.y-r.y)/(n.y-r.y)+r.x&&(s=!s)}return s}function el(e,t){let i=!1;for(let r=0,n=e.length-1;rt.y!=o.y>t.y&&t.x<(o.x-s.x)*(t.y-s.y)/(o.y-s.y)+s.x&&(i=!i)}return i}function tl(e,t,i){const r=i[0],n=i[2];if(e.xn.x&&t.x>n.x||e.yn.y&&t.y>n.y)return!1;const s=$(e,t,i[0]);return s!==$(e,t,i[1])||s!==$(e,t,i[2])||s!==$(e,t,i[3])}function il(e,t,i){const r=t.paint.get(e).value;return"constant"===r.kind?r.value:i.programConfigurations.get(t.id).getMaxValue(e)}function rl(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])}function nl(e,t,i,n,s){if(!t[0]&&!t[1])return e;const o=r.convert(t)._mult(s);"viewport"===i&&o._rotate(-n);const a=[];for(let r=0;rul(e,f,m,_)),p=c),hl({queryGeometry:d,size:p,transform:n,unwrappedTileID:o,getElevation:a,pitchAlignment:u,pitchScale:h},r);var f,m,_}}class _l extends qa{}let gl;ds("HeatmapBucket",_l,{omit:["layers"]});var yl={get paint(){return gl=gl||new Xs({"heatmap-radius":new Zs(ve.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Zs(ve.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new qs(ve.paint_heatmap["heatmap-intensity"]),"heatmap-color":new Hs(ve.paint_heatmap["heatmap-color"]),"heatmap-opacity":new qs(ve.paint_heatmap["heatmap-opacity"])})}};function xl(e,{width:t,height:i},r,n){if(n){if(n instanceof Uint8ClampedArray)n=new Uint8Array(n.buffer);else if(n.length!==t*i*r)throw new RangeError(`mismatched image size. expected: ${n.length} but got: ${t*i*r}`)}else n=new Uint8Array(t*i*r);return e.width=t,e.height=i,e.data=n,e}function vl(e,{width:t,height:i},r){if(t===e.width&&i===e.height)return;const n=xl({},{width:t,height:i},r);bl(e,n,{x:0,y:0},{x:0,y:0},{width:Math.min(e.width,t),height:Math.min(e.height,i)},r),e.width=t,e.height=i,e.data=n.data}function bl(e,t,i,r,n,s){if(0===n.width||0===n.height)return t;if(n.width>e.width||n.height>e.height||i.x>e.width-n.width||i.y>e.height-n.height)throw new RangeError("out of range source coordinates for image copy");if(n.width>t.width||n.height>t.height||r.x>t.width-n.width||r.y>t.height-n.height)throw new RangeError("out of range destination coordinates for image copy");const o=e.data,a=t.data;if(o===a)throw new Error("srcData equals dstData, so image is already copied");for(let l=0;l{t[e.evaluationKey]=o;const a=e.expression.evaluate(t);n.setPixel(r/4/i,s/4,a)};if(e.clips)for(let o=0,a=0;othis.max&&(this.max=t),t=this.dim+1||t<-1||t>=this.dim+1)throw new RangeError(`Out of range source coordinates for DEM data. x: ${e}, y: ${t}, dim: ${this.dim}`);return(t+1)*this.stride+(e+1)}unpack(e,t,i){return e*this.redFactor+t*this.greenFactor+i*this.blueFactor-this.baseShift}pack(e){return Rl(e,this.getUnpackVector())}getPixels(){return new Tl({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(e,t,i){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let r=t*this.dim,n=t*this.dim+this.dim,s=i*this.dim,o=i*this.dim+this.dim;switch(t){case-1:r=n-1;break;case 1:n=r+1}switch(i){case-1:s=o-1;break;case 1:o=s+1}const a=-t*this.dim,l=-i*this.dim;for(let c=s;c0)for(let o=t;o=t;o-=r)s=lc(o/r|0,e[o],e[o+1],s);return s&&ic(s,s.next)&&(cc(s),s=s.next),s}function Nl(e,t){if(!e)return e;t||(t=e);let i,r=e;do{if(i=!1,r.steiner||!ic(r,r.next)&&0!==tc(r.prev,r,r.next))r=r.next;else{if(cc(r),r=t=r.prev,r===r.next)break;i=!0}}while(i||r!==t);return t}function Ul(e,t,i,r,n,s,o){if(!e)return;!o&&s&&function(e,t,i,r){let n=e;do{0===n.z&&(n.z=Yl(n.x,n.y,t,i,r)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,function(e){let t,i=1;do{let r,n=e;e=null;let s=null;for(t=0;n;){t++;let o=n,a=0;for(let e=0;e0||l>0&&o;)0!==a&&(0===l||!o||n.z<=o.z)?(r=n,n=n.nextZ,a--):(r=o,o=o.nextZ,l--),s?s.nextZ=r:e=r,r.prevZ=s,s=r;n=o}s.nextZ=null,i*=2}while(t>1)}(n)}(e,r,n,s);let a=e;for(;e.prev!==e.next;){const l=e.prev,c=e.next;if(s?ql(e,r,n,s):Gl(e))t.push(l.i,e.i,c.i),cc(e),e=c.next,a=c.next;else if((e=c)===a){o?1===o?Ul(e=Zl(Nl(e),t),t,i,r,n,s,2):2===o&&$l(e,t,i,r,n,s):Ul(Nl(e),t,i,r,n,s,1);break}}}function Gl(e){const t=e.prev,i=e,r=e.next;if(tc(t,i,r)>=0)return!1;const n=t.x,s=i.x,o=r.x,a=t.y,l=i.y,c=r.y,h=Math.min(n,s,o),u=Math.min(a,l,c),d=Math.max(n,s,o),p=Math.max(a,l,c);let f=r.next;for(;f!==t;){if(f.x>=h&&f.x<=d&&f.y>=u&&f.y<=p&&Ql(n,a,s,l,o,c,f.x,f.y)&&tc(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function ql(e,t,i,r){const n=e.prev,s=e,o=e.next;if(tc(n,s,o)>=0)return!1;const a=n.x,l=s.x,c=o.x,h=n.y,u=s.y,d=o.y,p=Math.min(a,l,c),f=Math.min(h,u,d),m=Math.max(a,l,c),_=Math.max(h,u,d),g=Yl(p,f,t,i,r),y=Yl(m,_,t,i,r);let x=e.prevZ,v=e.nextZ;for(;x&&x.z>=g&&v&&v.z<=y;){if(x.x>=p&&x.x<=m&&x.y>=f&&x.y<=_&&x!==n&&x!==o&&Ql(a,h,l,u,c,d,x.x,x.y)&&tc(x.prev,x,x.next)>=0)return!1;if(x=x.prevZ,v.x>=p&&v.x<=m&&v.y>=f&&v.y<=_&&v!==n&&v!==o&&Ql(a,h,l,u,c,d,v.x,v.y)&&tc(v.prev,v,v.next)>=0)return!1;v=v.nextZ}for(;x&&x.z>=g;){if(x.x>=p&&x.x<=m&&x.y>=f&&x.y<=_&&x!==n&&x!==o&&Ql(a,h,l,u,c,d,x.x,x.y)&&tc(x.prev,x,x.next)>=0)return!1;x=x.prevZ}for(;v&&v.z<=y;){if(v.x>=p&&v.x<=m&&v.y>=f&&v.y<=_&&v!==n&&v!==o&&Ql(a,h,l,u,c,d,v.x,v.y)&&tc(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function Zl(e,t){let i=e;do{const r=i.prev,n=i.next.next;!ic(r,n)&&rc(r,i,i.next,n)&&oc(r,n)&&oc(n,r)&&(t.push(r.i,i.i,n.i),cc(i),cc(i.next),i=e=n),i=i.next}while(i!==e);return Nl(i)}function $l(e,t,i,r,n,s){let o=e;do{let e=o.next.next;for(;e!==o.prev;){if(o.i!==e.i&&ec(o,e)){let a=ac(o,e);return o=Nl(o,o.next),a=Nl(a,a.next),Ul(o,t,i,r,n,s,0),void Ul(a,t,i,r,n,s,0)}e=e.next}o=o.next}while(o!==e)}function Wl(e,t){let i=e.x-t.x;return 0===i&&(i=e.y-t.y,0===i)&&(i=(e.next.y-e.y)/(e.next.x-e.x)-(t.next.y-t.y)/(t.next.x-t.x)),i}function Hl(e,t){const i=function(e,t){let i=t;const r=e.x,n=e.y;let s,o=-1/0;if(ic(e,i))return i;do{if(ic(e,i.next))return i.next;if(n<=i.y&&n>=i.next.y&&i.next.y!==i.y){const e=i.x+(n-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(e<=r&&e>o&&(o=e,s=i.x=i.x&&i.x>=l&&r!==i.x&&Jl(ns.x||i.x===s.x&&Xl(s,i)))&&(s=i,h=t)}i=i.next}while(i!==a);return s}(e,t);if(!i)return t;const r=ac(i,e);return Nl(r,r.next),Nl(i,i.next)}function Xl(e,t){return tc(e.prev,e,t.prev)<0&&tc(t.next,e,e.next)<0}function Yl(e,t,i,r,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*n|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*n|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function Kl(e){let t=e,i=e;do{(t.x=(e-o)*(s-a)&&(e-o)*(r-a)>=(i-o)*(t-a)&&(i-o)*(s-a)>=(n-o)*(r-a)}function Ql(e,t,i,r,n,s,o,a){return!(e===o&&t===a)&&Jl(e,t,i,r,n,s,o,a)}function ec(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){let i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&rc(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(oc(e,t)&&oc(t,e)&&function(e,t){let i=e,r=!1;const n=(e.x+t.x)/2,s=(e.y+t.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&n<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next}while(i!==e);return r}(e,t)&&(tc(e.prev,e,t.prev)||tc(e,t.prev,t))||ic(e,t)&&tc(e.prev,e,e.next)>0&&tc(t.prev,t,t.next)>0)}function tc(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function ic(e,t){return e.x===t.x&&e.y===t.y}function rc(e,t,i,r){const n=sc(tc(e,t,i)),s=sc(tc(e,t,r)),o=sc(tc(i,r,e)),a=sc(tc(i,r,t));return n!==s&&o!==a||!(0!==n||!nc(e,i,t))||!(0!==s||!nc(e,r,t))||!(0!==o||!nc(i,e,r))||!(0!==a||!nc(i,t,r))}function nc(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function sc(e){return e>0?1:e<0?-1:0}function oc(e,t){return tc(e.prev,e,e.next)<0?tc(e,t,e.next)>=0&&tc(e,e.prev,t)>=0:tc(e,t,e.prev)<0||tc(e,e.next,t)<0}function ac(e,t){const i=hc(e.i,e.x,e.y),r=hc(t.i,t.x,t.y),n=e.next,s=t.prev;return e.next=t,t.prev=e,i.next=n,n.prev=i,r.next=i,i.prev=r,s.next=r,r.prev=s,r}function lc(e,t,i,r){const n=hc(e,t,i);return r?(n.next=r.next,n.prev=r,r.next.prev=n,r.next=n):(n.prev=n,n.next=n),n}function cc(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function hc(e,t,i){return{i:e,x:t,y:i,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}class uc{constructor(e,t){if(t>e)throw new Error("Min granularity must not be greater than base granularity.");this._baseZoomGranularity=e,this._minGranularity=t}getGranularityForZoomLevel(e){return Math.max(Math.floor(this._baseZoomGranularity/(1<32767||t>32767)throw new Error("Vertex coordinates are out of signed 16 bit integer range.");const i=0|Math.round(e),r=0|Math.round(t),n=this._getKey(i,r);if(this._vertexDictionary.has(n))return this._vertexDictionary.get(n);const s=this._vertexBuffer.length/2;return this._vertexDictionary.set(n,s),this._vertexBuffer.push(i,r),s}_subdivideTrianglesScanline(e){if(this._granularity<2)return function(e,t){const i=[];for(let r=0;r0?(i.push(n),i.push(o),i.push(s)):(i.push(n),i.push(s),i.push(o))}return i}(this._vertexBuffer,e);const t=[],i=e.length;for(let r=0;r=1||x<=0)||m&&(an)){c>=r&&c<=n&&s.push(i[(o+1)%3]);continue}!m&&y>0&&s.push(this._vertexToIndex(e+d*y,a+p*y));const v=e+d*Math.max(y,0),b=e+d*Math.min(x,1);f||this._generateIntraEdgeVertices(s,e,a,l,c,v,b),!m&&x<1&&s.push(this._vertexToIndex(e+d*x,a+p*x)),(m||c>=r&&c<=n)&&s.push(i[(o+1)%3]),!m&&(c<=r||c>=n)&&this._generateInterEdgeVertices(s,e,a,l,c,h,u,b,r,n)}return s}_generateIntraEdgeVertices(e,t,i,r,n,s,o){const a=r-t,l=n-i,c=0===l,h=c?Math.min(t,r):Math.min(s,o),u=c?Math.max(t,r):Math.max(s,o),d=Math.floor(h/this._granularityCellSize)+1,p=Math.ceil(u/this._granularityCellSize)-1;if(c?t=d;f--){const r=f*this._granularityCellSize;e.push(this._vertexToIndex(r,i+l*(r-t)/a))}}_generateInterEdgeVertices(e,t,i,r,n,s,o,a,l,c){const h=n-i,u=s-r,d=o-n,p=(l-n)/d,f=(c-n)/d,m=Math.min(p,f),_=Math.max(p,f),g=r+u*m;let y=Math.floor(Math.min(g,a)/this._granularityCellSize)+1,x=Math.ceil(Math.max(g,a)/this._granularityCellSize)-1,v=a=1||_<=0){const e=i-o,r=s+(t-s)*Math.min((l-o)/e,(c-o)/e);y=Math.floor(Math.min(r,a)/this._granularityCellSize)+1,x=Math.ceil(Math.max(r,a)/this._granularityCellSize)-1,v=a0?c:l;if(v)for(let T=y;T<=x;T++)e.push(this._vertexToIndex(T*this._granularityCellSize,w));else for(let T=x;T>=y;T--)e.push(this._vertexToIndex(T*this._granularityCellSize,w))}_generateOutline(e){const t=[];for(const i of e){const e=gc(i,this._granularity,!0),r=this._pointArrayToIndices(e),n=[];for(let t=1;tn!=(s===pc)?(e.push(t),e.push(i),e.push(this._vertexToIndex(r,s)),e.push(i),e.push(this._vertexToIndex(n,s)),e.push(this._vertexToIndex(r,s))):(e.push(i),e.push(t),e.push(this._vertexToIndex(r,s)),e.push(this._vertexToIndex(n,s)),e.push(i),e.push(this._vertexToIndex(r,s)))}_fillPoles(e,t,i){const r=this._vertexBuffer,n=A,s=e.length;for(let o=2;o80*i){a=e[0],l=e[1];let t=a,r=l;for(let s=i;st&&(t=i),n>r&&(r=n)}c=Math.max(t-a,r-l),c=0!==c?32767/c:0}return Ul(s,o,i,a,l,c,0),o}(i,r),t=this._convertIndices(i,e);n=this._subdivideTrianglesScanline(t)}catch(o){}let s=[];return t&&(s=this._generateOutline(e)),this._ensureNoPoleVertices(),this._handlePoles(n),{verticesFlattened:this._vertexBuffer,indicesTriangles:n,indicesLineList:s}}_convertIndices(e,t){const i=[];for(let r=0;r0?(Math.floor(y/a)+1)*a:(Math.ceil(y/a)-1)*a,t=m>0?(Math.floor(x/a)+1)*a:(Math.ceil(x/a)-1)*a,i=Math.abs(y-e),n=Math.abs(x-t),s=Math.abs(y-o),c=Math.abs(x-h),u=d?i/_:Number.POSITIVE_INFINITY,v=p?n/g:Number.POSITIVE_INFINITY;if((s<=i||!d)&&(c<=n||!p))break;if(u=0?o-1:s-1,n=(a+1)%s,l=e[2*t[r]],c=e[2*t[n]],h=e[2*t[o]],u=e[2*t[o]+1],d=e[2*t[a]+1];let p=!1;if(lc)p=!1;else{const i=d-u,s=-(e[2*t[a]]-h),o=u((c-h)*i+(e[2*t[n]+1]-u)*s)*o&&(p=!0)}if(p){const e=t[r],n=t[o],l=t[a];e!==n&&e!==l&&n!==l&&i.push(l,n,e),o--,o<0&&(o=s-1)}else{const e=t[n],r=t[o],l=t[a];e!==r&&e!==l&&r!==l&&i.push(l,r,e),a++,a>=s&&(a=0)}if(r===n)break}}function xc(e,t,i,r,n,s,o,a,l){const c=n.length/2,h=o&&a&&l;if(csa.MAX_VERTEX_ARRAY_LENGTH&&(c=e.createNewSegment(t,i),l=a.count,m=!0,_=!0,g=!0,h=0);const y=vc(o,r,s,a,d,m,c),x=vc(o,r,s,a,p,_,c),v=vc(o,r,s,a,f,g,c);i.emplaceBack(h+y-l,h+x-l,h+v-l),c.primitiveLength++}}(t,i,r,n,s,e),h&&function(e,t,i,r,n,s){const o=[];for(let u=0;usa.MAX_VERTEX_ARRAY_LENGTH&&(c=e.createNewSegment(t,i),l=a.count,f=!0,m=!0,h=0);const _=vc(o,r,s,a,n,f,c),g=vc(o,r,s,a,u,m,c);i.emplaceBack(h+_-l,h+g-l),c.primitiveLength++}}}(o,i,a,n,l,e),t.forceNewSegmentOnNextPrepare(),null==o||o.forceNewSegmentOnNextPrepare()}function vc(e,t,i,r,n,s,o){if(s){const s=r.count;return i(t[2*n],t[2*n+1]),e[n]=r.count,r.count++,o.vertexLength++,s}return e[n]}class bc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.patternFeatures=[],this.layoutVertexArray=new qo,this.indexArray=new ta,this.indexArray2=new ia,this.programConfigurations=new La(e.layers,e.zoom),this.segments=new sa,this.segments2=new sa,this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,i){this.hasDependencies=Ol("fill",this.layers,t);const r=this.layers[0].layout.get("fill-sort-key"),n=!r.isConstant(),s=[];for(const{feature:o,id:a,index:l,sourceLayerIndex:c}of e){const e=this.layers[0]._featureFilter.needGeometry,h=Na(o,e);if(!this.layers[0]._featureFilter.filter(new ks(this.zoom),h,i))continue;const u=n?r.evaluate(h,{},i,t.availableImages):void 0,d={id:a,properties:o.properties,type:o.type,sourceLayerIndex:c,index:l,geometry:e?h.geometry:ja(o),patterns:{},sortKey:u};s.push(d)}n&&s.sort((e,t)=>e.sortKey-t.sortKey);for(const o of s){const{geometry:r,index:n,sourceLayerIndex:s}=o;if(this.hasDependencies){const e=Vl("fill",this.layers,o,{zoom:this.zoom},t);this.patternFeatures.push(e)}else this.addFeature(o,r,n,i,{},t.subdivisionGranularity);t.featureIndex.insert(e[n].feature,r,n,s,this.index)}}update(e,t,i){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:i})}addFeatures(e,t,i){for(const r of this.patternFeatures)this.addFeature(r,r.geometry,r.index,t,i,e.subdivisionGranularity)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Bl),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,t,i,r,n,s){for(const o of er(t,500)){const e=_c(o,r,s.fill.getGranularityForZoomLevel(r.z)),t=this.layoutVertexArray;xc((e,i)=>{t.emplaceBack(e,i)},this.segments,this.layoutVertexArray,this.indexArray,e.verticesFlattened,e.indicesTriangles,this.segments2,this.indexArray2,e.indicesLineList)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,{imagePositions:n,canonical:r})}}let wc,Tc;ds("FillBucket",bc,{omit:["layers","patternFeatures"]});var Sc={get paint(){return Tc=Tc||new Xs({"fill-antialias":new qs(ve.paint_fill["fill-antialias"]),"fill-opacity":new Zs(ve.paint_fill["fill-opacity"]),"fill-color":new Zs(ve.paint_fill["fill-color"]),"fill-outline-color":new Zs(ve.paint_fill["fill-outline-color"]),"fill-translate":new qs(ve.paint_fill["fill-translate"]),"fill-translate-anchor":new qs(ve.paint_fill["fill-translate-anchor"]),"fill-pattern":new $s(ve.paint_fill["fill-pattern"])})},get layout(){return wc=wc||new Xs({"fill-sort-key":new Zs(ve.layout_fill["fill-sort-key"])})}};class Pc extends Ys{constructor(e,t){super(e,Sc,t)}recalculate(e,t){super.recalculate(e,t);const i=this.paint._values["fill-outline-color"];"constant"===i.value.kind&&void 0===i.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(e){return new bc(e)}queryRadius(){return rl(this.paint.get("fill-translate"))}queryIntersectsFeature({queryGeometry:e,geometry:t,transform:i,pixelsToTileUnits:r}){return Wa(nl(e,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),-i.bearingInRadians,r),t)}isTileClipped(){return!0}}const Ic=ro([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),Mc=ro([{name:"a_centroid",components:2,type:"Int16"}],4),{members:Ec}=Ic;class Cc{constructor(e,t,i,r,n){this.properties={},this.extent=i,this.type=0,this.id=void 0,this._pbf=e,this._geometry=-1,this._keys=r,this._values=n,e.readFields(Ac,this,t)}loadGeometry(){const e=this._pbf;e.pos=this._geometry;const t=e.readVarint()+e.pos,i=[];let n,s=1,o=0,a=0,l=0;for(;e.pos>3}if(o--,1===s||2===s)a+=e.readSVarint(),l+=e.readSVarint(),1===s&&(n&&i.push(n),n=[]),n&&n.push(new r(a,l));else{if(7!==s)throw new Error(`unknown command ${s}`);n&&n.push(n[0].clone())}}return n&&i.push(n),i}bbox(){const e=this._pbf;e.pos=this._geometry;const t=e.readVarint()+e.pos;let i=1,r=0,n=0,s=0,o=1/0,a=-1/0,l=1/0,c=-1/0;for(;e.pos>3}if(r--,1===i||2===i)n+=e.readSVarint(),s+=e.readSVarint(),na&&(a=n),sc&&(c=s);else if(7!==i)throw new Error(`unknown command ${i}`)}return[o,l,a,c]}toGeoJSON(e,t,i){const r=this.extent*Math.pow(2,i),n=this.extent*e,s=this.extent*t,o=this.loadGeometry();function a(e){return[360*(e.x+n)/r-180,360/Math.PI*Math.atan(Math.exp((1-2*(e.y+s)/r)*Math.PI))-90]}function l(e){return e.map(a)}let c;if(1===this.type){const e=[];for(const i of o)e.push(i[0]);const t=l(e);c=1===e.length?{type:"Point",coordinates:t[0]}:{type:"MultiPoint",coordinates:t}}else if(2===this.type){const e=o.map(l);c=1===e.length?{type:"LineString",coordinates:e[0]}:{type:"MultiLineString",coordinates:e}}else{if(3!==this.type)throw new Error("unknown feature type");{const e=Dc(o),t=[];for(const i of e)t.push(i.map(l));c=1===t.length?{type:"Polygon",coordinates:t[0]}:{type:"MultiPolygon",coordinates:t}}}const h={type:"Feature",geometry:c,properties:this.properties};return null!=this.id&&(h.id=this.id),h}}function Ac(e,t,i){1===e?t.id=i.readVarint():2===e?function(e,t){const i=e.readVarint()+e.pos;for(;e.pos=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];const t=this._pbf.readVarint()+this._pbf.pos;return new Cc(this._pbf,t,this.extent,this._keys,this._values)}}function Rc(e,t,i){15===e?t.version=i.readVarint():1===e?t.name=i.readString():5===e?t.extent=i.readVarint():2===e?t._features.push(i.pos):3===e?t._keys.push(i.readString()):4===e&&t._values.push(function(e){let t=null;const i=e.readVarint()+e.pos;for(;e.pos>3;t=1===i?e.readString():2===i?e.readFloat():3===i?e.readDouble():4===i?e.readVarint64():5===i?e.readVarint():6===i?e.readSVarint():7===i?e.readBoolean():null}if(null==t)throw new Error("unknown feature value");return t}(i))}class Lc{constructor(e,t){this.layers=e.readFields(Fc,{},t)}}function Fc(e,t,i){if(3===e){const e=new kc(i,i.readVarint()+i.pos);e.length&&(t[e.name]=e)}}const Bc=Math.pow(2,13);function Oc(e,t,i,r,n,s,o,a){e.emplaceBack(t,i,2*Math.floor(r*Bc)+o,n*Bc*2,s*Bc*2,Math.round(a))}class Vc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new Zo,this.centroidVertexArray=new Uo,this.indexArray=new ta,this.programConfigurations=new La(e.layers,e.zoom),this.segments=new sa,this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,i){this.features=[],this.hasDependencies=Ol("fill-extrusion",this.layers,t);for(const{feature:r,id:n,index:s,sourceLayerIndex:o}of e){const e=this.layers[0]._featureFilter.needGeometry,a=Na(r,e);if(!this.layers[0]._featureFilter.filter(new ks(this.zoom),a,i))continue;const l={id:n,sourceLayerIndex:o,index:s,geometry:e?a.geometry:ja(r),properties:r.properties,type:r.type,patterns:{}};this.hasDependencies?this.features.push(Vl("fill-extrusion",this.layers,l,{zoom:this.zoom},t)):this.addFeature(l,l.geometry,s,i,{},t.subdivisionGranularity),t.featureIndex.insert(r,l.geometry,s,o,this.index,!0)}}addFeatures(e,t,i){for(const r of this.features){const{geometry:n}=r;this.addFeature(r,n,r.index,t,i,e.subdivisionGranularity)}}update(e,t,i){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:i})}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.centroidVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Ec),this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,Mc.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,t,i,r,n,s){for(const o of er(t,500)){const t={x:0,y:0,sampleCount:0},i=this.layoutVertexArray.length;this.processPolygon(t,r,e,o,s);const n=this.layoutVertexArray.length-i,a=Math.floor(t.x/t.sampleCount),l=Math.floor(t.y/t.sampleCount);for(let e=0;e{Oc(c,e,t,0,0,1,1,0)},this.segments,this.layoutVertexArray,this.indexArray,l.verticesFlattened,l.indicesTriangles)}_generateSideFaces(e,t){let i=0;for(let r=1;rsa.MAX_VERTEX_ARRAY_LENGTH&&(t.segment=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const o=n.sub(s)._perp()._unit(),a=s.dist(n);i+a>32768&&(i=0),Oc(this.layoutVertexArray,n.x,n.y,o.x,o.y,0,0,i),Oc(this.layoutVertexArray,n.x,n.y,o.x,o.y,0,1,i),i+=a,Oc(this.layoutVertexArray,s.x,s.y,o.x,o.y,0,0,i),Oc(this.layoutVertexArray,s.x,s.y,o.x,o.y,0,1,i);const l=t.segment.vertexLength;this.indexArray.emplaceBack(l,l+2,l+1),this.indexArray.emplaceBack(l+1,l+2,l+3),t.segment.vertexLength+=4,t.segment.primitiveLength+=2}}}function jc(e,t){for(let i=0;iA)||e.y===t.y&&(e.y<0||e.y>A)}function Uc(e){return e.every(e=>e.x<0)||e.every(e=>e.x>A)||e.every(e=>e.y<0)||e.every(e=>e.y>A)}let Gc;ds("FillExtrusionBucket",Vc,{omit:["layers","features"]});var qc={get paint(){return Gc=Gc||new Xs({"fill-extrusion-opacity":new qs(ve["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Zs(ve["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new qs(ve["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new qs(ve["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new $s(ve["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Zs(ve["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Zs(ve["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new qs(ve["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Zc extends Ys{constructor(e,t){super(e,qc,t)}createBucket(e){return new Vc(e)}queryRadius(){return rl(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature({queryGeometry:e,feature:t,featureState:i,geometry:n,transform:s,pixelsToTileUnits:o,pixelPosMatrix:a}){const l=nl(e,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),-s.bearingInRadians,o),c=this.paint.get("fill-extrusion-height").evaluate(t,i),h=this.paint.get("fill-extrusion-base").evaluate(t,i),u=function(e,t){const i=[];for(const n of e){const e=[n.x,n.y,0,1];P(e,e,t),i.push(new r(e[0]/e[3],e[1]/e[3]))}return i}(l,a),d=function(e,t,i,n){const s=[],o=[],a=n[8]*t,l=n[9]*t,c=n[10]*t,h=n[11]*t,u=n[8]*i,d=n[9]*i,p=n[10]*i,f=n[11]*i;for(const m of e){const e=[],t=[];for(const i of m){const s=i.x,o=i.y,m=n[0]*s+n[4]*o+n[12],_=n[1]*s+n[5]*o+n[13],g=n[2]*s+n[6]*o+n[14],y=n[3]*s+n[7]*o+n[15],x=g+c,v=y+h,b=m+u,w=_+d,T=g+p,S=y+f,P=new r((m+a)/v,(_+l)/v);P.z=x/v,e.push(P);const I=new r(b/S,w/S);I.z=T/S,t.push(I)}s.push(e),o.push(t)}return[s,o]}(n,h,c,a);return function(e,t,i){let r=1/0;Wa(i,t)&&(r=Wc(i,t[0]));for(let n=0;ne.id),this.index=e.index,this.hasDependencies=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(e=>{this.gradients[e.id]={}}),this.layoutVertexArray=new $o,this.layoutVertexArray2=new Wo,this.indexArray=new ta,this.programConfigurations=new La(e.layers,e.zoom),this.segments=new sa,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,i){this.hasDependencies=Ol("line",this.layers,t)||this.hasLineDasharray(this.layers);const r=this.layers[0].layout.get("line-sort-key"),n=!r.isConstant(),s=[];for(const{feature:o,id:a,index:l,sourceLayerIndex:c}of e){const e=this.layers[0]._featureFilter.needGeometry,t=Na(o,e);if(!this.layers[0]._featureFilter.filter(new ks(this.zoom),t,i))continue;const h=n?r.evaluate(t,{},i):void 0,u={id:a,properties:o.properties,type:o.type,sourceLayerIndex:c,index:l,geometry:e?t.geometry:ja(o),patterns:{},dashes:{},sortKey:h};s.push(u)}n&&s.sort((e,t)=>e.sortKey-t.sortKey);for(const o of s){const{geometry:r,index:n,sourceLayerIndex:s}=o;this.hasDependencies?(Ol("line",this.layers,t)?Vl("line",this.layers,o,{zoom:this.zoom},t):this.hasLineDasharray(this.layers)&&this.addLineDashDependencies(this.layers,o,this.zoom,t),this.patternFeatures.push(o)):this.addFeature(o,r,n,i,{},{},t.subdivisionGranularity),t.featureIndex.insert(e[n].feature,r,n,s,this.index)}}update(e,t,i,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:i,dashPositions:r})}addFeatures(e,t,i,r){for(const n of this.patternFeatures)this.addFeature(n,n.geometry,n.index,t,i,r,e.subdivisionGranularity)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,Kc)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Xc),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,t,i,r,n,s,o){const a=this.layers[0].layout,l=a.get("line-join").evaluate(e,{}),c=a.get("line-cap"),h=a.get("line-miter-limit"),u=a.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(const d of t)this.addLine(d,e,l,c,h,u,r,o);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,{imagePositions:n,dashPositions:s,canonical:r})}addLine(e,t,i,r,n,s,o,a){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,e=gc(e,o?a.line.getGranularityForZoomLevel(o.z):1),this.lineClips){this.lineClipsArray.push(this.lineClips);for(let t=0;t=2&&e[c-1].equals(e[c-2]);)c--;let h=0;for(;h0;if(b&&y>h){const e=p.dist(f);if(e>2*u){const t=p.sub(p.sub(f)._mult(u/e)._round());this.updateDistance(f,t),this.addCurrentVertex(t,_,0,0,d),f=t}}const T=f&&m;let S=T?i:l?"butt":r;if(T&&"round"===S&&(xn&&(S="bevel"),"bevel"===S&&(x>2&&(S="flipbevel"),x100)t=g.mult(-1);else{const e=x*_.add(g).mag()/_.sub(g).mag();t._perp()._mult(e*(w?-1:1))}this.addCurrentVertex(p,t,0,0,d),this.addCurrentVertex(p,t.mult(-1),0,0,d)}else if("bevel"===S||"fakeround"===S){const e=-Math.sqrt(x*x-1),t=w?e:0,i=w?0:e;if(f&&this.addCurrentVertex(p,_,t,i,d),"fakeround"===S){const e=Math.round(180*v/Math.PI/20);for(let t=1;t2*u){const t=p.add(m.sub(p)._mult(u/e)._round());this.updateDistance(p,t),this.addCurrentVertex(t,g,0,0,d),p=t}}}}addCurrentVertex(e,t,i,r,n,s=!1){const o=t.y*r-t.x,a=-t.y-t.x*r;this.addHalfVertex(e,t.x+t.y*i,t.y-t.x*i,s,!1,i,n),this.addHalfVertex(e,o,a,s,!0,-r,n),this.distance>Qc/2&&0===this.totalDistance&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(e,t,i,r,n,s))}addHalfVertex({x:e,y:t},i,r,n,s,o,a){const l=.5*(this.lineClips?this.scaledDistance*(Qc-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((e<<1)+(n?1:0),(t<<1)+(s?1:0),Math.round(63*i)+128,Math.round(63*r)+128,1+(0===o?0:o<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const c=a.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,c,this.e2),a.primitiveLength++),s?this.e2=c:this.e1=c}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(e,t){this.distance+=e.dist(t),this.updateScaledDistance()}hasLineDasharray(e){for(const t of e){const e=t.paint.get("line-dasharray");if(e&&!e.isConstant())return!0}return!1}addLineDashDependencies(e,t,i,r){for(const n of e){const e=n.paint.get("line-dasharray");if(!e||"constant"===e.value.kind)continue;const s="round"===n.layout.get("line-cap"),o={dasharray:e.value.evaluate({zoom:i-1},t,{}),round:s},a={dasharray:e.value.evaluate({zoom:i},t,{}),round:s},l={dasharray:e.value.evaluate({zoom:i+1},t,{}),round:s},c=`${o.dasharray.join(",")},${o.round}`,h=`${a.dasharray.join(",")},${a.round}`,u=`${l.dasharray.join(",")},${l.round}`;r.dashDependencies[c]=o,r.dashDependencies[h]=a,r.dashDependencies[u]=l,t.dashes[n.id]={min:c,mid:h,max:u}}}}let th,ih;ds("LineBucket",eh,{omit:["layers","patternFeatures"]});var rh={get paint(){return ih=ih||new Xs({"line-opacity":new Zs(ve.paint_line["line-opacity"]),"line-color":new Zs(ve.paint_line["line-color"]),"line-translate":new qs(ve.paint_line["line-translate"]),"line-translate-anchor":new qs(ve.paint_line["line-translate-anchor"]),"line-width":new Zs(ve.paint_line["line-width"]),"line-gap-width":new Zs(ve.paint_line["line-gap-width"]),"line-offset":new Zs(ve.paint_line["line-offset"]),"line-blur":new Zs(ve.paint_line["line-blur"]),"line-dasharray":new $s(ve.paint_line["line-dasharray"]),"line-pattern":new $s(ve.paint_line["line-pattern"]),"line-gradient":new Hs(ve.paint_line["line-gradient"])})},get layout(){return th=th||new Xs({"line-cap":new qs(ve.layout_line["line-cap"]),"line-join":new Zs(ve.layout_line["line-join"]),"line-miter-limit":new qs(ve.layout_line["line-miter-limit"]),"line-round-limit":new qs(ve.layout_line["line-round-limit"]),"line-sort-key":new Zs(ve.layout_line["line-sort-key"])})}};class nh extends Zs{possiblyEvaluate(e,t){return t=new ks(Math.floor(t.zoom),{now:t.now,fadeDuration:t.fadeDuration,zoomHistory:t.zoomHistory,transition:t.transition}),super.possiblyEvaluate(e,t)}evaluate(e,t,i,r){return t=V({},t,{zoom:Math.floor(t.zoom)}),super.evaluate(e,t,i,r)}}let sh;class oh extends Ys{constructor(e,t){super(e,rh,t),this.gradientVersion=0,sh||(sh=new nh(rh.paint.properties["line-width"].specification),sh.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(e){if("line-gradient"===e){const e=this.gradientExpression();this.stepInterpolant=!(void 0===e._styleExpression)&&e._styleExpression.expression instanceof li,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(e,t){super.recalculate(e,t),this.paint._values["line-floorwidth"]=sh.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)}createBucket(e){return new eh(e)}queryRadius(e){const t=e,i=ah(il("line-width",this,t),il("line-gap-width",this,t)),r=il("line-offset",this,t);return i/2+Math.abs(r)+rl(this.paint.get("line-translate"))}queryIntersectsFeature({queryGeometry:e,feature:t,featureState:i,geometry:n,transform:s,pixelsToTileUnits:o}){const a=nl(e,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),-s.bearingInRadians,o),l=o/2*ah(this.paint.get("line-width").evaluate(t,i),this.paint.get("line-gap-width").evaluate(t,i)),c=this.paint.get("line-offset").evaluate(t,i);return c&&(n=function(e,t){const i=[];for(let n=0;n=3)for(let t=0;t0?t+2*e:e}const lh=ro([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),ch=ro([{name:"a_projected_pos",components:3,type:"Float32"}],4);ro([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const hh=ro([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);ro([{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"}]);const uh=ro([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),dh=ro([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function ph(e,t,i){return e.sections.forEach(e=>{e.text=function(e,t,i){const r=t.layout.get("text-transform").evaluate(i,{});return"uppercase"===r?e=e.toLocaleUpperCase():"lowercase"===r&&(e=e.toLocaleLowerCase()),zs.applyArabicShaping&&(e=zs.applyArabicShaping(e)),e}(e.text,t,i)}),e}ro([{name:"triangle",components:3,type:"Uint16"}]),ro([{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"}]),ro([{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"}]),ro([{type:"Float32",name:"offsetX"}]),ro([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),ro([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);var fh=24;const mh={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","⋯":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"},_h={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},gh={40:!0};function yh(e,t,i,r,n,s){if("fontStack"in t){const r=i[t.fontStack],s=r&&r[e];return s?s.metrics.advance*t.scale+n:0}{const e=r[t.imageName];return e?e.displaySize[0]*t.scale*fh/s+n:0}}function xh(e,t,i,r){const n=Math.pow(e-t,2);return r?eMath.max(e,this.sections[t].scale),0)}getMaxImageSize(e){let t=0,i=0;for(let r=0;ri))}addImageSection(e){const t=e.image?e.image.name:"";if(0===t.length)return void Z("Can't add FormattedSection with an empty image.");const i=this.getNextImageSectionCharCode();i?(this.text+=String.fromCharCode(i),this.sections.push({scale:1,verticalAlign:e.verticalAlign||"bottom",imageName:t}),this.sectionIndex.push(this.sections.length-1)):Z("Reached maximum number of images 6401")}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}determineLineBreaks(e,t,i,r,n){const s=[],o=this.determineAverageLineWidth(e,t,i,r,n),a=this.hasZeroWidthSpaces();let l=0,c=0;const h=this.text[Symbol.iterator]();let u=h.next();const d=this.text[Symbol.iterator]();d.next();let p=d.next();const f=this.text[Symbol.iterator]();f.next(),f.next();let m=f.next();for(;!u.done;){const t=this.getSection(c),_=u.value.codePointAt(0);if(bs(_)||(l+=yh(_,t,i,r,e,n)),!p.done){const e=xs(_),i=p.value.codePointAt(0);(_h[_]||e||"imageName"in t||!m.done&&gh[i])&&s.push(bh(c+1,l,o,s,vh(_,i,e&&a),!1))}c++,u=h.next(),p=d.next(),m=f.next()}return wh(bh(this.length(),l,o,s,0,!0))}determineAverageLineWidth(e,t,i,r,n){let s=0,o=0;for(const a of this.text){const t=this.getSection(o);s+=yh(a.codePointAt(0),t,i,r,e,n),o++}return s/Math.max(1,Math.ceil(s/t))}}const Sh=4294967296,Ph=1/Sh,Ih="undefined"==typeof TextDecoder?null:new TextDecoder("utf-8");class Mh{constructor(e=new Uint8Array(16)){this.buf=ArrayBuffer.isView(e)?e:new Uint8Array(e),this.dataView=new DataView(this.buf.buffer),this.pos=0,this.type=0,this.length=this.buf.length}readFields(e,t,i=this.length){for(;this.pos>3,n=this.pos;this.type=7&i,e(r,t,this),this.pos===n&&this.skip(i)}return t}readMessage(e,t){return this.readFields(e,t,this.readVarint()+this.pos)}readFixed32(){const e=this.dataView.getUint32(this.pos,!0);return this.pos+=4,e}readSFixed32(){const e=this.dataView.getInt32(this.pos,!0);return this.pos+=4,e}readFixed64(){const e=this.dataView.getUint32(this.pos,!0)+this.dataView.getUint32(this.pos+4,!0)*Sh;return this.pos+=8,e}readSFixed64(){const e=this.dataView.getUint32(this.pos,!0)+this.dataView.getInt32(this.pos+4,!0)*Sh;return this.pos+=8,e}readFloat(){const e=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,e}readDouble(){const e=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,e}readVarint(e){const t=this.buf;let i,r;return r=t[this.pos++],i=127&r,r<128?i:(r=t[this.pos++],i|=(127&r)<<7,r<128?i:(r=t[this.pos++],i|=(127&r)<<14,r<128?i:(r=t[this.pos++],i|=(127&r)<<21,r<128?i:(r=t[this.pos],i|=(15&r)<<28,function(e,t,i){const r=i.buf;let n,s;if(s=r[i.pos++],n=(112&s)>>4,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(127&s)<<3,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(127&s)<<10,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(127&s)<<17,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(127&s)<<24,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(1&s)<<31,s<128)return Eh(e,n,t);throw new Error("Expected varint not more than 10 bytes")}(i,e,this)))))}readVarint64(){return this.readVarint(!0)}readSVarint(){const e=this.readVarint();return e%2==1?(e+1)/-2:e/2}readBoolean(){return Boolean(this.readVarint())}readString(){const e=this.readVarint()+this.pos,t=this.pos;return this.pos=e,e-t>=12&&Ih?Ih.decode(this.buf.subarray(t,e)):function(e,t,i){let r="",n=t;for(;n239?4:t>223?3:t>191?2:1;if(n+c>i)break;1===c?t<128&&(l=t):2===c?(s=e[n+1],128==(192&s)&&(l=(31&t)<<6|63&s,l<=127&&(l=null))):3===c?(s=e[n+1],o=e[n+2],128==(192&s)&&128==(192&o)&&(l=(15&t)<<12|(63&s)<<6|63&o,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===c&&(s=e[n+1],o=e[n+2],a=e[n+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&t)<<18|(63&s)<<12|(63&o)<<6|63&a,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,c=1):l>65535&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),n+=c}return r}(this.buf,t,e)}readBytes(){const e=this.readVarint()+this.pos,t=this.buf.subarray(this.pos,e);return this.pos=e,t}readPackedVarint(e=[],t){const i=this.readPackedEnd();for(;this.pos127;);else if(2===t)this.pos=this.readVarint()+this.pos;else if(5===t)this.pos+=4;else{if(1!==t)throw new Error(`Unimplemented type: ${t}`);this.pos+=8}}writeTag(e,t){this.writeVarint(e<<3|t)}realloc(e){let t=this.length||16;for(;t268435455||e<0?function(e,t){let i,r;if(e>=0?(i=e%4294967296|0,r=e/4294967296|0):(i=~(-e%4294967296),r=~(-e/4294967296),4294967295^i?i=i+1|0:(i=0,r=r+1|0)),e>=0x10000000000000000||e<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");var n,s;t.realloc(10),n=i,(s=t).buf[s.pos++]=127&n|128,n>>>=7,s.buf[s.pos++]=127&n|128,n>>>=7,s.buf[s.pos++]=127&n|128,n>>>=7,s.buf[s.pos++]=127&n|128,s.buf[s.pos]=127&(n>>>=7),function(e,t){const i=(7&e)<<4;t.buf[t.pos++]|=i|((e>>>=3)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e)))))}(r,t)}(e,this):(this.realloc(4),this.buf[this.pos++]=127&e|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=e>>>7&127))))}writeSVarint(e){this.writeVarint(e<0?2*-e-1:2*e)}writeBoolean(e){this.writeVarint(+e)}writeString(e){e=String(e),this.realloc(4*e.length),this.pos++;const t=this.pos;this.pos=function(e,t,i){for(let r,n,s=0;s55295&&r<57344){if(!n){r>56319||s+1===t.length?(e[i++]=239,e[i++]=191,e[i++]=189):n=r;continue}if(r<56320){e[i++]=239,e[i++]=191,e[i++]=189,n=r;continue}r=n-55296<<10|r-56320|65536,n=null}else n&&(e[i++]=239,e[i++]=191,e[i++]=189,n=null);r<128?e[i++]=r:(r<2048?e[i++]=r>>6|192:(r<65536?e[i++]=r>>12|224:(e[i++]=r>>18|240,e[i++]=r>>12&63|128),e[i++]=r>>6&63|128),e[i++]=63&r|128)}return i}(this.buf,e,this.pos);const i=this.pos-t;i>=128&&Ch(t,i,this),this.pos=t-1,this.writeVarint(i),this.pos+=i}writeFloat(e){this.realloc(4),this.dataView.setFloat32(this.pos,e,!0),this.pos+=4}writeDouble(e){this.realloc(8),this.dataView.setFloat64(this.pos,e,!0),this.pos+=8}writeBytes(e){const t=e.length;this.writeVarint(t),this.realloc(t);for(let i=0;i=128&&Ch(i,r,this),this.pos=i-1,this.writeVarint(r),this.pos+=r}writeMessage(e,t,i){this.writeTag(e,2),this.writeRawMessage(t,i)}writePackedVarint(e,t){t.length&&this.writeMessage(e,Ah,t)}writePackedSVarint(e,t){t.length&&this.writeMessage(e,Dh,t)}writePackedBoolean(e,t){t.length&&this.writeMessage(e,Rh,t)}writePackedFloat(e,t){t.length&&this.writeMessage(e,zh,t)}writePackedDouble(e,t){t.length&&this.writeMessage(e,kh,t)}writePackedFixed32(e,t){t.length&&this.writeMessage(e,Lh,t)}writePackedSFixed32(e,t){t.length&&this.writeMessage(e,Fh,t)}writePackedFixed64(e,t){t.length&&this.writeMessage(e,Bh,t)}writePackedSFixed64(e,t){t.length&&this.writeMessage(e,Oh,t)}writeBytesField(e,t){this.writeTag(e,2),this.writeBytes(t)}writeFixed32Field(e,t){this.writeTag(e,5),this.writeFixed32(t)}writeSFixed32Field(e,t){this.writeTag(e,5),this.writeSFixed32(t)}writeFixed64Field(e,t){this.writeTag(e,1),this.writeFixed64(t)}writeSFixed64Field(e,t){this.writeTag(e,1),this.writeSFixed64(t)}writeVarintField(e,t){this.writeTag(e,0),this.writeVarint(t)}writeSVarintField(e,t){this.writeTag(e,0),this.writeSVarint(t)}writeStringField(e,t){this.writeTag(e,2),this.writeString(t)}writeFloatField(e,t){this.writeTag(e,5),this.writeFloat(t)}writeDoubleField(e,t){this.writeTag(e,1),this.writeDouble(t)}writeBooleanField(e,t){this.writeVarintField(e,+t)}}function Eh(e,t,i){return i?4294967296*t+(e>>>0):4294967296*(t>>>0)+(e>>>0)}function Ch(e,t,i){const r=t<=16383?1:t<=2097151?2:t<=268435455?3:Math.floor(Math.log(t)/(7*Math.LN2));i.realloc(r);for(let n=i.pos-1;n>=e;n--)i.buf[n+r]=i.buf[n]}function Ah(e,t){for(let i=0;it.h-e.h);const r=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(t/.95)),i),h:1/0}];let n=0,s=0;for(const o of e)for(let e=r.length-1;e>=0;e--){const t=r[e];if(!(o.w>t.w||o.h>t.h)){if(o.x=t.x,o.y=t.y,s=Math.max(s,o.y+o.h),n=Math.max(n,o.x+o.w),o.w===t.w&&o.h===t.h){const t=r.pop();t&&e_.toCodeUnitIndex(e));const e=x(_.toString(),y);for(const t of e){const e=[...t].map(()=>0);g.push(new Th(t,_.sections,e))}}else if(v){g=[],y=y.map(e=>_.toCodeUnitIndex(e));let e=0;const t=[];for(const r of _.text)t.push(...Array(r.length).fill(_.sectionIndex[e])),e++;const i=v(_.text,t,y);for(const r of i){const e=[];let t="";for(const i of r[0])e.push(r[1][t.length]),t+=i;g.push(new Th(r[0],_.sections,e))}}else g=function(e,t){const i=[];let r=0;for(const n of t)i.push(e.substring(r,n)),r=n;return rc){const e=Math.ceil(s/c);n*=e/o,o=e}return{x1:r,y1:n,x2:r+s,y2:n+o}}function iu(e,t,i,r,n,s){const o=e.image;let a;if(o.content){const e=o.content,t=o.pixelRatio||1;a=[e[0]/t,e[1]/t,o.displaySize[0]-e[2]/t,o.displaySize[1]-e[3]/t]}const l=t.left*s,c=t.right*s;let h,u,d,p;"width"===i||"both"===i?(p=n[0]+l-r[3],u=n[0]+c+r[1]):(p=n[0]+(l+c-o.displaySize[0])/2,u=p+o.displaySize[0]);const f=t.top*s,m=t.bottom*s;return"height"===i||"both"===i?(h=n[1]+f-r[0],d=n[1]+m+r[2]):(h=n[1]+(f+m-o.displaySize[1])/2,d=h+o.displaySize[1]),{image:o,top:h,right:u,bottom:d,left:p,collisionPadding:a}}ds("ImagePosition",Gh),ds("ImageAtlas",qh),e.az=void 0,(Zh=e.az||(e.az={}))[Zh.none=0]="none",Zh[Zh.horizontal=1]="horizontal",Zh[Zh.vertical=2]="vertical",Zh[Zh.horizontalOnly=3]="horizontalOnly";const ru=128,nu=32640;function su(e,t){const{expression:i}=t;if("constant"===i.kind)return{kind:"constant",layoutSize:i.evaluate(new ks(e+1))};if("source"===i.kind)return{kind:"source"};{const{zoomStops:t,interpolationType:r}=i;let n=0;for(;ne.id),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex,this.hasDependencies=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[];const i=this.layers[0]._unevaluatedLayout._values;this.textSizeData=su(this.zoom,i["text-size"]),this.iconSizeData=su(this.zoom,i["icon-size"]);const r=this.layers[0].layout,n=r.get("symbol-sort-key"),s=r.get("symbol-z-order");this.canOverlap="never"!==ou(r,"text-overlap","text-allow-overlap")||"never"!==ou(r,"icon-overlap","icon-allow-overlap")||r.get("text-ignore-placement")||r.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==s&&!n.isConstant(),this.sortFeaturesByY=("viewport-y"===s||"auto"===s&&!this.sortFeaturesByKey)&&this.canOverlap,"point"===r.get("symbol-placement")&&(this.writingModes=r.get("text-writing-mode").map(t=>e.az[t])),this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id),this.sourceID=t.sourceID}createArrays(){this.text=new uu(new La(this.layers,this.zoom,e=>/^text/.test(e))),this.icon=new uu(new La(this.layers,this.zoom,e=>/^icon/.test(e))),this.glyphOffsetArray=new Fo,this.lineVertexArray=new Bo,this.symbolInstances=new Lo,this.textAnchorOffsets=new Vo}calculateGlyphDependencies(e,t,i,r,n){for(const s of e)if(t[s.codePointAt(0)]=!0,(i||r)&&n){const e=mh[s];e&&(t[e.codePointAt(0)]=!0)}}populate(t,i,r){const n=this.layers[0],s=n.layout,o=s.get("text-font"),a=s.get("text-field"),l=s.get("icon-image"),c=("constant"!==a.value.kind||a.value.value instanceof zt&&!a.value.value.isEmpty()||a.value.value.toString().length>0)&&("constant"!==o.value.kind||o.value.value.length>0),h="constant"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,u=s.get("symbol-sort-key");if(this.features=[],!c&&!h)return;const d=i.iconDependencies,p=i.glyphDependencies,f=i.availableImages,m=new ks(this.zoom);for(const{feature:_,id:g,index:y,sourceLayerIndex:x}of t){const t=n._featureFilter.needGeometry,i=Na(_,t);if(!n._featureFilter.filter(m,i,r))continue;let a,l;if(t||(i.geometry=ja(_)),c){const e=n.getValueAndResolveTokens("text-field",i,r,f),t=zt.factory(e),s=this.hasRTLText=this.hasRTLText||hu(t);(!s||"unavailable"===zs.getRTLTextPluginStatus()||s&&zs.isParsed())&&(a=ph(t,n,i))}if(h){const e=n.getValueAndResolveTokens("icon-image",i,r,f);l=e instanceof Vt?e:Vt.fromString(e)}if(!a&&!l)continue;const v=this.sortFeaturesByKey?u.evaluate(i,{},r):void 0;if(this.features.push({id:g,text:a,icon:l,index:y,sourceLayerIndex:x,geometry:i.geometry,properties:_.properties,type:Cc.types[_.type],sortKey:v}),l&&(d[l.name]=!0),a){const t=o.evaluate(i,{},r).join(","),n="viewport"!==s.get("text-rotation-alignment")&&"point"!==s.get("symbol-placement");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(e.az.vertical)>=0;for(const e of a.sections)if(e.image)d[e.image.name]=!0;else{const i=ws(a.toString()),r=e.fontStack||t,s=p[r]=p[r]||{};this.calculateGlyphDependencies(e.text,s,n,this.allowVerticalPlacement,i)}}}"line"===s.get("symbol-placement")&&(this.features=function(e){const t={},i={},r=[];let n=0;function s(t){r.push(e[t]),n++}function o(e,t,n){const s=i[e];return delete i[e],i[t]=s,r[s].geometry[0].pop(),r[s].geometry[0]=r[s].geometry[0].concat(n[0]),s}function a(e,i,n){const s=t[i];return delete t[i],t[e]=s,r[s].geometry[0].shift(),r[s].geometry[0]=n[0].concat(r[s].geometry[0]),s}function l(e,t,i){const r=i?t[0][t[0].length-1]:t[0][0];return`${e}:${r.x}:${r.y}`}for(let c=0;ce.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((e,t)=>e.sortKey-t.sortKey)}update(e,t,i){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,t,this.layers,{imagePositions:i}),this.icon.programConfigurations.updatePaintArrays(e,t,this.layers,{imagePositions:i}))}isEmpty(){return 0===this.symbolInstances.length&&!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,t){const i=this.lineVertexArray.length;if(void 0!==e.segment){let i=e.dist(t[e.segment+1]),r=e.dist(t[e.segment]);const n={};for(let s=e.segment+1;s=0;s--)n[s]={x:t[s].x,y:t[s].y,tileUnitDistanceFromAnchor:r},s>0&&(r+=t[s-1].dist(t[s]));for(let e=0;e0}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,t){const i=e.placedSymbolArray.get(t),r=i.vertexStartIndex+4*i.numGlyphs;for(let n=i.vertexStartIndex;nr[e]-r[t]||n[t]-n[e]),s}addToSortKeyRanges(e,t){const i=this.sortKeyRanges[this.sortKeyRanges.length-1];i&&i.sortKey===t?i.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:t,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const e of this.symbolInstanceIndexes){const t=this.symbolInstances.get(e);this.featureSortOrder.push(t.featureIndex),[t.rightJustifiedTextSymbolIndex,t.centerJustifiedTextSymbolIndex,t.leftJustifiedTextSymbolIndex].forEach((e,t,i)=>{e>=0&&i.indexOf(e)===t&&this.addIndicesForPlacedSymbol(this.text,e)}),t.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,t.verticalPlacedTextSymbolIndex),t.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.placedIconSymbolIndex),t.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let fu,mu;ds("SymbolBucket",pu,{omit:["layers","collisionBoxArray","features","compareText"]}),pu.MAX_GLYPHS=65535,pu.addDynamicAttributes=cu;var _u={get paint(){return mu=mu||new Xs({"icon-opacity":new Zs(ve.paint_symbol["icon-opacity"]),"icon-color":new Zs(ve.paint_symbol["icon-color"]),"icon-halo-color":new Zs(ve.paint_symbol["icon-halo-color"]),"icon-halo-width":new Zs(ve.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Zs(ve.paint_symbol["icon-halo-blur"]),"icon-translate":new qs(ve.paint_symbol["icon-translate"]),"icon-translate-anchor":new qs(ve.paint_symbol["icon-translate-anchor"]),"text-opacity":new Zs(ve.paint_symbol["text-opacity"]),"text-color":new Zs(ve.paint_symbol["text-color"],{runtimeType:je,getOverride:e=>e.textColor,hasOverride:e=>!!e.textColor}),"text-halo-color":new Zs(ve.paint_symbol["text-halo-color"]),"text-halo-width":new Zs(ve.paint_symbol["text-halo-width"]),"text-halo-blur":new Zs(ve.paint_symbol["text-halo-blur"]),"text-translate":new qs(ve.paint_symbol["text-translate"]),"text-translate-anchor":new qs(ve.paint_symbol["text-translate-anchor"])})},get layout(){return fu=fu||new Xs({"symbol-placement":new qs(ve.layout_symbol["symbol-placement"]),"symbol-spacing":new qs(ve.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new qs(ve.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Zs(ve.layout_symbol["symbol-sort-key"]),"symbol-z-order":new qs(ve.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new qs(ve.layout_symbol["icon-allow-overlap"]),"icon-overlap":new qs(ve.layout_symbol["icon-overlap"]),"icon-ignore-placement":new qs(ve.layout_symbol["icon-ignore-placement"]),"icon-optional":new qs(ve.layout_symbol["icon-optional"]),"icon-rotation-alignment":new qs(ve.layout_symbol["icon-rotation-alignment"]),"icon-size":new Zs(ve.layout_symbol["icon-size"]),"icon-text-fit":new qs(ve.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new qs(ve.layout_symbol["icon-text-fit-padding"]),"icon-image":new Zs(ve.layout_symbol["icon-image"]),"icon-rotate":new Zs(ve.layout_symbol["icon-rotate"]),"icon-padding":new Zs(ve.layout_symbol["icon-padding"]),"icon-keep-upright":new qs(ve.layout_symbol["icon-keep-upright"]),"icon-offset":new Zs(ve.layout_symbol["icon-offset"]),"icon-anchor":new Zs(ve.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new qs(ve.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new qs(ve.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new qs(ve.layout_symbol["text-rotation-alignment"]),"text-field":new Zs(ve.layout_symbol["text-field"]),"text-font":new Zs(ve.layout_symbol["text-font"]),"text-size":new Zs(ve.layout_symbol["text-size"]),"text-max-width":new Zs(ve.layout_symbol["text-max-width"]),"text-line-height":new qs(ve.layout_symbol["text-line-height"]),"text-letter-spacing":new Zs(ve.layout_symbol["text-letter-spacing"]),"text-justify":new Zs(ve.layout_symbol["text-justify"]),"text-radial-offset":new Zs(ve.layout_symbol["text-radial-offset"]),"text-variable-anchor":new qs(ve.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new Zs(ve.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new Zs(ve.layout_symbol["text-anchor"]),"text-max-angle":new qs(ve.layout_symbol["text-max-angle"]),"text-writing-mode":new qs(ve.layout_symbol["text-writing-mode"]),"text-rotate":new Zs(ve.layout_symbol["text-rotate"]),"text-padding":new qs(ve.layout_symbol["text-padding"]),"text-keep-upright":new qs(ve.layout_symbol["text-keep-upright"]),"text-transform":new Zs(ve.layout_symbol["text-transform"]),"text-offset":new Zs(ve.layout_symbol["text-offset"]),"text-allow-overlap":new qs(ve.layout_symbol["text-allow-overlap"]),"text-overlap":new qs(ve.layout_symbol["text-overlap"]),"text-ignore-placement":new qs(ve.layout_symbol["text-ignore-placement"]),"text-optional":new qs(ve.layout_symbol["text-optional"])})}};class gu{constructor(e){if(void 0===e.property.overrides)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=e.property.overrides?e.property.overrides.runtimeType:Fe,this.defaultValue=e}evaluate(e){if(e.formattedSection){const t=this.defaultValue.property.overrides;if(t&&t.hasOverride(e.formattedSection))return t.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}}ds("FormatSectionOverride",gu,{omit:["defaultValue"]});class yu extends Ys{constructor(e,t){super(e,_u,t)}recalculate(e,t){if(super.recalculate(e,t),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]="map"===this.layout.get("text-rotation-alignment")?"map":"viewport"),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){const e=this.layout.get("text-writing-mode");if(e){const t=[];for(const i of e)t.indexOf(i)<0&&t.push(i);this.layout._values["text-writing-mode"]=t}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(e,t,i,r){const n=this.layout.get(e).evaluate(t,{},i,r),s=this._unevaluatedLayout._values[e];return s.isDataDriven()||tn(s.value)||!n?n:(o=t.properties,n.replace(/{([^{}]+)}/g,(e,t)=>o&&t in o?String(o[t]):""));var o}createBucket(e){return new pu(e)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const e of _u.paint.overridableProperties){if(!yu.hasPaintOverride(this.layout,e))continue;const t=this.paint.get(e),i=new gu(t),r=new en(i,t.property.specification);let n=null;n="constant"===t.value.kind||"source"===t.value.kind?new nn("source",r):new sn("composite",r,t.value.zoomStops),this.paint._values[e]=new Us(t.property,n,t.parameters)}}_handleOverridablePaintPropertyUpdate(e,t,i){return!(!this.layout||t.isDataDriven()||i.isDataDriven())&&yu.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,t){const i=e.get("text-field"),r=_u.paint.properties[t];let n=!1;const s=e=>{for(const t of e)if(r.overrides&&r.overrides.hasOverride(t))return void(n=!0)};if("constant"===i.value.kind&&i.value.value instanceof zt)s(i.value.value.sections);else if("source"===i.value.kind||"composite"===i.value.kind){const e=t=>{n||(t instanceof Zt&&Gt(t.value)===Ze?s(t.value.sections):t instanceof Ei?s(t.sections):t.eachChild(e))},t=i.value;t._styleExpression&&e(t._styleExpression.expression)}return n}}let xu;var vu={get paint(){return xu=xu||new Xs({"background-color":new qs(ve.paint_background["background-color"]),"background-pattern":new Ws(ve.paint_background["background-pattern"]),"background-opacity":new qs(ve.paint_background["background-opacity"])})}};class bu extends Ys{constructor(e,t){super(e,vu,t)}}class wu extends Ys{constructor(e,t){super(e,{},t),this.onAdd=e=>{this.implementation.onAdd&&this.implementation.onAdd(e,e.painter.context.gl)},this.onRemove=e=>{this.implementation.onRemove&&this.implementation.onRemove(e,e.painter.context.gl)},this.implementation=e}is3D(){return"3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class Tu{constructor(e){this._methodToThrottle=e,this._triggered=!1,"undefined"!=typeof MessageChannel&&(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=()=>{}}}const Su={once:!0},Pu=6371008.8;class Iu{constructor(e,t){if(isNaN(e)||isNaN(t))throw new Error(`Invalid LngLat object: (${e}, ${t})`);if(this.lng=+e,this.lat=+t,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Iu(O(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const t=Math.PI/180,i=this.lat*t,r=e.lat*t,n=Math.sin(i)*Math.sin(r)+Math.cos(i)*Math.cos(r)*Math.cos((e.lng-this.lng)*t);return Pu*Math.acos(Math.min(n,1))}static convert(e){if(e instanceof Iu)return e;if(Array.isArray(e)&&(2===e.length||3===e.length))return new Iu(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&"object"==typeof e&&null!==e)return new Iu(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 [, ]")}}const Mu=2*Math.PI*Pu;function Eu(e){return Mu*Math.cos(e*Math.PI/180)}function Cu(e){return(180+e)/360}function Au(e){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e*Math.PI/360)))/360}function Du(e,t){return e/Eu(t)}function zu(e){return 360*e-180}function ku(e){return 360/Math.PI*Math.atan(Math.exp((180-360*e)*Math.PI/180))-90}function Ru(e,t){return e*Eu(ku(t))}class Lu{constructor(e,t,i=0){this.x=+e,this.y=+t,this.z=+i}static fromLngLat(e,t=0){const i=Iu.convert(e);return new Lu(Cu(i.lng),Au(i.lat),Du(t,i.lat))}toLngLat(){return new Iu(zu(this.x),ku(this.y))}toAltitude(){return Ru(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Mu*(e=ku(this.y),1/Math.cos(e*Math.PI/180));var e}}function Fu(e,t,i){var r=2*Math.PI*6378137/256/Math.pow(2,i);return[e*r-2*Math.PI*6378137/2,t*r-2*Math.PI*6378137/2]}class Bu{constructor(e,t,i){if(n=t,s=i,(r=e)<0||r>25||s<0||s>=Math.pow(2,r)||n<0||n>=Math.pow(2,r))throw new Error(`x=${t}, y=${i}, z=${e} outside of bounds. 0<=x<${Math.pow(2,e)}, 0<=y<${Math.pow(2,e)} 0<=z<=25 `);var r,n,s;this.z=e,this.x=t,this.y=i,this.key=ju(0,e,e,t,i)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,t,i){const r=(s=this.x,o=this.y,a=this.z,l=Fu(256*s,256*(o=Math.pow(2,a)-o-1),a),c=Fu(256*(s+1),256*(o+1),a),l[0]+","+l[1]+","+c[0]+","+c[1]),n=function(e,t,i){let r,n="";for(let s=e;s>0;s--)r=1<1?"@2x":"").replace(/{quadkey}/g,n).replace(/{bbox-epsg-3857}/g,r)}isChildOf(e){const t=this.z-e.z;return t>0&&e.x===this.x>>t&&e.y===this.y>>t}getTilePoint(e){const t=Math.pow(2,this.z);return new r((e.x*t-this.x)*A,(e.y*t-this.y)*A)}toString(){return`${this.z}/${this.x}/${this.y}`}}class Ou{constructor(e,t){this.wrap=e,this.canonical=t,this.key=ju(e,t.z,t.z,t.x,t.y)}}class Vu{constructor(e,t,i,r,n){if(this.terrainRttPosMatrix32f=null,e= z; overscaledZ = ${e}; z = ${i}`);this.overscaledZ=e,this.wrap=t,this.canonical=new Bu(i,+r,+n),this.key=ju(t,e,i,r,n)}clone(){return new Vu(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}`);const t=this.canonical.z-e;return e>this.canonical.z?new Vu(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Vu(e,this.wrap,e,this.canonical.x>>t,this.canonical.y>>t)}isOverscaled(){return this.overscaledZ>this.canonical.z}calculateScaledKey(e,t){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);const i=this.canonical.z-e;return e>this.canonical.z?ju(this.wrap*+t,e,this.canonical.z,this.canonical.x,this.canonical.y):ju(this.wrap*+t,e,e,this.canonical.x>>i,this.canonical.y>>i)}isChildOf(e){if(e.wrap!==this.wrap)return!1;if(this.overscaledZ-e.overscaledZ<=0)return!1;if(0===e.overscaledZ)return this.overscaledZ>0;const t=this.canonical.z-e.canonical.z;return!(t<0)&&e.canonical.x===this.canonical.x>>t&&e.canonical.y===this.canonical.y>>t}children(e){if(this.overscaledZ>=e)return[new Vu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const t=this.canonical.z+1,i=2*this.canonical.x,r=2*this.canonical.y;return[new Vu(t,this.wrap,t,i,r),new Vu(t,this.wrap,t,i+1,r),new Vu(t,this.wrap,t,i,r+1),new Vu(t,this.wrap,t,i+1,r+1)]}isLessThan(e){return this.wrape.wrap)&&(this.overscaledZe.overscaledZ)&&(this.canonical.xe.canonical.x)&&this.canonical.ye.key===r);t>-1&&e.addOrUpdateProperties.splice(t,1)}return(e.removeAllProperties||t.removeAllProperties)&&(i.removeAllProperties=!0),(e.removeProperties||t.removeProperties)&&(i.removeProperties=[...e.removeProperties||[],...t.removeProperties||[]]),(e.addOrUpdateProperties||t.addOrUpdateProperties)&&(i.addOrUpdateProperties=[...e.addOrUpdateProperties||[],...t.addOrUpdateProperties||[]]),(e.newGeometry||t.newGeometry)&&(i.newGeometry=t.newGeometry||e.newGeometry),i}function Gu(e){var t,i;if(!e)return{};const r={};return r.removeAll=e.removeAll,r.remove=new Set(e.remove||[]),r.add=new Map(null===(t=e.add)||void 0===t?void 0:t.map(e=>[e.id,e])),r.update=new Map(null===(i=e.update)||void 0===i?void 0:i.map(e=>[e.id,e])),r}ds("CanonicalTileID",Bu),ds("OverscaledTileID",Vu,{omit:["terrainRttPosMatrix32f"]});class qu{constructor(){this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0}extend(e){return this.minX=Math.min(this.minX,e.x),this.minY=Math.min(this.minY,e.y),this.maxX=Math.max(this.maxX,e.x),this.maxY=Math.max(this.maxY,e.y),this}expandBy(e){return this.minX-=e,this.minY-=e,this.maxX+=e,this.maxY+=e,(this.minX>this.maxX||this.minY>this.maxY)&&(this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0),this}shrinkBy(e){return this.expandBy(-e)}map(e){const t=new qu;return t.extend(e(new r(this.minX,this.minY))),t.extend(e(new r(this.maxX,this.minY))),t.extend(e(new r(this.minX,this.maxY))),t.extend(e(new r(this.maxX,this.maxY))),t}static fromPoints(e){const t=new qu;for(const i of e)t.extend(i);return t}contains(e){return e.x>=this.minX&&e.x<=this.maxX&&e.y>=this.minY&&e.y<=this.maxY}empty(){return this.minX>this.maxX}width(){return this.maxX-this.minX}height(){return this.maxY-this.minY}covers(e){return!this.empty()&&!e.empty()&&e.minX>=this.minX&&e.maxX<=this.maxX&&e.minY>=this.minY&&e.maxY<=this.maxY}intersects(e){return!this.empty()&&!e.empty()&&e.minX<=this.maxX&&e.maxX>=this.minX&&e.minY<=this.maxY&&e.maxY>=this.minY}}class Zu{constructor(e){this._stringToNumber={},this._numberToString=[];for(let t=0;t=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 $u{constructor(e,t,i,r,n){this.type="Feature",this._vectorTileFeature=e,this._x=i,this._y=r,this._z=t,this.properties=e.properties,this.id=n}projectPoint(e,t,i,r){return[360*(e.x+t)/r-180,360/Math.PI*Math.atan(Math.exp((1-2*(e.y+i)/r)*Math.PI))-90]}projectLine(e,t,i,r){return e.map(e=>this.projectPoint(e,t,i,r))}get geometry(){if(this._geometry)return this._geometry;const e=this._vectorTileFeature,t=e.extent*Math.pow(2,this._z),i=e.extent*this._x,r=e.extent*this._y,n=e.loadGeometry();switch(e.type){case 1:{const e=[];for(const t of n)e.push(t[0]);const s=this.projectLine(e,i,r,t);this._geometry=1===e.length?{type:"Point",coordinates:s[0]}:{type:"MultiPoint",coordinates:s};break}case 2:{const e=n.map(e=>this.projectLine(e,i,r,t));this._geometry=1===e.length?{type:"LineString",coordinates:e[0]}:{type:"MultiLineString",coordinates:e};break}case 3:{const e=Dc(n),s=[];for(const n of e)s.push(n.map(e=>this.projectLine(e,i,r,t)));this._geometry=1===s.length?{type:"Polygon",coordinates:s[0]}:{type:"MultiPolygon",coordinates:s};break}default:throw new Error(`unknown feature type: ${e.type}`)}return this._geometry}set geometry(e){this._geometry=e}toJSON(){const e={geometry:this.geometry};for(const t in this)"_geometry"!==t&&"_vectorTileFeature"!==t&&"_x"!==t&&"_y"!==t&&"_z"!==t&&(e[t]=this[t]);return e}}class Wu{constructor(e,i,r){t(this,"_name"),t(this,"dataBuffer"),t(this,"nullabilityBuffer"),t(this,"_size"),this._name=e,this.dataBuffer=i,"number"==typeof r?this._size=r:(this.nullabilityBuffer=r,this._size=r.size())}getValue(e){return this.nullabilityBuffer&&!this.nullabilityBuffer.get(e)?null:this.getValueFromBuffer(e)}has(e){return this.nullabilityBuffer&&this.nullabilityBuffer.get(e)||!this.nullabilityBuffer}get name(){return this._name}get size(){return this._size}}class Hu extends Wu{}class Xu extends Hu{getValueFromBuffer(e){return this.dataBuffer[e]}}class Yu extends Hu{getValueFromBuffer(e){return this.dataBuffer[e]}}class Ku extends Wu{constructor(e,i,r,n){super(e,i,n),t(this,"delta"),this.delta=r}}class Ju extends Ku{constructor(e,t,i,r){super(e,Int32Array.of(t),i,r)}getValueFromBuffer(e){return this.dataBuffer[0]+e*this.delta}}class Qu extends Wu{constructor(e,t,i){super(e,Int32Array.of(t),i)}getValueFromBuffer(e){return this.dataBuffer[0]}}class ed{constructor(e,i,r,n,s=4096){t(this,"_name"),t(this,"_geometryVector"),t(this,"_idVector"),t(this,"_propertyVectors"),t(this,"_extent"),t(this,"propertyVectorsMap"),this._name=e,this._geometryVector=i,this._idVector=r,this._propertyVectors=n,this._extent=s}get name(){return this._name}get idVector(){return this._idVector}get geometryVector(){return this._geometryVector}get propertyVectors(){return this._propertyVectors}getPropertyVector(e){return this.propertyVectorsMap||(this.propertyVectorsMap=new Map(this._propertyVectors.map(e=>[e.name,e]))),this.propertyVectorsMap.get(e)}*[Symbol.iterator](){const e=this.geometryVector[Symbol.iterator]();let t=0;for(;t>4,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(127&n)<<3,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(127&n)<<10,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(127&n)<<17,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(127&n)<<24,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(1&n)<<31,n<128)return 4294967296*r+(e>>>0);throw new Error("Expected varint not more than 10 bytes")}(i,e,t)))))}function _d(e,t,i,r){throw new Error("FastPFor is not implemented yet.")}function gd(e){return e>>>1^-(1&e)}function yd(e){return e>>1n^-(1n&e)}function xd(e,t){let i=0n,r=0,n=t.get();for(;n=64)throw new Error("Varint too long")}return t.set(n),i}function vd(e,t,i){const r=new Int32Array(i);let n=0;for(let s=0;s=4)for(let r=e[0];i>>1^-(1&e[0]),e[1]=e[1]>>>1^-(1&e[1]);const t=e.length/4*4;let i=2;if(t>=4)for(;i>>1^-(1&t))+e[i-2],e[i+1]=(r>>>1^-(1&r))+e[i-1],e[i+2]=(n>>>1^-(1&n))+e[i],e[i+3]=(s>>>1^-(1&s))+e[i+1]}for(;i!=e.length;i+=2)e[i]=(e[i]>>>1^-(1&e[i]))+e[i-2],e[i+1]=(e[i+1]>>>1^-(1&e[i+1]))+e[i-1]}(dd=id||(id={})).NONE="NONE",dd.DELTA="DELTA",dd.COMPONENTWISE_DELTA="COMPONENTWISE_DELTA",dd.RLE="RLE",dd.MORTON="MORTON",dd.PDE="PDE",function(e){e.NONE="NONE",e.FAST_PFOR="FAST_PFOR",e.VARINT="VARINT",e.ALP="ALP"}(rd||(rd={})),function(e){e.PRESENT="PRESENT",e.DATA="DATA",e.OFFSET="OFFSET",e.LENGTH="LENGTH"}(nd||(nd={}));class Pd{constructor(e,i,r){t(this,"_dictionaryType"),t(this,"_offsetType"),t(this,"_lengthType"),this._dictionaryType=e,this._offsetType=i,this._lengthType=r}get dictionaryType(){return this._dictionaryType}get offsetType(){return this._offsetType}get lengthType(){return this._lengthType}}function Id(e,t){const i=function(e,t){const i=e[t.get()],r=Object.values(nd)[i>>4];let n=null;switch(r){case nd.DATA:n=new Pd(Object.values(sd)[15&i]);break;case nd.OFFSET:n=new Pd(null,Object.values(od)[15&i]);break;case nd.LENGTH:n=new Pd(null,null,Object.values(ad)[15&i])}t.increment();const s=e[t.get()],o=Object.values(id)[s>>5],a=Object.values(id)[s>>2&7],l=Object.values(rd)[3&s];t.increment();const c=pd(e,t,2),h=c[0];return{physicalStreamType:r,logicalStreamType:n,logicalLevelTechnique1:o,logicalLevelTechnique2:a,physicalLevelTechnique:l,numValues:h,byteLength:c[1],decompressedCount:h}}(e,t);return i.logicalLevelTechnique1===id.MORTON?function(e,t,i){const r=pd(t,i,2);return{physicalStreamType:e.physicalStreamType,logicalStreamType:e.logicalStreamType,logicalLevelTechnique1:e.logicalLevelTechnique1,logicalLevelTechnique2:e.logicalLevelTechnique2,physicalLevelTechnique:e.physicalLevelTechnique,numValues:e.numValues,byteLength:e.byteLength,decompressedCount:e.decompressedCount,numBits:r[0],coordinateShift:r[1]}}(i,e,t):id.RLE!==i.logicalLevelTechnique1&&id.RLE!==i.logicalLevelTechnique2||rd.NONE===i.physicalLevelTechnique?i:function(e,t,i){const r=pd(t,i,2);return{physicalStreamType:e.physicalStreamType,logicalStreamType:e.logicalStreamType,logicalLevelTechnique1:e.logicalLevelTechnique1,logicalLevelTechnique2:e.logicalLevelTechnique2,physicalLevelTechnique:e.physicalLevelTechnique,numValues:e.numValues,byteLength:e.byteLength,decompressedCount:r[1],runs:r[0],numRleValues:r[1]}}(i,e,t)}!function(e){e.NONE="NONE",e.SINGLE="SINGLE",e.SHARED="SHARED",e.VERTEX="VERTEX",e.MORTON="MORTON",e.FSST="FSST"}(sd||(sd={})),function(e){e.VERTEX="VERTEX",e.INDEX="INDEX",e.STRING="STRING",e.KEY="KEY"}(od||(od={})),function(e){e.VAR_BINARY="VAR_BINARY",e.GEOMETRIES="GEOMETRIES",e.PARTS="PARTS",e.RINGS="RINGS",e.TRIANGLES="TRIANGLES",e.SYMBOL="SYMBOL",e.DICTIONARY="DICTIONARY"}(ad||(ad={})),function(e){e[e.FLAT=0]="FLAT",e[e.CONST=1]="CONST",e[e.SEQUENCE=2]="SEQUENCE",e[e.DICTIONARY=3]="DICTIONARY",e[e.FSST_DICTIONARY=4]="FSST_DICTIONARY"}(ld||(ld={}));class Md{constructor(e,i){t(this,"values"),t(this,"_size"),this.values=e,this._size=i}get(e){const t=Math.floor(e/8);return 1==(this.values[t]>>e%8&1)}set(e,t){const i=Math.floor(e/8);this.values[i]=this.values[i]|(t?1:0)<>e%8&1}size(){return this._size}getBuffer(){return this.values}}function Ed(e,t,i,r,n){return function(e,t,i){switch(t.logicalLevelTechnique1){case id.DELTA:return t.logicalLevelTechnique2===id.RLE?function(e,t,i){const r=new Int32Array(i);let n=0,s=0;for(let o=0;o>>1^-(1&e[0]);const t=e.length/4*4;let i=1;if(t>=4)for(;i>>1^-(1&t))+e[i-1],e[i+1]=(r>>>1^-(1&r))+e[i],e[i+2]=(n>>>1^-(1&n))+e[i+1],e[i+3]=(s>>>1^-(1&s))+e[i+2]}for(;i!=e.length;++i)e[i]=(e[i]>>>1^-(1&e[i]))+e[i-1]}(e),e);case id.RLE:return r=e,n=t,i?function(e,t,i){const r=new Int32Array(i);let n=0;for(let s=0;s>>1^-(1&o),r.fill(o,n,n+i),n+=i}return r}(r,n.runs,n.numRleValues):vd(r,n.runs,n.numRleValues);case id.MORTON:return Td(e),e;case id.COMPONENTWISE_DELTA:return Sd(e),e;case id.NONE:return i&&function(e){for(let t=0;t>>1^-(1&i)}}(e),e;default:throw new Error(`The specified Logical level technique is not supported: ${t.logicalLevelTechnique1}`)}var r,n}(Ad(e,t,i),i,r)}function Cd(e,t,i){return function(e,t){if(t.logicalLevelTechnique1===id.DELTA&&t.logicalLevelTechnique2===id.NONE)return function(e){const t=new Int32Array(e.length+1);t[0]=0,t[1]=gd(e[0]);let i=t[1],r=2;for(;r!=t.length;++r){const n=e[r-1];i+=n>>>1^-(1&n),t[r]=t[r-1]+i}return t}(e);if(t.logicalLevelTechnique1===id.RLE&&t.logicalLevelTechnique2===id.NONE)return function(e,t,i){const r=new Int32Array(i+1);r[0]=0;let n=1,s=r[0];for(let o=0;o>>1^-(1&a);for(let e=n;e>1n^-(1n&e[0]);const t=e.length/4*4;let i=1;if(t>=4)for(;i>1n^-(1n&t))+e[i-1],e[i+1]=(r>>1n^-(1n&r))+e[i],e[i+2]=(n>>1n^-(1n&n))+e[i+1],e[i+3]=(s>>1n^-(1n&s))+e[i+2]}for(;i!=e.length;++i)e[i]=(e[i]>>1n^-(1n&e[i]))+e[i-1]}(e),e);case id.RLE:return r=e,n=t,i?function(e,t,i){const r=new BigInt64Array(i);let n=0;for(let s=0;s>1n^-(1n&o),r.fill(o,n,n+i),n+=i}return r}(r,n.runs,n.numRleValues):bd(r,n.runs,n.numRleValues);case id.NONE:return i&&function(e){for(let t=0;t>1n^-(1n&i)}}(e),e;default:throw new Error(`The specified Logical level technique is not supported: ${t.logicalLevelTechnique1}`)}var r,n}(fd(e,t,i.numValues),i,r)}function Ld(e,t,i,r){const n=fd(e,t,i.numValues);if(1===n.length){const e=n[0];return r?yd(e):e}return r?yd(n[1]):n[1]}function Fd(e,t,i,r,n){return function(e,t,i,r){switch(t.logicalLevelTechnique1){case id.DELTA:return t.logicalLevelTechnique2===id.RLE&&(e=vd(e,t.runs,t.numRleValues)),function(e,t){const i=new Int32Array(e.size());let r=0;e.get(0)?(i[0]=e.get(0)?t[0]>>>1^-(1&t[0]):0,r=1):i[0]=0;let n=1;for(;n!=i.length;++n)i[n]=e.get(n)?i[n-1]+(t[r]>>>1^-(1&t[r++])):i[n-1];return i}(r,e);case id.RLE:return function(e,t,i,r){const n=t;return i?function(e,t,i){const r=new Int32Array(e.size());let n=0;for(let s=0;s>>1^-(1&a);for(let t=n;t>>1^-(1&e)}else i[n]=0;return i}(r,e):function(e,t){const i=new Int32Array(e.size());let r=0,n=0;for(;n!=i.length;++n)i[n]=e.get(n)?t[r++]:0;return i}(r,e);default:throw new Error("The specified Logical level technique is not supported")}}(i.physicalLevelTechnique===rd.FAST_PFOR?_d():pd(e,t,i.numValues),i,r,n)}function Bd(e,t,i,r){const n=e.logicalLevelTechnique1;if(n===id.RLE)return 1===e.runs?ld.CONST:ld.FLAT;const s=t instanceof Md?t.size():t;if(n===id.DELTA&&e.logicalLevelTechnique2===id.RLE){const t=e.runs,n=2;if(e.numRleValues!==s)return ld.FLAT;if(1===t)return ld.SEQUENCE;if(2===t){const t=r.get();let s;if(e.physicalLevelTechnique===rd.VARINT)s=pd(i,r,4);else{const e=r.get();s=new Int32Array(i.buffer,i.byteOffset+e,4)}if(r.set(t),s[2]===n&&s[3]===n)return ld.SEQUENCE}}return 1===e.numValues?ld.CONST:ld.FLAT}class Od extends Hu{getValueFromBuffer(e){return this.dataBuffer[e]}}class Vd extends Ku{constructor(e,t,i,r){super(e,BigInt64Array.of(t),i,r)}getValueFromBuffer(e){return this.dataBuffer[0]+BigInt(e)*this.delta}}class jd{constructor(e,i,r){t(this,"_geometryOffsets"),t(this,"_partOffsets"),t(this,"_ringOffsets"),this._geometryOffsets=e,this._partOffsets=i,this._ringOffsets=r}get geometryOffsets(){return this._geometryOffsets}get partOffsets(){return this._partOffsets}get ringOffsets(){return this._ringOffsets}}function Nd(e,t,i){return{x:Ud(e,t)-i,y:Ud(e>>1,t)-i}}function Ud(e,t){let i=0;for(let r=0;r>r;return i}!function(e){e[e.POINT=0]="POINT",e[e.LINESTRING=1]="LINESTRING",e[e.POLYGON=2]="POLYGON",e[e.MULTIPOINT=3]="MULTIPOINT",e[e.MULTILINESTRING=4]="MULTILINESTRING",e[e.MULTIPOLYGON=5]="MULTIPOLYGON"}(cd||(cd={})),function(e){e[e.POINT=0]="POINT",e[e.LINESTRING=1]="LINESTRING",e[e.POLYGON=2]="POLYGON"}(hd||(hd={})),function(e){e[e.MORTON=0]="MORTON",e[e.VEC_2=1]="VEC_2",e[e.VEC_3=2]="VEC_3"}(ud||(ud={}));class Gd{createPoint(e){return[[e]]}createMultiPoint(e){return e.map(e=>[e])}createLineString(e){return[e]}createMultiLineString(e){return e}createPolygon(e,t){return[e].concat(t)}createMultiPolygon(e){return e.flat()}}function qd(e){const t=new Array(e.numGeometries);let i=1,n=1,s=1,o=0;const a=new Gd;let l=0,c=0;const h=e.mortonSettings,u=e.topologyVector,d=u.geometryOffsets,p=u.partOffsets,f=u.ringOffsets,m=e.vertexOffsets,_=e.containsPolygonGeometry(),g=e.vertexBuffer;for(let y=0;y0&&t.push(t[0]),u.push(t)}e[h]=u,s&&c++}break;case cd.MULTIPOLYGON:{const t=s[c]-s[c-1];c++;const u=[];for(let e=0;e0&&t.push(t[0]),u.push(t)}}e[h]=u}}return e}[Symbol.iterator](){return null}}function tp(e,t,i,r,n,s){return new ip(e,t,i,r,n,s)}class ip extends ep{constructor(e,i,r,n,s,o){super(r,n,s,o),t(this,"_numGeometries"),t(this,"_geometryType"),this._numGeometries=e,this._geometryType=i}geometryType(e){return this._geometryType}get numGeometries(){return this._numGeometries}containsSingleGeometryType(){return!0}}function rp(e,t,i,r,n){return new np(e,t,i,r,n)}class np extends ep{constructor(e,i,r,n,s){super(i,r,n,s),t(this,"_geometryTypes"),this._geometryTypes=e}geometryType(e){return this._geometryTypes[e]}get numGeometries(){return this._geometryTypes.length}containsSingleGeometryType(){return!1}}function sp(e,t,i,r,n){const s=Id(e,i);let o=null,a=null,l=null,c=null,h=null,u=null,d=null,p=null;if(Bd(s,r,e,i)===ld.CONST){const n=Dd(e,i,s,!1);for(let r=0;ri?t[s++]:1);return r}function ap(e,t,i,r){const n=new Int32Array(t[t.length-1]+1);let s=0;n[0]=s;let o=1,a=0;for(let l=0;l=12?pp.decode(e.subarray(t,i)):function(e,t,i){let r="",n=t;for(;n239?4:t>223?3:t>191?2:1;if(n+c>i)break;1===c?t<128&&(l=t):2===c?(s=e[n+1],128==(192&s)&&(l=(31&t)<<6|63&s,l<=127&&(l=null))):3===c?(s=e[n+1],o=e[n+2],128==(192&s)&&128==(192&o)&&(l=(15&t)<<12|(63&s)<<6|63&o,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===c&&(s=e[n+1],o=e[n+2],a=e[n+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&t)<<18|(63&s)<<12|(63&o)<<6|63&a,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,c=1):l>65535&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),n+=c}return r}(e,t,i)}class mp extends Wu{constructor(e,i,r,n){super(e,r,n),t(this,"offsetBuffer"),this.offsetBuffer=i}}class _p extends mp{constructor(e,i,r,n){super(e,i,r,n??i.length-1),t(this,"textEncoder"),this.textEncoder=new TextEncoder}getValueFromBuffer(e){return fp(this.dataBuffer,this.offsetBuffer[e],this.offsetBuffer[e+1])}}class gp extends mp{constructor(e,i,r,n,s){super(e,r,n,s??i.length),t(this,"indexBuffer"),t(this,"textEncoder"),this.indexBuffer=i,this.indexBuffer=i,this.textEncoder=new TextEncoder}getValueFromBuffer(e){const t=this.indexBuffer[e];return fp(this.dataBuffer,this.offsetBuffer[t],this.offsetBuffer[t+1])}}class yp extends mp{constructor(e,i,r,n,s,o,a){super(e,r,n,a),t(this,"indexBuffer"),t(this,"symbolOffsetBuffer"),t(this,"symbolTableBuffer"),t(this,"textEncoder"),t(this,"symbolLengthBuffer"),t(this,"lengthBuffer"),t(this,"decodedDictionary"),this.indexBuffer=i,this.symbolOffsetBuffer=s,this.symbolTableBuffer=o,this.textEncoder=new TextEncoder}getValueFromBuffer(e){null==this.decodedDictionary&&(null==this.symbolLengthBuffer&&(this.symbolLengthBuffer=this.offsetToLengthBuffer(this.symbolOffsetBuffer),this.lengthBuffer=this.offsetToLengthBuffer(this.offsetBuffer)),this.decodedDictionary=function(e,t,i){const r=[],n=new Array(t.length).fill(0);for(let s=1;s>1n^-(1n&t[0]):0n,r=1):i[0]=0n;let n=1;for(;n!=i.length;++n)i[n]=e.get(n)?i[n-1]+(t[r]>>1n^-(1n&t[r++])):i[n-1];return i}(r,e);case id.RLE:return function(e,t,i,r){const n=t;return i?function(e,t,i){const r=new BigInt64Array(e.size());let n=0;for(let s=0;s>1n^-(1n&a);for(let t=n;t>1n^-(1n&e)}else i[n]=0n;return i}(r,e):function(e,t){const i=new BigInt64Array(e.size());let r=0,n=0;for(;n!=i.length;++n)i[n]=e.get(n)?t[r++]:0n;return i}(r,e);default:throw new Error("The specified Logical level technique is not supported")}}(fd(e,t,(l=s).numValues),l,c,h)):Rd(e,t,s,a);return new Od(i.name,n,r)}var l,c,h;if(o===ld.SEQUENCE){const r=kd(e,t,s);return new Vd(i.name,r[0],r[1],s.numRleValues)}{const n=Ld(e,t,s,a);return new hp(i.name,n,r)}}(t,i,s,l,n);case 7:return function(e,t,i,r){const n=Id(e,t),s=vp(r)?function(e,t,i,r){const n=t.get(),s=n+r*Float32Array.BYTES_PER_ELEMENT,o=new Uint8Array(e.subarray(n,s)).buffer,a=new Float32Array(o);t.set(s);const l=i.size(),c=new Float32Array(l);let h=0;for(let u=0;u>>0,r=!!(4&i),n=!!(2&i),s=pd(e,t,1)[0]>>>0,o={};if(1&i&&(o.nullable=!0),n){const n={};if(r?(n.type="logicalType",n.logicalType=s):(n.type="physicalType",n.physicalType=s),8&i){const i=pd(e,t,1)[0]>>>0;n.children=new Array(i);for(let r=0;r>>0,r=function(e){switch(e){case 0:case 1:case 2:case 3:{const t={};t.nullable=!!(1&e),t.columnScope=0;const i={};return i.physicalType=e>1?6:4,i.type="physicalType",t.scalarType=i,t.type="scalarType",t}case 4:{const e={nullable:!1,columnScope:0},t={type:"physicalType",physicalType:0};return e.type="complexType",e.complexType=t,e}case 30:{const e={nullable:!1,columnScope:0},t={type:"physicalType",physicalType:1};return e.type="complexType",e.complexType=t,e}default:return function(e){let t=null;switch(e){case 10:case 11:t=0;break;case 12:case 13:t=1;break;case 14:case 15:t=2;break;case 16:case 17:t=3;break;case 18:case 19:t=4;break;case 20:case 21:t=5;break;case 22:case 23:t=6;break;case 24:case 25:t=7;break;case 26:case 27:t=8;break;case 28:case 29:t=9;break;default:return null}const i={};i.nullable=!!(1&e),i.columnScope=0;const r={type:"physicalType"};return r.physicalType=t,i.type="scalarType",i.scalarType=r,i}(e)}}(i);if(!r)throw new Error(`Unsupported column type code: ${i}`);if(i>=10?r.name=Tp(e,t):i>=0&&i<=3?r.name="id":4===i&&(r.name="geometry"),function(e){return 30===e}(i)){const i=pd(e,t,1)[0]>>>0,n=r.complexType;n.children=new Array(i);for(let r=0;r>>0,s=pd(e,t,1)[0]>>>0;r.columns=new Array(s);for(let o=0;o=4)for(;i>>0,s=r.get()+t;if(s>e.length)throw new Error(`Block overruns tile: ${s} > ${e.length}`);if(1!=pd(e,r,1)[0]>>>0){r.set(s);continue}const o=Ip(e,r),a=o[1],l=o[0].featureTables[0];let c=null,h=null;const u=[];let d=0;for(const n of l.columns){const t=n.name;if("id"===t){let s=null;if(n.nullable){const t=Id(e,r),i=r.get(),n=up(e,t.numValues,r);r.set(i+t.byteLength),s=new Md(n,t.numValues)}const o=Id(e,r);d=o.decompressedCount,c=Mp(e,n,r,t,o,s??d,i)}else if("geometry"===t){const t=pd(e,r,1)[0];if(0===d){const t=r.get();d=Id(e,r).decompressedCount,r.set(t)}h=sp(e,t,r,d)}else{const t=bp(n)?pd(e,r,1)[0]:1;if(0===t&&"scalarType"===n.type)continue;const i=xp(e,r,n,t,d);if(i)if(Array.isArray(i))for(const e of i)u.push(e);else u.push(i)}}const p=new ed(l.name,h,c,u,a);n.push(p),r.set(s)}return n}(new Uint8Array(e));this.layers=t.reduce((e,t)=>Object.assign(Object.assign({},e),{[t.name]:new Cp(t)}),{})}}class Dp{constructor(e,t){this.feature=e,this.type=e.type,this.properties=e.tags?e.tags:{},this.extent=t,"id"in e&&("string"==typeof e.id?this.id=parseInt(e.id,10):"number"!=typeof e.id||isNaN(e.id)||(this.id=e.id))}loadGeometry(){const e=[],t=1===this.feature.type?[this.feature.geometry]:this.feature.geometry;for(const i of t){const t=[];for(const e of i)t.push(new r(e[0],e[1]));e.push(t)}return e}}const zp="_geojsonTileLayer";function kp(e,t){t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||""),t.writeVarintField(5,e.extent||4096);const i={keys:[],values:[],keycache:{},valuecache:{}};for(let s=0;s>31}function Op(e,t){const i=e.loadGeometry(),r=e.type;let n=0,s=0;for(const o of i){let i=1;1===r&&(i=o.length),t.writeVarint(Fp(1,i));const a=3===r?o.length-1:o.length;for(let e=0;e=0&&i[3]>=0&&a.insert(o,i[0],i[1],i[2],i[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers="mlt"!==this.encoding?new Lc(new Mh(this.rawTileData)).layers:new Ap(this.rawTileData).layers,this.sourceLayerCoder=new Zu(this.vtLayers?Object.keys(this.vtLayers).sort():[zp])),this.vtLayers}query(e,t,i,n){this.loadVTLayers();const s=e.params,o=A/e.tileSize/e.scale,a=pn(s.filter,s.globalState),l=e.queryGeometry,c=e.queryPadding*o,h=qu.fromPoints(l),u=this.grid.query(h.minX-c,h.minY-c,h.maxX+c,h.maxY+c),d=qu.fromPoints(e.cameraQueryGeometry).expandBy(c),p=this.grid3D.query(d.minX,d.minY,d.maxX,d.maxY,(t,i,n,s)=>function(e,t,i,n,s){for(const r of e)if(t<=r.x&&i<=r.y&&n>=r.x&&s>=r.y)return!0;const o=[new r(t,i),new r(t,s),new r(n,s),new r(n,i)];if(e.length>2)for(const r of o)if(el(e,r))return!0;for(let r=0;r(d||(d=ja(t)),i.queryIntersectsFeature({queryGeometry:l,feature:t,featureState:r,geometry:d,zoom:this.z,transform:e.transform,pixelsToTileUnits:o,pixelPosMatrix:e.pixelPosMatrix,unwrappedTileID:this.tileID.toUnwrapped(),getElevation:e.getElevation})))}return f}loadMatchingFeature(e,t,i,r,n,s,o,a,l,c,h){const u=this.bucketLayerIDs[t];if(s&&!u.some(e=>s.has(e)))return;const d=this.sourceLayerCoder.decode(i),p=this.vtLayers[d].feature(r);if(n.needGeometry){const e=Na(p,!0);if(!n.filter(new ks(this.tileID.overscaledZ),e,this.tileID.canonical))return}else if(!n.filter(new ks(this.tileID.overscaledZ),p))return;const f=this.getId(p,d);for(let m=0;m{const o=t instanceof Gs?t.get(s):null;return o&&o.evaluate?o.evaluate(i,r,n):o})}function Up(e,t){return t-e}function Gp(e,t,i,n,s){const o=[];for(let a=0;a=n&&h.x>=n||(a.x>=n?a=new r(n,a.y+(n-a.x)/(h.x-a.x)*(h.y-a.y))._round():h.x>=n&&(h=new r(n,a.y+(n-a.x)/(h.x-a.x)*(h.y-a.y))._round()),a.y>=s&&h.y>=s||(a.y>=s?a=new r(a.x+(s-a.y)/(h.y-a.y)*(h.x-a.x),s)._round():h.y>=s&&(h=new r(a.x+(s-a.y)/(h.y-a.y)*(h.x-a.x),s)._round()),c&&a.equals(c[c.length-1])||(c=[a],o.push(c)),c.push(h)))))}}return o}function qp(e,t,i,r,n){switch(t){case 1:return function(e,t,i,r){const n=[];for(const s of e)for(const e of s){const s=0===r?e.x:e.y;s>=t&&s<=i&&n.push([e])}return n}(e,i,r,n);case 2:return $p(e,i,r,n,!1);case 3:return $p(e,i,r,n,!0)}return[]}function Zp(e,t,i,n,s){const o=0===n?Wp:Hp;let a=[];const l=[];for(let r=0;rt&&a.push(o(c,h,t)):u>i?d=t&&(a.push(o(c,h,t)),p=!0),d>i&&u<=i&&(a.push(o(c,h,i)),p=!0),!s&&p&&(l.push(a),a=[])}const c=e.length-1,h=0===n?e[c].x:e[c].y;return h>=t&&h<=i&&a.push(e[c]),s&&a.length>0&&!a[0].equals(a[a.length-1])&&a.push(new r(a[0].x,a[0].y)),a.length>0&&l.push(a),l}function $p(e,t,i,r,n){const s=[];for(const o of e){const e=Zp(o,t,i,r,n);e.length>0&&s.push(...e)}return s}function Wp(e,t,i){return new r(i,e.y+(i-e.x)/(t.x-e.x)*(t.y-e.y))}function Hp(e,t,i){return new r(e.x+(i-e.y)/(t.y-e.y)*(t.x-e.x),i)}ds("FeatureIndex",jp,{omit:["rawTileData","sourceLayerCoder"]});class Xp extends r{constructor(e,t,i,r){super(e,t),this.angle=i,void 0!==r&&(this.segment=r)}clone(){return new Xp(this.x,this.y,this.angle,this.segment)}}function Yp(e,t,i,r,n){if(void 0===t.segment||0===i)return!0;let s=t,o=t.segment+1,a=0;for(;a>-i/2;){if(o--,o<0)return!1;a-=e[o].dist(s),s=e[o]}a+=e[o].dist(e[o+1]),o++;const l=[];let c=0;for(;ar;)c-=l.shift().angleDelta;if(c>n)return!1;o++,a+=t.dist(i)}return!0}function Kp(e){let t=0;for(let i=0;ic){const s=(c-l)/n,u=mi.number(i.x,r.x,s),d=mi.number(i.y,r.y,s),p=new Xp(u,d,r.angleTo(i),h);return p._round(),!o||Yp(e,p,a,o,t)?p:void 0}l+=n}}function tf(e,t,i,r,n,s,o,a,l){const c=Jp(r,s,o),h=Qp(r,n),u=h*o,d=0===e[0].x||e[0].x===l||0===e[0].y||e[0].y===l;return t-u=0&&g=0&&y=0&&d+c<=h){const t=new Xp(g,y,m,f);t._round(),r&&!Yp(e,t,s,r,n)||p.push(t)}}u+=a}return a||p.length||o||(p=rf(e,u/2,i,r,n,s,o,!0,l)),p}function nf(e,t,i,n){const s=[],o=e.image,a=o.pixelRatio,l=o.paddedRect.w-2,c=o.paddedRect.h-2;let h={x1:e.left,y1:e.top,x2:e.right,y2:e.bottom};const u=o.stretchX||[[0,l]],d=o.stretchY||[[0,c]],p=(e,t)=>e+t[1]-t[0],f=u.reduce(p,0),m=d.reduce(p,0),_=l-f,g=c-m;let y=0,x=f,v=0,b=m,w=0,T=_,S=0,P=g;if(o.content&&n){const t=o.content,i=t[2]-t[0],r=t[3]-t[1];(o.textFitWidth||o.textFitHeight)&&(h=tu(e)),y=sf(u,0,t[0]),v=sf(d,0,t[1]),x=sf(u,t[0],t[2]),b=sf(d,t[1],t[3]),w=t[0]-y,S=t[1]-v,T=i-x,P=r-b}const I=h.x1,M=h.y1,E=h.x2-I,C=h.y2-M,A=(e,n,s,l)=>{const c=af(e.stretch-y,x,E,I),h=lf(e.fixed-w,T,e.stretch,f),u=af(n.stretch-v,b,C,M),d=lf(n.fixed-S,P,n.stretch,m),p=af(s.stretch-y,x,E,I),_=lf(s.fixed-w,T,s.stretch,f),g=af(l.stretch-v,b,C,M),A=lf(l.fixed-S,P,l.stretch,m),D=new r(c,u),z=new r(p,u),k=new r(p,g),R=new r(c,g),L=new r(h/a,d/a),F=new r(_/a,A/a),B=t*Math.PI/180;if(B){const e=Math.sin(B),t=Math.cos(B),i=[t,-e,e,t];D._matMult(i),z._matMult(i),R._matMult(i),k._matMult(i)}const O=e.stretch+e.fixed,V=n.stretch+n.fixed;return{tl:D,tr:z,bl:R,br:k,tex:{x:o.paddedRect.x+1+O,y:o.paddedRect.y+1+V,w:s.stretch+s.fixed-O,h:l.stretch+l.fixed-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:L,pixelOffsetBR:F,minFontScaleX:T/a/E,minFontScaleY:P/a/C,isSDF:i}};if(n&&(o.stretchX||o.stretchY)){const e=of(u,_,f),t=of(d,g,m);for(let i=0;i0&&(r=Math.max(10,r),this.circleDiameter=r)}else{const c=(null===(u=o.image)||void 0===u?void 0:u.content)&&(o.image.textFitWidth||o.image.textFitHeight)?tu(o):{x1:o.left,y1:o.top,x2:o.right,y2:o.bottom};c.y1=c.y1*a-l[0],c.y2=c.y2*a+l[2],c.x1=c.x1*a-l[3],c.x2=c.x2*a+l[1];const d=o.collisionPadding;if(d&&(c.x1-=d[0]*a,c.y1-=d[1]*a,c.x2+=d[2]*a,c.y2+=d[3]*a),h){const e=new r(c.x1,c.y1),t=new r(c.x2,c.y1),i=new r(c.x1,c.y2),n=new r(c.x2,c.y2),s=h*Math.PI/180;e._rotate(s),t._rotate(s),i._rotate(s),n._rotate(s),c.x1=Math.min(e.x,t.x,i.x,n.x),c.x2=Math.max(e.x,t.x,i.x,n.x),c.y1=Math.min(e.y,t.y,i.y,n.y),c.y2=Math.max(e.y,t.y,i.y,n.y)}e.emplaceBack(t.x,t.y,c.x1,c.y1,c.x2,c.y2,i,n,s)}this.boxEndIndex=e.length}}class hf{constructor(e=[],t=(e,t)=>et?1:0){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let i=(this.length>>1)-1;i>=0;i--)this._down(i)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:i}=this,r=t[e];for(;e>0;){const n=e-1>>1,s=t[n];if(i(r,s)>=0)break;t[e]=s,e=n}t[e]=r}_down(e){const{data:t,compare:i}=this,r=this.length>>1,n=t[e];for(;e=0)break;t[e]=t[r],e=r}t[e]=n}}function uf(e,t=1,i=!1){const n=qu.fromPoints(e[0]),s=Math.min(n.width(),n.height());let o=s/2;const a=new hf([],df),{minX:l,minY:c,maxX:h,maxY:u}=n;if(0===s)return new r(l,c);for(let r=l;rd.d||!d.d)&&(d=i),i.max-d.d<=t||(o=i.h/2,a.push(new pf(i.p.x-o,i.p.y-o,o,e)),a.push(new pf(i.p.x+o,i.p.y-o,o,e)),a.push(new pf(i.p.x-o,i.p.y+o,o,e)),a.push(new pf(i.p.x+o,i.p.y+o,o,e)),p+=4)}return d.p}function df(e,t){return t.max-e.max}function pf(e,t,i,n){this.p=new r(e,t),this.h=i,this.d=function(e,t){let i=!1,r=1/0;for(let n=0;ne.y!=a.y>e.y&&e.x<(a.x-n.x)*(e.y-n.y)/(a.y-n.y)+n.x&&(i=!i),r=Math.min(r,Ja(e,n,a))}}return(i?1:-1)*Math.sqrt(r)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}var ff;e.aP=void 0,(ff=e.aP||(e.aP={}))[ff.center=1]="center",ff[ff.left=2]="left",ff[ff.right=3]="right",ff[ff.top=4]="top",ff[ff.bottom=5]="bottom",ff[ff["top-left"]=6]="top-left",ff[ff["top-right"]=7]="top-right",ff[ff["bottom-left"]=8]="bottom-left",ff[ff["bottom-right"]=9]="bottom-right";const mf=Number.POSITIVE_INFINITY;function _f(e,t){return t[1]!==mf?function(e,t,i){let r=0,n=0;switch(t=Math.abs(t),i=Math.abs(i),e){case"top-right":case"top-left":case"top":n=i-7;break;case"bottom-right":case"bottom-left":case"bottom":n=7-i}switch(e){case"top-right":case"bottom-right":case"right":r=-t;break;case"top-left":case"bottom-left":case"left":r=t}return[r,n]}(e,t[0],t[1]):function(e,t){let i=0,r=0;t<0&&(t=0);const n=t/Math.SQRT2;switch(e){case"top-right":case"top-left":r=n-7;break;case"bottom-right":case"bottom-left":r=7-n;break;case"bottom":r=7-t;break;case"top":r=t-7}switch(e){case"top-right":case"bottom-right":i=-n;break;case"top-left":case"bottom-left":i=n;break;case"left":i=t;break;case"right":i=-t}return[i,r]}(e,t[0])}function gf(e,t,i){var r;const n=e.layout,s=null===(r=n.get("text-variable-anchor-offset"))||void 0===r?void 0:r.evaluate(t,{},i);if(s){const e=s.values,t=[];for(let i=0;ie*fh);r.startsWith("top")?n[1]-=7:r.startsWith("bottom")&&(n[1]+=7),t[i+1]=n}return new Ot(t)}const o=n.get("text-variable-anchor");if(o){let r;r=void 0!==e._unevaluatedLayout.getValue("text-radial-offset")?[n.get("text-radial-offset").evaluate(t,{},i)*fh,mf]:n.get("text-offset").evaluate(t,{},i).map(e=>e*fh);const s=[];for(const e of o)s.push(e,_f(e,r));return new Ot(s)}return null}function yf(e){switch(e){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function xf(t,i,r,n,s,o,a,l,c,h,u,d){let p=o.textMaxSize.evaluate(i,{});void 0===p&&(p=a);const f=t.layers[0].layout,m=f.get("icon-offset").evaluate(i,{},u),_=bf(r.horizontal),g=a/24,y=t.tilePixelRatio*g,x=t.tilePixelRatio*p/24,v=t.tilePixelRatio*l,b=t.tilePixelRatio*f.get("symbol-spacing"),w=f.get("text-padding")*t.tilePixelRatio,T=function(e,t,i,r=1){const n=e.get("icon-padding").evaluate(t,{},i),s=n&&n.values;return[s[0]*r,s[1]*r,s[2]*r,s[3]*r]}(f,i,u,t.tilePixelRatio),S=f.get("text-max-angle")/180*Math.PI,P="viewport"!==f.get("text-rotation-alignment")&&"point"!==f.get("symbol-placement"),I="map"===f.get("icon-rotation-alignment")&&"point"!==f.get("symbol-placement"),M=f.get("symbol-placement"),E=b/2,C=f.get("icon-text-fit");let D;n&&"none"!==C&&(t.allowVerticalPlacement&&r.vertical&&(D=iu(n,r.vertical,C,f.get("icon-text-fit-padding"),m,g)),_&&(n=iu(n,_,C,f.get("icon-text-fit-padding"),m,g)));const z=u?d.line.getGranularityForZoomLevel(u.z):1,k=(l,d)=>{d.x<0||d.x>=A||d.y<0||d.y>=A||function(t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,S,P){const I=t.addToLineVertexArray(i,r);let M,E,C,A,D=0,z=0,k=0,R=0,L=-1,F=-1;const B={};let O=_a("");if(t.allowVerticalPlacement&&n.vertical){const e=l.layout.get("text-rotate").evaluate(b,{},S)+90;C=new cf(c,i,h,u,d,n.vertical,p,f,m,e),a&&(A=new cf(c,i,h,u,d,a,g,y,m,e))}if(s){const r=l.layout.get("icon-rotate").evaluate(b,{}),n="none"!==l.layout.get("icon-text-fit"),o=nf(s,r,T,n),p=a?nf(a,r,T,n):void 0;E=new cf(c,i,h,u,d,s,g,y,!1,r),D=4*o.length;const f=t.iconSizeData;let m=null;"source"===f.kind?(m=[ru*l.layout.get("icon-size").evaluate(b,{})],m[0]>nu&&Z(`${t.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):"composite"===f.kind&&(m=[ru*w.compositeIconSizes[0].evaluate(b,{},S),ru*w.compositeIconSizes[1].evaluate(b,{},S)],(m[0]>nu||m[1]>nu)&&Z(`${t.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),t.addSymbols(t.icon,o,m,v,x,b,e.az.none,i,I.lineStartIndex,I.lineLength,-1,S),L=t.icon.placedSymbolArray.length-1,p&&(z=4*p.length,t.addSymbols(t.icon,p,m,v,x,b,e.az.vertical,i,I.lineStartIndex,I.lineLength,-1,S),F=t.icon.placedSymbolArray.length-1)}const V=Object.keys(n.horizontal);for(const Z of V){const r=n.horizontal[Z];if(!M){O=_a(r.text);const e=l.layout.get("text-rotate").evaluate(b,{},S);M=new cf(c,i,h,u,d,r,p,f,m,e)}const s=1===r.positionedLines.length;if(k+=vf(t,i,r,o,l,m,b,_,I,n.vertical?e.az.horizontal:e.az.horizontalOnly,s?V:[Z],B,L,w,S),s)break}n.vertical&&(R+=vf(t,i,n.vertical,o,l,m,b,_,I,e.az.vertical,["vertical"],B,F,w,S));const j=M?M.boxStartIndex:t.collisionBoxArray.length,N=M?M.boxEndIndex:t.collisionBoxArray.length,U=C?C.boxStartIndex:t.collisionBoxArray.length,G=C?C.boxEndIndex:t.collisionBoxArray.length,q=E?E.boxStartIndex:t.collisionBoxArray.length,$=E?E.boxEndIndex:t.collisionBoxArray.length,W=A?A.boxStartIndex:t.collisionBoxArray.length,H=A?A.boxEndIndex:t.collisionBoxArray.length;let X=-1;const Y=(e,t)=>e&&e.circleDiameter?Math.max(e.circleDiameter,t):t;X=Y(M,X),X=Y(C,X),X=Y(E,X),X=Y(A,X);const K=X>-1?1:0;K&&(X*=P/fh),t.glyphOffsetArray.length>=pu.MAX_GLYPHS&&Z("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey);const J=gf(l,b,S),[Q,ee]=function(t,i){const r=t.length,n=null==i?void 0:i.values;if((null==n?void 0:n.length)>0)for(let s=0;s=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,L,F,O,j,N,U,G,q,$,W,H,h,k,R,D,z,K,0,p,X,Q,ee)}(t,d,l,r,n,s,D,t.layers[0],t.collisionBoxArray,i.index,i.sourceLayerIndex,t.index,y,[w,w,w,w],P,c,v,T,I,m,i,o,h,u,a)};if("line"===M)for(const e of Gp(i.geometry,0,0,A,A)){const i=gc(e,z),s=tf(i,b,S,r.vertical||_,n,24,x,t.overscaling,A);for(const e of s)_&&wf(t,_.text,E,e)||k(i,e)}else if("line-center"===M){for(const e of i.geometry)if(e.length>1){const t=gc(e,z),i=ef(t,S,r.vertical||_,n,24,x);i&&k(t,i)}}else if("Polygon"===i.type)for(const e of er(i.geometry,0)){const t=uf(e,16);k(gc(e[0],z,!0),new Xp(t.x,t.y,0))}else if("LineString"===i.type)for(const e of i.geometry){const t=gc(e,z);k(t,new Xp(t[0].x,t[0].y,0))}else if("Point"===i.type)for(const e of i.geometry)for(const t of e)k([t],new Xp(t.x,t.y,0))}function vf(e,t,i,n,s,o,a,l,c,h,u,d,p,f,m){const _=function(e,t,i,n,s,o,a,l){const c=n.layout.get("text-rotate").evaluate(o,{})*Math.PI/180,h=[];for(const u of t.positionedLines)for(const e of u.positionedGlyphs){if(!e.rect)continue;const n=e.rect||{};let o=4,d=!0,p=1,f=0;const m=(s||l)&&e.vertical,_=e.metrics.advance*e.scale/2;if(l&&t.verticalizable&&(f=u.lineOffset/2-(e.imageName?-(fh-e.metrics.width*e.scale)/2:(e.scale-1)*fh)),e.imageName){const t=a[e.imageName];d=t.sdf,p=t.pixelRatio,o=1/p}const g=s?[e.x+_,e.y]:[0,0];let y=s?[0,0]:[e.x+_+i[0],e.y+i[1]-f],x=[0,0];m&&(x=y,y=[0,0]);const v=e.metrics.isDoubleResolution?2:1,b=(e.metrics.left-o)*e.scale-_+y[0],w=(-e.metrics.top-o)*e.scale+y[1],T=b+n.w/v*e.scale/p,S=w+n.h/v*e.scale/p,P=new r(b,w),I=new r(T,w),M=new r(b,S),E=new r(T,S);if(m){const t=new r(-_,_- -17),i=-Math.PI/2,n=12-_,s=new r(22-n,-(e.imageName?n:0)),o=new r(...x);P._rotateAround(i,t)._add(s)._add(o),I._rotateAround(i,t)._add(s)._add(o),M._rotateAround(i,t)._add(s)._add(o),E._rotateAround(i,t)._add(s)._add(o)}if(c){const e=Math.sin(c),t=Math.cos(c),i=[t,-e,e,t];P._matMult(i),I._matMult(i),M._matMult(i),E._matMult(i)}const C=new r(0,0),A=new r(0,0);h.push({tl:P,tr:I,bl:M,br:E,tex:n,writingMode:t.writingMode,glyphOffset:g,sectionIndex:e.sectionIndex,isSDF:d,pixelOffsetTL:C,pixelOffsetBR:A,minFontScaleX:0,minFontScaleY:0})}return h}(0,i,l,s,o,a,n,e.allowVerticalPlacement),g=e.textSizeData;let y=null;"source"===g.kind?(y=[ru*s.layout.get("text-size").evaluate(a,{})],y[0]>nu&&Z(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):"composite"===g.kind&&(y=[ru*f.compositeTextSizes[0].evaluate(a,{},m),ru*f.compositeTextSizes[1].evaluate(a,{},m)],(y[0]>nu||y[1]>nu)&&Z(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),e.addSymbols(e.text,_,y,l,o,a,h,t,c.lineStartIndex,c.lineLength,p,m);for(const r of u)d[r]=e.text.placedSymbolArray.length-1;return 4*_.length}function bf(e){for(const t in e)return e[t];return null}function wf(e,t,i,r){const n=e.compareText;if(t in n){const e=n[t];for(let t=e.length-1;t>=0;t--)if(r.dist(e[t])>4;if(1!==r)throw new Error(`Got v${r} data when expected v1.`);const n=Tf[15&i];if(!n)throw new Error("Unrecognized array type.");const[s]=new Uint16Array(e,2,1),[o]=new Uint32Array(e,4,1);return new Sf(o,s,n,e)}constructor(e,t=64,i=Float64Array,r){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+t,2),65535),this.ArrayType=i,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;const n=Tf.indexOf(this.ArrayType),s=2*e*this.ArrayType.BYTES_PER_ELEMENT,o=e*this.IndexArrayType.BYTES_PER_ELEMENT,a=(8-o%8)%8;if(n<0)throw new Error(`Unexpected typed array class: ${i}.`);r&&r instanceof ArrayBuffer?(this.data=r,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+o+a,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+s+o+a),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+o+a,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+n]),new Uint16Array(this.data,2,1)[0]=t,new Uint32Array(this.data,4,1)[0]=e)}add(e,t){const i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=e,this.coords[this._pos++]=t,i}finish(){const e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return Pf(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,t,i,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:n,coords:s,nodeSize:o}=this,a=[0,n.length-1,0],l=[];for(;a.length;){const c=a.pop()||0,h=a.pop()||0,u=a.pop()||0;if(h-u<=o){for(let o=u;o<=h;o++){const a=s[2*o],c=s[2*o+1];a>=e&&a<=i&&c>=t&&c<=r&&l.push(n[o])}continue}const d=u+h>>1,p=s[2*d],f=s[2*d+1];p>=e&&p<=i&&f>=t&&f<=r&&l.push(n[d]),(0===c?e<=p:t<=f)&&(a.push(u),a.push(d-1),a.push(1-c)),(0===c?i>=p:r>=f)&&(a.push(d+1),a.push(h),a.push(1-c))}return l}within(e,t,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:r,coords:n,nodeSize:s}=this,o=[0,r.length-1,0],a=[],l=i*i;for(;o.length;){const c=o.pop()||0,h=o.pop()||0,u=o.pop()||0;if(h-u<=s){for(let i=u;i<=h;i++)Cf(n[2*i],n[2*i+1],e,t)<=l&&a.push(r[i]);continue}const d=u+h>>1,p=n[2*d],f=n[2*d+1];Cf(p,f,e,t)<=l&&a.push(r[d]),(0===c?e-i<=p:t-i<=f)&&(o.push(u),o.push(d-1),o.push(1-c)),(0===c?e+i>=p:t+i>=f)&&(o.push(d+1),o.push(h),o.push(1-c))}return a}}function Pf(e,t,i,r,n,s){if(n-r<=i)return;const o=r+n>>1;If(e,t,o,r,n,s),Pf(e,t,i,r,o-1,1-s),Pf(e,t,i,o+1,n,1-s)}function If(e,t,i,r,n,s){for(;n>r;){if(n-r>600){const o=n-r+1,a=i-r+1,l=Math.log(o),c=.5*Math.exp(2*l/3),h=.5*Math.sqrt(l*c*(o-c)/o)*(a-o/2<0?-1:1);If(e,t,i,Math.max(r,Math.floor(i-a*c/o+h)),Math.min(n,Math.floor(i+(o-a)*c/o+h)),s)}const o=t[2*i+s];let a=r,l=n;for(Mf(e,t,r,i),t[2*n+s]>o&&Mf(e,t,r,n);ao;)l--}t[2*r+s]===o?Mf(e,t,r,l):(l++,Mf(e,t,l,n)),l<=i&&(r=l+1),i<=l&&(n=l-1)}}function Mf(e,t,i,r){Ef(e,i,r),Ef(t,2*i,2*r),Ef(t,2*i+1,2*r+1)}function Ef(e,t,i){const r=e[t];e[t]=e[i],e[i]=r}function Cf(e,t,i,r){const n=e-i,s=t-r;return n*n+s*s}var Af;e.cH=void 0,(Af=e.cH||(e.cH={})).create="create",Af.load="load",Af.fullLoad="fullLoad";let Df=null,zf=[];const kf=1e3/60,Rf="loadTime",Lf="fullLoadTime",Ff={mark(e){performance.mark(e)},frame(e){const t=e;null!=Df&&zf.push(t-Df),Df=t},clearMetrics(){Df=null,zf=[],performance.clearMeasures(Rf),performance.clearMeasures(Lf);for(const t in e.cH)performance.clearMarks(e.cH[t])},getPerformanceMetrics(){performance.measure(Rf,e.cH.create,e.cH.load),performance.measure(Lf,e.cH.create,e.cH.fullLoad);const t=performance.getEntriesByName(Rf)[0].duration,i=performance.getEntriesByName(Lf)[0].duration,r=zf.length,n=1/(zf.reduce((e,t)=>e+t,0)/r/1e3),s=zf.filter(e=>e>kf).reduce((e,t)=>e+(t-kf)/kf,0);return{loadTime:t,fullLoadTime:i,fps:n,percentDroppedFrames:s/(r+s)*100,totalFrames:r}}};e.$=u,e.A=f,e.B=cs,e.C=ns,e.D=qs,e.E=xe,e.F=function([e,t,i]){return t+=90,t*=Math.PI/180,i*=Math.PI/180,{x:e*Math.cos(t)*Math.sin(i),y:e*Math.sin(t)*Math.sin(i),z:e*Math.cos(i)}},e.G=mi,e.H=ks,e.I=Gh,e.J=os,e.K=function(e){if(null==H){const t=e.navigator?e.navigator.userAgent:null;H=!!e.safari||!(!t||!(/\b(iPad|iPhone|iPod)\b/.test(t)||t.match("Safari")&&!t.match("Chrome")))}return H},e.L=class{constructor(e,t){this.target=e,this.mapId=t,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new Tu(()=>this.process()),this.subscription=ee(this.target,"message",e=>this.receive(e),!1),this.globalScope=W(self)?e:window}registerMessageHandler(e,t){this.messageHandlers[e]=t}unregisterMessageHandler(e){delete this.messageHandlers[e]}sendAsync(e,t){return new Promise((i,r)=>{const n=Math.round(1e18*Math.random()).toString(36).substring(0,10),s=t?ee(t.signal,"abort",()=>{null==s||s.unsubscribe(),delete this.resolveRejects[n];const t={id:n,type:"",origin:location.origin,targetMapId:e.targetMapId,sourceMapId:this.mapId};this.target.postMessage(t)},Su):null;this.resolveRejects[n]={resolve:e=>{null==s||s.unsubscribe(),i(e)},reject:e=>{null==s||s.unsubscribe(),r(e)}};const o=[],a=Object.assign(Object.assign({},e),{id:n,sourceMapId:this.mapId,origin:location.origin,data:_s(e.data,o)});this.target.postMessage(a,{transfer:o})})}receive(e){const t=e.data,i=t.id;if(!("file://"!==t.origin&&"file://"!==location.origin&&"resource://android"!==t.origin&&"resource://android"!==location.origin&&t.origin!==location.origin||t.targetMapId&&this.mapId!==t.targetMapId)){if(""===t.type){delete this.tasks[i];const e=this.abortControllers[i];return delete this.abortControllers[i],void(e&&e.abort())}if(W(self)||t.mustQueue)return this.tasks[i]=t,this.taskQueue.push(i),void this.invoker.trigger();this.processTask(i,t)}}process(){if(0===this.taskQueue.length)return;const e=this.taskQueue.shift(),t=this.tasks[e];delete this.tasks[e],this.taskQueue.length>0&&this.invoker.trigger(),t&&this.processTask(e,t)}processTask(e,t){return i(this,void 0,void 0,function*(){if(""===t.type){const i=this.resolveRejects[e];if(delete this.resolveRejects[e],!i)return;return void(t.error?i.reject(gs(t.error)):i.resolve(gs(t.data)))}if(!this.messageHandlers[t.type])return void this.completeTask(e,new Error(`Could not find a registered handler for ${t.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));const i=gs(t.data),r=new AbortController;this.abortControllers[e]=r;try{const n=yield this.messageHandlers[t.type](t.sourceMapId,i,r);this.completeTask(e,null,n)}catch(n){this.completeTask(e,n)}})}completeTask(e,t,i){const r=[];delete this.abortControllers[e];const n={id:e,type:"",sourceMapId:this.mapId,origin:location.origin,error:t?_s(t):null,data:_s(i,r)};this.target.postMessage(n,{transfer:r})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},e.M=he,e.N=function(){var e=new f(16);return f!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e},e.O=function(e,t,i){var r,n,s,o,a,l,c,h,u,d,p,f,m=i[0],_=i[1],g=i[2];return t===e?(e[12]=t[0]*m+t[4]*_+t[8]*g+t[12],e[13]=t[1]*m+t[5]*_+t[9]*g+t[13],e[14]=t[2]*m+t[6]*_+t[10]*g+t[14],e[15]=t[3]*m+t[7]*_+t[11]*g+t[15]):(n=t[1],s=t[2],o=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=t[9],p=t[10],f=t[11],e[0]=r=t[0],e[1]=n,e[2]=s,e[3]=o,e[4]=a,e[5]=l,e[6]=c,e[7]=h,e[8]=u,e[9]=d,e[10]=p,e[11]=f,e[12]=r*m+a*_+u*g+t[12],e[13]=n*m+l*_+d*g+t[13],e[14]=s*m+c*_+p*g+t[14],e[15]=o*m+h*_+f*g+t[15]),e},e.P=r,e.Q=function(e,t,i){var r=i[0],n=i[1],s=i[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},e.R=Tl,e.S=function(e,t,i){var r=t[0],n=t[1],s=t[2],o=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=t[9],p=t[10],f=t[11],m=t[12],_=t[13],g=t[14],y=t[15],x=i[0],v=i[1],b=i[2],w=i[3];return e[0]=x*r+v*a+b*u+w*m,e[1]=x*n+v*l+b*d+w*_,e[2]=x*s+v*c+b*p+w*g,e[3]=x*o+v*h+b*f+w*y,e[4]=(x=i[4])*r+(v=i[5])*a+(b=i[6])*u+(w=i[7])*m,e[5]=x*n+v*l+b*d+w*_,e[6]=x*s+v*c+b*p+w*g,e[7]=x*o+v*h+b*f+w*y,e[8]=(x=i[8])*r+(v=i[9])*a+(b=i[10])*u+(w=i[11])*m,e[9]=x*n+v*l+b*d+w*_,e[10]=x*s+v*c+b*p+w*g,e[11]=x*o+v*h+b*f+w*y,e[12]=(x=i[12])*r+(v=i[13])*a+(b=i[14])*u+(w=i[15])*m,e[13]=x*n+v*l+b*d+w*_,e[14]=x*s+v*c+b*p+w*g,e[15]=x*o+v*h+b*f+w*y,e},e.T=zl,e.U=function(e,t){const i={};for(let r=0;r0||(null===(n=o.addOrUpdateProperties)||void 0===n?void 0:n.length)>0;if(!i&&!a)continue;s.push(t.geometry);const l=Object.assign({},t);if(e.set(o.id,l),i&&(s.push(o.newGeometry),l.geometry=o.newGeometry),a){if(l.properties=o.removeAllProperties?{}:Object.assign({},l.properties||{}),o.removeProperties)for(const e of o.removeProperties)delete l.properties[e];if(o.addOrUpdateProperties)for(const{key:e,value:t}of o.addOrUpdateProperties)l.properties[e]=t}}return s},e.a9=Lu,e.aA=function(e,{uSize:t,uSizeT:i},{lowerSize:r,upperSize:n}){return"source"===e.kind?r/ru:"composite"===e.kind?mi.number(r/ru,n/ru,i):t},e.aB=function(e,t){var i=t[0],r=t[1],n=t[2],s=t[3],o=t[4],a=t[5],l=t[6],c=t[7],h=t[8],u=t[9],d=t[10],p=t[11],f=t[12],m=t[13],_=t[14],g=t[15],y=i*a-r*o,x=i*l-n*o,v=i*c-s*o,b=r*l-n*a,w=r*c-s*a,T=n*c-s*l,S=h*m-u*f,P=h*_-d*f,I=h*g-p*f,M=u*_-d*m,E=u*g-p*m,C=d*g-p*_,A=y*C-x*E+v*M+b*I-w*P+T*S;return A?(e[0]=(a*C-l*E+c*M)*(A=1/A),e[1]=(n*E-r*C-s*M)*A,e[2]=(m*T-_*w+g*b)*A,e[3]=(d*w-u*T-p*b)*A,e[4]=(l*I-o*C-c*P)*A,e[5]=(i*C-n*I+s*P)*A,e[6]=(_*v-f*T-g*x)*A,e[7]=(h*T-d*v+p*x)*A,e[8]=(o*E-a*I+c*S)*A,e[9]=(r*I-i*E-s*S)*A,e[10]=(f*w-m*v+g*y)*A,e[11]=(u*v-h*w-p*y)*A,e[12]=(a*P-o*M-l*S)*A,e[13]=(i*M-r*P+n*S)*A,e[14]=(m*x-f*b-_*y)*A,e[15]=(h*b-u*x+d*y)*A,e):null},e.aC=E,e.aD=function(e){var t=e[0],i=e[1];return Math.sqrt(t*t+i*i)},e.aE=function(e){return e[0]=0,e[1]=0,e},e.aF=function(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e},e.aG=cu,e.aH=P,e.aI=function(e,t,i,n){const s=t.y-e.y,o=t.x-e.x,a=n.y-i.y,l=n.x-i.x,c=a*o-l*s;if(0===c)return null;const h=(l*(e.y-i.y)-a*(e.x-i.x))/c;return new r(e.x+h*o,e.y+h*s)},e.aJ=Gp,e.aK=Za,e.aL=function(e){let t=1/0,i=1/0,r=-1/0,n=-1/0;for(const s of e)t=Math.min(t,s.x),i=Math.min(i,s.y),r=Math.max(r,s.x),n=Math.max(n,s.y);return[t,i,r,n]},e.aM=fh,e.aN=D,e.aO=function(e,t,i,r,n=!1){if(!i[0]&&!i[1])return[0,0];const s=n?"map"===r?-e.bearingInRadians:0:"viewport"===r?e.bearingInRadians:0;if(s){const e=Math.sin(s),t=Math.cos(s);i=[i[0]*t-i[1]*e,i[0]*e+i[1]*t]}return[n?i[0]:D(t,i[0],e.zoom),n?i[1]:D(t,i[1],e.zoom)]},e.aQ=ou,e.aR=yf,e.aS=Wh,e.aT=Sf,e.aU=ro,e.aV=dc,e.aW=Uo,e.aX=sa,e.aY=ta,e.aZ=ie,e.a_=Ru,e.aa=qu,e.ab=25,e.ac=Bu,e.ad=e=>{const t=window.document.createElement("video");return t.muted=!0,new Promise(i=>{t.onloadstart=()=>{i(t)};for(const r of e){const e=window.document.createElement("source");fe(r)||(t.crossOrigin="Anonymous"),e.src=r,t.appendChild(e)}})},e.ae=ze,e.af=function(){return j++},e.ag=Do,e.ah=pu,e.ai=zp,e.aj=pn,e.ak=Na,e.al=$u,e.am=function(e){const t={};if(e.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(e,i,r,n)=>{const s=r||n;return t[i]=!s||s.toLowerCase(),""}),t["max-age"]){const e=parseInt(t["max-age"],10);isNaN(e)?delete t["max-age"]:t["max-age"]=e}return t},e.an=B,e.ao=85.051129,e.ap=te,e.aq=function(e){return Math.pow(2,e)},e.ar=_,e.as=Du,e.at=function(e){return Math.log(e)/Math.LN2},e.au=function(e){var t=e[0],i=e[1];return t*t+i*i},e.av=function(e){if(!e.length)return new Set;const t=Math.max(...e.map(e=>e.canonical.z));let i=1/0,r=-1/0,n=1/0,s=-1/0;const o=[];for(const l of e){const{x:e,y:a,z:c}=l.canonical,h=Math.pow(2,t-c),u=e*h,d=a*h;o.push({id:l,x:u,y:d}),ur&&(r=u),ds&&(s=d)}const a=new Set;for(const l of o)l.x!==i&&l.x!==r&&l.y!==n&&l.y!==s||a.add(l.id);return a},e.aw=function(e,t){const i=Math.abs(2*e.wrap)-+(e.wrap<0),r=Math.abs(2*t.wrap)-+(t.wrap<0);return e.overscaledZ-t.overscaledZ||r-i||t.canonical.y-e.canonical.y||t.canonical.x-e.canonical.x},e.ax=class{constructor(e,t){this.max=e,this.onRemove=t,this.reset()}reset(){for(const e in this.data)for(const t of this.data[e])t.timeout&&clearTimeout(t.timeout),this.onRemove(t.value);return this.data={},this.order=[],this}add(e,t,i){const r=e.wrapped().key;void 0===this.data[r]&&(this.data[r]=[]);const n={value:t,timeout:void 0};if(void 0!==i&&(n.timeout=setTimeout(()=>{this.remove(e,n)},i)),this.data[r].push(n),this.order.push(r),this.order.length>this.max){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}has(e){return e.wrapped().key in this.data}getAndRemove(e){return this.has(e)?this._getAndRemoveByKey(e.wrapped().key):null}_getAndRemoveByKey(e){const t=this.data[e].shift();return t.timeout&&clearTimeout(t.timeout),0===this.data[e].length&&delete this.data[e],this.order.splice(this.order.indexOf(e),1),t.value}getByKey(e){const t=this.data[e];return t?t[0].value:null}get(e){return this.has(e)?this.data[e.wrapped().key][0].value:null}remove(e,t){if(!this.has(e))return this;const i=e.wrapped().key,r=void 0===t?0:this.data[i].indexOf(t),n=this.data[i][r];return this.data[i].splice(r,1),n.timeout&&clearTimeout(n.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(n.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(e){for(this.max=e;this.order.length>this.max;){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}filter(e){const t=[];for(const i in this.data)for(const r of this.data[i])e(r.value)||t.push(r);for(const i of t)this.remove(i.value.tileID,i)}},e.ay=function(e,t){let i=0,r=0;if("constant"===e.kind)r=e.layoutSize;else if("source"!==e.kind){const{interpolationType:n,minZoom:s,maxZoom:o}=e,a=n?B(pi.interpolationFactor(n,t,s,o),0,1):0;"camera"===e.kind?r=mi.number(e.minSize,e.maxSize,a):i=a}return{uSizeT:i,uSize:r}},e.b=X,e.b$=Sa,e.b0=v,e.b1=function(e){var t=new f(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t},e.b2=function(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e},e.b3=function(e,t){var i=t[0],r=t[1],n=t[2],s=i*i+r*r+n*n;return s>0&&(s=1/Math.sqrt(s)),e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e},e.b4=w,e.b5=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},e.b6=function(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e[3]=t[3]*i[3],e},e.b7=y,e.b8=function(e,t,i){const r=t[0]*i[0]+t[1]*i[1]+t[2]*i[2];return 0===r?null:(-(e[0]*i[0]+e[1]*i[1]+e[2]*i[2])-i[3])/r},e.b9=S,e.bA=function(e,t,i,r){return e[0]=t[0]+i[0]*r,e[1]=t[1]+i[1]*r,e[2]=t[2]+i[2]*r,e},e.bB=M,e.bC=function(e,t,i){var r=i[0],n=i[1],s=i[2],o=i[3],a=t[0],l=t[1],c=t[2],h=n*c-s*l,u=s*a-r*c,d=r*l-n*a;return e[0]=a+o*(h+=h)+n*(d+=d)-s*(u+=u),e[1]=l+o*u+s*h-r*d,e[2]=c+o*d+r*u-n*h,e},e.bD=function(e,t,i){const r=(n=[e[0],e[1],e[2],t[0],t[1],t[2],i[0],i[1],i[2]])[0]*((h=n[8])*(o=n[4])-(a=n[5])*(c=n[7]))+n[1]*(-h*(s=n[3])+a*(l=n[6]))+n[2]*(c*s-o*l);var n,s,o,a,l,c,h;if(0===r)return null;const u=w([],[t[0],t[1],t[2]],[i[0],i[1],i[2]]),d=w([],[i[0],i[1],i[2]],[e[0],e[1],e[2]]),p=w([],[e[0],e[1],e[2]],[t[0],t[1],t[2]]),f=b([],u,-e[3]);return v(f,f,b([],d,-t[3])),v(f,f,b([],p,-i[3])),b(f,f,1/r),f},e.bE=Pu,e.bF=function(){return new Float64Array(4)},e.bG=function(e,t,i,r){var n=[],s=[];return n[0]=t[0]-i[0],n[1]=t[1]-i[1],n[2]=t[2]-i[2],s[0]=n[0]*Math.cos(r)-n[1]*Math.sin(r),s[1]=n[0]*Math.sin(r)+n[1]*Math.cos(r),s[2]=n[2],e[0]=s[0]+i[0],e[1]=s[1]+i[1],e[2]=s[2]+i[2],e},e.bH=function(e,t,i,r){var n=[],s=[];return n[0]=t[0]-i[0],n[1]=t[1]-i[1],n[2]=t[2]-i[2],s[0]=n[0],s[1]=n[1]*Math.cos(r)-n[2]*Math.sin(r),s[2]=n[1]*Math.sin(r)+n[2]*Math.cos(r),e[0]=s[0]+i[0],e[1]=s[1]+i[1],e[2]=s[2]+i[2],e},e.bI=function(e,t,i,r){var n=[],s=[];return n[0]=t[0]-i[0],n[1]=t[1]-i[1],n[2]=t[2]-i[2],s[0]=n[2]*Math.sin(r)+n[0]*Math.cos(r),s[1]=n[1],s[2]=n[2]*Math.cos(r)-n[0]*Math.sin(r),e[0]=s[0]+i[0],e[1]=s[1]+i[1],e[2]=s[2]+i[2],e},e.bJ=function(e,t,i){var r=Math.sin(i),n=Math.cos(i),s=t[0],o=t[1],a=t[2],l=t[3],c=t[8],h=t[9],u=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*n-c*r,e[1]=o*n-h*r,e[2]=a*n-u*r,e[3]=l*n-d*r,e[8]=s*r+c*n,e[9]=o*r+h*n,e[10]=a*r+u*n,e[11]=l*r+d*n,e},e.bK=function(e,t){const i=z(e,360),r=z(t,360),n=r-i,s=r>i?n-360:n+360;return Math.abs(n)0?o:-o},e.bN=function(e,t){const i=z(e,2*Math.PI),r=z(t,2*Math.PI);return Math.min(Math.abs(i-r),Math.abs(i-r+2*Math.PI),Math.abs(i-r-2*Math.PI))},e.bO=function(){const e={},t=ve.$version;for(const i in ve.$root){const r=ve.$root[i];if(r.required){let n=null;n="version"===i?t:"array"===r.type?[]:{},null!=n&&(e[i]=n)}}return e},e.bP=de,e.bQ=ys,e.bR=function e(t,i){if(Array.isArray(t)){if(!Array.isArray(i)||t.length!==i.length)return!1;for(let r=0;r"raster"===e.type,e.bV=G,e.bW=function(e,t){if(!e)return[{command:"setStyle",args:[t]}];let i=[];try{if(!Te(e.version,t.version))return[{command:"setStyle",args:[t]}];Te(e.center,t.center)||i.push({command:"setCenter",args:[t.center]}),Te(e.state,t.state)||i.push({command:"setGlobalState",args:[t.state]}),Te(e.centerAltitude,t.centerAltitude)||i.push({command:"setCenterAltitude",args:[t.centerAltitude]}),Te(e.zoom,t.zoom)||i.push({command:"setZoom",args:[t.zoom]}),Te(e.bearing,t.bearing)||i.push({command:"setBearing",args:[t.bearing]}),Te(e.pitch,t.pitch)||i.push({command:"setPitch",args:[t.pitch]}),Te(e.roll,t.roll)||i.push({command:"setRoll",args:[t.roll]}),Te(e.sprite,t.sprite)||i.push({command:"setSprite",args:[t.sprite]}),Te(e.glyphs,t.glyphs)||i.push({command:"setGlyphs",args:[t.glyphs]}),Te(e.transition,t.transition)||i.push({command:"setTransition",args:[t.transition]}),Te(e.light,t.light)||i.push({command:"setLight",args:[t.light]}),Te(e.terrain,t.terrain)||i.push({command:"setTerrain",args:[t.terrain]}),Te(e.sky,t.sky)||i.push({command:"setSky",args:[t.sky]}),Te(e.projection,t.projection)||i.push({command:"setProjection",args:[t.projection]});const r={},n=[];!function(e,t,i,r){let n;for(n in t=t||{},e=e||{})Object.prototype.hasOwnProperty.call(e,n)&&(Object.prototype.hasOwnProperty.call(t,n)||Ie(n,i,r));for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&(Object.prototype.hasOwnProperty.call(e,n)?Te(e[n],t[n])||("geojson"===e[n].type&&"geojson"===t[n].type&&Ee(e,t,n)?Se(i,{command:"setGeoJSONSourceData",args:[n,t[n].data]}):Me(n,t,i,r)):Pe(n,t,i))}(e.sources,t.sources,n,r);const s=[];e.layers&&e.layers.forEach(e=>{"source"in e&&r[e.source]?i.push({command:"removeLayer",args:[e.id]}):s.push(e)}),i=i.concat(n),function(e,t,i){t=t||[];const r=(e=e||[]).map(Ae),n=t.map(Ae),s=e.reduce(De,{}),o=t.reduce(De,{}),a=r.slice(),l=Object.create(null);let c,h,u,d,p;for(let f=0,m=0;fp?(n=Math.acos(s),o=Math.sin(n),a=Math.sin((1-r)*n)/o,l=Math.sin(r*n)/o):(a=1-r,l=r),e[0]=a*c+l*f,e[1]=a*h+l*m,e[2]=a*u+l*_,e[3]=a*d+l*g,e},e.bn=function(e){const t=new Float64Array(9);var i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x;i=t,u=(n=(r=e)[0])*(l=n+n),d=(s=r[1])*l,p=s*(c=s+s),f=(o=r[2])*l,m=o*c,_=o*(h=o+o),g=(a=r[3])*l,y=a*c,x=a*h,i[0]=1-p-_,i[3]=d-x,i[6]=f+y,i[1]=d+x,i[4]=1-u-_,i[7]=m-g,i[2]=f-y,i[5]=m+g,i[8]=1-u-p;const v=ie(-Math.asin(B(t[2],-1,1)));let b,w;return Math.hypot(t[5],t[8])<.001?(b=0,w=-ie(Math.atan2(t[3],t[4]))):(b=ie(0===t[5]&&0===t[8]?0:Math.atan2(t[5],t[8])),w=ie(0===t[1]&&0===t[0]?0:Math.atan2(t[1],t[0]))),{roll:b,pitch:v+90,bearing:w}},e.bo=function(e,t){return e.roll==t.roll&&e.pitch==t.pitch&&e.bearing==t.bearing},e.bp=Et,e.bq=wa,e.br=pc,e.bs=fc,e.bt=uc,e.bu=k,e.bv=R,e.bw=jt,e.bx=function(e,t,i,r,n){return k(r,n,B((e-t)/(i-t),0,1))},e.by=z,e.bz=function(){return new Float64Array(3)},e.c=le,e.c$=function(e,t,r,n,s){return i(this,void 0,void 0,function*(){if(d())try{return yield K(e,t,r,n,s)}catch(i){}return function(e,t,i,r,n){const s=e.width,o=e.height;J&&Q||(J=new OffscreenCanvas(s,o),Q=J.getContext("2d",{willReadFrequently:!0})),J.width=s,J.height=o,Q.drawImage(e,0,0,s,o);const a=Q.getImageData(t,i,r,n);return Q.clearRect(0,0,s,o),a.data}(e,t,r,n,s)})},e.c0=class extends ba{constructor(e,t){super(e,t),this.current=Pa}set(e){if(e[12]!==this.current[12]||e[0]!==this.current[0])return this.current=e,void this.gl.uniformMatrix4fv(this.location,!1,e);for(let t=1;t<16;t++)if(e[t]!==this.current[t]){this.current=e,this.gl.uniformMatrix4fv(this.location,!1,e);break}}},e.c1=Ta,e.c2=class extends ba{constructor(e,t){super(e,t),this.current=[0,0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]&&e[2]===this.current[2]||(this.current=e,this.gl.uniform3f(this.location,e[0],e[1],e[2]))}},e.c3=class extends ba{constructor(e,t){super(e,t),this.current=[0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]||(this.current=e,this.gl.uniform2f(this.location,e[0],e[1]))}},e.c4=m,e.c5=function(e,t){var i=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},e.c6=function(e,t,i){var r=t[0],n=t[1],s=t[2];return e[0]=r*i[0]+n*i[3]+s*i[6],e[1]=r*i[1]+n*i[4]+s*i[7],e[2]=r*i[2]+n*i[5]+s*i[8],e},e.c7=function(e,t,i,r,n,s,o){var a=1/(t-i),l=1/(r-n),c=1/(s-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+i)*a,e[13]=(n+r)*l,e[14]=(o+s)*c,e[15]=1,e},e.c8=class extends ba{constructor(e,t){super(e,t),this.current=new Array}set(e){if(e!=this.current){this.current=e;const t=new Float32Array(4*e.length);for(let i=0;i25||r<0||r>=1||i<0||i>=1)},e.cE=function(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},e.cF=class extends oo{},e.cG=Ff,e.cI=ue,e.cJ=function(e,t){le.REGISTERED_PROTOCOLS[e]=t},e.cK=function(e){delete le.REGISTERED_PROTOCOLS[e]},e.cL=function(e,t){const i={};for(let n=0;ne*fh)}let x=a?"center":r.get("text-justify").evaluate(h,{},t.canonical);const v="point"===r.get("symbol-placement")?r.get("text-max-width").evaluate(h,{},t.canonical)*fh:1/0,b=()=>{t.bucket.allowVerticalPlacement&&ws(s)&&(f.vertical=$h(m,t.glyphMap,t.glyphPositions,t.imagePositions,n,v,o,_,"left",p,g,e.az.vertical,!0,d,u))};if(!a&&y){const i=new Set;if("auto"===x)for(let e=0;e=this.maxEntries){const e=this.map.keys().next().value;this.map.delete(e)}this.map.set(e,t)}clear(){this.map.clear()}},e.cX=Lc,e.cY=Mh,e.cZ=Ap,e.c_=class{constructor(e){this._marks={start:[e.url,"start"].join("#"),end:[e.url,"end"].join("#"),measure:e.url.toString()},performance.mark(this._marks.start)}finish(){performance.mark(this._marks.end);let e=performance.getEntriesByName(this._marks.measure);return 0===e.length&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),e=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),e}},e.ca=class extends xo{},e.cb=dh,e.cc=class extends bo{},e.cd=Pl,e.ce=function(e){return e<=1?1:Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},e.cf=Sl,e.cg=function(e,t,i){var r=t[0],n=t[1],s=t[2],o=i[3]*r+i[7]*n+i[11]*s+i[15];return e[0]=(i[0]*r+i[4]*n+i[8]*s+i[12])/(o=o||1),e[1]=(i[1]*r+i[5]*n+i[9]*s+i[13])/o,e[2]=(i[2]*r+i[6]*n+i[10]*s+i[14])/o,e},e.ch=class extends ao{},e.ci=class extends Eo{},e.cj=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]},e.ck=function(e,t){var i=e[0],r=e[1],n=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],h=e[8],u=e[9],d=e[10],f=e[11],m=e[12],_=e[13],g=e[14],y=e[15],x=t[0],v=t[1],b=t[2],w=t[3],T=t[4],S=t[5],P=t[6],I=t[7],M=t[8],E=t[9],C=t[10],A=t[11],D=t[12],z=t[13],k=t[14],R=t[15];return Math.abs(i-x)<=p*Math.max(1,Math.abs(i),Math.abs(x))&&Math.abs(r-v)<=p*Math.max(1,Math.abs(r),Math.abs(v))&&Math.abs(n-b)<=p*Math.max(1,Math.abs(n),Math.abs(b))&&Math.abs(s-w)<=p*Math.max(1,Math.abs(s),Math.abs(w))&&Math.abs(o-T)<=p*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(a-S)<=p*Math.max(1,Math.abs(a),Math.abs(S))&&Math.abs(l-P)<=p*Math.max(1,Math.abs(l),Math.abs(P))&&Math.abs(c-I)<=p*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(h-M)<=p*Math.max(1,Math.abs(h),Math.abs(M))&&Math.abs(u-E)<=p*Math.max(1,Math.abs(u),Math.abs(E))&&Math.abs(d-C)<=p*Math.max(1,Math.abs(d),Math.abs(C))&&Math.abs(f-A)<=p*Math.max(1,Math.abs(f),Math.abs(A))&&Math.abs(m-D)<=p*Math.max(1,Math.abs(m),Math.abs(D))&&Math.abs(_-z)<=p*Math.max(1,Math.abs(_),Math.abs(z))&&Math.abs(g-k)<=p*Math.max(1,Math.abs(g),Math.abs(k))&&Math.abs(y-R)<=p*Math.max(1,Math.abs(y),Math.abs(R))},e.cl=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},e.cm=e=>"symbol"===e.type,e.cn=e=>"circle"===e.type,e.co=e=>"heatmap"===e.type,e.cp=e=>"line"===e.type,e.cq=e=>"fill"===e.type,e.cr=e=>"fill-extrusion"===e.type,e.cs=e=>"hillshade"===e.type,e.ct=e=>"color-relief"===e.type,e.cu=e=>"background"===e.type,e.cv=e=>"custom"===e.type,e.cw=L,e.cx=function(e,t,i){const r=C(t.x-i.x,t.y-i.y),n=C(e.x-i.x,e.y-i.y);var s,o;return ie(Math.atan2(r[0]*n[1]-r[1]*n[0],(o=n,(s=r)[0]*o[0]+s[1]*o[1])))},e.cy=F,e.cz=function(e,t){return ne[t]&&(e instanceof MouseEvent||e instanceof WheelEvent)},e.d=fe,e.d0=kl,e.d1=n,e.d2=class{constructor(e,t){this.layers={[zp]:this},this.name=zp,this.version=t?t.version:1,this.extent=t?t.extent:4096,this.length=e.length,this.features=e}feature(e){return new Dp(this.features[e],this.extent)}},e.d3=rn,e.d4=zs,e.e=V,e.f=e=>i(void 0,void 0,void 0,function*(){if(0===e.byteLength)return createImageBitmap(new ImageData(1,1));const t=new Blob([new Uint8Array(e)],{type:"image/png"});try{return createImageBitmap(t)}catch(i){throw new Error(`Could not load image because of ${i.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),e.g=ce,e.h=e=>new Promise((t,i)=>{const r=new Image;r.onload=()=>{t(r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame(()=>{r.src=Y})},r.onerror=()=>i(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const n=new Blob([new Uint8Array(e)],{type:"image/png"});r.src=e.byteLength?URL.createObjectURL(n):Y}),e.i=W,e.j=(e,t)=>pe(V(e,{type:"json"}),t),e.k=ye,e.l=ge,e.m=pe,e.n=(e,t)=>pe(V(e,{type:"arrayBuffer"}),t),e.o=function(e){return new Mh(e).readFields(Vh,[])},e.p=Uh,e.q=function(e){return/[\u02EA\u02EB\u1100-\u11FF\u2E80-\u2FDF\u3000-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE4F\uFF00-\uFFEF]|\uD81B[\uDFE0-\uDFFF]|[\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFB]|\uD83C[\uDE00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(e))},e.r=wl,e.s=ee,e.t=Xs,e.u=ve,e.v=rs,e.w=Z,e.x=Os,e.y=ss,e.z=Ls}),r("worker",0,function(e){class t{constructor(e,t){this.keyCache={},e&&this.replace(e,t)}replace(e,t){this._layerConfigs={},this._layers={},this.update(e,[],t)}update(t,i,r){for(const s of t){this._layerConfigs[s.id]=s;const t=this._layers[s.id]=e.bT(s,r);t._featureFilter=e.aj(t.filter,r),this.keyCache[s.id]&&delete this.keyCache[s.id]}for(const e of i)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const n=e.cL(Object.values(this._layerConfigs),this.keyCache);for(const s of n){const t=s.map(e=>this._layers[e.id]),i=t[0];if(i.isHidden())continue;const r=i.source||"";let n=this.familiesBySource[r];n||(n=this.familiesBySource[r]={});const o=i.sourceLayer||e.ai;let a=n[o];a||(a=n[o]=[]),a.push(t)}}}class i{constructor(t){const i={},r=[];for(const e in t){const n=t[e],s=i[e]={};for(const e in n){const t=n[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const i={x:0,y:0,w:t.bitmap.width+2,h:t.bitmap.height+2};r.push(i),s[e]={rect:i,metrics:t.metrics}}}const{w:n,h:s}=e.p(r),o=new e.r({width:n||1,height:s||1});for(const a in t){const r=t[a];for(const t in r){const n=r[+t];if(!n||0===n.bitmap.width||0===n.bitmap.height)continue;const s=i[a][t].rect;e.r.copy(n.bitmap,o,{x:0,y:0},{x:s.x+1,y:s.y+1},n.bitmap)}}this.image=o,this.positions=i}}e.cM("GlyphAtlas",i);class r{constructor(t){this.tileID=new e.a2(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.inFlightDependencies=[]}parse(t,r,s,o,a){return e._(this,void 0,void 0,function*(){this.status="parsing",this.data=t,this.collisionBoxArray=new e.ag;const l=new e.cN(Object.keys(t.layers).sort()),c=new e.cO(this.tileID,this.promoteId);c.bucketLayerIDs=[];const h={},u={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},dashDependencies:{},availableImages:s,subdivisionGranularity:a},d=r.familiesBySource[this.source];for(const i in d){const r=t.layers[i];if(!r)continue;1===r.version&&e.w(`Vector tile source "${this.source}" layer "${i}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const o=l.encode(i),a=[];for(let e=0;ee.id)))}}const p=e.bY(u.glyphDependencies,e=>Object.keys(e).map(Number));this.inFlightDependencies.forEach(e=>null==e?void 0:e.abort()),this.inFlightDependencies=[];let f=Promise.resolve({});if(Object.keys(p).length){const e=new AbortController;this.inFlightDependencies.push(e),f=o.sendAsync({type:"GG",data:{stacks:p,source:this.source,tileID:this.tileID,type:"glyphs"}},e)}const m=Object.keys(u.iconDependencies);let _=Promise.resolve({});if(m.length){const e=new AbortController;this.inFlightDependencies.push(e),_=o.sendAsync({type:"GI",data:{icons:m,source:this.source,tileID:this.tileID,type:"icons"}},e)}const g=Object.keys(u.patternDependencies);let y=Promise.resolve({});if(g.length){const e=new AbortController;this.inFlightDependencies.push(e),y=o.sendAsync({type:"GI",data:{icons:g,source:this.source,tileID:this.tileID,type:"patterns"}},e)}const x=u.dashDependencies;let v=Promise.resolve({});if(Object.keys(x).length){const e=new AbortController;this.inFlightDependencies.push(e),v=o.sendAsync({type:"GDA",data:{dashes:x}},e)}const[b,w,T,S]=yield Promise.all([f,_,y,v]),P=new i(b),I=new e.cP(w,T);for(const t in h){const i=h[t];i instanceof e.ah?(n(i.layers,this.zoom,s),e.cQ({bucket:i,glyphMap:b,glyphPositions:P.positions,imageMap:w,imagePositions:I.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical,subdivisionGranularity:u.subdivisionGranularity})):i.hasDependencies&&(i instanceof e.cR||i instanceof e.cS||i instanceof e.cT)&&(n(i.layers,this.zoom,s),i.addFeatures(u,this.tileID.canonical,I.patternPositions,S))}return this.status="done",{buckets:Object.values(h).filter(e=>!e.isEmpty()),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:P.image,imageAtlas:I,dashPositions:S,glyphMap:this.returnDependencies?b:null,iconMap:this.returnDependencies?w:null,glyphPositions:this.returnDependencies?P.positions:null}})}}function n(t,i,r){const n=new e.H(i);for(const e of t)e.recalculate(n,r)}class s{constructor(e,t,i,r,n){this.type=e,this.properties=i||{},this.extent=n,this.pointsArray=t,this.id=r}loadGeometry(){return this.pointsArray.map(t=>t.map(t=>new e.P(t.x,t.y)))}}class o{constructor(e,t,i){this.version=2,this._myFeatures=e,this.name=t,this.length=e.length,this.extent=i}feature(e){return this._myFeatures[e]}}class a{constructor(){this.layers={}}addLayer(e){this.layers[e.name]=e}}function l(t){let i=e.cU(t);return 0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),{vectorTile:t,rawData:i.buffer}}function c(t,i,r){const{extent:n}=t,a=Math.pow(2,r.z-i.z),l=(r.x-i.x*a)*n,c=(r.y-i.y*a)*n,h=[];for(let o=0;o0&&u.addLayer(r)}const p=l(u);return this.overzoomedTileResultCache.set(o,p),p}reloadTile(t){return e._(this,void 0,void 0,function*(){const i=t.uid;if(!this.loaded||!this.loaded[i])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");const r=this.loaded[i];if(r.showCollisionBoxes=t.showCollisionBoxes,"parsing"===r.status){const n=yield r.parse(r.vectorTile,this.layerIndex,this.availableImages,this.actor,t.subdivisionGranularity);let s;if(this.fetching[i]){const{rawTileData:r,cacheControl:o,resourceTiming:a}=this.fetching[i];delete this.fetching[i],s=e.e({rawTileData:r.slice(0),encoding:t.encoding},n,o,a)}else s=n;return s}if("done"===r.status&&r.vectorTile)return r.parse(r.vectorTile,this.layerIndex,this.availableImages,this.actor,t.subdivisionGranularity)})}abortTile(t){return e._(this,void 0,void 0,function*(){const e=this.loading,i=t.uid;e&&e[i]&&e[i].abort&&(e[i].abort.abort(),delete e[i])})}removeTile(t){return e._(this,void 0,void 0,function*(){this.loaded&&this.loaded[t.uid]&&delete this.loaded[t.uid]})}}class u{constructor(){this.loaded={}}loadTile(t){return e._(this,void 0,void 0,function*(){const{uid:i,encoding:r,rawImageData:n,redFactor:s,greenFactor:o,blueFactor:a,baseShift:l}=t,c=n.width+2,h=n.height+2,u=e.b(n)?new e.R({width:c,height:h},yield e.c$(n,-1,-1,c,h)):n,d=new e.d0(i,u,r,s,o,a,l);return this.loaded=this.loaded||{},this.loaded[i]=d,d})}removeTile(e){const t=this.loaded,i=e.uid;t&&t[i]&&delete t[i]}}var d,p,f=function(){if(p)return d;function e(e,i){if(0!==e.length){t(e[0],i);for(var r=1;r=Math.abs(a)?i-l+a:a-l+i,i=l}i+r>=0!=!!t&&e.reverse()}return p=1,d=function t(i,r){var n,s=i&&i.type;if("FeatureCollection"===s)for(n=0;ne},g=Math.fround||(y=new Float32Array(1),e=>(y[0]=+e,y[0]));var y;class x{constructor(e){this.options=Object.assign(Object.create(_),e),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(e){const{log:t,minZoom:i,maxZoom:r}=this.options;e.length,this.points=e;const n=[];for(let o=0;o=i;o--)Date.now(),s=this.trees[o]=this._createTree(this._cluster(s,o));return this}getClusters(e,t){let i=((e[0]+180)%360+360)%360-180;const r=Math.max(-90,Math.min(90,e[1]));let n=180===e[2]?180:((e[2]+180)%360+360)%360-180;const s=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)i=-180,n=180;else if(i>n){const e=this.getClusters([i,r,180,s],t),o=this.getClusters([-180,r,n,s],t);return e.concat(o)}const o=this.trees[this._limitZoom(t)],a=o.range(w(i),T(s),w(n),T(r)),l=o.data,c=[];for(const h of a){const e=this.stride*h;c.push(l[e+5]>1?v(l,e,this.clusterProps):this.points[l[e+3]])}return c}getChildren(e){const t=this._getOriginId(e),i=this._getOriginZoom(e),r="No cluster with the specified id.",n=this.trees[i];if(!n)throw new Error(r);const s=n.data;if(t*this.stride>=s.length)throw new Error(r);const o=this.options.radius/(this.options.extent*Math.pow(2,i-1)),a=n.within(s[t*this.stride],s[t*this.stride+1],o),l=[];for(const c of a){const t=c*this.stride;s[t+4]===e&&l.push(s[t+5]>1?v(s,t,this.clusterProps):this.points[s[t+3]])}if(0===l.length)throw new Error(r);return l}getLeaves(e,t,i){const r=[];return this._appendLeaves(r,e,t=t||10,i=i||0,0),r}getTile(e,t,i){const r=this.trees[this._limitZoom(e)],n=Math.pow(2,e),{extent:s,radius:o}=this.options,a=o/s,l=(i-a)/n,c=(i+1+a)/n,h={features:[]};return this._addTileFeatures(r.range((t-a)/n,l,(t+1+a)/n,c),r.data,t,i,n,h),0===t&&this._addTileFeatures(r.range(1-a/n,l,1,c),r.data,n,i,n,h),t===n-1&&this._addTileFeatures(r.range(0,l,a/n,c),r.data,-1,i,n,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const i=this.getChildren(e);if(t++,1!==i.length)break;e=i[0].properties.cluster_id}return t}_appendLeaves(e,t,i,r,n){const s=this.getChildren(t);for(const o of s){const t=o.properties;if(t&&t.cluster?n+t.point_count<=r?n+=t.point_count:n=this._appendLeaves(e,t.cluster_id,i,r,n):n1;let l,c,h;if(a)l=b(t,e,this.clusterProps),c=t[e],h=t[e+1];else{const i=this.points[t[e+3]];l=i.properties;const[r,n]=i.geometry.coordinates;c=w(r),h=T(n)}const u={type:1,geometry:[[Math.round(this.options.extent*(c*n-i)),Math.round(this.options.extent*(h*n-r))]],tags:l};let d;d=a||this.options.generateId?t[e+3]:this.points[t[e+3]].id,void 0!==d&&(u.id=d),s.features.push(u)}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(Math.floor(+e),this.options.maxZoom+1))}_cluster(e,t){const{radius:i,extent:r,reduce:n,minPoints:s}=this.options,o=i/(r*Math.pow(2,t)),a=e.data,l=[],c=this.stride;for(let h=0;ht&&(p+=a[i+5])}if(p>d&&p>=s){let e,s=i*d,o=r*d,f=-1;const m=(h/c<<5)+(t+1)+this.points.length;for(const i of u){const r=i*c;if(a[r+2]<=t)continue;a[r+2]=t;const l=a[r+5];s+=a[r]*l,o+=a[r+1]*l,a[r+4]=m,n&&(e||(e=this._map(a,h,!0),f=this.clusterProps.length,this.clusterProps.push(e)),n(e,this._map(a,r)))}a[h+4]=m,l.push(s/p,o/p,1/0,m,-1,p),n&&l.push(f)}else{for(let e=0;e1)for(const e of u){const i=e*c;if(!(a[i+2]<=t)){a[i+2]=t;for(let e=0;e>5}_getOriginZoom(e){return(e-this.points.length)%32}_map(e,t,i){if(e[t+5]>1){const r=this.clusterProps[e[t+6]];return i?Object.assign({},r):r}const r=this.points[e[t+3]].properties,n=this.options.map(r);return i&&n===r?Object.assign({},n):n}}function v(e,t,i){return{type:"Feature",id:e[t+3],properties:b(e,t,i),geometry:{type:"Point",coordinates:[(r=e[t],360*(r-.5)),S(e[t+1])]}};var r}function b(e,t,i){const r=e[t+5],n=r>=1e4?`${Math.round(r/1e3)}k`:r>=1e3?Math.round(r/100)/10+"k":r,s=e[t+6],o=-1===s?{}:Object.assign({},i[s]);return Object.assign(o,{cluster:!0,cluster_id:e[t+3],point_count:r,point_count_abbreviated:n})}function w(e){return e/360+.5}function T(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function S(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function P(e,t,i,r){let n=r;const s=t+(i-t>>1);let o,a=i-t;const l=e[t],c=e[t+1],h=e[i],u=e[i+1];for(let d=t+3;dn)o=d,n=t;else if(t===n){const e=Math.abs(d-s);er&&(o-t>3&&P(e,t,o,r),e[o+2]=n,i-o>3&&P(e,o,i,r))}function I(e,t,i,r,n,s){let o=n-i,a=s-r;if(0!==o||0!==a){const l=((e-i)*o+(t-r)*a)/(o*o+a*a);l>1?(i=n,r=s):l>0&&(i+=o*l,r+=a*l)}return o=e-i,a=t-r,o*o+a*a}function M(e,t,i,r){const n={id:null==e?null:e,type:t,geometry:i,tags:r,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if("Point"===t||"MultiPoint"===t||"LineString"===t)E(n,i);else if("Polygon"===t)E(n,i[0]);else if("MultiLineString"===t)for(const s of i)E(n,s);else if("MultiPolygon"===t)for(const s of i)E(n,s[0]);return n}function E(e,t){for(let i=0;i0&&(o+=r?(n*a-i*s)/2:Math.sqrt(Math.pow(i-n,2)+Math.pow(a-s,2))),n=i,s=a}const a=t.length-3;t[2]=1,P(t,0,a,i),t[a+2]=1,t.size=Math.abs(o),t.start=0,t.end=t.size}function z(e,t,i,r){for(let n=0;n1?1:i}function L(e,t,i,r,n,s,o,a){if(r/=t,s>=(i/=t)&&o=r)return null;const l=[];for(const c of e){const e=c.geometry;let t=c.type;const s=0===n?c.minX:c.minY,o=0===n?c.maxX:c.maxY;if(s>=i&&o=r)continue;let h=[];if("Point"===t||"MultiPoint"===t)F(e,h,i,r,n);else if("LineString"===t)B(e,h,i,r,n,!1,a.lineMetrics);else if("MultiLineString"===t)V(e,h,i,r,n,!1);else if("Polygon"===t)V(e,h,i,r,n,!0);else if("MultiPolygon"===t)for(const a of e){const e=[];V(a,e,i,r,n,!0),e.length&&h.push(e)}if(h.length){if(a.lineMetrics&&"LineString"===t){for(const e of h)l.push(M(c.id,t,e,c.tags));continue}"LineString"!==t&&"MultiLineString"!==t||(1===h.length?(t="LineString",h=h[0]):t="MultiLineString"),"Point"!==t&&"MultiPoint"!==t||(t=3===h.length?"Point":"MultiPoint"),l.push(M(c.id,t,h,c.tags))}}return l.length?l:null}function F(e,t,i,r,n){for(let s=0;s=i&&o<=r&&j(t,e[s],e[s+1],e[s+2])}}function B(e,t,i,r,n,s,o){let a=O(e);const l=0===n?N:U;let c,h,u=e.start;for(let _=0;_i&&(h=l(a,d,p,m,g,i),o&&(a.start=u+c*h)):y>r?x=i&&(h=l(a,d,p,m,g,i),v=!0),x>r&&y<=r&&(h=l(a,d,p,m,g,r),v=!0),!s&&v&&(o&&(a.end=u+c*h),t.push(a),a=O(e)),o&&(u+=c)}let d=e.length-3;const p=e[d],f=e[d+1],m=0===n?p:f;m>=i&&m<=r&&j(a,p,f,e[d+2]),d=a.length-3,s&&d>=3&&(a[d]!==a[0]||a[d+1]!==a[1])&&j(a,a[0],a[1],a[2]),a.length&&t.push(a)}function O(e){const t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function V(e,t,i,r,n,s){for(const o of e)B(o,t,i,r,n,s,!1)}function j(e,t,i,r){e.push(t,i,r)}function N(e,t,i,r,n,s){const o=(s-t)/(r-t);return j(e,s,i+(n-i)*o,1),o}function U(e,t,i,r,n,s){const o=(s-i)/(n-i);return j(e,t+(r-t)*o,s,1),o}function G(e,t){const i=[];for(let r=0;r0&&t.size<(n?o:r))return void(i.numPoints+=t.length/3);const a=[];for(let l=0;lo)&&(i.numSimplified++,a.push(t[l],t[l+1])),i.numPoints++;n&&function(e,t){let i=0;for(let r=0,n=e.length,s=n-2;r0===t)for(let r=0,n=e.length;r24)throw new Error("maxZoom should be in the 0-24 range");if(t.promoteId&&t.generateId)throw new Error("promoteId and generateId cannot be used together.");let r=function(e,t){const i=[];if("FeatureCollection"===e.type)for(let r=0;r>e||r!==o>>e)continue}}if(d.source=null,0===e.length)continue;const p=.5*l.buffer/l.extent,f=.5-p,m=.5+p,_=1+p;let g=null,y=null,x=null,v=null,b=L(e,h,i-p,i+m,0,d.minX,d.maxX,l),w=L(e,h,i+f,i+_,0,d.minX,d.maxX,l);e=null,b&&(g=L(b,h,r-p,r+m,1,d.minY,d.maxY,l),y=L(b,h,r+f,r+_,1,d.minY,d.maxY,l),b=null),w&&(x=L(w,h,r-p,r+m,1,d.minY,d.maxY,l),v=L(w,h,r+f,r+_,1,d.minY,d.maxY,l),w=null),a.push(g||[],t+1,2*i,2*r),a.push(y||[],t+1,2*i,2*r+1),a.push(x||[],t+1,2*i+1,2*r),a.push(v||[],t+1,2*i+1,2*r+1)}}getTile(e,t,i){e=+e,t=+t,i=+i;const r=this.options,{extent:n,debug:s}=r;if(e<0||e>24)return null;const o=1<0;)c--,h>>=1,u>>=1,l=this.tiles[J(c,h,u)];return l&&l.source?(this.splitTile(l.source,c,h,u,e,t,i),this.tiles[a]?Z(this.tiles[a],n):null):null}}function J(e,t,i){return 32*((1<`${e.key}: ${e.message}`).join(", "));const n=t.features.filter(e=>r.value.evaluate({zoom:0},e));return this._toFeatureCollection(n)}_toFeatureCollection(e){return{type:"FeatureCollection",features:e}}removeSource(t){return e._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(e){return this._geoJSONIndex.getClusterExpansionZoom(e.clusterId)}getClusterChildren(e){return this._geoJSONIndex.getChildren(e.clusterId)}getClusterLeaves(e){return this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset)}}function ee(t,i){return i.cluster?new x(function({superclusterOptions:t,clusterProperties:i}){if(!i||!t)return t;const r={},n={},s={accumulated:null,zoom:0},o={properties:null},a=Object.keys(i);for(const l of a){const[t,s]=i[l],o=e.d3(s),a=e.d3("string"==typeof t?[t,["accumulated"],["get",l]]:t);r[l]=o.value,n[l]=a.value}return t.map=e=>{o.properties=e;const t={};for(const i of a)t[i]=r[i].evaluate(s,o);return t},t.reduce=(e,t)=>{o.properties=t;for(const i of a)s.accumulated=e[i],e[i]=n[i].evaluate(s,o)},t}(i)).load(t.features):(r=t,n=i.geojsonVtOptions,new K(r,n));var r,n}class te{constructor(t){this.self=t,this.actor=new e.L(t),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.globalStates=new Map,this.self.registerWorkerSource=(e,t)=>{if(this.externalWorkerSourceTypes[e])throw new Error(`Worker source with name "${e}" already registered.`);this.externalWorkerSourceTypes[e]=t},this.self.addProtocol=e.cJ,this.self.removeProtocol=e.cK,this.self.registerRTLTextPlugin=t=>{e.d4.setMethods(t)},this.actor.registerMessageHandler("LDT",(e,t)=>this._getDEMWorkerSource(e,t.source).loadTile(t)),this.actor.registerMessageHandler("RDT",(t,i)=>e._(this,void 0,void 0,function*(){this._getDEMWorkerSource(t,i.source).removeTile(i)})),this.actor.registerMessageHandler("GCEZ",(t,i)=>e._(this,void 0,void 0,function*(){return this._getWorkerSource(t,i.type,i.source).getClusterExpansionZoom(i)})),this.actor.registerMessageHandler("GCC",(t,i)=>e._(this,void 0,void 0,function*(){return this._getWorkerSource(t,i.type,i.source).getClusterChildren(i)})),this.actor.registerMessageHandler("GCL",(t,i)=>e._(this,void 0,void 0,function*(){return this._getWorkerSource(t,i.type,i.source).getClusterLeaves(i)})),this.actor.registerMessageHandler("LD",(e,t)=>this._getWorkerSource(e,t.type,t.source).loadData(t)),this.actor.registerMessageHandler("GD",(e,t)=>this._getWorkerSource(e,t.type,t.source).getData()),this.actor.registerMessageHandler("LT",(e,t)=>this._getWorkerSource(e,t.type,t.source).loadTile(t)),this.actor.registerMessageHandler("RT",(e,t)=>this._getWorkerSource(e,t.type,t.source).reloadTile(t)),this.actor.registerMessageHandler("AT",(e,t)=>this._getWorkerSource(e,t.type,t.source).abortTile(t)),this.actor.registerMessageHandler("RMT",(e,t)=>this._getWorkerSource(e,t.type,t.source).removeTile(t)),this.actor.registerMessageHandler("RS",(t,i)=>e._(this,void 0,void 0,function*(){if(!this.workerSources[t]||!this.workerSources[t][i.type]||!this.workerSources[t][i.type][i.source])return;const e=this.workerSources[t][i.type][i.source];delete this.workerSources[t][i.type][i.source],void 0!==e.removeSource&&e.removeSource(i)})),this.actor.registerMessageHandler("RM",t=>e._(this,void 0,void 0,function*(){delete this.layerIndexes[t],delete this.availableImages[t],delete this.workerSources[t],delete this.demWorkerSources[t],this.globalStates.delete(t)})),this.actor.registerMessageHandler("SR",(t,i)=>e._(this,void 0,void 0,function*(){this.referrer=i})),this.actor.registerMessageHandler("SRPS",(e,t)=>this._syncRTLPluginState(e,t)),this.actor.registerMessageHandler("IS",(t,i)=>e._(this,void 0,void 0,function*(){this.self.importScripts(i)})),this.actor.registerMessageHandler("SI",(e,t)=>this._setImages(e,t)),this.actor.registerMessageHandler("UL",(t,i)=>e._(this,void 0,void 0,function*(){this._getLayerIndex(t).update(i.layers,i.removedIds,this._getGlobalState(t))})),this.actor.registerMessageHandler("UGS",(t,i)=>e._(this,void 0,void 0,function*(){const e=this._getGlobalState(t);for(const t in i)e[t]=i[t]})),this.actor.registerMessageHandler("SL",(t,i)=>e._(this,void 0,void 0,function*(){this._getLayerIndex(t).replace(i,this._getGlobalState(t))}))}_getGlobalState(e){let t=this.globalStates.get(e);return t||(t={},this.globalStates.set(e,t)),t}_setImages(t,i){return e._(this,void 0,void 0,function*(){this.availableImages[t]=i;for(const e in this.workerSources[t]){const r=this.workerSources[t][e];for(const e in r)r[e].availableImages=i}})}_syncRTLPluginState(t,i){return e._(this,void 0,void 0,function*(){return yield e.d4.syncState(i,this.self.importScripts)})}_getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}_getLayerIndex(e){let i=this.layerIndexes[e];return i||(i=this.layerIndexes[e]=new t),i}_getWorkerSource(e,t,i){if(this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),!this.workerSources[e][t][i]){const r={sendAsync:(t,i)=>(t.targetMapId=e,this.actor.sendAsync(t,i))};switch(t){case"vector":this.workerSources[e][t][i]=new h(r,this._getLayerIndex(e),this._getAvailableImages(e));break;case"geojson":this.workerSources[e][t][i]=new Q(r,this._getLayerIndex(e),this._getAvailableImages(e));break;default:this.workerSources[e][t][i]=new this.externalWorkerSourceTypes[t](r,this._getLayerIndex(e),this._getAvailableImages(e))}}return this.workerSources[e][t][i]}_getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new u),this.demWorkerSources[e][t]}}return e.i(self)&&(self.worker=new te(self)),te}),r("index",0,function(e,t){var i="5.15.0";function r(){var e=new t.A(4);return t.A!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}let n,s,o;const a={frame(e,i,r){const n=requestAnimationFrame(e=>{s(),i(e)}),{unsubscribe:s}=t.s(e.signal,"abort",()=>{s(),cancelAnimationFrame(n),r(new t.a(e.signal.reason))},!1)},frameAsync(e){return new Promise((t,i)=>{this.frame(e,t,i)})},getImageData(e,t=0){return this.getImageCanvasContext(e).getImageData(-t,-t,e.width+2*t,e.height+2*t)},getImageCanvasContext(e){const t=window.document.createElement("canvas"),i=t.getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("failed to create canvas 2d context");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0,e.width,e.height),i},resolveURL:e=>(n||(n=document.createElement("a")),n.href=e,n.href),hardwareConcurrency:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return void 0!==o?o:!!matchMedia&&(null==s&&(s=matchMedia("(prefers-reduced-motion: reduce)")),s.matches)},set prefersReducedMotion(e){o=e}},l=new class{constructor(){this._realTime="undefined"!=typeof performance&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),this._frozenAt=null}getCurrentTime(){return null!==this._frozenAt?this._frozenAt:this._realTime()}setNow(e){this._frozenAt=e}restoreNow(){this._frozenAt=null}isFrozen(){return null!==this._frozenAt}};function c(){return l.getCurrentTime()}class h{static testProp(e){if(!h.docStyle)return e[0];for(let t=0;t{window.removeEventListener("click",h.suppressClickInternal,!0)},0)}static getScale(e){const t=e.getBoundingClientRect();return{x:t.width/e.offsetWidth||1,y:t.height/e.offsetHeight||1,boundingClientRect:t}}static getPoint(e,i,r){const n=i.boundingClientRect;return new t.P((r.clientX-n.left)/i.x-e.clientLeft,(r.clientY-n.top)/i.y-e.clientTop)}static mousePos(e,t){const i=h.getScale(e);return h.getPoint(e,i,t)}static touchPos(e,t){const i=[],r=h.getScale(e);for(let n=0;n{d&&_(d),d=null,m=!0},p.onerror=()=>{f=!0,d=null},p.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(e){let i,r,n,s;e.resetRequestQueue=()=>{i=[],r=0,n=0,s={}},e.addThrottleControl=e=>{const t=n++;return s[t]=e,t},e.removeThrottleControl=e=>{delete s[e],a()},e.getImage=(e,r,n=!0)=>new Promise((s,o)=>{u.supported&&(e.headers||(e.headers={}),e.headers.accept="image/webp,*/*"),t.e(e,{type:"image"}),i.push({abortController:r,requestParameters:e,supportImageRefresh:n,state:"queued",onError:e=>{o(e)},onSuccess:e=>{s(e)}}),a()});const o=e=>t._(this,void 0,void 0,function*(){e.state="running";const{requestParameters:i,supportImageRefresh:n,onError:s,onSuccess:o,abortController:c}=e,h=!1===n&&!t.i(self)&&!t.g(i.url)&&(!i.headers||Object.keys(i.headers).reduce((e,t)=>e&&"accept"===t,!0));r++;const u=h?l(i,c):t.m(i,c);try{const i=yield u;delete e.abortController,e.state="completed",i.data instanceof HTMLImageElement||t.b(i.data)?o(i):i.data&&o({data:yield(d=i.data,"function"==typeof createImageBitmap?t.f(d):t.h(d)),cacheControl:i.cacheControl,expires:i.expires})}catch(p){delete e.abortController,s(p)}finally{r--,a()}var d}),a=()=>{const e=(()=>{for(const e of Object.keys(s))if(s[e]())return!0;return!1})()?t.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:t.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let t=r;t0;t++){const e=i.shift();e.abortController.signal.aborted?t--:o(e)}},l=(e,i)=>new Promise((r,n)=>{const s=new Image,o=e.url,a=e.credentials;a&&"include"===a?s.crossOrigin="use-credentials":(a&&"same-origin"===a||!t.d(o))&&(s.crossOrigin="anonymous"),i.signal.addEventListener("abort",()=>{s.src="",n(new t.a(i.signal.reason))}),s.fetchPriority="high",s.onload=()=>{s.onerror=s.onload=null,r({data:s})},s.onerror=()=>{s.onerror=s.onload=null,i.signal.aborted||n(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."))},s.src=o})}(g||(g={})),g.resetRequestQueue();class y{constructor(e){this._transformRequestFn=null!=e?e:null}transformRequest(e,t){return this._transformRequestFn&&this._transformRequestFn(e,t)||{url:e}}setTransformRequest(e){this._transformRequestFn=e}}function x(e){const t=[];if("string"==typeof e)t.push({id:"default",url:e});else if(e&&e.length>0){const i=[];for(const{id:r,url:n}of e){const e=`${r}${n}`;-1===i.indexOf(e)&&(i.push(e),t.push({id:r,url:n}))}}return t}function v(e,t,i){try{const r=new URL(e);return r.pathname+=`${t}${i}`,r.toString()}catch(r){throw new Error(`Invalid sprite URL "${e}", must be absolute. Modify style specification directly or use TransformStyleFunction to correct the issue dynamically`)}}function b(e){const{userImage:t}=e;return!!(t&&t.render&&t.render())&&(e.data.replace(new Uint8Array(t.data.buffer)),!0)}class w extends t.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0}destroy(){this.atlasTexture&&(this.atlasTexture.destroy(),this.atlasTexture=null);for(const e of Object.keys(this.images))this.removeImage(e);this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,promiseResolve:t}of this.requestors)t(this._getImagesForIds(e));this.requestors=[]}}getImage(e){const i=this.images[e];if(i&&!i.data&&i.spriteData){const e=i.spriteData;i.data=new t.R({width:e.width,height:e.height},e.context.getImageData(e.x,e.y,e.width,e.height).data),i.spriteData=null}return i}addImage(e,t){if(this.images[e])throw new Error(`Image id ${e} already exist, use updateImage instead`);this._validate(e,t)&&(this.images[e]=t)}_validate(e,i){let r=!0;const n=i.data||i.spriteData;return this._validateStretch(i.stretchX,n&&n.width)||(this.fire(new t.k(new Error(`Image "${e}" has invalid "stretchX" value`))),r=!1),this._validateStretch(i.stretchY,n&&n.height)||(this.fire(new t.k(new Error(`Image "${e}" has invalid "stretchY" value`))),r=!1),this._validateContent(i.content,i)||(this.fire(new t.k(new Error(`Image "${e}" has invalid "content" value`))),r=!1),r}_validateStretch(e,t){if(!e)return!0;let i=0;for(const r of e){if(r[0]{let r=!0;if(!this.isLoaded())for(const n of e)this.images[n]||(r=!1);this.isLoaded()||r?t(this._getImagesForIds(e)):this.requestors.push({ids:e,promiseResolve:t})})}_getImagesForIds(e){const i={};for(const r of e){let e=this.getImage(r);e||(this.fire(new t.l("styleimagemissing",{id:r})),e=this.getImage(r)),e?i[r]={data:e.data.clone(),pixelRatio:e.pixelRatio,sdf:e.sdf,version:e.version,stretchX:e.stretchX,stretchY:e.stretchY,content:e.content,textFitWidth:e.textFitWidth,textFitHeight:e.textFitHeight,hasRenderCallback:Boolean(e.userImage&&e.userImage.render)}:t.w(`Image "${r}" 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 i}getPixelSize(){const{width:e,height:t}=this.atlasImage;return{width:e,height:t}}getPattern(e){const i=this.patterns[e],r=this.getImage(e);if(!r)return null;if(i&&i.position.version===r.version)return i.position;if(i)i.position.version=r.version;else{const i={w:r.data.width+2,h:r.data.height+2,x:0,y:0},n=new t.I(i,r);this.patterns[e]={bin:i,position:n}}return this._updatePatternAtlas(),this.patterns[e].position}bind(e){const i=e.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new t.T(e,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE)}_updatePatternAtlas(){const e=[];for(const t in this.patterns)e.push(this.patterns[t].bin);const{w:i,h:r}=t.p(e),n=this.atlasImage;n.resize({width:i||1,height:r||1});for(const s in this.patterns){const{bin:e}=this.patterns[s],i=e.x+1,r=e.y+1,o=this.getImage(s).data,a=o.width,l=o.height;t.R.copy(o,n,{x:0,y:0},{x:i,y:r},{width:a,height:l}),t.R.copy(o,n,{x:0,y:l-1},{x:i,y:r-1},{width:a,height:1}),t.R.copy(o,n,{x:0,y:0},{x:i,y:r+l},{width:a,height:1}),t.R.copy(o,n,{x:a-1,y:0},{x:i-1,y:r},{width:1,height:l}),t.R.copy(o,n,{x:0,y:0},{x:i+a,y:r},{width:1,height:l})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(e){for(const i of e){if(this.callbackDispatchedThisFrame[i])continue;this.callbackDispatchedThisFrame[i]=!0;const e=this.getImage(i);e||t.w(`Image with ID: "${i}" was not found`),b(e)&&this.updateImage(i,e)}}cloneImages(){const e={};for(const t in this.images){const i=this.images[t];e[t]=Object.assign(Object.assign({},i),{data:i.data?i.data.clone():null})}return e}}const T=1e20;function S(e,t,i,r,n,s,o,a,l){for(let c=t;c-1);l++,s[l]=a,o[l]=c,o[l+1]=T}for(let a=0,l=0;a/[-\w]+/.test(e)?e:`'${CSS.escape(e)}'`).join(",");return new M.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:i,fontWeight:this._fontWeight(t[0]),fontStyle:this._fontStyle(t[0]),lang:this.lang})}_fontStyle(e){return/italic/i.test(e)?"italic":/oblique/i.test(e)?"oblique":"normal"}_fontWeight(e){const t={thin:100,hairline:100,"extra light":200,"ultra light":200,light:300,normal:400,regular:400,medium:500,semibold:600,demibold:600,bold:700,"extra bold":800,"ultra bold":800,black:900,heavy:900,"extra black":950,"ultra black":950};let i;for(const[r,n]of Object.entries(t))new RegExp(`\\b${r}\\b`,"i").test(e)&&(i=`${n}`);return i}destroy(){for(const e in this.entries){const t=this.entries[e];t.tinySDF&&(t.tinySDF=null),t.ideographTinySDF&&(t.ideographTinySDF=null),t.glyphs={},t.requests={},t.ranges={}}this.entries={}}}M.loadGlyphRange=function(e,i,r,n){return t._(this,void 0,void 0,function*(){const s=256*i,o=s+255,a=n.transformRequest(r.replace("{fontstack}",e).replace("{range}",`${s}-${o}`),"Glyphs"),l=yield t.n(a,new AbortController);if(!l||!l.data)throw new Error(`Could not load glyph range. range: ${i}, ${s}-${o}`);const c={};for(const e of t.o(l.data))c[e.id]=e;return c})},M.TinySDF=class{constructor({fontSize:e=24,buffer:t=3,radius:i=8,cutoff:r=.25,fontFamily:n="sans-serif",fontWeight:s="normal",fontStyle:o="normal",lang:a=null}={}){this.buffer=t,this.cutoff=r,this.radius=i,this.lang=a;const l=this.size=e+4*t,c=this._createCanvas(l),h=this.ctx=c.getContext("2d",{willReadFrequently:!0});h.font=`${o} ${s} ${e}px ${n}`,h.textBaseline="alphabetic",h.textAlign="left",h.fillStyle="black",this.gridOuter=new Float64Array(l*l),this.gridInner=new Float64Array(l*l),this.f=new Float64Array(l),this.z=new Float64Array(l+1),this.v=new Uint16Array(l)}_createCanvas(e){const t=document.createElement("canvas");return t.width=t.height=e,t}draw(e){const{width:t,actualBoundingBoxAscent:i,actualBoundingBoxDescent:r,actualBoundingBoxLeft:n,actualBoundingBoxRight:s}=this.ctx.measureText(e),o=Math.ceil(i),a=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(s-n))),l=Math.min(this.size-this.buffer,o+Math.ceil(r)),c=a+2*this.buffer,h=l+2*this.buffer,u=Math.max(c*h,0),d=new Uint8ClampedArray(u),p={data:d,width:c,height:h,glyphWidth:a,glyphHeight:l,glyphTop:o,glyphLeft:0,glyphAdvance:t};if(0===a||0===l)return p;const{ctx:f,buffer:m,gridInner:_,gridOuter:g}=this;this.lang&&(f.lang=this.lang),f.clearRect(m,m,a,l),f.fillText(e,m,m+o);const y=f.getImageData(m,m,a,l);g.fill(T,0,u),_.fill(0,0,u);for(let x=0;x0?e*e:0,_[i]=e<0?e*e:0}}S(g,0,0,c,h,c,this.f,this.v,this.z),S(_,m,m,a,l,c,this.f,this.v,this.z);for(let x=0;x1&&(o=e[++s]);const l=Math.abs(a-o.left),c=Math.abs(a-o.right),h=Math.min(l,c);let u;const d=n/i*(r+1);if(o.isDash){const e=r-Math.abs(d);u=Math.sqrt(h*h+e*e)}else u=r-Math.sqrt(h*h+d*d);this.data[t+a]=Math.max(0,Math.min(255,u+128))}}}addRegularDash(e){for(let o=e.length-1;o>=0;--o){const t=e[o],i=e[o+1];t.zeroLength?e.splice(o,1):i&&i.isDash===t.isDash&&(i.left=t.left,e.splice(o,1))}const t=e[0],i=e[e.length-1];t.isDash===i.isDash&&(t.left=i.left-this.width,i.right=t.right+this.width);const r=this.width*this.nextRow;let n=0,s=e[n];for(let o=0;o1&&(s=e[++n]);const t=Math.abs(o-s.left),i=Math.abs(o-s.right),a=Math.min(t,i);this.data[r+o]=Math.max(0,Math.min(255,(s.isDash?a:-a)+128))}}addDash(e,i){const r=i?7:0,n=2*r+1;if(this.nextRow+n>this.height)return t.w("LineAtlas out of space"),null;let s=0;for(let t=0;t{e.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[R]}numActive(){return Object.keys(this.active).length}}const F=Math.floor(a.hardwareConcurrency/2);let B,O;function V(){return B||(B=new L),B}L.workerCount=t.K(globalThis)?Math.max(Math.min(F,3),1):1;class j{constructor(e,i){this.workerPool=e,this.actors=[],this.currentActor=0,this.id=i;const r=this.workerPool.acquire(i);for(let n=0;n{e.remove()}),this.actors=[],e&&this.workerPool.release(this.id)}registerMessageHandler(e,t){for(const i of this.actors)i.registerMessageHandler(e,t)}unregisterMessageHandler(e){for(const t of this.actors)t.unregisterMessageHandler(e)}}function N(){return O||(O=new j(V(),t.M),O.registerMessageHandler("GR",(e,i,r)=>t.m(i,r))),O}function U(e,i){const r=t.N();return t.O(r,r,[1,1,0]),t.Q(r,r,[.5*e.width,.5*e.height,1]),e.calculatePosMatrix?t.S(r,r,e.calculatePosMatrix(i.toUnwrapped())):r}function G(e,t,i,r,n,s,o){var a;const l=function(e,t,i){if(e)for(const r of e){const e=t[r];if(e&&e.source===i&&"fill-extrusion"===e.type)return!0}else for(const r in t){const e=t[r];if(e.source===i&&"fill-extrusion"===e.type)return!0}return!1}(null!==(a=null==n?void 0:n.layers)&&void 0!==a?a:null,t,e.id),c=s.maxPitchScaleFactor(),h=e.tilesIn(r,c,l);h.sort(q);const u=[];for(const d of h)u.push({wrappedTileID:d.tileID.wrapped().key,queryResults:d.tile.queryRenderedFeatures(t,i,e.getState(),d.queryGeometry,d.cameraQueryGeometry,d.scale,n,s,c,U(s,d.tileID),o?(e,t)=>o(d.tileID,e,t):void 0)});return function(e,t){for(const i in e)for(const r of e[i])Z(r,t);return e}(function(e){const t={},i={};for(const r of e){const e=r.queryResults,n=r.wrappedTileID,s=i[n]=i[n]||{};for(const i in e){const r=e[i],n=s[i]=s[i]||{},o=t[i]=t[i]||[];for(const e of r)n[e.featureIndex]||(n[e.featureIndex]=!0,o.push(e))}}return t}(u),e)}function q(e,t){const i=e.tileID,r=t.tileID;return i.overscaledZ-r.overscaledZ||i.canonical.y-r.canonical.y||i.wrap-r.wrap||i.canonical.x-r.canonical.x}function Z(e,t){const i=e.feature,r=t.getFeatureState(i.layer["source-layer"],i.id);i.source=i.layer.source,i.layer["source-layer"]&&(i.sourceLayer=i.layer["source-layer"]),i.state=r}function $(e,i,r){return t._(this,void 0,void 0,function*(){let n=e;if(e.url?n=(yield t.j(i.transformRequest(e.url,"Source"),r)).data:yield a.frameAsync(r),!n)return null;const s=t.U(t.e(n,e),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in n&&n.vector_layers&&(s.vectorLayerIds=n.vector_layers.map(e=>e.id)),s})}class W{constructor(e,t){e&&(t?this.setSouthWest(e).setNorthEast(t):Array.isArray(e)&&(4===e.length?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1])))}setNorthEast(e){return this._ne=e instanceof t.V?new t.V(e.lng,e.lat):t.V.convert(e),this}setSouthWest(e){return this._sw=e instanceof t.V?new t.V(e.lng,e.lat):t.V.convert(e),this}extend(e){const i=this._sw,r=this._ne;let n,s;if(e instanceof t.V)n=e,s=e;else{if(!(e instanceof W))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend(W.convert(e)):this.extend(t.V.convert(e)):e&&("lng"in e||"lon"in e)&&"lat"in e?this.extend(t.V.convert(e)):this;if(n=e._sw,s=e._ne,!n||!s)return this}return i||r?(i.lng=Math.min(n.lng,i.lng),i.lat=Math.min(n.lat,i.lat),r.lng=Math.max(s.lng,r.lng),r.lat=Math.max(s.lat,r.lat)):(this._sw=new t.V(n.lng,n.lat),this._ne=new t.V(s.lng,s.lat)),this}getCenter(){return new t.V((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 t.V(this.getWest(),this.getNorth())}getSouthEast(){return new t.V(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(e){const{lng:i,lat:r}=t.V.convert(e);let n=this._sw.lng<=i&&i<=this._ne.lng;return this._sw.lng>this._ne.lng&&(n=this._sw.lng>=i&&i>=this._ne.lng),this._sw.lat<=r&&r<=this._ne.lat&&n}intersects(e){if(!((e=W.convert(e)).getNorth()>=this.getSouth()&&e.getSouth()<=this.getNorth()))return!1;const i=Math.abs(this.getEast()-this.getWest()),r=Math.abs(e.getEast()-e.getWest());if(i>=360||r>=360)return!0;const n=t.W(this.getWest(),-180,180),s=t.W(this.getEast(),-180,180),o=t.W(e.getWest(),-180,180),a=t.W(e.getEast(),-180,180),l=n>=s,c=o>=a;return!(!l||!c)||(l?a>=n||o<=s:c?s>=o||n<=a:o<=s&&a>=n)}static convert(e){return e instanceof W?e:e?new W(e):e}static fromLngLat(e,i=0){const r=360*i/40075017,n=r/Math.cos(Math.PI/180*e.lat);return new W(new t.V(e.lng-n,e.lat-r),new t.V(e.lng+n,e.lat+r))}adjustAntiMeridian(){const e=new t.V(this._sw.lng,this._sw.lat),i=new t.V(this._ne.lng,this._ne.lat);return new W(e,e.lng>i.lng?new t.V(i.lng+360,i.lat):i)}}class H{constructor(e,t,i){this.bounds=W.convert(this.validateBounds(e)),this.minzoom=t||0,this.maxzoom=i||24}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(e){const i=Math.pow(2,e.z),r=Math.floor(t.Y(this.bounds.getWest())*i),n=Math.floor(t.X(this.bounds.getNorth())*i),s=Math.ceil(t.Y(this.bounds.getEast())*i),o=Math.ceil(t.X(this.bounds.getSouth())*i);return e.x>=r&&e.x=n&&e.y{this._options.tiles=e}),this}setUrl(e){return this.setSourceProperty(()=>{this.url=e,this._options.url=e}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return t.e({},this._options)}loadTile(e){return t._(this,void 0,void 0,function*(){const t=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),i={request:this.map._requestManager.transformRequest(t,"Tile"),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity,encoding:this.encoding,overzoomParameters:this._getOverzoomParameters(e)};i.request.collectResourceTiming=this._collectResourceTiming;let r="RT";if(e.actor&&"expired"!==e.state){if("loading"===e.state)return new Promise((t,i)=>{e.reloadPromise={resolve:t,reject:i}})}else e.actor=this.dispatcher.getActor(),r="LT";e.abortController=new AbortController;try{const t=yield e.actor.sendAsync({type:r,data:i},e.abortController);if(delete e.abortController,e.aborted)return;this._afterTileLoadWorkerResponse(e,t)}catch(n){if(delete e.abortController,e.aborted)return;if(n&&404!==n.status)throw n;this._afterTileLoadWorkerResponse(e,null)}})}_getOverzoomParameters(e){if(e.tileID.canonical.z<=this.maxzoom)return;if(void 0===this.map._zoomLevelsToOverscale)return;const t=e.tileID.scaledTo(this.maxzoom).canonical,i=t.url(this.tiles,this.map.getPixelRatio(),this.scheme);return{maxZoomTileID:t,overzoomRequest:this.map._requestManager.transformRequest(i,"Tile")}}_afterTileLoadWorkerResponse(e,t){if(t&&t.resourceTiming&&(e.resourceTiming=t.resourceTiming),t&&this.map._refreshExpiredTiles&&e.setExpiryData(t),e.loadVectorData(t,this.map.painter),e.reloadPromise){const t=e.reloadPromise;e.reloadPromise=null,this.loadTile(e).then(t.resolve).catch(t.reject)}}abortTile(e){return t._(this,void 0,void 0,function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.actor&&(yield e.actor.sendAsync({type:"AT",data:{uid:e.uid,type:this.type,source:this.id}}))})}unloadTile(e){return t._(this,void 0,void 0,function*(){e.unloadVectorData(),e.actor&&(yield e.actor.sendAsync({type:"RMT",data:{uid:e.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class Y extends t.E{constructor(e,i,r,n){super(),this.id=e,this.dispatcher=r,this.setEventedParent(n),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=t.e({type:"raster"},i),t.e(this,t.U(i,["url","scheme","tileSize"]))}load(){return t._(this,arguments,void 0,function*(e=!1){this._loaded=!1,this.fire(new t.l("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{const i=yield $(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,i&&(t.e(this,i),i.bounds&&(this.tileBounds=new H(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.l("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new t.l("data",{dataType:"source",sourceDataType:"content",sourceDataChanged:e})))}catch(i){this._tileJSONRequest=null,this._loaded=!0,t.Z(i)||this.fire(new t.k(i))}})}loaded(){return this._loaded}onAdd(e){this.map=e,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(e){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),e(),this.load(!0)}setTiles(e){return this.setSourceProperty(()=>{this._options.tiles=e}),this}setUrl(e){return this.setSourceProperty(()=>{this.url=e,this._options.url=e}),this}serialize(){return t.e({},this._options)}hasTile(e){return!this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(e){return t._(this,void 0,void 0,function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);e.abortController=new AbortController;try{const r=yield g.getImage(this.map._requestManager.transformRequest(i,"Tile"),e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state="unloaded");if(r&&r.data){this.map._refreshExpiredTiles&&(r.cacheControl||r.expires)&&e.setExpiryData({cacheControl:r.cacheControl,expires:r.expires});const i=this.map.painter.context,n=i.gl,s=r.data;e.texture=this.map.painter.getTileTexture(s.width),e.texture?e.texture.update(s,{useMipmap:!0}):(e.texture=new t.T(i,s,n.RGBA,{useMipmap:!0}),e.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE,n.LINEAR_MIPMAP_NEAREST)),e.state="loaded"}}catch(r){if(delete e.abortController,e.aborted)e.state="unloaded";else if(r)throw e.state="errored",r}})}abortTile(e){return t._(this,void 0,void 0,function*(){e.abortController&&(e.abortController.abort(),delete e.abortController)})}unloadTile(e){return t._(this,void 0,void 0,function*(){e.texture&&this.map.painter.saveTileTexture(e.texture)})}hasTransition(){return!1}}class K extends Y{constructor(e,i,r,n){super(e,i,r,n),this.type="raster-dem",this.maxzoom=22,this._options=t.e({type:"raster-dem"},i),this.encoding=i.encoding||"mapbox",this.redFactor=i.redFactor,this.greenFactor=i.greenFactor,this.blueFactor=i.blueFactor,this.baseShift=i.baseShift}loadTile(e){return t._(this,void 0,void 0,function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),r=this.map._requestManager.transformRequest(i,"Tile");e.neighboringTiles=this._getNeighboringTiles(e.tileID),e.abortController=new AbortController;try{const i=yield g.getImage(r,e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state="unloaded");if(i&&i.data){const r=i.data;this.map._refreshExpiredTiles&&(i.cacheControl||i.expires)&&e.setExpiryData({cacheControl:i.cacheControl,expires:i.expires});const n=t.b(r)&&t.$()?r:yield this.readImageNow(r),s={type:this.type,uid:e.uid,source:this.id,rawImageData:n,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!e.actor||"expired"===e.state){e.actor=this.dispatcher.getActor();const t=yield e.actor.sendAsync({type:"LDT",data:s});e.dem=t,e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.state="loaded"}}}catch(n){if(delete e.abortController,e.aborted)e.state="unloaded";else if(n)throw e.state="errored",n}})}readImageNow(e){return t._(this,void 0,void 0,function*(){if("undefined"!=typeof VideoFrame&&t.a0()){const r=e.width+2,n=e.height+2;try{return new t.R({width:r,height:n},yield t.a1(e,-1,-1,r,n))}catch(i){}}return a.getImageData(e,1)})}_getNeighboringTiles(e){const i=e.canonical,r=Math.pow(2,i.z),n=(i.x-1+r)%r,s=0===i.x?e.wrap-1:e.wrap,o=(i.x+1+r)%r,a=i.x+1===r?e.wrap+1:e.wrap,l={};return l[new t.a2(e.overscaledZ,s,i.z,n,i.y).key]={backfilled:!1},l[new t.a2(e.overscaledZ,a,i.z,o,i.y).key]={backfilled:!1},i.y>0&&(l[new t.a2(e.overscaledZ,s,i.z,n,i.y-1).key]={backfilled:!1},l[new t.a2(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.a2(e.overscaledZ,a,i.z,o,i.y-1).key]={backfilled:!1}),i.y+1e.coordinates).flat(1/0):e.coordinates.flat(1/0)}function Q(e){const t=new W;let i;switch(e.type){case"FeatureCollection":i=e.features.map(e=>J(e.geometry)).flat(1/0);break;case"Feature":i=J(e.geometry);break;default:i=J(e)}if(0==i.length)return t;for(let r=0;r0&&t.e(a,{resourceTiming:o}),this.fire(new t.l("data",Object.assign(Object.assign({},a),{sourceDataType:"metadata"}))),this.fire(new t.l("data",Object.assign(Object.assign({},a),{sourceDataType:"content",shouldReloadTileOptions:s})))}catch(n){if(this._isUpdatingWorker=!1,this._removed)return void this.fire(new t.l("dataabort",{dataType:"source"}));this.fire(new t.k(n))}finally{this._hasPendingWorkerUpdate()&&this._updateWorkerData()}})}_applyDiffToSource(e){if(!e)return;const i="string"==typeof this.promoteId?this.promoteId:void 0;if(!this._data.url&&!this._data.updateable){const e=t.a7(this._data.geojson,i);if(!e)throw new Error(`GeoJSONSource "${this.id}": GeoJSON data is not compatible with updateData`);this._data={updateable:e}}if(!this._data.updateable)return;const r=t.a8(this._data.updateable,e,i);return e.removeAll||this._options.cluster?void 0:r}_getShouldReloadTileOptions(e){if(e)return{affectedBounds:e.filter(Boolean).map(e=>Q(e))}}shouldReloadTile(e,{affectedBounds:i}){if("loading"===e.state)return!0;if("unloaded"===e.state)return!1;const{buffer:r,extent:n}=this.workerOptions.geojsonVtOptions,s=function({x:e,y:i,z:r},n=0){const s=t.a3((e-n)/Math.pow(2,r)),o=t.a4((i+1+n)/Math.pow(2,r)),a=t.a3((e+1+n)/Math.pow(2,r)),l=t.a4((i-n)/Math.pow(2,r));return new W([s,o],[a,l])}(e.tileID.canonical,r/n);for(const t of i)if(s.intersects(t))return!0;return!1}loaded(){return!this._isUpdatingWorker&&!this._hasPendingWorkerUpdate()}loadTile(e){return t._(this,void 0,void 0,function*(){const t=e.actor?"RT":"LT";e.actor=this.actor;const i={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity};e.abortController=new AbortController;const r=yield this.actor.sendAsync({type:t,data:i},e.abortController);delete e.abortController,e.unloadVectorData(),e.aborted||e.loadVectorData(r,this.map.painter,"RT"===t)})}abortTile(e){return t._(this,void 0,void 0,function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.aborted=!0})}unloadTile(e){return t._(this,void 0,void 0,function*(){e.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:e.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 t.e({},this._options,{type:this.type,data:this._data.updateable?{type:"FeatureCollection",features:Array.from(this._data.updateable.values())}:this._data.url||this._data.geojson})}hasTransition(){return!1}}class te extends t.E{constructor(e,t,i,r){super(),this.flippedWindingOrder=!1,this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(r),this.options=t}load(e){return t._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new t.l("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{const t=yield g.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,t&&t.data&&(this.image=t.data,e&&(this.coordinates=e),this._finishLoading())}catch(i){this._request=null,this._loaded=!0,t.Z(i)||this.fire(new t.k(i))}})}loaded(){return this._loaded}updateImage(e){return e.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=e.url,this.load(e.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.l("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(e){this.map=e,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(e){this.coordinates=e;const i=e.map(t.a9.fromLngLat);var r;return this.tileID=function(e){const i=t.aa.fromPoints(e),r=i.width(),n=i.height(),s=Math.max(r,n),o=Math.max(0,Math.floor(-Math.log(s)/Math.LN2)),a=Math.pow(2,o);return new t.ac(o,Math.floor((i.minX+i.maxX)/2*a),Math.floor((i.minY+i.maxY)/2*a))}(i),this.terrainTileRanges=this._getOverlappingTileRanges(i),this.minzoom=this.maxzoom=this.tileID.z,this.tileCoords=i.map(e=>this.tileID.getTilePoint(e)._round()),this.flippedWindingOrder=((r=this.tileCoords)[1].x-r[0].x)*(r[2].y-r[0].y)-(r[1].y-r[0].y)*(r[2].x-r[0].x)<0,this.fire(new t.l("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const e=this.map.painter.context,i=e.gl;this.texture||(this.texture=new t.T(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let r=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,r=!0)}r&&this.fire(new t.l("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(e){return t._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={}):e.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}_getOverlappingTileRanges(e){const{minX:i,minY:r,maxX:n,maxY:s}=t.aa.fromPoints(e),o={};for(let a=0;a<=t.ab;a++){const e=Math.pow(2,a),t=Math.floor(i*e),l=Math.floor(r*e),c=Math.floor(n*e),h=Math.floor(s*e);o[a]={minTileX:t,minTileY:l,maxTileX:c,maxTileY:h}}return o}}class ie extends te{constructor(e,t,i,r){super(e,t,i,r),this.roundZoom=!0,this.type="video",this.options=t}load(){return t._(this,void 0,void 0,function*(){this._loaded=!1;const e=this.options;this.urls=[];for(const t of e.urls)this.urls.push(this.map._requestManager.transformRequest(t,"Source").url);try{const e=yield t.ad(this.urls);if(this._loaded=!0,!e)return;this.video=e,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(i){this.fire(new t.k(i))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(e){if(this.video){const i=this.video.seekable;ei.end(0)?this.fire(new t.k(new t.ae(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=e}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const e=this.map.painter.context,i=e.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new t.T(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let r=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,r=!0)}r&&this.fire(new t.l("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 re extends te{constructor(e,i,r,n){super(e,i,r,n),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some(e=>!Array.isArray(e)||2!==e.length||e.some(e=>"number"!=typeof e))||this.fire(new t.k(new t.ae(`sources.${e}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.k(new t.ae(`sources.${e}`,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new t.k(new t.ae(`sources.${e}`,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof HTMLCanvasElement||this.fire(new t.k(new t.ae(`sources.${e}`,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 t.k(new t.ae(`sources.${e}`,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate}load(){return t._(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 t.k(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(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,r=i.gl;this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):(this.texture=new t.T(i,this.canvas,r.RGBA,{premultiply:!0}),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE));let n=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,n=!0)}n&&this.fire(new t.l("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",animate:this.animate,canvas:this.options.canvas,coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of[this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return!0;return!1}}const ne={},se=e=>{switch(e){case"geojson":return ee;case"image":return te;case"raster":return Y;case"raster-dem":return K;case"vector":return X;case"video":return ie;case"canvas":return re}return ne[e]},oe="RTLPluginLoaded";class ae extends t.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=N()}_syncState(e){return this.status=e,this.dispatcher.broadcast("SRPS",{pluginStatus:e,pluginURL:this.url}).catch(e=>{throw this.status="error",e})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(e){return t._(this,arguments,void 0,function*(e,t=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=a.resolveURL(e),!this.url)throw new Error(`requested url ${e} is invalid`);if("unavailable"===this.status){if(!t)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if("requested"===this.status)return this._requestImport()})}_requestImport(){return t._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new t.l(oe))})}lazyLoad(){"unavailable"===this.status?this.status="requested":"deferred"===this.status&&this._requestImport()}}let le=null;function ce(){return le||(le=new ae),le}var he,ue,de;(de=he||(he={}))[de.Base=0]="Base",de[de.Parent=1]="Parent",function(e){e[e.Departing=0]="Departing",e[e.Incoming=1]="Incoming"}(ue||(ue={}));class pe{constructor(e,i){this.timeAdded=0,this.fadeEndTime=0,this.fadeOpacity=1,this.tileID=e,this.uid=t.af(),this.uses=0,this.tileSize=i,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"}isRenderable(e){return this.hasData()&&(!this.fadeEndTime||this.fadeOpacity>0)&&(e||!this.holdingForSymbolFade())}setCrossFadeLogic({fadingRole:e,fadingDirection:t,fadingParentID:i,fadeEndTime:r}){this.resetFadeLogic(),this.fadingRole=e,this.fadingDirection=t,this.fadingParentID=i,this.fadeEndTime=r}setSelfFadeLogic(e){this.resetFadeLogic(),this.selfFading=!0,this.fadeEndTime=e}resetFadeLogic(){this.fadingRole=null,this.fadingDirection=null,this.fadingParentID=null,this.selfFading=!1,this.timeAdded=c(),this.fadeEndTime=0,this.fadeOpacity=1}wasRequested(){return"errored"===this.state||"loaded"===this.state||"reloading"===this.state}clearTextures(e){this.demTexture&&e.saveTileTexture(this.demTexture),this.demTexture=null}loadVectorData(e,i,r){if(this.hasData()&&this.unloadVectorData(),this.state="loaded",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestFeatureIndex.rawTileData=e.rawTileData,this.latestFeatureIndex.encoding=e.encoding):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData,this.latestFeatureIndex.encoding=this.latestEncoding)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(e,t){const i={};if(!t)return i;for(const r of e){const e=r.layerIds.map(e=>t.getLayer(e)).filter(Boolean);if(0!==e.length){r.layers=e,r.stateDependentLayerIds&&(r.stateDependentLayers=r.stateDependentLayerIds.map(t=>e.filter(e=>e.id===t)[0]));for(const t of e)i[t.id]=r}}return i}(e.buckets,null==i?void 0:i.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.ah){if(this.hasSymbolBuckets=!0,!r)break;i.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.ah&&i.hasRTLText){this.hasRTLText=!0,ce().lazyLoad();break}}this.queryPadding=0;for(const e in this.buckets){const t=this.buckets[e];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(e).queryRadius(t))}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),this.dashPositions=e.dashPositions}else this.collisionBoxArray=new t.ag}unloadVectorData(){for(const e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.dashPositions&&(this.dashPositions=null),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(e){return this.buckets[e.id]}upload(e){for(const t in this.buckets){const i=this.buckets[t];i.uploadPending()&&i.upload(e)}const i=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new t.T(e,this.imageAtlas.image,i.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new t.T(e,this.glyphAtlasImage,i.ALPHA),this.glyphAtlasImage=null)}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture)}queryRenderedFeatures(e,t,i,r,n,s,o,a,l,c,h){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:r,cameraQueryGeometry:n,scale:s,tileSize:this.tileSize,pixelPosMatrix:c,transform:a,params:o,queryPadding:this.queryPadding*l,getElevation:h},e,t,i):{}}querySourceFeatures(e,i){const r=this.latestFeatureIndex;if(!r||!r.rawTileData)return;const n=r.loadVTLayers(),s=i&&i.sourceLayer?i.sourceLayer:"",o=n[t.ai]||n[s];if(!o)return;const a=t.aj(null==i?void 0:i.filter,null==i?void 0:i.globalState),{z:l,x:c,y:h}=this.tileID.canonical,u={z:l,x:c,y:h};for(let d=0;de)t=!1;else if(i)if(this.expirationTime({zoom:0,x:0,y:0,wrap:e,fullyVisible:!1}),v=[],b=[];if(e.renderWorldCopies&&a.allowWorldCopies())for(let t=1;t<=3;t++)v.push(x(-t)),v.push(x(t));for(v.push(x(0));v.length>0;){const p=v.pop(),_=p.x,x=p.y;let w=p.fullyVisible;const T={x:_,y:x,z:p.zoom},S=a.getTileBoundingVolume(T,p.wrap,e.elevation,i);if(!w){const e=we(r,S,n);if(0===e)continue;w=2===e}const P=a.distanceToTile2d(s.x,s.y,T,S);let I=c;l&&(I=(i.calculateTileZoom||Pe)(e.zoom+t.at(e.tileSize/i.tileSize),P,g,y,e.fov)),I=(i.roundZoom?Math.round:Math.floor)(I),I=Math.max(0,I);const M=Math.min(I,u);if(p.wrap=a.getWrap(o,T,p.wrap),p.zoom>=M){if(p.zoom>1),wrap:p.wrap,fullyVisible:w})}return b.sort((e,t)=>e.distanceSq-t.distanceSq).map(e=>e.tileID)}const Ee=t.aa.fromPoints([new t.P(0,0),new t.P(t.a5,t.a5)]);function Ce(e){return"raster"===e||"image"===e||"video"===e}function Ae(e,t,i,r,n,s,o){if(!t.hasData())return!1;const{tileID:a,fadingRole:l,fadingDirection:c,fadingParentID:h}=t;if(l===he.Base&&c===ue.Incoming&&h)return i[h.key]=h,!0;const u=Math.max(a.overscaledZ-n,s);for(let d=a.overscaledZ-1;d>=u;d--){const n=a.scaledTo(d),s=e.getLoadedTile(n);if(s)return t.setCrossFadeLogic({fadingRole:he.Base,fadingDirection:ue.Incoming,fadingParentID:s.tileID,fadeEndTime:r+o}),s.setCrossFadeLogic({fadingRole:he.Parent,fadingDirection:ue.Departing,fadeEndTime:r+o}),i[n.key]=n,!0}return!1}function De(e,t,i,r,n,s){if(!t.hasData())return!1;const o=t.tileID.children(n);let a=ze(e,t,o,i,r,n,s);if(a)return!0;for(const l of o)ze(e,t,l.children(n),i,r,n,s)&&(a=!0);return a}function ze(e,t,i,r,n,s,o){if(i[0].overscaledZ>=s)return!1;let a=!1;for(const l of i){const i=e.getLoadedTile(l);if(!i)continue;const{fadingRole:s,fadingDirection:c,fadingParentID:h}=i;s===he.Base&&c===ue.Departing&&h||(i.setCrossFadeLogic({fadingRole:he.Base,fadingDirection:ue.Departing,fadingParentID:t.tileID,fadeEndTime:n+o}),t.setCrossFadeLogic({fadingRole:he.Parent,fadingDirection:ue.Incoming,fadeEndTime:n+o})),r[l.key]=l,a=!0}return a}function ke(e,t,i,r){const n=e.tileID;return!!e.selfFading||!e.hasData()&&!!t.has(n)&&(e.setSelfFadeLogic(i+r),!0)}function Re(e,t){var i;e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0;let r=t.tileID.canonical.x-e.tileID.canonical.x;const n=t.tileID.canonical.y-e.tileID.canonical.y,s=Math.pow(2,e.tileID.canonical.z),o=t.tileID.key;0===r&&0===n||Math.abs(n)>1||(Math.abs(r)>1&&(1===Math.abs(r+s)?r+=s:1===Math.abs(r-s)&&(r-=s)),t.dem&&e.dem&&(e.dem.backfillBorder(t.dem,r,n),(null===(i=e.neighboringTiles)||void 0===i?void 0:i[o])&&(e.neighboringTiles[o].backfilled=!0)))}class Le{constructor(){this._tiles={}}handleWrapJump(e){const t={};for(const i in this._tiles){const r=this._tiles[i];r.tileID=r.tileID.unwrapTo(r.tileID.wrap+e),t[r.tileID.key]=r}this._tiles=t}setFeatureState(e,t){for(const i in this._tiles)this._tiles[i].setFeatureState(e,t)}getAllTiles(){return Object.values(this._tiles)}getAllIds(e=!1){return e?Object.values(this._tiles).map(e=>e.tileID).sort(t.aw).map(e=>e.key):Object.keys(this._tiles)}getTileById(e){return this._tiles[e]}setTile(e,t){this._tiles[e]=t}deleteTileById(e){delete this._tiles[e]}getLoadedTile(e){const t=this.getTileById(e.key);return(null==t?void 0:t.hasData())?t:null}isIdRenderable(e,t=!1){var i;return null===(i=this.getTileById(e))||void 0===i?void 0:i.isRenderable(t)}getRenderableIds(e=0,i){const r=[];for(const t of this.getAllIds())this.isIdRenderable(t,i)&&r.push(this.getTileById(t));return i?r.sort((i,r)=>{const n=i.tileID,s=r.tileID,o=new t.P(n.canonical.x,n.canonical.y)._rotate(-e),a=new t.P(s.canonical.x,s.canonical.y)._rotate(-e);return n.overscaledZ-s.overscaledZ||a.y-o.y||a.x-o.x}).map(e=>e.tileID.key):r.map(e=>e.tileID).sort(t.aw).map(e=>e.key)}}class Fe extends t.E{constructor(e,i,r){super(),this.id=e,this.dispatcher=r,this.on("data",e=>this._dataHandler(e)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((e,t,i,r)=>{const n=new(se(t.type))(e,t,i,r);if(n.id!==e)throw new Error(`Expected Source id to be ${e} instead of ${n.id}`);return n})(e,i,r,this),this._inViewTiles=new Le,this._outOfViewCache=new t.ax(0,e=>this._unloadTile(e)),this._timers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._rasterFadeDuration=0,this._maxFadingAncestorLevels=5,this._state=new fe,this._didEmitContent=!1,this._updated=!1}onAdd(e){this.map=e,this._maxTileCacheSize=e?e._maxTileCacheSize:null,this._maxTileCacheZoomLevels=e?e._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(e)}onRemove(e){for(const t of this._inViewTiles.getAllTiles())t.unloadVectorData();this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(e),this._inViewTiles=new Le}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;if(!this._source.loaded())return!1;if(!(void 0===this.used&&void 0===this.usedForTerrain||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(const e of this._inViewTiles.getAllTiles())if("loaded"!==e.state&&"errored"!==e.state)return!1;return!0}getSource(){return this._source}getState(){return this._state}pause(){this._paused=!0}resume(){if(!this._paused)return;const e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(e,i,r){return t._(this,void 0,void 0,function*(){try{yield this._source.loadTile(e),this._tileLoaded(e,i,r)}catch(n){e.state="errored",404!==n.status?this._source.fire(new t.k(n,{tile:e})):this.update(this.transform,this.terrain)}})}_unloadTile(e){this._source.unloadTile&&this._source.unloadTile(e)}_abortTile(e){this._source.abortTile&&this._source.abortTile(e),this._source.fire(new t.l("dataabort",{tile:e,coord:e.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(e){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._inViewTiles,this.map?this.map.painter:null);for(const t of this._inViewTiles.getAllTiles())t.upload(e),t.prepare(this.map.style.imageManager)}getIds(){return this._inViewTiles.getAllIds(!0)}getRenderableIds(e){var t;return this._inViewTiles.getRenderableIds(null===(t=this.transform)||void 0===t?void 0:t.bearingInRadians,e)}hasRenderableParent(e){const t=e.overscaledZ-1;if(t>=this._source.minzoom){const i=this.getLoadedTile(e.scaledTo(t));if(i)return this._inViewTiles.isIdRenderable(i.tileID.key)}return!1}reload(e,t=void 0){if(this._paused)this._shouldReloadOnResume=!0;else{this._outOfViewCache.reset();for(const i of this._inViewTiles.getAllIds()){const r=this._inViewTiles.getTileById(i);t&&!this._source.shouldReloadTile(r,t)||(e?this._reloadTile(i,"expired"):"errored"!==r.state&&this._reloadTile(i,"reloading"))}}}_reloadTile(e,i){return t._(this,void 0,void 0,function*(){const t=this._inViewTiles.getTileById(e);t&&("loading"!==t.state&&(t.state=i),yield this._loadTile(t,e,i))})}_tileLoaded(e,i,r){e.timeAdded=c(),e.selfFading&&(e.fadeEndTime=e.timeAdded+this._rasterFadeDuration),"expired"===r&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),"raster-dem"===this.getSource().type&&e.dem&&function(e,t){var i,r;const n=t.getRenderableIds();for(const s of n){if(!e.neighboringTiles||!e.neighboringTiles[s])continue;const n=t.getTileById(s);e.neighboringTiles[s].backfilled||Re(e,n),(null===(r=null===(i=n.neighboringTiles)||void 0===i?void 0:i[e.tileID.key])||void 0===r?void 0:r.backfilled)||Re(n,e)}}(e,this._inViewTiles),this._state.initializeTileState(e,this.map?this.map.painter:null),e.aborted||this._source.fire(new t.l("data",{dataType:"source",tile:e,coord:e.tileID}))}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._inViewTiles.getTileById(e)}_retainLoadedChildren(e,t){const i=this._getLoadedDescendents(t),r=new Set;for(const n of t){const t=i[n.key];if(!(null==t?void 0:t.length)){r.add(n);continue}const s=n.overscaledZ+Fe.maxOverzooming,o=t.filter(e=>e.tileID.overscaledZ<=s);if(!o.length){r.add(n);continue}const a=Math.min(...o.map(e=>e.tileID.overscaledZ)),l=o.filter(e=>e.tileID.overscaledZ===a).map(e=>e.tileID);for(const i of l)e[i.key]=i;this._areDescendentsComplete(l,a,n.overscaledZ)||r.add(n)}return r}_getLoadedDescendents(e){var t;const i={};for(const r of this._inViewTiles.getAllTiles().filter(e=>e.hasData()))for(const n of e)r.tileID.isChildOf(n)&&(i[t=n.key]||(i[t]=[])).push(r);return i}_areDescendentsComplete(e,t,i){return 1===e.length&&e[0].isOverscaled()?e[0].overscaledZ===t:Math.pow(4,t-i)===e.length}getLoadedTile(e){return this._inViewTiles.getLoadedTile(e)}updateCacheSize(e){const i=Math.ceil(e.width/this._source.tileSize)+1,r=Math.ceil(e.height/this._source.tileSize)+1,n=Math.floor(i*r*(null===this._maxTileCacheZoomLevels?t.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),s="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,n):n;this._outOfViewCache.setMaxSize(s)}handleWrapJump(e){const t=Math.round((e-(void 0===this._prevLng?e:this._prevLng))/360);this._prevLng=e,t&&(this._inViewTiles.handleWrapJump(t),this._resetTileReloadTimers())}update(e,i){if(!this._sourceLoaded||this._paused)return;let r;this.transform=e,this.terrain=i,this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this.used||this.usedForTerrain?this._source.tileID?r=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(e=>new t.a2(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)):(r=Me(e,{tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:"vector"===this._source.type&&void 0!==this.map._zoomLevelsToOverscale?e.maxZoom-this.map._zoomLevelsToOverscale:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:i,calculateTileZoom:this._source.calculateTileZoom}),this._source.hasTile&&(r=r.filter(e=>this._source.hasTile(e)))):r=[],this.usedForTerrain&&(r=this._addTerrainIdealTiles(r));const n=0===r.length&&!this._updated&&this._didEmitContent;this._updated=!0,n&&this.fire(new t.l("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));const s=Ie(e,this._source),o=this._updateRetainedTiles(r,s),a=Ce(this._source.type);a&&this._rasterFadeDuration>0&&!i&&function(e,i,r,n,s,o,a){const l=c(),h=t.av(i);for(const t of i){const i=e.getTileById(t.key);i.fadingDirection!==ue.Departing&&0!==i.fadeOpacity||i.resetFadeLogic(),Ae(e,i,r,l,n,s,a)||De(e,i,r,l,o,a)||ke(i,h,l,a)||i.resetFadeLogic()}}(this._inViewTiles,r,o,this._maxFadingAncestorLevels,this._source.minzoom,this._source.maxzoom,this._rasterFadeDuration),a?this._cleanUpRasterTiles(o):this._cleanUpVectorTiles(o)}_cleanUpRasterTiles(e){for(const t of this._inViewTiles.getAllIds())e[t]||this._removeTile(t)}_cleanUpVectorTiles(e){for(const t of this._inViewTiles.getAllIds()){const i=this._inViewTiles.getTileById(t);e[t]?i.clearSymbolFadeHold():i.hasSymbolBuckets?i.holdingForSymbolFade()?i.symbolFadeFinished()&&this._removeTile(t):i.setSymbolHoldDuration(this.map._fadeDuration):this._removeTile(t)}}_addTerrainIdealTiles(e){const t=[];for(const i of e)if(i.canonical.z>this._source.minzoom){const e=i.scaledTo(i.canonical.z-1);t.push(e);const r=i.scaledTo(Math.max(this._source.minzoom,Math.min(i.canonical.z,5)));t.push(r)}return e.concat(t)}releaseSymbolFadeTiles(){for(const e of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(e).holdingForSymbolFade()&&this._removeTile(e)}_updateRetainedTiles(e,t){var i;const r=new Set;for(const l of e)this._addTile(l).hasData()||r.add(l);const n=e.reduce((e,t)=>(e[t.key]=t,e),{}),s=this._retainLoadedChildren(n,r),o={},a=Math.max(t-Fe.maxUnderzooming,this._source.minzoom);for(const l of s){let e=this._inViewTiles.getTileById(l.key),t=null==e?void 0:e.wasRequested();for(let r=l.overscaledZ-1;r>=a;--r){const s=l.scaledTo(r);if(o[s.key])break;if(o[s.key]=!0,e=this.getTile(s),!e&&t&&(e=this._addTile(s)),e){const r=e.hasData();if((r||!(null===(i=this.map)||void 0===i?void 0:i.cancelPendingTileRequestsWhileZooming)||t)&&(n[s.key]=s),t=e.wasRequested(),r)break}}}return n}_addTile(e){let i=this._inViewTiles.getTileById(e.key);if(i)return i;i=this._outOfViewCache.getAndRemove(e),i&&(i.resetFadeLogic(),this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null));const r=i;return i||(i=new pe(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,e.key,i.state)),i.uses++,this._inViewTiles.setTile(e.key,i),r||this._source.fire(new t.l("dataloading",{tile:i,coord:i.tileID,dataType:"source"})),i}_setTileReloadTimer(e,t){this._clearTileReloadTimer(e);const i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout(()=>{this._reloadTile(e,"expired"),delete this._timers[e]},i))}_clearTileReloadTimer(e){const t=this._timers[e];t&&(clearTimeout(t),delete this._timers[e])}_resetTileReloadTimers(){for(const e in this._timers)clearTimeout(this._timers[e]),delete this._timers[e];for(const e of this._inViewTiles.getAllIds()){const t=this._inViewTiles.getTileById(e);this._setTileReloadTimer(e,t)}}refreshTiles(e){for(const t of this._inViewTiles.getAllIds()){const i=this._inViewTiles.getTileById(t);(this._inViewTiles.isIdRenderable(t)||"errored"==i.state)&&e.some(e=>e.equals(i.tileID.canonical))&&this._reloadTile(t,"expired")}}_removeTile(e){const t=this._inViewTiles.getTileById(e);t&&(t.uses--,this._inViewTiles.deleteTileById(e),this._clearTileReloadTimer(e),t.uses>0||(t.hasData()&&"reloading"!==t.state?this._outOfViewCache.add(t.tileID,t,t.getExpiryTimeout()):(t.aborted=!0,this._abortTile(t),this._unloadTile(t))))}_dataHandler(e){"source"===e.dataType&&("metadata"!==e.sourceDataType?"content"===e.sourceDataType&&this._sourceLoaded&&!this._paused&&(this.reload(e.sourceDataChanged,e.shouldReloadTileOptions),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0):this._sourceLoaded=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const e of this._inViewTiles.getAllIds())this._removeTile(e);this._outOfViewCache.reset()}tilesIn(e,i,r){const n=[],s=this.transform;if(!s)return n;const o=s.getCoveringTilesDetailsProvider().allowWorldCopies(),a=r?s.getCameraQueryGeometry(e):e,l=e=>s.screenPointToMercatorCoordinate(e,this.terrain),c=this.transformBbox(e,l,!o),h=this.transformBbox(a,l,!o),u=this.getIds(),d=t.aa.fromPoints(h);for(let p=0;pi.getTilePoint(new t.a9(e.x,e.y)));if(r.expandBy(l),r.intersects(Ee)){const t=c.map(e=>i.getTilePoint(e)),r=h.map(e=>i.getTilePoint(e));n.push({tile:e,tileID:o?i:i.unwrapTo(0),queryGeometry:t,cameraQueryGeometry:r,scale:a})}}}return n}transformBbox(e,i,r){let n=e.map(i);if(r){const r=t.aa.fromPoints(e);r.shrinkBy(.001*Math.min(r.width(),r.height()));const s=r.map(i);t.aa.fromPoints(n).covers(s)||(n=n.map(e=>e.x>.5?new t.a9(e.x-1,e.y,e.z):e))}return n}getVisibleCoordinates(e){const t=this.getRenderableIds(e).map(e=>this._inViewTiles.getTileById(e).tileID);return this.transform&&this.transform.populateCache(t),t}hasTransition(){return!!this._source.hasTransition()||!(!Ce(this._source.type)||!function(e,t){if(t<=0)return!1;const i=c();for(const r of e.getAllTiles())if(r.fadeEndTime>=i)return!0;return!1}(this._inViewTiles,this._rasterFadeDuration))}setRasterFadeDuration(e){this._rasterFadeDuration=e}setFeatureState(e,i,r){this._state.updateState(e=e||t.ai,i,r)}removeFeatureState(e,i,r){this._state.removeFeatureState(e=e||t.ai,i,r)}getFeatureState(e,i){return this._state.getState(e=e||t.ai,i)}setDependencies(e,t,i){const r=this._inViewTiles.getTileById(e);r&&r.setDependencies(t,i)}reloadTilesForDependencies(e,t){for(const i of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(i).hasDependency(e,t)&&this._reloadTile(i,"reloading");this._outOfViewCache.filter(i=>!i.hasDependency(e,t))}areTilesLoaded(){for(const e of this._inViewTiles.getAllTiles())if("loaded"!==e.state&&"errored"!==e.state)return!1;return!0}}Fe.maxUnderzooming=10,Fe.maxOverzooming=3;class Be{constructor(e,t){this.reset(e,t)}reset(e,t){this.points=e||[],this._distances=[0];for(let i=1;i0?(n-o)/a:0;return this.points[s].mult(1-l).add(this.points[i].mult(l))}}function Oe(e,t){let i=!0;return"always"===e||"never"!==e&&"never"!==t||(i=!1),i}class Ve{constructor(e,t,i){const r=this.boxCells=[],n=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let s=0;sthis.width||r<0||t>this.height)return[];const a=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=r){if(n)return[{key:null,x1:e,y1:t,x2:i,y2:r}];for(let e=0;e0}hitTestCircle(e,t,i,r,n){const s=e-i,o=e+i,a=t-i,l=t+i;if(o<0||s>this.width||l<0||a>this.height)return!1;const c=[];return this._forEachCell(s,a,o,l,this._queryCellCircle,c,{hitTest:!0,overlapMode:r,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},n),c.length>0}_queryCell(e,t,i,r,n,s,o,a){const{seenUids:l,hitTest:c,overlapMode:h}=o,u=this.boxCells[n];if(null!==u){const n=this.bboxes;for(const o of u)if(!l.box[o]){l.box[o]=!0;const u=4*o,d=this.boxKeys[o];if(e<=n[u+2]&&t<=n[u+3]&&i>=n[u+0]&&r>=n[u+1]&&(!a||a(d))&&(!c||!Oe(h,d.overlapMode))&&(s.push({key:d,x1:n[u],y1:n[u+1],x2:n[u+2],y2:n[u+3]}),c))return!0}}const d=this.circleCells[n];if(null!==d){const n=this.circles;for(const o of d)if(!l.circle[o]){l.circle[o]=!0;const u=3*o,d=this.circleKeys[o];if(this._circleAndRectCollide(n[u],n[u+1],n[u+2],e,t,i,r)&&(!a||a(d))&&(!c||!Oe(h,d.overlapMode))){const e=n[u],t=n[u+1],i=n[u+2];if(s.push({key:d,x1:e-i,y1:t-i,x2:e+i,y2:t+i}),c)return!0}}}return!1}_queryCellCircle(e,t,i,r,n,s,o,a){const{circle:l,seenUids:c,overlapMode:h}=o,u=this.boxCells[n];if(null!==u){const e=this.bboxes;for(const t of u)if(!c.box[t]){c.box[t]=!0;const i=4*t,r=this.boxKeys[t];if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!a||a(r))&&!Oe(h,r.overlapMode))return s.push(!0),!0}}const d=this.circleCells[n];if(null!==d){const e=this.circles;for(const t of d)if(!c.circle[t]){c.circle[t]=!0;const i=3*t,r=this.circleKeys[t];if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!a||a(r))&&!Oe(h,r.overlapMode))return s.push(!0),!0}}}_forEachCell(e,t,i,r,n,s,o,a){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(r);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++)if(n.call(this,e,t,i,r,this.xCellCount*l+d,s,o,a))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,r,n,s){const o=r-e,a=n-t,l=i+s;return l*l>o*o+a*a}_circleAndRectCollide(e,t,i,r,n,s,o){const a=(s-r)/2,l=Math.abs(e-(r+a));if(l>a+i)return!1;const c=(o-n)/2,h=Math.abs(t-(n+c));if(h>c+i)return!1;if(l<=a||h<=c)return!0;const u=l-a,d=h-c;return u*u+d*d<=i*i}}function je(e,i,n){const s=t.N();if(!e){const{vecSouth:e,vecEast:t}=Ue(i),n=r();n[0]=t[0],n[1]=t[1],n[2]=e[0],n[3]=e[1],o=n,(d=(l=(a=n)[0])*(u=a[3])-(h=a[2])*(c=a[1]))&&(o[0]=u*(d=1/d),o[1]=-c*d,o[2]=-h*d,o[3]=l*d),s[0]=n[0],s[1]=n[1],s[4]=n[2],s[5]=n[3]}var o,a,l,c,h,u,d;return t.Q(s,s,[1/n,1/n,1]),s}function Ne(e,i,r,n){if(e){const e=t.N();if(!i){const{vecSouth:t,vecEast:i}=Ue(r);e[0]=i[0],e[1]=i[1],e[4]=t[0],e[5]=t[1]}return t.Q(e,e,[n,n,1]),e}return r.pixelsToClipSpaceMatrix}function Ue(e){const i=Math.cos(e.rollInRadians),r=Math.sin(e.rollInRadians),n=Math.cos(e.pitchInRadians),s=Math.cos(e.bearingInRadians),o=Math.sin(e.bearingInRadians),a=t.aC();a[0]=-s*n*r-o*i,a[1]=-o*n*r+s*i;const l=t.aD(a);l<1e-9?t.aE(a):t.aF(a,a,1/l);const c=t.aC();c[0]=s*n*i-o*r,c[1]=o*n*i+s*r;const h=t.aD(c);return h<1e-9?t.aE(c):t.aF(c,c,1/h),{vecEast:c,vecSouth:a}}function Ge(e,i,r,n){let s;n?(s=[e,i,n(e,i),1],t.aH(s,s,r)):(s=[e,i,0,1],ot(s,s,r));const o=s[3];return{point:new t.P(s[0]/o,s[1]/o),signedDistanceFromCamera:o,isOccluded:!1}}function qe(e,t){return.5+e/t*.5}function Ze(e,t){return e.x>=-t[0]&&e.x<=t[0]&&e.y>=-t[1]&&e.y<=t[1]}function $e(e,i,r,n,s,o,a,l,c,h,u,d,p){const f=r?e.textSizeData:e.iconSizeData,m=t.ay(f,i.transform.zoom),_=[256/i.width*2+1,256/i.height*2+1],g=r?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;g.clear();const y=e.lineVertexArray,x=r?e.text.placedSymbolArray:e.icon.placedSymbolArray,v=i.transform.width/i.transform.height;let b=!1;for(let w=0;wMath.abs(r.x-i.x)*n?{useVertical:!0}:(e===t.az.vertical?i.yr.x)?{needsFlipping:!0}:null}function Xe(e){const{projectionContext:i,pitchedLabelPlaneMatrixInverse:r,symbol:n,fontSize:s,flip:o,keepUpright:a,glyphOffsetArray:l,dynamicLayoutVertexArray:c,aspectRatio:h,rotateToLine:u}=e,d=s/24,p=n.lineOffsetX*d,f=n.lineOffsetY*d;let m;if(n.numGlyphs>1){const e=n.glyphStartIndex+n.numGlyphs,t=n.lineStartIndex,s=n.lineStartIndex+n.lineLength,c=We(d,l,p,f,o,n,u,i);if(!c)return{notEnoughRoom:!0};const _=Qe(c.first.point.x,c.first.point.y,i,r),g=Qe(c.last.point.x,c.last.point.y,i,r);if(a&&!o){const e=He(n.writingMode,_,g,h);if(e)return e}m=[c.first];for(let r=n.glyphStartIndex+1;r0?a.point:Ye(i.tileAnchorPoint,o,e,1,i),c=Qe(e.x,e.y,i,r),u=Qe(l.x,l.y,i,r),d=He(n.writingMode,c,u,h);if(d)return d}const e=rt(d*l.getoffsetX(n.glyphStartIndex),p,f,o,n.segment,n.lineStartIndex,n.lineStartIndex+n.lineLength,i,u);if(!e||i.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};m=[e]}for(const _ of m)t.aG(c,_.point,_.angle);return{}}function Ye(e,t,i,r,n){const s=e.add(e.sub(t)._unit()),o=Je(s.x,s.y,n).point,a=i.sub(o);return i.add(a._mult(r/a.mag()))}function Ke(e,i,r){const n=i.projectionCache;if(n.projections[e])return n.projections[e];const s=new t.P(i.lineVertexArray.getx(e),i.lineVertexArray.gety(e)),o=Je(s.x,s.y,i);if(o.signedDistanceFromCamera>0)return n.projections[e]=o.point,n.anyProjectionOccluded=n.anyProjectionOccluded||o.isOccluded,o.point;const a=e-r.direction;return Ye(0===r.distanceFromAnchor?i.tileAnchorPoint:new t.P(i.lineVertexArray.getx(a),i.lineVertexArray.gety(a)),s,r.previousVertex,r.absOffsetX-r.distanceFromAnchor+1,i)}function Je(e,t,i){const r=e+i.translation[0],n=t+i.translation[1];let s;return i.pitchWithMap?(s=Ge(r,n,i.pitchedLabelPlaneMatrix,i.getElevation),s.isOccluded=!1):(s=i.transform.projectTileCoordinates(r,n,i.unwrappedTileID,i.getElevation),s.point.x=(.5*s.point.x+.5)*i.width,s.point.y=(.5*-s.point.y+.5)*i.height),s}function Qe(e,i,r,n){if(r.pitchWithMap){const s=[e,i,0,1];return t.aH(s,s,n),r.transform.projectTileCoordinates(s[0]/s[3],s[1]/s[3],r.unwrappedTileID,r.getElevation).point}return{x:e/r.width*2-1,y:1-i/r.height*2}}function et(e,t,i){return i.transform.projectTileCoordinates(e,t,i.unwrappedTileID,i.getElevation)}function tt(e,t,i){return e._unit()._perp()._mult(t*i)}function it(e,i,r,n,s,o,a,l,c){if(l.projectionCache.offsets[e])return l.projectionCache.offsets[e];const h=r.add(i);if(e+c.direction=s)return l.projectionCache.offsets[e]=h,h;const u=Ke(e+c.direction,l,c),d=tt(u.sub(r),a,c.direction),p=r.add(d),f=u.add(d);return l.projectionCache.offsets[e]=t.aI(o,h,p,f)||h,l.projectionCache.offsets[e]}function rt(e,t,i,r,n,s,o,a,l){const c=r?e-t:e+t;let h=c>0?1:-1,u=0;r&&(h*=-1,u=Math.PI),h<0&&(u+=Math.PI);let d,p=h>0?s+n:s+n+1;a.projectionCache.cachedAnchorPoint?d=a.projectionCache.cachedAnchorPoint:(d=Je(a.tileAnchorPoint.x,a.tileAnchorPoint.y,a).point,a.projectionCache.cachedAnchorPoint=d);let f,m,_=d,g=d,y=0,x=0;const v=Math.abs(c),b=[];let w;for(;y+x<=v;){if(p+=h,p=o)return null;y+=x,g=_,m=f;const e={absOffsetX:v,direction:h,distanceFromAnchor:y,previousVertex:g};if(_=Ke(p,a,e),0===i)b.push(g),w=_.sub(g);else{let t;const r=_.sub(g);t=0===r.mag()?tt(Ke(p+h,a,e).sub(_),i,h):tt(r,i,h),m||(m=g.add(t)),f=it(p,t,_,s,o,m,i,a,e),b.push(m),w=f.sub(m)}x=w.mag()}const T=w._mult((v-y)/x)._add(m||g),S=u+Math.atan2(_.y-g.y,_.x-g.x);return b.push(T),{point:T,angle:l?S:0,path:b}}const nt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function st(e,t){for(let i=0;i=1;e--)p.push(o.path[e]);for(let e=1;ee.signedDistanceFromCamera<=0)?[]:e.map(e=>e.point)}let _=[];if(p.length>0){const e=p[0].clone(),i=p[0].clone();for(let t=1;t=r.x&&i.x<=n.x&&e.y>=r.y&&i.y<=n.y?[p]:i.xn.x||i.yn.y?[]:t.aJ([p],r.x,r.y,n.x,n.y)}for(const t of _){s.reset(t,.25*i);let r=0;r=s.length<=.5*i?1:Math.ceil(s.paddedLength/f)+1;for(let t=0;ti&&(i=n,t=r));return e.slice(t,t+i)}(function(e,i){const r=t.N();return t.aB(r,i.pitchedLabelPlaneMatrix),e.map(e=>{const t=Ge(e.x,e.y,r,i.getElevation),n=i.transform.projectTileCoordinates(t.point.x,t.point.y,i.unwrappedTileID,i.getElevation);return n.point.x=(.5*n.point.x+.5)*i.width,n.point.y=(.5*-n.point.y+.5)*i.height,n})}(e,i))}queryRenderedSymbols(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return{};const i=[],r=new t.aa;for(const u of e){const e=new t.P(u.x+at,u.y+at);r.extend(e),i.push(e)}const{minX:n,minY:s,maxX:o,maxY:a}=r,l=this.grid.query(n,s,o,a).concat(this.ignoredGrid.query(n,s,o,a)),c={},h={};for(const u of l){const e=u.key;if(void 0===c[e.bucketInstanceId]&&(c[e.bucketInstanceId]={}),c[e.bucketInstanceId][e.featureIndex])continue;const r=[new t.P(u.x1,u.y1),new t.P(u.x2,u.y1),new t.P(u.x2,u.y2),new t.P(u.x1,u.y2)];t.aK(i,r)&&(c[e.bucketInstanceId][e.featureIndex]=!0,void 0===h[e.bucketInstanceId]&&(h[e.bucketInstanceId]=[]),h[e.bucketInstanceId].push(e.featureIndex))}return h}insertCollisionBox(e,t,i,r,n,s){(i?this.ignoredGrid:this.grid).insert({bucketInstanceId:r,featureIndex:n,collisionGroupID:s,overlapMode:t},e[0],e[1],e[2],e[3])}insertCollisionCircles(e,t,i,r,n,s){const o=i?this.ignoredGrid:this.grid,a={bucketInstanceId:r,featureIndex:n,collisionGroupID:s,overlapMode:t};for(let l=0;l=this.screenRightBoundary||rthis.screenBottomBoundary}isInsideGrid(e,t,i,r){return i>=0&&e=0&&tthis.projectAndGetPerspectiveRatio(e.x,e.y,n,c,u));C=e.some(e=>!e.isOccluded),E=e.map(e=>new t.P(e.x,e.y))}else C=!0;return{box:t.aL(E),allPointsOccluded:!C}}}class ct{constructor(e,t,i,r){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):r&&i?1:0,this.placed=i}isHidden(){return 0===this.opacity&&!this.placed}}class ht{constructor(e,t,i,r,n){this.text=new ct(e?e.text:null,t,i,n),this.icon=new ct(e?e.icon:null,t,r,n)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class ut{constructor(e,t,i){this.text=e,this.icon=t,this.skipFade=i}}class dt{constructor(e,t,i,r,n){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=i,this.bucketIndex=r,this.tileID=n}}class pt{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={}}get(e){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[e]){const t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t}}return this.collisionGroups[e]}}function ft(e,i,r,n,s){const{horizontalAlign:o,verticalAlign:a}=t.aS(e);return new t.P(-(o-.5)*i+n[0]*s,-(a-.5)*r+n[1]*s)}class mt{constructor(e,t,i,r,n){this.transform=e.clone(),this.terrain=t,this.collisionIndex=new lt(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=i,this.retainedQueryData={},this.collisionGroups=new pt(r),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=n,n&&(n.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(e){const t=this.terrain;return t?(i,r)=>t.getElevation(e,i,r):null}getBucketParts(e,i,r,n){const s=r.getBucket(i),o=r.latestFeatureIndex;if(!s||!o||i.id!==s.layerIds[0])return;const a=r.collisionBoxArray,l=s.layers[0].layout,c=s.layers[0].paint,h=Math.pow(2,this.transform.zoom-r.tileID.overscaledZ),u=r.tileSize/t.a5,d=r.tileID.toUnwrapped(),p="map"===l.get("text-rotation-alignment"),f=t.aN(r,1,this.transform.zoom),m=t.aO(this.collisionIndex.transform,r,c.get("text-translate"),c.get("text-translate-anchor")),_=t.aO(this.collisionIndex.transform,r,c.get("icon-translate"),c.get("icon-translate-anchor")),g=je(p,this.transform,f);this.retainedQueryData[s.bucketInstanceId]=new dt(s.bucketInstanceId,o,s.sourceLayerIndex,s.index,r.tileID);const y={bucket:s,layout:l,translationText:m,translationIcon:_,unwrappedTileID:d,pitchedLabelPlaneMatrix:g,scale:h,textPixelRatio:u,holdingForFade:r.holdingForSymbolFade(),collisionBoxArray:a,partiallyEvaluatedTextSize:t.ay(s.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(s.sourceID)};if(n)for(const t of s.sortKeyRanges){const{sortKey:i,symbolInstanceStart:r,symbolInstanceEnd:n}=t;e.push({sortKey:i,symbolInstanceStart:r,symbolInstanceEnd:n,parameters:y})}else e.push({symbolInstanceStart:0,symbolInstanceEnd:s.symbolInstances.length,parameters:y})}attemptAnchorPlacement(e,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v){const b=t.aP[e.textAnchor],w=[e.textOffset0,e.textOffset1],T=ft(b,r,n,w,s),S=this.collisionIndex.placeCollisionBox(i,d,l,c,h,a,o,_,u.predicate,x,T,v);if((!y||this.collisionIndex.placeCollisionBox(y,d,l,c,h,a,o,g,u.predicate,x,T,v).placeable)&&S.placeable){let e;if(this.prevPlacement&&this.prevPlacement.variableOffsets[p.crossTileID]&&this.prevPlacement.placements[p.crossTileID]&&this.prevPlacement.placements[p.crossTileID].text&&(e=this.prevPlacement.variableOffsets[p.crossTileID].anchor),0===p.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[p.crossTileID]={textOffset:w,width:r,height:n,anchor:b,textBoxScale:s,prevAnchor:e},this.markUsedJustification(f,b,p,m),f.allowVerticalPlacement&&(this.markUsedOrientation(f,m,p),this.placedOrientations[p.crossTileID]=m),{shift:T,placedGlyphBoxes:S}}}placeLayerBucketPart(e,i,r){const{bucket:n,layout:s,translationText:o,translationIcon:a,unwrappedTileID:l,pitchedLabelPlaneMatrix:c,textPixelRatio:h,holdingForFade:u,collisionBoxArray:d,partiallyEvaluatedTextSize:p,collisionGroup:f}=e.parameters,m=s.get("text-optional"),_=s.get("icon-optional"),g=t.aQ(s,"text-overlap","text-allow-overlap"),y="always"===g,x=t.aQ(s,"icon-overlap","icon-allow-overlap"),v="always"===x,b="map"===s.get("text-rotation-alignment"),w="map"===s.get("text-pitch-alignment"),T="none"!==s.get("icon-text-fit"),S="viewport-y"===s.get("symbol-z-order"),P=y&&(v||!n.hasIconData()||_),I=v&&(y||!n.hasTextData()||m);!n.collisionArrays&&d&&n.deserializeCollisionBoxes(d);const M=this.retainedQueryData[n.bucketInstanceId].tileID,E=this._getTerrainElevationFunc(M),C=this.transform.getFastPathSimpleProjectionMatrix(M),A=(e,d,v)=>{var S,A;if(i[e.crossTileID])return;if(u)return void(this.placements[e.crossTileID]=new ut(!1,!1,!1));let D=!1,z=!1,k=!0,R=null,L={box:null,placeable:!1,offscreen:null,occluded:!1},F={placeable:!1},B=null,O=null,V=null,j=0,N=0,U=0;d.textFeatureIndex?j=d.textFeatureIndex:e.useRuntimeCollisionCircles&&(j=e.featureIndex),d.verticalTextFeatureIndex&&(N=d.verticalTextFeatureIndex);const G=d.textBox;if(G){const i=i=>{let r=t.az.horizontal;if(n.allowVerticalPlacement&&!i&&this.prevPlacement){const t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,r=t,this.markUsedOrientation(n,r,e))}return r},s=(i,r)=>{if(n.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&d.verticalTextBox){for(const e of n.writingModes)if(e===t.az.vertical?(L=r(),F=L):L=i(),L&&L.placeable)break}else L=i()},c=e.textAnchorOffsetStartIndex,u=e.textAnchorOffsetEndIndex;if(u===c){const r=(t,i)=>{const r=this.collisionIndex.placeCollisionBox(t,g,h,M,l,w,b,o,f.predicate,E,void 0,C);return r&&r.placeable&&(this.markUsedOrientation(n,i,e),this.placedOrientations[e.crossTileID]=i),r};s(()=>r(G,t.az.horizontal),()=>{const i=d.verticalTextBox;return n.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?r(i,t.az.vertical):{box:null,offscreen:null}}),i(L&&L.placeable)}else{let p=t.aP[null===(A=null===(S=this.prevPlacement)||void 0===S?void 0:S.variableOffsets[e.crossTileID])||void 0===A?void 0:A.anchor];const m=(t,i,s)=>{const d=t.x2-t.x1,m=t.y2-t.y1,_=e.textBoxScale,y=T&&"never"===x?i:null;let v=null,S="never"===g?1:2,P="never";p&&S++;for(let r=0;rm(G,d.iconBox,t.az.horizontal),()=>{const i=d.verticalTextBox;return n.allowVerticalPlacement&&(!L||!L.placeable)&&e.numVerticalGlyphVertices>0&&i?m(i,d.verticalIconBox,t.az.vertical):{box:null,occluded:!0,offscreen:null}}),L&&(D=L.placeable,k=L.offscreen);const _=i(L&&L.placeable);if(!D&&this.prevPlacement){const t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(n,t.anchor,e,_))}}}if(B=L,D=B&&B.placeable,k=B&&B.offscreen,e.useRuntimeCollisionCircles&&e.centerJustifiedTextSymbolIndex>=0){const i=n.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),a=t.aA(n.textSizeData,p,i),h=s.get("text-padding");O=this.collisionIndex.placeCollisionCircles(g,i,n.lineVertexArray,n.glyphOffsetArray,a,l,c,r,w,f.predicate,e.collisionCircleDiameter,h,o,E),O.circles.length&&O.collisionDetected&&!r&&t.w("Collisions detected, but collision boxes are not shown"),D=y||O.circles.length>0&&!O.collisionDetected,k=k&&O.offscreen}if(d.iconFeatureIndex&&(U=d.iconFeatureIndex),d.iconBox){const e=e=>this.collisionIndex.placeCollisionBox(e,x,h,M,l,w,b,a,f.predicate,E,T&&R?R:void 0,C);F&&F.placeable&&d.verticalIconBox?(V=e(d.verticalIconBox),z=V.placeable):(V=e(d.iconBox),z=V.placeable),k=k&&V.offscreen}const q=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,Z=_||0===e.numIconVertices;q||Z?Z?q||(z=z&&D):D=z&&D:z=D=z&&D;const $=z&&V.placeable;if(D&&B.placeable&&this.collisionIndex.insertCollisionBox(B.box,g,s.get("text-ignore-placement"),n.bucketInstanceId,F&&F.placeable&&N?N:j,f.ID),$&&this.collisionIndex.insertCollisionBox(V.box,x,s.get("icon-ignore-placement"),n.bucketInstanceId,U,f.ID),O&&D&&this.collisionIndex.insertCollisionCircles(O.circles,g,s.get("text-ignore-placement"),n.bucketInstanceId,j,f.ID),r&&this.storeCollisionData(n.bucketInstanceId,v,d,B,V,O),0===e.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");if(0===n.bucketInstanceId)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[e.crossTileID]=new ut((D||P)&&!(null==B?void 0:B.occluded),(z||I)&&!(null==V?void 0:V.occluded),k||n.justReloaded),i[e.crossTileID]=!0};if(S){if(0!==e.symbolInstanceStart)throw new Error("bucket.bucketInstanceId should be 0");const t=n.getSortedSymbolIndexes(-this.transform.bearingInRadians);for(let e=t.length-1;e>=0;--e){const i=t[e];A(n.symbolInstances.get(i),n.collisionArrays[i],i)}}else for(let t=e.symbolInstanceStart;t=0&&(e.text.placedSymbolArray.get(t).crossTileID=s>=0&&t!==s?0:r.crossTileID)}markUsedOrientation(e,i,r){const n=i===t.az.horizontal||i===t.az.horizontalOnly?i:0,s=i===t.az.vertical?i:0,o=[r.leftJustifiedTextSymbolIndex,r.centerJustifiedTextSymbolIndex,r.rightJustifiedTextSymbolIndex];for(const t of o)e.text.placedSymbolArray.get(t).placedOrientation=n;r.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(r.verticalPlacedTextSymbolIndex).placedOrientation=s)}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const r=t?t.symbolFadeChange(e):1,n=t?t.opacities:{},s=t?t.variableOffsets:{},o=t?t.placedOrientations:{};for(const a in this.placements){const e=this.placements[a],t=n[a];t?(this.opacities[a]=new ht(t,r,e.text,e.icon),i=i||e.text!==t.text.placed||e.icon!==t.icon.placed):(this.opacities[a]=new ht(null,r,e.text,e.icon,e.skipFade),i=i||e.text||e.icon)}for(const a in n){const e=n[a];if(!this.opacities[a]){const t=new ht(e,r,!1,!1);t.isHidden()||(this.opacities[a]=t,i=i||e.text.placed||e.icon.placed)}}for(const a in s)this.variableOffsets[a]||!this.opacities[a]||this.opacities[a].isHidden()||(this.variableOffsets[a]=s[a]);for(const a in o)this.placedOrientations[a]||!this.opacities[a]||this.opacities[a].isHidden()||(this.placedOrientations[a]=o[a]);if(t&&void 0===t.lastPlacementChangeTime)throw new Error("Last placement time for previous placement is not defined");i?this.lastPlacementChangeTime=e:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e)}updateLayerOpacities(e,t){const i={};for(const r of t){const t=r.getBucket(e);t&&r.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,r.tileID,i,r.collisionBoxArray)}}updateBucketOpacities(e,i,r,n){e.hasTextData()&&(e.text.opacityVertexArray.clear(),e.text.hasVisibleVertices=!1),e.hasIconData()&&(e.icon.opacityVertexArray.clear(),e.icon.hasVisibleVertices=!1),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();const s=e.layers[0],o=s.layout,a=new ht(null,0,!1,!1,!0),l=o.get("text-allow-overlap"),c=o.get("icon-allow-overlap"),h=s._unevaluatedLayout.hasValue("text-variable-anchor")||s._unevaluatedLayout.hasValue("text-variable-anchor-offset"),u="map"===o.get("text-rotation-alignment"),d="map"===o.get("text-pitch-alignment"),p="none"!==o.get("icon-text-fit"),f=new ht(null,0,l&&(c||!e.hasIconData()||o.get("icon-optional")),c&&(l||!e.hasTextData()||o.get("text-optional")),!0);!e.collisionArrays&&n&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(n);const m=(e,t,i)=>{for(let r=0;r0,y=this.placedOrientations[i.crossTileID],x=y===t.az.vertical,v=y===t.az.horizontal||y===t.az.horizontalOnly;if(n>0||s>0){const t=St(l.text);m(e.text,n,x?Pt:t),m(e.text,s,v?Pt:t);const r=l.text.isHidden();[i.rightJustifiedTextSymbolIndex,i.centerJustifiedTextSymbolIndex,i.leftJustifiedTextSymbolIndex].forEach(t=>{t>=0&&(e.text.placedSymbolArray.get(t).hidden=r||x?1:0)}),i.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(i.verticalPlacedTextSymbolIndex).hidden=r||v?1:0);const o=this.variableOffsets[i.crossTileID];o&&this.markUsedJustification(e,o.anchor,i,y);const a=this.placedOrientations[i.crossTileID];a&&(this.markUsedJustification(e,"left",i,a),this.markUsedOrientation(e,a,i))}if(c){const t=St(l.icon),r=!(p&&i.verticalPlacedIconSymbolIndex&&x);i.placedIconSymbolIndex>=0&&(m(e.icon,i.numIconVertices,r?t:Pt),e.icon.placedSymbolArray.get(i.placedIconSymbolIndex).hidden=l.icon.isHidden()),i.verticalPlacedIconSymbolIndex>=0&&(m(e.icon,i.numVerticalIconVertices,r?Pt:t),e.icon.placedSymbolArray.get(i.verticalPlacedIconSymbolIndex).hidden=l.icon.isHidden())}const b=_&&_.has(g)?_.get(g):{text:null,icon:null};if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){const i=e.collisionArrays[g];if(i){let r=new t.P(0,0);if(i.textBox||i.verticalTextBox){let t=!0;if(h){const e=this.variableOffsets[o];e?(r=ft(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),u&&r._rotate(d?-this.transform.bearingInRadians:this.transform.bearingInRadians)):t=!1}if(i.textBox||i.verticalTextBox){let n;i.textBox&&(n=x),i.verticalTextBox&&(n=v),_t(e.textCollisionBox.collisionVertexArray,l.text.placed,!t||n,b.text,r.x,r.y)}}if(i.iconBox||i.verticalIconBox){const t=Boolean(!v&&i.verticalIconBox);let n;i.iconBox&&(n=t),i.verticalIconBox&&(n=!t),_t(e.iconCollisionBox.collisionVertexArray,l.icon.placed,n,b.icon,p?r.x:0,p?r.y:0)}}}}if(e.sortFeatures(-this.transform.bearingInRadians),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.text.opacityVertexArray.length!==e.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${e.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${e.text.layoutVertexArray.length}) / 4`);if(e.icon.opacityVertexArray.length!==e.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${e.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${e.icon.layoutVertexArray.length}) / 4`);e.bucketInstanceId in this.collisionCircleArrays&&(e.collisionCircleArray=this.collisionCircleArrays[e.bucketInstanceId],delete this.collisionCircleArrays[e.bucketInstanceId])}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTimee}setStale(){this.stale=!0}}function _t(e,t,i,r,n,s){r&&0!==r.length||(r=[0,0,0,0]);const o=r[0]-at,a=r[1]-at,l=r[2]-at,c=r[3]-at;e.emplaceBack(t?1:0,i?1:0,n||0,s||0,o,a),e.emplaceBack(t?1:0,i?1:0,n||0,s||0,l,a),e.emplaceBack(t?1:0,i?1:0,n||0,s||0,l,c),e.emplaceBack(t?1:0,i?1:0,n||0,s||0,o,c)}const gt=Math.pow(2,25),yt=Math.pow(2,24),xt=Math.pow(2,17),vt=Math.pow(2,16),bt=Math.pow(2,9),wt=Math.pow(2,8),Tt=Math.pow(2,1);function St(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*gt+t*yt+i*xt+t*vt+i*bt+t*wt+i*Tt+t}const Pt=0;class It{constructor(e){this._sortAcrossTiles="viewport-y"!==e.layout.get("symbol-z-order")&&!e.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(e,t,i,r,n){const s=this._bucketParts;for(;this._currentTileIndexe.sortKey-t.sortKey));this._currentPartIndex!this._forceFullPlacement&&c()-r>2;for(;this._currentPlacementIndex>=0;){const r=t[e[this._currentPlacementIndex]],s=this.placement.collisionIndex.transform.zoom;if("symbol"===r.type&&(!r.minzoom||r.minzoom<=s)&&(!r.maxzoom||r.maxzoom>s)){if(this._inProgressLayer||(this._inProgressLayer=new It(r)),this._inProgressLayer.continuePlacement(i[r.source],this.placement,this._showCollisionBoxes,r,n))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(e){return this.placement.commit(e),this.placement}}const Et=512/t.a5/2;class Ct{constructor(e,i,r){this.tileID=e,this.bucketInstanceId=r,this._symbolsByKey={};const n=new Map;for(let t=0;t({x:Math.floor(e.anchorX*Et),y:Math.floor(e.anchorY*Et)})),crossTileIDs:o.map(e=>e.crossTileID)};if(e.positions.length>128){const i=new t.aT(e.positions.length,16,Uint16Array);for(const{x:t,y:r}of e.positions)i.add(t,r);i.finish(),delete e.positions,e.index=i}this._symbolsByKey[s]=e}}getScaledCoordinates(e,i){const{x:r,y:n,z:s}=this.tileID.canonical,{x:o,y:a,z:l}=i.canonical,c=Et/Math.pow(2,l-s),h=(a*t.a5+e.anchorY)*c,u=n*t.a5*Et;return{x:Math.floor((o*t.a5+e.anchorX)*c-r*t.a5*Et),y:Math.floor(h-u)}}findMatches(e,t,i){const r=this.tileID.canonical.ze)}}class At{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class Dt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(const i in this.indexes){const e=this.indexes[i],r={};for(const i in e){const n=e[i];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+t),r[n.tileID.key]=n}this.indexes[i]=r}this.lng=e}addBucket(e,t,i){if(this.indexes[e.overscaledZ]&&this.indexes[e.overscaledZ][e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key])}for(let n=0;ne.overscaledZ)for(const n in i){const s=i[n];s.tileID.isChildOf(e)&&s.findMatches(t.symbolInstances,e,r)}else{const s=i[e.scaledTo(Number(n)).key];s&&s.findMatches(t.symbolInstances,e,r)}}for(let n=0;n{t[e]=!0});for(const i in this.layerIndexes)t[i]||delete this.layerIndexes[i]}}var kt="void main() {fragColor=vec4(1.0);}";const Rt={prelude:Lt("#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nout highp vec4 fragColor;","#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}mat3 rotationMatrixFromAxisAngle(vec3 u,float angle) {float c=cos(angle);float s=sin(angle);float c2=1.0-c;return mat3(u.x*u.x*c2+ c,u.x*u.y*c2-u.z*s,u.x*u.z*c2+u.y*s,u.y*u.x*c2+u.z*s,u.y*u.y*c2+ c,u.y*u.z*c2-u.x*s,u.z*u.x*c2-u.y*s,u.z*u.y*c2+u.x*s,u.z*u.z*c2+ c\n);}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\n#ifdef GLOBE\nif ((pos.y <-32767.5) || (pos.y > 32766.5)) {return 0.0;}\n#endif\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}const float PI=3.141592653589793;uniform mat4 u_projection_matrix;"),projectionMercator:Lt("","float projectLineThickness(float tileY) {return 1.0;}float projectCircleRadius(float tileY) {return 1.0;}vec4 projectTile(vec2 p) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);return result;}vec4 projectTile(vec2 p,vec2 rawPos) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);if (rawPos.y <-32767.5 || rawPos.y > 32766.5) {result.z=-10000000.0;}return result;}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_projection_matrix*vec4(posInTile,elevation,1.0);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {return projectTileWithElevation(posInTile,elevation);}"),projectionGlobe:Lt("","#define GLOBE_RADIUS 6371008.8\nuniform highp vec4 u_projection_tile_mercator_coords;uniform highp vec4 u_projection_clipping_plane;uniform highp float u_projection_transition;uniform mat4 u_projection_fallback_matrix;vec3 globeRotateVector(vec3 vec,vec2 angles) {vec3 axisRight=vec3(vec.z,0.0,-vec.x);vec3 axisUp=cross(axisRight,vec);axisRight=normalize(axisRight);axisUp=normalize(axisUp);vec2 t=tan(angles);return normalize(vec+axisRight*t.x+axisUp*t.y);}mat3 globeGetRotationMatrix(vec3 spherePos) {vec3 axisRight=vec3(spherePos.z,0.0,-spherePos.x);vec3 axisDown=cross(axisRight,spherePos);axisRight=normalize(axisRight);axisDown=normalize(axisDown);return mat3(axisRight,axisDown,spherePos\n);}float circumferenceRatioAtTileY(float tileY) {float mercator_pos_y=u_projection_tile_mercator_coords.y+u_projection_tile_mercator_coords.w*tileY;float spherical_y=2.0*atan(exp(PI-(mercator_pos_y*PI*2.0)))-PI*0.5;return cos(spherical_y);}float projectLineThickness(float tileY) {float thickness=1.0/circumferenceRatioAtTileY(tileY); \nif (u_projection_transition < 0.999) {return mix(1.0,thickness,u_projection_transition);} else {return thickness;}}vec3 projectToSphere(vec2 translatedPos,vec2 rawPos) {vec2 mercator_pos=u_projection_tile_mercator_coords.xy+u_projection_tile_mercator_coords.zw*translatedPos;vec2 spherical;spherical.x=mercator_pos.x*PI*2.0+PI;spherical.y=2.0*atan(exp(PI-(mercator_pos.y*PI*2.0)))-PI*0.5;float len=cos(spherical.y);vec3 pos=vec3(sin(spherical.x)*len,sin(spherical.y),cos(spherical.x)*len\n);if (rawPos.y <-32767.5) {pos=vec3(0.0,1.0,0.0);}if (rawPos.y > 32766.5) {pos=vec3(0.0,-1.0,0.0);}return pos;}vec3 projectToSphere(vec2 posInTile) {return projectToSphere(posInTile,vec2(0.0,0.0));}float globeComputeClippingZ(vec3 spherePos) {return (1.0-(dot(spherePos,u_projection_clipping_plane.xyz)+u_projection_clipping_plane.w));}vec4 interpolateProjection(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);globePosition.z=globeComputeClippingZ(elevatedPos)*globePosition.w;if (u_projection_transition > 0.999) {return globePosition;}vec4 flatPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);const float z_globeness_threshold=0.2;vec4 result=globePosition;result.z=mix(0.0,globePosition.z,clamp((u_projection_transition-z_globeness_threshold)/(1.0-z_globeness_threshold),0.0,1.0));result.xyw=mix(flatPosition.xyw,globePosition.xyw,u_projection_transition);if ((posInTile.y <-32767.5) || (posInTile.y > 32766.5)) {result=globePosition;const float poles_hidden_anim_percentage=0.02;result.z=mix(globePosition.z,100.0,pow(max((1.0-u_projection_transition)/poles_hidden_anim_percentage,0.0),8.0));}return result;}vec4 interpolateProjectionFor3D(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);if (u_projection_transition > 0.999) {return globePosition;}vec4 fallbackPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);return mix(fallbackPosition,globePosition,u_projection_transition);}vec4 projectTile(vec2 posInTile) {return interpolateProjection(posInTile,projectToSphere(posInTile),0.0);}vec4 projectTile(vec2 posInTile,vec2 rawPos) {return interpolateProjection(posInTile,projectToSphere(posInTile,rawPos),0.0);}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return interpolateProjection(posInTile,projectToSphere(posInTile),elevation);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {vec3 spherePos=projectToSphere(posInTile,posInTile);return interpolateProjectionFor3D(posInTile,spherePos,elevation);}"),background:Lt("uniform vec4 u_color;uniform float u_opacity;void main() {fragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),backgroundPattern:Lt("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;in vec2 v_pos_a;in 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=texture(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=texture(u_image,pos2);fragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","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;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;void main() {gl_Position=projectTile(a_pos);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:Lt("in vec3 v_data;in float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));fragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);const float epsilon=0.5/255.0;if (fragColor.r < epsilon && fragColor.g < epsilon && fragColor.b < epsilon && fragColor.a < epsilon) {discard;}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform highp float u_globe_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;uniform vec2 u_translate;in vec2 a_pos;out vec3 v_data;out float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 pos_raw=a_pos+32768.0;vec2 extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);vec2 circle_center=floor(pos_raw/8.0)+u_translate;float ele=get_elevation(circle_center);v_visibility=calculate_visibility(projectTileWithElevation(circle_center,ele));if (u_pitch_with_map) {\n#ifdef GLOBE\nvec3 center_vector=projectToSphere(circle_center);\n#endif\nfloat angle_scale=u_globe_extrude_scale;vec2 corner_position=circle_center;if (u_scale_with_map) {angle_scale*=(radius+stroke_width);corner_position+=extrude*u_extrude_scale*(radius+stroke_width);} else {\n#ifdef GLOBE\nvec4 projected_center=interpolateProjection(circle_center,center_vector,ele);\n#else\nvec4 projected_center=projectTileWithElevation(circle_center,ele);\n#endif\ncorner_position+=extrude*u_extrude_scale*(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);angle_scale*=(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);}\n#ifdef GLOBE\nvec2 angles=extrude*angle_scale;vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(corner_position,corner_vector,ele);\n#else\ngl_Position=projectTileWithElevation(corner_position,ele);\n#endif\n} else {gl_Position=projectTileWithElevation(circle_center,ele);if (gl_Position.z/gl_Position.w > 1.0) {gl_Position.xy=vec2(10000.0);}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;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}"),clippingMask:Lt(kt,"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),heatmap:Lt("uniform highp float u_intensity;in vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);fragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;uniform highp float u_globe_extrude_scale;in vec2 a_pos;out vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 pos_raw=a_pos+32768.0;vec2 unscaled_extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 circle_center=floor(pos_raw/8.0);\n#ifdef GLOBE\nvec2 angles=v_extrude*radius*u_globe_extrude_scale;vec3 center_vector=projectToSphere(circle_center);vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(circle_center+extrude,corner_vector,0.0);\n#else\ngl_Position=projectTileFor3D(circle_center+extrude,get_elevation(circle_center));\n#endif\n}"),heatmapTexture:Lt("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;in vec2 v_pos;void main() {float t=texture(u_image,v_pos).r;vec4 color=texture(u_color_ramp,vec2(t,0.5));fragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(0.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;in vec2 a_pos;out 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:Lt("in float v_placed;in float v_notUsed;void main() {float alpha=0.5;fragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {fragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {fragColor*=.1;}}","in vec2 a_anchor_pos;in vec2 a_placed;in vec2 a_box_real;uniform vec2 u_pixel_extrude_scale;out float v_placed;out float v_notUsed;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:Lt("in float v_radius;in vec2 v_extrude;in float v_collision;void main() {float alpha=0.5;float stroke_radius=0.9;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);fragColor=color*alpha*opacity_t;}","in vec2 a_pos;in float a_radius;in vec2 a_flags;uniform vec2 u_viewport_size;out float v_radius;out vec2 v_extrude;out float v_collision;void main() {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;float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_collision=collision;gl_Position=vec4((a_pos/u_viewport_size*2.0-1.0)*vec2(1.0,-1.0),0.0,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),colorRelief:Lt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;uniform vec4 u_unpack;uniform sampler2D u_elevation_stops;uniform sampler2D u_color_stops;uniform int u_color_ramp_size;uniform float u_opacity;in vec2 v_pos;float getElevation(vec2 coord) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}float getElevationStop(int stop) {float x=(float(stop)+0.5)/float(u_color_ramp_size);vec4 data=texture(u_elevation_stops,vec2(x,0))*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {float el=getElevation(v_pos);int r=(u_color_ramp_size-1);int l=0;float el_l=getElevationStop(l);float el_r=getElevationStop(r);while(r-l > 1){int m=(r+l)/2;float el_m=getElevationStop(m);if(el < el_m){r=m;el_r=el_m;}else\n{l=m;el_l=el_m;}}float x=(float(l)+(el-el_l)/(el_r-el_l)+0.5)/float(u_color_ramp_size);fragColor=u_opacity*texture(u_color_stops,vec2(x,0));\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_dimension;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_pos/8192.0)*scale+epsilon;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),debug:Lt("uniform highp vec4 u_color;uniform sampler2D u_overlay;in vec2 v_uv;void main() {vec4 overlay_color=texture(u_overlay,v_uv);fragColor=mix(u_color,overlay_color,overlay_color.a);}","in vec2 a_pos;out vec2 v_uv;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=projectTileWithElevation(a_pos*u_overlay_scale,get_elevation(a_pos));}"),depth:Lt(kt,"in vec2 a_pos;void main() {\n#ifdef GLOBE\ngl_Position=projectTileFor3D(a_pos,0.0);\n#else\ngl_Position=u_projection_matrix*vec4(a_pos,0.0,1.0);\n#endif\n}"),fill:Lt("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\nfragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_fill_translate;in vec2 a_pos;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);}"),fillOutline:Lt("in vec2 v_pos;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=outline_color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_world;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n}"),fillOutlinePattern:Lt("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;in vec2 v_pos_a;in vec2 v_pos_b;in vec2 v_pos;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 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;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;out vec2 v_pos;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 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=projectTile(a_pos+u_fill_translate,a_pos);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;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n}"),fillPattern:Lt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 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;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 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=projectTile(a_pos+u_fill_translate,a_pos);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:Lt("in vec4 v_color;void main() {fragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;in vec2 a_pos;in vec4 a_normal_ed;\n#ifdef TERRAIN3D\nin vec2 a_centroid;\n#endif\nout vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\n#ifdef GLOBE\nvec3 spherePos=projectToSphere(posInTile,a_pos);gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\n#else\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\n#endif\nfloat 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;vec3 normalForLighting=normal/16384.0;float directional=clamp(dot(normalForLighting,u_lightpos),0.0,1.0);\n#ifdef GLOBE\nmat3 rotMatrix=globeGetRotationMatrix(spherePos);normalForLighting=rotMatrix*normalForLighting;directional=mix(directional,clamp(dot(normalForLighting,u_lightpos_globe),0.0,1.0),u_projection_transition);\n#endif\ndirectional=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:Lt("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;in vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 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;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);fragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;in vec2 a_pos;in vec4 a_normal_ed;\n#ifdef TERRAIN3D\nin vec2 a_centroid;\n#endif\n#ifdef GLOBE\nout vec3 v_sphere_pos;\n#endif\nout vec2 v_pos_a;out vec2 v_pos_b;out vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 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;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;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;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\n#ifdef GLOBE\nvec3 spherePos=projectToSphere(posInTile,a_pos);vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);v_sphere_pos=elevatedPos;gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\n#else\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\n#endif\nvec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,elevation*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:Lt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {vec2 epsilon=1.0/u_dimension;float tileSize=u_dimension.x-2.0;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))*tileSize/pow(2.0,exaggeration+(28.2562-u_zoom));fragColor=clamp(vec4(deriv.x/8.0+0.5,deriv.y/8.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;in vec2 a_pos;in vec2 a_texture_pos;out 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:Lt("uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_latrange;uniform float u_exaggeration;uniform vec4 u_accent;uniform int u_method;uniform float u_altitudes[NUM_ILLUMINATION_SOURCES];uniform float u_azimuths[NUM_ILLUMINATION_SOURCES];uniform vec4 u_shadows[NUM_ILLUMINATION_SOURCES];uniform vec4 u_highlights[NUM_ILLUMINATION_SOURCES];\n#define PI 3.141592653589793\n#define STANDARD 0\n#define COMBINED 1\n#define IGOR 2\n#define MULTIDIRECTIONAL 3\n#define BASIC 4\nfloat get_aspect(vec2 deriv){return deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);}void igor_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float aspect=get_aspect(deriv);float azimuth=u_azimuths[0]+PI;float slope_stength=atan(length(deriv))*2.0/PI;float aspect_strength=1.0-abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);float shadow_strength=slope_stength*aspect_strength;float highlight_strength=slope_stength*(1.0-aspect_strength);fragColor=u_shadows[0]*shadow_strength+u_highlights[0]*highlight_strength;}void standard_hillshade(vec2 deriv){float azimuth=u_azimuths[0]+PI;float slope=atan(0.625*length(deriv));float aspect=get_aspect(deriv);float intensity=u_exaggeration;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_shadows[0],u_highlights[0],shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);fragColor=accent_color*(1.0-shade_color.a)+shade_color;}void basic_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor=u_highlights[0]*(2.0*shade-1.0);}else\n{fragColor=u_shadows[0]*(1.0-2.0*shade);}}void multidirectional_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;fragColor=vec4(0,0,0,0);for(int i=0; i < NUM_ILLUMINATION_SOURCES; i++){float cos_alt=cos(u_altitudes[i]);float sin_alt=sin(u_altitudes[i]);float cos_az=-cos(u_azimuths[i]);float sin_az=-sin(u_azimuths[i]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor+=u_highlights[i]*(2.0*shade-1.0)/float(NUM_ILLUMINATION_SOURCES);}else\n{fragColor+=u_shadows[i]*(1.0-2.0*shade)/float(NUM_ILLUMINATION_SOURCES);}}}void combined_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=acos((sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv)));cang=clamp(cang,0.0,PI/2.0);float shade=cang*atan(length(deriv))*4.0/PI/PI;float highlight=(PI/2.0-cang)*atan(length(deriv))*4.0/PI/PI;fragColor=u_shadows[0]*shade+u_highlights[0]*highlight;}void main() {vec4 pixel=texture(u_image,v_pos);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));vec2 deriv=((pixel.rg*8.0)-4.0)/scaleFactor;if (u_method==BASIC) {basic_hillshade(deriv);} else if (u_method==COMBINED) {combined_hillshade(deriv);} else if (u_method==IGOR) {igor_hillshade(deriv);} else if (u_method==MULTIDIRECTIONAL) {multidirectional_hillshade(deriv);} else if (u_method==STANDARD) {standard_hillshade(deriv);} else {standard_hillshade(deriv);}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);v_pos=a_pos/8192.0;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),line:Lt("uniform lowp float u_device_pixel_ratio;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp float v_linesofar;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),lineGradient:Lt("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;in highp vec2 v_uv;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),linePattern:Lt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;in vec2 v_normal;in vec2 v_width2;in float v_linesofar;in float v_gamma_scale;in float v_width;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 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;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture(u_image,pos_a),texture(u_image,pos_b),u_fade);fragColor=color*alpha*opacity;\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_linesofar;out float v_gamma_scale;out float v_width;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),lineSDF:Lt("uniform lowp float u_device_pixel_ratio;uniform lowp float u_lineatlas_width;uniform sampler2D u_image;uniform float u_mix;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture(u_image,v_tex_a).a;float sdfdist_b=texture(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0/u_device_pixel_ratio)/min(dasharray_from.w,dasharray_to.w);alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out vec2 v_tex_a;out vec2 v_tex_b;out float v_gamma_scale;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}"),lineGradientSDF:Lt("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform sampler2D u_image_dash;uniform float u_mix;uniform lowp float u_lineatlas_width;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;in highp vec2 v_uv;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);float sdfdist_a=texture(u_image_dash,v_tex_a).a;float sdfdist_b=texture(u_image_dash,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0)/min(dasharray_from.w,dasharray_to.w);float dash_alpha=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*dash_alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;out vec2 v_tex_a;out vec2 v_tex_b;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;float texel_height=1.0/u_image_height;float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}"),raster:Lt("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;in vec2 v_pos0;in 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=texture(u_image0,v_pos0);vec4 color1=texture(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);fragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;uniform vec4 u_coords_top;uniform vec4 u_coords_bottom;in vec2 a_pos;out vec2 v_pos0;out vec2 v_pos1;void main() {vec2 fractionalPos=a_pos/8192.0;vec2 position=mix(mix(u_coords_top.xy,u_coords_top.zw,fractionalPos.x),mix(u_coords_bottom.xy,u_coords_bottom.zw,fractionalPos.x),fractionalPos.y);gl_Position=projectTile(position,position);v_pos0=((fractionalPos-0.5)/u_buffer_scale)+0.5;\n#ifdef GLOBE\nif (a_pos.y <-32767.5) {v_pos0.y=0.0;}if (a_pos.y > 32766.5) {v_pos0.y=1.0;}\n#endif\nv_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:Lt("uniform sampler2D u_texture;in vec2 v_tex;in float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;fragColor=texture(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_tex;out float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 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 ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_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;\n#ifdef GLOBE\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 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:Lt("#define SDF_PX 8.0\nuniform 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;in vec2 v_data0;in vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}fragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_data0;out vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 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 ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_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;\n#ifdef GLOBE\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 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:Lt("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform 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;in vec4 v_data0;in vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;fragColor=texture(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);fragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec4 v_data0;out vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 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 ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_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;\n#ifdef GLOBE\nif(u_pitch_with_map && !u_is_along_line) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 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:Lt("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;uniform bool u_is_globe_mode;in vec2 v_texture_pos;in 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=texture(u_texture,vec2(v_texture_pos.x,1.0-v_texture_pos.y));if (!u_is_globe_mode && 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);fragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {fragColor=surface_color;}}","in vec3 a_pos3d;uniform mat4 u_fog_matrix;uniform float u_ele_delta;out vec2 v_texture_pos;out 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=projectTileFor3D(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:Lt("in 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() {fragColor=pack(v_depth);}","in vec3 a_pos3d;uniform float u_ele_delta;out 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=projectTileFor3D(a_pos3d.xy,ele-ele_delta);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:Lt("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;in vec2 v_texture_pos;void main() {vec4 rgba=texture(u_texture,v_texture_pos);fragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","in vec3 a_pos3d;uniform float u_ele_delta;out 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=projectTileFor3D(a_pos3d.xy,ele-ele_delta);}"),projectionErrorMeasurement:Lt("in vec4 v_output_error_encoded;void main() {fragColor=v_output_error_encoded;}","in vec2 a_pos;uniform highp float u_input;uniform highp float u_output_expected;out vec4 v_output_error_encoded;void main() {float real_output=2.0*atan(exp(PI-(u_input*PI*2.0)))-PI*0.5;float error=real_output-u_output_expected;float abs_error=abs(error)*128.0;v_output_error_encoded.x=min(floor(abs_error*256.0),255.0)/255.0;abs_error-=v_output_error_encoded.x;v_output_error_encoded.y=min(floor(abs_error*65536.0),255.0)/255.0;abs_error-=v_output_error_encoded.x/255.0;v_output_error_encoded.z=min(floor(abs_error*16777216.0),255.0)/255.0;v_output_error_encoded.w=error >=0.0 ? 1.0 : 0.0;gl_Position=vec4(a_pos,0.0,1.0);}"),atmosphere:Lt("in vec3 view_direction;uniform vec3 u_sun_pos;uniform vec3 u_globe_position;uniform float u_globe_radius;uniform float u_atmosphere_blend;/**Shader use from https:*Made some change to adapt to MapLibre Globe geometry*/const float PI=3.141592653589793;const int iSteps=5;const int jSteps=3;/*radius of the planet*/const float EARTH_RADIUS=6371e3;/*radius of the atmosphere*/const float ATMOS_RADIUS=6471e3;vec2 rsi(vec3 r0,vec3 rd,float sr) {float a=dot(rd,rd);float b=2.0*dot(rd,r0);float c=dot(r0,r0)-(sr*sr);float d=(b*b)-4.0*a*c;if (d < 0.0) return vec2(1e5,-1e5);return vec2((-b-sqrt(d))/(2.0*a),(-b+sqrt(d))/(2.0*a));}vec4 atmosphere(vec3 r,vec3 r0,vec3 pSun,float iSun,float rPlanet,float rAtmos,vec3 kRlh,float kMie,float shRlh,float shMie,float g) {pSun=normalize(pSun);r=normalize(r);vec2 p=rsi(r0,r,rAtmos);if (p.x > p.y) {return vec4(0.0,0.0,0.0,1.0);}if (p.x < 0.0) {p.x=0.0;}vec3 pos=r0+r*p.x;vec2 p2=rsi(r0,r,rPlanet);if (p2.x <=p2.y && p2.x > 0.0) {p.y=min(p.y,p2.x);}float iStepSize=(p.y-p.x)/float(iSteps);float iTime=p.x+iStepSize*0.5;vec3 totalRlh=vec3(0,0,0);vec3 totalMie=vec3(0,0,0);float iOdRlh=0.0;float iOdMie=0.0;float mu=dot(r,pSun);float mumu=mu*mu;float gg=g*g;float pRlh=3.0/(16.0*PI)*(1.0+mumu);float pMie=3.0/(8.0*PI)*((1.0-gg)*(mumu+1.0))/(pow(1.0+gg-2.0*mu*g,1.5)*(2.0+gg));for (int i=0; i < iSteps; i++) {vec3 iPos=r0+r*iTime;float iHeight=length(iPos)-rPlanet;float odStepRlh=exp(-iHeight/shRlh)*iStepSize;float odStepMie=exp(-iHeight/shMie)*iStepSize;iOdRlh+=odStepRlh;iOdMie+=odStepMie;float jStepSize=rsi(iPos,pSun,rAtmos).y/float(jSteps);float jTime=jStepSize*0.5;float jOdRlh=0.0;float jOdMie=0.0;for (int j=0; j < jSteps; j++) {vec3 jPos=iPos+pSun*jTime;float jHeight=length(jPos)-rPlanet;jOdRlh+=exp(-jHeight/shRlh)*jStepSize;jOdMie+=exp(-jHeight/shMie)*jStepSize;jTime+=jStepSize;}vec3 attn=exp(-(kMie*(iOdMie+jOdMie)+kRlh*(iOdRlh+jOdRlh)));totalRlh+=odStepRlh*attn;totalMie+=odStepMie*attn;iTime+=iStepSize;}float opacity=exp(-(length(kRlh)*length(totalRlh)+kMie*length(totalMie)));vec3 color=iSun*(pRlh*kRlh*totalRlh+pMie*kMie*totalMie);return vec4(color,opacity);}void main() {vec3 scale_camera_pos=-u_globe_position*EARTH_RADIUS/u_globe_radius;vec4 color=atmosphere(normalize(view_direction),scale_camera_pos,u_sun_pos,22.0,EARTH_RADIUS,ATMOS_RADIUS,vec3(5.5e-6,13.0e-6,22.4e-6),21e-6,8e3,1.2e3,0.758\n);color.rgb=1.0-exp(-1.0*color.rgb);color=pow(color,vec4(1.0/2.2));fragColor=vec4(color.rgb,1.0-color.a)*u_atmosphere_blend;}","in vec2 a_pos;uniform mat4 u_inv_proj_matrix;out vec3 view_direction;void main() {view_direction=(u_inv_proj_matrix*vec4(a_pos,0.0,1.0)).xyz;gl_Position=vec4(a_pos,0.0,1.0);}"),sky:Lt("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform vec2 u_horizon;uniform vec2 u_horizon_normal;uniform float u_sky_horizon_blend;uniform float u_sky_blend;void main() {float x=gl_FragCoord.x;float y=gl_FragCoord.y;float blend=(y-u_horizon.y)*u_horizon_normal.y+(x-u_horizon.x)*u_horizon_normal.x;if (blend > 0.0) {if (blend < u_sky_horizon_blend) {fragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {fragColor=u_sky_color;}}fragColor=mix(fragColor,vec4(vec3(0.0),0.0),u_sky_blend);}","in vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function Lt(e,t){const i=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,r=t.match(/in ([\w]+) ([\w]+)/g),n=e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),s=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),o=s?s.concat(n):n,a={};return{fragmentSource:e=e.replace(i,(e,t,i,r,n)=>(a[n]=!0,"define"===t?`\n#ifndef HAS_UNIFORM_u_${n}\nin ${i} ${r} ${n};\n#else\nuniform ${i} ${r} u_${n};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${n}\n ${i} ${r} ${n} = u_${n};\n#endif\n`)),vertexSource:t=t.replace(i,(e,t,i,r,n)=>{const s="float"===r?"vec2":"vec4",o=n.match(/color/)?"color":s;return a[n]?"define"===t?`\n#ifndef HAS_UNIFORM_u_${n}\nuniform lowp float u_${n}_t;\nin ${i} ${s} a_${n};\nout ${i} ${r} ${n};\n#else\nuniform ${i} ${r} u_${n};\n#endif\n`:"vec4"===o?`\n#ifndef HAS_UNIFORM_u_${n}\n ${n} = a_${n};\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${n}\n ${n} = unpack_mix_${o}(a_${n}, u_${n}_t);\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`:"define"===t?`\n#ifndef HAS_UNIFORM_u_${n}\nuniform lowp float u_${n}_t;\nin ${i} ${s} a_${n};\n#else\nuniform ${i} ${r} u_${n};\n#endif\n`:"vec4"===o?`\n#ifndef HAS_UNIFORM_u_${n}\n ${i} ${r} ${n} = a_${n};\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${n}\n ${i} ${r} ${n} = unpack_mix_${o}(a_${n}, u_${n}_t);\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`}),staticAttributes:r,staticUniforms:o}}class Ft{constructor(e,t,i){this.vertexBuffer=e,this.indexBuffer=t,this.segments=i}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}var Bt=t.aU([{name:"a_pos",type:"Int16",components:2}]);const Ot="#define PROJECTION_MERCATOR",Vt="mercator";class jt{constructor(){this._cachedMesh=null}get name(){return"mercator"}get useSubdivision(){return!1}get shaderVariantName(){return Vt}get shaderDefine(){return Ot}get shaderPreludeCode(){return Rt.projectionMercator}get vertexShaderPreludeCode(){return Rt.projectionMercator.vertexSource}get subdivisionGranularity(){return t.aV.noSubdivision}get useGlobeControls(){return!1}get transitionState(){return 0}get latitudeErrorCorrectionRadians(){return 0}destroy(){}updateGPUdependent(e){}getMeshFromTileID(e,i,r,n,s){if(this._cachedMesh)return this._cachedMesh;const o=new t.aW;o.emplaceBack(0,0),o.emplaceBack(t.a5,0),o.emplaceBack(0,t.a5),o.emplaceBack(t.a5,t.a5);const a=e.createVertexBuffer(o,Bt.members),l=t.aX.simpleSegment(0,0,4,2),c=new t.aY;c.emplaceBack(1,0,2),c.emplaceBack(1,2,3);const h=e.createIndexBuffer(c);return this._cachedMesh=new Ft(a,h,l),this._cachedMesh}recalculate(){}hasTransition(){return!1}setErrorQueryLatitudeDegrees(e){}}class Nt{constructor(e=0,t=0,i=0,r=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(r)||r<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=e,this.bottom=t,this.left=i,this.right=r}interpolate(e,i,r){return null!=i.top&&null!=e.top&&(this.top=t.G.number(e.top,i.top,r)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.G.number(e.bottom,i.bottom,r)),null!=i.left&&null!=e.left&&(this.left=t.G.number(e.left,i.left,r)),null!=i.right&&null!=e.right&&(this.right=t.G.number(e.right,i.right,r)),this}getCenter(e,i){const r=t.an((this.left+e-this.right)/2,0,e),n=t.an((this.top+i-this.bottom)/2,0,i);return new t.P(r,n)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new Nt(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function Ut(e,t){if(!e.renderWorldCopies||e.lngRange)return;const i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0}function Gt(e){return Math.max(0,Math.floor(e))}class qt{constructor(e,i){var r;this.applyConstrain=(e,t)=>null!==this._constrainOverride?this._constrainOverride(e,t):this._callbacks.defaultConstrain(e,t),this._callbacks=e,this._tileSize=512,this._renderWorldCopies=void 0===(null==i?void 0:i.renderWorldCopies)||!!(null==i?void 0:i.renderWorldCopies),this._minZoom=(null==i?void 0:i.minZoom)||0,this._maxZoom=(null==i?void 0:i.maxZoom)||22,this._minPitch=null==(null==i?void 0:i.minPitch)?0:null==i?void 0:i.minPitch,this._maxPitch=null==(null==i?void 0:i.maxPitch)?60:null==i?void 0:i.maxPitch,this._constrainOverride=null!==(r=null==i?void 0:i.constrainOverride)&&void 0!==r?r:null,this.setMaxBounds(),this._width=0,this._height=0,this._center=new t.V(0,0),this._elevation=0,this._zoom=0,this._tileZoom=Gt(this._zoom),this._scale=t.aq(this._zoom),this._bearingInRadians=0,this._fovInRadians=.6435011087932844,this._pitchInRadians=0,this._rollInRadians=0,this._unmodified=!0,this._edgeInsets=new Nt,this._minElevationForCurrentTile=0,this._autoCalculateNearFarZ=!0}apply(e,i,r){this._constrainOverride=e.constrainOverride,this._latRange=e.latRange,this._lngRange=e.lngRange,this._width=e.width,this._height=e.height,this._center=e.center,this._elevation=e.elevation,this._minElevationForCurrentTile=e.minElevationForCurrentTile,this._zoom=e.zoom,this._tileZoom=Gt(this._zoom),this._scale=t.aq(this._zoom),this._bearingInRadians=e.bearingInRadians,this._fovInRadians=e.fovInRadians,this._pitchInRadians=e.pitchInRadians,this._rollInRadians=e.rollInRadians,this._unmodified=e.unmodified,this._edgeInsets=new Nt(e.padding.top,e.padding.bottom,e.padding.left,e.padding.right),this._minZoom=e.minZoom,this._maxZoom=e.maxZoom,this._minPitch=e.minPitch,this._maxPitch=e.maxPitch,this._renderWorldCopies=e.renderWorldCopies,this._cameraToCenterDistance=e.cameraToCenterDistance,this._nearZ=e.nearZ,this._farZ=e.farZ,this._autoCalculateNearFarZ=!r&&e.autoCalculateNearFarZ,i&&this.constrainInternal(),this._calcMatrices()}get pixelsToClipSpaceMatrix(){return this._pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._clipSpaceToPixelsMatrix}get minElevationForCurrentTile(){return this._minElevationForCurrentTile}setMinElevationForCurrentTile(e){this._minElevationForCurrentTile=e}get tileSize(){return this._tileSize}get tileZoom(){return this._tileZoom}get scale(){return this._scale}get width(){return this._width}get height(){return this._height}get bearingInRadians(){return this._bearingInRadians}get lngRange(){return this._lngRange}get latRange(){return this._latRange}get pixelsToGLUnits(){return this._pixelsToGLUnits}get minZoom(){return this._minZoom}setMinZoom(e){this._minZoom!==e&&(this._minZoom=e,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom))}get maxZoom(){return this._maxZoom}setMaxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom))}get minPitch(){return this._minPitch}setMinPitch(e){this._minPitch!==e&&(this._minPitch=e,this.setPitch(Math.max(this.pitch,e)))}get maxPitch(){return this._maxPitch}setMaxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.setPitch(Math.min(this.pitch,e)))}get renderWorldCopies(){return this._renderWorldCopies}setRenderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e}get constrainOverride(){return this._constrainOverride}setConstrainOverride(e){void 0===e&&(e=null),this._constrainOverride!==e&&(this._constrainOverride=e,this.constrainInternal(),this._calcMatrices())}get worldSize(){return this._tileSize*this._scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.P(this._width,this._height)}get bearing(){return this._bearingInRadians/Math.PI*180}setBearing(e){const i=t.W(e,-180,180)*Math.PI/180;var n,s,o,a,l,c,h,u,d;this._bearingInRadians!==i&&(this._unmodified=!1,this._bearingInRadians=i,this._calcMatrices(),this._rotationMatrix=r(),n=this._rotationMatrix,o=-this._bearingInRadians,a=(s=this._rotationMatrix)[0],l=s[1],c=s[2],h=s[3],u=Math.sin(o),d=Math.cos(o),n[0]=a*d+c*u,n[1]=l*d+h*u,n[2]=a*-u+c*d,n[3]=l*-u+h*d)}get rotationMatrix(){return this._rotationMatrix}get pitchInRadians(){return this._pitchInRadians}get pitch(){return this._pitchInRadians/Math.PI*180}setPitch(e){const i=t.an(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitchInRadians!==i&&(this._unmodified=!1,this._pitchInRadians=i,this._calcMatrices())}get rollInRadians(){return this._rollInRadians}get roll(){return this._rollInRadians/Math.PI*180}setRoll(e){const t=e/180*Math.PI;this._rollInRadians!==t&&(this._unmodified=!1,this._rollInRadians=t,this._calcMatrices())}get fovInRadians(){return this._fovInRadians}get fov(){return t.aZ(this._fovInRadians)}setFov(e){e=t.an(e,.1,150),this.fov!==e&&(this._unmodified=!1,this._fovInRadians=t.ap(e),this._calcMatrices())}get zoom(){return this._zoom}setZoom(e){const i=this.applyConstrain(this._center,e).zoom;this._zoom!==i&&(this._unmodified=!1,this._zoom=i,this._tileZoom=Math.max(0,Math.floor(i)),this._scale=t.aq(i),this.constrainInternal(),this._calcMatrices())}get center(){return this._center}setCenter(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this._unmodified=!1,this._center=e,this.constrainInternal(),this._calcMatrices())}get elevation(){return this._elevation}setElevation(e){e!==this._elevation&&(this._elevation=e,this.constrainInternal(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}setPadding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this._width,this._height)}get pixelsPerMeter(){return this._pixelPerMeter}get unmodified(){return this._unmodified}get cameraToCenterDistance(){return this._cameraToCenterDistance}get nearZ(){return this._nearZ}get farZ(){return this._farZ}get autoCalculateNearFarZ(){return this._autoCalculateNearFarZ}overrideNearFarZ(e,t){this._autoCalculateNearFarZ=!1,this._nearZ=e,this._farZ=t,this._calcMatrices()}clearNearFarZOverride(){this._autoCalculateNearFarZ=!0,this._calcMatrices()}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,i){this._unmodified=!1,this._edgeInsets.interpolate(e,t,i),this.constrainInternal(),this._calcMatrices()}resize(e,t,i=!0){this._width=e,this._height=t,i&&this.constrainInternal(),this._calcMatrices()}getMaxBounds(){return this._latRange&&2===this._latRange.length&&this._lngRange&&2===this._lngRange.length?new W([this._lngRange[0],this._latRange[0]],[this._lngRange[1],this._latRange[1]]):null}setMaxBounds(e){e?(this._lngRange=[e.getWest(),e.getEast()],this._latRange=[e.getSouth(),e.getNorth()],this.constrainInternal()):(this._lngRange=null,this._latRange=[-t.ao,t.ao])}getCameraQueryGeometry(e,i){if(1===i.length)return[i[0],e];{const{minX:r,minY:n,maxX:s,maxY:o}=t.aa.fromPoints(i).extend(e);return[new t.P(r,n),new t.P(s,n),new t.P(s,o),new t.P(r,o),new t.P(r,n)]}}constrainInternal(){if(!this.center||!this._width||!this._height||this._constraining)return;this._constraining=!0;const e=this._unmodified,{center:t,zoom:i}=this.applyConstrain(this.center,this.zoom);this.setCenter(t),this.setZoom(i),this._unmodified=e,this._constraining=!1}_calcMatrices(){if(this._width&&this._height){this._pixelsToGLUnits=[2/this._width,-2/this._height];let e=t.ar(new Float64Array(16));t.Q(e,e,[this._width/2,-this._height/2,1]),t.O(e,e,[1,-1,0]),this._clipSpaceToPixelsMatrix=e,e=t.ar(new Float64Array(16)),t.Q(e,e,[1,-1,1]),t.O(e,e,[-1,-1,0]),t.Q(e,e,[2/this._width,2/this._height,1]),this._pixelsToClipSpaceMatrix=e,this._cameraToCenterDistance=.5/Math.tan(this.fovInRadians/2)*this._height}this._callbacks.calcMatrices()}calculateCenterFromCameraLngLatAlt(e,i,r,n){const s=void 0!==r?r:this.bearing,o=n=void 0!==n?n:this.pitch,{distanceToCenter:a,clampedElevation:l}=this._distanceToCenterFromAltElevationPitch(i,this.elevation,o),{x:c,y:h}=be(o,s),u=t.a9.fromLngLat(e,i);let d,p,f=t.a_(1,u.y),m=0;do{if(m+=1,m>10)break;p=a/f,d=new t.a9(u.x+c*p,u.y+h*p),f=1/d.meterInMercatorCoordinateUnits()}while(Math.abs(a-p*f)>1e-12);return{center:d.toLngLat(),elevation:l,zoom:t.at(this.height/2/Math.tan(this.fovInRadians/2)/p/this.tileSize)}}recalculateZoomAndCenter(e){if(this.elevation-e==0)return;const i=1/this.worldSize,r=t.as(1,this.center.lat)*this.worldSize,n=t.a9.fromLngLat(this.center,this.elevation),s=n.x/i,o=n.y/i,a=n.z/i,l=this.pitch,c=this.bearing,{x:h,y:u,z:d}=be(l,c),p=this.cameraToCenterDistance,f=s+p*-h,m=o+p*-u,_=a+p*d,{distanceToCenter:g,clampedElevation:y}=this._distanceToCenterFromAltElevationPitch(_/r,e,l),x=g*r,v=new t.a9((f+h*x)*i,(m+u*x)*i,0).toLngLat(),b=t.as(1,v.lat),w=t.at(this.height/2/Math.tan(this.fovInRadians/2)/g/b/this.tileSize);this._elevation=y,this._center=v,this.setZoom(w)}_distanceToCenterFromAltElevationPitch(e,i,r){const n=-Math.cos(t.ap(r)),s=e-i;let o,a=i;return n*s>=0||Math.abs(n)<.1?(o=1e4,a=e+o*n):o=-s/n,{distanceToCenter:o,clampedElevation:a}}getCameraPoint(){const e=Math.tan(this.pitchInRadians)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.P(e*Math.sin(this.rollInRadians),e*Math.cos(this.rollInRadians)))}getCameraAltitude(){return Math.cos(this.pitchInRadians)*this._cameraToCenterDistance/this._pixelPerMeter+this.elevation}getCameraLngLat(){const e=t.as(1,this.center.lat)*this.worldSize;return ve(this.center,this.elevation,this.pitch,this.bearing,this.cameraToCenterDistance/e).toLngLat()}getMercatorTileCoordinates(e){if(!e)return[0,0,1,1];const i=e.canonical.z>=0?1<this.max[0]||e.aabb.min[1]>this.max[1]||e.aabb.min[2]>this.max[2]||e.aabb.max[0]0?(t+=e[r]*this.min[r],i+=e[r]*this.max[r]):(i+=e[r]*this.min[r],t+=e[r]*this.max[r]);return t>=0?2:i<0?0:1}}class $t{distanceToTile2d(e,t,i,r){const n=r.distanceX([e,t]),s=r.distanceY([e,t]);return Math.hypot(n,s)}getWrap(e,t,i){return i}getTileBoundingVolume(e,i,r,n){var s,o;let a=0,l=0;if(null==n?void 0:n.terrain){const c=new t.a2(e.z,i,e.z,e.x,e.y),h=n.terrain.getMinMaxElevation(c);a=null!==(s=h.minElevation)&&void 0!==s?s:Math.min(0,r),l=null!==(o=h.maxElevation)&&void 0!==o?o:Math.max(0,r)}const c=1<n}allowWorldCopies(){return!0}prepareNextFrame(){}}class Wt{constructor(e,t,i){this.points=e,this.planes=t,this.aabb=i}static fromInvProjectionMatrix(e,i=1,r=0,n,s){const o=s?[[6,5,4],[0,1,2],[0,3,7],[2,1,5],[3,2,6],[0,4,5]]:[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],a=Math.pow(2,r),l=[[-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(r=>function(e,i,r,n){const s=t.aH([],e,i),o=1/s[3]/r*n;return t.b6(s,s,[o,o,1/s[3],o])}(r,e,i,a));n&&function(e,i,r,n){const s=n?4:0,o=n?0:4;let a=0;const l=[],c=[];for(let d=0;d<4;d++){const i=t.b2([],e[d+o],e[d+s]),r=t.b7(i);t.a$(i,i,1/r),l.push(r),c.push(i)}for(let d=0;d<4;d++){const i=t.b8(e[d+s],c[d],r);a=null!==i&&i>=0?Math.max(a,i):Math.max(a,l[d])}const h=function(e,i){const r=t.b2([],e[i[0]],e[i[1]]),n=t.b2([],e[i[2]],e[i[1]]),s=[0,0,0,0];return t.b3(s,t.b4([],r,n)),s[3]=-t.b5(s,e[i[0]]),s}(e,i),u=function(e,i){const r=t.b9(e),n=t.ba([],e,1/r),s=t.b2([],i,t.a$([],n,t.b5(i,n))),o=t.b9(s);if(o>0){const e=Math.sqrt(1-n[3]*n[3]),r=t.a$([],n,-n[3]),a=t.b0([],r,t.a$([],s,e/o));return t.bb(i,a)}return null}(r,h);if(null!==u){const e=u/t.b5(c[0],h);a=Math.min(a,e)}for(let t=0;t<4;t++){const i=Math.min(a,l[t]);e[t+o]=[e[t+s][0]+c[t][0]*i,e[t+s][1]+c[t][1]*i,e[t+s][2]+c[t][2]*i,1]}}(l,o[0],n,s);const c=o.map(e=>{const i=t.b2([],l[e[0]],l[e[1]]),r=t.b2([],l[e[2]],l[e[1]]),n=t.b3([],t.b4([],i,r)),s=-t.b5(n,l[e[1]]);return n.concat(s)}),h=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],u=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(const t of l)for(let e=0;e<3;e++)h[e]=Math.min(h[e],t[e]),u[e]=Math.max(u[e],t[e]);return new Wt(l,c,new Zt(h,u))}}class Ht{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e)}setMaxZoom(e){this._helper.setMaxZoom(e)}setMinPitch(e){this._helper.setMinPitch(e)}setMaxPitch(e){this._helper.setMaxPitch(e)}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e)}setBearing(e){this._helper.setBearing(e)}setPitch(e){this._helper.setPitch(e)}setRoll(e){this._helper.setRoll(e)}setFov(e){this._helper.setFov(e)}setZoom(e){this._helper.setZoom(e)}setCenter(e){this._helper.setCenter(e)}setElevation(e){this._helper.setElevation(e)}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e)}setPadding(e){this._helper.setPadding(e)}interpolatePadding(e,t,i){return this._helper.interpolatePadding(e,t,i)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e)}setConstrainOverride(e){this._helper.setConstrainOverride(e)}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(e,t){}constructor(e){this._posMatrixCache=new Map,this._alignedPosMatrixCache=new Map,this._fogMatrixCacheF32=new Map,this.defaultConstrain=(e,i)=>{i=t.an(+i,this.minZoom,this.maxZoom);const r={center:new t.V(e.lng,e.lat),zoom:i};let n=this._helper._lngRange;if(!this._helper._renderWorldCopies&&null===n){const e=180-1e-10;n=[-e,e]}const s=this.tileSize*t.aq(r.zoom);let o=0,a=s,l=0,c=s,h=0,u=0;const{x:d,y:p}=this.size;if(this._helper._latRange){const e=this._helper._latRange;o=t.X(e[1])*s,a=t.X(e[0])*s,a-oa&&(g=a-e)}if(n){const e=(l+c)/2;let i=f;this._helper._renderWorldCopies&&(i=t.W(f,e-s/2,e+s/2));const r=d/2;i-rc&&(_=c-r)}if(void 0!==_||void 0!==g){const e=new t.P(null!=_?_:f,null!=g?g:m);r.center=ge(s,e).wrap()}return r},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new qt({calcMatrices:()=>{this._calcMatrices()},defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new $t}clone(){const e=new Ht;return e.apply(this),e}apply(e,t,i){this._helper.apply(e,t,i)}get cameraPosition(){return this._cameraPosition}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._viewProjMatrix}get inverseProjectionMatrix(){return this._invProjMatrix}get mercatorMatrix(){return this._mercatorMatrix}getVisibleUnwrappedCoordinates(e){const i=[new t.bc(0,e)];if(this._helper._renderWorldCopies){const r=this.screenPointToMercatorCoordinate(new t.P(0,0)),n=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,0)),s=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,this._helper._height)),o=this.screenPointToMercatorCoordinate(new t.P(0,this._helper._height)),a=Math.floor(Math.min(r.x,n.x,s.x,o.x)),l=Math.floor(Math.max(r.x,n.x,s.x,o.x)),c=1;for(let h=a-c;h<=l+c;h++)0!==h&&i.push(new t.bc(h,e))}return i}getCameraFrustum(){return Wt.fromInvProjectionMatrix(this._invViewProjMatrix,this.worldSize)}getClippingPlane(){return null}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(e){const t=this.screenPointToLocation(this.centerPoint,e),i=e?e.getElevationForLngLatZoom(t,this._helper._tileZoom):0;this._helper.recalculateZoomAndCenter(i)}setLocationAtPoint(e,i){const r=t.as(this.elevation,this.center.lat),n=this.screenPointToMercatorCoordinateAtZ(i,r),s=this.screenPointToMercatorCoordinateAtZ(this.centerPoint,r),o=t.a9.fromLngLat(e),a=new t.a9(o.x-(n.x-s.x),o.y-(n.y-s.y));this.setCenter(null==a?void 0:a.toLngLat()),this._helper._renderWorldCopies&&this.setCenter(this.center.wrap())}locationToScreenPoint(e,i){return i?this.coordinatePoint(t.a9.fromLngLat(e),i.getElevationForLngLat(e,this),this._pixelMatrix3D):this.coordinatePoint(t.a9.fromLngLat(e))}screenPointToLocation(e,t){var i;return null===(i=this.screenPointToMercatorCoordinate(e,t))||void 0===i?void 0:i.toLngLat()}screenPointToMercatorCoordinate(e,t){if(t){const i=t.pointCoordinate(e);if(null!=i)return i}return this.screenPointToMercatorCoordinateAtZ(e)}screenPointToMercatorCoordinateAtZ(e,i){const r=i||0,n=[e.x,e.y,0,1],s=[e.x,e.y,1,1];t.aH(n,n,this._pixelMatrixInverse),t.aH(s,s,this._pixelMatrixInverse);const o=n[3],a=s[3],l=n[1]/o,c=s[1]/a,h=n[2]/o,u=s[2]/a,d=h===u?0:(r-h)/(u-h);return new t.a9(t.G.number(n[0]/o,s[0]/a,d)/this.worldSize,t.G.number(l,c,d)/this.worldSize,r)}coordinatePoint(e,i=0,r=this._pixelMatrix){const n=[e.x*this.worldSize,e.y*this.worldSize,i,1];return t.aH(n,n,r),new t.P(n[0]/n[3],n[1]/n[3])}getBounds(){const e=Math.max(0,this._helper._height/2-ye(this));return(new W).extend(this.screenPointToLocation(new t.P(0,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,this._helper._height))).extend(this.screenPointToLocation(new t.P(0,this._helper._height)))}isPointOnMapSurface(e,t){return t?null!=t.pointCoordinate(e):e.y>this.height/2-ye(this)}calculatePosMatrix(e,i=!1,r){var n;const s=null!==(n=e.key)&&void 0!==n?n:t.bd(e.wrap,e.canonical.z,e.canonical.z,e.canonical.x,e.canonical.y),o=i?this._alignedPosMatrixCache:this._posMatrixCache;if(o.has(s)){const e=o.get(s);return r?e.f32:e.f64}const a=xe(e,this.worldSize);t.S(a,i?this._alignedProjMatrix:this._viewProjMatrix,a);const l={f64:a,f32:new Float32Array(a)};return o.set(s,l),r?l.f32:l.f64}calculateFogMatrix(e){const i=e.key,r=this._fogMatrixCacheF32;if(r.has(i))return r.get(i);const n=xe(e,this.worldSize);return t.S(n,this._fogMatrix,n),r.set(i,new Float32Array(n)),r.get(i)}calculateCenterFromCameraLngLatAlt(e,t,i,r){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,r)}_calculateNearFarZIfNeeded(e,i,r){if(!this._helper.autoCalculateNearFarZ)return;const n=Math.min(this.elevation,this.minElevationForCurrentTile,this.getCameraAltitude()-100),s=e-n*this._helper._pixelPerMeter/Math.cos(i),o=n<0?s:e,a=Math.PI/2+this.pitchInRadians,l=t.ap(this.fov)*(Math.abs(Math.cos(t.ap(this.roll)))*this.height+Math.abs(Math.sin(t.ap(this.roll)))*this.width)/this.height*(.5+r.y/this.height),c=Math.sin(l)*o/Math.sin(t.an(Math.PI-a-l,.01,Math.PI-.01)),h=ye(this),u=Math.atan(h/this._helper.cameraToCenterDistance),d=t.ap(.75),p=u>d?2*u*(.5+r.y/(2*h)):d,f=Math.sin(p)*o/Math.sin(t.an(Math.PI-a-p,.01,Math.PI-.01)),m=Math.min(c,f);this._helper._farZ=1.01*(Math.cos(Math.PI/2-i)*m+o),this._helper._nearZ=this._helper._height/50}_calcMatrices(){if(!this._helper._height)return;const e=this.centerOffset,i=_e(this.worldSize,this.center),r=i.x,n=i.y;this._helper._pixelPerMeter=t.as(1,this.center.lat)*this.worldSize;const s=t.ap(Math.min(this.pitch,me)),o=Math.max(this._helper.cameraToCenterDistance/2,this._helper.cameraToCenterDistance+this._helper._elevation*this._helper._pixelPerMeter/Math.cos(s));let a;this._calculateNearFarZIfNeeded(o,s,e),a=new Float64Array(16),t.be(a,this.fovInRadians,this._helper._width/this._helper._height,this._helper._nearZ,this._helper._farZ),this._invProjMatrix=new Float64Array(16),t.aB(this._invProjMatrix,a),a[8]=2*-e.x/this._helper._width,a[9]=2*e.y/this._helper._height,this._projectionMatrix=t.bf(a),t.Q(a,a,[1,-1,1]),t.O(a,a,[0,0,-this._helper.cameraToCenterDistance]),t.bg(a,a,-this.rollInRadians),t.bh(a,a,this.pitchInRadians),t.bg(a,a,-this.bearingInRadians),t.O(a,a,[-r,-n,0]),this._mercatorMatrix=t.Q([],a,[this.worldSize,this.worldSize,this.worldSize]),t.Q(a,a,[1,1,this._helper._pixelPerMeter]),this._pixelMatrix=t.S(new Float64Array(16),this.clipSpaceToPixelsMatrix,a),t.O(a,a,[0,0,-this.elevation]),this._viewProjMatrix=a,this._invViewProjMatrix=t.aB([],a);const l=[0,0,-1,1];t.aH(l,l,this._invViewProjMatrix),this._cameraPosition=[l[0]/l[3],l[1]/l[3],l[2]/l[3]],this._fogMatrix=new Float64Array(16),t.be(this._fogMatrix,this.fovInRadians,this.width/this.height,o,this._helper._farZ),this._fogMatrix[8]=2*-e.x/this.width,this._fogMatrix[9]=2*e.y/this.height,t.Q(this._fogMatrix,this._fogMatrix,[1,-1,1]),t.O(this._fogMatrix,this._fogMatrix,[0,0,-this.cameraToCenterDistance]),t.bg(this._fogMatrix,this._fogMatrix,-this.rollInRadians),t.bh(this._fogMatrix,this._fogMatrix,this.pitchInRadians),t.bg(this._fogMatrix,this._fogMatrix,-this.bearingInRadians),t.O(this._fogMatrix,this._fogMatrix,[-r,-n,0]),t.Q(this._fogMatrix,this._fogMatrix,[1,1,this._helper._pixelPerMeter]),t.O(this._fogMatrix,this._fogMatrix,[0,0,-this.elevation]),this._pixelMatrix3D=t.S(new Float64Array(16),this.clipSpaceToPixelsMatrix,a);const c=this._helper._width%2/2,h=this._helper._height%2/2,u=Math.cos(this.bearingInRadians),d=Math.sin(-this.bearingInRadians),p=r-Math.round(r)+u*c+d*h,f=n-Math.round(n)+u*h+d*c,m=new Float64Array(a);if(t.O(m,m,[p>.5?p-1:p,f>.5?f-1:f,0]),this._alignedProjMatrix=m,a=t.aB(new Float64Array(16),this._pixelMatrix),!a)throw new Error("failed to invert matrix");this._pixelMatrixInverse=a,this._clearMatrixCaches()}_clearMatrixCaches(){this._posMatrixCache.clear(),this._alignedPosMatrixCache.clear(),this._fogMatrixCacheF32.clear()}maxPitchScaleFactor(){if(!this._pixelMatrixInverse)return 1;const e=this.screenPointToMercatorCoordinate(new t.P(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.aH(i,i,this._pixelMatrix)[3]/this._helper.cameraToCenterDistance}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){const e=t.as(1,this.center.lat)*this.worldSize;return ve(this.center,this.elevation,this.pitch,this.bearing,this._helper.cameraToCenterDistance/e).toLngLat()}lngLatToCameraDepth(e,i){const r=t.a9.fromLngLat(e),n=[r.x*this.worldSize,r.y*this.worldSize,i,1];return t.aH(n,n,this._viewProjMatrix),n[2]/n[3]}getProjectionData(e){const{overscaledTileID:i,aligned:r,applyTerrainMatrix:n}=e,s=this._helper.getMercatorTileCoordinates(i),o=i?this.calculatePosMatrix(i,r,!0):null;let a;return a=i&&i.terrainRttPosMatrix32f&&n?i.terrainRttPosMatrix32f:o||t.bi(),{mainMatrix:a,tileMercatorCoords:s,clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:a}}isLocationOccluded(e){return!1}getPixelScale(){return 1}getCircleRadiusCorrection(){return 1}getPitchedTextCorrection(e,t,i){return 1}transformLightDirection(e){return t.b1(e)}getRayDirectionFromPixel(e){throw new Error("Not implemented.")}projectTileCoordinates(e,i,r,n){const s=this.calculatePosMatrix(r);let o;n?(o=[e,i,n(e,i),1],t.aH(o,o,s)):(o=[e,i,0,1],ot(o,o,s));const a=o[3];return{point:new t.P(o[0]/a,o[1]/a),signedDistanceFromCamera:a,isOccluded:!1}}populateCache(e){for(const t of e)this.calculatePosMatrix(t)}getMatrixForModel(e,i){const r=t.a9.fromLngLat(e,i),n=r.meterInMercatorCoordinateUnits(),s=t.bj();return t.O(s,s,[r.x,r.y,r.z]),t.bg(s,s,Math.PI),t.bh(s,s,Math.PI/2),t.Q(s,s,[-n,n,n]),s}getProjectionDataForCustomLayer(e=!0){const i=new t.a2(0,0,0,0,0),r=this.getProjectionData({overscaledTileID:i,applyGlobeMatrix:e}),n=xe(i,this.worldSize);t.S(n,this._viewProjMatrix,n),r.tileMercatorCoords=[0,0,1,1];const s=[t.a5,t.a5,this.worldSize/this._helper.pixelsPerMeter],o=t.bk();return t.Q(o,n,s),r.fallbackMatrix=o,r.mainMatrix=o,r}getFastPathSimpleProjectionMatrix(e){return this.calculatePosMatrix(e)}}function Xt(){t.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.")}function Yt(e){if(e.useSlerp)if(e.k<1){const i=t.bl(e.startEulerAngles.roll,e.startEulerAngles.pitch,e.startEulerAngles.bearing),r=t.bl(e.endEulerAngles.roll,e.endEulerAngles.pitch,e.endEulerAngles.bearing),n=new Float64Array(4);t.bm(n,i,r,e.k);const s=t.bn(n);e.tr.setRoll(s.roll),e.tr.setPitch(s.pitch),e.tr.setBearing(s.bearing)}else e.tr.setRoll(e.endEulerAngles.roll),e.tr.setPitch(e.endEulerAngles.pitch),e.tr.setBearing(e.endEulerAngles.bearing);else e.tr.setRoll(t.G.number(e.startEulerAngles.roll,e.endEulerAngles.roll,e.k)),e.tr.setPitch(t.G.number(e.startEulerAngles.pitch,e.endEulerAngles.pitch,e.k)),e.tr.setBearing(t.G.number(e.startEulerAngles.bearing,e.endEulerAngles.bearing,e.k))}function Kt(e,i,r,n,s){const o=s.padding,a=_e(s.worldSize,r.getNorthWest()),l=_e(s.worldSize,r.getNorthEast()),c=_e(s.worldSize,r.getSouthEast()),h=_e(s.worldSize,r.getSouthWest()),u=t.ap(-n),d=a.rotate(u),p=l.rotate(u),f=c.rotate(u),m=h.rotate(u),_=new t.P(Math.max(d.x,p.x,m.x,f.x),Math.max(d.y,p.y,m.y,f.y)),g=new t.P(Math.min(d.x,p.x,m.x,f.x),Math.min(d.y,p.y,m.y,f.y)),y=_.sub(g),x=(s.width-(o.left+o.right+i.left+i.right))/y.x,v=(s.height-(o.top+o.bottom+i.top+i.bottom))/y.y;if(v<0||x<0)return void Xt();const b=Math.min(t.at(s.scale*Math.min(x,v)),e.maxZoom),w=t.P.convert(e.offset),T=new t.P((i.left-i.right)/2,(i.top-i.bottom)/2).rotate(t.ap(n)),S=w.add(T).mult(s.scale/t.aq(b));return{center:ge(s.worldSize,a.add(c).div(2).sub(S)),zoom:b,bearing:n}}class Jt{get useGlobeControls(){return!1}handlePanInertia(e,t){const i=e.mag(),r=Math.abs(ye(t));return{easingOffset:e.mult(Math.min(.75*r/i,1)),easingCenter:t.center}}handleMapControlsRollPitchBearingZoom(e,t){e.bearingDelta&&t.setBearing(t.bearing+e.bearingDelta),e.pitchDelta&&t.setPitch(t.pitch+e.pitchDelta),e.rollDelta&&t.setRoll(t.roll+e.rollDelta),e.zoomDelta&&t.setZoom(t.zoom+e.zoomDelta)}handleMapControlsPan(e,t,i){e.around.distSqr(t.centerPoint)<.01||t.setLocationAtPoint(i,e.around)}cameraForBoxAndBearing(e,t,i,r,n){return Kt(e,t,i,r,n)}handleJumpToCenterZoom(e,i){e.zoom!==(void 0!==i.zoom?+i.zoom:e.zoom)&&e.setZoom(+i.zoom),void 0!==i.center&&e.setCenter(t.V.convert(i.center))}handleEaseTo(e,i){const r=e.zoom,n=e.padding,s={roll:e.roll,pitch:e.pitch,bearing:e.bearing},o={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},a=void 0!==i.zoom,l=!e.isPaddingEqual(i.padding);let c=!1;const h=a?+i.zoom:e.zoom;let u=e.centerPoint.add(i.offsetAsPoint);const d=e.screenPointToLocation(u),{center:p,zoom:f}=e.applyConstrain(t.V.convert(i.center||d),null!=h?h:r);Ut(e,p);const m=_e(e.worldSize,d),_=_e(e.worldSize,p).sub(m),g=t.aq(f-r);return c=f!==r,{easeFunc:a=>{if(c&&e.setZoom(t.G.number(r,f,a)),t.bo(s,o)||Yt({startEulerAngles:s,endEulerAngles:o,tr:e,k:a,useSlerp:s.roll!=o.roll}),l&&(e.interpolatePadding(n,i.padding,a),u=e.centerPoint.add(i.offsetAsPoint)),i.around)e.setLocationAtPoint(i.around,i.aroundPoint);else{const i=t.aq(e.zoom-r),n=f>r?Math.min(2,g):Math.max(.5,g),s=Math.pow(n,1-a),o=ge(e.worldSize,m.add(_.mult(a*s)).mult(i));e.setLocationAtPoint(e.renderWorldCopies?o.wrap():o,u)}},isZooming:c,elevationCenter:p}}handleFlyTo(e,i){const r=void 0!==i.zoom,n=e.zoom,s=e.applyConstrain(t.V.convert(i.center||i.locationAtOffset),r?+i.zoom:n),o=s.center,a=s.zoom;Ut(e,o);const l=_e(e.worldSize,i.locationAtOffset),c=_e(e.worldSize,o).sub(l),h=c.mag(),u=t.aq(a-n);let d;if(void 0!==i.minZoom){const r=Math.min(+i.minZoom,n,a),s=e.applyConstrain(o,r).zoom;d=t.aq(s-n)}return{easeFunc:(i,r,s,h)=>{e.setZoom(1===i?a:n+t.at(r));const u=1===i?o:ge(e.worldSize,l.add(c.mult(s)).mult(r));e.setLocationAtPoint(e.renderWorldCopies?u.wrap():u,h)},scaleOfZoom:u,targetCenter:o,scaleOfMinZoom:d,pixelPathLength:h}}}class Qt{constructor(e,t,i){this.blendFunction=e,this.blendColor=t,this.mask=i}}Qt.Replace=[1,0],Qt.disabled=new Qt(Qt.Replace,t.bp.transparent,[!1,!1,!1,!1]),Qt.unblended=new Qt(Qt.Replace,t.bp.transparent,[!0,!0,!0,!0]),Qt.alphaBlended=new Qt([1,771],t.bp.transparent,[!0,!0,!0,!0]);const ei=2305;class ti{constructor(e,t,i){this.enable=e,this.mode=t,this.frontFace=i}}ti.disabled=new ti(!1,1029,ei),ti.backCCW=new ti(!0,1029,ei),ti.frontCCW=new ti(!0,1028,ei);class ii{constructor(e,t,i){this.func=e,this.mask=t,this.range=i}}ii.ReadOnly=!1,ii.ReadWrite=!0,ii.disabled=new ii(519,ii.ReadOnly,[0,1]);const ri=7680;class ni{constructor(e,t,i,r,n,s){this.test=e,this.ref=t,this.mask=i,this.fail=r,this.depthFail=n,this.pass=s}}ni.disabled=new ni({func:519,mask:0},0,0,ri,ri,ri);const si=new WeakMap;function oi(e){var t;if(si.has(e))return si.get(e);{const i=null===(t=e.getParameter(e.VERSION))||void 0===t?void 0:t.startsWith("WebGL 2.0");return si.set(e,i),i}}class ai{get awaitingQuery(){return!!this._readbackQueue}constructor(e){this._readbackWaitFrames=4,this._measureWaitFrames=6,this._texWidth=1,this._texHeight=1,this._measuredError=0,this._updateCount=0,this._lastReadbackFrame=-1e3,this._readbackQueue=null,this._cachedRenderContext=e;const i=e.context,r=i.gl;this._texFormat=r.RGBA,this._texType=r.UNSIGNED_BYTE;const n=new t.aW;n.emplaceBack(-1,-1),n.emplaceBack(2,-1),n.emplaceBack(-1,2);const s=new t.aY;s.emplaceBack(0,1,2),this._fullscreenTriangle=new Ft(i.createVertexBuffer(n,Bt.members),i.createIndexBuffer(s),t.aX.simpleSegment(0,0,n.length,s.length)),this._resultBuffer=new Uint8Array(4),i.activeTexture.set(r.TEXTURE1);const o=r.createTexture();r.bindTexture(r.TEXTURE_2D,o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.NEAREST),r.texImage2D(r.TEXTURE_2D,0,this._texFormat,this._texWidth,this._texHeight,0,this._texFormat,this._texType,null),this._fbo=i.createFramebuffer(this._texWidth,this._texHeight,!1,!1),this._fbo.colorAttachment.set(o),oi(r)&&(this._pbo=r.createBuffer(),r.bindBuffer(r.PIXEL_PACK_BUFFER,this._pbo),r.bufferData(r.PIXEL_PACK_BUFFER,4,r.STREAM_READ),r.bindBuffer(r.PIXEL_PACK_BUFFER,null))}destroy(){const e=this._cachedRenderContext.context.gl;this._fullscreenTriangle.destroy(),this._fbo.destroy(),e.deleteBuffer(this._pbo),this._fullscreenTriangle=null,this._fbo=null,this._pbo=null,this._resultBuffer=null}updateErrorLoop(e,t){const i=this._updateCount;return this._readbackQueue?i>=this._readbackQueue.frameNumberIssued+this._readbackWaitFrames&&this._tryReadback():i>=this._lastReadbackFrame+this._measureWaitFrames&&this._renderErrorTexture(e,t),this._updateCount++,this._measuredError}_bindFramebuffer(){const e=this._cachedRenderContext.context,t=e.gl;e.activeTexture.set(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this._fbo.colorAttachment.get()),e.bindFramebuffer.set(this._fbo.framebuffer)}_renderErrorTexture(e,i){const r=this._cachedRenderContext.context,n=r.gl;if(this._bindFramebuffer(),r.viewport.set([0,0,this._texWidth,this._texHeight]),r.clear({color:t.bp.transparent}),this._cachedRenderContext.useProgram("projectionErrorMeasurement").draw(r,n.TRIANGLES,ii.disabled,ni.disabled,Qt.unblended,ti.disabled,((e,t)=>({u_input:e,u_output_expected:t}))(e,i),null,null,"$clipping",this._fullscreenTriangle.vertexBuffer,this._fullscreenTriangle.indexBuffer,this._fullscreenTriangle.segments),this._pbo&&oi(n)){n.bindBuffer(n.PIXEL_PACK_BUFFER,this._pbo),n.readBuffer(n.COLOR_ATTACHMENT0),n.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,0),n.bindBuffer(n.PIXEL_PACK_BUFFER,null);const e=n.fenceSync(n.SYNC_GPU_COMMANDS_COMPLETE,0);n.flush(),this._readbackQueue={frameNumberIssued:this._updateCount,sync:e}}else this._readbackQueue={frameNumberIssued:this._updateCount,sync:null}}_tryReadback(){const e=this._cachedRenderContext.context.gl;if(this._pbo&&this._readbackQueue&&oi(e)){const i=e.clientWaitSync(this._readbackQueue.sync,0,0);if(i===e.WAIT_FAILED)return t.w("WebGL2 clientWaitSync failed."),this._readbackQueue=null,void(this._lastReadbackFrame=this._updateCount);if(i===e.TIMEOUT_EXPIRED)return;e.bindBuffer(e.PIXEL_PACK_BUFFER,this._pbo),e.getBufferSubData(e.PIXEL_PACK_BUFFER,0,this._resultBuffer,0,4),e.bindBuffer(e.PIXEL_PACK_BUFFER,null)}else this._bindFramebuffer(),e.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,this._resultBuffer);this._readbackQueue=null,this._measuredError=ai._parseRGBA8float(this._resultBuffer),this._lastReadbackFrame=this._updateCount}static _parseRGBA8float(e){let t=0;return t+=e[0]/256,t+=e[1]/65536,t+=e[2]/16777216,e[3]<127&&(t=-t),t/128}}const li=t.a5/128;function ci(e,i){const r=void 0!==e.granularity?Math.max(e.granularity,1):1,n=r+(e.generateBorders?2:0),s=r+(e.extendToNorthPole||e.generateBorders?1:0)+(e.extendToSouthPole||e.generateBorders?1:0),o=n+1,a=s+1,l=e.generateBorders?-1:0,c=e.generateBorders||e.extendToNorthPole?-1:0,h=r+(e.generateBorders?1:0),u=r+(e.generateBorders||e.extendToSouthPole?1:0),d=o*a,p=n*s*6,f=o*a>65536;if(f&&"16bit"===i)throw new Error("Granularity is too large and meshes would not fit inside 16 bit vertex indices.");const m=f||"32bit"===i,_=new Int16Array(2*d);let g=0;for(let v=c;v<=u;v++)for(let i=l;i<=h;i++){let n=i/r*t.a5;-1===i&&(n=-li),i===r+1&&(n=t.a5+li);let s=v/r*t.a5;-1===v&&(s=e.extendToNorthPole?t.br:-li),v===r+1&&(s=e.extendToSouthPole?t.bs:t.a5+li),_[g++]=n,_[g++]=s}const y=m?new Uint32Array(p):new Uint16Array(p);let x=0;for(let t=0;t0}get latitudeErrorCorrectionRadians(){return this._verticalPerspectiveProjection.latitudeErrorCorrectionRadians}get currentProjection(){return this.useGlobeRendering?this._verticalPerspectiveProjection:this._mercatorProjection}get name(){return"globe"}get useSubdivision(){return this.currentProjection.useSubdivision}get shaderVariantName(){return this.currentProjection.shaderVariantName}get shaderDefine(){return this.currentProjection.shaderDefine}get shaderPreludeCode(){return this.currentProjection.shaderPreludeCode}get vertexShaderPreludeCode(){return this.currentProjection.vertexShaderPreludeCode}get subdivisionGranularity(){return this.currentProjection.subdivisionGranularity}get useGlobeControls(){return this.transitionState>0}destroy(){this._mercatorProjection.destroy(),this._verticalPerspectiveProjection.destroy()}updateGPUdependent(e){this._mercatorProjection.updateGPUdependent(e),this._verticalPerspectiveProjection.updateGPUdependent(e)}getMeshFromTileID(e,t,i,r,n){return this.currentProjection.getMeshFromTileID(e,t,i,r,n)}setProjection(e){this._transitionable.setValue("type",(null==e?void 0:e.type)||"mercator")}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()||this.currentProjection.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e)}setErrorQueryLatitudeDegrees(e){this._verticalPerspectiveProjection.setErrorQueryLatitudeDegrees(e),this._mercatorProjection.setErrorQueryLatitudeDegrees(e)}}function fi(e){const t=gi(e.worldSize,e.center.lat);return 2*Math.PI*t}function mi(e,i,r,n,s){const o=1/(1<1e-6){const n=e[0]/r,s=Math.acos(e[2]/r),o=(n>0?s:-s)/Math.PI*180;return new t.V(t.W(o,-180,180),i)}return new t.V(0,i)}function xi(e){return Math.cos(e*Math.PI/180)}function vi(e,i){const r=xi(e),n=xi(i);return t.at(n/r)}function bi(e,i){const r=e.rotate(i.bearingInRadians),n=i.zoom+vi(i.center.lat,0),s=t.bu(1/xi(i.center.lat),1/xi(Math.min(Math.abs(i.center.lat),60)),t.bx(n,7,3,0,1)),o=360/fi({worldSize:i.worldSize,center:{lat:i.center.lat}});return new t.V(i.center.lng-r.x*o*s,t.an(i.center.lat+r.y*o,-t.ao,t.ao))}function wi(e){const t=.5*e,i=Math.sin(t),r=Math.cos(t);return Math.log(i+r)-Math.log(r-i)}function Ti(e,i,r,n){const s=e.lat+r*n;if(Math.abs(r)>1){const o=(Math.sign(e.lat+r)!==Math.sign(e.lat)?-Math.abs(e.lat):Math.abs(e.lat))*Math.PI/180,a=Math.abs(e.lat+r)*Math.PI/180,l=wi(o+n*(a-o)),c=wi(o),h=wi(a);return new t.V(e.lng+i*((l-c)/(h-c)),s)}return new t.V(e.lng+i*n,s)}class Si{constructor(e){this._cachePrevious=new Map,this._cache=new Map,this._hadAnyChanges=!1,this._boundingVolumeFactory=e}swapBuffers(){if(!this._hadAnyChanges)return;const e=this._cachePrevious;this._cachePrevious=this._cache,this._cache=e,this._cache.clear(),this._hadAnyChanges=!1}getTileBoundingVolume(e,t,i,r){const n=`${e.z}_${e.x}_${e.y}_${(null==r?void 0:r.terrain)?"t":""}`,s=this._cache.get(n);if(s)return s;const o=this._cachePrevious.get(n);if(o)return this._cache.set(n,o),o;const a=this._boundingVolumeFactory(e,t,i,r);return this._cache.set(n,a),this._hadAnyChanges=!0,a}}class Pi{constructor(e,t,i,r){this.min=i,this.max=r,this.points=e,this.planes=t}static fromAabb(e,t){const i=[];for(let r=0;r<8;r++)i.push([1&~r?e[0]:t[0],1==(r>>1&1)?t[1]:e[1],1==(r>>2&1)?t[2]:e[2]]);return new Pi(i,[[-1,0,0,t[0]],[1,0,0,-e[0]],[0,-1,0,t[1]],[0,1,0,-e[1]],[0,0,-1,t[2]],[0,0,1,-e[2]]],e,t)}static fromCenterSizeAngles(e,i,r){const n=t.bB([],r[0],r[1],r[2]),s=t.bC([],[i[0],0,0],n),o=t.bC([],[0,i[1],0],n),a=t.bC([],[0,0,i[2]],n),l=[...e],c=[...e];for(let t=0;t<8;t++)for(let i=0;i<3;i++){const r=e[i]+s[i]*(1&~t?-1:1)+o[i]*(1==(t>>1&1)?1:-1)+a[i]*(1==(t>>2&1)?1:-1);l[i]=Math.min(l[i],r),c[i]=Math.max(c[i],r)}const h=[];for(let u=0;u<8;u++){const i=[...e];t.b0(i,i,t.a$([],s,1&~u?-1:1)),t.b0(i,i,t.a$([],o,1==(u>>1&1)?1:-1)),t.b0(i,i,t.a$([],a,1==(u>>2&1)?1:-1)),h.push(i)}return new Pi(h,[[...s,-t.b5(s,h[0])],[...o,-t.b5(o,h[0])],[...a,-t.b5(a,h[0])],[-s[0],-s[1],-s[2],-t.b5(s,h[7])],[-o[0],-o[1],-o[2],-t.b5(o,h[7])],[-a[0],-a[1],-a[2],-t.b5(a,h[7])]],l,c)}intersectsFrustum(e){let t=!0;const i=this.points.length,r=this.planes.length,n=e.planes.length,s=e.points.length;for(let o=0;o=0&&n++}if(0===n)return 0;n=0&&i++}if(0===i)return 0}return 1}intersectsPlane(e){const t=this.points.length;let i=0;for(let r=0;r=0&&i++}return i===t?2:0===i?0:1}}function Ii(e,t,i){const r=e-t;return r<0?-r:Math.max(0,r-i)}function Mi(e,t,i,r,n){const s=e-i;let o;return o=s<0?Math.min(-s,1+s-n):s>1?Math.min(Math.max(s-n,0),1-s):0,Math.max(o,Ii(t,r,n))}class Ei{constructor(){this._boundingVolumeCache=new Si(this._computeTileBoundingVolume)}prepareNextFrame(){this._boundingVolumeCache.swapBuffers()}distanceToTile2d(e,t,i,r){const n=1<4}allowWorldCopies(){return!1}getTileBoundingVolume(e,t,i,r){return this._boundingVolumeCache.getTileBoundingVolume(e,t,i,r)}_computeTileBoundingVolume(e,i,r,n){var s,o;let a=0,l=0;if(null==n?void 0:n.terrain){const c=new t.a2(e.z,i,e.z,e.x,e.y),h=n.terrain.getMinMaxElevation(c);a=null!==(s=h.minElevation)&&void 0!==s?s:Math.min(0,r),l=null!==(o=h.maxElevation)&&void 0!==o?o:Math.max(0,r)}if(a/=t.bE,l/=t.bE,a+=1,l+=1,e.z<=0)return Pi.fromAabb([-l,-l,-l],[l,l,l]);if(1===e.z)return Pi.fromAabb([0===e.x?-l:0,0===e.y?0:-l,-l],[0===e.x?0:l,0===e.y?l:0,l]);{const i=[mi(0,0,e.x,e.y,e.z),mi(t.a5,0,e.x,e.y,e.z),mi(t.a5,t.a5,e.x,e.y,e.z),mi(0,t.a5,e.x,e.y,e.z)],r=[];for(const e of i)r.push(t.a$([],e,l));if(l!==a)for(const e of i)r.push(t.a$([],e,a));0===e.y&&r.push([0,1,0]),e.y===(1<=(1<{const r=t.an(e.lat,-t.ao,t.ao),n=t.an(+i,this.minZoom+vi(0,r),this.maxZoom);return{center:new t.V(e.lng,r),zoom:n}},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new qt({calcMatrices:()=>{this._calcMatrices()},defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new Ei}clone(){const e=new Ai;return e.apply(this),e}apply(e,t){this._globeLatitudeErrorCorrectionRadians=t||0,this._helper.apply(e)}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._globeViewProjMatrixNoCorrection}get inverseProjectionMatrix(){return this._globeProjMatrixInverted}get cameraPosition(){const e=t.bz();return e[0]=this._cameraPosition[0],e[1]=this._cameraPosition[1],e[2]=this._cameraPosition[2],e}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}getProjectionData(e){const{overscaledTileID:t,applyGlobeMatrix:i}=e,r=this._helper.getMercatorTileCoordinates(t);return{mainMatrix:this._globeViewProjMatrix32f,tileMercatorCoords:r,clippingPlane:this._cachedClippingPlane,projectionTransition:i?1:0,fallbackMatrix:this._globeViewProjMatrix32f}}_computeClippingPlane(e){const i=this.pitchInRadians,r=this.cameraToCenterDistance/e,n=Math.sin(i)*r,s=Math.cos(i)*r+1,o=1/Math.sqrt(n*n+s*s)*1;let a=-n,l=s;const c=Math.sqrt(a*a+l*l);a/=c,l/=c;const h=[0,a,l];t.bG(h,h,[0,0,0],-this.bearingInRadians),t.bH(h,h,[0,0,0],-1*this.center.lat*Math.PI/180),t.bI(h,h,[0,0,0],this.center.lng*Math.PI/180);const u=1/t.b7(h);return t.a$(h,h,u),[...h,-o*u]}isLocationOccluded(e){return!this.isSurfacePointVisible(_i(e))}transformLightDirection(e){const i=this._helper._center.lng*Math.PI/180,r=this._helper._center.lat*Math.PI/180,n=Math.cos(r),s=[Math.sin(i)*n,Math.sin(r),Math.cos(i)*n],o=[s[2],0,-s[0]],a=[0,0,0];t.b4(a,o,s),t.b3(o,o),t.b3(a,a);const l=[0,0,0];return t.b3(l,[o[0]*e[0]+a[0]*e[1]+s[0]*e[2],o[1]*e[0]+a[1]*e[1]+s[1]*e[2],o[2]*e[0]+a[2]*e[1]+s[2]*e[2]]),l}getPixelScale(){return 1/Math.cos(this._helper._center.lat*Math.PI/180)}getCircleRadiusCorrection(){return Math.cos(this._helper._center.lat*Math.PI/180)}getPitchedTextCorrection(e,i,r){const n=function(e,i,r){const n=1/(1<s&&(s=e),ia&&(a=i)}const h=[c.lng+o,c.lat+l,c.lng+s,c.lat+a];return this.isSurfacePointOnScreen([0,1,0])&&(h[3]=90,h[0]=-180,h[2]=180),this.isSurfacePointOnScreen([0,-1,0])&&(h[1]=-90,h[0]=-180,h[2]=180),new W(h)}calculateCenterFromCameraLngLatAlt(e,t,i,r){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,r)}setLocationAtPoint(e,i){const r=_i(this.unprojectScreenPoint(i)),n=_i(e),s=t.bz();t.bL(s);const o=t.bz();t.bI(o,r,s,-this.center.lng*Math.PI/180),t.bH(o,o,s,this.center.lat*Math.PI/180);const a=n[0]*n[0]+n[2]*n[2],l=o[0]*o[0];if(a=-g&&f<=g,x=_>=-g&&_<=g;let v,b;if(y&&x){const e=this.center.lng*Math.PI/180,i=this.center.lat*Math.PI/180;t.bN(u,e)+t.bN(f,i)=0}isSurfacePointOnScreen(e){if(!this.isSurfacePointVisible(e))return!1;const i=t.bF();return t.aH(i,[...e,1],this._globeViewProjMatrixNoCorrection),i[0]/=i[3],i[1]/=i[3],i[2]/=i[3],i[0]>-1&&i[0]<1&&i[1]>-1&&i[1]<1&&i[2]>-1&&i[2]<1}rayPlanetIntersection(e,i){const r=t.b5(e,i),n=t.bz(),s=t.bz();t.a$(s,i,r),t.b2(n,e,s);const o=1-t.b5(n,n);if(o<0)return null;const a=t.b5(e,e)-1,l=-r+(r<0?1:-1)*Math.sqrt(o),c=a/l,h=l;return{tMin:Math.min(c,h),tMax:Math.max(c,h)}}unprojectScreenPoint(e){const i=this._cameraPosition,r=this.getRayDirectionFromPixel(e),n=this.rayPlanetIntersection(i,r);if(n){const e=t.bz();t.b0(e,i,[r[0]*n.tMin,r[1]*n.tMin,r[2]*n.tMin]);const s=t.bz();return t.b3(s,e),yi(s)}const s=this._cachedClippingPlane,o=s[0]*r[0]+s[1]*r[1]+s[2]*r[2],a=-t.bb(s,i)/o,l=t.bz();if(a>0)t.b0(l,i,[r[0]*a,r[1]*a,r[2]*a]);else{const e=t.bz();t.b0(e,i,[2*r[0],2*r[1],2*r[2]]);const n=t.bb(this._cachedClippingPlane,e);t.b2(l,e,[this._cachedClippingPlane[0]*n,this._cachedClippingPlane[1]*n,this._cachedClippingPlane[2]*n])}const c=function(e){const i=t.bz();return i[0]=e[0]*-e[3],i[1]=e[1]*-e[3],i[2]=e[2]*-e[3],{center:i,radius:Math.sqrt(1-e[3]*e[3])}}(s);return yi(function(e,i,r){const n=t.bz();t.b2(n,r,e);const s=t.bz();return t.bA(s,e,n,i/t.b9(n)),s}(c.center,c.radius,l))}getMatrixForModel(e,i){const r=t.V.convert(e),n=1/t.bE,s=t.bj();return t.bJ(s,s,r.lng/180*Math.PI),t.bh(s,s,-r.lat/180*Math.PI),t.O(s,s,[0,0,1+i/t.bE]),t.bh(s,s,.5*Math.PI),t.Q(s,s,[n,n,n]),s}getProjectionDataForCustomLayer(e=!0){const i=this.getProjectionData({overscaledTileID:new t.a2(0,0,0,0,0),applyGlobeMatrix:e});return i.tileMercatorCoords=[0,0,1,1],i}getFastPathSimpleProjectionMatrix(e){}}class Di{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e)}setMaxZoom(e){this._helper.setMaxZoom(e)}setMinPitch(e){this._helper.setMinPitch(e)}setMaxPitch(e){this._helper.setMaxPitch(e)}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e)}setBearing(e){this._helper.setBearing(e)}setPitch(e){this._helper.setPitch(e)}setRoll(e){this._helper.setRoll(e)}setFov(e){this._helper.setFov(e)}setZoom(e){this._helper.setZoom(e)}setCenter(e){this._helper.setCenter(e)}setElevation(e){this._helper.setElevation(e)}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e)}setPadding(e){this._helper.setPadding(e)}interpolatePadding(e,t,i){return this._helper.interpolatePadding(e,t,i)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e)}setConstrainOverride(e){this._helper.setConstrainOverride(e)}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}get isGlobeRendering(){return this._globeness>0}setTransitionState(e,t){this._globeness=e,this._globeLatitudeErrorCorrectionRadians=t,this._calcMatrices(),this._verticalPerspectiveTransform.getCoveringTilesDetailsProvider().prepareNextFrame(),this._mercatorTransform.getCoveringTilesDetailsProvider().prepareNextFrame()}get currentTransform(){return this.isGlobeRendering?this._verticalPerspectiveTransform:this._mercatorTransform}constructor(e){this._globeLatitudeErrorCorrectionRadians=0,this._globeness=1,this.defaultConstrain=(e,t)=>this.currentTransform.defaultConstrain(e,t),this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new qt({calcMatrices:()=>{this._calcMatrices()},defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._globeness=1,this._mercatorTransform=new Ht,this._verticalPerspectiveTransform=new Ai}clone(){const e=new Di;return e._globeness=this._globeness,e._globeLatitudeErrorCorrectionRadians=this._globeLatitudeErrorCorrectionRadians,e.apply(this),e}apply(e){this._helper.apply(e),this._mercatorTransform.apply(this),this._verticalPerspectiveTransform.apply(this,this._globeLatitudeErrorCorrectionRadians)}get projectionMatrix(){return this.currentTransform.projectionMatrix}get modelViewProjectionMatrix(){return this.currentTransform.modelViewProjectionMatrix}get inverseProjectionMatrix(){return this.currentTransform.inverseProjectionMatrix}get cameraPosition(){return this.currentTransform.cameraPosition}getProjectionData(e){const t=this._mercatorTransform.getProjectionData(e),i=this._verticalPerspectiveTransform.getProjectionData(e);return{mainMatrix:this.isGlobeRendering?i.mainMatrix:t.mainMatrix,clippingPlane:i.clippingPlane,tileMercatorCoords:i.tileMercatorCoords,projectionTransition:e.applyGlobeMatrix?this._globeness:0,fallbackMatrix:t.fallbackMatrix}}isLocationOccluded(e){return this.currentTransform.isLocationOccluded(e)}transformLightDirection(e){return this.currentTransform.transformLightDirection(e)}getPixelScale(){return t.bu(this._mercatorTransform.getPixelScale(),this._verticalPerspectiveTransform.getPixelScale(),this._globeness)}getCircleRadiusCorrection(){return t.bu(this._mercatorTransform.getCircleRadiusCorrection(),this._verticalPerspectiveTransform.getCircleRadiusCorrection(),this._globeness)}getPitchedTextCorrection(e,i,r){const n=this._mercatorTransform.getPitchedTextCorrection(e,i,r),s=this._verticalPerspectiveTransform.getPitchedTextCorrection(e,i,r);return t.bu(n,s,this._globeness)}projectTileCoordinates(e,t,i,r){return this.currentTransform.projectTileCoordinates(e,t,i,r)}_calcMatrices(){this._helper._width&&this._helper._height&&(this._verticalPerspectiveTransform.apply(this,this._globeLatitudeErrorCorrectionRadians),this._helper._nearZ=this._verticalPerspectiveTransform.nearZ,this._helper._farZ=this._verticalPerspectiveTransform.farZ,this._mercatorTransform.apply(this,!0,this.isGlobeRendering),this._helper._nearZ=this._mercatorTransform.nearZ,this._helper._farZ=this._mercatorTransform.farZ)}calculateFogMatrix(e){return this.currentTransform.calculateFogMatrix(e)}getVisibleUnwrappedCoordinates(e){return this.currentTransform.getVisibleUnwrappedCoordinates(e)}getCameraFrustum(){return this.currentTransform.getCameraFrustum()}getClippingPlane(){return this.currentTransform.getClippingPlane()}getCoveringTilesDetailsProvider(){return this.currentTransform.getCoveringTilesDetailsProvider()}recalculateZoomAndCenter(e){this._mercatorTransform.recalculateZoomAndCenter(e),this._verticalPerspectiveTransform.recalculateZoomAndCenter(e)}maxPitchScaleFactor(){return this._mercatorTransform.maxPitchScaleFactor()}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){return this._helper.getCameraLngLat()}lngLatToCameraDepth(e,t){return this.currentTransform.lngLatToCameraDepth(e,t)}populateCache(e){this._mercatorTransform.populateCache(e),this._verticalPerspectiveTransform.populateCache(e)}getBounds(){return this.currentTransform.getBounds()}calculateCenterFromCameraLngLatAlt(e,t,i,r){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,r)}setLocationAtPoint(e,t){if(!this.isGlobeRendering)return this._mercatorTransform.setLocationAtPoint(e,t),void this.apply(this._mercatorTransform);this._verticalPerspectiveTransform.setLocationAtPoint(e,t),this.apply(this._verticalPerspectiveTransform)}locationToScreenPoint(e,t){return this.currentTransform.locationToScreenPoint(e,t)}screenPointToMercatorCoordinate(e,t){return this.currentTransform.screenPointToMercatorCoordinate(e,t)}screenPointToLocation(e,t){return this.currentTransform.screenPointToLocation(e,t)}isPointOnMapSurface(e,t){return this.currentTransform.isPointOnMapSurface(e,t)}getRayDirectionFromPixel(e){return this._verticalPerspectiveTransform.getRayDirectionFromPixel(e)}getMatrixForModel(e,t){return this.currentTransform.getMatrixForModel(e,t)}getProjectionDataForCustomLayer(e=!0){const t=this._mercatorTransform.getProjectionDataForCustomLayer(e);if(!this.isGlobeRendering)return t;const i=this._verticalPerspectiveTransform.getProjectionDataForCustomLayer(e);return i.fallbackMatrix=t.mainMatrix,i}getFastPathSimpleProjectionMatrix(e){return this.currentTransform.getFastPathSimpleProjectionMatrix(e)}}class zi{get useGlobeControls(){return!0}handlePanInertia(e,i){const r=bi(e,i);return Math.abs(r.lng-i.center.lng)>180&&(r.lng=i.center.lng+179.5*Math.sign(r.lng-i.center.lng)),{easingCenter:r,easingOffset:new t.P(0,0)}}handleMapControlsRollPitchBearingZoom(e,i){const r=e.around,n=i.screenPointToLocation(r);e.bearingDelta&&i.setBearing(i.bearing+e.bearingDelta),e.pitchDelta&&i.setPitch(i.pitch+e.pitchDelta),e.rollDelta&&i.setRoll(i.roll+e.rollDelta);const s=i.zoom;e.zoomDelta&&i.setZoom(i.zoom+e.zoomDelta);const o=i.zoom-s;if(0===o)return;const a=t.bK(i.center.lng,n.lng),l=a/(Math.abs(a/180)+1),c=t.bK(i.center.lat,n.lat),h=i.getRayDirectionFromPixel(r),u=i.cameraPosition,d=-1*t.b5(u,h),p=t.bz();t.b0(p,u,[h[0]*d,h[1]*d,h[2]*d]);const f=t.b7(p)-1,m=Math.exp(.5*-Math.max(f-.3,0)),_=gi(i.worldSize,i.center.lat)/Math.min(i.width,i.height),g=t.bx(_,.9,.5,1,.25),y=(1-t.aq(-o))*Math.min(m,g),x=i.center.lat,v=i.zoom,b=new t.V(i.center.lng+l*y,t.an(i.center.lat+c*y,-t.ao,t.ao));i.setLocationAtPoint(n,r);const w=i.center,T=t.bx(Math.abs(a),45,85,0,1),S=t.bx(_,.75,.35,0,1),P=Math.pow(Math.max(T,S),.25),I=t.bK(w.lng,b.lng),M=t.bK(w.lat,b.lat);i.setCenter(new t.V(w.lng+I*P,w.lat+M*P).wrap()),i.setZoom(v+vi(x,i.center.lat))}handleMapControlsPan(e,t,i){if(!e.panDelta)return;const r=t.center.lat,n=t.zoom;t.setCenter(bi(e.panDelta,t).wrap()),t.setZoom(n+vi(r,t.center.lat))}cameraForBoxAndBearing(e,i,r,n,s){const o=Kt(e,i,r,n,s),a=i.left/s.width*2-1,l=(s.width-i.right)/s.width*2-1,c=i.top/s.height*-2+1,h=(s.height-i.bottom)/s.height*-2+1,u=t.bK(r.getWest(),r.getEast())<0,d=u?r.getEast():r.getWest(),p=u?r.getWest():r.getEast(),f=Math.max(r.getNorth(),r.getSouth()),m=Math.min(r.getNorth(),r.getSouth()),_=d+.5*t.bK(d,p),g=f+.5*t.bK(f,m),y=s.clone();y.setCenter(o.center),y.setBearing(o.bearing),y.setPitch(0),y.setRoll(0),y.setZoom(o.zoom);const x=y.modelViewProjectionMatrix,v=[_i(r.getNorthWest()),_i(r.getNorthEast()),_i(r.getSouthWest()),_i(r.getSouthEast()),_i(new t.V(p,g)),_i(new t.V(d,g)),_i(new t.V(_,f)),_i(new t.V(_,m))],b=_i(o.center);let w=Number.POSITIVE_INFINITY;for(const t of v)a<0&&(w=zi.getLesserNonNegativeNonNull(w,zi.solveVectorScale(t,b,x,"x",a))),l>0&&(w=zi.getLesserNonNegativeNonNull(w,zi.solveVectorScale(t,b,x,"x",l))),c>0&&(w=zi.getLesserNonNegativeNonNull(w,zi.solveVectorScale(t,b,x,"y",c))),h<0&&(w=zi.getLesserNonNegativeNonNull(w,zi.solveVectorScale(t,b,x,"y",h)));if(Number.isFinite(w)&&0!==w)return o.zoom=y.zoom+t.at(w),o;Xt()}handleJumpToCenterZoom(e,i){const r=e.center.lat,n=e.applyConstrain(i.center?t.V.convert(i.center):e.center,e.zoom).center;e.setCenter(n.wrap());const s=void 0!==i.zoom?+i.zoom:e.zoom+vi(r,n.lat);e.zoom!==s&&e.setZoom(s)}handleEaseTo(e,i){const r=e.zoom,n=e.center,s=e.padding,o={roll:e.roll,pitch:e.pitch,bearing:e.bearing},a={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},l=void 0!==i.zoom,c=!e.isPaddingEqual(i.padding);let h=!1;const u=i.center?t.V.convert(i.center):n,d=e.applyConstrain(u,r).center;Ut(e,d);const p=e.clone();p.setCenter(d),p.setZoom(l?+i.zoom:r+vi(n.lat,u.lat)),p.setBearing(i.bearing);const f=new t.P(t.an(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.an(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));p.setLocationAtPoint(d,f);const m=(i.offset&&i.offsetAsPoint.mag())>0?p.center:d,_=l?+i.zoom:r+vi(n.lat,m.lat),g=r+vi(n.lat,0),y=_+vi(m.lat,0),x=t.bK(n.lng,m.lng),v=t.bK(n.lat,m.lat),b=t.aq(y-g);return h=_!==r,{easeFunc:r=>{if(t.bo(o,a)||Yt({startEulerAngles:o,endEulerAngles:a,tr:e,k:r,useSlerp:o.roll!=a.roll}),c&&e.interpolatePadding(s,i.padding,r),i.around)t.w("Easing around a point is not supported under globe projection."),e.setLocationAtPoint(i.around,i.aroundPoint);else{const t=y>g?Math.min(2,b):Math.max(.5,b),i=Math.pow(t,1-r),s=Ti(n,x,v,r*i);e.setCenter(s.wrap())}if(h){const i=t.G.number(g,y,r)+vi(0,e.center.lat);e.setZoom(i)}},isZooming:h,elevationCenter:m}}handleFlyTo(e,i){const r=void 0!==i.zoom,n=e.center,s=e.zoom,o=e.padding,a=!e.isPaddingEqual(i.padding),l=e.applyConstrain(t.V.convert(i.center||i.locationAtOffset),s).center,c=r?+i.zoom:e.zoom+vi(e.center.lat,l.lat),h=e.clone();h.setCenter(l),h.setZoom(c),h.setBearing(i.bearing);const u=new t.P(t.an(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.an(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));h.setLocationAtPoint(l,u);const d=h.center;Ut(e,d);const p=function(e,i,r){const n=_i(i),s=_i(r),o=t.b5(n,s),a=Math.acos(o),l=fi(e);return a/(2*Math.PI)*l}(e,n,d),f=s+vi(n.lat,0),m=c+vi(d.lat,0),_=t.aq(m-f);let g;if("number"==typeof i.minZoom){const r=+i.minZoom+vi(d.lat,0),n=Math.min(r,f,m)+vi(0,d.lat),s=e.applyConstrain(d,n).zoom+vi(d.lat,0);g=t.aq(s-f)}const y=t.bK(n.lng,d.lng),x=t.bK(n.lat,d.lat);return{easeFunc:(r,s,l,h)=>{const u=Ti(n,y,x,l);a&&e.interpolatePadding(o,i.padding,r);const p=1===r?d:u;e.setCenter(p.wrap());const m=f+t.at(s);e.setZoom(1===r?c:m+vi(0,p.lat))},scaleOfZoom:_,targetCenter:d,scaleOfMinZoom:g,pixelPathLength:p}}static solveVectorScale(e,t,i,r,n){const s="x"===r?[i[0],i[4],i[8],i[12]]:[i[1],i[5],i[9],i[13]],o=[i[3],i[7],i[11],i[15]],a=e[0]*s[0]+e[1]*s[1]+e[2]*s[2],l=e[0]*o[0]+e[1]*o[1]+e[2]*o[2],c=t[0]*s[0]+t[1]*s[1]+t[2]*s[2],h=t[0]*o[0]+t[1]*o[1]+t[2]*o[2];return c+n*l===a+n*h||o[3]*(a-c)+s[3]*(h-l)+a*h==c*l?null:(c+s[3]-n*h-n*o[3])/(c-a-n*h+n*l)}static getLesserNonNegativeNonNull(e,t){return null!==t&&t>=0&&tt.B(e,i&&i.filter(e=>"source.canvas"!==e.identifier)),Li=t.bO();class Fi extends t.E{constructor(e,i={}){var r,n;super(),this._rtlPluginLoaded=()=>{for(const e in this.tileManagers){const t=this.tileManagers[e].getSource().type;"vector"!==t&&"geojson"!==t||this.tileManagers[e].reload()}},this.map=e,this.dispatcher=new j(V(),e._getMapId()),this.dispatcher.registerMessageHandler("GG",(e,t)=>this.getGlyphs(e,t)),this.dispatcher.registerMessageHandler("GI",(e,t)=>this.getImages(e,t)),this.dispatcher.registerMessageHandler("GDA",(e,t)=>this.getDashes(e,t)),this.imageManager=new w,this.imageManager.setEventedParent(this);const s=(null===(r=e._container)||void 0===r?void 0:r.lang)||"undefined"!=typeof document&&(null===(n=document.documentElement)||void 0===n?void 0:n.lang)||void 0;this.glyphManager=new M(e._requestManager,i.localIdeographFontFamily,s),this.lineAtlas=new k(256,512),this.crossTileSymbolIndex=new zt,this._setInitialValues(),this._resetUpdates(),this.dispatcher.broadcast("SR",t.bP()),ce().on(oe,this._rtlPluginLoaded),this.on("data",e=>{if("source"!==e.dataType||"metadata"!==e.sourceDataType)return;const t=this.tileManagers[e.sourceId];if(!t)return;const i=t.getSource();if(i&&i.vectorLayerIds)for(const r in this._layers){const e=this._layers[r];e.source===i.id&&this._validateLayer(e)}})}_setInitialValues(){var e;this._spritesImagesIds={},this._layers={},this._order=[],this.tileManagers={},this.zoomHistory=new t.bQ,this._availableImages=[],this._globalState={},this._serializedLayers={},this.stylesheet=null,this.light=null,this.sky=null,this.projection&&(this.projection.destroy(),delete this.projection),this._loaded=!1,this._changed=!1,this._updatedLayers={},this._updatedSources={},this._changedImages={},this._glyphsDidChange=!1,this._updatedPaintProps={},this._layerOrderChanged=!1,this.crossTileSymbolIndex=new((null===(e=this.crossTileSymbolIndex)||void 0===e?void 0:e.constructor)||Object),this.pauseablePlacement=void 0,this.placement=void 0,this.z=0}setGlobalStateProperty(e,i){var r,n,s;this._checkLoaded();const o=null===i?null!==(s=null===(n=null===(r=this.stylesheet.state)||void 0===r?void 0:r[e])||void 0===n?void 0:n.default)&&void 0!==s?s:null:i;if(t.bR(o,this._globalState[e]))return this;this._globalState[e]=o,this._applyGlobalStateChanges([e])}getGlobalState(){return this._globalState}setGlobalState(e){this._checkLoaded();const i=[];for(const r in e)!t.bR(this._globalState[r],e[r].default)&&(i.push(r),this._globalState[r]=e[r].default);this._applyGlobalStateChanges(i)}_applyGlobalStateChanges(e){if(0===e.length)return;const t=new Set,i={};for(const r of e){i[r]=this._globalState[r];for(const e in this._layers){const i=this._layers[e],n=i.getLayoutAffectingGlobalStateRefs(),s=i.getPaintAffectingGlobalStateRefs(),o=i.getVisibilityAffectingGlobalStateRefs();if(n.has(r)&&t.add(i.source),s.has(r))for(const{name:e,value:t}of s.get(r))this._updatePaintProperty(i,e,t);(null==o?void 0:o.has(r))&&(i.recalculateVisibility(),this._updateLayer(i))}}this.dispatcher.broadcast("UGS",i);for(const r in this.tileManagers)t.has(r)&&(this._reloadSource(r),this._changed=!0)}loadURL(e,i={},r){this.fire(new t.l("dataloading",{dataType:"style"})),i.validate="boolean"!=typeof i.validate||i.validate;const n=this.map._requestManager.transformRequest(e,"Style");this._loadStyleRequest=new AbortController;const s=this._loadStyleRequest;t.j(n,this._loadStyleRequest).then(e=>{this._loadStyleRequest=null,this._load(e.data,i,r)}).catch(e=>{this._loadStyleRequest=null,e&&!s.signal.aborted&&this.fire(new t.k(e))})}loadJSON(e,i={},r){this.fire(new t.l("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,a.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,i.validate=!1!==i.validate,this._load(e,i,r)}).catch(()=>{})}loadEmpty(){this.fire(new t.l("dataloading",{dataType:"style"})),this._load(Li,{validate:!1})}_load(e,i,r){var n,s;let o=i.transformStyle?i.transformStyle(r,e):e;if(!i.validate||!Ri(this,t.C(o))){o=Object.assign({},o),this._loaded=!0,this.stylesheet=o;for(const e in o.sources)this.addSource(e,o.sources[e],{validate:!1});o.sprite?this._loadSprite(o.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(o.glyphs),this._createLayers(),this.light=new A(this.stylesheet.light),this._setProjectionInternal((null===(n=this.stylesheet.projection)||void 0===n?void 0:n.type)||"mercator"),this.sky=new z(this.stylesheet.sky),this.map.setTerrain(null!==(s=this.stylesheet.terrain)&&void 0!==s?s:null),this.fire(new t.l("data",{dataType:"style"})),this.fire(new t.l("style.load"))}}_createLayers(){var e,i,r;const n=t.bS(this.stylesheet.layers);this.setGlobalState(null!==(e=this.stylesheet.state)&&void 0!==e?e:null),this.dispatcher.broadcast("SL",n),this._order=n.map(e=>e.id),this._layers={},this._serializedLayers=null;for(const s of n){const e=t.bT(s,this._globalState);if(e.setEventedParent(this,{layer:{id:s.id}}),this._layers[s.id]=e,t.bU(e)&&this.tileManagers[e.source]){const t=null!==(r=null===(i=s.paint)||void 0===i?void 0:i["raster-fade-duration"])&&void 0!==r?r:e.paint.get("raster-fade-duration");this.tileManagers[e.source].setRasterFadeDuration(t)}}}_loadSprite(e,i=!1,r=void 0){this.imageManager.setLoaded(!1);const n=new AbortController;let s;this._spriteRequest=n,function(e,i,r,n){return t._(this,void 0,void 0,function*(){const s=x(e),o=r>1?"@2x":"",l={},c={};for(const{id:e,url:r}of s){const s=i.transformRequest(v(r,o,".json"),"SpriteJSON");l[e]=t.j(s,n);const a=i.transformRequest(v(r,o,".png"),"SpriteImage");c[e]=g.getImage(a,n)}return yield Promise.all([...Object.values(l),...Object.values(c)]),function(e,i){return t._(this,void 0,void 0,function*(){const t={};for(const r in e){t[r]={};const n=a.getImageCanvasContext((yield i[r]).data),s=(yield e[r]).data;for(const e in s){const{width:i,height:o,x:a,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:d,content:p,textFitWidth:f,textFitHeight:m}=s[e];t[r][e]={data:null,pixelRatio:h,sdf:c,stretchX:u,stretchY:d,content:p,textFitWidth:f,textFitHeight:m,spriteData:{width:i,height:o,x:a,y:l,context:n}}}}return t})}(l,c)})}(e,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(e=>{if(this._spriteRequest=null,e)for(const t in e){this._spritesImagesIds[t]=[];const r=this._spritesImagesIds[t]?this._spritesImagesIds[t].filter(t=>!(t in e)):[];for(const e of r)this.imageManager.removeImage(e),this._changedImages[e]=!0;for(const n in e[t]){const r="default"===t?n:`${t}:${n}`;this._spritesImagesIds[t].push(r),r in this.imageManager.images?this.imageManager.updateImage(r,e[t][n],!1):this.imageManager.addImage(r,e[t][n]),i&&(this._changedImages[r]=!0)}}}).catch(e=>{this._spriteRequest=null,s=e,n.signal.aborted||this.fire(new t.k(s))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),i&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.l("data",{dataType:"style"})),r&&r(s)})}_unloadSprite(){for(const e of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(e),this._changedImages[e]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.l("data",{dataType:"style"}))}_validateLayer(e){const i=this.tileManagers[e.source];if(!i)return;const r=e.sourceLayer;if(!r)return;const n=i.getSource();("geojson"===n.type||n.vectorLayerIds&&-1===n.vectorLayerIds.indexOf(r))&&this.fire(new t.k(new Error(`Source layer "${r}" does not exist on source "${n.id}" as specified by style layer "${e.id}".`)))}loaded(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(const e in this.tileManagers)if(!this.tileManagers[e].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(e,i=!1){const r=this._serializedAllLayers();if(!e||0===e.length)return Object.values(i?t.bV(r):r);const n=[];for(const s of e)if(r[s]){const e=i?t.bV(r[s]):r[s];n.push(e)}return n}_serializedAllLayers(){let e=this._serializedLayers;if(e)return e;e=this._serializedLayers={};const t=Object.keys(this._layers);for(const i of t){const t=this._layers[i];"custom"!==t.type&&(e[i]=t.serialize())}return e}hasTransitions(){var e,t,i;if(null===(e=this.light)||void 0===e?void 0:e.hasTransition())return!0;if(null===(t=this.sky)||void 0===t?void 0:t.hasTransition())return!0;if(null===(i=this.projection)||void 0===i?void 0:i.hasTransition())return!0;for(const r in this.tileManagers)if(this.tileManagers[r].hasTransition())return!0;for(const r in this._layers)if(this._layers[r].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(e){if(!this._loaded)return;const i=this._changed;if(i){const t=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(t.length||i.length)&&this._updateWorkerLayers(t,i);for(const e in this._updatedSources){const t=this._updatedSources[e];if("reload"===t)this._reloadSource(e);else{if("clear"!==t)throw new Error(`Invalid action ${t}`);this._clearSource(e)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const r in this._updatedPaintProps)this._layers[r].updateTransitions(e);this.light.updateTransitions(e),this.sky.updateTransitions(e),this._resetUpdates()}const r={};for(const t in this.tileManagers){const e=this.tileManagers[t];r[t]=e.used,e.used=!1}for(const t of this._order){const i=this._layers[t];i.recalculate(e,this._availableImages),!i.isHidden(e.zoom)&&i.source&&(this.tileManagers[i.source].used=!0)}for(const n in r){const e=this.tileManagers[n];!!r[n]!=!!e.used&&e.fire(new t.l("data",{sourceDataType:"visibility",dataType:"source",sourceId:n}))}this.light.recalculate(e),this.sky.recalculate(e),this.projection.recalculate(e),this.z=e.zoom,i&&this.fire(new t.l("data",{dataType:"style"}))}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this.tileManagers)this.tileManagers[t].reloadTilesForDependencies(["icons","patterns"],e);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const e in this.tileManagers)this.tileManagers[e].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(e,t){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(e,!1),removedIds:t})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(e,i={}){var r;this._checkLoaded();const n=this.serialize();if(e=i.transformStyle?i.transformStyle(n,e):e,(null===(r=i.validate)||void 0===r||r)&&Ri(this,t.C(e)))return!1;(e=t.bV(e)).layers=t.bS(e.layers);const s=t.bW(n,e),o=this._getOperationsToPerform(s);if(o.unimplemented.length>0)throw new Error(`Unimplemented: ${o.unimplemented.join(", ")}.`);if(0===o.operations.length)return!1;for(const t of o.operations)t();return this.stylesheet=e,this._serializedLayers=null,!0}_getOperationsToPerform(e){const t=[],i=[];for(const r of e)switch(r.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":case"setRoll":continue;case"addLayer":t.push(()=>this.addLayer.apply(this,r.args));break;case"removeLayer":t.push(()=>this.removeLayer.apply(this,r.args));break;case"setPaintProperty":t.push(()=>this.setPaintProperty.apply(this,r.args));break;case"setLayoutProperty":t.push(()=>this.setLayoutProperty.apply(this,r.args));break;case"setFilter":t.push(()=>this.setFilter.apply(this,r.args));break;case"addSource":t.push(()=>this.addSource.apply(this,r.args));break;case"removeSource":t.push(()=>this.removeSource.apply(this,r.args));break;case"setLayerZoomRange":t.push(()=>this.setLayerZoomRange.apply(this,r.args));break;case"setLight":t.push(()=>this.setLight.apply(this,r.args));break;case"setGeoJSONSourceData":t.push(()=>this.setGeoJSONSourceData.apply(this,r.args));break;case"setGlyphs":t.push(()=>this.setGlyphs.apply(this,r.args));break;case"setSprite":t.push(()=>this.setSprite.apply(this,r.args));break;case"setTerrain":t.push(()=>this.map.setTerrain.apply(this,r.args));break;case"setSky":t.push(()=>this.setSky.apply(this,r.args));break;case"setProjection":this.setProjection.apply(this,r.args);break;case"setGlobalState":t.push(()=>this.setGlobalState.apply(this,r.args));break;case"setTransition":t.push(()=>{});break;default:i.push(r.command)}return{operations:t,unimplemented:i}}addImage(e,i){if(this.getImage(e))return this.fire(new t.k(new Error(`An image named "${e}" already exists.`)));this.imageManager.addImage(e,i),this._afterImageUpdated(e)}updateImage(e,t){this.imageManager.updateImage(e,t)}getImage(e){return this.imageManager.getImage(e)}removeImage(e){if(!this.getImage(e))return this.fire(new t.k(new Error(`An image named "${e}" does not exist.`)));this.imageManager.removeImage(e),this._afterImageUpdated(e)}_afterImageUpdated(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.l("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,i,r={}){if(this._checkLoaded(),void 0!==this.tileManagers[e])throw new Error(`Source "${e}" already exists.`);if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(i.type)>=0&&this._validate(t.C.source,`sources.${e}`,i,null,r))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const n=this.tileManagers[e]=new Fe(e,i,this.dispatcher);n.style=this,n.setEventedParent(this,()=>({isSourceLoaded:n.loaded(),source:n.serialize(),sourceId:e})),n.onAdd(this.map),this._changed=!0}removeSource(e){if(this._checkLoaded(),void 0===this.tileManagers[e])throw new Error("There is no source with this ID");for(const r in this._layers)if(this._layers[r].source===e)return this.fire(new t.k(new Error(`Source "${e}" cannot be removed while layer "${r}" is using it.`)));const i=this.tileManagers[e];delete this.tileManagers[e],delete this._updatedSources[e],i.fire(new t.l("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),i.setEventedParent(null),i.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(e,t){if(this._checkLoaded(),void 0===this.tileManagers[e])throw new Error(`There is no source with this ID=${e}`);const i=this.tileManagers[e].getSource();if("geojson"!==i.type)throw new Error(`geojsonSource.type is ${i.type}, which is !== 'geojson`);i.setData(t),this._changed=!0}getSource(e){return this.tileManagers[e]&&this.tileManagers[e].getSource()}addLayer(e,i,r={}){this._checkLoaded();const n=e.id;if(this.getLayer(n))return void this.fire(new t.k(new Error(`Layer "${n}" already exists on this map.`)));let s;if("custom"===e.type){if(Ri(this,t.bX(e)))return;s=t.bT(e,this._globalState)}else{if("source"in e&&"object"==typeof e.source&&(this.addSource(n,e.source),e=t.bV(e),e=t.e(e,{source:n})),this._validate(t.C.layer,`layers.${n}`,e,{arrayIndex:-1},r))return;s=t.bT(e,this._globalState),this._validateLayer(s),s.setEventedParent(this,{layer:{id:n}})}const o=i?this._order.indexOf(i):this._order.length;if(i&&-1===o)this.fire(new t.k(new Error(`Cannot add layer "${n}" before non-existing layer "${i}".`)));else{if(this._order.splice(o,0,n),this._layerOrderChanged=!0,this._layers[n]=s,this._removedLayers[n]&&s.source&&"custom"!==s.type){const e=this._removedLayers[n];delete this._removedLayers[n],e.type!==s.type?this._updatedSources[s.source]="clear":(this._updatedSources[s.source]="reload",this.tileManagers[s.source].pause())}this._updateLayer(s),s.onAdd&&s.onAdd(this.map)}}moveLayer(e,i){if(this._checkLoaded(),this._changed=!0,!this._layers[e])return void this.fire(new t.k(new Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));if(e===i)return;const r=this._order.indexOf(e);this._order.splice(r,1);const n=i?this._order.indexOf(i):this._order.length;i&&-1===n?this.fire(new t.k(new Error(`Cannot move layer "${e}" before non-existing layer "${i}".`))):(this._order.splice(n,0,e),this._layerOrderChanged=!0)}removeLayer(e){this._checkLoaded();const i=this._layers[e];if(!i)return void this.fire(new t.k(new Error(`Cannot remove non-existing layer "${e}".`)));i.setEventedParent(null);const r=this._order.indexOf(e);this._order.splice(r,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],this._serializedLayers&&delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map)}getLayer(e){return this._layers[e]}getLayersOrder(){return[...this._order]}hasLayer(e){return e in this._layers}setLayerZoomRange(e,i,r){this._checkLoaded();const n=this.getLayer(e);n?n.minzoom===i&&n.maxzoom===r||(null!=i&&(n.minzoom=i),null!=r&&(n.maxzoom=r),this._updateLayer(n)):this.fire(new t.k(new Error(`Cannot set the zoom range of non-existing layer "${e}".`)))}setFilter(e,i,r={}){this._checkLoaded();const n=this.getLayer(e);if(n){if(!t.bR(n.filter,i))return null==i?(n.setFilter(void 0),void this._updateLayer(n)):void(this._validate(t.C.filter,`layers.${n.id}.filter`,i,null,r)||(n.setFilter(t.bV(i)),this._updateLayer(n)))}else this.fire(new t.k(new Error(`Cannot filter non-existing layer "${e}".`)))}getFilter(e){return t.bV(this.getLayer(e).filter)}setLayoutProperty(e,i,r,n={}){this._checkLoaded();const s=this.getLayer(e);s?t.bR(s.getLayoutProperty(i),r)||(s.setLayoutProperty(i,r,n),this._updateLayer(s)):this.fire(new t.k(new Error(`Cannot style non-existing layer "${e}".`)))}getLayoutProperty(e,i){const r=this.getLayer(e);if(r)return r.getLayoutProperty(i);this.fire(new t.k(new Error(`Cannot get style of non-existing layer "${e}".`)))}setPaintProperty(e,i,r,n={}){this._checkLoaded();const s=this.getLayer(e);s?t.bR(s.getPaintProperty(i),r)||this._updatePaintProperty(s,i,r,n):this.fire(new t.k(new Error(`Cannot style non-existing layer "${e}".`)))}_updatePaintProperty(e,i,r,n={}){e.setPaintProperty(i,r,n)&&this._updateLayer(e),t.bU(e)&&"raster-fade-duration"===i&&this.tileManagers[e.source].setRasterFadeDuration(r),this._changed=!0,this._updatedPaintProps[e.id]=!0,this._serializedLayers=null}getPaintProperty(e,t){return this.getLayer(e).getPaintProperty(t)}setFeatureState(e,i){this._checkLoaded();const r=e.source,n=e.sourceLayer,s=this.tileManagers[r];if(void 0===s)return void this.fire(new t.k(new Error(`The source '${r}' does not exist in the map's style.`)));const o=s.getSource().type;"geojson"===o&&n?this.fire(new t.k(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==o||n?(void 0===e.id&&this.fire(new t.k(new Error("The feature id parameter must be provided."))),s.setFeatureState(n,e.id,i)):this.fire(new t.k(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(e,i){this._checkLoaded();const r=e.source,n=this.tileManagers[r];if(void 0===n)return void this.fire(new t.k(new Error(`The source '${r}' does not exist in the map's style.`)));const s=n.getSource().type,o="vector"===s?e.sourceLayer:void 0;"vector"!==s||o?i&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.k(new Error("A feature id is required to remove its specific state property."))):n.removeFeatureState(o,e.id,i):this.fire(new t.k(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(e){this._checkLoaded();const i=e.source,r=e.sourceLayer,n=this.tileManagers[i];if(void 0!==n)return"vector"!==n.getSource().type||r?(void 0===e.id&&this.fire(new t.k(new Error("The feature id parameter must be provided."))),n.getFeatureState(r,e.id)):void this.fire(new t.k(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new t.k(new Error(`The source '${i}' does not exist in the map's style.`)))}getTransition(){return t.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;const e=t.bY(this.tileManagers,e=>e.serialize()),i=this._serializeByIds(this._order,!0),r=this.map.getTerrain()||void 0,n=this.stylesheet;return t.bZ({version:n.version,name:n.name,metadata:n.metadata,light:n.light,sky:n.sky,center:n.center,zoom:n.zoom,bearing:n.bearing,pitch:n.pitch,sprite:n.sprite,glyphs:n.glyphs,transition:n.transition,projection:n.projection,sources:e,layers:i,terrain:r},e=>void 0!==e)}_updateLayer(e){this._updatedLayers[e.id]=!0,e.source&&!this._updatedSources[e.source]&&"raster"!==this.tileManagers[e.source].getSource().type&&(this._updatedSources[e.source]="reload",this.tileManagers[e.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(e){const t=e=>"fill-extrusion"===this._layers[e].type,i={},r=[];for(let s=this._order.length-1;s>=0;s--){const n=this._order[s];if(t(n)){i[n]=s;for(const t of e){const e=t[n];if(e)for(const t of e)r.push(t)}}}r.sort((e,t)=>t.intersectionZ-e.intersectionZ);const n=[];for(let s=this._order.length-1;s>=0;s--){const o=this._order[s];if(t(o))for(let e=r.length-1;e>=0;e--){const t=r[e].feature;if(i[t.layer.id]this.map.terrain.getElevation(e,t,i):void 0));return this.placement&&s.push(function(e,t,i,r,n,s,o){const a={},l=s.queryRenderedSymbols(r),c=[];for(const h of Object.keys(l).map(Number))c.push(o[h]);c.sort(q);for(const h of c){const i=h.featureIndex.lookupSymbolFeatures(l[h.bucketInstanceId],t,h.bucketIndex,h.sourceLayerIndex,{filterSpec:n.filter,globalState:n.globalState},n.layers,n.availableImages,e);for(const e in i){const t=a[e]=a[e]||[],r=i[e];r.sort((e,t)=>{const i=h.featureSortOrder;if(i){const r=i.indexOf(e.featureIndex);return i.indexOf(t.featureIndex)-r}return t.featureIndex-e.featureIndex});for(const e of r)t.push(e)}}return function(e,t,i){for(const r in e)for(const n of e[r])Z(n,i[t[r].source]);return e}(a,e,i)}(this._layers,o,this.tileManagers,e,l,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(s)}querySourceFeatures(e,i){(null==i?void 0:i.filter)&&this._validate(t.C.filter,"querySourceFeatures.filter",i.filter,null,i);const r=this.tileManagers[e];return r?function(e,t){const i=e.getRenderableIds().map(t=>e.getTileByID(t)),r=[],n={};for(let s=0;se.getTileByID(t)).sort((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1))}const i=this.crossTileSymbolIndex.addLayer(t,a[t.source],e.center.lng);s=s||i}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((n=n||this._layerOrderChanged||0===i)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(c(),e.zoom))&&(this.pauseablePlacement=new Mt(e,this.map.terrain,this._order,n,t,i,r,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,a),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(c()),o=!0),s&&this.pauseablePlacement.placement.setStale()),o||s)for(const l of this._order){const e=this._layers[l];"symbol"===e.type&&this.placement.updateLayerOpacities(e,a[e.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(c())}_releaseSymbolFadeTiles(){for(const e in this.tileManagers)this.tileManagers[e].releaseSymbolFadeTiles()}getImages(e,i){return t._(this,void 0,void 0,function*(){const e=yield this.imageManager.getImages(i.icons);this._updateTilesForChangedImages();const t=this.tileManagers[i.source];return t&&t.setDependencies(i.tileID.key,i.type,i.icons),e})}getGlyphs(e,i){return t._(this,void 0,void 0,function*(){const e=yield this.glyphManager.getGlyphs(i.stacks),t=this.tileManagers[i.source];return t&&t.setDependencies(i.tileID.key,i.type,[""]),e})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(e,i={}){this._checkLoaded(),e&&this._validate(t.C.glyphs,"glyphs",e,null,i)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=e,this.glyphManager.entries={},this.glyphManager.setURL(e))}getDashes(e,i){return t._(this,void 0,void 0,function*(){const e={};for(const[t,r]of Object.entries(i.dashes))e[t]=this.lineAtlas.getDash(r.dasharray,r.round);return e})}addSprite(e,i,r={},n){this._checkLoaded();const s=[{id:e,url:i}],o=[...x(this.stylesheet.sprite),...s];this._validate(t.C.sprite,"sprite",o,null,r)||(this.stylesheet.sprite=o,this._loadSprite(s,!0,n))}removeSprite(e){this._checkLoaded();const i=x(this.stylesheet.sprite);if(i.find(t=>t.id===e)){if(this._spritesImagesIds[e])for(const t of this._spritesImagesIds[e])this.imageManager.removeImage(t),this._changedImages[t]=!0;i.splice(i.findIndex(t=>t.id===e),1),this.stylesheet.sprite=i.length>0?i:void 0,delete this._spritesImagesIds[e],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.l("data",{dataType:"style"}))}else this.fire(new t.k(new Error(`Sprite "${e}" doesn't exists on this map.`)))}getSprite(){return x(this.stylesheet.sprite)}setSprite(e,i={},r){this._checkLoaded(),e&&this._validate(t.C.sprite,"sprite",e,null,i)||(this.stylesheet.sprite=e,e?this._loadSprite(e,!0,r):(this._unloadSprite(),r&&r(null)))}destroy(){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null);for(const e in this.tileManagers){const t=this.tileManagers[e];t.setEventedParent(null),t.onRemove(this.map)}this.tileManagers={},this.imageManager&&(this.imageManager.setEventedParent(null),this.imageManager.destroy(),this._availableImages=[],this._spritesImagesIds={}),this.glyphManager&&this.glyphManager.destroy();for(const e in this._layers){const t=this._layers[e];t.setEventedParent(null),t.onRemove&&t.onRemove(this.map)}this._setInitialValues(),this.setEventedParent(null),this.dispatcher.unregisterMessageHandler("GG"),this.dispatcher.unregisterMessageHandler("GI"),this.dispatcher.unregisterMessageHandler("GDA"),this.dispatcher.remove(!0),this._listeners={},this._oneTimeListeners={}}}var Bi=t.aU([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Oi{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(e,t,i,r,n,s,o,a,l){this.context=e;let c=this.boundPaintVertexBuffers.length!==r.length;for(let h=0;!c&&h({u_texture:0,u_ele_delta:e,u_fog_matrix:i,u_fog_color:r?r.properties.get("fog-color"):t.bp.white,u_fog_ground_blend:r?r.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:s?0:r?r.calculateFogBlendOpacity(n):0,u_horizon_color:r?r.properties.get("horizon-color"):t.bp.white,u_horizon_fog_blend:r?r.properties.get("horizon-fog-blend"):1,u_is_globe_mode:s?1:0}),ji={mainMatrix:"u_projection_matrix",tileMercatorCoords:"u_projection_tile_mercator_coords",clippingPlane:"u_projection_clipping_plane",projectionTransition:"u_projection_transition",fallbackMatrix:"u_projection_fallback_matrix"};function Ni(e){const t=[];for(let i=0;i({u_depth:new t.b_(e,i.u_depth),u_terrain:new t.b_(e,i.u_terrain),u_terrain_dim:new t.bq(e,i.u_terrain_dim),u_terrain_matrix:new t.c0(e,i.u_terrain_matrix),u_terrain_unpack:new t.c1(e,i.u_terrain_unpack),u_terrain_exaggeration:new t.bq(e,i.u_terrain_exaggeration)}))(e,P),this.projectionUniforms=((e,i)=>({u_projection_matrix:new t.c0(e,i.u_projection_matrix),u_projection_tile_mercator_coords:new t.c1(e,i.u_projection_tile_mercator_coords),u_projection_clipping_plane:new t.c1(e,i.u_projection_clipping_plane),u_projection_transition:new t.bq(e,i.u_projection_transition),u_projection_fallback_matrix:new t.c0(e,i.u_projection_fallback_matrix)}))(e,P),this.binderUniforms=r?r.getUniforms(e,P):[]}draw(e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y){const x=e.gl;if(this.failedToCreate)return;if(e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(r),e.setColorMode(n),e.setCullFace(s),a){e.activeTexture.set(x.TEXTURE2),x.bindTexture(x.TEXTURE_2D,a.depthTexture),e.activeTexture.set(x.TEXTURE3),x.bindTexture(x.TEXTURE_2D,a.texture);for(const e in this.terrainUniforms)this.terrainUniforms[e].set(a[e])}if(l)for(const b in l)this.projectionUniforms[ji[b]].set(l[b]);if(o)for(const b in this.fixedUniforms)this.fixedUniforms[b].set(o[b]);m&&m.setUniforms(e,this.binderUniforms,p,{zoom:f});let v=0;switch(t){case x.LINES:v=2;break;case x.TRIANGLES:v=3;break;case x.LINE_STRIP:v=1}for(const b of d.get()){const i=b.vaos||(b.vaos={});(i[c]||(i[c]=new Oi)).bind(e,this,h,m?m.getPaintVertexBuffers():[],u,b.vertexOffset,_,g,y),x.drawElements(t,b.primitiveLength*v,x.UNSIGNED_SHORT,b.primitiveOffset*v*2)}}}function Gi(e,i,r){const n=1/t.aN(r,1,i.transform.tileZoom),s=Math.pow(2,r.tileID.overscaledZ),o=r.tileSize*Math.pow(2,i.transform.tileZoom)/s,a=o*(r.tileID.canonical.x+r.tileID.wrap*s),l=o*r.tileID.canonical.y;return{u_image:0,u_texsize:r.imageAtlasTexture.size,u_scale:[n,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[a>>16,l>>16],u_pixel_coord_lower:[65535&a,65535&l]}}const qi=(e,i,r,n)=>{const s=e.style.light,o=s.properties.get("position"),a=[o.x,o.y,o.z],l=t.c4();"viewport"===s.properties.get("anchor")&&t.c5(l,e.transform.bearingInRadians),t.c6(a,a,l);const c=e.transform.transformLightDirection(a),h=s.properties.get("color");return{u_lightpos:a,u_lightpos_globe:c,u_lightintensity:s.properties.get("intensity"),u_lightcolor:[h.r,h.g,h.b],u_vertical_gradient:+i,u_opacity:r,u_fill_translate:n}},Zi=(e,i,r,n,s,o,a)=>t.e(qi(e,i,r,n),Gi(o,e,a),{u_height_factor:-Math.pow(2,s.overscaledZ)/a.tileSize/8}),$i=(e,i,r,n)=>t.e(Gi(i,e,r),{u_fill_translate:n}),Wi=(e,t)=>({u_world:e,u_fill_translate:t}),Hi=(e,i,r,n,s)=>t.e($i(e,i,r,s),{u_world:n}),Xi=(e,i,r,n,s)=>{const o=e.transform;let a,l,c=0;if("map"===r.paint.get("circle-pitch-alignment")){const e=t.aN(i,1,o.zoom);a=!0,l=[e,e],c=e/(t.a5*Math.pow(2,i.tileID.overscaledZ))*2*Math.PI*s}else a=!1,l=o.pixelsToGLUnits;return{u_camera_to_center_distance:o.cameraToCenterDistance,u_scale_with_map:+("map"===r.paint.get("circle-pitch-scale")),u_pitch_with_map:+a,u_device_pixel_ratio:e.pixelRatio,u_extrude_scale:l,u_globe_extrude_scale:c,u_translate:n}},Yi=e=>({u_pixel_extrude_scale:[1/e.width,1/e.height]}),Ki=e=>({u_viewport_size:[e.width,e.height]}),Ji=(e,t=1)=>({u_color:e,u_overlay:0,u_overlay_scale:t}),Qi=(e,i,r,n)=>{const s=t.aN(e,1,i)/(t.a5*Math.pow(2,e.tileID.overscaledZ))*2*Math.PI*n;return{u_extrude_scale:t.aN(e,1,i),u_intensity:r,u_globe_extrude_scale:s}},er=(e,i,r,n)=>{const s=t.N();t.c7(s,0,e.width,e.height,0,0,1);const o=e.context.gl;return{u_matrix:s,u_world:[o.drawingBufferWidth,o.drawingBufferHeight],u_image:r,u_color_ramp:n,u_opacity:i.paint.get("heatmap-opacity")}},tr=(e,t,i)=>{const r=i.paint.get("hillshade-accent-color");let n;switch(i.paint.get("hillshade-method")){case"basic":n=4;break;case"combined":n=1;break;case"igor":n=2;break;case"multidirectional":n=3;break;default:n=0}const s=i.getIlluminationProperties();for(let o=0;o{const r=i.stride,n=t.N();return t.c7(n,0,t.a5,-t.a5,0,0,1),t.O(n,n,[0,-t.a5,0]),{u_matrix:n,u_image:1,u_dimension:[r,r],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}};function rr(e,i){const r=Math.pow(2,i.canonical.z),n=i.canonical.y;return[new t.a9(0,n/r).toLngLat().lat,new t.a9(0,(n+1)/r).toLngLat().lat]}const nr=(e,t,i=0)=>({u_image:0,u_unpack:t.getUnpackVector(),u_dimension:[t.stride,t.stride],u_elevation_stops:1,u_color_stops:4,u_color_ramp_size:i,u_opacity:e.paint.get("color-relief-opacity")}),sr=(e,i,r,n)=>{const s=e.transform;return{u_translation:ur(e,i,r),u_ratio:n/t.aN(i,1,s.zoom),u_device_pixel_ratio:e.pixelRatio,u_units_to_pixels:[1/s.pixelsToGLUnits[0],1/s.pixelsToGLUnits[1]]}},or=(e,i,r,n,s)=>t.e(sr(e,i,r,n),{u_image:0,u_image_height:s}),ar=(e,i,r,n,s)=>{const o=e.transform,a=hr(i,o);return{u_translation:ur(e,i,r),u_texsize:i.imageAtlasTexture.size,u_ratio:n/t.aN(i,1,o.zoom),u_device_pixel_ratio:e.pixelRatio,u_image:0,u_scale:[a,s.fromScale,s.toScale],u_fade:s.t,u_units_to_pixels:[1/o.pixelsToGLUnits[0],1/o.pixelsToGLUnits[1]]}},lr=(e,i,r,n,s)=>{const o=hr(i,e.transform);return t.e(sr(e,i,r,n),{u_tileratio:o,u_crossfade_from:s.fromScale,u_crossfade_to:s.toScale,u_image:0,u_mix:s.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})},cr=(e,i,r,n,s,o)=>{const a=hr(i,e.transform);return t.e(sr(e,i,r,n),{u_image:0,u_image_height:o,u_tileratio:a,u_crossfade_from:s.fromScale,u_crossfade_to:s.toScale,u_image_dash:1,u_mix:s.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})};function hr(e,i){return 1/t.aN(e,1,i.tileZoom)}function ur(e,i,r){return t.aO(e.transform,i,r.paint.get("line-translate"),r.paint.get("line-translate-anchor"))}const dr=(e,t,i,r,n)=>{return{u_tl_parent:e,u_scale_parent:t,u_buffer_scale:1,u_fade_t:i.mix,u_opacity:i.opacity*r.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:r.paint.get("raster-brightness-min"),u_brightness_high:r.paint.get("raster-brightness-max"),u_saturation_factor:(o=r.paint.get("raster-saturation"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(s=r.paint.get("raster-contrast"),s>0?1/(1-s):1+s),u_spin_weights:pr(r.paint.get("raster-hue-rotate")),u_coords_top:[n[0].x,n[0].y,n[1].x,n[1].y],u_coords_bottom:[n[3].x,n[3].y,n[2].x,n[2].y]};var s,o};function pr(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return[(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const fr=(e,t,i,r,n,s,o,a,l,c,h,u,d)=>{const p=o.transform;return{u_is_size_zoom_constant:+("constant"===e||"source"===e),u_is_size_feature_constant:+("constant"===e||"camera"===e),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:p.cameraToCenterDistance,u_pitch:p.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:p.width/p.height,u_fade_change:o.options.fadeDuration?o.symbolFadeChange:1,u_label_plane_matrix:a,u_coord_matrix:l,u_is_text:+h,u_pitch_with_map:+r,u_is_along_line:n,u_is_variable_anchor:s,u_texsize:u,u_texture:0,u_translation:c,u_pitched_scale:d}},mr=(e,i,r,n,s,o,a,l,c,h,u,d,p,f)=>{const m=a.transform;return t.e(fr(e,i,r,n,s,o,a,l,c,h,u,d,f),{u_gamma_scale:n?Math.cos(m.pitch*Math.PI/180)*m.cameraToCenterDistance:1,u_device_pixel_ratio:a.pixelRatio,u_is_halo:1})},_r=(e,i,r,n,s,o,a,l,c,h,u,d,p)=>t.e(mr(e,i,r,n,s,o,a,l,c,h,!0,u,0,p),{u_texsize_icon:d,u_texture_icon:1}),gr=(e,t)=>({u_opacity:e,u_color:t}),yr=(e,i,r,n,s)=>t.e(function(e,i,r,n){const s=r.imageManager.getPattern(e.from.toString()),o=r.imageManager.getPattern(e.to.toString()),{width:a,height:l}=r.imageManager.getPixelSize(),c=Math.pow(2,n.tileID.overscaledZ),h=n.tileSize*Math.pow(2,r.transform.tileZoom)/c,u=h*(n.tileID.canonical.x+n.tileID.wrap*c),d=h*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:s.tl,u_pattern_br_a:s.br,u_pattern_tl_b:o.tl,u_pattern_br_b:o.br,u_texsize:[a,l],u_mix:i.t,u_pattern_size_a:s.displaySize,u_pattern_size_b:o.displaySize,u_scale_a:i.fromScale,u_scale_b:i.toScale,u_tile_units_to_pixels:1/t.aN(n,1,r.transform.tileZoom),u_pixel_coord_upper:[u>>16,d>>16],u_pixel_coord_lower:[65535&u,65535&d]}}(r,s,i,n),{u_opacity:e}),xr=(e,t)=>{},vr={fillExtrusion:(e,i)=>({u_lightpos:new t.c2(e,i.u_lightpos),u_lightpos_globe:new t.c2(e,i.u_lightpos_globe),u_lightintensity:new t.bq(e,i.u_lightintensity),u_lightcolor:new t.c2(e,i.u_lightcolor),u_vertical_gradient:new t.bq(e,i.u_vertical_gradient),u_opacity:new t.bq(e,i.u_opacity),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillExtrusionPattern:(e,i)=>({u_lightpos:new t.c2(e,i.u_lightpos),u_lightpos_globe:new t.c2(e,i.u_lightpos_globe),u_lightintensity:new t.bq(e,i.u_lightintensity),u_lightcolor:new t.c2(e,i.u_lightcolor),u_vertical_gradient:new t.bq(e,i.u_vertical_gradient),u_height_factor:new t.bq(e,i.u_height_factor),u_opacity:new t.bq(e,i.u_opacity),u_fill_translate:new t.c3(e,i.u_fill_translate),u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bq(e,i.u_fade)}),fill:(e,i)=>({u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillPattern:(e,i)=>({u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bq(e,i.u_fade),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillOutline:(e,i)=>({u_world:new t.c3(e,i.u_world),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillOutlinePattern:(e,i)=>({u_world:new t.c3(e,i.u_world),u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bq(e,i.u_fade),u_fill_translate:new t.c3(e,i.u_fill_translate)}),circle:(e,i)=>({u_camera_to_center_distance:new t.bq(e,i.u_camera_to_center_distance),u_scale_with_map:new t.b_(e,i.u_scale_with_map),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_extrude_scale:new t.c3(e,i.u_extrude_scale),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_globe_extrude_scale:new t.bq(e,i.u_globe_extrude_scale),u_translate:new t.c3(e,i.u_translate)}),collisionBox:(e,i)=>({u_pixel_extrude_scale:new t.c3(e,i.u_pixel_extrude_scale)}),collisionCircle:(e,i)=>({u_viewport_size:new t.c3(e,i.u_viewport_size)}),debug:(e,i)=>({u_color:new t.b$(e,i.u_color),u_overlay:new t.b_(e,i.u_overlay),u_overlay_scale:new t.bq(e,i.u_overlay_scale)}),depth:xr,clippingMask:xr,heatmap:(e,i)=>({u_extrude_scale:new t.bq(e,i.u_extrude_scale),u_intensity:new t.bq(e,i.u_intensity),u_globe_extrude_scale:new t.bq(e,i.u_globe_extrude_scale)}),heatmapTexture:(e,i)=>({u_matrix:new t.c0(e,i.u_matrix),u_world:new t.c3(e,i.u_world),u_image:new t.b_(e,i.u_image),u_color_ramp:new t.b_(e,i.u_color_ramp),u_opacity:new t.bq(e,i.u_opacity)}),hillshade:(e,i)=>({u_image:new t.b_(e,i.u_image),u_latrange:new t.c3(e,i.u_latrange),u_exaggeration:new t.bq(e,i.u_exaggeration),u_altitudes:new t.c9(e,i.u_altitudes),u_azimuths:new t.c9(e,i.u_azimuths),u_accent:new t.b$(e,i.u_accent),u_method:new t.b_(e,i.u_method),u_shadows:new t.c8(e,i.u_shadows),u_highlights:new t.c8(e,i.u_highlights)}),hillshadePrepare:(e,i)=>({u_matrix:new t.c0(e,i.u_matrix),u_image:new t.b_(e,i.u_image),u_dimension:new t.c3(e,i.u_dimension),u_zoom:new t.bq(e,i.u_zoom),u_unpack:new t.c1(e,i.u_unpack)}),colorRelief:(e,i)=>({u_image:new t.b_(e,i.u_image),u_unpack:new t.c1(e,i.u_unpack),u_dimension:new t.c3(e,i.u_dimension),u_elevation_stops:new t.b_(e,i.u_elevation_stops),u_color_stops:new t.b_(e,i.u_color_stops),u_color_ramp_size:new t.b_(e,i.u_color_ramp_size),u_opacity:new t.bq(e,i.u_opacity)}),line:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels)}),lineGradient:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_image_height:new t.bq(e,i.u_image_height)}),linePattern:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_texsize:new t.c3(e,i.u_texsize),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_image:new t.b_(e,i.u_image),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bq(e,i.u_fade)}),lineSDF:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_mix:new t.bq(e,i.u_mix),u_tileratio:new t.bq(e,i.u_tileratio),u_crossfade_from:new t.bq(e,i.u_crossfade_from),u_crossfade_to:new t.bq(e,i.u_crossfade_to),u_lineatlas_width:new t.bq(e,i.u_lineatlas_width),u_lineatlas_height:new t.bq(e,i.u_lineatlas_height)}),lineGradientSDF:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_image_height:new t.bq(e,i.u_image_height),u_tileratio:new t.bq(e,i.u_tileratio),u_crossfade_from:new t.bq(e,i.u_crossfade_from),u_crossfade_to:new t.bq(e,i.u_crossfade_to),u_image_dash:new t.b_(e,i.u_image_dash),u_mix:new t.bq(e,i.u_mix),u_lineatlas_width:new t.bq(e,i.u_lineatlas_width),u_lineatlas_height:new t.bq(e,i.u_lineatlas_height)}),raster:(e,i)=>({u_tl_parent:new t.c3(e,i.u_tl_parent),u_scale_parent:new t.bq(e,i.u_scale_parent),u_buffer_scale:new t.bq(e,i.u_buffer_scale),u_fade_t:new t.bq(e,i.u_fade_t),u_opacity:new t.bq(e,i.u_opacity),u_image0:new t.b_(e,i.u_image0),u_image1:new t.b_(e,i.u_image1),u_brightness_low:new t.bq(e,i.u_brightness_low),u_brightness_high:new t.bq(e,i.u_brightness_high),u_saturation_factor:new t.bq(e,i.u_saturation_factor),u_contrast_factor:new t.bq(e,i.u_contrast_factor),u_spin_weights:new t.c2(e,i.u_spin_weights),u_coords_top:new t.c1(e,i.u_coords_top),u_coords_bottom:new t.c1(e,i.u_coords_bottom)}),symbolIcon:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bq(e,i.u_size_t),u_size:new t.bq(e,i.u_size),u_camera_to_center_distance:new t.bq(e,i.u_camera_to_center_distance),u_pitch:new t.bq(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bq(e,i.u_aspect_ratio),u_fade_change:new t.bq(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texture:new t.b_(e,i.u_texture),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bq(e,i.u_pitched_scale)}),symbolSDF:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bq(e,i.u_size_t),u_size:new t.bq(e,i.u_size),u_camera_to_center_distance:new t.bq(e,i.u_camera_to_center_distance),u_pitch:new t.bq(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bq(e,i.u_aspect_ratio),u_fade_change:new t.bq(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texture:new t.b_(e,i.u_texture),u_gamma_scale:new t.bq(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_is_halo:new t.b_(e,i.u_is_halo),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bq(e,i.u_pitched_scale)}),symbolTextAndIcon:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bq(e,i.u_size_t),u_size:new t.bq(e,i.u_size),u_camera_to_center_distance:new t.bq(e,i.u_camera_to_center_distance),u_pitch:new t.bq(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bq(e,i.u_aspect_ratio),u_fade_change:new t.bq(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texsize_icon:new t.c3(e,i.u_texsize_icon),u_texture:new t.b_(e,i.u_texture),u_texture_icon:new t.b_(e,i.u_texture_icon),u_gamma_scale:new t.bq(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_is_halo:new t.b_(e,i.u_is_halo),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bq(e,i.u_pitched_scale)}),background:(e,i)=>({u_opacity:new t.bq(e,i.u_opacity),u_color:new t.b$(e,i.u_color)}),backgroundPattern:(e,i)=>({u_opacity:new t.bq(e,i.u_opacity),u_image:new t.b_(e,i.u_image),u_pattern_tl_a:new t.c3(e,i.u_pattern_tl_a),u_pattern_br_a:new t.c3(e,i.u_pattern_br_a),u_pattern_tl_b:new t.c3(e,i.u_pattern_tl_b),u_pattern_br_b:new t.c3(e,i.u_pattern_br_b),u_texsize:new t.c3(e,i.u_texsize),u_mix:new t.bq(e,i.u_mix),u_pattern_size_a:new t.c3(e,i.u_pattern_size_a),u_pattern_size_b:new t.c3(e,i.u_pattern_size_b),u_scale_a:new t.bq(e,i.u_scale_a),u_scale_b:new t.bq(e,i.u_scale_b),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.bq(e,i.u_tile_units_to_pixels)}),terrain:(e,i)=>({u_texture:new t.b_(e,i.u_texture),u_ele_delta:new t.bq(e,i.u_ele_delta),u_fog_matrix:new t.c0(e,i.u_fog_matrix),u_fog_color:new t.b$(e,i.u_fog_color),u_fog_ground_blend:new t.bq(e,i.u_fog_ground_blend),u_fog_ground_blend_opacity:new t.bq(e,i.u_fog_ground_blend_opacity),u_horizon_color:new t.b$(e,i.u_horizon_color),u_horizon_fog_blend:new t.bq(e,i.u_horizon_fog_blend),u_is_globe_mode:new t.bq(e,i.u_is_globe_mode)}),terrainDepth:(e,i)=>({u_ele_delta:new t.bq(e,i.u_ele_delta)}),terrainCoords:(e,i)=>({u_texture:new t.b_(e,i.u_texture),u_terrain_coords_id:new t.bq(e,i.u_terrain_coords_id),u_ele_delta:new t.bq(e,i.u_ele_delta)}),projectionErrorMeasurement:(e,i)=>({u_input:new t.bq(e,i.u_input),u_output_expected:new t.bq(e,i.u_output_expected)}),atmosphere:(e,i)=>({u_sun_pos:new t.c2(e,i.u_sun_pos),u_atmosphere_blend:new t.bq(e,i.u_atmosphere_blend),u_globe_position:new t.c2(e,i.u_globe_position),u_globe_radius:new t.bq(e,i.u_globe_radius),u_inv_proj_matrix:new t.c0(e,i.u_inv_proj_matrix)}),sky:(e,i)=>({u_sky_color:new t.b$(e,i.u_sky_color),u_horizon_color:new t.b$(e,i.u_horizon_color),u_horizon:new t.c3(e,i.u_horizon),u_horizon_normal:new t.c3(e,i.u_horizon_normal),u_sky_horizon_blend:new t.bq(e,i.u_sky_horizon_blend),u_sky_blend:new t.bq(e,i.u_sky_blend)})};class br{constructor(e,t,i){this.context=e;const r=e.gl;this.buffer=r.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),r.bufferData(r.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(e){const t=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const wr={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Tr{constructor(e,t,i,r){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=r,this.context=e;const n=e.gl;this.buffer=n.createBuffer(),e.bindVertexBuffer.set(this.buffer),n.bufferData(n.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?n.DYNAMIC_DRAW:n.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(e){if(e.length!==this.length)throw new Error(`Length of new data is ${e.length}, which doesn't match current length of ${this.length}`);const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer)}enableAttributes(e,t){for(let i=0;i0&&(h.push({circleArray:_,circleOffset:d,coord:p}),u+=_.length/4,d=u),m&&c.draw(o,l.LINES,ii.disabled,ni.disabled,e.colorModeForRenderPass(),ti.disabled,Yi(e.transform),e.style.map.terrain&&e.style.map.terrain.getTerrainData(p),a.getProjectionData({overscaledTileID:p,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),r.id,m.layoutVertexBuffer,m.indexBuffer,m.segments,null,e.transform.zoom,null,null,m.collisionVertexBuffer)}if(!s||!h.length)return;const p=e.useProgram("collisionCircle"),f=new t.ca;f.resize(4*u),f._trim();let m=0;for(const t of h)for(let e=0;e=0&&(_[m.associatedIconIndex]={shiftedAnchor:E,angle:C})}else st(m.numGlyphs,f)}if(c){m.clear();const i=e.icon.placedSymbolArray;for(let e=0;ee.style.map.terrain.getElevation(M,t,i):null,i="map"===r.layout.get("text-rotation-alignment");$e(l,e,s,O,V,y,h,i,M.toUnwrapped(),_.width,_.height,N,t)}const Z=s&&S||q,$=x||Z?dn:y?O:e.transform.clipSpaceToPixelsMatrix,W=d&&0!==r.paint.get(s?"text-halo-width":"icon-halo-width").constantOr(1);let H;H=d?l.iconsInText?_r(f.kind,C,v,y,x,Z,e,$,j,N,D,L,I):mr(f.kind,C,v,y,x,Z,e,$,j,N,s,D,0,I):fr(f.kind,C,v,y,x,Z,e,$,j,N,s,D,I);const X={program:E,buffers:c,uniformValues:H,projectionData:U,atlasTexture:z,atlasTextureIcon:F,atlasInterpolation:k,atlasInterpolationIcon:R,isSDF:d,hasHalo:W};if(b&&l.canOverlap){w=!0;const e=c.segments.get();for(const i of e)P.push({segments:new t.aX([i]),sortKey:i.sortKey,state:X,terrainData:A})}else P.push({segments:c.segments,sortKey:0,state:X,terrainData:A})}w&&P.sort((e,t)=>e.sortKey-t.sortKey);for(const t of P){const i=t.state;if(f.activeTexture.set(m.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,m.CLAMP_TO_EDGE),i.atlasTextureIcon&&(f.activeTexture.set(m.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,m.CLAMP_TO_EDGE)),i.isSDF){const n=i.uniformValues;i.hasHalo&&(n.u_is_halo=1,yn(i.buffers,t.segments,r,e,i.program,T,u,d,n,i.projectionData,t.terrainData)),n.u_is_halo=0}yn(i.buffers,t.segments,r,e,i.program,T,u,d,i.uniformValues,i.projectionData,t.terrainData)}}function yn(e,t,i,r,n,s,o,a,l,c,h){const u=r.context;n.draw(u,u.gl.TRIANGLES,s,o,a,ti.backCCW,l,h,c,i.id,e.layoutVertexBuffer,e.indexBuffer,t,i.paint,r.transform.zoom,e.programConfigurations.get(i.id),e.dynamicLayoutVertexBuffer,e.opacityVertexBuffer)}function xn(e,i,r,n,s){const o=e.context,a=o.gl,l=ni.disabled,c=new Qt([a.ONE,a.ONE],t.bp.transparent,[!0,!0,!0,!0]),h=i.getBucket(r);if(!h)return;const u=n.key;let d=r.heatmapFbos.get(u);d||(d=bn(o,i.tileSize,i.tileSize),r.heatmapFbos.set(u,d)),o.bindFramebuffer.set(d.framebuffer),o.viewport.set([0,0,i.tileSize,i.tileSize]),o.clear({color:t.bp.transparent});const p=h.programConfigurations.get(r.id),f=e.useProgram("heatmap",p,!s),m=e.transform.getProjectionData({overscaledTileID:i.tileID,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),_=e.style.map.terrain.getTerrainData(n);f.draw(o,a.TRIANGLES,ii.disabled,l,c,ti.disabled,Qi(i,e.transform.zoom,r.paint.get("heatmap-intensity"),1),_,m,r.id,h.layoutVertexBuffer,h.indexBuffer,h.segments,r.paint,e.transform.zoom,p)}function vn(e,t,i,r,n){const s=e.context,o=s.gl,a=e.transform;s.setColorMode(e.colorModeForRenderPass());const l=wn(s,t),c=i.key,h=t.heatmapFbos.get(c);if(!h)return;s.activeTexture.set(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,h.colorAttachment.get()),s.activeTexture.set(o.TEXTURE1),l.bind(o.LINEAR,o.CLAMP_TO_EDGE);const u=a.getProjectionData({overscaledTileID:i,applyTerrainMatrix:n,applyGlobeMatrix:!r});e.useProgram("heatmapTexture").draw(s,o.TRIANGLES,ii.disabled,ni.disabled,e.colorModeForRenderPass(),ti.disabled,er(e,t,0,1),null,u,t.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments,t.paint,a.zoom),h.destroy(),t.heatmapFbos.delete(c)}function bn(e,t,i){var r,n;const s=e.gl,o=s.createTexture();s.bindTexture(s.TEXTURE_2D,o),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR);const a=null!==(r=e.HALF_FLOAT)&&void 0!==r?r:s.UNSIGNED_BYTE,l=null!==(n=e.RGBA16F)&&void 0!==n?n:s.RGBA;s.texImage2D(s.TEXTURE_2D,0,l,t,i,0,s.RGBA,a,null);const c=e.createFramebuffer(t,i,!1,!1);return c.colorAttachment.set(o),c}function wn(e,i){return i.colorRampTexture||(i.colorRampTexture=new t.T(e,i.colorRamp,e.gl.RGBA)),i.colorRampTexture}function Tn(e,i,r,n,s,o,a,l){let c=256;if(s.stepInterpolant){const n=i.getSource().maxzoom,s=a.canonical.z===n?Math.ceil(1<20&&d.texParameterf(d.TEXTURE_2D,u.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,u.extTextureFilterAnisotropicMax);const C=e.style.map.terrain&&e.style.map.terrain.getTerrainData(w),A=f.getProjectionData({overscaledTileID:w,aligned:g,applyGlobeMatrix:!c,applyTerrainMatrix:!0}),D=dr(M,I,E.fadeMix,i,a),z=m.getMeshFromTileID(u,w.canonical,s,o,"raster");p.draw(u,d.TRIANGLES,r,n?n[w.overscaledZ]:ni.disabled,_,l?ti.frontCCW:ti.backCCW,D,C,A,i.id,z.vertexBuffer,z.indexBuffer,z.segments)}}function Ln(e,i,r,n){const s={parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:{tileOpacity:1,parentTileOpacity:1,fadeMix:{opacity:1,mix:0}}};if(0===r||n)return s;if(e.fadingParentID){const n=i.getLoadedTile(e.fadingParentID);if(!n)return s;const o=Math.pow(2,n.tileID.overscaledZ-e.tileID.overscaledZ);return{parentTile:n,parentScaleBy:o,parentTopLeft:[e.tileID.canonical.x*o%1,e.tileID.canonical.y*o%1],fadeValues:function(e,i,r){const n=c(),s=(n-i.timeAdded)/r,o=e.fadingDirection===ue.Incoming,a=t.an((n-e.timeAdded)/r,0,1),l=t.an(1-s,0,1),h=o?a:l;return{tileOpacity:h,parentTileOpacity:o?l:a,fadeMix:{opacity:1,mix:1-h}}}(e,n,r)}}return e.selfFading?{parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:function(e,i){const r=(c()-e.timeAdded)/i,n=t.an(r,0,1);return{tileOpacity:n,fadeMix:{opacity:n,mix:0}}}(e,r)}:s}const Fn=new t.bp(1,0,0,1),Bn=new t.bp(0,1,0,1),On=new t.bp(0,0,1,1),Vn=new t.bp(1,0,1,1),jn=new t.bp(0,1,1,1);function Nn(e,t,i,r){Gn(e,0,t+i/2,e.transform.width,i,r)}function Un(e,t,i,r){Gn(e,t-i/2,0,i,e.transform.height,r)}function Gn(e,t,i,r,n,s){const o=e.context,a=o.gl;a.enable(a.SCISSOR_TEST),a.scissor(t*e.pixelRatio,i*e.pixelRatio,r*e.pixelRatio,n*e.pixelRatio),o.clear({color:s}),a.disable(a.SCISSOR_TEST)}function qn(e,i,r){const n=e.context,s=n.gl,o=e.useProgram("debug"),a=ii.disabled,l=ni.disabled,c=e.colorModeForRenderPass(),h="$debug",u=e.style.map.terrain&&e.style.map.terrain.getTerrainData(r);n.activeTexture.set(s.TEXTURE0);const d=i.getTileByID(r.key).latestRawTileData,p=Math.floor((d&&d.byteLength||0)/1024),f=i.getTile(r).tileSize,m=512/Math.min(f,512)*(r.overscaledZ/e.transform.zoom)*.5;let _=r.canonical.toString();r.overscaledZ!==r.canonical.z&&(_+=` => ${r.overscaledZ}`),function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,r=e.context.gl,n=e.debugOverlayCanvas.getContext("2d");n.clearRect(0,0,i.width,i.height),n.shadowColor="white",n.shadowBlur=2,n.lineWidth=1.5,n.strokeStyle="white",n.textBaseline="top",n.font="bold 36px Open Sans, sans-serif",n.fillText(t,5,5),n.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(r.LINEAR,r.CLAMP_TO_EDGE)}(e,`${_} ${p}kB`);const g=e.transform.getProjectionData({overscaledTileID:r,applyGlobeMatrix:!0,applyTerrainMatrix:!0});o.draw(n,s.TRIANGLES,a,l,Qt.alphaBlended,ti.disabled,Ji(t.bp.transparent,m),null,g,h,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments),o.draw(n,s.LINE_STRIP,a,l,c,ti.disabled,Ji(t.bp.red),u,g,h,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments)}function Zn(e,t,i,r){const{isRenderingGlobe:n}=r,s=e.context,o=s.gl,a=e.transform,l=e.colorModeForRenderPass(),c=e.getDepthModeFor3D(),h=e.useProgram("terrain");s.bindFramebuffer.set(null),s.viewport.set([0,0,e.width,e.height]);for(const u of i){const i=t.getTerrainMesh(u.tileID),r=e.renderToTexture.getTexture(u),d=t.getTerrainData(u.tileID);s.activeTexture.set(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,r.texture);const p=t.getMeshFrameDelta(a.zoom),f=a.calculateFogMatrix(u.tileID.toUnwrapped()),m=Vi(p,f,e.style.sky,a.pitch,n),_=a.getProjectionData({overscaledTileID:u.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});h.draw(s,o.TRIANGLES,c,ni.disabled,l,ti.backCCW,m,d,_,"terrain",i.vertexBuffer,i.indexBuffer,i.segments)}}function $n(e,i){if(!i.mesh){const r=new t.aW;r.emplaceBack(-1,-1),r.emplaceBack(1,-1),r.emplaceBack(1,1),r.emplaceBack(-1,1);const n=new t.aY;n.emplaceBack(0,1,2),n.emplaceBack(0,2,3),i.mesh=new Ft(e.createVertexBuffer(r,Bt.members),e.createIndexBuffer(n),t.aX.simpleSegment(0,0,r.length,n.length))}return i.mesh}class Wn{constructor(e,i){this.context=new cn(e),this.transform=i,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:t.ar(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=Fe.maxOverzooming+Fe.maxUnderzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new zt}resize(e,t,i){if(this.width=Math.floor(e*i),this.height=Math.floor(t*i),this.pixelRatio=i,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const r of this.style._order)this.style._layers[r].resize()}setup(){const e=this.context,i=new t.aW;i.emplaceBack(0,0),i.emplaceBack(t.a5,0),i.emplaceBack(0,t.a5),i.emplaceBack(t.a5,t.a5),this.tileExtentBuffer=e.createVertexBuffer(i,Bt.members),this.tileExtentSegments=t.aX.simpleSegment(0,0,4,2);const r=new t.aW;r.emplaceBack(0,0),r.emplaceBack(t.a5,0),r.emplaceBack(0,t.a5),r.emplaceBack(t.a5,t.a5),this.debugBuffer=e.createVertexBuffer(r,Bt.members),this.debugSegments=t.aX.simpleSegment(0,0,4,5);const n=new t.ch;n.emplaceBack(0,0,0,0),n.emplaceBack(t.a5,0,t.a5,0),n.emplaceBack(0,t.a5,0,t.a5),n.emplaceBack(t.a5,t.a5,t.a5,t.a5),this.rasterBoundsBuffer=e.createVertexBuffer(n,Bi.members),this.rasterBoundsSegments=t.aX.simpleSegment(0,0,4,2);const s=new t.aW;s.emplaceBack(0,0),s.emplaceBack(t.a5,0),s.emplaceBack(0,t.a5),s.emplaceBack(t.a5,t.a5),this.rasterBoundsBufferPosOnly=e.createVertexBuffer(s,Bt.members),this.rasterBoundsSegmentsPosOnly=t.aX.simpleSegment(0,0,4,5);const o=new t.aW;o.emplaceBack(0,0),o.emplaceBack(1,0),o.emplaceBack(0,1),o.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(o,Bt.members),this.viewportSegments=t.aX.simpleSegment(0,0,4,2);const a=new t.ci;a.emplaceBack(0),a.emplaceBack(1),a.emplaceBack(3),a.emplaceBack(2),a.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(a);const l=new t.aY;l.emplaceBack(1,0,2),l.emplaceBack(1,2,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(l);const c=this.context.gl;this.stencilClearMode=new ni({func:c.ALWAYS,mask:0},0,255,c.ZERO,c.ZERO,c.ZERO),this.tileExtentMesh=new Ft(this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}clearStencil(){const e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const r=t.N();t.c7(r,0,this.width,this.height,0,0,1),t.Q(r,r,[i.drawingBufferWidth,i.drawingBufferHeight,0]);const n={mainMatrix:r,tileMercatorCoords:[0,0,1,1],clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:r};this.useProgram("clippingMask",null,!0).draw(e,i.TRIANGLES,ii.disabled,this.stencilClearMode,Qt.disabled,ti.disabled,null,null,n,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(e,t,i){if(this.currentStencilSource===e.source||!e.isTileClipped()||!t||!t.length)return;this.currentStencilSource=e.source,this.nextStencilID+t.length>256&&this.clearStencil();const r=this.context;r.setColorMode(Qt.disabled),r.setDepthMode(ii.disabled);const n={};for(const s of t)n[s.key]=this.nextStencilID++;this._renderTileMasks(n,t,i,!0),this._renderTileMasks(n,t,i,!1),this._tileClippingMaskIDs=n}_renderTileMasks(e,t,i,r){const n=this.context,s=n.gl,o=this.style.projection,a=this.transform,l=this.useProgram("clippingMask");for(const c of t){const t=e[c.key],h=this.style.map.terrain&&this.style.map.terrain.getTerrainData(c),u=o.getMeshFromTileID(this.context,c.canonical,r,!0,"stencil"),d=a.getProjectionData({overscaledTileID:c,applyGlobeMatrix:!i,applyTerrainMatrix:!0});l.draw(n,s.TRIANGLES,ii.disabled,new ni({func:s.ALWAYS,mask:0},t,255,s.KEEP,s.KEEP,s.REPLACE),Qt.disabled,i?ti.disabled:ti.backCCW,null,h,d,"$clipping",u.vertexBuffer,u.indexBuffer,u.segments)}}_renderTilesDepthBuffer(){const e=this.context,t=e.gl,i=this.style.projection,r=this.transform,n=this.useProgram("depth"),s=this.getDepthModeFor3D(),o=Me(r,{tileSize:r.tileSize});for(const a of o){const o=this.style.map.terrain&&this.style.map.terrain.getTerrainData(a),l=i.getMeshFromTileID(this.context,a.canonical,!0,!0,"raster"),c=r.getProjectionData({overscaledTileID:a,applyGlobeMatrix:!0,applyTerrainMatrix:!0});n.draw(e,t.TRIANGLES,s,ni.disabled,Qt.disabled,ti.backCCW,null,o,c,"$clipping",l.vertexBuffer,l.indexBuffer,l.segments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const e=this.nextStencilID++,t=this.context.gl;return new ni({func:t.NOTEQUAL,mask:255},e,255,t.KEEP,t.KEEP,t.REPLACE)}stencilModeForClipping(e){const t=this.context.gl;return new ni({func:t.EQUAL,mask:255},this._tileClippingMaskIDs[e.key],0,t.KEEP,t.KEEP,t.REPLACE)}getStencilConfigForOverlapAndUpdateStencilID(e){const t=this.context.gl,i=e.sort((e,t)=>t.overscaledZ-e.overscaledZ),r=i[i.length-1].overscaledZ,n=i[0].overscaledZ-r+1;if(n>1){this.currentStencilSource=void 0,this.nextStencilID+n>256&&this.clearStencil();const e={};for(let i=0;it.overscaledZ-e.overscaledZ),r=i[i.length-1].overscaledZ,n=i[0].overscaledZ-r+1;if(this.clearStencil(),n>1){const e={},s={};for(let i=0;i0};for(const t in o){const e=o[t];e.used&&e.prepare(this.context),a[t]=e.getVisibleCoordinates(!1),l[t]=a[t].slice().reverse(),h[t]=e.getVisibleCoordinates(!0).reverse()}this.opaquePassCutoff=1/0;for(let t=0;tthis.useProgram(e)}),this.context.viewport.set([0,0,this.width,this.height]),this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.bp.black:t.bp.transparent,depth:1}),this.clearStencil(),this.style.sky&&function(e,t){const i=e.context,r=i.gl,n=((e,t,i)=>{const r=Math.cos(t.rollInRadians),n=Math.sin(t.rollInRadians),s=ye(t),o=t.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}).projectionTransition;return{u_sky_color:e.properties.get("sky-color"),u_horizon_color:e.properties.get("horizon-color"),u_horizon:[(t.width/2-s*n)*i,(t.height/2+s*r)*i],u_horizon_normal:[-n,r],u_sky_horizon_blend:e.properties.get("sky-horizon-blend")*t.height/2*i,u_sky_blend:o}})(t,e.style.map.transform,e.pixelRatio),s=new ii(r.LEQUAL,ii.ReadWrite,[0,1]),o=ni.disabled,a=e.colorModeForRenderPass(),l=e.useProgram("sky"),c=$n(i,t);l.draw(i,r.TRIANGLES,s,o,a,ti.disabled,n,null,void 0,"sky",c.vertexBuffer,c.indexBuffer,c.segments)}(this,this.style.sky),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=s.length-1;this.currentLayer>=0;this.currentLayer--){const e=this.style._layers[s[this.currentLayer]],t=o[e.source],i=a[e.source];this._renderTileClippingMasks(e,i,!1),this.renderLayer(this,t,e,i,u)}this.renderPass="translucent";let d=!1;for(this.currentLayer=0;this.currentLayer({u_sun_pos:e,u_atmosphere_blend:t,u_globe_position:i,u_globe_radius:r,u_inv_proj_matrix:n}))(c,u,[f[0],f[1],f[2]],d,p),_=$n(n,i);o.draw(n,s.TRIANGLES,a,ni.disabled,Qt.alphaBlended,ti.disabled,m,null,null,"atmosphere",_.vertexBuffer,_.indexBuffer,_.segments)}(this,this.style.sky,this.style.light),this.options.showTileBoundaries){const e=function(e,t){let i=null;const r=Object.values(e._layers).flatMap(i=>i.source&&!i.isHidden(t)?[e.tileManagers[i.source]]:[]),n=r.filter(e=>"vector"===e.getSource().type),s=r.filter(e=>"vector"!==e.getSource().type),o=e=>{(!i||i.getSource().maxzoomo(e)),i||s.forEach(e=>o(e)),i}(this.style,this.transform.zoom);e&&function(e,t,i){for(let r=0;ru.getElevation(f,e,t):null;mn(s,d,p,c,h,_,i,o,g,t.aO(h,e,a,l),f.toUnwrapped(),r)}}}(n,e,r,i,r.layout.get("text-rotation-alignment"),r.layout.get("text-pitch-alignment"),r.paint.get("text-translate"),r.paint.get("text-translate-anchor"),s),0!==r.paint.get("icon-opacity").constantOr(1)&&gn(e,i,r,n,!1,r.paint.get("icon-translate"),r.paint.get("icon-translate-anchor"),r.layout.get("icon-rotation-alignment"),r.layout.get("icon-pitch-alignment"),r.layout.get("icon-keep-upright"),l,c,a),0!==r.paint.get("text-opacity").constantOr(1)&&gn(e,i,r,n,!0,r.paint.get("text-translate"),r.paint.get("text-translate-anchor"),r.layout.get("text-rotation-alignment"),r.layout.get("text-pitch-alignment"),r.layout.get("text-keep-upright"),l,c,a),i.map.showCollisionBoxes&&(un(e,i,r,n,!0),un(e,i,r,n,!1))}(e,i,r,n,this.style.placement.variableOffsets,s):t.cn(r)?function(e,i,r,n,s){if("translucent"!==e.renderPass)return;const{isRenderingToTexture:o}=s,a=r.paint.get("circle-opacity"),l=r.paint.get("circle-stroke-width"),c=r.paint.get("circle-stroke-opacity"),h=!r.layout.get("circle-sort-key").isConstant();if(0===a.constantOr(1)&&(0===l.constantOr(1)||0===c.constantOr(1)))return;const u=e.context,d=u.gl,p=e.transform,f=e.getDepthModeForSublayer(0,ii.ReadOnly),m=ni.disabled,_=e.colorModeForRenderPass(),g=[],y=p.getCircleRadiusCorrection();for(let x=0;xe.sortKey-t.sortKey);for(const t of g){const{programConfiguration:i,program:n,layoutVertexBuffer:s,indexBuffer:o,uniformValues:a,terrainData:l,projectionData:c}=t.state;n.draw(u,d.TRIANGLES,f,m,_,ti.backCCW,a,l,c,r.id,s,o,t.segments,r.paint,e.transform.zoom,i)}}(e,i,r,n,s):t.co(r)?function(e,i,r,n,s){if(0===r.paint.get("heatmap-opacity"))return;const o=e.context,{isRenderingToTexture:a,isRenderingGlobe:l}=s;if(e.style.map.terrain){for(const t of n){const n=i.getTile(t);i.hasRenderableParent(t)||("offscreen"===e.renderPass?xn(e,n,r,t,l):"translucent"===e.renderPass&&vn(e,r,t,a,l))}o.viewport.set([0,0,e.width,e.height])}else"offscreen"===e.renderPass?function(e,i,r,n){const s=e.context,o=s.gl,a=e.transform,l=ni.disabled,c=new Qt([o.ONE,o.ONE],t.bp.transparent,[!0,!0,!0,!0]);(function(e,i,r){const n=e.gl;e.activeTexture.set(n.TEXTURE1),e.viewport.set([0,0,i.width/4,i.height/4]);let s=r.heatmapFbos.get(t.cd);s?(n.bindTexture(n.TEXTURE_2D,s.colorAttachment.get()),e.bindFramebuffer.set(s.framebuffer)):(s=bn(e,i.width/4,i.height/4),r.heatmapFbos.set(t.cd,s))})(s,e,r),s.clear({color:t.bp.transparent});for(let t=0;t0?t.pop():null}isPatternMissing(e){if(!e)return!1;if(!e.from||!e.to)return!0;const t=this.imageManager.getPattern(e.from.toString()),i=this.imageManager.getPattern(e.to.toString());return!t||!i}useProgram(e,t,i=!1,r=[]){this.cache=this.cache||{};const n=!!this.style.map.terrain,s=this.style.projection,o=i?Rt.projectionMercator:s.shaderPreludeCode,a=i?Ot:s.shaderDefine,l=e+(t?t.cacheKey:"")+`/${i?Vt:s.shaderVariantName}`+(this._showOverdrawInspector?"/overdraw":"")+(n?"/terrain":"")+(r?`/${r.join("/")}`:"");return this.cache[l]||(this.cache[l]=new Ui(this.context,Rt[e],t,vr[e],this._showOverdrawInspector,n,o,a,r)),this.cache[l]}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(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD)}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new t.T(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){var e,t;if(this._tileTextures){for(const e in this._tileTextures){const t=this._tileTextures[e];if(t)for(const e of t)e.destroy()}this._tileTextures={}}if(this.tileExtentBuffer&&this.tileExtentBuffer.destroy(),this.debugBuffer&&this.debugBuffer.destroy(),this.rasterBoundsBuffer&&this.rasterBoundsBuffer.destroy(),this.rasterBoundsBufferPosOnly&&this.rasterBoundsBufferPosOnly.destroy(),this.viewportBuffer&&this.viewportBuffer.destroy(),this.tileBorderIndexBuffer&&this.tileBorderIndexBuffer.destroy(),this.quadTriangleIndexBuffer&&this.quadTriangleIndexBuffer.destroy(),this.tileExtentMesh&&(null===(e=this.tileExtentMesh.vertexBuffer)||void 0===e||e.destroy()),this.tileExtentMesh&&(null===(t=this.tileExtentMesh.indexBuffer)||void 0===t||t.destroy()),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.cache){for(const e in this.cache){const t=this.cache[e];t&&t.program&&this.context.gl.deleteProgram(t.program)}this.cache={}}this.context&&this.context.setDefault()}overLimit(){const{drawingBufferWidth:e,drawingBufferHeight:t}=this.context.gl;return this.width!==e||this.height!==t}}function Hn(e,t){let i,r=!1,n=null,s=null;const o=()=>{n=null,r&&(e.apply(s,i),n=setTimeout(o,t),r=!1)};return(...e)=>(r=!0,s=this,i=e,n||o(),n)}class Xn{constructor(e){this._getCurrentHash=()=>{const e=window.location.hash.replace("#","");if(this._hashName){let t;return e.split("&").map(e=>e.split("=")).forEach(e=>{e[0]===this._hashName&&(t=e)}),(t&&t[1]||"").split("/")}return e.split("/")},this._onHashChange=()=>{const e=this._getCurrentHash();if(!this._isValidHash(e))return!1;const t=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(e[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:t,pitch:+(e[4]||0)}),!0},this._updateHashUnthrottled=()=>{const e=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,e)},this._removeHash=()=>{const e=this._getCurrentHash();if(0===e.length)return;const t=e.join("/");let i=t;i.split("&").length>0&&(i=i.split("&")[0]),this._hashName&&(i=`${this._hashName}=${t}`);let r=window.location.hash.replace(i,"");r.startsWith("#&")?r=r.slice(0,1)+r.slice(2):"#"===r&&(r="");let n=window.location.href.replace(/(#.+)?$/,r);n=n.replace("&&","&"),window.history.replaceState(window.history.state,null,n)},this._updateHash=Hn(this._updateHashUnthrottled,300),this._hashName=e&&encodeURIComponent(e)}addTo(e){return this._map=e,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(e){const t=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,r=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),n=Math.pow(10,r),s=Math.round(t.lng*n)/n,o=Math.round(t.lat*n)/n,a=this._map.getBearing(),l=this._map.getPitch();let c="";if(c+=e?`/${s}/${o}/${i}`:`${i}/${o}/${s}`,(a||l)&&(c+="/"+Math.round(10*a)/10),l&&(c+=`/${Math.round(l)}`),this._hashName){const e=this._hashName;let t=!1;const i=window.location.hash.slice(1).split("&").map(i=>{const r=i.split("=")[0];return r===e?(t=!0,`${r}=${c}`):i}).filter(e=>e);return t||i.push(`${e}=${c}`),`#${i.join("&")}`}return`#${c}`}_isValidHash(e){if(e.length<3||e.some(isNaN))return!1;try{new t.V(+e[2],+e[1])}catch(s){return!1}const i=+e[0],r=+(e[3]||0),n=+(e[4]||0);return i>=this._map.getMinZoom()&&i<=this._map.getMaxZoom()&&r>=-180&&r<=180&&n>=this._map.getMinPitch()&&n<=this._map.getMaxPitch()}}const Yn={linearity:.3,easing:t.cw(0,0,.3,1)},Kn=t.e({deceleration:2500,maxSpeed:1400},Yn),Jn=t.e({deceleration:20,maxSpeed:1400},Yn),Qn=t.e({deceleration:1e3,maxSpeed:360},Yn),es=t.e({deceleration:1e3,maxSpeed:90},Yn),ts=t.e({deceleration:1e3,maxSpeed:360},Yn);class is{constructor(e){this._map=e,this.clear()}clear(){this._inertiaBuffer=[]}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:c(),settings:e})}_drainInertiaBuffer(){const e=this._inertiaBuffer,t=c();for(;e.length>0&&t-e[0].time>160;)e.shift()}_onMoveEnd(e){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,roll:0,pan:new t.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:t}of this._inertiaBuffer)i.zoom+=t.zoomDelta||0,i.bearing+=t.bearingDelta||0,i.pitch+=t.pitchDelta||0,i.roll+=t.rollDelta||0,t.panDelta&&i.pan._add(t.panDelta),t.around&&(i.around=t.around),t.pinchAround&&(i.pinchAround=t.pinchAround);const r=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,n={};if(i.pan.mag()){const s=ns(i.pan.mag(),r,t.e({},Kn,e||{})),o=i.pan.mult(s.amount/i.pan.mag()),a=this._map.cameraHelper.handlePanInertia(o,this._map.transform);n.center=a.easingCenter,n.offset=a.easingOffset,rs(n,s)}if(i.zoom){const e=ns(i.zoom,r,Jn);n.zoom=this._map.transform.zoom+e.amount,rs(n,e)}if(i.bearing){const e=ns(i.bearing,r,Qn);n.bearing=this._map.transform.bearing+t.an(e.amount,-179,179),rs(n,e)}if(i.pitch){const e=ns(i.pitch,r,es);n.pitch=this._map.transform.pitch+e.amount,rs(n,e)}if(i.roll){const e=ns(i.roll,r,ts);n.roll=this._map.transform.roll+t.an(e.amount,-179,179),rs(n,e)}if(n.zoom||n.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;n.around=e?this._map.unproject(e):this._map.getCenter()}return this.clear(),t.e(n,{noMoveStart:!0})}}function rs(e,t){(!e.duration||e.durationi.unproject(e)),a=s.reduce((e,t,i,r)=>e.add(t.div(r.length)),new t.P(0,0));super(e,{points:s,point:a,lngLats:o,lngLat:i.unproject(a),originalEvent:r}),this._defaultPrevented=!1}}class as extends t.l{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1}}class ls{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance}reset(){delete this._mousedownPos}wheel(e){return this._firePreventable(new as(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new ss(e.type,this._map,e))}mouseup(e){this._map.fire(new ss(e.type,this._map,e))}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||this._map.fire(new ss(e.type,this._map,e))}dblclick(e){return this._firePreventable(new ss(e.type,this._map,e))}mouseover(e){this._map.fire(new ss(e.type,this._map,e))}mouseout(e){this._map.fire(new ss(e.type,this._map,e))}touchstart(e){return this._firePreventable(new os(e.type,this._map,e))}touchmove(e){this._map.fire(new os(e.type,this._map,e))}touchend(e){this._map.fire(new os(e.type,this._map,e))}touchcancel(e){this._map.fire(new os(e.type,this._map,e))}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class cs{constructor(e){this._map=e}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(e){this._map.fire(new ss(e.type,this._map,e))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new ss("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._ignoreContextMenu||this._map.fire(new ss(e.type,this._map,e)),this._map.listens("contextmenu")&&e.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class hs{constructor(e){this._map=e}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(e){return this.transform.screenPointToLocation(t.P.convert(e),this._map.terrain)}}class us{constructor(e,t){this._map=e,this._tr=new hs(e),this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(h.disableDrag(),this._startPos=this._lastPos=t,this._active=!0)}mousemoveWindow(e,t){if(!this._active)return;const i=t;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)e.fitScreenCoordinates(r,n,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",e)}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",e))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(h.remove(this._box),this._box=null),h.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(e,i){return this._map.fire(new t.l(e,{originalEvent:i}))}}function ds(e,t){if(e.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${e.length}, points ${t.length}`);const i={};for(let r=0;rthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),r.length===this.numTouches&&(this.centroid=function(e){const i=new t.P(0,0);for(const t of e)i._add(t);return i.div(e.length)}(i),this.touches=ds(r,i)))}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const r=ds(i,t);for(const n in this.touches){const e=r[n];(!e||e.dist(this.touches[n])>30)&&(this.aborted=!0)}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class fs{constructor(e){this.singleTap=new ps(e),this.numTaps=e.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(e,t,i){this.singleTap.touchstart(e,t,i)}touchmove(e,t,i){this.singleTap.touchmove(e,t,i)}touchend(e,t,i){const r=this.singleTap.touchend(e,t,i);if(r){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(r)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=r,this.count===this.numTaps)return this.reset(),r}}}class ms{constructor(e){this._tr=new hs(e),this._zoomIn=new fs({numTouches:1,numTaps:2}),this._zoomOut=new fs({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i)}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i)}touchend(e,t,i){const r=this._zoomIn.touchend(e,t,i),n=this._zoomOut.touchend(e,t,i),s=this._tr;return r?(this._active=!0,e.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:s.zoom+1,around:s.unproject(r)},{originalEvent:e})}):n?(this._active=!0,e.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:s.zoom-1,around:s.unproject(n)},{originalEvent:e})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class _s{constructor(e){this._enabled=!!e.enable,this._moveStateManager=e.moveStateManager,this._clickTolerance=e.clickTolerance||1,this._moveFunction=e.move,this._activateOnStart=!!e.activateOnStart,e.assignEvents(this),this.reset()}reset(e){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(e)}_move(...e){const t=this._moveFunction(...e);if(t.bearingDelta||t.pitchDelta||t.rollDelta||t.around||t.panDelta)return this._active=!0,t}dragStart(e,t){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(e)&&(this._moveStateManager.startMove(e),this._lastPoint=Array.isArray(t)?t[0]:t,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(e,t){if(!this.isEnabled())return;const i=this._lastPoint;if(!i)return;if(e.preventDefault(),!this._moveStateManager.isValidMoveEvent(e))return void this.reset(e);const r=Array.isArray(t)?t[0]:t;return!this._moved&&r.dist(i)!0}),t=new bs){this.mouseMoveStateManager=e,this.oneFingerTouchMoveStateManager=t}_executeRelevantHandler(e,t,i){return e instanceof MouseEvent?t(e):"undefined"!=typeof TouchEvent&&e instanceof TouchEvent?i(e):void 0}startMove(e){this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.startMove(e),e=>this.oneFingerTouchMoveStateManager.startMove(e))}endMove(e){this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.endMove(e),e=>this.oneFingerTouchMoveStateManager.endMove(e))}isValidStartEvent(e){return this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.isValidStartEvent(e),e=>this.oneFingerTouchMoveStateManager.isValidStartEvent(e))}isValidMoveEvent(e){return this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.isValidMoveEvent(e),e=>this.oneFingerTouchMoveStateManager.isValidMoveEvent(e))}isValidEndEvent(e){return this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.isValidEndEvent(e),e=>this.oneFingerTouchMoveStateManager.isValidEndEvent(e))}}const Ts=e=>{e.mousedown=e.dragStart,e.mousemoveWindow=e.dragMove,e.mouseup=e.dragEnd,e.contextmenu=e=>{e.preventDefault()}};class Ss{constructor(e,t){this._clickTolerance=e.clickTolerance||1,this._map=t,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new t.P(0,0)}_shouldBePrevented(e){return e<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(e,t,i){return this._calculateTransform(e,t,i)}touchmove(e,t,i){if(this._active){if(!this._shouldBePrevented(i.length))return e.preventDefault(),this._calculateTransform(e,t,i);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",e)}}touchend(e,t,i){this._calculateTransform(e,t,i),this._active&&this._shouldBePrevented(i.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(e,i,r){r.length>0&&(this._active=!0);const n=ds(r,i),s=new t.P(0,0),o=new t.P(0,0);let a=0;for(const t in n){const e=n[t],i=this._touches[t];i&&(s._add(e),o._add(e.sub(i)),a++,n[t]=e)}if(this._touches=n,this._shouldBePrevented(a)||!o.mag())return;const l=o.div(a);return this._sum._add(l),this._sum.mag()Math.abs(e.x)}class zs extends Ps{constructor(e){super(),this._currentTouchCount=0,this._map=e}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(e,t,i){super.touchstart(e,t,i),this._currentTouchCount=i.length}_start(e){this._lastPoints=e,Ds(e[0].sub(e[1]))&&(this._valid=!1)}_move(e,t,i){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;const r=e[0].sub(this._lastPoints[0]),n=e[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(r,n,i.timeStamp),this._valid?(this._lastPoints=e,this._active=!0,{pitchDelta:(r.y+n.y)/2*-.5}):void 0}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const r=e.mag()>=2,n=t.mag()>=2;if(!r&&!n)return;if(!r||!n)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const s=e.y>0==t.y>0;return Ds(e)&&Ds(t)&&s}}const ks={panStep:100,bearingStep:15,pitchStep:10};class Rs{constructor(e){this._tr=new hs(e);const t=ks;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,i=0,r=0,n=0,s=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?i=-1:(e.preventDefault(),n=-1);break;case 39:e.shiftKey?i=1:(e.preventDefault(),n=1);break;case 38:e.shiftKey?r=1:(e.preventDefault(),s=-1);break;case 40:e.shiftKey?r=-1:(e.preventDefault(),s=1);break;default:return}return this._rotationDisabled&&(i=0,r=0),{cameraAnimation:o=>{const a=this._tr;o.easeTo({duration:300,easeId:"keyboardHandler",easing:Ls,zoom:t?Math.round(a.zoom)+t*(e.shiftKey?2:1):a.zoom,bearing:a.bearing+i*this._bearingStep,pitch:a.pitch+r*this._pitchStep,offset:[-n*this._panStep,-s*this._panStep],center:a.center},{originalEvent:e})}}}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 Ls(e){return e*(2-e)}const Fs=4.000244140625,Bs=1/450;class Os{constructor(e,t){this._onTimeout=e=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(e)},this._map=e,this._tr=new hs(e),this._triggerRenderFrame=t,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=Bs}setZoomRate(e){this._defaultZoomRate=e}setWheelZoomRate(e){this._wheelZoomRate=e}isEnabled(){return!!this._enabled}isActive(){return!!this._active||void 0!==this._finishTimeout}isZooming(){return!!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&"center"===e.around)}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(e){return!!this._map.cooperativeGestures.isEnabled()&&!(e.ctrlKey||this._map.cooperativeGestures.isBypassed(e))}wheel(e){if(!this.isEnabled())return;if(this._shouldBePrevented(e))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",e);let t=e.deltaMode===WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY;const i=c(),r=i-(this._lastWheelEventTime||0);this._lastWheelEventTime=i,0!==t&&t%Fs==0?this._type="wheel":0!==t&&Math.abs(t)<4?this._type="trackpad":r>400?(this._type=null,this._lastValue=t,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(r*t)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,t+=this._lastValue)),e.shiftKey&&t&&(t/=4),this._type&&(this._lastWheelEvent=e,this._delta-=t,this._active||this._start(e)),e.preventDefault()}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const i=h.mousePos(this._map.getCanvas(),e),r=this._tr;this._aroundPoint=this._aroundCenter?r.transform.locationToScreenPoint(t.V.convert(r.center)):i,this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const e=this._tr.transform;if("number"==typeof this._lastExpectedZoom){const t=e.zoom-this._lastExpectedZoom;"number"==typeof this._startZoom&&(this._startZoom+=t),"number"==typeof this._targetZoom&&(this._targetZoom+=t)}if(0!==this._delta){const i="wheel"===this._type&&Math.abs(this._delta)>Fs?this._wheelZoomRate:this._defaultZoomRate;let r=2/(1+Math.exp(-Math.abs(this._delta*i)));this._delta<0&&0!==r&&(r=1/r);const n="number"!=typeof this._targetZoom?e.scale:t.aq(this._targetZoom);this._targetZoom=e.applyConstrain(e.getCameraLngLat(),t.at(n*r)).zoom,"wheel"===this._type&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}const i="number"!=typeof this._targetZoom?e.zoom:this._targetZoom,r=this._startZoom,n=this._easing;let s,o=!1;if("wheel"===this._type&&r&&n){const e=c()-this._lastWheelEventTime,a=Math.min((e+5)/200,1),l=n(a);s=t.G.number(r,i,l),a<1?this._frameId||(this._frameId=!0):o=!0}else s=i,o=!0;return this._active=!0,o&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._lastExpectedZoom,delete this._finishTimeout},200)),this._lastExpectedZoom=s,{noInertia:!0,needsRenderFrame:!o,zoomDelta:s-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let i=t.cy;if(this._prevEase){const e=this._prevEase,r=(c()-e.start)/e.duration,n=e.easing(r+.01)-e.easing(r),s=.27/Math.sqrt(n*n+1e-4)*.01,o=Math.sqrt(.0729-s*s);i=t.cw(s,o,.25,1)}return this._prevEase={start:c(),duration:e,easing:i},i}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,delete this._lastExpectedZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class Vs{constructor(e,t){this._clickZoom=e,this._tapZoom=t}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 js{constructor(e){this._tr=new hs(e),this.reset()}reset(){this._active=!1}dblclick(e,t){return e.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:this._tr.zoom+(e.shiftKey?-1:1),around:this._tr.unproject(t)},{originalEvent:e})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Ns{constructor(){this._tap=new fs({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(e,t,i){if(!this._swipePoint)if(this._tapTime){const r=t[0],n=e.timeStamp-this._tapTime<500,s=this._tapPoint.dist(r)<30;n&&s?i.length>0&&(this._swipePoint=r,this._swipeTouch=i[0].identifier):this.reset()}else this._tap.touchstart(e,t,i)}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const r=t[0],n=r.y-this._swipePoint.y;return this._swipePoint=r,e.preventDefault(),this._active=!0,{zoomDelta:n/128}}}else this._tap.touchmove(e,t,i)}touchend(e,t,i){if(this._tapTime)this._swipePoint&&0===i.length&&this.reset();else{const r=this._tap.touchend(e,t,i);r&&(this._tapTime=e.timeStamp,this._tapPoint=r)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Us{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i}enable(e){this._inertiaOptions=e||{},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 Gs{constructor(e,t,i,r){this._pitchWithRotate=e.pitchWithRotate,this._rollEnabled=e.rollEnabled,this._mouseRotate=t,this._mousePitch=i,this._mouseRoll=r}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable(),this._rollEnabled&&this._mouseRoll.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable(),this._mouseRoll.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())&&(!this._rollEnabled||this._mouseRoll.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()||this._mouseRoll.isActive()}}class qs{constructor(e,t,i,r){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=r,this._rotationDisabled=!1,this._enabled=!0}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),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 Zs{constructor(e,t){this._bypassKey=-1!==navigator.userAgent.indexOf("Mac")?"metaKey":"ctrlKey",this._map=e,this._options=t,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;const e=this._map.getCanvasContainer();e.classList.add("maplibregl-cooperative-gestures"),this._container=h.create("div","maplibregl-cooperative-gesture-screen",e);let t=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");"metaKey"===this._bypassKey&&(t=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));const i=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),r=document.createElement("div");r.className="maplibregl-desktop-message",r.textContent=t,this._container.appendChild(r);const n=document.createElement("div");n.className="maplibregl-mobile-message",n.textContent=i,this._container.appendChild(n),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(h.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(e){return e[this._bypassKey]}notifyGestureBlocked(e,i){this._enabled&&(this._map.fire(new t.l("cooperativegestureprevented",{gestureType:e,originalEvent:i})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}const $s=e=>e.zoom||e.drag||e.roll||e.pitch||e.rotate;class Ws extends t.l{}function Hs(e){return e.panDelta&&e.panDelta.mag()||e.zoomDelta||e.bearingDelta||e.pitchDelta||e.rollDelta}class Xs{constructor(e,i){this.handleWindowEvent=e=>{this.handleEvent(e,`${e.type}Window`)},this.handleEvent=(e,i)=>{if("blur"===e.type)return void this.stop(!0);this._updatingCamera=!0;const r="renderFrame"===e.type?void 0:e,n={needsRenderFrame:!1},s={},o={};for(const{handlerName:c,handler:u,allowed:d}of this._handlers){if(!u.isEnabled())continue;let a;if(this._blockedByActive(o,d,c))u.reset();else if(u[i||e.type]){if(t.cz(e,i||e.type)){const t=h.mousePos(this._map.getCanvas(),e);a=u[i||e.type](e,t)}else if(t.cA(e,i||e.type)){const t=this._getMapTouches(e.touches),r=h.touchPos(this._map.getCanvas(),t);a=u[i||e.type](e,r,t)}else t.cB(i||e.type)||(a=u[i||e.type](e));this.mergeHandlerResult(n,s,a,c,r),a&&a.needsRenderFrame&&this._triggerRenderFrame()}(a||u.isActive())&&(o[c]=u)}const a={};for(const t in this._previousActiveHandlers)o[t]||(a[t]=r);this._previousActiveHandlers=o,(Object.keys(a).length||Hs(n))&&(this._changes.push([n,s,a]),this._triggerRenderFrame()),(Object.keys(o).length||Hs(n))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:l}=n;l&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],l(this._map))},this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new is(e),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(i);const r=this._el;this._listeners=[[r,"touchstart",{passive:!0}],[r,"touchmove",{passive:!1}],[r,"touchend",void 0],[r,"touchcancel",void 0],[r,"mousedown",void 0],[r,"mousemove",void 0],[r,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[r,"mouseover",void 0],[r,"mouseout",void 0],[r,"dblclick",void 0],[r,"click",void 0],[r,"keydown",{capture:!1}],[r,"keyup",void 0],[r,"wheel",{passive:!1}],[r,"contextmenu",void 0],[window,"blur",void 0]];for(const[t,n,s]of this._listeners)h.addEventListener(t,n,t===document?this.handleWindowEvent:this.handleEvent,s)}destroy(){for(const[e,t,i]of this._listeners)h.removeEventListener(e,t,e===document?this.handleWindowEvent:this.handleEvent,i)}_addDefaultHandlers(e){const i=this._map,r=i.getCanvasContainer();this._add("mapEvent",new ls(i,e));const n=i.boxZoom=new us(i,e);this._add("boxZoom",n),e.interactive&&e.boxZoom&&n.enable();const s=i.cooperativeGestures=new Zs(i,e.cooperativeGestures);this._add("cooperativeGestures",s),e.cooperativeGestures&&s.enable();const o=new ms(i),a=new js(i);i.doubleClickZoom=new Vs(a,o),this._add("tapZoom",o),this._add("clickZoom",a),e.interactive&&e.doubleClickZoom&&i.doubleClickZoom.enable();const l=new Ns;this._add("tapDragZoom",l);const c=i.touchPitch=new zs(i);this._add("touchPitch",c),e.interactive&&e.touchPitch&&i.touchPitch.enable(e.touchPitch);const u=()=>i.project(i.getCenter()),d=function({enable:e,clickTolerance:i,aroundCenter:r=!0,minPixelCenterThreshold:n=100,rotateDegreesPerPixelMoved:s=.8},o){const a=new vs({checkCorrectEvent:e=>0===h.mouseButton(e)&&e.ctrlKey||2===h.mouseButton(e)&&!e.ctrlKey});return new _s({clickTolerance:i,move:(e,i)=>{const a=o();if(r&&Math.abs(a.y-e.y)>n)return{bearingDelta:t.cx(new t.P(e.x,i.y),i,a)};let l=(i.x-e.x)*s;return r&&i.y0===h.mouseButton(e)&&e.ctrlKey||2===h.mouseButton(e)});return new _s({clickTolerance:t,move:(e,t)=>({pitchDelta:(t.y-e.y)*i}),moveStateManager:r,enable:e,assignEvents:Ts})}(e),f=function({enable:e,clickTolerance:t,rollDegreesPerPixelMoved:i=.3},r){const n=new vs({checkCorrectEvent:e=>2===h.mouseButton(e)&&e.ctrlKey});return new _s({clickTolerance:t,move:(e,t)=>{const n=r();let s=(t.x-e.x)*i;return t.y0===h.mouseButton(e)&&!e.ctrlKey});return new _s({clickTolerance:t,move:(e,t)=>({around:t,panDelta:t.sub(e)}),activateOnStart:!0,moveStateManager:i,enable:e,assignEvents:Ts})}(e),_=new Ss(e,i);i.dragPan=new Us(r,m,_),this._add("mousePan",m),this._add("touchPan",_,["touchZoom","touchRotate"]),e.interactive&&e.dragPan&&i.dragPan.enable(e.dragPan);const g=new As,y=new Es;i.touchZoomRotate=new qs(r,y,g,l),this._add("touchRotate",g,["touchPan","touchZoom"]),this._add("touchZoom",y,["touchPan","touchRotate"]),e.interactive&&e.touchZoomRotate&&i.touchZoomRotate.enable(e.touchZoomRotate),this._add("blockableMapEvent",new cs(i));const x=i.scrollZoom=new Os(i,()=>this._triggerRenderFrame());this._add("scrollZoom",x,["mousePan"]),e.interactive&&e.scrollZoom&&i.scrollZoom.enable(e.scrollZoom);const v=i.keyboard=new Rs(i);this._add("keyboard",v),e.interactive&&e.keyboard&&i.keyboard.enable()}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[]}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return Boolean($s(this._eventsInProgress))||this.isZooming()}_blockedByActive(e,t,i){for(const r in e)if(r!==i&&(!t||t.indexOf(r)<0))return!0;return!1}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}mergeHandlerResult(e,i,r,n,s){if(!r)return;t.e(e,r);const o={handlerName:n,originalEvent:r.originalEvent||s};void 0!==r.zoomDelta&&(i.zoom=o),void 0!==r.panDelta&&(i.drag=o),void 0!==r.rollDelta&&(i.roll=o),void 0!==r.pitchDelta&&(i.pitch=o),void 0!==r.bearingDelta&&(i.rotate=o)}_applyChanges(){const e={},i={},r={};for(const[n,s,o]of this._changes)n.panDelta&&(e.panDelta=(e.panDelta||new t.P(0,0))._add(n.panDelta)),n.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+n.zoomDelta),n.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+n.bearingDelta),n.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+n.pitchDelta),n.rollDelta&&(e.rollDelta=(e.rollDelta||0)+n.rollDelta),void 0!==n.around&&(e.around=n.around),void 0!==n.pinchAround&&(e.pinchAround=n.pinchAround),n.noInertia&&(e.noInertia=n.noInertia),t.e(i,s),t.e(r,o);this._updateMapTransform(e,i,r),this._changes=[]}_updateMapTransform(e,t,i){const r=this._map,n=r._getTransformForUpdate(),s=r.terrain;if(!(Hs(e)||s&&this._terrainMovement))return this._fireEvents(t,i,!0);r._stop(!0);let{panDelta:o,zoomDelta:a,bearingDelta:l,pitchDelta:c,rollDelta:h,around:u,pinchAround:d}=e;void 0!==d&&(u=d),u=u||r.transform.centerPoint,s&&!n.isPointOnMapSurface(u)&&(u=n.centerPoint);const p={panDelta:o,zoomDelta:a,rollDelta:h,pitchDelta:c,bearingDelta:l,around:u};this._map.cameraHelper.useGlobeControls&&!n.isPointOnMapSurface(u)&&(u=n.centerPoint);const f=u.distSqr(n.centerPoint)<.01?n.center:n.screenPointToLocation(o?u.sub(o):u);this._handleMapControls({terrain:s,tr:n,deltasForHelper:p,preZoomAroundLoc:f,combinedEventsInProgress:t,panDelta:o}),r._applyUpdatedTransform(n),this._map._update(),e.noInertia||this._inertia.record(e),this._fireEvents(t,i,!0)}_handleMapControls({terrain:e,tr:t,deltasForHelper:i,preZoomAroundLoc:r,combinedEventsInProgress:n,panDelta:s}){const o=this._map.cameraHelper;if(o.handleMapControlsRollPitchBearingZoom(i,t),e)return o.useGlobeControls?(this._terrainMovement||!n.drag&&!n.zoom||(this._terrainMovement=!0,this._map._elevationFreeze=!0),void o.handleMapControlsPan(i,t,r)):this._terrainMovement||!n.drag&&!n.zoom?void(n.drag&&this._terrainMovement&&s?t.setCenter(t.screenPointToLocation(t.centerPoint.sub(s))):o.handleMapControlsPan(i,t,r)):(this._terrainMovement=!0,this._map._elevationFreeze=!0,void o.handleMapControlsPan(i,t,r));o.handleMapControlsPan(i,t,r)}_fireEvents(e,i,r){const n=$s(this._eventsInProgress),s=$s(e),o={};for(const t in e){const{originalEvent:i}=e[t];this._eventsInProgress[t]||(o[`${t}start`]=i),this._eventsInProgress[t]=e[t]}!n&&s&&this._fireEvent("movestart",s.originalEvent);for(const t in o)this._fireEvent(t,o[t]);s&&this._fireEvent("move",s.originalEvent);for(const t in e){const{originalEvent:i}=e[t];this._fireEvent(t,i)}const l={};let c;for(const t in this._eventsInProgress){const{handlerName:e,originalEvent:r}=this._eventsInProgress[t];this._handlersById[e].isActive()||(delete this._eventsInProgress[t],c=i[e]||r,l[`${t}end`]=c)}for(const t in l)this._fireEvent(t,l[t]);const h=$s(this._eventsInProgress),u=(n||s)&&!h;if(u&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;const e=this._map._getTransformForUpdate();this._map.getCenterClampedToGround()&&e.recalculateZoomAndCenter(this._map.terrain),this._map._applyUpdatedTransform(e)}if(r&&u){this._updatingCamera=!0;const e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap{delete this._frameId,this.handleEvent(new Ws("renderFrame",{timeStamp:e})),this._applyChanges()})}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame())}}class Ys extends t.E{constructor(e,t,i){super(),this._renderFrameCallback=()=>{const e=Math.min((c()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=e,this._bearingSnap=i.bearingSnap,this.cameraHelper=t,this.on("moveend",()=>{delete this._requestedCameraState})}migrateProjection(e,t){e.apply(this.transform),this.transform=e,this.cameraHelper=t}getCenter(){return new t.V(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}getCenterElevation(){return this.transform.elevation}setCenterElevation(e,t){return this.jumpTo({elevation:e},t),this}getCenterClampedToGround(){return this._centerClampedToGround}setCenterClampedToGround(e){this._centerClampedToGround=e}panBy(e,i,r){return e=t.P.convert(e).mult(-1),this.panTo(this.transform.center,t.e({offset:e},i),r)}panTo(e,i,r){return this.easeTo(t.e({center:e},i),r)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(e,i,r){return this.easeTo(t.e({zoom:e},i),r)}zoomIn(e,t){return this.zoomTo(this.getZoom()+1,e,t),this}zoomOut(e,t){return this.zoomTo(this.getZoom()-1,e,t),this}getVerticalFieldOfView(){return this.transform.fov}setVerticalFieldOfView(e,i){return e!=this.transform.fov&&(this.transform.setFov(e),this.fire(new t.l("movestart",i)).fire(new t.l("move",i)).fire(new t.l("moveend",i))),this}getBearing(){return this.transform.bearing}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(e,i,r){return this.easeTo(t.e({bearing:e},i),r)}resetNorth(e,i){return this.rotateTo(0,t.e({duration:1e3},e),i),this}resetNorthPitch(e,i){return this.easeTo(t.e({bearing:0,pitch:0,roll:0,duration:1e3},e),i),this}snapToNorth(e,t){return Math.abs(this.getBearing()){_.easeFunc(t),this.terrain&&!e.freezeElevation&&this._updateElevation(t),this._applyUpdatedTransform(r),this._fireMoveEvents(i)},t=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i,t)},e),this}_prepareEase(e,i,r={}){this._moving=!0,i||r.moving||this.fire(new t.l("movestart",e)),this._zooming&&!r.zooming&&this.fire(new t.l("zoomstart",e)),this._rotating&&!r.rotating&&this.fire(new t.l("rotatestart",e)),this._pitching&&!r.pitching&&this.fire(new t.l("pitchstart",e)),this._rolling&&!r.rolling&&this.fire(new t.l("rollstart",e))}_prepareElevation(e){this._elevationCenter=e,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(e,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(e){void 0!==this._elevationStart&&void 0!==this._elevationCenter||this._prepareElevation(this.transform.center),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom));const i=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(e<1&&i!==this._elevationTarget){const t=this._elevationTarget-this._elevationStart;this._elevationStart+=e*(t-(i-(t*e+this._elevationStart))/(1-e)),this._elevationTarget=i}this.transform.setElevation(t.G.number(this._elevationStart,this._elevationTarget,e))}_finalizeElevation(){this._elevationFreeze=!1,this.getCenterClampedToGround()&&this.transform.recalculateZoomAndCenter(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(e){if(!this.terrain&&e.elevation>=0&&e.pitch<=90)return{};const t=e.getCameraLngLat(),i=e.getCameraAltitude(),r=this.terrain?this.terrain.getElevationForLngLatZoom(t,e.zoom):0;if(ithis._elevateCameraIfInsideTerrain(e)),this.transformCameraUpdate&&t.push(e=>this.transformCameraUpdate(e)),!t.length)return;const i=e.clone();for(const r of t){const e=i.clone(),{center:t,zoom:n,roll:s,pitch:o,bearing:a,elevation:l}=r(e);t&&e.setCenter(t),void 0!==l&&e.setElevation(l),void 0!==n&&e.setZoom(n),void 0!==s&&e.setRoll(s),void 0!==o&&e.setPitch(o),void 0!==a&&e.setBearing(a),i.apply(e)}this.transform.apply(i)}_fireMoveEvents(e){this.fire(new t.l("move",e)),this._zooming&&this.fire(new t.l("zoom",e)),this._rotating&&this.fire(new t.l("rotate",e)),this._pitching&&this.fire(new t.l("pitch",e)),this._rolling&&this.fire(new t.l("roll",e))}_afterEase(e,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId;const r=this._zooming,n=this._rotating,s=this._pitching,o=this._rolling;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._rolling=!1,this._padding=!1,r&&this.fire(new t.l("zoomend",e)),n&&this.fire(new t.l("rotateend",e)),s&&this.fire(new t.l("pitchend",e)),o&&this.fire(new t.l("rollend",e)),this.fire(new t.l("moveend",e))}flyTo(e,i){if(!e.essential&&a.prefersReducedMotion){const r=t.U(e,["center","zoom","bearing","pitch","roll","elevation","padding"]);return this.jumpTo(r,i)}this.stop(),e=t.e({offset:[0,0],speed:1.2,curve:1.42,easing:t.cy},e);const r=this._getTransformForUpdate(),n=r.bearing,s=r.pitch,o=r.roll,l=r.padding,c="bearing"in e?this._normalizeBearing(e.bearing,n):n,h="pitch"in e?+e.pitch:s,u="roll"in e?this._normalizeBearing(e.roll,o):o,d="padding"in e?e.padding:r.padding,p=t.P.convert(e.offset);let f=r.centerPoint.add(p);const m=r.screenPointToLocation(f),_=this.cameraHelper.handleFlyTo(r,{bearing:c,pitch:h,roll:u,padding:d,locationAtOffset:m,offsetAsPoint:p,center:e.center,minZoom:e.minZoom,zoom:e.zoom});let g=e.curve;const y=Math.max(r.width,r.height),x=y/_.scaleOfZoom,v=_.pixelPathLength;"number"==typeof _.scaleOfMinZoom&&(g=Math.sqrt(y/_.scaleOfMinZoom/v*2));const b=g*g;function w(e){const t=(x*x-y*y+(e?-1:1)*b*b*v*v)/(2*(e?x:y)*b*v);return Math.log(Math.sqrt(t*t+1)-t)}function T(e){return(Math.exp(e)-Math.exp(-e))/2}function S(e){return(Math.exp(e)+Math.exp(-e))/2}const P=w(!1);let I=function(e){return S(P)/S(P+g*e)},M=function(e){return y*((S(P)*(T(t=P+g*e)/S(t))-T(P))/b)/v;var t},E=(w(!0)-P)/g;if(Math.abs(v)<2e-6||!isFinite(E)){if(Math.abs(y-x)<1e-6)return this.easeTo(e,i);const t=x0,I=e=>Math.exp(t*g*e)}return e.duration="duration"in e?+e.duration:1e3*E/("screenSpeed"in e?+e.screenSpeed/g:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=n!==c,this._pitching=h!==s,this._rolling=u!==o,this._padding=!r.isPaddingEqual(d),this._prepareEase(i,!1),this.terrain&&this._prepareElevation(_.targetCenter),this._ease(a=>{const m=a*E,g=1/I(m),y=M(m);this._rotating&&r.setBearing(t.G.number(n,c,a)),this._pitching&&r.setPitch(t.G.number(s,h,a)),this._rolling&&r.setRoll(t.G.number(o,u,a)),this._padding&&(r.interpolatePadding(l,d,a),f=r.centerPoint.add(p)),_.easeFunc(a,g,y,f),this.terrain&&!e.freezeElevation&&this._updateElevation(a),this._applyUpdatedTransform(r),this._fireMoveEvents(i)},()=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i)},e),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(e,t){var i;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const e=this._onEaseEnd;delete this._onEaseEnd,e.call(this,t)}return e||null===(i=this.handlers)||void 0===i||i.stop(!1),this}_ease(e,t,i){!1===i.animate||0===i.duration?(e(1),t()):(this._easeStart=c(),this._easeOptions=i,this._onEaseFrame=e,this._onEaseEnd=t,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(e,i){e=t.W(e,-180,180);const r=Math.abs(e-i);return Math.abs(e-360-i)MapLibre'};class Js{constructor(e=Ks){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=e=>{!e||"metadata"!==e.sourceDataType&&"visibility"!==e.sourceDataType&&"style"!==e.dataType&&"terrain"!==e.type||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?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=e}getDefaultPosition(){return"bottom-right"}onAdd(e){return this._map=e,this._compact=this.options.compact,this._container=h.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=h.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=h.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(){h.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(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.title=i,e.setAttribute("aria-label",i)}_updateAttributions(){if(!this._map.style)return;let e=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=e.concat(this.options.customAttribution.map(e=>"string"!=typeof e?"":e)):"string"==typeof this.options.customAttribution&&e.push(this.options.customAttribution)),this._map.style.stylesheet){const e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id}const t=this._map.style.tileManagers;for(const r in t){const i=t[r];if(i.used||i.usedForTerrain){const t=i.getSource();t.attribution&&e.indexOf(t.attribution)<0&&e.push(t.attribution)}}e=e.filter(e=>String(e).trim()),e.sort((e,t)=>e.length-t.length),e=e.filter((t,i)=>{for(let r=i+1;r=0)return!1;return!0});const i=e.join(" | ");i!==this._attribHTML&&(this._attribHTML=i,e.length?(this._innerContainer.innerHTML=h.sanitize(i),this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Qs{constructor(e={}){this._updateCompact=()=>{const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&t.classList.add("maplibregl-compact"):t.classList.remove("maplibregl-compact")}},this.options=e}getDefaultPosition(){return"bottom-left"}onAdd(e){this._map=e,this._compact=this.options&&this.options.compact,this._container=h.create("div","maplibregl-ctrl");const t=h.create("a","maplibregl-ctrl-logo");return t.target="_blank",t.rel="noopener nofollow",t.href="https://maplibre.org/",t.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),t.setAttribute("rel","noopener nofollow"),this._container.appendChild(t),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){h.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class eo{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const r of i)if(r.id===e)return void(r.cancelled=!0)}run(e=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var to=t.aU([{name:"a_pos3d",type:"Int16",components:3}]);class io extends t.E{constructor(e){super(),this._lastTilesetChange=c(),this.tileManager=e,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.deltaZoom=1,this.tileSize=e._source.tileSize*2**this.deltaZoom,e.usedForTerrain=!0,e.tileSize=this.tileSize}destruct(){this.tileManager.usedForTerrain=!1,this.tileManager.tileSize=null}getSource(){return this.tileManager._source}update(e,i){this.tileManager.update(e,i),this._renderableTilesKeys=[];const r={};for(const n of Me(e,{tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:i,calculateTileZoom:this.tileManager._source.calculateTileZoom}))r[n.key]=!0,this._renderableTilesKeys.push(n.key),this._tiles[n.key]||(n.terrainRttPosMatrix32f=new Float64Array(16),t.c7(n.terrainRttPosMatrix32f,0,t.a5,t.a5,0,0,1),this._tiles[n.key]=new pe(n,this.tileSize),this._lastTilesetChange=c());for(const t in this._tiles)r[t]||delete this._tiles[t]}freeRtt(e){for(const t in this._tiles){const i=this._tiles[t];(!e||i.tileID.equals(e)||i.tileID.isChildOf(e)||e.isChildOf(i.tileID))&&(i.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(e=>this.getTileByID(e))}getTileByID(e){return this._tiles[e]}getTerrainCoords(e,t){return t?this._getTerrainCoordsForTileRanges(e,t):this._getTerrainCoordsForRegularTile(e)}_getTerrainCoordsForRegularTile(e){const i={};for(const r of this._renderableTilesKeys){const n=this._tiles[r].tileID,s=e.clone(),o=t.bk();if(n.canonical.equals(e.canonical))t.c7(o,0,t.a5,t.a5,0,0,1);else if(n.canonical.isChildOf(e.canonical)){const i=n.canonical.z-e.canonical.z,r=n.canonical.x-(n.canonical.x>>i<>i<>i;t.c7(o,0,a,a,0,0,1),t.O(o,o,[-r*a,-s*a,0])}else{if(!e.canonical.isChildOf(n.canonical))continue;{const i=e.canonical.z-n.canonical.z,r=e.canonical.x-(e.canonical.x>>i<>i<>i;t.c7(o,0,t.a5,t.a5,0,0,1),t.O(o,o,[r*a,s*a,0]),t.Q(o,o,[1/2**i,1/2**i,0])}}s.terrainRttPosMatrix32f=new Float32Array(o),i[r]=s}return i}_getTerrainCoordsForTileRanges(e,i){const r={};for(const n of this._renderableTilesKeys){const s=this._tiles[n].tileID;if(!this._isWithinTileRanges(s,i))continue;const o=e.clone(),a=t.bk();if(s.canonical.z===e.canonical.z){const i=e.canonical.x-s.canonical.x,r=e.canonical.y-s.canonical.y;t.c7(a,0,t.a5,t.a5,0,0,1),t.O(a,a,[i*t.a5,r*t.a5,0])}else if(s.canonical.z>e.canonical.z){const i=s.canonical.z-e.canonical.z,r=s.canonical.x-(s.canonical.x>>i<>i<>i),l=e.canonical.y-(s.canonical.y>>i),c=t.a5>>i;t.c7(a,0,c,c,0,0,1),t.O(a,a,[-r*c+o*t.a5,-n*c+l*t.a5,0])}else{const i=e.canonical.z-s.canonical.z,r=e.canonical.x-(e.canonical.x>>i<>i<>i)-s.canonical.x,l=(e.canonical.y>>i)-s.canonical.y,c=t.a5<i.maxzoom&&(r=i.maxzoom),r=i.minzoom&&!(null==n?void 0:n.dem);)n=this.findTileInCaches(e.scaledTo(r--).key);return n}findTileInCaches(e){let t=this.tileManager.getTileByID(e);return t||(t=this.tileManager._outOfViewCache.getByKey(e),t)}anyTilesAfterTime(e=Date.now()){return this._lastTilesetChange>=e}_isWithinTileRanges(e,t){return t[e.canonical.z]&&e.canonical.x>=t[e.canonical.z].minTileX&&e.canonical.x<=t[e.canonical.z].maxTileX&&e.canonical.y>=t[e.canonical.z].minTileY&&e.canonical.y<=t[e.canonical.z].maxTileY}}class ro{constructor(e,t,i){this._meshCache={},this.painter=e,this.tileManager=new io(t),this.options=i,this.exaggeration="number"==typeof i.exaggeration?i.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(e,i,r,n=t.a5){var s;if(!(i>=0&&i=0&&rr&&(r=Math.min(n.canonical.z,this.tileManager.maxzoom));return this.getElevationForLngLatZoom(e,r)}getElevation(e,i,r,n=t.a5){return this.getDEMElevation(e,i,r,n)*this.exaggeration}getTerrainData(e){if(!this._emptyDemTexture){const e=this.painter.context,i=new t.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new t.T(e,i,e.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new t.T(e,new t.R({width:1,height:1}),e.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=t.ar([])}const i=this.tileManager.getSourceTile(e,!0);if(i&&i.dem&&(!i.demTexture||i.needsTerrainPrepare)){const e=this.painter.context;i.demTexture=this.painter.getTileTexture(i.dem.stride),i.demTexture?i.demTexture.update(i.dem.getPixels(),{premultiply:!1}):i.demTexture=new t.T(e,i.dem.getPixels(),e.gl.RGBA,{premultiply:!1}),i.demTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),i.needsTerrainPrepare=!1}const r=i&&i.toString()+i.tileID.key+e.key;if(r&&!this._demMatrixCache[r]){const r=this.tileManager.getSource().maxzoom;let n=e.canonical.z-i.tileID.canonical.z;e.overscaledZ>e.canonical.z&&(e.canonical.z>=r?n=e.canonical.z-r:t.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const s=e.canonical.x-(e.canonical.x>>n<>n<>8<<4|t>>8,i[s+3]=0;const r=new t.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(i.buffer)),n=new t.T(e,r,e.gl.RGBA,{premultiply:!1});return n.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._coordsTexture=n,n}pointCoordinate(e){this.painter.maybeDrawDepthAndCoords(!0);const i=new Uint8Array(4),r=this.painter.context,n=r.gl,s=Math.round(e.x*this.painter.pixelRatio/devicePixelRatio),o=Math.round(e.y*this.painter.pixelRatio/devicePixelRatio),a=Math.round(this.painter.height/devicePixelRatio);r.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),n.readPixels(s,a-o-1,1,1,n.RGBA,n.UNSIGNED_BYTE,i),r.bindFramebuffer.set(null);const l=i[0]+(i[2]>>4<<8),c=i[1]+((15&i[2])<<8),h=this.coordsIndex[255-i[3]],u=h&&this.tileManager.getTileByID(h);if(!u)return null;const d=this._coordsTextureSize,p=(1<0,n=r&&0===e.canonical.y,s=r&&e.canonical.y===(1<e.id!==t),this._recentlyUsed.push(e.id)}stampObject(e){e.stamp=++this._stamp}getOrCreateFreeObject(){for(const t of this._recentlyUsed)if(!this._objects[t].inUse)return this._objects[t];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");const e=this._createObject(this._objects.length);return this._objects.push(e),e}freeObject(e){e.inUse=!1}freeAllObjects(){for(const e of this._objects)this.freeObject(e)}isFull(){return!(this._objects.length!e.inUse)}}const so={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0,"color-relief":!0};class oo{constructor(e,t){this.painter=e,this.terrain=t,this.pool=new no(e.context,30,t.tileManager.tileSize*t.qualityFactor)}destruct(){this.pool.destruct()}getTexture(e){return this.pool.getObjectForId(e.rtt[this._stacks.length-1].id).texture}prepareForRender(e,t){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.tileManager.getRenderableTiles(),this._renderableLayerIds=e._order.filter(i=>!e._layers[i].isHidden(t)),this._coordsAscending={};for(const i in e.tileManagers){this._coordsAscending[i]={};const t=e.tileManagers[i].getVisibleCoordinates(),r=e.tileManagers[i].getSource(),n=r instanceof te?r.terrainTileRanges:null;for(const e of t){const t=this.terrain.tileManager.getTerrainCoords(e,n);for(const e in t)this._coordsAscending[i][e]||(this._coordsAscending[i][e]=[]),this._coordsAscending[i][e].push(t[e])}}this._coordsAscendingStr={};for(const i of e._order){const t=e._layers[i],r=t.source;if(so[t.type]&&!this._coordsAscendingStr[r]){this._coordsAscendingStr[r]={};for(const e in this._coordsAscending[r])this._coordsAscendingStr[r][e]=this._coordsAscending[r][e].map(e=>e.key).sort().join()}}for(const i of this._renderableTiles)for(const e in this._coordsAscendingStr){const t=this._coordsAscendingStr[e][i.tileID.key];t&&t!==i.rttCoords[e]&&(i.rtt=[])}}renderLayer(e,i){if(e.isHidden(this.painter.transform.zoom))return!1;const r=Object.assign(Object.assign({},i),{isRenderingToTexture:!0}),n=e.type,s=this.painter,o=this._renderableLayerIds[this._renderableLayerIds.length-1]===e.id;if(so[n]&&(this._prevType&&so[this._prevType]||this._stacks.push([]),this._prevType=n,this._stacks[this._stacks.length-1].push(e.id),!o))return!0;if(so[this._prevType]||so[n]&&o){this._prevType=n;const e=this._stacks.length-1,i=this._stacks[e]||[];for(const n of this._renderableTiles){if(this.pool.isFull()&&(Zn(this.painter,this.terrain,this._rttTiles,r),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(n),n.rtt[e]){const t=this.pool.getObjectForId(n.rtt[e].id);if(t.stamp===n.rtt[e].stamp){this.pool.useObject(t);continue}}const o=this.pool.getOrCreateFreeObject();this.pool.useObject(o),this.pool.stampObject(o),n.rtt[e]={id:o.id,stamp:o.stamp},s.context.bindFramebuffer.set(o.fbo.framebuffer),s.context.clear({color:t.bp.transparent,stencil:0}),s.currentStencilSource=void 0;for(let e=0;e{this.startMove(e,h.mousePos(this.element,e)),h.addEventListener(window,"mousemove",this.mousemove),h.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=e=>{this.move(e,h.mousePos(this.element,e))},this.mouseup=e=>{this._rotatePitchHandler.dragEnd(e),this.offTemp()},this.touchstart=e=>{1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=h.touchPos(this.element,e.targetTouches)[0],this.startMove(e,this._startPos),h.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),h.addEventListener(window,"touchend",this.touchend))},this.touchmove=e=>{1!==e.targetTouches.length?this.reset():(this._lastPos=h.touchPos(this.element,e.targetTouches)[0],this.move(e,this._lastPos))},this.touchend=e=>{0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this._rotatePitchHandler.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10,this.element=i;const n=new ws;this._rotatePitchHandler=new _s({clickTolerance:3,move:(e,n)=>{const s=i.getBoundingClientRect(),o=new t.P((s.bottom-s.top)/2,(s.right-s.left)/2);return{bearingDelta:t.cx(new t.P(e.x,n.y),n,o),pitchDelta:r?-.5*(n.y-e.y):void 0}},moveStateManager:n,enable:!0,assignEvents:()=>{}}),this.map=e,h.addEventListener(i,"mousedown",this.mousedown),h.addEventListener(i,"touchstart",this.touchstart,{passive:!1}),h.addEventListener(i,"touchcancel",this.reset)}startMove(e,t){this._rotatePitchHandler.dragStart(e,t),h.disableDrag()}move(e,t){const i=this.map,{bearingDelta:r,pitchDelta:n}=this._rotatePitchHandler.dragMove(e,t)||{};r&&i.setBearing(i.getBearing()+r),n&&i.setPitch(i.getPitch()+n)}off(){const e=this.element;h.removeEventListener(e,"mousedown",this.mousedown),h.removeEventListener(e,"touchstart",this.touchstart,{passive:!1}),h.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),h.removeEventListener(window,"touchend",this.touchend),h.removeEventListener(e,"touchcancel",this.reset),this.offTemp()}offTemp(){h.enableDrag(),h.removeEventListener(window,"mousemove",this.mousemove),h.removeEventListener(window,"mouseup",this.mouseup),h.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),h.removeEventListener(window,"touchend",this.touchend)}}let po;function fo(e,i,r,n=!1){if(n||!r.getCoveringTilesDetailsProvider().allowWorldCopies())return null==e?void 0:e.wrap();const s=new t.V(e.lng,e.lat);if(e=new t.V(e.lng,e.lat),i){const n=new t.V(e.lng-360,e.lat),s=new t.V(e.lng+360,e.lat),o=r.locationToScreenPoint(e).distSqr(i);r.locationToScreenPoint(n).distSqr(i)180;){const t=r.locationToScreenPoint(e);if(t.x>=0&&t.y>=0&&t.x<=r.width&&t.y<=r.height)break;e.lng>r.center.lng?e.lng-=360:e.lng+=360}return e.lng!==s.lng&&r.isPointOnMapSurface(r.locationToScreenPoint(e))?e:s}const mo={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 _o(e,t,i){const r=e.classList;for(const n in mo)r.remove(`maplibregl-${i}-anchor-${n}`);r.add(`maplibregl-${i}-anchor-${t}`)}class go extends t.E{constructor(e){if(super(),this._onKeyPress=e=>{const t=e.code,i=e.charCode||e.keyCode;"Space"!==t&&"Enter"!==t&&32!==i&&13!==i||this.togglePopup()},this._onMapClick=e=>{const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup()},this._update=e=>{if(!this._map)return;const t=this._map.loaded()&&!this._map.isMoving();("terrain"===(null==e?void 0:e.type)||"render"===(null==e?void 0:e.type)&&!t)&&this._map.once("render",this._update),this._lngLat=fo(this._lngLat,this._flatPos,this._map.transform),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationToScreenPoint(this._lngLat)._add(this._offset));let i="";"viewport"===this._rotationAlignment||"auto"===this._rotationAlignment?i=`rotateZ(${this._rotation}deg)`:"map"===this._rotationAlignment&&(i=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let r="";"viewport"===this._pitchAlignment||"auto"===this._pitchAlignment?r="rotateX(0deg)":"map"===this._pitchAlignment&&(r=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||e&&"moveend"!==e.type||(this._pos=this._pos.round()),h.setTransform(this._element,`${mo[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${r} ${i}`),a.frameAsync(new AbortController).then(()=>{this._updateOpacity(e&&"moveend"===e.type)}).catch(()=>{})},this._onMove=e=>{if(!this._isDragging){const t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new t.l("dragstart"))),this.fire(new t.l("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),"active"===this._state&&this.fire(new t.l("dragend")),this._state="inactive"},this._addDragHandler=e=>{this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos).add(this._offset),this._pointerdownPos=e.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=e&&e.anchor||"center",this._color=e&&e.color||"#3FB1CE",this._scale=e&&e.scale||1,this._draggable=e&&e.draggable||!1,this._clickTolerance=e&&e.clickTolerance||0,this._subpixelPositioning=e&&e.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=e&&e.rotation||0,this._rotationAlignment=e&&e.rotationAlignment||"auto",this._pitchAlignment=e&&e.pitchAlignment&&"auto"!==e.pitchAlignment?e.pitchAlignment:this._rotationAlignment,this.setOpacity(null==e?void 0:e.opacity,null==e?void 0:e.opacityWhenCovered),e&&e.element)this._element=e.element,this._offset=t.P.convert(e&&e.offset||[0,0]);else{this._defaultMarker=!0,this._element=h.create("div");const i=h.createNS("http://www.w3.org/2000/svg","svg"),r=41,n=27;i.setAttributeNS(null,"display","block"),i.setAttributeNS(null,"height",`${r}px`),i.setAttributeNS(null,"width",`${n}px`),i.setAttributeNS(null,"viewBox",`0 0 ${n} ${r}`);const s=h.createNS("http://www.w3.org/2000/svg","g");s.setAttributeNS(null,"stroke","none"),s.setAttributeNS(null,"stroke-width","1"),s.setAttributeNS(null,"fill","none"),s.setAttributeNS(null,"fill-rule","evenodd");const o=h.createNS("http://www.w3.org/2000/svg","g");o.setAttributeNS(null,"fill-rule","nonzero");const a=h.createNS("http://www.w3.org/2000/svg","g");a.setAttributeNS(null,"transform","translate(3.0, 29.0)"),a.setAttributeNS(null,"fill","#000000");const l=[{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(const e of l){const t=h.createNS("http://www.w3.org/2000/svg","ellipse");t.setAttributeNS(null,"opacity","0.04"),t.setAttributeNS(null,"cx","10.5"),t.setAttributeNS(null,"cy","5.80029008"),t.setAttributeNS(null,"rx",e.rx),t.setAttributeNS(null,"ry",e.ry),a.appendChild(t)}const c=h.createNS("http://www.w3.org/2000/svg","g");c.setAttributeNS(null,"fill",this._color);const u=h.createNS("http://www.w3.org/2000/svg","path");u.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"),c.appendChild(u);const d=h.createNS("http://www.w3.org/2000/svg","g");d.setAttributeNS(null,"opacity","0.25"),d.setAttributeNS(null,"fill","#000000");const p=h.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"),d.appendChild(p);const f=h.createNS("http://www.w3.org/2000/svg","g");f.setAttributeNS(null,"transform","translate(6.0, 7.0)"),f.setAttributeNS(null,"fill","#FFFFFF");const m=h.createNS("http://www.w3.org/2000/svg","g");m.setAttributeNS(null,"transform","translate(8.0, 8.0)");const _=h.createNS("http://www.w3.org/2000/svg","circle");_.setAttributeNS(null,"fill","#000000"),_.setAttributeNS(null,"opacity","0.25"),_.setAttributeNS(null,"cx","5.5"),_.setAttributeNS(null,"cy","5.5"),_.setAttributeNS(null,"r","5.4999962");const g=h.createNS("http://www.w3.org/2000/svg","circle");g.setAttributeNS(null,"fill","#FFFFFF"),g.setAttributeNS(null,"cx","5.5"),g.setAttributeNS(null,"cy","5.5"),g.setAttributeNS(null,"r","5.4999962"),m.appendChild(_),m.appendChild(g),o.appendChild(a),o.appendChild(c),o.appendChild(d),o.appendChild(f),o.appendChild(m),i.appendChild(o),i.setAttributeNS(null,"height",r*this._scale+"px"),i.setAttributeNS(null,"width",n*this._scale+"px"),this._element.appendChild(i),this._offset=t.P.convert(e&&e.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",e=>{e.preventDefault()}),this._element.addEventListener("mousedown",e=>{e.preventDefault()}),_o(this._element,this._anchor,"marker"),e&&e.className)for(const t of e.className.split(" "))this._element.classList.add(t);this._popup=null}addTo(e){return this.remove(),this._map=e,this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label",e._getUIString("Marker.Title")),this._element.hasAttribute("role")||this._element.setAttribute("role","button"),e.getCanvasContainer().appendChild(this._element),e.on("move",this._update),e.on("moveend",this._update),e.on("terrain",this._update),e.on("projectiontransition",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("projectiontransition",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),h.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.V.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),e){if(!("offset"in e.options)){const t=38.1,i=13.5,r=Math.abs(i)/Math.SQRT2;e.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-t],"bottom-left":[r,-1*(t-i+r)],"bottom-right":[-r,-1*(t-i+r)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset}this._popup=e,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(e){return this._subpixelPositioning=e,this}getPopup(){return this._popup}togglePopup(){const e=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:e?(e.isOpen()?e.remove():(e.setLngLat(this._lngLat),e.addTo(this._map)),this):this}_updateOpacity(e=!1){var i,r;const n=null===(i=this._map)||void 0===i?void 0:i.terrain,s=this._map.transform.isLocationOccluded(this._lngLat);if(!n||s){const e=s?this._opacityWhenCovered:this._opacity;return void(this._element.style.opacity!==e&&(this._element.style.opacity=e))}if(e)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}const o=this._map,a=o.terrain.depthAtPoint(this._pos),l=o.terrain.getElevationForLngLat(this._lngLat,o.transform);if(o.transform.lngLatToCameraDepth(this._lngLat,l)-a<.006)return void(this._element.style.opacity=this._opacity);const c=-this._offset.y/o.transform.pixelsPerMeter,h=Math.sin(o.getPitch()*Math.PI/180)*c,u=o.terrain.depthAtPoint(new t.P(this._pos.x,this._pos.y-this._offset.y)),d=o.transform.lngLatToCameraDepth(this._lngLat,l+h)-u>.006;(null===(r=this._popup)||void 0===r?void 0:r.isOpen())&&d&&this._popup.remove(),this._element.style.opacity=d?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(e){return this._offset=t.P.convert(e),this._update(),this}addClassName(e){this._element.classList.add(e)}removeClassName(e){this._element.classList.remove(e)}toggleClassName(e){return this._element.classList.toggle(e)}setDraggable(e){return this._draggable=!!e,this._map&&(e?(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(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e&&"auto"!==e?e:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(e,t){return(void 0===this._opacity||void 0===e&&void 0===t)&&(this._opacity="1",this._opacityWhenCovered="0.2"),void 0!==e&&(this._opacity=e),void 0!==t&&(this._opacityWhenCovered=t),this._map&&this._updateOpacity(!0),this}}const yo={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let xo=0,vo=!1;const bo={maxWidth:100,unit:"metric"};function wo(e,t,i){const r=i&&i.maxWidth||100,n=e._container.clientHeight/2,s=e._container.clientWidth/2,o=e.unproject([s-r/2,n]),a=e.unproject([s+r/2,n]),l=Math.round(e.project(a).x-e.project(o).x),c=Math.min(r,l,e._container.clientWidth),h=o.distanceTo(a);if(i&&"imperial"===i.unit){const i=3.2808*h;i>5280?To(t,c,i/5280,e._getUIString("ScaleControl.Miles")):To(t,c,i,e._getUIString("ScaleControl.Feet"))}else i&&"nautical"===i.unit?To(t,c,h/1852,e._getUIString("ScaleControl.NauticalMiles")):h>=1e3?To(t,c,h/1e3,e._getUIString("ScaleControl.Kilometers")):To(t,c,h,e._getUIString("ScaleControl.Meters"))}function To(e,t,i,r){const n=function(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}(i);e.style.width=t*(n/i)+"px",e.innerHTML=`${n} ${r}`}const So={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1,locationOccludedOpacity:void 0},Po=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Io(e){if(e){if("number"==typeof e){const i=Math.round(Math.abs(e)/Math.SQRT2);return{center:new t.P(0,0),top:new t.P(0,e),"top-left":new t.P(i,i),"top-right":new t.P(-i,i),bottom:new t.P(0,-e),"bottom-left":new t.P(i,-i),"bottom-right":new t.P(-i,-i),left:new t.P(e,0),right:new t.P(-e,0)}}if(e instanceof t.P||Array.isArray(e)){const i=t.P.convert(e);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:t.P.convert(e.center||[0,0]),top:t.P.convert(e.top||[0,0]),"top-left":t.P.convert(e["top-left"]||[0,0]),"top-right":t.P.convert(e["top-right"]||[0,0]),bottom:t.P.convert(e.bottom||[0,0]),"bottom-left":t.P.convert(e["bottom-left"]||[0,0]),"bottom-right":t.P.convert(e["bottom-right"]||[0,0]),left:t.P.convert(e.left||[0,0]),right:t.P.convert(e.right||[0,0])}}return Io(new t.P(0,0))}const Mo=i;e.AJAXError=t.cI,e.Event=t.l,e.Evented=t.E,e.LngLat=t.V,e.MercatorCoordinate=t.a9,e.Point=t.P,e.addProtocol=t.cJ,e.config=t.c,e.removeProtocol=t.cK,e.AttributionControl=Js,e.BoxZoomHandler=us,e.CanvasSource=re,e.CooperativeGesturesHandler=Zs,e.DoubleClickZoomHandler=Vs,e.DragPanHandler=Us,e.DragRotateHandler=Gs,e.EdgeInsets=Nt,e.FullscreenControl=class extends t.E{constructor(e={}){super(),this._onFullscreenChange=()=>{var e;let t=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;null===(e=null==t?void 0:t.shadowRoot)||void 0===e?void 0:e.fullscreenElement;)t=t.shadowRoot.fullscreenElement;t===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,e&&e.container&&(e.container instanceof HTMLElement?this._container=e.container:t.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(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){h.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){const e=this._fullscreenButton=h.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);h.create("span","maplibregl-ctrl-icon",e).setAttribute("aria-hidden","true"),e.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute("aria-label",e),this._fullscreenButton.title=e}_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 t.l("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new t.l("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()}},e.GeoJSONSource=ee,e.GeolocateControl=class extends t.E{constructor(e){super(),this._onSuccess=e=>{if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.l("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,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&&"OFF"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new t.l("geolocate",e)),this._finish()}},this._updateCamera=e=>{const i=new t.V(e.coords.longitude,e.coords.latitude),r=e.coords.accuracy,n=this._map.getBearing(),s=t.e({bearing:n},this.options.fitBoundsOptions),o=W.fromLngLat(i,r);this._map.fitBounds(o,s,{geolocateSource:!0})},this._updateMarker=e=>{if(e){const i=new t.V(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this._updateCircleRadiusIfNeeded()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onUpdate=()=>{this._updateCircleRadiusIfNeeded()},this._onError=e=>{if(this._map){if(1===e.code){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;const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&vo)return;this._setErrorState()}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new t.l("error",e)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",e=>e.preventDefault()),this._geolocateButton=h.create("button","maplibregl-ctrl-geolocate",this._container),h.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=e=>{if(this._map){if(!1===e){t.w("Geolocation support is not available so the GeolocateControl will be disabled.");const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e)}else{const e=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=h.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new go({element:this._dotElement}),this._circleElement=h.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new go({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onUpdate),this._map.on("move",this._onUpdate),this._map.on("rotate",this._onUpdate),this._map.on("pitch",this._onUpdate)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",e=>{const i=(null==e?void 0:e[0])instanceof ResizeObserverEntry;e.geolocateSource||"ACTIVE_LOCK"!==this._watchState||i||this._map.isZooming()||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new t.l("trackuserlocationend")),this.fire(new t.l("userlocationlostfocus")))})}},this.options=t.e({},yo,e)}onAdd(e){return this._map=e,this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return t._(this,arguments,void 0,function*(e=!1){if(void 0!==po&&!e)return po;if(void 0===window.navigator.permissions)return po=!!window.navigator.geolocation,po;try{const e=yield window.navigator.permissions.query({name:"geolocation"});po="denied"!==e.state}catch(t){po=!!window.navigator.geolocation}return po})}().then(e=>this._finishSetupUI(e)),this._container}onRemove(){void 0!==this._geolocationWatchID&&(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(),h.remove(this._container),this._map.off("zoom",this._onUpdate),this._map.off("move",this._onUpdate),this._map.off("rotate",this._onUpdate),this._map.off("pitch",this._onUpdate),this._map=void 0,xo=0,vo=!1}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return t&&(i.longitudet.getEast()||i.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":case"BACKGROUND_ERROR":case"OFF":case void 0:break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadiusIfNeeded(){const e=this._userLocationDotMarker.getLngLat();if(!(this.options.showUserLocation&&this.options.showAccuracyCircle&&this._accuracy&&e))return;const t=this._map.project(e),i=this._map.unproject([t.x+100,t.y]),r=e.distanceTo(i)/100,n=2*this._accuracy/r;this._circleElement.style.width=`${n.toFixed(2)}px`,this._circleElement.style.height=`${n.toFixed(2)}px`}trigger(){if(!this._setup)return t.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 t.l("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":xo--,vo=!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 t.l("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 t.l("trackuserlocationstart")),this.fire(new t.l("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("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let e;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),xo++,xo>1?(e={maximumAge:6e5,timeout:0},vo=!0):(e=this.options.positionOptions,vo=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}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)}},e.GlobeControl=class{constructor(){this._toggleProjection=()=>{var e;const t=null===(e=this._map.getProjection())||void 0===e?void 0:e.type;this._map.setProjection("mercator"!==t&&t?{type:"mercator"}:{type:"globe"}),this._updateGlobeIcon()},this._updateGlobeIcon=()=>{var e;this._globeButton.classList.remove("maplibregl-ctrl-globe"),this._globeButton.classList.remove("maplibregl-ctrl-globe-enabled"),"globe"===(null===(e=this._map.getProjection())||void 0===e?void 0:e.type)?(this._globeButton.classList.add("maplibregl-ctrl-globe-enabled"),this._globeButton.title=this._map._getUIString("GlobeControl.Disable")):(this._globeButton.classList.add("maplibregl-ctrl-globe"),this._globeButton.title=this._map._getUIString("GlobeControl.Enable"))}}onAdd(e){return this._map=e,this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._globeButton=h.create("button","maplibregl-ctrl-globe",this._container),h.create("span","maplibregl-ctrl-icon",this._globeButton).setAttribute("aria-hidden","true"),this._globeButton.type="button",this._globeButton.addEventListener("click",this._toggleProjection),this._updateGlobeIcon(),this._map.on("styledata",this._updateGlobeIcon),this._container}onRemove(){h.remove(this._container),this._map.off("styledata",this._updateGlobeIcon),this._globeButton.removeEventListener("click",this._toggleProjection),this._map=void 0}},e.Hash=Xn,e.ImageSource=te,e.KeyboardHandler=Rs,e.LngLatBounds=W,e.LogoControl=Qs,e.Map=class extends Ys{constructor(e){var i,r;t.cG.mark(t.cH.create);const n=Object.assign(Object.assign(Object.assign({},co),e),{canvasContextAttributes:Object.assign(Object.assign({},co.canvasContextAttributes),e.canvasContextAttributes)});if(null!=n.minZoom&&null!=n.maxZoom&&n.minZoom>n.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=n.minPitch&&null!=n.maxPitch&&n.minPitch>n.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=n.minPitch&&n.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=n.maxPitch&&n.maxPitch>180)throw new Error("maxPitch must be less than or equal to 180");const s=new Ht,o=new Jt;if(void 0!==n.minZoom&&s.setMinZoom(n.minZoom),void 0!==n.maxZoom&&s.setMaxZoom(n.maxZoom),void 0!==n.minPitch&&s.setMinPitch(n.minPitch),void 0!==n.maxPitch&&s.setMaxPitch(n.maxPitch),void 0!==n.renderWorldCopies&&s.setRenderWorldCopies(n.renderWorldCopies),null!==n.transformConstrain&&s.setConstrainOverride(n.transformConstrain),super(s,o,{bearingSnap:n.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new eo,this._controls=[],this._mapId=t.af(),this._lostContextStyle={style:null,images:null},this._contextLost=e=>{e.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.painter.destroy();for(const t of Object.values(this.style._layers))if(t.type,t._listeners)for(const[e]of Object.entries(t._listeners));this._lostContextStyle=this._getStyleAndImages(),this.style.destroy(),this.style=null,this.fire(new t.l("webglcontextlost",{originalEvent:e}))},this._contextRestored=e=>{this._lostContextStyle.style&&this.setStyle(this._lostContextStyle.style,{diff:!1}),this._lostContextStyle.images&&(this.style.imageManager.images=this._lostContextStyle.images),this._setupPainter(),this.resize(),this._update(),this.fire(new t.l("webglcontextrestored",{originalEvent:e}))},this._onMapScroll=e=>{if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=n.interactive,this._maxTileCacheSize=n.maxTileCacheSize,this._maxTileCacheZoomLevels=n.maxTileCacheZoomLevels,this._canvasContextAttributes=Object.assign({},n.canvasContextAttributes),this._trackResize=!0===n.trackResize,this._bearingSnap=n.bearingSnap,this._centerClampedToGround=n.centerClampedToGround,this._refreshExpiredTiles=!0===n.refreshExpiredTiles,this._fadeDuration=n.fadeDuration,this._crossSourceCollisions=!0===n.crossSourceCollisions,this._collectResourceTiming=!0===n.collectResourceTiming,this._locale=Object.assign(Object.assign({},ao),n.locale),this._clickTolerance=n.clickTolerance,this._overridePixelRatio=n.pixelRatio,this._maxCanvasSize=n.maxCanvasSize,this._zoomLevelsToOverscale=n.experimentalZoomLevelsToOverscale,this.transformCameraUpdate=n.transformCameraUpdate,this.transformConstrain=n.transformConstrain,this.cancelPendingTileRequestsWhileZooming=!0===n.cancelPendingTileRequestsWhileZooming,void 0!==n.reduceMotion&&(a.prefersReducedMotion=n.reduceMotion),this._imageQueueHandle=g.addThrottleControl(()=>this.isMoving()),this._requestManager=new y(n.transformRequest),"string"==typeof n.container){if(this._container=document.getElementById(n.container),!this._container)throw new Error(`Container '${n.container}' not found.`)}else{if(!(n.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=n.container}if(n.maxBounds&&this.setMaxBounds(n.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)),this.on("moveend",()=>this._update(!1)),this.on("zoom",()=>this._update(!0)),this.on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}),this.once("idle",()=>{this._idleTriggered=!0}),"undefined"!=typeof window){addEventListener("online",this._onWindowOnline,!1);let e=!1;const t=Hn(e=>{this._trackResize&&!this._removed&&(this.resize(e),this.redraw())},50);this._resizeObserver=new ResizeObserver(i=>{e?t(i):e=!0}),this._resizeObserver.observe(this._container)}this.handlers=new Xs(this,n),this._hash=n.hash&&new Xn("string"==typeof n.hash&&n.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:n.center,elevation:n.elevation,zoom:n.zoom,bearing:n.bearing,pitch:n.pitch,roll:n.roll}),n.bounds&&(this.resize(),this.fitBounds(n.bounds,t.e({},n.fitBoundsOptions,{duration:0}))));const l="string"==typeof n.style||!("globe"===(null===(r=null===(i=n.style)||void 0===i?void 0:i.projection)||void 0===r?void 0:r.type));this.resize(null,l),this._localIdeographFontFamily=n.localIdeographFontFamily,this._validateStyle=n.validateStyle,n.style&&this.setStyle(n.style,{localIdeographFontFamily:n.localIdeographFontFamily}),n.attributionControl&&this.addControl(new Js("boolean"==typeof n.attributionControl?void 0:n.attributionControl)),n.maplibreLogo&&this.addControl(new Qs,n.logoPosition),this.on("style.load",()=>{if(l||this._resizeTransform(),this.transform.unmodified){const e=t.U(this.style.stylesheet,["center","zoom","bearing","pitch","roll"]);this.jumpTo(e)}}),this.on("data",e=>{this._update("style"===e.dataType),this.fire(new t.l(`${e.dataType}data`,e))}),this.on("dataloading",e=>{this.fire(new t.l(`${e.dataType}dataloading`,e))}),this.on("dataabort",e=>{this.fire(new t.l("sourcedataabort",e))})}_getMapId(){return this._mapId}setGlobalStateProperty(e,t){return this.style.setGlobalStateProperty(e,t),this._update(!0)}getGlobalState(){return this.style.getGlobalState()}addControl(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():"top-right"),!e||!e.onAdd)return this.fire(new t.k(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const r=e.onAdd(this);this._controls.push(e);const n=this._controlPositions[i];return-1!==i.indexOf("bottom")?n.insertBefore(r,n.firstChild):n.appendChild(r),this}removeControl(e){if(!e||!e.onRemove)return this.fire(new t.k(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this}hasControl(e){return this._controls.indexOf(e)>-1}coveringTiles(e){return Me(this.transform,e)}calculateCameraOptionsFromTo(e,t,i,r){return null==r&&this.terrain&&(r=this.terrain.getElevationForLngLat(i,this.transform)),super.calculateCameraOptionsFromTo(e,t,i,r)}resize(e,i=!0){const[r,n]=this._containerDimensions(),s=this._getClampedPixelRatio(r,n);if(this._resizeCanvas(r,n,s),this.painter.resize(r,n,s),this.painter.overLimit()){const e=this.painter.context.gl;this._maxCanvasSize=[e.drawingBufferWidth,e.drawingBufferHeight];const t=this._getClampedPixelRatio(r,n);this._resizeCanvas(r,n,t),this.painter.resize(r,n,t)}this._resizeTransform(i);const o=!this._moving;return o&&(this.stop(),this.fire(new t.l("movestart",e)).fire(new t.l("move",e))),this.fire(new t.l("resize",e)),o&&this.fire(new t.l("moveend",e)),this}_resizeTransform(e=!0){var t;const[i,r]=this._containerDimensions();this.transform.resize(i,r,e),null===(t=this._requestedCameraState)||void 0===t||t.resize(i,r,e)}_getClampedPixelRatio(e,t){const{0:i,1:r}=this._maxCanvasSize,n=this.getPixelRatio(),s=e*n,o=t*n;return Math.min(s>i?i/s:1,o>r?r/o:1)*n}getPixelRatio(){var e;return null!==(e=this._overridePixelRatio)&&void 0!==e?e:devicePixelRatio}setPixelRatio(e){this._overridePixelRatio=e,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(e){return this.transform.setMaxBounds(W.convert(e)),this._update()}setMinZoom(e){if((e=null==e?-2:e)>=-2&&e<=this.transform.maxZoom){const t=this._getTransformForUpdate();return t.setMinZoom(e),this._applyUpdatedTransform(t),this._update(),this}throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(e){if((e=null==e?22:e)>=this.transform.minZoom){const t=this._getTransformForUpdate();return t.setMaxZoom(e),this._applyUpdatedTransform(t),this._update(),this}throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(e){if((e=null==e?0:e)<0)throw new Error("minPitch must be greater than or equal to 0");if(e>=0&&e<=this.transform.maxPitch)return this.transform.setMinPitch(e),this._update(),this.getPitch()180)throw new Error("maxPitch must be less than or equal to 180");if(e>=this.transform.minPitch)return this.transform.setMaxPitch(e),this._update(),this.getPitch()>e&&this.setPitch(e),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.setRenderWorldCopies(e),this._update()}setTransformConstrain(e){return this.transform.setConstrainOverride(e),this._update()}project(e){return this.transform.locationToScreenPoint(t.V.convert(e),this.style&&this.terrain)}unproject(e){return this.transform.screenPointToLocation(t.P.convert(e),this.terrain)}isMoving(){var e;return this._moving||(null===(e=this.handlers)||void 0===e?void 0:e.isMoving())}isZooming(){var e;return this._zooming||(null===(e=this.handlers)||void 0===e?void 0:e.isZooming())}isRotating(){var e;return this._rotating||(null===(e=this.handlers)||void 0===e?void 0:e.isRotating())}_createDelegatedListener(e,t,i){if("mouseenter"===e||"mouseover"===e){let r=!1;const n=n=>{const s=t.filter(e=>this.getLayer(e)),o=0!==s.length?this.queryRenderedFeatures(n.point,{layers:s}):[];o.length?r||(r=!0,i.call(this,new ss(e,this,n.originalEvent,{features:o}))):r=!1};return{layers:t,listener:i,delegates:{mousemove:n,mouseout:()=>{r=!1}}}}if("mouseleave"===e||"mouseout"===e){let r=!1;const n=n=>{const s=t.filter(e=>this.getLayer(e));(0!==s.length?this.queryRenderedFeatures(n.point,{layers:s}):[]).length?r=!0:r&&(r=!1,i.call(this,new ss(e,this,n.originalEvent)))},s=t=>{r&&(r=!1,i.call(this,new ss(e,this,t.originalEvent)))};return{layers:t,listener:i,delegates:{mousemove:n,mouseout:s}}}{const r=e=>{const r=t.filter(e=>this.getLayer(e)),n=0!==r.length?this.queryRenderedFeatures(e.point,{layers:r}):[];n.length&&(e.features=n,i.call(this,e),delete e.features)};return{layers:t,listener:i,delegates:{[e]:r}}}}_saveDelegatedListener(e,t){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(t)}_removeDelegatedListener(e,t,i){if(!this._delegatedListeners||!this._delegatedListeners[e])return;const r=this._delegatedListeners[e];for(let n=0;nt.includes(e))){for(const t in e.delegates)this.off(t,e.delegates[t]);return void r.splice(n,1)}}}on(e,t,i){if(void 0===i)return super.on(e,t);const r="string"==typeof t?[t]:t,n=this._createDelegatedListener(e,r,i);this._saveDelegatedListener(e,n);for(const s in n.delegates)this.on(s,n.delegates[s]);return{unsubscribe:()=>{this._removeDelegatedListener(e,r,i)}}}once(e,t,i){if(void 0===i)return super.once(e,t);const r="string"==typeof t?[t]:t,n=this._createDelegatedListener(e,r,i);for(const s in n.delegates){const t=n.delegates[s];n.delegates[s]=(...n)=>{this._removeDelegatedListener(e,r,i),t(...n)}}this._saveDelegatedListener(e,n);for(const s in n.delegates)this.once(s,n.delegates[s]);return this}off(e,t,i){return void 0===i?super.off(e,t):(this._removeDelegatedListener(e,"string"==typeof t?[t]:t,i),this)}queryRenderedFeatures(e,i){if(!this.style)return[];let r;const n=e instanceof t.P||Array.isArray(e),s=n?e:[[0,0],[this.transform.width,this.transform.height]];if(i=i||(n?{}:e)||{},s instanceof t.P||"number"==typeof s[0])r=[t.P.convert(s)];else{const e=t.P.convert(s[0]),i=t.P.convert(s[1]);r=[e,new t.P(i.x,e.y),i,new t.P(e.x,i.y),e]}return this.style.queryRenderedFeatures(r,i,this.transform)}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}setStyle(e,i){return!1!==(i=t.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))}setTransformRequest(e){return this._requestManager.setTransformRequest(e),this}_getUIString(e){const t=this._locale[e];if(null==t)throw new Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){var i,r;if(t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(e,t));const n=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!e)),e?(this.style=new Fi(this,t||{}),this.style.setEventedParent(this,{style:this.style}),"string"==typeof e?this.style.loadURL(e,t,n):this.style.loadJSON(e,t,n),this):(null===(r=null===(i=this.style)||void 0===i?void 0:i.projection)||void 0===r||r.destroy(),delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Fi(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(e,i){if("string"==typeof e){const r=this._requestManager.transformRequest(e,"Style");t.j(r,new AbortController).then(e=>{this._updateDiff(e.data,i)}).catch(e=>{e&&this.fire(new t.k(e))})}else"object"==typeof e&&this._updateDiff(e,i)}_updateDiff(e,i){try{this.style.setState(e,i)&&this._update(!0)}catch(r){t.w(`Unable to perform style diff: ${r.message||r.error||r}. Rebuilding the style from scratch.`),this._updateStyle(e,i)}}getStyle(){if(this.style)return this.style.serialize()}_getStyleAndImages(){return this.style?{style:this.style.serialize(),images:this.style.imageManager.cloneImages()}:{style:null,images:{}}}isStyleLoaded(){return this.style?this.style.loaded():t.w("There is no style added to the map.")}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){const i=this.style&&this.style.tileManagers[e];if(void 0!==i)return i.loaded();this.fire(new t.k(new Error(`There is no tile manager with ID '${e}'`)))}setTerrain(e){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),e){const i=this.style.tileManagers[e.source];if(!i)throw new Error(`cannot load terrain, because there exists no source with ID: ${e.source}`);null===this.terrain&&i.reload();for(const r in this.style._layers){const i=this.style._layers[r];"hillshade"===i.type&&i.source===e.source&&t.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."),"color-relief"===i.type&&i.source===e.source&&t.w("You are using the same source for a color-relief layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new ro(this.painter,i,e),this.painter.renderToTexture=new oo(this.painter,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._terrainDataCallback=t=>{var i;"style"===t.dataType?this.terrain.tileManager.freeRtt():"source"===t.dataType&&t.tile&&(t.sourceId!==e.source||this._elevationFreeze||(this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))),"image"===(null===(i=t.source)||void 0===i?void 0:i.type)?this.terrain.tileManager.freeRtt():this.terrain.tileManager.freeRtt(t.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.tileManager.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0);return this.fire(new t.l("terrain",{terrain:e})),this}getTerrain(){var e,t;return null!==(t=null===(e=this.terrain)||void 0===e?void 0:e.options)&&void 0!==t?t:null}areTilesLoaded(){const e=this.style&&this.style.tileManagers;for(const t of Object.values(e))if(!t.areTilesLoaded())return!1;return!0}removeSource(e){return this.style.removeSource(e),this._update(!0)}getSource(e){return this.style.getSource(e)}setSourceTileLodParams(e,t,i){if(i){const r=this.getSource(i);if(!r)throw new Error(`There is no source with ID "${i}", cannot set LOD parameters`);r.calculateTileZoom=Se(Math.max(1,e),Math.max(1,t))}else for(const r in this.style.tileManagers)this.style.tileManagers[r].getSource().calculateTileZoom=Se(Math.max(1,e),Math.max(1,t));return this._update(!0),this}refreshTiles(e,i){const r=this.style.tileManagers[e];if(!r)throw new Error(`There is no tile manager with ID "${e}", cannot refresh tile`);void 0===i?r.reload(!0):r.refreshTiles(i.map(e=>new t.ac(e.z,e.x,e.y)))}addImage(e,i,r={}){const{pixelRatio:n=1,sdf:s=!1,stretchX:o,stretchY:l,content:c,textFitWidth:h,textFitHeight:u}=r;if(this._lazyInitEmptyStyle(),!(i instanceof HTMLImageElement||t.b(i))){if(void 0===i.width||void 0===i.height)return this.fire(new t.k(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`")));{const{width:r,height:a,data:d}=i,p=i;return this.style.addImage(e,{data:new t.R({width:r,height:a},new Uint8Array(d)),pixelRatio:n,stretchX:o,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:s,version:0,userImage:p}),p.onAdd&&p.onAdd(this,e),this}}{const{width:r,height:d,data:p}=a.getImageData(i);this.style.addImage(e,{data:new t.R({width:r,height:d},p),pixelRatio:n,stretchX:o,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:s,version:0})}}updateImage(e,i){const r=this.style.getImage(e);if(!r)return this.fire(new t.k(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const n=i instanceof HTMLImageElement||t.b(i)?a.getImageData(i):i,{width:s,height:o,data:l}=n;if(void 0===s||void 0===o)return this.fire(new t.k(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(s!==r.data.width||o!==r.data.height)return this.fire(new t.k(new Error("The width and height of the updated image must be that same as the previous version of the image")));const c=!(i instanceof HTMLImageElement||t.b(i));return r.data.replace(l,c),this.style.updateImage(e,r),this}getImage(e){return this.style.getImage(e)}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new t.k(new Error("Missing required image id"))),!1)}removeImage(e){this.style.removeImage(e)}loadImage(e){return g.getImage(this._requestManager.transformRequest(e,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,r={}){return this.style.setPaintProperty(e,t,i,r),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,r={}){return this.style.setLayoutProperty(e,t,i,r),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setGlyphs(e,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(e,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(e,t,i={}){return this._lazyInitEmptyStyle(),this.style.addSprite(e,t,i,e=>{e||this._update(!0)}),this}removeSprite(e){return this._lazyInitEmptyStyle(),this.style.removeSprite(e),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(e,t,e=>{e||this._update(!0)}),this}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setSky(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSky(e,t),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let e=0,t=0;return this._container&&(e=this._container.clientWidth||400,t=this._container.clientHeight||300),[e,t]}_setupContainer(){const e=this._container;e.classList.add("maplibregl-map");const t=this._canvasContainer=h.create("div","maplibregl-canvas-container",e);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=h.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");const i=this._containerDimensions(),r=this._getClampedPixelRatio(i[0],i[1]);this._resizeCanvas(i[0],i[1],r);const n=this._controlContainer=h.create("div","maplibregl-control-container",e),s=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(e=>{s[e]=h.create("div",`maplibregl-ctrl-${e} `,n)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(e,t,i){this._canvas.width=Math.floor(i*e),this._canvas.height=Math.floor(i*t),this._canvas.style.width=`${e}px`,this._canvas.style.height=`${t}px`}_setupPainter(){const e=Object.assign(Object.assign({},this._canvasContextAttributes),{alpha:!0,depth:!0,stencil:!0,premultipliedAlpha:!0});let t=null;this._canvas.addEventListener("webglcontextcreationerror",i=>{t={requestedAttributes:e},i&&(t.statusMessage=i.statusMessage,t.type=i.type)},{once:!0});let i=null;if(i=this._canvasContextAttributes.contextType?this._canvas.getContext(this._canvasContextAttributes.contextType,e):this._canvas.getContext("webgl2",e)||this._canvas.getContext("webgl",e),!i){const e="Failed to initialize WebGL";throw t?(t.message=e,new Error(JSON.stringify(t))):new Error(e)}this.painter=new Wn(i,this.transform),u.testSupport(i)}migrateProjection(e,i){super.migrateProjection(e,i),this.painter.transform=e,this.fire(new t.l("projectiontransition",{newProjection:this.style.projection.name}))}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||e,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e)}_render(e){var i,r,n,s,o;const a=this._idleTriggered?this._fadeDuration:0,l=(null===(i=this.style.projection)||void 0===i?void 0:i.transitionState)>0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let h=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const e=this.transform.zoom,i=c();this.style.zoomHistory.update(e,i);const r=new t.H(e,{now:i,fadeDuration:a,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),n=r.crossFadingFactor();1===n&&n===this._crossFadingFactor||(h=!0,this._crossFadingFactor=n),this.style.update(r)}const u=(null===(r=this.style.projection)||void 0===r?void 0:r.transitionState)>0!==l;null===(n=this.style.projection)||void 0===n||n.setErrorQueryLatitudeDegrees(this.transform.center.lat),this.transform.setTransitionState(null===(s=this.style.projection)||void 0===s?void 0:s.transitionState,null===(o=this.style.projection)||void 0===o?void 0:o.latitudeErrorCorrectionRadians),this.style&&(this._sourcesDirty||u)&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.tileManager.update(this.transform,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),!this._elevationFreeze&&this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0)),this._placementDirty=this.style&&this.style._updatePlacement(this.transform,this.showCollisionBoxes,a,this._crossSourceCollisions,u),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:a,showPadding:this.showPadding}),this.fire(new t.l("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,t.cG.mark(t.cH.load),this.fire(new t.l("load"))),this.style&&(this.style.hasTransitions()||h)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const d=this._sourcesDirty||this._styleDirty||this._placementDirty;return d||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.l("idle")),!this._loaded||this._fullyLoaded||d||(this._fullyLoaded=!0,t.cG.mark(t.cH.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var e;this._hash&&this._hash.remove();for(const t of this._controls)t.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),"undefined"!=typeof window&&removeEventListener("online",this._onWindowOnline,!1),g.removeThrottleControl(this._imageQueueHandle),null===(e=this._resizeObserver)||void 0===e||e.disconnect();const i=this.painter.context.gl.getExtension("WEBGL_lose_context");(null==i?void 0:i.loseContext)&&i.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),h.remove(this._canvasContainer),h.remove(this._controlContainer),this._container.removeEventListener("scroll",this._onMapScroll,!1),this._container.classList.remove("maplibregl-map"),t.cG.clearMetrics(),this._removed=!0,this.fire(new t.l("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,a.frame(this._frameRequest,e=>{t.cG.frame(e),this._frameRequest=null;try{this._render(e)}catch(i){if(!t.Z(i)&&i.message!==an)throw i}},()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update())}get showPadding(){return!!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update())}get repaint(){return!!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(e){this._vertices=e,this._update()}get version(){return lo}getCameraTargetElevation(){return this.transform.elevation}getProjection(){return this.style.getProjection()}setProjection(e){return this._lazyInitEmptyStyle(),this.style.setProjection(e),this._update(!0)}},e.MapMouseEvent=ss,e.MapTouchEvent=os,e.MapWheelEvent=as,e.Marker=go,e.NavigationControl=class{constructor(e){this._updateZoomButtons=()=>{const e=this._map.getZoom(),t=e===this._map.getMaxZoom(),i=e===this._map.getMinZoom();this._zoomInButton.disabled=t,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute("aria-disabled",t.toString()),this._zoomOutButton.setAttribute("aria-disabled",i.toString())},this._rotateCompassArrow=()=>{this._compassIcon.style.transform=this.options.visualizePitch&&this.options.visualizeRoll?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateZ(${-this._map.transform.roll}deg) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizeRoll?`rotate(${-this._map.transform.bearing-this._map.transform.roll}deg)`:`rotate(${-this._map.transform.bearing}deg)`},this._setButtonTitle=(e,t)=>{const i=this._map._getUIString(`NavigationControl.${t}`);e.title=i,e.setAttribute("aria-label",i)},this.options=t.e({},ho,e),this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",e=>e.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",e=>this._map.zoomIn({},{originalEvent:e})),h.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",e=>this._map.zoomOut({},{originalEvent:e})),h.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",e=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:e}):this._map.resetNorth({},{originalEvent:e})}),this._compassIcon=h.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(e){return this._map=e,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.options.visualizeRoll&&this._map.on("roll",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new uo(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){h.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.options.visualizeRoll&&this._map.off("roll",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(e,t){const i=h.create("button",e,this._container);return i.type="button",i.addEventListener("click",t),i}},e.Popup=class extends t.E{constructor(e){super(),this._updateOpacity=()=>{void 0!==this.options.locationOccludedOpacity&&(this._container.style.opacity=this._map.transform.isLocationOccluded(this.getLngLat())?`${this.options.locationOccludedOpacity}`:"")},this.remove=()=>(this._content&&h.remove(this._content),this._container&&(h.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 t.l("close"))),this),this._onMouseUp=e=>{this._update(e.point)},this._onMouseMove=e=>{this._update(e.point)},this._onDrag=e=>{this._update(e.point)},this._update=e=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=h.create("div","maplibregl-popup",this._map.getContainer()),this._tip=h.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(const e of this.options.className.split(" "))this._container.classList.add(e);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=fo(this._lngLat,this._flatPos,this._map.transform,this._trackPointer),this._trackPointer&&!e)return;const t=this._flatPos=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&e?e:this._map.transform.locationToScreenPoint(this._lngLat));let i=this.options.anchor;const r=Io(this.options.offset);if(!i){const e=this._container.offsetWidth,n=this._container.offsetHeight;let s;s=t.y+r.bottom.ythis._map.transform.height-n?["bottom"]:[],t.xthis._map.transform.width-e/2&&s.push("right"),i=0===s.length?"bottom":s.join("-")}let n=t.add(r[i]);this.options.subpixelPositioning||(n=n.round()),h.setTransform(this._container,`${mo[i]} translate(${n.x}px,${n.y}px)`),_o(this._container,i,"popup"),this._updateOpacity()},this._onClose=()=>{this.remove()},this.options=t.e(Object.create(So),e)}addTo(e){return this._map&&this.remove(),this._map=e,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 t.l("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.V.convert(e),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(e){return this.setDOMContent(document.createTextNode(e))}setHTML(e){const t=document.createDocumentFragment(),i=document.createElement("body");let r;for(i.innerHTML=e;r=i.firstChild,r;)t.appendChild(r);return this.setDOMContent(t)}getMaxWidth(){var e;return null===(e=this._container)||void 0===e?void 0:e.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=h.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(e),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(e){return this._container&&this._container.classList.add(e),this}removeClassName(e){return this._container&&this._container.classList.remove(e),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){if(this._container)return this._container.classList.toggle(e)}setSubpixelPositioning(e){this.options.subpixelPositioning=e}_createCloseButton(){this.options.closeButton&&(this._closeButton=h.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;const e=this._container.querySelector(Po);e&&e.focus()}},e.RasterDEMTileSource=K,e.RasterTileSource=Y,e.ScaleControl=class{constructor(e){this._onMove=()=>{wo(this._map,this._container,this.options)},this.setUnit=e=>{this.options.unit=e,wo(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},bo),e)}getDefaultPosition(){return"bottom-left"}onAdd(e){return this._map=e,this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-scale",e.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){h.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},e.ScrollZoomHandler=Os,e.Style=Fi,e.TerrainControl=class{constructor(e){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=e}onAdd(e){return this._map=e,this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=h.create("button","maplibregl-ctrl-terrain",this._container),h.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(){h.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},e.TwoFingersTouchPitchHandler=zs,e.TwoFingersTouchRotateHandler=As,e.TwoFingersTouchZoomHandler=Es,e.TwoFingersTouchZoomRotateHandler=qs,e.VectorTileSource=X,e.VideoSource=ie,e.addSourceType=(e,i)=>t._(void 0,void 0,void 0,function*(){if(se(e))throw new Error(`A source type called "${e}" already exists.`);var t;t=i,ne[e]=t}),e.clearPrewarmedResources=function(){const e=B;e&&e.isPreloaded()&&1===e.numActive()&&(e.release(R),B=null)},e.createTileMesh=ci,e.getMaxParallelImageRequests=function(){return t.c.MAX_PARALLEL_IMAGE_REQUESTS},e.getRTLTextPluginStatus=function(){return ce().getRTLTextPluginStatus()},e.getVersion=function(){return Mo},e.getWorkerCount=function(){return L.workerCount},e.getWorkerUrl=function(){return t.c.WORKER_URL},e.importScriptInWorkers=function(e){return N().broadcast("IS",e)},e.isTimeFrozen=function(){return l.isFrozen()},e.now=c,e.prewarm=function(){V().acquire(R)},e.restoreNow=function(){l.restoreNow()},e.setMaxParallelImageRequests=function(e){t.c.MAX_PARALLEL_IMAGE_REQUESTS=e},e.setNow=function(e){l.setNow(e)},e.setRTLTextPlugin=function(e,t){return ce().setRTLTextPlugin(e,t)},e.setWorkerCount=function(e){L.workerCount=e},e.setWorkerUrl=function(e){t.c.WORKER_URL=e}}),e}()),s.exports);const a=r({__proto__:null,default:i(o)},[o]);export{a as m}; +var e=Object.defineProperty,t=(t,i,r)=>((t,i,r)=>i in t?e(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r)(t,"symbol"!=typeof i?i+"":i,r);import{g as i}from"./deckgl-DTsmDcfs.js";function r(e,t){for(var i=0;ir[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var n,s={exports:{}},o=(n||(n=1,s.exports=function(){var e={},i={};function r(t,r,n){if(i[t]=n,"index"===t){var s="var sharedModule = {}; ("+i.shared+")(sharedModule); ("+i.worker+")(sharedModule);",o={};return i.shared(o),i.index(e,o),"undefined"!=typeof window&&e.setWorkerUrl(window.URL.createObjectURL(new Blob([s],{type:"text/javascript"}))),e}}return r("shared",0,function(e){function i(e,t,i,r){return new(i||(i=Promise))(function(n,s){function o(e){try{l(r.next(e))}catch(t){s(t)}}function a(e){try{l(r.throw(e))}catch(t){s(t)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(o,a)}l((r=r.apply(e,t||[])).next())})}function r(e,t){this.x=e,this.y=t}function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var s,o;"function"==typeof SuppressedError&&SuppressedError,r.prototype={clone(){return new r(this.x,this.y)},add(e){return this.clone()._add(e)},sub(e){return this.clone()._sub(e)},multByPoint(e){return this.clone()._multByPoint(e)},divByPoint(e){return this.clone()._divByPoint(e)},mult(e){return this.clone()._mult(e)},div(e){return this.clone()._div(e)},rotate(e){return this.clone()._rotate(e)},rotateAround(e,t){return this.clone()._rotateAround(e,t)},matMult(e){return this.clone()._matMult(e)},unit(){return this.clone()._unit()},perp(){return this.clone()._perp()},round(){return this.clone()._round()},mag(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals(e){return this.x===e.x&&this.y===e.y},dist(e){return Math.sqrt(this.distSqr(e))},distSqr(e){const t=e.x-this.x,i=e.y-this.y;return t*t+i*i},angle(){return Math.atan2(this.y,this.x)},angleTo(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith(e){return this.angleWithSep(e.x,e.y)},angleWithSep(e,t){return Math.atan2(this.x*t-this.y*e,this.x*e+this.y*t)},_matMult(e){const t=e[2]*this.x+e[3]*this.y;return this.x=e[0]*this.x+e[1]*this.y,this.y=t,this},_add(e){return this.x+=e.x,this.y+=e.y,this},_sub(e){return this.x-=e.x,this.y-=e.y,this},_mult(e){return this.x*=e,this.y*=e,this},_div(e){return this.x/=e,this.y/=e,this},_multByPoint(e){return this.x*=e.x,this.y*=e.y,this},_divByPoint(e){return this.x/=e.x,this.y/=e.y,this},_unit(){return this._div(this.mag()),this},_perp(){const e=this.y;return this.y=this.x,this.x=-e,this},_rotate(e){const t=Math.cos(e),i=Math.sin(e),r=i*this.x+t*this.y;return this.x=t*this.x-i*this.y,this.y=r,this},_rotateAround(e,t){const i=Math.cos(e),r=Math.sin(e),n=t.y+r*(this.x-t.x)+i*(this.y-t.y);return this.x=t.x+i*(this.x-t.x)-r*(this.y-t.y),this.y=n,this},_round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},constructor:r},r.convert=function(e){if(e instanceof r)return e;if(Array.isArray(e))return new r(+e[0],+e[1]);if(void 0!==e.x&&void 0!==e.y)return new r(+e.x,+e.y);throw new Error("Expected [x, y] or {x, y} point format")};var a=function(){if(o)return s;function e(e,t,i,r){this.cx=3*e,this.bx=3*(i-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*t,this.by=3*(r-t)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=t,this.p2x=i,this.p2y=r}return o=1,s=e,e.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,t){if(void 0===t&&(t=1e-6),e<0)return 0;if(e>1)return 1;for(var i=e,r=0;r<8;r++){var n=this.sampleCurveX(i)-e;if(Math.abs(n)n?o=i:a=i,i=.5*(a-o)+o;return i},solve:function(e,t){return this.sampleCurveY(this.solveCurveX(e,t))}},s}(),l=n(a);let c,h;function u(){return null==c&&(c="undefined"!=typeof OffscreenCanvas&&new OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof createImageBitmap),c}function d(){if(null==h&&(h=!1,u())){const e=5,t=new OffscreenCanvas(e,e).getContext("2d",{willReadFrequently:!0});if(t){for(let r=0;r4&&void 0!==arguments[4]?arguments[4]:"zyx",s=Math.PI/360;t*=s,r*=s,i*=s;var o=Math.sin(t),a=Math.cos(t),l=Math.sin(i),c=Math.cos(i),h=Math.sin(r),u=Math.cos(r);switch(n){case"xyz":e[0]=o*c*u+a*l*h,e[1]=a*l*u-o*c*h,e[2]=a*c*h+o*l*u,e[3]=a*c*u-o*l*h;break;case"xzy":e[0]=o*c*u-a*l*h,e[1]=a*l*u-o*c*h,e[2]=a*c*h+o*l*u,e[3]=a*c*u+o*l*h;break;case"yxz":e[0]=o*c*u+a*l*h,e[1]=a*l*u-o*c*h,e[2]=a*c*h-o*l*u,e[3]=a*c*u+o*l*h;break;case"yzx":e[0]=o*c*u+a*l*h,e[1]=a*l*u+o*c*h,e[2]=a*c*h-o*l*u,e[3]=a*c*u-o*l*h;break;case"zxy":e[0]=o*c*u-a*l*h,e[1]=a*l*u+o*c*h,e[2]=a*c*h+o*l*u,e[3]=a*c*u-o*l*h;break;case"zyx":e[0]=o*c*u-a*l*h,e[1]=a*l*u+o*c*h,e[2]=a*c*h-o*l*u,e[3]=a*c*u+o*l*h;break;default:throw new Error("Unknown angle order "+n)}return e}function E(){var e=new f(2);return f!=Float32Array&&(e[0]=0,e[1]=0),e}function C(e,t){var i=new f(2);return i[0]=e,i[1]=t,i}g(),T=new f(4),f!=Float32Array&&(T[0]=0,T[1]=0,T[2]=0,T[3]=0),g(),x(1,0,0),x(0,1,0),I(),I(),m(),E();const A=8192;function D(e,t,i){return t*(A/(e.tileSize*Math.pow(2,i-e.tileID.overscaledZ)))}function z(e,t){return(e%t+t)%t}function k(e,t,i){return e*(1-i)+t*i}function R(e){if(e<=0)return 0;if(e>=1)return 1;const t=e*e,i=t*e;return 4*(e<.5?i:3*(e-t)+i-.75)}function L(e,t,i,r){const n=new l(e,t,i,r);return e=>n.solve(e)}const F=L(.25,.1,.25,1);function B(e,t,i){return Math.min(i,Math.max(t,e))}function O(e,t,i){const r=i-t,n=((e-t)%r+r)%r+t;return n===t?i:n}function V(e,...t){for(const i of t)for(const t in i)e[t]=i[t];return e}let j=1;function N(e,t,i){const r={};for(const n in e)r[n]=t.call(this,e[n],n,e);return r}function U(e,t,i){const r={};for(const n in e)t.call(this,e[n],n,e)&&(r[n]=e[n]);return r}function G(e){return Array.isArray(e)?e.map(G):"object"==typeof e&&e?N(e,G):e}const q={};function Z(e){q[e]||(q[e]=!0)}function $(e,t,i){return(i.y-e.y)*(t.x-e.x)>(t.y-e.y)*(i.x-e.x)}function W(e){return"undefined"!=typeof WorkerGlobalScope&&void 0!==e&&e instanceof WorkerGlobalScope}let H=null;function X(e){return"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap}const Y="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function K(e,t,r,n,s){return i(this,void 0,void 0,function*(){if("undefined"==typeof VideoFrame)throw new Error("VideoFrame not supported");const i=new VideoFrame(e,{timestamp:0});try{const o=null==i?void 0:i.format;if(!o||!o.startsWith("BGR")&&!o.startsWith("RGB"))throw new Error(`Unrecognized format ${o}`);const a=o.startsWith("BGR"),l=new Uint8ClampedArray(n*s*4);if(yield i.copyTo(l,function(e,t,i,r,n){const s=4*Math.max(-t,0),o=(Math.max(0,i)-i)*r*4+s,a=4*r,l=Math.max(0,t),c=Math.max(0,i);return{rect:{x:l,y:c,width:Math.min(e.width,t+r)-l,height:Math.min(e.height,i+n)-c},layout:[{offset:o,stride:a}]}}(e,t,r,n,s)),a)for(let e=0;e{e.removeEventListener(t,i,r)}}}function te(e){return e*Math.PI/180}function ie(e){return e/Math.PI*180}const re={touchstart:!0,touchmove:!0,touchmoveWindow:!0,touchend:!0,touchcancel:!0},ne={dblclick:!0,click:!0,mouseover:!0,mouseout:!0,mousedown:!0,mousemove:!0,mousemoveWindow:!0,mouseup:!0,mouseupWindow:!0,contextmenu:!0,wheel:!0},se="AbortError";class oe extends Error{constructor(e=se){super(e instanceof Error?e.message:e),this.name=se,e instanceof Error&&e.stack&&(this.stack=e.stack)}}function ae(e){return e.name===se}const le={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};function ce(e){return le.REGISTERED_PROTOCOLS[e.substring(0,e.indexOf("://"))]}const he="global-dispatcher";class ue extends Error{constructor(e,t,i,r){super(`AJAXError: ${t} (${e}): ${i}`),this.status=e,this.statusText=t,this.url=i,this.body=r}}const de=()=>W(self)?self.worker&&self.worker.referrer:("blob:"===window.location.protocol?window.parent:window).location.href,pe=function(e,t){if(/:\/\//.test(e.url)&&!/^https?:|^file:/.test(e.url)){const i=ce(e.url);if(i)return i(e,t);if(W(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:e,targetMapId:he},t)}if(!(/^file:/.test(r=e.url)||/^file:/.test(de())&&!/^\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(e,t){return i(this,void 0,void 0,function*(){const i=new Request(e.url,{method:e.method||"GET",body:e.body,credentials:e.credentials,headers:e.headers,cache:e.cache,referrer:de(),signal:t.signal});let r,n;"json"!==e.type||i.headers.has("Accept")||i.headers.set("Accept","application/json");try{r=yield fetch(i)}catch(o){if(ae(o))throw o;throw new ue(0,o.message,e.url,new Blob)}if(!r.ok){const t=yield r.blob();throw new ue(r.status,r.statusText,e.url,t)}n="arrayBuffer"===e.type||"image"===e.type?r.arrayBuffer():"json"===e.type?r.json():r.text();const s=yield n;return t.signal.throwIfAborted(),{data:s,cacheControl:r.headers.get("Cache-Control"),expires:r.headers.get("Expires")}})}(e,t);if(W(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:e,mustQueue:!0,targetMapId:he},t)}var r,n,s;return n=e,s=t,new Promise((e,t)=>{var i;const r=new XMLHttpRequest;r.open(n.method||"GET",n.url,!0),"arrayBuffer"!==n.type&&"image"!==n.type||(r.responseType="arraybuffer");for(const s in n.headers)r.setRequestHeader(s,n.headers[s]);"json"===n.type&&(r.responseType="text",(null===(i=n.headers)||void 0===i?void 0:i.Accept)||r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===n.credentials,r.onerror=()=>{t(new Error(r.statusText))},r.onload=()=>{if(!s.signal.aborted)if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let s=r.response;if("json"===n.type)try{s=JSON.parse(r.response)}catch(i){return void t(i)}e({data:s,cacheControl:r.getResponseHeader("Cache-Control"),expires:r.getResponseHeader("Expires")})}else{const e=new Blob([r.response],{type:r.getResponseHeader("Content-Type")});t(new ue(r.status,r.statusText,n.url,e))}},s.signal.addEventListener("abort",()=>{r.abort(),t(new oe(s.signal.reason))}),r.send(n.body)})};function fe(e){if(!e||e.indexOf("://")<=0||0===e.indexOf("data:image/")||0===e.indexOf("blob:"))return!0;const t=new URL(e),i=window.location;return t.protocol===i.protocol&&t.host===i.host}function me(e,t,i){i[e]&&-1!==i[e].indexOf(t)||(i[e]=i[e]||[],i[e].push(t))}function _e(e,t,i){if(i&&i[e]){const r=i[e].indexOf(t);-1!==r&&i[e].splice(r,1)}}class ge{constructor(e,t={}){V(this,t),this.type=e}}class ye extends ge{constructor(e,t={}){super("error",V({error:e},t))}}class xe{on(e,t){return this._listeners=this._listeners||{},me(e,t,this._listeners),{unsubscribe:()=>{this.off(e,t)}}}off(e,t){return _e(e,t,this._listeners),_e(e,t,this._oneTimeListeners),this}once(e,t){return t?(this._oneTimeListeners=this._oneTimeListeners||{},me(e,t,this._oneTimeListeners),this):new Promise(t=>this.once(e,t))}fire(e,t){"string"==typeof e&&(e=new ge(e,t||{}));const i=e.type;if(this.listens(i)){e.target=this;const t=this._listeners&&this._listeners[i]?this._listeners[i].slice():[];for(const i of t)i.call(this,e);const r=this._oneTimeListeners&&this._oneTimeListeners[i]?this._oneTimeListeners[i].slice():[];for(const s of r)_e(i,s,this._oneTimeListeners),s.call(this,e);const n=this._eventedParent;n&&(V(e,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),n.fire(e))}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,t){return this._eventedParent=e,this._eventedParentData=t,this}}var ve={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number",length:2},centerAltitude:{type:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},roll:{type:"number",default:0,units:"degrees"},state:{type:"state",default:{}},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},"font-faces":{type:"fontFaces"},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},encoding:{type:"enum",values:{mvt:{},mlt:{}},default:"mvt"},"*":{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:"filter"},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:{},"color-relief":{},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_color-relief","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_color-relief":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},filter:{type:"boolean",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},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:"expression_name",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:"projectionDefinition",default:"mercator","property-type":"data-constant",transition:!1,expression:{interpolated:!0,parameters:["zoom"]}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_color-relief","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","feature"]},"property-type":"cross-faded-data-driven"},"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:"numberArray",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-altitude":{type:"numberArray",default:45,minimum:0,maximum:90,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:"colorArray",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"colorArray",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"},"hillshade-method":{type:"enum",values:{standard:{},basic:{},combined:{},igor:{},multidirectional:{}},default:"standard",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},"paint_color-relief":{"color-relief-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"color-relief-color":{type:"color",transition:!1,expression:{interpolated:!0,parameters:["elevation"]},"property-type":"color-ramp"}},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"}},interpolation:{type:"array",value:"interpolation_name",minimum:1},interpolation_name:{type:"enum",values:{linear:{syntax:{overloads:[{parameters:[],"output-type":"interpolation"}],parameters:[]}},exponential:{syntax:{overloads:[{parameters:["base"],"output-type":"interpolation"}],parameters:[{name:"base",type:"number literal"}]}},"cubic-bezier":{syntax:{overloads:[{parameters:["x1","y1","x2","y2"],"output-type":"interpolation"}],parameters:[{name:"x1",type:"number literal"},{name:"y1",type:"number literal"},{name:"x2",type:"number literal"},{name:"y2",type:"number literal"}]}}}}};const be=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function we(e,t){const i={};for(const r in e)"ref"!==r&&(i[r]=e[r]);return be.forEach(e=>{e in t&&(i[e]=t[e])}),i}function Te(e,t){if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let i=0;i`:"value"===e.itemType.kind?"array":`array<${t}>`}return e.kind}const Qe=[Fe,Be,Oe,Ve,je,Ne,Ze,Ue,Ke(Ge),$e,He,We,Xe,Ye];function et(e,t){if("error"===t.kind)return null;if("array"===e.kind){if("array"===t.kind&&(0===t.N&&"value"===t.itemType.kind||!et(e.itemType,t.itemType))&&("number"!=typeof e.N||e.N===t.N))return null}else{if(e.kind===t.kind)return null;if("value"===e.kind)for(const e of Qe)if(!et(e,t))return null}return`Expected ${Je(e)} but found ${Je(t)} instead.`}function tt(e,t){return t.some(t=>t.kind===e.kind)}function it(e,t){return t.some(t=>"null"===t?null===e:"array"===t?Array.isArray(e):"object"===t?e&&!Array.isArray(e)&&"object"==typeof e:t===typeof e)}function rt(e,t){return"array"===e.kind&&"array"===t.kind?e.itemType.kind===t.itemType.kind&&"number"==typeof e.N:e.kind===t.kind}const nt=.96422,st=.82521,ot=4/29,at=6/29,lt=3*at*at,ct=at*at*at,ht=Math.PI/180,ut=180/Math.PI;function dt(e){return(e%=360)<0&&(e+=360),e}function pt([e,t,i,r]){let n,s;const o=mt((.2225045*(e=ft(e))+.7168786*(t=ft(t))+.0606169*(i=ft(i)))/1);e===t&&t===i?n=s=o:(n=mt((.4360747*e+.3850649*t+.1430804*i)/nt),s=mt((.0139322*e+.0971045*t+.7141733*i)/st));const a=116*o-16;return[a<0?0:a,500*(n-o),200*(o-s),r]}function ft(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function mt(e){return e>ct?Math.pow(e,1/3):e/lt+ot}function _t([e,t,i,r]){let n=(e+16)/116,s=isNaN(t)?n:n+t/500,o=isNaN(i)?n:n-i/200;return n=1*yt(n),s=nt*yt(s),o=st*yt(o),[gt(3.1338561*s-1.6168667*n-.4906146*o),gt(-.9787684*s+1.9161415*n+.033454*o),gt(.0719453*s-.2289914*n+1.4052427*o),r]}function gt(e){return(e=e<=.00304?12.92*e:1.055*Math.pow(e,1/2.4)-.055)<0?0:e>1?1:e}function yt(e){return e>at?e*e*e:lt*(e-ot)}const xt=Object.hasOwn||function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};function vt(e,t){return xt(e,t)?e[t]:void 0}function bt(e){return parseInt(e.padEnd(2,e),16)/255}function wt(e,t){return Tt(t?e/100:e,0,1)}function Tt(e,t,i){return Math.min(Math.max(t,e),i)}function St(e){return!e.some(Number.isNaN)}const Pt={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]};function It(e,t,i){return e+i*(t-e)}function Mt(e,t,i){return e.map((e,r)=>It(e,t[r],i))}class Et{constructor(e,t,i,r=1,n=!0){this.r=e,this.g=t,this.b=i,this.a=r,n||(this.r*=r,this.g*=r,this.b*=r,r||this.overwriteGetter("rgb",[e,t,i,r]))}static parse(e){if(e instanceof Et)return e;if("string"!=typeof e)return;const t=function(e){if("transparent"===(e=e.toLowerCase().trim()))return[0,0,0,0];const t=vt(Pt,e);if(t){const[e,i,r]=t;return[e/255,i/255,r/255,1]}if(e.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(e)){const t=e.length<6?1:2;let i=1;return[bt(e.slice(i,i+=t)),bt(e.slice(i,i+=t)),bt(e.slice(i,i+=t)),bt(e.slice(i,i+t)||"ff")]}if(e.startsWith("rgb")){const t=e.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(t){const[e,i,r,n,s,o,a,l,c,h,u,d]=t,p=[n||" ",a||" ",h].join("");if(" "===p||" /"===p||",,"===p||",,,"===p){const e=[r,o,c].join(""),t="%%%"===e?100:""===e?255:0;if(t){const e=[Tt(+i/t,0,1),Tt(+s/t,0,1),Tt(+l/t,0,1),u?wt(+u,d):1];if(St(e))return e}}return}}const i=e.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(i){const[e,t,r,n,s,o,a,l,c]=i,h=[r||" ",s||" ",a].join("");if(" "===h||" /"===h||",,"===h||",,,"===h){const e=[+t,Tt(+n,0,100),Tt(+o,0,100),l?wt(+l,c):1];if(St(e))return function([e,t,i,r]){function n(r){const n=(r+e/30)%12,s=t*Math.min(i,1-i);return i-s*Math.max(-1,Math.min(n-3,9-n,1))}return e=dt(e),t/=100,i/=100,[n(0),n(8),n(4),r]}(e)}}}(e);return t?new Et(...t,!1):void 0}get rgb(){const{r:e,g:t,b:i,a:r}=this,n=r||1/0;return this.overwriteGetter("rgb",[e/n,t/n,i/n,r])}get hcl(){return this.overwriteGetter("hcl",function(e){const[t,i,r,n]=pt(e),s=Math.sqrt(i*i+r*r);return[Math.round(1e4*s)?dt(Math.atan2(r,i)*ut):NaN,s,t,n]}(this.rgb))}get lab(){return this.overwriteGetter("lab",pt(this.rgb))}overwriteGetter(e,t){return Object.defineProperty(this,e,{value:t}),t}toString(){const[e,t,i,r]=this.rgb;return`rgba(${[e,t,i].map(e=>Math.round(255*e)).join(",")},${r})`}static interpolate(e,t,i,r="rgb"){switch(r){case"rgb":{const[r,n,s,o]=Mt(e.rgb,t.rgb,i);return new Et(r,n,s,o,!1)}case"hcl":{const[r,n,s,o]=e.hcl,[a,l,c,h]=t.hcl;let u,d;if(isNaN(r)||isNaN(a))isNaN(r)?isNaN(a)?u=NaN:(u=a,1!==s&&0!==s||(d=l)):(u=r,1!==c&&0!==c||(d=n));else{let e=a-r;a>r&&e>180?e-=360:a180&&(e+=360),u=r+i*e}const[p,f,m,_]=function([e,t,i,r]){return e=isNaN(e)?0:e*ht,_t([i,Math.cos(e)*t,Math.sin(e)*t,r])}([u,null!=d?d:It(n,l,i),It(s,c,i),It(o,h,i)]);return new Et(p,f,m,_,!1)}case"lab":{const[r,n,s,o]=_t(Mt(e.lab,t.lab,i));return new Et(r,n,s,o,!1)}}}}Et.black=new Et(0,0,0,1),Et.white=new Et(1,1,1,1),Et.transparent=new Et(0,0,0,0),Et.red=new Et(1,0,0,1);class Ct{constructor(e,t,i){this.sensitivity=e?t?"variant":"case":t?"accent":"base",this.locale=i,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,t){return this.collator.compare(e,t)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}const At=["bottom","center","top"];class Dt{constructor(e,t,i,r,n,s){this.text=e,this.image=t,this.scale=i,this.fontStack=r,this.textColor=n,this.verticalAlign=s}}class zt{constructor(e){this.sections=e}static fromString(e){return new zt([new Dt(e,null,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some(e=>0!==e.text.length||e.image&&0!==e.image.name.length)}static factory(e){return e instanceof zt?e:zt.fromString(e)}toString(){return 0===this.sections.length?"":this.sections.map(e=>e.text).join("")}}class kt{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof kt)return e;if("number"==typeof e)return new kt([e,e,e,e]);if(Array.isArray(e)&&!(e.length<1||e.length>4)){for(const t of e)if("number"!=typeof t)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 kt(e)}}toString(){return JSON.stringify(this.values)}static interpolate(e,t,i){return new kt(Mt(e.values,t.values,i))}}class Rt{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Rt)return e;if("number"==typeof e)return new Rt([e]);if(Array.isArray(e)){for(const t of e)if("number"!=typeof t)return;return new Rt(e)}}toString(){return JSON.stringify(this.values)}static interpolate(e,t,i){return new Rt(Mt(e.values,t.values,i))}}class Lt{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Lt)return e;if("string"==typeof e){const t=Et.parse(e);if(!t)return;return new Lt([t])}if(!Array.isArray(e))return;const t=[];for(const i of e){if("string"!=typeof i)return;const e=Et.parse(i);if(!e)return;t.push(e)}return new Lt(t)}toString(){return JSON.stringify(this.values)}static interpolate(e,t,i,r="rgb"){const n=[];if(e.values.length!=t.values.length)throw new Error(`colorArray: Arrays have mismatched length (${e.values.length} vs. ${t.values.length}), cannot interpolate.`);for(let s=0;s=0&&e<=255&&"number"==typeof t&&t>=0&&t<=255&&"number"==typeof i&&i>=0&&i<=255?void 0===r||"number"==typeof r&&r>=0&&r<=1?null:`Invalid rgba value [${[e,t,i,r].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${("number"==typeof r?[e,t,i,r]:[e,t,i]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Ut(e){if(null===e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e||e instanceof jt||e instanceof Et||e instanceof Ct||e instanceof zt||e instanceof kt||e instanceof Rt||e instanceof Lt||e instanceof Ot||e instanceof Vt)return!0;if(Array.isArray(e)){for(const t of e)if(!Ut(t))return!1;return!0}if("object"==typeof e){for(const t in e)if(!Ut(e[t]))return!1;return!0}return!1}function Gt(e){if(null===e)return Fe;if("string"==typeof e)return Oe;if("boolean"==typeof e)return Ve;if("number"==typeof e)return Be;if(e instanceof Et)return je;if(e instanceof jt)return Ne;if(e instanceof Ct)return qe;if(e instanceof zt)return Ze;if(e instanceof kt)return $e;if(e instanceof Rt)return He;if(e instanceof Lt)return We;if(e instanceof Ot)return Ye;if(e instanceof Vt)return Xe;if(Array.isArray(e)){const t=e.length;let i;for(const r of e){const e=Gt(r);if(i){if(i===e)continue;i=Ge;break}i=e}return Ke(i||Ge,t)}return Ue}function qt(e){const t=typeof e;return null===e?"":"string"===t||"number"===t||"boolean"===t?String(e):e instanceof Et||e instanceof jt||e instanceof zt||e instanceof kt||e instanceof Rt||e instanceof Lt||e instanceof Ot||e instanceof Vt?e.toString():JSON.stringify(e)}class Zt{constructor(e,t){this.type=e,this.value=t}static parse(e,t){if(2!==e.length)return t.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Ut(e[1]))return t.error("invalid value");const i=e[1];let r=Gt(i);const n=t.expectedType;return"array"!==r.kind||0!==r.N||!n||"array"!==n.kind||"number"==typeof n.N&&0!==n.N||(r=n),new Zt(r,i)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}const $t={string:Oe,number:Be,boolean:Ve,object:Ue};class Wt{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");let i,r=1;const n=e[0];if("array"===n){let n,s;if(e.length>2){const i=e[1];if("string"!=typeof i||!(i in $t)||"object"===i)return t.error('The item type argument of "array" must be one of string, number, boolean',1);n=$t[i],r++}else n=Ge;if(e.length>3){if(null!==e[2]&&("number"!=typeof e[2]||e[2]<0||e[2]!==Math.floor(e[2])))return t.error('The length argument to "array" must be a positive integer literal',2);s=e[2],r++}i=Ke(n,s)}else{if(!$t[n])throw new Error(`Types doesn't contain name = ${n}`);i=$t[n]}const s=[];for(;re.outputDefined())}}const Ht={"to-boolean":Ve,"to-color":je,"to-number":Be,"to-string":Oe};class Xt{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");const i=e[0];if(!Ht[i])throw new Error(`Can't parse ${i} as it is not part of the known types`);if(("to-boolean"===i||"to-string"===i)&&2!==e.length)return t.error("Expected one argument.");const r=Ht[i],n=[];for(let s=1;s4?`Invalid rgba value ${JSON.stringify(t)}: expected an array containing either three or four numeric values.`:Nt(t[0],t[1],t[2],t[3]),!i))return new Et(t[0]/255,t[1]/255,t[2]/255,t[3])}throw new Ft(i||`Could not parse color from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"padding":{let t;for(const i of this.args){t=i.evaluate(e);const r=kt.parse(t);if(r)return r}throw new Ft(`Could not parse padding from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"numberArray":{let t;for(const i of this.args){t=i.evaluate(e);const r=Rt.parse(t);if(r)return r}throw new Ft(`Could not parse numberArray from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"colorArray":{let t;for(const i of this.args){t=i.evaluate(e);const r=Lt.parse(t);if(r)return r}throw new Ft(`Could not parse colorArray from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"variableAnchorOffsetCollection":{let t;for(const i of this.args){t=i.evaluate(e);const r=Ot.parse(t);if(r)return r}throw new Ft(`Could not parse variableAnchorOffsetCollection from value '${"string"==typeof t?t:JSON.stringify(t)}'`)}case"number":{let t=null;for(const i of this.args){if(t=i.evaluate(e),null===t)return 0;const r=Number(t);if(!isNaN(r))return r}throw new Ft(`Could not convert ${JSON.stringify(t)} to number.`)}case"formatted":return zt.fromString(qt(this.args[0].evaluate(e)));case"resolvedImage":return Vt.fromString(qt(this.args[0].evaluate(e)));case"projectionDefinition":return this.args[0].evaluate(e);default:return qt(this.args[0].evaluate(e))}}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}const Yt=["Unknown","Point","LineString","Polygon"];class Kt{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache=new Map,this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?Yt[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 t=this._parseColorCache.get(e);return t||(t=Et.parse(e),this._parseColorCache.set(e,t)),t}}class Jt{constructor(e,t,i=[],r,n=new Le,s=[]){this.registry=e,this.path=i,this.key=i.map(e=>`[${e}]`).join(""),this.scope=n,this.errors=s,this.expectedType=r,this._isConstant=t}parse(e,t,i,r,n={}){return t?this.concat(t,i,r)._parse(e,n):this._parse(e,n)}_parse(e,t){function i(e,t,i){return"assert"===i?new Wt(t,[e]):"coerce"===i?new Xt(t,[e]):e}if(null!==e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e||(e=["literal",e]),Array.isArray(e)){if(0===e.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const n=e[0];if("string"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const s=this.registry[n];if(s){let n=s.parse(e,this);if(!n)return null;if(this.expectedType){const e=this.expectedType,r=n.type;if("string"!==e.kind&&"number"!==e.kind&&"boolean"!==e.kind&&"object"!==e.kind&&"array"!==e.kind||"value"!==r.kind){if("projectionDefinition"===e.kind&&["string","array"].includes(r.kind)||["color","formatted","resolvedImage"].includes(e.kind)&&["value","string"].includes(r.kind)||["padding","numberArray"].includes(e.kind)&&["value","number","array"].includes(r.kind)||"colorArray"===e.kind&&["value","string","array"].includes(r.kind)||"variableAnchorOffsetCollection"===e.kind&&["value","array"].includes(r.kind))n=i(n,e,t.typeAnnotation||"coerce");else if(this.checkSubtype(e,r))return null}else n=i(n,e,t.typeAnnotation||"assert")}if(!(n instanceof Zt)&&"resolvedImage"!==n.type.kind&&this._isConstant(n)){const e=new Kt;try{n=new Zt(n.type,n.evaluate(e))}catch(r){return this.error(r.message),null}}return n}return this.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(void 0===e?"'undefined' value invalid. Use null instead.":"object"==typeof e?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,t,i){const r="number"==typeof e?this.path.concat(e):this.path,n=i?this.scope.concat(i):this.scope;return new Jt(this.registry,this._isConstant,r,t||null,n,this.errors)}error(e,...t){const i=`${this.key}${t.map(e=>`[${e}]`).join("")}`;this.errors.push(new Re(i,e))}checkSubtype(e,t){const i=et(e,t);return i&&this.error(i),i}}class Qt{constructor(e,t){this.type=t.type,this.bindings=[].concat(e),this.result=t}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const t of this.bindings)e(t[1]);e(this.result)}static parse(e,t){if(e.length<4)return t.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const i=[];for(let n=1;n=i.length)throw new Ft(`Array index out of bounds: ${t} > ${i.length-1}.`);if(t!==Math.floor(t))throw new Ft(`Array index must be an integer, but found ${t} instead.`);return i[t]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}}class ii{constructor(e,t){this.type=Ve,this.needle=e,this.haystack=t}static parse(e,t){if(3!==e.length)return t.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Ge),r=t.parse(e[2],2,Ge);return i&&r?tt(i.type,[Ve,Oe,Be,Fe,Ge])?new ii(i,r):t.error(`Expected first argument to be of type boolean, string, number or null, but found ${Je(i.type)} instead`):null}evaluate(e){const t=this.needle.evaluate(e),i=this.haystack.evaluate(e);if(!i)return!1;if(!it(t,["boolean","string","number","null"]))throw new Ft(`Expected first argument to be of type boolean, string, number or null, but found ${Je(Gt(t))} instead.`);if(!it(i,["string","array"]))throw new Ft(`Expected second argument to be of type array or string, but found ${Je(Gt(i))} instead.`);return i.indexOf(t)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}}class ri{constructor(e,t,i){this.type=Be,this.needle=e,this.haystack=t,this.fromIndex=i}static parse(e,t){if(e.length<=2||e.length>=5)return t.error(`Expected 2 or 3 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Ge),r=t.parse(e[2],2,Ge);if(!i||!r)return null;if(!tt(i.type,[Ve,Oe,Be,Fe,Ge]))return t.error(`Expected first argument to be of type boolean, string, number or null, but found ${Je(i.type)} instead`);if(4===e.length){const n=t.parse(e[3],3,Be);return n?new ri(i,r,n):null}return new ri(i,r)}evaluate(e){const t=this.needle.evaluate(e),i=this.haystack.evaluate(e);if(!it(t,["boolean","string","number","null"]))throw new Ft(`Expected first argument to be of type boolean, string, number or null, but found ${Je(Gt(t))} instead.`);let r;if(this.fromIndex&&(r=this.fromIndex.evaluate(e)),it(i,["string"])){const e=i.indexOf(t,r);return-1===e?-1:[...i.slice(0,e)].length}if(it(i,["array"]))return i.indexOf(t,r);throw new Ft(`Expected second argument to be of type array or string, but found ${Je(Gt(i))} instead.`)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}}class ni{constructor(e,t,i,r,n,s){this.inputType=e,this.type=t,this.input=i,this.cases=r,this.outputs=n,this.otherwise=s}static parse(e,t){if(e.length<5)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return t.error("Expected an even number of arguments.");let i,r;t.expectedType&&"value"!==t.expectedType.kind&&(r=t.expectedType);const n={},s=[];for(let l=2;lNumber.MAX_SAFE_INTEGER)return c.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof e&&Math.floor(e)!==e)return c.error("Numeric branch labels must be integer values.");if(i){if(c.checkSubtype(i,Gt(e)))return null}else i=Gt(e);if(void 0!==n[String(e)])return c.error("Branch labels must be unique.");n[String(e)]=s.length}const h=t.parse(a,l,r);if(!h)return null;r=r||h.type,s.push(h)}const o=t.parse(e[1],1,Ge);if(!o)return null;const a=t.parse(e[e.length-1],e.length-1,r);return a?"value"!==o.type.kind&&t.concat(1).checkSubtype(i,o.type)?null:new ni(i,r,o,n,s,a):null}evaluate(e){const t=this.input.evaluate(e);return(Gt(t)===this.inputType&&this.outputs[this.cases[t]]||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 si{constructor(e,t,i){this.type=e,this.branches=t,this.otherwise=i}static parse(e,t){if(e.length<4)return t.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return t.error("Expected an odd number of arguments.");let i;t.expectedType&&"value"!==t.expectedType.kind&&(i=t.expectedType);const r=[];for(let s=1;st.outputDefined())&&this.otherwise.outputDefined()}}class oi{constructor(e,t,i,r){this.type=e,this.input=t,this.beginIndex=i,this.endIndex=r}static parse(e,t){if(e.length<=2||e.length>=5)return t.error(`Expected 2 or 3 arguments, but found ${e.length-1} instead.`);const i=t.parse(e[1],1,Ge),r=t.parse(e[2],2,Be);if(!i||!r)return null;if(!tt(i.type,[Ke(Ge),Oe,Ge]))return t.error(`Expected first argument to be of type array or string, but found ${Je(i.type)} instead`);if(4===e.length){const n=t.parse(e[3],3,Be);return n?new oi(i.type,i,r,n):null}return new oi(i.type,i,r)}evaluate(e){const t=this.input.evaluate(e),i=this.beginIndex.evaluate(e);let r;if(this.endIndex&&(r=this.endIndex.evaluate(e)),it(t,["string"]))return[...t].slice(i,r).join("");if(it(t,["array"]))return t.slice(i,r);throw new Ft(`Expected first argument to be of type array or string, but found ${Je(Gt(t))} instead.`)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}}function ai(e,t){const i=e.length-1;let r,n,s=0,o=i,a=0;for(;s<=o;)if(a=Math.floor((s+o)/2),r=e[a],n=e[a+1],r<=t){if(a===i||tt))throw new Ft("Input is not a number.");o=a-1}return 0}class li{constructor(e,t,i){this.type=e,this.input=t,this.labels=[],this.outputs=[];for(const[r,n]of i)this.labels.push(r),this.outputs.push(n)}static parse(e,t){if(e.length-1<4)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return t.error("Expected an even number of arguments.");const i=t.parse(e[1],1,Be);if(!i)return null;const r=[];let n=null;t.expectedType&&"value"!==t.expectedType.kind&&(n=t.expectedType);for(let s=1;s=i)return t.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',a);const c=t.parse(o,l,n);if(!c)return null;n=n||c.type,r.push([i,c])}return new li(n,i,r)}evaluate(e){const t=this.labels,i=this.outputs;if(1===t.length)return i[0].evaluate(e);const r=this.input.evaluate(e);if(r<=t[0])return i[0].evaluate(e);const n=t.length;return r>=t[n-1]?i[n-1].evaluate(e):i[ai(t,r)].evaluate(e)}eachChild(e){e(this.input);for(const t of this.outputs)e(t)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}var ci,hi,ui=function(){if(hi)return ci;function e(e,t,i,r){this.cx=3*e,this.bx=3*(i-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*t,this.by=3*(r-t)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=t,this.p2x=i,this.p2y=r}return hi=1,ci=e,e.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,t){if(void 0===t&&(t=1e-6),e<0)return 0;if(e>1)return 1;for(var i=e,r=0;r<8;r++){var n=this.sampleCurveX(i)-e;if(Math.abs(n)n?o=i:a=i,i=.5*(a-o)+o;return i},solve:function(e,t){return this.sampleCurveY(this.solveCurveX(e,t))}},ci}(),di=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(ui);class pi{constructor(e,t,i,r,n){this.type=e,this.operator=t,this.interpolation=i,this.input=r,this.labels=[],this.outputs=[];for(const[s,o]of n)this.labels.push(s),this.outputs.push(o)}static interpolationFactor(e,t,i,r){let n=0;if("exponential"===e.name)n=fi(t,e.base,i,r);else if("linear"===e.name)n=fi(t,1,i,r);else if("cubic-bezier"===e.name){const s=e.controlPoints;n=new di(s[0],s[1],s[2],s[3]).solve(fi(t,1,i,r))}return n}static parse(e,t){let[i,r,n,...s]=e;if(!Array.isArray(r)||0===r.length)return t.error("Expected an interpolation type expression.",1);if("linear"===r[0])r={name:"linear"};else if("exponential"===r[0]){const e=r[1];if("number"!=typeof e)return t.error("Exponential interpolation requires a numeric base.",1,1);r={name:"exponential",base:e}}else{if("cubic-bezier"!==r[0])return t.error(`Unknown interpolation type ${String(r[0])}`,1,0);{const e=r.slice(1);if(4!==e.length||e.some(e=>"number"!=typeof e||e<0||e>1))return t.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);r={name:"cubic-bezier",controlPoints:e}}}if(e.length-1<4)return t.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return t.error("Expected an even number of arguments.");if(n=t.parse(n,2,Be),!n)return null;const o=[];let a=null;"interpolate-hcl"!==i&&"interpolate-lab"!==i||t.expectedType==We?t.expectedType&&"value"!==t.expectedType.kind&&(a=t.expectedType):a=je;for(let l=0;l=e)return t.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',r);const c=t.parse(i,n,a);if(!c)return null;a=a||c.type,o.push([e,c])}return rt(a,Be)||rt(a,Ne)||rt(a,je)||rt(a,$e)||rt(a,He)||rt(a,We)||rt(a,Ye)||rt(a,Ke(Be))?new pi(a,i,r,n,o):t.error(`Type ${Je(a)} is not interpolatable.`)}evaluate(e){const t=this.labels,i=this.outputs;if(1===t.length)return i[0].evaluate(e);const r=this.input.evaluate(e);if(r<=t[0])return i[0].evaluate(e);const n=t.length;if(r>=t[n-1])return i[n-1].evaluate(e);const s=ai(t,r),o=pi.interpolationFactor(this.interpolation,r,t[s],t[s+1]),a=i[s].evaluate(e),l=i[s+1].evaluate(e);switch(this.operator){case"interpolate":switch(this.type.kind){case"number":return It(a,l,o);case"color":return Et.interpolate(a,l,o);case"padding":return kt.interpolate(a,l,o);case"colorArray":return Lt.interpolate(a,l,o);case"numberArray":return Rt.interpolate(a,l,o);case"variableAnchorOffsetCollection":return Ot.interpolate(a,l,o);case"array":return Mt(a,l,o);case"projectionDefinition":return jt.interpolate(a,l,o)}case"interpolate-hcl":switch(this.type.kind){case"color":return Et.interpolate(a,l,o,"hcl");case"colorArray":return Lt.interpolate(a,l,o,"hcl")}case"interpolate-lab":switch(this.type.kind){case"color":return Et.interpolate(a,l,o,"lab");case"colorArray":return Lt.interpolate(a,l,o,"lab")}}}eachChild(e){e(this.input);for(const t of this.outputs)e(t)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function fi(e,t,i,r){const n=r-i,s=e-i;return 0===n?0:1===t?s/n:(Math.pow(t,s)-1)/(Math.pow(t,n)-1)}const mi={color:Et.interpolate,number:It,padding:kt.interpolate,numberArray:Rt.interpolate,colorArray:Lt.interpolate,variableAnchorOffsetCollection:Ot.interpolate,array:Mt};class _i{constructor(e,t){this.type=e,this.args=t}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");let i=null;const r=t.expectedType;r&&"value"!==r.kind&&(i=r);const n=[];for(const o of e.slice(1)){const e=t.parse(o,1+n.length,i,void 0,{typeAnnotation:"omit"});if(!e)return null;i=i||e.type,n.push(e)}if(!i)throw new Error("No output type");const s=r&&n.some(e=>et(r,e.type));return new _i(s?Ge:i,n)}evaluate(e){let t,i=null,r=0;for(const n of this.args)if(r++,i=n.evaluate(e),i&&i instanceof Vt&&!i.available&&(t||(t=i.name),i=null,r===this.args.length&&(i=t)),null!==i)break;return i}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}function gi(e,t){return"=="===e||"!="===e?"boolean"===t.kind||"string"===t.kind||"number"===t.kind||"null"===t.kind||"value"===t.kind:"string"===t.kind||"number"===t.kind||"value"===t.kind}function yi(e,t,i,r){return 0===r.compare(t,i)}function xi(e,t,i){const r="=="!==e&&"!="!==e;return class n{constructor(e,t,i){this.type=Ve,this.lhs=e,this.rhs=t,this.collator=i,this.hasUntypedArgument="value"===e.type.kind||"value"===t.type.kind}static parse(e,t){if(3!==e.length&&4!==e.length)return t.error("Expected two or three arguments.");const i=e[0];let s=t.parse(e[1],1,Ge);if(!s)return null;if(!gi(i,s.type))return t.concat(1).error(`"${i}" comparisons are not supported for type '${Je(s.type)}'.`);let o=t.parse(e[2],2,Ge);if(!o)return null;if(!gi(i,o.type))return t.concat(2).error(`"${i}" comparisons are not supported for type '${Je(o.type)}'.`);if(s.type.kind!==o.type.kind&&"value"!==s.type.kind&&"value"!==o.type.kind)return t.error(`Cannot compare types '${Je(s.type)}' and '${Je(o.type)}'.`);r&&("value"===s.type.kind&&"value"!==o.type.kind?s=new Wt(o.type,[s]):"value"!==s.type.kind&&"value"===o.type.kind&&(o=new Wt(s.type,[o])));let a=null;if(4===e.length){if("string"!==s.type.kind&&"string"!==o.type.kind&&"value"!==s.type.kind&&"value"!==o.type.kind)return t.error("Cannot use collator to compare non-string types.");if(a=t.parse(e[3],3,qe),!a)return null}return new n(s,o,a)}evaluate(n){const s=this.lhs.evaluate(n),o=this.rhs.evaluate(n);if(r&&this.hasUntypedArgument){const t=Gt(s),i=Gt(o);if(t.kind!==i.kind||"string"!==t.kind&&"number"!==t.kind)throw new Ft(`Expected arguments for "${e}" to be (string, string) or (number, number), but found (${t.kind}, ${i.kind}) instead.`)}if(this.collator&&!r&&this.hasUntypedArgument){const e=Gt(s),i=Gt(o);if("string"!==e.kind||"string"!==i.kind)return t(n,s,o)}return this.collator?i(n,s,o,this.collator.evaluate(n)):t(n,s,o)}eachChild(e){e(this.lhs),e(this.rhs),this.collator&&e(this.collator)}outputDefined(){return!0}}}const vi=xi("==",function(e,t,i){return t===i},yi),bi=xi("!=",function(e,t,i){return t!==i},function(e,t,i,r){return!yi(0,t,i,r)}),wi=xi("<",function(e,t,i){return t",function(e,t,i){return t>i},function(e,t,i,r){return r.compare(t,i)>0}),Si=xi("<=",function(e,t,i){return t<=i},function(e,t,i,r){return r.compare(t,i)<=0}),Pi=xi(">=",function(e,t,i){return t>=i},function(e,t,i,r){return r.compare(t,i)>=0});class Ii{constructor(e,t,i){this.type=qe,this.locale=i,this.caseSensitive=e,this.diacriticSensitive=t}static parse(e,t){if(2!==e.length)return t.error("Expected one argument.");const i=e[1];if("object"!=typeof i||Array.isArray(i))return t.error("Collator options argument must be an object.");const r=t.parse(void 0!==i["case-sensitive"]&&i["case-sensitive"],1,Ve);if(!r)return null;const n=t.parse(void 0!==i["diacritic-sensitive"]&&i["diacritic-sensitive"],1,Ve);if(!n)return null;let s=null;return i.locale&&(s=t.parse(i.locale,1,Oe),!s)?null:new Ii(r,n,s)}evaluate(e){return new Ct(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 Mi{constructor(e,t,i,r,n){this.type=Oe,this.number=e,this.locale=t,this.currency=i,this.minFractionDigits=r,this.maxFractionDigits=n}static parse(e,t){if(3!==e.length)return t.error("Expected two arguments.");const i=t.parse(e[1],1,Be);if(!i)return null;const r=e[2];if("object"!=typeof r||Array.isArray(r))return t.error("NumberFormat options argument must be an object.");let n=null;if(r.locale&&(n=t.parse(r.locale,1,Oe),!n))return null;let s=null;if(r.currency&&(s=t.parse(r.currency,1,Oe),!s))return null;let o=null;if(r["min-fraction-digits"]&&(o=t.parse(r["min-fraction-digits"],1,Be),!o))return null;let a=null;return r["max-fraction-digits"]&&(a=t.parse(r["max-fraction-digits"],1,Be),!a)?null:new Mi(i,n,s,o,a)}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 Ei{constructor(e){this.type=Ze,this.sections=e}static parse(e,t){if(e.length<2)return t.error("Expected at least one argument.");const i=e[1];if(!Array.isArray(i)&&"object"==typeof i)return t.error("First argument must be an image or text section.");const r=[];let n=!1;for(let s=1;s<=e.length-1;++s){const i=e[s];if(n&&"object"==typeof i&&!Array.isArray(i)){n=!1;let e=null;if(i["font-scale"]&&(e=t.parse(i["font-scale"],1,Be),!e))return null;let s=null;if(i["text-font"]&&(s=t.parse(i["text-font"],1,Ke(Oe)),!s))return null;let o=null;if(i["text-color"]&&(o=t.parse(i["text-color"],1,je),!o))return null;let a=null;if(i["vertical-align"]){if("string"==typeof i["vertical-align"]&&!At.includes(i["vertical-align"]))return t.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${i["vertical-align"]}' instead.`);if(a=t.parse(i["vertical-align"],1,Oe),!a)return null}const l=r[r.length-1];l.scale=e,l.font=s,l.textColor=o,l.verticalAlign=a}else{const i=t.parse(e[s],1,Ge);if(!i)return null;const o=i.type.kind;if("string"!==o&&"value"!==o&&"null"!==o&&"resolvedImage"!==o)return t.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");n=!0,r.push({content:i,scale:null,font:null,textColor:null,verticalAlign:null})}}return new Ei(r)}evaluate(e){return new zt(this.sections.map(t=>{const i=t.content.evaluate(e);return Gt(i)===Xe?new Dt("",i,null,null,null,t.verticalAlign?t.verticalAlign.evaluate(e):null):new Dt(qt(i),null,t.scale?t.scale.evaluate(e):null,t.font?t.font.evaluate(e).join(","):null,t.textColor?t.textColor.evaluate(e):null,t.verticalAlign?t.verticalAlign.evaluate(e):null)}))}eachChild(e){for(const t of this.sections)e(t.content),t.scale&&e(t.scale),t.font&&e(t.font),t.textColor&&e(t.textColor),t.verticalAlign&&e(t.verticalAlign)}outputDefined(){return!1}}class Ci{constructor(e){this.type=Xe,this.input=e}static parse(e,t){if(2!==e.length)return t.error("Expected two arguments.");const i=t.parse(e[1],1,Oe);return i?new Ci(i):t.error("No image name provided.")}evaluate(e){const t=this.input.evaluate(e),i=Vt.fromString(t);return i&&e.availableImages&&(i.available=e.availableImages.indexOf(t)>-1),i}eachChild(e){e(this.input)}outputDefined(){return!1}}class Ai{constructor(e){this.type=Be,this.input=e}static parse(e,t){if(2!==e.length)return t.error(`Expected 1 argument, but found ${e.length-1} instead.`);const i=t.parse(e[1],1);return i?"array"!==i.type.kind&&"string"!==i.type.kind&&"value"!==i.type.kind?t.error(`Expected argument of type string or array, but found ${Je(i.type)} instead.`):new Ai(i):null}evaluate(e){const t=this.input.evaluate(e);if("string"==typeof t)return[...t].length;if(Array.isArray(t))return t.length;throw new Ft(`Expected value to be of type string or array, but found ${Je(Gt(t))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}}const Di=8192;function zi(e,t){const i=(180+e[0])/360,r=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e[1]*Math.PI/360)))/360,n=Math.pow(2,t.z);return[Math.round(i*n*Di),Math.round(r*n*Di)]}function ki(e,t){const i=Math.pow(2,t.z);return[(n=(e[0]/Di+t.x)/i,360*n-180),(r=(e[1]/Di+t.y)/i,360/Math.PI*Math.atan(Math.exp((180-360*r)*Math.PI/180))-90)];var r,n}function Ri(e,t){e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[0]),e[3]=Math.max(e[3],t[1])}function Li(e,t){return!(e[0]<=t[0]||e[2]>=t[2]||e[1]<=t[1]||e[3]>=t[3])}function Fi(e,t,i){const r=e[0]-t[0],n=e[1]-t[1],s=e[0]-i[0],o=e[1]-i[1];return r*o-s*n==0&&r*s<=0&&n*o<=0}function Bi(e,t,i,r){return 0!=(n=[r[0]-i[0],r[1]-i[1]])[0]*(s=[t[0]-e[0],t[1]-e[1]])[1]-n[1]*s[0]&&!(!Gi(e,t,i,r)||!Gi(i,r,e,t));var n,s}function Oi(e,t,i){for(const r of i)for(let i=0;i(n=e)[1]!=(o=a[t+1])[1]>n[1]&&n[0]<(o[0]-s[0])*(n[1]-s[1])/(o[1]-s[1])+s[0]&&(r=!r)}var n,s,o;return r}function ji(e,t){for(const i of t)if(Vi(e,i))return!0;return!1}function Ni(e,t){for(const i of e)if(!Vi(i,t))return!1;for(let i=0;i0&&a<0||o<0&&a>0}function qi(e,t,i){const r=[];for(let n=0;ni[2]){const t=.5*r;let n=e[0]-i[0]>t?-r:i[0]-e[0]>t?r:0;0===n&&(n=e[0]-i[2]>t?-r:i[2]-e[0]>t?r:0),e[0]+=n}Ri(t,e)}function Wi(e,t,i,r){const n=Math.pow(2,r.z)*Di,s=[r.x*Di,r.y*Di],o=[];for(const a of e)for(const e of a){const r=[e.x+s[0],e.y+s[1]];$i(r,t,i,n),o.push(r)}return o}function Hi(e,t,i,r){const n=Math.pow(2,r.z)*Di,s=[r.x*Di,r.y*Di],o=[];for(const l of e){const e=[];for(const i of l){const r=[i.x+s[0],i.y+s[1]];Ri(t,r),e.push(r)}o.push(e)}if(t[2]-t[0]<=n/2){(a=t)[0]=a[1]=1/0,a[2]=a[3]=-1/0;for(const e of o)for(const r of e)$i(r,t,i,n)}var a;return o}class Xi{constructor(e,t){this.type=Ve,this.geojson=e,this.geometries=t}static parse(e,t){if(2!==e.length)return t.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Ut(e[1])){const t=e[1];if("FeatureCollection"===t.type){const e=[];for(const i of t.features){const{type:t,coordinates:r}=i.geometry;"Polygon"===t&&e.push(r),"MultiPolygon"===t&&e.push(...r)}if(e.length)return new Xi(t,{type:"MultiPolygon",coordinates:e})}else if("Feature"===t.type){const e=t.geometry.type;if("Polygon"===e||"MultiPolygon"===e)return new Xi(t,t.geometry)}else if("Polygon"===t.type||"MultiPolygon"===t.type)return new Xi(t,t)}return t.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(null!=e.geometry()&&null!=e.canonicalID()){if("Point"===e.geometryType())return function(e,t){const i=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],n=e.canonicalID();if("Polygon"===t.type){const s=qi(t.coordinates,r,n),o=Wi(e.geometry(),i,r,n);if(!Li(i,r))return!1;for(const e of o)if(!Vi(e,s))return!1}if("MultiPolygon"===t.type){const s=Zi(t.coordinates,r,n),o=Wi(e.geometry(),i,r,n);if(!Li(i,r))return!1;for(const e of o)if(!ji(e,s))return!1}return!0}(e,this.geometries);if("LineString"===e.geometryType())return function(e,t){const i=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],n=e.canonicalID();if("Polygon"===t.type){const s=qi(t.coordinates,r,n),o=Hi(e.geometry(),i,r,n);if(!Li(i,r))return!1;for(const e of o)if(!Ni(e,s))return!1}if("MultiPolygon"===t.type){const s=Zi(t.coordinates,r,n),o=Hi(e.geometry(),i,r,n);if(!Li(i,r))return!1;for(const e of o)if(!Ui(e,s))return!1}return!0}(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let Yi=class{constructor(e=[],t=(e,t)=>et?1:0){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let i=(this.length>>1)-1;i>=0;i--)this._down(i)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:i}=this,r=t[e];for(;e>0;){const n=e-1>>1,s=t[n];if(i(r,s)>=0)break;t[e]=s,e=n}t[e]=r}_down(e){const{data:t,compare:i}=this,r=this.length>>1,n=t[e];for(;e=0)break;t[e]=t[r],e=r}t[e]=n}};function Ki(e,t,i=0,r=e.length-1,n=Qi){for(;r>i;){if(r-i>600){const s=r-i+1,o=t-i+1,a=Math.log(s),l=.5*Math.exp(2*a/3),c=.5*Math.sqrt(a*l*(s-l)/s)*(o-s/2<0?-1:1);Ki(e,t,Math.max(i,Math.floor(t-o*l/s+c)),Math.min(r,Math.floor(t+(s-o)*l/s+c)),n)}const s=e[t];let o=i,a=r;for(Ji(e,i,t),n(e[r],s)>0&&Ji(e,i,r);o0;)a--}0===n(e[i],s)?Ji(e,i,a):(a++,Ji(e,a,r)),a<=t&&(i=a+1),t<=a&&(r=a-1)}}function Ji(e,t,i){const r=e[t];e[t]=e[i],e[i]=r}function Qi(e,t){return et?1:0}function er(e,t){if(e.length<=1)return[e];const i=[];let r,n;for(const s of e){const e=ir(s);0!==e&&(s.area=Math.abs(e),void 0===n&&(n=e<0),n===e<0?(r&&i.push(r),r=[s]):r.push(s))}if(r&&i.push(r),t>1)for(let s=0;s1?(l=e[a+1][0],c=e[a+1][1]):d>0&&(l+=h/this.kx*d,c+=u/this.ky*d)),h=this.wrap(t[0]-l)*this.kx,u=(t[1]-c)*this.ky;const p=h*h+u*u;p180;)e-=360;return e}}function ar(e,t){return t[0]-e[0]}function lr(e){return e[1]-e[0]+1}function cr(e,t){return e[1]>=e[0]&&e[1]e[1])return[null,null];const i=lr(e);if(t){if(2===i)return[e,null];const t=Math.floor(i/2);return[[e[0],e[0]+t],[e[0]+t,e[1]]]}if(1===i)return[e,null];const r=Math.floor(i/2)-1;return[[e[0],e[0]+r],[e[0]+r+1,e[1]]]}function ur(e,t){if(!cr(t,e.length))return[1/0,1/0,-1/0,-1/0];const i=[1/0,1/0,-1/0,-1/0];for(let r=t[0];r<=t[1];++r)Ri(i,e[r]);return i}function dr(e){const t=[1/0,1/0,-1/0,-1/0];for(const i of e)for(const e of i)Ri(t,e);return t}function pr(e){return e[0]!==-1/0&&e[1]!==-1/0&&e[2]!==1/0&&e[3]!==1/0}function fr(e,t,i){if(!pr(e)||!pr(t))return NaN;let r=0,n=0;return e[2]t[2]&&(r=e[0]-t[2]),e[1]>t[3]&&(n=e[1]-t[3]),e[3]=r)return r;if(Li(n,s)){if(br(e,t))return 0}else if(br(t,e))return 0;let o=1/0;for(const a of e)for(let e=0,r=a.length,n=r-1;e0;){const n=o.pop();if(n[0]>=s)continue;const l=n[1],c=t?50:100;if(lr(l)<=c){if(!cr(l,e.length))return NaN;if(t){const t=vr(e,l,i,r);if(isNaN(t)||0===t)return t;s=Math.min(s,t)}else for(let t=l[0];t<=l[1];++t){const n=xr(e[t],i,r);if(s=Math.min(s,n),0===s)return 0}}else{const i=hr(l,t);Tr(o,s,r,e,a,i[0]),Tr(o,s,r,e,a,i[1])}}return s}function Ir(e,t,i,r,n,s=1/0){let o=Math.min(s,n.distance(e[0],i[0]));if(0===o)return o;const a=new Yi([[0,[0,e.length-1],[0,i.length-1]]],ar);for(;a.length>0;){const s=a.pop();if(s[0]>=o)continue;const l=s[1],c=s[2],h=t?50:100,u=r?50:100;if(lr(l)<=h&&lr(c)<=u){if(!cr(l,e.length)&&cr(c,i.length))return NaN;let s;if(t&&r)s=gr(e,l,i,c,n),o=Math.min(o,s);else if(t&&!r){const t=e.slice(l[0],l[1]+1);for(let e=c[0];e<=c[1];++e)if(s=mr(i[e],t,n),o=Math.min(o,s),0===o)return o}else if(!t&&r){const t=i.slice(c[0],c[1]+1);for(let i=l[0];i<=l[1];++i)if(s=mr(e[i],t,n),o=Math.min(o,s),0===o)return o}else s=yr(e,l,i,c,n),o=Math.min(o,s)}else{const s=hr(l,t),h=hr(c,r);Sr(a,o,n,e,i,s[0],h[0]),Sr(a,o,n,e,i,s[0],h[1]),Sr(a,o,n,e,i,s[1],h[0]),Sr(a,o,n,e,i,s[1],h[1])}}return o}function Mr(e){return"MultiPolygon"===e.type?e.coordinates.map(e=>({type:"Polygon",coordinates:e})):"MultiLineString"===e.type?e.coordinates.map(e=>({type:"LineString",coordinates:e})):"MultiPoint"===e.type?e.coordinates.map(e=>({type:"Point",coordinates:e})):[e]}class Er{constructor(e,t){this.type=Be,this.geojson=e,this.geometries=t}static parse(e,t){if(2!==e.length)return t.error(`'distance' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Ut(e[1])){const t=e[1];if("FeatureCollection"===t.type)return new Er(t,t.features.map(e=>Mr(e.geometry)).flat());if("Feature"===t.type)return new Er(t,Mr(t.geometry));if("type"in t&&"coordinates"in t)return new Er(t,Mr(t))}return t.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(null!=e.geometry()&&null!=e.canonicalID()){if("Point"===e.geometryType())return function(e,t){const i=e.geometry(),r=i.flat().map(t=>ki([t.x,t.y],e.canonical));if(0===i.length)return NaN;const n=new or(r[0][1]);let s=1/0;for(const o of t){switch(o.type){case"Point":s=Math.min(s,Ir(r,!1,[o.coordinates],!1,n,s));break;case"LineString":s=Math.min(s,Ir(r,!1,o.coordinates,!0,n,s));break;case"Polygon":s=Math.min(s,Pr(r,!1,o.coordinates,n,s))}if(0===s)return s}return s}(e,this.geometries);if("LineString"===e.geometryType())return function(e,t){const i=e.geometry(),r=i.flat().map(t=>ki([t.x,t.y],e.canonical));if(0===i.length)return NaN;const n=new or(r[0][1]);let s=1/0;for(const o of t){switch(o.type){case"Point":s=Math.min(s,Ir(r,!0,[o.coordinates],!1,n,s));break;case"LineString":s=Math.min(s,Ir(r,!0,o.coordinates,!0,n,s));break;case"Polygon":s=Math.min(s,Pr(r,!0,o.coordinates,n,s))}if(0===s)return s}return s}(e,this.geometries);if("Polygon"===e.geometryType())return function(e,t){const i=e.geometry();if(0===i.length||0===i[0].length)return NaN;const r=er(i,0).map(t=>t.map(t=>t.map(t=>ki([t.x,t.y],e.canonical)))),n=new or(r[0][0][0][1]);let s=1/0;for(const o of t)for(const e of r){switch(o.type){case"Point":s=Math.min(s,Pr([o.coordinates],!1,e,n,s));break;case"LineString":s=Math.min(s,Pr(o.coordinates,!0,e,n,s));break;case"Polygon":s=Math.min(s,wr(e,o.coordinates,n,s))}if(0===s)return s}return s}(e,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}class Cr{constructor(e){this.type=Ge,this.key=e}static parse(e,t){if(2!==e.length)return t.error(`Expected 1 argument, but found ${e.length-1} instead.`);const i=e[1];return null==i?t.error("Global state property must be defined."):"string"!=typeof i?t.error(`Global state property must be string, but found ${typeof e[1]} instead.`):new Cr(i)}evaluate(e){var t;const i=null===(t=e.globals)||void 0===t?void 0:t.globalState;return i&&0!==Object.keys(i).length?vt(i,this.key):null}eachChild(){}outputDefined(){return!1}}const Ar={"==":vi,"!=":bi,">":Ti,"<":wi,">=":Pi,"<=":Si,array:Wt,at:ti,boolean:Wt,case:si,coalesce:_i,collator:Ii,format:Ei,image:Ci,in:ii,"index-of":ri,interpolate:pi,"interpolate-hcl":pi,"interpolate-lab":pi,length:Ai,let:Qt,literal:Zt,match:ni,number:Wt,"number-format":Mi,object:Wt,slice:oi,step:li,string:Wt,"to-boolean":Xt,"to-color":Xt,"to-number":Xt,"to-string":Xt,var:ei,within:Xi,distance:Er,"global-state":Cr};class Dr{constructor(e,t,i,r){this.name=e,this.type=t,this._evaluate=i,this.args=r}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}static parse(e,t){const i=e[0],r=Dr.definitions[i];if(!r)return t.error(`Unknown expression "${i}". If you wanted a literal array, use ["literal", [...]].`,0);const n=Array.isArray(r)?r[0]:r.type,s=Array.isArray(r)?[[r[1],r[2]]]:r.overloads,o=s.filter(([t])=>!Array.isArray(t)||t.length===e.length-1);let a=null;for(const[l,c]of o){a=new Jt(t.registry,Fr,t.path,null,t.scope);const r=[];let s=!1;for(let t=1;t{return t=e,Array.isArray(t)?`(${t.map(Je).join(", ")})`:`(${Je(t.type)}...)`;var t}).join(" | "),r=[];for(let n=1;n{i=t?i&&Fr(e):i&&e instanceof Zt}),!!i&&Br(e)&&Vr(e,["zoom","heatmap-density","elevation","line-progress","accumulated","is-supported-script"])}function Br(e){if(e instanceof Dr){if("get"===e.name&&1===e.args.length)return!1;if("feature-state"===e.name)return!1;if("has"===e.name&&1===e.args.length)return!1;if("properties"===e.name||"geometry-type"===e.name||"id"===e.name)return!1;if(/^filter-/.test(e.name))return!1}if(e instanceof Xi)return!1;if(e instanceof Er)return!1;let t=!0;return e.eachChild(e=>{t&&!Br(e)&&(t=!1)}),t}function Or(e){if(e instanceof Dr&&"feature-state"===e.name)return!1;let t=!0;return e.eachChild(e=>{t&&!Or(e)&&(t=!1)}),t}function Vr(e,t){if(e instanceof Dr&&t.indexOf(e.name)>=0)return!1;let i=!0;return e.eachChild(e=>{i&&!Vr(e,t)&&(i=!1)}),i}function jr(e){return{result:"success",value:e}}function Nr(e){return{result:"error",value:e}}function Ur(e){return"data-driven"===e["property-type"]||"cross-faded-data-driven"===e["property-type"]}function Gr(e){return!!e.expression&&e.expression.parameters.indexOf("zoom")>-1}function qr(e){return!!e.expression&&e.expression.interpolated}function Zr(e){return e instanceof Number?"number":e instanceof String?"string":e instanceof Boolean?"boolean":Array.isArray(e)?"array":null===e?"null":typeof e}function $r(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)&&Gt(e)===Ue}function Wr(e){return e}function Hr(e,t){const i=e.stops&&"object"==typeof e.stops[0][0],r=i||!(i||void 0!==e.property),n=e.type||(qr(t)?"exponential":"interval"),s=function(e){switch(e.type){case"color":return Et.parse;case"padding":return kt.parse;case"numberArray":return Rt.parse;case"colorArray":return Lt.parse;default:return null}}(t);if(s&&((e=ke({},e)).stops&&(e.stops=e.stops.map(e=>[e[0],s(e[1])])),e.default=s(e.default?e.default:t.default)),e.colorSpace&&"rgb"!==(o=e.colorSpace)&&"hcl"!==o&&"lab"!==o)throw new Error(`Unknown color space: "${e.colorSpace}"`);var o;const a=function(e){switch(e){case"exponential":return Jr;case"interval":return Kr;case"categorical":return Yr;case"identity":return Qr;default:throw new Error(`Unknown function type "${e}"`)}}(n);let l,c;if("categorical"===n){l=Object.create(null);for(const t of e.stops)l[t[0]]=t[1];c=typeof e.stops[0][0]}if(i){const i={},r=[];for(let t=0;te[0]),evaluate:({zoom:i},r)=>Jr({stops:n,base:e.base},t,i).evaluate(i,r)}}if(r){const i="exponential"===n?{name:"exponential",base:void 0!==e.base?e.base:1}:null;return{kind:"camera",interpolationType:i,interpolationFactor:pi.interpolationFactor.bind(void 0,i),zoomStops:e.stops.map(e=>e[0]),evaluate:({zoom:i})=>a(e,t,i,l,c)}}return{kind:"source",evaluate(i,r){const n=r&&r.properties?r.properties[e.property]:void 0;return void 0===n?Xr(e.default,t.default):a(e,t,n,l,c)}}}function Xr(e,t,i){return void 0!==e?e:void 0!==t?t:void 0!==i?i:void 0}function Yr(e,t,i,r,n){return Xr(typeof i===n?r[i]:void 0,e.default,t.default)}function Kr(e,t,i){if("number"!==Zr(i))return Xr(e.default,t.default);const r=e.stops.length;if(1===r)return e.stops[0][1];if(i<=e.stops[0][0])return e.stops[0][1];if(i>=e.stops[r-1][0])return e.stops[r-1][1];const n=ai(e.stops.map(e=>e[0]),i);return e.stops[n][1]}function Jr(e,t,i){const r=void 0!==e.base?e.base:1;if("number"!==Zr(i))return Xr(e.default,t.default);const n=e.stops.length;if(1===n)return e.stops[0][1];if(i<=e.stops[0][0])return e.stops[0][1];if(i>=e.stops[n-1][0])return e.stops[n-1][1];const s=ai(e.stops.map(e=>e[0]),i),o=function(e,t,i,r){const n=r-i,s=e-i;return 0===n?0:1===t?s/n:(Math.pow(t,s)-1)/(Math.pow(t,n)-1)}(i,r,e.stops[s][0],e.stops[s+1][0]),a=e.stops[s][1],l=e.stops[s+1][1],c=mi[t.type]||Wr;return"function"==typeof a.evaluate?{evaluate(...t){const i=a.evaluate.apply(void 0,t),r=l.evaluate.apply(void 0,t);if(void 0!==i&&void 0!==r)return c(i,r,o,e.colorSpace)}}:c(a,l,o,e.colorSpace)}function Qr(e,t,i){switch(t.type){case"color":i=Et.parse(i);break;case"formatted":i=zt.fromString(i.toString());break;case"resolvedImage":i=Vt.fromString(i.toString());break;case"padding":i=kt.parse(i);break;case"colorArray":i=Lt.parse(i);break;case"numberArray":i=Rt.parse(i);break;default:Zr(i)===t.type||"enum"===t.type&&t.values[i]||(i=void 0)}return Xr(i,e.default,t.default)}Dr.register(Ar,{error:[{kind:"error"},[Oe],(e,[t])=>{throw new Ft(t.evaluate(e))}],typeof:[Oe,[Ge],(e,[t])=>Je(Gt(t.evaluate(e)))],"to-rgba":[Ke(Be,4),[je],(e,[t])=>{const[i,r,n,s]=t.evaluate(e).rgb;return[255*i,255*r,255*n,s]}],rgb:[je,[Be,Be,Be],zr],rgba:[je,[Be,Be,Be,Be],zr],has:{type:Ve,overloads:[[[Oe],(e,[t])=>kr(t.evaluate(e),e.properties())],[[Oe,Ue],(e,[t,i])=>kr(t.evaluate(e),i.evaluate(e))]]},get:{type:Ge,overloads:[[[Oe],(e,[t])=>Rr(t.evaluate(e),e.properties())],[[Oe,Ue],(e,[t,i])=>Rr(t.evaluate(e),i.evaluate(e))]]},"feature-state":[Ge,[Oe],(e,[t])=>Rr(t.evaluate(e),e.featureState||{})],properties:[Ue,[],e=>e.properties()],"geometry-type":[Oe,[],e=>e.geometryType()],id:[Ge,[],e=>e.id()],zoom:[Be,[],e=>e.globals.zoom],"heatmap-density":[Be,[],e=>e.globals.heatmapDensity||0],elevation:[Be,[],e=>e.globals.elevation||0],"line-progress":[Be,[],e=>e.globals.lineProgress||0],accumulated:[Ge,[],e=>void 0===e.globals.accumulated?null:e.globals.accumulated],"+":[Be,Lr(Be),(e,t)=>{let i=0;for(const r of t)i+=r.evaluate(e);return i}],"*":[Be,Lr(Be),(e,t)=>{let i=1;for(const r of t)i*=r.evaluate(e);return i}],"-":{type:Be,overloads:[[[Be,Be],(e,[t,i])=>t.evaluate(e)-i.evaluate(e)],[[Be],(e,[t])=>-t.evaluate(e)]]},"/":[Be,[Be,Be],(e,[t,i])=>t.evaluate(e)/i.evaluate(e)],"%":[Be,[Be,Be],(e,[t,i])=>t.evaluate(e)%i.evaluate(e)],ln2:[Be,[],()=>Math.LN2],pi:[Be,[],()=>Math.PI],e:[Be,[],()=>Math.E],"^":[Be,[Be,Be],(e,[t,i])=>Math.pow(t.evaluate(e),i.evaluate(e))],sqrt:[Be,[Be],(e,[t])=>Math.sqrt(t.evaluate(e))],log10:[Be,[Be],(e,[t])=>Math.log(t.evaluate(e))/Math.LN10],ln:[Be,[Be],(e,[t])=>Math.log(t.evaluate(e))],log2:[Be,[Be],(e,[t])=>Math.log(t.evaluate(e))/Math.LN2],sin:[Be,[Be],(e,[t])=>Math.sin(t.evaluate(e))],cos:[Be,[Be],(e,[t])=>Math.cos(t.evaluate(e))],tan:[Be,[Be],(e,[t])=>Math.tan(t.evaluate(e))],asin:[Be,[Be],(e,[t])=>Math.asin(t.evaluate(e))],acos:[Be,[Be],(e,[t])=>Math.acos(t.evaluate(e))],atan:[Be,[Be],(e,[t])=>Math.atan(t.evaluate(e))],min:[Be,Lr(Be),(e,t)=>Math.min(...t.map(t=>t.evaluate(e)))],max:[Be,Lr(Be),(e,t)=>Math.max(...t.map(t=>t.evaluate(e)))],abs:[Be,[Be],(e,[t])=>Math.abs(t.evaluate(e))],round:[Be,[Be],(e,[t])=>{const i=t.evaluate(e);return i<0?-Math.round(-i):Math.round(i)}],floor:[Be,[Be],(e,[t])=>Math.floor(t.evaluate(e))],ceil:[Be,[Be],(e,[t])=>Math.ceil(t.evaluate(e))],"filter-==":[Ve,[Oe,Ge],(e,[t,i])=>e.properties()[t.value]===i.value],"filter-id-==":[Ve,[Ge],(e,[t])=>e.id()===t.value],"filter-type-==":[Ve,[Oe],(e,[t])=>e.geometryType()===t.value],"filter-<":[Ve,[Oe,Ge],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r{const i=e.id(),r=t.value;return typeof i==typeof r&&i":[Ve,[Oe,Ge],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r>n}],"filter-id->":[Ve,[Ge],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i>r}],"filter-<=":[Ve,[Oe,Ge],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r<=n}],"filter-id-<=":[Ve,[Ge],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i<=r}],"filter->=":[Ve,[Oe,Ge],(e,[t,i])=>{const r=e.properties()[t.value],n=i.value;return typeof r==typeof n&&r>=n}],"filter-id->=":[Ve,[Ge],(e,[t])=>{const i=e.id(),r=t.value;return typeof i==typeof r&&i>=r}],"filter-has":[Ve,[Ge],(e,[t])=>t.value in e.properties()],"filter-has-id":[Ve,[],e=>null!==e.id()&&void 0!==e.id()],"filter-type-in":[Ve,[Ke(Oe)],(e,[t])=>t.value.indexOf(e.geometryType())>=0],"filter-id-in":[Ve,[Ke(Ge)],(e,[t])=>t.value.indexOf(e.id())>=0],"filter-in-small":[Ve,[Oe,Ke(Ge)],(e,[t,i])=>i.value.indexOf(e.properties()[t.value])>=0],"filter-in-large":[Ve,[Oe,Ke(Ge)],(e,[t,i])=>function(e,t,i,r){for(;i<=r;){const n=i+r>>1;if(t[n]===e)return!0;t[n]>e?r=n-1:i=n+1}return!1}(e.properties()[t.value],i.value,0,i.value.length-1)],all:{type:Ve,overloads:[[[Ve,Ve],(e,[t,i])=>t.evaluate(e)&&i.evaluate(e)],[Lr(Ve),(e,t)=>{for(const i of t)if(!i.evaluate(e))return!1;return!0}]]},any:{type:Ve,overloads:[[[Ve,Ve],(e,[t,i])=>t.evaluate(e)||i.evaluate(e)],[Lr(Ve),(e,t)=>{for(const i of t)if(i.evaluate(e))return!0;return!1}]]},"!":[Ve,[Ve],(e,[t])=>!t.evaluate(e)],"is-supported-script":[Ve,[Oe],(e,[t])=>{const i=e.globals&&e.globals.isSupportedScript;return!i||i(t.evaluate(e))}],upcase:[Oe,[Oe],(e,[t])=>t.evaluate(e).toUpperCase()],downcase:[Oe,[Oe],(e,[t])=>t.evaluate(e).toLowerCase()],concat:[Oe,Lr(Ge),(e,t)=>t.map(t=>qt(t.evaluate(e))).join("")],"resolved-locale":[Oe,[qe],(e,[t])=>t.evaluate(e).resolvedLocale()]});class en{constructor(e,t,i){this.expression=e,this._warningHistory={},this._evaluator=new Kt,this._defaultValue=t?function(e){if("color"===e.type&&$r(e.default))return new Et(0,0,0,0);switch(e.type){case"color":return Et.parse(e.default)||null;case"padding":return kt.parse(e.default)||null;case"numberArray":return Rt.parse(e.default)||null;case"colorArray":return Lt.parse(e.default)||null;case"variableAnchorOffsetCollection":return Ot.parse(e.default)||null;case"projectionDefinition":return jt.parse(e.default)||null;default:return void 0===e.default?null:e.default}}(t):null,this._enumValues=t&&"enum"===t.type?t.values:null,this._globalState=i}evaluateWithoutErrorHandling(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=t,this._evaluator.featureState=i,this._evaluator.canonical=r,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=s,this.expression.evaluate(this._evaluator)}evaluate(e,t,i,r,n,s){this._globalState&&(e=hn(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=t||null,this._evaluator.featureState=i||null,this._evaluator.canonical=r,this._evaluator.availableImages=n||null,this._evaluator.formattedSection=s||null;try{const e=this.expression.evaluate(this._evaluator);if(null==e||"number"==typeof e&&e!=e)return this._defaultValue;if(this._enumValues&&!(e in this._enumValues))throw new Ft(`Expected value to be one of ${Object.keys(this._enumValues).map(e=>JSON.stringify(e)).join(", ")}, but found ${JSON.stringify(e)} instead.`);return e}catch(o){return this._warningHistory[o.message]||(this._warningHistory[o.message]=!0),this._defaultValue}}}function tn(e){return Array.isArray(e)&&e.length>0&&"string"==typeof e[0]&&e[0]in Ar}function rn(e,t,i){const r=new Jt(Ar,Fr,[],t?function(e){const t={color:je,string:Oe,number:Be,enum:Oe,boolean:Ve,formatted:Ze,padding:$e,numberArray:He,colorArray:We,projectionDefinition:Ne,resolvedImage:Xe,variableAnchorOffsetCollection:Ye};return"array"===e.type?Ke(t[e.value]||Ge,e.length):t[e.type]}(t):void 0),n=r.parse(e,void 0,void 0,void 0,t&&"string"===t.type?{typeAnnotation:"coerce"}:void 0);return n?jr(new en(n,t,i)):Nr(r.errors)}class nn{constructor(e,t,i){this.kind=e,this._styleExpression=t,this.isStateDependent="constant"!==e&&!Or(t.expression),this.globalStateRefs=cn(t.expression),this._globalState=i}evaluateWithoutErrorHandling(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,t,i,r,n,s)}evaluate(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluate(e,t,i,r,n,s)}}class sn{constructor(e,t,i,r,n){this.kind=e,this.zoomStops=i,this._styleExpression=t,this.isStateDependent="camera"!==e&&!Or(t.expression),this.globalStateRefs=cn(t.expression),this.interpolationType=r,this._globalState=n}evaluateWithoutErrorHandling(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,t,i,r,n,s)}evaluate(e,t,i,r,n,s){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluate(e,t,i,r,n,s)}interpolationFactor(e,t,i){return this.interpolationType?pi.interpolationFactor(this.interpolationType,e,t,i):0}}function on(e,t,i){const r=rn(e,t,i);if("error"===r.result)return r;const n=r.value.expression,s=Br(n);if(!s&&!Ur(t))return Nr([new Re("","data expressions not supported")]);const o=Vr(n,["zoom"]);if(!o&&!Gr(t))return Nr([new Re("","zoom expressions not supported")]);const a=ln(n);return a||o?a instanceof Re?Nr([a]):a instanceof pi&&!qr(t)?Nr([new Re("",'"interpolate" expressions cannot be used with this property')]):jr(a?new sn(s?"camera":"composite",r.value,a.labels,a instanceof pi?a.interpolation:void 0,i):new nn(s?"constant":"source",r.value,i)):Nr([new Re("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class an{constructor(e,t){this._parameters=e,this._specification=t,ke(this,Hr(this._parameters,this._specification))}static deserialize(e){return new an(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function ln(e){let t=null;if(e instanceof Qt)t=ln(e.result);else if(e instanceof _i){for(const i of e.args)if(t=ln(i),t)break}else(e instanceof li||e instanceof pi)&&e.input instanceof Dr&&"zoom"===e.input.name&&(t=e);return t instanceof Re||e.eachChild(e=>{const i=ln(e);i instanceof Re?t=i:!t&&i?t=new Re("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):t&&i&&t!==i&&(t=new Re("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),t}function cn(e,t=new Set){return e instanceof Cr&&t.add(e.key),e.eachChild(e=>{cn(e,t)}),t}function hn(e,t){const{zoom:i,heatmapDensity:r,elevation:n,lineProgress:s,isSupportedScript:o,accumulated:a}=null!=e?e:{};return{zoom:i,heatmapDensity:r,elevation:n,lineProgress:s,isSupportedScript:o,accumulated:a,globalState:t}}function un(e){if(!0===e||!1===e)return!0;if(!Array.isArray(e)||0===e.length)return!1;switch(e[0]){case"has":return e.length>=2&&"$id"!==e[1]&&"$type"!==e[1];case"in":return e.length>=3&&("string"!=typeof e[1]||Array.isArray(e[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==e.length||Array.isArray(e[1])||Array.isArray(e[2]);case"any":case"all":for(const t of e.slice(1))if(!un(t)&&"boolean"!=typeof t)return!1;return!0;default:return!0}}const dn={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function pn(e,t){if(null==e)return{filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set};un(e)||(e=_n(e));const i=rn(e,dn,t);if("error"===i.result)throw new Error(i.value.map(e=>`${e.key}: ${e.message}`).join(", "));return{filter:(e,t,r)=>i.value.evaluate(e,t,{},r),needGeometry:mn(e),getGlobalStateRefs:()=>cn(i.value.expression)}}function fn(e,t){return et?1:0}function mn(e){if(!Array.isArray(e))return!1;if("within"===e[0]||"distance"===e[0])return!0;for(let t=1;t"===t||"<="===t||">="===t?gn(e[1],e[2],t):"any"===t?(i=e.slice(1),["any"].concat(i.map(_n))):"all"===t?["all"].concat(e.slice(1).map(_n)):"none"===t?["all"].concat(e.slice(1).map(_n).map(vn)):"in"===t?yn(e[1],e.slice(2)):"!in"===t?vn(yn(e[1],e.slice(2))):"has"===t?xn(e[1]):"!has"!==t||vn(xn(e[1]));var i}function gn(e,t,i){switch(e){case"$type":return[`filter-type-${i}`,t];case"$id":return[`filter-id-${i}`,t];default:return[`filter-${i}`,e,t]}}function yn(e,t){if(0===t.length)return!1;switch(e){case"$type":return["filter-type-in",["literal",t]];case"$id":return["filter-id-in",["literal",t]];default:return t.length>200&&!t.some(e=>typeof e!=typeof t[0])?["filter-in-large",e,["literal",t.sort(fn)]]:["filter-in-small",e,["literal",t]]}}function xn(e){switch(e){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",e]}}function vn(e){return["!",e]}function bn(e){const t=typeof e;if("number"===t||"boolean"===t||"string"===t||null==e)return JSON.stringify(e);if(Array.isArray(e)){let t="[";for(const i of e)t+=`${bn(i)},`;return`${t}]`}const i=Object.keys(e).sort();let r="{";for(let n=0;nr.maximum?[new ze(t,i,`${i} is greater than the maximum value ${r.maximum}`)]:[]}function Cn(e){const t=e.valueSpec,i=Sn(e.value.type);let r,n,s,o={};const a="categorical"!==i&&void 0===e.value.property,l=!a,c="array"===Zr(e.value.stops)&&"array"===Zr(e.value.stops[0])&&"object"===Zr(e.value.stops[0][0]),h=In({key:e.key,value:e.value,valueSpec:e.styleSpec.function,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{stops:function(e){if("identity"===i)return[new ze(e.key,e.value,'identity function may not have a "stops" property')];let t=[];const r=e.value;return t=t.concat(Mn({key:e.key,value:r,valueSpec:e.valueSpec,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec,arrayElementValidator:u})),"array"===Zr(r)&&0===r.length&&t.push(new ze(e.key,r,"array must have at least one stop")),t},default:function(e){return e.validateSpec({key:e.key,value:e.value,valueSpec:t,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec})}}});return"identity"===i&&a&&h.push(new ze(e.key,e.value,'missing required property "property"')),"identity"===i||e.value.stops||h.push(new ze(e.key,e.value,'missing required property "stops"')),"exponential"===i&&e.valueSpec.expression&&!qr(e.valueSpec)&&h.push(new ze(e.key,e.value,"exponential functions not supported")),e.styleSpec.$version>=8&&(l&&!Ur(e.valueSpec)?h.push(new ze(e.key,e.value,"property functions not supported")):a&&!Gr(e.valueSpec)&&h.push(new ze(e.key,e.value,"zoom functions not supported"))),"categorical"!==i&&!c||void 0!==e.value.property||h.push(new ze(e.key,e.value,'"property" property is required')),h;function u(e){let i=[];const r=e.value,a=e.key;if("array"!==Zr(r))return[new ze(a,r,`array expected, ${Zr(r)} found`)];if(2!==r.length)return[new ze(a,r,`array length 2 expected, length ${r.length} found`)];if(c){if("object"!==Zr(r[0]))return[new ze(a,r,`object expected, ${Zr(r[0])} found`)];if(void 0===r[0].zoom)return[new ze(a,r,"object stop key must have zoom")];if(void 0===r[0].value)return[new ze(a,r,"object stop key must have value")];if(s&&s>Sn(r[0].zoom))return[new ze(a,r[0].zoom,"stop zoom values must appear in ascending order")];Sn(r[0].zoom)!==s&&(s=Sn(r[0].zoom),n=void 0,o={}),i=i.concat(In({key:`${a}[0]`,value:r[0],valueSpec:{zoom:{}},validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{zoom:En,value:d}}))}else i=i.concat(d({key:`${a}[0]`,value:r[0],validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec},r));return tn(Pn(r[1]))?i.concat([new ze(`${a}[1]`,r[1],"expressions are not allowed in function stops.")]):i.concat(e.validateSpec({key:`${a}[1]`,value:r[1],valueSpec:t,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec}))}function d(e,s){const a=Zr(e.value),l=Sn(e.value),c=null!==e.value?e.value:s;if(r){if(a!==r)return[new ze(e.key,c,`${a} stop domain type must match previous stop domain type ${r}`)]}else r=a;if("number"!==a&&"string"!==a&&"boolean"!==a)return[new ze(e.key,c,"stop domain value must be a number, string, or boolean")];if("number"!==a&&"categorical"!==i){let r=`number expected, ${a} found`;return Ur(t)&&void 0===i&&(r+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new ze(e.key,c,r)]}return"categorical"!==i||"number"!==a||isFinite(l)&&Math.floor(l)===l?"categorical"!==i&&"number"===a&&void 0!==n&&lnew ze(`${e.key}${t.key}`,e.value,t.message));const i=t.value.expression||t.value._styleExpression.expression;if("property"===e.expressionContext&&"text-font"===e.propertyKey&&!i.outputDefined())return[new ze(e.key,e.value,`Invalid data expression for "${e.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===e.expressionContext&&"layout"===e.propertyType&&!Or(i))return[new ze(e.key,e.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===e.expressionContext&&!Or(i))return[new ze(e.key,e.value,'"feature-state" data expressions are not supported with filters.')];if(e.expressionContext&&0===e.expressionContext.indexOf("cluster")){if(!Vr(i,["zoom","feature-state"]))return[new ze(e.key,e.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===e.expressionContext&&!Br(i))return[new ze(e.key,e.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function Dn(e){const t=e.key,i=e.value,r=Zr(i);return"string"!==r?[new ze(t,i,`color expected, ${r} found`)]:Et.parse(String(i))?[]:[new ze(t,i,`color expected, "${i}" found`)]}function zn(e){const t=e.key,i=e.value,r=e.valueSpec,n=[];return Array.isArray(r.values)?-1===r.values.indexOf(Sn(i))&&n.push(new ze(t,i,`expected one of [${r.values.join(", ")}], ${JSON.stringify(i)} found`)):-1===Object.keys(r.values).indexOf(Sn(i))&&n.push(new ze(t,i,`expected one of [${Object.keys(r.values).join(", ")}], ${JSON.stringify(i)} found`)),n}function kn(e){return un(Pn(e.value))?An(ke({},e,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Rn(e)}function Rn(e){const t=e.value,i=e.key;if("array"!==Zr(t))return[new ze(i,t,`array expected, ${Zr(t)} found`)];const r=e.styleSpec;let n,s=[];if(t.length<1)return[new ze(i,t,"filter array must have at least 1 element")];switch(s=s.concat(zn({key:`${i}[0]`,value:t[0],valueSpec:r.filter_operator,style:e.style,styleSpec:e.styleSpec})),Sn(t[0])){case"<":case"<=":case">":case">=":t.length>=2&&"$type"===Sn(t[1])&&s.push(new ze(i,t,`"$type" cannot be use with operator "${t[0]}"`));case"==":case"!=":3!==t.length&&s.push(new ze(i,t,`filter array for operator "${t[0]}" must have 3 elements`));case"in":case"!in":t.length>=2&&(n=Zr(t[1]),"string"!==n&&s.push(new ze(`${i}[1]`,t[1],`string expected, ${n} found`)));for(let o=2;o{e in i&&t.push(new ze(r,i[e],`"${e}" is prohibited for ref layers`))}),n.layers.forEach(t=>{Sn(t.id)===a&&(e=t)}),e?e.ref?t.push(new ze(r,i.ref,"ref cannot reference another ref layer")):o=Sn(e.type):t.push(new ze(r,i.ref,`ref layer "${a}" not found`))}else if("background"!==o)if(i.source){const e=n.sources&&n.sources[i.source],s=e&&Sn(e.type);e?"vector"===s&&"raster"===o?t.push(new ze(r,i.source,`layer "${i.id}" requires a raster source`)):"raster-dem"!==s&&"hillshade"===o||"raster-dem"!==s&&"color-relief"===o?t.push(new ze(r,i.source,`layer "${i.id}" requires a raster-dem source`)):"raster"===s&&"raster"!==o?t.push(new ze(r,i.source,`layer "${i.id}" requires a vector source`)):"vector"!==s||i["source-layer"]?"raster-dem"===s&&"hillshade"!==o&&"color-relief"!==o?t.push(new ze(r,i.source,"raster-dem source can only be used with layer type 'hillshade' or 'color-relief'.")):"line"!==o||!i.paint||!i.paint["line-gradient"]||"geojson"===s&&e.lineMetrics||t.push(new ze(r,i,`layer "${i.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):t.push(new ze(r,i,`layer "${i.id}" must specify a "source-layer"`)):t.push(new ze(r,i.source,`source "${i.source}" not found`))}else t.push(new ze(r,i,'missing required property "source"'));return t=t.concat(In({key:r,value:i,valueSpec:s.layer,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,objectElementValidators:{"*":()=>[],type:()=>e.validateSpec({key:`${r}.type`,value:i.type,valueSpec:s.layer.type,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,object:i,objectKey:"type"}),filter:kn,layout:e=>In({layer:i,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,objectElementValidators:{"*":e=>Bn(ke({layerType:o},e))}}),paint:e=>In({layer:i,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,objectElementValidators:{"*":e=>Fn(ke({layerType:o},e))}})}})),t}function Vn(e){const t=e.value,i=e.key,r=Zr(t);return"string"!==r?[new ze(i,t,`string expected, ${r} found`)]:[]}const jn={promoteId:function({key:e,value:t}){if("string"===Zr(t))return Vn({key:e,value:t});{const i=[];for(const r in t)i.push(...Vn({key:`${e}.${r}`,value:t[r]}));return i}}};function Nn(e){const t=e.value,i=e.key,r=e.styleSpec,n=e.style,s=e.validateSpec;if(!t.type)return[new ze(i,t,'"type" is required')];const o=Sn(t.type);let a;switch(o){case"vector":case"raster":return a=In({key:i,value:t,valueSpec:r[`source_${o.replace("-","_")}`],style:e.style,styleSpec:r,objectElementValidators:jn,validateSpec:s}),a;case"raster-dem":return a=function(e){var t;const i=null!==(t=e.sourceName)&&void 0!==t?t:"",r=e.value,n=e.styleSpec,s=n.source_raster_dem,o=e.style;let a=[];const l=Zr(r);if(void 0===r)return a;if("object"!==l)return a.push(new ze("source_raster_dem",r,`object expected, ${l} found`)),a;const c="custom"===Sn(r.encoding),h=["redFactor","greenFactor","blueFactor","baseShift"],u=e.value.encoding?`"${e.value.encoding}"`:"Default";for(const d in r)!c&&h.includes(d)?a.push(new ze(d,r[d],`In "${i}": "${d}" is only valid when "encoding" is set to "custom". ${u} encoding found`)):s[d]?a=a.concat(e.validateSpec({key:d,value:r[d],valueSpec:s[d],validateSpec:e.validateSpec,style:o,styleSpec:n})):a.push(new ze(d,r[d],`unknown property "${d}"`));return a}({sourceName:i,value:t,style:e.style,styleSpec:r,validateSpec:s}),a;case"geojson":if(a=In({key:i,value:t,valueSpec:r.source_geojson,style:n,styleSpec:r,validateSpec:s,objectElementValidators:jn}),t.cluster)for(const e in t.clusterProperties){const[r,n]=t.clusterProperties[e],s="string"==typeof r?[r,["accumulated"],["get",e]]:r;a.push(...An({key:`${i}.${e}.map`,value:n,expressionContext:"cluster-map"})),a.push(...An({key:`${i}.${e}.reduce`,value:s,expressionContext:"cluster-reduce"}))}return a;case"video":return In({key:i,value:t,valueSpec:r.source_video,style:n,validateSpec:s,styleSpec:r});case"image":return In({key:i,value:t,valueSpec:r.source_image,style:n,validateSpec:s,styleSpec:r});case"canvas":return[new ze(i,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return zn({key:`${i}.type`,value:t.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]}})}}function Un(e){const t=e.value,i=e.styleSpec,r=i.light,n=e.style;let s=[];const o=Zr(t);if(void 0===t)return s;if("object"!==o)return s=s.concat([new ze("light",t,`object expected, ${o} found`)]),s;for(const a in t){const o=a.match(/^(.*)-transition$/);s=s.concat(o&&r[o[1]]&&r[o[1]].transition?e.validateSpec({key:a,value:t[a],valueSpec:i.transition,validateSpec:e.validateSpec,style:n,styleSpec:i}):r[a]?e.validateSpec({key:a,value:t[a],valueSpec:r[a],validateSpec:e.validateSpec,style:n,styleSpec:i}):[new ze(a,t[a],`unknown property "${a}"`)])}return s}function Gn(e){const t=e.value,i=e.styleSpec,r=i.sky,n=e.style,s=Zr(t);if(void 0===t)return[];if("object"!==s)return[new ze("sky",t,`object expected, ${s} found`)];let o=[];for(const a in t)o=o.concat(r[a]?e.validateSpec({key:a,value:t[a],valueSpec:r[a],style:n,styleSpec:i}):[new ze(a,t[a],`unknown property "${a}"`)]);return o}function qn(e){const t=e.value,i=e.styleSpec,r=i.terrain,n=e.style;let s=[];const o=Zr(t);if(void 0===t)return s;if("object"!==o)return s=s.concat([new ze("terrain",t,`object expected, ${o} found`)]),s;for(const a in t)s=s.concat(r[a]?e.validateSpec({key:a,value:t[a],valueSpec:r[a],validateSpec:e.validateSpec,style:n,styleSpec:i}):[new ze(a,t[a],`unknown property "${a}"`)]);return s}function Zn(e){let t=[];const i=e.value,r=e.key;if(Array.isArray(i)){const n=[],s=[];for(const o in i)i[o].id&&n.includes(i[o].id)&&t.push(new ze(r,i,`all the sprites' ids must be unique, but ${i[o].id} is duplicated`)),n.push(i[o].id),i[o].url&&s.includes(i[o].url)&&t.push(new ze(r,i,`all the sprites' URLs must be unique, but ${i[o].url} is duplicated`)),s.push(i[o].url),t=t.concat(In({key:`${r}[${o}]`,value:i[o],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:e.validateSpec}));return t}return Vn({key:r,value:i})}function $n(e){return Boolean(e)&&e.constructor===Object}function Wn(e){return $n(e.value)?[]:[new ze(e.key,e.value,`object expected, ${Zr(e.value)} found`)]}const Hn={"*":()=>[],array:Mn,boolean:function(e){const t=e.value,i=e.key,r=Zr(t);return"boolean"!==r?[new ze(i,t,`boolean expected, ${r} found`)]:[]},number:En,color:Dn,constants:Tn,enum:zn,filter:kn,function:Cn,layer:On,object:In,source:Nn,light:Un,sky:Gn,terrain:qn,projection:function(e){const t=e.value,i=e.styleSpec,r=i.projection,n=e.style,s=Zr(t);if(void 0===t)return[];if("object"!==s)return[new ze("projection",t,`object expected, ${s} found`)];let o=[];for(const a in t)o=o.concat(r[a]?e.validateSpec({key:a,value:t[a],valueSpec:r[a],style:n,styleSpec:i}):[new ze(a,t[a],`unknown property "${a}"`)]);return o},projectionDefinition:function(e){const t=e.key;let i=e.value;i=i instanceof String?i.valueOf():i;const r=Zr(i);return"array"!==r||(n=i,Array.isArray(n)&&3===n.length&&"string"==typeof n[0]&&"string"==typeof n[1]&&"number"==typeof n[2])||function(e){return!!["interpolate","step","literal"].includes(e[0])}(i)?["array","string"].includes(r)?[]:[new ze(t,i,`projection expected, invalid type "${r}" found`)]:[new ze(t,i,`projection expected, invalid array ${JSON.stringify(i)} found`)];var n},string:Vn,formatted:function(e){return 0===Vn(e).length?[]:An(e)},resolvedImage:function(e){return 0===Vn(e).length?[]:An(e)},padding:function(e){const t=e.key,i=e.value;if("array"===Zr(i)){if(i.length<1||i.length>4)return[new ze(t,i,`padding requires 1 to 4 values; ${i.length} values found`)];const r={type:"number"};let n=[];for(let s=0;s[]}})),e.constants&&(i=i.concat(Tn({key:"constants",value:e.constants}))),Qn(i)}function Jn(e){return function(t){return e(Object.assign({},t,{validateSpec:Xn}))}}function Qn(e){return[].concat(e).sort((e,t)=>e.line-t.line)}function es(e){return function(...t){return Qn(e.apply(this,t))}}Kn.source=es(Jn(Nn)),Kn.sprite=es(Jn(Zn)),Kn.glyphs=es(Jn(Yn)),Kn.light=es(Jn(Un)),Kn.sky=es(Jn(Gn)),Kn.terrain=es(Jn(qn)),Kn.state=es(Jn(Wn)),Kn.layer=es(Jn(On)),Kn.filter=es(Jn(kn)),Kn.paintProperty=es(Jn(Fn)),Kn.layoutProperty=es(Jn(Bn));const ts={type:"enum","property-type":"data-constant",expression:{interpolated:!1,parameters:["global-state"]},values:{visible:{},none:{}},transition:!1,default:"visible"};class is{constructor(e,t){this._globalState=t,this.setValue(e)}evaluate(){var e;return null!==(e=this._literalValue)&&void 0!==e?e:this._compiledValue.evaluate({})}setValue(e){if(null==e||"visible"===e||"none"===e)return this._literalValue="none"===e?"none":"visible",this._compiledValue=void 0,void(this._globalStateRefs=new Set);const t=rn(e,ts,this._globalState);if("error"===t.result)throw this._literalValue="visible",this._compiledValue=void 0,new Error(t.value.map(e=>`${e.key}: ${e.message}`).join(", "));this._literalValue=void 0,this._compiledValue=t.value,this._globalStateRefs=cn(t.value.expression)}getGlobalStateRefs(){return this._globalStateRefs}}const rs=ve,ns=Kn,ss=ns.light,os=ns.sky,as=ns.paintProperty,ls=ns.layoutProperty;function cs(e,t){let i=!1;if(t&&t.length)for(const r of t)e.fire(new ye(new Error(r.message))),i=!0;return i}class hs{constructor(e,t,i){const r=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;const n=new Int32Array(this.arrayBuffer);e=n[0],this.d=(t=n[1])+2*(i=n[2]);for(let e=0;e=c[l+0]&&r>=c[l+1])?(o[u]=!0,s.push(n[u])):o[u]=!1}}}}_forEachCell(e,t,i,r,n,s,o,a){const l=this._convertToCellCoord(e),c=this._convertToCellCoord(t),h=this._convertToCellCoord(i),u=this._convertToCellCoord(r);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++){const c=this.d*l+d;if((!a||a(this._convertFromCellCoord(d),this._convertFromCellCoord(l),this._convertFromCellCoord(d+1),this._convertFromCellCoord(l+1)))&&n.call(this,e,t,i,r,c,s,o,a))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;const e=this.cells,t=3+this.cells.length+1+1;let i=0;for(let s=0;s=0)continue;const s=e[r];n[r]=us[i].shallow.indexOf(r)>=0?s:_s(s,t)}e instanceof Error&&(n.message=e.message)}if(n.$name)throw new Error("$name property is reserved for worker serialization logic.");return"Object"!==i&&(n.$name=i),n}function gs(e){if(ms(e))return e;if(Array.isArray(e))return e.map(gs);if("object"!=typeof e)throw new Error("can't deserialize object of type "+typeof e);const t=fs(e)||"Object";if(!us[t])throw new Error(`can't deserialize unregistered class ${t}`);const{klass:i}=us[t];if(!i)throw new Error(`can't deserialize unregistered class ${t}`);if(i.deserialize)return i.deserialize(e);const r=Object.create(i.prototype);for(const n of Object.keys(e)){if("$name"===n)continue;const i=e[n];r[n]=us[t].shallow.indexOf(n)>=0?i:gs(i)}return r}class ys{constructor(){this.first=!0}update(e,t){const i=Math.floor(e);return this.first?(this.first=!1,this.lastIntegerZoom=i,this.lastIntegerZoomTime=0,this.lastZoom=e,this.lastFloorZoom=i,!0):(this.lastFloorZoom>i?(this.lastIntegerZoom=i+1,this.lastIntegerZoomTime=t):this.lastFloorZoom{try{return new RegExp(`\\p{sc=${e}}`,"u").source}catch(t){return null}}).filter(e=>e);return new RegExp(t.join("|"),"u")}const Ps=Ss(["Arab","Dupl","Mong","Ougr","Syrc"]);function Is(e){return!Ps.test(String.fromCodePoint(e))}function Ms(e){return!(vs(e)||(t=e,/[\xA7\xA9\xAE\xB1\xBC-\xBE\xD7\xF7\u2016\u2020\u2021\u2030\u2031\u203B\u203C\u2042\u2047-\u2049\u2051\u2100-\u218F\u221E\u2234\u2235\u2300-\u2307\u230C-\u231F\u2324-\u2328\u232B\u237D-\u239A\u23BE-\u23CD\u23CF\u23D1-\u23DB\u23E2-\u2422\u2424-\u24FF\u25A0-\u2619\u2620-\u2767\u2776-\u2793\u2B12-\u2B2F\u2B50-\u2B59\u2BB8-\u2BEB\u3000-\u303F\u30A0-\u30FF\uE000-\uF8FF\uFE30-\uFE6F\uFF00-\uFFEF\uFFFC\uFFFD]|[\uDB80-\uDBFF][\uDC00-\uDFFF]/gim.test(String.fromCodePoint(t))));var t}const Es=Ss(["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 Cs(e){return Es.test(String.fromCodePoint(e))}function As(e,t){return!(!t&&Cs(e)||/[\u0900-\u0DFF\u0F00-\u109F\u1780-\u17FF]/gim.test(String.fromCodePoint(e)))}function Ds(e){for(const t of e)if(Cs(t.codePointAt(0)))return!0;return!1}const zs=new class{constructor(){this.TIMEOUT=5e3,this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null,this.loadScriptResolve=()=>{}}setState(e){this.pluginStatus=e.pluginStatus,this.pluginURL=e.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(e){if(zs.isParsed())throw new Error("RTL text plugin already registered.");this.applyArabicShaping=e.applyArabicShaping,this.processBidirectionalText=e.processBidirectionalText,this.processStyledBidirectionalText=e.processStyledBidirectionalText,this.loadScriptResolve()}isParsed(){return null!=this.applyArabicShaping&&null!=this.processBidirectionalText&&null!=this.processStyledBidirectionalText}getRTLTextPluginStatus(){return this.pluginStatus}syncState(e,t){return i(this,void 0,void 0,function*(){if(this.isParsed())return this.getState();if("loading"!==e.pluginStatus)return this.setState(e),e;const i=e.pluginURL,r=new Promise(e=>{this.loadScriptResolve=e});t(i);const n=new Promise(e=>setTimeout(()=>e(),this.TIMEOUT));if(yield Promise.race([r,n]),this.isParsed()){const e={pluginStatus:"loaded",pluginURL:i};return this.setState(e),e}throw this.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${i}`)})}};class ks{constructor(e,t){this.isSupportedScript=Rs,this.zoom=e,t?(this.now=t.now||0,this.fadeDuration=t.fadeDuration||0,this.zoomHistory=t.zoomHistory||new ys,this.transition=t.transition||{}):(this.now=0,this.fadeDuration=0,this.zoomHistory=new ys,this.transition={})}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const e=this.zoom,t=e-Math.floor(e),i=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:t+(1-t)*i}:{fromScale:.5,toScale:1,t:1-(1-i)*t}}}function Rs(e){return function(e,t){for(const i of e)if(!As(i.codePointAt(0),t))return!1;return!0}(e,"loaded"===zs.getRTLTextPluginStatus())}const Ls="-transition";class Fs{constructor(e,t,i){this.property=e,this.value=t,this.expression=function(e,t,i){if($r(e))return new an(e,t);if(tn(e)){const r=on(e,t,i);if("error"===r.result)throw new Error(r.value.map(e=>`${e.key}: ${e.message}`).join(", "));return r.value}{let i=e;return"color"===t.type&&"string"==typeof e?i=Et.parse(e):"padding"!==t.type||"number"!=typeof e&&!Array.isArray(e)?"numberArray"!==t.type||"number"!=typeof e&&!Array.isArray(e)?"colorArray"!==t.type||"string"!=typeof e&&!Array.isArray(e)?"variableAnchorOffsetCollection"===t.type&&Array.isArray(e)?i=Ot.parse(e):"projectionDefinition"===t.type&&"string"==typeof e&&(i=jt.parse(e)):i=Lt.parse(e):i=Rt.parse(e):i=kt.parse(e),{globalStateRefs:new Set,_globalState:null,kind:"constant",evaluate:()=>i}}}(void 0===t?e.specification.default:t,e.specification,i)}isDataDriven(){return"source"===this.expression.kind||"composite"===this.expression.kind}getGlobalStateRefs(){return this.expression.globalStateRefs||new Set}possiblyEvaluate(e,t,i){return this.property.possiblyEvaluate(this,e,t,i)}}class Bs{constructor(e,t){this.property=e,this.value=new Fs(e,void 0,t)}transitioned(e,t){return new Vs(this.property,this.value,t,V({},e.transition,this.transition),e.now)}untransitioned(){return new Vs(this.property,this.value,null,{},0)}}class Os{constructor(e,t){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues),this._globalState=t}getValue(e){return G(this._values[e].value.value)}setValue(e,t){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new Bs(this._values[e].property,this._globalState)),this._values[e].value=new Fs(this._values[e].property,null===t?void 0:G(t),this._globalState)}getTransition(e){return G(this._values[e].transition)}setTransition(e,t){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new Bs(this._values[e].property,this._globalState)),this._values[e].transition=G(t)||void 0}serialize(){const e={};for(const t of Object.keys(this._values)){const i=this.getValue(t);void 0!==i&&(e[t]=i);const r=this.getTransition(t);void 0!==r&&(e[`${t}${Ls}`]=r)}return e}transitioned(e,t){const i=new js(this._properties);for(const r of Object.keys(this._values))i._values[r]=this._values[r].transitioned(e,t._values[r]);return i}untransitioned(){const e=new js(this._properties);for(const t of Object.keys(this._values))e._values[t]=this._values[t].untransitioned();return e}}class Vs{constructor(e,t,i,r,n){this.property=e,this.value=t,this.begin=n+r.delay||0,this.end=this.begin+r.duration||0,e.specification.transition&&(r.delay||r.duration)&&(this.prior=i)}possiblyEvaluate(e,t,i){const r=e.now||0,n=this.value.possiblyEvaluate(e,t,i),s=this.prior;if(s){if(r>this.end)return this.prior=null,n;if(this.value.isDataDriven())return this.prior=null,n;if(rr.zoomHistory.lastIntegerZoom?{from:e,to:t}:{from:i,to:t}}interpolate(e){return e}}class Ws{constructor(e){this.specification=e}possiblyEvaluate(e,t,i,r){if(void 0!==e.value){if("constant"===e.expression.kind){const n=e.expression.evaluate(t,null,{},i,r);return this._calculate(n,n,n,t)}return this._calculate(e.expression.evaluate(new ks(Math.floor(t.zoom-1),t)),e.expression.evaluate(new ks(Math.floor(t.zoom),t)),e.expression.evaluate(new ks(Math.floor(t.zoom+1),t)),t)}}_calculate(e,t,i,r){return r.zoom>r.zoomHistory.lastIntegerZoom?{from:e,to:t}:{from:i,to:t}}interpolate(e){return e}}class Hs{constructor(e){this.specification=e}possiblyEvaluate(e,t,i,r){return!!e.expression.evaluate(t,null,{},i,r)}interpolate(){return!1}}class Xs{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const t in e){const i=e[t];i.specification.overridable&&this.overridableProperties.push(t);const r=this.defaultPropertyValues[t]=new Fs(i,void 0,void 0),n=this.defaultTransitionablePropertyValues[t]=new Bs(i,void 0);this.defaultTransitioningPropertyValues[t]=n.untransitioned(),this.defaultPossiblyEvaluatedValues[t]=r.possiblyEvaluate({})}}}ds("DataDrivenProperty",Zs),ds("DataConstantProperty",qs),ds("CrossFadedDataDrivenProperty",$s),ds("CrossFadedProperty",Ws),ds("ColorRampProperty",Hs);class Ys extends xe{constructor(e,t,i){if(super(),this.id=e.id,this.type=e.type,this._globalState=i,this._featureFilter={filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set},"custom"!==e.type&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,this._visibilityExpression=(r=this.visibility,new is(r,i)),"background"!==e.type&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter,this._featureFilter=pn(e.filter,i)),t.layout&&(this._unevaluatedLayout=new Ns(t.layout,i)),t.paint)){this._transitionablePaint=new Os(t.paint,i);for(const t in e.paint)this.setPaintProperty(t,e.paint[t],{validate:!1});for(const t in e.layout)this.setLayoutProperty(t,e.layout[t],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Gs(t.paint)}var r}setFilter(e){this.filter=e,this._featureFilter=pn(e,this._globalState)}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){return"visibility"===e?this.visibility:this._unevaluatedLayout.getValue(e)}getLayoutAffectingGlobalStateRefs(){const e=new Set;for(const t of this._visibilityExpression.getGlobalStateRefs())e.add(t);if(this._unevaluatedLayout)for(const t in this._unevaluatedLayout._values){const i=this._unevaluatedLayout._values[t];for(const t of i.getGlobalStateRefs())e.add(t)}for(const t of this._featureFilter.getGlobalStateRefs())e.add(t);return e}getPaintAffectingGlobalStateRefs(){var e;const t=new globalThis.Map;if(this._transitionablePaint)for(const i in this._transitionablePaint._values){const r=this._transitionablePaint._values[i].value;for(const n of r.getGlobalStateRefs()){const s=null!==(e=t.get(n))&&void 0!==e?e:[];s.push({name:i,value:r.value}),t.set(n,s)}}return t}getVisibilityAffectingGlobalStateRefs(){return this._visibilityExpression.getGlobalStateRefs()}setLayoutProperty(e,t,i={}){if(null==t||!this._validate(ls,`layers.${this.id}.layout.${e}`,e,t,i))return"visibility"===e?(this.visibility=t,this._visibilityExpression.setValue(t),void this.recalculateVisibility()):void this._unevaluatedLayout.setValue(e,t)}getPaintProperty(e){return e.endsWith(Ls)?this._transitionablePaint.getTransition(e.slice(0,-11)):this._transitionablePaint.getValue(e)}setPaintProperty(e,t,i={}){if(null!=t&&this._validate(as,`layers.${this.id}.paint.${e}`,e,t,i))return!1;if(e.endsWith(Ls))return this._transitionablePaint.setTransition(e.slice(0,-11),t||void 0),!1;{const i=this._transitionablePaint._values[e],r="cross-faded-data-driven"===i.property.specification["property-type"],n=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(e,t),this._handleSpecialPaintPropertyUpdate(e);const o=this._transitionablePaint._values[e].value;return o.isDataDriven()||n||r||this._handleOverridablePaintPropertyUpdate(e,s,o)}}_handleSpecialPaintPropertyUpdate(e){}_handleOverridablePaintPropertyUpdate(e,t,i){return!1}isHidden(e=this.minzoom,t=!1){return!!(this.minzoom&&e<(t?Math.floor(this.minzoom):this.minzoom))||!!(this.maxzoom&&e>=this.maxzoom)||"none"===this._evaluatedVisibility}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculateVisibility(){this._evaluatedVisibility=this._visibilityExpression.evaluate()}recalculate(e,t){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,t)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,t)}serialize(){const e={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(e.layout=e.layout||{},e.layout.visibility=this.visibility),U(e,(e,t)=>!(void 0===e||"layout"===t&&!Object.keys(e).length||"paint"===t&&!Object.keys(e).length))}_validate(e,t,i,r,n={}){return(!n||!1!==n.validate)&&cs(this,e.call(ns,{key:t,layerType:this.type,objectKey:i,value:r,styleSpec:ve,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const e in this.paint._values){const t=this.paint.get(e);if(t instanceof Us&&Ur(t.property.specification)&&("source"===t.value.kind||"composite"===t.value.kind)&&t.value.isStateDependent)return!0}return!1}}let Ks;var Js={get paint(){return Ks=Ks||new Xs({"raster-opacity":new qs(ve.paint_raster["raster-opacity"]),"raster-hue-rotate":new qs(ve.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new qs(ve.paint_raster["raster-brightness-min"]),"raster-brightness-max":new qs(ve.paint_raster["raster-brightness-max"]),"raster-saturation":new qs(ve.paint_raster["raster-saturation"]),"raster-contrast":new qs(ve.paint_raster["raster-contrast"]),"raster-resampling":new qs(ve.paint_raster["raster-resampling"]),"raster-fade-duration":new qs(ve.paint_raster["raster-fade-duration"])})}};class Qs extends Ys{constructor(e,t){super(e,Js,t)}}const eo={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class to{constructor(e,t){this._structArray=e,this._pos1=t*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class io{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,t){return e._trim(),t&&(e.isTransferred=!0,t.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){const t=Object.create(this.prototype);return t.arrayBuffer=e.arrayBuffer,t.length=e.length,t.capacity=e.arrayBuffer.byteLength/t.bytesPerElement,t._refreshViews(),t}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(e){this.reserve(e),this.length=e}reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const t=this.uint8;this._refreshViews(),t&&this.uint8.set(t)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function ro(e,t=1){let i=0,r=0;return{members:e.map(e=>{const n=eo[e.type].BYTES_PER_ELEMENT,s=i=no(i,Math.max(t,n)),o=e.components||1;return r=Math.max(r,n),i+=n*o,{name:e.name,type:e.type,components:o,offset:s}}),size:no(i,Math.max(r,t)),alignment:t}}function no(e,t){return Math.ceil(e/t)*t}class so extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.int16[r+0]=t,this.int16[r+1]=i,e}}so.prototype.bytesPerElement=4,ds("StructArrayLayout2i4",so);class oo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.int16[n+0]=t,this.int16[n+1]=i,this.int16[n+2]=r,e}}oo.prototype.bytesPerElement=6,ds("StructArrayLayout3i6",oo);class ao extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const s=4*e;return this.int16[s+0]=t,this.int16[s+1]=i,this.int16[s+2]=r,this.int16[s+3]=n,e}}ao.prototype.bytesPerElement=8,ds("StructArrayLayout4i8",ao);class lo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n,s)}emplace(e,t,i,r,n,s,o){const a=6*e;return this.int16[a+0]=t,this.int16[a+1]=i,this.int16[a+2]=r,this.int16[a+3]=n,this.int16[a+4]=s,this.int16[a+5]=o,e}}lo.prototype.bytesPerElement=12,ds("StructArrayLayout2i4i12",lo);class co extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n,s)}emplace(e,t,i,r,n,s,o){const a=4*e,l=8*e;return this.int16[a+0]=t,this.int16[a+1]=i,this.uint8[l+4]=r,this.uint8[l+5]=n,this.uint8[l+6]=s,this.uint8[l+7]=o,e}}co.prototype.bytesPerElement=8,ds("StructArrayLayout2i4ub8",co);class ho extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.float32[r+0]=t,this.float32[r+1]=i,e}}ho.prototype.bytesPerElement=8,ds("StructArrayLayout2f8",ho);class uo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s,o,a,l,c){const h=this.length;return this.resize(h+1),this.emplace(h,e,t,i,r,n,s,o,a,l,c)}emplace(e,t,i,r,n,s,o,a,l,c,h){const u=10*e;return this.uint16[u+0]=t,this.uint16[u+1]=i,this.uint16[u+2]=r,this.uint16[u+3]=n,this.uint16[u+4]=s,this.uint16[u+5]=o,this.uint16[u+6]=a,this.uint16[u+7]=l,this.uint16[u+8]=c,this.uint16[u+9]=h,e}}uo.prototype.bytesPerElement=20,ds("StructArrayLayout10ui20",uo);class po extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s,o,a){const l=this.length;return this.resize(l+1),this.emplace(l,e,t,i,r,n,s,o,a)}emplace(e,t,i,r,n,s,o,a,l){const c=8*e;return this.uint16[c+0]=t,this.uint16[c+1]=i,this.uint16[c+2]=r,this.uint16[c+3]=n,this.uint16[c+4]=s,this.uint16[c+5]=o,this.uint16[c+6]=a,this.uint16[c+7]=l,e}}po.prototype.bytesPerElement=16,ds("StructArrayLayout8ui16",po);class fo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s,o,a,l,c,h,u){const d=this.length;return this.resize(d+1),this.emplace(d,e,t,i,r,n,s,o,a,l,c,h,u)}emplace(e,t,i,r,n,s,o,a,l,c,h,u,d){const p=12*e;return this.int16[p+0]=t,this.int16[p+1]=i,this.int16[p+2]=r,this.int16[p+3]=n,this.uint16[p+4]=s,this.uint16[p+5]=o,this.uint16[p+6]=a,this.uint16[p+7]=l,this.int16[p+8]=c,this.int16[p+9]=h,this.int16[p+10]=u,this.int16[p+11]=d,e}}fo.prototype.bytesPerElement=24,ds("StructArrayLayout4i4ui4i24",fo);class mo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.float32[n+0]=t,this.float32[n+1]=i,this.float32[n+2]=r,e}}mo.prototype.bytesPerElement=12,ds("StructArrayLayout3f12",mo);class _o extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.uint32[1*e+0]=t,e}}_o.prototype.bytesPerElement=4,ds("StructArrayLayout1ul4",_o);class go extends io{_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,t,i,r,n,s,o,a,l){const c=this.length;return this.resize(c+1),this.emplace(c,e,t,i,r,n,s,o,a,l)}emplace(e,t,i,r,n,s,o,a,l,c){const h=10*e,u=5*e;return this.int16[h+0]=t,this.int16[h+1]=i,this.int16[h+2]=r,this.int16[h+3]=n,this.int16[h+4]=s,this.int16[h+5]=o,this.uint32[u+3]=a,this.uint16[h+8]=l,this.uint16[h+9]=c,e}}go.prototype.bytesPerElement=20,ds("StructArrayLayout6i1ul2ui20",go);class yo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n,s)}emplace(e,t,i,r,n,s,o){const a=6*e;return this.int16[a+0]=t,this.int16[a+1]=i,this.int16[a+2]=r,this.int16[a+3]=n,this.int16[a+4]=s,this.int16[a+5]=o,e}}yo.prototype.bytesPerElement=12,ds("StructArrayLayout2i2i2i12",yo);class xo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n){const s=this.length;return this.resize(s+1),this.emplace(s,e,t,i,r,n)}emplace(e,t,i,r,n,s){const o=4*e,a=8*e;return this.float32[o+0]=t,this.float32[o+1]=i,this.float32[o+2]=r,this.int16[a+6]=n,this.int16[a+7]=s,e}}xo.prototype.bytesPerElement=16,ds("StructArrayLayout2f1f2i16",xo);class vo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,i,r,n,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,t,i,r,n,s)}emplace(e,t,i,r,n,s,o){const a=16*e,l=4*e,c=8*e;return this.uint8[a+0]=t,this.uint8[a+1]=i,this.float32[l+1]=r,this.float32[l+2]=n,this.int16[c+6]=s,this.int16[c+7]=o,e}}vo.prototype.bytesPerElement=16,ds("StructArrayLayout2ub2f2i16",vo);class bo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.uint16[n+0]=t,this.uint16[n+1]=i,this.uint16[n+2]=r,e}}bo.prototype.bytesPerElement=6,ds("StructArrayLayout3ui6",bo);class wo extends io{_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,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_){const g=this.length;return this.resize(g+1),this.emplace(g,e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_)}emplace(e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g){const y=24*e,x=12*e,v=48*e;return this.int16[y+0]=t,this.int16[y+1]=i,this.uint16[y+2]=r,this.uint16[y+3]=n,this.uint32[x+2]=s,this.uint32[x+3]=o,this.uint32[x+4]=a,this.uint16[y+10]=l,this.uint16[y+11]=c,this.uint16[y+12]=h,this.float32[x+7]=u,this.float32[x+8]=d,this.uint8[v+36]=p,this.uint8[v+37]=f,this.uint8[v+38]=m,this.uint32[x+10]=_,this.int16[y+22]=g,e}}wo.prototype.bytesPerElement=48,ds("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",wo);class To extends io{_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,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,S,P,I,M){const E=this.length;return this.resize(E+1),this.emplace(E,e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,S,P,I,M)}emplace(e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,S,P,I,M,E){const C=32*e,A=16*e;return this.int16[C+0]=t,this.int16[C+1]=i,this.int16[C+2]=r,this.int16[C+3]=n,this.int16[C+4]=s,this.int16[C+5]=o,this.int16[C+6]=a,this.int16[C+7]=l,this.uint16[C+8]=c,this.uint16[C+9]=h,this.uint16[C+10]=u,this.uint16[C+11]=d,this.uint16[C+12]=p,this.uint16[C+13]=f,this.uint16[C+14]=m,this.uint16[C+15]=_,this.uint16[C+16]=g,this.uint16[C+17]=y,this.uint16[C+18]=x,this.uint16[C+19]=v,this.uint16[C+20]=b,this.uint16[C+21]=w,this.uint16[C+22]=T,this.uint32[A+12]=S,this.float32[A+13]=P,this.float32[A+14]=I,this.uint16[C+30]=M,this.uint16[C+31]=E,e}}To.prototype.bytesPerElement=64,ds("StructArrayLayout8i15ui1ul2f2ui64",To);class So extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.float32[1*e+0]=t,e}}So.prototype.bytesPerElement=4,ds("StructArrayLayout1f4",So);class Po extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=3*e;return this.uint16[6*e+0]=t,this.float32[n+1]=i,this.float32[n+2]=r,e}}Po.prototype.bytesPerElement=12,ds("StructArrayLayout1ui2f12",Po);class Io extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,i){const r=this.length;return this.resize(r+1),this.emplace(r,e,t,i)}emplace(e,t,i,r){const n=4*e;return this.uint32[2*e+0]=t,this.uint16[n+2]=i,this.uint16[n+3]=r,e}}Io.prototype.bytesPerElement=8,ds("StructArrayLayout1ul2ui8",Io);class Mo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t){const i=this.length;return this.resize(i+1),this.emplace(i,e,t)}emplace(e,t,i){const r=2*e;return this.uint16[r+0]=t,this.uint16[r+1]=i,e}}Mo.prototype.bytesPerElement=4,ds("StructArrayLayout2ui4",Mo);class Eo extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){return this.uint16[1*e+0]=t,e}}Eo.prototype.bytesPerElement=2,ds("StructArrayLayout1ui2",Eo);class Co extends io{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,i,r){const n=this.length;return this.resize(n+1),this.emplace(n,e,t,i,r)}emplace(e,t,i,r,n){const s=4*e;return this.float32[s+0]=t,this.float32[s+1]=i,this.float32[s+2]=r,this.float32[s+3]=n,e}}Co.prototype.bytesPerElement=16,ds("StructArrayLayout4f16",Co);class Ao extends to{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 r(this.anchorPointX,this.anchorPointY)}}Ao.prototype.size=20;class Do extends go{get(e){return new Ao(this,e)}}ds("CollisionBoxArray",Do);class zo extends to{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]}}zo.prototype.size=48;class ko extends wo{get(e){return new zo(this,e)}}ds("PlacedSymbolArray",ko);class Ro extends to{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]}}Ro.prototype.size=64;class Lo extends To{get(e){return new Ro(this,e)}}ds("SymbolInstanceArray",Lo);class Fo extends So{getoffsetX(e){return this.float32[1*e+0]}}ds("GlyphOffsetArray",Fo);class Bo extends oo{getx(e){return this.int16[3*e+0]}gety(e){return this.int16[3*e+1]}gettileUnitDistanceFromAnchor(e){return this.int16[3*e+2]}}ds("SymbolLineVertexArray",Bo);class Oo extends to{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]}}Oo.prototype.size=12;class Vo extends Po{get(e){return new Oo(this,e)}}ds("TextAnchorOffsetArray",Vo);class jo extends to{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]}}jo.prototype.size=8;class No extends Io{get(e){return new jo(this,e)}}ds("FeatureIndexArray",No);class Uo extends so{}class Go extends so{}class qo extends so{}class Zo extends lo{}class $o extends co{}class Wo extends ho{}class Ho extends uo{}class Xo extends po{}class Yo extends fo{}class Ko extends mo{}class Jo extends _o{}class Qo extends yo{}class ea extends vo{}class ta extends bo{}class ia extends Mo{}const ra=ro([{name:"a_pos",components:2,type:"Int16"}],4),{members:na}=ra;class sa{constructor(e=[]){this._forceNewSegmentOnNextPrepare=!1,this.segments=e}prepareSegment(e,t,i,r){const n=this.segments[this.segments.length-1];return e>sa.MAX_VERTEX_ARRAY_LENGTH&&Z(`Max vertices per segment is ${sa.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}. Consider using the \`fillLargeMeshArrays\` function if you require meshes with more than ${sa.MAX_VERTEX_ARRAY_LENGTH} vertices.`),this._forceNewSegmentOnNextPrepare||!n||n.vertexLength+e>sa.MAX_VERTEX_ARRAY_LENGTH||n.sortKey!==r?this.createNewSegment(t,i,r):n}createNewSegment(e,t,i){const r={vertexOffset:e.length,primitiveOffset:t.length,vertexLength:0,primitiveLength:0,vaos:{}};return void 0!==i&&(r.sortKey=i),this._forceNewSegmentOnNextPrepare=!1,this.segments.push(r),r}getOrCreateLatestSegment(e,t,i){return this.prepareSegment(0,e,t,i)}forceNewSegmentOnNextPrepare(){this._forceNewSegmentOnNextPrepare=!0}get(){return this.segments}destroy(){for(const e of this.segments)for(const t in e.vaos)e.vaos[t].destroy()}static simpleSegment(e,t,i,r){return new sa([{vertexOffset:e,primitiveOffset:t,vertexLength:i,primitiveLength:r,vaos:{},sortKey:0}])}}function oa(e,t){return 256*(e=B(Math.floor(e),0,255))+B(Math.floor(t),0,255)}sa.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,ds("SegmentVector",sa);const aa=ro([{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"}]),la=ro([{name:"a_dasharray_from",components:4,type:"Uint16"},{name:"a_dasharray_to",components:4,type:"Uint16"}]);var ca,ha,ua,da={exports:{}},pa={exports:{}},fa={exports:{}},ma=function(){if(ua)return da.exports;ua=1;var e=(ca||(ca=1,pa.exports=function(e,t){var i,r,n,s,o,a,l,c;for(r=e.length-(i=3&e.length),n=t,o=3432918353,a=461845907,c=0;c>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<13|n>>>19))+((5*(n>>>16)&65535)<<16)&4294967295))+((58964+(s>>>16)&65535)<<16);switch(l=0,i){case 3:l^=(255&e.charCodeAt(c+2))<<16;case 2:l^=(255&e.charCodeAt(c+1))<<8;case 1:n^=l=(65535&(l=(l=(65535&(l^=255&e.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*a+(((l>>>16)*a&65535)<<16)&4294967295}return n^=e.length,n=2246822507*(65535&(n^=n>>>16))+((2246822507*(n>>>16)&65535)<<16)&4294967295,n=3266489909*(65535&(n^=n>>>13))+((3266489909*(n>>>16)&65535)<<16)&4294967295,(n^=n>>>16)>>>0}),pa.exports),t=(ha||(ha=1,fa.exports=function(e,t){for(var i,r=e.length,n=t^r,s=0;r>=4;)i=1540483477*(65535&(i=255&e.charCodeAt(s)|(255&e.charCodeAt(++s))<<8|(255&e.charCodeAt(++s))<<16|(255&e.charCodeAt(++s))<<24))+((1540483477*(i>>>16)&65535)<<16),n=1540483477*(65535&n)+((1540483477*(n>>>16)&65535)<<16)^(i=1540483477*(65535&(i^=i>>>24))+((1540483477*(i>>>16)&65535)<<16)),r-=4,++s;switch(r){case 3:n^=(255&e.charCodeAt(s+2))<<16;case 2:n^=(255&e.charCodeAt(s+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(s)))+((1540483477*(n>>>16)&65535)<<16)}return n=1540483477*(65535&(n^=n>>>13))+((1540483477*(n>>>16)&65535)<<16),(n^=n>>>15)>>>0}),fa.exports);return da.exports=e,da.exports.murmur3=e,da.exports.murmur2=t,da.exports}(),_a=n(ma);class ga{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,t,i,r){this.ids.push(ya(e)),this.positions.push(t,i,r)}getPositions(e){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const t=ya(e);let i=0,r=this.ids.length-1;for(;i>1;this.ids[e]>=t?r=e:i=e+1}const n=[];for(;this.ids[i]===t;)n.push({index:this.positions[3*i],start:this.positions[3*i+1],end:this.positions[3*i+2]}),i++;return n}static serialize(e,t){const i=new Float64Array(e.ids),r=new Uint32Array(e.positions);return xa(i,r,0,i.length-1),t&&t.push(i.buffer,r.buffer),{ids:i,positions:r}}static deserialize(e){const t=new ga;return t.ids=e.ids,t.positions=e.positions,t.indexed=!0,t}}function ya(e){const t=+e;return!isNaN(t)&&t<=Number.MAX_SAFE_INTEGER?t:_a(String(e))}function xa(e,t,i,r){for(;i>1];let s=i-1,o=r+1;for(;;){do{s++}while(e[s]n);if(s>=o)break;va(e,s,o),va(t,3*s,3*o),va(t,3*s+1,3*o+1),va(t,3*s+2,3*o+2)}o-i`u_${e}`),this.type=i}setUniform(e,t,i){e.set(i.constantOr(this.value))}getBinding(e,t,i){return"color"===this.type?new Sa(e,t):new wa(e,t)}}class Ea{constructor(e,t){this.uniformNames=t.map(e=>`u_${e}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,t){this.pixelRatioFrom=t.pixelRatio,this.pixelRatioTo=e.pixelRatio,this.patternFrom=t.tlbr,this.patternTo=e.tlbr}setConstantDashPositions(e,t){this.dashTo=[0,e.y,e.height,e.width],this.dashFrom=[0,t.y,t.height,t.width]}setUniform(e,t,i,r){let n=null;"u_pattern_to"===r?n=this.patternTo:"u_pattern_from"===r?n=this.patternFrom:"u_dasharray_to"===r?n=this.dashTo:"u_dasharray_from"===r?n=this.dashFrom:"u_pixel_ratio_to"===r?n=this.pixelRatioTo:"u_pixel_ratio_from"===r&&(n=this.pixelRatioFrom),null!==n&&e.set(n)}getBinding(e,t,i){return"u_pattern"===i.substr(0,9)||"u_dasharray_"===i.substr(0,12)?new Ta(e,t):new wa(e,t)}}class Ca{constructor(e,t,i,r){this.expression=e,this.type=i,this.maxValue=0,this.paintVertexAttributes=t.map(e=>({name:`a_${e}`,type:"Float32",components:"color"===i?2:1,offset:0})),this.paintVertexArray=new r}populatePaintArray(e,t,i){const r=this.paintVertexArray.length,n=this.expression.evaluate(new ks(0,i),t,{},i.canonical,[],i.formattedSection);this.paintVertexArray.resize(e),this._setPaintValue(r,e,n)}updatePaintArray(e,t,i,r,n){const s=this.expression.evaluate(new ks(0,n),i,r);this._setPaintValue(e,t,s)}_setPaintValue(e,t,i){if("color"===this.type){const r=Ia(i);for(let i=e;i`u_${e}_t`),this.type=i,this.useIntegerZoom=r,this.zoom=n,this.maxValue=0,this.paintVertexAttributes=t.map(e=>({name:`a_${e}`,type:"Float32",components:"color"===i?4:2,offset:0})),this.paintVertexArray=new s}populatePaintArray(e,t,i){const r=this.expression.evaluate(new ks(this.zoom,i),t,{},i.canonical,[],i.formattedSection),n=this.expression.evaluate(new ks(this.zoom+1,i),t,{},i.canonical,[],i.formattedSection),s=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(s,e,r,n)}updatePaintArray(e,t,i,r,n){const s=this.expression.evaluate(new ks(this.zoom,n),i,r),o=this.expression.evaluate(new ks(this.zoom+1,n),i,r);this._setPaintValue(e,t,s,o)}_setPaintValue(e,t,i,r){if("color"===this.type){const n=Ia(i),s=Ia(r);for(let i=e;i`#define HAS_UNIFORM_${e}`))}return e}getBinderAttributes(){const e=[];for(const t in this.binders){const i=this.binders[t];if(i instanceof Ca||i instanceof Aa)for(let t=0;t!0){this.programConfigurations={};for(const r of e)this.programConfigurations[r.id]=new Ra(r,t,i);this.needsUpload=!1,this._featureMap=new ga,this._bufferOffset=0}populatePaintArrays(e,t,i,r){for(const n in this.programConfigurations)this.programConfigurations[n].populatePaintArrays(e,t,r);void 0!==t.id&&this._featureMap.add(t.id,i,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,t,i,r){for(const n of i)this.needsUpload=this.programConfigurations[n.id].updatePaintArrays(e,this._featureMap,t,n,r)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const t in this.programConfigurations)this.programConfigurations[t].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}function Fa(e,t){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-dasharray":["dasharray_to","dasharray_from"],"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"]}[e]||[e.replace(`${t}-`,"").replace(/-/g,"_")]}function Ba(e,t,i){const r={color:{source:ho,composite:Co},number:{source:So,composite:ho}},n={"line-pattern":{source:Ho,composite:Ho},"fill-pattern":{source:Ho,composite:Ho},"fill-extrusion-pattern":{source:Ho,composite:Ho},"line-dasharray":{source:Xo,composite:Xo}}[e];return n&&n[i]||r[t][i]}ds("ConstantBinder",Ma),ds("CrossFadedConstantBinder",Ea),ds("SourceExpressionBinder",Ca),ds("CrossFadedPatternBinder",za),ds("CrossFadedDasharrayBinder",ka),ds("CompositeExpressionBinder",Aa),ds("ProgramConfiguration",Ra,{omit:["_buffers"]}),ds("ProgramConfigurationSet",La);const Oa=Math.pow(2,14)-1,Va=-Oa-1;function ja(e){const t=A/e.extent,i=e.loadGeometry();for(let r=0;rr.x+1||sr.y+1)&&Z("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return i}function Na(e,t){return{type:e.type,id:e.id,properties:e.properties,geometry:t?ja(e):[]}}const Ua=-32768;function Ga(e,t,i,r,n){e.emplaceBack(Ua+8*t+r,Ua+8*i+n)}class qa{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new Go,this.indexArray=new ta,this.segments=new sa,this.programConfigurations=new La(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,i){const r=this.layers[0],n=[];let s=null,o=!1,a="heatmap"===r.type;if("circle"===r.type){const e=r;s=e.layout.get("circle-sort-key"),o=!s.isConstant(),a=a||"map"===e.paint.get("circle-pitch-alignment")}const l=a?t.subdivisionGranularity.circle:1;for(const{feature:c,id:h,index:u,sourceLayerIndex:d}of e){const e=this.layers[0]._featureFilter.needGeometry,t=Na(c,e);if(!this.layers[0]._featureFilter.filter(new ks(this.zoom),t,i))continue;const r=o?s.evaluate(t,{},i):void 0,a={id:h,properties:c.properties,type:c.type,sourceLayerIndex:d,index:u,geometry:e?t.geometry:ja(c),patterns:{},sortKey:r};n.push(a)}o&&n.sort((e,t)=>e.sortKey-t.sortKey);for(const c of n){const{geometry:r,index:n,sourceLayerIndex:s}=c,o=e[n].feature;this.addFeature(c,r,n,i,l),t.featureIndex.insert(o,r,n,s,this.index)}}update(e,t,i){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:i})}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,na),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,t,i,r,n=1){let s;switch(n){case 1:s=[0,7];break;case 3:s=[0,2,5,7];break;case 5:s=[0,1,3,4,6,7];break;case 7:s=[0,1,2,3,4,5,6,7];break;default:throw new Error(`Invalid circle bucket granularity: ${n}; valid values are 1, 3, 5, 7.`)}const o=s.length;for(const a of t)for(const t of a){const i=t.x,r=t.y;if(i<0||i>=A||r<0||r>=A)continue;const n=this.segments.prepareSegment(o*o,this.layoutVertexArray,this.indexArray,e.sortKey),a=n.vertexLength;for(let e=0;e1){if(Xa(e,t))return!0;for(let r=0;r1?i:i.sub(t)._mult(n)._add(t))}function Qa(e,t){let i,r,n,s=!1;for(let o=0;ot.y!=n.y>t.y&&t.x<(n.x-r.x)*(t.y-r.y)/(n.y-r.y)+r.x&&(s=!s)}return s}function el(e,t){let i=!1;for(let r=0,n=e.length-1;rt.y!=o.y>t.y&&t.x<(o.x-s.x)*(t.y-s.y)/(o.y-s.y)+s.x&&(i=!i)}return i}function tl(e,t,i){const r=i[0],n=i[2];if(e.xn.x&&t.x>n.x||e.yn.y&&t.y>n.y)return!1;const s=$(e,t,i[0]);return s!==$(e,t,i[1])||s!==$(e,t,i[2])||s!==$(e,t,i[3])}function il(e,t,i){const r=t.paint.get(e).value;return"constant"===r.kind?r.value:i.programConfigurations.get(t.id).getMaxValue(e)}function rl(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])}function nl(e,t,i,n,s){if(!t[0]&&!t[1])return e;const o=r.convert(t)._mult(s);"viewport"===i&&o._rotate(-n);const a=[];for(let r=0;rul(e,f,m,_)),p=c),hl({queryGeometry:d,size:p,transform:n,unwrappedTileID:o,getElevation:a,pitchAlignment:u,pitchScale:h},r);var f,m,_}}class _l extends qa{}let gl;ds("HeatmapBucket",_l,{omit:["layers"]});var yl={get paint(){return gl=gl||new Xs({"heatmap-radius":new Zs(ve.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Zs(ve.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new qs(ve.paint_heatmap["heatmap-intensity"]),"heatmap-color":new Hs(ve.paint_heatmap["heatmap-color"]),"heatmap-opacity":new qs(ve.paint_heatmap["heatmap-opacity"])})}};function xl(e,{width:t,height:i},r,n){if(n){if(n instanceof Uint8ClampedArray)n=new Uint8Array(n.buffer);else if(n.length!==t*i*r)throw new RangeError(`mismatched image size. expected: ${n.length} but got: ${t*i*r}`)}else n=new Uint8Array(t*i*r);return e.width=t,e.height=i,e.data=n,e}function vl(e,{width:t,height:i},r){if(t===e.width&&i===e.height)return;const n=xl({},{width:t,height:i},r);bl(e,n,{x:0,y:0},{x:0,y:0},{width:Math.min(e.width,t),height:Math.min(e.height,i)},r),e.width=t,e.height=i,e.data=n.data}function bl(e,t,i,r,n,s){if(0===n.width||0===n.height)return t;if(n.width>e.width||n.height>e.height||i.x>e.width-n.width||i.y>e.height-n.height)throw new RangeError("out of range source coordinates for image copy");if(n.width>t.width||n.height>t.height||r.x>t.width-n.width||r.y>t.height-n.height)throw new RangeError("out of range destination coordinates for image copy");const o=e.data,a=t.data;if(o===a)throw new Error("srcData equals dstData, so image is already copied");for(let l=0;l{t[e.evaluationKey]=o;const a=e.expression.evaluate(t);n.setPixel(r/4/i,s/4,a)};if(e.clips)for(let o=0,a=0;othis.max&&(this.max=t),t=this.dim+1||t<-1||t>=this.dim+1)throw new RangeError(`Out of range source coordinates for DEM data. x: ${e}, y: ${t}, dim: ${this.dim}`);return(t+1)*this.stride+(e+1)}unpack(e,t,i){return e*this.redFactor+t*this.greenFactor+i*this.blueFactor-this.baseShift}pack(e){return Rl(e,this.getUnpackVector())}getPixels(){return new Tl({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(e,t,i){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let r=t*this.dim,n=t*this.dim+this.dim,s=i*this.dim,o=i*this.dim+this.dim;switch(t){case-1:r=n-1;break;case 1:n=r+1}switch(i){case-1:s=o-1;break;case 1:o=s+1}const a=-t*this.dim,l=-i*this.dim;for(let c=s;c0)for(let o=t;o=t;o-=r)s=lc(o/r|0,e[o],e[o+1],s);return s&&ic(s,s.next)&&(cc(s),s=s.next),s}function Nl(e,t){if(!e)return e;t||(t=e);let i,r=e;do{if(i=!1,r.steiner||!ic(r,r.next)&&0!==tc(r.prev,r,r.next))r=r.next;else{if(cc(r),r=t=r.prev,r===r.next)break;i=!0}}while(i||r!==t);return t}function Ul(e,t,i,r,n,s,o){if(!e)return;!o&&s&&function(e,t,i,r){let n=e;do{0===n.z&&(n.z=Yl(n.x,n.y,t,i,r)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,function(e){let t,i=1;do{let r,n=e;e=null;let s=null;for(t=0;n;){t++;let o=n,a=0;for(let e=0;e0||l>0&&o;)0!==a&&(0===l||!o||n.z<=o.z)?(r=n,n=n.nextZ,a--):(r=o,o=o.nextZ,l--),s?s.nextZ=r:e=r,r.prevZ=s,s=r;n=o}s.nextZ=null,i*=2}while(t>1)}(n)}(e,r,n,s);let a=e;for(;e.prev!==e.next;){const l=e.prev,c=e.next;if(s?ql(e,r,n,s):Gl(e))t.push(l.i,e.i,c.i),cc(e),e=c.next,a=c.next;else if((e=c)===a){o?1===o?Ul(e=Zl(Nl(e),t),t,i,r,n,s,2):2===o&&$l(e,t,i,r,n,s):Ul(Nl(e),t,i,r,n,s,1);break}}}function Gl(e){const t=e.prev,i=e,r=e.next;if(tc(t,i,r)>=0)return!1;const n=t.x,s=i.x,o=r.x,a=t.y,l=i.y,c=r.y,h=Math.min(n,s,o),u=Math.min(a,l,c),d=Math.max(n,s,o),p=Math.max(a,l,c);let f=r.next;for(;f!==t;){if(f.x>=h&&f.x<=d&&f.y>=u&&f.y<=p&&Ql(n,a,s,l,o,c,f.x,f.y)&&tc(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function ql(e,t,i,r){const n=e.prev,s=e,o=e.next;if(tc(n,s,o)>=0)return!1;const a=n.x,l=s.x,c=o.x,h=n.y,u=s.y,d=o.y,p=Math.min(a,l,c),f=Math.min(h,u,d),m=Math.max(a,l,c),_=Math.max(h,u,d),g=Yl(p,f,t,i,r),y=Yl(m,_,t,i,r);let x=e.prevZ,v=e.nextZ;for(;x&&x.z>=g&&v&&v.z<=y;){if(x.x>=p&&x.x<=m&&x.y>=f&&x.y<=_&&x!==n&&x!==o&&Ql(a,h,l,u,c,d,x.x,x.y)&&tc(x.prev,x,x.next)>=0)return!1;if(x=x.prevZ,v.x>=p&&v.x<=m&&v.y>=f&&v.y<=_&&v!==n&&v!==o&&Ql(a,h,l,u,c,d,v.x,v.y)&&tc(v.prev,v,v.next)>=0)return!1;v=v.nextZ}for(;x&&x.z>=g;){if(x.x>=p&&x.x<=m&&x.y>=f&&x.y<=_&&x!==n&&x!==o&&Ql(a,h,l,u,c,d,x.x,x.y)&&tc(x.prev,x,x.next)>=0)return!1;x=x.prevZ}for(;v&&v.z<=y;){if(v.x>=p&&v.x<=m&&v.y>=f&&v.y<=_&&v!==n&&v!==o&&Ql(a,h,l,u,c,d,v.x,v.y)&&tc(v.prev,v,v.next)>=0)return!1;v=v.nextZ}return!0}function Zl(e,t){let i=e;do{const r=i.prev,n=i.next.next;!ic(r,n)&&rc(r,i,i.next,n)&&oc(r,n)&&oc(n,r)&&(t.push(r.i,i.i,n.i),cc(i),cc(i.next),i=e=n),i=i.next}while(i!==e);return Nl(i)}function $l(e,t,i,r,n,s){let o=e;do{let e=o.next.next;for(;e!==o.prev;){if(o.i!==e.i&&ec(o,e)){let a=ac(o,e);return o=Nl(o,o.next),a=Nl(a,a.next),Ul(o,t,i,r,n,s,0),void Ul(a,t,i,r,n,s,0)}e=e.next}o=o.next}while(o!==e)}function Wl(e,t){let i=e.x-t.x;return 0===i&&(i=e.y-t.y,0===i)&&(i=(e.next.y-e.y)/(e.next.x-e.x)-(t.next.y-t.y)/(t.next.x-t.x)),i}function Hl(e,t){const i=function(e,t){let i=t;const r=e.x,n=e.y;let s,o=-1/0;if(ic(e,i))return i;do{if(ic(e,i.next))return i.next;if(n<=i.y&&n>=i.next.y&&i.next.y!==i.y){const e=i.x+(n-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(e<=r&&e>o&&(o=e,s=i.x=i.x&&i.x>=l&&r!==i.x&&Jl(ns.x||i.x===s.x&&Xl(s,i)))&&(s=i,h=t)}i=i.next}while(i!==a);return s}(e,t);if(!i)return t;const r=ac(i,e);return Nl(r,r.next),Nl(i,i.next)}function Xl(e,t){return tc(e.prev,e,t.prev)<0&&tc(t.next,e,e.next)<0}function Yl(e,t,i,r,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*n|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*n|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function Kl(e){let t=e,i=e;do{(t.x=(e-o)*(s-a)&&(e-o)*(r-a)>=(i-o)*(t-a)&&(i-o)*(s-a)>=(n-o)*(r-a)}function Ql(e,t,i,r,n,s,o,a){return!(e===o&&t===a)&&Jl(e,t,i,r,n,s,o,a)}function ec(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){let i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&rc(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}(e,t)&&(oc(e,t)&&oc(t,e)&&function(e,t){let i=e,r=!1;const n=(e.x+t.x)/2,s=(e.y+t.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&n<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next}while(i!==e);return r}(e,t)&&(tc(e.prev,e,t.prev)||tc(e,t.prev,t))||ic(e,t)&&tc(e.prev,e,e.next)>0&&tc(t.prev,t,t.next)>0)}function tc(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function ic(e,t){return e.x===t.x&&e.y===t.y}function rc(e,t,i,r){const n=sc(tc(e,t,i)),s=sc(tc(e,t,r)),o=sc(tc(i,r,e)),a=sc(tc(i,r,t));return n!==s&&o!==a||!(0!==n||!nc(e,i,t))||!(0!==s||!nc(e,r,t))||!(0!==o||!nc(i,e,r))||!(0!==a||!nc(i,t,r))}function nc(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function sc(e){return e>0?1:e<0?-1:0}function oc(e,t){return tc(e.prev,e,e.next)<0?tc(e,t,e.next)>=0&&tc(e,e.prev,t)>=0:tc(e,t,e.prev)<0||tc(e,e.next,t)<0}function ac(e,t){const i=hc(e.i,e.x,e.y),r=hc(t.i,t.x,t.y),n=e.next,s=t.prev;return e.next=t,t.prev=e,i.next=n,n.prev=i,r.next=i,i.prev=r,s.next=r,r.prev=s,r}function lc(e,t,i,r){const n=hc(e,t,i);return r?(n.next=r.next,n.prev=r,r.next.prev=n,r.next=n):(n.prev=n,n.next=n),n}function cc(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function hc(e,t,i){return{i:e,x:t,y:i,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}class uc{constructor(e,t){if(t>e)throw new Error("Min granularity must not be greater than base granularity.");this._baseZoomGranularity=e,this._minGranularity=t}getGranularityForZoomLevel(e){return Math.max(Math.floor(this._baseZoomGranularity/(1<32767||t>32767)throw new Error("Vertex coordinates are out of signed 16 bit integer range.");const i=0|Math.round(e),r=0|Math.round(t),n=this._getKey(i,r);if(this._vertexDictionary.has(n))return this._vertexDictionary.get(n);const s=this._vertexBuffer.length/2;return this._vertexDictionary.set(n,s),this._vertexBuffer.push(i,r),s}_subdivideTrianglesScanline(e){if(this._granularity<2)return function(e,t){const i=[];for(let r=0;r0?(i.push(n),i.push(o),i.push(s)):(i.push(n),i.push(s),i.push(o))}return i}(this._vertexBuffer,e);const t=[],i=e.length;for(let r=0;r=1||x<=0)||m&&(an)){c>=r&&c<=n&&s.push(i[(o+1)%3]);continue}!m&&y>0&&s.push(this._vertexToIndex(e+d*y,a+p*y));const v=e+d*Math.max(y,0),b=e+d*Math.min(x,1);f||this._generateIntraEdgeVertices(s,e,a,l,c,v,b),!m&&x<1&&s.push(this._vertexToIndex(e+d*x,a+p*x)),(m||c>=r&&c<=n)&&s.push(i[(o+1)%3]),!m&&(c<=r||c>=n)&&this._generateInterEdgeVertices(s,e,a,l,c,h,u,b,r,n)}return s}_generateIntraEdgeVertices(e,t,i,r,n,s,o){const a=r-t,l=n-i,c=0===l,h=c?Math.min(t,r):Math.min(s,o),u=c?Math.max(t,r):Math.max(s,o),d=Math.floor(h/this._granularityCellSize)+1,p=Math.ceil(u/this._granularityCellSize)-1;if(c?t=d;f--){const r=f*this._granularityCellSize;e.push(this._vertexToIndex(r,i+l*(r-t)/a))}}_generateInterEdgeVertices(e,t,i,r,n,s,o,a,l,c){const h=n-i,u=s-r,d=o-n,p=(l-n)/d,f=(c-n)/d,m=Math.min(p,f),_=Math.max(p,f),g=r+u*m;let y=Math.floor(Math.min(g,a)/this._granularityCellSize)+1,x=Math.ceil(Math.max(g,a)/this._granularityCellSize)-1,v=a=1||_<=0){const e=i-o,r=s+(t-s)*Math.min((l-o)/e,(c-o)/e);y=Math.floor(Math.min(r,a)/this._granularityCellSize)+1,x=Math.ceil(Math.max(r,a)/this._granularityCellSize)-1,v=a0?c:l;if(v)for(let T=y;T<=x;T++)e.push(this._vertexToIndex(T*this._granularityCellSize,w));else for(let T=x;T>=y;T--)e.push(this._vertexToIndex(T*this._granularityCellSize,w))}_generateOutline(e){const t=[];for(const i of e){const e=gc(i,this._granularity,!0),r=this._pointArrayToIndices(e),n=[];for(let t=1;tn!=(s===pc)?(e.push(t),e.push(i),e.push(this._vertexToIndex(r,s)),e.push(i),e.push(this._vertexToIndex(n,s)),e.push(this._vertexToIndex(r,s))):(e.push(i),e.push(t),e.push(this._vertexToIndex(r,s)),e.push(this._vertexToIndex(n,s)),e.push(i),e.push(this._vertexToIndex(r,s)))}_fillPoles(e,t,i){const r=this._vertexBuffer,n=A,s=e.length;for(let o=2;o80*i){a=e[0],l=e[1];let t=a,r=l;for(let s=i;st&&(t=i),n>r&&(r=n)}c=Math.max(t-a,r-l),c=0!==c?32767/c:0}return Ul(s,o,i,a,l,c,0),o}(i,r),t=this._convertIndices(i,e);n=this._subdivideTrianglesScanline(t)}catch(o){}let s=[];return t&&(s=this._generateOutline(e)),this._ensureNoPoleVertices(),this._handlePoles(n),{verticesFlattened:this._vertexBuffer,indicesTriangles:n,indicesLineList:s}}_convertIndices(e,t){const i=[];for(let r=0;r0?(Math.floor(y/a)+1)*a:(Math.ceil(y/a)-1)*a,t=m>0?(Math.floor(x/a)+1)*a:(Math.ceil(x/a)-1)*a,i=Math.abs(y-e),n=Math.abs(x-t),s=Math.abs(y-o),c=Math.abs(x-h),u=d?i/_:Number.POSITIVE_INFINITY,v=p?n/g:Number.POSITIVE_INFINITY;if((s<=i||!d)&&(c<=n||!p))break;if(u=0?o-1:s-1,n=(a+1)%s,l=e[2*t[r]],c=e[2*t[n]],h=e[2*t[o]],u=e[2*t[o]+1],d=e[2*t[a]+1];let p=!1;if(lc)p=!1;else{const i=d-u,s=-(e[2*t[a]]-h),o=u((c-h)*i+(e[2*t[n]+1]-u)*s)*o&&(p=!0)}if(p){const e=t[r],n=t[o],l=t[a];e!==n&&e!==l&&n!==l&&i.push(l,n,e),o--,o<0&&(o=s-1)}else{const e=t[n],r=t[o],l=t[a];e!==r&&e!==l&&r!==l&&i.push(l,r,e),a++,a>=s&&(a=0)}if(r===n)break}}function xc(e,t,i,r,n,s,o,a,l){const c=n.length/2,h=o&&a&&l;if(csa.MAX_VERTEX_ARRAY_LENGTH&&(c=e.createNewSegment(t,i),l=a.count,m=!0,_=!0,g=!0,h=0);const y=vc(o,r,s,a,d,m,c),x=vc(o,r,s,a,p,_,c),v=vc(o,r,s,a,f,g,c);i.emplaceBack(h+y-l,h+x-l,h+v-l),c.primitiveLength++}}(t,i,r,n,s,e),h&&function(e,t,i,r,n,s){const o=[];for(let u=0;usa.MAX_VERTEX_ARRAY_LENGTH&&(c=e.createNewSegment(t,i),l=a.count,f=!0,m=!0,h=0);const _=vc(o,r,s,a,n,f,c),g=vc(o,r,s,a,u,m,c);i.emplaceBack(h+_-l,h+g-l),c.primitiveLength++}}}(o,i,a,n,l,e),t.forceNewSegmentOnNextPrepare(),null==o||o.forceNewSegmentOnNextPrepare()}function vc(e,t,i,r,n,s,o){if(s){const s=r.count;return i(t[2*n],t[2*n+1]),e[n]=r.count,r.count++,o.vertexLength++,s}return e[n]}class bc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.patternFeatures=[],this.layoutVertexArray=new qo,this.indexArray=new ta,this.indexArray2=new ia,this.programConfigurations=new La(e.layers,e.zoom),this.segments=new sa,this.segments2=new sa,this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,i){this.hasDependencies=Ol("fill",this.layers,t);const r=this.layers[0].layout.get("fill-sort-key"),n=!r.isConstant(),s=[];for(const{feature:o,id:a,index:l,sourceLayerIndex:c}of e){const e=this.layers[0]._featureFilter.needGeometry,h=Na(o,e);if(!this.layers[0]._featureFilter.filter(new ks(this.zoom),h,i))continue;const u=n?r.evaluate(h,{},i,t.availableImages):void 0,d={id:a,properties:o.properties,type:o.type,sourceLayerIndex:c,index:l,geometry:e?h.geometry:ja(o),patterns:{},sortKey:u};s.push(d)}n&&s.sort((e,t)=>e.sortKey-t.sortKey);for(const o of s){const{geometry:r,index:n,sourceLayerIndex:s}=o;if(this.hasDependencies){const e=Vl("fill",this.layers,o,{zoom:this.zoom},t);this.patternFeatures.push(e)}else this.addFeature(o,r,n,i,{},t.subdivisionGranularity);t.featureIndex.insert(e[n].feature,r,n,s,this.index)}}update(e,t,i){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:i})}addFeatures(e,t,i){for(const r of this.patternFeatures)this.addFeature(r,r.geometry,r.index,t,i,e.subdivisionGranularity)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Bl),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,t,i,r,n,s){for(const o of er(t,500)){const e=_c(o,r,s.fill.getGranularityForZoomLevel(r.z)),t=this.layoutVertexArray;xc((e,i)=>{t.emplaceBack(e,i)},this.segments,this.layoutVertexArray,this.indexArray,e.verticesFlattened,e.indicesTriangles,this.segments2,this.indexArray2,e.indicesLineList)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,{imagePositions:n,canonical:r})}}let wc,Tc;ds("FillBucket",bc,{omit:["layers","patternFeatures"]});var Sc={get paint(){return Tc=Tc||new Xs({"fill-antialias":new qs(ve.paint_fill["fill-antialias"]),"fill-opacity":new Zs(ve.paint_fill["fill-opacity"]),"fill-color":new Zs(ve.paint_fill["fill-color"]),"fill-outline-color":new Zs(ve.paint_fill["fill-outline-color"]),"fill-translate":new qs(ve.paint_fill["fill-translate"]),"fill-translate-anchor":new qs(ve.paint_fill["fill-translate-anchor"]),"fill-pattern":new $s(ve.paint_fill["fill-pattern"])})},get layout(){return wc=wc||new Xs({"fill-sort-key":new Zs(ve.layout_fill["fill-sort-key"])})}};class Pc extends Ys{constructor(e,t){super(e,Sc,t)}recalculate(e,t){super.recalculate(e,t);const i=this.paint._values["fill-outline-color"];"constant"===i.value.kind&&void 0===i.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(e){return new bc(e)}queryRadius(){return rl(this.paint.get("fill-translate"))}queryIntersectsFeature({queryGeometry:e,geometry:t,transform:i,pixelsToTileUnits:r}){return Wa(nl(e,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),-i.bearingInRadians,r),t)}isTileClipped(){return!0}}const Ic=ro([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),Mc=ro([{name:"a_centroid",components:2,type:"Int16"}],4),{members:Ec}=Ic;class Cc{constructor(e,t,i,r,n){this.properties={},this.extent=i,this.type=0,this.id=void 0,this._pbf=e,this._geometry=-1,this._keys=r,this._values=n,e.readFields(Ac,this,t)}loadGeometry(){const e=this._pbf;e.pos=this._geometry;const t=e.readVarint()+e.pos,i=[];let n,s=1,o=0,a=0,l=0;for(;e.pos>3}if(o--,1===s||2===s)a+=e.readSVarint(),l+=e.readSVarint(),1===s&&(n&&i.push(n),n=[]),n&&n.push(new r(a,l));else{if(7!==s)throw new Error(`unknown command ${s}`);n&&n.push(n[0].clone())}}return n&&i.push(n),i}bbox(){const e=this._pbf;e.pos=this._geometry;const t=e.readVarint()+e.pos;let i=1,r=0,n=0,s=0,o=1/0,a=-1/0,l=1/0,c=-1/0;for(;e.pos>3}if(r--,1===i||2===i)n+=e.readSVarint(),s+=e.readSVarint(),na&&(a=n),sc&&(c=s);else if(7!==i)throw new Error(`unknown command ${i}`)}return[o,l,a,c]}toGeoJSON(e,t,i){const r=this.extent*Math.pow(2,i),n=this.extent*e,s=this.extent*t,o=this.loadGeometry();function a(e){return[360*(e.x+n)/r-180,360/Math.PI*Math.atan(Math.exp((1-2*(e.y+s)/r)*Math.PI))-90]}function l(e){return e.map(a)}let c;if(1===this.type){const e=[];for(const i of o)e.push(i[0]);const t=l(e);c=1===e.length?{type:"Point",coordinates:t[0]}:{type:"MultiPoint",coordinates:t}}else if(2===this.type){const e=o.map(l);c=1===e.length?{type:"LineString",coordinates:e[0]}:{type:"MultiLineString",coordinates:e}}else{if(3!==this.type)throw new Error("unknown feature type");{const e=Dc(o),t=[];for(const i of e)t.push(i.map(l));c=1===t.length?{type:"Polygon",coordinates:t[0]}:{type:"MultiPolygon",coordinates:t}}}const h={type:"Feature",geometry:c,properties:this.properties};return null!=this.id&&(h.id=this.id),h}}function Ac(e,t,i){1===e?t.id=i.readVarint():2===e?function(e,t){const i=e.readVarint()+e.pos;for(;e.pos=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];const t=this._pbf.readVarint()+this._pbf.pos;return new Cc(this._pbf,t,this.extent,this._keys,this._values)}}function Rc(e,t,i){15===e?t.version=i.readVarint():1===e?t.name=i.readString():5===e?t.extent=i.readVarint():2===e?t._features.push(i.pos):3===e?t._keys.push(i.readString()):4===e&&t._values.push(function(e){let t=null;const i=e.readVarint()+e.pos;for(;e.pos>3;t=1===i?e.readString():2===i?e.readFloat():3===i?e.readDouble():4===i?e.readVarint64():5===i?e.readVarint():6===i?e.readSVarint():7===i?e.readBoolean():null}if(null==t)throw new Error("unknown feature value");return t}(i))}class Lc{constructor(e,t){this.layers=e.readFields(Fc,{},t)}}function Fc(e,t,i){if(3===e){const e=new kc(i,i.readVarint()+i.pos);e.length&&(t[e.name]=e)}}const Bc=Math.pow(2,13);function Oc(e,t,i,r,n,s,o,a){e.emplaceBack(t,i,2*Math.floor(r*Bc)+o,n*Bc*2,s*Bc*2,Math.round(a))}class Vc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new Zo,this.centroidVertexArray=new Uo,this.indexArray=new ta,this.programConfigurations=new La(e.layers,e.zoom),this.segments=new sa,this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,i){this.features=[],this.hasDependencies=Ol("fill-extrusion",this.layers,t);for(const{feature:r,id:n,index:s,sourceLayerIndex:o}of e){const e=this.layers[0]._featureFilter.needGeometry,a=Na(r,e);if(!this.layers[0]._featureFilter.filter(new ks(this.zoom),a,i))continue;const l={id:n,sourceLayerIndex:o,index:s,geometry:e?a.geometry:ja(r),properties:r.properties,type:r.type,patterns:{}};this.hasDependencies?this.features.push(Vl("fill-extrusion",this.layers,l,{zoom:this.zoom},t)):this.addFeature(l,l.geometry,s,i,{},t.subdivisionGranularity),t.featureIndex.insert(r,l.geometry,s,o,this.index,!0)}}addFeatures(e,t,i){for(const r of this.features){const{geometry:n}=r;this.addFeature(r,n,r.index,t,i,e.subdivisionGranularity)}}update(e,t,i){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:i})}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.centroidVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Ec),this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,Mc.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,t,i,r,n,s){for(const o of er(t,500)){const t={x:0,y:0,sampleCount:0},i=this.layoutVertexArray.length;this.processPolygon(t,r,e,o,s);const n=this.layoutVertexArray.length-i,a=Math.floor(t.x/t.sampleCount),l=Math.floor(t.y/t.sampleCount);for(let e=0;e{Oc(c,e,t,0,0,1,1,0)},this.segments,this.layoutVertexArray,this.indexArray,l.verticesFlattened,l.indicesTriangles)}_generateSideFaces(e,t){let i=0;for(let r=1;rsa.MAX_VERTEX_ARRAY_LENGTH&&(t.segment=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const o=n.sub(s)._perp()._unit(),a=s.dist(n);i+a>32768&&(i=0),Oc(this.layoutVertexArray,n.x,n.y,o.x,o.y,0,0,i),Oc(this.layoutVertexArray,n.x,n.y,o.x,o.y,0,1,i),i+=a,Oc(this.layoutVertexArray,s.x,s.y,o.x,o.y,0,0,i),Oc(this.layoutVertexArray,s.x,s.y,o.x,o.y,0,1,i);const l=t.segment.vertexLength;this.indexArray.emplaceBack(l,l+2,l+1),this.indexArray.emplaceBack(l+1,l+2,l+3),t.segment.vertexLength+=4,t.segment.primitiveLength+=2}}}function jc(e,t){for(let i=0;iA)||e.y===t.y&&(e.y<0||e.y>A)}function Uc(e){return e.every(e=>e.x<0)||e.every(e=>e.x>A)||e.every(e=>e.y<0)||e.every(e=>e.y>A)}let Gc;ds("FillExtrusionBucket",Vc,{omit:["layers","features"]});var qc={get paint(){return Gc=Gc||new Xs({"fill-extrusion-opacity":new qs(ve["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Zs(ve["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new qs(ve["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new qs(ve["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new $s(ve["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Zs(ve["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Zs(ve["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new qs(ve["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Zc extends Ys{constructor(e,t){super(e,qc,t)}createBucket(e){return new Vc(e)}queryRadius(){return rl(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature({queryGeometry:e,feature:t,featureState:i,geometry:n,transform:s,pixelsToTileUnits:o,pixelPosMatrix:a}){const l=nl(e,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),-s.bearingInRadians,o),c=this.paint.get("fill-extrusion-height").evaluate(t,i),h=this.paint.get("fill-extrusion-base").evaluate(t,i),u=function(e,t){const i=[];for(const n of e){const e=[n.x,n.y,0,1];P(e,e,t),i.push(new r(e[0]/e[3],e[1]/e[3]))}return i}(l,a),d=function(e,t,i,n){const s=[],o=[],a=n[8]*t,l=n[9]*t,c=n[10]*t,h=n[11]*t,u=n[8]*i,d=n[9]*i,p=n[10]*i,f=n[11]*i;for(const m of e){const e=[],t=[];for(const i of m){const s=i.x,o=i.y,m=n[0]*s+n[4]*o+n[12],_=n[1]*s+n[5]*o+n[13],g=n[2]*s+n[6]*o+n[14],y=n[3]*s+n[7]*o+n[15],x=g+c,v=y+h,b=m+u,w=_+d,T=g+p,S=y+f,P=new r((m+a)/v,(_+l)/v);P.z=x/v,e.push(P);const I=new r(b/S,w/S);I.z=T/S,t.push(I)}s.push(e),o.push(t)}return[s,o]}(n,h,c,a);return function(e,t,i){let r=1/0;Wa(i,t)&&(r=Wc(i,t[0]));for(let n=0;ne.id),this.index=e.index,this.hasDependencies=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(e=>{this.gradients[e.id]={}}),this.layoutVertexArray=new $o,this.layoutVertexArray2=new Wo,this.indexArray=new ta,this.programConfigurations=new La(e.layers,e.zoom),this.segments=new sa,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,i){this.hasDependencies=Ol("line",this.layers,t)||this.hasLineDasharray(this.layers);const r=this.layers[0].layout.get("line-sort-key"),n=!r.isConstant(),s=[];for(const{feature:o,id:a,index:l,sourceLayerIndex:c}of e){const e=this.layers[0]._featureFilter.needGeometry,t=Na(o,e);if(!this.layers[0]._featureFilter.filter(new ks(this.zoom),t,i))continue;const h=n?r.evaluate(t,{},i):void 0,u={id:a,properties:o.properties,type:o.type,sourceLayerIndex:c,index:l,geometry:e?t.geometry:ja(o),patterns:{},dashes:{},sortKey:h};s.push(u)}n&&s.sort((e,t)=>e.sortKey-t.sortKey);for(const o of s){const{geometry:r,index:n,sourceLayerIndex:s}=o;this.hasDependencies?(Ol("line",this.layers,t)?Vl("line",this.layers,o,{zoom:this.zoom},t):this.hasLineDasharray(this.layers)&&this.addLineDashDependencies(this.layers,o,this.zoom,t),this.patternFeatures.push(o)):this.addFeature(o,r,n,i,{},{},t.subdivisionGranularity),t.featureIndex.insert(e[n].feature,r,n,s,this.index)}}update(e,t,i,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:i,dashPositions:r})}addFeatures(e,t,i,r){for(const n of this.patternFeatures)this.addFeature(n,n.geometry,n.index,t,i,r,e.subdivisionGranularity)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,Kc)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Xc),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,t,i,r,n,s,o){const a=this.layers[0].layout,l=a.get("line-join").evaluate(e,{}),c=a.get("line-cap"),h=a.get("line-miter-limit"),u=a.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(const d of t)this.addLine(d,e,l,c,h,u,r,o);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,i,{imagePositions:n,dashPositions:s,canonical:r})}addLine(e,t,i,r,n,s,o,a){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,e=gc(e,o?a.line.getGranularityForZoomLevel(o.z):1),this.lineClips){this.lineClipsArray.push(this.lineClips);for(let t=0;t=2&&e[c-1].equals(e[c-2]);)c--;let h=0;for(;h0;if(b&&y>h){const e=p.dist(f);if(e>2*u){const t=p.sub(p.sub(f)._mult(u/e)._round());this.updateDistance(f,t),this.addCurrentVertex(t,_,0,0,d),f=t}}const T=f&&m;let S=T?i:l?"butt":r;if(T&&"round"===S&&(xn&&(S="bevel"),"bevel"===S&&(x>2&&(S="flipbevel"),x100)t=g.mult(-1);else{const e=x*_.add(g).mag()/_.sub(g).mag();t._perp()._mult(e*(w?-1:1))}this.addCurrentVertex(p,t,0,0,d),this.addCurrentVertex(p,t.mult(-1),0,0,d)}else if("bevel"===S||"fakeround"===S){const e=-Math.sqrt(x*x-1),t=w?e:0,i=w?0:e;if(f&&this.addCurrentVertex(p,_,t,i,d),"fakeround"===S){const e=Math.round(180*v/Math.PI/20);for(let t=1;t2*u){const t=p.add(m.sub(p)._mult(u/e)._round());this.updateDistance(p,t),this.addCurrentVertex(t,g,0,0,d),p=t}}}}addCurrentVertex(e,t,i,r,n,s=!1){const o=t.y*r-t.x,a=-t.y-t.x*r;this.addHalfVertex(e,t.x+t.y*i,t.y-t.x*i,s,!1,i,n),this.addHalfVertex(e,o,a,s,!0,-r,n),this.distance>Qc/2&&0===this.totalDistance&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(e,t,i,r,n,s))}addHalfVertex({x:e,y:t},i,r,n,s,o,a){const l=.5*(this.lineClips?this.scaledDistance*(Qc-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((e<<1)+(n?1:0),(t<<1)+(s?1:0),Math.round(63*i)+128,Math.round(63*r)+128,1+(0===o?0:o<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const c=a.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,c,this.e2),a.primitiveLength++),s?this.e2=c:this.e1=c}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(e,t){this.distance+=e.dist(t),this.updateScaledDistance()}hasLineDasharray(e){for(const t of e){const e=t.paint.get("line-dasharray");if(e&&!e.isConstant())return!0}return!1}addLineDashDependencies(e,t,i,r){for(const n of e){const e=n.paint.get("line-dasharray");if(!e||"constant"===e.value.kind)continue;const s="round"===n.layout.get("line-cap"),o={dasharray:e.value.evaluate({zoom:i-1},t,{}),round:s},a={dasharray:e.value.evaluate({zoom:i},t,{}),round:s},l={dasharray:e.value.evaluate({zoom:i+1},t,{}),round:s},c=`${o.dasharray.join(",")},${o.round}`,h=`${a.dasharray.join(",")},${a.round}`,u=`${l.dasharray.join(",")},${l.round}`;r.dashDependencies[c]=o,r.dashDependencies[h]=a,r.dashDependencies[u]=l,t.dashes[n.id]={min:c,mid:h,max:u}}}}let th,ih;ds("LineBucket",eh,{omit:["layers","patternFeatures"]});var rh={get paint(){return ih=ih||new Xs({"line-opacity":new Zs(ve.paint_line["line-opacity"]),"line-color":new Zs(ve.paint_line["line-color"]),"line-translate":new qs(ve.paint_line["line-translate"]),"line-translate-anchor":new qs(ve.paint_line["line-translate-anchor"]),"line-width":new Zs(ve.paint_line["line-width"]),"line-gap-width":new Zs(ve.paint_line["line-gap-width"]),"line-offset":new Zs(ve.paint_line["line-offset"]),"line-blur":new Zs(ve.paint_line["line-blur"]),"line-dasharray":new $s(ve.paint_line["line-dasharray"]),"line-pattern":new $s(ve.paint_line["line-pattern"]),"line-gradient":new Hs(ve.paint_line["line-gradient"])})},get layout(){return th=th||new Xs({"line-cap":new qs(ve.layout_line["line-cap"]),"line-join":new Zs(ve.layout_line["line-join"]),"line-miter-limit":new qs(ve.layout_line["line-miter-limit"]),"line-round-limit":new qs(ve.layout_line["line-round-limit"]),"line-sort-key":new Zs(ve.layout_line["line-sort-key"])})}};class nh extends Zs{possiblyEvaluate(e,t){return t=new ks(Math.floor(t.zoom),{now:t.now,fadeDuration:t.fadeDuration,zoomHistory:t.zoomHistory,transition:t.transition}),super.possiblyEvaluate(e,t)}evaluate(e,t,i,r){return t=V({},t,{zoom:Math.floor(t.zoom)}),super.evaluate(e,t,i,r)}}let sh;class oh extends Ys{constructor(e,t){super(e,rh,t),this.gradientVersion=0,sh||(sh=new nh(rh.paint.properties["line-width"].specification),sh.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(e){if("line-gradient"===e){const e=this.gradientExpression();this.stepInterpolant=!(void 0===e._styleExpression)&&e._styleExpression.expression instanceof li,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(e,t){super.recalculate(e,t),this.paint._values["line-floorwidth"]=sh.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)}createBucket(e){return new eh(e)}queryRadius(e){const t=e,i=ah(il("line-width",this,t),il("line-gap-width",this,t)),r=il("line-offset",this,t);return i/2+Math.abs(r)+rl(this.paint.get("line-translate"))}queryIntersectsFeature({queryGeometry:e,feature:t,featureState:i,geometry:n,transform:s,pixelsToTileUnits:o}){const a=nl(e,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),-s.bearingInRadians,o),l=o/2*ah(this.paint.get("line-width").evaluate(t,i),this.paint.get("line-gap-width").evaluate(t,i)),c=this.paint.get("line-offset").evaluate(t,i);return c&&(n=function(e,t){const i=[];for(let n=0;n=3)for(let t=0;t0?t+2*e:e}const lh=ro([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),ch=ro([{name:"a_projected_pos",components:3,type:"Float32"}],4);ro([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const hh=ro([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);ro([{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"}]);const uh=ro([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),dh=ro([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function ph(e,t,i){return e.sections.forEach(e=>{e.text=function(e,t,i){const r=t.layout.get("text-transform").evaluate(i,{});return"uppercase"===r?e=e.toLocaleUpperCase():"lowercase"===r&&(e=e.toLocaleLowerCase()),zs.applyArabicShaping&&(e=zs.applyArabicShaping(e)),e}(e.text,t,i)}),e}ro([{name:"triangle",components:3,type:"Uint16"}]),ro([{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"}]),ro([{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"}]),ro([{type:"Float32",name:"offsetX"}]),ro([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),ro([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);var fh=24;const mh={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","⋯":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"},_h={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},gh={40:!0};function yh(e,t,i,r,n,s){if("fontStack"in t){const r=i[t.fontStack],s=r&&r[e];return s?s.metrics.advance*t.scale+n:0}{const e=r[t.imageName];return e?e.displaySize[0]*t.scale*fh/s+n:0}}function xh(e,t,i,r){const n=Math.pow(e-t,2);return r?eMath.max(e,this.sections[t].scale),0)}getMaxImageSize(e){let t=0,i=0;for(let r=0;ri))}addImageSection(e){const t=e.image?e.image.name:"";if(0===t.length)return void Z("Can't add FormattedSection with an empty image.");const i=this.getNextImageSectionCharCode();i?(this.text+=String.fromCharCode(i),this.sections.push({scale:1,verticalAlign:e.verticalAlign||"bottom",imageName:t}),this.sectionIndex.push(this.sections.length-1)):Z("Reached maximum number of images 6401")}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}determineLineBreaks(e,t,i,r,n){const s=[],o=this.determineAverageLineWidth(e,t,i,r,n),a=this.hasZeroWidthSpaces();let l=0,c=0;const h=this.text[Symbol.iterator]();let u=h.next();const d=this.text[Symbol.iterator]();d.next();let p=d.next();const f=this.text[Symbol.iterator]();f.next(),f.next();let m=f.next();for(;!u.done;){const t=this.getSection(c),_=u.value.codePointAt(0);if(bs(_)||(l+=yh(_,t,i,r,e,n)),!p.done){const e=xs(_),i=p.value.codePointAt(0);(_h[_]||e||"imageName"in t||!m.done&&gh[i])&&s.push(bh(c+1,l,o,s,vh(_,i,e&&a),!1))}c++,u=h.next(),p=d.next(),m=f.next()}return wh(bh(this.length(),l,o,s,0,!0))}determineAverageLineWidth(e,t,i,r,n){let s=0,o=0;for(const a of this.text){const t=this.getSection(o);s+=yh(a.codePointAt(0),t,i,r,e,n),o++}return s/Math.max(1,Math.ceil(s/t))}}const Sh=4294967296,Ph=1/Sh,Ih="undefined"==typeof TextDecoder?null:new TextDecoder("utf-8");class Mh{constructor(e=new Uint8Array(16)){this.buf=ArrayBuffer.isView(e)?e:new Uint8Array(e),this.dataView=new DataView(this.buf.buffer),this.pos=0,this.type=0,this.length=this.buf.length}readFields(e,t,i=this.length){for(;this.pos>3,n=this.pos;this.type=7&i,e(r,t,this),this.pos===n&&this.skip(i)}return t}readMessage(e,t){return this.readFields(e,t,this.readVarint()+this.pos)}readFixed32(){const e=this.dataView.getUint32(this.pos,!0);return this.pos+=4,e}readSFixed32(){const e=this.dataView.getInt32(this.pos,!0);return this.pos+=4,e}readFixed64(){const e=this.dataView.getUint32(this.pos,!0)+this.dataView.getUint32(this.pos+4,!0)*Sh;return this.pos+=8,e}readSFixed64(){const e=this.dataView.getUint32(this.pos,!0)+this.dataView.getInt32(this.pos+4,!0)*Sh;return this.pos+=8,e}readFloat(){const e=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,e}readDouble(){const e=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,e}readVarint(e){const t=this.buf;let i,r;return r=t[this.pos++],i=127&r,r<128?i:(r=t[this.pos++],i|=(127&r)<<7,r<128?i:(r=t[this.pos++],i|=(127&r)<<14,r<128?i:(r=t[this.pos++],i|=(127&r)<<21,r<128?i:(r=t[this.pos],i|=(15&r)<<28,function(e,t,i){const r=i.buf;let n,s;if(s=r[i.pos++],n=(112&s)>>4,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(127&s)<<3,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(127&s)<<10,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(127&s)<<17,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(127&s)<<24,s<128)return Eh(e,n,t);if(s=r[i.pos++],n|=(1&s)<<31,s<128)return Eh(e,n,t);throw new Error("Expected varint not more than 10 bytes")}(i,e,this)))))}readVarint64(){return this.readVarint(!0)}readSVarint(){const e=this.readVarint();return e%2==1?(e+1)/-2:e/2}readBoolean(){return Boolean(this.readVarint())}readString(){const e=this.readVarint()+this.pos,t=this.pos;return this.pos=e,e-t>=12&&Ih?Ih.decode(this.buf.subarray(t,e)):function(e,t,i){let r="",n=t;for(;n239?4:t>223?3:t>191?2:1;if(n+c>i)break;1===c?t<128&&(l=t):2===c?(s=e[n+1],128==(192&s)&&(l=(31&t)<<6|63&s,l<=127&&(l=null))):3===c?(s=e[n+1],o=e[n+2],128==(192&s)&&128==(192&o)&&(l=(15&t)<<12|(63&s)<<6|63&o,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===c&&(s=e[n+1],o=e[n+2],a=e[n+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&t)<<18|(63&s)<<12|(63&o)<<6|63&a,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,c=1):l>65535&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),n+=c}return r}(this.buf,t,e)}readBytes(){const e=this.readVarint()+this.pos,t=this.buf.subarray(this.pos,e);return this.pos=e,t}readPackedVarint(e=[],t){const i=this.readPackedEnd();for(;this.pos127;);else if(2===t)this.pos=this.readVarint()+this.pos;else if(5===t)this.pos+=4;else{if(1!==t)throw new Error(`Unimplemented type: ${t}`);this.pos+=8}}writeTag(e,t){this.writeVarint(e<<3|t)}realloc(e){let t=this.length||16;for(;t268435455||e<0?function(e,t){let i,r;if(e>=0?(i=e%4294967296|0,r=e/4294967296|0):(i=~(-e%4294967296),r=~(-e/4294967296),4294967295^i?i=i+1|0:(i=0,r=r+1|0)),e>=0x10000000000000000||e<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");var n,s;t.realloc(10),n=i,(s=t).buf[s.pos++]=127&n|128,n>>>=7,s.buf[s.pos++]=127&n|128,n>>>=7,s.buf[s.pos++]=127&n|128,n>>>=7,s.buf[s.pos++]=127&n|128,s.buf[s.pos]=127&(n>>>=7),function(e,t){const i=(7&e)<<4;t.buf[t.pos++]|=i|((e>>>=3)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e|((e>>>=7)?128:0),e&&(t.buf[t.pos++]=127&e)))))}(r,t)}(e,this):(this.realloc(4),this.buf[this.pos++]=127&e|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=e>>>7&127))))}writeSVarint(e){this.writeVarint(e<0?2*-e-1:2*e)}writeBoolean(e){this.writeVarint(+e)}writeString(e){e=String(e),this.realloc(4*e.length),this.pos++;const t=this.pos;this.pos=function(e,t,i){for(let r,n,s=0;s55295&&r<57344){if(!n){r>56319||s+1===t.length?(e[i++]=239,e[i++]=191,e[i++]=189):n=r;continue}if(r<56320){e[i++]=239,e[i++]=191,e[i++]=189,n=r;continue}r=n-55296<<10|r-56320|65536,n=null}else n&&(e[i++]=239,e[i++]=191,e[i++]=189,n=null);r<128?e[i++]=r:(r<2048?e[i++]=r>>6|192:(r<65536?e[i++]=r>>12|224:(e[i++]=r>>18|240,e[i++]=r>>12&63|128),e[i++]=r>>6&63|128),e[i++]=63&r|128)}return i}(this.buf,e,this.pos);const i=this.pos-t;i>=128&&Ch(t,i,this),this.pos=t-1,this.writeVarint(i),this.pos+=i}writeFloat(e){this.realloc(4),this.dataView.setFloat32(this.pos,e,!0),this.pos+=4}writeDouble(e){this.realloc(8),this.dataView.setFloat64(this.pos,e,!0),this.pos+=8}writeBytes(e){const t=e.length;this.writeVarint(t),this.realloc(t);for(let i=0;i=128&&Ch(i,r,this),this.pos=i-1,this.writeVarint(r),this.pos+=r}writeMessage(e,t,i){this.writeTag(e,2),this.writeRawMessage(t,i)}writePackedVarint(e,t){t.length&&this.writeMessage(e,Ah,t)}writePackedSVarint(e,t){t.length&&this.writeMessage(e,Dh,t)}writePackedBoolean(e,t){t.length&&this.writeMessage(e,Rh,t)}writePackedFloat(e,t){t.length&&this.writeMessage(e,zh,t)}writePackedDouble(e,t){t.length&&this.writeMessage(e,kh,t)}writePackedFixed32(e,t){t.length&&this.writeMessage(e,Lh,t)}writePackedSFixed32(e,t){t.length&&this.writeMessage(e,Fh,t)}writePackedFixed64(e,t){t.length&&this.writeMessage(e,Bh,t)}writePackedSFixed64(e,t){t.length&&this.writeMessage(e,Oh,t)}writeBytesField(e,t){this.writeTag(e,2),this.writeBytes(t)}writeFixed32Field(e,t){this.writeTag(e,5),this.writeFixed32(t)}writeSFixed32Field(e,t){this.writeTag(e,5),this.writeSFixed32(t)}writeFixed64Field(e,t){this.writeTag(e,1),this.writeFixed64(t)}writeSFixed64Field(e,t){this.writeTag(e,1),this.writeSFixed64(t)}writeVarintField(e,t){this.writeTag(e,0),this.writeVarint(t)}writeSVarintField(e,t){this.writeTag(e,0),this.writeSVarint(t)}writeStringField(e,t){this.writeTag(e,2),this.writeString(t)}writeFloatField(e,t){this.writeTag(e,5),this.writeFloat(t)}writeDoubleField(e,t){this.writeTag(e,1),this.writeDouble(t)}writeBooleanField(e,t){this.writeVarintField(e,+t)}}function Eh(e,t,i){return i?4294967296*t+(e>>>0):4294967296*(t>>>0)+(e>>>0)}function Ch(e,t,i){const r=t<=16383?1:t<=2097151?2:t<=268435455?3:Math.floor(Math.log(t)/(7*Math.LN2));i.realloc(r);for(let n=i.pos-1;n>=e;n--)i.buf[n+r]=i.buf[n]}function Ah(e,t){for(let i=0;it.h-e.h);const r=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(t/.95)),i),h:1/0}];let n=0,s=0;for(const o of e)for(let e=r.length-1;e>=0;e--){const t=r[e];if(!(o.w>t.w||o.h>t.h)){if(o.x=t.x,o.y=t.y,s=Math.max(s,o.y+o.h),n=Math.max(n,o.x+o.w),o.w===t.w&&o.h===t.h){const t=r.pop();t&&e_.toCodeUnitIndex(e));const e=x(_.toString(),y);for(const t of e){const e=[...t].map(()=>0);g.push(new Th(t,_.sections,e))}}else if(v){g=[],y=y.map(e=>_.toCodeUnitIndex(e));let e=0;const t=[];for(const r of _.text)t.push(...Array(r.length).fill(_.sectionIndex[e])),e++;const i=v(_.text,t,y);for(const r of i){const e=[];let t="";for(const i of r[0])e.push(r[1][t.length]),t+=i;g.push(new Th(r[0],_.sections,e))}}else g=function(e,t){const i=[];let r=0;for(const n of t)i.push(e.substring(r,n)),r=n;return rc){const e=Math.ceil(s/c);n*=e/o,o=e}return{x1:r,y1:n,x2:r+s,y2:n+o}}function iu(e,t,i,r,n,s){const o=e.image;let a;if(o.content){const e=o.content,t=o.pixelRatio||1;a=[e[0]/t,e[1]/t,o.displaySize[0]-e[2]/t,o.displaySize[1]-e[3]/t]}const l=t.left*s,c=t.right*s;let h,u,d,p;"width"===i||"both"===i?(p=n[0]+l-r[3],u=n[0]+c+r[1]):(p=n[0]+(l+c-o.displaySize[0])/2,u=p+o.displaySize[0]);const f=t.top*s,m=t.bottom*s;return"height"===i||"both"===i?(h=n[1]+f-r[0],d=n[1]+m+r[2]):(h=n[1]+(f+m-o.displaySize[1])/2,d=h+o.displaySize[1]),{image:o,top:h,right:u,bottom:d,left:p,collisionPadding:a}}ds("ImagePosition",Gh),ds("ImageAtlas",qh),e.az=void 0,(Zh=e.az||(e.az={}))[Zh.none=0]="none",Zh[Zh.horizontal=1]="horizontal",Zh[Zh.vertical=2]="vertical",Zh[Zh.horizontalOnly=3]="horizontalOnly";const ru=128,nu=32640;function su(e,t){const{expression:i}=t;if("constant"===i.kind)return{kind:"constant",layoutSize:i.evaluate(new ks(e+1))};if("source"===i.kind)return{kind:"source"};{const{zoomStops:t,interpolationType:r}=i;let n=0;for(;ne.id),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex,this.hasDependencies=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[];const i=this.layers[0]._unevaluatedLayout._values;this.textSizeData=su(this.zoom,i["text-size"]),this.iconSizeData=su(this.zoom,i["icon-size"]);const r=this.layers[0].layout,n=r.get("symbol-sort-key"),s=r.get("symbol-z-order");this.canOverlap="never"!==ou(r,"text-overlap","text-allow-overlap")||"never"!==ou(r,"icon-overlap","icon-allow-overlap")||r.get("text-ignore-placement")||r.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==s&&!n.isConstant(),this.sortFeaturesByY=("viewport-y"===s||"auto"===s&&!this.sortFeaturesByKey)&&this.canOverlap,"point"===r.get("symbol-placement")&&(this.writingModes=r.get("text-writing-mode").map(t=>e.az[t])),this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id),this.sourceID=t.sourceID}createArrays(){this.text=new uu(new La(this.layers,this.zoom,e=>/^text/.test(e))),this.icon=new uu(new La(this.layers,this.zoom,e=>/^icon/.test(e))),this.glyphOffsetArray=new Fo,this.lineVertexArray=new Bo,this.symbolInstances=new Lo,this.textAnchorOffsets=new Vo}calculateGlyphDependencies(e,t,i,r,n){for(const s of e)if(t[s.codePointAt(0)]=!0,(i||r)&&n){const e=mh[s];e&&(t[e.codePointAt(0)]=!0)}}populate(t,i,r){const n=this.layers[0],s=n.layout,o=s.get("text-font"),a=s.get("text-field"),l=s.get("icon-image"),c=("constant"!==a.value.kind||a.value.value instanceof zt&&!a.value.value.isEmpty()||a.value.value.toString().length>0)&&("constant"!==o.value.kind||o.value.value.length>0),h="constant"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,u=s.get("symbol-sort-key");if(this.features=[],!c&&!h)return;const d=i.iconDependencies,p=i.glyphDependencies,f=i.availableImages,m=new ks(this.zoom);for(const{feature:_,id:g,index:y,sourceLayerIndex:x}of t){const t=n._featureFilter.needGeometry,i=Na(_,t);if(!n._featureFilter.filter(m,i,r))continue;let a,l;if(t||(i.geometry=ja(_)),c){const e=n.getValueAndResolveTokens("text-field",i,r,f),t=zt.factory(e),s=this.hasRTLText=this.hasRTLText||hu(t);(!s||"unavailable"===zs.getRTLTextPluginStatus()||s&&zs.isParsed())&&(a=ph(t,n,i))}if(h){const e=n.getValueAndResolveTokens("icon-image",i,r,f);l=e instanceof Vt?e:Vt.fromString(e)}if(!a&&!l)continue;const v=this.sortFeaturesByKey?u.evaluate(i,{},r):void 0;if(this.features.push({id:g,text:a,icon:l,index:y,sourceLayerIndex:x,geometry:i.geometry,properties:_.properties,type:Cc.types[_.type],sortKey:v}),l&&(d[l.name]=!0),a){const t=o.evaluate(i,{},r).join(","),n="viewport"!==s.get("text-rotation-alignment")&&"point"!==s.get("symbol-placement");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(e.az.vertical)>=0;for(const e of a.sections)if(e.image)d[e.image.name]=!0;else{const i=ws(a.toString()),r=e.fontStack||t,s=p[r]=p[r]||{};this.calculateGlyphDependencies(e.text,s,n,this.allowVerticalPlacement,i)}}}"line"===s.get("symbol-placement")&&(this.features=function(e){const t={},i={},r=[];let n=0;function s(t){r.push(e[t]),n++}function o(e,t,n){const s=i[e];return delete i[e],i[t]=s,r[s].geometry[0].pop(),r[s].geometry[0]=r[s].geometry[0].concat(n[0]),s}function a(e,i,n){const s=t[i];return delete t[i],t[e]=s,r[s].geometry[0].shift(),r[s].geometry[0]=n[0].concat(r[s].geometry[0]),s}function l(e,t,i){const r=i?t[0][t[0].length-1]:t[0][0];return`${e}:${r.x}:${r.y}`}for(let c=0;ce.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((e,t)=>e.sortKey-t.sortKey)}update(e,t,i){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,t,this.layers,{imagePositions:i}),this.icon.programConfigurations.updatePaintArrays(e,t,this.layers,{imagePositions:i}))}isEmpty(){return 0===this.symbolInstances.length&&!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,t){const i=this.lineVertexArray.length;if(void 0!==e.segment){let i=e.dist(t[e.segment+1]),r=e.dist(t[e.segment]);const n={};for(let s=e.segment+1;s=0;s--)n[s]={x:t[s].x,y:t[s].y,tileUnitDistanceFromAnchor:r},s>0&&(r+=t[s-1].dist(t[s]));for(let e=0;e0}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,t){const i=e.placedSymbolArray.get(t),r=i.vertexStartIndex+4*i.numGlyphs;for(let n=i.vertexStartIndex;nr[e]-r[t]||n[t]-n[e]),s}addToSortKeyRanges(e,t){const i=this.sortKeyRanges[this.sortKeyRanges.length-1];i&&i.sortKey===t?i.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:t,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const e of this.symbolInstanceIndexes){const t=this.symbolInstances.get(e);this.featureSortOrder.push(t.featureIndex),[t.rightJustifiedTextSymbolIndex,t.centerJustifiedTextSymbolIndex,t.leftJustifiedTextSymbolIndex].forEach((e,t,i)=>{e>=0&&i.indexOf(e)===t&&this.addIndicesForPlacedSymbol(this.text,e)}),t.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,t.verticalPlacedTextSymbolIndex),t.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.placedIconSymbolIndex),t.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let fu,mu;ds("SymbolBucket",pu,{omit:["layers","collisionBoxArray","features","compareText"]}),pu.MAX_GLYPHS=65535,pu.addDynamicAttributes=cu;var _u={get paint(){return mu=mu||new Xs({"icon-opacity":new Zs(ve.paint_symbol["icon-opacity"]),"icon-color":new Zs(ve.paint_symbol["icon-color"]),"icon-halo-color":new Zs(ve.paint_symbol["icon-halo-color"]),"icon-halo-width":new Zs(ve.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Zs(ve.paint_symbol["icon-halo-blur"]),"icon-translate":new qs(ve.paint_symbol["icon-translate"]),"icon-translate-anchor":new qs(ve.paint_symbol["icon-translate-anchor"]),"text-opacity":new Zs(ve.paint_symbol["text-opacity"]),"text-color":new Zs(ve.paint_symbol["text-color"],{runtimeType:je,getOverride:e=>e.textColor,hasOverride:e=>!!e.textColor}),"text-halo-color":new Zs(ve.paint_symbol["text-halo-color"]),"text-halo-width":new Zs(ve.paint_symbol["text-halo-width"]),"text-halo-blur":new Zs(ve.paint_symbol["text-halo-blur"]),"text-translate":new qs(ve.paint_symbol["text-translate"]),"text-translate-anchor":new qs(ve.paint_symbol["text-translate-anchor"])})},get layout(){return fu=fu||new Xs({"symbol-placement":new qs(ve.layout_symbol["symbol-placement"]),"symbol-spacing":new qs(ve.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new qs(ve.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Zs(ve.layout_symbol["symbol-sort-key"]),"symbol-z-order":new qs(ve.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new qs(ve.layout_symbol["icon-allow-overlap"]),"icon-overlap":new qs(ve.layout_symbol["icon-overlap"]),"icon-ignore-placement":new qs(ve.layout_symbol["icon-ignore-placement"]),"icon-optional":new qs(ve.layout_symbol["icon-optional"]),"icon-rotation-alignment":new qs(ve.layout_symbol["icon-rotation-alignment"]),"icon-size":new Zs(ve.layout_symbol["icon-size"]),"icon-text-fit":new qs(ve.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new qs(ve.layout_symbol["icon-text-fit-padding"]),"icon-image":new Zs(ve.layout_symbol["icon-image"]),"icon-rotate":new Zs(ve.layout_symbol["icon-rotate"]),"icon-padding":new Zs(ve.layout_symbol["icon-padding"]),"icon-keep-upright":new qs(ve.layout_symbol["icon-keep-upright"]),"icon-offset":new Zs(ve.layout_symbol["icon-offset"]),"icon-anchor":new Zs(ve.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new qs(ve.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new qs(ve.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new qs(ve.layout_symbol["text-rotation-alignment"]),"text-field":new Zs(ve.layout_symbol["text-field"]),"text-font":new Zs(ve.layout_symbol["text-font"]),"text-size":new Zs(ve.layout_symbol["text-size"]),"text-max-width":new Zs(ve.layout_symbol["text-max-width"]),"text-line-height":new qs(ve.layout_symbol["text-line-height"]),"text-letter-spacing":new Zs(ve.layout_symbol["text-letter-spacing"]),"text-justify":new Zs(ve.layout_symbol["text-justify"]),"text-radial-offset":new Zs(ve.layout_symbol["text-radial-offset"]),"text-variable-anchor":new qs(ve.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new Zs(ve.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new Zs(ve.layout_symbol["text-anchor"]),"text-max-angle":new qs(ve.layout_symbol["text-max-angle"]),"text-writing-mode":new qs(ve.layout_symbol["text-writing-mode"]),"text-rotate":new Zs(ve.layout_symbol["text-rotate"]),"text-padding":new qs(ve.layout_symbol["text-padding"]),"text-keep-upright":new qs(ve.layout_symbol["text-keep-upright"]),"text-transform":new Zs(ve.layout_symbol["text-transform"]),"text-offset":new Zs(ve.layout_symbol["text-offset"]),"text-allow-overlap":new qs(ve.layout_symbol["text-allow-overlap"]),"text-overlap":new qs(ve.layout_symbol["text-overlap"]),"text-ignore-placement":new qs(ve.layout_symbol["text-ignore-placement"]),"text-optional":new qs(ve.layout_symbol["text-optional"])})}};class gu{constructor(e){if(void 0===e.property.overrides)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=e.property.overrides?e.property.overrides.runtimeType:Fe,this.defaultValue=e}evaluate(e){if(e.formattedSection){const t=this.defaultValue.property.overrides;if(t&&t.hasOverride(e.formattedSection))return t.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}}ds("FormatSectionOverride",gu,{omit:["defaultValue"]});class yu extends Ys{constructor(e,t){super(e,_u,t)}recalculate(e,t){if(super.recalculate(e,t),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]="map"===this.layout.get("text-rotation-alignment")?"map":"viewport"),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){const e=this.layout.get("text-writing-mode");if(e){const t=[];for(const i of e)t.indexOf(i)<0&&t.push(i);this.layout._values["text-writing-mode"]=t}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(e,t,i,r){const n=this.layout.get(e).evaluate(t,{},i,r),s=this._unevaluatedLayout._values[e];return s.isDataDriven()||tn(s.value)||!n?n:(o=t.properties,n.replace(/{([^{}]+)}/g,(e,t)=>o&&t in o?String(o[t]):""));var o}createBucket(e){return new pu(e)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const e of _u.paint.overridableProperties){if(!yu.hasPaintOverride(this.layout,e))continue;const t=this.paint.get(e),i=new gu(t),r=new en(i,t.property.specification);let n=null;n="constant"===t.value.kind||"source"===t.value.kind?new nn("source",r):new sn("composite",r,t.value.zoomStops),this.paint._values[e]=new Us(t.property,n,t.parameters)}}_handleOverridablePaintPropertyUpdate(e,t,i){return!(!this.layout||t.isDataDriven()||i.isDataDriven())&&yu.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,t){const i=e.get("text-field"),r=_u.paint.properties[t];let n=!1;const s=e=>{for(const t of e)if(r.overrides&&r.overrides.hasOverride(t))return void(n=!0)};if("constant"===i.value.kind&&i.value.value instanceof zt)s(i.value.value.sections);else if("source"===i.value.kind||"composite"===i.value.kind){const e=t=>{n||(t instanceof Zt&&Gt(t.value)===Ze?s(t.value.sections):t instanceof Ei?s(t.sections):t.eachChild(e))},t=i.value;t._styleExpression&&e(t._styleExpression.expression)}return n}}let xu;var vu={get paint(){return xu=xu||new Xs({"background-color":new qs(ve.paint_background["background-color"]),"background-pattern":new Ws(ve.paint_background["background-pattern"]),"background-opacity":new qs(ve.paint_background["background-opacity"])})}};class bu extends Ys{constructor(e,t){super(e,vu,t)}}class wu extends Ys{constructor(e,t){super(e,{},t),this.onAdd=e=>{this.implementation.onAdd&&this.implementation.onAdd(e,e.painter.context.gl)},this.onRemove=e=>{this.implementation.onRemove&&this.implementation.onRemove(e,e.painter.context.gl)},this.implementation=e}is3D(){return"3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class Tu{constructor(e){this._methodToThrottle=e,this._triggered=!1,"undefined"!=typeof MessageChannel&&(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=()=>{}}}const Su={once:!0},Pu=6371008.8;class Iu{constructor(e,t){if(isNaN(e)||isNaN(t))throw new Error(`Invalid LngLat object: (${e}, ${t})`);if(this.lng=+e,this.lat=+t,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Iu(O(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const t=Math.PI/180,i=this.lat*t,r=e.lat*t,n=Math.sin(i)*Math.sin(r)+Math.cos(i)*Math.cos(r)*Math.cos((e.lng-this.lng)*t);return Pu*Math.acos(Math.min(n,1))}static convert(e){if(e instanceof Iu)return e;if(Array.isArray(e)&&(2===e.length||3===e.length))return new Iu(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&"object"==typeof e&&null!==e)return new Iu(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 [, ]")}}const Mu=2*Math.PI*Pu;function Eu(e){return Mu*Math.cos(e*Math.PI/180)}function Cu(e){return(180+e)/360}function Au(e){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e*Math.PI/360)))/360}function Du(e,t){return e/Eu(t)}function zu(e){return 360*e-180}function ku(e){return 360/Math.PI*Math.atan(Math.exp((180-360*e)*Math.PI/180))-90}function Ru(e,t){return e*Eu(ku(t))}class Lu{constructor(e,t,i=0){this.x=+e,this.y=+t,this.z=+i}static fromLngLat(e,t=0){const i=Iu.convert(e);return new Lu(Cu(i.lng),Au(i.lat),Du(t,i.lat))}toLngLat(){return new Iu(zu(this.x),ku(this.y))}toAltitude(){return Ru(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Mu*(e=ku(this.y),1/Math.cos(e*Math.PI/180));var e}}function Fu(e,t,i){var r=2*Math.PI*6378137/256/Math.pow(2,i);return[e*r-2*Math.PI*6378137/2,t*r-2*Math.PI*6378137/2]}class Bu{constructor(e,t,i){if(n=t,s=i,(r=e)<0||r>25||s<0||s>=Math.pow(2,r)||n<0||n>=Math.pow(2,r))throw new Error(`x=${t}, y=${i}, z=${e} outside of bounds. 0<=x<${Math.pow(2,e)}, 0<=y<${Math.pow(2,e)} 0<=z<=25 `);var r,n,s;this.z=e,this.x=t,this.y=i,this.key=ju(0,e,e,t,i)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,t,i){const r=(s=this.x,o=this.y,a=this.z,l=Fu(256*s,256*(o=Math.pow(2,a)-o-1),a),c=Fu(256*(s+1),256*(o+1),a),l[0]+","+l[1]+","+c[0]+","+c[1]),n=function(e,t,i){let r,n="";for(let s=e;s>0;s--)r=1<1?"@2x":"").replace(/{quadkey}/g,n).replace(/{bbox-epsg-3857}/g,r)}isChildOf(e){const t=this.z-e.z;return t>0&&e.x===this.x>>t&&e.y===this.y>>t}getTilePoint(e){const t=Math.pow(2,this.z);return new r((e.x*t-this.x)*A,(e.y*t-this.y)*A)}toString(){return`${this.z}/${this.x}/${this.y}`}}class Ou{constructor(e,t){this.wrap=e,this.canonical=t,this.key=ju(e,t.z,t.z,t.x,t.y)}}class Vu{constructor(e,t,i,r,n){if(this.terrainRttPosMatrix32f=null,e= z; overscaledZ = ${e}; z = ${i}`);this.overscaledZ=e,this.wrap=t,this.canonical=new Bu(i,+r,+n),this.key=ju(t,e,i,r,n)}clone(){return new Vu(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}`);const t=this.canonical.z-e;return e>this.canonical.z?new Vu(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Vu(e,this.wrap,e,this.canonical.x>>t,this.canonical.y>>t)}isOverscaled(){return this.overscaledZ>this.canonical.z}calculateScaledKey(e,t){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);const i=this.canonical.z-e;return e>this.canonical.z?ju(this.wrap*+t,e,this.canonical.z,this.canonical.x,this.canonical.y):ju(this.wrap*+t,e,e,this.canonical.x>>i,this.canonical.y>>i)}isChildOf(e){if(e.wrap!==this.wrap)return!1;if(this.overscaledZ-e.overscaledZ<=0)return!1;if(0===e.overscaledZ)return this.overscaledZ>0;const t=this.canonical.z-e.canonical.z;return!(t<0)&&e.canonical.x===this.canonical.x>>t&&e.canonical.y===this.canonical.y>>t}children(e){if(this.overscaledZ>=e)return[new Vu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const t=this.canonical.z+1,i=2*this.canonical.x,r=2*this.canonical.y;return[new Vu(t,this.wrap,t,i,r),new Vu(t,this.wrap,t,i+1,r),new Vu(t,this.wrap,t,i,r+1),new Vu(t,this.wrap,t,i+1,r+1)]}isLessThan(e){return this.wrape.wrap)&&(this.overscaledZe.overscaledZ)&&(this.canonical.xe.canonical.x)&&this.canonical.ye.key===r);t>-1&&e.addOrUpdateProperties.splice(t,1)}return(e.removeAllProperties||t.removeAllProperties)&&(i.removeAllProperties=!0),(e.removeProperties||t.removeProperties)&&(i.removeProperties=[...e.removeProperties||[],...t.removeProperties||[]]),(e.addOrUpdateProperties||t.addOrUpdateProperties)&&(i.addOrUpdateProperties=[...e.addOrUpdateProperties||[],...t.addOrUpdateProperties||[]]),(e.newGeometry||t.newGeometry)&&(i.newGeometry=t.newGeometry||e.newGeometry),i}function Gu(e){var t,i;if(!e)return{};const r={};return r.removeAll=e.removeAll,r.remove=new Set(e.remove||[]),r.add=new Map(null===(t=e.add)||void 0===t?void 0:t.map(e=>[e.id,e])),r.update=new Map(null===(i=e.update)||void 0===i?void 0:i.map(e=>[e.id,e])),r}ds("CanonicalTileID",Bu),ds("OverscaledTileID",Vu,{omit:["terrainRttPosMatrix32f"]});class qu{constructor(){this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0}extend(e){return this.minX=Math.min(this.minX,e.x),this.minY=Math.min(this.minY,e.y),this.maxX=Math.max(this.maxX,e.x),this.maxY=Math.max(this.maxY,e.y),this}expandBy(e){return this.minX-=e,this.minY-=e,this.maxX+=e,this.maxY+=e,(this.minX>this.maxX||this.minY>this.maxY)&&(this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0),this}shrinkBy(e){return this.expandBy(-e)}map(e){const t=new qu;return t.extend(e(new r(this.minX,this.minY))),t.extend(e(new r(this.maxX,this.minY))),t.extend(e(new r(this.minX,this.maxY))),t.extend(e(new r(this.maxX,this.maxY))),t}static fromPoints(e){const t=new qu;for(const i of e)t.extend(i);return t}contains(e){return e.x>=this.minX&&e.x<=this.maxX&&e.y>=this.minY&&e.y<=this.maxY}empty(){return this.minX>this.maxX}width(){return this.maxX-this.minX}height(){return this.maxY-this.minY}covers(e){return!this.empty()&&!e.empty()&&e.minX>=this.minX&&e.maxX<=this.maxX&&e.minY>=this.minY&&e.maxY<=this.maxY}intersects(e){return!this.empty()&&!e.empty()&&e.minX<=this.maxX&&e.maxX>=this.minX&&e.minY<=this.maxY&&e.maxY>=this.minY}}class Zu{constructor(e){this._stringToNumber={},this._numberToString=[];for(let t=0;t=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 $u{constructor(e,t,i,r,n){this.type="Feature",this._vectorTileFeature=e,this._x=i,this._y=r,this._z=t,this.properties=e.properties,this.id=n}projectPoint(e,t,i,r){return[360*(e.x+t)/r-180,360/Math.PI*Math.atan(Math.exp((1-2*(e.y+i)/r)*Math.PI))-90]}projectLine(e,t,i,r){return e.map(e=>this.projectPoint(e,t,i,r))}get geometry(){if(this._geometry)return this._geometry;const e=this._vectorTileFeature,t=e.extent*Math.pow(2,this._z),i=e.extent*this._x,r=e.extent*this._y,n=e.loadGeometry();switch(e.type){case 1:{const e=[];for(const t of n)e.push(t[0]);const s=this.projectLine(e,i,r,t);this._geometry=1===e.length?{type:"Point",coordinates:s[0]}:{type:"MultiPoint",coordinates:s};break}case 2:{const e=n.map(e=>this.projectLine(e,i,r,t));this._geometry=1===e.length?{type:"LineString",coordinates:e[0]}:{type:"MultiLineString",coordinates:e};break}case 3:{const e=Dc(n),s=[];for(const n of e)s.push(n.map(e=>this.projectLine(e,i,r,t)));this._geometry=1===s.length?{type:"Polygon",coordinates:s[0]}:{type:"MultiPolygon",coordinates:s};break}default:throw new Error(`unknown feature type: ${e.type}`)}return this._geometry}set geometry(e){this._geometry=e}toJSON(){const e={geometry:this.geometry};for(const t in this)"_geometry"!==t&&"_vectorTileFeature"!==t&&"_x"!==t&&"_y"!==t&&"_z"!==t&&(e[t]=this[t]);return e}}class Wu{constructor(e,i,r){t(this,"_name"),t(this,"dataBuffer"),t(this,"nullabilityBuffer"),t(this,"_size"),this._name=e,this.dataBuffer=i,"number"==typeof r?this._size=r:(this.nullabilityBuffer=r,this._size=r.size())}getValue(e){return this.nullabilityBuffer&&!this.nullabilityBuffer.get(e)?null:this.getValueFromBuffer(e)}has(e){return this.nullabilityBuffer&&this.nullabilityBuffer.get(e)||!this.nullabilityBuffer}get name(){return this._name}get size(){return this._size}}class Hu extends Wu{}class Xu extends Hu{getValueFromBuffer(e){return this.dataBuffer[e]}}class Yu extends Hu{getValueFromBuffer(e){return this.dataBuffer[e]}}class Ku extends Wu{constructor(e,i,r,n){super(e,i,n),t(this,"delta"),this.delta=r}}class Ju extends Ku{constructor(e,t,i,r){super(e,Int32Array.of(t),i,r)}getValueFromBuffer(e){return this.dataBuffer[0]+e*this.delta}}class Qu extends Wu{constructor(e,t,i){super(e,Int32Array.of(t),i)}getValueFromBuffer(e){return this.dataBuffer[0]}}class ed{constructor(e,i,r,n,s=4096){t(this,"_name"),t(this,"_geometryVector"),t(this,"_idVector"),t(this,"_propertyVectors"),t(this,"_extent"),t(this,"propertyVectorsMap"),this._name=e,this._geometryVector=i,this._idVector=r,this._propertyVectors=n,this._extent=s}get name(){return this._name}get idVector(){return this._idVector}get geometryVector(){return this._geometryVector}get propertyVectors(){return this._propertyVectors}getPropertyVector(e){return this.propertyVectorsMap||(this.propertyVectorsMap=new Map(this._propertyVectors.map(e=>[e.name,e]))),this.propertyVectorsMap.get(e)}*[Symbol.iterator](){const e=this.geometryVector[Symbol.iterator]();let t=0;for(;t>4,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(127&n)<<3,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(127&n)<<10,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(127&n)<<17,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(127&n)<<24,n<128)return 4294967296*r+(e>>>0);if(n=t[i.get()],i.increment(),r|=(1&n)<<31,n<128)return 4294967296*r+(e>>>0);throw new Error("Expected varint not more than 10 bytes")}(i,e,t)))))}function _d(e,t,i,r){throw new Error("FastPFor is not implemented yet.")}function gd(e){return e>>>1^-(1&e)}function yd(e){return e>>1n^-(1n&e)}function xd(e,t){let i=0n,r=0,n=t.get();for(;n=64)throw new Error("Varint too long")}return t.set(n),i}function vd(e,t,i){const r=new Int32Array(i);let n=0;for(let s=0;s=4)for(let r=e[0];i>>1^-(1&e[0]),e[1]=e[1]>>>1^-(1&e[1]);const t=e.length/4*4;let i=2;if(t>=4)for(;i>>1^-(1&t))+e[i-2],e[i+1]=(r>>>1^-(1&r))+e[i-1],e[i+2]=(n>>>1^-(1&n))+e[i],e[i+3]=(s>>>1^-(1&s))+e[i+1]}for(;i!=e.length;i+=2)e[i]=(e[i]>>>1^-(1&e[i]))+e[i-2],e[i+1]=(e[i+1]>>>1^-(1&e[i+1]))+e[i-1]}(dd=id||(id={})).NONE="NONE",dd.DELTA="DELTA",dd.COMPONENTWISE_DELTA="COMPONENTWISE_DELTA",dd.RLE="RLE",dd.MORTON="MORTON",dd.PDE="PDE",function(e){e.NONE="NONE",e.FAST_PFOR="FAST_PFOR",e.VARINT="VARINT",e.ALP="ALP"}(rd||(rd={})),function(e){e.PRESENT="PRESENT",e.DATA="DATA",e.OFFSET="OFFSET",e.LENGTH="LENGTH"}(nd||(nd={}));class Pd{constructor(e,i,r){t(this,"_dictionaryType"),t(this,"_offsetType"),t(this,"_lengthType"),this._dictionaryType=e,this._offsetType=i,this._lengthType=r}get dictionaryType(){return this._dictionaryType}get offsetType(){return this._offsetType}get lengthType(){return this._lengthType}}function Id(e,t){const i=function(e,t){const i=e[t.get()],r=Object.values(nd)[i>>4];let n=null;switch(r){case nd.DATA:n=new Pd(Object.values(sd)[15&i]);break;case nd.OFFSET:n=new Pd(null,Object.values(od)[15&i]);break;case nd.LENGTH:n=new Pd(null,null,Object.values(ad)[15&i])}t.increment();const s=e[t.get()],o=Object.values(id)[s>>5],a=Object.values(id)[s>>2&7],l=Object.values(rd)[3&s];t.increment();const c=pd(e,t,2),h=c[0];return{physicalStreamType:r,logicalStreamType:n,logicalLevelTechnique1:o,logicalLevelTechnique2:a,physicalLevelTechnique:l,numValues:h,byteLength:c[1],decompressedCount:h}}(e,t);return i.logicalLevelTechnique1===id.MORTON?function(e,t,i){const r=pd(t,i,2);return{physicalStreamType:e.physicalStreamType,logicalStreamType:e.logicalStreamType,logicalLevelTechnique1:e.logicalLevelTechnique1,logicalLevelTechnique2:e.logicalLevelTechnique2,physicalLevelTechnique:e.physicalLevelTechnique,numValues:e.numValues,byteLength:e.byteLength,decompressedCount:e.decompressedCount,numBits:r[0],coordinateShift:r[1]}}(i,e,t):id.RLE!==i.logicalLevelTechnique1&&id.RLE!==i.logicalLevelTechnique2||rd.NONE===i.physicalLevelTechnique?i:function(e,t,i){const r=pd(t,i,2);return{physicalStreamType:e.physicalStreamType,logicalStreamType:e.logicalStreamType,logicalLevelTechnique1:e.logicalLevelTechnique1,logicalLevelTechnique2:e.logicalLevelTechnique2,physicalLevelTechnique:e.physicalLevelTechnique,numValues:e.numValues,byteLength:e.byteLength,decompressedCount:r[1],runs:r[0],numRleValues:r[1]}}(i,e,t)}!function(e){e.NONE="NONE",e.SINGLE="SINGLE",e.SHARED="SHARED",e.VERTEX="VERTEX",e.MORTON="MORTON",e.FSST="FSST"}(sd||(sd={})),function(e){e.VERTEX="VERTEX",e.INDEX="INDEX",e.STRING="STRING",e.KEY="KEY"}(od||(od={})),function(e){e.VAR_BINARY="VAR_BINARY",e.GEOMETRIES="GEOMETRIES",e.PARTS="PARTS",e.RINGS="RINGS",e.TRIANGLES="TRIANGLES",e.SYMBOL="SYMBOL",e.DICTIONARY="DICTIONARY"}(ad||(ad={})),function(e){e[e.FLAT=0]="FLAT",e[e.CONST=1]="CONST",e[e.SEQUENCE=2]="SEQUENCE",e[e.DICTIONARY=3]="DICTIONARY",e[e.FSST_DICTIONARY=4]="FSST_DICTIONARY"}(ld||(ld={}));class Md{constructor(e,i){t(this,"values"),t(this,"_size"),this.values=e,this._size=i}get(e){const t=Math.floor(e/8);return 1==(this.values[t]>>e%8&1)}set(e,t){const i=Math.floor(e/8);this.values[i]=this.values[i]|(t?1:0)<>e%8&1}size(){return this._size}getBuffer(){return this.values}}function Ed(e,t,i,r,n){return function(e,t,i){switch(t.logicalLevelTechnique1){case id.DELTA:return t.logicalLevelTechnique2===id.RLE?function(e,t,i){const r=new Int32Array(i);let n=0,s=0;for(let o=0;o>>1^-(1&e[0]);const t=e.length/4*4;let i=1;if(t>=4)for(;i>>1^-(1&t))+e[i-1],e[i+1]=(r>>>1^-(1&r))+e[i],e[i+2]=(n>>>1^-(1&n))+e[i+1],e[i+3]=(s>>>1^-(1&s))+e[i+2]}for(;i!=e.length;++i)e[i]=(e[i]>>>1^-(1&e[i]))+e[i-1]}(e),e);case id.RLE:return r=e,n=t,i?function(e,t,i){const r=new Int32Array(i);let n=0;for(let s=0;s>>1^-(1&o),r.fill(o,n,n+i),n+=i}return r}(r,n.runs,n.numRleValues):vd(r,n.runs,n.numRleValues);case id.MORTON:return Td(e),e;case id.COMPONENTWISE_DELTA:return Sd(e),e;case id.NONE:return i&&function(e){for(let t=0;t>>1^-(1&i)}}(e),e;default:throw new Error(`The specified Logical level technique is not supported: ${t.logicalLevelTechnique1}`)}var r,n}(Ad(e,t,i),i,r)}function Cd(e,t,i){return function(e,t){if(t.logicalLevelTechnique1===id.DELTA&&t.logicalLevelTechnique2===id.NONE)return function(e){const t=new Int32Array(e.length+1);t[0]=0,t[1]=gd(e[0]);let i=t[1],r=2;for(;r!=t.length;++r){const n=e[r-1];i+=n>>>1^-(1&n),t[r]=t[r-1]+i}return t}(e);if(t.logicalLevelTechnique1===id.RLE&&t.logicalLevelTechnique2===id.NONE)return function(e,t,i){const r=new Int32Array(i+1);r[0]=0;let n=1,s=r[0];for(let o=0;o>>1^-(1&a);for(let e=n;e>1n^-(1n&e[0]);const t=e.length/4*4;let i=1;if(t>=4)for(;i>1n^-(1n&t))+e[i-1],e[i+1]=(r>>1n^-(1n&r))+e[i],e[i+2]=(n>>1n^-(1n&n))+e[i+1],e[i+3]=(s>>1n^-(1n&s))+e[i+2]}for(;i!=e.length;++i)e[i]=(e[i]>>1n^-(1n&e[i]))+e[i-1]}(e),e);case id.RLE:return r=e,n=t,i?function(e,t,i){const r=new BigInt64Array(i);let n=0;for(let s=0;s>1n^-(1n&o),r.fill(o,n,n+i),n+=i}return r}(r,n.runs,n.numRleValues):bd(r,n.runs,n.numRleValues);case id.NONE:return i&&function(e){for(let t=0;t>1n^-(1n&i)}}(e),e;default:throw new Error(`The specified Logical level technique is not supported: ${t.logicalLevelTechnique1}`)}var r,n}(fd(e,t,i.numValues),i,r)}function Ld(e,t,i,r){const n=fd(e,t,i.numValues);if(1===n.length){const e=n[0];return r?yd(e):e}return r?yd(n[1]):n[1]}function Fd(e,t,i,r,n){return function(e,t,i,r){switch(t.logicalLevelTechnique1){case id.DELTA:return t.logicalLevelTechnique2===id.RLE&&(e=vd(e,t.runs,t.numRleValues)),function(e,t){const i=new Int32Array(e.size());let r=0;e.get(0)?(i[0]=e.get(0)?t[0]>>>1^-(1&t[0]):0,r=1):i[0]=0;let n=1;for(;n!=i.length;++n)i[n]=e.get(n)?i[n-1]+(t[r]>>>1^-(1&t[r++])):i[n-1];return i}(r,e);case id.RLE:return function(e,t,i,r){const n=t;return i?function(e,t,i){const r=new Int32Array(e.size());let n=0;for(let s=0;s>>1^-(1&a);for(let t=n;t>>1^-(1&e)}else i[n]=0;return i}(r,e):function(e,t){const i=new Int32Array(e.size());let r=0,n=0;for(;n!=i.length;++n)i[n]=e.get(n)?t[r++]:0;return i}(r,e);default:throw new Error("The specified Logical level technique is not supported")}}(i.physicalLevelTechnique===rd.FAST_PFOR?_d():pd(e,t,i.numValues),i,r,n)}function Bd(e,t,i,r){const n=e.logicalLevelTechnique1;if(n===id.RLE)return 1===e.runs?ld.CONST:ld.FLAT;const s=t instanceof Md?t.size():t;if(n===id.DELTA&&e.logicalLevelTechnique2===id.RLE){const t=e.runs,n=2;if(e.numRleValues!==s)return ld.FLAT;if(1===t)return ld.SEQUENCE;if(2===t){const t=r.get();let s;if(e.physicalLevelTechnique===rd.VARINT)s=pd(i,r,4);else{const e=r.get();s=new Int32Array(i.buffer,i.byteOffset+e,4)}if(r.set(t),s[2]===n&&s[3]===n)return ld.SEQUENCE}}return 1===e.numValues?ld.CONST:ld.FLAT}class Od extends Hu{getValueFromBuffer(e){return this.dataBuffer[e]}}class Vd extends Ku{constructor(e,t,i,r){super(e,BigInt64Array.of(t),i,r)}getValueFromBuffer(e){return this.dataBuffer[0]+BigInt(e)*this.delta}}class jd{constructor(e,i,r){t(this,"_geometryOffsets"),t(this,"_partOffsets"),t(this,"_ringOffsets"),this._geometryOffsets=e,this._partOffsets=i,this._ringOffsets=r}get geometryOffsets(){return this._geometryOffsets}get partOffsets(){return this._partOffsets}get ringOffsets(){return this._ringOffsets}}function Nd(e,t,i){return{x:Ud(e,t)-i,y:Ud(e>>1,t)-i}}function Ud(e,t){let i=0;for(let r=0;r>r;return i}!function(e){e[e.POINT=0]="POINT",e[e.LINESTRING=1]="LINESTRING",e[e.POLYGON=2]="POLYGON",e[e.MULTIPOINT=3]="MULTIPOINT",e[e.MULTILINESTRING=4]="MULTILINESTRING",e[e.MULTIPOLYGON=5]="MULTIPOLYGON"}(cd||(cd={})),function(e){e[e.POINT=0]="POINT",e[e.LINESTRING=1]="LINESTRING",e[e.POLYGON=2]="POLYGON"}(hd||(hd={})),function(e){e[e.MORTON=0]="MORTON",e[e.VEC_2=1]="VEC_2",e[e.VEC_3=2]="VEC_3"}(ud||(ud={}));class Gd{createPoint(e){return[[e]]}createMultiPoint(e){return e.map(e=>[e])}createLineString(e){return[e]}createMultiLineString(e){return e}createPolygon(e,t){return[e].concat(t)}createMultiPolygon(e){return e.flat()}}function qd(e){const t=new Array(e.numGeometries);let i=1,n=1,s=1,o=0;const a=new Gd;let l=0,c=0;const h=e.mortonSettings,u=e.topologyVector,d=u.geometryOffsets,p=u.partOffsets,f=u.ringOffsets,m=e.vertexOffsets,_=e.containsPolygonGeometry(),g=e.vertexBuffer;for(let y=0;y0&&t.push(t[0]),u.push(t)}e[h]=u,s&&c++}break;case cd.MULTIPOLYGON:{const t=s[c]-s[c-1];c++;const u=[];for(let e=0;e0&&t.push(t[0]),u.push(t)}}e[h]=u}}return e}[Symbol.iterator](){return null}}function tp(e,t,i,r,n,s){return new ip(e,t,i,r,n,s)}class ip extends ep{constructor(e,i,r,n,s,o){super(r,n,s,o),t(this,"_numGeometries"),t(this,"_geometryType"),this._numGeometries=e,this._geometryType=i}geometryType(e){return this._geometryType}get numGeometries(){return this._numGeometries}containsSingleGeometryType(){return!0}}function rp(e,t,i,r,n){return new np(e,t,i,r,n)}class np extends ep{constructor(e,i,r,n,s){super(i,r,n,s),t(this,"_geometryTypes"),this._geometryTypes=e}geometryType(e){return this._geometryTypes[e]}get numGeometries(){return this._geometryTypes.length}containsSingleGeometryType(){return!1}}function sp(e,t,i,r,n){const s=Id(e,i);let o=null,a=null,l=null,c=null,h=null,u=null,d=null,p=null;if(Bd(s,r,e,i)===ld.CONST){const n=Dd(e,i,s,!1);for(let r=0;ri?t[s++]:1);return r}function ap(e,t,i,r){const n=new Int32Array(t[t.length-1]+1);let s=0;n[0]=s;let o=1,a=0;for(let l=0;l=12?pp.decode(e.subarray(t,i)):function(e,t,i){let r="",n=t;for(;n239?4:t>223?3:t>191?2:1;if(n+c>i)break;1===c?t<128&&(l=t):2===c?(s=e[n+1],128==(192&s)&&(l=(31&t)<<6|63&s,l<=127&&(l=null))):3===c?(s=e[n+1],o=e[n+2],128==(192&s)&&128==(192&o)&&(l=(15&t)<<12|(63&s)<<6|63&o,(l<=2047||l>=55296&&l<=57343)&&(l=null))):4===c&&(s=e[n+1],o=e[n+2],a=e[n+3],128==(192&s)&&128==(192&o)&&128==(192&a)&&(l=(15&t)<<18|(63&s)<<12|(63&o)<<6|63&a,(l<=65535||l>=1114112)&&(l=null))),null===l?(l=65533,c=1):l>65535&&(l-=65536,r+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),r+=String.fromCharCode(l),n+=c}return r}(e,t,i)}class mp extends Wu{constructor(e,i,r,n){super(e,r,n),t(this,"offsetBuffer"),this.offsetBuffer=i}}class _p extends mp{constructor(e,i,r,n){super(e,i,r,n??i.length-1),t(this,"textEncoder"),this.textEncoder=new TextEncoder}getValueFromBuffer(e){return fp(this.dataBuffer,this.offsetBuffer[e],this.offsetBuffer[e+1])}}class gp extends mp{constructor(e,i,r,n,s){super(e,r,n,s??i.length),t(this,"indexBuffer"),t(this,"textEncoder"),this.indexBuffer=i,this.indexBuffer=i,this.textEncoder=new TextEncoder}getValueFromBuffer(e){const t=this.indexBuffer[e];return fp(this.dataBuffer,this.offsetBuffer[t],this.offsetBuffer[t+1])}}class yp extends mp{constructor(e,i,r,n,s,o,a){super(e,r,n,a),t(this,"indexBuffer"),t(this,"symbolOffsetBuffer"),t(this,"symbolTableBuffer"),t(this,"textEncoder"),t(this,"symbolLengthBuffer"),t(this,"lengthBuffer"),t(this,"decodedDictionary"),this.indexBuffer=i,this.symbolOffsetBuffer=s,this.symbolTableBuffer=o,this.textEncoder=new TextEncoder}getValueFromBuffer(e){null==this.decodedDictionary&&(null==this.symbolLengthBuffer&&(this.symbolLengthBuffer=this.offsetToLengthBuffer(this.symbolOffsetBuffer),this.lengthBuffer=this.offsetToLengthBuffer(this.offsetBuffer)),this.decodedDictionary=function(e,t,i){const r=[],n=new Array(t.length).fill(0);for(let s=1;s>1n^-(1n&t[0]):0n,r=1):i[0]=0n;let n=1;for(;n!=i.length;++n)i[n]=e.get(n)?i[n-1]+(t[r]>>1n^-(1n&t[r++])):i[n-1];return i}(r,e);case id.RLE:return function(e,t,i,r){const n=t;return i?function(e,t,i){const r=new BigInt64Array(e.size());let n=0;for(let s=0;s>1n^-(1n&a);for(let t=n;t>1n^-(1n&e)}else i[n]=0n;return i}(r,e):function(e,t){const i=new BigInt64Array(e.size());let r=0,n=0;for(;n!=i.length;++n)i[n]=e.get(n)?t[r++]:0n;return i}(r,e);default:throw new Error("The specified Logical level technique is not supported")}}(fd(e,t,(l=s).numValues),l,c,h)):Rd(e,t,s,a);return new Od(i.name,n,r)}var l,c,h;if(o===ld.SEQUENCE){const r=kd(e,t,s);return new Vd(i.name,r[0],r[1],s.numRleValues)}{const n=Ld(e,t,s,a);return new hp(i.name,n,r)}}(t,i,s,l,n);case 7:return function(e,t,i,r){const n=Id(e,t),s=vp(r)?function(e,t,i,r){const n=t.get(),s=n+r*Float32Array.BYTES_PER_ELEMENT,o=new Uint8Array(e.subarray(n,s)).buffer,a=new Float32Array(o);t.set(s);const l=i.size(),c=new Float32Array(l);let h=0;for(let u=0;u>>0,r=!!(4&i),n=!!(2&i),s=pd(e,t,1)[0]>>>0,o={};if(1&i&&(o.nullable=!0),n){const n={};if(r?(n.type="logicalType",n.logicalType=s):(n.type="physicalType",n.physicalType=s),8&i){const i=pd(e,t,1)[0]>>>0;n.children=new Array(i);for(let r=0;r>>0,r=function(e){switch(e){case 0:case 1:case 2:case 3:{const t={};t.nullable=!!(1&e),t.columnScope=0;const i={};return i.physicalType=e>1?6:4,i.type="physicalType",t.scalarType=i,t.type="scalarType",t}case 4:{const e={nullable:!1,columnScope:0},t={type:"physicalType",physicalType:0};return e.type="complexType",e.complexType=t,e}case 30:{const e={nullable:!1,columnScope:0},t={type:"physicalType",physicalType:1};return e.type="complexType",e.complexType=t,e}default:return function(e){let t=null;switch(e){case 10:case 11:t=0;break;case 12:case 13:t=1;break;case 14:case 15:t=2;break;case 16:case 17:t=3;break;case 18:case 19:t=4;break;case 20:case 21:t=5;break;case 22:case 23:t=6;break;case 24:case 25:t=7;break;case 26:case 27:t=8;break;case 28:case 29:t=9;break;default:return null}const i={};i.nullable=!!(1&e),i.columnScope=0;const r={type:"physicalType"};return r.physicalType=t,i.type="scalarType",i.scalarType=r,i}(e)}}(i);if(!r)throw new Error(`Unsupported column type code: ${i}`);if(i>=10?r.name=Tp(e,t):i>=0&&i<=3?r.name="id":4===i&&(r.name="geometry"),function(e){return 30===e}(i)){const i=pd(e,t,1)[0]>>>0,n=r.complexType;n.children=new Array(i);for(let r=0;r>>0,s=pd(e,t,1)[0]>>>0;r.columns=new Array(s);for(let o=0;o=4)for(;i>>0,s=r.get()+t;if(s>e.length)throw new Error(`Block overruns tile: ${s} > ${e.length}`);if(1!=pd(e,r,1)[0]>>>0){r.set(s);continue}const o=Ip(e,r),a=o[1],l=o[0].featureTables[0];let c=null,h=null;const u=[];let d=0;for(const n of l.columns){const t=n.name;if("id"===t){let s=null;if(n.nullable){const t=Id(e,r),i=r.get(),n=up(e,t.numValues,r);r.set(i+t.byteLength),s=new Md(n,t.numValues)}const o=Id(e,r);d=o.decompressedCount,c=Mp(e,n,r,t,o,s??d,i)}else if("geometry"===t){const t=pd(e,r,1)[0];if(0===d){const t=r.get();d=Id(e,r).decompressedCount,r.set(t)}h=sp(e,t,r,d)}else{const t=bp(n)?pd(e,r,1)[0]:1;if(0===t&&"scalarType"===n.type)continue;const i=xp(e,r,n,t,d);if(i)if(Array.isArray(i))for(const e of i)u.push(e);else u.push(i)}}const p=new ed(l.name,h,c,u,a);n.push(p),r.set(s)}return n}(new Uint8Array(e));this.layers=t.reduce((e,t)=>Object.assign(Object.assign({},e),{[t.name]:new Cp(t)}),{})}}class Dp{constructor(e,t){this.feature=e,this.type=e.type,this.properties=e.tags?e.tags:{},this.extent=t,"id"in e&&("string"==typeof e.id?this.id=parseInt(e.id,10):"number"!=typeof e.id||isNaN(e.id)||(this.id=e.id))}loadGeometry(){const e=[],t=1===this.feature.type?[this.feature.geometry]:this.feature.geometry;for(const i of t){const t=[];for(const e of i)t.push(new r(e[0],e[1]));e.push(t)}return e}}const zp="_geojsonTileLayer";function kp(e,t){t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||""),t.writeVarintField(5,e.extent||4096);const i={keys:[],values:[],keycache:{},valuecache:{}};for(let s=0;s>31}function Op(e,t){const i=e.loadGeometry(),r=e.type;let n=0,s=0;for(const o of i){let i=1;1===r&&(i=o.length),t.writeVarint(Fp(1,i));const a=3===r?o.length-1:o.length;for(let e=0;e=0&&i[3]>=0&&a.insert(o,i[0],i[1],i[2],i[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers="mlt"!==this.encoding?new Lc(new Mh(this.rawTileData)).layers:new Ap(this.rawTileData).layers,this.sourceLayerCoder=new Zu(this.vtLayers?Object.keys(this.vtLayers).sort():[zp])),this.vtLayers}query(e,t,i,n){this.loadVTLayers();const s=e.params,o=A/e.tileSize/e.scale,a=pn(s.filter,s.globalState),l=e.queryGeometry,c=e.queryPadding*o,h=qu.fromPoints(l),u=this.grid.query(h.minX-c,h.minY-c,h.maxX+c,h.maxY+c),d=qu.fromPoints(e.cameraQueryGeometry).expandBy(c),p=this.grid3D.query(d.minX,d.minY,d.maxX,d.maxY,(t,i,n,s)=>function(e,t,i,n,s){for(const r of e)if(t<=r.x&&i<=r.y&&n>=r.x&&s>=r.y)return!0;const o=[new r(t,i),new r(t,s),new r(n,s),new r(n,i)];if(e.length>2)for(const r of o)if(el(e,r))return!0;for(let r=0;r(d||(d=ja(t)),i.queryIntersectsFeature({queryGeometry:l,feature:t,featureState:r,geometry:d,zoom:this.z,transform:e.transform,pixelsToTileUnits:o,pixelPosMatrix:e.pixelPosMatrix,unwrappedTileID:this.tileID.toUnwrapped(),getElevation:e.getElevation})))}return f}loadMatchingFeature(e,t,i,r,n,s,o,a,l,c,h){const u=this.bucketLayerIDs[t];if(s&&!u.some(e=>s.has(e)))return;const d=this.sourceLayerCoder.decode(i),p=this.vtLayers[d].feature(r);if(n.needGeometry){const e=Na(p,!0);if(!n.filter(new ks(this.tileID.overscaledZ),e,this.tileID.canonical))return}else if(!n.filter(new ks(this.tileID.overscaledZ),p))return;const f=this.getId(p,d);for(let m=0;m{const o=t instanceof Gs?t.get(s):null;return o&&o.evaluate?o.evaluate(i,r,n):o})}function Up(e,t){return t-e}function Gp(e,t,i,n,s){const o=[];for(let a=0;a=n&&h.x>=n||(a.x>=n?a=new r(n,a.y+(n-a.x)/(h.x-a.x)*(h.y-a.y))._round():h.x>=n&&(h=new r(n,a.y+(n-a.x)/(h.x-a.x)*(h.y-a.y))._round()),a.y>=s&&h.y>=s||(a.y>=s?a=new r(a.x+(s-a.y)/(h.y-a.y)*(h.x-a.x),s)._round():h.y>=s&&(h=new r(a.x+(s-a.y)/(h.y-a.y)*(h.x-a.x),s)._round()),c&&a.equals(c[c.length-1])||(c=[a],o.push(c)),c.push(h)))))}}return o}function qp(e,t,i,r,n){switch(t){case 1:return function(e,t,i,r){const n=[];for(const s of e)for(const e of s){const s=0===r?e.x:e.y;s>=t&&s<=i&&n.push([e])}return n}(e,i,r,n);case 2:return $p(e,i,r,n,!1);case 3:return $p(e,i,r,n,!0)}return[]}function Zp(e,t,i,n,s){const o=0===n?Wp:Hp;let a=[];const l=[];for(let r=0;rt&&a.push(o(c,h,t)):u>i?d=t&&(a.push(o(c,h,t)),p=!0),d>i&&u<=i&&(a.push(o(c,h,i)),p=!0),!s&&p&&(l.push(a),a=[])}const c=e.length-1,h=0===n?e[c].x:e[c].y;return h>=t&&h<=i&&a.push(e[c]),s&&a.length>0&&!a[0].equals(a[a.length-1])&&a.push(new r(a[0].x,a[0].y)),a.length>0&&l.push(a),l}function $p(e,t,i,r,n){const s=[];for(const o of e){const e=Zp(o,t,i,r,n);e.length>0&&s.push(...e)}return s}function Wp(e,t,i){return new r(i,e.y+(i-e.x)/(t.x-e.x)*(t.y-e.y))}function Hp(e,t,i){return new r(e.x+(i-e.y)/(t.y-e.y)*(t.x-e.x),i)}ds("FeatureIndex",jp,{omit:["rawTileData","sourceLayerCoder"]});class Xp extends r{constructor(e,t,i,r){super(e,t),this.angle=i,void 0!==r&&(this.segment=r)}clone(){return new Xp(this.x,this.y,this.angle,this.segment)}}function Yp(e,t,i,r,n){if(void 0===t.segment||0===i)return!0;let s=t,o=t.segment+1,a=0;for(;a>-i/2;){if(o--,o<0)return!1;a-=e[o].dist(s),s=e[o]}a+=e[o].dist(e[o+1]),o++;const l=[];let c=0;for(;ar;)c-=l.shift().angleDelta;if(c>n)return!1;o++,a+=t.dist(i)}return!0}function Kp(e){let t=0;for(let i=0;ic){const s=(c-l)/n,u=mi.number(i.x,r.x,s),d=mi.number(i.y,r.y,s),p=new Xp(u,d,r.angleTo(i),h);return p._round(),!o||Yp(e,p,a,o,t)?p:void 0}l+=n}}function tf(e,t,i,r,n,s,o,a,l){const c=Jp(r,s,o),h=Qp(r,n),u=h*o,d=0===e[0].x||e[0].x===l||0===e[0].y||e[0].y===l;return t-u=0&&g=0&&y=0&&d+c<=h){const t=new Xp(g,y,m,f);t._round(),r&&!Yp(e,t,s,r,n)||p.push(t)}}u+=a}return a||p.length||o||(p=rf(e,u/2,i,r,n,s,o,!0,l)),p}function nf(e,t,i,n){const s=[],o=e.image,a=o.pixelRatio,l=o.paddedRect.w-2,c=o.paddedRect.h-2;let h={x1:e.left,y1:e.top,x2:e.right,y2:e.bottom};const u=o.stretchX||[[0,l]],d=o.stretchY||[[0,c]],p=(e,t)=>e+t[1]-t[0],f=u.reduce(p,0),m=d.reduce(p,0),_=l-f,g=c-m;let y=0,x=f,v=0,b=m,w=0,T=_,S=0,P=g;if(o.content&&n){const t=o.content,i=t[2]-t[0],r=t[3]-t[1];(o.textFitWidth||o.textFitHeight)&&(h=tu(e)),y=sf(u,0,t[0]),v=sf(d,0,t[1]),x=sf(u,t[0],t[2]),b=sf(d,t[1],t[3]),w=t[0]-y,S=t[1]-v,T=i-x,P=r-b}const I=h.x1,M=h.y1,E=h.x2-I,C=h.y2-M,A=(e,n,s,l)=>{const c=af(e.stretch-y,x,E,I),h=lf(e.fixed-w,T,e.stretch,f),u=af(n.stretch-v,b,C,M),d=lf(n.fixed-S,P,n.stretch,m),p=af(s.stretch-y,x,E,I),_=lf(s.fixed-w,T,s.stretch,f),g=af(l.stretch-v,b,C,M),A=lf(l.fixed-S,P,l.stretch,m),D=new r(c,u),z=new r(p,u),k=new r(p,g),R=new r(c,g),L=new r(h/a,d/a),F=new r(_/a,A/a),B=t*Math.PI/180;if(B){const e=Math.sin(B),t=Math.cos(B),i=[t,-e,e,t];D._matMult(i),z._matMult(i),R._matMult(i),k._matMult(i)}const O=e.stretch+e.fixed,V=n.stretch+n.fixed;return{tl:D,tr:z,bl:R,br:k,tex:{x:o.paddedRect.x+1+O,y:o.paddedRect.y+1+V,w:s.stretch+s.fixed-O,h:l.stretch+l.fixed-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:L,pixelOffsetBR:F,minFontScaleX:T/a/E,minFontScaleY:P/a/C,isSDF:i}};if(n&&(o.stretchX||o.stretchY)){const e=of(u,_,f),t=of(d,g,m);for(let i=0;i0&&(r=Math.max(10,r),this.circleDiameter=r)}else{const c=(null===(u=o.image)||void 0===u?void 0:u.content)&&(o.image.textFitWidth||o.image.textFitHeight)?tu(o):{x1:o.left,y1:o.top,x2:o.right,y2:o.bottom};c.y1=c.y1*a-l[0],c.y2=c.y2*a+l[2],c.x1=c.x1*a-l[3],c.x2=c.x2*a+l[1];const d=o.collisionPadding;if(d&&(c.x1-=d[0]*a,c.y1-=d[1]*a,c.x2+=d[2]*a,c.y2+=d[3]*a),h){const e=new r(c.x1,c.y1),t=new r(c.x2,c.y1),i=new r(c.x1,c.y2),n=new r(c.x2,c.y2),s=h*Math.PI/180;e._rotate(s),t._rotate(s),i._rotate(s),n._rotate(s),c.x1=Math.min(e.x,t.x,i.x,n.x),c.x2=Math.max(e.x,t.x,i.x,n.x),c.y1=Math.min(e.y,t.y,i.y,n.y),c.y2=Math.max(e.y,t.y,i.y,n.y)}e.emplaceBack(t.x,t.y,c.x1,c.y1,c.x2,c.y2,i,n,s)}this.boxEndIndex=e.length}}class hf{constructor(e=[],t=(e,t)=>et?1:0){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let i=(this.length>>1)-1;i>=0;i--)this._down(i)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:i}=this,r=t[e];for(;e>0;){const n=e-1>>1,s=t[n];if(i(r,s)>=0)break;t[e]=s,e=n}t[e]=r}_down(e){const{data:t,compare:i}=this,r=this.length>>1,n=t[e];for(;e=0)break;t[e]=t[r],e=r}t[e]=n}}function uf(e,t=1,i=!1){const n=qu.fromPoints(e[0]),s=Math.min(n.width(),n.height());let o=s/2;const a=new hf([],df),{minX:l,minY:c,maxX:h,maxY:u}=n;if(0===s)return new r(l,c);for(let r=l;rd.d||!d.d)&&(d=i),i.max-d.d<=t||(o=i.h/2,a.push(new pf(i.p.x-o,i.p.y-o,o,e)),a.push(new pf(i.p.x+o,i.p.y-o,o,e)),a.push(new pf(i.p.x-o,i.p.y+o,o,e)),a.push(new pf(i.p.x+o,i.p.y+o,o,e)),p+=4)}return d.p}function df(e,t){return t.max-e.max}function pf(e,t,i,n){this.p=new r(e,t),this.h=i,this.d=function(e,t){let i=!1,r=1/0;for(let n=0;ne.y!=a.y>e.y&&e.x<(a.x-n.x)*(e.y-n.y)/(a.y-n.y)+n.x&&(i=!i),r=Math.min(r,Ja(e,n,a))}}return(i?1:-1)*Math.sqrt(r)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}var ff;e.aP=void 0,(ff=e.aP||(e.aP={}))[ff.center=1]="center",ff[ff.left=2]="left",ff[ff.right=3]="right",ff[ff.top=4]="top",ff[ff.bottom=5]="bottom",ff[ff["top-left"]=6]="top-left",ff[ff["top-right"]=7]="top-right",ff[ff["bottom-left"]=8]="bottom-left",ff[ff["bottom-right"]=9]="bottom-right";const mf=Number.POSITIVE_INFINITY;function _f(e,t){return t[1]!==mf?function(e,t,i){let r=0,n=0;switch(t=Math.abs(t),i=Math.abs(i),e){case"top-right":case"top-left":case"top":n=i-7;break;case"bottom-right":case"bottom-left":case"bottom":n=7-i}switch(e){case"top-right":case"bottom-right":case"right":r=-t;break;case"top-left":case"bottom-left":case"left":r=t}return[r,n]}(e,t[0],t[1]):function(e,t){let i=0,r=0;t<0&&(t=0);const n=t/Math.SQRT2;switch(e){case"top-right":case"top-left":r=n-7;break;case"bottom-right":case"bottom-left":r=7-n;break;case"bottom":r=7-t;break;case"top":r=t-7}switch(e){case"top-right":case"bottom-right":i=-n;break;case"top-left":case"bottom-left":i=n;break;case"left":i=t;break;case"right":i=-t}return[i,r]}(e,t[0])}function gf(e,t,i){var r;const n=e.layout,s=null===(r=n.get("text-variable-anchor-offset"))||void 0===r?void 0:r.evaluate(t,{},i);if(s){const e=s.values,t=[];for(let i=0;ie*fh);r.startsWith("top")?n[1]-=7:r.startsWith("bottom")&&(n[1]+=7),t[i+1]=n}return new Ot(t)}const o=n.get("text-variable-anchor");if(o){let r;r=void 0!==e._unevaluatedLayout.getValue("text-radial-offset")?[n.get("text-radial-offset").evaluate(t,{},i)*fh,mf]:n.get("text-offset").evaluate(t,{},i).map(e=>e*fh);const s=[];for(const e of o)s.push(e,_f(e,r));return new Ot(s)}return null}function yf(e){switch(e){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function xf(t,i,r,n,s,o,a,l,c,h,u,d){let p=o.textMaxSize.evaluate(i,{});void 0===p&&(p=a);const f=t.layers[0].layout,m=f.get("icon-offset").evaluate(i,{},u),_=bf(r.horizontal),g=a/24,y=t.tilePixelRatio*g,x=t.tilePixelRatio*p/24,v=t.tilePixelRatio*l,b=t.tilePixelRatio*f.get("symbol-spacing"),w=f.get("text-padding")*t.tilePixelRatio,T=function(e,t,i,r=1){const n=e.get("icon-padding").evaluate(t,{},i),s=n&&n.values;return[s[0]*r,s[1]*r,s[2]*r,s[3]*r]}(f,i,u,t.tilePixelRatio),S=f.get("text-max-angle")/180*Math.PI,P="viewport"!==f.get("text-rotation-alignment")&&"point"!==f.get("symbol-placement"),I="map"===f.get("icon-rotation-alignment")&&"point"!==f.get("symbol-placement"),M=f.get("symbol-placement"),E=b/2,C=f.get("icon-text-fit");let D;n&&"none"!==C&&(t.allowVerticalPlacement&&r.vertical&&(D=iu(n,r.vertical,C,f.get("icon-text-fit-padding"),m,g)),_&&(n=iu(n,_,C,f.get("icon-text-fit-padding"),m,g)));const z=u?d.line.getGranularityForZoomLevel(u.z):1,k=(l,d)=>{d.x<0||d.x>=A||d.y<0||d.y>=A||function(t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v,b,w,T,S,P){const I=t.addToLineVertexArray(i,r);let M,E,C,A,D=0,z=0,k=0,R=0,L=-1,F=-1;const B={};let O=_a("");if(t.allowVerticalPlacement&&n.vertical){const e=l.layout.get("text-rotate").evaluate(b,{},S)+90;C=new cf(c,i,h,u,d,n.vertical,p,f,m,e),a&&(A=new cf(c,i,h,u,d,a,g,y,m,e))}if(s){const r=l.layout.get("icon-rotate").evaluate(b,{}),n="none"!==l.layout.get("icon-text-fit"),o=nf(s,r,T,n),p=a?nf(a,r,T,n):void 0;E=new cf(c,i,h,u,d,s,g,y,!1,r),D=4*o.length;const f=t.iconSizeData;let m=null;"source"===f.kind?(m=[ru*l.layout.get("icon-size").evaluate(b,{})],m[0]>nu&&Z(`${t.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):"composite"===f.kind&&(m=[ru*w.compositeIconSizes[0].evaluate(b,{},S),ru*w.compositeIconSizes[1].evaluate(b,{},S)],(m[0]>nu||m[1]>nu)&&Z(`${t.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),t.addSymbols(t.icon,o,m,v,x,b,e.az.none,i,I.lineStartIndex,I.lineLength,-1,S),L=t.icon.placedSymbolArray.length-1,p&&(z=4*p.length,t.addSymbols(t.icon,p,m,v,x,b,e.az.vertical,i,I.lineStartIndex,I.lineLength,-1,S),F=t.icon.placedSymbolArray.length-1)}const V=Object.keys(n.horizontal);for(const Z of V){const r=n.horizontal[Z];if(!M){O=_a(r.text);const e=l.layout.get("text-rotate").evaluate(b,{},S);M=new cf(c,i,h,u,d,r,p,f,m,e)}const s=1===r.positionedLines.length;if(k+=vf(t,i,r,o,l,m,b,_,I,n.vertical?e.az.horizontal:e.az.horizontalOnly,s?V:[Z],B,L,w,S),s)break}n.vertical&&(R+=vf(t,i,n.vertical,o,l,m,b,_,I,e.az.vertical,["vertical"],B,F,w,S));const j=M?M.boxStartIndex:t.collisionBoxArray.length,N=M?M.boxEndIndex:t.collisionBoxArray.length,U=C?C.boxStartIndex:t.collisionBoxArray.length,G=C?C.boxEndIndex:t.collisionBoxArray.length,q=E?E.boxStartIndex:t.collisionBoxArray.length,$=E?E.boxEndIndex:t.collisionBoxArray.length,W=A?A.boxStartIndex:t.collisionBoxArray.length,H=A?A.boxEndIndex:t.collisionBoxArray.length;let X=-1;const Y=(e,t)=>e&&e.circleDiameter?Math.max(e.circleDiameter,t):t;X=Y(M,X),X=Y(C,X),X=Y(E,X),X=Y(A,X);const K=X>-1?1:0;K&&(X*=P/fh),t.glyphOffsetArray.length>=pu.MAX_GLYPHS&&Z("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==b.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,b.sortKey);const J=gf(l,b,S),[Q,ee]=function(t,i){const r=t.length,n=null==i?void 0:i.values;if((null==n?void 0:n.length)>0)for(let s=0;s=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,L,F,O,j,N,U,G,q,$,W,H,h,k,R,D,z,K,0,p,X,Q,ee)}(t,d,l,r,n,s,D,t.layers[0],t.collisionBoxArray,i.index,i.sourceLayerIndex,t.index,y,[w,w,w,w],P,c,v,T,I,m,i,o,h,u,a)};if("line"===M)for(const e of Gp(i.geometry,0,0,A,A)){const i=gc(e,z),s=tf(i,b,S,r.vertical||_,n,24,x,t.overscaling,A);for(const e of s)_&&wf(t,_.text,E,e)||k(i,e)}else if("line-center"===M){for(const e of i.geometry)if(e.length>1){const t=gc(e,z),i=ef(t,S,r.vertical||_,n,24,x);i&&k(t,i)}}else if("Polygon"===i.type)for(const e of er(i.geometry,0)){const t=uf(e,16);k(gc(e[0],z,!0),new Xp(t.x,t.y,0))}else if("LineString"===i.type)for(const e of i.geometry){const t=gc(e,z);k(t,new Xp(t[0].x,t[0].y,0))}else if("Point"===i.type)for(const e of i.geometry)for(const t of e)k([t],new Xp(t.x,t.y,0))}function vf(e,t,i,n,s,o,a,l,c,h,u,d,p,f,m){const _=function(e,t,i,n,s,o,a,l){const c=n.layout.get("text-rotate").evaluate(o,{})*Math.PI/180,h=[];for(const u of t.positionedLines)for(const e of u.positionedGlyphs){if(!e.rect)continue;const n=e.rect||{};let o=4,d=!0,p=1,f=0;const m=(s||l)&&e.vertical,_=e.metrics.advance*e.scale/2;if(l&&t.verticalizable&&(f=u.lineOffset/2-(e.imageName?-(fh-e.metrics.width*e.scale)/2:(e.scale-1)*fh)),e.imageName){const t=a[e.imageName];d=t.sdf,p=t.pixelRatio,o=1/p}const g=s?[e.x+_,e.y]:[0,0];let y=s?[0,0]:[e.x+_+i[0],e.y+i[1]-f],x=[0,0];m&&(x=y,y=[0,0]);const v=e.metrics.isDoubleResolution?2:1,b=(e.metrics.left-o)*e.scale-_+y[0],w=(-e.metrics.top-o)*e.scale+y[1],T=b+n.w/v*e.scale/p,S=w+n.h/v*e.scale/p,P=new r(b,w),I=new r(T,w),M=new r(b,S),E=new r(T,S);if(m){const t=new r(-_,_- -17),i=-Math.PI/2,n=12-_,s=new r(22-n,-(e.imageName?n:0)),o=new r(...x);P._rotateAround(i,t)._add(s)._add(o),I._rotateAround(i,t)._add(s)._add(o),M._rotateAround(i,t)._add(s)._add(o),E._rotateAround(i,t)._add(s)._add(o)}if(c){const e=Math.sin(c),t=Math.cos(c),i=[t,-e,e,t];P._matMult(i),I._matMult(i),M._matMult(i),E._matMult(i)}const C=new r(0,0),A=new r(0,0);h.push({tl:P,tr:I,bl:M,br:E,tex:n,writingMode:t.writingMode,glyphOffset:g,sectionIndex:e.sectionIndex,isSDF:d,pixelOffsetTL:C,pixelOffsetBR:A,minFontScaleX:0,minFontScaleY:0})}return h}(0,i,l,s,o,a,n,e.allowVerticalPlacement),g=e.textSizeData;let y=null;"source"===g.kind?(y=[ru*s.layout.get("text-size").evaluate(a,{})],y[0]>nu&&Z(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):"composite"===g.kind&&(y=[ru*f.compositeTextSizes[0].evaluate(a,{},m),ru*f.compositeTextSizes[1].evaluate(a,{},m)],(y[0]>nu||y[1]>nu)&&Z(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),e.addSymbols(e.text,_,y,l,o,a,h,t,c.lineStartIndex,c.lineLength,p,m);for(const r of u)d[r]=e.text.placedSymbolArray.length-1;return 4*_.length}function bf(e){for(const t in e)return e[t];return null}function wf(e,t,i,r){const n=e.compareText;if(t in n){const e=n[t];for(let t=e.length-1;t>=0;t--)if(r.dist(e[t])>4;if(1!==r)throw new Error(`Got v${r} data when expected v1.`);const n=Tf[15&i];if(!n)throw new Error("Unrecognized array type.");const[s]=new Uint16Array(e,2,1),[o]=new Uint32Array(e,4,1);return new Sf(o,s,n,e)}constructor(e,t=64,i=Float64Array,r){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+t,2),65535),this.ArrayType=i,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;const n=Tf.indexOf(this.ArrayType),s=2*e*this.ArrayType.BYTES_PER_ELEMENT,o=e*this.IndexArrayType.BYTES_PER_ELEMENT,a=(8-o%8)%8;if(n<0)throw new Error(`Unexpected typed array class: ${i}.`);r&&r instanceof ArrayBuffer?(this.data=r,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+o+a,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+s+o+a),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+o+a,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+n]),new Uint16Array(this.data,2,1)[0]=t,new Uint32Array(this.data,4,1)[0]=e)}add(e,t){const i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=e,this.coords[this._pos++]=t,i}finish(){const e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return Pf(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,t,i,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:n,coords:s,nodeSize:o}=this,a=[0,n.length-1,0],l=[];for(;a.length;){const c=a.pop()||0,h=a.pop()||0,u=a.pop()||0;if(h-u<=o){for(let o=u;o<=h;o++){const a=s[2*o],c=s[2*o+1];a>=e&&a<=i&&c>=t&&c<=r&&l.push(n[o])}continue}const d=u+h>>1,p=s[2*d],f=s[2*d+1];p>=e&&p<=i&&f>=t&&f<=r&&l.push(n[d]),(0===c?e<=p:t<=f)&&(a.push(u),a.push(d-1),a.push(1-c)),(0===c?i>=p:r>=f)&&(a.push(d+1),a.push(h),a.push(1-c))}return l}within(e,t,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:r,coords:n,nodeSize:s}=this,o=[0,r.length-1,0],a=[],l=i*i;for(;o.length;){const c=o.pop()||0,h=o.pop()||0,u=o.pop()||0;if(h-u<=s){for(let i=u;i<=h;i++)Cf(n[2*i],n[2*i+1],e,t)<=l&&a.push(r[i]);continue}const d=u+h>>1,p=n[2*d],f=n[2*d+1];Cf(p,f,e,t)<=l&&a.push(r[d]),(0===c?e-i<=p:t-i<=f)&&(o.push(u),o.push(d-1),o.push(1-c)),(0===c?e+i>=p:t+i>=f)&&(o.push(d+1),o.push(h),o.push(1-c))}return a}}function Pf(e,t,i,r,n,s){if(n-r<=i)return;const o=r+n>>1;If(e,t,o,r,n,s),Pf(e,t,i,r,o-1,1-s),Pf(e,t,i,o+1,n,1-s)}function If(e,t,i,r,n,s){for(;n>r;){if(n-r>600){const o=n-r+1,a=i-r+1,l=Math.log(o),c=.5*Math.exp(2*l/3),h=.5*Math.sqrt(l*c*(o-c)/o)*(a-o/2<0?-1:1);If(e,t,i,Math.max(r,Math.floor(i-a*c/o+h)),Math.min(n,Math.floor(i+(o-a)*c/o+h)),s)}const o=t[2*i+s];let a=r,l=n;for(Mf(e,t,r,i),t[2*n+s]>o&&Mf(e,t,r,n);ao;)l--}t[2*r+s]===o?Mf(e,t,r,l):(l++,Mf(e,t,l,n)),l<=i&&(r=l+1),i<=l&&(n=l-1)}}function Mf(e,t,i,r){Ef(e,i,r),Ef(t,2*i,2*r),Ef(t,2*i+1,2*r+1)}function Ef(e,t,i){const r=e[t];e[t]=e[i],e[i]=r}function Cf(e,t,i,r){const n=e-i,s=t-r;return n*n+s*s}var Af;e.cH=void 0,(Af=e.cH||(e.cH={})).create="create",Af.load="load",Af.fullLoad="fullLoad";let Df=null,zf=[];const kf=1e3/60,Rf="loadTime",Lf="fullLoadTime",Ff={mark(e){performance.mark(e)},frame(e){const t=e;null!=Df&&zf.push(t-Df),Df=t},clearMetrics(){Df=null,zf=[],performance.clearMeasures(Rf),performance.clearMeasures(Lf);for(const t in e.cH)performance.clearMarks(e.cH[t])},getPerformanceMetrics(){performance.measure(Rf,e.cH.create,e.cH.load),performance.measure(Lf,e.cH.create,e.cH.fullLoad);const t=performance.getEntriesByName(Rf)[0].duration,i=performance.getEntriesByName(Lf)[0].duration,r=zf.length,n=1/(zf.reduce((e,t)=>e+t,0)/r/1e3),s=zf.filter(e=>e>kf).reduce((e,t)=>e+(t-kf)/kf,0);return{loadTime:t,fullLoadTime:i,fps:n,percentDroppedFrames:s/(r+s)*100,totalFrames:r}}};e.$=u,e.A=f,e.B=cs,e.C=ns,e.D=qs,e.E=xe,e.F=function([e,t,i]){return t+=90,t*=Math.PI/180,i*=Math.PI/180,{x:e*Math.cos(t)*Math.sin(i),y:e*Math.sin(t)*Math.sin(i),z:e*Math.cos(i)}},e.G=mi,e.H=ks,e.I=Gh,e.J=os,e.K=function(e){if(null==H){const t=e.navigator?e.navigator.userAgent:null;H=!!e.safari||!(!t||!(/\b(iPad|iPhone|iPod)\b/.test(t)||t.match("Safari")&&!t.match("Chrome")))}return H},e.L=class{constructor(e,t){this.target=e,this.mapId=t,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new Tu(()=>this.process()),this.subscription=ee(this.target,"message",e=>this.receive(e),!1),this.globalScope=W(self)?e:window}registerMessageHandler(e,t){this.messageHandlers[e]=t}unregisterMessageHandler(e){delete this.messageHandlers[e]}sendAsync(e,t){return new Promise((i,r)=>{const n=Math.round(1e18*Math.random()).toString(36).substring(0,10),s=t?ee(t.signal,"abort",()=>{null==s||s.unsubscribe(),delete this.resolveRejects[n];const t={id:n,type:"",origin:location.origin,targetMapId:e.targetMapId,sourceMapId:this.mapId};this.target.postMessage(t)},Su):null;this.resolveRejects[n]={resolve:e=>{null==s||s.unsubscribe(),i(e)},reject:e=>{null==s||s.unsubscribe(),r(e)}};const o=[],a=Object.assign(Object.assign({},e),{id:n,sourceMapId:this.mapId,origin:location.origin,data:_s(e.data,o)});this.target.postMessage(a,{transfer:o})})}receive(e){const t=e.data,i=t.id;if(!("file://"!==t.origin&&"file://"!==location.origin&&"resource://android"!==t.origin&&"resource://android"!==location.origin&&t.origin!==location.origin||t.targetMapId&&this.mapId!==t.targetMapId)){if(""===t.type){delete this.tasks[i];const e=this.abortControllers[i];return delete this.abortControllers[i],void(e&&e.abort())}if(W(self)||t.mustQueue)return this.tasks[i]=t,this.taskQueue.push(i),void this.invoker.trigger();this.processTask(i,t)}}process(){if(0===this.taskQueue.length)return;const e=this.taskQueue.shift(),t=this.tasks[e];delete this.tasks[e],this.taskQueue.length>0&&this.invoker.trigger(),t&&this.processTask(e,t)}processTask(e,t){return i(this,void 0,void 0,function*(){if(""===t.type){const i=this.resolveRejects[e];if(delete this.resolveRejects[e],!i)return;return void(t.error?i.reject(gs(t.error)):i.resolve(gs(t.data)))}if(!this.messageHandlers[t.type])return void this.completeTask(e,new Error(`Could not find a registered handler for ${t.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));const i=gs(t.data),r=new AbortController;this.abortControllers[e]=r;try{const n=yield this.messageHandlers[t.type](t.sourceMapId,i,r);this.completeTask(e,null,n)}catch(n){this.completeTask(e,n)}})}completeTask(e,t,i){const r=[];delete this.abortControllers[e];const n={id:e,type:"",sourceMapId:this.mapId,origin:location.origin,error:t?_s(t):null,data:_s(i,r)};this.target.postMessage(n,{transfer:r})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},e.M=he,e.N=function(){var e=new f(16);return f!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e},e.O=function(e,t,i){var r,n,s,o,a,l,c,h,u,d,p,f,m=i[0],_=i[1],g=i[2];return t===e?(e[12]=t[0]*m+t[4]*_+t[8]*g+t[12],e[13]=t[1]*m+t[5]*_+t[9]*g+t[13],e[14]=t[2]*m+t[6]*_+t[10]*g+t[14],e[15]=t[3]*m+t[7]*_+t[11]*g+t[15]):(n=t[1],s=t[2],o=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=t[9],p=t[10],f=t[11],e[0]=r=t[0],e[1]=n,e[2]=s,e[3]=o,e[4]=a,e[5]=l,e[6]=c,e[7]=h,e[8]=u,e[9]=d,e[10]=p,e[11]=f,e[12]=r*m+a*_+u*g+t[12],e[13]=n*m+l*_+d*g+t[13],e[14]=s*m+c*_+p*g+t[14],e[15]=o*m+h*_+f*g+t[15]),e},e.P=r,e.Q=function(e,t,i){var r=i[0],n=i[1],s=i[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},e.R=Tl,e.S=function(e,t,i){var r=t[0],n=t[1],s=t[2],o=t[3],a=t[4],l=t[5],c=t[6],h=t[7],u=t[8],d=t[9],p=t[10],f=t[11],m=t[12],_=t[13],g=t[14],y=t[15],x=i[0],v=i[1],b=i[2],w=i[3];return e[0]=x*r+v*a+b*u+w*m,e[1]=x*n+v*l+b*d+w*_,e[2]=x*s+v*c+b*p+w*g,e[3]=x*o+v*h+b*f+w*y,e[4]=(x=i[4])*r+(v=i[5])*a+(b=i[6])*u+(w=i[7])*m,e[5]=x*n+v*l+b*d+w*_,e[6]=x*s+v*c+b*p+w*g,e[7]=x*o+v*h+b*f+w*y,e[8]=(x=i[8])*r+(v=i[9])*a+(b=i[10])*u+(w=i[11])*m,e[9]=x*n+v*l+b*d+w*_,e[10]=x*s+v*c+b*p+w*g,e[11]=x*o+v*h+b*f+w*y,e[12]=(x=i[12])*r+(v=i[13])*a+(b=i[14])*u+(w=i[15])*m,e[13]=x*n+v*l+b*d+w*_,e[14]=x*s+v*c+b*p+w*g,e[15]=x*o+v*h+b*f+w*y,e},e.T=zl,e.U=function(e,t){const i={};for(let r=0;r0||(null===(n=o.addOrUpdateProperties)||void 0===n?void 0:n.length)>0;if(!i&&!a)continue;s.push(t.geometry);const l=Object.assign({},t);if(e.set(o.id,l),i&&(s.push(o.newGeometry),l.geometry=o.newGeometry),a){if(l.properties=o.removeAllProperties?{}:Object.assign({},l.properties||{}),o.removeProperties)for(const e of o.removeProperties)delete l.properties[e];if(o.addOrUpdateProperties)for(const{key:e,value:t}of o.addOrUpdateProperties)l.properties[e]=t}}return s},e.a9=Lu,e.aA=function(e,{uSize:t,uSizeT:i},{lowerSize:r,upperSize:n}){return"source"===e.kind?r/ru:"composite"===e.kind?mi.number(r/ru,n/ru,i):t},e.aB=function(e,t){var i=t[0],r=t[1],n=t[2],s=t[3],o=t[4],a=t[5],l=t[6],c=t[7],h=t[8],u=t[9],d=t[10],p=t[11],f=t[12],m=t[13],_=t[14],g=t[15],y=i*a-r*o,x=i*l-n*o,v=i*c-s*o,b=r*l-n*a,w=r*c-s*a,T=n*c-s*l,S=h*m-u*f,P=h*_-d*f,I=h*g-p*f,M=u*_-d*m,E=u*g-p*m,C=d*g-p*_,A=y*C-x*E+v*M+b*I-w*P+T*S;return A?(e[0]=(a*C-l*E+c*M)*(A=1/A),e[1]=(n*E-r*C-s*M)*A,e[2]=(m*T-_*w+g*b)*A,e[3]=(d*w-u*T-p*b)*A,e[4]=(l*I-o*C-c*P)*A,e[5]=(i*C-n*I+s*P)*A,e[6]=(_*v-f*T-g*x)*A,e[7]=(h*T-d*v+p*x)*A,e[8]=(o*E-a*I+c*S)*A,e[9]=(r*I-i*E-s*S)*A,e[10]=(f*w-m*v+g*y)*A,e[11]=(u*v-h*w-p*y)*A,e[12]=(a*P-o*M-l*S)*A,e[13]=(i*M-r*P+n*S)*A,e[14]=(m*x-f*b-_*y)*A,e[15]=(h*b-u*x+d*y)*A,e):null},e.aC=E,e.aD=function(e){var t=e[0],i=e[1];return Math.sqrt(t*t+i*i)},e.aE=function(e){return e[0]=0,e[1]=0,e},e.aF=function(e,t,i){return e[0]=t[0]*i,e[1]=t[1]*i,e},e.aG=cu,e.aH=P,e.aI=function(e,t,i,n){const s=t.y-e.y,o=t.x-e.x,a=n.y-i.y,l=n.x-i.x,c=a*o-l*s;if(0===c)return null;const h=(l*(e.y-i.y)-a*(e.x-i.x))/c;return new r(e.x+h*o,e.y+h*s)},e.aJ=Gp,e.aK=Za,e.aL=function(e){let t=1/0,i=1/0,r=-1/0,n=-1/0;for(const s of e)t=Math.min(t,s.x),i=Math.min(i,s.y),r=Math.max(r,s.x),n=Math.max(n,s.y);return[t,i,r,n]},e.aM=fh,e.aN=D,e.aO=function(e,t,i,r,n=!1){if(!i[0]&&!i[1])return[0,0];const s=n?"map"===r?-e.bearingInRadians:0:"viewport"===r?e.bearingInRadians:0;if(s){const e=Math.sin(s),t=Math.cos(s);i=[i[0]*t-i[1]*e,i[0]*e+i[1]*t]}return[n?i[0]:D(t,i[0],e.zoom),n?i[1]:D(t,i[1],e.zoom)]},e.aQ=ou,e.aR=yf,e.aS=Wh,e.aT=Sf,e.aU=ro,e.aV=dc,e.aW=Uo,e.aX=sa,e.aY=ta,e.aZ=ie,e.a_=Ru,e.aa=qu,e.ab=25,e.ac=Bu,e.ad=e=>{const t=window.document.createElement("video");return t.muted=!0,new Promise(i=>{t.onloadstart=()=>{i(t)};for(const r of e){const e=window.document.createElement("source");fe(r)||(t.crossOrigin="Anonymous"),e.src=r,t.appendChild(e)}})},e.ae=ze,e.af=function(){return j++},e.ag=Do,e.ah=pu,e.ai=zp,e.aj=pn,e.ak=Na,e.al=$u,e.am=function(e){const t={};if(e.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(e,i,r,n)=>{const s=r||n;return t[i]=!s||s.toLowerCase(),""}),t["max-age"]){const e=parseInt(t["max-age"],10);isNaN(e)?delete t["max-age"]:t["max-age"]=e}return t},e.an=B,e.ao=85.051129,e.ap=te,e.aq=function(e){return Math.pow(2,e)},e.ar=_,e.as=Du,e.at=function(e){return Math.log(e)/Math.LN2},e.au=function(e){var t=e[0],i=e[1];return t*t+i*i},e.av=function(e){if(!e.length)return new Set;const t=Math.max(...e.map(e=>e.canonical.z));let i=1/0,r=-1/0,n=1/0,s=-1/0;const o=[];for(const l of e){const{x:e,y:a,z:c}=l.canonical,h=Math.pow(2,t-c),u=e*h,d=a*h;o.push({id:l,x:u,y:d}),ur&&(r=u),ds&&(s=d)}const a=new Set;for(const l of o)l.x!==i&&l.x!==r&&l.y!==n&&l.y!==s||a.add(l.id);return a},e.aw=function(e,t){const i=Math.abs(2*e.wrap)-+(e.wrap<0),r=Math.abs(2*t.wrap)-+(t.wrap<0);return e.overscaledZ-t.overscaledZ||r-i||t.canonical.y-e.canonical.y||t.canonical.x-e.canonical.x},e.ax=class{constructor(e,t){this.max=e,this.onRemove=t,this.reset()}reset(){for(const e in this.data)for(const t of this.data[e])t.timeout&&clearTimeout(t.timeout),this.onRemove(t.value);return this.data={},this.order=[],this}add(e,t,i){const r=e.wrapped().key;void 0===this.data[r]&&(this.data[r]=[]);const n={value:t,timeout:void 0};if(void 0!==i&&(n.timeout=setTimeout(()=>{this.remove(e,n)},i)),this.data[r].push(n),this.order.push(r),this.order.length>this.max){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}has(e){return e.wrapped().key in this.data}getAndRemove(e){return this.has(e)?this._getAndRemoveByKey(e.wrapped().key):null}_getAndRemoveByKey(e){const t=this.data[e].shift();return t.timeout&&clearTimeout(t.timeout),0===this.data[e].length&&delete this.data[e],this.order.splice(this.order.indexOf(e),1),t.value}getByKey(e){const t=this.data[e];return t?t[0].value:null}get(e){return this.has(e)?this.data[e.wrapped().key][0].value:null}remove(e,t){if(!this.has(e))return this;const i=e.wrapped().key,r=void 0===t?0:this.data[i].indexOf(t),n=this.data[i][r];return this.data[i].splice(r,1),n.timeout&&clearTimeout(n.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(n.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(e){for(this.max=e;this.order.length>this.max;){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}filter(e){const t=[];for(const i in this.data)for(const r of this.data[i])e(r.value)||t.push(r);for(const i of t)this.remove(i.value.tileID,i)}},e.ay=function(e,t){let i=0,r=0;if("constant"===e.kind)r=e.layoutSize;else if("source"!==e.kind){const{interpolationType:n,minZoom:s,maxZoom:o}=e,a=n?B(pi.interpolationFactor(n,t,s,o),0,1):0;"camera"===e.kind?r=mi.number(e.minSize,e.maxSize,a):i=a}return{uSizeT:i,uSize:r}},e.b=X,e.b$=Sa,e.b0=v,e.b1=function(e){var t=new f(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t},e.b2=function(e,t,i){return e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2],e},e.b3=function(e,t){var i=t[0],r=t[1],n=t[2],s=i*i+r*r+n*n;return s>0&&(s=1/Math.sqrt(s)),e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e},e.b4=w,e.b5=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]},e.b6=function(e,t,i){return e[0]=t[0]*i[0],e[1]=t[1]*i[1],e[2]=t[2]*i[2],e[3]=t[3]*i[3],e},e.b7=y,e.b8=function(e,t,i){const r=t[0]*i[0]+t[1]*i[1]+t[2]*i[2];return 0===r?null:(-(e[0]*i[0]+e[1]*i[1]+e[2]*i[2])-i[3])/r},e.b9=S,e.bA=function(e,t,i,r){return e[0]=t[0]+i[0]*r,e[1]=t[1]+i[1]*r,e[2]=t[2]+i[2]*r,e},e.bB=M,e.bC=function(e,t,i){var r=i[0],n=i[1],s=i[2],o=i[3],a=t[0],l=t[1],c=t[2],h=n*c-s*l,u=s*a-r*c,d=r*l-n*a;return e[0]=a+o*(h+=h)+n*(d+=d)-s*(u+=u),e[1]=l+o*u+s*h-r*d,e[2]=c+o*d+r*u-n*h,e},e.bD=function(e,t,i){const r=(n=[e[0],e[1],e[2],t[0],t[1],t[2],i[0],i[1],i[2]])[0]*((h=n[8])*(o=n[4])-(a=n[5])*(c=n[7]))+n[1]*(-h*(s=n[3])+a*(l=n[6]))+n[2]*(c*s-o*l);var n,s,o,a,l,c,h;if(0===r)return null;const u=w([],[t[0],t[1],t[2]],[i[0],i[1],i[2]]),d=w([],[i[0],i[1],i[2]],[e[0],e[1],e[2]]),p=w([],[e[0],e[1],e[2]],[t[0],t[1],t[2]]),f=b([],u,-e[3]);return v(f,f,b([],d,-t[3])),v(f,f,b([],p,-i[3])),b(f,f,1/r),f},e.bE=Pu,e.bF=function(){return new Float64Array(4)},e.bG=function(e,t,i,r){var n=[],s=[];return n[0]=t[0]-i[0],n[1]=t[1]-i[1],n[2]=t[2]-i[2],s[0]=n[0]*Math.cos(r)-n[1]*Math.sin(r),s[1]=n[0]*Math.sin(r)+n[1]*Math.cos(r),s[2]=n[2],e[0]=s[0]+i[0],e[1]=s[1]+i[1],e[2]=s[2]+i[2],e},e.bH=function(e,t,i,r){var n=[],s=[];return n[0]=t[0]-i[0],n[1]=t[1]-i[1],n[2]=t[2]-i[2],s[0]=n[0],s[1]=n[1]*Math.cos(r)-n[2]*Math.sin(r),s[2]=n[1]*Math.sin(r)+n[2]*Math.cos(r),e[0]=s[0]+i[0],e[1]=s[1]+i[1],e[2]=s[2]+i[2],e},e.bI=function(e,t,i,r){var n=[],s=[];return n[0]=t[0]-i[0],n[1]=t[1]-i[1],n[2]=t[2]-i[2],s[0]=n[2]*Math.sin(r)+n[0]*Math.cos(r),s[1]=n[1],s[2]=n[2]*Math.cos(r)-n[0]*Math.sin(r),e[0]=s[0]+i[0],e[1]=s[1]+i[1],e[2]=s[2]+i[2],e},e.bJ=function(e,t,i){var r=Math.sin(i),n=Math.cos(i),s=t[0],o=t[1],a=t[2],l=t[3],c=t[8],h=t[9],u=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=s*n-c*r,e[1]=o*n-h*r,e[2]=a*n-u*r,e[3]=l*n-d*r,e[8]=s*r+c*n,e[9]=o*r+h*n,e[10]=a*r+u*n,e[11]=l*r+d*n,e},e.bK=function(e,t){const i=z(e,360),r=z(t,360),n=r-i,s=r>i?n-360:n+360;return Math.abs(n)0?o:-o},e.bN=function(e,t){const i=z(e,2*Math.PI),r=z(t,2*Math.PI);return Math.min(Math.abs(i-r),Math.abs(i-r+2*Math.PI),Math.abs(i-r-2*Math.PI))},e.bO=function(){const e={},t=ve.$version;for(const i in ve.$root){const r=ve.$root[i];if(r.required){let n=null;n="version"===i?t:"array"===r.type?[]:{},null!=n&&(e[i]=n)}}return e},e.bP=de,e.bQ=ys,e.bR=function e(t,i){if(Array.isArray(t)){if(!Array.isArray(i)||t.length!==i.length)return!1;for(let r=0;r"raster"===e.type,e.bV=G,e.bW=function(e,t){if(!e)return[{command:"setStyle",args:[t]}];let i=[];try{if(!Te(e.version,t.version))return[{command:"setStyle",args:[t]}];Te(e.center,t.center)||i.push({command:"setCenter",args:[t.center]}),Te(e.state,t.state)||i.push({command:"setGlobalState",args:[t.state]}),Te(e.centerAltitude,t.centerAltitude)||i.push({command:"setCenterAltitude",args:[t.centerAltitude]}),Te(e.zoom,t.zoom)||i.push({command:"setZoom",args:[t.zoom]}),Te(e.bearing,t.bearing)||i.push({command:"setBearing",args:[t.bearing]}),Te(e.pitch,t.pitch)||i.push({command:"setPitch",args:[t.pitch]}),Te(e.roll,t.roll)||i.push({command:"setRoll",args:[t.roll]}),Te(e.sprite,t.sprite)||i.push({command:"setSprite",args:[t.sprite]}),Te(e.glyphs,t.glyphs)||i.push({command:"setGlyphs",args:[t.glyphs]}),Te(e.transition,t.transition)||i.push({command:"setTransition",args:[t.transition]}),Te(e.light,t.light)||i.push({command:"setLight",args:[t.light]}),Te(e.terrain,t.terrain)||i.push({command:"setTerrain",args:[t.terrain]}),Te(e.sky,t.sky)||i.push({command:"setSky",args:[t.sky]}),Te(e.projection,t.projection)||i.push({command:"setProjection",args:[t.projection]});const r={},n=[];!function(e,t,i,r){let n;for(n in t=t||{},e=e||{})Object.prototype.hasOwnProperty.call(e,n)&&(Object.prototype.hasOwnProperty.call(t,n)||Ie(n,i,r));for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&(Object.prototype.hasOwnProperty.call(e,n)?Te(e[n],t[n])||("geojson"===e[n].type&&"geojson"===t[n].type&&Ee(e,t,n)?Se(i,{command:"setGeoJSONSourceData",args:[n,t[n].data]}):Me(n,t,i,r)):Pe(n,t,i))}(e.sources,t.sources,n,r);const s=[];e.layers&&e.layers.forEach(e=>{"source"in e&&r[e.source]?i.push({command:"removeLayer",args:[e.id]}):s.push(e)}),i=i.concat(n),function(e,t,i){t=t||[];const r=(e=e||[]).map(Ae),n=t.map(Ae),s=e.reduce(De,{}),o=t.reduce(De,{}),a=r.slice(),l=Object.create(null);let c,h,u,d,p;for(let f=0,m=0;fp?(n=Math.acos(s),o=Math.sin(n),a=Math.sin((1-r)*n)/o,l=Math.sin(r*n)/o):(a=1-r,l=r),e[0]=a*c+l*f,e[1]=a*h+l*m,e[2]=a*u+l*_,e[3]=a*d+l*g,e},e.bn=function(e){const t=new Float64Array(9);var i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x;i=t,u=(n=(r=e)[0])*(l=n+n),d=(s=r[1])*l,p=s*(c=s+s),f=(o=r[2])*l,m=o*c,_=o*(h=o+o),g=(a=r[3])*l,y=a*c,x=a*h,i[0]=1-p-_,i[3]=d-x,i[6]=f+y,i[1]=d+x,i[4]=1-u-_,i[7]=m-g,i[2]=f-y,i[5]=m+g,i[8]=1-u-p;const v=ie(-Math.asin(B(t[2],-1,1)));let b,w;return Math.hypot(t[5],t[8])<.001?(b=0,w=-ie(Math.atan2(t[3],t[4]))):(b=ie(0===t[5]&&0===t[8]?0:Math.atan2(t[5],t[8])),w=ie(0===t[1]&&0===t[0]?0:Math.atan2(t[1],t[0]))),{roll:b,pitch:v+90,bearing:w}},e.bo=function(e,t){return e.roll==t.roll&&e.pitch==t.pitch&&e.bearing==t.bearing},e.bp=Et,e.bq=wa,e.br=pc,e.bs=fc,e.bt=uc,e.bu=k,e.bv=R,e.bw=jt,e.bx=function(e,t,i,r,n){return k(r,n,B((e-t)/(i-t),0,1))},e.by=z,e.bz=function(){return new Float64Array(3)},e.c=le,e.c$=function(e,t,r,n,s){return i(this,void 0,void 0,function*(){if(d())try{return yield K(e,t,r,n,s)}catch(i){}return function(e,t,i,r,n){const s=e.width,o=e.height;J&&Q||(J=new OffscreenCanvas(s,o),Q=J.getContext("2d",{willReadFrequently:!0})),J.width=s,J.height=o,Q.drawImage(e,0,0,s,o);const a=Q.getImageData(t,i,r,n);return Q.clearRect(0,0,s,o),a.data}(e,t,r,n,s)})},e.c0=class extends ba{constructor(e,t){super(e,t),this.current=Pa}set(e){if(e[12]!==this.current[12]||e[0]!==this.current[0])return this.current=e,void this.gl.uniformMatrix4fv(this.location,!1,e);for(let t=1;t<16;t++)if(e[t]!==this.current[t]){this.current=e,this.gl.uniformMatrix4fv(this.location,!1,e);break}}},e.c1=Ta,e.c2=class extends ba{constructor(e,t){super(e,t),this.current=[0,0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]&&e[2]===this.current[2]||(this.current=e,this.gl.uniform3f(this.location,e[0],e[1],e[2]))}},e.c3=class extends ba{constructor(e,t){super(e,t),this.current=[0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]||(this.current=e,this.gl.uniform2f(this.location,e[0],e[1]))}},e.c4=m,e.c5=function(e,t){var i=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=i,e[2]=0,e[3]=-i,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},e.c6=function(e,t,i){var r=t[0],n=t[1],s=t[2];return e[0]=r*i[0]+n*i[3]+s*i[6],e[1]=r*i[1]+n*i[4]+s*i[7],e[2]=r*i[2]+n*i[5]+s*i[8],e},e.c7=function(e,t,i,r,n,s,o){var a=1/(t-i),l=1/(r-n),c=1/(s-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+i)*a,e[13]=(n+r)*l,e[14]=(o+s)*c,e[15]=1,e},e.c8=class extends ba{constructor(e,t){super(e,t),this.current=new Array}set(e){if(e!=this.current){this.current=e;const t=new Float32Array(4*e.length);for(let i=0;i25||r<0||r>=1||i<0||i>=1)},e.cE=function(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},e.cF=class extends oo{},e.cG=Ff,e.cI=ue,e.cJ=function(e,t){le.REGISTERED_PROTOCOLS[e]=t},e.cK=function(e){delete le.REGISTERED_PROTOCOLS[e]},e.cL=function(e,t){const i={};for(let n=0;ne*fh)}let x=a?"center":r.get("text-justify").evaluate(h,{},t.canonical);const v="point"===r.get("symbol-placement")?r.get("text-max-width").evaluate(h,{},t.canonical)*fh:1/0,b=()=>{t.bucket.allowVerticalPlacement&&ws(s)&&(f.vertical=$h(m,t.glyphMap,t.glyphPositions,t.imagePositions,n,v,o,_,"left",p,g,e.az.vertical,!0,d,u))};if(!a&&y){const i=new Set;if("auto"===x)for(let e=0;e=this.maxEntries){const e=this.map.keys().next().value;this.map.delete(e)}this.map.set(e,t)}clear(){this.map.clear()}},e.cX=Lc,e.cY=Mh,e.cZ=Ap,e.c_=class{constructor(e){this._marks={start:[e.url,"start"].join("#"),end:[e.url,"end"].join("#"),measure:e.url.toString()},performance.mark(this._marks.start)}finish(){performance.mark(this._marks.end);let e=performance.getEntriesByName(this._marks.measure);return 0===e.length&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),e=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),e}},e.ca=class extends xo{},e.cb=dh,e.cc=class extends bo{},e.cd=Pl,e.ce=function(e){return e<=1?1:Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},e.cf=Sl,e.cg=function(e,t,i){var r=t[0],n=t[1],s=t[2],o=i[3]*r+i[7]*n+i[11]*s+i[15];return e[0]=(i[0]*r+i[4]*n+i[8]*s+i[12])/(o=o||1),e[1]=(i[1]*r+i[5]*n+i[9]*s+i[13])/o,e[2]=(i[2]*r+i[6]*n+i[10]*s+i[14])/o,e},e.ch=class extends ao{},e.ci=class extends Eo{},e.cj=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]},e.ck=function(e,t){var i=e[0],r=e[1],n=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],h=e[8],u=e[9],d=e[10],f=e[11],m=e[12],_=e[13],g=e[14],y=e[15],x=t[0],v=t[1],b=t[2],w=t[3],T=t[4],S=t[5],P=t[6],I=t[7],M=t[8],E=t[9],C=t[10],A=t[11],D=t[12],z=t[13],k=t[14],R=t[15];return Math.abs(i-x)<=p*Math.max(1,Math.abs(i),Math.abs(x))&&Math.abs(r-v)<=p*Math.max(1,Math.abs(r),Math.abs(v))&&Math.abs(n-b)<=p*Math.max(1,Math.abs(n),Math.abs(b))&&Math.abs(s-w)<=p*Math.max(1,Math.abs(s),Math.abs(w))&&Math.abs(o-T)<=p*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(a-S)<=p*Math.max(1,Math.abs(a),Math.abs(S))&&Math.abs(l-P)<=p*Math.max(1,Math.abs(l),Math.abs(P))&&Math.abs(c-I)<=p*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(h-M)<=p*Math.max(1,Math.abs(h),Math.abs(M))&&Math.abs(u-E)<=p*Math.max(1,Math.abs(u),Math.abs(E))&&Math.abs(d-C)<=p*Math.max(1,Math.abs(d),Math.abs(C))&&Math.abs(f-A)<=p*Math.max(1,Math.abs(f),Math.abs(A))&&Math.abs(m-D)<=p*Math.max(1,Math.abs(m),Math.abs(D))&&Math.abs(_-z)<=p*Math.max(1,Math.abs(_),Math.abs(z))&&Math.abs(g-k)<=p*Math.max(1,Math.abs(g),Math.abs(k))&&Math.abs(y-R)<=p*Math.max(1,Math.abs(y),Math.abs(R))},e.cl=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},e.cm=e=>"symbol"===e.type,e.cn=e=>"circle"===e.type,e.co=e=>"heatmap"===e.type,e.cp=e=>"line"===e.type,e.cq=e=>"fill"===e.type,e.cr=e=>"fill-extrusion"===e.type,e.cs=e=>"hillshade"===e.type,e.ct=e=>"color-relief"===e.type,e.cu=e=>"background"===e.type,e.cv=e=>"custom"===e.type,e.cw=L,e.cx=function(e,t,i){const r=C(t.x-i.x,t.y-i.y),n=C(e.x-i.x,e.y-i.y);var s,o;return ie(Math.atan2(r[0]*n[1]-r[1]*n[0],(o=n,(s=r)[0]*o[0]+s[1]*o[1])))},e.cy=F,e.cz=function(e,t){return ne[t]&&(e instanceof MouseEvent||e instanceof WheelEvent)},e.d=fe,e.d0=kl,e.d1=n,e.d2=class{constructor(e,t){this.layers={[zp]:this},this.name=zp,this.version=t?t.version:1,this.extent=t?t.extent:4096,this.length=e.length,this.features=e}feature(e){return new Dp(this.features[e],this.extent)}},e.d3=rn,e.d4=zs,e.e=V,e.f=e=>i(void 0,void 0,void 0,function*(){if(0===e.byteLength)return createImageBitmap(new ImageData(1,1));const t=new Blob([new Uint8Array(e)],{type:"image/png"});try{return createImageBitmap(t)}catch(i){throw new Error(`Could not load image because of ${i.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),e.g=ce,e.h=e=>new Promise((t,i)=>{const r=new Image;r.onload=()=>{t(r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame(()=>{r.src=Y})},r.onerror=()=>i(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const n=new Blob([new Uint8Array(e)],{type:"image/png"});r.src=e.byteLength?URL.createObjectURL(n):Y}),e.i=W,e.j=(e,t)=>pe(V(e,{type:"json"}),t),e.k=ye,e.l=ge,e.m=pe,e.n=(e,t)=>pe(V(e,{type:"arrayBuffer"}),t),e.o=function(e){return new Mh(e).readFields(Vh,[])},e.p=Uh,e.q=function(e){return/[\u02EA\u02EB\u1100-\u11FF\u2E80-\u2FDF\u3000-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE4F\uFF00-\uFFEF]|\uD81B[\uDFE0-\uDFFF]|[\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFB]|\uD83C[\uDE00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(e))},e.r=wl,e.s=ee,e.t=Xs,e.u=ve,e.v=rs,e.w=Z,e.x=Os,e.y=ss,e.z=Ls}),r("worker",0,function(e){class t{constructor(e,t){this.keyCache={},e&&this.replace(e,t)}replace(e,t){this._layerConfigs={},this._layers={},this.update(e,[],t)}update(t,i,r){for(const s of t){this._layerConfigs[s.id]=s;const t=this._layers[s.id]=e.bT(s,r);t._featureFilter=e.aj(t.filter,r),this.keyCache[s.id]&&delete this.keyCache[s.id]}for(const e of i)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const n=e.cL(Object.values(this._layerConfigs),this.keyCache);for(const s of n){const t=s.map(e=>this._layers[e.id]),i=t[0];if(i.isHidden())continue;const r=i.source||"";let n=this.familiesBySource[r];n||(n=this.familiesBySource[r]={});const o=i.sourceLayer||e.ai;let a=n[o];a||(a=n[o]=[]),a.push(t)}}}class i{constructor(t){const i={},r=[];for(const e in t){const n=t[e],s=i[e]={};for(const e in n){const t=n[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const i={x:0,y:0,w:t.bitmap.width+2,h:t.bitmap.height+2};r.push(i),s[e]={rect:i,metrics:t.metrics}}}const{w:n,h:s}=e.p(r),o=new e.r({width:n||1,height:s||1});for(const a in t){const r=t[a];for(const t in r){const n=r[+t];if(!n||0===n.bitmap.width||0===n.bitmap.height)continue;const s=i[a][t].rect;e.r.copy(n.bitmap,o,{x:0,y:0},{x:s.x+1,y:s.y+1},n.bitmap)}}this.image=o,this.positions=i}}e.cM("GlyphAtlas",i);class r{constructor(t){this.tileID=new e.a2(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.inFlightDependencies=[]}parse(t,r,s,o,a){return e._(this,void 0,void 0,function*(){this.status="parsing",this.data=t,this.collisionBoxArray=new e.ag;const l=new e.cN(Object.keys(t.layers).sort()),c=new e.cO(this.tileID,this.promoteId);c.bucketLayerIDs=[];const h={},u={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},dashDependencies:{},availableImages:s,subdivisionGranularity:a},d=r.familiesBySource[this.source];for(const i in d){const r=t.layers[i];if(!r)continue;1===r.version&&e.w(`Vector tile source "${this.source}" layer "${i}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const o=l.encode(i),a=[];for(let e=0;ee.id)))}}const p=e.bY(u.glyphDependencies,e=>Object.keys(e).map(Number));this.inFlightDependencies.forEach(e=>null==e?void 0:e.abort()),this.inFlightDependencies=[];let f=Promise.resolve({});if(Object.keys(p).length){const e=new AbortController;this.inFlightDependencies.push(e),f=o.sendAsync({type:"GG",data:{stacks:p,source:this.source,tileID:this.tileID,type:"glyphs"}},e)}const m=Object.keys(u.iconDependencies);let _=Promise.resolve({});if(m.length){const e=new AbortController;this.inFlightDependencies.push(e),_=o.sendAsync({type:"GI",data:{icons:m,source:this.source,tileID:this.tileID,type:"icons"}},e)}const g=Object.keys(u.patternDependencies);let y=Promise.resolve({});if(g.length){const e=new AbortController;this.inFlightDependencies.push(e),y=o.sendAsync({type:"GI",data:{icons:g,source:this.source,tileID:this.tileID,type:"patterns"}},e)}const x=u.dashDependencies;let v=Promise.resolve({});if(Object.keys(x).length){const e=new AbortController;this.inFlightDependencies.push(e),v=o.sendAsync({type:"GDA",data:{dashes:x}},e)}const[b,w,T,S]=yield Promise.all([f,_,y,v]),P=new i(b),I=new e.cP(w,T);for(const t in h){const i=h[t];i instanceof e.ah?(n(i.layers,this.zoom,s),e.cQ({bucket:i,glyphMap:b,glyphPositions:P.positions,imageMap:w,imagePositions:I.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical,subdivisionGranularity:u.subdivisionGranularity})):i.hasDependencies&&(i instanceof e.cR||i instanceof e.cS||i instanceof e.cT)&&(n(i.layers,this.zoom,s),i.addFeatures(u,this.tileID.canonical,I.patternPositions,S))}return this.status="done",{buckets:Object.values(h).filter(e=>!e.isEmpty()),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:P.image,imageAtlas:I,dashPositions:S,glyphMap:this.returnDependencies?b:null,iconMap:this.returnDependencies?w:null,glyphPositions:this.returnDependencies?P.positions:null}})}}function n(t,i,r){const n=new e.H(i);for(const e of t)e.recalculate(n,r)}class s{constructor(e,t,i,r,n){this.type=e,this.properties=i||{},this.extent=n,this.pointsArray=t,this.id=r}loadGeometry(){return this.pointsArray.map(t=>t.map(t=>new e.P(t.x,t.y)))}}class o{constructor(e,t,i){this.version=2,this._myFeatures=e,this.name=t,this.length=e.length,this.extent=i}feature(e){return this._myFeatures[e]}}class a{constructor(){this.layers={}}addLayer(e){this.layers[e.name]=e}}function l(t){let i=e.cU(t);return 0===i.byteOffset&&i.byteLength===i.buffer.byteLength||(i=new Uint8Array(i)),{vectorTile:t,rawData:i.buffer}}function c(t,i,r){const{extent:n}=t,a=Math.pow(2,r.z-i.z),l=(r.x-i.x*a)*n,c=(r.y-i.y*a)*n,h=[];for(let o=0;o0&&u.addLayer(r)}const p=l(u);return this.overzoomedTileResultCache.set(o,p),p}reloadTile(t){return e._(this,void 0,void 0,function*(){const i=t.uid;if(!this.loaded||!this.loaded[i])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");const r=this.loaded[i];if(r.showCollisionBoxes=t.showCollisionBoxes,"parsing"===r.status){const n=yield r.parse(r.vectorTile,this.layerIndex,this.availableImages,this.actor,t.subdivisionGranularity);let s;if(this.fetching[i]){const{rawTileData:r,cacheControl:o,resourceTiming:a}=this.fetching[i];delete this.fetching[i],s=e.e({rawTileData:r.slice(0),encoding:t.encoding},n,o,a)}else s=n;return s}if("done"===r.status&&r.vectorTile)return r.parse(r.vectorTile,this.layerIndex,this.availableImages,this.actor,t.subdivisionGranularity)})}abortTile(t){return e._(this,void 0,void 0,function*(){const e=this.loading,i=t.uid;e&&e[i]&&e[i].abort&&(e[i].abort.abort(),delete e[i])})}removeTile(t){return e._(this,void 0,void 0,function*(){this.loaded&&this.loaded[t.uid]&&delete this.loaded[t.uid]})}}class u{constructor(){this.loaded={}}loadTile(t){return e._(this,void 0,void 0,function*(){const{uid:i,encoding:r,rawImageData:n,redFactor:s,greenFactor:o,blueFactor:a,baseShift:l}=t,c=n.width+2,h=n.height+2,u=e.b(n)?new e.R({width:c,height:h},yield e.c$(n,-1,-1,c,h)):n,d=new e.d0(i,u,r,s,o,a,l);return this.loaded=this.loaded||{},this.loaded[i]=d,d})}removeTile(e){const t=this.loaded,i=e.uid;t&&t[i]&&delete t[i]}}var d,p,f=function(){if(p)return d;function e(e,i){if(0!==e.length){t(e[0],i);for(var r=1;r=Math.abs(a)?i-l+a:a-l+i,i=l}i+r>=0!=!!t&&e.reverse()}return p=1,d=function t(i,r){var n,s=i&&i.type;if("FeatureCollection"===s)for(n=0;ne},g=Math.fround||(y=new Float32Array(1),e=>(y[0]=+e,y[0]));var y;class x{constructor(e){this.options=Object.assign(Object.create(_),e),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(e){const{log:t,minZoom:i,maxZoom:r}=this.options;e.length,this.points=e;const n=[];for(let o=0;o=i;o--)Date.now(),s=this.trees[o]=this._createTree(this._cluster(s,o));return this}getClusters(e,t){let i=((e[0]+180)%360+360)%360-180;const r=Math.max(-90,Math.min(90,e[1]));let n=180===e[2]?180:((e[2]+180)%360+360)%360-180;const s=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)i=-180,n=180;else if(i>n){const e=this.getClusters([i,r,180,s],t),o=this.getClusters([-180,r,n,s],t);return e.concat(o)}const o=this.trees[this._limitZoom(t)],a=o.range(w(i),T(s),w(n),T(r)),l=o.data,c=[];for(const h of a){const e=this.stride*h;c.push(l[e+5]>1?v(l,e,this.clusterProps):this.points[l[e+3]])}return c}getChildren(e){const t=this._getOriginId(e),i=this._getOriginZoom(e),r="No cluster with the specified id.",n=this.trees[i];if(!n)throw new Error(r);const s=n.data;if(t*this.stride>=s.length)throw new Error(r);const o=this.options.radius/(this.options.extent*Math.pow(2,i-1)),a=n.within(s[t*this.stride],s[t*this.stride+1],o),l=[];for(const c of a){const t=c*this.stride;s[t+4]===e&&l.push(s[t+5]>1?v(s,t,this.clusterProps):this.points[s[t+3]])}if(0===l.length)throw new Error(r);return l}getLeaves(e,t,i){const r=[];return this._appendLeaves(r,e,t=t||10,i=i||0,0),r}getTile(e,t,i){const r=this.trees[this._limitZoom(e)],n=Math.pow(2,e),{extent:s,radius:o}=this.options,a=o/s,l=(i-a)/n,c=(i+1+a)/n,h={features:[]};return this._addTileFeatures(r.range((t-a)/n,l,(t+1+a)/n,c),r.data,t,i,n,h),0===t&&this._addTileFeatures(r.range(1-a/n,l,1,c),r.data,n,i,n,h),t===n-1&&this._addTileFeatures(r.range(0,l,a/n,c),r.data,-1,i,n,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const i=this.getChildren(e);if(t++,1!==i.length)break;e=i[0].properties.cluster_id}return t}_appendLeaves(e,t,i,r,n){const s=this.getChildren(t);for(const o of s){const t=o.properties;if(t&&t.cluster?n+t.point_count<=r?n+=t.point_count:n=this._appendLeaves(e,t.cluster_id,i,r,n):n1;let l,c,h;if(a)l=b(t,e,this.clusterProps),c=t[e],h=t[e+1];else{const i=this.points[t[e+3]];l=i.properties;const[r,n]=i.geometry.coordinates;c=w(r),h=T(n)}const u={type:1,geometry:[[Math.round(this.options.extent*(c*n-i)),Math.round(this.options.extent*(h*n-r))]],tags:l};let d;d=a||this.options.generateId?t[e+3]:this.points[t[e+3]].id,void 0!==d&&(u.id=d),s.features.push(u)}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(Math.floor(+e),this.options.maxZoom+1))}_cluster(e,t){const{radius:i,extent:r,reduce:n,minPoints:s}=this.options,o=i/(r*Math.pow(2,t)),a=e.data,l=[],c=this.stride;for(let h=0;ht&&(p+=a[i+5])}if(p>d&&p>=s){let e,s=i*d,o=r*d,f=-1;const m=(h/c<<5)+(t+1)+this.points.length;for(const i of u){const r=i*c;if(a[r+2]<=t)continue;a[r+2]=t;const l=a[r+5];s+=a[r]*l,o+=a[r+1]*l,a[r+4]=m,n&&(e||(e=this._map(a,h,!0),f=this.clusterProps.length,this.clusterProps.push(e)),n(e,this._map(a,r)))}a[h+4]=m,l.push(s/p,o/p,1/0,m,-1,p),n&&l.push(f)}else{for(let e=0;e1)for(const e of u){const i=e*c;if(!(a[i+2]<=t)){a[i+2]=t;for(let e=0;e>5}_getOriginZoom(e){return(e-this.points.length)%32}_map(e,t,i){if(e[t+5]>1){const r=this.clusterProps[e[t+6]];return i?Object.assign({},r):r}const r=this.points[e[t+3]].properties,n=this.options.map(r);return i&&n===r?Object.assign({},n):n}}function v(e,t,i){return{type:"Feature",id:e[t+3],properties:b(e,t,i),geometry:{type:"Point",coordinates:[(r=e[t],360*(r-.5)),S(e[t+1])]}};var r}function b(e,t,i){const r=e[t+5],n=r>=1e4?`${Math.round(r/1e3)}k`:r>=1e3?Math.round(r/100)/10+"k":r,s=e[t+6],o=-1===s?{}:Object.assign({},i[s]);return Object.assign(o,{cluster:!0,cluster_id:e[t+3],point_count:r,point_count_abbreviated:n})}function w(e){return e/360+.5}function T(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function S(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function P(e,t,i,r){let n=r;const s=t+(i-t>>1);let o,a=i-t;const l=e[t],c=e[t+1],h=e[i],u=e[i+1];for(let d=t+3;dn)o=d,n=t;else if(t===n){const e=Math.abs(d-s);er&&(o-t>3&&P(e,t,o,r),e[o+2]=n,i-o>3&&P(e,o,i,r))}function I(e,t,i,r,n,s){let o=n-i,a=s-r;if(0!==o||0!==a){const l=((e-i)*o+(t-r)*a)/(o*o+a*a);l>1?(i=n,r=s):l>0&&(i+=o*l,r+=a*l)}return o=e-i,a=t-r,o*o+a*a}function M(e,t,i,r){const n={id:null==e?null:e,type:t,geometry:i,tags:r,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if("Point"===t||"MultiPoint"===t||"LineString"===t)E(n,i);else if("Polygon"===t)E(n,i[0]);else if("MultiLineString"===t)for(const s of i)E(n,s);else if("MultiPolygon"===t)for(const s of i)E(n,s[0]);return n}function E(e,t){for(let i=0;i0&&(o+=r?(n*a-i*s)/2:Math.sqrt(Math.pow(i-n,2)+Math.pow(a-s,2))),n=i,s=a}const a=t.length-3;t[2]=1,P(t,0,a,i),t[a+2]=1,t.size=Math.abs(o),t.start=0,t.end=t.size}function z(e,t,i,r){for(let n=0;n1?1:i}function L(e,t,i,r,n,s,o,a){if(r/=t,s>=(i/=t)&&o=r)return null;const l=[];for(const c of e){const e=c.geometry;let t=c.type;const s=0===n?c.minX:c.minY,o=0===n?c.maxX:c.maxY;if(s>=i&&o=r)continue;let h=[];if("Point"===t||"MultiPoint"===t)F(e,h,i,r,n);else if("LineString"===t)B(e,h,i,r,n,!1,a.lineMetrics);else if("MultiLineString"===t)V(e,h,i,r,n,!1);else if("Polygon"===t)V(e,h,i,r,n,!0);else if("MultiPolygon"===t)for(const a of e){const e=[];V(a,e,i,r,n,!0),e.length&&h.push(e)}if(h.length){if(a.lineMetrics&&"LineString"===t){for(const e of h)l.push(M(c.id,t,e,c.tags));continue}"LineString"!==t&&"MultiLineString"!==t||(1===h.length?(t="LineString",h=h[0]):t="MultiLineString"),"Point"!==t&&"MultiPoint"!==t||(t=3===h.length?"Point":"MultiPoint"),l.push(M(c.id,t,h,c.tags))}}return l.length?l:null}function F(e,t,i,r,n){for(let s=0;s=i&&o<=r&&j(t,e[s],e[s+1],e[s+2])}}function B(e,t,i,r,n,s,o){let a=O(e);const l=0===n?N:U;let c,h,u=e.start;for(let _=0;_i&&(h=l(a,d,p,m,g,i),o&&(a.start=u+c*h)):y>r?x=i&&(h=l(a,d,p,m,g,i),v=!0),x>r&&y<=r&&(h=l(a,d,p,m,g,r),v=!0),!s&&v&&(o&&(a.end=u+c*h),t.push(a),a=O(e)),o&&(u+=c)}let d=e.length-3;const p=e[d],f=e[d+1],m=0===n?p:f;m>=i&&m<=r&&j(a,p,f,e[d+2]),d=a.length-3,s&&d>=3&&(a[d]!==a[0]||a[d+1]!==a[1])&&j(a,a[0],a[1],a[2]),a.length&&t.push(a)}function O(e){const t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function V(e,t,i,r,n,s){for(const o of e)B(o,t,i,r,n,s,!1)}function j(e,t,i,r){e.push(t,i,r)}function N(e,t,i,r,n,s){const o=(s-t)/(r-t);return j(e,s,i+(n-i)*o,1),o}function U(e,t,i,r,n,s){const o=(s-i)/(n-i);return j(e,t+(r-t)*o,s,1),o}function G(e,t){const i=[];for(let r=0;r0&&t.size<(n?o:r))return void(i.numPoints+=t.length/3);const a=[];for(let l=0;lo)&&(i.numSimplified++,a.push(t[l],t[l+1])),i.numPoints++;n&&function(e,t){let i=0;for(let r=0,n=e.length,s=n-2;r0===t)for(let r=0,n=e.length;r24)throw new Error("maxZoom should be in the 0-24 range");if(t.promoteId&&t.generateId)throw new Error("promoteId and generateId cannot be used together.");let r=function(e,t){const i=[];if("FeatureCollection"===e.type)for(let r=0;r>e||r!==o>>e)continue}}if(d.source=null,0===e.length)continue;const p=.5*l.buffer/l.extent,f=.5-p,m=.5+p,_=1+p;let g=null,y=null,x=null,v=null,b=L(e,h,i-p,i+m,0,d.minX,d.maxX,l),w=L(e,h,i+f,i+_,0,d.minX,d.maxX,l);e=null,b&&(g=L(b,h,r-p,r+m,1,d.minY,d.maxY,l),y=L(b,h,r+f,r+_,1,d.minY,d.maxY,l),b=null),w&&(x=L(w,h,r-p,r+m,1,d.minY,d.maxY,l),v=L(w,h,r+f,r+_,1,d.minY,d.maxY,l),w=null),a.push(g||[],t+1,2*i,2*r),a.push(y||[],t+1,2*i,2*r+1),a.push(x||[],t+1,2*i+1,2*r),a.push(v||[],t+1,2*i+1,2*r+1)}}getTile(e,t,i){e=+e,t=+t,i=+i;const r=this.options,{extent:n,debug:s}=r;if(e<0||e>24)return null;const o=1<0;)c--,h>>=1,u>>=1,l=this.tiles[J(c,h,u)];return l&&l.source?(this.splitTile(l.source,c,h,u,e,t,i),this.tiles[a]?Z(this.tiles[a],n):null):null}}function J(e,t,i){return 32*((1<`${e.key}: ${e.message}`).join(", "));const n=t.features.filter(e=>r.value.evaluate({zoom:0},e));return this._toFeatureCollection(n)}_toFeatureCollection(e){return{type:"FeatureCollection",features:e}}removeSource(t){return e._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(e){return this._geoJSONIndex.getClusterExpansionZoom(e.clusterId)}getClusterChildren(e){return this._geoJSONIndex.getChildren(e.clusterId)}getClusterLeaves(e){return this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset)}}function ee(t,i){return i.cluster?new x(function({superclusterOptions:t,clusterProperties:i}){if(!i||!t)return t;const r={},n={},s={accumulated:null,zoom:0},o={properties:null},a=Object.keys(i);for(const l of a){const[t,s]=i[l],o=e.d3(s),a=e.d3("string"==typeof t?[t,["accumulated"],["get",l]]:t);r[l]=o.value,n[l]=a.value}return t.map=e=>{o.properties=e;const t={};for(const i of a)t[i]=r[i].evaluate(s,o);return t},t.reduce=(e,t)=>{o.properties=t;for(const i of a)s.accumulated=e[i],e[i]=n[i].evaluate(s,o)},t}(i)).load(t.features):(r=t,n=i.geojsonVtOptions,new K(r,n));var r,n}class te{constructor(t){this.self=t,this.actor=new e.L(t),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.globalStates=new Map,this.self.registerWorkerSource=(e,t)=>{if(this.externalWorkerSourceTypes[e])throw new Error(`Worker source with name "${e}" already registered.`);this.externalWorkerSourceTypes[e]=t},this.self.addProtocol=e.cJ,this.self.removeProtocol=e.cK,this.self.registerRTLTextPlugin=t=>{e.d4.setMethods(t)},this.actor.registerMessageHandler("LDT",(e,t)=>this._getDEMWorkerSource(e,t.source).loadTile(t)),this.actor.registerMessageHandler("RDT",(t,i)=>e._(this,void 0,void 0,function*(){this._getDEMWorkerSource(t,i.source).removeTile(i)})),this.actor.registerMessageHandler("GCEZ",(t,i)=>e._(this,void 0,void 0,function*(){return this._getWorkerSource(t,i.type,i.source).getClusterExpansionZoom(i)})),this.actor.registerMessageHandler("GCC",(t,i)=>e._(this,void 0,void 0,function*(){return this._getWorkerSource(t,i.type,i.source).getClusterChildren(i)})),this.actor.registerMessageHandler("GCL",(t,i)=>e._(this,void 0,void 0,function*(){return this._getWorkerSource(t,i.type,i.source).getClusterLeaves(i)})),this.actor.registerMessageHandler("LD",(e,t)=>this._getWorkerSource(e,t.type,t.source).loadData(t)),this.actor.registerMessageHandler("GD",(e,t)=>this._getWorkerSource(e,t.type,t.source).getData()),this.actor.registerMessageHandler("LT",(e,t)=>this._getWorkerSource(e,t.type,t.source).loadTile(t)),this.actor.registerMessageHandler("RT",(e,t)=>this._getWorkerSource(e,t.type,t.source).reloadTile(t)),this.actor.registerMessageHandler("AT",(e,t)=>this._getWorkerSource(e,t.type,t.source).abortTile(t)),this.actor.registerMessageHandler("RMT",(e,t)=>this._getWorkerSource(e,t.type,t.source).removeTile(t)),this.actor.registerMessageHandler("RS",(t,i)=>e._(this,void 0,void 0,function*(){if(!this.workerSources[t]||!this.workerSources[t][i.type]||!this.workerSources[t][i.type][i.source])return;const e=this.workerSources[t][i.type][i.source];delete this.workerSources[t][i.type][i.source],void 0!==e.removeSource&&e.removeSource(i)})),this.actor.registerMessageHandler("RM",t=>e._(this,void 0,void 0,function*(){delete this.layerIndexes[t],delete this.availableImages[t],delete this.workerSources[t],delete this.demWorkerSources[t],this.globalStates.delete(t)})),this.actor.registerMessageHandler("SR",(t,i)=>e._(this,void 0,void 0,function*(){this.referrer=i})),this.actor.registerMessageHandler("SRPS",(e,t)=>this._syncRTLPluginState(e,t)),this.actor.registerMessageHandler("IS",(t,i)=>e._(this,void 0,void 0,function*(){this.self.importScripts(i)})),this.actor.registerMessageHandler("SI",(e,t)=>this._setImages(e,t)),this.actor.registerMessageHandler("UL",(t,i)=>e._(this,void 0,void 0,function*(){this._getLayerIndex(t).update(i.layers,i.removedIds,this._getGlobalState(t))})),this.actor.registerMessageHandler("UGS",(t,i)=>e._(this,void 0,void 0,function*(){const e=this._getGlobalState(t);for(const t in i)e[t]=i[t]})),this.actor.registerMessageHandler("SL",(t,i)=>e._(this,void 0,void 0,function*(){this._getLayerIndex(t).replace(i,this._getGlobalState(t))}))}_getGlobalState(e){let t=this.globalStates.get(e);return t||(t={},this.globalStates.set(e,t)),t}_setImages(t,i){return e._(this,void 0,void 0,function*(){this.availableImages[t]=i;for(const e in this.workerSources[t]){const r=this.workerSources[t][e];for(const e in r)r[e].availableImages=i}})}_syncRTLPluginState(t,i){return e._(this,void 0,void 0,function*(){return yield e.d4.syncState(i,this.self.importScripts)})}_getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}_getLayerIndex(e){let i=this.layerIndexes[e];return i||(i=this.layerIndexes[e]=new t),i}_getWorkerSource(e,t,i){if(this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),!this.workerSources[e][t][i]){const r={sendAsync:(t,i)=>(t.targetMapId=e,this.actor.sendAsync(t,i))};switch(t){case"vector":this.workerSources[e][t][i]=new h(r,this._getLayerIndex(e),this._getAvailableImages(e));break;case"geojson":this.workerSources[e][t][i]=new Q(r,this._getLayerIndex(e),this._getAvailableImages(e));break;default:this.workerSources[e][t][i]=new this.externalWorkerSourceTypes[t](r,this._getLayerIndex(e),this._getAvailableImages(e))}}return this.workerSources[e][t][i]}_getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new u),this.demWorkerSources[e][t]}}return e.i(self)&&(self.worker=new te(self)),te}),r("index",0,function(e,t){var i="5.15.0";function r(){var e=new t.A(4);return t.A!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}let n,s,o;const a={frame(e,i,r){const n=requestAnimationFrame(e=>{s(),i(e)}),{unsubscribe:s}=t.s(e.signal,"abort",()=>{s(),cancelAnimationFrame(n),r(new t.a(e.signal.reason))},!1)},frameAsync(e){return new Promise((t,i)=>{this.frame(e,t,i)})},getImageData(e,t=0){return this.getImageCanvasContext(e).getImageData(-t,-t,e.width+2*t,e.height+2*t)},getImageCanvasContext(e){const t=window.document.createElement("canvas"),i=t.getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("failed to create canvas 2d context");return t.width=e.width,t.height=e.height,i.drawImage(e,0,0,e.width,e.height),i},resolveURL:e=>(n||(n=document.createElement("a")),n.href=e,n.href),hardwareConcurrency:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return void 0!==o?o:!!matchMedia&&(null==s&&(s=matchMedia("(prefers-reduced-motion: reduce)")),s.matches)},set prefersReducedMotion(e){o=e}},l=new class{constructor(){this._realTime="undefined"!=typeof performance&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),this._frozenAt=null}getCurrentTime(){return null!==this._frozenAt?this._frozenAt:this._realTime()}setNow(e){this._frozenAt=e}restoreNow(){this._frozenAt=null}isFrozen(){return null!==this._frozenAt}};function c(){return l.getCurrentTime()}class h{static testProp(e){if(!h.docStyle)return e[0];for(let t=0;t{window.removeEventListener("click",h.suppressClickInternal,!0)},0)}static getScale(e){const t=e.getBoundingClientRect();return{x:t.width/e.offsetWidth||1,y:t.height/e.offsetHeight||1,boundingClientRect:t}}static getPoint(e,i,r){const n=i.boundingClientRect;return new t.P((r.clientX-n.left)/i.x-e.clientLeft,(r.clientY-n.top)/i.y-e.clientTop)}static mousePos(e,t){const i=h.getScale(e);return h.getPoint(e,i,t)}static touchPos(e,t){const i=[],r=h.getScale(e);for(let n=0;n{d&&_(d),d=null,m=!0},p.onerror=()=>{f=!0,d=null},p.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(e){let i,r,n,s;e.resetRequestQueue=()=>{i=[],r=0,n=0,s={}},e.addThrottleControl=e=>{const t=n++;return s[t]=e,t},e.removeThrottleControl=e=>{delete s[e],a()},e.getImage=(e,r,n=!0)=>new Promise((s,o)=>{u.supported&&(e.headers||(e.headers={}),e.headers.accept="image/webp,*/*"),t.e(e,{type:"image"}),i.push({abortController:r,requestParameters:e,supportImageRefresh:n,state:"queued",onError:e=>{o(e)},onSuccess:e=>{s(e)}}),a()});const o=e=>t._(this,void 0,void 0,function*(){e.state="running";const{requestParameters:i,supportImageRefresh:n,onError:s,onSuccess:o,abortController:c}=e,h=!1===n&&!t.i(self)&&!t.g(i.url)&&(!i.headers||Object.keys(i.headers).reduce((e,t)=>e&&"accept"===t,!0));r++;const u=h?l(i,c):t.m(i,c);try{const i=yield u;delete e.abortController,e.state="completed",i.data instanceof HTMLImageElement||t.b(i.data)?o(i):i.data&&o({data:yield(d=i.data,"function"==typeof createImageBitmap?t.f(d):t.h(d)),cacheControl:i.cacheControl,expires:i.expires})}catch(p){delete e.abortController,s(p)}finally{r--,a()}var d}),a=()=>{const e=(()=>{for(const e of Object.keys(s))if(s[e]())return!0;return!1})()?t.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:t.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let t=r;t0;t++){const e=i.shift();e.abortController.signal.aborted?t--:o(e)}},l=(e,i)=>new Promise((r,n)=>{const s=new Image,o=e.url,a=e.credentials;a&&"include"===a?s.crossOrigin="use-credentials":(a&&"same-origin"===a||!t.d(o))&&(s.crossOrigin="anonymous"),i.signal.addEventListener("abort",()=>{s.src="",n(new t.a(i.signal.reason))}),s.fetchPriority="high",s.onload=()=>{s.onerror=s.onload=null,r({data:s})},s.onerror=()=>{s.onerror=s.onload=null,i.signal.aborted||n(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."))},s.src=o})}(g||(g={})),g.resetRequestQueue();class y{constructor(e){this._transformRequestFn=null!=e?e:null}transformRequest(e,t){return this._transformRequestFn&&this._transformRequestFn(e,t)||{url:e}}setTransformRequest(e){this._transformRequestFn=e}}function x(e){const t=[];if("string"==typeof e)t.push({id:"default",url:e});else if(e&&e.length>0){const i=[];for(const{id:r,url:n}of e){const e=`${r}${n}`;-1===i.indexOf(e)&&(i.push(e),t.push({id:r,url:n}))}}return t}function v(e,t,i){try{const r=new URL(e);return r.pathname+=`${t}${i}`,r.toString()}catch(r){throw new Error(`Invalid sprite URL "${e}", must be absolute. Modify style specification directly or use TransformStyleFunction to correct the issue dynamically`)}}function b(e){const{userImage:t}=e;return!!(t&&t.render&&t.render())&&(e.data.replace(new Uint8Array(t.data.buffer)),!0)}class w extends t.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0}destroy(){this.atlasTexture&&(this.atlasTexture.destroy(),this.atlasTexture=null);for(const e of Object.keys(this.images))this.removeImage(e);this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(const{ids:e,promiseResolve:t}of this.requestors)t(this._getImagesForIds(e));this.requestors=[]}}getImage(e){const i=this.images[e];if(i&&!i.data&&i.spriteData){const e=i.spriteData;i.data=new t.R({width:e.width,height:e.height},e.context.getImageData(e.x,e.y,e.width,e.height).data),i.spriteData=null}return i}addImage(e,t){if(this.images[e])throw new Error(`Image id ${e} already exist, use updateImage instead`);this._validate(e,t)&&(this.images[e]=t)}_validate(e,i){let r=!0;const n=i.data||i.spriteData;return this._validateStretch(i.stretchX,n&&n.width)||(this.fire(new t.k(new Error(`Image "${e}" has invalid "stretchX" value`))),r=!1),this._validateStretch(i.stretchY,n&&n.height)||(this.fire(new t.k(new Error(`Image "${e}" has invalid "stretchY" value`))),r=!1),this._validateContent(i.content,i)||(this.fire(new t.k(new Error(`Image "${e}" has invalid "content" value`))),r=!1),r}_validateStretch(e,t){if(!e)return!0;let i=0;for(const r of e){if(r[0]{let r=!0;if(!this.isLoaded())for(const n of e)this.images[n]||(r=!1);this.isLoaded()||r?t(this._getImagesForIds(e)):this.requestors.push({ids:e,promiseResolve:t})})}_getImagesForIds(e){const i={};for(const r of e){let e=this.getImage(r);e||(this.fire(new t.l("styleimagemissing",{id:r})),e=this.getImage(r)),e?i[r]={data:e.data.clone(),pixelRatio:e.pixelRatio,sdf:e.sdf,version:e.version,stretchX:e.stretchX,stretchY:e.stretchY,content:e.content,textFitWidth:e.textFitWidth,textFitHeight:e.textFitHeight,hasRenderCallback:Boolean(e.userImage&&e.userImage.render)}:t.w(`Image "${r}" 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 i}getPixelSize(){const{width:e,height:t}=this.atlasImage;return{width:e,height:t}}getPattern(e){const i=this.patterns[e],r=this.getImage(e);if(!r)return null;if(i&&i.position.version===r.version)return i.position;if(i)i.position.version=r.version;else{const i={w:r.data.width+2,h:r.data.height+2,x:0,y:0},n=new t.I(i,r);this.patterns[e]={bin:i,position:n}}return this._updatePatternAtlas(),this.patterns[e].position}bind(e){const i=e.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new t.T(e,this.atlasImage,i.RGBA),this.atlasTexture.bind(i.LINEAR,i.CLAMP_TO_EDGE)}_updatePatternAtlas(){const e=[];for(const t in this.patterns)e.push(this.patterns[t].bin);const{w:i,h:r}=t.p(e),n=this.atlasImage;n.resize({width:i||1,height:r||1});for(const s in this.patterns){const{bin:e}=this.patterns[s],i=e.x+1,r=e.y+1,o=this.getImage(s).data,a=o.width,l=o.height;t.R.copy(o,n,{x:0,y:0},{x:i,y:r},{width:a,height:l}),t.R.copy(o,n,{x:0,y:l-1},{x:i,y:r-1},{width:a,height:1}),t.R.copy(o,n,{x:0,y:0},{x:i,y:r+l},{width:a,height:1}),t.R.copy(o,n,{x:a-1,y:0},{x:i-1,y:r},{width:1,height:l}),t.R.copy(o,n,{x:0,y:0},{x:i+a,y:r},{width:1,height:l})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(e){for(const i of e){if(this.callbackDispatchedThisFrame[i])continue;this.callbackDispatchedThisFrame[i]=!0;const e=this.getImage(i);e||t.w(`Image with ID: "${i}" was not found`),b(e)&&this.updateImage(i,e)}}cloneImages(){const e={};for(const t in this.images){const i=this.images[t];e[t]=Object.assign(Object.assign({},i),{data:i.data?i.data.clone():null})}return e}}const T=1e20;function S(e,t,i,r,n,s,o,a,l){for(let c=t;c-1);l++,s[l]=a,o[l]=c,o[l+1]=T}for(let a=0,l=0;a/[-\w]+/.test(e)?e:`'${CSS.escape(e)}'`).join(",");return new M.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:i,fontWeight:this._fontWeight(t[0]),fontStyle:this._fontStyle(t[0]),lang:this.lang})}_fontStyle(e){return/italic/i.test(e)?"italic":/oblique/i.test(e)?"oblique":"normal"}_fontWeight(e){const t={thin:100,hairline:100,"extra light":200,"ultra light":200,light:300,normal:400,regular:400,medium:500,semibold:600,demibold:600,bold:700,"extra bold":800,"ultra bold":800,black:900,heavy:900,"extra black":950,"ultra black":950};let i;for(const[r,n]of Object.entries(t))new RegExp(`\\b${r}\\b`,"i").test(e)&&(i=`${n}`);return i}destroy(){for(const e in this.entries){const t=this.entries[e];t.tinySDF&&(t.tinySDF=null),t.ideographTinySDF&&(t.ideographTinySDF=null),t.glyphs={},t.requests={},t.ranges={}}this.entries={}}}M.loadGlyphRange=function(e,i,r,n){return t._(this,void 0,void 0,function*(){const s=256*i,o=s+255,a=n.transformRequest(r.replace("{fontstack}",e).replace("{range}",`${s}-${o}`),"Glyphs"),l=yield t.n(a,new AbortController);if(!l||!l.data)throw new Error(`Could not load glyph range. range: ${i}, ${s}-${o}`);const c={};for(const e of t.o(l.data))c[e.id]=e;return c})},M.TinySDF=class{constructor({fontSize:e=24,buffer:t=3,radius:i=8,cutoff:r=.25,fontFamily:n="sans-serif",fontWeight:s="normal",fontStyle:o="normal",lang:a=null}={}){this.buffer=t,this.cutoff=r,this.radius=i,this.lang=a;const l=this.size=e+4*t,c=this._createCanvas(l),h=this.ctx=c.getContext("2d",{willReadFrequently:!0});h.font=`${o} ${s} ${e}px ${n}`,h.textBaseline="alphabetic",h.textAlign="left",h.fillStyle="black",this.gridOuter=new Float64Array(l*l),this.gridInner=new Float64Array(l*l),this.f=new Float64Array(l),this.z=new Float64Array(l+1),this.v=new Uint16Array(l)}_createCanvas(e){const t=document.createElement("canvas");return t.width=t.height=e,t}draw(e){const{width:t,actualBoundingBoxAscent:i,actualBoundingBoxDescent:r,actualBoundingBoxLeft:n,actualBoundingBoxRight:s}=this.ctx.measureText(e),o=Math.ceil(i),a=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(s-n))),l=Math.min(this.size-this.buffer,o+Math.ceil(r)),c=a+2*this.buffer,h=l+2*this.buffer,u=Math.max(c*h,0),d=new Uint8ClampedArray(u),p={data:d,width:c,height:h,glyphWidth:a,glyphHeight:l,glyphTop:o,glyphLeft:0,glyphAdvance:t};if(0===a||0===l)return p;const{ctx:f,buffer:m,gridInner:_,gridOuter:g}=this;this.lang&&(f.lang=this.lang),f.clearRect(m,m,a,l),f.fillText(e,m,m+o);const y=f.getImageData(m,m,a,l);g.fill(T,0,u),_.fill(0,0,u);for(let x=0;x0?e*e:0,_[i]=e<0?e*e:0}}S(g,0,0,c,h,c,this.f,this.v,this.z),S(_,m,m,a,l,c,this.f,this.v,this.z);for(let x=0;x1&&(o=e[++s]);const l=Math.abs(a-o.left),c=Math.abs(a-o.right),h=Math.min(l,c);let u;const d=n/i*(r+1);if(o.isDash){const e=r-Math.abs(d);u=Math.sqrt(h*h+e*e)}else u=r-Math.sqrt(h*h+d*d);this.data[t+a]=Math.max(0,Math.min(255,u+128))}}}addRegularDash(e){for(let o=e.length-1;o>=0;--o){const t=e[o],i=e[o+1];t.zeroLength?e.splice(o,1):i&&i.isDash===t.isDash&&(i.left=t.left,e.splice(o,1))}const t=e[0],i=e[e.length-1];t.isDash===i.isDash&&(t.left=i.left-this.width,i.right=t.right+this.width);const r=this.width*this.nextRow;let n=0,s=e[n];for(let o=0;o1&&(s=e[++n]);const t=Math.abs(o-s.left),i=Math.abs(o-s.right),a=Math.min(t,i);this.data[r+o]=Math.max(0,Math.min(255,(s.isDash?a:-a)+128))}}addDash(e,i){const r=i?7:0,n=2*r+1;if(this.nextRow+n>this.height)return t.w("LineAtlas out of space"),null;let s=0;for(let t=0;t{e.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[R]}numActive(){return Object.keys(this.active).length}}const F=Math.floor(a.hardwareConcurrency/2);let B,O;function V(){return B||(B=new L),B}L.workerCount=t.K(globalThis)?Math.max(Math.min(F,3),1):1;class j{constructor(e,i){this.workerPool=e,this.actors=[],this.currentActor=0,this.id=i;const r=this.workerPool.acquire(i);for(let n=0;n{e.remove()}),this.actors=[],e&&this.workerPool.release(this.id)}registerMessageHandler(e,t){for(const i of this.actors)i.registerMessageHandler(e,t)}unregisterMessageHandler(e){for(const t of this.actors)t.unregisterMessageHandler(e)}}function N(){return O||(O=new j(V(),t.M),O.registerMessageHandler("GR",(e,i,r)=>t.m(i,r))),O}function U(e,i){const r=t.N();return t.O(r,r,[1,1,0]),t.Q(r,r,[.5*e.width,.5*e.height,1]),e.calculatePosMatrix?t.S(r,r,e.calculatePosMatrix(i.toUnwrapped())):r}function G(e,t,i,r,n,s,o){var a;const l=function(e,t,i){if(e)for(const r of e){const e=t[r];if(e&&e.source===i&&"fill-extrusion"===e.type)return!0}else for(const r in t){const e=t[r];if(e.source===i&&"fill-extrusion"===e.type)return!0}return!1}(null!==(a=null==n?void 0:n.layers)&&void 0!==a?a:null,t,e.id),c=s.maxPitchScaleFactor(),h=e.tilesIn(r,c,l);h.sort(q);const u=[];for(const d of h)u.push({wrappedTileID:d.tileID.wrapped().key,queryResults:d.tile.queryRenderedFeatures(t,i,e.getState(),d.queryGeometry,d.cameraQueryGeometry,d.scale,n,s,c,U(s,d.tileID),o?(e,t)=>o(d.tileID,e,t):void 0)});return function(e,t){for(const i in e)for(const r of e[i])Z(r,t);return e}(function(e){const t={},i={};for(const r of e){const e=r.queryResults,n=r.wrappedTileID,s=i[n]=i[n]||{};for(const i in e){const r=e[i],n=s[i]=s[i]||{},o=t[i]=t[i]||[];for(const e of r)n[e.featureIndex]||(n[e.featureIndex]=!0,o.push(e))}}return t}(u),e)}function q(e,t){const i=e.tileID,r=t.tileID;return i.overscaledZ-r.overscaledZ||i.canonical.y-r.canonical.y||i.wrap-r.wrap||i.canonical.x-r.canonical.x}function Z(e,t){const i=e.feature,r=t.getFeatureState(i.layer["source-layer"],i.id);i.source=i.layer.source,i.layer["source-layer"]&&(i.sourceLayer=i.layer["source-layer"]),i.state=r}function $(e,i,r){return t._(this,void 0,void 0,function*(){let n=e;if(e.url?n=(yield t.j(i.transformRequest(e.url,"Source"),r)).data:yield a.frameAsync(r),!n)return null;const s=t.U(t.e(n,e),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in n&&n.vector_layers&&(s.vectorLayerIds=n.vector_layers.map(e=>e.id)),s})}class W{constructor(e,t){e&&(t?this.setSouthWest(e).setNorthEast(t):Array.isArray(e)&&(4===e.length?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1])))}setNorthEast(e){return this._ne=e instanceof t.V?new t.V(e.lng,e.lat):t.V.convert(e),this}setSouthWest(e){return this._sw=e instanceof t.V?new t.V(e.lng,e.lat):t.V.convert(e),this}extend(e){const i=this._sw,r=this._ne;let n,s;if(e instanceof t.V)n=e,s=e;else{if(!(e instanceof W))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend(W.convert(e)):this.extend(t.V.convert(e)):e&&("lng"in e||"lon"in e)&&"lat"in e?this.extend(t.V.convert(e)):this;if(n=e._sw,s=e._ne,!n||!s)return this}return i||r?(i.lng=Math.min(n.lng,i.lng),i.lat=Math.min(n.lat,i.lat),r.lng=Math.max(s.lng,r.lng),r.lat=Math.max(s.lat,r.lat)):(this._sw=new t.V(n.lng,n.lat),this._ne=new t.V(s.lng,s.lat)),this}getCenter(){return new t.V((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 t.V(this.getWest(),this.getNorth())}getSouthEast(){return new t.V(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(e){const{lng:i,lat:r}=t.V.convert(e);let n=this._sw.lng<=i&&i<=this._ne.lng;return this._sw.lng>this._ne.lng&&(n=this._sw.lng>=i&&i>=this._ne.lng),this._sw.lat<=r&&r<=this._ne.lat&&n}intersects(e){if(!((e=W.convert(e)).getNorth()>=this.getSouth()&&e.getSouth()<=this.getNorth()))return!1;const i=Math.abs(this.getEast()-this.getWest()),r=Math.abs(e.getEast()-e.getWest());if(i>=360||r>=360)return!0;const n=t.W(this.getWest(),-180,180),s=t.W(this.getEast(),-180,180),o=t.W(e.getWest(),-180,180),a=t.W(e.getEast(),-180,180),l=n>=s,c=o>=a;return!(!l||!c)||(l?a>=n||o<=s:c?s>=o||n<=a:o<=s&&a>=n)}static convert(e){return e instanceof W?e:e?new W(e):e}static fromLngLat(e,i=0){const r=360*i/40075017,n=r/Math.cos(Math.PI/180*e.lat);return new W(new t.V(e.lng-n,e.lat-r),new t.V(e.lng+n,e.lat+r))}adjustAntiMeridian(){const e=new t.V(this._sw.lng,this._sw.lat),i=new t.V(this._ne.lng,this._ne.lat);return new W(e,e.lng>i.lng?new t.V(i.lng+360,i.lat):i)}}class H{constructor(e,t,i){this.bounds=W.convert(this.validateBounds(e)),this.minzoom=t||0,this.maxzoom=i||24}validateBounds(e){return Array.isArray(e)&&4===e.length?[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]:[-180,-90,180,90]}contains(e){const i=Math.pow(2,e.z),r=Math.floor(t.Y(this.bounds.getWest())*i),n=Math.floor(t.X(this.bounds.getNorth())*i),s=Math.ceil(t.Y(this.bounds.getEast())*i),o=Math.ceil(t.X(this.bounds.getSouth())*i);return e.x>=r&&e.x=n&&e.y{this._options.tiles=e}),this}setUrl(e){return this.setSourceProperty(()=>{this.url=e,this._options.url=e}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return t.e({},this._options)}loadTile(e){return t._(this,void 0,void 0,function*(){const t=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),i={request:this.map._requestManager.transformRequest(t,"Tile"),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity,encoding:this.encoding,overzoomParameters:this._getOverzoomParameters(e)};i.request.collectResourceTiming=this._collectResourceTiming;let r="RT";if(e.actor&&"expired"!==e.state){if("loading"===e.state)return new Promise((t,i)=>{e.reloadPromise={resolve:t,reject:i}})}else e.actor=this.dispatcher.getActor(),r="LT";e.abortController=new AbortController;try{const t=yield e.actor.sendAsync({type:r,data:i},e.abortController);if(delete e.abortController,e.aborted)return;this._afterTileLoadWorkerResponse(e,t)}catch(n){if(delete e.abortController,e.aborted)return;if(n&&404!==n.status)throw n;this._afterTileLoadWorkerResponse(e,null)}})}_getOverzoomParameters(e){if(e.tileID.canonical.z<=this.maxzoom)return;if(void 0===this.map._zoomLevelsToOverscale)return;const t=e.tileID.scaledTo(this.maxzoom).canonical,i=t.url(this.tiles,this.map.getPixelRatio(),this.scheme);return{maxZoomTileID:t,overzoomRequest:this.map._requestManager.transformRequest(i,"Tile")}}_afterTileLoadWorkerResponse(e,t){if(t&&t.resourceTiming&&(e.resourceTiming=t.resourceTiming),t&&this.map._refreshExpiredTiles&&e.setExpiryData(t),e.loadVectorData(t,this.map.painter),e.reloadPromise){const t=e.reloadPromise;e.reloadPromise=null,this.loadTile(e).then(t.resolve).catch(t.reject)}}abortTile(e){return t._(this,void 0,void 0,function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.actor&&(yield e.actor.sendAsync({type:"AT",data:{uid:e.uid,type:this.type,source:this.id}}))})}unloadTile(e){return t._(this,void 0,void 0,function*(){e.unloadVectorData(),e.actor&&(yield e.actor.sendAsync({type:"RMT",data:{uid:e.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class Y extends t.E{constructor(e,i,r,n){super(),this.id=e,this.dispatcher=r,this.setEventedParent(n),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=t.e({type:"raster"},i),t.e(this,t.U(i,["url","scheme","tileSize"]))}load(){return t._(this,arguments,void 0,function*(e=!1){this._loaded=!1,this.fire(new t.l("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{const i=yield $(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,i&&(t.e(this,i),i.bounds&&(this.tileBounds=new H(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.l("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new t.l("data",{dataType:"source",sourceDataType:"content",sourceDataChanged:e})))}catch(i){this._tileJSONRequest=null,this._loaded=!0,t.Z(i)||this.fire(new t.k(i))}})}loaded(){return this._loaded}onAdd(e){this.map=e,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(e){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),e(),this.load(!0)}setTiles(e){return this.setSourceProperty(()=>{this._options.tiles=e}),this}setUrl(e){return this.setSourceProperty(()=>{this.url=e,this._options.url=e}),this}serialize(){return t.e({},this._options)}hasTile(e){return!this.tileBounds||this.tileBounds.contains(e.canonical)}loadTile(e){return t._(this,void 0,void 0,function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);e.abortController=new AbortController;try{const r=yield g.getImage(this.map._requestManager.transformRequest(i,"Tile"),e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state="unloaded");if(r&&r.data){this.map._refreshExpiredTiles&&(r.cacheControl||r.expires)&&e.setExpiryData({cacheControl:r.cacheControl,expires:r.expires});const i=this.map.painter.context,n=i.gl,s=r.data;e.texture=this.map.painter.getTileTexture(s.width),e.texture?e.texture.update(s,{useMipmap:!0}):(e.texture=new t.T(i,s,n.RGBA,{useMipmap:!0}),e.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE,n.LINEAR_MIPMAP_NEAREST)),e.state="loaded"}}catch(r){if(delete e.abortController,e.aborted)e.state="unloaded";else if(r)throw e.state="errored",r}})}abortTile(e){return t._(this,void 0,void 0,function*(){e.abortController&&(e.abortController.abort(),delete e.abortController)})}unloadTile(e){return t._(this,void 0,void 0,function*(){e.texture&&this.map.painter.saveTileTexture(e.texture)})}hasTransition(){return!1}}class K extends Y{constructor(e,i,r,n){super(e,i,r,n),this.type="raster-dem",this.maxzoom=22,this._options=t.e({type:"raster-dem"},i),this.encoding=i.encoding||"mapbox",this.redFactor=i.redFactor,this.greenFactor=i.greenFactor,this.blueFactor=i.blueFactor,this.baseShift=i.baseShift}loadTile(e){return t._(this,void 0,void 0,function*(){const i=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),r=this.map._requestManager.transformRequest(i,"Tile");e.neighboringTiles=this._getNeighboringTiles(e.tileID),e.abortController=new AbortController;try{const i=yield g.getImage(r,e.abortController,this.map._refreshExpiredTiles);if(delete e.abortController,e.aborted)return void(e.state="unloaded");if(i&&i.data){const r=i.data;this.map._refreshExpiredTiles&&(i.cacheControl||i.expires)&&e.setExpiryData({cacheControl:i.cacheControl,expires:i.expires});const n=t.b(r)&&t.$()?r:yield this.readImageNow(r),s={type:this.type,uid:e.uid,source:this.id,rawImageData:n,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!e.actor||"expired"===e.state){e.actor=this.dispatcher.getActor();const t=yield e.actor.sendAsync({type:"LDT",data:s});e.dem=t,e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.state="loaded"}}}catch(n){if(delete e.abortController,e.aborted)e.state="unloaded";else if(n)throw e.state="errored",n}})}readImageNow(e){return t._(this,void 0,void 0,function*(){if("undefined"!=typeof VideoFrame&&t.a0()){const r=e.width+2,n=e.height+2;try{return new t.R({width:r,height:n},yield t.a1(e,-1,-1,r,n))}catch(i){}}return a.getImageData(e,1)})}_getNeighboringTiles(e){const i=e.canonical,r=Math.pow(2,i.z),n=(i.x-1+r)%r,s=0===i.x?e.wrap-1:e.wrap,o=(i.x+1+r)%r,a=i.x+1===r?e.wrap+1:e.wrap,l={};return l[new t.a2(e.overscaledZ,s,i.z,n,i.y).key]={backfilled:!1},l[new t.a2(e.overscaledZ,a,i.z,o,i.y).key]={backfilled:!1},i.y>0&&(l[new t.a2(e.overscaledZ,s,i.z,n,i.y-1).key]={backfilled:!1},l[new t.a2(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.a2(e.overscaledZ,a,i.z,o,i.y-1).key]={backfilled:!1}),i.y+1e.coordinates).flat(1/0):e.coordinates.flat(1/0)}function Q(e){const t=new W;let i;switch(e.type){case"FeatureCollection":i=e.features.map(e=>J(e.geometry)).flat(1/0);break;case"Feature":i=J(e.geometry);break;default:i=J(e)}if(0==i.length)return t;for(let r=0;r0&&t.e(a,{resourceTiming:o}),this.fire(new t.l("data",Object.assign(Object.assign({},a),{sourceDataType:"metadata"}))),this.fire(new t.l("data",Object.assign(Object.assign({},a),{sourceDataType:"content",shouldReloadTileOptions:s})))}catch(n){if(this._isUpdatingWorker=!1,this._removed)return void this.fire(new t.l("dataabort",{dataType:"source"}));this.fire(new t.k(n))}finally{this._hasPendingWorkerUpdate()&&this._updateWorkerData()}})}_applyDiffToSource(e){if(!e)return;const i="string"==typeof this.promoteId?this.promoteId:void 0;if(!this._data.url&&!this._data.updateable){const e=t.a7(this._data.geojson,i);if(!e)throw new Error(`GeoJSONSource "${this.id}": GeoJSON data is not compatible with updateData`);this._data={updateable:e}}if(!this._data.updateable)return;const r=t.a8(this._data.updateable,e,i);return e.removeAll||this._options.cluster?void 0:r}_getShouldReloadTileOptions(e){if(e)return{affectedBounds:e.filter(Boolean).map(e=>Q(e))}}shouldReloadTile(e,{affectedBounds:i}){if("loading"===e.state)return!0;if("unloaded"===e.state)return!1;const{buffer:r,extent:n}=this.workerOptions.geojsonVtOptions,s=function({x:e,y:i,z:r},n=0){const s=t.a3((e-n)/Math.pow(2,r)),o=t.a4((i+1+n)/Math.pow(2,r)),a=t.a3((e+1+n)/Math.pow(2,r)),l=t.a4((i-n)/Math.pow(2,r));return new W([s,o],[a,l])}(e.tileID.canonical,r/n);for(const t of i)if(s.intersects(t))return!0;return!1}loaded(){return!this._isUpdatingWorker&&!this._hasPendingWorkerUpdate()}loadTile(e){return t._(this,void 0,void 0,function*(){const t=e.actor?"RT":"LT";e.actor=this.actor;const i={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity};e.abortController=new AbortController;const r=yield this.actor.sendAsync({type:t,data:i},e.abortController);delete e.abortController,e.unloadVectorData(),e.aborted||e.loadVectorData(r,this.map.painter,"RT"===t)})}abortTile(e){return t._(this,void 0,void 0,function*(){e.abortController&&(e.abortController.abort(),delete e.abortController),e.aborted=!0})}unloadTile(e){return t._(this,void 0,void 0,function*(){e.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:e.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 t.e({},this._options,{type:this.type,data:this._data.updateable?{type:"FeatureCollection",features:Array.from(this._data.updateable.values())}:this._data.url||this._data.geojson})}hasTransition(){return!1}}class te extends t.E{constructor(e,t,i,r){super(),this.flippedWindingOrder=!1,this.id=e,this.dispatcher=i,this.coordinates=t.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(r),this.options=t}load(e){return t._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new t.l("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{const t=yield g.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,t&&t.data&&(this.image=t.data,e&&(this.coordinates=e),this._finishLoading())}catch(i){this._request=null,this._loaded=!0,t.Z(i)||this.fire(new t.k(i))}})}loaded(){return this._loaded}updateImage(e){return e.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=e.url,this.load(e.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.l("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(e){this.map=e,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(e){this.coordinates=e;const i=e.map(t.a9.fromLngLat);var r;return this.tileID=function(e){const i=t.aa.fromPoints(e),r=i.width(),n=i.height(),s=Math.max(r,n),o=Math.max(0,Math.floor(-Math.log(s)/Math.LN2)),a=Math.pow(2,o);return new t.ac(o,Math.floor((i.minX+i.maxX)/2*a),Math.floor((i.minY+i.maxY)/2*a))}(i),this.terrainTileRanges=this._getOverlappingTileRanges(i),this.minzoom=this.maxzoom=this.tileID.z,this.tileCoords=i.map(e=>this.tileID.getTilePoint(e)._round()),this.flippedWindingOrder=((r=this.tileCoords)[1].x-r[0].x)*(r[2].y-r[0].y)-(r[1].y-r[0].y)*(r[2].x-r[0].x)<0,this.fire(new t.l("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;const e=this.map.painter.context,i=e.gl;this.texture||(this.texture=new t.T(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let r=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,r=!0)}r&&this.fire(new t.l("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(e){return t._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={}):e.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}_getOverlappingTileRanges(e){const{minX:i,minY:r,maxX:n,maxY:s}=t.aa.fromPoints(e),o={};for(let a=0;a<=t.ab;a++){const e=Math.pow(2,a),t=Math.floor(i*e),l=Math.floor(r*e),c=Math.floor(n*e),h=Math.floor(s*e);o[a]={minTileX:t,minTileY:l,maxTileX:c,maxTileY:h}}return o}}class ie extends te{constructor(e,t,i,r){super(e,t,i,r),this.roundZoom=!0,this.type="video",this.options=t}load(){return t._(this,void 0,void 0,function*(){this._loaded=!1;const e=this.options;this.urls=[];for(const t of e.urls)this.urls.push(this.map._requestManager.transformRequest(t,"Source").url);try{const e=yield t.ad(this.urls);if(this._loaded=!0,!e)return;this.video=e,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(i){this.fire(new t.k(i))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(e){if(this.video){const i=this.video.seekable;ei.end(0)?this.fire(new t.k(new t.ae(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=e}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const e=this.map.painter.context,i=e.gl;this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new t.T(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let r=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,r=!0)}r&&this.fire(new t.l("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 re extends te{constructor(e,i,r,n){super(e,i,r,n),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some(e=>!Array.isArray(e)||2!==e.length||e.some(e=>"number"!=typeof e))||this.fire(new t.k(new t.ae(`sources.${e}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.k(new t.ae(`sources.${e}`,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new t.k(new t.ae(`sources.${e}`,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof HTMLCanvasElement||this.fire(new t.k(new t.ae(`sources.${e}`,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 t.k(new t.ae(`sources.${e}`,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate}load(){return t._(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 t.k(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(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,r=i.gl;this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):(this.texture=new t.T(i,this.canvas,r.RGBA,{premultiply:!0}),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE));let n=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,n=!0)}n&&this.fire(new t.l("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",animate:this.animate,canvas:this.options.canvas,coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const e of[this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return!0;return!1}}const ne={},se=e=>{switch(e){case"geojson":return ee;case"image":return te;case"raster":return Y;case"raster-dem":return K;case"vector":return X;case"video":return ie;case"canvas":return re}return ne[e]},oe="RTLPluginLoaded";class ae extends t.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=N()}_syncState(e){return this.status=e,this.dispatcher.broadcast("SRPS",{pluginStatus:e,pluginURL:this.url}).catch(e=>{throw this.status="error",e})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(e){return t._(this,arguments,void 0,function*(e,t=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=a.resolveURL(e),!this.url)throw new Error(`requested url ${e} is invalid`);if("unavailable"===this.status){if(!t)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if("requested"===this.status)return this._requestImport()})}_requestImport(){return t._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new t.l(oe))})}lazyLoad(){"unavailable"===this.status?this.status="requested":"deferred"===this.status&&this._requestImport()}}let le=null;function ce(){return le||(le=new ae),le}var he,ue,de;(de=he||(he={}))[de.Base=0]="Base",de[de.Parent=1]="Parent",function(e){e[e.Departing=0]="Departing",e[e.Incoming=1]="Incoming"}(ue||(ue={}));class pe{constructor(e,i){this.timeAdded=0,this.fadeEndTime=0,this.fadeOpacity=1,this.tileID=e,this.uid=t.af(),this.uses=0,this.tileSize=i,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"}isRenderable(e){return this.hasData()&&(!this.fadeEndTime||this.fadeOpacity>0)&&(e||!this.holdingForSymbolFade())}setCrossFadeLogic({fadingRole:e,fadingDirection:t,fadingParentID:i,fadeEndTime:r}){this.resetFadeLogic(),this.fadingRole=e,this.fadingDirection=t,this.fadingParentID=i,this.fadeEndTime=r}setSelfFadeLogic(e){this.resetFadeLogic(),this.selfFading=!0,this.fadeEndTime=e}resetFadeLogic(){this.fadingRole=null,this.fadingDirection=null,this.fadingParentID=null,this.selfFading=!1,this.timeAdded=c(),this.fadeEndTime=0,this.fadeOpacity=1}wasRequested(){return"errored"===this.state||"loaded"===this.state||"reloading"===this.state}clearTextures(e){this.demTexture&&e.saveTileTexture(this.demTexture),this.demTexture=null}loadVectorData(e,i,r){if(this.hasData()&&this.unloadVectorData(),this.state="loaded",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestFeatureIndex.rawTileData=e.rawTileData,this.latestFeatureIndex.encoding=e.encoding):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData,this.latestFeatureIndex.encoding=this.latestEncoding)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(e,t){const i={};if(!t)return i;for(const r of e){const e=r.layerIds.map(e=>t.getLayer(e)).filter(Boolean);if(0!==e.length){r.layers=e,r.stateDependentLayerIds&&(r.stateDependentLayers=r.stateDependentLayerIds.map(t=>e.filter(e=>e.id===t)[0]));for(const t of e)i[t.id]=r}}return i}(e.buckets,null==i?void 0:i.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.ah){if(this.hasSymbolBuckets=!0,!r)break;i.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.ah&&i.hasRTLText){this.hasRTLText=!0,ce().lazyLoad();break}}this.queryPadding=0;for(const e in this.buckets){const t=this.buckets[e];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(e).queryRadius(t))}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),this.dashPositions=e.dashPositions}else this.collisionBoxArray=new t.ag}unloadVectorData(){for(const e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.dashPositions&&(this.dashPositions=null),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(e){return this.buckets[e.id]}upload(e){for(const t in this.buckets){const i=this.buckets[t];i.uploadPending()&&i.upload(e)}const i=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new t.T(e,this.imageAtlas.image,i.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new t.T(e,this.glyphAtlasImage,i.ALPHA),this.glyphAtlasImage=null)}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture)}queryRenderedFeatures(e,t,i,r,n,s,o,a,l,c,h){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:r,cameraQueryGeometry:n,scale:s,tileSize:this.tileSize,pixelPosMatrix:c,transform:a,params:o,queryPadding:this.queryPadding*l,getElevation:h},e,t,i):{}}querySourceFeatures(e,i){const r=this.latestFeatureIndex;if(!r||!r.rawTileData)return;const n=r.loadVTLayers(),s=i&&i.sourceLayer?i.sourceLayer:"",o=n[t.ai]||n[s];if(!o)return;const a=t.aj(null==i?void 0:i.filter,null==i?void 0:i.globalState),{z:l,x:c,y:h}=this.tileID.canonical,u={z:l,x:c,y:h};for(let d=0;de)t=!1;else if(i)if(this.expirationTime({zoom:0,x:0,y:0,wrap:e,fullyVisible:!1}),v=[],b=[];if(e.renderWorldCopies&&a.allowWorldCopies())for(let t=1;t<=3;t++)v.push(x(-t)),v.push(x(t));for(v.push(x(0));v.length>0;){const p=v.pop(),_=p.x,x=p.y;let w=p.fullyVisible;const T={x:_,y:x,z:p.zoom},S=a.getTileBoundingVolume(T,p.wrap,e.elevation,i);if(!w){const e=we(r,S,n);if(0===e)continue;w=2===e}const P=a.distanceToTile2d(s.x,s.y,T,S);let I=c;l&&(I=(i.calculateTileZoom||Pe)(e.zoom+t.at(e.tileSize/i.tileSize),P,g,y,e.fov)),I=(i.roundZoom?Math.round:Math.floor)(I),I=Math.max(0,I);const M=Math.min(I,u);if(p.wrap=a.getWrap(o,T,p.wrap),p.zoom>=M){if(p.zoom>1),wrap:p.wrap,fullyVisible:w})}return b.sort((e,t)=>e.distanceSq-t.distanceSq).map(e=>e.tileID)}const Ee=t.aa.fromPoints([new t.P(0,0),new t.P(t.a5,t.a5)]);function Ce(e){return"raster"===e||"image"===e||"video"===e}function Ae(e,t,i,r,n,s,o){if(!t.hasData())return!1;const{tileID:a,fadingRole:l,fadingDirection:c,fadingParentID:h}=t;if(l===he.Base&&c===ue.Incoming&&h)return i[h.key]=h,!0;const u=Math.max(a.overscaledZ-n,s);for(let d=a.overscaledZ-1;d>=u;d--){const n=a.scaledTo(d),s=e.getLoadedTile(n);if(s)return t.setCrossFadeLogic({fadingRole:he.Base,fadingDirection:ue.Incoming,fadingParentID:s.tileID,fadeEndTime:r+o}),s.setCrossFadeLogic({fadingRole:he.Parent,fadingDirection:ue.Departing,fadeEndTime:r+o}),i[n.key]=n,!0}return!1}function De(e,t,i,r,n,s){if(!t.hasData())return!1;const o=t.tileID.children(n);let a=ze(e,t,o,i,r,n,s);if(a)return!0;for(const l of o)ze(e,t,l.children(n),i,r,n,s)&&(a=!0);return a}function ze(e,t,i,r,n,s,o){if(i[0].overscaledZ>=s)return!1;let a=!1;for(const l of i){const i=e.getLoadedTile(l);if(!i)continue;const{fadingRole:s,fadingDirection:c,fadingParentID:h}=i;s===he.Base&&c===ue.Departing&&h||(i.setCrossFadeLogic({fadingRole:he.Base,fadingDirection:ue.Departing,fadingParentID:t.tileID,fadeEndTime:n+o}),t.setCrossFadeLogic({fadingRole:he.Parent,fadingDirection:ue.Incoming,fadeEndTime:n+o})),r[l.key]=l,a=!0}return a}function ke(e,t,i,r){const n=e.tileID;return!!e.selfFading||!e.hasData()&&!!t.has(n)&&(e.setSelfFadeLogic(i+r),!0)}function Re(e,t){var i;e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0;let r=t.tileID.canonical.x-e.tileID.canonical.x;const n=t.tileID.canonical.y-e.tileID.canonical.y,s=Math.pow(2,e.tileID.canonical.z),o=t.tileID.key;0===r&&0===n||Math.abs(n)>1||(Math.abs(r)>1&&(1===Math.abs(r+s)?r+=s:1===Math.abs(r-s)&&(r-=s)),t.dem&&e.dem&&(e.dem.backfillBorder(t.dem,r,n),(null===(i=e.neighboringTiles)||void 0===i?void 0:i[o])&&(e.neighboringTiles[o].backfilled=!0)))}class Le{constructor(){this._tiles={}}handleWrapJump(e){const t={};for(const i in this._tiles){const r=this._tiles[i];r.tileID=r.tileID.unwrapTo(r.tileID.wrap+e),t[r.tileID.key]=r}this._tiles=t}setFeatureState(e,t){for(const i in this._tiles)this._tiles[i].setFeatureState(e,t)}getAllTiles(){return Object.values(this._tiles)}getAllIds(e=!1){return e?Object.values(this._tiles).map(e=>e.tileID).sort(t.aw).map(e=>e.key):Object.keys(this._tiles)}getTileById(e){return this._tiles[e]}setTile(e,t){this._tiles[e]=t}deleteTileById(e){delete this._tiles[e]}getLoadedTile(e){const t=this.getTileById(e.key);return(null==t?void 0:t.hasData())?t:null}isIdRenderable(e,t=!1){var i;return null===(i=this.getTileById(e))||void 0===i?void 0:i.isRenderable(t)}getRenderableIds(e=0,i){const r=[];for(const t of this.getAllIds())this.isIdRenderable(t,i)&&r.push(this.getTileById(t));return i?r.sort((i,r)=>{const n=i.tileID,s=r.tileID,o=new t.P(n.canonical.x,n.canonical.y)._rotate(-e),a=new t.P(s.canonical.x,s.canonical.y)._rotate(-e);return n.overscaledZ-s.overscaledZ||a.y-o.y||a.x-o.x}).map(e=>e.tileID.key):r.map(e=>e.tileID).sort(t.aw).map(e=>e.key)}}class Fe extends t.E{constructor(e,i,r){super(),this.id=e,this.dispatcher=r,this.on("data",e=>this._dataHandler(e)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((e,t,i,r)=>{const n=new(se(t.type))(e,t,i,r);if(n.id!==e)throw new Error(`Expected Source id to be ${e} instead of ${n.id}`);return n})(e,i,r,this),this._inViewTiles=new Le,this._outOfViewCache=new t.ax(0,e=>this._unloadTile(e)),this._timers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._rasterFadeDuration=0,this._maxFadingAncestorLevels=5,this._state=new fe,this._didEmitContent=!1,this._updated=!1}onAdd(e){this.map=e,this._maxTileCacheSize=e?e._maxTileCacheSize:null,this._maxTileCacheZoomLevels=e?e._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(e)}onRemove(e){for(const t of this._inViewTiles.getAllTiles())t.unloadVectorData();this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(e),this._inViewTiles=new Le}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded)return!1;if(!this._source.loaded())return!1;if(!(void 0===this.used&&void 0===this.usedForTerrain||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(const e of this._inViewTiles.getAllTiles())if("loaded"!==e.state&&"errored"!==e.state)return!1;return!0}getSource(){return this._source}getState(){return this._state}pause(){this._paused=!0}resume(){if(!this._paused)return;const e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(e,i,r){return t._(this,void 0,void 0,function*(){try{yield this._source.loadTile(e),this._tileLoaded(e,i,r)}catch(n){e.state="errored",404!==n.status?this._source.fire(new t.k(n,{tile:e})):this.update(this.transform,this.terrain)}})}_unloadTile(e){this._source.unloadTile&&this._source.unloadTile(e)}_abortTile(e){this._source.abortTile&&this._source.abortTile(e),this._source.fire(new t.l("dataabort",{tile:e,coord:e.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(e){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._inViewTiles,this.map?this.map.painter:null);for(const t of this._inViewTiles.getAllTiles())t.upload(e),t.prepare(this.map.style.imageManager)}getIds(){return this._inViewTiles.getAllIds(!0)}getRenderableIds(e){var t;return this._inViewTiles.getRenderableIds(null===(t=this.transform)||void 0===t?void 0:t.bearingInRadians,e)}hasRenderableParent(e){const t=e.overscaledZ-1;if(t>=this._source.minzoom){const i=this.getLoadedTile(e.scaledTo(t));if(i)return this._inViewTiles.isIdRenderable(i.tileID.key)}return!1}reload(e,t=void 0){if(this._paused)this._shouldReloadOnResume=!0;else{this._outOfViewCache.reset();for(const i of this._inViewTiles.getAllIds()){const r=this._inViewTiles.getTileById(i);t&&!this._source.shouldReloadTile(r,t)||(e?this._reloadTile(i,"expired"):"errored"!==r.state&&this._reloadTile(i,"reloading"))}}}_reloadTile(e,i){return t._(this,void 0,void 0,function*(){const t=this._inViewTiles.getTileById(e);t&&("loading"!==t.state&&(t.state=i),yield this._loadTile(t,e,i))})}_tileLoaded(e,i,r){e.timeAdded=c(),e.selfFading&&(e.fadeEndTime=e.timeAdded+this._rasterFadeDuration),"expired"===r&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),"raster-dem"===this.getSource().type&&e.dem&&function(e,t){var i,r;const n=t.getRenderableIds();for(const s of n){if(!e.neighboringTiles||!e.neighboringTiles[s])continue;const n=t.getTileById(s);e.neighboringTiles[s].backfilled||Re(e,n),(null===(r=null===(i=n.neighboringTiles)||void 0===i?void 0:i[e.tileID.key])||void 0===r?void 0:r.backfilled)||Re(n,e)}}(e,this._inViewTiles),this._state.initializeTileState(e,this.map?this.map.painter:null),e.aborted||this._source.fire(new t.l("data",{dataType:"source",tile:e,coord:e.tileID}))}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._inViewTiles.getTileById(e)}_retainLoadedChildren(e,t){const i=this._getLoadedDescendents(t),r=new Set;for(const n of t){const t=i[n.key];if(!(null==t?void 0:t.length)){r.add(n);continue}const s=n.overscaledZ+Fe.maxOverzooming,o=t.filter(e=>e.tileID.overscaledZ<=s);if(!o.length){r.add(n);continue}const a=Math.min(...o.map(e=>e.tileID.overscaledZ)),l=o.filter(e=>e.tileID.overscaledZ===a).map(e=>e.tileID);for(const i of l)e[i.key]=i;this._areDescendentsComplete(l,a,n.overscaledZ)||r.add(n)}return r}_getLoadedDescendents(e){var t;const i={};for(const r of this._inViewTiles.getAllTiles().filter(e=>e.hasData()))for(const n of e)r.tileID.isChildOf(n)&&(i[t=n.key]||(i[t]=[])).push(r);return i}_areDescendentsComplete(e,t,i){return 1===e.length&&e[0].isOverscaled()?e[0].overscaledZ===t:Math.pow(4,t-i)===e.length}getLoadedTile(e){return this._inViewTiles.getLoadedTile(e)}updateCacheSize(e){const i=Math.ceil(e.width/this._source.tileSize)+1,r=Math.ceil(e.height/this._source.tileSize)+1,n=Math.floor(i*r*(null===this._maxTileCacheZoomLevels?t.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),s="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,n):n;this._outOfViewCache.setMaxSize(s)}handleWrapJump(e){const t=Math.round((e-(void 0===this._prevLng?e:this._prevLng))/360);this._prevLng=e,t&&(this._inViewTiles.handleWrapJump(t),this._resetTileReloadTimers())}update(e,i){if(!this._sourceLoaded||this._paused)return;let r;this.transform=e,this.terrain=i,this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this.used||this.usedForTerrain?this._source.tileID?r=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(e=>new t.a2(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)):(r=Me(e,{tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:"vector"===this._source.type&&void 0!==this.map._zoomLevelsToOverscale?e.maxZoom-this.map._zoomLevelsToOverscale:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:i,calculateTileZoom:this._source.calculateTileZoom}),this._source.hasTile&&(r=r.filter(e=>this._source.hasTile(e)))):r=[],this.usedForTerrain&&(r=this._addTerrainIdealTiles(r));const n=0===r.length&&!this._updated&&this._didEmitContent;this._updated=!0,n&&this.fire(new t.l("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));const s=Ie(e,this._source),o=this._updateRetainedTiles(r,s),a=Ce(this._source.type);a&&this._rasterFadeDuration>0&&!i&&function(e,i,r,n,s,o,a){const l=c(),h=t.av(i);for(const t of i){const i=e.getTileById(t.key);i.fadingDirection!==ue.Departing&&0!==i.fadeOpacity||i.resetFadeLogic(),Ae(e,i,r,l,n,s,a)||De(e,i,r,l,o,a)||ke(i,h,l,a)||i.resetFadeLogic()}}(this._inViewTiles,r,o,this._maxFadingAncestorLevels,this._source.minzoom,this._source.maxzoom,this._rasterFadeDuration),a?this._cleanUpRasterTiles(o):this._cleanUpVectorTiles(o)}_cleanUpRasterTiles(e){for(const t of this._inViewTiles.getAllIds())e[t]||this._removeTile(t)}_cleanUpVectorTiles(e){for(const t of this._inViewTiles.getAllIds()){const i=this._inViewTiles.getTileById(t);e[t]?i.clearSymbolFadeHold():i.hasSymbolBuckets?i.holdingForSymbolFade()?i.symbolFadeFinished()&&this._removeTile(t):i.setSymbolHoldDuration(this.map._fadeDuration):this._removeTile(t)}}_addTerrainIdealTiles(e){const t=[];for(const i of e)if(i.canonical.z>this._source.minzoom){const e=i.scaledTo(i.canonical.z-1);t.push(e);const r=i.scaledTo(Math.max(this._source.minzoom,Math.min(i.canonical.z,5)));t.push(r)}return e.concat(t)}releaseSymbolFadeTiles(){for(const e of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(e).holdingForSymbolFade()&&this._removeTile(e)}_updateRetainedTiles(e,t){var i;const r=new Set;for(const l of e)this._addTile(l).hasData()||r.add(l);const n=e.reduce((e,t)=>(e[t.key]=t,e),{}),s=this._retainLoadedChildren(n,r),o={},a=Math.max(t-Fe.maxUnderzooming,this._source.minzoom);for(const l of s){let e=this._inViewTiles.getTileById(l.key),t=null==e?void 0:e.wasRequested();for(let r=l.overscaledZ-1;r>=a;--r){const s=l.scaledTo(r);if(o[s.key])break;if(o[s.key]=!0,e=this.getTile(s),!e&&t&&(e=this._addTile(s)),e){const r=e.hasData();if((r||!(null===(i=this.map)||void 0===i?void 0:i.cancelPendingTileRequestsWhileZooming)||t)&&(n[s.key]=s),t=e.wasRequested(),r)break}}}return n}_addTile(e){let i=this._inViewTiles.getTileById(e.key);if(i)return i;i=this._outOfViewCache.getAndRemove(e),i&&(i.resetFadeLogic(),this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null));const r=i;return i||(i=new pe(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,e.key,i.state)),i.uses++,this._inViewTiles.setTile(e.key,i),r||this._source.fire(new t.l("dataloading",{tile:i,coord:i.tileID,dataType:"source"})),i}_setTileReloadTimer(e,t){this._clearTileReloadTimer(e);const i=t.getExpiryTimeout();i&&(this._timers[e]=setTimeout(()=>{this._reloadTile(e,"expired"),delete this._timers[e]},i))}_clearTileReloadTimer(e){const t=this._timers[e];t&&(clearTimeout(t),delete this._timers[e])}_resetTileReloadTimers(){for(const e in this._timers)clearTimeout(this._timers[e]),delete this._timers[e];for(const e of this._inViewTiles.getAllIds()){const t=this._inViewTiles.getTileById(e);this._setTileReloadTimer(e,t)}}refreshTiles(e){for(const t of this._inViewTiles.getAllIds()){const i=this._inViewTiles.getTileById(t);(this._inViewTiles.isIdRenderable(t)||"errored"==i.state)&&e.some(e=>e.equals(i.tileID.canonical))&&this._reloadTile(t,"expired")}}_removeTile(e){const t=this._inViewTiles.getTileById(e);t&&(t.uses--,this._inViewTiles.deleteTileById(e),this._clearTileReloadTimer(e),t.uses>0||(t.hasData()&&"reloading"!==t.state?this._outOfViewCache.add(t.tileID,t,t.getExpiryTimeout()):(t.aborted=!0,this._abortTile(t),this._unloadTile(t))))}_dataHandler(e){"source"===e.dataType&&("metadata"!==e.sourceDataType?"content"===e.sourceDataType&&this._sourceLoaded&&!this._paused&&(this.reload(e.sourceDataChanged,e.shouldReloadTileOptions),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0):this._sourceLoaded=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const e of this._inViewTiles.getAllIds())this._removeTile(e);this._outOfViewCache.reset()}tilesIn(e,i,r){const n=[],s=this.transform;if(!s)return n;const o=s.getCoveringTilesDetailsProvider().allowWorldCopies(),a=r?s.getCameraQueryGeometry(e):e,l=e=>s.screenPointToMercatorCoordinate(e,this.terrain),c=this.transformBbox(e,l,!o),h=this.transformBbox(a,l,!o),u=this.getIds(),d=t.aa.fromPoints(h);for(let p=0;pi.getTilePoint(new t.a9(e.x,e.y)));if(r.expandBy(l),r.intersects(Ee)){const t=c.map(e=>i.getTilePoint(e)),r=h.map(e=>i.getTilePoint(e));n.push({tile:e,tileID:o?i:i.unwrapTo(0),queryGeometry:t,cameraQueryGeometry:r,scale:a})}}}return n}transformBbox(e,i,r){let n=e.map(i);if(r){const r=t.aa.fromPoints(e);r.shrinkBy(.001*Math.min(r.width(),r.height()));const s=r.map(i);t.aa.fromPoints(n).covers(s)||(n=n.map(e=>e.x>.5?new t.a9(e.x-1,e.y,e.z):e))}return n}getVisibleCoordinates(e){const t=this.getRenderableIds(e).map(e=>this._inViewTiles.getTileById(e).tileID);return this.transform&&this.transform.populateCache(t),t}hasTransition(){return!!this._source.hasTransition()||!(!Ce(this._source.type)||!function(e,t){if(t<=0)return!1;const i=c();for(const r of e.getAllTiles())if(r.fadeEndTime>=i)return!0;return!1}(this._inViewTiles,this._rasterFadeDuration))}setRasterFadeDuration(e){this._rasterFadeDuration=e}setFeatureState(e,i,r){this._state.updateState(e=e||t.ai,i,r)}removeFeatureState(e,i,r){this._state.removeFeatureState(e=e||t.ai,i,r)}getFeatureState(e,i){return this._state.getState(e=e||t.ai,i)}setDependencies(e,t,i){const r=this._inViewTiles.getTileById(e);r&&r.setDependencies(t,i)}reloadTilesForDependencies(e,t){for(const i of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(i).hasDependency(e,t)&&this._reloadTile(i,"reloading");this._outOfViewCache.filter(i=>!i.hasDependency(e,t))}areTilesLoaded(){for(const e of this._inViewTiles.getAllTiles())if("loaded"!==e.state&&"errored"!==e.state)return!1;return!0}}Fe.maxUnderzooming=10,Fe.maxOverzooming=3;class Be{constructor(e,t){this.reset(e,t)}reset(e,t){this.points=e||[],this._distances=[0];for(let i=1;i0?(n-o)/a:0;return this.points[s].mult(1-l).add(this.points[i].mult(l))}}function Oe(e,t){let i=!0;return"always"===e||"never"!==e&&"never"!==t||(i=!1),i}class Ve{constructor(e,t,i){const r=this.boxCells=[],n=this.circleCells=[];this.xCellCount=Math.ceil(e/i),this.yCellCount=Math.ceil(t/i);for(let s=0;sthis.width||r<0||t>this.height)return[];const a=[];if(e<=0&&t<=0&&this.width<=i&&this.height<=r){if(n)return[{key:null,x1:e,y1:t,x2:i,y2:r}];for(let e=0;e0}hitTestCircle(e,t,i,r,n){const s=e-i,o=e+i,a=t-i,l=t+i;if(o<0||s>this.width||l<0||a>this.height)return!1;const c=[];return this._forEachCell(s,a,o,l,this._queryCellCircle,c,{hitTest:!0,overlapMode:r,circle:{x:e,y:t,radius:i},seenUids:{box:{},circle:{}}},n),c.length>0}_queryCell(e,t,i,r,n,s,o,a){const{seenUids:l,hitTest:c,overlapMode:h}=o,u=this.boxCells[n];if(null!==u){const n=this.bboxes;for(const o of u)if(!l.box[o]){l.box[o]=!0;const u=4*o,d=this.boxKeys[o];if(e<=n[u+2]&&t<=n[u+3]&&i>=n[u+0]&&r>=n[u+1]&&(!a||a(d))&&(!c||!Oe(h,d.overlapMode))&&(s.push({key:d,x1:n[u],y1:n[u+1],x2:n[u+2],y2:n[u+3]}),c))return!0}}const d=this.circleCells[n];if(null!==d){const n=this.circles;for(const o of d)if(!l.circle[o]){l.circle[o]=!0;const u=3*o,d=this.circleKeys[o];if(this._circleAndRectCollide(n[u],n[u+1],n[u+2],e,t,i,r)&&(!a||a(d))&&(!c||!Oe(h,d.overlapMode))){const e=n[u],t=n[u+1],i=n[u+2];if(s.push({key:d,x1:e-i,y1:t-i,x2:e+i,y2:t+i}),c)return!0}}}return!1}_queryCellCircle(e,t,i,r,n,s,o,a){const{circle:l,seenUids:c,overlapMode:h}=o,u=this.boxCells[n];if(null!==u){const e=this.bboxes;for(const t of u)if(!c.box[t]){c.box[t]=!0;const i=4*t,r=this.boxKeys[t];if(this._circleAndRectCollide(l.x,l.y,l.radius,e[i+0],e[i+1],e[i+2],e[i+3])&&(!a||a(r))&&!Oe(h,r.overlapMode))return s.push(!0),!0}}const d=this.circleCells[n];if(null!==d){const e=this.circles;for(const t of d)if(!c.circle[t]){c.circle[t]=!0;const i=3*t,r=this.circleKeys[t];if(this._circlesCollide(e[i],e[i+1],e[i+2],l.x,l.y,l.radius)&&(!a||a(r))&&!Oe(h,r.overlapMode))return s.push(!0),!0}}}_forEachCell(e,t,i,r,n,s,o,a){const l=this._convertToXCellCoord(e),c=this._convertToYCellCoord(t),h=this._convertToXCellCoord(i),u=this._convertToYCellCoord(r);for(let d=l;d<=h;d++)for(let l=c;l<=u;l++)if(n.call(this,e,t,i,r,this.xCellCount*l+d,s,o,a))return}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,i,r,n,s){const o=r-e,a=n-t,l=i+s;return l*l>o*o+a*a}_circleAndRectCollide(e,t,i,r,n,s,o){const a=(s-r)/2,l=Math.abs(e-(r+a));if(l>a+i)return!1;const c=(o-n)/2,h=Math.abs(t-(n+c));if(h>c+i)return!1;if(l<=a||h<=c)return!0;const u=l-a,d=h-c;return u*u+d*d<=i*i}}function je(e,i,n){const s=t.N();if(!e){const{vecSouth:e,vecEast:t}=Ue(i),n=r();n[0]=t[0],n[1]=t[1],n[2]=e[0],n[3]=e[1],o=n,(d=(l=(a=n)[0])*(u=a[3])-(h=a[2])*(c=a[1]))&&(o[0]=u*(d=1/d),o[1]=-c*d,o[2]=-h*d,o[3]=l*d),s[0]=n[0],s[1]=n[1],s[4]=n[2],s[5]=n[3]}var o,a,l,c,h,u,d;return t.Q(s,s,[1/n,1/n,1]),s}function Ne(e,i,r,n){if(e){const e=t.N();if(!i){const{vecSouth:t,vecEast:i}=Ue(r);e[0]=i[0],e[1]=i[1],e[4]=t[0],e[5]=t[1]}return t.Q(e,e,[n,n,1]),e}return r.pixelsToClipSpaceMatrix}function Ue(e){const i=Math.cos(e.rollInRadians),r=Math.sin(e.rollInRadians),n=Math.cos(e.pitchInRadians),s=Math.cos(e.bearingInRadians),o=Math.sin(e.bearingInRadians),a=t.aC();a[0]=-s*n*r-o*i,a[1]=-o*n*r+s*i;const l=t.aD(a);l<1e-9?t.aE(a):t.aF(a,a,1/l);const c=t.aC();c[0]=s*n*i-o*r,c[1]=o*n*i+s*r;const h=t.aD(c);return h<1e-9?t.aE(c):t.aF(c,c,1/h),{vecEast:c,vecSouth:a}}function Ge(e,i,r,n){let s;n?(s=[e,i,n(e,i),1],t.aH(s,s,r)):(s=[e,i,0,1],ot(s,s,r));const o=s[3];return{point:new t.P(s[0]/o,s[1]/o),signedDistanceFromCamera:o,isOccluded:!1}}function qe(e,t){return.5+e/t*.5}function Ze(e,t){return e.x>=-t[0]&&e.x<=t[0]&&e.y>=-t[1]&&e.y<=t[1]}function $e(e,i,r,n,s,o,a,l,c,h,u,d,p){const f=r?e.textSizeData:e.iconSizeData,m=t.ay(f,i.transform.zoom),_=[256/i.width*2+1,256/i.height*2+1],g=r?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;g.clear();const y=e.lineVertexArray,x=r?e.text.placedSymbolArray:e.icon.placedSymbolArray,v=i.transform.width/i.transform.height;let b=!1;for(let w=0;wMath.abs(r.x-i.x)*n?{useVertical:!0}:(e===t.az.vertical?i.yr.x)?{needsFlipping:!0}:null}function Xe(e){const{projectionContext:i,pitchedLabelPlaneMatrixInverse:r,symbol:n,fontSize:s,flip:o,keepUpright:a,glyphOffsetArray:l,dynamicLayoutVertexArray:c,aspectRatio:h,rotateToLine:u}=e,d=s/24,p=n.lineOffsetX*d,f=n.lineOffsetY*d;let m;if(n.numGlyphs>1){const e=n.glyphStartIndex+n.numGlyphs,t=n.lineStartIndex,s=n.lineStartIndex+n.lineLength,c=We(d,l,p,f,o,n,u,i);if(!c)return{notEnoughRoom:!0};const _=Qe(c.first.point.x,c.first.point.y,i,r),g=Qe(c.last.point.x,c.last.point.y,i,r);if(a&&!o){const e=He(n.writingMode,_,g,h);if(e)return e}m=[c.first];for(let r=n.glyphStartIndex+1;r0?a.point:Ye(i.tileAnchorPoint,o,e,1,i),c=Qe(e.x,e.y,i,r),u=Qe(l.x,l.y,i,r),d=He(n.writingMode,c,u,h);if(d)return d}const e=rt(d*l.getoffsetX(n.glyphStartIndex),p,f,o,n.segment,n.lineStartIndex,n.lineStartIndex+n.lineLength,i,u);if(!e||i.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};m=[e]}for(const _ of m)t.aG(c,_.point,_.angle);return{}}function Ye(e,t,i,r,n){const s=e.add(e.sub(t)._unit()),o=Je(s.x,s.y,n).point,a=i.sub(o);return i.add(a._mult(r/a.mag()))}function Ke(e,i,r){const n=i.projectionCache;if(n.projections[e])return n.projections[e];const s=new t.P(i.lineVertexArray.getx(e),i.lineVertexArray.gety(e)),o=Je(s.x,s.y,i);if(o.signedDistanceFromCamera>0)return n.projections[e]=o.point,n.anyProjectionOccluded=n.anyProjectionOccluded||o.isOccluded,o.point;const a=e-r.direction;return Ye(0===r.distanceFromAnchor?i.tileAnchorPoint:new t.P(i.lineVertexArray.getx(a),i.lineVertexArray.gety(a)),s,r.previousVertex,r.absOffsetX-r.distanceFromAnchor+1,i)}function Je(e,t,i){const r=e+i.translation[0],n=t+i.translation[1];let s;return i.pitchWithMap?(s=Ge(r,n,i.pitchedLabelPlaneMatrix,i.getElevation),s.isOccluded=!1):(s=i.transform.projectTileCoordinates(r,n,i.unwrappedTileID,i.getElevation),s.point.x=(.5*s.point.x+.5)*i.width,s.point.y=(.5*-s.point.y+.5)*i.height),s}function Qe(e,i,r,n){if(r.pitchWithMap){const s=[e,i,0,1];return t.aH(s,s,n),r.transform.projectTileCoordinates(s[0]/s[3],s[1]/s[3],r.unwrappedTileID,r.getElevation).point}return{x:e/r.width*2-1,y:1-i/r.height*2}}function et(e,t,i){return i.transform.projectTileCoordinates(e,t,i.unwrappedTileID,i.getElevation)}function tt(e,t,i){return e._unit()._perp()._mult(t*i)}function it(e,i,r,n,s,o,a,l,c){if(l.projectionCache.offsets[e])return l.projectionCache.offsets[e];const h=r.add(i);if(e+c.direction=s)return l.projectionCache.offsets[e]=h,h;const u=Ke(e+c.direction,l,c),d=tt(u.sub(r),a,c.direction),p=r.add(d),f=u.add(d);return l.projectionCache.offsets[e]=t.aI(o,h,p,f)||h,l.projectionCache.offsets[e]}function rt(e,t,i,r,n,s,o,a,l){const c=r?e-t:e+t;let h=c>0?1:-1,u=0;r&&(h*=-1,u=Math.PI),h<0&&(u+=Math.PI);let d,p=h>0?s+n:s+n+1;a.projectionCache.cachedAnchorPoint?d=a.projectionCache.cachedAnchorPoint:(d=Je(a.tileAnchorPoint.x,a.tileAnchorPoint.y,a).point,a.projectionCache.cachedAnchorPoint=d);let f,m,_=d,g=d,y=0,x=0;const v=Math.abs(c),b=[];let w;for(;y+x<=v;){if(p+=h,p=o)return null;y+=x,g=_,m=f;const e={absOffsetX:v,direction:h,distanceFromAnchor:y,previousVertex:g};if(_=Ke(p,a,e),0===i)b.push(g),w=_.sub(g);else{let t;const r=_.sub(g);t=0===r.mag()?tt(Ke(p+h,a,e).sub(_),i,h):tt(r,i,h),m||(m=g.add(t)),f=it(p,t,_,s,o,m,i,a,e),b.push(m),w=f.sub(m)}x=w.mag()}const T=w._mult((v-y)/x)._add(m||g),S=u+Math.atan2(_.y-g.y,_.x-g.x);return b.push(T),{point:T,angle:l?S:0,path:b}}const nt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function st(e,t){for(let i=0;i=1;e--)p.push(o.path[e]);for(let e=1;ee.signedDistanceFromCamera<=0)?[]:e.map(e=>e.point)}let _=[];if(p.length>0){const e=p[0].clone(),i=p[0].clone();for(let t=1;t=r.x&&i.x<=n.x&&e.y>=r.y&&i.y<=n.y?[p]:i.xn.x||i.yn.y?[]:t.aJ([p],r.x,r.y,n.x,n.y)}for(const t of _){s.reset(t,.25*i);let r=0;r=s.length<=.5*i?1:Math.ceil(s.paddedLength/f)+1;for(let t=0;ti&&(i=n,t=r));return e.slice(t,t+i)}(function(e,i){const r=t.N();return t.aB(r,i.pitchedLabelPlaneMatrix),e.map(e=>{const t=Ge(e.x,e.y,r,i.getElevation),n=i.transform.projectTileCoordinates(t.point.x,t.point.y,i.unwrappedTileID,i.getElevation);return n.point.x=(.5*n.point.x+.5)*i.width,n.point.y=(.5*-n.point.y+.5)*i.height,n})}(e,i))}queryRenderedSymbols(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return{};const i=[],r=new t.aa;for(const u of e){const e=new t.P(u.x+at,u.y+at);r.extend(e),i.push(e)}const{minX:n,minY:s,maxX:o,maxY:a}=r,l=this.grid.query(n,s,o,a).concat(this.ignoredGrid.query(n,s,o,a)),c={},h={};for(const u of l){const e=u.key;if(void 0===c[e.bucketInstanceId]&&(c[e.bucketInstanceId]={}),c[e.bucketInstanceId][e.featureIndex])continue;const r=[new t.P(u.x1,u.y1),new t.P(u.x2,u.y1),new t.P(u.x2,u.y2),new t.P(u.x1,u.y2)];t.aK(i,r)&&(c[e.bucketInstanceId][e.featureIndex]=!0,void 0===h[e.bucketInstanceId]&&(h[e.bucketInstanceId]=[]),h[e.bucketInstanceId].push(e.featureIndex))}return h}insertCollisionBox(e,t,i,r,n,s){(i?this.ignoredGrid:this.grid).insert({bucketInstanceId:r,featureIndex:n,collisionGroupID:s,overlapMode:t},e[0],e[1],e[2],e[3])}insertCollisionCircles(e,t,i,r,n,s){const o=i?this.ignoredGrid:this.grid,a={bucketInstanceId:r,featureIndex:n,collisionGroupID:s,overlapMode:t};for(let l=0;l=this.screenRightBoundary||rthis.screenBottomBoundary}isInsideGrid(e,t,i,r){return i>=0&&e=0&&tthis.projectAndGetPerspectiveRatio(e.x,e.y,n,c,u));C=e.some(e=>!e.isOccluded),E=e.map(e=>new t.P(e.x,e.y))}else C=!0;return{box:t.aL(E),allPointsOccluded:!C}}}class ct{constructor(e,t,i,r){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):r&&i?1:0,this.placed=i}isHidden(){return 0===this.opacity&&!this.placed}}class ht{constructor(e,t,i,r,n){this.text=new ct(e?e.text:null,t,i,n),this.icon=new ct(e?e.icon:null,t,r,n)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class ut{constructor(e,t,i){this.text=e,this.icon=t,this.skipFade=i}}class dt{constructor(e,t,i,r,n){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=i,this.bucketIndex=r,this.tileID=n}}class pt{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={}}get(e){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[e]){const t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t}}return this.collisionGroups[e]}}function ft(e,i,r,n,s){const{horizontalAlign:o,verticalAlign:a}=t.aS(e);return new t.P(-(o-.5)*i+n[0]*s,-(a-.5)*r+n[1]*s)}class mt{constructor(e,t,i,r,n){this.transform=e.clone(),this.terrain=t,this.collisionIndex=new lt(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=i,this.retainedQueryData={},this.collisionGroups=new pt(r),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=n,n&&(n.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(e){const t=this.terrain;return t?(i,r)=>t.getElevation(e,i,r):null}getBucketParts(e,i,r,n){const s=r.getBucket(i),o=r.latestFeatureIndex;if(!s||!o||i.id!==s.layerIds[0])return;const a=r.collisionBoxArray,l=s.layers[0].layout,c=s.layers[0].paint,h=Math.pow(2,this.transform.zoom-r.tileID.overscaledZ),u=r.tileSize/t.a5,d=r.tileID.toUnwrapped(),p="map"===l.get("text-rotation-alignment"),f=t.aN(r,1,this.transform.zoom),m=t.aO(this.collisionIndex.transform,r,c.get("text-translate"),c.get("text-translate-anchor")),_=t.aO(this.collisionIndex.transform,r,c.get("icon-translate"),c.get("icon-translate-anchor")),g=je(p,this.transform,f);this.retainedQueryData[s.bucketInstanceId]=new dt(s.bucketInstanceId,o,s.sourceLayerIndex,s.index,r.tileID);const y={bucket:s,layout:l,translationText:m,translationIcon:_,unwrappedTileID:d,pitchedLabelPlaneMatrix:g,scale:h,textPixelRatio:u,holdingForFade:r.holdingForSymbolFade(),collisionBoxArray:a,partiallyEvaluatedTextSize:t.ay(s.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(s.sourceID)};if(n)for(const t of s.sortKeyRanges){const{sortKey:i,symbolInstanceStart:r,symbolInstanceEnd:n}=t;e.push({sortKey:i,symbolInstanceStart:r,symbolInstanceEnd:n,parameters:y})}else e.push({symbolInstanceStart:0,symbolInstanceEnd:s.symbolInstances.length,parameters:y})}attemptAnchorPlacement(e,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y,x,v){const b=t.aP[e.textAnchor],w=[e.textOffset0,e.textOffset1],T=ft(b,r,n,w,s),S=this.collisionIndex.placeCollisionBox(i,d,l,c,h,a,o,_,u.predicate,x,T,v);if((!y||this.collisionIndex.placeCollisionBox(y,d,l,c,h,a,o,g,u.predicate,x,T,v).placeable)&&S.placeable){let e;if(this.prevPlacement&&this.prevPlacement.variableOffsets[p.crossTileID]&&this.prevPlacement.placements[p.crossTileID]&&this.prevPlacement.placements[p.crossTileID].text&&(e=this.prevPlacement.variableOffsets[p.crossTileID].anchor),0===p.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[p.crossTileID]={textOffset:w,width:r,height:n,anchor:b,textBoxScale:s,prevAnchor:e},this.markUsedJustification(f,b,p,m),f.allowVerticalPlacement&&(this.markUsedOrientation(f,m,p),this.placedOrientations[p.crossTileID]=m),{shift:T,placedGlyphBoxes:S}}}placeLayerBucketPart(e,i,r){const{bucket:n,layout:s,translationText:o,translationIcon:a,unwrappedTileID:l,pitchedLabelPlaneMatrix:c,textPixelRatio:h,holdingForFade:u,collisionBoxArray:d,partiallyEvaluatedTextSize:p,collisionGroup:f}=e.parameters,m=s.get("text-optional"),_=s.get("icon-optional"),g=t.aQ(s,"text-overlap","text-allow-overlap"),y="always"===g,x=t.aQ(s,"icon-overlap","icon-allow-overlap"),v="always"===x,b="map"===s.get("text-rotation-alignment"),w="map"===s.get("text-pitch-alignment"),T="none"!==s.get("icon-text-fit"),S="viewport-y"===s.get("symbol-z-order"),P=y&&(v||!n.hasIconData()||_),I=v&&(y||!n.hasTextData()||m);!n.collisionArrays&&d&&n.deserializeCollisionBoxes(d);const M=this.retainedQueryData[n.bucketInstanceId].tileID,E=this._getTerrainElevationFunc(M),C=this.transform.getFastPathSimpleProjectionMatrix(M),A=(e,d,v)=>{var S,A;if(i[e.crossTileID])return;if(u)return void(this.placements[e.crossTileID]=new ut(!1,!1,!1));let D=!1,z=!1,k=!0,R=null,L={box:null,placeable:!1,offscreen:null,occluded:!1},F={placeable:!1},B=null,O=null,V=null,j=0,N=0,U=0;d.textFeatureIndex?j=d.textFeatureIndex:e.useRuntimeCollisionCircles&&(j=e.featureIndex),d.verticalTextFeatureIndex&&(N=d.verticalTextFeatureIndex);const G=d.textBox;if(G){const i=i=>{let r=t.az.horizontal;if(n.allowVerticalPlacement&&!i&&this.prevPlacement){const t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,r=t,this.markUsedOrientation(n,r,e))}return r},s=(i,r)=>{if(n.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&d.verticalTextBox){for(const e of n.writingModes)if(e===t.az.vertical?(L=r(),F=L):L=i(),L&&L.placeable)break}else L=i()},c=e.textAnchorOffsetStartIndex,u=e.textAnchorOffsetEndIndex;if(u===c){const r=(t,i)=>{const r=this.collisionIndex.placeCollisionBox(t,g,h,M,l,w,b,o,f.predicate,E,void 0,C);return r&&r.placeable&&(this.markUsedOrientation(n,i,e),this.placedOrientations[e.crossTileID]=i),r};s(()=>r(G,t.az.horizontal),()=>{const i=d.verticalTextBox;return n.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?r(i,t.az.vertical):{box:null,offscreen:null}}),i(L&&L.placeable)}else{let p=t.aP[null===(A=null===(S=this.prevPlacement)||void 0===S?void 0:S.variableOffsets[e.crossTileID])||void 0===A?void 0:A.anchor];const m=(t,i,s)=>{const d=t.x2-t.x1,m=t.y2-t.y1,_=e.textBoxScale,y=T&&"never"===x?i:null;let v=null,S="never"===g?1:2,P="never";p&&S++;for(let r=0;rm(G,d.iconBox,t.az.horizontal),()=>{const i=d.verticalTextBox;return n.allowVerticalPlacement&&(!L||!L.placeable)&&e.numVerticalGlyphVertices>0&&i?m(i,d.verticalIconBox,t.az.vertical):{box:null,occluded:!0,offscreen:null}}),L&&(D=L.placeable,k=L.offscreen);const _=i(L&&L.placeable);if(!D&&this.prevPlacement){const t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(n,t.anchor,e,_))}}}if(B=L,D=B&&B.placeable,k=B&&B.offscreen,e.useRuntimeCollisionCircles&&e.centerJustifiedTextSymbolIndex>=0){const i=n.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),a=t.aA(n.textSizeData,p,i),h=s.get("text-padding");O=this.collisionIndex.placeCollisionCircles(g,i,n.lineVertexArray,n.glyphOffsetArray,a,l,c,r,w,f.predicate,e.collisionCircleDiameter,h,o,E),O.circles.length&&O.collisionDetected&&!r&&t.w("Collisions detected, but collision boxes are not shown"),D=y||O.circles.length>0&&!O.collisionDetected,k=k&&O.offscreen}if(d.iconFeatureIndex&&(U=d.iconFeatureIndex),d.iconBox){const e=e=>this.collisionIndex.placeCollisionBox(e,x,h,M,l,w,b,a,f.predicate,E,T&&R?R:void 0,C);F&&F.placeable&&d.verticalIconBox?(V=e(d.verticalIconBox),z=V.placeable):(V=e(d.iconBox),z=V.placeable),k=k&&V.offscreen}const q=m||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,Z=_||0===e.numIconVertices;q||Z?Z?q||(z=z&&D):D=z&&D:z=D=z&&D;const $=z&&V.placeable;if(D&&B.placeable&&this.collisionIndex.insertCollisionBox(B.box,g,s.get("text-ignore-placement"),n.bucketInstanceId,F&&F.placeable&&N?N:j,f.ID),$&&this.collisionIndex.insertCollisionBox(V.box,x,s.get("icon-ignore-placement"),n.bucketInstanceId,U,f.ID),O&&D&&this.collisionIndex.insertCollisionCircles(O.circles,g,s.get("text-ignore-placement"),n.bucketInstanceId,j,f.ID),r&&this.storeCollisionData(n.bucketInstanceId,v,d,B,V,O),0===e.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");if(0===n.bucketInstanceId)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[e.crossTileID]=new ut((D||P)&&!(null==B?void 0:B.occluded),(z||I)&&!(null==V?void 0:V.occluded),k||n.justReloaded),i[e.crossTileID]=!0};if(S){if(0!==e.symbolInstanceStart)throw new Error("bucket.bucketInstanceId should be 0");const t=n.getSortedSymbolIndexes(-this.transform.bearingInRadians);for(let e=t.length-1;e>=0;--e){const i=t[e];A(n.symbolInstances.get(i),n.collisionArrays[i],i)}}else for(let t=e.symbolInstanceStart;t=0&&(e.text.placedSymbolArray.get(t).crossTileID=s>=0&&t!==s?0:r.crossTileID)}markUsedOrientation(e,i,r){const n=i===t.az.horizontal||i===t.az.horizontalOnly?i:0,s=i===t.az.vertical?i:0,o=[r.leftJustifiedTextSymbolIndex,r.centerJustifiedTextSymbolIndex,r.rightJustifiedTextSymbolIndex];for(const t of o)e.text.placedSymbolArray.get(t).placedOrientation=n;r.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(r.verticalPlacedTextSymbolIndex).placedOrientation=s)}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;const t=this.prevPlacement;let i=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;const r=t?t.symbolFadeChange(e):1,n=t?t.opacities:{},s=t?t.variableOffsets:{},o=t?t.placedOrientations:{};for(const a in this.placements){const e=this.placements[a],t=n[a];t?(this.opacities[a]=new ht(t,r,e.text,e.icon),i=i||e.text!==t.text.placed||e.icon!==t.icon.placed):(this.opacities[a]=new ht(null,r,e.text,e.icon,e.skipFade),i=i||e.text||e.icon)}for(const a in n){const e=n[a];if(!this.opacities[a]){const t=new ht(e,r,!1,!1);t.isHidden()||(this.opacities[a]=t,i=i||e.text.placed||e.icon.placed)}}for(const a in s)this.variableOffsets[a]||!this.opacities[a]||this.opacities[a].isHidden()||(this.variableOffsets[a]=s[a]);for(const a in o)this.placedOrientations[a]||!this.opacities[a]||this.opacities[a].isHidden()||(this.placedOrientations[a]=o[a]);if(t&&void 0===t.lastPlacementChangeTime)throw new Error("Last placement time for previous placement is not defined");i?this.lastPlacementChangeTime=e:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e)}updateLayerOpacities(e,t){const i={};for(const r of t){const t=r.getBucket(e);t&&r.latestFeatureIndex&&e.id===t.layerIds[0]&&this.updateBucketOpacities(t,r.tileID,i,r.collisionBoxArray)}}updateBucketOpacities(e,i,r,n){e.hasTextData()&&(e.text.opacityVertexArray.clear(),e.text.hasVisibleVertices=!1),e.hasIconData()&&(e.icon.opacityVertexArray.clear(),e.icon.hasVisibleVertices=!1),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();const s=e.layers[0],o=s.layout,a=new ht(null,0,!1,!1,!0),l=o.get("text-allow-overlap"),c=o.get("icon-allow-overlap"),h=s._unevaluatedLayout.hasValue("text-variable-anchor")||s._unevaluatedLayout.hasValue("text-variable-anchor-offset"),u="map"===o.get("text-rotation-alignment"),d="map"===o.get("text-pitch-alignment"),p="none"!==o.get("icon-text-fit"),f=new ht(null,0,l&&(c||!e.hasIconData()||o.get("icon-optional")),c&&(l||!e.hasTextData()||o.get("text-optional")),!0);!e.collisionArrays&&n&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(n);const m=(e,t,i)=>{for(let r=0;r0,y=this.placedOrientations[i.crossTileID],x=y===t.az.vertical,v=y===t.az.horizontal||y===t.az.horizontalOnly;if(n>0||s>0){const t=St(l.text);m(e.text,n,x?Pt:t),m(e.text,s,v?Pt:t);const r=l.text.isHidden();[i.rightJustifiedTextSymbolIndex,i.centerJustifiedTextSymbolIndex,i.leftJustifiedTextSymbolIndex].forEach(t=>{t>=0&&(e.text.placedSymbolArray.get(t).hidden=r||x?1:0)}),i.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(i.verticalPlacedTextSymbolIndex).hidden=r||v?1:0);const o=this.variableOffsets[i.crossTileID];o&&this.markUsedJustification(e,o.anchor,i,y);const a=this.placedOrientations[i.crossTileID];a&&(this.markUsedJustification(e,"left",i,a),this.markUsedOrientation(e,a,i))}if(c){const t=St(l.icon),r=!(p&&i.verticalPlacedIconSymbolIndex&&x);i.placedIconSymbolIndex>=0&&(m(e.icon,i.numIconVertices,r?t:Pt),e.icon.placedSymbolArray.get(i.placedIconSymbolIndex).hidden=l.icon.isHidden()),i.verticalPlacedIconSymbolIndex>=0&&(m(e.icon,i.numVerticalIconVertices,r?Pt:t),e.icon.placedSymbolArray.get(i.verticalPlacedIconSymbolIndex).hidden=l.icon.isHidden())}const b=_&&_.has(g)?_.get(g):{text:null,icon:null};if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){const i=e.collisionArrays[g];if(i){let r=new t.P(0,0);if(i.textBox||i.verticalTextBox){let t=!0;if(h){const e=this.variableOffsets[o];e?(r=ft(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),u&&r._rotate(d?-this.transform.bearingInRadians:this.transform.bearingInRadians)):t=!1}if(i.textBox||i.verticalTextBox){let n;i.textBox&&(n=x),i.verticalTextBox&&(n=v),_t(e.textCollisionBox.collisionVertexArray,l.text.placed,!t||n,b.text,r.x,r.y)}}if(i.iconBox||i.verticalIconBox){const t=Boolean(!v&&i.verticalIconBox);let n;i.iconBox&&(n=t),i.verticalIconBox&&(n=!t),_t(e.iconCollisionBox.collisionVertexArray,l.icon.placed,n,b.icon,p?r.x:0,p?r.y:0)}}}}if(e.sortFeatures(-this.transform.bearingInRadians),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.text.opacityVertexArray.length!==e.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${e.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${e.text.layoutVertexArray.length}) / 4`);if(e.icon.opacityVertexArray.length!==e.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${e.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${e.icon.layoutVertexArray.length}) / 4`);e.bucketInstanceId in this.collisionCircleArrays&&(e.collisionCircleArray=this.collisionCircleArrays[e.bucketInstanceId],delete this.collisionCircleArrays[e.bucketInstanceId])}symbolFadeChange(e){return 0===this.fadeDuration?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTimee}setStale(){this.stale=!0}}function _t(e,t,i,r,n,s){r&&0!==r.length||(r=[0,0,0,0]);const o=r[0]-at,a=r[1]-at,l=r[2]-at,c=r[3]-at;e.emplaceBack(t?1:0,i?1:0,n||0,s||0,o,a),e.emplaceBack(t?1:0,i?1:0,n||0,s||0,l,a),e.emplaceBack(t?1:0,i?1:0,n||0,s||0,l,c),e.emplaceBack(t?1:0,i?1:0,n||0,s||0,o,c)}const gt=Math.pow(2,25),yt=Math.pow(2,24),xt=Math.pow(2,17),vt=Math.pow(2,16),bt=Math.pow(2,9),wt=Math.pow(2,8),Tt=Math.pow(2,1);function St(e){if(0===e.opacity&&!e.placed)return 0;if(1===e.opacity&&e.placed)return 4294967295;const t=e.placed?1:0,i=Math.floor(127*e.opacity);return i*gt+t*yt+i*xt+t*vt+i*bt+t*wt+i*Tt+t}const Pt=0;class It{constructor(e){this._sortAcrossTiles="viewport-y"!==e.layout.get("symbol-z-order")&&!e.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(e,t,i,r,n){const s=this._bucketParts;for(;this._currentTileIndexe.sortKey-t.sortKey));this._currentPartIndex!this._forceFullPlacement&&c()-r>2;for(;this._currentPlacementIndex>=0;){const r=t[e[this._currentPlacementIndex]],s=this.placement.collisionIndex.transform.zoom;if("symbol"===r.type&&(!r.minzoom||r.minzoom<=s)&&(!r.maxzoom||r.maxzoom>s)){if(this._inProgressLayer||(this._inProgressLayer=new It(r)),this._inProgressLayer.continuePlacement(i[r.source],this.placement,this._showCollisionBoxes,r,n))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(e){return this.placement.commit(e),this.placement}}const Et=512/t.a5/2;class Ct{constructor(e,i,r){this.tileID=e,this.bucketInstanceId=r,this._symbolsByKey={};const n=new Map;for(let t=0;t({x:Math.floor(e.anchorX*Et),y:Math.floor(e.anchorY*Et)})),crossTileIDs:o.map(e=>e.crossTileID)};if(e.positions.length>128){const i=new t.aT(e.positions.length,16,Uint16Array);for(const{x:t,y:r}of e.positions)i.add(t,r);i.finish(),delete e.positions,e.index=i}this._symbolsByKey[s]=e}}getScaledCoordinates(e,i){const{x:r,y:n,z:s}=this.tileID.canonical,{x:o,y:a,z:l}=i.canonical,c=Et/Math.pow(2,l-s),h=(a*t.a5+e.anchorY)*c,u=n*t.a5*Et;return{x:Math.floor((o*t.a5+e.anchorX)*c-r*t.a5*Et),y:Math.floor(h-u)}}findMatches(e,t,i){const r=this.tileID.canonical.ze)}}class At{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class Dt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(e){const t=Math.round((e-this.lng)/360);if(0!==t)for(const i in this.indexes){const e=this.indexes[i],r={};for(const i in e){const n=e[i];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+t),r[n.tileID.key]=n}this.indexes[i]=r}this.lng=e}addBucket(e,t,i){if(this.indexes[e.overscaledZ]&&this.indexes[e.overscaledZ][e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key])}for(let n=0;ne.overscaledZ)for(const n in i){const s=i[n];s.tileID.isChildOf(e)&&s.findMatches(t.symbolInstances,e,r)}else{const s=i[e.scaledTo(Number(n)).key];s&&s.findMatches(t.symbolInstances,e,r)}}for(let n=0;n{t[e]=!0});for(const i in this.layerIndexes)t[i]||delete this.layerIndexes[i]}}var kt="void main() {fragColor=vec4(1.0);}";const Rt={prelude:Lt("#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nout highp vec4 fragColor;","#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}mat3 rotationMatrixFromAxisAngle(vec3 u,float angle) {float c=cos(angle);float s=sin(angle);float c2=1.0-c;return mat3(u.x*u.x*c2+ c,u.x*u.y*c2-u.z*s,u.x*u.z*c2+u.y*s,u.y*u.x*c2+u.z*s,u.y*u.y*c2+ c,u.y*u.z*c2-u.x*s,u.z*u.x*c2-u.y*s,u.z*u.y*c2+u.x*s,u.z*u.z*c2+ c\n);}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\n#ifdef GLOBE\nif ((pos.y <-32767.5) || (pos.y > 32766.5)) {return 0.0;}\n#endif\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}const float PI=3.141592653589793;uniform mat4 u_projection_matrix;"),projectionMercator:Lt("","float projectLineThickness(float tileY) {return 1.0;}float projectCircleRadius(float tileY) {return 1.0;}vec4 projectTile(vec2 p) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);return result;}vec4 projectTile(vec2 p,vec2 rawPos) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);if (rawPos.y <-32767.5 || rawPos.y > 32766.5) {result.z=-10000000.0;}return result;}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_projection_matrix*vec4(posInTile,elevation,1.0);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {return projectTileWithElevation(posInTile,elevation);}"),projectionGlobe:Lt("","#define GLOBE_RADIUS 6371008.8\nuniform highp vec4 u_projection_tile_mercator_coords;uniform highp vec4 u_projection_clipping_plane;uniform highp float u_projection_transition;uniform mat4 u_projection_fallback_matrix;vec3 globeRotateVector(vec3 vec,vec2 angles) {vec3 axisRight=vec3(vec.z,0.0,-vec.x);vec3 axisUp=cross(axisRight,vec);axisRight=normalize(axisRight);axisUp=normalize(axisUp);vec2 t=tan(angles);return normalize(vec+axisRight*t.x+axisUp*t.y);}mat3 globeGetRotationMatrix(vec3 spherePos) {vec3 axisRight=vec3(spherePos.z,0.0,-spherePos.x);vec3 axisDown=cross(axisRight,spherePos);axisRight=normalize(axisRight);axisDown=normalize(axisDown);return mat3(axisRight,axisDown,spherePos\n);}float circumferenceRatioAtTileY(float tileY) {float mercator_pos_y=u_projection_tile_mercator_coords.y+u_projection_tile_mercator_coords.w*tileY;float spherical_y=2.0*atan(exp(PI-(mercator_pos_y*PI*2.0)))-PI*0.5;return cos(spherical_y);}float projectLineThickness(float tileY) {float thickness=1.0/circumferenceRatioAtTileY(tileY); \nif (u_projection_transition < 0.999) {return mix(1.0,thickness,u_projection_transition);} else {return thickness;}}vec3 projectToSphere(vec2 translatedPos,vec2 rawPos) {vec2 mercator_pos=u_projection_tile_mercator_coords.xy+u_projection_tile_mercator_coords.zw*translatedPos;vec2 spherical;spherical.x=mercator_pos.x*PI*2.0+PI;spherical.y=2.0*atan(exp(PI-(mercator_pos.y*PI*2.0)))-PI*0.5;float len=cos(spherical.y);vec3 pos=vec3(sin(spherical.x)*len,sin(spherical.y),cos(spherical.x)*len\n);if (rawPos.y <-32767.5) {pos=vec3(0.0,1.0,0.0);}if (rawPos.y > 32766.5) {pos=vec3(0.0,-1.0,0.0);}return pos;}vec3 projectToSphere(vec2 posInTile) {return projectToSphere(posInTile,vec2(0.0,0.0));}float globeComputeClippingZ(vec3 spherePos) {return (1.0-(dot(spherePos,u_projection_clipping_plane.xyz)+u_projection_clipping_plane.w));}vec4 interpolateProjection(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);globePosition.z=globeComputeClippingZ(elevatedPos)*globePosition.w;if (u_projection_transition > 0.999) {return globePosition;}vec4 flatPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);const float z_globeness_threshold=0.2;vec4 result=globePosition;result.z=mix(0.0,globePosition.z,clamp((u_projection_transition-z_globeness_threshold)/(1.0-z_globeness_threshold),0.0,1.0));result.xyw=mix(flatPosition.xyw,globePosition.xyw,u_projection_transition);if ((posInTile.y <-32767.5) || (posInTile.y > 32766.5)) {result=globePosition;const float poles_hidden_anim_percentage=0.02;result.z=mix(globePosition.z,100.0,pow(max((1.0-u_projection_transition)/poles_hidden_anim_percentage,0.0),8.0));}return result;}vec4 interpolateProjectionFor3D(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);if (u_projection_transition > 0.999) {return globePosition;}vec4 fallbackPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);return mix(fallbackPosition,globePosition,u_projection_transition);}vec4 projectTile(vec2 posInTile) {return interpolateProjection(posInTile,projectToSphere(posInTile),0.0);}vec4 projectTile(vec2 posInTile,vec2 rawPos) {return interpolateProjection(posInTile,projectToSphere(posInTile,rawPos),0.0);}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return interpolateProjection(posInTile,projectToSphere(posInTile),elevation);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {vec3 spherePos=projectToSphere(posInTile,posInTile);return interpolateProjectionFor3D(posInTile,spherePos,elevation);}"),background:Lt("uniform vec4 u_color;uniform float u_opacity;void main() {fragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),backgroundPattern:Lt("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;in vec2 v_pos_a;in 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=texture(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=texture(u_image,pos2);fragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","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;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;void main() {gl_Position=projectTile(a_pos);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:Lt("in vec3 v_data;in float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));fragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);const float epsilon=0.5/255.0;if (fragColor.r < epsilon && fragColor.g < epsilon && fragColor.b < epsilon && fragColor.a < epsilon) {discard;}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform highp float u_globe_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;uniform vec2 u_translate;in vec2 a_pos;out vec3 v_data;out float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 pos_raw=a_pos+32768.0;vec2 extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);vec2 circle_center=floor(pos_raw/8.0)+u_translate;float ele=get_elevation(circle_center);v_visibility=calculate_visibility(projectTileWithElevation(circle_center,ele));if (u_pitch_with_map) {\n#ifdef GLOBE\nvec3 center_vector=projectToSphere(circle_center);\n#endif\nfloat angle_scale=u_globe_extrude_scale;vec2 corner_position=circle_center;if (u_scale_with_map) {angle_scale*=(radius+stroke_width);corner_position+=extrude*u_extrude_scale*(radius+stroke_width);} else {\n#ifdef GLOBE\nvec4 projected_center=interpolateProjection(circle_center,center_vector,ele);\n#else\nvec4 projected_center=projectTileWithElevation(circle_center,ele);\n#endif\ncorner_position+=extrude*u_extrude_scale*(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);angle_scale*=(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);}\n#ifdef GLOBE\nvec2 angles=extrude*angle_scale;vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(corner_position,corner_vector,ele);\n#else\ngl_Position=projectTileWithElevation(corner_position,ele);\n#endif\n} else {gl_Position=projectTileWithElevation(circle_center,ele);if (gl_Position.z/gl_Position.w > 1.0) {gl_Position.xy=vec2(10000.0);}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;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}"),clippingMask:Lt(kt,"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),heatmap:Lt("uniform highp float u_intensity;in vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);fragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;uniform highp float u_globe_extrude_scale;in vec2 a_pos;out vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 pos_raw=a_pos+32768.0;vec2 unscaled_extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 circle_center=floor(pos_raw/8.0);\n#ifdef GLOBE\nvec2 angles=v_extrude*radius*u_globe_extrude_scale;vec3 center_vector=projectToSphere(circle_center);vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(circle_center+extrude,corner_vector,0.0);\n#else\ngl_Position=projectTileFor3D(circle_center+extrude,get_elevation(circle_center));\n#endif\n}"),heatmapTexture:Lt("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;in vec2 v_pos;void main() {float t=texture(u_image,v_pos).r;vec4 color=texture(u_color_ramp,vec2(t,0.5));fragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(0.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;in vec2 a_pos;out 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:Lt("in float v_placed;in float v_notUsed;void main() {float alpha=0.5;fragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {fragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {fragColor*=.1;}}","in vec2 a_anchor_pos;in vec2 a_placed;in vec2 a_box_real;uniform vec2 u_pixel_extrude_scale;out float v_placed;out float v_notUsed;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:Lt("in float v_radius;in vec2 v_extrude;in float v_collision;void main() {float alpha=0.5;float stroke_radius=0.9;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);fragColor=color*alpha*opacity_t;}","in vec2 a_pos;in float a_radius;in vec2 a_flags;uniform vec2 u_viewport_size;out float v_radius;out vec2 v_extrude;out float v_collision;void main() {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;float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_collision=collision;gl_Position=vec4((a_pos/u_viewport_size*2.0-1.0)*vec2(1.0,-1.0),0.0,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),colorRelief:Lt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;uniform vec4 u_unpack;uniform sampler2D u_elevation_stops;uniform sampler2D u_color_stops;uniform int u_color_ramp_size;uniform float u_opacity;in vec2 v_pos;float getElevation(vec2 coord) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}float getElevationStop(int stop) {float x=(float(stop)+0.5)/float(u_color_ramp_size);vec4 data=texture(u_elevation_stops,vec2(x,0))*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {float el=getElevation(v_pos);int r=(u_color_ramp_size-1);int l=0;float el_l=getElevationStop(l);float el_r=getElevationStop(r);while(r-l > 1){int m=(r+l)/2;float el_m=getElevationStop(m);if(el < el_m){r=m;el_r=el_m;}else\n{l=m;el_l=el_m;}}float x=(float(l)+(el-el_l)/(el_r-el_l)+0.5)/float(u_color_ramp_size);fragColor=u_opacity*texture(u_color_stops,vec2(x,0));\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_dimension;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_pos/8192.0)*scale+epsilon;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),debug:Lt("uniform highp vec4 u_color;uniform sampler2D u_overlay;in vec2 v_uv;void main() {vec4 overlay_color=texture(u_overlay,v_uv);fragColor=mix(u_color,overlay_color,overlay_color.a);}","in vec2 a_pos;out vec2 v_uv;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=projectTileWithElevation(a_pos*u_overlay_scale,get_elevation(a_pos));}"),depth:Lt(kt,"in vec2 a_pos;void main() {\n#ifdef GLOBE\ngl_Position=projectTileFor3D(a_pos,0.0);\n#else\ngl_Position=u_projection_matrix*vec4(a_pos,0.0,1.0);\n#endif\n}"),fill:Lt("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\nfragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_fill_translate;in vec2 a_pos;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);}"),fillOutline:Lt("in vec2 v_pos;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=outline_color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_world;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n}"),fillOutlinePattern:Lt("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;in vec2 v_pos_a;in vec2 v_pos_b;in vec2 v_pos;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 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;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;out vec2 v_pos;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 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=projectTile(a_pos+u_fill_translate,a_pos);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;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n}"),fillPattern:Lt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 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;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 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=projectTile(a_pos+u_fill_translate,a_pos);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:Lt("in vec4 v_color;void main() {fragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;in vec2 a_pos;in vec4 a_normal_ed;\n#ifdef TERRAIN3D\nin vec2 a_centroid;\n#endif\nout vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\n#ifdef GLOBE\nvec3 spherePos=projectToSphere(posInTile,a_pos);gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\n#else\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\n#endif\nfloat 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;vec3 normalForLighting=normal/16384.0;float directional=clamp(dot(normalForLighting,u_lightpos),0.0,1.0);\n#ifdef GLOBE\nmat3 rotMatrix=globeGetRotationMatrix(spherePos);normalForLighting=rotMatrix*normalForLighting;directional=mix(directional,clamp(dot(normalForLighting,u_lightpos_globe),0.0,1.0),u_projection_transition);\n#endif\ndirectional=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:Lt("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;in vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 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;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);fragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;in vec2 a_pos;in vec4 a_normal_ed;\n#ifdef TERRAIN3D\nin vec2 a_centroid;\n#endif\n#ifdef GLOBE\nout vec3 v_sphere_pos;\n#endif\nout vec2 v_pos_a;out vec2 v_pos_b;out vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 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;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;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;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;\n#ifdef GLOBE\nvec3 spherePos=projectToSphere(posInTile,a_pos);vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);v_sphere_pos=elevatedPos;gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);\n#else\ngl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);\n#endif\nvec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,elevation*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:Lt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {vec2 epsilon=1.0/u_dimension;float tileSize=u_dimension.x-2.0;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))*tileSize/pow(2.0,exaggeration+(28.2562-u_zoom));fragColor=clamp(vec4(deriv.x/8.0+0.5,deriv.y/8.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;in vec2 a_pos;in vec2 a_texture_pos;out 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:Lt("uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_latrange;uniform float u_exaggeration;uniform vec4 u_accent;uniform int u_method;uniform float u_altitudes[NUM_ILLUMINATION_SOURCES];uniform float u_azimuths[NUM_ILLUMINATION_SOURCES];uniform vec4 u_shadows[NUM_ILLUMINATION_SOURCES];uniform vec4 u_highlights[NUM_ILLUMINATION_SOURCES];\n#define PI 3.141592653589793\n#define STANDARD 0\n#define COMBINED 1\n#define IGOR 2\n#define MULTIDIRECTIONAL 3\n#define BASIC 4\nfloat get_aspect(vec2 deriv){return deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);}void igor_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float aspect=get_aspect(deriv);float azimuth=u_azimuths[0]+PI;float slope_stength=atan(length(deriv))*2.0/PI;float aspect_strength=1.0-abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);float shadow_strength=slope_stength*aspect_strength;float highlight_strength=slope_stength*(1.0-aspect_strength);fragColor=u_shadows[0]*shadow_strength+u_highlights[0]*highlight_strength;}void standard_hillshade(vec2 deriv){float azimuth=u_azimuths[0]+PI;float slope=atan(0.625*length(deriv));float aspect=get_aspect(deriv);float intensity=u_exaggeration;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_shadows[0],u_highlights[0],shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);fragColor=accent_color*(1.0-shade_color.a)+shade_color;}void basic_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor=u_highlights[0]*(2.0*shade-1.0);}else\n{fragColor=u_shadows[0]*(1.0-2.0*shade);}}void multidirectional_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;fragColor=vec4(0,0,0,0);for(int i=0; i < NUM_ILLUMINATION_SOURCES; i++){float cos_alt=cos(u_altitudes[i]);float sin_alt=sin(u_altitudes[i]);float cos_az=-cos(u_azimuths[i]);float sin_az=-sin(u_azimuths[i]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor+=u_highlights[i]*(2.0*shade-1.0)/float(NUM_ILLUMINATION_SOURCES);}else\n{fragColor+=u_shadows[i]*(1.0-2.0*shade)/float(NUM_ILLUMINATION_SOURCES);}}}void combined_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=acos((sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv)));cang=clamp(cang,0.0,PI/2.0);float shade=cang*atan(length(deriv))*4.0/PI/PI;float highlight=(PI/2.0-cang)*atan(length(deriv))*4.0/PI/PI;fragColor=u_shadows[0]*shade+u_highlights[0]*highlight;}void main() {vec4 pixel=texture(u_image,v_pos);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));vec2 deriv=((pixel.rg*8.0)-4.0)/scaleFactor;if (u_method==BASIC) {basic_hillshade(deriv);} else if (u_method==COMBINED) {combined_hillshade(deriv);} else if (u_method==IGOR) {igor_hillshade(deriv);} else if (u_method==MULTIDIRECTIONAL) {multidirectional_hillshade(deriv);} else if (u_method==STANDARD) {standard_hillshade(deriv);} else {standard_hillshade(deriv);}\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);v_pos=a_pos/8192.0;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),line:Lt("uniform lowp float u_device_pixel_ratio;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp float v_linesofar;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),lineGradient:Lt("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;in highp vec2 v_uv;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),linePattern:Lt("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;in vec2 v_normal;in vec2 v_width2;in float v_linesofar;in float v_gamma_scale;in float v_width;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 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;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture(u_image,pos_a),texture(u_image,pos_b),u_fade);fragColor=color*alpha*opacity;\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_linesofar;out float v_gamma_scale;out float v_width;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),lineSDF:Lt("uniform lowp float u_device_pixel_ratio;uniform lowp float u_lineatlas_width;uniform sampler2D u_image;uniform float u_mix;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture(u_image,v_tex_a).a;float sdfdist_b=texture(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0/u_device_pixel_ratio)/min(dasharray_from.w,dasharray_to.w);alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out vec2 v_tex_a;out vec2 v_tex_b;out float v_gamma_scale;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}"),lineGradientSDF:Lt("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform sampler2D u_image_dash;uniform float u_mix;uniform lowp float u_lineatlas_width;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;in highp vec2 v_uv;\n#ifdef GLOBE\nin float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);float sdfdist_a=texture(u_image_dash,v_tex_a).a;float sdfdist_b=texture(u_image_dash,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0)/min(dasharray_from.w,dasharray_to.w);float dash_alpha=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*dash_alpha*opacity);\n#ifdef GLOBE\nif (v_depth > 1.0) {discard;}\n#endif\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nin vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;out vec2 v_tex_a;out vec2 v_tex_b;\n#ifdef GLOBE\nout float v_depth;\n#endif\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define mediump vec4 dasharray_from\n#pragma mapbox: define mediump vec4 dasharray_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 dasharray_from\n#pragma mapbox: initialize mediump vec4 dasharray_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;float texel_height=1.0/u_image_height;float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;\n#ifdef GLOBE\nv_depth=gl_Position.z/gl_Position.w;\n#endif\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nfloat u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}"),raster:Lt("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;in vec2 v_pos0;in 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=texture(u_image0,v_pos0);vec4 color1=texture(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);fragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;uniform vec4 u_coords_top;uniform vec4 u_coords_bottom;in vec2 a_pos;out vec2 v_pos0;out vec2 v_pos1;void main() {vec2 fractionalPos=a_pos/8192.0;vec2 position=mix(mix(u_coords_top.xy,u_coords_top.zw,fractionalPos.x),mix(u_coords_bottom.xy,u_coords_bottom.zw,fractionalPos.x),fractionalPos.y);gl_Position=projectTile(position,position);v_pos0=((fractionalPos-0.5)/u_buffer_scale)+0.5;\n#ifdef GLOBE\nif (a_pos.y <-32767.5) {v_pos0.y=0.0;}if (a_pos.y > 32766.5) {v_pos0.y=1.0;}\n#endif\nv_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:Lt("uniform sampler2D u_texture;in vec2 v_tex;in float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;fragColor=texture(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_tex;out float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 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 ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_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;\n#ifdef GLOBE\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 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:Lt("#define SDF_PX 8.0\nuniform 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;in vec2 v_data0;in vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}fragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_data0;out vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 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 ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_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;\n#ifdef GLOBE\nif(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 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:Lt("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform 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;in vec4 v_data0;in vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;fragColor=texture(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);fragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\nfragColor=vec4(1.0);\n#endif\n}","in vec4 a_pos_offset;in vec4 a_data;in vec3 a_projected_pos;in float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec4 v_data0;out vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 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 ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_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;\n#ifdef GLOBE\nif(u_pitch_with_map && !u_is_along_line) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}\n#endif\nvec4 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:Lt("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;uniform bool u_is_globe_mode;in vec2 v_texture_pos;in 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=texture(u_texture,vec2(v_texture_pos.x,1.0-v_texture_pos.y));if (!u_is_globe_mode && 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);fragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {fragColor=surface_color;}}","in vec3 a_pos3d;uniform mat4 u_fog_matrix;uniform float u_ele_delta;out vec2 v_texture_pos;out 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=projectTileFor3D(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:Lt("in 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() {fragColor=pack(v_depth);}","in vec3 a_pos3d;uniform float u_ele_delta;out 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=projectTileFor3D(a_pos3d.xy,ele-ele_delta);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:Lt("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;in vec2 v_texture_pos;void main() {vec4 rgba=texture(u_texture,v_texture_pos);fragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","in vec3 a_pos3d;uniform float u_ele_delta;out 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=projectTileFor3D(a_pos3d.xy,ele-ele_delta);}"),projectionErrorMeasurement:Lt("in vec4 v_output_error_encoded;void main() {fragColor=v_output_error_encoded;}","in vec2 a_pos;uniform highp float u_input;uniform highp float u_output_expected;out vec4 v_output_error_encoded;void main() {float real_output=2.0*atan(exp(PI-(u_input*PI*2.0)))-PI*0.5;float error=real_output-u_output_expected;float abs_error=abs(error)*128.0;v_output_error_encoded.x=min(floor(abs_error*256.0),255.0)/255.0;abs_error-=v_output_error_encoded.x;v_output_error_encoded.y=min(floor(abs_error*65536.0),255.0)/255.0;abs_error-=v_output_error_encoded.x/255.0;v_output_error_encoded.z=min(floor(abs_error*16777216.0),255.0)/255.0;v_output_error_encoded.w=error >=0.0 ? 1.0 : 0.0;gl_Position=vec4(a_pos,0.0,1.0);}"),atmosphere:Lt("in vec3 view_direction;uniform vec3 u_sun_pos;uniform vec3 u_globe_position;uniform float u_globe_radius;uniform float u_atmosphere_blend;/**Shader use from https:*Made some change to adapt to MapLibre Globe geometry*/const float PI=3.141592653589793;const int iSteps=5;const int jSteps=3;/*radius of the planet*/const float EARTH_RADIUS=6371e3;/*radius of the atmosphere*/const float ATMOS_RADIUS=6471e3;vec2 rsi(vec3 r0,vec3 rd,float sr) {float a=dot(rd,rd);float b=2.0*dot(rd,r0);float c=dot(r0,r0)-(sr*sr);float d=(b*b)-4.0*a*c;if (d < 0.0) return vec2(1e5,-1e5);return vec2((-b-sqrt(d))/(2.0*a),(-b+sqrt(d))/(2.0*a));}vec4 atmosphere(vec3 r,vec3 r0,vec3 pSun,float iSun,float rPlanet,float rAtmos,vec3 kRlh,float kMie,float shRlh,float shMie,float g) {pSun=normalize(pSun);r=normalize(r);vec2 p=rsi(r0,r,rAtmos);if (p.x > p.y) {return vec4(0.0,0.0,0.0,1.0);}if (p.x < 0.0) {p.x=0.0;}vec3 pos=r0+r*p.x;vec2 p2=rsi(r0,r,rPlanet);if (p2.x <=p2.y && p2.x > 0.0) {p.y=min(p.y,p2.x);}float iStepSize=(p.y-p.x)/float(iSteps);float iTime=p.x+iStepSize*0.5;vec3 totalRlh=vec3(0,0,0);vec3 totalMie=vec3(0,0,0);float iOdRlh=0.0;float iOdMie=0.0;float mu=dot(r,pSun);float mumu=mu*mu;float gg=g*g;float pRlh=3.0/(16.0*PI)*(1.0+mumu);float pMie=3.0/(8.0*PI)*((1.0-gg)*(mumu+1.0))/(pow(1.0+gg-2.0*mu*g,1.5)*(2.0+gg));for (int i=0; i < iSteps; i++) {vec3 iPos=r0+r*iTime;float iHeight=length(iPos)-rPlanet;float odStepRlh=exp(-iHeight/shRlh)*iStepSize;float odStepMie=exp(-iHeight/shMie)*iStepSize;iOdRlh+=odStepRlh;iOdMie+=odStepMie;float jStepSize=rsi(iPos,pSun,rAtmos).y/float(jSteps);float jTime=jStepSize*0.5;float jOdRlh=0.0;float jOdMie=0.0;for (int j=0; j < jSteps; j++) {vec3 jPos=iPos+pSun*jTime;float jHeight=length(jPos)-rPlanet;jOdRlh+=exp(-jHeight/shRlh)*jStepSize;jOdMie+=exp(-jHeight/shMie)*jStepSize;jTime+=jStepSize;}vec3 attn=exp(-(kMie*(iOdMie+jOdMie)+kRlh*(iOdRlh+jOdRlh)));totalRlh+=odStepRlh*attn;totalMie+=odStepMie*attn;iTime+=iStepSize;}float opacity=exp(-(length(kRlh)*length(totalRlh)+kMie*length(totalMie)));vec3 color=iSun*(pRlh*kRlh*totalRlh+pMie*kMie*totalMie);return vec4(color,opacity);}void main() {vec3 scale_camera_pos=-u_globe_position*EARTH_RADIUS/u_globe_radius;vec4 color=atmosphere(normalize(view_direction),scale_camera_pos,u_sun_pos,22.0,EARTH_RADIUS,ATMOS_RADIUS,vec3(5.5e-6,13.0e-6,22.4e-6),21e-6,8e3,1.2e3,0.758\n);color.rgb=1.0-exp(-1.0*color.rgb);color=pow(color,vec4(1.0/2.2));fragColor=vec4(color.rgb,1.0-color.a)*u_atmosphere_blend;}","in vec2 a_pos;uniform mat4 u_inv_proj_matrix;out vec3 view_direction;void main() {view_direction=(u_inv_proj_matrix*vec4(a_pos,0.0,1.0)).xyz;gl_Position=vec4(a_pos,0.0,1.0);}"),sky:Lt("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform vec2 u_horizon;uniform vec2 u_horizon_normal;uniform float u_sky_horizon_blend;uniform float u_sky_blend;void main() {float x=gl_FragCoord.x;float y=gl_FragCoord.y;float blend=(y-u_horizon.y)*u_horizon_normal.y+(x-u_horizon.x)*u_horizon_normal.x;if (blend > 0.0) {if (blend < u_sky_horizon_blend) {fragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {fragColor=u_sky_color;}}fragColor=mix(fragColor,vec4(vec3(0.0),0.0),u_sky_blend);}","in vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function Lt(e,t){const i=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,r=t.match(/in ([\w]+) ([\w]+)/g),n=e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),s=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),o=s?s.concat(n):n,a={};return{fragmentSource:e=e.replace(i,(e,t,i,r,n)=>(a[n]=!0,"define"===t?`\n#ifndef HAS_UNIFORM_u_${n}\nin ${i} ${r} ${n};\n#else\nuniform ${i} ${r} u_${n};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${n}\n ${i} ${r} ${n} = u_${n};\n#endif\n`)),vertexSource:t=t.replace(i,(e,t,i,r,n)=>{const s="float"===r?"vec2":"vec4",o=n.match(/color/)?"color":s;return a[n]?"define"===t?`\n#ifndef HAS_UNIFORM_u_${n}\nuniform lowp float u_${n}_t;\nin ${i} ${s} a_${n};\nout ${i} ${r} ${n};\n#else\nuniform ${i} ${r} u_${n};\n#endif\n`:"vec4"===o?`\n#ifndef HAS_UNIFORM_u_${n}\n ${n} = a_${n};\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${n}\n ${n} = unpack_mix_${o}(a_${n}, u_${n}_t);\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`:"define"===t?`\n#ifndef HAS_UNIFORM_u_${n}\nuniform lowp float u_${n}_t;\nin ${i} ${s} a_${n};\n#else\nuniform ${i} ${r} u_${n};\n#endif\n`:"vec4"===o?`\n#ifndef HAS_UNIFORM_u_${n}\n ${i} ${r} ${n} = a_${n};\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${n}\n ${i} ${r} ${n} = unpack_mix_${o}(a_${n}, u_${n}_t);\n#else\n ${i} ${r} ${n} = u_${n};\n#endif\n`}),staticAttributes:r,staticUniforms:o}}class Ft{constructor(e,t,i){this.vertexBuffer=e,this.indexBuffer=t,this.segments=i}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}var Bt=t.aU([{name:"a_pos",type:"Int16",components:2}]);const Ot="#define PROJECTION_MERCATOR",Vt="mercator";class jt{constructor(){this._cachedMesh=null}get name(){return"mercator"}get useSubdivision(){return!1}get shaderVariantName(){return Vt}get shaderDefine(){return Ot}get shaderPreludeCode(){return Rt.projectionMercator}get vertexShaderPreludeCode(){return Rt.projectionMercator.vertexSource}get subdivisionGranularity(){return t.aV.noSubdivision}get useGlobeControls(){return!1}get transitionState(){return 0}get latitudeErrorCorrectionRadians(){return 0}destroy(){}updateGPUdependent(e){}getMeshFromTileID(e,i,r,n,s){if(this._cachedMesh)return this._cachedMesh;const o=new t.aW;o.emplaceBack(0,0),o.emplaceBack(t.a5,0),o.emplaceBack(0,t.a5),o.emplaceBack(t.a5,t.a5);const a=e.createVertexBuffer(o,Bt.members),l=t.aX.simpleSegment(0,0,4,2),c=new t.aY;c.emplaceBack(1,0,2),c.emplaceBack(1,2,3);const h=e.createIndexBuffer(c);return this._cachedMesh=new Ft(a,h,l),this._cachedMesh}recalculate(){}hasTransition(){return!1}setErrorQueryLatitudeDegrees(e){}}class Nt{constructor(e=0,t=0,i=0,r=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(i)||i<0||isNaN(r)||r<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=e,this.bottom=t,this.left=i,this.right=r}interpolate(e,i,r){return null!=i.top&&null!=e.top&&(this.top=t.G.number(e.top,i.top,r)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.G.number(e.bottom,i.bottom,r)),null!=i.left&&null!=e.left&&(this.left=t.G.number(e.left,i.left,r)),null!=i.right&&null!=e.right&&(this.right=t.G.number(e.right,i.right,r)),this}getCenter(e,i){const r=t.an((this.left+e-this.right)/2,0,e),n=t.an((this.top+i-this.bottom)/2,0,i);return new t.P(r,n)}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new Nt(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function Ut(e,t){if(!e.renderWorldCopies||e.lngRange)return;const i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0}function Gt(e){return Math.max(0,Math.floor(e))}class qt{constructor(e,i){var r;this.applyConstrain=(e,t)=>null!==this._constrainOverride?this._constrainOverride(e,t):this._callbacks.defaultConstrain(e,t),this._callbacks=e,this._tileSize=512,this._renderWorldCopies=void 0===(null==i?void 0:i.renderWorldCopies)||!!(null==i?void 0:i.renderWorldCopies),this._minZoom=(null==i?void 0:i.minZoom)||0,this._maxZoom=(null==i?void 0:i.maxZoom)||22,this._minPitch=null==(null==i?void 0:i.minPitch)?0:null==i?void 0:i.minPitch,this._maxPitch=null==(null==i?void 0:i.maxPitch)?60:null==i?void 0:i.maxPitch,this._constrainOverride=null!==(r=null==i?void 0:i.constrainOverride)&&void 0!==r?r:null,this.setMaxBounds(),this._width=0,this._height=0,this._center=new t.V(0,0),this._elevation=0,this._zoom=0,this._tileZoom=Gt(this._zoom),this._scale=t.aq(this._zoom),this._bearingInRadians=0,this._fovInRadians=.6435011087932844,this._pitchInRadians=0,this._rollInRadians=0,this._unmodified=!0,this._edgeInsets=new Nt,this._minElevationForCurrentTile=0,this._autoCalculateNearFarZ=!0}apply(e,i,r){this._constrainOverride=e.constrainOverride,this._latRange=e.latRange,this._lngRange=e.lngRange,this._width=e.width,this._height=e.height,this._center=e.center,this._elevation=e.elevation,this._minElevationForCurrentTile=e.minElevationForCurrentTile,this._zoom=e.zoom,this._tileZoom=Gt(this._zoom),this._scale=t.aq(this._zoom),this._bearingInRadians=e.bearingInRadians,this._fovInRadians=e.fovInRadians,this._pitchInRadians=e.pitchInRadians,this._rollInRadians=e.rollInRadians,this._unmodified=e.unmodified,this._edgeInsets=new Nt(e.padding.top,e.padding.bottom,e.padding.left,e.padding.right),this._minZoom=e.minZoom,this._maxZoom=e.maxZoom,this._minPitch=e.minPitch,this._maxPitch=e.maxPitch,this._renderWorldCopies=e.renderWorldCopies,this._cameraToCenterDistance=e.cameraToCenterDistance,this._nearZ=e.nearZ,this._farZ=e.farZ,this._autoCalculateNearFarZ=!r&&e.autoCalculateNearFarZ,i&&this.constrainInternal(),this._calcMatrices()}get pixelsToClipSpaceMatrix(){return this._pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._clipSpaceToPixelsMatrix}get minElevationForCurrentTile(){return this._minElevationForCurrentTile}setMinElevationForCurrentTile(e){this._minElevationForCurrentTile=e}get tileSize(){return this._tileSize}get tileZoom(){return this._tileZoom}get scale(){return this._scale}get width(){return this._width}get height(){return this._height}get bearingInRadians(){return this._bearingInRadians}get lngRange(){return this._lngRange}get latRange(){return this._latRange}get pixelsToGLUnits(){return this._pixelsToGLUnits}get minZoom(){return this._minZoom}setMinZoom(e){this._minZoom!==e&&(this._minZoom=e,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom))}get maxZoom(){return this._maxZoom}setMaxZoom(e){this._maxZoom!==e&&(this._maxZoom=e,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom))}get minPitch(){return this._minPitch}setMinPitch(e){this._minPitch!==e&&(this._minPitch=e,this.setPitch(Math.max(this.pitch,e)))}get maxPitch(){return this._maxPitch}setMaxPitch(e){this._maxPitch!==e&&(this._maxPitch=e,this.setPitch(Math.min(this.pitch,e)))}get renderWorldCopies(){return this._renderWorldCopies}setRenderWorldCopies(e){void 0===e?e=!0:null===e&&(e=!1),this._renderWorldCopies=e}get constrainOverride(){return this._constrainOverride}setConstrainOverride(e){void 0===e&&(e=null),this._constrainOverride!==e&&(this._constrainOverride=e,this.constrainInternal(),this._calcMatrices())}get worldSize(){return this._tileSize*this._scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.P(this._width,this._height)}get bearing(){return this._bearingInRadians/Math.PI*180}setBearing(e){const i=t.W(e,-180,180)*Math.PI/180;var n,s,o,a,l,c,h,u,d;this._bearingInRadians!==i&&(this._unmodified=!1,this._bearingInRadians=i,this._calcMatrices(),this._rotationMatrix=r(),n=this._rotationMatrix,o=-this._bearingInRadians,a=(s=this._rotationMatrix)[0],l=s[1],c=s[2],h=s[3],u=Math.sin(o),d=Math.cos(o),n[0]=a*d+c*u,n[1]=l*d+h*u,n[2]=a*-u+c*d,n[3]=l*-u+h*d)}get rotationMatrix(){return this._rotationMatrix}get pitchInRadians(){return this._pitchInRadians}get pitch(){return this._pitchInRadians/Math.PI*180}setPitch(e){const i=t.an(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitchInRadians!==i&&(this._unmodified=!1,this._pitchInRadians=i,this._calcMatrices())}get rollInRadians(){return this._rollInRadians}get roll(){return this._rollInRadians/Math.PI*180}setRoll(e){const t=e/180*Math.PI;this._rollInRadians!==t&&(this._unmodified=!1,this._rollInRadians=t,this._calcMatrices())}get fovInRadians(){return this._fovInRadians}get fov(){return t.aZ(this._fovInRadians)}setFov(e){e=t.an(e,.1,150),this.fov!==e&&(this._unmodified=!1,this._fovInRadians=t.ap(e),this._calcMatrices())}get zoom(){return this._zoom}setZoom(e){const i=this.applyConstrain(this._center,e).zoom;this._zoom!==i&&(this._unmodified=!1,this._zoom=i,this._tileZoom=Math.max(0,Math.floor(i)),this._scale=t.aq(i),this.constrainInternal(),this._calcMatrices())}get center(){return this._center}setCenter(e){e.lat===this._center.lat&&e.lng===this._center.lng||(this._unmodified=!1,this._center=e,this.constrainInternal(),this._calcMatrices())}get elevation(){return this._elevation}setElevation(e){e!==this._elevation&&(this._elevation=e,this.constrainInternal(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}setPadding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this._width,this._height)}get pixelsPerMeter(){return this._pixelPerMeter}get unmodified(){return this._unmodified}get cameraToCenterDistance(){return this._cameraToCenterDistance}get nearZ(){return this._nearZ}get farZ(){return this._farZ}get autoCalculateNearFarZ(){return this._autoCalculateNearFarZ}overrideNearFarZ(e,t){this._autoCalculateNearFarZ=!1,this._nearZ=e,this._farZ=t,this._calcMatrices()}clearNearFarZOverride(){this._autoCalculateNearFarZ=!0,this._calcMatrices()}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,i){this._unmodified=!1,this._edgeInsets.interpolate(e,t,i),this.constrainInternal(),this._calcMatrices()}resize(e,t,i=!0){this._width=e,this._height=t,i&&this.constrainInternal(),this._calcMatrices()}getMaxBounds(){return this._latRange&&2===this._latRange.length&&this._lngRange&&2===this._lngRange.length?new W([this._lngRange[0],this._latRange[0]],[this._lngRange[1],this._latRange[1]]):null}setMaxBounds(e){e?(this._lngRange=[e.getWest(),e.getEast()],this._latRange=[e.getSouth(),e.getNorth()],this.constrainInternal()):(this._lngRange=null,this._latRange=[-t.ao,t.ao])}getCameraQueryGeometry(e,i){if(1===i.length)return[i[0],e];{const{minX:r,minY:n,maxX:s,maxY:o}=t.aa.fromPoints(i).extend(e);return[new t.P(r,n),new t.P(s,n),new t.P(s,o),new t.P(r,o),new t.P(r,n)]}}constrainInternal(){if(!this.center||!this._width||!this._height||this._constraining)return;this._constraining=!0;const e=this._unmodified,{center:t,zoom:i}=this.applyConstrain(this.center,this.zoom);this.setCenter(t),this.setZoom(i),this._unmodified=e,this._constraining=!1}_calcMatrices(){if(this._width&&this._height){this._pixelsToGLUnits=[2/this._width,-2/this._height];let e=t.ar(new Float64Array(16));t.Q(e,e,[this._width/2,-this._height/2,1]),t.O(e,e,[1,-1,0]),this._clipSpaceToPixelsMatrix=e,e=t.ar(new Float64Array(16)),t.Q(e,e,[1,-1,1]),t.O(e,e,[-1,-1,0]),t.Q(e,e,[2/this._width,2/this._height,1]),this._pixelsToClipSpaceMatrix=e,this._cameraToCenterDistance=.5/Math.tan(this.fovInRadians/2)*this._height}this._callbacks.calcMatrices()}calculateCenterFromCameraLngLatAlt(e,i,r,n){const s=void 0!==r?r:this.bearing,o=n=void 0!==n?n:this.pitch,{distanceToCenter:a,clampedElevation:l}=this._distanceToCenterFromAltElevationPitch(i,this.elevation,o),{x:c,y:h}=be(o,s),u=t.a9.fromLngLat(e,i);let d,p,f=t.a_(1,u.y),m=0;do{if(m+=1,m>10)break;p=a/f,d=new t.a9(u.x+c*p,u.y+h*p),f=1/d.meterInMercatorCoordinateUnits()}while(Math.abs(a-p*f)>1e-12);return{center:d.toLngLat(),elevation:l,zoom:t.at(this.height/2/Math.tan(this.fovInRadians/2)/p/this.tileSize)}}recalculateZoomAndCenter(e){if(this.elevation-e==0)return;const i=1/this.worldSize,r=t.as(1,this.center.lat)*this.worldSize,n=t.a9.fromLngLat(this.center,this.elevation),s=n.x/i,o=n.y/i,a=n.z/i,l=this.pitch,c=this.bearing,{x:h,y:u,z:d}=be(l,c),p=this.cameraToCenterDistance,f=s+p*-h,m=o+p*-u,_=a+p*d,{distanceToCenter:g,clampedElevation:y}=this._distanceToCenterFromAltElevationPitch(_/r,e,l),x=g*r,v=new t.a9((f+h*x)*i,(m+u*x)*i,0).toLngLat(),b=t.as(1,v.lat),w=t.at(this.height/2/Math.tan(this.fovInRadians/2)/g/b/this.tileSize);this._elevation=y,this._center=v,this.setZoom(w)}_distanceToCenterFromAltElevationPitch(e,i,r){const n=-Math.cos(t.ap(r)),s=e-i;let o,a=i;return n*s>=0||Math.abs(n)<.1?(o=1e4,a=e+o*n):o=-s/n,{distanceToCenter:o,clampedElevation:a}}getCameraPoint(){const e=Math.tan(this.pitchInRadians)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.P(e*Math.sin(this.rollInRadians),e*Math.cos(this.rollInRadians)))}getCameraAltitude(){return Math.cos(this.pitchInRadians)*this._cameraToCenterDistance/this._pixelPerMeter+this.elevation}getCameraLngLat(){const e=t.as(1,this.center.lat)*this.worldSize;return ve(this.center,this.elevation,this.pitch,this.bearing,this.cameraToCenterDistance/e).toLngLat()}getMercatorTileCoordinates(e){if(!e)return[0,0,1,1];const i=e.canonical.z>=0?1<this.max[0]||e.aabb.min[1]>this.max[1]||e.aabb.min[2]>this.max[2]||e.aabb.max[0]0?(t+=e[r]*this.min[r],i+=e[r]*this.max[r]):(i+=e[r]*this.min[r],t+=e[r]*this.max[r]);return t>=0?2:i<0?0:1}}class $t{distanceToTile2d(e,t,i,r){const n=r.distanceX([e,t]),s=r.distanceY([e,t]);return Math.hypot(n,s)}getWrap(e,t,i){return i}getTileBoundingVolume(e,i,r,n){var s,o;let a=0,l=0;if(null==n?void 0:n.terrain){const c=new t.a2(e.z,i,e.z,e.x,e.y),h=n.terrain.getMinMaxElevation(c);a=null!==(s=h.minElevation)&&void 0!==s?s:Math.min(0,r),l=null!==(o=h.maxElevation)&&void 0!==o?o:Math.max(0,r)}const c=1<n}allowWorldCopies(){return!0}prepareNextFrame(){}}class Wt{constructor(e,t,i){this.points=e,this.planes=t,this.aabb=i}static fromInvProjectionMatrix(e,i=1,r=0,n,s){const o=s?[[6,5,4],[0,1,2],[0,3,7],[2,1,5],[3,2,6],[0,4,5]]:[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],a=Math.pow(2,r),l=[[-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(r=>function(e,i,r,n){const s=t.aH([],e,i),o=1/s[3]/r*n;return t.b6(s,s,[o,o,1/s[3],o])}(r,e,i,a));n&&function(e,i,r,n){const s=n?4:0,o=n?0:4;let a=0;const l=[],c=[];for(let d=0;d<4;d++){const i=t.b2([],e[d+o],e[d+s]),r=t.b7(i);t.a$(i,i,1/r),l.push(r),c.push(i)}for(let d=0;d<4;d++){const i=t.b8(e[d+s],c[d],r);a=null!==i&&i>=0?Math.max(a,i):Math.max(a,l[d])}const h=function(e,i){const r=t.b2([],e[i[0]],e[i[1]]),n=t.b2([],e[i[2]],e[i[1]]),s=[0,0,0,0];return t.b3(s,t.b4([],r,n)),s[3]=-t.b5(s,e[i[0]]),s}(e,i),u=function(e,i){const r=t.b9(e),n=t.ba([],e,1/r),s=t.b2([],i,t.a$([],n,t.b5(i,n))),o=t.b9(s);if(o>0){const e=Math.sqrt(1-n[3]*n[3]),r=t.a$([],n,-n[3]),a=t.b0([],r,t.a$([],s,e/o));return t.bb(i,a)}return null}(r,h);if(null!==u){const e=u/t.b5(c[0],h);a=Math.min(a,e)}for(let t=0;t<4;t++){const i=Math.min(a,l[t]);e[t+o]=[e[t+s][0]+c[t][0]*i,e[t+s][1]+c[t][1]*i,e[t+s][2]+c[t][2]*i,1]}}(l,o[0],n,s);const c=o.map(e=>{const i=t.b2([],l[e[0]],l[e[1]]),r=t.b2([],l[e[2]],l[e[1]]),n=t.b3([],t.b4([],i,r)),s=-t.b5(n,l[e[1]]);return n.concat(s)}),h=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],u=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(const t of l)for(let e=0;e<3;e++)h[e]=Math.min(h[e],t[e]),u[e]=Math.max(u[e],t[e]);return new Wt(l,c,new Zt(h,u))}}class Ht{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e)}setMaxZoom(e){this._helper.setMaxZoom(e)}setMinPitch(e){this._helper.setMinPitch(e)}setMaxPitch(e){this._helper.setMaxPitch(e)}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e)}setBearing(e){this._helper.setBearing(e)}setPitch(e){this._helper.setPitch(e)}setRoll(e){this._helper.setRoll(e)}setFov(e){this._helper.setFov(e)}setZoom(e){this._helper.setZoom(e)}setCenter(e){this._helper.setCenter(e)}setElevation(e){this._helper.setElevation(e)}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e)}setPadding(e){this._helper.setPadding(e)}interpolatePadding(e,t,i){return this._helper.interpolatePadding(e,t,i)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e)}setConstrainOverride(e){this._helper.setConstrainOverride(e)}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(e,t){}constructor(e){this._posMatrixCache=new Map,this._alignedPosMatrixCache=new Map,this._fogMatrixCacheF32=new Map,this.defaultConstrain=(e,i)=>{i=t.an(+i,this.minZoom,this.maxZoom);const r={center:new t.V(e.lng,e.lat),zoom:i};let n=this._helper._lngRange;if(!this._helper._renderWorldCopies&&null===n){const e=180-1e-10;n=[-e,e]}const s=this.tileSize*t.aq(r.zoom);let o=0,a=s,l=0,c=s,h=0,u=0;const{x:d,y:p}=this.size;if(this._helper._latRange){const e=this._helper._latRange;o=t.X(e[1])*s,a=t.X(e[0])*s,a-oa&&(g=a-e)}if(n){const e=(l+c)/2;let i=f;this._helper._renderWorldCopies&&(i=t.W(f,e-s/2,e+s/2));const r=d/2;i-rc&&(_=c-r)}if(void 0!==_||void 0!==g){const e=new t.P(null!=_?_:f,null!=g?g:m);r.center=ge(s,e).wrap()}return r},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new qt({calcMatrices:()=>{this._calcMatrices()},defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new $t}clone(){const e=new Ht;return e.apply(this),e}apply(e,t,i){this._helper.apply(e,t,i)}get cameraPosition(){return this._cameraPosition}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._viewProjMatrix}get inverseProjectionMatrix(){return this._invProjMatrix}get mercatorMatrix(){return this._mercatorMatrix}getVisibleUnwrappedCoordinates(e){const i=[new t.bc(0,e)];if(this._helper._renderWorldCopies){const r=this.screenPointToMercatorCoordinate(new t.P(0,0)),n=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,0)),s=this.screenPointToMercatorCoordinate(new t.P(this._helper._width,this._helper._height)),o=this.screenPointToMercatorCoordinate(new t.P(0,this._helper._height)),a=Math.floor(Math.min(r.x,n.x,s.x,o.x)),l=Math.floor(Math.max(r.x,n.x,s.x,o.x)),c=1;for(let h=a-c;h<=l+c;h++)0!==h&&i.push(new t.bc(h,e))}return i}getCameraFrustum(){return Wt.fromInvProjectionMatrix(this._invViewProjMatrix,this.worldSize)}getClippingPlane(){return null}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(e){const t=this.screenPointToLocation(this.centerPoint,e),i=e?e.getElevationForLngLatZoom(t,this._helper._tileZoom):0;this._helper.recalculateZoomAndCenter(i)}setLocationAtPoint(e,i){const r=t.as(this.elevation,this.center.lat),n=this.screenPointToMercatorCoordinateAtZ(i,r),s=this.screenPointToMercatorCoordinateAtZ(this.centerPoint,r),o=t.a9.fromLngLat(e),a=new t.a9(o.x-(n.x-s.x),o.y-(n.y-s.y));this.setCenter(null==a?void 0:a.toLngLat()),this._helper._renderWorldCopies&&this.setCenter(this.center.wrap())}locationToScreenPoint(e,i){return i?this.coordinatePoint(t.a9.fromLngLat(e),i.getElevationForLngLat(e,this),this._pixelMatrix3D):this.coordinatePoint(t.a9.fromLngLat(e))}screenPointToLocation(e,t){var i;return null===(i=this.screenPointToMercatorCoordinate(e,t))||void 0===i?void 0:i.toLngLat()}screenPointToMercatorCoordinate(e,t){if(t){const i=t.pointCoordinate(e);if(null!=i)return i}return this.screenPointToMercatorCoordinateAtZ(e)}screenPointToMercatorCoordinateAtZ(e,i){const r=i||0,n=[e.x,e.y,0,1],s=[e.x,e.y,1,1];t.aH(n,n,this._pixelMatrixInverse),t.aH(s,s,this._pixelMatrixInverse);const o=n[3],a=s[3],l=n[1]/o,c=s[1]/a,h=n[2]/o,u=s[2]/a,d=h===u?0:(r-h)/(u-h);return new t.a9(t.G.number(n[0]/o,s[0]/a,d)/this.worldSize,t.G.number(l,c,d)/this.worldSize,r)}coordinatePoint(e,i=0,r=this._pixelMatrix){const n=[e.x*this.worldSize,e.y*this.worldSize,i,1];return t.aH(n,n,r),new t.P(n[0]/n[3],n[1]/n[3])}getBounds(){const e=Math.max(0,this._helper._height/2-ye(this));return(new W).extend(this.screenPointToLocation(new t.P(0,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,e))).extend(this.screenPointToLocation(new t.P(this._helper._width,this._helper._height))).extend(this.screenPointToLocation(new t.P(0,this._helper._height)))}isPointOnMapSurface(e,t){return t?null!=t.pointCoordinate(e):e.y>this.height/2-ye(this)}calculatePosMatrix(e,i=!1,r){var n;const s=null!==(n=e.key)&&void 0!==n?n:t.bd(e.wrap,e.canonical.z,e.canonical.z,e.canonical.x,e.canonical.y),o=i?this._alignedPosMatrixCache:this._posMatrixCache;if(o.has(s)){const e=o.get(s);return r?e.f32:e.f64}const a=xe(e,this.worldSize);t.S(a,i?this._alignedProjMatrix:this._viewProjMatrix,a);const l={f64:a,f32:new Float32Array(a)};return o.set(s,l),r?l.f32:l.f64}calculateFogMatrix(e){const i=e.key,r=this._fogMatrixCacheF32;if(r.has(i))return r.get(i);const n=xe(e,this.worldSize);return t.S(n,this._fogMatrix,n),r.set(i,new Float32Array(n)),r.get(i)}calculateCenterFromCameraLngLatAlt(e,t,i,r){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,r)}_calculateNearFarZIfNeeded(e,i,r){if(!this._helper.autoCalculateNearFarZ)return;const n=Math.min(this.elevation,this.minElevationForCurrentTile,this.getCameraAltitude()-100),s=e-n*this._helper._pixelPerMeter/Math.cos(i),o=n<0?s:e,a=Math.PI/2+this.pitchInRadians,l=t.ap(this.fov)*(Math.abs(Math.cos(t.ap(this.roll)))*this.height+Math.abs(Math.sin(t.ap(this.roll)))*this.width)/this.height*(.5+r.y/this.height),c=Math.sin(l)*o/Math.sin(t.an(Math.PI-a-l,.01,Math.PI-.01)),h=ye(this),u=Math.atan(h/this._helper.cameraToCenterDistance),d=t.ap(.75),p=u>d?2*u*(.5+r.y/(2*h)):d,f=Math.sin(p)*o/Math.sin(t.an(Math.PI-a-p,.01,Math.PI-.01)),m=Math.min(c,f);this._helper._farZ=1.01*(Math.cos(Math.PI/2-i)*m+o),this._helper._nearZ=this._helper._height/50}_calcMatrices(){if(!this._helper._height)return;const e=this.centerOffset,i=_e(this.worldSize,this.center),r=i.x,n=i.y;this._helper._pixelPerMeter=t.as(1,this.center.lat)*this.worldSize;const s=t.ap(Math.min(this.pitch,me)),o=Math.max(this._helper.cameraToCenterDistance/2,this._helper.cameraToCenterDistance+this._helper._elevation*this._helper._pixelPerMeter/Math.cos(s));let a;this._calculateNearFarZIfNeeded(o,s,e),a=new Float64Array(16),t.be(a,this.fovInRadians,this._helper._width/this._helper._height,this._helper._nearZ,this._helper._farZ),this._invProjMatrix=new Float64Array(16),t.aB(this._invProjMatrix,a),a[8]=2*-e.x/this._helper._width,a[9]=2*e.y/this._helper._height,this._projectionMatrix=t.bf(a),t.Q(a,a,[1,-1,1]),t.O(a,a,[0,0,-this._helper.cameraToCenterDistance]),t.bg(a,a,-this.rollInRadians),t.bh(a,a,this.pitchInRadians),t.bg(a,a,-this.bearingInRadians),t.O(a,a,[-r,-n,0]),this._mercatorMatrix=t.Q([],a,[this.worldSize,this.worldSize,this.worldSize]),t.Q(a,a,[1,1,this._helper._pixelPerMeter]),this._pixelMatrix=t.S(new Float64Array(16),this.clipSpaceToPixelsMatrix,a),t.O(a,a,[0,0,-this.elevation]),this._viewProjMatrix=a,this._invViewProjMatrix=t.aB([],a);const l=[0,0,-1,1];t.aH(l,l,this._invViewProjMatrix),this._cameraPosition=[l[0]/l[3],l[1]/l[3],l[2]/l[3]],this._fogMatrix=new Float64Array(16),t.be(this._fogMatrix,this.fovInRadians,this.width/this.height,o,this._helper._farZ),this._fogMatrix[8]=2*-e.x/this.width,this._fogMatrix[9]=2*e.y/this.height,t.Q(this._fogMatrix,this._fogMatrix,[1,-1,1]),t.O(this._fogMatrix,this._fogMatrix,[0,0,-this.cameraToCenterDistance]),t.bg(this._fogMatrix,this._fogMatrix,-this.rollInRadians),t.bh(this._fogMatrix,this._fogMatrix,this.pitchInRadians),t.bg(this._fogMatrix,this._fogMatrix,-this.bearingInRadians),t.O(this._fogMatrix,this._fogMatrix,[-r,-n,0]),t.Q(this._fogMatrix,this._fogMatrix,[1,1,this._helper._pixelPerMeter]),t.O(this._fogMatrix,this._fogMatrix,[0,0,-this.elevation]),this._pixelMatrix3D=t.S(new Float64Array(16),this.clipSpaceToPixelsMatrix,a);const c=this._helper._width%2/2,h=this._helper._height%2/2,u=Math.cos(this.bearingInRadians),d=Math.sin(-this.bearingInRadians),p=r-Math.round(r)+u*c+d*h,f=n-Math.round(n)+u*h+d*c,m=new Float64Array(a);if(t.O(m,m,[p>.5?p-1:p,f>.5?f-1:f,0]),this._alignedProjMatrix=m,a=t.aB(new Float64Array(16),this._pixelMatrix),!a)throw new Error("failed to invert matrix");this._pixelMatrixInverse=a,this._clearMatrixCaches()}_clearMatrixCaches(){this._posMatrixCache.clear(),this._alignedPosMatrixCache.clear(),this._fogMatrixCacheF32.clear()}maxPitchScaleFactor(){if(!this._pixelMatrixInverse)return 1;const e=this.screenPointToMercatorCoordinate(new t.P(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.aH(i,i,this._pixelMatrix)[3]/this._helper.cameraToCenterDistance}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){const e=t.as(1,this.center.lat)*this.worldSize;return ve(this.center,this.elevation,this.pitch,this.bearing,this._helper.cameraToCenterDistance/e).toLngLat()}lngLatToCameraDepth(e,i){const r=t.a9.fromLngLat(e),n=[r.x*this.worldSize,r.y*this.worldSize,i,1];return t.aH(n,n,this._viewProjMatrix),n[2]/n[3]}getProjectionData(e){const{overscaledTileID:i,aligned:r,applyTerrainMatrix:n}=e,s=this._helper.getMercatorTileCoordinates(i),o=i?this.calculatePosMatrix(i,r,!0):null;let a;return a=i&&i.terrainRttPosMatrix32f&&n?i.terrainRttPosMatrix32f:o||t.bi(),{mainMatrix:a,tileMercatorCoords:s,clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:a}}isLocationOccluded(e){return!1}getPixelScale(){return 1}getCircleRadiusCorrection(){return 1}getPitchedTextCorrection(e,t,i){return 1}transformLightDirection(e){return t.b1(e)}getRayDirectionFromPixel(e){throw new Error("Not implemented.")}projectTileCoordinates(e,i,r,n){const s=this.calculatePosMatrix(r);let o;n?(o=[e,i,n(e,i),1],t.aH(o,o,s)):(o=[e,i,0,1],ot(o,o,s));const a=o[3];return{point:new t.P(o[0]/a,o[1]/a),signedDistanceFromCamera:a,isOccluded:!1}}populateCache(e){for(const t of e)this.calculatePosMatrix(t)}getMatrixForModel(e,i){const r=t.a9.fromLngLat(e,i),n=r.meterInMercatorCoordinateUnits(),s=t.bj();return t.O(s,s,[r.x,r.y,r.z]),t.bg(s,s,Math.PI),t.bh(s,s,Math.PI/2),t.Q(s,s,[-n,n,n]),s}getProjectionDataForCustomLayer(e=!0){const i=new t.a2(0,0,0,0,0),r=this.getProjectionData({overscaledTileID:i,applyGlobeMatrix:e}),n=xe(i,this.worldSize);t.S(n,this._viewProjMatrix,n),r.tileMercatorCoords=[0,0,1,1];const s=[t.a5,t.a5,this.worldSize/this._helper.pixelsPerMeter],o=t.bk();return t.Q(o,n,s),r.fallbackMatrix=o,r.mainMatrix=o,r}getFastPathSimpleProjectionMatrix(e){return this.calculatePosMatrix(e)}}function Xt(){t.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.")}function Yt(e){if(e.useSlerp)if(e.k<1){const i=t.bl(e.startEulerAngles.roll,e.startEulerAngles.pitch,e.startEulerAngles.bearing),r=t.bl(e.endEulerAngles.roll,e.endEulerAngles.pitch,e.endEulerAngles.bearing),n=new Float64Array(4);t.bm(n,i,r,e.k);const s=t.bn(n);e.tr.setRoll(s.roll),e.tr.setPitch(s.pitch),e.tr.setBearing(s.bearing)}else e.tr.setRoll(e.endEulerAngles.roll),e.tr.setPitch(e.endEulerAngles.pitch),e.tr.setBearing(e.endEulerAngles.bearing);else e.tr.setRoll(t.G.number(e.startEulerAngles.roll,e.endEulerAngles.roll,e.k)),e.tr.setPitch(t.G.number(e.startEulerAngles.pitch,e.endEulerAngles.pitch,e.k)),e.tr.setBearing(t.G.number(e.startEulerAngles.bearing,e.endEulerAngles.bearing,e.k))}function Kt(e,i,r,n,s){const o=s.padding,a=_e(s.worldSize,r.getNorthWest()),l=_e(s.worldSize,r.getNorthEast()),c=_e(s.worldSize,r.getSouthEast()),h=_e(s.worldSize,r.getSouthWest()),u=t.ap(-n),d=a.rotate(u),p=l.rotate(u),f=c.rotate(u),m=h.rotate(u),_=new t.P(Math.max(d.x,p.x,m.x,f.x),Math.max(d.y,p.y,m.y,f.y)),g=new t.P(Math.min(d.x,p.x,m.x,f.x),Math.min(d.y,p.y,m.y,f.y)),y=_.sub(g),x=(s.width-(o.left+o.right+i.left+i.right))/y.x,v=(s.height-(o.top+o.bottom+i.top+i.bottom))/y.y;if(v<0||x<0)return void Xt();const b=Math.min(t.at(s.scale*Math.min(x,v)),e.maxZoom),w=t.P.convert(e.offset),T=new t.P((i.left-i.right)/2,(i.top-i.bottom)/2).rotate(t.ap(n)),S=w.add(T).mult(s.scale/t.aq(b));return{center:ge(s.worldSize,a.add(c).div(2).sub(S)),zoom:b,bearing:n}}class Jt{get useGlobeControls(){return!1}handlePanInertia(e,t){const i=e.mag(),r=Math.abs(ye(t));return{easingOffset:e.mult(Math.min(.75*r/i,1)),easingCenter:t.center}}handleMapControlsRollPitchBearingZoom(e,t){e.bearingDelta&&t.setBearing(t.bearing+e.bearingDelta),e.pitchDelta&&t.setPitch(t.pitch+e.pitchDelta),e.rollDelta&&t.setRoll(t.roll+e.rollDelta),e.zoomDelta&&t.setZoom(t.zoom+e.zoomDelta)}handleMapControlsPan(e,t,i){e.around.distSqr(t.centerPoint)<.01||t.setLocationAtPoint(i,e.around)}cameraForBoxAndBearing(e,t,i,r,n){return Kt(e,t,i,r,n)}handleJumpToCenterZoom(e,i){e.zoom!==(void 0!==i.zoom?+i.zoom:e.zoom)&&e.setZoom(+i.zoom),void 0!==i.center&&e.setCenter(t.V.convert(i.center))}handleEaseTo(e,i){const r=e.zoom,n=e.padding,s={roll:e.roll,pitch:e.pitch,bearing:e.bearing},o={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},a=void 0!==i.zoom,l=!e.isPaddingEqual(i.padding);let c=!1;const h=a?+i.zoom:e.zoom;let u=e.centerPoint.add(i.offsetAsPoint);const d=e.screenPointToLocation(u),{center:p,zoom:f}=e.applyConstrain(t.V.convert(i.center||d),null!=h?h:r);Ut(e,p);const m=_e(e.worldSize,d),_=_e(e.worldSize,p).sub(m),g=t.aq(f-r);return c=f!==r,{easeFunc:a=>{if(c&&e.setZoom(t.G.number(r,f,a)),t.bo(s,o)||Yt({startEulerAngles:s,endEulerAngles:o,tr:e,k:a,useSlerp:s.roll!=o.roll}),l&&(e.interpolatePadding(n,i.padding,a),u=e.centerPoint.add(i.offsetAsPoint)),i.around)e.setLocationAtPoint(i.around,i.aroundPoint);else{const i=t.aq(e.zoom-r),n=f>r?Math.min(2,g):Math.max(.5,g),s=Math.pow(n,1-a),o=ge(e.worldSize,m.add(_.mult(a*s)).mult(i));e.setLocationAtPoint(e.renderWorldCopies?o.wrap():o,u)}},isZooming:c,elevationCenter:p}}handleFlyTo(e,i){const r=void 0!==i.zoom,n=e.zoom,s=e.applyConstrain(t.V.convert(i.center||i.locationAtOffset),r?+i.zoom:n),o=s.center,a=s.zoom;Ut(e,o);const l=_e(e.worldSize,i.locationAtOffset),c=_e(e.worldSize,o).sub(l),h=c.mag(),u=t.aq(a-n);let d;if(void 0!==i.minZoom){const r=Math.min(+i.minZoom,n,a),s=e.applyConstrain(o,r).zoom;d=t.aq(s-n)}return{easeFunc:(i,r,s,h)=>{e.setZoom(1===i?a:n+t.at(r));const u=1===i?o:ge(e.worldSize,l.add(c.mult(s)).mult(r));e.setLocationAtPoint(e.renderWorldCopies?u.wrap():u,h)},scaleOfZoom:u,targetCenter:o,scaleOfMinZoom:d,pixelPathLength:h}}}class Qt{constructor(e,t,i){this.blendFunction=e,this.blendColor=t,this.mask=i}}Qt.Replace=[1,0],Qt.disabled=new Qt(Qt.Replace,t.bp.transparent,[!1,!1,!1,!1]),Qt.unblended=new Qt(Qt.Replace,t.bp.transparent,[!0,!0,!0,!0]),Qt.alphaBlended=new Qt([1,771],t.bp.transparent,[!0,!0,!0,!0]);const ei=2305;class ti{constructor(e,t,i){this.enable=e,this.mode=t,this.frontFace=i}}ti.disabled=new ti(!1,1029,ei),ti.backCCW=new ti(!0,1029,ei),ti.frontCCW=new ti(!0,1028,ei);class ii{constructor(e,t,i){this.func=e,this.mask=t,this.range=i}}ii.ReadOnly=!1,ii.ReadWrite=!0,ii.disabled=new ii(519,ii.ReadOnly,[0,1]);const ri=7680;class ni{constructor(e,t,i,r,n,s){this.test=e,this.ref=t,this.mask=i,this.fail=r,this.depthFail=n,this.pass=s}}ni.disabled=new ni({func:519,mask:0},0,0,ri,ri,ri);const si=new WeakMap;function oi(e){var t;if(si.has(e))return si.get(e);{const i=null===(t=e.getParameter(e.VERSION))||void 0===t?void 0:t.startsWith("WebGL 2.0");return si.set(e,i),i}}class ai{get awaitingQuery(){return!!this._readbackQueue}constructor(e){this._readbackWaitFrames=4,this._measureWaitFrames=6,this._texWidth=1,this._texHeight=1,this._measuredError=0,this._updateCount=0,this._lastReadbackFrame=-1e3,this._readbackQueue=null,this._cachedRenderContext=e;const i=e.context,r=i.gl;this._texFormat=r.RGBA,this._texType=r.UNSIGNED_BYTE;const n=new t.aW;n.emplaceBack(-1,-1),n.emplaceBack(2,-1),n.emplaceBack(-1,2);const s=new t.aY;s.emplaceBack(0,1,2),this._fullscreenTriangle=new Ft(i.createVertexBuffer(n,Bt.members),i.createIndexBuffer(s),t.aX.simpleSegment(0,0,n.length,s.length)),this._resultBuffer=new Uint8Array(4),i.activeTexture.set(r.TEXTURE1);const o=r.createTexture();r.bindTexture(r.TEXTURE_2D,o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.NEAREST),r.texImage2D(r.TEXTURE_2D,0,this._texFormat,this._texWidth,this._texHeight,0,this._texFormat,this._texType,null),this._fbo=i.createFramebuffer(this._texWidth,this._texHeight,!1,!1),this._fbo.colorAttachment.set(o),oi(r)&&(this._pbo=r.createBuffer(),r.bindBuffer(r.PIXEL_PACK_BUFFER,this._pbo),r.bufferData(r.PIXEL_PACK_BUFFER,4,r.STREAM_READ),r.bindBuffer(r.PIXEL_PACK_BUFFER,null))}destroy(){const e=this._cachedRenderContext.context.gl;this._fullscreenTriangle.destroy(),this._fbo.destroy(),e.deleteBuffer(this._pbo),this._fullscreenTriangle=null,this._fbo=null,this._pbo=null,this._resultBuffer=null}updateErrorLoop(e,t){const i=this._updateCount;return this._readbackQueue?i>=this._readbackQueue.frameNumberIssued+this._readbackWaitFrames&&this._tryReadback():i>=this._lastReadbackFrame+this._measureWaitFrames&&this._renderErrorTexture(e,t),this._updateCount++,this._measuredError}_bindFramebuffer(){const e=this._cachedRenderContext.context,t=e.gl;e.activeTexture.set(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this._fbo.colorAttachment.get()),e.bindFramebuffer.set(this._fbo.framebuffer)}_renderErrorTexture(e,i){const r=this._cachedRenderContext.context,n=r.gl;if(this._bindFramebuffer(),r.viewport.set([0,0,this._texWidth,this._texHeight]),r.clear({color:t.bp.transparent}),this._cachedRenderContext.useProgram("projectionErrorMeasurement").draw(r,n.TRIANGLES,ii.disabled,ni.disabled,Qt.unblended,ti.disabled,((e,t)=>({u_input:e,u_output_expected:t}))(e,i),null,null,"$clipping",this._fullscreenTriangle.vertexBuffer,this._fullscreenTriangle.indexBuffer,this._fullscreenTriangle.segments),this._pbo&&oi(n)){n.bindBuffer(n.PIXEL_PACK_BUFFER,this._pbo),n.readBuffer(n.COLOR_ATTACHMENT0),n.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,0),n.bindBuffer(n.PIXEL_PACK_BUFFER,null);const e=n.fenceSync(n.SYNC_GPU_COMMANDS_COMPLETE,0);n.flush(),this._readbackQueue={frameNumberIssued:this._updateCount,sync:e}}else this._readbackQueue={frameNumberIssued:this._updateCount,sync:null}}_tryReadback(){const e=this._cachedRenderContext.context.gl;if(this._pbo&&this._readbackQueue&&oi(e)){const i=e.clientWaitSync(this._readbackQueue.sync,0,0);if(i===e.WAIT_FAILED)return t.w("WebGL2 clientWaitSync failed."),this._readbackQueue=null,void(this._lastReadbackFrame=this._updateCount);if(i===e.TIMEOUT_EXPIRED)return;e.bindBuffer(e.PIXEL_PACK_BUFFER,this._pbo),e.getBufferSubData(e.PIXEL_PACK_BUFFER,0,this._resultBuffer,0,4),e.bindBuffer(e.PIXEL_PACK_BUFFER,null)}else this._bindFramebuffer(),e.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,this._resultBuffer);this._readbackQueue=null,this._measuredError=ai._parseRGBA8float(this._resultBuffer),this._lastReadbackFrame=this._updateCount}static _parseRGBA8float(e){let t=0;return t+=e[0]/256,t+=e[1]/65536,t+=e[2]/16777216,e[3]<127&&(t=-t),t/128}}const li=t.a5/128;function ci(e,i){const r=void 0!==e.granularity?Math.max(e.granularity,1):1,n=r+(e.generateBorders?2:0),s=r+(e.extendToNorthPole||e.generateBorders?1:0)+(e.extendToSouthPole||e.generateBorders?1:0),o=n+1,a=s+1,l=e.generateBorders?-1:0,c=e.generateBorders||e.extendToNorthPole?-1:0,h=r+(e.generateBorders?1:0),u=r+(e.generateBorders||e.extendToSouthPole?1:0),d=o*a,p=n*s*6,f=o*a>65536;if(f&&"16bit"===i)throw new Error("Granularity is too large and meshes would not fit inside 16 bit vertex indices.");const m=f||"32bit"===i,_=new Int16Array(2*d);let g=0;for(let v=c;v<=u;v++)for(let i=l;i<=h;i++){let n=i/r*t.a5;-1===i&&(n=-li),i===r+1&&(n=t.a5+li);let s=v/r*t.a5;-1===v&&(s=e.extendToNorthPole?t.br:-li),v===r+1&&(s=e.extendToSouthPole?t.bs:t.a5+li),_[g++]=n,_[g++]=s}const y=m?new Uint32Array(p):new Uint16Array(p);let x=0;for(let t=0;t0}get latitudeErrorCorrectionRadians(){return this._verticalPerspectiveProjection.latitudeErrorCorrectionRadians}get currentProjection(){return this.useGlobeRendering?this._verticalPerspectiveProjection:this._mercatorProjection}get name(){return"globe"}get useSubdivision(){return this.currentProjection.useSubdivision}get shaderVariantName(){return this.currentProjection.shaderVariantName}get shaderDefine(){return this.currentProjection.shaderDefine}get shaderPreludeCode(){return this.currentProjection.shaderPreludeCode}get vertexShaderPreludeCode(){return this.currentProjection.vertexShaderPreludeCode}get subdivisionGranularity(){return this.currentProjection.subdivisionGranularity}get useGlobeControls(){return this.transitionState>0}destroy(){this._mercatorProjection.destroy(),this._verticalPerspectiveProjection.destroy()}updateGPUdependent(e){this._mercatorProjection.updateGPUdependent(e),this._verticalPerspectiveProjection.updateGPUdependent(e)}getMeshFromTileID(e,t,i,r,n){return this.currentProjection.getMeshFromTileID(e,t,i,r,n)}setProjection(e){this._transitionable.setValue("type",(null==e?void 0:e.type)||"mercator")}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()||this.currentProjection.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e)}setErrorQueryLatitudeDegrees(e){this._verticalPerspectiveProjection.setErrorQueryLatitudeDegrees(e),this._mercatorProjection.setErrorQueryLatitudeDegrees(e)}}function fi(e){const t=gi(e.worldSize,e.center.lat);return 2*Math.PI*t}function mi(e,i,r,n,s){const o=1/(1<1e-6){const n=e[0]/r,s=Math.acos(e[2]/r),o=(n>0?s:-s)/Math.PI*180;return new t.V(t.W(o,-180,180),i)}return new t.V(0,i)}function xi(e){return Math.cos(e*Math.PI/180)}function vi(e,i){const r=xi(e),n=xi(i);return t.at(n/r)}function bi(e,i){const r=e.rotate(i.bearingInRadians),n=i.zoom+vi(i.center.lat,0),s=t.bu(1/xi(i.center.lat),1/xi(Math.min(Math.abs(i.center.lat),60)),t.bx(n,7,3,0,1)),o=360/fi({worldSize:i.worldSize,center:{lat:i.center.lat}});return new t.V(i.center.lng-r.x*o*s,t.an(i.center.lat+r.y*o,-t.ao,t.ao))}function wi(e){const t=.5*e,i=Math.sin(t),r=Math.cos(t);return Math.log(i+r)-Math.log(r-i)}function Ti(e,i,r,n){const s=e.lat+r*n;if(Math.abs(r)>1){const o=(Math.sign(e.lat+r)!==Math.sign(e.lat)?-Math.abs(e.lat):Math.abs(e.lat))*Math.PI/180,a=Math.abs(e.lat+r)*Math.PI/180,l=wi(o+n*(a-o)),c=wi(o),h=wi(a);return new t.V(e.lng+i*((l-c)/(h-c)),s)}return new t.V(e.lng+i*n,s)}class Si{constructor(e){this._cachePrevious=new Map,this._cache=new Map,this._hadAnyChanges=!1,this._boundingVolumeFactory=e}swapBuffers(){if(!this._hadAnyChanges)return;const e=this._cachePrevious;this._cachePrevious=this._cache,this._cache=e,this._cache.clear(),this._hadAnyChanges=!1}getTileBoundingVolume(e,t,i,r){const n=`${e.z}_${e.x}_${e.y}_${(null==r?void 0:r.terrain)?"t":""}`,s=this._cache.get(n);if(s)return s;const o=this._cachePrevious.get(n);if(o)return this._cache.set(n,o),o;const a=this._boundingVolumeFactory(e,t,i,r);return this._cache.set(n,a),this._hadAnyChanges=!0,a}}class Pi{constructor(e,t,i,r){this.min=i,this.max=r,this.points=e,this.planes=t}static fromAabb(e,t){const i=[];for(let r=0;r<8;r++)i.push([1&~r?e[0]:t[0],1==(r>>1&1)?t[1]:e[1],1==(r>>2&1)?t[2]:e[2]]);return new Pi(i,[[-1,0,0,t[0]],[1,0,0,-e[0]],[0,-1,0,t[1]],[0,1,0,-e[1]],[0,0,-1,t[2]],[0,0,1,-e[2]]],e,t)}static fromCenterSizeAngles(e,i,r){const n=t.bB([],r[0],r[1],r[2]),s=t.bC([],[i[0],0,0],n),o=t.bC([],[0,i[1],0],n),a=t.bC([],[0,0,i[2]],n),l=[...e],c=[...e];for(let t=0;t<8;t++)for(let i=0;i<3;i++){const r=e[i]+s[i]*(1&~t?-1:1)+o[i]*(1==(t>>1&1)?1:-1)+a[i]*(1==(t>>2&1)?1:-1);l[i]=Math.min(l[i],r),c[i]=Math.max(c[i],r)}const h=[];for(let u=0;u<8;u++){const i=[...e];t.b0(i,i,t.a$([],s,1&~u?-1:1)),t.b0(i,i,t.a$([],o,1==(u>>1&1)?1:-1)),t.b0(i,i,t.a$([],a,1==(u>>2&1)?1:-1)),h.push(i)}return new Pi(h,[[...s,-t.b5(s,h[0])],[...o,-t.b5(o,h[0])],[...a,-t.b5(a,h[0])],[-s[0],-s[1],-s[2],-t.b5(s,h[7])],[-o[0],-o[1],-o[2],-t.b5(o,h[7])],[-a[0],-a[1],-a[2],-t.b5(a,h[7])]],l,c)}intersectsFrustum(e){let t=!0;const i=this.points.length,r=this.planes.length,n=e.planes.length,s=e.points.length;for(let o=0;o=0&&n++}if(0===n)return 0;n=0&&i++}if(0===i)return 0}return 1}intersectsPlane(e){const t=this.points.length;let i=0;for(let r=0;r=0&&i++}return i===t?2:0===i?0:1}}function Ii(e,t,i){const r=e-t;return r<0?-r:Math.max(0,r-i)}function Mi(e,t,i,r,n){const s=e-i;let o;return o=s<0?Math.min(-s,1+s-n):s>1?Math.min(Math.max(s-n,0),1-s):0,Math.max(o,Ii(t,r,n))}class Ei{constructor(){this._boundingVolumeCache=new Si(this._computeTileBoundingVolume)}prepareNextFrame(){this._boundingVolumeCache.swapBuffers()}distanceToTile2d(e,t,i,r){const n=1<4}allowWorldCopies(){return!1}getTileBoundingVolume(e,t,i,r){return this._boundingVolumeCache.getTileBoundingVolume(e,t,i,r)}_computeTileBoundingVolume(e,i,r,n){var s,o;let a=0,l=0;if(null==n?void 0:n.terrain){const c=new t.a2(e.z,i,e.z,e.x,e.y),h=n.terrain.getMinMaxElevation(c);a=null!==(s=h.minElevation)&&void 0!==s?s:Math.min(0,r),l=null!==(o=h.maxElevation)&&void 0!==o?o:Math.max(0,r)}if(a/=t.bE,l/=t.bE,a+=1,l+=1,e.z<=0)return Pi.fromAabb([-l,-l,-l],[l,l,l]);if(1===e.z)return Pi.fromAabb([0===e.x?-l:0,0===e.y?0:-l,-l],[0===e.x?0:l,0===e.y?l:0,l]);{const i=[mi(0,0,e.x,e.y,e.z),mi(t.a5,0,e.x,e.y,e.z),mi(t.a5,t.a5,e.x,e.y,e.z),mi(0,t.a5,e.x,e.y,e.z)],r=[];for(const e of i)r.push(t.a$([],e,l));if(l!==a)for(const e of i)r.push(t.a$([],e,a));0===e.y&&r.push([0,1,0]),e.y===(1<=(1<{const r=t.an(e.lat,-t.ao,t.ao),n=t.an(+i,this.minZoom+vi(0,r),this.maxZoom);return{center:new t.V(e.lng,r),zoom:n}},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new qt({calcMatrices:()=>{this._calcMatrices()},defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new Ei}clone(){const e=new Ai;return e.apply(this),e}apply(e,t){this._globeLatitudeErrorCorrectionRadians=t||0,this._helper.apply(e)}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._globeViewProjMatrixNoCorrection}get inverseProjectionMatrix(){return this._globeProjMatrixInverted}get cameraPosition(){const e=t.bz();return e[0]=this._cameraPosition[0],e[1]=this._cameraPosition[1],e[2]=this._cameraPosition[2],e}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}getProjectionData(e){const{overscaledTileID:t,applyGlobeMatrix:i}=e,r=this._helper.getMercatorTileCoordinates(t);return{mainMatrix:this._globeViewProjMatrix32f,tileMercatorCoords:r,clippingPlane:this._cachedClippingPlane,projectionTransition:i?1:0,fallbackMatrix:this._globeViewProjMatrix32f}}_computeClippingPlane(e){const i=this.pitchInRadians,r=this.cameraToCenterDistance/e,n=Math.sin(i)*r,s=Math.cos(i)*r+1,o=1/Math.sqrt(n*n+s*s)*1;let a=-n,l=s;const c=Math.sqrt(a*a+l*l);a/=c,l/=c;const h=[0,a,l];t.bG(h,h,[0,0,0],-this.bearingInRadians),t.bH(h,h,[0,0,0],-1*this.center.lat*Math.PI/180),t.bI(h,h,[0,0,0],this.center.lng*Math.PI/180);const u=1/t.b7(h);return t.a$(h,h,u),[...h,-o*u]}isLocationOccluded(e){return!this.isSurfacePointVisible(_i(e))}transformLightDirection(e){const i=this._helper._center.lng*Math.PI/180,r=this._helper._center.lat*Math.PI/180,n=Math.cos(r),s=[Math.sin(i)*n,Math.sin(r),Math.cos(i)*n],o=[s[2],0,-s[0]],a=[0,0,0];t.b4(a,o,s),t.b3(o,o),t.b3(a,a);const l=[0,0,0];return t.b3(l,[o[0]*e[0]+a[0]*e[1]+s[0]*e[2],o[1]*e[0]+a[1]*e[1]+s[1]*e[2],o[2]*e[0]+a[2]*e[1]+s[2]*e[2]]),l}getPixelScale(){return 1/Math.cos(this._helper._center.lat*Math.PI/180)}getCircleRadiusCorrection(){return Math.cos(this._helper._center.lat*Math.PI/180)}getPitchedTextCorrection(e,i,r){const n=function(e,i,r){const n=1/(1<s&&(s=e),ia&&(a=i)}const h=[c.lng+o,c.lat+l,c.lng+s,c.lat+a];return this.isSurfacePointOnScreen([0,1,0])&&(h[3]=90,h[0]=-180,h[2]=180),this.isSurfacePointOnScreen([0,-1,0])&&(h[1]=-90,h[0]=-180,h[2]=180),new W(h)}calculateCenterFromCameraLngLatAlt(e,t,i,r){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,r)}setLocationAtPoint(e,i){const r=_i(this.unprojectScreenPoint(i)),n=_i(e),s=t.bz();t.bL(s);const o=t.bz();t.bI(o,r,s,-this.center.lng*Math.PI/180),t.bH(o,o,s,this.center.lat*Math.PI/180);const a=n[0]*n[0]+n[2]*n[2],l=o[0]*o[0];if(a=-g&&f<=g,x=_>=-g&&_<=g;let v,b;if(y&&x){const e=this.center.lng*Math.PI/180,i=this.center.lat*Math.PI/180;t.bN(u,e)+t.bN(f,i)=0}isSurfacePointOnScreen(e){if(!this.isSurfacePointVisible(e))return!1;const i=t.bF();return t.aH(i,[...e,1],this._globeViewProjMatrixNoCorrection),i[0]/=i[3],i[1]/=i[3],i[2]/=i[3],i[0]>-1&&i[0]<1&&i[1]>-1&&i[1]<1&&i[2]>-1&&i[2]<1}rayPlanetIntersection(e,i){const r=t.b5(e,i),n=t.bz(),s=t.bz();t.a$(s,i,r),t.b2(n,e,s);const o=1-t.b5(n,n);if(o<0)return null;const a=t.b5(e,e)-1,l=-r+(r<0?1:-1)*Math.sqrt(o),c=a/l,h=l;return{tMin:Math.min(c,h),tMax:Math.max(c,h)}}unprojectScreenPoint(e){const i=this._cameraPosition,r=this.getRayDirectionFromPixel(e),n=this.rayPlanetIntersection(i,r);if(n){const e=t.bz();t.b0(e,i,[r[0]*n.tMin,r[1]*n.tMin,r[2]*n.tMin]);const s=t.bz();return t.b3(s,e),yi(s)}const s=this._cachedClippingPlane,o=s[0]*r[0]+s[1]*r[1]+s[2]*r[2],a=-t.bb(s,i)/o,l=t.bz();if(a>0)t.b0(l,i,[r[0]*a,r[1]*a,r[2]*a]);else{const e=t.bz();t.b0(e,i,[2*r[0],2*r[1],2*r[2]]);const n=t.bb(this._cachedClippingPlane,e);t.b2(l,e,[this._cachedClippingPlane[0]*n,this._cachedClippingPlane[1]*n,this._cachedClippingPlane[2]*n])}const c=function(e){const i=t.bz();return i[0]=e[0]*-e[3],i[1]=e[1]*-e[3],i[2]=e[2]*-e[3],{center:i,radius:Math.sqrt(1-e[3]*e[3])}}(s);return yi(function(e,i,r){const n=t.bz();t.b2(n,r,e);const s=t.bz();return t.bA(s,e,n,i/t.b9(n)),s}(c.center,c.radius,l))}getMatrixForModel(e,i){const r=t.V.convert(e),n=1/t.bE,s=t.bj();return t.bJ(s,s,r.lng/180*Math.PI),t.bh(s,s,-r.lat/180*Math.PI),t.O(s,s,[0,0,1+i/t.bE]),t.bh(s,s,.5*Math.PI),t.Q(s,s,[n,n,n]),s}getProjectionDataForCustomLayer(e=!0){const i=this.getProjectionData({overscaledTileID:new t.a2(0,0,0,0,0),applyGlobeMatrix:e});return i.tileMercatorCoords=[0,0,1,1],i}getFastPathSimpleProjectionMatrix(e){}}class Di{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e)}setMaxZoom(e){this._helper.setMaxZoom(e)}setMinPitch(e){this._helper.setMinPitch(e)}setMaxPitch(e){this._helper.setMaxPitch(e)}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e)}setBearing(e){this._helper.setBearing(e)}setPitch(e){this._helper.setPitch(e)}setRoll(e){this._helper.setRoll(e)}setFov(e){this._helper.setFov(e)}setZoom(e){this._helper.setZoom(e)}setCenter(e){this._helper.setCenter(e)}setElevation(e){this._helper.setElevation(e)}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e)}setPadding(e){this._helper.setPadding(e)}interpolatePadding(e,t,i){return this._helper.interpolatePadding(e,t,i)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,i=!0){this._helper.resize(e,t,i)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e)}setConstrainOverride(e){this._helper.setConstrainOverride(e)}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}get isGlobeRendering(){return this._globeness>0}setTransitionState(e,t){this._globeness=e,this._globeLatitudeErrorCorrectionRadians=t,this._calcMatrices(),this._verticalPerspectiveTransform.getCoveringTilesDetailsProvider().prepareNextFrame(),this._mercatorTransform.getCoveringTilesDetailsProvider().prepareNextFrame()}get currentTransform(){return this.isGlobeRendering?this._verticalPerspectiveTransform:this._mercatorTransform}constructor(e){this._globeLatitudeErrorCorrectionRadians=0,this._globeness=1,this.defaultConstrain=(e,t)=>this.currentTransform.defaultConstrain(e,t),this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new qt({calcMatrices:()=>{this._calcMatrices()},defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._globeness=1,this._mercatorTransform=new Ht,this._verticalPerspectiveTransform=new Ai}clone(){const e=new Di;return e._globeness=this._globeness,e._globeLatitudeErrorCorrectionRadians=this._globeLatitudeErrorCorrectionRadians,e.apply(this),e}apply(e){this._helper.apply(e),this._mercatorTransform.apply(this),this._verticalPerspectiveTransform.apply(this,this._globeLatitudeErrorCorrectionRadians)}get projectionMatrix(){return this.currentTransform.projectionMatrix}get modelViewProjectionMatrix(){return this.currentTransform.modelViewProjectionMatrix}get inverseProjectionMatrix(){return this.currentTransform.inverseProjectionMatrix}get cameraPosition(){return this.currentTransform.cameraPosition}getProjectionData(e){const t=this._mercatorTransform.getProjectionData(e),i=this._verticalPerspectiveTransform.getProjectionData(e);return{mainMatrix:this.isGlobeRendering?i.mainMatrix:t.mainMatrix,clippingPlane:i.clippingPlane,tileMercatorCoords:i.tileMercatorCoords,projectionTransition:e.applyGlobeMatrix?this._globeness:0,fallbackMatrix:t.fallbackMatrix}}isLocationOccluded(e){return this.currentTransform.isLocationOccluded(e)}transformLightDirection(e){return this.currentTransform.transformLightDirection(e)}getPixelScale(){return t.bu(this._mercatorTransform.getPixelScale(),this._verticalPerspectiveTransform.getPixelScale(),this._globeness)}getCircleRadiusCorrection(){return t.bu(this._mercatorTransform.getCircleRadiusCorrection(),this._verticalPerspectiveTransform.getCircleRadiusCorrection(),this._globeness)}getPitchedTextCorrection(e,i,r){const n=this._mercatorTransform.getPitchedTextCorrection(e,i,r),s=this._verticalPerspectiveTransform.getPitchedTextCorrection(e,i,r);return t.bu(n,s,this._globeness)}projectTileCoordinates(e,t,i,r){return this.currentTransform.projectTileCoordinates(e,t,i,r)}_calcMatrices(){this._helper._width&&this._helper._height&&(this._verticalPerspectiveTransform.apply(this,this._globeLatitudeErrorCorrectionRadians),this._helper._nearZ=this._verticalPerspectiveTransform.nearZ,this._helper._farZ=this._verticalPerspectiveTransform.farZ,this._mercatorTransform.apply(this,!0,this.isGlobeRendering),this._helper._nearZ=this._mercatorTransform.nearZ,this._helper._farZ=this._mercatorTransform.farZ)}calculateFogMatrix(e){return this.currentTransform.calculateFogMatrix(e)}getVisibleUnwrappedCoordinates(e){return this.currentTransform.getVisibleUnwrappedCoordinates(e)}getCameraFrustum(){return this.currentTransform.getCameraFrustum()}getClippingPlane(){return this.currentTransform.getClippingPlane()}getCoveringTilesDetailsProvider(){return this.currentTransform.getCoveringTilesDetailsProvider()}recalculateZoomAndCenter(e){this._mercatorTransform.recalculateZoomAndCenter(e),this._verticalPerspectiveTransform.recalculateZoomAndCenter(e)}maxPitchScaleFactor(){return this._mercatorTransform.maxPitchScaleFactor()}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){return this._helper.getCameraLngLat()}lngLatToCameraDepth(e,t){return this.currentTransform.lngLatToCameraDepth(e,t)}populateCache(e){this._mercatorTransform.populateCache(e),this._verticalPerspectiveTransform.populateCache(e)}getBounds(){return this.currentTransform.getBounds()}calculateCenterFromCameraLngLatAlt(e,t,i,r){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,i,r)}setLocationAtPoint(e,t){if(!this.isGlobeRendering)return this._mercatorTransform.setLocationAtPoint(e,t),void this.apply(this._mercatorTransform);this._verticalPerspectiveTransform.setLocationAtPoint(e,t),this.apply(this._verticalPerspectiveTransform)}locationToScreenPoint(e,t){return this.currentTransform.locationToScreenPoint(e,t)}screenPointToMercatorCoordinate(e,t){return this.currentTransform.screenPointToMercatorCoordinate(e,t)}screenPointToLocation(e,t){return this.currentTransform.screenPointToLocation(e,t)}isPointOnMapSurface(e,t){return this.currentTransform.isPointOnMapSurface(e,t)}getRayDirectionFromPixel(e){return this._verticalPerspectiveTransform.getRayDirectionFromPixel(e)}getMatrixForModel(e,t){return this.currentTransform.getMatrixForModel(e,t)}getProjectionDataForCustomLayer(e=!0){const t=this._mercatorTransform.getProjectionDataForCustomLayer(e);if(!this.isGlobeRendering)return t;const i=this._verticalPerspectiveTransform.getProjectionDataForCustomLayer(e);return i.fallbackMatrix=t.mainMatrix,i}getFastPathSimpleProjectionMatrix(e){return this.currentTransform.getFastPathSimpleProjectionMatrix(e)}}class zi{get useGlobeControls(){return!0}handlePanInertia(e,i){const r=bi(e,i);return Math.abs(r.lng-i.center.lng)>180&&(r.lng=i.center.lng+179.5*Math.sign(r.lng-i.center.lng)),{easingCenter:r,easingOffset:new t.P(0,0)}}handleMapControlsRollPitchBearingZoom(e,i){const r=e.around,n=i.screenPointToLocation(r);e.bearingDelta&&i.setBearing(i.bearing+e.bearingDelta),e.pitchDelta&&i.setPitch(i.pitch+e.pitchDelta),e.rollDelta&&i.setRoll(i.roll+e.rollDelta);const s=i.zoom;e.zoomDelta&&i.setZoom(i.zoom+e.zoomDelta);const o=i.zoom-s;if(0===o)return;const a=t.bK(i.center.lng,n.lng),l=a/(Math.abs(a/180)+1),c=t.bK(i.center.lat,n.lat),h=i.getRayDirectionFromPixel(r),u=i.cameraPosition,d=-1*t.b5(u,h),p=t.bz();t.b0(p,u,[h[0]*d,h[1]*d,h[2]*d]);const f=t.b7(p)-1,m=Math.exp(.5*-Math.max(f-.3,0)),_=gi(i.worldSize,i.center.lat)/Math.min(i.width,i.height),g=t.bx(_,.9,.5,1,.25),y=(1-t.aq(-o))*Math.min(m,g),x=i.center.lat,v=i.zoom,b=new t.V(i.center.lng+l*y,t.an(i.center.lat+c*y,-t.ao,t.ao));i.setLocationAtPoint(n,r);const w=i.center,T=t.bx(Math.abs(a),45,85,0,1),S=t.bx(_,.75,.35,0,1),P=Math.pow(Math.max(T,S),.25),I=t.bK(w.lng,b.lng),M=t.bK(w.lat,b.lat);i.setCenter(new t.V(w.lng+I*P,w.lat+M*P).wrap()),i.setZoom(v+vi(x,i.center.lat))}handleMapControlsPan(e,t,i){if(!e.panDelta)return;const r=t.center.lat,n=t.zoom;t.setCenter(bi(e.panDelta,t).wrap()),t.setZoom(n+vi(r,t.center.lat))}cameraForBoxAndBearing(e,i,r,n,s){const o=Kt(e,i,r,n,s),a=i.left/s.width*2-1,l=(s.width-i.right)/s.width*2-1,c=i.top/s.height*-2+1,h=(s.height-i.bottom)/s.height*-2+1,u=t.bK(r.getWest(),r.getEast())<0,d=u?r.getEast():r.getWest(),p=u?r.getWest():r.getEast(),f=Math.max(r.getNorth(),r.getSouth()),m=Math.min(r.getNorth(),r.getSouth()),_=d+.5*t.bK(d,p),g=f+.5*t.bK(f,m),y=s.clone();y.setCenter(o.center),y.setBearing(o.bearing),y.setPitch(0),y.setRoll(0),y.setZoom(o.zoom);const x=y.modelViewProjectionMatrix,v=[_i(r.getNorthWest()),_i(r.getNorthEast()),_i(r.getSouthWest()),_i(r.getSouthEast()),_i(new t.V(p,g)),_i(new t.V(d,g)),_i(new t.V(_,f)),_i(new t.V(_,m))],b=_i(o.center);let w=Number.POSITIVE_INFINITY;for(const t of v)a<0&&(w=zi.getLesserNonNegativeNonNull(w,zi.solveVectorScale(t,b,x,"x",a))),l>0&&(w=zi.getLesserNonNegativeNonNull(w,zi.solveVectorScale(t,b,x,"x",l))),c>0&&(w=zi.getLesserNonNegativeNonNull(w,zi.solveVectorScale(t,b,x,"y",c))),h<0&&(w=zi.getLesserNonNegativeNonNull(w,zi.solveVectorScale(t,b,x,"y",h)));if(Number.isFinite(w)&&0!==w)return o.zoom=y.zoom+t.at(w),o;Xt()}handleJumpToCenterZoom(e,i){const r=e.center.lat,n=e.applyConstrain(i.center?t.V.convert(i.center):e.center,e.zoom).center;e.setCenter(n.wrap());const s=void 0!==i.zoom?+i.zoom:e.zoom+vi(r,n.lat);e.zoom!==s&&e.setZoom(s)}handleEaseTo(e,i){const r=e.zoom,n=e.center,s=e.padding,o={roll:e.roll,pitch:e.pitch,bearing:e.bearing},a={roll:void 0===i.roll?e.roll:i.roll,pitch:void 0===i.pitch?e.pitch:i.pitch,bearing:void 0===i.bearing?e.bearing:i.bearing},l=void 0!==i.zoom,c=!e.isPaddingEqual(i.padding);let h=!1;const u=i.center?t.V.convert(i.center):n,d=e.applyConstrain(u,r).center;Ut(e,d);const p=e.clone();p.setCenter(d),p.setZoom(l?+i.zoom:r+vi(n.lat,u.lat)),p.setBearing(i.bearing);const f=new t.P(t.an(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.an(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));p.setLocationAtPoint(d,f);const m=(i.offset&&i.offsetAsPoint.mag())>0?p.center:d,_=l?+i.zoom:r+vi(n.lat,m.lat),g=r+vi(n.lat,0),y=_+vi(m.lat,0),x=t.bK(n.lng,m.lng),v=t.bK(n.lat,m.lat),b=t.aq(y-g);return h=_!==r,{easeFunc:r=>{if(t.bo(o,a)||Yt({startEulerAngles:o,endEulerAngles:a,tr:e,k:r,useSlerp:o.roll!=a.roll}),c&&e.interpolatePadding(s,i.padding,r),i.around)t.w("Easing around a point is not supported under globe projection."),e.setLocationAtPoint(i.around,i.aroundPoint);else{const t=y>g?Math.min(2,b):Math.max(.5,b),i=Math.pow(t,1-r),s=Ti(n,x,v,r*i);e.setCenter(s.wrap())}if(h){const i=t.G.number(g,y,r)+vi(0,e.center.lat);e.setZoom(i)}},isZooming:h,elevationCenter:m}}handleFlyTo(e,i){const r=void 0!==i.zoom,n=e.center,s=e.zoom,o=e.padding,a=!e.isPaddingEqual(i.padding),l=e.applyConstrain(t.V.convert(i.center||i.locationAtOffset),s).center,c=r?+i.zoom:e.zoom+vi(e.center.lat,l.lat),h=e.clone();h.setCenter(l),h.setZoom(c),h.setBearing(i.bearing);const u=new t.P(t.an(e.centerPoint.x+i.offsetAsPoint.x,0,e.width),t.an(e.centerPoint.y+i.offsetAsPoint.y,0,e.height));h.setLocationAtPoint(l,u);const d=h.center;Ut(e,d);const p=function(e,i,r){const n=_i(i),s=_i(r),o=t.b5(n,s),a=Math.acos(o),l=fi(e);return a/(2*Math.PI)*l}(e,n,d),f=s+vi(n.lat,0),m=c+vi(d.lat,0),_=t.aq(m-f);let g;if("number"==typeof i.minZoom){const r=+i.minZoom+vi(d.lat,0),n=Math.min(r,f,m)+vi(0,d.lat),s=e.applyConstrain(d,n).zoom+vi(d.lat,0);g=t.aq(s-f)}const y=t.bK(n.lng,d.lng),x=t.bK(n.lat,d.lat);return{easeFunc:(r,s,l,h)=>{const u=Ti(n,y,x,l);a&&e.interpolatePadding(o,i.padding,r);const p=1===r?d:u;e.setCenter(p.wrap());const m=f+t.at(s);e.setZoom(1===r?c:m+vi(0,p.lat))},scaleOfZoom:_,targetCenter:d,scaleOfMinZoom:g,pixelPathLength:p}}static solveVectorScale(e,t,i,r,n){const s="x"===r?[i[0],i[4],i[8],i[12]]:[i[1],i[5],i[9],i[13]],o=[i[3],i[7],i[11],i[15]],a=e[0]*s[0]+e[1]*s[1]+e[2]*s[2],l=e[0]*o[0]+e[1]*o[1]+e[2]*o[2],c=t[0]*s[0]+t[1]*s[1]+t[2]*s[2],h=t[0]*o[0]+t[1]*o[1]+t[2]*o[2];return c+n*l===a+n*h||o[3]*(a-c)+s[3]*(h-l)+a*h==c*l?null:(c+s[3]-n*h-n*o[3])/(c-a-n*h+n*l)}static getLesserNonNegativeNonNull(e,t){return null!==t&&t>=0&&tt.B(e,i&&i.filter(e=>"source.canvas"!==e.identifier)),Li=t.bO();class Fi extends t.E{constructor(e,i={}){var r,n;super(),this._rtlPluginLoaded=()=>{for(const e in this.tileManagers){const t=this.tileManagers[e].getSource().type;"vector"!==t&&"geojson"!==t||this.tileManagers[e].reload()}},this.map=e,this.dispatcher=new j(V(),e._getMapId()),this.dispatcher.registerMessageHandler("GG",(e,t)=>this.getGlyphs(e,t)),this.dispatcher.registerMessageHandler("GI",(e,t)=>this.getImages(e,t)),this.dispatcher.registerMessageHandler("GDA",(e,t)=>this.getDashes(e,t)),this.imageManager=new w,this.imageManager.setEventedParent(this);const s=(null===(r=e._container)||void 0===r?void 0:r.lang)||"undefined"!=typeof document&&(null===(n=document.documentElement)||void 0===n?void 0:n.lang)||void 0;this.glyphManager=new M(e._requestManager,i.localIdeographFontFamily,s),this.lineAtlas=new k(256,512),this.crossTileSymbolIndex=new zt,this._setInitialValues(),this._resetUpdates(),this.dispatcher.broadcast("SR",t.bP()),ce().on(oe,this._rtlPluginLoaded),this.on("data",e=>{if("source"!==e.dataType||"metadata"!==e.sourceDataType)return;const t=this.tileManagers[e.sourceId];if(!t)return;const i=t.getSource();if(i&&i.vectorLayerIds)for(const r in this._layers){const e=this._layers[r];e.source===i.id&&this._validateLayer(e)}})}_setInitialValues(){var e;this._spritesImagesIds={},this._layers={},this._order=[],this.tileManagers={},this.zoomHistory=new t.bQ,this._availableImages=[],this._globalState={},this._serializedLayers={},this.stylesheet=null,this.light=null,this.sky=null,this.projection&&(this.projection.destroy(),delete this.projection),this._loaded=!1,this._changed=!1,this._updatedLayers={},this._updatedSources={},this._changedImages={},this._glyphsDidChange=!1,this._updatedPaintProps={},this._layerOrderChanged=!1,this.crossTileSymbolIndex=new((null===(e=this.crossTileSymbolIndex)||void 0===e?void 0:e.constructor)||Object),this.pauseablePlacement=void 0,this.placement=void 0,this.z=0}setGlobalStateProperty(e,i){var r,n,s;this._checkLoaded();const o=null===i?null!==(s=null===(n=null===(r=this.stylesheet.state)||void 0===r?void 0:r[e])||void 0===n?void 0:n.default)&&void 0!==s?s:null:i;if(t.bR(o,this._globalState[e]))return this;this._globalState[e]=o,this._applyGlobalStateChanges([e])}getGlobalState(){return this._globalState}setGlobalState(e){this._checkLoaded();const i=[];for(const r in e)!t.bR(this._globalState[r],e[r].default)&&(i.push(r),this._globalState[r]=e[r].default);this._applyGlobalStateChanges(i)}_applyGlobalStateChanges(e){if(0===e.length)return;const t=new Set,i={};for(const r of e){i[r]=this._globalState[r];for(const e in this._layers){const i=this._layers[e],n=i.getLayoutAffectingGlobalStateRefs(),s=i.getPaintAffectingGlobalStateRefs(),o=i.getVisibilityAffectingGlobalStateRefs();if(n.has(r)&&t.add(i.source),s.has(r))for(const{name:e,value:t}of s.get(r))this._updatePaintProperty(i,e,t);(null==o?void 0:o.has(r))&&(i.recalculateVisibility(),this._updateLayer(i))}}this.dispatcher.broadcast("UGS",i);for(const r in this.tileManagers)t.has(r)&&(this._reloadSource(r),this._changed=!0)}loadURL(e,i={},r){this.fire(new t.l("dataloading",{dataType:"style"})),i.validate="boolean"!=typeof i.validate||i.validate;const n=this.map._requestManager.transformRequest(e,"Style");this._loadStyleRequest=new AbortController;const s=this._loadStyleRequest;t.j(n,this._loadStyleRequest).then(e=>{this._loadStyleRequest=null,this._load(e.data,i,r)}).catch(e=>{this._loadStyleRequest=null,e&&!s.signal.aborted&&this.fire(new t.k(e))})}loadJSON(e,i={},r){this.fire(new t.l("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,a.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,i.validate=!1!==i.validate,this._load(e,i,r)}).catch(()=>{})}loadEmpty(){this.fire(new t.l("dataloading",{dataType:"style"})),this._load(Li,{validate:!1})}_load(e,i,r){var n,s;let o=i.transformStyle?i.transformStyle(r,e):e;if(!i.validate||!Ri(this,t.C(o))){o=Object.assign({},o),this._loaded=!0,this.stylesheet=o;for(const e in o.sources)this.addSource(e,o.sources[e],{validate:!1});o.sprite?this._loadSprite(o.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(o.glyphs),this._createLayers(),this.light=new A(this.stylesheet.light),this._setProjectionInternal((null===(n=this.stylesheet.projection)||void 0===n?void 0:n.type)||"mercator"),this.sky=new z(this.stylesheet.sky),this.map.setTerrain(null!==(s=this.stylesheet.terrain)&&void 0!==s?s:null),this.fire(new t.l("data",{dataType:"style"})),this.fire(new t.l("style.load"))}}_createLayers(){var e,i,r;const n=t.bS(this.stylesheet.layers);this.setGlobalState(null!==(e=this.stylesheet.state)&&void 0!==e?e:null),this.dispatcher.broadcast("SL",n),this._order=n.map(e=>e.id),this._layers={},this._serializedLayers=null;for(const s of n){const e=t.bT(s,this._globalState);if(e.setEventedParent(this,{layer:{id:s.id}}),this._layers[s.id]=e,t.bU(e)&&this.tileManagers[e.source]){const t=null!==(r=null===(i=s.paint)||void 0===i?void 0:i["raster-fade-duration"])&&void 0!==r?r:e.paint.get("raster-fade-duration");this.tileManagers[e.source].setRasterFadeDuration(t)}}}_loadSprite(e,i=!1,r=void 0){this.imageManager.setLoaded(!1);const n=new AbortController;let s;this._spriteRequest=n,function(e,i,r,n){return t._(this,void 0,void 0,function*(){const s=x(e),o=r>1?"@2x":"",l={},c={};for(const{id:e,url:r}of s){const s=i.transformRequest(v(r,o,".json"),"SpriteJSON");l[e]=t.j(s,n);const a=i.transformRequest(v(r,o,".png"),"SpriteImage");c[e]=g.getImage(a,n)}return yield Promise.all([...Object.values(l),...Object.values(c)]),function(e,i){return t._(this,void 0,void 0,function*(){const t={};for(const r in e){t[r]={};const n=a.getImageCanvasContext((yield i[r]).data),s=(yield e[r]).data;for(const e in s){const{width:i,height:o,x:a,y:l,sdf:c,pixelRatio:h,stretchX:u,stretchY:d,content:p,textFitWidth:f,textFitHeight:m}=s[e];t[r][e]={data:null,pixelRatio:h,sdf:c,stretchX:u,stretchY:d,content:p,textFitWidth:f,textFitHeight:m,spriteData:{width:i,height:o,x:a,y:l,context:n}}}}return t})}(l,c)})}(e,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(e=>{if(this._spriteRequest=null,e)for(const t in e){this._spritesImagesIds[t]=[];const r=this._spritesImagesIds[t]?this._spritesImagesIds[t].filter(t=>!(t in e)):[];for(const e of r)this.imageManager.removeImage(e),this._changedImages[e]=!0;for(const n in e[t]){const r="default"===t?n:`${t}:${n}`;this._spritesImagesIds[t].push(r),r in this.imageManager.images?this.imageManager.updateImage(r,e[t][n],!1):this.imageManager.addImage(r,e[t][n]),i&&(this._changedImages[r]=!0)}}}).catch(e=>{this._spriteRequest=null,s=e,n.signal.aborted||this.fire(new t.k(s))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),i&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.l("data",{dataType:"style"})),r&&r(s)})}_unloadSprite(){for(const e of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(e),this._changedImages[e]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.l("data",{dataType:"style"}))}_validateLayer(e){const i=this.tileManagers[e.source];if(!i)return;const r=e.sourceLayer;if(!r)return;const n=i.getSource();("geojson"===n.type||n.vectorLayerIds&&-1===n.vectorLayerIds.indexOf(r))&&this.fire(new t.k(new Error(`Source layer "${r}" does not exist on source "${n.id}" as specified by style layer "${e.id}".`)))}loaded(){if(!this._loaded)return!1;if(Object.keys(this._updatedSources).length)return!1;for(const e in this.tileManagers)if(!this.tileManagers[e].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(e,i=!1){const r=this._serializedAllLayers();if(!e||0===e.length)return Object.values(i?t.bV(r):r);const n=[];for(const s of e)if(r[s]){const e=i?t.bV(r[s]):r[s];n.push(e)}return n}_serializedAllLayers(){let e=this._serializedLayers;if(e)return e;e=this._serializedLayers={};const t=Object.keys(this._layers);for(const i of t){const t=this._layers[i];"custom"!==t.type&&(e[i]=t.serialize())}return e}hasTransitions(){var e,t,i;if(null===(e=this.light)||void 0===e?void 0:e.hasTransition())return!0;if(null===(t=this.sky)||void 0===t?void 0:t.hasTransition())return!0;if(null===(i=this.projection)||void 0===i?void 0:i.hasTransition())return!0;for(const r in this.tileManagers)if(this.tileManagers[r].hasTransition())return!0;for(const r in this._layers)if(this._layers[r].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(e){if(!this._loaded)return;const i=this._changed;if(i){const t=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(t.length||i.length)&&this._updateWorkerLayers(t,i);for(const e in this._updatedSources){const t=this._updatedSources[e];if("reload"===t)this._reloadSource(e);else{if("clear"!==t)throw new Error(`Invalid action ${t}`);this._clearSource(e)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const r in this._updatedPaintProps)this._layers[r].updateTransitions(e);this.light.updateTransitions(e),this.sky.updateTransitions(e),this._resetUpdates()}const r={};for(const t in this.tileManagers){const e=this.tileManagers[t];r[t]=e.used,e.used=!1}for(const t of this._order){const i=this._layers[t];i.recalculate(e,this._availableImages),!i.isHidden(e.zoom)&&i.source&&(this.tileManagers[i.source].used=!0)}for(const n in r){const e=this.tileManagers[n];!!r[n]!=!!e.used&&e.fire(new t.l("data",{sourceDataType:"visibility",dataType:"source",sourceId:n}))}this.light.recalculate(e),this.sky.recalculate(e),this.projection.recalculate(e),this.z=e.zoom,i&&this.fire(new t.l("data",{dataType:"style"}))}_updateTilesForChangedImages(){const e=Object.keys(this._changedImages);if(e.length){for(const t in this.tileManagers)this.tileManagers[t].reloadTilesForDependencies(["icons","patterns"],e);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const e in this.tileManagers)this.tileManagers[e].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(e,t){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(e,!1),removedIds:t})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(e,i={}){var r;this._checkLoaded();const n=this.serialize();if(e=i.transformStyle?i.transformStyle(n,e):e,(null===(r=i.validate)||void 0===r||r)&&Ri(this,t.C(e)))return!1;(e=t.bV(e)).layers=t.bS(e.layers);const s=t.bW(n,e),o=this._getOperationsToPerform(s);if(o.unimplemented.length>0)throw new Error(`Unimplemented: ${o.unimplemented.join(", ")}.`);if(0===o.operations.length)return!1;for(const t of o.operations)t();return this.stylesheet=e,this._serializedLayers=null,!0}_getOperationsToPerform(e){const t=[],i=[];for(const r of e)switch(r.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":case"setRoll":continue;case"addLayer":t.push(()=>this.addLayer.apply(this,r.args));break;case"removeLayer":t.push(()=>this.removeLayer.apply(this,r.args));break;case"setPaintProperty":t.push(()=>this.setPaintProperty.apply(this,r.args));break;case"setLayoutProperty":t.push(()=>this.setLayoutProperty.apply(this,r.args));break;case"setFilter":t.push(()=>this.setFilter.apply(this,r.args));break;case"addSource":t.push(()=>this.addSource.apply(this,r.args));break;case"removeSource":t.push(()=>this.removeSource.apply(this,r.args));break;case"setLayerZoomRange":t.push(()=>this.setLayerZoomRange.apply(this,r.args));break;case"setLight":t.push(()=>this.setLight.apply(this,r.args));break;case"setGeoJSONSourceData":t.push(()=>this.setGeoJSONSourceData.apply(this,r.args));break;case"setGlyphs":t.push(()=>this.setGlyphs.apply(this,r.args));break;case"setSprite":t.push(()=>this.setSprite.apply(this,r.args));break;case"setTerrain":t.push(()=>this.map.setTerrain.apply(this,r.args));break;case"setSky":t.push(()=>this.setSky.apply(this,r.args));break;case"setProjection":this.setProjection.apply(this,r.args);break;case"setGlobalState":t.push(()=>this.setGlobalState.apply(this,r.args));break;case"setTransition":t.push(()=>{});break;default:i.push(r.command)}return{operations:t,unimplemented:i}}addImage(e,i){if(this.getImage(e))return this.fire(new t.k(new Error(`An image named "${e}" already exists.`)));this.imageManager.addImage(e,i),this._afterImageUpdated(e)}updateImage(e,t){this.imageManager.updateImage(e,t)}getImage(e){return this.imageManager.getImage(e)}removeImage(e){if(!this.getImage(e))return this.fire(new t.k(new Error(`An image named "${e}" does not exist.`)));this.imageManager.removeImage(e),this._afterImageUpdated(e)}_afterImageUpdated(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.l("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,i,r={}){if(this._checkLoaded(),void 0!==this.tileManagers[e])throw new Error(`Source "${e}" already exists.`);if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(i.type)>=0&&this._validate(t.C.source,`sources.${e}`,i,null,r))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const n=this.tileManagers[e]=new Fe(e,i,this.dispatcher);n.style=this,n.setEventedParent(this,()=>({isSourceLoaded:n.loaded(),source:n.serialize(),sourceId:e})),n.onAdd(this.map),this._changed=!0}removeSource(e){if(this._checkLoaded(),void 0===this.tileManagers[e])throw new Error("There is no source with this ID");for(const r in this._layers)if(this._layers[r].source===e)return this.fire(new t.k(new Error(`Source "${e}" cannot be removed while layer "${r}" is using it.`)));const i=this.tileManagers[e];delete this.tileManagers[e],delete this._updatedSources[e],i.fire(new t.l("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),i.setEventedParent(null),i.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(e,t){if(this._checkLoaded(),void 0===this.tileManagers[e])throw new Error(`There is no source with this ID=${e}`);const i=this.tileManagers[e].getSource();if("geojson"!==i.type)throw new Error(`geojsonSource.type is ${i.type}, which is !== 'geojson`);i.setData(t),this._changed=!0}getSource(e){return this.tileManagers[e]&&this.tileManagers[e].getSource()}addLayer(e,i,r={}){this._checkLoaded();const n=e.id;if(this.getLayer(n))return void this.fire(new t.k(new Error(`Layer "${n}" already exists on this map.`)));let s;if("custom"===e.type){if(Ri(this,t.bX(e)))return;s=t.bT(e,this._globalState)}else{if("source"in e&&"object"==typeof e.source&&(this.addSource(n,e.source),e=t.bV(e),e=t.e(e,{source:n})),this._validate(t.C.layer,`layers.${n}`,e,{arrayIndex:-1},r))return;s=t.bT(e,this._globalState),this._validateLayer(s),s.setEventedParent(this,{layer:{id:n}})}const o=i?this._order.indexOf(i):this._order.length;if(i&&-1===o)this.fire(new t.k(new Error(`Cannot add layer "${n}" before non-existing layer "${i}".`)));else{if(this._order.splice(o,0,n),this._layerOrderChanged=!0,this._layers[n]=s,this._removedLayers[n]&&s.source&&"custom"!==s.type){const e=this._removedLayers[n];delete this._removedLayers[n],e.type!==s.type?this._updatedSources[s.source]="clear":(this._updatedSources[s.source]="reload",this.tileManagers[s.source].pause())}this._updateLayer(s),s.onAdd&&s.onAdd(this.map)}}moveLayer(e,i){if(this._checkLoaded(),this._changed=!0,!this._layers[e])return void this.fire(new t.k(new Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));if(e===i)return;const r=this._order.indexOf(e);this._order.splice(r,1);const n=i?this._order.indexOf(i):this._order.length;i&&-1===n?this.fire(new t.k(new Error(`Cannot move layer "${e}" before non-existing layer "${i}".`))):(this._order.splice(n,0,e),this._layerOrderChanged=!0)}removeLayer(e){this._checkLoaded();const i=this._layers[e];if(!i)return void this.fire(new t.k(new Error(`Cannot remove non-existing layer "${e}".`)));i.setEventedParent(null);const r=this._order.indexOf(e);this._order.splice(r,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],this._serializedLayers&&delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map)}getLayer(e){return this._layers[e]}getLayersOrder(){return[...this._order]}hasLayer(e){return e in this._layers}setLayerZoomRange(e,i,r){this._checkLoaded();const n=this.getLayer(e);n?n.minzoom===i&&n.maxzoom===r||(null!=i&&(n.minzoom=i),null!=r&&(n.maxzoom=r),this._updateLayer(n)):this.fire(new t.k(new Error(`Cannot set the zoom range of non-existing layer "${e}".`)))}setFilter(e,i,r={}){this._checkLoaded();const n=this.getLayer(e);if(n){if(!t.bR(n.filter,i))return null==i?(n.setFilter(void 0),void this._updateLayer(n)):void(this._validate(t.C.filter,`layers.${n.id}.filter`,i,null,r)||(n.setFilter(t.bV(i)),this._updateLayer(n)))}else this.fire(new t.k(new Error(`Cannot filter non-existing layer "${e}".`)))}getFilter(e){return t.bV(this.getLayer(e).filter)}setLayoutProperty(e,i,r,n={}){this._checkLoaded();const s=this.getLayer(e);s?t.bR(s.getLayoutProperty(i),r)||(s.setLayoutProperty(i,r,n),this._updateLayer(s)):this.fire(new t.k(new Error(`Cannot style non-existing layer "${e}".`)))}getLayoutProperty(e,i){const r=this.getLayer(e);if(r)return r.getLayoutProperty(i);this.fire(new t.k(new Error(`Cannot get style of non-existing layer "${e}".`)))}setPaintProperty(e,i,r,n={}){this._checkLoaded();const s=this.getLayer(e);s?t.bR(s.getPaintProperty(i),r)||this._updatePaintProperty(s,i,r,n):this.fire(new t.k(new Error(`Cannot style non-existing layer "${e}".`)))}_updatePaintProperty(e,i,r,n={}){e.setPaintProperty(i,r,n)&&this._updateLayer(e),t.bU(e)&&"raster-fade-duration"===i&&this.tileManagers[e.source].setRasterFadeDuration(r),this._changed=!0,this._updatedPaintProps[e.id]=!0,this._serializedLayers=null}getPaintProperty(e,t){return this.getLayer(e).getPaintProperty(t)}setFeatureState(e,i){this._checkLoaded();const r=e.source,n=e.sourceLayer,s=this.tileManagers[r];if(void 0===s)return void this.fire(new t.k(new Error(`The source '${r}' does not exist in the map's style.`)));const o=s.getSource().type;"geojson"===o&&n?this.fire(new t.k(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==o||n?(void 0===e.id&&this.fire(new t.k(new Error("The feature id parameter must be provided."))),s.setFeatureState(n,e.id,i)):this.fire(new t.k(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(e,i){this._checkLoaded();const r=e.source,n=this.tileManagers[r];if(void 0===n)return void this.fire(new t.k(new Error(`The source '${r}' does not exist in the map's style.`)));const s=n.getSource().type,o="vector"===s?e.sourceLayer:void 0;"vector"!==s||o?i&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.k(new Error("A feature id is required to remove its specific state property."))):n.removeFeatureState(o,e.id,i):this.fire(new t.k(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(e){this._checkLoaded();const i=e.source,r=e.sourceLayer,n=this.tileManagers[i];if(void 0!==n)return"vector"!==n.getSource().type||r?(void 0===e.id&&this.fire(new t.k(new Error("The feature id parameter must be provided."))),n.getFeatureState(r,e.id)):void this.fire(new t.k(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new t.k(new Error(`The source '${i}' does not exist in the map's style.`)))}getTransition(){return t.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;const e=t.bY(this.tileManagers,e=>e.serialize()),i=this._serializeByIds(this._order,!0),r=this.map.getTerrain()||void 0,n=this.stylesheet;return t.bZ({version:n.version,name:n.name,metadata:n.metadata,light:n.light,sky:n.sky,center:n.center,zoom:n.zoom,bearing:n.bearing,pitch:n.pitch,sprite:n.sprite,glyphs:n.glyphs,transition:n.transition,projection:n.projection,sources:e,layers:i,terrain:r},e=>void 0!==e)}_updateLayer(e){this._updatedLayers[e.id]=!0,e.source&&!this._updatedSources[e.source]&&"raster"!==this.tileManagers[e.source].getSource().type&&(this._updatedSources[e.source]="reload",this.tileManagers[e.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(e){const t=e=>"fill-extrusion"===this._layers[e].type,i={},r=[];for(let s=this._order.length-1;s>=0;s--){const n=this._order[s];if(t(n)){i[n]=s;for(const t of e){const e=t[n];if(e)for(const t of e)r.push(t)}}}r.sort((e,t)=>t.intersectionZ-e.intersectionZ);const n=[];for(let s=this._order.length-1;s>=0;s--){const o=this._order[s];if(t(o))for(let e=r.length-1;e>=0;e--){const t=r[e].feature;if(i[t.layer.id]this.map.terrain.getElevation(e,t,i):void 0));return this.placement&&s.push(function(e,t,i,r,n,s,o){const a={},l=s.queryRenderedSymbols(r),c=[];for(const h of Object.keys(l).map(Number))c.push(o[h]);c.sort(q);for(const h of c){const i=h.featureIndex.lookupSymbolFeatures(l[h.bucketInstanceId],t,h.bucketIndex,h.sourceLayerIndex,{filterSpec:n.filter,globalState:n.globalState},n.layers,n.availableImages,e);for(const e in i){const t=a[e]=a[e]||[],r=i[e];r.sort((e,t)=>{const i=h.featureSortOrder;if(i){const r=i.indexOf(e.featureIndex);return i.indexOf(t.featureIndex)-r}return t.featureIndex-e.featureIndex});for(const e of r)t.push(e)}}return function(e,t,i){for(const r in e)for(const n of e[r])Z(n,i[t[r].source]);return e}(a,e,i)}(this._layers,o,this.tileManagers,e,l,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(s)}querySourceFeatures(e,i){(null==i?void 0:i.filter)&&this._validate(t.C.filter,"querySourceFeatures.filter",i.filter,null,i);const r=this.tileManagers[e];return r?function(e,t){const i=e.getRenderableIds().map(t=>e.getTileByID(t)),r=[],n={};for(let s=0;se.getTileByID(t)).sort((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1))}const i=this.crossTileSymbolIndex.addLayer(t,a[t.source],e.center.lng);s=s||i}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((n=n||this._layerOrderChanged||0===i)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(c(),e.zoom))&&(this.pauseablePlacement=new Mt(e,this.map.terrain,this._order,n,t,i,r,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,a),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(c()),o=!0),s&&this.pauseablePlacement.placement.setStale()),o||s)for(const l of this._order){const e=this._layers[l];"symbol"===e.type&&this.placement.updateLayerOpacities(e,a[e.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(c())}_releaseSymbolFadeTiles(){for(const e in this.tileManagers)this.tileManagers[e].releaseSymbolFadeTiles()}getImages(e,i){return t._(this,void 0,void 0,function*(){const e=yield this.imageManager.getImages(i.icons);this._updateTilesForChangedImages();const t=this.tileManagers[i.source];return t&&t.setDependencies(i.tileID.key,i.type,i.icons),e})}getGlyphs(e,i){return t._(this,void 0,void 0,function*(){const e=yield this.glyphManager.getGlyphs(i.stacks),t=this.tileManagers[i.source];return t&&t.setDependencies(i.tileID.key,i.type,[""]),e})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(e,i={}){this._checkLoaded(),e&&this._validate(t.C.glyphs,"glyphs",e,null,i)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=e,this.glyphManager.entries={},this.glyphManager.setURL(e))}getDashes(e,i){return t._(this,void 0,void 0,function*(){const e={};for(const[t,r]of Object.entries(i.dashes))e[t]=this.lineAtlas.getDash(r.dasharray,r.round);return e})}addSprite(e,i,r={},n){this._checkLoaded();const s=[{id:e,url:i}],o=[...x(this.stylesheet.sprite),...s];this._validate(t.C.sprite,"sprite",o,null,r)||(this.stylesheet.sprite=o,this._loadSprite(s,!0,n))}removeSprite(e){this._checkLoaded();const i=x(this.stylesheet.sprite);if(i.find(t=>t.id===e)){if(this._spritesImagesIds[e])for(const t of this._spritesImagesIds[e])this.imageManager.removeImage(t),this._changedImages[t]=!0;i.splice(i.findIndex(t=>t.id===e),1),this.stylesheet.sprite=i.length>0?i:void 0,delete this._spritesImagesIds[e],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.l("data",{dataType:"style"}))}else this.fire(new t.k(new Error(`Sprite "${e}" doesn't exists on this map.`)))}getSprite(){return x(this.stylesheet.sprite)}setSprite(e,i={},r){this._checkLoaded(),e&&this._validate(t.C.sprite,"sprite",e,null,i)||(this.stylesheet.sprite=e,e?this._loadSprite(e,!0,r):(this._unloadSprite(),r&&r(null)))}destroy(){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null);for(const e in this.tileManagers){const t=this.tileManagers[e];t.setEventedParent(null),t.onRemove(this.map)}this.tileManagers={},this.imageManager&&(this.imageManager.setEventedParent(null),this.imageManager.destroy(),this._availableImages=[],this._spritesImagesIds={}),this.glyphManager&&this.glyphManager.destroy();for(const e in this._layers){const t=this._layers[e];t.setEventedParent(null),t.onRemove&&t.onRemove(this.map)}this._setInitialValues(),this.setEventedParent(null),this.dispatcher.unregisterMessageHandler("GG"),this.dispatcher.unregisterMessageHandler("GI"),this.dispatcher.unregisterMessageHandler("GDA"),this.dispatcher.remove(!0),this._listeners={},this._oneTimeListeners={}}}var Bi=t.aU([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Oi{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(e,t,i,r,n,s,o,a,l){this.context=e;let c=this.boundPaintVertexBuffers.length!==r.length;for(let h=0;!c&&h({u_texture:0,u_ele_delta:e,u_fog_matrix:i,u_fog_color:r?r.properties.get("fog-color"):t.bp.white,u_fog_ground_blend:r?r.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:s?0:r?r.calculateFogBlendOpacity(n):0,u_horizon_color:r?r.properties.get("horizon-color"):t.bp.white,u_horizon_fog_blend:r?r.properties.get("horizon-fog-blend"):1,u_is_globe_mode:s?1:0}),ji={mainMatrix:"u_projection_matrix",tileMercatorCoords:"u_projection_tile_mercator_coords",clippingPlane:"u_projection_clipping_plane",projectionTransition:"u_projection_transition",fallbackMatrix:"u_projection_fallback_matrix"};function Ni(e){const t=[];for(let i=0;i({u_depth:new t.b_(e,i.u_depth),u_terrain:new t.b_(e,i.u_terrain),u_terrain_dim:new t.bq(e,i.u_terrain_dim),u_terrain_matrix:new t.c0(e,i.u_terrain_matrix),u_terrain_unpack:new t.c1(e,i.u_terrain_unpack),u_terrain_exaggeration:new t.bq(e,i.u_terrain_exaggeration)}))(e,P),this.projectionUniforms=((e,i)=>({u_projection_matrix:new t.c0(e,i.u_projection_matrix),u_projection_tile_mercator_coords:new t.c1(e,i.u_projection_tile_mercator_coords),u_projection_clipping_plane:new t.c1(e,i.u_projection_clipping_plane),u_projection_transition:new t.bq(e,i.u_projection_transition),u_projection_fallback_matrix:new t.c0(e,i.u_projection_fallback_matrix)}))(e,P),this.binderUniforms=r?r.getUniforms(e,P):[]}draw(e,t,i,r,n,s,o,a,l,c,h,u,d,p,f,m,_,g,y){const x=e.gl;if(this.failedToCreate)return;if(e.program.set(this.program),e.setDepthMode(i),e.setStencilMode(r),e.setColorMode(n),e.setCullFace(s),a){e.activeTexture.set(x.TEXTURE2),x.bindTexture(x.TEXTURE_2D,a.depthTexture),e.activeTexture.set(x.TEXTURE3),x.bindTexture(x.TEXTURE_2D,a.texture);for(const e in this.terrainUniforms)this.terrainUniforms[e].set(a[e])}if(l)for(const b in l)this.projectionUniforms[ji[b]].set(l[b]);if(o)for(const b in this.fixedUniforms)this.fixedUniforms[b].set(o[b]);m&&m.setUniforms(e,this.binderUniforms,p,{zoom:f});let v=0;switch(t){case x.LINES:v=2;break;case x.TRIANGLES:v=3;break;case x.LINE_STRIP:v=1}for(const b of d.get()){const i=b.vaos||(b.vaos={});(i[c]||(i[c]=new Oi)).bind(e,this,h,m?m.getPaintVertexBuffers():[],u,b.vertexOffset,_,g,y),x.drawElements(t,b.primitiveLength*v,x.UNSIGNED_SHORT,b.primitiveOffset*v*2)}}}function Gi(e,i,r){const n=1/t.aN(r,1,i.transform.tileZoom),s=Math.pow(2,r.tileID.overscaledZ),o=r.tileSize*Math.pow(2,i.transform.tileZoom)/s,a=o*(r.tileID.canonical.x+r.tileID.wrap*s),l=o*r.tileID.canonical.y;return{u_image:0,u_texsize:r.imageAtlasTexture.size,u_scale:[n,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[a>>16,l>>16],u_pixel_coord_lower:[65535&a,65535&l]}}const qi=(e,i,r,n)=>{const s=e.style.light,o=s.properties.get("position"),a=[o.x,o.y,o.z],l=t.c4();"viewport"===s.properties.get("anchor")&&t.c5(l,e.transform.bearingInRadians),t.c6(a,a,l);const c=e.transform.transformLightDirection(a),h=s.properties.get("color");return{u_lightpos:a,u_lightpos_globe:c,u_lightintensity:s.properties.get("intensity"),u_lightcolor:[h.r,h.g,h.b],u_vertical_gradient:+i,u_opacity:r,u_fill_translate:n}},Zi=(e,i,r,n,s,o,a)=>t.e(qi(e,i,r,n),Gi(o,e,a),{u_height_factor:-Math.pow(2,s.overscaledZ)/a.tileSize/8}),$i=(e,i,r,n)=>t.e(Gi(i,e,r),{u_fill_translate:n}),Wi=(e,t)=>({u_world:e,u_fill_translate:t}),Hi=(e,i,r,n,s)=>t.e($i(e,i,r,s),{u_world:n}),Xi=(e,i,r,n,s)=>{const o=e.transform;let a,l,c=0;if("map"===r.paint.get("circle-pitch-alignment")){const e=t.aN(i,1,o.zoom);a=!0,l=[e,e],c=e/(t.a5*Math.pow(2,i.tileID.overscaledZ))*2*Math.PI*s}else a=!1,l=o.pixelsToGLUnits;return{u_camera_to_center_distance:o.cameraToCenterDistance,u_scale_with_map:+("map"===r.paint.get("circle-pitch-scale")),u_pitch_with_map:+a,u_device_pixel_ratio:e.pixelRatio,u_extrude_scale:l,u_globe_extrude_scale:c,u_translate:n}},Yi=e=>({u_pixel_extrude_scale:[1/e.width,1/e.height]}),Ki=e=>({u_viewport_size:[e.width,e.height]}),Ji=(e,t=1)=>({u_color:e,u_overlay:0,u_overlay_scale:t}),Qi=(e,i,r,n)=>{const s=t.aN(e,1,i)/(t.a5*Math.pow(2,e.tileID.overscaledZ))*2*Math.PI*n;return{u_extrude_scale:t.aN(e,1,i),u_intensity:r,u_globe_extrude_scale:s}},er=(e,i,r,n)=>{const s=t.N();t.c7(s,0,e.width,e.height,0,0,1);const o=e.context.gl;return{u_matrix:s,u_world:[o.drawingBufferWidth,o.drawingBufferHeight],u_image:r,u_color_ramp:n,u_opacity:i.paint.get("heatmap-opacity")}},tr=(e,t,i)=>{const r=i.paint.get("hillshade-accent-color");let n;switch(i.paint.get("hillshade-method")){case"basic":n=4;break;case"combined":n=1;break;case"igor":n=2;break;case"multidirectional":n=3;break;default:n=0}const s=i.getIlluminationProperties();for(let o=0;o{const r=i.stride,n=t.N();return t.c7(n,0,t.a5,-t.a5,0,0,1),t.O(n,n,[0,-t.a5,0]),{u_matrix:n,u_image:1,u_dimension:[r,r],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}};function rr(e,i){const r=Math.pow(2,i.canonical.z),n=i.canonical.y;return[new t.a9(0,n/r).toLngLat().lat,new t.a9(0,(n+1)/r).toLngLat().lat]}const nr=(e,t,i=0)=>({u_image:0,u_unpack:t.getUnpackVector(),u_dimension:[t.stride,t.stride],u_elevation_stops:1,u_color_stops:4,u_color_ramp_size:i,u_opacity:e.paint.get("color-relief-opacity")}),sr=(e,i,r,n)=>{const s=e.transform;return{u_translation:ur(e,i,r),u_ratio:n/t.aN(i,1,s.zoom),u_device_pixel_ratio:e.pixelRatio,u_units_to_pixels:[1/s.pixelsToGLUnits[0],1/s.pixelsToGLUnits[1]]}},or=(e,i,r,n,s)=>t.e(sr(e,i,r,n),{u_image:0,u_image_height:s}),ar=(e,i,r,n,s)=>{const o=e.transform,a=hr(i,o);return{u_translation:ur(e,i,r),u_texsize:i.imageAtlasTexture.size,u_ratio:n/t.aN(i,1,o.zoom),u_device_pixel_ratio:e.pixelRatio,u_image:0,u_scale:[a,s.fromScale,s.toScale],u_fade:s.t,u_units_to_pixels:[1/o.pixelsToGLUnits[0],1/o.pixelsToGLUnits[1]]}},lr=(e,i,r,n,s)=>{const o=hr(i,e.transform);return t.e(sr(e,i,r,n),{u_tileratio:o,u_crossfade_from:s.fromScale,u_crossfade_to:s.toScale,u_image:0,u_mix:s.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})},cr=(e,i,r,n,s,o)=>{const a=hr(i,e.transform);return t.e(sr(e,i,r,n),{u_image:0,u_image_height:o,u_tileratio:a,u_crossfade_from:s.fromScale,u_crossfade_to:s.toScale,u_image_dash:1,u_mix:s.t,u_lineatlas_width:e.lineAtlas.width,u_lineatlas_height:e.lineAtlas.height})};function hr(e,i){return 1/t.aN(e,1,i.tileZoom)}function ur(e,i,r){return t.aO(e.transform,i,r.paint.get("line-translate"),r.paint.get("line-translate-anchor"))}const dr=(e,t,i,r,n)=>{return{u_tl_parent:e,u_scale_parent:t,u_buffer_scale:1,u_fade_t:i.mix,u_opacity:i.opacity*r.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:r.paint.get("raster-brightness-min"),u_brightness_high:r.paint.get("raster-brightness-max"),u_saturation_factor:(o=r.paint.get("raster-saturation"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(s=r.paint.get("raster-contrast"),s>0?1/(1-s):1+s),u_spin_weights:pr(r.paint.get("raster-hue-rotate")),u_coords_top:[n[0].x,n[0].y,n[1].x,n[1].y],u_coords_bottom:[n[3].x,n[3].y,n[2].x,n[2].y]};var s,o};function pr(e){e*=Math.PI/180;const t=Math.sin(e),i=Math.cos(e);return[(2*i+1)/3,(-Math.sqrt(3)*t-i+1)/3,(Math.sqrt(3)*t-i+1)/3]}const fr=(e,t,i,r,n,s,o,a,l,c,h,u,d)=>{const p=o.transform;return{u_is_size_zoom_constant:+("constant"===e||"source"===e),u_is_size_feature_constant:+("constant"===e||"camera"===e),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:p.cameraToCenterDistance,u_pitch:p.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:p.width/p.height,u_fade_change:o.options.fadeDuration?o.symbolFadeChange:1,u_label_plane_matrix:a,u_coord_matrix:l,u_is_text:+h,u_pitch_with_map:+r,u_is_along_line:n,u_is_variable_anchor:s,u_texsize:u,u_texture:0,u_translation:c,u_pitched_scale:d}},mr=(e,i,r,n,s,o,a,l,c,h,u,d,p,f)=>{const m=a.transform;return t.e(fr(e,i,r,n,s,o,a,l,c,h,u,d,f),{u_gamma_scale:n?Math.cos(m.pitch*Math.PI/180)*m.cameraToCenterDistance:1,u_device_pixel_ratio:a.pixelRatio,u_is_halo:1})},_r=(e,i,r,n,s,o,a,l,c,h,u,d,p)=>t.e(mr(e,i,r,n,s,o,a,l,c,h,!0,u,0,p),{u_texsize_icon:d,u_texture_icon:1}),gr=(e,t)=>({u_opacity:e,u_color:t}),yr=(e,i,r,n,s)=>t.e(function(e,i,r,n){const s=r.imageManager.getPattern(e.from.toString()),o=r.imageManager.getPattern(e.to.toString()),{width:a,height:l}=r.imageManager.getPixelSize(),c=Math.pow(2,n.tileID.overscaledZ),h=n.tileSize*Math.pow(2,r.transform.tileZoom)/c,u=h*(n.tileID.canonical.x+n.tileID.wrap*c),d=h*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:s.tl,u_pattern_br_a:s.br,u_pattern_tl_b:o.tl,u_pattern_br_b:o.br,u_texsize:[a,l],u_mix:i.t,u_pattern_size_a:s.displaySize,u_pattern_size_b:o.displaySize,u_scale_a:i.fromScale,u_scale_b:i.toScale,u_tile_units_to_pixels:1/t.aN(n,1,r.transform.tileZoom),u_pixel_coord_upper:[u>>16,d>>16],u_pixel_coord_lower:[65535&u,65535&d]}}(r,s,i,n),{u_opacity:e}),xr=(e,t)=>{},vr={fillExtrusion:(e,i)=>({u_lightpos:new t.c2(e,i.u_lightpos),u_lightpos_globe:new t.c2(e,i.u_lightpos_globe),u_lightintensity:new t.bq(e,i.u_lightintensity),u_lightcolor:new t.c2(e,i.u_lightcolor),u_vertical_gradient:new t.bq(e,i.u_vertical_gradient),u_opacity:new t.bq(e,i.u_opacity),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillExtrusionPattern:(e,i)=>({u_lightpos:new t.c2(e,i.u_lightpos),u_lightpos_globe:new t.c2(e,i.u_lightpos_globe),u_lightintensity:new t.bq(e,i.u_lightintensity),u_lightcolor:new t.c2(e,i.u_lightcolor),u_vertical_gradient:new t.bq(e,i.u_vertical_gradient),u_height_factor:new t.bq(e,i.u_height_factor),u_opacity:new t.bq(e,i.u_opacity),u_fill_translate:new t.c3(e,i.u_fill_translate),u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bq(e,i.u_fade)}),fill:(e,i)=>({u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillPattern:(e,i)=>({u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bq(e,i.u_fade),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillOutline:(e,i)=>({u_world:new t.c3(e,i.u_world),u_fill_translate:new t.c3(e,i.u_fill_translate)}),fillOutlinePattern:(e,i)=>({u_world:new t.c3(e,i.u_world),u_image:new t.b_(e,i.u_image),u_texsize:new t.c3(e,i.u_texsize),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bq(e,i.u_fade),u_fill_translate:new t.c3(e,i.u_fill_translate)}),circle:(e,i)=>({u_camera_to_center_distance:new t.bq(e,i.u_camera_to_center_distance),u_scale_with_map:new t.b_(e,i.u_scale_with_map),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_extrude_scale:new t.c3(e,i.u_extrude_scale),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_globe_extrude_scale:new t.bq(e,i.u_globe_extrude_scale),u_translate:new t.c3(e,i.u_translate)}),collisionBox:(e,i)=>({u_pixel_extrude_scale:new t.c3(e,i.u_pixel_extrude_scale)}),collisionCircle:(e,i)=>({u_viewport_size:new t.c3(e,i.u_viewport_size)}),debug:(e,i)=>({u_color:new t.b$(e,i.u_color),u_overlay:new t.b_(e,i.u_overlay),u_overlay_scale:new t.bq(e,i.u_overlay_scale)}),depth:xr,clippingMask:xr,heatmap:(e,i)=>({u_extrude_scale:new t.bq(e,i.u_extrude_scale),u_intensity:new t.bq(e,i.u_intensity),u_globe_extrude_scale:new t.bq(e,i.u_globe_extrude_scale)}),heatmapTexture:(e,i)=>({u_matrix:new t.c0(e,i.u_matrix),u_world:new t.c3(e,i.u_world),u_image:new t.b_(e,i.u_image),u_color_ramp:new t.b_(e,i.u_color_ramp),u_opacity:new t.bq(e,i.u_opacity)}),hillshade:(e,i)=>({u_image:new t.b_(e,i.u_image),u_latrange:new t.c3(e,i.u_latrange),u_exaggeration:new t.bq(e,i.u_exaggeration),u_altitudes:new t.c9(e,i.u_altitudes),u_azimuths:new t.c9(e,i.u_azimuths),u_accent:new t.b$(e,i.u_accent),u_method:new t.b_(e,i.u_method),u_shadows:new t.c8(e,i.u_shadows),u_highlights:new t.c8(e,i.u_highlights)}),hillshadePrepare:(e,i)=>({u_matrix:new t.c0(e,i.u_matrix),u_image:new t.b_(e,i.u_image),u_dimension:new t.c3(e,i.u_dimension),u_zoom:new t.bq(e,i.u_zoom),u_unpack:new t.c1(e,i.u_unpack)}),colorRelief:(e,i)=>({u_image:new t.b_(e,i.u_image),u_unpack:new t.c1(e,i.u_unpack),u_dimension:new t.c3(e,i.u_dimension),u_elevation_stops:new t.b_(e,i.u_elevation_stops),u_color_stops:new t.b_(e,i.u_color_stops),u_color_ramp_size:new t.b_(e,i.u_color_ramp_size),u_opacity:new t.bq(e,i.u_opacity)}),line:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels)}),lineGradient:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_image_height:new t.bq(e,i.u_image_height)}),linePattern:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_texsize:new t.c3(e,i.u_texsize),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_image:new t.b_(e,i.u_image),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_scale:new t.c2(e,i.u_scale),u_fade:new t.bq(e,i.u_fade)}),lineSDF:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_mix:new t.bq(e,i.u_mix),u_tileratio:new t.bq(e,i.u_tileratio),u_crossfade_from:new t.bq(e,i.u_crossfade_from),u_crossfade_to:new t.bq(e,i.u_crossfade_to),u_lineatlas_width:new t.bq(e,i.u_lineatlas_width),u_lineatlas_height:new t.bq(e,i.u_lineatlas_height)}),lineGradientSDF:(e,i)=>({u_translation:new t.c3(e,i.u_translation),u_ratio:new t.bq(e,i.u_ratio),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.c3(e,i.u_units_to_pixels),u_image:new t.b_(e,i.u_image),u_image_height:new t.bq(e,i.u_image_height),u_tileratio:new t.bq(e,i.u_tileratio),u_crossfade_from:new t.bq(e,i.u_crossfade_from),u_crossfade_to:new t.bq(e,i.u_crossfade_to),u_image_dash:new t.b_(e,i.u_image_dash),u_mix:new t.bq(e,i.u_mix),u_lineatlas_width:new t.bq(e,i.u_lineatlas_width),u_lineatlas_height:new t.bq(e,i.u_lineatlas_height)}),raster:(e,i)=>({u_tl_parent:new t.c3(e,i.u_tl_parent),u_scale_parent:new t.bq(e,i.u_scale_parent),u_buffer_scale:new t.bq(e,i.u_buffer_scale),u_fade_t:new t.bq(e,i.u_fade_t),u_opacity:new t.bq(e,i.u_opacity),u_image0:new t.b_(e,i.u_image0),u_image1:new t.b_(e,i.u_image1),u_brightness_low:new t.bq(e,i.u_brightness_low),u_brightness_high:new t.bq(e,i.u_brightness_high),u_saturation_factor:new t.bq(e,i.u_saturation_factor),u_contrast_factor:new t.bq(e,i.u_contrast_factor),u_spin_weights:new t.c2(e,i.u_spin_weights),u_coords_top:new t.c1(e,i.u_coords_top),u_coords_bottom:new t.c1(e,i.u_coords_bottom)}),symbolIcon:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bq(e,i.u_size_t),u_size:new t.bq(e,i.u_size),u_camera_to_center_distance:new t.bq(e,i.u_camera_to_center_distance),u_pitch:new t.bq(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bq(e,i.u_aspect_ratio),u_fade_change:new t.bq(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texture:new t.b_(e,i.u_texture),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bq(e,i.u_pitched_scale)}),symbolSDF:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bq(e,i.u_size_t),u_size:new t.bq(e,i.u_size),u_camera_to_center_distance:new t.bq(e,i.u_camera_to_center_distance),u_pitch:new t.bq(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bq(e,i.u_aspect_ratio),u_fade_change:new t.bq(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texture:new t.b_(e,i.u_texture),u_gamma_scale:new t.bq(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_is_halo:new t.b_(e,i.u_is_halo),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bq(e,i.u_pitched_scale)}),symbolTextAndIcon:(e,i)=>({u_is_size_zoom_constant:new t.b_(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.b_(e,i.u_is_size_feature_constant),u_size_t:new t.bq(e,i.u_size_t),u_size:new t.bq(e,i.u_size),u_camera_to_center_distance:new t.bq(e,i.u_camera_to_center_distance),u_pitch:new t.bq(e,i.u_pitch),u_rotate_symbol:new t.b_(e,i.u_rotate_symbol),u_aspect_ratio:new t.bq(e,i.u_aspect_ratio),u_fade_change:new t.bq(e,i.u_fade_change),u_label_plane_matrix:new t.c0(e,i.u_label_plane_matrix),u_coord_matrix:new t.c0(e,i.u_coord_matrix),u_is_text:new t.b_(e,i.u_is_text),u_pitch_with_map:new t.b_(e,i.u_pitch_with_map),u_is_along_line:new t.b_(e,i.u_is_along_line),u_is_variable_anchor:new t.b_(e,i.u_is_variable_anchor),u_texsize:new t.c3(e,i.u_texsize),u_texsize_icon:new t.c3(e,i.u_texsize_icon),u_texture:new t.b_(e,i.u_texture),u_texture_icon:new t.b_(e,i.u_texture_icon),u_gamma_scale:new t.bq(e,i.u_gamma_scale),u_device_pixel_ratio:new t.bq(e,i.u_device_pixel_ratio),u_is_halo:new t.b_(e,i.u_is_halo),u_translation:new t.c3(e,i.u_translation),u_pitched_scale:new t.bq(e,i.u_pitched_scale)}),background:(e,i)=>({u_opacity:new t.bq(e,i.u_opacity),u_color:new t.b$(e,i.u_color)}),backgroundPattern:(e,i)=>({u_opacity:new t.bq(e,i.u_opacity),u_image:new t.b_(e,i.u_image),u_pattern_tl_a:new t.c3(e,i.u_pattern_tl_a),u_pattern_br_a:new t.c3(e,i.u_pattern_br_a),u_pattern_tl_b:new t.c3(e,i.u_pattern_tl_b),u_pattern_br_b:new t.c3(e,i.u_pattern_br_b),u_texsize:new t.c3(e,i.u_texsize),u_mix:new t.bq(e,i.u_mix),u_pattern_size_a:new t.c3(e,i.u_pattern_size_a),u_pattern_size_b:new t.c3(e,i.u_pattern_size_b),u_scale_a:new t.bq(e,i.u_scale_a),u_scale_b:new t.bq(e,i.u_scale_b),u_pixel_coord_upper:new t.c3(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.c3(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.bq(e,i.u_tile_units_to_pixels)}),terrain:(e,i)=>({u_texture:new t.b_(e,i.u_texture),u_ele_delta:new t.bq(e,i.u_ele_delta),u_fog_matrix:new t.c0(e,i.u_fog_matrix),u_fog_color:new t.b$(e,i.u_fog_color),u_fog_ground_blend:new t.bq(e,i.u_fog_ground_blend),u_fog_ground_blend_opacity:new t.bq(e,i.u_fog_ground_blend_opacity),u_horizon_color:new t.b$(e,i.u_horizon_color),u_horizon_fog_blend:new t.bq(e,i.u_horizon_fog_blend),u_is_globe_mode:new t.bq(e,i.u_is_globe_mode)}),terrainDepth:(e,i)=>({u_ele_delta:new t.bq(e,i.u_ele_delta)}),terrainCoords:(e,i)=>({u_texture:new t.b_(e,i.u_texture),u_terrain_coords_id:new t.bq(e,i.u_terrain_coords_id),u_ele_delta:new t.bq(e,i.u_ele_delta)}),projectionErrorMeasurement:(e,i)=>({u_input:new t.bq(e,i.u_input),u_output_expected:new t.bq(e,i.u_output_expected)}),atmosphere:(e,i)=>({u_sun_pos:new t.c2(e,i.u_sun_pos),u_atmosphere_blend:new t.bq(e,i.u_atmosphere_blend),u_globe_position:new t.c2(e,i.u_globe_position),u_globe_radius:new t.bq(e,i.u_globe_radius),u_inv_proj_matrix:new t.c0(e,i.u_inv_proj_matrix)}),sky:(e,i)=>({u_sky_color:new t.b$(e,i.u_sky_color),u_horizon_color:new t.b$(e,i.u_horizon_color),u_horizon:new t.c3(e,i.u_horizon),u_horizon_normal:new t.c3(e,i.u_horizon_normal),u_sky_horizon_blend:new t.bq(e,i.u_sky_horizon_blend),u_sky_blend:new t.bq(e,i.u_sky_blend)})};class br{constructor(e,t,i){this.context=e;const r=e.gl;this.buffer=r.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),r.bufferData(r.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(e){const t=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const wr={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Tr{constructor(e,t,i,r){this.length=t.length,this.attributes=i,this.itemSize=t.bytesPerElement,this.dynamicDraw=r,this.context=e;const n=e.gl;this.buffer=n.createBuffer(),e.bindVertexBuffer.set(this.buffer),n.bufferData(n.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?n.DYNAMIC_DRAW:n.STATIC_DRAW),this.dynamicDraw||delete t.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(e){if(e.length!==this.length)throw new Error(`Length of new data is ${e.length}, which doesn't match current length of ${this.length}`);const t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer)}enableAttributes(e,t){for(let i=0;i0&&(h.push({circleArray:_,circleOffset:d,coord:p}),u+=_.length/4,d=u),m&&c.draw(o,l.LINES,ii.disabled,ni.disabled,e.colorModeForRenderPass(),ti.disabled,Yi(e.transform),e.style.map.terrain&&e.style.map.terrain.getTerrainData(p),a.getProjectionData({overscaledTileID:p,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),r.id,m.layoutVertexBuffer,m.indexBuffer,m.segments,null,e.transform.zoom,null,null,m.collisionVertexBuffer)}if(!s||!h.length)return;const p=e.useProgram("collisionCircle"),f=new t.ca;f.resize(4*u),f._trim();let m=0;for(const t of h)for(let e=0;e=0&&(_[m.associatedIconIndex]={shiftedAnchor:E,angle:C})}else st(m.numGlyphs,f)}if(c){m.clear();const i=e.icon.placedSymbolArray;for(let e=0;ee.style.map.terrain.getElevation(M,t,i):null,i="map"===r.layout.get("text-rotation-alignment");$e(l,e,s,O,V,y,h,i,M.toUnwrapped(),_.width,_.height,N,t)}const Z=s&&S||q,$=x||Z?dn:y?O:e.transform.clipSpaceToPixelsMatrix,W=d&&0!==r.paint.get(s?"text-halo-width":"icon-halo-width").constantOr(1);let H;H=d?l.iconsInText?_r(f.kind,C,v,y,x,Z,e,$,j,N,D,L,I):mr(f.kind,C,v,y,x,Z,e,$,j,N,s,D,0,I):fr(f.kind,C,v,y,x,Z,e,$,j,N,s,D,I);const X={program:E,buffers:c,uniformValues:H,projectionData:U,atlasTexture:z,atlasTextureIcon:F,atlasInterpolation:k,atlasInterpolationIcon:R,isSDF:d,hasHalo:W};if(b&&l.canOverlap){w=!0;const e=c.segments.get();for(const i of e)P.push({segments:new t.aX([i]),sortKey:i.sortKey,state:X,terrainData:A})}else P.push({segments:c.segments,sortKey:0,state:X,terrainData:A})}w&&P.sort((e,t)=>e.sortKey-t.sortKey);for(const t of P){const i=t.state;if(f.activeTexture.set(m.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,m.CLAMP_TO_EDGE),i.atlasTextureIcon&&(f.activeTexture.set(m.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,m.CLAMP_TO_EDGE)),i.isSDF){const n=i.uniformValues;i.hasHalo&&(n.u_is_halo=1,yn(i.buffers,t.segments,r,e,i.program,T,u,d,n,i.projectionData,t.terrainData)),n.u_is_halo=0}yn(i.buffers,t.segments,r,e,i.program,T,u,d,i.uniformValues,i.projectionData,t.terrainData)}}function yn(e,t,i,r,n,s,o,a,l,c,h){const u=r.context;n.draw(u,u.gl.TRIANGLES,s,o,a,ti.backCCW,l,h,c,i.id,e.layoutVertexBuffer,e.indexBuffer,t,i.paint,r.transform.zoom,e.programConfigurations.get(i.id),e.dynamicLayoutVertexBuffer,e.opacityVertexBuffer)}function xn(e,i,r,n,s){const o=e.context,a=o.gl,l=ni.disabled,c=new Qt([a.ONE,a.ONE],t.bp.transparent,[!0,!0,!0,!0]),h=i.getBucket(r);if(!h)return;const u=n.key;let d=r.heatmapFbos.get(u);d||(d=bn(o,i.tileSize,i.tileSize),r.heatmapFbos.set(u,d)),o.bindFramebuffer.set(d.framebuffer),o.viewport.set([0,0,i.tileSize,i.tileSize]),o.clear({color:t.bp.transparent});const p=h.programConfigurations.get(r.id),f=e.useProgram("heatmap",p,!s),m=e.transform.getProjectionData({overscaledTileID:i.tileID,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),_=e.style.map.terrain.getTerrainData(n);f.draw(o,a.TRIANGLES,ii.disabled,l,c,ti.disabled,Qi(i,e.transform.zoom,r.paint.get("heatmap-intensity"),1),_,m,r.id,h.layoutVertexBuffer,h.indexBuffer,h.segments,r.paint,e.transform.zoom,p)}function vn(e,t,i,r,n){const s=e.context,o=s.gl,a=e.transform;s.setColorMode(e.colorModeForRenderPass());const l=wn(s,t),c=i.key,h=t.heatmapFbos.get(c);if(!h)return;s.activeTexture.set(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,h.colorAttachment.get()),s.activeTexture.set(o.TEXTURE1),l.bind(o.LINEAR,o.CLAMP_TO_EDGE);const u=a.getProjectionData({overscaledTileID:i,applyTerrainMatrix:n,applyGlobeMatrix:!r});e.useProgram("heatmapTexture").draw(s,o.TRIANGLES,ii.disabled,ni.disabled,e.colorModeForRenderPass(),ti.disabled,er(e,t,0,1),null,u,t.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments,t.paint,a.zoom),h.destroy(),t.heatmapFbos.delete(c)}function bn(e,t,i){var r,n;const s=e.gl,o=s.createTexture();s.bindTexture(s.TEXTURE_2D,o),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR);const a=null!==(r=e.HALF_FLOAT)&&void 0!==r?r:s.UNSIGNED_BYTE,l=null!==(n=e.RGBA16F)&&void 0!==n?n:s.RGBA;s.texImage2D(s.TEXTURE_2D,0,l,t,i,0,s.RGBA,a,null);const c=e.createFramebuffer(t,i,!1,!1);return c.colorAttachment.set(o),c}function wn(e,i){return i.colorRampTexture||(i.colorRampTexture=new t.T(e,i.colorRamp,e.gl.RGBA)),i.colorRampTexture}function Tn(e,i,r,n,s,o,a,l){let c=256;if(s.stepInterpolant){const n=i.getSource().maxzoom,s=a.canonical.z===n?Math.ceil(1<20&&d.texParameterf(d.TEXTURE_2D,u.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,u.extTextureFilterAnisotropicMax);const C=e.style.map.terrain&&e.style.map.terrain.getTerrainData(w),A=f.getProjectionData({overscaledTileID:w,aligned:g,applyGlobeMatrix:!c,applyTerrainMatrix:!0}),D=dr(M,I,E.fadeMix,i,a),z=m.getMeshFromTileID(u,w.canonical,s,o,"raster");p.draw(u,d.TRIANGLES,r,n?n[w.overscaledZ]:ni.disabled,_,l?ti.frontCCW:ti.backCCW,D,C,A,i.id,z.vertexBuffer,z.indexBuffer,z.segments)}}function Ln(e,i,r,n){const s={parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:{tileOpacity:1,parentTileOpacity:1,fadeMix:{opacity:1,mix:0}}};if(0===r||n)return s;if(e.fadingParentID){const n=i.getLoadedTile(e.fadingParentID);if(!n)return s;const o=Math.pow(2,n.tileID.overscaledZ-e.tileID.overscaledZ);return{parentTile:n,parentScaleBy:o,parentTopLeft:[e.tileID.canonical.x*o%1,e.tileID.canonical.y*o%1],fadeValues:function(e,i,r){const n=c(),s=(n-i.timeAdded)/r,o=e.fadingDirection===ue.Incoming,a=t.an((n-e.timeAdded)/r,0,1),l=t.an(1-s,0,1),h=o?a:l;return{tileOpacity:h,parentTileOpacity:o?l:a,fadeMix:{opacity:1,mix:1-h}}}(e,n,r)}}return e.selfFading?{parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:function(e,i){const r=(c()-e.timeAdded)/i,n=t.an(r,0,1);return{tileOpacity:n,fadeMix:{opacity:n,mix:0}}}(e,r)}:s}const Fn=new t.bp(1,0,0,1),Bn=new t.bp(0,1,0,1),On=new t.bp(0,0,1,1),Vn=new t.bp(1,0,1,1),jn=new t.bp(0,1,1,1);function Nn(e,t,i,r){Gn(e,0,t+i/2,e.transform.width,i,r)}function Un(e,t,i,r){Gn(e,t-i/2,0,i,e.transform.height,r)}function Gn(e,t,i,r,n,s){const o=e.context,a=o.gl;a.enable(a.SCISSOR_TEST),a.scissor(t*e.pixelRatio,i*e.pixelRatio,r*e.pixelRatio,n*e.pixelRatio),o.clear({color:s}),a.disable(a.SCISSOR_TEST)}function qn(e,i,r){const n=e.context,s=n.gl,o=e.useProgram("debug"),a=ii.disabled,l=ni.disabled,c=e.colorModeForRenderPass(),h="$debug",u=e.style.map.terrain&&e.style.map.terrain.getTerrainData(r);n.activeTexture.set(s.TEXTURE0);const d=i.getTileByID(r.key).latestRawTileData,p=Math.floor((d&&d.byteLength||0)/1024),f=i.getTile(r).tileSize,m=512/Math.min(f,512)*(r.overscaledZ/e.transform.zoom)*.5;let _=r.canonical.toString();r.overscaledZ!==r.canonical.z&&(_+=` => ${r.overscaledZ}`),function(e,t){e.initDebugOverlayCanvas();const i=e.debugOverlayCanvas,r=e.context.gl,n=e.debugOverlayCanvas.getContext("2d");n.clearRect(0,0,i.width,i.height),n.shadowColor="white",n.shadowBlur=2,n.lineWidth=1.5,n.strokeStyle="white",n.textBaseline="top",n.font="bold 36px Open Sans, sans-serif",n.fillText(t,5,5),n.strokeText(t,5,5),e.debugOverlayTexture.update(i),e.debugOverlayTexture.bind(r.LINEAR,r.CLAMP_TO_EDGE)}(e,`${_} ${p}kB`);const g=e.transform.getProjectionData({overscaledTileID:r,applyGlobeMatrix:!0,applyTerrainMatrix:!0});o.draw(n,s.TRIANGLES,a,l,Qt.alphaBlended,ti.disabled,Ji(t.bp.transparent,m),null,g,h,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments),o.draw(n,s.LINE_STRIP,a,l,c,ti.disabled,Ji(t.bp.red),u,g,h,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments)}function Zn(e,t,i,r){const{isRenderingGlobe:n}=r,s=e.context,o=s.gl,a=e.transform,l=e.colorModeForRenderPass(),c=e.getDepthModeFor3D(),h=e.useProgram("terrain");s.bindFramebuffer.set(null),s.viewport.set([0,0,e.width,e.height]);for(const u of i){const i=t.getTerrainMesh(u.tileID),r=e.renderToTexture.getTexture(u),d=t.getTerrainData(u.tileID);s.activeTexture.set(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,r.texture);const p=t.getMeshFrameDelta(a.zoom),f=a.calculateFogMatrix(u.tileID.toUnwrapped()),m=Vi(p,f,e.style.sky,a.pitch,n),_=a.getProjectionData({overscaledTileID:u.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});h.draw(s,o.TRIANGLES,c,ni.disabled,l,ti.backCCW,m,d,_,"terrain",i.vertexBuffer,i.indexBuffer,i.segments)}}function $n(e,i){if(!i.mesh){const r=new t.aW;r.emplaceBack(-1,-1),r.emplaceBack(1,-1),r.emplaceBack(1,1),r.emplaceBack(-1,1);const n=new t.aY;n.emplaceBack(0,1,2),n.emplaceBack(0,2,3),i.mesh=new Ft(e.createVertexBuffer(r,Bt.members),e.createIndexBuffer(n),t.aX.simpleSegment(0,0,r.length,n.length))}return i.mesh}class Wn{constructor(e,i){this.context=new cn(e),this.transform=i,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:t.ar(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=Fe.maxOverzooming+Fe.maxUnderzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new zt}resize(e,t,i){if(this.width=Math.floor(e*i),this.height=Math.floor(t*i),this.pixelRatio=i,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const r of this.style._order)this.style._layers[r].resize()}setup(){const e=this.context,i=new t.aW;i.emplaceBack(0,0),i.emplaceBack(t.a5,0),i.emplaceBack(0,t.a5),i.emplaceBack(t.a5,t.a5),this.tileExtentBuffer=e.createVertexBuffer(i,Bt.members),this.tileExtentSegments=t.aX.simpleSegment(0,0,4,2);const r=new t.aW;r.emplaceBack(0,0),r.emplaceBack(t.a5,0),r.emplaceBack(0,t.a5),r.emplaceBack(t.a5,t.a5),this.debugBuffer=e.createVertexBuffer(r,Bt.members),this.debugSegments=t.aX.simpleSegment(0,0,4,5);const n=new t.ch;n.emplaceBack(0,0,0,0),n.emplaceBack(t.a5,0,t.a5,0),n.emplaceBack(0,t.a5,0,t.a5),n.emplaceBack(t.a5,t.a5,t.a5,t.a5),this.rasterBoundsBuffer=e.createVertexBuffer(n,Bi.members),this.rasterBoundsSegments=t.aX.simpleSegment(0,0,4,2);const s=new t.aW;s.emplaceBack(0,0),s.emplaceBack(t.a5,0),s.emplaceBack(0,t.a5),s.emplaceBack(t.a5,t.a5),this.rasterBoundsBufferPosOnly=e.createVertexBuffer(s,Bt.members),this.rasterBoundsSegmentsPosOnly=t.aX.simpleSegment(0,0,4,5);const o=new t.aW;o.emplaceBack(0,0),o.emplaceBack(1,0),o.emplaceBack(0,1),o.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(o,Bt.members),this.viewportSegments=t.aX.simpleSegment(0,0,4,2);const a=new t.ci;a.emplaceBack(0),a.emplaceBack(1),a.emplaceBack(3),a.emplaceBack(2),a.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(a);const l=new t.aY;l.emplaceBack(1,0,2),l.emplaceBack(1,2,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(l);const c=this.context.gl;this.stencilClearMode=new ni({func:c.ALWAYS,mask:0},0,255,c.ZERO,c.ZERO,c.ZERO),this.tileExtentMesh=new Ft(this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}clearStencil(){const e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const r=t.N();t.c7(r,0,this.width,this.height,0,0,1),t.Q(r,r,[i.drawingBufferWidth,i.drawingBufferHeight,0]);const n={mainMatrix:r,tileMercatorCoords:[0,0,1,1],clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:r};this.useProgram("clippingMask",null,!0).draw(e,i.TRIANGLES,ii.disabled,this.stencilClearMode,Qt.disabled,ti.disabled,null,null,n,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(e,t,i){if(this.currentStencilSource===e.source||!e.isTileClipped()||!t||!t.length)return;this.currentStencilSource=e.source,this.nextStencilID+t.length>256&&this.clearStencil();const r=this.context;r.setColorMode(Qt.disabled),r.setDepthMode(ii.disabled);const n={};for(const s of t)n[s.key]=this.nextStencilID++;this._renderTileMasks(n,t,i,!0),this._renderTileMasks(n,t,i,!1),this._tileClippingMaskIDs=n}_renderTileMasks(e,t,i,r){const n=this.context,s=n.gl,o=this.style.projection,a=this.transform,l=this.useProgram("clippingMask");for(const c of t){const t=e[c.key],h=this.style.map.terrain&&this.style.map.terrain.getTerrainData(c),u=o.getMeshFromTileID(this.context,c.canonical,r,!0,"stencil"),d=a.getProjectionData({overscaledTileID:c,applyGlobeMatrix:!i,applyTerrainMatrix:!0});l.draw(n,s.TRIANGLES,ii.disabled,new ni({func:s.ALWAYS,mask:0},t,255,s.KEEP,s.KEEP,s.REPLACE),Qt.disabled,i?ti.disabled:ti.backCCW,null,h,d,"$clipping",u.vertexBuffer,u.indexBuffer,u.segments)}}_renderTilesDepthBuffer(){const e=this.context,t=e.gl,i=this.style.projection,r=this.transform,n=this.useProgram("depth"),s=this.getDepthModeFor3D(),o=Me(r,{tileSize:r.tileSize});for(const a of o){const o=this.style.map.terrain&&this.style.map.terrain.getTerrainData(a),l=i.getMeshFromTileID(this.context,a.canonical,!0,!0,"raster"),c=r.getProjectionData({overscaledTileID:a,applyGlobeMatrix:!0,applyTerrainMatrix:!0});n.draw(e,t.TRIANGLES,s,ni.disabled,Qt.disabled,ti.backCCW,null,o,c,"$clipping",l.vertexBuffer,l.indexBuffer,l.segments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const e=this.nextStencilID++,t=this.context.gl;return new ni({func:t.NOTEQUAL,mask:255},e,255,t.KEEP,t.KEEP,t.REPLACE)}stencilModeForClipping(e){const t=this.context.gl;return new ni({func:t.EQUAL,mask:255},this._tileClippingMaskIDs[e.key],0,t.KEEP,t.KEEP,t.REPLACE)}getStencilConfigForOverlapAndUpdateStencilID(e){const t=this.context.gl,i=e.sort((e,t)=>t.overscaledZ-e.overscaledZ),r=i[i.length-1].overscaledZ,n=i[0].overscaledZ-r+1;if(n>1){this.currentStencilSource=void 0,this.nextStencilID+n>256&&this.clearStencil();const e={};for(let i=0;it.overscaledZ-e.overscaledZ),r=i[i.length-1].overscaledZ,n=i[0].overscaledZ-r+1;if(this.clearStencil(),n>1){const e={},s={};for(let i=0;i0};for(const t in o){const e=o[t];e.used&&e.prepare(this.context),a[t]=e.getVisibleCoordinates(!1),l[t]=a[t].slice().reverse(),h[t]=e.getVisibleCoordinates(!0).reverse()}this.opaquePassCutoff=1/0;for(let t=0;tthis.useProgram(e)}),this.context.viewport.set([0,0,this.width,this.height]),this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.bp.black:t.bp.transparent,depth:1}),this.clearStencil(),this.style.sky&&function(e,t){const i=e.context,r=i.gl,n=((e,t,i)=>{const r=Math.cos(t.rollInRadians),n=Math.sin(t.rollInRadians),s=ye(t),o=t.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}).projectionTransition;return{u_sky_color:e.properties.get("sky-color"),u_horizon_color:e.properties.get("horizon-color"),u_horizon:[(t.width/2-s*n)*i,(t.height/2+s*r)*i],u_horizon_normal:[-n,r],u_sky_horizon_blend:e.properties.get("sky-horizon-blend")*t.height/2*i,u_sky_blend:o}})(t,e.style.map.transform,e.pixelRatio),s=new ii(r.LEQUAL,ii.ReadWrite,[0,1]),o=ni.disabled,a=e.colorModeForRenderPass(),l=e.useProgram("sky"),c=$n(i,t);l.draw(i,r.TRIANGLES,s,o,a,ti.disabled,n,null,void 0,"sky",c.vertexBuffer,c.indexBuffer,c.segments)}(this,this.style.sky),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=s.length-1;this.currentLayer>=0;this.currentLayer--){const e=this.style._layers[s[this.currentLayer]],t=o[e.source],i=a[e.source];this._renderTileClippingMasks(e,i,!1),this.renderLayer(this,t,e,i,u)}this.renderPass="translucent";let d=!1;for(this.currentLayer=0;this.currentLayer({u_sun_pos:e,u_atmosphere_blend:t,u_globe_position:i,u_globe_radius:r,u_inv_proj_matrix:n}))(c,u,[f[0],f[1],f[2]],d,p),_=$n(n,i);o.draw(n,s.TRIANGLES,a,ni.disabled,Qt.alphaBlended,ti.disabled,m,null,null,"atmosphere",_.vertexBuffer,_.indexBuffer,_.segments)}(this,this.style.sky,this.style.light),this.options.showTileBoundaries){const e=function(e,t){let i=null;const r=Object.values(e._layers).flatMap(i=>i.source&&!i.isHidden(t)?[e.tileManagers[i.source]]:[]),n=r.filter(e=>"vector"===e.getSource().type),s=r.filter(e=>"vector"!==e.getSource().type),o=e=>{(!i||i.getSource().maxzoomo(e)),i||s.forEach(e=>o(e)),i}(this.style,this.transform.zoom);e&&function(e,t,i){for(let r=0;ru.getElevation(f,e,t):null;mn(s,d,p,c,h,_,i,o,g,t.aO(h,e,a,l),f.toUnwrapped(),r)}}}(n,e,r,i,r.layout.get("text-rotation-alignment"),r.layout.get("text-pitch-alignment"),r.paint.get("text-translate"),r.paint.get("text-translate-anchor"),s),0!==r.paint.get("icon-opacity").constantOr(1)&&gn(e,i,r,n,!1,r.paint.get("icon-translate"),r.paint.get("icon-translate-anchor"),r.layout.get("icon-rotation-alignment"),r.layout.get("icon-pitch-alignment"),r.layout.get("icon-keep-upright"),l,c,a),0!==r.paint.get("text-opacity").constantOr(1)&&gn(e,i,r,n,!0,r.paint.get("text-translate"),r.paint.get("text-translate-anchor"),r.layout.get("text-rotation-alignment"),r.layout.get("text-pitch-alignment"),r.layout.get("text-keep-upright"),l,c,a),i.map.showCollisionBoxes&&(un(e,i,r,n,!0),un(e,i,r,n,!1))}(e,i,r,n,this.style.placement.variableOffsets,s):t.cn(r)?function(e,i,r,n,s){if("translucent"!==e.renderPass)return;const{isRenderingToTexture:o}=s,a=r.paint.get("circle-opacity"),l=r.paint.get("circle-stroke-width"),c=r.paint.get("circle-stroke-opacity"),h=!r.layout.get("circle-sort-key").isConstant();if(0===a.constantOr(1)&&(0===l.constantOr(1)||0===c.constantOr(1)))return;const u=e.context,d=u.gl,p=e.transform,f=e.getDepthModeForSublayer(0,ii.ReadOnly),m=ni.disabled,_=e.colorModeForRenderPass(),g=[],y=p.getCircleRadiusCorrection();for(let x=0;xe.sortKey-t.sortKey);for(const t of g){const{programConfiguration:i,program:n,layoutVertexBuffer:s,indexBuffer:o,uniformValues:a,terrainData:l,projectionData:c}=t.state;n.draw(u,d.TRIANGLES,f,m,_,ti.backCCW,a,l,c,r.id,s,o,t.segments,r.paint,e.transform.zoom,i)}}(e,i,r,n,s):t.co(r)?function(e,i,r,n,s){if(0===r.paint.get("heatmap-opacity"))return;const o=e.context,{isRenderingToTexture:a,isRenderingGlobe:l}=s;if(e.style.map.terrain){for(const t of n){const n=i.getTile(t);i.hasRenderableParent(t)||("offscreen"===e.renderPass?xn(e,n,r,t,l):"translucent"===e.renderPass&&vn(e,r,t,a,l))}o.viewport.set([0,0,e.width,e.height])}else"offscreen"===e.renderPass?function(e,i,r,n){const s=e.context,o=s.gl,a=e.transform,l=ni.disabled,c=new Qt([o.ONE,o.ONE],t.bp.transparent,[!0,!0,!0,!0]);(function(e,i,r){const n=e.gl;e.activeTexture.set(n.TEXTURE1),e.viewport.set([0,0,i.width/4,i.height/4]);let s=r.heatmapFbos.get(t.cd);s?(n.bindTexture(n.TEXTURE_2D,s.colorAttachment.get()),e.bindFramebuffer.set(s.framebuffer)):(s=bn(e,i.width/4,i.height/4),r.heatmapFbos.set(t.cd,s))})(s,e,r),s.clear({color:t.bp.transparent});for(let t=0;t0?t.pop():null}isPatternMissing(e){if(!e)return!1;if(!e.from||!e.to)return!0;const t=this.imageManager.getPattern(e.from.toString()),i=this.imageManager.getPattern(e.to.toString());return!t||!i}useProgram(e,t,i=!1,r=[]){this.cache=this.cache||{};const n=!!this.style.map.terrain,s=this.style.projection,o=i?Rt.projectionMercator:s.shaderPreludeCode,a=i?Ot:s.shaderDefine,l=e+(t?t.cacheKey:"")+`/${i?Vt:s.shaderVariantName}`+(this._showOverdrawInspector?"/overdraw":"")+(n?"/terrain":"")+(r?`/${r.join("/")}`:"");return this.cache[l]||(this.cache[l]=new Ui(this.context,Rt[e],t,vr[e],this._showOverdrawInspector,n,o,a,r)),this.cache[l]}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(){const e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD)}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new t.T(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){var e,t;if(this._tileTextures){for(const e in this._tileTextures){const t=this._tileTextures[e];if(t)for(const e of t)e.destroy()}this._tileTextures={}}if(this.tileExtentBuffer&&this.tileExtentBuffer.destroy(),this.debugBuffer&&this.debugBuffer.destroy(),this.rasterBoundsBuffer&&this.rasterBoundsBuffer.destroy(),this.rasterBoundsBufferPosOnly&&this.rasterBoundsBufferPosOnly.destroy(),this.viewportBuffer&&this.viewportBuffer.destroy(),this.tileBorderIndexBuffer&&this.tileBorderIndexBuffer.destroy(),this.quadTriangleIndexBuffer&&this.quadTriangleIndexBuffer.destroy(),this.tileExtentMesh&&(null===(e=this.tileExtentMesh.vertexBuffer)||void 0===e||e.destroy()),this.tileExtentMesh&&(null===(t=this.tileExtentMesh.indexBuffer)||void 0===t||t.destroy()),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.cache){for(const e in this.cache){const t=this.cache[e];t&&t.program&&this.context.gl.deleteProgram(t.program)}this.cache={}}this.context&&this.context.setDefault()}overLimit(){const{drawingBufferWidth:e,drawingBufferHeight:t}=this.context.gl;return this.width!==e||this.height!==t}}function Hn(e,t){let i,r=!1,n=null,s=null;const o=()=>{n=null,r&&(e.apply(s,i),n=setTimeout(o,t),r=!1)};return(...e)=>(r=!0,s=this,i=e,n||o(),n)}class Xn{constructor(e){this._getCurrentHash=()=>{const e=window.location.hash.replace("#","");if(this._hashName){let t;return e.split("&").map(e=>e.split("=")).forEach(e=>{e[0]===this._hashName&&(t=e)}),(t&&t[1]||"").split("/")}return e.split("/")},this._onHashChange=()=>{const e=this._getCurrentHash();if(!this._isValidHash(e))return!1;const t=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(e[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:t,pitch:+(e[4]||0)}),!0},this._updateHashUnthrottled=()=>{const e=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,e)},this._removeHash=()=>{const e=this._getCurrentHash();if(0===e.length)return;const t=e.join("/");let i=t;i.split("&").length>0&&(i=i.split("&")[0]),this._hashName&&(i=`${this._hashName}=${t}`);let r=window.location.hash.replace(i,"");r.startsWith("#&")?r=r.slice(0,1)+r.slice(2):"#"===r&&(r="");let n=window.location.href.replace(/(#.+)?$/,r);n=n.replace("&&","&"),window.history.replaceState(window.history.state,null,n)},this._updateHash=Hn(this._updateHashUnthrottled,300),this._hashName=e&&encodeURIComponent(e)}addTo(e){return this._map=e,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(e){const t=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,r=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),n=Math.pow(10,r),s=Math.round(t.lng*n)/n,o=Math.round(t.lat*n)/n,a=this._map.getBearing(),l=this._map.getPitch();let c="";if(c+=e?`/${s}/${o}/${i}`:`${i}/${o}/${s}`,(a||l)&&(c+="/"+Math.round(10*a)/10),l&&(c+=`/${Math.round(l)}`),this._hashName){const e=this._hashName;let t=!1;const i=window.location.hash.slice(1).split("&").map(i=>{const r=i.split("=")[0];return r===e?(t=!0,`${r}=${c}`):i}).filter(e=>e);return t||i.push(`${e}=${c}`),`#${i.join("&")}`}return`#${c}`}_isValidHash(e){if(e.length<3||e.some(isNaN))return!1;try{new t.V(+e[2],+e[1])}catch(s){return!1}const i=+e[0],r=+(e[3]||0),n=+(e[4]||0);return i>=this._map.getMinZoom()&&i<=this._map.getMaxZoom()&&r>=-180&&r<=180&&n>=this._map.getMinPitch()&&n<=this._map.getMaxPitch()}}const Yn={linearity:.3,easing:t.cw(0,0,.3,1)},Kn=t.e({deceleration:2500,maxSpeed:1400},Yn),Jn=t.e({deceleration:20,maxSpeed:1400},Yn),Qn=t.e({deceleration:1e3,maxSpeed:360},Yn),es=t.e({deceleration:1e3,maxSpeed:90},Yn),ts=t.e({deceleration:1e3,maxSpeed:360},Yn);class is{constructor(e){this._map=e,this.clear()}clear(){this._inertiaBuffer=[]}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:c(),settings:e})}_drainInertiaBuffer(){const e=this._inertiaBuffer,t=c();for(;e.length>0&&t-e[0].time>160;)e.shift()}_onMoveEnd(e){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,roll:0,pan:new t.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:t}of this._inertiaBuffer)i.zoom+=t.zoomDelta||0,i.bearing+=t.bearingDelta||0,i.pitch+=t.pitchDelta||0,i.roll+=t.rollDelta||0,t.panDelta&&i.pan._add(t.panDelta),t.around&&(i.around=t.around),t.pinchAround&&(i.pinchAround=t.pinchAround);const r=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,n={};if(i.pan.mag()){const s=ns(i.pan.mag(),r,t.e({},Kn,e||{})),o=i.pan.mult(s.amount/i.pan.mag()),a=this._map.cameraHelper.handlePanInertia(o,this._map.transform);n.center=a.easingCenter,n.offset=a.easingOffset,rs(n,s)}if(i.zoom){const e=ns(i.zoom,r,Jn);n.zoom=this._map.transform.zoom+e.amount,rs(n,e)}if(i.bearing){const e=ns(i.bearing,r,Qn);n.bearing=this._map.transform.bearing+t.an(e.amount,-179,179),rs(n,e)}if(i.pitch){const e=ns(i.pitch,r,es);n.pitch=this._map.transform.pitch+e.amount,rs(n,e)}if(i.roll){const e=ns(i.roll,r,ts);n.roll=this._map.transform.roll+t.an(e.amount,-179,179),rs(n,e)}if(n.zoom||n.bearing){const e=void 0===i.pinchAround?i.around:i.pinchAround;n.around=e?this._map.unproject(e):this._map.getCenter()}return this.clear(),t.e(n,{noMoveStart:!0})}}function rs(e,t){(!e.duration||e.durationi.unproject(e)),a=s.reduce((e,t,i,r)=>e.add(t.div(r.length)),new t.P(0,0));super(e,{points:s,point:a,lngLats:o,lngLat:i.unproject(a),originalEvent:r}),this._defaultPrevented=!1}}class as extends t.l{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,i){super(e,{originalEvent:i}),this._defaultPrevented=!1}}class ls{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance}reset(){delete this._mousedownPos}wheel(e){return this._firePreventable(new as(e.type,this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new ss(e.type,this._map,e))}mouseup(e){this._map.fire(new ss(e.type,this._map,e))}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||this._map.fire(new ss(e.type,this._map,e))}dblclick(e){return this._firePreventable(new ss(e.type,this._map,e))}mouseover(e){this._map.fire(new ss(e.type,this._map,e))}mouseout(e){this._map.fire(new ss(e.type,this._map,e))}touchstart(e){return this._firePreventable(new os(e.type,this._map,e))}touchmove(e){this._map.fire(new os(e.type,this._map,e))}touchend(e){this._map.fire(new os(e.type,this._map,e))}touchcancel(e){this._map.fire(new os(e.type,this._map,e))}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class cs{constructor(e){this._map=e}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(e){this._map.fire(new ss(e.type,this._map,e))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new ss("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(e){this._delayContextMenu?this._contextMenuEvent=e:this._ignoreContextMenu||this._map.fire(new ss(e.type,this._map,e)),this._map.listens("contextmenu")&&e.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class hs{constructor(e){this._map=e}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(e){return this.transform.screenPointToLocation(t.P.convert(e),this._map.terrain)}}class us{constructor(e,t){this._map=e,this._tr=new hs(e),this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(e,t){this.isEnabled()&&e.shiftKey&&0===e.button&&(h.disableDrag(),this._startPos=this._lastPos=t,this._active=!0)}mousemoveWindow(e,t){if(!this._active)return;const i=t;if(this._lastPos.equals(i)||!this._box&&i.dist(this._startPos)e.fitScreenCoordinates(r,n,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",e)}keydown(e){this._active&&27===e.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",e))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(h.remove(this._box),this._box=null),h.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(e,i){return this._map.fire(new t.l(e,{originalEvent:i}))}}function ds(e,t){if(e.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${e.length}, points ${t.length}`);const i={};for(let r=0;rthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),r.length===this.numTouches&&(this.centroid=function(e){const i=new t.P(0,0);for(const t of e)i._add(t);return i.div(e.length)}(i),this.touches=ds(r,i)))}touchmove(e,t,i){if(this.aborted||!this.centroid)return;const r=ds(i,t);for(const n in this.touches){const e=r[n];(!e||e.dist(this.touches[n])>30)&&(this.aborted=!0)}}touchend(e,t,i){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}}class fs{constructor(e){this.singleTap=new ps(e),this.numTaps=e.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(e,t,i){this.singleTap.touchstart(e,t,i)}touchmove(e,t,i){this.singleTap.touchmove(e,t,i)}touchend(e,t,i){const r=this.singleTap.touchend(e,t,i);if(r){const t=e.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(r)<30;if(t&&i||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=r,this.count===this.numTaps)return this.reset(),r}}}class ms{constructor(e){this._tr=new hs(e),this._zoomIn=new fs({numTouches:1,numTaps:2}),this._zoomOut=new fs({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(e,t,i){this._zoomIn.touchstart(e,t,i),this._zoomOut.touchstart(e,t,i)}touchmove(e,t,i){this._zoomIn.touchmove(e,t,i),this._zoomOut.touchmove(e,t,i)}touchend(e,t,i){const r=this._zoomIn.touchend(e,t,i),n=this._zoomOut.touchend(e,t,i),s=this._tr;return r?(this._active=!0,e.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:s.zoom+1,around:s.unproject(r)},{originalEvent:e})}):n?(this._active=!0,e.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:s.zoom-1,around:s.unproject(n)},{originalEvent:e})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class _s{constructor(e){this._enabled=!!e.enable,this._moveStateManager=e.moveStateManager,this._clickTolerance=e.clickTolerance||1,this._moveFunction=e.move,this._activateOnStart=!!e.activateOnStart,e.assignEvents(this),this.reset()}reset(e){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(e)}_move(...e){const t=this._moveFunction(...e);if(t.bearingDelta||t.pitchDelta||t.rollDelta||t.around||t.panDelta)return this._active=!0,t}dragStart(e,t){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(e)&&(this._moveStateManager.startMove(e),this._lastPoint=Array.isArray(t)?t[0]:t,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(e,t){if(!this.isEnabled())return;const i=this._lastPoint;if(!i)return;if(e.preventDefault(),!this._moveStateManager.isValidMoveEvent(e))return void this.reset(e);const r=Array.isArray(t)?t[0]:t;return!this._moved&&r.dist(i)!0}),t=new bs){this.mouseMoveStateManager=e,this.oneFingerTouchMoveStateManager=t}_executeRelevantHandler(e,t,i){return e instanceof MouseEvent?t(e):"undefined"!=typeof TouchEvent&&e instanceof TouchEvent?i(e):void 0}startMove(e){this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.startMove(e),e=>this.oneFingerTouchMoveStateManager.startMove(e))}endMove(e){this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.endMove(e),e=>this.oneFingerTouchMoveStateManager.endMove(e))}isValidStartEvent(e){return this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.isValidStartEvent(e),e=>this.oneFingerTouchMoveStateManager.isValidStartEvent(e))}isValidMoveEvent(e){return this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.isValidMoveEvent(e),e=>this.oneFingerTouchMoveStateManager.isValidMoveEvent(e))}isValidEndEvent(e){return this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.isValidEndEvent(e),e=>this.oneFingerTouchMoveStateManager.isValidEndEvent(e))}}const Ts=e=>{e.mousedown=e.dragStart,e.mousemoveWindow=e.dragMove,e.mouseup=e.dragEnd,e.contextmenu=e=>{e.preventDefault()}};class Ss{constructor(e,t){this._clickTolerance=e.clickTolerance||1,this._map=t,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new t.P(0,0)}_shouldBePrevented(e){return e<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(e,t,i){return this._calculateTransform(e,t,i)}touchmove(e,t,i){if(this._active){if(!this._shouldBePrevented(i.length))return e.preventDefault(),this._calculateTransform(e,t,i);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",e)}}touchend(e,t,i){this._calculateTransform(e,t,i),this._active&&this._shouldBePrevented(i.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(e,i,r){r.length>0&&(this._active=!0);const n=ds(r,i),s=new t.P(0,0),o=new t.P(0,0);let a=0;for(const t in n){const e=n[t],i=this._touches[t];i&&(s._add(e),o._add(e.sub(i)),a++,n[t]=e)}if(this._touches=n,this._shouldBePrevented(a)||!o.mag())return;const l=o.div(a);return this._sum._add(l),this._sum.mag()Math.abs(e.x)}class zs extends Ps{constructor(e){super(),this._currentTouchCount=0,this._map=e}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(e,t,i){super.touchstart(e,t,i),this._currentTouchCount=i.length}_start(e){this._lastPoints=e,Ds(e[0].sub(e[1]))&&(this._valid=!1)}_move(e,t,i){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;const r=e[0].sub(this._lastPoints[0]),n=e[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(r,n,i.timeStamp),this._valid?(this._lastPoints=e,this._active=!0,{pitchDelta:(r.y+n.y)/2*-.5}):void 0}gestureBeginsVertically(e,t,i){if(void 0!==this._valid)return this._valid;const r=e.mag()>=2,n=t.mag()>=2;if(!r&&!n)return;if(!r||!n)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const s=e.y>0==t.y>0;return Ds(e)&&Ds(t)&&s}}const ks={panStep:100,bearingStep:15,pitchStep:10};class Rs{constructor(e){this._tr=new hs(e);const t=ks;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,i=0,r=0,n=0,s=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?i=-1:(e.preventDefault(),n=-1);break;case 39:e.shiftKey?i=1:(e.preventDefault(),n=1);break;case 38:e.shiftKey?r=1:(e.preventDefault(),s=-1);break;case 40:e.shiftKey?r=-1:(e.preventDefault(),s=1);break;default:return}return this._rotationDisabled&&(i=0,r=0),{cameraAnimation:o=>{const a=this._tr;o.easeTo({duration:300,easeId:"keyboardHandler",easing:Ls,zoom:t?Math.round(a.zoom)+t*(e.shiftKey?2:1):a.zoom,bearing:a.bearing+i*this._bearingStep,pitch:a.pitch+r*this._pitchStep,offset:[-n*this._panStep,-s*this._panStep],center:a.center},{originalEvent:e})}}}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 Ls(e){return e*(2-e)}const Fs=4.000244140625,Bs=1/450;class Os{constructor(e,t){this._onTimeout=e=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(e)},this._map=e,this._tr=new hs(e),this._triggerRenderFrame=t,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=Bs}setZoomRate(e){this._defaultZoomRate=e}setWheelZoomRate(e){this._wheelZoomRate=e}isEnabled(){return!!this._enabled}isActive(){return!!this._active||void 0!==this._finishTimeout}isZooming(){return!!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&"center"===e.around)}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(e){return!!this._map.cooperativeGestures.isEnabled()&&!(e.ctrlKey||this._map.cooperativeGestures.isBypassed(e))}wheel(e){if(!this.isEnabled())return;if(this._shouldBePrevented(e))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",e);let t=e.deltaMode===WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY;const i=c(),r=i-(this._lastWheelEventTime||0);this._lastWheelEventTime=i,0!==t&&t%Fs==0?this._type="wheel":0!==t&&Math.abs(t)<4?this._type="trackpad":r>400?(this._type=null,this._lastValue=t,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(r*t)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,t+=this._lastValue)),e.shiftKey&&t&&(t/=4),this._type&&(this._lastWheelEvent=e,this._delta-=t,this._active||this._start(e)),e.preventDefault()}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const i=h.mousePos(this._map.getCanvas(),e),r=this._tr;this._aroundPoint=this._aroundCenter?r.transform.locationToScreenPoint(t.V.convert(r.center)):i,this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const e=this._tr.transform;if("number"==typeof this._lastExpectedZoom){const t=e.zoom-this._lastExpectedZoom;"number"==typeof this._startZoom&&(this._startZoom+=t),"number"==typeof this._targetZoom&&(this._targetZoom+=t)}if(0!==this._delta){const i="wheel"===this._type&&Math.abs(this._delta)>Fs?this._wheelZoomRate:this._defaultZoomRate;let r=2/(1+Math.exp(-Math.abs(this._delta*i)));this._delta<0&&0!==r&&(r=1/r);const n="number"!=typeof this._targetZoom?e.scale:t.aq(this._targetZoom);this._targetZoom=e.applyConstrain(e.getCameraLngLat(),t.at(n*r)).zoom,"wheel"===this._type&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}const i="number"!=typeof this._targetZoom?e.zoom:this._targetZoom,r=this._startZoom,n=this._easing;let s,o=!1;if("wheel"===this._type&&r&&n){const e=c()-this._lastWheelEventTime,a=Math.min((e+5)/200,1),l=n(a);s=t.G.number(r,i,l),a<1?this._frameId||(this._frameId=!0):o=!0}else s=i,o=!0;return this._active=!0,o&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._lastExpectedZoom,delete this._finishTimeout},200)),this._lastExpectedZoom=s,{noInertia:!0,needsRenderFrame:!o,zoomDelta:s-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let i=t.cy;if(this._prevEase){const e=this._prevEase,r=(c()-e.start)/e.duration,n=e.easing(r+.01)-e.easing(r),s=.27/Math.sqrt(n*n+1e-4)*.01,o=Math.sqrt(.0729-s*s);i=t.cw(s,o,.25,1)}return this._prevEase={start:c(),duration:e,easing:i},i}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,delete this._lastExpectedZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class Vs{constructor(e,t){this._clickZoom=e,this._tapZoom=t}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 js{constructor(e){this._tr=new hs(e),this.reset()}reset(){this._active=!1}dblclick(e,t){return e.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:this._tr.zoom+(e.shiftKey?-1:1),around:this._tr.unproject(t)},{originalEvent:e})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Ns{constructor(){this._tap=new fs({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(e,t,i){if(!this._swipePoint)if(this._tapTime){const r=t[0],n=e.timeStamp-this._tapTime<500,s=this._tapPoint.dist(r)<30;n&&s?i.length>0&&(this._swipePoint=r,this._swipeTouch=i[0].identifier):this.reset()}else this._tap.touchstart(e,t,i)}touchmove(e,t,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const r=t[0],n=r.y-this._swipePoint.y;return this._swipePoint=r,e.preventDefault(),this._active=!0,{zoomDelta:n/128}}}else this._tap.touchmove(e,t,i)}touchend(e,t,i){if(this._tapTime)this._swipePoint&&0===i.length&&this.reset();else{const r=this._tap.touchend(e,t,i);r&&(this._tapTime=e.timeStamp,this._tapPoint=r)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Us{constructor(e,t,i){this._el=e,this._mousePan=t,this._touchPan=i}enable(e){this._inertiaOptions=e||{},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 Gs{constructor(e,t,i,r){this._pitchWithRotate=e.pitchWithRotate,this._rollEnabled=e.rollEnabled,this._mouseRotate=t,this._mousePitch=i,this._mouseRoll=r}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable(),this._rollEnabled&&this._mouseRoll.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable(),this._mouseRoll.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())&&(!this._rollEnabled||this._mouseRoll.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()||this._mouseRoll.isActive()}}class qs{constructor(e,t,i,r){this._el=e,this._touchZoom=t,this._touchRotate=i,this._tapDragZoom=r,this._rotationDisabled=!1,this._enabled=!0}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),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 Zs{constructor(e,t){this._bypassKey=-1!==navigator.userAgent.indexOf("Mac")?"metaKey":"ctrlKey",this._map=e,this._options=t,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;const e=this._map.getCanvasContainer();e.classList.add("maplibregl-cooperative-gestures"),this._container=h.create("div","maplibregl-cooperative-gesture-screen",e);let t=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");"metaKey"===this._bypassKey&&(t=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));const i=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),r=document.createElement("div");r.className="maplibregl-desktop-message",r.textContent=t,this._container.appendChild(r);const n=document.createElement("div");n.className="maplibregl-mobile-message",n.textContent=i,this._container.appendChild(n),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(h.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(e){return e[this._bypassKey]}notifyGestureBlocked(e,i){this._enabled&&(this._map.fire(new t.l("cooperativegestureprevented",{gestureType:e,originalEvent:i})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}const $s=e=>e.zoom||e.drag||e.roll||e.pitch||e.rotate;class Ws extends t.l{}function Hs(e){return e.panDelta&&e.panDelta.mag()||e.zoomDelta||e.bearingDelta||e.pitchDelta||e.rollDelta}class Xs{constructor(e,i){this.handleWindowEvent=e=>{this.handleEvent(e,`${e.type}Window`)},this.handleEvent=(e,i)=>{if("blur"===e.type)return void this.stop(!0);this._updatingCamera=!0;const r="renderFrame"===e.type?void 0:e,n={needsRenderFrame:!1},s={},o={};for(const{handlerName:c,handler:u,allowed:d}of this._handlers){if(!u.isEnabled())continue;let a;if(this._blockedByActive(o,d,c))u.reset();else if(u[i||e.type]){if(t.cz(e,i||e.type)){const t=h.mousePos(this._map.getCanvas(),e);a=u[i||e.type](e,t)}else if(t.cA(e,i||e.type)){const t=this._getMapTouches(e.touches),r=h.touchPos(this._map.getCanvas(),t);a=u[i||e.type](e,r,t)}else t.cB(i||e.type)||(a=u[i||e.type](e));this.mergeHandlerResult(n,s,a,c,r),a&&a.needsRenderFrame&&this._triggerRenderFrame()}(a||u.isActive())&&(o[c]=u)}const a={};for(const t in this._previousActiveHandlers)o[t]||(a[t]=r);this._previousActiveHandlers=o,(Object.keys(a).length||Hs(n))&&(this._changes.push([n,s,a]),this._triggerRenderFrame()),(Object.keys(o).length||Hs(n))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:l}=n;l&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],l(this._map))},this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new is(e),this._bearingSnap=i.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(i);const r=this._el;this._listeners=[[r,"touchstart",{passive:!0}],[r,"touchmove",{passive:!1}],[r,"touchend",void 0],[r,"touchcancel",void 0],[r,"mousedown",void 0],[r,"mousemove",void 0],[r,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[r,"mouseover",void 0],[r,"mouseout",void 0],[r,"dblclick",void 0],[r,"click",void 0],[r,"keydown",{capture:!1}],[r,"keyup",void 0],[r,"wheel",{passive:!1}],[r,"contextmenu",void 0],[window,"blur",void 0]];for(const[t,n,s]of this._listeners)h.addEventListener(t,n,t===document?this.handleWindowEvent:this.handleEvent,s)}destroy(){for(const[e,t,i]of this._listeners)h.removeEventListener(e,t,e===document?this.handleWindowEvent:this.handleEvent,i)}_addDefaultHandlers(e){const i=this._map,r=i.getCanvasContainer();this._add("mapEvent",new ls(i,e));const n=i.boxZoom=new us(i,e);this._add("boxZoom",n),e.interactive&&e.boxZoom&&n.enable();const s=i.cooperativeGestures=new Zs(i,e.cooperativeGestures);this._add("cooperativeGestures",s),e.cooperativeGestures&&s.enable();const o=new ms(i),a=new js(i);i.doubleClickZoom=new Vs(a,o),this._add("tapZoom",o),this._add("clickZoom",a),e.interactive&&e.doubleClickZoom&&i.doubleClickZoom.enable();const l=new Ns;this._add("tapDragZoom",l);const c=i.touchPitch=new zs(i);this._add("touchPitch",c),e.interactive&&e.touchPitch&&i.touchPitch.enable(e.touchPitch);const u=()=>i.project(i.getCenter()),d=function({enable:e,clickTolerance:i,aroundCenter:r=!0,minPixelCenterThreshold:n=100,rotateDegreesPerPixelMoved:s=.8},o){const a=new vs({checkCorrectEvent:e=>0===h.mouseButton(e)&&e.ctrlKey||2===h.mouseButton(e)&&!e.ctrlKey});return new _s({clickTolerance:i,move:(e,i)=>{const a=o();if(r&&Math.abs(a.y-e.y)>n)return{bearingDelta:t.cx(new t.P(e.x,i.y),i,a)};let l=(i.x-e.x)*s;return r&&i.y0===h.mouseButton(e)&&e.ctrlKey||2===h.mouseButton(e)});return new _s({clickTolerance:t,move:(e,t)=>({pitchDelta:(t.y-e.y)*i}),moveStateManager:r,enable:e,assignEvents:Ts})}(e),f=function({enable:e,clickTolerance:t,rollDegreesPerPixelMoved:i=.3},r){const n=new vs({checkCorrectEvent:e=>2===h.mouseButton(e)&&e.ctrlKey});return new _s({clickTolerance:t,move:(e,t)=>{const n=r();let s=(t.x-e.x)*i;return t.y0===h.mouseButton(e)&&!e.ctrlKey});return new _s({clickTolerance:t,move:(e,t)=>({around:t,panDelta:t.sub(e)}),activateOnStart:!0,moveStateManager:i,enable:e,assignEvents:Ts})}(e),_=new Ss(e,i);i.dragPan=new Us(r,m,_),this._add("mousePan",m),this._add("touchPan",_,["touchZoom","touchRotate"]),e.interactive&&e.dragPan&&i.dragPan.enable(e.dragPan);const g=new As,y=new Es;i.touchZoomRotate=new qs(r,y,g,l),this._add("touchRotate",g,["touchPan","touchZoom"]),this._add("touchZoom",y,["touchPan","touchRotate"]),e.interactive&&e.touchZoomRotate&&i.touchZoomRotate.enable(e.touchZoomRotate),this._add("blockableMapEvent",new cs(i));const x=i.scrollZoom=new Os(i,()=>this._triggerRenderFrame());this._add("scrollZoom",x,["mousePan"]),e.interactive&&e.scrollZoom&&i.scrollZoom.enable(e.scrollZoom);const v=i.keyboard=new Rs(i);this._add("keyboard",v),e.interactive&&e.keyboard&&i.keyboard.enable()}_add(e,t,i){this._handlers.push({handlerName:e,handler:t,allowed:i}),this._handlersById[e]=t}stop(e){if(!this._updatingCamera){for(const{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[]}}isActive(){for(const{handler:e}of this._handlers)if(e.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return Boolean($s(this._eventsInProgress))||this.isZooming()}_blockedByActive(e,t,i){for(const r in e)if(r!==i&&(!t||t.indexOf(r)<0))return!0;return!1}_getMapTouches(e){const t=[];for(const i of e)this._el.contains(i.target)&&t.push(i);return t}mergeHandlerResult(e,i,r,n,s){if(!r)return;t.e(e,r);const o={handlerName:n,originalEvent:r.originalEvent||s};void 0!==r.zoomDelta&&(i.zoom=o),void 0!==r.panDelta&&(i.drag=o),void 0!==r.rollDelta&&(i.roll=o),void 0!==r.pitchDelta&&(i.pitch=o),void 0!==r.bearingDelta&&(i.rotate=o)}_applyChanges(){const e={},i={},r={};for(const[n,s,o]of this._changes)n.panDelta&&(e.panDelta=(e.panDelta||new t.P(0,0))._add(n.panDelta)),n.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+n.zoomDelta),n.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+n.bearingDelta),n.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+n.pitchDelta),n.rollDelta&&(e.rollDelta=(e.rollDelta||0)+n.rollDelta),void 0!==n.around&&(e.around=n.around),void 0!==n.pinchAround&&(e.pinchAround=n.pinchAround),n.noInertia&&(e.noInertia=n.noInertia),t.e(i,s),t.e(r,o);this._updateMapTransform(e,i,r),this._changes=[]}_updateMapTransform(e,t,i){const r=this._map,n=r._getTransformForUpdate(),s=r.terrain;if(!(Hs(e)||s&&this._terrainMovement))return this._fireEvents(t,i,!0);r._stop(!0);let{panDelta:o,zoomDelta:a,bearingDelta:l,pitchDelta:c,rollDelta:h,around:u,pinchAround:d}=e;void 0!==d&&(u=d),u=u||r.transform.centerPoint,s&&!n.isPointOnMapSurface(u)&&(u=n.centerPoint);const p={panDelta:o,zoomDelta:a,rollDelta:h,pitchDelta:c,bearingDelta:l,around:u};this._map.cameraHelper.useGlobeControls&&!n.isPointOnMapSurface(u)&&(u=n.centerPoint);const f=u.distSqr(n.centerPoint)<.01?n.center:n.screenPointToLocation(o?u.sub(o):u);this._handleMapControls({terrain:s,tr:n,deltasForHelper:p,preZoomAroundLoc:f,combinedEventsInProgress:t,panDelta:o}),r._applyUpdatedTransform(n),this._map._update(),e.noInertia||this._inertia.record(e),this._fireEvents(t,i,!0)}_handleMapControls({terrain:e,tr:t,deltasForHelper:i,preZoomAroundLoc:r,combinedEventsInProgress:n,panDelta:s}){const o=this._map.cameraHelper;if(o.handleMapControlsRollPitchBearingZoom(i,t),e)return o.useGlobeControls?(this._terrainMovement||!n.drag&&!n.zoom||(this._terrainMovement=!0,this._map._elevationFreeze=!0),void o.handleMapControlsPan(i,t,r)):this._terrainMovement||!n.drag&&!n.zoom?void(n.drag&&this._terrainMovement&&s?t.setCenter(t.screenPointToLocation(t.centerPoint.sub(s))):o.handleMapControlsPan(i,t,r)):(this._terrainMovement=!0,this._map._elevationFreeze=!0,void o.handleMapControlsPan(i,t,r));o.handleMapControlsPan(i,t,r)}_fireEvents(e,i,r){const n=$s(this._eventsInProgress),s=$s(e),o={};for(const t in e){const{originalEvent:i}=e[t];this._eventsInProgress[t]||(o[`${t}start`]=i),this._eventsInProgress[t]=e[t]}!n&&s&&this._fireEvent("movestart",s.originalEvent);for(const t in o)this._fireEvent(t,o[t]);s&&this._fireEvent("move",s.originalEvent);for(const t in e){const{originalEvent:i}=e[t];this._fireEvent(t,i)}const l={};let c;for(const t in this._eventsInProgress){const{handlerName:e,originalEvent:r}=this._eventsInProgress[t];this._handlersById[e].isActive()||(delete this._eventsInProgress[t],c=i[e]||r,l[`${t}end`]=c)}for(const t in l)this._fireEvent(t,l[t]);const h=$s(this._eventsInProgress),u=(n||s)&&!h;if(u&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;const e=this._map._getTransformForUpdate();this._map.getCenterClampedToGround()&&e.recalculateZoomAndCenter(this._map.terrain),this._map._applyUpdatedTransform(e)}if(r&&u){this._updatingCamera=!0;const e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=e=>0!==e&&-this._bearingSnap{delete this._frameId,this.handleEvent(new Ws("renderFrame",{timeStamp:e})),this._applyChanges()})}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame())}}class Ys extends t.E{constructor(e,t,i){super(),this._renderFrameCallback=()=>{const e=Math.min((c()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=e,this._bearingSnap=i.bearingSnap,this.cameraHelper=t,this.on("moveend",()=>{delete this._requestedCameraState})}migrateProjection(e,t){e.apply(this.transform),this.transform=e,this.cameraHelper=t}getCenter(){return new t.V(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}getCenterElevation(){return this.transform.elevation}setCenterElevation(e,t){return this.jumpTo({elevation:e},t),this}getCenterClampedToGround(){return this._centerClampedToGround}setCenterClampedToGround(e){this._centerClampedToGround=e}panBy(e,i,r){return e=t.P.convert(e).mult(-1),this.panTo(this.transform.center,t.e({offset:e},i),r)}panTo(e,i,r){return this.easeTo(t.e({center:e},i),r)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(e,i,r){return this.easeTo(t.e({zoom:e},i),r)}zoomIn(e,t){return this.zoomTo(this.getZoom()+1,e,t),this}zoomOut(e,t){return this.zoomTo(this.getZoom()-1,e,t),this}getVerticalFieldOfView(){return this.transform.fov}setVerticalFieldOfView(e,i){return e!=this.transform.fov&&(this.transform.setFov(e),this.fire(new t.l("movestart",i)).fire(new t.l("move",i)).fire(new t.l("moveend",i))),this}getBearing(){return this.transform.bearing}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(e,i,r){return this.easeTo(t.e({bearing:e},i),r)}resetNorth(e,i){return this.rotateTo(0,t.e({duration:1e3},e),i),this}resetNorthPitch(e,i){return this.easeTo(t.e({bearing:0,pitch:0,roll:0,duration:1e3},e),i),this}snapToNorth(e,t){return Math.abs(this.getBearing()){_.easeFunc(t),this.terrain&&!e.freezeElevation&&this._updateElevation(t),this._applyUpdatedTransform(r),this._fireMoveEvents(i)},t=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i,t)},e),this}_prepareEase(e,i,r={}){this._moving=!0,i||r.moving||this.fire(new t.l("movestart",e)),this._zooming&&!r.zooming&&this.fire(new t.l("zoomstart",e)),this._rotating&&!r.rotating&&this.fire(new t.l("rotatestart",e)),this._pitching&&!r.pitching&&this.fire(new t.l("pitchstart",e)),this._rolling&&!r.rolling&&this.fire(new t.l("rollstart",e))}_prepareElevation(e){this._elevationCenter=e,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(e,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(e){void 0!==this._elevationStart&&void 0!==this._elevationCenter||this._prepareElevation(this.transform.center),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom));const i=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(e<1&&i!==this._elevationTarget){const t=this._elevationTarget-this._elevationStart;this._elevationStart+=e*(t-(i-(t*e+this._elevationStart))/(1-e)),this._elevationTarget=i}this.transform.setElevation(t.G.number(this._elevationStart,this._elevationTarget,e))}_finalizeElevation(){this._elevationFreeze=!1,this.getCenterClampedToGround()&&this.transform.recalculateZoomAndCenter(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(e){if(!this.terrain&&e.elevation>=0&&e.pitch<=90)return{};const t=e.getCameraLngLat(),i=e.getCameraAltitude(),r=this.terrain?this.terrain.getElevationForLngLatZoom(t,e.zoom):0;if(ithis._elevateCameraIfInsideTerrain(e)),this.transformCameraUpdate&&t.push(e=>this.transformCameraUpdate(e)),!t.length)return;const i=e.clone();for(const r of t){const e=i.clone(),{center:t,zoom:n,roll:s,pitch:o,bearing:a,elevation:l}=r(e);t&&e.setCenter(t),void 0!==l&&e.setElevation(l),void 0!==n&&e.setZoom(n),void 0!==s&&e.setRoll(s),void 0!==o&&e.setPitch(o),void 0!==a&&e.setBearing(a),i.apply(e)}this.transform.apply(i)}_fireMoveEvents(e){this.fire(new t.l("move",e)),this._zooming&&this.fire(new t.l("zoom",e)),this._rotating&&this.fire(new t.l("rotate",e)),this._pitching&&this.fire(new t.l("pitch",e)),this._rolling&&this.fire(new t.l("roll",e))}_afterEase(e,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId;const r=this._zooming,n=this._rotating,s=this._pitching,o=this._rolling;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._rolling=!1,this._padding=!1,r&&this.fire(new t.l("zoomend",e)),n&&this.fire(new t.l("rotateend",e)),s&&this.fire(new t.l("pitchend",e)),o&&this.fire(new t.l("rollend",e)),this.fire(new t.l("moveend",e))}flyTo(e,i){if(!e.essential&&a.prefersReducedMotion){const r=t.U(e,["center","zoom","bearing","pitch","roll","elevation","padding"]);return this.jumpTo(r,i)}this.stop(),e=t.e({offset:[0,0],speed:1.2,curve:1.42,easing:t.cy},e);const r=this._getTransformForUpdate(),n=r.bearing,s=r.pitch,o=r.roll,l=r.padding,c="bearing"in e?this._normalizeBearing(e.bearing,n):n,h="pitch"in e?+e.pitch:s,u="roll"in e?this._normalizeBearing(e.roll,o):o,d="padding"in e?e.padding:r.padding,p=t.P.convert(e.offset);let f=r.centerPoint.add(p);const m=r.screenPointToLocation(f),_=this.cameraHelper.handleFlyTo(r,{bearing:c,pitch:h,roll:u,padding:d,locationAtOffset:m,offsetAsPoint:p,center:e.center,minZoom:e.minZoom,zoom:e.zoom});let g=e.curve;const y=Math.max(r.width,r.height),x=y/_.scaleOfZoom,v=_.pixelPathLength;"number"==typeof _.scaleOfMinZoom&&(g=Math.sqrt(y/_.scaleOfMinZoom/v*2));const b=g*g;function w(e){const t=(x*x-y*y+(e?-1:1)*b*b*v*v)/(2*(e?x:y)*b*v);return Math.log(Math.sqrt(t*t+1)-t)}function T(e){return(Math.exp(e)-Math.exp(-e))/2}function S(e){return(Math.exp(e)+Math.exp(-e))/2}const P=w(!1);let I=function(e){return S(P)/S(P+g*e)},M=function(e){return y*((S(P)*(T(t=P+g*e)/S(t))-T(P))/b)/v;var t},E=(w(!0)-P)/g;if(Math.abs(v)<2e-6||!isFinite(E)){if(Math.abs(y-x)<1e-6)return this.easeTo(e,i);const t=x0,I=e=>Math.exp(t*g*e)}return e.duration="duration"in e?+e.duration:1e3*E/("screenSpeed"in e?+e.screenSpeed/g:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=n!==c,this._pitching=h!==s,this._rolling=u!==o,this._padding=!r.isPaddingEqual(d),this._prepareEase(i,!1),this.terrain&&this._prepareElevation(_.targetCenter),this._ease(a=>{const m=a*E,g=1/I(m),y=M(m);this._rotating&&r.setBearing(t.G.number(n,c,a)),this._pitching&&r.setPitch(t.G.number(s,h,a)),this._rolling&&r.setRoll(t.G.number(o,u,a)),this._padding&&(r.interpolatePadding(l,d,a),f=r.centerPoint.add(p)),_.easeFunc(a,g,y,f),this.terrain&&!e.freezeElevation&&this._updateElevation(a),this._applyUpdatedTransform(r),this._fireMoveEvents(i)},()=>{this.terrain&&e.freezeElevation&&this._finalizeElevation(),this._afterEase(i)},e),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(e,t){var i;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const e=this._onEaseEnd;delete this._onEaseEnd,e.call(this,t)}return e||null===(i=this.handlers)||void 0===i||i.stop(!1),this}_ease(e,t,i){!1===i.animate||0===i.duration?(e(1),t()):(this._easeStart=c(),this._easeOptions=i,this._onEaseFrame=e,this._onEaseEnd=t,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(e,i){e=t.W(e,-180,180);const r=Math.abs(e-i);return Math.abs(e-360-i)MapLibre'};class Js{constructor(e=Ks){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=e=>{!e||"metadata"!==e.sourceDataType&&"visibility"!==e.sourceDataType&&"style"!==e.dataType&&"terrain"!==e.type||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?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=e}getDefaultPosition(){return"bottom-right"}onAdd(e){return this._map=e,this._compact=this.options.compact,this._container=h.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=h.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=h.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(){h.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(e,t){const i=this._map._getUIString(`AttributionControl.${t}`);e.title=i,e.setAttribute("aria-label",i)}_updateAttributions(){if(!this._map.style)return;let e=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=e.concat(this.options.customAttribution.map(e=>"string"!=typeof e?"":e)):"string"==typeof this.options.customAttribution&&e.push(this.options.customAttribution)),this._map.style.stylesheet){const e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id}const t=this._map.style.tileManagers;for(const r in t){const i=t[r];if(i.used||i.usedForTerrain){const t=i.getSource();t.attribution&&e.indexOf(t.attribution)<0&&e.push(t.attribution)}}e=e.filter(e=>String(e).trim()),e.sort((e,t)=>e.length-t.length),e=e.filter((t,i)=>{for(let r=i+1;r=0)return!1;return!0});const i=e.join(" | ");i!==this._attribHTML&&(this._attribHTML=i,e.length?(this._innerContainer.innerHTML=h.sanitize(i),this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Qs{constructor(e={}){this._updateCompact=()=>{const e=this._container.children;if(e.length){const t=e[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&t.classList.add("maplibregl-compact"):t.classList.remove("maplibregl-compact")}},this.options=e}getDefaultPosition(){return"bottom-left"}onAdd(e){this._map=e,this._compact=this.options&&this.options.compact,this._container=h.create("div","maplibregl-ctrl");const t=h.create("a","maplibregl-ctrl-logo");return t.target="_blank",t.rel="noopener nofollow",t.href="https://maplibre.org/",t.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),t.setAttribute("rel","noopener nofollow"),this._container.appendChild(t),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){h.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class eo{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(e){const t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){const t=this._currentlyRunning,i=t?this._queue.concat(t):this._queue;for(const r of i)if(r.id===e)return void(r.cancelled=!0)}run(e=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const t=this._currentlyRunning=this._queue;this._queue=[];for(const i of t)if(!i.cancelled&&(i.callback(e),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var to=t.aU([{name:"a_pos3d",type:"Int16",components:3}]);class io extends t.E{constructor(e){super(),this._lastTilesetChange=c(),this.tileManager=e,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.deltaZoom=1,this.tileSize=e._source.tileSize*2**this.deltaZoom,e.usedForTerrain=!0,e.tileSize=this.tileSize}destruct(){this.tileManager.usedForTerrain=!1,this.tileManager.tileSize=null}getSource(){return this.tileManager._source}update(e,i){this.tileManager.update(e,i),this._renderableTilesKeys=[];const r={};for(const n of Me(e,{tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:i,calculateTileZoom:this.tileManager._source.calculateTileZoom}))r[n.key]=!0,this._renderableTilesKeys.push(n.key),this._tiles[n.key]||(n.terrainRttPosMatrix32f=new Float64Array(16),t.c7(n.terrainRttPosMatrix32f,0,t.a5,t.a5,0,0,1),this._tiles[n.key]=new pe(n,this.tileSize),this._lastTilesetChange=c());for(const t in this._tiles)r[t]||delete this._tiles[t]}freeRtt(e){for(const t in this._tiles){const i=this._tiles[t];(!e||i.tileID.equals(e)||i.tileID.isChildOf(e)||e.isChildOf(i.tileID))&&(i.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(e=>this.getTileByID(e))}getTileByID(e){return this._tiles[e]}getTerrainCoords(e,t){return t?this._getTerrainCoordsForTileRanges(e,t):this._getTerrainCoordsForRegularTile(e)}_getTerrainCoordsForRegularTile(e){const i={};for(const r of this._renderableTilesKeys){const n=this._tiles[r].tileID,s=e.clone(),o=t.bk();if(n.canonical.equals(e.canonical))t.c7(o,0,t.a5,t.a5,0,0,1);else if(n.canonical.isChildOf(e.canonical)){const i=n.canonical.z-e.canonical.z,r=n.canonical.x-(n.canonical.x>>i<>i<>i;t.c7(o,0,a,a,0,0,1),t.O(o,o,[-r*a,-s*a,0])}else{if(!e.canonical.isChildOf(n.canonical))continue;{const i=e.canonical.z-n.canonical.z,r=e.canonical.x-(e.canonical.x>>i<>i<>i;t.c7(o,0,t.a5,t.a5,0,0,1),t.O(o,o,[r*a,s*a,0]),t.Q(o,o,[1/2**i,1/2**i,0])}}s.terrainRttPosMatrix32f=new Float32Array(o),i[r]=s}return i}_getTerrainCoordsForTileRanges(e,i){const r={};for(const n of this._renderableTilesKeys){const s=this._tiles[n].tileID;if(!this._isWithinTileRanges(s,i))continue;const o=e.clone(),a=t.bk();if(s.canonical.z===e.canonical.z){const i=e.canonical.x-s.canonical.x,r=e.canonical.y-s.canonical.y;t.c7(a,0,t.a5,t.a5,0,0,1),t.O(a,a,[i*t.a5,r*t.a5,0])}else if(s.canonical.z>e.canonical.z){const i=s.canonical.z-e.canonical.z,r=s.canonical.x-(s.canonical.x>>i<>i<>i),l=e.canonical.y-(s.canonical.y>>i),c=t.a5>>i;t.c7(a,0,c,c,0,0,1),t.O(a,a,[-r*c+o*t.a5,-n*c+l*t.a5,0])}else{const i=e.canonical.z-s.canonical.z,r=e.canonical.x-(e.canonical.x>>i<>i<>i)-s.canonical.x,l=(e.canonical.y>>i)-s.canonical.y,c=t.a5<i.maxzoom&&(r=i.maxzoom),r=i.minzoom&&!(null==n?void 0:n.dem);)n=this.findTileInCaches(e.scaledTo(r--).key);return n}findTileInCaches(e){let t=this.tileManager.getTileByID(e);return t||(t=this.tileManager._outOfViewCache.getByKey(e),t)}anyTilesAfterTime(e=Date.now()){return this._lastTilesetChange>=e}_isWithinTileRanges(e,t){return t[e.canonical.z]&&e.canonical.x>=t[e.canonical.z].minTileX&&e.canonical.x<=t[e.canonical.z].maxTileX&&e.canonical.y>=t[e.canonical.z].minTileY&&e.canonical.y<=t[e.canonical.z].maxTileY}}class ro{constructor(e,t,i){this._meshCache={},this.painter=e,this.tileManager=new io(t),this.options=i,this.exaggeration="number"==typeof i.exaggeration?i.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(e,i,r,n=t.a5){var s;if(!(i>=0&&i=0&&rr&&(r=Math.min(n.canonical.z,this.tileManager.maxzoom));return this.getElevationForLngLatZoom(e,r)}getElevation(e,i,r,n=t.a5){return this.getDEMElevation(e,i,r,n)*this.exaggeration}getTerrainData(e){if(!this._emptyDemTexture){const e=this.painter.context,i=new t.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new t.T(e,i,e.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new t.T(e,new t.R({width:1,height:1}),e.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=t.ar([])}const i=this.tileManager.getSourceTile(e,!0);if(i&&i.dem&&(!i.demTexture||i.needsTerrainPrepare)){const e=this.painter.context;i.demTexture=this.painter.getTileTexture(i.dem.stride),i.demTexture?i.demTexture.update(i.dem.getPixels(),{premultiply:!1}):i.demTexture=new t.T(e,i.dem.getPixels(),e.gl.RGBA,{premultiply:!1}),i.demTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),i.needsTerrainPrepare=!1}const r=i&&i.toString()+i.tileID.key+e.key;if(r&&!this._demMatrixCache[r]){const r=this.tileManager.getSource().maxzoom;let n=e.canonical.z-i.tileID.canonical.z;e.overscaledZ>e.canonical.z&&(e.canonical.z>=r?n=e.canonical.z-r:t.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const s=e.canonical.x-(e.canonical.x>>n<>n<>8<<4|t>>8,i[s+3]=0;const r=new t.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(i.buffer)),n=new t.T(e,r,e.gl.RGBA,{premultiply:!1});return n.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._coordsTexture=n,n}pointCoordinate(e){this.painter.maybeDrawDepthAndCoords(!0);const i=new Uint8Array(4),r=this.painter.context,n=r.gl,s=Math.round(e.x*this.painter.pixelRatio/devicePixelRatio),o=Math.round(e.y*this.painter.pixelRatio/devicePixelRatio),a=Math.round(this.painter.height/devicePixelRatio);r.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),n.readPixels(s,a-o-1,1,1,n.RGBA,n.UNSIGNED_BYTE,i),r.bindFramebuffer.set(null);const l=i[0]+(i[2]>>4<<8),c=i[1]+((15&i[2])<<8),h=this.coordsIndex[255-i[3]],u=h&&this.tileManager.getTileByID(h);if(!u)return null;const d=this._coordsTextureSize,p=(1<0,n=r&&0===e.canonical.y,s=r&&e.canonical.y===(1<e.id!==t),this._recentlyUsed.push(e.id)}stampObject(e){e.stamp=++this._stamp}getOrCreateFreeObject(){for(const t of this._recentlyUsed)if(!this._objects[t].inUse)return this._objects[t];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");const e=this._createObject(this._objects.length);return this._objects.push(e),e}freeObject(e){e.inUse=!1}freeAllObjects(){for(const e of this._objects)this.freeObject(e)}isFull(){return!(this._objects.length!e.inUse)}}const so={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0,"color-relief":!0};class oo{constructor(e,t){this.painter=e,this.terrain=t,this.pool=new no(e.context,30,t.tileManager.tileSize*t.qualityFactor)}destruct(){this.pool.destruct()}getTexture(e){return this.pool.getObjectForId(e.rtt[this._stacks.length-1].id).texture}prepareForRender(e,t){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.tileManager.getRenderableTiles(),this._renderableLayerIds=e._order.filter(i=>!e._layers[i].isHidden(t)),this._coordsAscending={};for(const i in e.tileManagers){this._coordsAscending[i]={};const t=e.tileManagers[i].getVisibleCoordinates(),r=e.tileManagers[i].getSource(),n=r instanceof te?r.terrainTileRanges:null;for(const e of t){const t=this.terrain.tileManager.getTerrainCoords(e,n);for(const e in t)this._coordsAscending[i][e]||(this._coordsAscending[i][e]=[]),this._coordsAscending[i][e].push(t[e])}}this._coordsAscendingStr={};for(const i of e._order){const t=e._layers[i],r=t.source;if(so[t.type]&&!this._coordsAscendingStr[r]){this._coordsAscendingStr[r]={};for(const e in this._coordsAscending[r])this._coordsAscendingStr[r][e]=this._coordsAscending[r][e].map(e=>e.key).sort().join()}}for(const i of this._renderableTiles)for(const e in this._coordsAscendingStr){const t=this._coordsAscendingStr[e][i.tileID.key];t&&t!==i.rttCoords[e]&&(i.rtt=[])}}renderLayer(e,i){if(e.isHidden(this.painter.transform.zoom))return!1;const r=Object.assign(Object.assign({},i),{isRenderingToTexture:!0}),n=e.type,s=this.painter,o=this._renderableLayerIds[this._renderableLayerIds.length-1]===e.id;if(so[n]&&(this._prevType&&so[this._prevType]||this._stacks.push([]),this._prevType=n,this._stacks[this._stacks.length-1].push(e.id),!o))return!0;if(so[this._prevType]||so[n]&&o){this._prevType=n;const e=this._stacks.length-1,i=this._stacks[e]||[];for(const n of this._renderableTiles){if(this.pool.isFull()&&(Zn(this.painter,this.terrain,this._rttTiles,r),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(n),n.rtt[e]){const t=this.pool.getObjectForId(n.rtt[e].id);if(t.stamp===n.rtt[e].stamp){this.pool.useObject(t);continue}}const o=this.pool.getOrCreateFreeObject();this.pool.useObject(o),this.pool.stampObject(o),n.rtt[e]={id:o.id,stamp:o.stamp},s.context.bindFramebuffer.set(o.fbo.framebuffer),s.context.clear({color:t.bp.transparent,stencil:0}),s.currentStencilSource=void 0;for(let e=0;e{this.startMove(e,h.mousePos(this.element,e)),h.addEventListener(window,"mousemove",this.mousemove),h.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=e=>{this.move(e,h.mousePos(this.element,e))},this.mouseup=e=>{this._rotatePitchHandler.dragEnd(e),this.offTemp()},this.touchstart=e=>{1!==e.targetTouches.length?this.reset():(this._startPos=this._lastPos=h.touchPos(this.element,e.targetTouches)[0],this.startMove(e,this._startPos),h.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),h.addEventListener(window,"touchend",this.touchend))},this.touchmove=e=>{1!==e.targetTouches.length?this.reset():(this._lastPos=h.touchPos(this.element,e.targetTouches)[0],this.move(e,this._lastPos))},this.touchend=e=>{0===e.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this._rotatePitchHandler.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10,this.element=i;const n=new ws;this._rotatePitchHandler=new _s({clickTolerance:3,move:(e,n)=>{const s=i.getBoundingClientRect(),o=new t.P((s.bottom-s.top)/2,(s.right-s.left)/2);return{bearingDelta:t.cx(new t.P(e.x,n.y),n,o),pitchDelta:r?-.5*(n.y-e.y):void 0}},moveStateManager:n,enable:!0,assignEvents:()=>{}}),this.map=e,h.addEventListener(i,"mousedown",this.mousedown),h.addEventListener(i,"touchstart",this.touchstart,{passive:!1}),h.addEventListener(i,"touchcancel",this.reset)}startMove(e,t){this._rotatePitchHandler.dragStart(e,t),h.disableDrag()}move(e,t){const i=this.map,{bearingDelta:r,pitchDelta:n}=this._rotatePitchHandler.dragMove(e,t)||{};r&&i.setBearing(i.getBearing()+r),n&&i.setPitch(i.getPitch()+n)}off(){const e=this.element;h.removeEventListener(e,"mousedown",this.mousedown),h.removeEventListener(e,"touchstart",this.touchstart,{passive:!1}),h.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),h.removeEventListener(window,"touchend",this.touchend),h.removeEventListener(e,"touchcancel",this.reset),this.offTemp()}offTemp(){h.enableDrag(),h.removeEventListener(window,"mousemove",this.mousemove),h.removeEventListener(window,"mouseup",this.mouseup),h.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),h.removeEventListener(window,"touchend",this.touchend)}}let po;function fo(e,i,r,n=!1){if(n||!r.getCoveringTilesDetailsProvider().allowWorldCopies())return null==e?void 0:e.wrap();const s=new t.V(e.lng,e.lat);if(e=new t.V(e.lng,e.lat),i){const n=new t.V(e.lng-360,e.lat),s=new t.V(e.lng+360,e.lat),o=r.locationToScreenPoint(e).distSqr(i);r.locationToScreenPoint(n).distSqr(i)180;){const t=r.locationToScreenPoint(e);if(t.x>=0&&t.y>=0&&t.x<=r.width&&t.y<=r.height)break;e.lng>r.center.lng?e.lng-=360:e.lng+=360}return e.lng!==s.lng&&r.isPointOnMapSurface(r.locationToScreenPoint(e))?e:s}const mo={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 _o(e,t,i){const r=e.classList;for(const n in mo)r.remove(`maplibregl-${i}-anchor-${n}`);r.add(`maplibregl-${i}-anchor-${t}`)}class go extends t.E{constructor(e){if(super(),this._onKeyPress=e=>{const t=e.code,i=e.charCode||e.keyCode;"Space"!==t&&"Enter"!==t&&32!==i&&13!==i||this.togglePopup()},this._onMapClick=e=>{const t=e.originalEvent.target,i=this._element;this._popup&&(t===i||i.contains(t))&&this.togglePopup()},this._update=e=>{if(!this._map)return;const t=this._map.loaded()&&!this._map.isMoving();("terrain"===(null==e?void 0:e.type)||"render"===(null==e?void 0:e.type)&&!t)&&this._map.once("render",this._update),this._lngLat=fo(this._lngLat,this._flatPos,this._map.transform),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationToScreenPoint(this._lngLat)._add(this._offset));let i="";"viewport"===this._rotationAlignment||"auto"===this._rotationAlignment?i=`rotateZ(${this._rotation}deg)`:"map"===this._rotationAlignment&&(i=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let r="";"viewport"===this._pitchAlignment||"auto"===this._pitchAlignment?r="rotateX(0deg)":"map"===this._pitchAlignment&&(r=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||e&&"moveend"!==e.type||(this._pos=this._pos.round()),h.setTransform(this._element,`${mo[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${r} ${i}`),a.frameAsync(new AbortController).then(()=>{this._updateOpacity(e&&"moveend"===e.type)}).catch(()=>{})},this._onMove=e=>{if(!this._isDragging){const t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new t.l("dragstart"))),this.fire(new t.l("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),"active"===this._state&&this.fire(new t.l("dragend")),this._state="inactive"},this._addDragHandler=e=>{this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos).add(this._offset),this._pointerdownPos=e.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=e&&e.anchor||"center",this._color=e&&e.color||"#3FB1CE",this._scale=e&&e.scale||1,this._draggable=e&&e.draggable||!1,this._clickTolerance=e&&e.clickTolerance||0,this._subpixelPositioning=e&&e.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=e&&e.rotation||0,this._rotationAlignment=e&&e.rotationAlignment||"auto",this._pitchAlignment=e&&e.pitchAlignment&&"auto"!==e.pitchAlignment?e.pitchAlignment:this._rotationAlignment,this.setOpacity(null==e?void 0:e.opacity,null==e?void 0:e.opacityWhenCovered),e&&e.element)this._element=e.element,this._offset=t.P.convert(e&&e.offset||[0,0]);else{this._defaultMarker=!0,this._element=h.create("div");const i=h.createNS("http://www.w3.org/2000/svg","svg"),r=41,n=27;i.setAttributeNS(null,"display","block"),i.setAttributeNS(null,"height",`${r}px`),i.setAttributeNS(null,"width",`${n}px`),i.setAttributeNS(null,"viewBox",`0 0 ${n} ${r}`);const s=h.createNS("http://www.w3.org/2000/svg","g");s.setAttributeNS(null,"stroke","none"),s.setAttributeNS(null,"stroke-width","1"),s.setAttributeNS(null,"fill","none"),s.setAttributeNS(null,"fill-rule","evenodd");const o=h.createNS("http://www.w3.org/2000/svg","g");o.setAttributeNS(null,"fill-rule","nonzero");const a=h.createNS("http://www.w3.org/2000/svg","g");a.setAttributeNS(null,"transform","translate(3.0, 29.0)"),a.setAttributeNS(null,"fill","#000000");const l=[{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(const e of l){const t=h.createNS("http://www.w3.org/2000/svg","ellipse");t.setAttributeNS(null,"opacity","0.04"),t.setAttributeNS(null,"cx","10.5"),t.setAttributeNS(null,"cy","5.80029008"),t.setAttributeNS(null,"rx",e.rx),t.setAttributeNS(null,"ry",e.ry),a.appendChild(t)}const c=h.createNS("http://www.w3.org/2000/svg","g");c.setAttributeNS(null,"fill",this._color);const u=h.createNS("http://www.w3.org/2000/svg","path");u.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"),c.appendChild(u);const d=h.createNS("http://www.w3.org/2000/svg","g");d.setAttributeNS(null,"opacity","0.25"),d.setAttributeNS(null,"fill","#000000");const p=h.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"),d.appendChild(p);const f=h.createNS("http://www.w3.org/2000/svg","g");f.setAttributeNS(null,"transform","translate(6.0, 7.0)"),f.setAttributeNS(null,"fill","#FFFFFF");const m=h.createNS("http://www.w3.org/2000/svg","g");m.setAttributeNS(null,"transform","translate(8.0, 8.0)");const _=h.createNS("http://www.w3.org/2000/svg","circle");_.setAttributeNS(null,"fill","#000000"),_.setAttributeNS(null,"opacity","0.25"),_.setAttributeNS(null,"cx","5.5"),_.setAttributeNS(null,"cy","5.5"),_.setAttributeNS(null,"r","5.4999962");const g=h.createNS("http://www.w3.org/2000/svg","circle");g.setAttributeNS(null,"fill","#FFFFFF"),g.setAttributeNS(null,"cx","5.5"),g.setAttributeNS(null,"cy","5.5"),g.setAttributeNS(null,"r","5.4999962"),m.appendChild(_),m.appendChild(g),o.appendChild(a),o.appendChild(c),o.appendChild(d),o.appendChild(f),o.appendChild(m),i.appendChild(o),i.setAttributeNS(null,"height",r*this._scale+"px"),i.setAttributeNS(null,"width",n*this._scale+"px"),this._element.appendChild(i),this._offset=t.P.convert(e&&e.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",e=>{e.preventDefault()}),this._element.addEventListener("mousedown",e=>{e.preventDefault()}),_o(this._element,this._anchor,"marker"),e&&e.className)for(const t of e.className.split(" "))this._element.classList.add(t);this._popup=null}addTo(e){return this.remove(),this._map=e,this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label",e._getUIString("Marker.Title")),this._element.hasAttribute("role")||this._element.setAttribute("role","button"),e.getCanvasContainer().appendChild(this._element),e.on("move",this._update),e.on("moveend",this._update),e.on("terrain",this._update),e.on("projectiontransition",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("projectiontransition",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),h.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.V.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),e){if(!("offset"in e.options)){const t=38.1,i=13.5,r=Math.abs(i)/Math.SQRT2;e.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-t],"bottom-left":[r,-1*(t-i+r)],"bottom-right":[-r,-1*(t-i+r)],left:[i,-1*(t-i)],right:[-i,-1*(t-i)]}:this._offset}this._popup=e,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(e){return this._subpixelPositioning=e,this}getPopup(){return this._popup}togglePopup(){const e=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:e?(e.isOpen()?e.remove():(e.setLngLat(this._lngLat),e.addTo(this._map)),this):this}_updateOpacity(e=!1){var i,r;const n=null===(i=this._map)||void 0===i?void 0:i.terrain,s=this._map.transform.isLocationOccluded(this._lngLat);if(!n||s){const e=s?this._opacityWhenCovered:this._opacity;return void(this._element.style.opacity!==e&&(this._element.style.opacity=e))}if(e)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}const o=this._map,a=o.terrain.depthAtPoint(this._pos),l=o.terrain.getElevationForLngLat(this._lngLat,o.transform);if(o.transform.lngLatToCameraDepth(this._lngLat,l)-a<.006)return void(this._element.style.opacity=this._opacity);const c=-this._offset.y/o.transform.pixelsPerMeter,h=Math.sin(o.getPitch()*Math.PI/180)*c,u=o.terrain.depthAtPoint(new t.P(this._pos.x,this._pos.y-this._offset.y)),d=o.transform.lngLatToCameraDepth(this._lngLat,l+h)-u>.006;(null===(r=this._popup)||void 0===r?void 0:r.isOpen())&&d&&this._popup.remove(),this._element.style.opacity=d?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(e){return this._offset=t.P.convert(e),this._update(),this}addClassName(e){this._element.classList.add(e)}removeClassName(e){this._element.classList.remove(e)}toggleClassName(e){return this._element.classList.toggle(e)}setDraggable(e){return this._draggable=!!e,this._map&&(e?(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(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e&&"auto"!==e?e:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(e,t){return(void 0===this._opacity||void 0===e&&void 0===t)&&(this._opacity="1",this._opacityWhenCovered="0.2"),void 0!==e&&(this._opacity=e),void 0!==t&&(this._opacityWhenCovered=t),this._map&&this._updateOpacity(!0),this}}const yo={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let xo=0,vo=!1;const bo={maxWidth:100,unit:"metric"};function wo(e,t,i){const r=i&&i.maxWidth||100,n=e._container.clientHeight/2,s=e._container.clientWidth/2,o=e.unproject([s-r/2,n]),a=e.unproject([s+r/2,n]),l=Math.round(e.project(a).x-e.project(o).x),c=Math.min(r,l,e._container.clientWidth),h=o.distanceTo(a);if(i&&"imperial"===i.unit){const i=3.2808*h;i>5280?To(t,c,i/5280,e._getUIString("ScaleControl.Miles")):To(t,c,i,e._getUIString("ScaleControl.Feet"))}else i&&"nautical"===i.unit?To(t,c,h/1852,e._getUIString("ScaleControl.NauticalMiles")):h>=1e3?To(t,c,h/1e3,e._getUIString("ScaleControl.Kilometers")):To(t,c,h,e._getUIString("ScaleControl.Meters"))}function To(e,t,i,r){const n=function(e){const t=Math.pow(10,`${Math.floor(e)}`.length-1);let i=e/t;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(e){const t=Math.pow(10,Math.ceil(-Math.log(e)/Math.LN10));return Math.round(e*t)/t}(i),t*i}(i);e.style.width=t*(n/i)+"px",e.innerHTML=`${n} ${r}`}const So={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1,locationOccludedOpacity:void 0},Po=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Io(e){if(e){if("number"==typeof e){const i=Math.round(Math.abs(e)/Math.SQRT2);return{center:new t.P(0,0),top:new t.P(0,e),"top-left":new t.P(i,i),"top-right":new t.P(-i,i),bottom:new t.P(0,-e),"bottom-left":new t.P(i,-i),"bottom-right":new t.P(-i,-i),left:new t.P(e,0),right:new t.P(-e,0)}}if(e instanceof t.P||Array.isArray(e)){const i=t.P.convert(e);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:t.P.convert(e.center||[0,0]),top:t.P.convert(e.top||[0,0]),"top-left":t.P.convert(e["top-left"]||[0,0]),"top-right":t.P.convert(e["top-right"]||[0,0]),bottom:t.P.convert(e.bottom||[0,0]),"bottom-left":t.P.convert(e["bottom-left"]||[0,0]),"bottom-right":t.P.convert(e["bottom-right"]||[0,0]),left:t.P.convert(e.left||[0,0]),right:t.P.convert(e.right||[0,0])}}return Io(new t.P(0,0))}const Mo=i;e.AJAXError=t.cI,e.Event=t.l,e.Evented=t.E,e.LngLat=t.V,e.MercatorCoordinate=t.a9,e.Point=t.P,e.addProtocol=t.cJ,e.config=t.c,e.removeProtocol=t.cK,e.AttributionControl=Js,e.BoxZoomHandler=us,e.CanvasSource=re,e.CooperativeGesturesHandler=Zs,e.DoubleClickZoomHandler=Vs,e.DragPanHandler=Us,e.DragRotateHandler=Gs,e.EdgeInsets=Nt,e.FullscreenControl=class extends t.E{constructor(e={}){super(),this._onFullscreenChange=()=>{var e;let t=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;null===(e=null==t?void 0:t.shadowRoot)||void 0===e?void 0:e.fullscreenElement;)t=t.shadowRoot.fullscreenElement;t===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,e&&e.container&&(e.container instanceof HTMLElement?this._container=e.container:t.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(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){h.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){const e=this._fullscreenButton=h.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);h.create("span","maplibregl-ctrl-icon",e).setAttribute("aria-hidden","true"),e.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){const e=this._getTitle();this._fullscreenButton.setAttribute("aria-label",e),this._fullscreenButton.title=e}_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 t.l("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new t.l("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()}},e.GeoJSONSource=ee,e.GeolocateControl=class extends t.E{constructor(e){super(),this._onSuccess=e=>{if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.l("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,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&&"OFF"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new t.l("geolocate",e)),this._finish()}},this._updateCamera=e=>{const i=new t.V(e.coords.longitude,e.coords.latitude),r=e.coords.accuracy,n=this._map.getBearing(),s=t.e({bearing:n},this.options.fitBoundsOptions),o=W.fromLngLat(i,r);this._map.fitBounds(o,s,{geolocateSource:!0})},this._updateMarker=e=>{if(e){const i=new t.V(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this._updateCircleRadiusIfNeeded()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onUpdate=()=>{this._updateCircleRadiusIfNeeded()},this._onError=e=>{if(this._map){if(1===e.code){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;const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&vo)return;this._setErrorState()}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new t.l("error",e)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",e=>e.preventDefault()),this._geolocateButton=h.create("button","maplibregl-ctrl-geolocate",this._container),h.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=e=>{if(this._map){if(!1===e){t.w("Geolocation support is not available so the GeolocateControl will be disabled.");const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e)}else{const e=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=h.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new go({element:this._dotElement}),this._circleElement=h.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new go({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onUpdate),this._map.on("move",this._onUpdate),this._map.on("rotate",this._onUpdate),this._map.on("pitch",this._onUpdate)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",e=>{const i=(null==e?void 0:e[0])instanceof ResizeObserverEntry;e.geolocateSource||"ACTIVE_LOCK"!==this._watchState||i||this._map.isZooming()||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new t.l("trackuserlocationend")),this.fire(new t.l("userlocationlostfocus")))})}},this.options=t.e({},yo,e)}onAdd(e){return this._map=e,this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return t._(this,arguments,void 0,function*(e=!1){if(void 0!==po&&!e)return po;if(void 0===window.navigator.permissions)return po=!!window.navigator.geolocation,po;try{const e=yield window.navigator.permissions.query({name:"geolocation"});po="denied"!==e.state}catch(t){po=!!window.navigator.geolocation}return po})}().then(e=>this._finishSetupUI(e)),this._container}onRemove(){void 0!==this._geolocationWatchID&&(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(),h.remove(this._container),this._map.off("zoom",this._onUpdate),this._map.off("move",this._onUpdate),this._map.off("rotate",this._onUpdate),this._map.off("pitch",this._onUpdate),this._map=void 0,xo=0,vo=!1}_isOutOfMapMaxBounds(e){const t=this._map.getMaxBounds(),i=e.coords;return t&&(i.longitudet.getEast()||i.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":case"BACKGROUND_ERROR":case"OFF":case void 0:break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadiusIfNeeded(){const e=this._userLocationDotMarker.getLngLat();if(!(this.options.showUserLocation&&this.options.showAccuracyCircle&&this._accuracy&&e))return;const t=this._map.project(e),i=this._map.unproject([t.x+100,t.y]),r=e.distanceTo(i)/100,n=2*this._accuracy/r;this._circleElement.style.width=`${n.toFixed(2)}px`,this._circleElement.style.height=`${n.toFixed(2)}px`}trigger(){if(!this._setup)return t.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 t.l("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":xo--,vo=!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 t.l("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 t.l("trackuserlocationstart")),this.fire(new t.l("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("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let e;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),xo++,xo>1?(e={maximumAge:6e5,timeout:0},vo=!0):(e=this.options.positionOptions,vo=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}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)}},e.GlobeControl=class{constructor(){this._toggleProjection=()=>{var e;const t=null===(e=this._map.getProjection())||void 0===e?void 0:e.type;this._map.setProjection("mercator"!==t&&t?{type:"mercator"}:{type:"globe"}),this._updateGlobeIcon()},this._updateGlobeIcon=()=>{var e;this._globeButton.classList.remove("maplibregl-ctrl-globe"),this._globeButton.classList.remove("maplibregl-ctrl-globe-enabled"),"globe"===(null===(e=this._map.getProjection())||void 0===e?void 0:e.type)?(this._globeButton.classList.add("maplibregl-ctrl-globe-enabled"),this._globeButton.title=this._map._getUIString("GlobeControl.Disable")):(this._globeButton.classList.add("maplibregl-ctrl-globe"),this._globeButton.title=this._map._getUIString("GlobeControl.Enable"))}}onAdd(e){return this._map=e,this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._globeButton=h.create("button","maplibregl-ctrl-globe",this._container),h.create("span","maplibregl-ctrl-icon",this._globeButton).setAttribute("aria-hidden","true"),this._globeButton.type="button",this._globeButton.addEventListener("click",this._toggleProjection),this._updateGlobeIcon(),this._map.on("styledata",this._updateGlobeIcon),this._container}onRemove(){h.remove(this._container),this._map.off("styledata",this._updateGlobeIcon),this._globeButton.removeEventListener("click",this._toggleProjection),this._map=void 0}},e.Hash=Xn,e.ImageSource=te,e.KeyboardHandler=Rs,e.LngLatBounds=W,e.LogoControl=Qs,e.Map=class extends Ys{constructor(e){var i,r;t.cG.mark(t.cH.create);const n=Object.assign(Object.assign(Object.assign({},co),e),{canvasContextAttributes:Object.assign(Object.assign({},co.canvasContextAttributes),e.canvasContextAttributes)});if(null!=n.minZoom&&null!=n.maxZoom&&n.minZoom>n.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=n.minPitch&&null!=n.maxPitch&&n.minPitch>n.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=n.minPitch&&n.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=n.maxPitch&&n.maxPitch>180)throw new Error("maxPitch must be less than or equal to 180");const s=new Ht,o=new Jt;if(void 0!==n.minZoom&&s.setMinZoom(n.minZoom),void 0!==n.maxZoom&&s.setMaxZoom(n.maxZoom),void 0!==n.minPitch&&s.setMinPitch(n.minPitch),void 0!==n.maxPitch&&s.setMaxPitch(n.maxPitch),void 0!==n.renderWorldCopies&&s.setRenderWorldCopies(n.renderWorldCopies),null!==n.transformConstrain&&s.setConstrainOverride(n.transformConstrain),super(s,o,{bearingSnap:n.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new eo,this._controls=[],this._mapId=t.af(),this._lostContextStyle={style:null,images:null},this._contextLost=e=>{e.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.painter.destroy();for(const t of Object.values(this.style._layers))if(t.type,t._listeners)for(const[e]of Object.entries(t._listeners));this._lostContextStyle=this._getStyleAndImages(),this.style.destroy(),this.style=null,this.fire(new t.l("webglcontextlost",{originalEvent:e}))},this._contextRestored=e=>{this._lostContextStyle.style&&this.setStyle(this._lostContextStyle.style,{diff:!1}),this._lostContextStyle.images&&(this.style.imageManager.images=this._lostContextStyle.images),this._setupPainter(),this.resize(),this._update(),this.fire(new t.l("webglcontextrestored",{originalEvent:e}))},this._onMapScroll=e=>{if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=n.interactive,this._maxTileCacheSize=n.maxTileCacheSize,this._maxTileCacheZoomLevels=n.maxTileCacheZoomLevels,this._canvasContextAttributes=Object.assign({},n.canvasContextAttributes),this._trackResize=!0===n.trackResize,this._bearingSnap=n.bearingSnap,this._centerClampedToGround=n.centerClampedToGround,this._refreshExpiredTiles=!0===n.refreshExpiredTiles,this._fadeDuration=n.fadeDuration,this._crossSourceCollisions=!0===n.crossSourceCollisions,this._collectResourceTiming=!0===n.collectResourceTiming,this._locale=Object.assign(Object.assign({},ao),n.locale),this._clickTolerance=n.clickTolerance,this._overridePixelRatio=n.pixelRatio,this._maxCanvasSize=n.maxCanvasSize,this._zoomLevelsToOverscale=n.experimentalZoomLevelsToOverscale,this.transformCameraUpdate=n.transformCameraUpdate,this.transformConstrain=n.transformConstrain,this.cancelPendingTileRequestsWhileZooming=!0===n.cancelPendingTileRequestsWhileZooming,void 0!==n.reduceMotion&&(a.prefersReducedMotion=n.reduceMotion),this._imageQueueHandle=g.addThrottleControl(()=>this.isMoving()),this._requestManager=new y(n.transformRequest),"string"==typeof n.container){if(this._container=document.getElementById(n.container),!this._container)throw new Error(`Container '${n.container}' not found.`)}else{if(!(n.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=n.container}if(n.maxBounds&&this.setMaxBounds(n.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)),this.on("moveend",()=>this._update(!1)),this.on("zoom",()=>this._update(!0)),this.on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}),this.once("idle",()=>{this._idleTriggered=!0}),"undefined"!=typeof window){addEventListener("online",this._onWindowOnline,!1);let e=!1;const t=Hn(e=>{this._trackResize&&!this._removed&&(this.resize(e),this.redraw())},50);this._resizeObserver=new ResizeObserver(i=>{e?t(i):e=!0}),this._resizeObserver.observe(this._container)}this.handlers=new Xs(this,n),this._hash=n.hash&&new Xn("string"==typeof n.hash&&n.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:n.center,elevation:n.elevation,zoom:n.zoom,bearing:n.bearing,pitch:n.pitch,roll:n.roll}),n.bounds&&(this.resize(),this.fitBounds(n.bounds,t.e({},n.fitBoundsOptions,{duration:0}))));const l="string"==typeof n.style||!("globe"===(null===(r=null===(i=n.style)||void 0===i?void 0:i.projection)||void 0===r?void 0:r.type));this.resize(null,l),this._localIdeographFontFamily=n.localIdeographFontFamily,this._validateStyle=n.validateStyle,n.style&&this.setStyle(n.style,{localIdeographFontFamily:n.localIdeographFontFamily}),n.attributionControl&&this.addControl(new Js("boolean"==typeof n.attributionControl?void 0:n.attributionControl)),n.maplibreLogo&&this.addControl(new Qs,n.logoPosition),this.on("style.load",()=>{if(l||this._resizeTransform(),this.transform.unmodified){const e=t.U(this.style.stylesheet,["center","zoom","bearing","pitch","roll"]);this.jumpTo(e)}}),this.on("data",e=>{this._update("style"===e.dataType),this.fire(new t.l(`${e.dataType}data`,e))}),this.on("dataloading",e=>{this.fire(new t.l(`${e.dataType}dataloading`,e))}),this.on("dataabort",e=>{this.fire(new t.l("sourcedataabort",e))})}_getMapId(){return this._mapId}setGlobalStateProperty(e,t){return this.style.setGlobalStateProperty(e,t),this._update(!0)}getGlobalState(){return this.style.getGlobalState()}addControl(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():"top-right"),!e||!e.onAdd)return this.fire(new t.k(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const r=e.onAdd(this);this._controls.push(e);const n=this._controlPositions[i];return-1!==i.indexOf("bottom")?n.insertBefore(r,n.firstChild):n.appendChild(r),this}removeControl(e){if(!e||!e.onRemove)return this.fire(new t.k(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this}hasControl(e){return this._controls.indexOf(e)>-1}coveringTiles(e){return Me(this.transform,e)}calculateCameraOptionsFromTo(e,t,i,r){return null==r&&this.terrain&&(r=this.terrain.getElevationForLngLat(i,this.transform)),super.calculateCameraOptionsFromTo(e,t,i,r)}resize(e,i=!0){const[r,n]=this._containerDimensions(),s=this._getClampedPixelRatio(r,n);if(this._resizeCanvas(r,n,s),this.painter.resize(r,n,s),this.painter.overLimit()){const e=this.painter.context.gl;this._maxCanvasSize=[e.drawingBufferWidth,e.drawingBufferHeight];const t=this._getClampedPixelRatio(r,n);this._resizeCanvas(r,n,t),this.painter.resize(r,n,t)}this._resizeTransform(i);const o=!this._moving;return o&&(this.stop(),this.fire(new t.l("movestart",e)).fire(new t.l("move",e))),this.fire(new t.l("resize",e)),o&&this.fire(new t.l("moveend",e)),this}_resizeTransform(e=!0){var t;const[i,r]=this._containerDimensions();this.transform.resize(i,r,e),null===(t=this._requestedCameraState)||void 0===t||t.resize(i,r,e)}_getClampedPixelRatio(e,t){const{0:i,1:r}=this._maxCanvasSize,n=this.getPixelRatio(),s=e*n,o=t*n;return Math.min(s>i?i/s:1,o>r?r/o:1)*n}getPixelRatio(){var e;return null!==(e=this._overridePixelRatio)&&void 0!==e?e:devicePixelRatio}setPixelRatio(e){this._overridePixelRatio=e,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(e){return this.transform.setMaxBounds(W.convert(e)),this._update()}setMinZoom(e){if((e=null==e?-2:e)>=-2&&e<=this.transform.maxZoom){const t=this._getTransformForUpdate();return t.setMinZoom(e),this._applyUpdatedTransform(t),this._update(),this}throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(e){if((e=null==e?22:e)>=this.transform.minZoom){const t=this._getTransformForUpdate();return t.setMaxZoom(e),this._applyUpdatedTransform(t),this._update(),this}throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(e){if((e=null==e?0:e)<0)throw new Error("minPitch must be greater than or equal to 0");if(e>=0&&e<=this.transform.maxPitch)return this.transform.setMinPitch(e),this._update(),this.getPitch()180)throw new Error("maxPitch must be less than or equal to 180");if(e>=this.transform.minPitch)return this.transform.setMaxPitch(e),this._update(),this.getPitch()>e&&this.setPitch(e),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(e){return this.transform.setRenderWorldCopies(e),this._update()}setTransformConstrain(e){return this.transform.setConstrainOverride(e),this._update()}project(e){return this.transform.locationToScreenPoint(t.V.convert(e),this.style&&this.terrain)}unproject(e){return this.transform.screenPointToLocation(t.P.convert(e),this.terrain)}isMoving(){var e;return this._moving||(null===(e=this.handlers)||void 0===e?void 0:e.isMoving())}isZooming(){var e;return this._zooming||(null===(e=this.handlers)||void 0===e?void 0:e.isZooming())}isRotating(){var e;return this._rotating||(null===(e=this.handlers)||void 0===e?void 0:e.isRotating())}_createDelegatedListener(e,t,i){if("mouseenter"===e||"mouseover"===e){let r=!1;const n=n=>{const s=t.filter(e=>this.getLayer(e)),o=0!==s.length?this.queryRenderedFeatures(n.point,{layers:s}):[];o.length?r||(r=!0,i.call(this,new ss(e,this,n.originalEvent,{features:o}))):r=!1};return{layers:t,listener:i,delegates:{mousemove:n,mouseout:()=>{r=!1}}}}if("mouseleave"===e||"mouseout"===e){let r=!1;const n=n=>{const s=t.filter(e=>this.getLayer(e));(0!==s.length?this.queryRenderedFeatures(n.point,{layers:s}):[]).length?r=!0:r&&(r=!1,i.call(this,new ss(e,this,n.originalEvent)))},s=t=>{r&&(r=!1,i.call(this,new ss(e,this,t.originalEvent)))};return{layers:t,listener:i,delegates:{mousemove:n,mouseout:s}}}{const r=e=>{const r=t.filter(e=>this.getLayer(e)),n=0!==r.length?this.queryRenderedFeatures(e.point,{layers:r}):[];n.length&&(e.features=n,i.call(this,e),delete e.features)};return{layers:t,listener:i,delegates:{[e]:r}}}}_saveDelegatedListener(e,t){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[e]=this._delegatedListeners[e]||[],this._delegatedListeners[e].push(t)}_removeDelegatedListener(e,t,i){if(!this._delegatedListeners||!this._delegatedListeners[e])return;const r=this._delegatedListeners[e];for(let n=0;nt.includes(e))){for(const t in e.delegates)this.off(t,e.delegates[t]);return void r.splice(n,1)}}}on(e,t,i){if(void 0===i)return super.on(e,t);const r="string"==typeof t?[t]:t,n=this._createDelegatedListener(e,r,i);this._saveDelegatedListener(e,n);for(const s in n.delegates)this.on(s,n.delegates[s]);return{unsubscribe:()=>{this._removeDelegatedListener(e,r,i)}}}once(e,t,i){if(void 0===i)return super.once(e,t);const r="string"==typeof t?[t]:t,n=this._createDelegatedListener(e,r,i);for(const s in n.delegates){const t=n.delegates[s];n.delegates[s]=(...n)=>{this._removeDelegatedListener(e,r,i),t(...n)}}this._saveDelegatedListener(e,n);for(const s in n.delegates)this.once(s,n.delegates[s]);return this}off(e,t,i){return void 0===i?super.off(e,t):(this._removeDelegatedListener(e,"string"==typeof t?[t]:t,i),this)}queryRenderedFeatures(e,i){if(!this.style)return[];let r;const n=e instanceof t.P||Array.isArray(e),s=n?e:[[0,0],[this.transform.width,this.transform.height]];if(i=i||(n?{}:e)||{},s instanceof t.P||"number"==typeof s[0])r=[t.P.convert(s)];else{const e=t.P.convert(s[0]),i=t.P.convert(s[1]);r=[e,new t.P(i.x,e.y),i,new t.P(e.x,i.y),e]}return this.style.queryRenderedFeatures(r,i,this.transform)}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}setStyle(e,i){return!1!==(i=t.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))}setTransformRequest(e){return this._requestManager.setTransformRequest(e),this}_getUIString(e){const t=this._locale[e];if(null==t)throw new Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){var i,r;if(t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(e,t));const n=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!e)),e?(this.style=new Fi(this,t||{}),this.style.setEventedParent(this,{style:this.style}),"string"==typeof e?this.style.loadURL(e,t,n):this.style.loadJSON(e,t,n),this):(null===(r=null===(i=this.style)||void 0===i?void 0:i.projection)||void 0===r||r.destroy(),delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Fi(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(e,i){if("string"==typeof e){const r=this._requestManager.transformRequest(e,"Style");t.j(r,new AbortController).then(e=>{this._updateDiff(e.data,i)}).catch(e=>{e&&this.fire(new t.k(e))})}else"object"==typeof e&&this._updateDiff(e,i)}_updateDiff(e,i){try{this.style.setState(e,i)&&this._update(!0)}catch(r){t.w(`Unable to perform style diff: ${r.message||r.error||r}. Rebuilding the style from scratch.`),this._updateStyle(e,i)}}getStyle(){if(this.style)return this.style.serialize()}_getStyleAndImages(){return this.style?{style:this.style.serialize(),images:this.style.imageManager.cloneImages()}:{style:null,images:{}}}isStyleLoaded(){return this.style?this.style.loaded():t.w("There is no style added to the map.")}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){const i=this.style&&this.style.tileManagers[e];if(void 0!==i)return i.loaded();this.fire(new t.k(new Error(`There is no tile manager with ID '${e}'`)))}setTerrain(e){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),e){const i=this.style.tileManagers[e.source];if(!i)throw new Error(`cannot load terrain, because there exists no source with ID: ${e.source}`);null===this.terrain&&i.reload();for(const r in this.style._layers){const i=this.style._layers[r];"hillshade"===i.type&&i.source===e.source&&t.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."),"color-relief"===i.type&&i.source===e.source&&t.w("You are using the same source for a color-relief layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new ro(this.painter,i,e),this.painter.renderToTexture=new oo(this.painter,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._terrainDataCallback=t=>{var i;"style"===t.dataType?this.terrain.tileManager.freeRtt():"source"===t.dataType&&t.tile&&(t.sourceId!==e.source||this._elevationFreeze||(this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))),"image"===(null===(i=t.source)||void 0===i?void 0:i.type)?this.terrain.tileManager.freeRtt():this.terrain.tileManager.freeRtt(t.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.tileManager.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0);return this.fire(new t.l("terrain",{terrain:e})),this}getTerrain(){var e,t;return null!==(t=null===(e=this.terrain)||void 0===e?void 0:e.options)&&void 0!==t?t:null}areTilesLoaded(){const e=this.style&&this.style.tileManagers;for(const t of Object.values(e))if(!t.areTilesLoaded())return!1;return!0}removeSource(e){return this.style.removeSource(e),this._update(!0)}getSource(e){return this.style.getSource(e)}setSourceTileLodParams(e,t,i){if(i){const r=this.getSource(i);if(!r)throw new Error(`There is no source with ID "${i}", cannot set LOD parameters`);r.calculateTileZoom=Se(Math.max(1,e),Math.max(1,t))}else for(const r in this.style.tileManagers)this.style.tileManagers[r].getSource().calculateTileZoom=Se(Math.max(1,e),Math.max(1,t));return this._update(!0),this}refreshTiles(e,i){const r=this.style.tileManagers[e];if(!r)throw new Error(`There is no tile manager with ID "${e}", cannot refresh tile`);void 0===i?r.reload(!0):r.refreshTiles(i.map(e=>new t.ac(e.z,e.x,e.y)))}addImage(e,i,r={}){const{pixelRatio:n=1,sdf:s=!1,stretchX:o,stretchY:l,content:c,textFitWidth:h,textFitHeight:u}=r;if(this._lazyInitEmptyStyle(),!(i instanceof HTMLImageElement||t.b(i))){if(void 0===i.width||void 0===i.height)return this.fire(new t.k(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`")));{const{width:r,height:a,data:d}=i,p=i;return this.style.addImage(e,{data:new t.R({width:r,height:a},new Uint8Array(d)),pixelRatio:n,stretchX:o,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:s,version:0,userImage:p}),p.onAdd&&p.onAdd(this,e),this}}{const{width:r,height:d,data:p}=a.getImageData(i);this.style.addImage(e,{data:new t.R({width:r,height:d},p),pixelRatio:n,stretchX:o,stretchY:l,content:c,textFitWidth:h,textFitHeight:u,sdf:s,version:0})}}updateImage(e,i){const r=this.style.getImage(e);if(!r)return this.fire(new t.k(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const n=i instanceof HTMLImageElement||t.b(i)?a.getImageData(i):i,{width:s,height:o,data:l}=n;if(void 0===s||void 0===o)return this.fire(new t.k(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(s!==r.data.width||o!==r.data.height)return this.fire(new t.k(new Error("The width and height of the updated image must be that same as the previous version of the image")));const c=!(i instanceof HTMLImageElement||t.b(i));return r.data.replace(l,c),this.style.updateImage(e,r),this}getImage(e){return this.style.getImage(e)}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new t.k(new Error("Missing required image id"))),!1)}removeImage(e){this.style.removeImage(e)}loadImage(e){return g.getImage(this._requestManager.transformRequest(e,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style.getLayer(e)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(e,t,i){return this.style.setLayerZoomRange(e,t,i),this._update(!0)}setFilter(e,t,i={}){return this.style.setFilter(e,t,i),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,i,r={}){return this.style.setPaintProperty(e,t,i,r),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,i,r={}){return this.style.setLayoutProperty(e,t,i,r),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setGlyphs(e,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(e,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(e,t,i={}){return this._lazyInitEmptyStyle(),this.style.addSprite(e,t,i,e=>{e||this._update(!0)}),this}removeSprite(e){return this._lazyInitEmptyStyle(),this.style.removeSprite(e),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(e,t,e=>{e||this._update(!0)}),this}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setSky(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSky(e,t),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let e=0,t=0;return this._container&&(e=this._container.clientWidth||400,t=this._container.clientHeight||300),[e,t]}_setupContainer(){const e=this._container;e.classList.add("maplibregl-map");const t=this._canvasContainer=h.create("div","maplibregl-canvas-container",e);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=h.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");const i=this._containerDimensions(),r=this._getClampedPixelRatio(i[0],i[1]);this._resizeCanvas(i[0],i[1],r);const n=this._controlContainer=h.create("div","maplibregl-control-container",e),s=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(e=>{s[e]=h.create("div",`maplibregl-ctrl-${e} `,n)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(e,t,i){this._canvas.width=Math.floor(i*e),this._canvas.height=Math.floor(i*t),this._canvas.style.width=`${e}px`,this._canvas.style.height=`${t}px`}_setupPainter(){const e=Object.assign(Object.assign({},this._canvasContextAttributes),{alpha:!0,depth:!0,stencil:!0,premultipliedAlpha:!0});let t=null;this._canvas.addEventListener("webglcontextcreationerror",i=>{t={requestedAttributes:e},i&&(t.statusMessage=i.statusMessage,t.type=i.type)},{once:!0});let i=null;if(i=this._canvasContextAttributes.contextType?this._canvas.getContext(this._canvasContextAttributes.contextType,e):this._canvas.getContext("webgl2",e)||this._canvas.getContext("webgl",e),!i){const e="Failed to initialize WebGL";throw t?(t.message=e,new Error(JSON.stringify(t))):new Error(e)}this.painter=new Wn(i,this.transform),u.testSupport(i)}migrateProjection(e,i){super.migrateProjection(e,i),this.painter.transform=e,this.fire(new t.l("projectiontransition",{newProjection:this.style.projection.name}))}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||e,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e)}_render(e){var i,r,n,s,o;const a=this._idleTriggered?this._fadeDuration:0,l=(null===(i=this.style.projection)||void 0===i?void 0:i.transitionState)>0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let h=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const e=this.transform.zoom,i=c();this.style.zoomHistory.update(e,i);const r=new t.H(e,{now:i,fadeDuration:a,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),n=r.crossFadingFactor();1===n&&n===this._crossFadingFactor||(h=!0,this._crossFadingFactor=n),this.style.update(r)}const u=(null===(r=this.style.projection)||void 0===r?void 0:r.transitionState)>0!==l;null===(n=this.style.projection)||void 0===n||n.setErrorQueryLatitudeDegrees(this.transform.center.lat),this.transform.setTransitionState(null===(s=this.style.projection)||void 0===s?void 0:s.transitionState,null===(o=this.style.projection)||void 0===o?void 0:o.latitudeErrorCorrectionRadians),this.style&&(this._sourcesDirty||u)&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.tileManager.update(this.transform,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),!this._elevationFreeze&&this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0)),this._placementDirty=this.style&&this.style._updatePlacement(this.transform,this.showCollisionBoxes,a,this._crossSourceCollisions,u),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:a,showPadding:this.showPadding}),this.fire(new t.l("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,t.cG.mark(t.cH.load),this.fire(new t.l("load"))),this.style&&(this.style.hasTransitions()||h)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const d=this._sourcesDirty||this._styleDirty||this._placementDirty;return d||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.l("idle")),!this._loaded||this._fullyLoaded||d||(this._fullyLoaded=!0,t.cG.mark(t.cH.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var e;this._hash&&this._hash.remove();for(const t of this._controls)t.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),"undefined"!=typeof window&&removeEventListener("online",this._onWindowOnline,!1),g.removeThrottleControl(this._imageQueueHandle),null===(e=this._resizeObserver)||void 0===e||e.disconnect();const i=this.painter.context.gl.getExtension("WEBGL_lose_context");(null==i?void 0:i.loseContext)&&i.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),h.remove(this._canvasContainer),h.remove(this._controlContainer),this._container.removeEventListener("scroll",this._onMapScroll,!1),this._container.classList.remove("maplibregl-map"),t.cG.clearMetrics(),this._removed=!0,this.fire(new t.l("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,a.frame(this._frameRequest,e=>{t.cG.frame(e),this._frameRequest=null;try{this._render(e)}catch(i){if(!t.Z(i)&&i.message!==an)throw i}},()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update())}get showPadding(){return!!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update())}get repaint(){return!!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(e){this._vertices=e,this._update()}get version(){return lo}getCameraTargetElevation(){return this.transform.elevation}getProjection(){return this.style.getProjection()}setProjection(e){return this._lazyInitEmptyStyle(),this.style.setProjection(e),this._update(!0)}},e.MapMouseEvent=ss,e.MapTouchEvent=os,e.MapWheelEvent=as,e.Marker=go,e.NavigationControl=class{constructor(e){this._updateZoomButtons=()=>{const e=this._map.getZoom(),t=e===this._map.getMaxZoom(),i=e===this._map.getMinZoom();this._zoomInButton.disabled=t,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute("aria-disabled",t.toString()),this._zoomOutButton.setAttribute("aria-disabled",i.toString())},this._rotateCompassArrow=()=>{this._compassIcon.style.transform=this.options.visualizePitch&&this.options.visualizeRoll?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateZ(${-this._map.transform.roll}deg) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizeRoll?`rotate(${-this._map.transform.bearing-this._map.transform.roll}deg)`:`rotate(${-this._map.transform.bearing}deg)`},this._setButtonTitle=(e,t)=>{const i=this._map._getUIString(`NavigationControl.${t}`);e.title=i,e.setAttribute("aria-label",i)},this.options=t.e({},ho,e),this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",e=>e.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",e=>this._map.zoomIn({},{originalEvent:e})),h.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",e=>this._map.zoomOut({},{originalEvent:e})),h.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",e=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:e}):this._map.resetNorth({},{originalEvent:e})}),this._compassIcon=h.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(e){return this._map=e,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.options.visualizeRoll&&this._map.on("roll",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new uo(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){h.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.options.visualizeRoll&&this._map.off("roll",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(e,t){const i=h.create("button",e,this._container);return i.type="button",i.addEventListener("click",t),i}},e.Popup=class extends t.E{constructor(e){super(),this._updateOpacity=()=>{void 0!==this.options.locationOccludedOpacity&&(this._container.style.opacity=this._map.transform.isLocationOccluded(this.getLngLat())?`${this.options.locationOccludedOpacity}`:"")},this.remove=()=>(this._content&&h.remove(this._content),this._container&&(h.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 t.l("close"))),this),this._onMouseUp=e=>{this._update(e.point)},this._onMouseMove=e=>{this._update(e.point)},this._onDrag=e=>{this._update(e.point)},this._update=e=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=h.create("div","maplibregl-popup",this._map.getContainer()),this._tip=h.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(const e of this.options.className.split(" "))this._container.classList.add(e);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=fo(this._lngLat,this._flatPos,this._map.transform,this._trackPointer),this._trackPointer&&!e)return;const t=this._flatPos=this._pos=this._trackPointer&&e?e:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&e?e:this._map.transform.locationToScreenPoint(this._lngLat));let i=this.options.anchor;const r=Io(this.options.offset);if(!i){const e=this._container.offsetWidth,n=this._container.offsetHeight;let s;s=t.y+r.bottom.ythis._map.transform.height-n?["bottom"]:[],t.xthis._map.transform.width-e/2&&s.push("right"),i=0===s.length?"bottom":s.join("-")}let n=t.add(r[i]);this.options.subpixelPositioning||(n=n.round()),h.setTransform(this._container,`${mo[i]} translate(${n.x}px,${n.y}px)`),_o(this._container,i,"popup"),this._updateOpacity()},this._onClose=()=>{this.remove()},this.options=t.e(Object.create(So),e)}addTo(e){return this._map&&this.remove(),this._map=e,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 t.l("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.V.convert(e),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(e){return this.setDOMContent(document.createTextNode(e))}setHTML(e){const t=document.createDocumentFragment(),i=document.createElement("body");let r;for(i.innerHTML=e;r=i.firstChild,r;)t.appendChild(r);return this.setDOMContent(t)}getMaxWidth(){var e;return null===(e=this._container)||void 0===e?void 0:e.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=h.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(e),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(e){return this._container&&this._container.classList.add(e),this}removeClassName(e){return this._container&&this._container.classList.remove(e),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){if(this._container)return this._container.classList.toggle(e)}setSubpixelPositioning(e){this.options.subpixelPositioning=e}_createCloseButton(){this.options.closeButton&&(this._closeButton=h.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;const e=this._container.querySelector(Po);e&&e.focus()}},e.RasterDEMTileSource=K,e.RasterTileSource=Y,e.ScaleControl=class{constructor(e){this._onMove=()=>{wo(this._map,this._container,this.options)},this.setUnit=e=>{this.options.unit=e,wo(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},bo),e)}getDefaultPosition(){return"bottom-left"}onAdd(e){return this._map=e,this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-scale",e.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){h.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},e.ScrollZoomHandler=Os,e.Style=Fi,e.TerrainControl=class{constructor(e){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=e}onAdd(e){return this._map=e,this._container=h.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=h.create("button","maplibregl-ctrl-terrain",this._container),h.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(){h.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},e.TwoFingersTouchPitchHandler=zs,e.TwoFingersTouchRotateHandler=As,e.TwoFingersTouchZoomHandler=Es,e.TwoFingersTouchZoomRotateHandler=qs,e.VectorTileSource=X,e.VideoSource=ie,e.addSourceType=(e,i)=>t._(void 0,void 0,void 0,function*(){if(se(e))throw new Error(`A source type called "${e}" already exists.`);var t;t=i,ne[e]=t}),e.clearPrewarmedResources=function(){const e=B;e&&e.isPreloaded()&&1===e.numActive()&&(e.release(R),B=null)},e.createTileMesh=ci,e.getMaxParallelImageRequests=function(){return t.c.MAX_PARALLEL_IMAGE_REQUESTS},e.getRTLTextPluginStatus=function(){return ce().getRTLTextPluginStatus()},e.getVersion=function(){return Mo},e.getWorkerCount=function(){return L.workerCount},e.getWorkerUrl=function(){return t.c.WORKER_URL},e.importScriptInWorkers=function(e){return N().broadcast("IS",e)},e.isTimeFrozen=function(){return l.isFrozen()},e.now=c,e.prewarm=function(){V().acquire(R)},e.restoreNow=function(){l.restoreNow()},e.setMaxParallelImageRequests=function(e){t.c.MAX_PARALLEL_IMAGE_REQUESTS=e},e.setNow=function(e){l.setNow(e)},e.setRTLTextPlugin=function(e,t){return ce().setRTLTextPlugin(e,t)},e.setWorkerCount=function(e){L.workerCount=e},e.setWorkerUrl=function(e){t.c.WORKER_URL=e}}),e}()),s.exports);const a=r({__proto__:null,default:i(o)},[o]);export{a as m}; diff --git a/frontend/dist/assets/polling.worker-DFp1Qyu0.js b/frontend/dist/assets/polling.worker-DFp1Qyu0.js new file mode 100644 index 00000000..0bf632c9 --- /dev/null +++ b/frontend/dist/assets/polling.worker-DFp1Qyu0.js @@ -0,0 +1 @@ +!function(){"use strict";let e=null,t=null,s=!0;const a=new Map;let r=0,n=null,o=null;async function c(e){const s={};t&&(s.Authorization=`Bearer ${t}`);const a=new AbortController,r=setTimeout(()=>a.abort(),15e3);try{return await fetch(e,{headers:s,signal:a.signal})}finally{clearTimeout(r)}}async function l(){if(e)try{const t=`${e.apiBaseUrl}/api/stats`,s=await c(t);if(!s.ok)throw new Error(`API error: ${s.status}`);const a=await s.json();self.postMessage({type:"stats",data:a,timestamp:Date.now()})}catch(t){self.postMessage({type:"error",source:"stats",error:t instanceof Error?t.message:"Unknown error"})}}async function i(){if(e&&s)try{const t=`${e.apiBaseUrl}/api/recent_packets?limit=100`,s=await c(t);if(!s.ok)throw new Error(`API error: ${s.status}`);const n=await s.json(),o=n.data??n.packets??[],l=[];for(const e of o){const t=e.packet_hash;if(t&&!a.has(t)){a.set(t,e),l.push(e);const s=e.timestamp??0;s>r&&(r=s)}}a.size>75e3&&function(){const e=Array.from(a.values()).sort((e,t)=>(e.timestamp??0)-(t.timestamp??0)),t=e.length-75e3;for(let s=0;s0&&self.postMessage({type:"packets",newPackets:l,totalCount:a.size,newestTimestamp:r})}catch(t){self.postMessage({type:"error",source:"packets",error:t instanceof Error?t.message:"Unknown error"})}}function p(){n&&(clearInterval(n),n=null),o&&(clearInterval(o),o=null)}self.onmessage=c=>{const f=c.data;switch(f.type){case"init":e=f.config,t=f.config.authToken??null,e&&(p(),n=setInterval(l,e.statsIntervalMs),o=setInterval(i,e.packetsIntervalMs),l(),i()),self.postMessage({type:"ready"});break;case"setAuth":t=f.token;break;case"setLiveMode":s=f.enabled;break;case"forceRefresh":l(),i();break;case"clearCache":a.clear(),r=0,self.postMessage({type:"packetsReset",packets:[],newestTimestamp:0});break;case"stop":p()}}}(); diff --git a/frontend/dist/assets/recharts-7RsRrQtf.js b/frontend/dist/assets/recharts-cqZ_RWsW.js similarity index 99% rename from frontend/dist/assets/recharts-7RsRrQtf.js rename to frontend/dist/assets/recharts-cqZ_RWsW.js index fcdb1241..5baa0d82 100644 --- a/frontend/dist/assets/recharts-7RsRrQtf.js +++ b/frontend/dist/assets/recharts-cqZ_RWsW.js @@ -1 +1 @@ -var e=Object.defineProperty,t=(t,r,n)=>((t,r,n)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n)(t,"symbol"!=typeof r?r+"":r,n);import{r,a as n,b as i,R as a,s as o,P as c}from"./vendor-react-CUlQ5-Td.js";import{g as l}from"./deckgl-MTXp-Y3t.js";function u(e){var t,r,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var i=e.length;for(t=0;t{var{children:n,width:i,height:a,viewBox:o,className:c,style:l,title:u,desc:f}=e,d=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var{children:n,className:i}=e,a=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0))throw new Error(`invalid digits: ${e}`);if(t>15)return z;const r=10**t;return function(e){this._+=e[0];for(let t=1,n=e.length;tD)if(Math.abs(s*c-l*u)>D&&i){let d=r-a,p=n-o,h=c*c+l*l,y=d*d+p*p,v=Math.sqrt(h),g=Math.sqrt(f),m=i*Math.tan((C-Math.acos((h+f-y)/(2*v*g)))/2),b=m/g,x=m/v;Math.abs(b-1)>D&&this._append`L${e+b*u},${t+b*s}`,this._append`A${i},${i},0,0,${+(s*d>u*p)},${this._x1=e+x*c},${this._y1=t+x*l}`}else this._append`L${this._x1=e},${this._y1=t}`}arc(e,t,r,n,i,a){if(e=+e,t=+t,a=!!a,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(n),c=r*Math.sin(n),l=e+o,u=t+c,s=1^a,f=a?n-i:i-n;null===this._x1?this._append`M${l},${u}`:(Math.abs(this._x1-l)>D||Math.abs(this._y1-u)>D)&&this._append`L${l},${u}`,r&&(f<0&&(f=f%I+I),f>N?this._append`A${r},${r},0,1,${s},${e-o},${t-c}A${r},${r},0,1,${s},${this._x1=l},${this._y1=u}`:f>D&&this._append`A${r},${r},0,${+(f>=C)},${s},${this._x1=e+r*Math.cos(i)},${this._y1=t+r*Math.sin(i)}`)}rect(e,t,r,n){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${r=+r}v${+n}h${-r}Z`}toString(){return this._}}function L(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(null==r)t=null;else{const e=Math.floor(r);if(!(e>=0))throw new RangeError(`invalid digits: ${r}`);t=e}return e},()=>new R(t)}function B(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function K(e){this._context=e}function F(e){return new K(e)}function U(e){return e[0]}function W(e){return e[1]}function $(e,t){var r=A(!0),n=null,i=F,a=null,o=L(c);function c(c){var l,u,s,f=(c=B(c)).length,d=!1;for(null==n&&(a=i(s=o())),l=0;l<=f;++l)!(l=f;--d)c.point(g[d],m[d]);c.lineEnd(),c.areaEnd()}v&&(g[s]=+e(p,s,u),m[s]=+t(p,s,u),c.point(n?+n(p,s,u):g[s],r?+r(p,s,u):m[s]))}if(h)return c=null,h+""||null}function s(){return $().defined(i).curve(o).context(a)}return e="function"==typeof e?e:void 0===e?U:A(+e),t="function"==typeof t?t:A(void 0===t?0:+t),r="function"==typeof r?r:void 0===r?W:A(+r),u.x=function(t){return arguments.length?(e="function"==typeof t?t:A(+t),n=null,u):e},u.x0=function(t){return arguments.length?(e="function"==typeof t?t:A(+t),u):e},u.x1=function(e){return arguments.length?(n=null==e?null:"function"==typeof e?e:A(+e),u):n},u.y=function(e){return arguments.length?(t="function"==typeof e?e:A(+e),r=null,u):t},u.y0=function(e){return arguments.length?(t="function"==typeof e?e:A(+e),u):t},u.y1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:A(+e),u):r},u.lineX0=u.lineY0=function(){return s().x(e).y(t)},u.lineY1=function(){return s().x(e).y(r)},u.lineX1=function(){return s().x(n).y(t)},u.defined=function(e){return arguments.length?(i="function"==typeof e?e:A(!!e),u):i},u.curve=function(e){return arguments.length?(o=e,null!=a&&(c=o(a)),u):o},u.context=function(e){return arguments.length?(null==e?a=c=null:c=o(a=e),u):a},u}K.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};class V{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t)}this._x0=e,this._y0=t}}const q={draw(e,t){const r=_(t/M);e.moveTo(r,0),e.arc(0,0,r,0,T)}},Y={draw(e,t){const r=_(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}},G=_(1/3),X=2*G,Z={draw(e,t){const r=_(t/X),n=r*G;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}},Q={draw(e,t){const r=_(t),n=-r/2;e.rect(n,n,r,r)}},J=k(M/10)/k(7*M/10),ee=k(T/10)*J,te=-S(T/10)*J,re={draw(e,t){const r=_(.8908130915292852*t),n=ee*r,i=te*r;e.moveTo(0,-r),e.lineTo(n,i);for(let a=1;a<5;++a){const t=T*a/5,o=S(t),c=k(t);e.lineTo(c*r,-o*r),e.lineTo(o*n-c*i,c*n+o*i)}e.closePath()}},ne=_(3),ie={draw(e,t){const r=-_(t/(3*ne));e.moveTo(0,2*r),e.lineTo(-ne*r,-r),e.lineTo(ne*r,-r),e.closePath()}},ae=-.5,oe=_(3)/2,ce=1/_(12),le=3*(ce/2+1),ue={draw(e,t){const r=_(t/le),n=r/2,i=r*ce,a=n,o=r*ce+r,c=-a,l=o;e.moveTo(n,i),e.lineTo(a,o),e.lineTo(c,l),e.lineTo(ae*n-oe*i,oe*n+ae*i),e.lineTo(ae*a-oe*o,oe*a+ae*o),e.lineTo(ae*c-oe*l,oe*c+ae*l),e.lineTo(ae*n+oe*i,ae*i-oe*n),e.lineTo(ae*a+oe*o,ae*o-oe*a),e.lineTo(ae*c+oe*l,ae*l-oe*c),e.closePath()}};function se(){}function fe(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function de(e){this._context=e}function pe(e){this._context=e}function he(e){this._context=e}function ye(e){this._context=e}function ve(e){return e<0?-1:1}function ge(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),o=(r-e._y1)/(i||n<0&&-0),c=(a*i+o*n)/(n+i);return(ve(a)+ve(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(c))||0}function me(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function be(e,t,r){var n=e._x0,i=e._y0,a=e._x1,o=e._y1,c=(a-n)/3;e._context.bezierCurveTo(n+c,i+c*t,a-c,o-c*r,a,o)}function xe(e){this._context=e}function we(e){this._context=new Oe(e)}function Oe(e){this._context=e}function Pe(e){this._context=e}function je(e){var t,r,n=e.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t1)for(var r,n,i,a=1,o=e[t[0]],c=o.length;a=0;)r[t]=t;return r}function ke(e,t){return e[t]}function _e(e){const t=[];return t.key=e,t}de.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:fe(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:fe(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},pe.prototype={areaStart:se,areaEnd:se,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:fe(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},he.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:fe(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},ye.prototype={areaStart:se,areaEnd:se,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}},xe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:be(this,this._t0,me(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(t=+t,(e=+e)!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,be(this,me(this,r=ge(this,e,t)),r);break;default:be(this,this._t0,r=ge(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}},(we.prototype=Object.create(xe.prototype)).point=function(e,t){xe.prototype.point.call(this,t,e)},Oe.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)}},Pe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),2===r)this._context.lineTo(e[1],t[1]);else for(var n=je(e),i=je(t),a=0,o=1;o=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}}this._x=e,this._y=t}};var Me,Te={},Ce={};function Ie(){return Me||(Me=1,e=Ce,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isUnsafeProperty=function(e){return"__proto__"===e}),Ce;var e}var De,Ne={};function ze(){return De||(De=1,e=Ne,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isDeepKey=function(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e.includes(".")||e.includes("[")||e.includes("]")}}),Ne;var e}var Re,Le={};function Be(){return Re||(Re=1,e=Le,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.toKey=function(e){var t;return"string"==typeof e||"symbol"==typeof e?e:Object.is(null==(t=null==e?void 0:e.valueOf)?void 0:t.call(e),-0)?"-0":String(e)}),Le;var e}var Ke,Fe,Ue,We,$e,He={},Ve={};function qe(){return Ke||(Ke=1,e=Ve,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.toString=function e(t){if(null==t)return"";if("string"==typeof t)return t;if(Array.isArray(t))return t.map(e).join(",");const r=String(t);return"0"===r&&Object.is(Number(t),-0)?"-0":r}),Ve;var e}function Ye(){return Fe||(Fe=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=qe(),r=Be();e.toPath=function(e){if(Array.isArray(e))return e.map(r.toKey);if("symbol"==typeof e)return[e];const n=[],i=(e=t.toString(e)).length;if(0===i)return n;let a=0,o="",c="",l=!1;for(46===e.charCodeAt(0)&&(n.push(""),a++);a0===e?0:e>0?1:-1,Je=e=>"number"==typeof e&&e!=+e,et=e=>"string"==typeof e&&e.indexOf("%")===e.length-1,tt=e=>("number"==typeof e||e instanceof Number)&&!Je(e),rt=e=>tt(e)||"string"==typeof e,nt=0,it=e=>{var t=++nt;return"".concat(e||"").concat(t)},at=function(e,t){var r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!tt(e)&&"string"!=typeof e)return n;if(et(e)){if(null==t)return n;var a=e.indexOf("%");r=t*parseFloat(e.slice(0,a))/100}else r=+e;return Je(r)&&(r=n),i&&null!=t&&r>t&&(r=t),r},ot=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;ne&&("function"==typeof t?t(e):Ze(e,t))===r)}var ut=e=>null==e,st=e=>ut(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function ft(e){return null!=e}function dt(){}var pt=["type","size","sizeType"];function ht(){return ht=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{type:t="circle",size:n=64,sizeType:i="area"}=e,a=vt(vt({},function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var e=(e=>{var t="symbol".concat(st(e));return mt[t]||q})(o),t=function(e,t){let r=null,n=L(i);function i(){let i;if(r||(r=i=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),i)return r=null,i+""||null}return e="function"==typeof e?e:A(e||q),t="function"==typeof t?t:A(void 0===t?64:+t),i.type=function(t){return arguments.length?(e="function"==typeof t?t:A(t),i):e},i.size=function(e){return arguments.length?(t="function"==typeof e?e:A(+e),i):t},i.context=function(e){return arguments.length?(r=null==e?null:e,i):r},i}().type(e).size(((e,t,r)=>{if("area"===t)return e;switch(r){case"cross":return 5*e*e/9;case"diamond":return.5*e*e/Math.sqrt(3);case"square":return e*e;case"star":var n=18*bt;return 1.25*e*e*(Math.tan(n)-Math.tan(2*n)*Math.tan(n)**2);case"triangle":return Math.sqrt(3)*e*e/4;case"wye":return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}})(n,i,o)),r=t();if(null!==r)return r})()})):null};xt.registerSymbol=(e,t)=>{mt["symbol".concat(st(e))]=t};var wt=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,Ot=(e,t)=>{if(!e||"function"==typeof e||"boolean"==typeof e)return null;var n=e;if(r.isValidElement(e)&&(n=e.props),"object"!=typeof n&&"function"!=typeof n)return null;var i={};return Object.keys(n).forEach(e=>{d(e)&&(i[e]=t=>n[e](n,t))}),i},Pt=(e,t,r)=>{if(null===e||"object"!=typeof e&&"function"!=typeof e)return null;var n=null;return Object.keys(e).forEach(i=>{var a=e[i];d(i)&&"function"==typeof a&&(n||(n={}),n[i]=((e,t,r)=>n=>(e(t,r,n),null))(a,t,r))}),n};function jt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Et(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function At(e,t){var r=function(e){for(var t=1;t(void 0===e[t]&&void 0!==n[t]&&(e[t]=n[t]),e),r)}function St(){return St=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var d=t.formatter||a,p=s({"recharts-legend-item":!0,["legend-item-".concat(i)]:!0,inactive:t.inactive});if("none"===t.type)return null;var h=t.inactive?o:t.color,y=d?d(t.value,t,i):t.value;return r.createElement("li",St({className:p,style:u,key:"legend-item-".concat(i)},Pt(e,t,i)),r.createElement(w,{width:n,height:n,viewBox:l,style:f,"aria-label":"".concat(y," legend icon")},r.createElement(Ct,{data:t,iconType:c,inactiveColor:o})),r.createElement("span",{className:"recharts-legend-item-text",style:{color:h}},y))})}var Dt,Nt=e=>{var t=At(e,Tt),{payload:n,layout:i,align:a}=t;if(!n||!n.length)return null;var o={padding:0,margin:0,textAlign:"horizontal"===i?a:"left"};return r.createElement("ul",{className:"recharts-default-legend",style:o},r.createElement(It,St({},t,{payload:n})))},zt={},Rt={};function Lt(){return Dt||(Dt=1,e=Rt,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.uniqBy=function(e,t){const r=new Map;for(let n=0;n=0}),Vt;var e}function Yt(){return Wt||(Wt=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=qt();e.isArrayLike=function(e){return null!=e&&"function"!=typeof e&&t.isLength(e.length)}}(Ht)),Ht}var Gt,Xt,Zt={};function Qt(){return Gt||(Gt=1,e=Zt,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isObjectLike=function(e){return"object"==typeof e&&null!==e}),Zt;var e}function Jt(){return Xt||(Xt=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Yt(),r=Qt();e.isArrayLikeObject=function(e){return r.isObjectLike(e)&&t.isArrayLike(e)}}($t)),$t}var er,tr={},rr={};function nr(){return er||(er=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Ge();e.property=function(e){return function(r){return t.get(r,e)}}}(rr)),rr}var ir,ar={},or={},cr={},lr={};function ur(){return ir||(ir=1,e=lr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isObject=function(e){return null!==e&&("object"==typeof e||"function"==typeof e)}),lr;var e}var sr,fr={};function dr(){return sr||(sr=1,e=fr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isPrimitive=function(e){return null==e||"object"!=typeof e&&"function"!=typeof e}),fr;var e}var pr,hr,yr,vr={};function gr(){return pr||(pr=1,e=vr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.eq=function(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}),vr;var e}function mr(){return hr||(hr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ur(),r=dr(),n=gr();function i(e,c,l,u){if(c===e)return!0;switch(typeof c){case"object":return function(e,t,n,i){if(null==t)return!0;if(Array.isArray(t))return a(e,t,n,i);if(t instanceof Map)return function(e,t,r,n){if(0===t.size)return!0;if(!(e instanceof Map))return!1;for(const[i,a]of t.entries())if(!1===r(e.get(i),a,i,e,t,n))return!1;return!0}(e,t,n,i);if(t instanceof Set)return o(e,t,n,i);const c=Object.keys(t);if(null==e)return 0===c.length;if(0===c.length)return!0;if(null==i?void 0:i.has(t))return i.get(t)===e;null==i||i.set(t,e);try{for(let a=0;a0?i(e,{...c},l,u):n.eq(e,c);default:return t.isObject(e)?"string"!=typeof c||""===c:n.eq(e,c)}}function a(e,t,r,n){if(0===t.length)return!0;if(!Array.isArray(e))return!1;const i=new Set;for(let a=0;a{}):i(t,r,function e(t,r,a,o,c,l){const u=n(t,r,a,o,c,l);return void 0!==u?Boolean(u):i(t,r,e,l)},new Map)},e.isSetMatch=o}(cr)),cr}function br(){return yr||(yr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=mr();e.isMatch=function(e,r){return t.isMatchWith(e,r,()=>{})}}(or)),or}var xr,wr={},Or={},Pr={};function jr(){return xr||(xr=1,e=Pr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.getSymbols=function(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}),Pr;var e}var Er,Ar={};function Sr(){return Er||(Er=1,e=Ar,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.getTag=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}),Ar;var e}var kr,_r={};function Mr(){return kr||(kr=1,e=_r,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.argumentsTag="[object Arguments]",e.arrayBufferTag="[object ArrayBuffer]",e.arrayTag="[object Array]",e.bigInt64ArrayTag="[object BigInt64Array]",e.bigUint64ArrayTag="[object BigUint64Array]",e.booleanTag="[object Boolean]",e.dataViewTag="[object DataView]",e.dateTag="[object Date]",e.errorTag="[object Error]",e.float32ArrayTag="[object Float32Array]",e.float64ArrayTag="[object Float64Array]",e.functionTag="[object Function]",e.int16ArrayTag="[object Int16Array]",e.int32ArrayTag="[object Int32Array]",e.int8ArrayTag="[object Int8Array]",e.mapTag="[object Map]",e.numberTag="[object Number]",e.objectTag="[object Object]",e.regexpTag="[object RegExp]",e.setTag="[object Set]",e.stringTag="[object String]",e.symbolTag="[object Symbol]",e.uint16ArrayTag="[object Uint16Array]",e.uint32ArrayTag="[object Uint32Array]",e.uint8ArrayTag="[object Uint8Array]",e.uint8ClampedArrayTag="[object Uint8ClampedArray]"),_r;var e}var Tr,Cr,Ir,Dr,Nr={};function zr(){return Tr||(Tr=1,e=Nr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isTypedArray=function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}),Nr;var e}function Rr(){return Cr||(Cr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=jr(),r=Sr(),n=Mr(),i=dr(),a=zr();function o(e,t,l,u=new Map,s=void 0){const f=null==s?void 0:s(e,t,l,u);if(void 0!==f)return f;if(i.isPrimitive(e))return e;if(u.has(e))return u.get(e);if(Array.isArray(e)){const t=new Array(e.length);u.set(e,t);for(let r=0;rt.isMatch(r,e)}}(ar)),ar}var Kr,Fr,Ur={},Wr={},$r={};function Hr(){return Kr||(Kr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Rr(),r=Mr();e.cloneDeepWith=function(e,n){return t.cloneDeepWith(e,(i,a,o,c)=>{const l=null==n?void 0:n(i,a,o,c);if(void 0!==l)return l;if("object"==typeof e)switch(Object.prototype.toString.call(e)){case r.numberTag:case r.stringTag:case r.booleanTag:{const r=new e.constructor(null==e?void 0:e.valueOf());return t.copyProperties(r,e),r}case r.argumentsTag:{const r={};return t.copyProperties(r,e),r.length=e.length,r[Symbol.iterator]=e[Symbol.iterator],r}default:return}})}}($r)),$r}function Vr(){return Fr||(Fr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Hr();e.cloneDeep=function(e){return t.cloneDeepWith(e)}}(Wr)),Wr}var qr,Yr={},Gr={};function Xr(){return qr||(qr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=/^(?:0|[1-9]\d*)$/;e.isIndex=function(e,r=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&ee,jn=()=>{var e=r.useContext(On);return e?e.store.dispatch:Pn},En=()=>{},An=()=>En,Sn=(e,t)=>e===t;function kn(e){var t=r.useContext(On);return wn.useSyncExternalStoreWithSelector(t?t.subscription.addNestedSub:An,t?t.store.getState:En,t?t.store.getState:En,t?e:En,Sn)}var _n=e=>Array.isArray(e)?e:[e];var Mn="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}};function Tn(){return{s:0,v:void 0,o:null,p:null}}function Cn(e,t={}){let r={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:n}=t;let i,a=0;function o(){var t;let o=r;const{length:c}=arguments;for(let e=0,r=c;e{r={s:0,v:void 0,o:null,p:null},o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function In(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,n=(...e)=>{let t,n=0,i=0,a={},o=e.pop();"object"==typeof o&&(a=o,o=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);const c={...r,...a},{memoize:l,memoizeOptions:u=[],argsMemoize:s=Cn,argsMemoizeOptions:f=[]}=c,d=_n(u),p=_n(f),h=function(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(e=>"function"==typeof e)){const r=e.map(e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}(e),y=l(function(){return n++,o.apply(null,arguments)},...d),v=s(function(){i++;const e=function(e,t){const r=[],{length:n}=e;for(let i=0;ii,resetDependencyRecomputations:()=>{i=0},lastResult:()=>t,recomputations:()=>n,resetRecomputations:()=>{n=0},memoize:l,argsMemoize:s})};return Object.assign(n,{withTypes:()=>n}),n}var Dn,Nn=In(Cn),zn=Object.assign((e,t=Nn)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e);return t(r.map(t=>e[t]),(...e)=>e.reduce((e,t,n)=>(e[r[n]]=t,e),{}))},{withTypes:()=>zn}),Rn={},Ln={},Bn={};function Kn(){return Dn||(Dn=1,function(e){function t(e){return"symbol"==typeof e?1:null===e?2:void 0===e?3:e!=e?4:0}Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.compareValues=(e,r,n)=>{if(e!==r){const i=t(e),a=t(r);if(i===a&&0===i){if(er)return"desc"===n?-1:1}return"desc"===n?a-i:i-a}return 0}}(Bn)),Bn}var Fn,Un,Wn,$n={},Hn={};function Vn(){return Fn||(Fn=1,e=Hn,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isSymbol=function(e){return"symbol"==typeof e||e instanceof Symbol}),Hn;var e}function qn(){return Un||(Un=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Vn(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;e.isKey=function(e,i){return!Array.isArray(e)&&(!("number"!=typeof e&&"boolean"!=typeof e&&null!=e&&!t.isSymbol(e))||"string"==typeof e&&(n.test(e)||!r.test(e))||null!=i&&Object.hasOwn(i,e))}}($n)),$n}function Yn(){return Wn||(Wn=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Kn(),r=qn(),n=Ye();e.orderBy=function(e,i,a,o){if(null==e)return[];a=o?void 0:a,Array.isArray(e)||(e=Object.values(e)),Array.isArray(i)||(i=null==i?[null]:[i]),0===i.length&&(i=[null]),Array.isArray(a)||(a=null==a?[]:[a]),a=a.map(e=>String(e));const c=(e,t)=>{let r=e;for(let n=0;n(Array.isArray(e)&&1===e.length&&(e=e[0]),null==e||"function"==typeof e||Array.isArray(e)||r.isKey(e)?e:{key:e,path:n.toPath(e)}));return e.map(e=>({original:e,criteria:l.map(t=>((e,t)=>null==t||null==e?t:"object"==typeof e&&"key"in e?Object.hasOwn(t,e.key)?t[e.key]:c(t,e.path):"function"==typeof e?e(t):Array.isArray(e)?c(t,e):"object"==typeof t?t[e]:t)(t,e))})).slice().sort((e,r)=>{for(let n=0;ne.original)}}(Ln)),Ln}var Gn,Xn={};function Zn(){return Gn||(Gn=1,e=Xn,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.flatten=function(e,t=1){const r=[],n=Math.floor(t),i=(e,t)=>{for(let a=0;a1&&n.isIterateeCall(e,i[0],i[1])?i=[]:a>2&&n.isIterateeCall(i[0],i[1],i[2])&&(i=[i[0]]),t.orderBy(e,r.flatten(i),["asc"])}}(Rn)),Rn).sortBy)}const ai=l(ii());var oi=e=>e.legend.settings,ci=Nn([e=>e.legend.payload,oi],(e,t)=>{var{itemSorter:r}=t,n=e.flat(1);return r?ai(n,r):n});function li(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],[t,n]=r.useState({height:0,left:0,top:0,width:0}),i=r.useCallback(e=>{if(null!=e){var r=e.getBoundingClientRect(),i={height:r.height,left:r.left,top:r.top,width:r.width};(Math.abs(i.height-t.height)>1||Math.abs(i.left-t.left)>1||Math.abs(i.top-t.top)>1||Math.abs(i.width-t.width)>1)&&n({height:i.height,left:i.left,top:i.top,width:i.width})}},[t.width,t.height,t.top,t.left,...e]);return[t,i]}function ui(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var si=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),fi=()=>Math.random().toString(36).substring(7).split("").join("."),di={INIT:`@@redux/INIT${fi()}`,REPLACE:`@@redux/REPLACE${fi()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${fi()}`};function pi(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function hi(e,t,r){if("function"!=typeof e)throw new Error(ui(2));if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error(ui(0));if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(ui(1));return r(hi)(e,t)}let n=e,i=t,a=new Map,o=a,c=0,l=!1;function u(){o===a&&(o=new Map,a.forEach((e,t)=>{o.set(t,e)}))}function s(){if(l)throw new Error(ui(3));return i}function f(e){if("function"!=typeof e)throw new Error(ui(4));if(l)throw new Error(ui(5));let t=!0;u();const r=c++;return o.set(r,e),function(){if(t){if(l)throw new Error(ui(6));t=!1,u(),o.delete(r),a=null}}}function d(e){if(!pi(e))throw new Error(ui(7));if(void 0===e.type)throw new Error(ui(8));if("string"!=typeof e.type)throw new Error(ui(17));if(l)throw new Error(ui(9));try{l=!0,i=n(i,e)}finally{l=!1}return(a=o).forEach(e=>{e()}),e}return d({type:di.INIT}),{dispatch:d,subscribe:f,getState:s,replaceReducer:function(e){if("function"!=typeof e)throw new Error(ui(10));n=e,d({type:di.REPLACE})},[si]:function(){const e=f;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(ui(11));function r(){const e=t;e.next&&e.next(s())}return r(),{unsubscribe:e(r)}},[si](){return this}}}}}function yi(e){const t=Object.keys(e),r={};for(let a=0;a{const r=e[t];if(void 0===r(void 0,{type:di.INIT}))throw new Error(ui(12));if(void 0===r(void 0,{type:di.PROBE_UNKNOWN_ACTION()}))throw new Error(ui(13))})}(r)}catch(Kj){i=Kj}return function(e={},t){if(i)throw i;let a=!1;const o={};for(let i=0;ie:1===e.length?e[0]:e.reduce((e,t)=>(...r)=>e(t(...r)))}function gi(e){return pi(e)&&"type"in e&&"string"==typeof e.type}var mi=Symbol.for("immer-nothing"),bi=Symbol.for("immer-draftable"),xi=Symbol.for("immer-state");function wi(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Oi=Object,Pi=Oi.getPrototypeOf,ji="constructor",Ei="prototype",Ai="configurable",Si="enumerable",ki="writable",_i="value",Mi=e=>!!e&&!!e[xi];function Ti(e){var t;return!!e&&(Di(e)||Ki(e)||!!e[bi]||!!(null==(t=e[ji])?void 0:t[bi])||Fi(e)||Ui(e))}var Ci=Oi[Ei][ji].toString(),Ii=new WeakMap;function Di(e){if(!e||!Wi(e))return!1;const t=Pi(e);if(null===t||t===Oi[Ei])return!0;const r=Oi.hasOwnProperty.call(t,ji)&&t[ji];if(r===Object)return!0;if(!$i(r))return!1;let n=Ii.get(r);return void 0===n&&(n=Function.toString.call(r),Ii.set(r,n)),n===Ci}function Ni(e,t,r=!0){0===zi(e)?(r?Reflect.ownKeys(e):Oi.keys(e)).forEach(r=>{t(r,e[r],e)}):e.forEach((r,n)=>t(n,r,e))}function zi(e){const t=e[xi];return t?t.type_:Ki(e)?1:Fi(e)?2:Ui(e)?3:0}var Ri=(e,t,r=zi(e))=>2===r?e.has(t):Oi[Ei].hasOwnProperty.call(e,t),Li=(e,t,r=zi(e))=>2===r?e.get(t):e[t],Bi=(e,t,r,n=zi(e))=>{2===n?e.set(t,r):3===n?e.add(r):e[t]=r},Ki=Array.isArray,Fi=e=>e instanceof Map,Ui=e=>e instanceof Set,Wi=e=>"object"==typeof e,$i=e=>"function"==typeof e,Hi=e=>"boolean"==typeof e,Vi=e=>e.copy_||e.base_,qi=e=>e.modified_?e.copy_:e.base_;function Yi(e,t){if(Fi(e))return new Map(e);if(Ui(e))return new Set(e);if(Ki(e))return Array[Ei].slice.call(e);const r=Di(e);if(!0===t||"class_only"===t&&!r){const t=Oi.getOwnPropertyDescriptors(e);delete t[xi];let r=Reflect.ownKeys(t);for(let n=0;n1&&Oi.defineProperties(e,{set:Xi,add:Xi,clear:Xi,delete:Xi}),Oi.freeze(e),t&&Ni(e,(e,t)=>{Gi(t,!0)},!1)),e}var Xi={[_i]:function(){wi(2)}};function Zi(e){return null===e||!Wi(e)||Oi.isFrozen(e)}var Qi="MapSet",Ji="Patches",ea={};function ta(e){const t=ea[e];return t||wi(0),t}var ra,na=()=>ra;function ia(e,t){t&&(e.patchPlugin_=ta(Ji),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function aa(e){oa(e),e.drafts_.forEach(la),e.drafts_=null}function oa(e){e===ra&&(ra=e.parent_)}var ca=e=>{return ra={drafts_:[],parent_:ra,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:(t=Qi,ea[t]?ta(Qi):void 0)};var t};function la(e){const t=e[xi];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function ua(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];if(void 0!==e&&e!==r){r[xi].modified_&&(aa(t),wi(4)),Ti(e)&&(e=sa(t,e));const{patchPlugin_:n}=t;n&&n.generateReplacementPatches_(r[xi].base_,e,t)}else e=sa(t,r);return function(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Gi(t,r)}(t,e,!0),aa(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==mi?e:void 0}function sa(e,t){if(Zi(t))return t;const r=t[xi];if(!r)return va(t,e.handledSet_,e);if(!da(r,e))return t;if(!r.modified_)return r.base_;if(!r.finalized_){const{callbacks_:t}=r;if(t)for(;t.length>0;)t.pop()(e);ya(r,e)}return r.copy_}function fa(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var da=(e,t)=>e.scope_===t,pa=[];function ha(e,t,r,n){const i=Vi(e),a=e.type_;if(void 0!==n&&Li(i,n,a)===t)return void Bi(i,n,r,a);if(!e.draftLocations_){const t=e.draftLocations_=new Map;Ni(i,(e,r)=>{if(Mi(r)){const n=t.get(r)||[];n.push(e),t.set(r,n)}})}const o=e.draftLocations_.get(t)??pa;for(const c of o)Bi(i,c,r,a)}function ya(e,t){var r;if(e.modified_&&!e.finalized_&&(3===e.type_||((null==(r=e.assigned_)?void 0:r.size)??0)>0)){const{patchPlugin_:r}=t;if(r){const n=r.getPath(e);n&&r.generatePatches_(e,n,t)}fa(e)}}function va(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||Mi(e)||t.has(e)||!Ti(e)||Zi(e)||(t.add(e),Ni(e,(n,i)=>{if(Mi(i)){const t=i[xi];if(da(t,r)){const r=qi(t);Bi(e,n,r,e.type_),fa(t)}}else Ti(i)&&va(i,t,r)})),e}var ga={get(e,t){if(t===xi)return e;const r=Vi(e);if(!Ri(r,t,e.type_))return function(e,t,r){var n;const i=xa(t,r);return i?_i in i?i[_i]:null==(n=i.get)?void 0:n.call(e.draft_):void 0}(e,r,t);const n=r[t];if(e.finalized_||!Ti(n))return n;if(n===ba(e.base_,t)){Oa(e);const r=1===e.type_?+t:t,i=Pa(e.scope_,n,e,r);return e.copy_[r]=i}return n},has:(e,t)=>t in Vi(e),ownKeys:e=>Reflect.ownKeys(Vi(e)),set(e,t,r){const n=xa(Vi(e),t);if(null==n?void 0:n.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const n=ba(Vi(e),t),o=null==n?void 0:n[xi];if(o&&o.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(((i=r)===(a=n)?0!==i||1/i==1/a:i!=i&&a!=a)&&(void 0!==r||Ri(e.base_,t,e.type_)))return!0;Oa(e),wa(e)}var i,a;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),function(e,t,r){const{scope_:n}=e;if(Mi(r)){const i=r[xi];da(i,n)&&i.callbacks_.push(function(){Oa(e);const n=qi(i);ha(e,r,n,t)})}else Ti(r)&&e.callbacks_.push(function(){const i=Vi(e);Li(i,t,e.type_)===r&&n.drafts_.length>1&&!0===(e.assigned_.get(t)??!1)&&e.copy_&&va(Li(e.copy_,t,e.type_),n.handledSet_,n)})}(e,t,r)),!0},deleteProperty:(e,t)=>(Oa(e),void 0!==ba(e.base_,t)||t in e.base_?(e.assigned_.set(t,!1),wa(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=Vi(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n?{[ki]:!0,[Ai]:1!==e.type_||"length"!==t,[Si]:n[Si],[_i]:r[t]}:n},defineProperty(){wi(11)},getPrototypeOf:e=>Pi(e.base_),setPrototypeOf(){wi(12)}},ma={};function ba(e,t){const r=e[xi];return(r?Vi(r):e)[t]}function xa(e,t){if(!(t in e))return;let r=Pi(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Pi(r)}}function wa(e){e.modified_||(e.modified_=!0,e.parent_&&wa(e.parent_))}function Oa(e){e.copy_||(e.assigned_=new Map,e.copy_=Yi(e.base_,e.scope_.immer_.useStrictShallowCopy_))}function Pa(e,t,r,n){const[i,a]=Fi(t)?ta(Qi).proxyMap_(t,r):Ui(t)?ta(Qi).proxySet_(t,r):function(e,t){const r=Ki(e),n={type_:r?1:0,scope_:t?t.scope_:na(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let i=n,a=ga;r&&(i=[n],a=ma);const{revoke:o,proxy:c}=Proxy.revocable(i,a);return n.draft_=c,n.revoke_=o,[c,n]}(t,r);return((null==r?void 0:r.scope_)??na()).drafts_.push(i),a.callbacks_=(null==r?void 0:r.callbacks_)??[],a.key_=n,r&&void 0!==n?function(e,t,r){e.callbacks_.push(function(n){var i;const a=t;if(!a||!da(a,n))return;null==(i=n.mapSetPlugin_)||i.fixSetContents(a);const o=qi(a);ha(e,a.draft_??a,o,r),ya(a,n)})}(r,a,n):a.callbacks_.push(function(e){var t;null==(t=e.mapSetPlugin_)||t.fixSetContents(a);const{patchPlugin_:r}=e;a.modified_&&r&&r.generatePatches_(a,[],e)}),i}function ja(e){return Mi(e)||wi(10),Ea(e)}function Ea(e){if(!Ti(e)||Zi(e))return e;const t=e[xi];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=Yi(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=Yi(e,!0);return Ni(r,(e,t)=>{Bi(r,e,Ea(t))},n),t&&(t.finalized_=!1),r}Ni(ga,(e,t)=>{ma[e]=function(){const e=arguments;return e[0]=e[0][0],t.apply(this,e)}}),ma.deleteProperty=function(e,t){return ma.set.call(this,e,t,void 0)},ma.set=function(e,t,r){return ga.set.call(this,e[0],t,r,e[0])};var Aa=(new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,r)=>{if($i(e)&&!$i(t)){const r=t;t=e;const n=this;return function(e=r,...i){return n.produce(e,e=>t.call(this,e,...i))}}let n;if($i(t)||wi(6),void 0===r||$i(r)||wi(7),Ti(e)){const i=ca(this),a=Pa(0,e,void 0);let o=!0;try{n=t(a),o=!1}finally{o?aa(i):oa(i)}return ia(i,r),ua(n,i)}if(!e||!Wi(e)){if(n=t(e),void 0===n&&(n=e),n===mi&&(n=void 0),this.autoFreeze_&&Gi(n,!0),r){const t=[],i=[];ta(Ji).generateReplacementPatches_(e,n,{patches_:t,inversePatches_:i}),r(t,i)}return n}wi(1)},this.produceWithPatches=(e,t)=>{if($i(e))return(t,...r)=>this.produceWithPatches(t,t=>e(t,...r));let r,n;return[this.produce(e,t,(e,t)=>{r=e,n=t}),r,n]},Hi(null==e?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Hi(null==e?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Hi(null==e?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Ti(e)||wi(8),Mi(e)&&(e=ja(e));const t=ca(this),r=Pa(0,e,void 0);return r[xi].isManual_=!0,oa(t),r}finishDraft(e,t){const r=e&&e[xi];r&&r.isManual_||wi(9);const{scope_:n}=r;return ia(n,t),ua(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const n=t[r];if(0===n.path.length&&"replace"===n.op){e=n.value;break}}r>-1&&(t=t.slice(r+1));const n=ta(Ji).applyPatches_;return Mi(e)?n(e,t):this.produce(e,e=>n(e,t))}}).produce;function Sa(e){return({dispatch:t,getState:r})=>n=>i=>"function"==typeof i?i(t,r,e):n(i)}var ka=Sa(),_a=Sa,Ma="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?vi:vi.apply(null,arguments)};function Ta(e,t){function r(...r){if(t){let n=t(...r);if(!n)throw new Error(jo(0));return{type:e,payload:n.payload,..."meta"in n&&{meta:n.meta},..."error"in n&&{error:n.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>gi(t)&&t.type===e,r}var Ca=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function Ia(e){return Ti(e)?Aa(e,()=>{}):e}function Da(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}var Na="RTK_autoBatch",za=()=>e=>({payload:e,meta:{[Na]:!0}}),Ra=e=>t=>{setTimeout(t,e)},La=(e={type:"raf"})=>t=>(...r)=>{const n=t(...r);let i=!0,a=!1,o=!1;const c=new Set,l="tick"===e.type?queueMicrotask:"raf"===e.type?"undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:Ra(10):"callback"===e.type?e.queueNotification:Ra(e.timeout),u=()=>{o=!1,a&&(a=!1,c.forEach(e=>e()))};return Object.assign({},n,{subscribe(e){const t=n.subscribe(()=>i&&e());return c.add(e),()=>{t(),c.delete(e)}},dispatch(e){var t;try{return i=!(null==(t=null==e?void 0:e.meta)?void 0:t[Na]),a=!i,a&&(o||(o=!0,l(u))),n.dispatch(e)}finally{i=!0}}})};function Ba(e){const t={},r=[];let n;const i={addCase(e,r){const n="string"==typeof e?e:e.type;if(!n)throw new Error(jo(28));if(n in t)throw new Error(jo(29));return t[n]=r,i},addAsyncThunk:(e,n)=>(n.pending&&(t[e.pending.type]=n.pending),n.rejected&&(t[e.rejected.type]=n.rejected),n.fulfilled&&(t[e.fulfilled.type]=n.fulfilled),n.settled&&r.push({matcher:e.settled,reducer:n.settled}),i),addMatcher:(e,t)=>(r.push({matcher:e,reducer:t}),i),addDefaultCase:e=>(n=e,i)};return e(i),[t,r,n]}var Ka=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t},Fa=Symbol.for("rtk-slice-createasyncthunk");function Ua(e,t){return`${e}/${t}`}function Wa({creators:e}={}){var t;const r=null==(t=null==e?void 0:e.asyncThunk)?void 0:t[Fa];return function(e){const{name:t,reducerPath:n=t}=e;if(!t)throw new Error(jo(11));const i=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},a=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},c={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error(jo(12));if(r in o.sliceCaseReducersByType)throw new Error(jo(13));return o.sliceCaseReducersByType[r]=t,c},addMatcher:(e,t)=>(o.sliceMatchers.push({matcher:e,reducer:t}),c),exposeAction:(e,t)=>(o.actionCreators[e]=t,c),exposeCaseReducer:(e,t)=>(o.sliceCaseReducersByName[e]=t,c)};function l(){const[t={},r=[],n]="function"==typeof e.extraReducers?Ba(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return function(e){let t,[a,c,l]=Ba(e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);n&&e.addDefaultCase(n)});if("function"==typeof e)t=()=>Ia(e());else{const r=Ia(e);t=()=>r}function u(e=t(),r){let n=[a[r.type],...c.filter(({matcher:e})=>e(r)).map(({reducer:e})=>e)];return 0===n.filter(e=>!!e).length&&(n=[l]),n.reduce((e,t)=>{if(t){if(Mi(e)){const n=t(e,r);return void 0===n?e:n}if(Ti(e))return Aa(e,e=>t(e,r));{const n=t(e,r);if(void 0===n){if(null===e)return e;throw Error("A case reducer on a non-draftable value must not return undefined")}return n}}return e},e)}return u.getInitialState=t,u}(e.initialState)}a.forEach(n=>{const a=i[n],o={reducerName:n,type:Ua(t,n),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(a)?function({type:e,reducerName:t,createNotation:r},n,i){let a,o;if("reducer"in n){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(n))throw new Error(jo(17));a=n.reducer,o=n.prepare}else a=n;i.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,o?Ta(e,o):Ta(e))}(o,a,c):function({type:e,reducerName:t},r,n,i){if(!i)throw new Error(jo(18));const{payloadCreator:a,fulfilled:o,pending:c,rejected:l,settled:u,options:s}=r,f=i(e,a,s);n.exposeAction(t,f),o&&n.addCase(f.fulfilled,o),c&&n.addCase(f.pending,c),l&&n.addCase(f.rejected,l),u&&n.addMatcher(f.settled,u),n.exposeCaseReducer(t,{fulfilled:o||Va,pending:c||Va,rejected:l||Va,settled:u||Va})}(o,a,c,r)});const u=e=>e,s=new Map,f=new WeakMap;let d;function p(e,t){return d||(d=l()),d(e,t)}function h(){return d||(d=l()),d.getInitialState()}function y(t,r=!1){function n(e){let i=e[t];return void 0===i&&r&&(i=Da(f,n,h)),i}function i(t=u){const n=Da(s,r,()=>new WeakMap);return Da(n,t,()=>{const n={};for(const[i,a]of Object.entries(e.selectors??{}))n[i]=$a(a,t,()=>Da(f,t,h),r);return n})}return{reducerPath:t,getSelectors:i,get selectors(){return i(n)},selectSlice:n}}const v={name:t,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:h,...y(n),injectInto(e,{reducerPath:t,...r}={}){const i=t??n;return e.inject({reducerPath:i,reducer:p},r),{...v,...y(i,!0)}}};return v}}function $a(e,t,r,n){function i(i,...a){let o=t(i);return void 0===o&&n&&(o=r()),e(o,...a)}return i.unwrapped=e,i}var Ha=Wa();function Va(){}var qa="listener",Ya="completed",Ga="cancelled",Xa=`task-${Ga}`,Za=`task-${Ya}`,Qa=`${qa}-${Ga}`,Ja=`${qa}-${Ya}`,eo=class{constructor(e){t(this,"name","TaskAbortError"),t(this,"message"),this.code=e,this.message=`task ${Ga} (reason: ${e})`}},to=(e,t)=>{if("function"!=typeof e)throw new TypeError(jo(32))},ro=()=>{},no=(e,t=ro)=>(e.catch(t),e),io=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),ao=e=>{if(e.aborted)throw new eo(e.reason)};function oo(e,t){let r=ro;return new Promise((n,i)=>{const a=()=>i(new eo(e.reason));e.aborted?a():(r=io(e,a),t.finally(()=>r()).then(n,i))}).finally(()=>{r=ro})}var co=e=>t=>no(oo(e,t).then(t=>(ao(e),t))),lo=e=>{const t=co(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:uo}=Object,so={},fo="listenerMiddleware",po=(e,t)=>(r,n)=>{to(r);const i=new AbortController;var a;a=i,io(e,()=>a.abort(e.reason));const o=(async(t,n)=>{try{return await Promise.resolve(),{status:"ok",value:await(async()=>{ao(e),ao(i.signal);const t=await r({pause:co(i.signal),delay:lo(i.signal),signal:i.signal});return ao(i.signal),t})()}}catch(a){return{status:a instanceof eo?"cancelled":"rejected",error:a}}finally{null==n||n()}})(0,()=>i.abort(Za));return(null==n?void 0:n.autoJoin)&&t.push(o.catch(ro)),{result:co(e)(o),cancel(){i.abort(Xa)}}},ho=e=>{let{type:t,actionCreator:r,matcher:n,predicate:i,effect:a}=e;if(t)i=Ta(t).match;else if(r)t=r.type,i=r.match;else if(n)i=n;else if(!i)throw new Error(jo(21));return to(a),{predicate:i,type:t,effect:a}},yo=uo(e=>{const{type:t,predicate:r,effect:n}=ho(e);return{id:Ka(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(jo(22))}}},{withTypes:()=>yo}),vo=(e,t)=>{const{type:r,effect:n,predicate:i}=ho(t);return Array.from(e.values()).find(e=>("string"==typeof r?e.type===r:e.predicate===i)&&e.effect===n)},go=e=>{e.pending.forEach(e=>{e.abort(Qa)})},mo=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},bo=uo(Ta(`${fo}/add`),{withTypes:()=>bo}),xo=Ta(`${fo}/removeAll`),wo=uo(Ta(`${fo}/remove`),{withTypes:()=>wo}),Oo=(...e)=>{},Po=(e={})=>{const t=new Map,r=new Map,{extra:n,onError:i=Oo}=e;to(i);const a=e=>{return(r=vo(t,e)??yo(e)).unsubscribe=()=>t.delete(r.id),t.set(r.id,r),e=>{r.unsubscribe(),(null==e?void 0:e.cancelActive)&&go(r)};var r};uo(a,{withTypes:()=>a});const o=e=>{const r=vo(t,e);return r&&(r.unsubscribe(),e.cancelActive&&go(r)),!!r};uo(o,{withTypes:()=>o});const c=async(e,o,c,l)=>{const u=new AbortController,s=((e,t)=>(r,n)=>no((async(r,n)=>{ao(t);let i=()=>{};const a=[new Promise((t,n)=>{let a=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});i=()=>{a(),n()}})];null!=n&&a.push(new Promise(e=>setTimeout(e,n,null)));try{const e=await oo(t,Promise.race(a));return ao(t),e}finally{i()}})(r,n)))(a,u.signal),f=[];try{e.pending.add(u),(e=>{const t=r.get(e)??0;r.set(e,t+1)})(e),await Promise.resolve(e.effect(o,uo({},c,{getOriginalState:l,condition:(e,t)=>s(e,t).then(Boolean),take:s,delay:lo(u.signal),pause:co(u.signal),extra:n,signal:u.signal,fork:po(u.signal,f),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,r)=>{e!==u&&(e.abort(Qa),r.delete(e))})},cancel:()=>{u.abort(Qa),e.pending.delete(u)},throwIfCancelled:()=>{ao(u.signal)}})))}catch(d){d instanceof eo||mo(i,d,{raisedBy:"effect"})}finally{await Promise.all(f),u.abort(Ja),(e=>{const t=r.get(e)??1;1===t?r.delete(e):r.set(e,t-1)})(e),e.pending.delete(u)}},l=((e,t)=>()=>{for(const e of t.keys())go(e);e.clear()})(t,r);return{middleware:e=>r=>n=>{if(!gi(n))return r(n);if(bo.match(n))return a(n.payload);if(xo.match(n))return void l();if(wo.match(n))return o(n.payload);let u=e.getState();const s=()=>{if(u===so)throw new Error(jo(23));return u};let f;try{if(f=r(n),t.size>0){const r=e.getState(),a=Array.from(t.values());for(const t of a){let a=!1;try{a=t.predicate(n,r,u)}catch(d){a=!1,mo(i,d,{raisedBy:"predicate"})}a&&c(t,n,e,s)}}}finally{u=so}return f},startListening:a,stopListening:o,clearListeners:l}};function jo(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Eo=Ha({name:"chartLayout",initialState:{layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){var r,n,i,a;e.margin.top=null!==(r=t.payload.top)&&void 0!==r?r:0,e.margin.right=null!==(n=t.payload.right)&&void 0!==n?n:0,e.margin.bottom=null!==(i=t.payload.bottom)&&void 0!==i?i:0,e.margin.left=null!==(a=t.payload.left)&&void 0!==a?a:0},setScale(e,t){e.scale=t.payload}}}),{setMargin:Ao,setLayout:So,setChartSize:ko,setScale:_o}=Eo.actions,Mo=Eo.reducer;function To(e,t,r){return Array.isArray(e)&&e&&t+r!==0?e.slice(t,r+1):e}function Co(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Io(e){for(var t=1;t"horizontal"===e&&"xAxis"===t||"vertical"===e&&"yAxis"===t||"centric"===e&&"angleAxis"===t||"radial"===e&&"radiusAxis"===t,Ro=(e,t,r,n)=>{if(n)return e.map(e=>e.coordinate);var i,a,o=e.map(e=>(e.coordinate===t&&(i=!0),e.coordinate===r&&(a=!0),e.coordinate));return i||o.push(t),a||o.push(r),o},Lo=(e,t,r)=>{if(!e)return null;var{duplicateDomain:n,type:i,range:a,scale:o,realScaleType:c,isCategorical:l,categoricalDomain:u,tickCount:s,ticks:f,niceTicks:d,axisType:p}=e;if(!o)return null;var h="scaleBand"===c&&o.bandwidth?o.bandwidth()/2:2,y="category"===i&&o.bandwidth?o.bandwidth()/h:0;return y="angleAxis"===p&&a&&a.length>=2?2*Qe(a[0]-a[1])*y:y,f||d?(f||d||[]).map((e,t)=>{var r=n?n.indexOf(e):e;return{coordinate:o(r)+y,value:e,offset:y,index:t}}).filter(e=>!Je(e.coordinate)):l&&u?u.map((e,t)=>({coordinate:o(e)+y,value:e,index:t,offset:y})):o.ticks&&null!=s?o.ticks(s).map((e,t)=>({coordinate:o(e)+y,value:e,offset:y,index:t})):o.domain().map((e,t)=>({coordinate:o(e)+y,value:n?n[e]:e,index:t,offset:y}))},Bo=1e-4,Ko={sign:e=>{var t=e.length;if(!(t<=0))for(var r=0,n=e[0].length;r=0?(e[o][r][0]=i,e[o][r][1]=i+c,i=e[o][r][1]):(e[o][r][0]=a,e[o][r][1]=a+c,a=e[o][r][1])}},expand:function(e,t){if((n=e.length)>0){for(var r,n,i,a=0,o=e[0].length;a0){for(var r,n=0,i=e[t[0]],a=i.length;n0&&(n=(r=e[t[0]]).length)>0){for(var r,n,i,a=0,o=1;o{var t=e.length;if(!(t<=0))for(var r=0,n=e[0].length;r=0?(e[a][r][0]=i,e[a][r][1]=i+o,i=e[a][r][1]):(e[a][r][0]=0,e[a][r][1]=0)}}},Fo=(e,t,r)=>{var n=Ko[r],i=function(){var e=A([]),t=Se,r=Ae,n=ke;function i(i){var a,o,c=Array.from(e.apply(this,arguments),_e),l=c.length,u=-1;for(const e of i)for(a=0,++u;aNumber(No(e,t,0))).order(Se).offset(n);return i(e)};function Uo(e){var{axis:t,ticks:r,bandSize:n,entry:i,index:a,dataKey:o}=e;if("category"===t.type){if(!t.allowDuplicatedCategory&&t.dataKey&&!ut(i[t.dataKey])){var c=lt(r,"value",i[t.dataKey]);if(c)return c.coordinate+n/2}return r[a]?r[a].coordinate+n/2:null}var l=No(i,ut(o)?t.dataKey:o);return ut(l)?null:t.scale(l)}var Wo=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,$o=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Ho=(e,t,r)=>{if(e&&e.scale&&e.scale.bandwidth){var n=e.scale.bandwidth();if(!r||n>0)return n}if(e&&t&&t.length>=2){for(var i=ai(t,e=>e.coordinate),a=1/0,o=1,c=i.length;oe.layout.width,Go=e=>e.layout.height,Xo=e=>e.layout.scale,Zo=e=>e.layout.margin,Qo=Nn(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),Jo=Nn(e=>e.cartesianAxis.yAxis,e=>Object.values(e)),ec=["#1890FF","#66B5FF","#41D9C7","#2FC25B","#6EDB8F","#9AE65C","#FACC14","#E6965C","#57AD71","#223273","#738AE6","#7564CC","#8543E0","#A877ED","#5C8EE6","#13C2C2","#70E0E0","#5CA3E6","#3436C7","#8082FF","#DD81E6","#F04864","#FA7D92","#D598D9"];function tc(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function rc(e){for(var t=1;te.brush.height,function(e){return Jo(e).reduce((e,t)=>"left"!==t.orientation||t.mirror||t.hide?e:e+("number"==typeof t.width?t.width:60),0)},function(e){return Jo(e).reduce((e,t)=>"right"!==t.orientation||t.mirror||t.hide?e:e+("number"==typeof t.width?t.width:60),0)},function(e){return Qo(e).reduce((e,t)=>"top"!==t.orientation||t.mirror||t.hide?e:e+t.height,0)},function(e){return Qo(e).reduce((e,t)=>"bottom"!==t.orientation||t.mirror||t.hide?e:e+t.height,0)},oi,e=>e.legend.size],(e,t,r,n,i,a,o,c,l,u)=>{var s={left:(r.left||0)+i,right:(r.right||0)+a},f=rc(rc({},{top:(r.top||0)+o,bottom:(r.bottom||0)+c}),s),d=f.bottom;f.bottom+=n,f=((e,t,r)=>{if(t&&r){var{width:n,height:i}=r,{align:a,verticalAlign:o,layout:c}=t;if(("vertical"===c||"horizontal"===c&&"middle"===o)&&"center"!==a&&tt(e[a]))return Io(Io({},e),{},{[a]:e[a]+(n||0)});if(("horizontal"===c||"vertical"===c&&"center"===a)&&"middle"!==o&&tt(e[o]))return Io(Io({},e),{},{[o]:e[o]+(i||0)})}return e})(f,l,u);var p=e-f.left-f.right,h=t-f.top-f.bottom;return rc(rc({brushBottom:d},f),{},{width:Math.max(p,0),height:Math.max(h,0)})}),sc=Nn(uc,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),fc=Nn(Yo,Go,(e,t)=>({x:0,y:0,width:e,height:t})),dc=r.createContext(null),pc=()=>null!=r.useContext(dc),hc=e=>e.brush,yc=Nn([hc,uc,Zo],(e,t,r)=>({height:e.height,x:tt(e.x)?e.x:t.left,y:tt(e.y)?e.y:t.top+t.height+t.brushBottom-((null==r?void 0:r.bottom)||0),width:tt(e.width)?e.width:t.width})),vc={},gc={},mc={};function bc(){return ic||(ic=1,e=mc,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.debounce=function(e,t,{signal:r,edges:n}={}){let i,a=null;const o=null!=n&&n.includes("leading"),c=null==n||n.includes("trailing"),l=()=>{null!==a&&(e.apply(i,a),i=void 0,a=null)};let u=null;const s=()=>{null!=u&&clearTimeout(u),u=setTimeout(()=>{u=null,c&&l(),f()},t)},f=()=>{null!==u&&(clearTimeout(u),u=null),i=void 0,a=null},d=function(...e){if(null==r?void 0:r.aborted)return;i=this,a=e;const t=null==u;s(),o&&t&&l()};return d.schedule=s,d.cancel=f,d.flush=()=>{l()},null==r||r.addEventListener("abort",f,{once:!0}),d}),mc;var e}function xc(){return ac||(ac=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=bc();e.debounce=function(e,r=0,n={}){"object"!=typeof n&&(n={});const{leading:i=!1,trailing:a=!0,maxWait:o}=n,c=Array(2);let l;i&&(c[0]="leading"),a&&(c[1]="trailing");let u=null;const s=t.debounce(function(...t){l=e.apply(this,t),u=null},r,{edges:c}),f=function(...t){return null!=o&&(null===u&&(u=Date.now()),Date.now()-u>=o)?(l=e.apply(this,t),u=Date.now(),s.cancel(),s.schedule(),l):(s.apply(this,t),l)};return f.cancel=s.cancel,f.flush=()=>(s.flush(),l),f}}(gc)),gc}function wc(){return lc?cc:(lc=1,cc=(oc||(oc=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=xc();e.throttle=function(e,r=0,n={}){const{leading:i=!0,trailing:a=!0}=n;return t.debounce(e,r,{leading:i,maxWait:r,trailing:a})}}(vc)),vc).throttle)}const Oc=l(wc());var Pc=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),i=2;i{var{width:n="100%",height:i="100%",aspect:a,maxHeight:o}=r,c=et(n)?e:Number(n),l=et(i)?t:Number(i);return a&&a>0&&(c?l=c/a:l&&(c=l*a),o&&null!=l&&l>o&&(l=o)),{calculatedWidth:c,calculatedHeight:l}},Ec={width:0,height:0,overflow:"visible"},Ac={width:0,overflowX:"visible"},Sc={height:0,overflowY:"visible"},kc={},_c=e=>{var{width:t,height:r}=e,n=et(t),i=et(r);return n&&i?Ec:n?Ac:i?Sc:kc};function Mc(e){return Number.isFinite(e)}function Tc(e){return"number"==typeof e&&e>0&&Number.isFinite(e)}function Cc(){return Cc=Object.assign?Object.assign.bind():function(e){for(var t=1;t({width:n,height:i}),[n,i]);return function(e){return Tc(e.width)&&Tc(e.height)}(a)?r.createElement(zc.Provider,{value:a},t):null}var Lc=()=>r.useContext(zc),Bc=r.forwardRef((e,t)=>{var{aspect:n,initialDimension:i={width:-1,height:-1},width:a,height:o,minWidth:c=0,minHeight:l,maxHeight:u,children:f,debounce:d=0,id:p,className:h,onResize:y,style:v={}}=e,g=r.useRef(null),m=r.useRef();m.current=y,r.useImperativeHandle(t,()=>g.current);var[b,x]=r.useState({containerWidth:i.width,containerHeight:i.height}),w=r.useCallback((e,t)=>{x(r=>{var n=Math.round(e),i=Math.round(t);return r.containerWidth===n&&r.containerHeight===i?r:{containerWidth:n,containerHeight:i}})},[]);r.useEffect(()=>{if(null==g.current||"undefined"==typeof ResizeObserver)return dt;var e=e=>{var t,{width:r,height:n}=e[0].contentRect;w(r,n),null===(t=m.current)||void 0===t||t.call(m,r,n)};d>0&&(e=Oc(e,d,{trailing:!0,leading:!1}));var t=new ResizeObserver(e),{width:r,height:n}=g.current.getBoundingClientRect();return w(r,n),t.observe(g.current),()=>{t.disconnect()}},[w,d]);var{containerWidth:O,containerHeight:P}=b;Pc(!n||n>0,"The aspect(%s) must be greater than zero.",n);var{calculatedWidth:j,calculatedHeight:E}=jc(O,P,{width:a,height:o,aspect:n,maxHeight:u});return Pc(null!=j&&j>0||null!=E&&E>0,"The width(%s) and height(%s) of chart should be greater than 0,\n please check the style of container, or the props width(%s) and height(%s),\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\n height and width.",j,E,a,o,c,l,n),r.createElement("div",{id:p?"".concat(p):void 0,className:s("recharts-responsive-container",h),style:Dc(Dc({},v),{},{width:a,height:o,minWidth:c,minHeight:l,maxHeight:u}),ref:g},r.createElement("div",{style:_c({width:a,height:o})},r.createElement(Rc,{width:j,height:E},f)))}),Kc=r.forwardRef((e,t)=>{var n=Lc();if(Tc(n.width)&&Tc(n.height))return e.children;var{width:i,height:a}=function(e){var{width:t,height:r,aspect:n}=e,i=t,a=r;return void 0===i&&void 0===a?(i="100%",a="100%"):void 0===i?i=n&&n>0?void 0:"100%":void 0===a&&(a=n&&n>0?void 0:"100%"),{width:i,height:a}}({width:e.width,height:e.height,aspect:e.aspect}),{calculatedWidth:o,calculatedHeight:c}=jc(void 0,void 0,{width:i,height:a,aspect:e.aspect,maxHeight:e.maxHeight});return tt(o)&&tt(c)?r.createElement(Rc,{width:o,height:c},e.children):r.createElement(Bc,Cc({},e,{width:i,height:a,ref:t}))});function Fc(e){if(e)return{x:e.x,y:e.y,upperWidth:"upperWidth"in e?e.upperWidth:e.width,lowerWidth:"lowerWidth"in e?e.lowerWidth:e.width,width:e.width,height:e.height}}var Uc=()=>{var e,t=pc(),r=kn(sc),n=kn(yc),i=null===(e=kn(hc))||void 0===e?void 0:e.padding;return t&&n&&i?{width:n.width-i.left-i.right,height:n.height-i.top-i.bottom,x:i.left,y:i.top}:r},Wc={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},$c=()=>{var e;return null!==(e=kn(uc))&&void 0!==e?e:Wc},Hc=()=>kn(Yo),Vc=()=>kn(Go),qc=e=>e.layout.layoutType,Yc=()=>kn(qc),Gc=e=>{var t=jn(),n=pc(),{width:i,height:a}=e,o=Lc(),c=i,l=a;return o&&(c=o.width>0?o.width:i,l=o.height>0?o.height:a),r.useEffect(()=>{!n&&Tc(c)&&Tc(l)&&t(ko({width:c,height:l}))},[t,n,c,l]),null},Xc=e=>{var{margin:t}=e,n=jn();return r.useEffect(()=>{n(Ao(t))},[n,t]),null},Zc=Symbol.for("immer-nothing"),Qc=Symbol.for("immer-draftable"),Jc=Symbol.for("immer-state");function el(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var tl=Object.getPrototypeOf;function rl(e){return!!e&&!!e[Jc]}function nl(e){var t;return!!e&&(ol(e)||Array.isArray(e)||!!e[Qc]||!!(null==(t=e.constructor)?void 0:t[Qc])||fl(e)||dl(e))}var il=Object.prototype.constructor.toString(),al=new WeakMap;function ol(e){if(!e||"object"!=typeof e)return!1;const t=Object.getPrototypeOf(e);if(null===t||t===Object.prototype)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(r===Object)return!0;if("function"!=typeof r)return!1;let n=al.get(r);return void 0===n&&(n=Function.toString.call(r),al.set(r,n)),n===il}function cl(e,t,r=!0){0===ll(e)?(r?Reflect.ownKeys(e):Object.keys(e)).forEach(r=>{t(r,e[r],e)}):e.forEach((r,n)=>t(n,r,e))}function ll(e){const t=e[Jc];return t?t.type_:Array.isArray(e)?1:fl(e)?2:dl(e)?3:0}function ul(e,t){return 2===ll(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function sl(e,t,r){const n=ll(e);2===n?e.set(t,r):3===n?e.add(r):e[t]=r}function fl(e){return e instanceof Map}function dl(e){return e instanceof Set}function pl(e){return e.copy_||e.base_}function hl(e,t){if(fl(e))return new Map(e);if(dl(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const r=ol(e);if(!0===t||"class_only"===t&&!r){const t=Object.getOwnPropertyDescriptors(e);delete t[Jc];let r=Reflect.ownKeys(t);for(let n=0;n1&&Object.defineProperties(e,{set:vl,add:vl,clear:vl,delete:vl}),Object.freeze(e),t&&Object.values(e).forEach(e=>yl(e,!0))),e}var vl={value:function(){el(2)}};function gl(e){return null===e||"object"!=typeof e||Object.isFrozen(e)}var ml,bl={};function xl(e){const t=bl[e];return t||el(0),t}function wl(){return ml}function Ol(e,t){t&&(xl("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Pl(e){jl(e),e.drafts_.forEach(Al),e.drafts_=null}function jl(e){e===ml&&(ml=e.parent_)}function El(e){return ml={drafts_:[],parent_:ml,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Al(e){const t=e[Jc];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function Sl(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[Jc].modified_&&(Pl(t),el(4)),nl(e)&&(e=kl(t,e),t.parent_||Ml(t,e)),t.patches_&&xl("Patches").generateReplacementPatches_(r[Jc].base_,e,t.patches_,t.inversePatches_)):e=kl(t,r,[]),Pl(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==Zc?e:void 0}function kl(e,t,r){if(gl(t))return t;const n=e.immer_.shouldUseStrictIteration(),i=t[Jc];if(!i)return cl(t,(n,a)=>_l(e,i,t,n,a,r),n),t;if(i.scope_!==e)return t;if(!i.modified_)return Ml(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let a=t,o=!1;3===i.type_&&(a=new Set(t),t.clear(),o=!0),cl(a,(n,a)=>_l(e,i,t,n,a,r,o),n),Ml(e,t,!1),r&&e.patches_&&xl("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function _l(e,t,r,n,i,a,o){if(null==i)return;if("object"!=typeof i&&!o)return;const c=gl(i);if(!c||o){if(rl(i)){const o=kl(e,i,a&&t&&3!==t.type_&&!ul(t.assigned_,n)?a.concat(n):void 0);if(sl(r,n,o),!rl(o))return;e.canAutoFreeze_=!1}else o&&r.add(i);if(nl(i)&&!c){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;if(t&&t.base_&&t.base_[n]===i&&c)return;kl(e,i),t&&t.scope_.parent_||"symbol"==typeof n||!(fl(r)?r.has(n):Object.prototype.propertyIsEnumerable.call(r,n))||Ml(e,i)}}}function Ml(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&yl(t,r)}var Tl={get(e,t){if(t===Jc)return e;const r=pl(e);if(!ul(r,t))return function(e,t,r){var n;const i=Dl(t,r);return i?"value"in i?i.value:null==(n=i.get)?void 0:n.call(e.draft_):void 0}(e,r,t);const n=r[t];return e.finalized_||!nl(n)?n:n===Il(e.base_,t)?(zl(e),e.copy_[t]=Rl(n,e)):n},has:(e,t)=>t in pl(e),ownKeys:e=>Reflect.ownKeys(pl(e)),set(e,t,r){const n=Dl(pl(e),t);if(null==n?void 0:n.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const n=Il(pl(e),t),o=null==n?void 0:n[Jc];if(o&&o.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((i=r)===(a=n)?0!==i||1/i==1/a:i!=i&&a!=a)&&(void 0!==r||ul(e.base_,t)))return!0;zl(e),Nl(e)}var i,a;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==Il(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,zl(e),Nl(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=pl(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:n.enumerable,value:r[t]}:n},defineProperty(){el(11)},getPrototypeOf:e=>tl(e.base_),setPrototypeOf(){el(12)}},Cl={};function Il(e,t){const r=e[Jc];return(r?pl(r):e)[t]}function Dl(e,t){if(!(t in e))return;let r=tl(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=tl(r)}}function Nl(e){e.modified_||(e.modified_=!0,e.parent_&&Nl(e.parent_))}function zl(e){e.copy_||(e.copy_=hl(e.base_,e.scope_.immer_.useStrictShallowCopy_))}function Rl(e,t){const r=fl(e)?xl("MapSet").proxyMap_(e,t):dl(e)?xl("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:wl(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let i=n,a=Tl;r&&(i=[n],a=Cl);const{revoke:o,proxy:c}=Proxy.revocable(i,a);return n.draft_=c,n.revoke_=o,c}(e,t);return(t?t.scope_:wl()).drafts_.push(r),r}function Ll(e){if(!nl(e)||gl(e))return e;const t=e[Jc];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=hl(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=hl(e,!0);return cl(r,(e,t)=>{sl(r,e,Ll(t))},n),t&&(t.finalized_=!1),r}cl(Tl,(e,t)=>{Cl[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),Cl.deleteProperty=function(e,t){return Cl.set.call(this,e,t,void 0)},Cl.set=function(e,t,r){return Tl.set.call(this,e[0],t,r,e[0])},(new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const n=this;return function(e=r,...i){return n.produce(e,e=>t.call(this,e,...i))}}let n;if("function"!=typeof t&&el(6),void 0!==r&&"function"!=typeof r&&el(7),nl(e)){const i=El(this),a=Rl(e,void 0);let o=!0;try{n=t(a),o=!1}finally{o?Pl(i):jl(i)}return Ol(i,r),Sl(n,i)}if(!e||"object"!=typeof e){if(n=t(e),void 0===n&&(n=e),n===Zc&&(n=void 0),this.autoFreeze_&&yl(n,!0),r){const t=[],i=[];xl("Patches").generateReplacementPatches_(e,n,t,i),r(t,i)}return n}el(1)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,t=>e(t,...r));let r,n;return[this.produce(e,t,(e,t)=>{r=e,n=t}),r,n]},"boolean"==typeof(null==e?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof(null==e?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),"boolean"==typeof(null==e?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){var t;nl(e)||el(8),rl(e)&&(rl(t=e)||el(10),e=Ll(t));const r=El(this),n=Rl(e,void 0);return n[Jc].isManual_=!0,jl(r),n}finishDraft(e,t){const r=e&&e[Jc];r&&r.isManual_||el(9);const{scope_:n}=r;return Ol(n,t),Sl(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const n=t[r];if(0===n.path.length&&"replace"===n.op){e=n.value;break}}r>-1&&(t=t.slice(r+1));const n=xl("Patches").applyPatches_;return rl(e)?n(e,t):this.produce(e,e=>n(e,t))}}).produce;var Bl=Ha({name:"legend",initialState:{settings:{layout:"horizontal",align:"center",verticalAlign:"middle",itemSorter:"value"},size:{width:0,height:0},payload:[]},reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter},addLegendPayload:{reducer(e,t){e.payload.push(t.payload)},prepare:za()},replaceLegendPayload:{reducer(e,t){var{prev:r,next:n}=t.payload,i=ja(e).payload.indexOf(r);i>-1&&(e.payload[i]=n)},prepare:za()},removeLegendPayload:{reducer(e,t){var r=ja(e).payload.indexOf(t.payload);r>-1&&e.payload.splice(r,1)},prepare:za()}}}),{setLegendSize:Kl,setLegendSettings:Fl,addLegendPayload:Ul,replaceLegendPayload:Wl,removeLegendPayload:$l}=Bl.actions,Hl=Bl.reducer,Vl=["contextPayload"];function ql(){return ql=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t(Fl(e))},[t,e]),null}function eu(e){var t=jn();return r.useEffect(()=>(t(Kl(e)),()=>{t(Kl({width:0,height:0}))}),[t,e]),null}var tu={align:"center",iconSize:14,itemSorter:"value",layout:"horizontal",verticalAlign:"bottom"};function ru(e){var t=At(e,tu),n=kn(ci),a=r.useContext(E),o=kn(e=>e.layout.margin),{width:c,height:l,wrapperStyle:u,portal:s}=t,[f,d]=li([n]),p=Hc(),h=Vc();if(null==p||null==h)return null;var y=p-((null==o?void 0:o.left)||0)-((null==o?void 0:o.right)||0),v=function(e,t,r,n){return"vertical"===e&&tt(t)?{height:t}:"horizontal"===e?{width:r||n}:null}(t.layout,l,c,y),g=s?u:Gl(Gl({position:"absolute",width:(null==v?void 0:v.width)||c||"auto",height:(null==v?void 0:v.height)||l||"auto"},function(e,t,r,n,i,a){var o,c,{layout:l,align:u,verticalAlign:s}=t;return e&&(void 0!==e.left&&null!==e.left||void 0!==e.right&&null!==e.right)||(o="center"===u&&"vertical"===l?{left:((n||0)-a.width)/2}:"right"===u?{right:r&&r.right||0}:{left:r&&r.left||0}),e&&(void 0!==e.top&&null!==e.top||void 0!==e.bottom&&null!==e.bottom)||(c="middle"===s?{top:((i||0)-a.height)/2}:"bottom"===s?{bottom:r&&r.bottom||0}:{top:r&&r.top||0}),Gl(Gl({},o),c)}(u,t,o,p,h,f)),u),m=null!=s?s:a;if(null==m||null==n)return null;var b=r.createElement("div",{className:"recharts-legend-wrapper",style:g,ref:d},r.createElement(Jl,{layout:t.layout,align:t.align,verticalAlign:t.verticalAlign,itemSorter:t.itemSorter}),!s&&r.createElement(eu,{width:f.width,height:f.height}),r.createElement(Ql,ql({},t,v,{margin:o,chartWidth:p,chartHeight:h,contextPayload:n})));return i.createPortal(b,m)}function nu(){return nu=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{separator:t=" : ",contentStyle:n={},itemStyle:i={},labelStyle:a={},payload:o,formatter:c,itemSorter:l,wrapperClassName:u,labelClassName:f,label:d,labelFormatter:p,accessibilityLayer:h=!1}=e,y=au({margin:0,padding:10,backgroundColor:"#fff",border:"1px solid #ccc",whiteSpace:"nowrap"},n),v=au({margin:0},a),g=!ut(d),m=g?d:"",b=s("recharts-default-tooltip",u),x=s("recharts-tooltip-label",f);g&&p&&null!=o&&(m=p(d,o));var w=h?{role:"status","aria-live":"assertive"}:{};return r.createElement("div",nu({className:b,style:y},w),r.createElement("p",{className:x,style:v},r.isValidElement(m)?m:"".concat(m)),(()=>{if(o&&o.length){var e=(l?ai(o,l):o).map((e,n)=>{if("none"===e.type)return null;var a=e.formatter||c||cu,{value:l,name:u}=e,s=l,f=u;if(a){var d=a(l,u,e,n,o);if(Array.isArray(d))[s,f]=d;else{if(null==d)return null;s=d}}var p=au({display:"block",paddingTop:4,paddingBottom:4,color:e.color||"#000"},i);return r.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(n),style:p},rt(f)?r.createElement("span",{className:"recharts-tooltip-item-name"},f):null,rt(f)?r.createElement("span",{className:"recharts-tooltip-item-separator"},t):null,r.createElement("span",{className:"recharts-tooltip-item-value"},s),r.createElement("span",{className:"recharts-tooltip-item-unit"},e.unit||""))});return r.createElement("ul",{className:"recharts-tooltip-item-list",style:{padding:0,margin:0}},e)}return null})())},uu="recharts-tooltip-wrapper",su={visibility:"hidden"};function fu(e){var{coordinate:t,translateX:r,translateY:n}=e;return s(uu,{["".concat(uu,"-right")]:tt(r)&&t&&tt(t.x)&&r>=t.x,["".concat(uu,"-left")]:tt(r)&&t&&tt(t.x)&&r=t.y,["".concat(uu,"-top")]:tt(n)&&t&&tt(t.y)&&n0?i:0),f=r[n]+i;if(t[n])return o[n]?s:f;var d=l[n];return null==d?0:o[n]?sd+u?Math.max(s,d):Math.max(f,d)}function pu(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function hu(e){for(var t=1;t{var t,r,n,i;"Escape"===e.key&&this.setState({dismissed:!0,dismissedAtCoordinate:{x:null!==(t=null===(r=this.props.coordinate)||void 0===r?void 0:r.x)&&void 0!==t?t:0,y:null!==(n=null===(i=this.props.coordinate)||void 0===i?void 0:i.y)&&void 0!==n?n:0}})})}componentDidMount(){document.addEventListener("keydown",this.handleKeyDown)}componentWillUnmount(){document.removeEventListener("keydown",this.handleKeyDown)}componentDidUpdate(){var e,t;this.state.dismissed&&((null===(e=this.props.coordinate)||void 0===e?void 0:e.x)===this.state.dismissedAtCoordinate.x&&(null===(t=this.props.coordinate)||void 0===t?void 0:t.y)===this.state.dismissedAtCoordinate.y||(this.state.dismissed=!1))}render(){var{active:e,allowEscapeViewBox:t,animationDuration:n,animationEasing:i,children:a,coordinate:o,hasPayload:c,isAnimationActive:l,offset:u,position:s,reverseDirection:f,useTranslate3d:d,viewBox:p,wrapperStyle:h,lastBoundingBox:y,innerRef:v,hasPortalFromProps:g}=this.props,{cssClasses:m,cssProperties:b}=function(e){var t,r,n,{allowEscapeViewBox:i,coordinate:a,offsetTopLeft:o,position:c,reverseDirection:l,tooltipBox:u,useTranslate3d:s,viewBox:f}=e;return t=u.height>0&&u.width>0&&a?function(e){var{translateX:t,translateY:r,useTranslate3d:n}=e;return{transform:n?"translate3d(".concat(t,"px, ").concat(r,"px, 0)"):"translate(".concat(t,"px, ").concat(r,"px)")}}({translateX:r=du({allowEscapeViewBox:i,coordinate:a,key:"x",offsetTopLeft:o,position:c,reverseDirection:l,tooltipDimension:u.width,viewBox:f,viewBoxDimension:f.width}),translateY:n=du({allowEscapeViewBox:i,coordinate:a,key:"y",offsetTopLeft:o,position:c,reverseDirection:l,tooltipDimension:u.height,viewBox:f,viewBoxDimension:f.height}),useTranslate3d:s}):su,{cssProperties:t,cssClasses:fu({translateX:r,translateY:n,coordinate:a})}}({allowEscapeViewBox:t,coordinate:o,offsetTopLeft:u,position:s,reverseDirection:f,tooltipBox:{height:y.height,width:y.width},useTranslate3d:d,viewBox:p}),x=g?{}:hu(hu({transition:l&&e?"transform ".concat(n,"ms ").concat(i):void 0},b),{},{pointerEvents:"none",visibility:!this.state.dismissed&&e&&c?"visible":"hidden",position:"absolute",top:0,left:0}),w=hu(hu({},x),{},{visibility:!this.state.dismissed&&e&&c?"visible":"hidden"},h);return r.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:m,style:w,ref:v},a)}}var gu=()=>{var e;return null===(e=kn(e=>e.rootProps.accessibilityLayer))||void 0===e||e};function mu(){return mu=Object.assign?Object.assign.bind():function(e){for(var t=1;tMc(e.x)&&Mc(e.y),ju=e=>null!=e.base&&Pu(e.base)&&Pu(e),Eu=e=>e.x,Au=e=>e.y,Su=e=>{var{className:t,points:n,path:i,pathRef:a}=e;if(!(n&&n.length||i))return null;var o=n&&n.length?(e=>{var{type:t="linear",points:r=[],baseLine:n,layout:i,connectNulls:a=!1}=e,o=((e,t)=>{if("function"==typeof e)return e;var r="curve".concat(st(e));return"curveMonotone"!==r&&"curveBump"!==r||!t?Ou[r]||F:Ou["".concat(r).concat("vertical"===t?"Y":"X")]})(t,i),c=a?r.filter(Pu):r;if(Array.isArray(n)){var l=r.map((e,t)=>xu(xu({},e),{},{base:n[t]}));return("vertical"===i?H().y(Au).x1(Eu).x0(e=>e.base.x):H().x(Eu).y1(Au).y0(e=>e.base.y)).defined(ju).curve(o)(a?l.filter(ju):l)}return("vertical"===i&&tt(n)?H().y(Au).x1(Eu).x0(n):tt(n)?H().x(Eu).y1(Au).y0(n):$().x(Eu).y(Au)).defined(Pu).curve(o)(c)})(e):i;return r.createElement("path",mu({},v(e),Ot(e),{className:s("recharts-curve",t),d:null===o?void 0:o,ref:a}))},ku=["x","y","top","left","width","height","className"];function _u(){return _u=Object.assign?Object.assign.bind():function(e){for(var t=1;t"M".concat(e,",").concat(i,"v").concat(n,"M").concat(a,",").concat(t,"h").concat(r),Iu=e=>{var{x:t=0,y:n=0,top:i=0,left:a=0,width:o=0,height:c=0,className:l}=e,u=function(e){for(var t=1;te.map(e=>{return"".concat((n=e,n.replace(/([A-Z])/g,e=>"-".concat(e.toLowerCase())))," ").concat(t,"ms ").concat(r);var n}).join(","),Lu=(e,t)=>Object.keys(t).reduce((r,n)=>Nu(Nu({},r),{},{[n]:e(n,t[n])}),{});function Bu(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ku(e){for(var t=1;te+(t-e)*r,Wu=e=>{var{from:t,to:r}=e;return t!==r},$u=(e,t,r)=>{var n=Lu((t,r)=>{if(Wu(r)){var[n,i]=e(r.from,r.to,r.velocity);return Ku(Ku({},r),{},{from:n,velocity:i})}return r},t);return r<1?Lu((e,t)=>Wu(t)?Ku(Ku({},t),{},{velocity:Uu(t.velocity,n[e].velocity,r),from:Uu(t.from,n[e].from,r)}):t,t):$u(e,n,r-1)};const Hu=(e,t,r,n,i,a)=>{var o,c,l=(o=e,c=t,[Object.keys(o),Object.keys(c)].reduce((e,t)=>e.filter(e=>t.includes(e))));return null==r?()=>(i(Ku(Ku({},e),t)),()=>{}):!0===r.isStepper?function(e,t,r,n,i,a){var o,c=n.reduce((r,n)=>Ku(Ku({},r),{},{[n]:{from:e[n],velocity:0,to:t[n]}}),{}),l=null,u=n=>{o||(o=n);var s=(n-o)/r.dt;c=$u(r,c,s),i(Ku(Ku(Ku({},e),t),Lu((e,t)=>t.from,c))),o=n,Object.values(c).filter(Wu).length&&(l=a.setTimeout(u))};return()=>(l=a.setTimeout(u),()=>{var e;null===(e=l)||void 0===e||e()})}(e,t,r,l,i,a):function(e,t,r,n,i,a,o){var c,l=null,u=i.reduce((r,n)=>Ku(Ku({},r),{},{[n]:[e[n],t[n]]}),{}),s=i=>{c||(c=i);var f=(i-c)/n,d=Lu((e,t)=>Uu(...t,r(f)),u);if(a(Ku(Ku(Ku({},e),t),d)),f<1)l=o.setTimeout(s);else{var p=Lu((e,t)=>Uu(...t,r(1)),u);a(Ku(Ku(Ku({},e),t),p))}};return()=>(l=o.setTimeout(s),()=>{var e;null===(e=l)||void 0===e||e()})}(e,t,r,n,l,i,a)};var Vu=1e-4,qu=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],Yu=(e,t)=>e.map((e,r)=>e*t**r).reduce((e,t)=>e+t),Gu=(e,t)=>r=>{var n=qu(e,t);return Yu(n,r)},Xu=function(){return((e,t,r,n)=>{var i,a,o=Gu(e,r),c=Gu(t,n),l=(i=e,a=r,e=>{var t=[...qu(i,a).map((e,t)=>e*t).slice(1),0];return Yu(t,e)}),u=e=>e>1?1:e<0?0:e,s=e=>{for(var t=e>1?1:e,r=t,n=0;n<8;++n){var i=o(r)-t,a=l(r);if(Math.abs(i-t)parseFloat(e));return[a[0],a[1],a[2],a[3]]}}return 4===t.length?t:[0,0,1,1]}(...arguments))};class Zu{setTimeout(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=performance.now(),n=null,i=a=>{a-r>=t?e(a):"function"==typeof requestAnimationFrame&&(n=requestAnimationFrame(i))};return n=requestAnimationFrame(i),()=>{null!=n&&cancelAnimationFrame(n)}}}function Qu(){return e=new Zu,t=()=>null,r=!1,n=null,i=a=>{if(!r){if(Array.isArray(a)){if(!a.length)return;var o=a,[c,...l]=o;return"number"==typeof c?void(n=e.setTimeout(i.bind(null,l),c)):(i(c),void(n=e.setTimeout(i.bind(null,l))))}"string"==typeof a&&t(a),"object"==typeof a&&t(a),"function"==typeof a&&a()}},{stop:()=>{r=!0},start:e=>{r=!1,n&&(n(),n=null),i(e)},subscribe:e=>(t=e,()=>{t=()=>null}),getTimeoutController:()=>e};var e,t,r,n,i}var Ju=r.createContext(Qu);function es(e,t){var n=r.useContext(Ju);return r.useMemo(()=>null!=t?t:n(e),[e,t,n])}var ts=!("undefined"!=typeof window&&window.document&&Boolean(window.document.createElement)&&window.setTimeout),rs={begin:0,duration:1e3,easing:"ease",isActive:!0,canBegin:!0,onAnimationEnd:()=>{},onAnimationStart:()=>{}},ns={t:0},is={t:1};function as(e){var t=At(e,rs),{isActive:n,canBegin:i,duration:a,easing:o,begin:c,onAnimationEnd:l,onAnimationStart:u,children:s}=t,f="auto"===n?!ts:n,d=es(t.animationId,t.animationManager),[p,h]=r.useState(f?ns:is),y=r.useRef(null);return r.useEffect(()=>{f||h(is)},[f]),r.useEffect(()=>{if(!f||!i)return dt;var e=Hu(ns,is,(e=>{if("string"==typeof e)switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return Xu(e);case"spring":return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{stiff:t=100,damping:r=8,dt:n=17}=e,i=(e,i,a)=>{var o=a+(-(e-i)*t-a*r)*n/1e3,c=a*n/1e3+e;return Math.abs(c-i){y.current=e()},a,l]),()=>{d.stop(),y.current&&y.current(),l()}},[f,i,a,o,c,u,l,d]),s(p.t)}function os(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"animation-",n=r.useRef(it(t)),i=r.useRef(e);return i.current!==e&&(n.current=it(t),i.current=e),n.current}var cs=["radius"],ls=["radius"];function us(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ss(e){for(var t=1;t{var a,o=Math.min(Math.abs(r)/2,Math.abs(n)/2),c=n>=0?1:-1,l=r>=0?1:-1,u=n>=0&&r>=0||n<0&&r<0?1:0;if(o>0&&i instanceof Array){for(var s=[0,0,0,0],f=0;f<4;f++)s[f]=i[f]>o?o:i[f];a="M".concat(e,",").concat(t+c*s[0]),s[0]>0&&(a+="A ".concat(s[0],",").concat(s[0],",0,0,").concat(u,",").concat(e+l*s[0],",").concat(t)),a+="L ".concat(e+r-l*s[1],",").concat(t),s[1]>0&&(a+="A ".concat(s[1],",").concat(s[1],",0,0,").concat(u,",\n ").concat(e+r,",").concat(t+c*s[1])),a+="L ".concat(e+r,",").concat(t+n-c*s[2]),s[2]>0&&(a+="A ".concat(s[2],",").concat(s[2],",0,0,").concat(u,",\n ").concat(e+r-l*s[2],",").concat(t+n)),a+="L ".concat(e+l*s[3],",").concat(t+n),s[3]>0&&(a+="A ".concat(s[3],",").concat(s[3],",0,0,").concat(u,",\n ").concat(e,",").concat(t+n-c*s[3])),a+="Z"}else if(o>0&&i===+i&&i>0){var d=Math.min(o,i);a="M ".concat(e,",").concat(t+c*d,"\n A ").concat(d,",").concat(d,",0,0,").concat(u,",").concat(e+l*d,",").concat(t,"\n L ").concat(e+r-l*d,",").concat(t,"\n A ").concat(d,",").concat(d,",0,0,").concat(u,",").concat(e+r,",").concat(t+c*d,"\n L ").concat(e+r,",").concat(t+n-c*d,"\n A ").concat(d,",").concat(d,",0,0,").concat(u,",").concat(e+r-l*d,",").concat(t+n,"\n L ").concat(e+l*d,",").concat(t+n,"\n A ").concat(d,",").concat(d,",0,0,").concat(u,",").concat(e,",").concat(t+n-c*d," Z")}else a="M ".concat(e,",").concat(t," h ").concat(r," v ").concat(n," h ").concat(-r," Z");return a},ys={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},vs=e=>{var t=At(e,ys),n=r.useRef(null),[i,a]=r.useState(-1);r.useEffect(()=>{if(n.current&&n.current.getTotalLength)try{var e=n.current.getTotalLength();e&&a(e)}catch(t){}},[]);var{x:o,y:c,width:l,height:u,radius:f,className:d}=t,{animationEasing:p,animationDuration:h,animationBegin:y,isAnimationActive:v,isUpdateAnimationActive:g}=t,b=r.useRef(l),x=r.useRef(u),w=r.useRef(o),O=r.useRef(c),P=os(r.useMemo(()=>({x:o,y:c,width:l,height:u,radius:f}),[o,c,l,u,f]),"rectangle-");if(o!==+o||c!==+c||l!==+l||u!==+u||0===l||0===u)return null;var j=s("recharts-rectangle",d);if(!g){var E=m(t),{radius:A}=E,S=ps(E,cs);return r.createElement("path",ds({},S,{radius:"number"==typeof f?f:void 0,className:j,d:hs(o,c,l,u,f)}))}var k=b.current,_=x.current,M=w.current,T=O.current,C="0px ".concat(-1===i?1:i,"px"),I="".concat(i,"px 0px"),D=Ru(["strokeDasharray"],h,"string"==typeof p?p:ys.animationEasing);return r.createElement(as,{animationId:P,key:P,canBegin:i>0,duration:h,easing:p,isActive:g,begin:y},e=>{var i,a=ct(k,l,e),s=ct(_,u,e),d=ct(M,o,e),p=ct(T,c,e);n.current&&(b.current=a,x.current=s,w.current=d,O.current=p),i=v?e>0?{transition:D,strokeDasharray:I}:{strokeDasharray:C}:{strokeDasharray:I};var h=m(t),{radius:y}=h,g=ps(h,ls);return r.createElement("path",ds({},g,{radius:"number"==typeof f?f:void 0,className:j,d:hs(d,p,a,s,f),ref:n,style:ss(ss({},i),t.style)}))})};function gs(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ms(e){for(var t=1;t180*e/Math.PI,Os=(e,t,r,n)=>({x:e+Math.cos(-xs*n)*r,y:t+Math.sin(-xs*n)*r}),Ps=(e,t)=>{var{startAngle:r,endAngle:n}=t,i=Math.floor(r/360),a=Math.floor(n/360);return e+360*Math.min(i,a)},js=(e,t)=>{var{chartX:r,chartY:n}=e,{radius:i,angle:a}=((e,t)=>{var{x:r,y:n}=e,{cx:i,cy:a}=t,o=((e,t)=>{var{x:r,y:n}=e,{x:i,y:a}=t;return Math.sqrt((r-i)**2+(n-a)**2)})({x:r,y:n},{x:i,y:a});if(o<=0)return{radius:o,angle:0};var c=(r-i)/o,l=Math.acos(c);return n>a&&(l=2*Math.PI-l),{radius:o,angle:ws(l),angleInRadian:l}})({x:r,y:n},t),{innerRadius:o,outerRadius:c}=t;if(ic)return null;if(0===i)return null;var l,{startAngle:u,endAngle:s}=(e=>{var{startAngle:t,endAngle:r}=e,n=Math.floor(t/360),i=Math.floor(r/360),a=Math.min(n,i);return{startAngle:t-360*a,endAngle:r-360*a}})(t),f=a;if(u<=s){for(;f>s;)f-=360;for(;f=u&&f<=s}else{for(;f>u;)f-=360;for(;f=s&&f<=u}return l?ms(ms({},t),{},{radius:i,angle:Ps(f,t)}):null};function Es(e){var{cx:t,cy:r,radius:n,startAngle:i,endAngle:a}=e;return{points:[Os(t,r,n,i),Os(t,r,n,a)],cx:t,cy:r,radius:n,startAngle:i,endAngle:a}}function As(){return As=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:r,radius:n,angle:i,sign:a,isExternal:o,cornerRadius:c,cornerIsExternal:l}=e,u=c*(o?1:-1)+n,s=Math.asin(c/u)/xs,f=l?i:i+a*s,d=l?i-a*s:i;return{center:Os(t,r,u,f),circleTangency:Os(t,r,n,f),lineTangency:Os(t,r,u*Math.cos(s*xs),d),theta:s}},ks=e=>{var{cx:t,cy:r,innerRadius:n,outerRadius:i,startAngle:a,endAngle:o}=e,c=((e,t)=>Qe(t-e)*Math.min(Math.abs(t-e),359.999))(a,o),l=a+c,u=Os(t,r,i,a),s=Os(t,r,i,l),f="M ".concat(u.x,",").concat(u.y,"\n A ").concat(i,",").concat(i,",0,\n ").concat(+(Math.abs(c)>180),",").concat(+(a>l),",\n ").concat(s.x,",").concat(s.y,"\n ");if(n>0){var d=Os(t,r,n,a),p=Os(t,r,n,l);f+="L ".concat(p.x,",").concat(p.y,"\n A ").concat(n,",").concat(n,",0,\n ").concat(+(Math.abs(c)>180),",").concat(+(a<=l),",\n ").concat(d.x,",").concat(d.y," Z")}else f+="L ".concat(t,",").concat(r," Z");return f},_s={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Ms=e=>{var t=At(e,_s),{cx:n,cy:i,innerRadius:a,outerRadius:o,cornerRadius:c,forceCornerRadius:l,cornerIsExternal:u,startAngle:f,endAngle:d,className:p}=t;if(o0&&Math.abs(f-d)<360?(e=>{var{cx:t,cy:r,innerRadius:n,outerRadius:i,cornerRadius:a,forceCornerRadius:o,cornerIsExternal:c,startAngle:l,endAngle:u}=e,s=Qe(u-l),{circleTangency:f,lineTangency:d,theta:p}=Ss({cx:t,cy:r,radius:i,angle:l,sign:s,cornerRadius:a,cornerIsExternal:c}),{circleTangency:h,lineTangency:y,theta:v}=Ss({cx:t,cy:r,radius:i,angle:u,sign:-s,cornerRadius:a,cornerIsExternal:c}),g=c?Math.abs(l-u):Math.abs(l-u)-p-v;if(g<0)return o?"M ".concat(d.x,",").concat(d.y,"\n a").concat(a,",").concat(a,",0,0,1,").concat(2*a,",0\n a").concat(a,",").concat(a,",0,0,1,").concat(2*-a,",0\n "):ks({cx:t,cy:r,innerRadius:n,outerRadius:i,startAngle:l,endAngle:u});var m="M ".concat(d.x,",").concat(d.y,"\n A").concat(a,",").concat(a,",0,0,").concat(+(s<0),",").concat(f.x,",").concat(f.y,"\n A").concat(i,",").concat(i,",0,").concat(+(g>180),",").concat(+(s<0),",").concat(h.x,",").concat(h.y,"\n A").concat(a,",").concat(a,",0,0,").concat(+(s<0),",").concat(y.x,",").concat(y.y,"\n ");if(n>0){var{circleTangency:b,lineTangency:x,theta:w}=Ss({cx:t,cy:r,radius:n,angle:l,sign:s,isExternal:!0,cornerRadius:a,cornerIsExternal:c}),{circleTangency:O,lineTangency:P,theta:j}=Ss({cx:t,cy:r,radius:n,angle:u,sign:-s,isExternal:!0,cornerRadius:a,cornerIsExternal:c}),E=c?Math.abs(l-u):Math.abs(l-u)-w-j;if(E<0&&0===a)return"".concat(m,"L").concat(t,",").concat(r,"Z");m+="L".concat(P.x,",").concat(P.y,"\n A").concat(a,",").concat(a,",0,0,").concat(+(s<0),",").concat(O.x,",").concat(O.y,"\n A").concat(n,",").concat(n,",0,").concat(+(E>180),",").concat(+(s>0),",").concat(b.x,",").concat(b.y,"\n A").concat(a,",").concat(a,",0,0,").concat(+(s<0),",").concat(x.x,",").concat(x.y,"Z")}else m+="L".concat(t,",").concat(r,"Z");return m})({cx:n,cy:i,innerRadius:a,outerRadius:o,cornerRadius:Math.min(g,v/2),forceCornerRadius:l,cornerIsExternal:u,startAngle:f,endAngle:d}):ks({cx:n,cy:i,innerRadius:a,outerRadius:o,startAngle:f,endAngle:d}),r.createElement("path",As({},m(t),{className:y,d:h}))};function Ts(e,t,r){if("horizontal"===e)return[{x:t.x,y:r.top},{x:t.x,y:r.top+r.height}];if("vertical"===e)return[{x:r.left,y:t.y},{x:r.left+r.width,y:t.y}];if(wt(t)){if("centric"===e){var{cx:n,cy:i,innerRadius:a,outerRadius:o,angle:c}=t,l=Os(n,i,a,c),u=Os(n,i,o,c);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return Es(t)}}var Cs,Is,Ds,Ns,zs,Rs={},Ls={},Bs={};function Ks(){return Cs||(Cs=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Vn();e.toNumber=function(e){return t.isSymbol(e)?NaN:Number(e)}}(Bs)),Bs}function Fs(){return Is||(Is=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Ks();e.toFinite=function(e){return e?(e=t.toNumber(e))===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e==e?e:0:0===e?e:0}}(Ls)),Ls}function Us(){return zs?Ns:(zs=1,Ns=(Ds||(Ds=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ni(),r=Fs();e.range=function(e,n,i){i&&"number"!=typeof i&&t.isIterateeCall(e,n,i)&&(n=i=void 0),e=r.toFinite(e),void 0===n?(n=e,e=0):n=r.toFinite(n),i=void 0===i?et?1:e>=t?0:NaN}function Hs(e,t){return null==e||null==t?NaN:te?1:t>=e?0:NaN}function Vs(e){let t,r,n;function i(e,n,i=0,a=e.length){if(i>>1;r(e[t],n)<0?i=t+1:a=t}while(i$s(e(t),r),n=(t,r)=>e(t)-r):(t=e===$s||e===Hs?e:qs,r=e,n=e),{left:i,center:function(e,t,r=0,a=e.length){const o=i(e,t,r,a-1);return o>r&&n(e[o-1],t)>-n(e[o],t)?o-1:o},right:function(e,n,i=0,a=e.length){if(i>>1;r(e[t],n)<=0?i=t+1:a=t}while(i=e))-(null==t||!(t>=t))||(et?1:0)}const ef=Math.sqrt(50),tf=Math.sqrt(10),rf=Math.sqrt(2);function nf(e,t,r){const n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),o=a>=ef?10:a>=tf?5:a>=rf?2:1;let c,l,u;return i<0?(u=Math.pow(10,-i)/o,c=Math.round(e*u),l=Math.round(t*u),c/ut&&--l,u=-u):(u=Math.pow(10,i)*o,c=Math.round(e/u),l=Math.round(t/u),c*ut&&--l),l0))return[];if((e=+e)===(t=+t))return[e];const n=t=i))return[];const c=a-i+1,l=new Array(c);if(n)if(o<0)for(let u=0;u=n)&&(r=n);return r}function uf(e,t){let r;for(const n of e)null!=n&&(r>n||void 0===r&&n>=n)&&(r=n);return r}function sf(e,t,r=0,n=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(i=void 0===i?Js:function(e=$s){if(e===$s)return Js;if("function"!=typeof e)throw new TypeError("compare is not a function");return(t,r)=>{const n=e(t,r);return n||0===n?n:(0===e(r,r))-(0===e(t,t))}}(i);n>r;){if(n-r>600){const a=n-r+1,o=t-r+1,c=Math.log(a),l=.5*Math.exp(2*c/3),u=.5*Math.sqrt(c*l*(a-l)/a)*(o-a/2<0?-1:1);sf(e,t,Math.max(r,Math.floor(t-o*l/a+u)),Math.min(n,Math.floor(t+(a-o)*l/a+u)),i)}const a=e[t];let o=r,c=n;for(ff(e,r,t),i(e[n],a)>0&&ff(e,r,n);o0;)--c}0===i(e[r],a)?ff(e,r,c):(++c,ff(e,c,n)),c<=t&&(r=c+1),t<=c&&(n=c-1)}return e}function ff(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function df(e,t,r=Ys){if((n=e.length)&&!isNaN(t=+t)){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,i=(n-1)*t,a=Math.floor(i),o=+r(e[a],a,e);return o+(+r(e[a+1],a+1,e)-o)*(i-a)}}function pf(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function hf(e,t){switch(arguments.length){case 0:break;case 1:"function"==typeof e?this.interpolator(e):this.range(e);break;default:this.domain(e),"function"==typeof t?this.interpolator(t):this.range(t)}return this}const yf=Symbol("implicit");function vf(){var e=new Xs,t=[],r=[],n=yf;function i(i){let a=e.get(i);if(void 0===a){if(n!==yf)return n;e.set(i,a=t.push(i)-1)}return r[a%r.length]}return i.domain=function(r){if(!arguments.length)return t.slice();t=[],e=new Xs;for(const n of r)e.has(n)||e.set(n,t.push(n)-1);return i},i.range=function(e){return arguments.length?(r=Array.from(e),i):r.slice()},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return vf(t,r).unknown(n)},pf.apply(i,arguments),i}function gf(){var e,t,r=vf().unknown(void 0),n=r.domain,i=r.range,a=0,o=1,c=!1,l=0,u=0,s=.5;function f(){var r=n().length,f=o>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?Bf(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?Bf(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=kf.exec(e))?new Ff(t[1],t[2],t[3],1):(t=_f.exec(e))?new Ff(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=Mf.exec(e))?Bf(t[1],t[2],t[3],t[4]):(t=Tf.exec(e))?Bf(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=Cf.exec(e))?qf(t[1],t[2]/100,t[3]/100,1):(t=If.exec(e))?qf(t[1],t[2]/100,t[3]/100,t[4]):Df.hasOwnProperty(e)?Lf(Df[e]):"transparent"===e?new Ff(NaN,NaN,NaN,0):null}function Lf(e){return new Ff(e>>16&255,e>>8&255,255&e,1)}function Bf(e,t,r,n){return n<=0&&(e=t=r=NaN),new Ff(e,t,r,n)}function Kf(e,t,r,n){return 1===arguments.length?((i=e)instanceof wf||(i=Rf(i)),i?new Ff((i=i.rgb()).r,i.g,i.b,i.opacity):new Ff):new Ff(e,t,r,null==n?1:n);var i}function Ff(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function Uf(){return`#${Vf(this.r)}${Vf(this.g)}${Vf(this.b)}`}function Wf(){const e=$f(this.opacity);return`${1===e?"rgb(":"rgba("}${Hf(this.r)}, ${Hf(this.g)}, ${Hf(this.b)}${1===e?")":`, ${e})`}`}function $f(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Hf(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Vf(e){return((e=Hf(e))<16?"0":"")+e.toString(16)}function qf(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Gf(e,t,r,n)}function Yf(e){if(e instanceof Gf)return new Gf(e.h,e.s,e.l,e.opacity);if(e instanceof wf||(e=Rf(e)),!e)return new Gf;if(e instanceof Gf)return e;var t=(e=e.rgb()).r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,c=a-i,l=(a+i)/2;return c?(o=t===a?(r-n)/c+6*(r0&&l<1?0:o,new Gf(o,c,l,e.opacity)}function Gf(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function Xf(e){return(e=(e||0)%360)<0?e+360:e}function Zf(e){return Math.max(0,Math.min(1,e||0))}function Qf(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}bf(wf,Rf,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Nf,formatHex:Nf,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Yf(this).formatHsl()},formatRgb:zf,toString:zf}),bf(Ff,Kf,xf(wf,{brighter(e){return e=null==e?Pf:Math.pow(Pf,e),new Ff(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?Of:Math.pow(Of,e),new Ff(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ff(Hf(this.r),Hf(this.g),Hf(this.b),$f(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Uf,formatHex:Uf,formatHex8:function(){return`#${Vf(this.r)}${Vf(this.g)}${Vf(this.b)}${Vf(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Wf,toString:Wf})),bf(Gf,function(e,t,r,n){return 1===arguments.length?Yf(e):new Gf(e,t,r,null==n?1:n)},xf(wf,{brighter(e){return e=null==e?Pf:Math.pow(Pf,e),new Gf(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?Of:Math.pow(Of,e),new Gf(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Ff(Qf(e>=240?e-240:e+120,i,n),Qf(e,i,n),Qf(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Gf(Xf(this.h),Zf(this.s),Zf(this.l),$f(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=$f(this.opacity);return`${1===e?"hsl(":"hsla("}${Xf(this.h)}, ${100*Zf(this.s)}%, ${100*Zf(this.l)}%${1===e?")":`, ${e})`}`}}));const Jf=e=>()=>e;function ed(e,t){var r=t-e;return r?function(e,t){return function(r){return e+r*t}}(e,r):Jf(isNaN(e)?t:e)}const td=function e(t){var r=function(e){return 1===(e=+e)?ed:function(t,r){return r-t?function(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}(t,r,e):Jf(isNaN(t)?r:t)}}(t);function n(e,t){var n=r((e=Kf(e)).r,(t=Kf(t)).r),i=r(e.g,t.g),a=r(e.b,t.b),o=ed(e.opacity,t.opacity);return function(t){return e.r=n(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+""}}return n.gamma=e,n}(1);function rd(e,t){t||(t=[]);var r,n=e?Math.min(t.length,e.length):0,i=t.slice();return function(a){for(r=0;ra&&(i=t.slice(a,i),c[o]?c[o]+=i:c[++o]=i),(r=r[0])===(n=n[0])?c[o]?c[o]+=n:c[++o]=n:(c[++o]=null,l.push({i:o,x:ad(r,n)})),a=ld.lastIndex;return at&&(r=e,e=t,t=r),u=function(r){return Math.max(e,Math.min(t,r))}),n=l>2?gd:vd,i=a=null,f}function f(t){return null==t||isNaN(t=+t)?r:(i||(i=n(o.map(e),c,l)))(e(u(t)))}return f.invert=function(r){return u(t((a||(a=n(c,o.map(e),ad)))(r)))},f.domain=function(e){return arguments.length?(o=Array.from(e,dd),s()):o.slice()},f.range=function(e){return arguments.length?(c=Array.from(e),s()):c.slice()},f.rangeRound=function(e){return c=Array.from(e),l=fd,s()},f.clamp=function(e){return arguments.length?(u=!!e||hd,s()):u!==hd},f.interpolate=function(e){return arguments.length?(l=e,s()):l},f.unknown=function(e){return arguments.length?(r=e,f):r},function(r,n){return e=r,t=n,s()}}function xd(){return bd()(hd,hd)}function wd(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Od(e){return(e=wd(Math.abs(e)))?e[1]:NaN}var Pd,jd=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ed(e){if(!(t=jd.exec(e)))throw new Error("invalid format: "+e);var t;return new Ad({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Ad(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function Sd(e,t){var r=wd(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}Ed.prototype=Ad.prototype,Ad.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const kd={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Sd(100*e,t),r:Sd,s:function(e,t){var r=wd(e,t);if(!r)return e+"";var n=r[0],i=r[1],a=i-(Pd=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=n.length;return a===o?n:a>o?n+new Array(a-o+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+wd(e,Math.max(0,t+a-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function _d(e){return e}var Md,Td,Cd,Id=Array.prototype.map,Dd=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Nd(e,t,r,n){var i,a=cf(e,t,r);switch((n=Ed(null==n?",f":n)).type){case"s":var o=Math.max(Math.abs(e),Math.abs(t));return null!=n.precision||isNaN(i=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Od(t)/3)))-Od(Math.abs(e)))}(a,o))||(n.precision=i),Cd(n,o);case"":case"e":case"g":case"p":case"r":null!=n.precision||isNaN(i=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Od(t)-Od(e))+1}(a,Math.max(Math.abs(e),Math.abs(t))))||(n.precision=i-("e"===n.type));break;case"f":case"%":null!=n.precision||isNaN(i=function(e){return Math.max(0,-Od(Math.abs(e)))}(a))||(n.precision=i-2*("%"===n.type))}return Td(n)}function zd(e){var t=e.domain;return e.ticks=function(e){var r=t();return af(r[0],r[r.length-1],null==e?10:e)},e.tickFormat=function(e,r){var n=t();return Nd(n[0],n[n.length-1],null==e?10:e,r)},e.nice=function(r){null==r&&(r=10);var n,i,a=t(),o=0,c=a.length-1,l=a[o],u=a[c],s=10;for(u0;){if((i=of(l,u,r))===n)return a[o]=l,a[c]=u,t(a);if(i>0)l=Math.floor(l/i)*i,u=Math.ceil(u/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,u=Math.floor(u*i)/i}n=i}return e},e}function Rd(e,t){var r,n=0,i=(e=e.slice()).length-1,a=e[n],o=e[i];return o-e(-t,r)}function $d(e){const t=e(Ld,Bd),r=t.domain;let n,i,a=10;function o(){return n=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}(a),i=function(e){return 10===e?Ud:e===Math.E?Math.exp:t=>Math.pow(e,t)}(a),r()[0]<0?(n=Wd(n),i=Wd(i),e(Kd,Fd)):e(Ld,Bd),t}return t.base=function(e){return arguments.length?(a=+e,o()):a},t.domain=function(e){return arguments.length?(r(e),o()):r()},t.ticks=e=>{const t=r();let o=t[0],c=t[t.length-1];const l=c0){for(;f<=d;++f)for(u=1;uc)break;h.push(s)}}else for(;f<=d;++f)for(u=a-1;u>=1;--u)if(s=f>0?u/i(-f):u*i(f),!(sc)break;h.push(s)}2*h.length{if(null==e&&(e=10),null==r&&(r=10===a?"s":","),"function"!=typeof r&&(a%1||null!=(r=Ed(r)).precision||(r.trim=!0),r=Td(r)),e===1/0)return r;const o=Math.max(1,a*e/t.ticks().length);return e=>{let t=e/i(Math.round(n(e)));return t*ar(Rd(r(),{floor:e=>i(Math.floor(n(e))),ceil:e=>i(Math.ceil(n(e)))})),t}function Hd(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Vd(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function qd(e){var t=1,r=e(Hd(t),Vd(t));return r.constant=function(r){return arguments.length?e(Hd(t=+r),Vd(t)):t},zd(r)}function Yd(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Gd(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Xd(e){return e<0?-e*e:e*e}function Zd(e){var t=e(hd,hd),r=1;return t.exponent=function(t){return arguments.length?1===(r=+t)?e(hd,hd):.5===r?e(Gd,Xd):e(Yd(r),Yd(1/r)):r},zd(t)}function Qd(){var e=Zd(bd());return e.copy=function(){return md(e,Qd()).exponent(e.exponent())},pf.apply(e,arguments),e}function Jd(e){return Math.sign(e)*e*e}Md=function(e){var t,r,n=void 0===e.grouping||void 0===e.thousands?_d:(t=Id.call(e.grouping,Number),r=e.thousands+"",function(e,n){for(var i=e.length,a=[],o=0,c=t[0],l=0;i>0&&c>0&&(l+c+1>n&&(c=Math.max(1,n-l)),a.push(e.substring(i-=c,i+c)),!((l+=c+1)>n));)c=t[o=(o+1)%t.length];return a.reverse().join(r)}),i=void 0===e.currency?"":e.currency[0]+"",a=void 0===e.currency?"":e.currency[1]+"",o=void 0===e.decimal?".":e.decimal+"",c=void 0===e.numerals?_d:function(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}(Id.call(e.numerals,String)),l=void 0===e.percent?"%":e.percent+"",u=void 0===e.minus?"−":e.minus+"",s=void 0===e.nan?"NaN":e.nan+"";function f(e){var t=(e=Ed(e)).fill,r=e.align,f=e.sign,d=e.symbol,p=e.zero,h=e.width,y=e.comma,v=e.precision,g=e.trim,m=e.type;"n"===m?(y=!0,m="g"):kd[m]||(void 0===v&&(v=12),g=!0,m="g"),(p||"0"===t&&"="===r)&&(p=!0,t="0",r="=");var b="$"===d?i:"#"===d&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",x="$"===d?a:/[%p]/.test(m)?l:"",w=kd[m],O=/[defgprs%]/.test(m);function P(e){var i,a,l,d=b,P=x;if("c"===m)P=w(e)+P,e="";else{var j=(e=+e)<0||1/e<0;if(e=isNaN(e)?s:w(Math.abs(e),v),g&&(e=function(e){e:for(var t,r=e.length,n=1,i=-1;n0&&(i=0)}return i>0?e.slice(0,i)+e.slice(t+1):e}(e)),j&&0===+e&&"+"!==f&&(j=!1),d=(j?"("===f?f:u:"-"===f||"("===f?"":f)+d,P=("s"===m?Dd[8+Pd/3]:"")+P+(j&&"("===f?")":""),O)for(i=-1,a=e.length;++i(l=e.charCodeAt(i))||l>57){P=(46===l?o+e.slice(i+1):e.slice(i))+P,e=e.slice(0,i);break}}y&&!p&&(e=n(e,1/0));var E=d.length+e.length+P.length,A=E>1)+d+e+P+A.slice(E);break;default:e=A+d+e+P}return c(e)}return v=void 0===v?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),P.toString=function(){return e+""},P}return{format:f,formatPrefix:function(e,t){var r=f(((e=Ed(e)).type="f",e)),n=3*Math.max(-8,Math.min(8,Math.floor(Od(t)/3))),i=Math.pow(10,-n),a=Dd[8+n/3];return function(e){return r(i*e)+a}}}}({thousands:",",grouping:[3],currency:["$",""]}),Td=Md.format,Cd=Md.formatPrefix;const ep=new Date,tp=new Date;function rp(e,t,r,n){function i(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=r=>(e(r=new Date(r-1)),t(r,1),e(r),r),i.round=e=>{const t=i(e),r=i.ceil(e);return e-t(t(e=new Date(+e),null==r?1:Math.floor(r)),e),i.range=(r,n,a)=>{const o=[];if(r=i.ceil(r),a=null==a?1:Math.floor(a),!(r0))return o;let c;do{o.push(c=new Date(+r)),t(r,a),e(r)}while(crp(t=>{if(t>=t)for(;e(t),!r(t);)t.setTime(t-1)},(e,n)=>{if(e>=e)if(n<0)for(;++n<=0;)for(;t(e,-1),!r(e););else for(;--n>=0;)for(;t(e,1),!r(e););}),r&&(i.count=(t,n)=>(ep.setTime(+t),tp.setTime(+n),e(ep),e(tp),Math.floor(r(ep,tp))),i.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?i.filter(n?t=>n(t)%e===0:t=>i.count(0,t)%e===0):i:null)),i}const np=rp(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);np.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?rp(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):np:null),np.range;const ip=1e3,ap=6e4,op=36e5,cp=864e5,lp=6048e5,up=31536e6,sp=rp(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*ip)},(e,t)=>(t-e)/ip,e=>e.getUTCSeconds());sp.range;const fp=rp(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*ip)},(e,t)=>{e.setTime(+e+t*ap)},(e,t)=>(t-e)/ap,e=>e.getMinutes());fp.range;const dp=rp(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*ap)},(e,t)=>(t-e)/ap,e=>e.getUTCMinutes());dp.range;const pp=rp(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*ip-e.getMinutes()*ap)},(e,t)=>{e.setTime(+e+t*op)},(e,t)=>(t-e)/op,e=>e.getHours());pp.range;const hp=rp(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*op)},(e,t)=>(t-e)/op,e=>e.getUTCHours());hp.range;const yp=rp(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*ap)/cp,e=>e.getDate()-1);yp.range;const vp=rp(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/cp,e=>e.getUTCDate()-1);vp.range;const gp=rp(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/cp,e=>Math.floor(e/cp));function mp(e){return rp(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+7*t)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*ap)/lp)}gp.range;const bp=mp(0),xp=mp(1),wp=mp(2),Op=mp(3),Pp=mp(4),jp=mp(5),Ep=mp(6);function Ap(e){return rp(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)},(e,t)=>(t-e)/lp)}bp.range,xp.range,wp.range,Op.range,Pp.range,jp.range,Ep.range;const Sp=Ap(0),kp=Ap(1),_p=Ap(2),Mp=Ap(3),Tp=Ap(4),Cp=Ap(5),Ip=Ap(6);Sp.range,kp.range,_p.range,Mp.range,Tp.range,Cp.range,Ip.range;const Dp=rp(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear()),e=>e.getMonth());Dp.range;const Np=rp(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear()),e=>e.getUTCMonth());Np.range;const zp=rp(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());zp.every=e=>isFinite(e=Math.floor(e))&&e>0?rp(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)}):null,zp.range;const Rp=rp(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());function Lp(e,t,r,n,i,a){const o=[[sp,1,ip],[sp,5,5e3],[sp,15,15e3],[sp,30,3e4],[a,1,ap],[a,5,3e5],[a,15,9e5],[a,30,18e5],[i,1,op],[i,3,108e5],[i,6,216e5],[i,12,432e5],[n,1,cp],[n,2,1728e5],[r,1,lp],[t,1,2592e6],[t,3,7776e6],[e,1,up]];function c(t,r,n){const i=Math.abs(r-t)/n,a=Vs(([,,e])=>e).right(o,i);if(a===o.length)return e.every(cf(t/up,r/up,n));if(0===a)return np.every(Math.max(cf(t,r,n),1));const[c,l]=o[i/o[a-1][2]isFinite(e=Math.floor(e))&&e>0?rp(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)}):null,Rp.range;const[Bp,Kp]=Lp(Rp,Np,Sp,gp,hp,dp),[Fp,Up]=Lp(zp,Dp,bp,yp,pp,fp);function Wp(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function $p(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Hp(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}var Vp,qp,Yp,Gp={"-":"",_:" ",0:"0"},Xp=/^\s*\d+/,Zp=/^%/,Qp=/[\\^$*+?|[\]().{}]/g;function Jp(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",a=i.length;return n+(a[e.toLowerCase(),t]))}function nh(e,t,r){var n=Xp.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function ih(e,t,r){var n=Xp.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function ah(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function oh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function ch(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function lh(e,t,r){var n=Xp.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function uh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function sh(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function fh(e,t,r){var n=Xp.exec(t.slice(r,r+1));return n?(e.q=3*n[0]-3,r+n[0].length):-1}function dh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function ph(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function hh(e,t,r){var n=Xp.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function yh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function vh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function gh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function mh(e,t,r){var n=Xp.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function bh(e,t,r){var n=Xp.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function xh(e,t,r){var n=Zp.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function wh(e,t,r){var n=Xp.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Oh(e,t,r){var n=Xp.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function Ph(e,t){return Jp(e.getDate(),t,2)}function jh(e,t){return Jp(e.getHours(),t,2)}function Eh(e,t){return Jp(e.getHours()%12||12,t,2)}function Ah(e,t){return Jp(1+yp.count(zp(e),e),t,3)}function Sh(e,t){return Jp(e.getMilliseconds(),t,3)}function kh(e,t){return Sh(e,t)+"000"}function _h(e,t){return Jp(e.getMonth()+1,t,2)}function Mh(e,t){return Jp(e.getMinutes(),t,2)}function Th(e,t){return Jp(e.getSeconds(),t,2)}function Ch(e){var t=e.getDay();return 0===t?7:t}function Ih(e,t){return Jp(bp.count(zp(e)-1,e),t,2)}function Dh(e){var t=e.getDay();return t>=4||0===t?Pp(e):Pp.ceil(e)}function Nh(e,t){return e=Dh(e),Jp(Pp.count(zp(e),e)+(4===zp(e).getDay()),t,2)}function zh(e){return e.getDay()}function Rh(e,t){return Jp(xp.count(zp(e)-1,e),t,2)}function Lh(e,t){return Jp(e.getFullYear()%100,t,2)}function Bh(e,t){return Jp((e=Dh(e)).getFullYear()%100,t,2)}function Kh(e,t){return Jp(e.getFullYear()%1e4,t,4)}function Fh(e,t){var r=e.getDay();return Jp((e=r>=4||0===r?Pp(e):Pp.ceil(e)).getFullYear()%1e4,t,4)}function Uh(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Jp(t/60|0,"0",2)+Jp(t%60,"0",2)}function Wh(e,t){return Jp(e.getUTCDate(),t,2)}function $h(e,t){return Jp(e.getUTCHours(),t,2)}function Hh(e,t){return Jp(e.getUTCHours()%12||12,t,2)}function Vh(e,t){return Jp(1+vp.count(Rp(e),e),t,3)}function qh(e,t){return Jp(e.getUTCMilliseconds(),t,3)}function Yh(e,t){return qh(e,t)+"000"}function Gh(e,t){return Jp(e.getUTCMonth()+1,t,2)}function Xh(e,t){return Jp(e.getUTCMinutes(),t,2)}function Zh(e,t){return Jp(e.getUTCSeconds(),t,2)}function Qh(e){var t=e.getUTCDay();return 0===t?7:t}function Jh(e,t){return Jp(Sp.count(Rp(e)-1,e),t,2)}function ey(e){var t=e.getUTCDay();return t>=4||0===t?Tp(e):Tp.ceil(e)}function ty(e,t){return e=ey(e),Jp(Tp.count(Rp(e),e)+(4===Rp(e).getUTCDay()),t,2)}function ry(e){return e.getUTCDay()}function ny(e,t){return Jp(kp.count(Rp(e)-1,e),t,2)}function iy(e,t){return Jp(e.getUTCFullYear()%100,t,2)}function ay(e,t){return Jp((e=ey(e)).getUTCFullYear()%100,t,2)}function oy(e,t){return Jp(e.getUTCFullYear()%1e4,t,4)}function cy(e,t){var r=e.getUTCDay();return Jp((e=r>=4||0===r?Tp(e):Tp.ceil(e)).getUTCFullYear()%1e4,t,4)}function ly(){return"+0000"}function uy(){return"%"}function sy(e){return+e}function fy(e){return Math.floor(+e/1e3)}function dy(e){return new Date(e)}function py(e){return e instanceof Date?+e:+new Date(+e)}function hy(e,t,r,n,i,a,o,c,l,u){var s=xd(),f=s.invert,d=s.domain,p=u(".%L"),h=u(":%S"),y=u("%I:%M"),v=u("%I %p"),g=u("%a %d"),m=u("%b %d"),b=u("%B"),x=u("%Y");function w(e){return(l(e)=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:sy,s:fy,S:Th,u:Ch,U:Ih,V:Nh,w:zh,W:Rh,x:null,X:null,y:Lh,Y:Kh,Z:Uh,"%":uy},x={a:function(e){return o[e.getUTCDay()]},A:function(e){return a[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return c[e.getUTCMonth()]},c:null,d:Wh,e:Wh,f:Yh,g:ay,G:cy,H:$h,I:Hh,j:Vh,L:qh,m:Gh,M:Xh,p:function(e){return i[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:sy,s:fy,S:Zh,u:Qh,U:Jh,V:ty,w:ry,W:ny,x:null,X:null,y:iy,Y:oy,Z:ly,"%":uy},w={a:function(e,t,r){var n=p.exec(t.slice(r));return n?(e.w=h.get(n[0].toLowerCase()),r+n[0].length):-1},A:function(e,t,r){var n=f.exec(t.slice(r));return n?(e.w=d.get(n[0].toLowerCase()),r+n[0].length):-1},b:function(e,t,r){var n=g.exec(t.slice(r));return n?(e.m=m.get(n[0].toLowerCase()),r+n[0].length):-1},B:function(e,t,r){var n=y.exec(t.slice(r));return n?(e.m=v.get(n[0].toLowerCase()),r+n[0].length):-1},c:function(e,r,n){return j(e,t,r,n)},d:ph,e:ph,f:bh,g:uh,G:lh,H:yh,I:yh,j:hh,L:mh,m:dh,M:vh,p:function(e,t,r){var n=u.exec(t.slice(r));return n?(e.p=s.get(n[0].toLowerCase()),r+n[0].length):-1},q:fh,Q:wh,s:Oh,S:gh,u:ih,U:ah,V:oh,w:nh,W:ch,x:function(e,t,n){return j(e,r,t,n)},X:function(e,t,r){return j(e,n,t,r)},y:uh,Y:lh,Z:sh,"%":xh};function O(e,t){return function(r){var n,i,a,o=[],c=-1,l=0,u=e.length;for(r instanceof Date||(r=new Date(+r));++c53)return null;"w"in a||(a.w=1),"Z"in a?(i=(n=$p(Hp(a.y,0,1))).getUTCDay(),n=i>4||0===i?kp.ceil(n):kp(n),n=vp.offset(n,7*(a.V-1)),a.y=n.getUTCFullYear(),a.m=n.getUTCMonth(),a.d=n.getUTCDate()+(a.w+6)%7):(i=(n=Wp(Hp(a.y,0,1))).getDay(),n=i>4||0===i?xp.ceil(n):xp(n),n=yp.offset(n,7*(a.V-1)),a.y=n.getFullYear(),a.m=n.getMonth(),a.d=n.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?$p(Hp(a.y,0,1)).getUTCDay():Wp(Hp(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,$p(a)):Wp(a)}}function j(e,t,r,n){for(var i,a,o=0,c=t.length,l=r.length;o=l)return-1;if(37===(i=t.charCodeAt(o++))){if(i=t.charAt(o++),!(a=w[i in Gp?t.charAt(o++):i])||(n=a(e,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return b.x=O(r,b),b.X=O(n,b),b.c=O(t,b),x.x=O(r,x),x.X=O(n,x),x.c=O(t,x),{format:function(e){var t=O(e+="",b);return t.toString=function(){return e},t},parse:function(e){var t=P(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=O(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=P(e+="",!0);return t.toString=function(){return e},t}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),qp=Vp.format,Vp.parse,Yp=Vp.utcFormat,Vp.utcParse;const xy=Object.freeze(Object.defineProperty({__proto__:null,scaleBand:gf,scaleDiverging:function e(){var t=zd(my()(hd));return t.copy=function(){return vy(t,e())},hf.apply(t,arguments)},scaleDivergingLog:function e(){var t=$d(my()).domain([.1,1,10]);return t.copy=function(){return vy(t,e()).base(t.base())},hf.apply(t,arguments)},scaleDivergingPow:by,scaleDivergingSqrt:function(){return by.apply(null,arguments).exponent(.5)},scaleDivergingSymlog:function e(){var t=qd(my());return t.copy=function(){return vy(t,e()).constant(t.constant())},hf.apply(t,arguments)},scaleIdentity:function e(t){var r;function n(e){return null==e||isNaN(e=+e)?r:e}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Array.from(e,dd),n):t.slice()},n.unknown=function(e){return arguments.length?(r=e,n):r},n.copy=function(){return e(t).unknown(r)},t=arguments.length?Array.from(t,dd):[0,1],zd(n)},scaleImplicit:yf,scaleLinear:function e(){var t=xd();return t.copy=function(){return md(t,e())},pf.apply(t,arguments),zd(t)},scaleLog:function e(){const t=$d(bd()).domain([1,10]);return t.copy=()=>md(t,e()).base(t.base()),pf.apply(t,arguments),t},scaleOrdinal:vf,scalePoint:function(){return mf(gf.apply(null,arguments).paddingInner(1))},scalePow:Qd,scaleQuantile:function e(){var t,r=[],n=[],i=[];function a(){var e=0,t=Math.max(1,n.length);for(i=new Array(t-1);++e0?i[t-1]:r[0],t=i?[a[i-1],n]:[a[t-1],a[t]]},c.unknown=function(e){return arguments.length?(t=e,c):c},c.thresholds=function(){return a.slice()},c.copy=function(){return e().domain([r,n]).range(o).unknown(t)},pf.apply(zd(c),arguments)},scaleRadial:function e(){var t,r=xd(),n=[0,1],i=!1;function a(e){var n=function(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}(r(e));return isNaN(n)?t:i?Math.round(n):n}return a.invert=function(e){return r.invert(Jd(e))},a.domain=function(e){return arguments.length?(r.domain(e),a):r.domain()},a.range=function(e){return arguments.length?(r.range((n=Array.from(e,dd)).map(Jd)),a):n.slice()},a.rangeRound=function(e){return a.range(e).round(!0)},a.round=function(e){return arguments.length?(i=!!e,a):i},a.clamp=function(e){return arguments.length?(r.clamp(e),a):r.clamp()},a.unknown=function(e){return arguments.length?(t=e,a):t},a.copy=function(){return e(r.domain(),n).round(i).clamp(r.clamp()).unknown(t)},pf.apply(a,arguments),zd(a)},scaleSequential:function e(){var t=zd(yy()(hd));return t.copy=function(){return vy(t,e())},hf.apply(t,arguments)},scaleSequentialLog:function e(){var t=$d(yy()).domain([1,10]);return t.copy=function(){return vy(t,e()).base(t.base())},hf.apply(t,arguments)},scaleSequentialPow:gy,scaleSequentialQuantile:function e(){var t=[],r=hd;function n(e){if(null!=e&&!isNaN(e=+e))return r((Gs(t,e,1)-1)/(t.length-1))}return n.domain=function(e){if(!arguments.length)return t.slice();t=[];for(let r of e)null==r||isNaN(r=+r)||t.push(r);return t.sort($s),n},n.interpolator=function(e){return arguments.length?(r=e,n):r},n.range=function(){return t.map((e,n)=>r(n/(t.length-1)))},n.quantiles=function(e){return Array.from({length:e+1},(r,n)=>function(e,t){if((r=(e=Float64Array.from(function*(e){for(let t of e)null!=t&&(t=+t)>=t&&(yield t)}(e))).length)&&!isNaN(t=+t)){if(t<=0||r<2)return uf(e);if(t>=1)return lf(e);var r,n=(r-1)*t,i=Math.floor(n),a=lf(sf(e,i).subarray(0,i+1));return a+(uf(e.subarray(i+1))-a)*(n-i)}}(t,n/e))},n.copy=function(){return e(r).domain(t)},hf.apply(n,arguments)},scaleSequentialSqrt:function(){return gy.apply(null,arguments).exponent(.5)},scaleSequentialSymlog:function e(){var t=qd(yy());return t.copy=function(){return vy(t,e()).constant(t.constant())},hf.apply(t,arguments)},scaleSqrt:function(){return Qd.apply(null,arguments).exponent(.5)},scaleSymlog:function e(){var t=qd(bd());return t.copy=function(){return md(t,e()).constant(t.constant())},pf.apply(t,arguments)},scaleThreshold:function e(){var t,r=[.5],n=[0,1],i=1;function a(e){return null!=e&&e<=e?n[Gs(r,e,0,i)]:t}return a.domain=function(e){return arguments.length?(r=Array.from(e),i=Math.min(r.length,n.length-1),a):r.slice()},a.range=function(e){return arguments.length?(n=Array.from(e),i=Math.min(r.length,n.length-1),a):n.slice()},a.invertExtent=function(e){var t=n.indexOf(e);return[r[t-1],r[t]]},a.unknown=function(e){return arguments.length?(t=e,a):t},a.copy=function(){return e().domain(r).range(n).unknown(t)},pf.apply(a,arguments)},scaleTime:function(){return pf.apply(hy(Fp,Up,zp,Dp,bp,yp,pp,fp,sp,qp).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},scaleUtc:function(){return pf.apply(hy(Bp,Kp,Rp,Np,Sp,vp,hp,dp,sp,Yp).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},tickFormat:Nd},Symbol.toStringTag,{value:"Module"}));var wy=e=>e.chartData,Oy=Nn([wy],e=>{var t=null!=e.chartData?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),Py=(e,t,r,n)=>n?Oy(e):wy(e);function jy(e){if(Array.isArray(e)&&2===e.length){var[t,r]=e;if(Mc(t)&&Mc(r))return!0}return!1}function Ey(e,t,r){return r?e:[Math.min(e[0],t[0]),Math.max(e[1],t[1])]}function Ay(e,t){if(t&&"function"!=typeof e&&Array.isArray(e)&&2===e.length){var r,n,[i,a]=e;if(Mc(i))r=i;else if("function"==typeof i)return;if(Mc(a))n=a;else if("function"==typeof a)return;var o=[r,n];if(jy(o))return o}}var Sy,ky=1e9,_y=!0,My="[DecimalError] ",Ty=My+"Invalid argument: ",Cy=My+"Exponent out of range: ",Iy=Math.floor,Dy=Math.pow,Ny=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,zy=1e7,Ry=Iy(1286742750677284.5),Ly={};function By(e,t){var r,n,i,a,o,c,l,u,s=e.constructor,f=s.precision;if(!e.s||!t.s)return t.s||(t=new s(e)),_y?Gy(t,f):t;if(l=e.d,u=t.d,o=e.e,i=t.e,l=l.slice(),a=o-i){for(a<0?(n=l,a=-a,c=u.length):(n=u,i=o,c=l.length),a>(c=(o=Math.ceil(f/7))>c?o+1:c+1)&&(a=c,n.length=1),n.reverse();a--;)n.push(0);n.reverse()}for((c=l.length)-(a=u.length)<0&&(a=c,n=u,u=l,l=n),r=0;a;)r=(l[--a]=l[a]+u[a]+r)/zy|0,l[a]%=zy;for(r&&(l.unshift(r),++i),c=l.length;0==l[--c];)l.pop();return t.d=l,t.e=i,_y?Gy(t,f):t}function Ky(e,t,r){if(e!==~~e||er)throw Error(Ty+e)}function Fy(e){var t,r,n,i=e.length-1,a="",o=e[0];if(i>0){for(a+=o,t=1;te.e^a.s<0?1:-1;for(t=0,r=(n=a.d.length)<(i=e.d.length)?n:i;te.d[t]^a.s<0?1:-1;return n===i?0:n>i^a.s<0?1:-1},Ly.decimalPlaces=Ly.dp=function(){var e=this,t=e.d.length-1,r=7*(t-e.e);if(t=e.d[t])for(;t%10==0;t/=10)r--;return r<0?0:r},Ly.dividedBy=Ly.div=function(e){return Uy(this,new this.constructor(e))},Ly.dividedToIntegerBy=Ly.idiv=function(e){var t=this.constructor;return Gy(Uy(this,new t(e),0,1),t.precision)},Ly.equals=Ly.eq=function(e){return!this.cmp(e)},Ly.exponent=function(){return $y(this)},Ly.greaterThan=Ly.gt=function(e){return this.cmp(e)>0},Ly.greaterThanOrEqualTo=Ly.gte=function(e){return this.cmp(e)>=0},Ly.isInteger=Ly.isint=function(){return this.e>this.d.length-2},Ly.isNegative=Ly.isneg=function(){return this.s<0},Ly.isPositive=Ly.ispos=function(){return this.s>0},Ly.isZero=function(){return 0===this.s},Ly.lessThan=Ly.lt=function(e){return this.cmp(e)<0},Ly.lessThanOrEqualTo=Ly.lte=function(e){return this.cmp(e)<1},Ly.logarithm=Ly.log=function(e){var t,r=this,n=r.constructor,i=n.precision,a=i+5;if(void 0===e)e=new n(10);else if((e=new n(e)).s<1||e.eq(Sy))throw Error(My+"NaN");if(r.s<1)throw Error(My+(r.s?"NaN":"-Infinity"));return r.eq(Sy)?new n(0):(_y=!1,t=Uy(qy(r,a),qy(e,a),a),_y=!0,Gy(t,i))},Ly.minus=Ly.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?Xy(t,e):By(t,(e.s=-e.s,e))},Ly.modulo=Ly.mod=function(e){var t,r=this,n=r.constructor,i=n.precision;if(!(e=new n(e)).s)throw Error(My+"NaN");return r.s?(_y=!1,t=Uy(r,e,0,1).times(e),_y=!0,r.minus(t)):Gy(new n(r),i)},Ly.naturalExponential=Ly.exp=function(){return Wy(this)},Ly.naturalLogarithm=Ly.ln=function(){return qy(this)},Ly.negated=Ly.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},Ly.plus=Ly.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?By(t,e):Xy(t,(e.s=-e.s,e))},Ly.precision=Ly.sd=function(e){var t,r,n,i=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(Ty+e);if(t=$y(i)+1,r=7*(n=i.d.length-1)+1,n=i.d[n]){for(;n%10==0;n/=10)r--;for(n=i.d[0];n>=10;n/=10)r++}return e&&t>r?t:r},Ly.squareRoot=Ly.sqrt=function(){var e,t,r,n,i,a,o,c=this,l=c.constructor;if(c.s<1){if(!c.s)return new l(0);throw Error(My+"NaN")}for(e=$y(c),_y=!1,0==(i=Math.sqrt(+c))||i==1/0?(((t=Fy(c.d)).length+e)%2==0&&(t+="0"),i=Math.sqrt(t),e=Iy((e+1)/2)-(e<0||e%2),n=new l(t=i==1/0?"5e"+e:(t=i.toExponential()).slice(0,t.indexOf("e")+1)+e)):n=new l(i.toString()),i=o=(r=l.precision)+3;;)if(n=(a=n).plus(Uy(c,a,o+2)).times(.5),Fy(a.d).slice(0,o)===(t=Fy(n.d)).slice(0,o)){if(t=t.slice(o-3,o+1),i==o&&"4999"==t){if(Gy(a,r+1,0),a.times(a).eq(c)){n=a;break}}else if("9999"!=t)break;o+=4}return _y=!0,Gy(n,r)},Ly.times=Ly.mul=function(e){var t,r,n,i,a,o,c,l,u,s=this,f=s.constructor,d=s.d,p=(e=new f(e)).d;if(!s.s||!e.s)return new f(0);for(e.s*=s.s,r=s.e+e.e,(l=d.length)<(u=p.length)&&(a=d,d=p,p=a,o=l,l=u,u=o),a=[],n=o=l+u;n--;)a.push(0);for(n=u;--n>=0;){for(t=0,i=l+n;i>n;)c=a[i]+p[n]*d[i-n-1]+t,a[i--]=c%zy|0,t=c/zy|0;a[i]=(a[i]+t)%zy|0}for(;!a[--o];)a.pop();return t?++r:a.shift(),e.d=a,e.e=r,_y?Gy(e,f.precision):e},Ly.toDecimalPlaces=Ly.todp=function(e,t){var r=this,n=r.constructor;return r=new n(r),void 0===e?r:(Ky(e,0,ky),void 0===t?t=n.rounding:Ky(t,0,8),Gy(r,e+$y(r)+1,t))},Ly.toExponential=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=Zy(n,!0):(Ky(e,0,ky),void 0===t?t=i.rounding:Ky(t,0,8),r=Zy(n=Gy(new i(n),e+1,t),!0,e+1)),r},Ly.toFixed=function(e,t){var r,n,i=this,a=i.constructor;return void 0===e?Zy(i):(Ky(e,0,ky),void 0===t?t=a.rounding:Ky(t,0,8),r=Zy((n=Gy(new a(i),e+$y(i)+1,t)).abs(),!1,e+$y(n)+1),i.isneg()&&!i.isZero()?"-"+r:r)},Ly.toInteger=Ly.toint=function(){var e=this,t=e.constructor;return Gy(new t(e),$y(e)+1,t.rounding)},Ly.toNumber=function(){return+this},Ly.toPower=Ly.pow=function(e){var t,r,n,i,a,o,c=this,l=c.constructor,u=+(e=new l(e));if(!e.s)return new l(Sy);if(!(c=new l(c)).s){if(e.s<1)throw Error(My+"Infinity");return c}if(c.eq(Sy))return c;if(n=l.precision,e.eq(Sy))return Gy(c,n);if(o=(t=e.e)>=(r=e.d.length-1),a=c.s,o){if((r=u<0?-u:u)<=9007199254740991){for(i=new l(Sy),t=Math.ceil(n/7+4),_y=!1;r%2&&Qy((i=i.times(c)).d,t),0!==(r=Iy(r/2));)Qy((c=c.times(c)).d,t);return _y=!0,e.s<0?new l(Sy).div(i):Gy(i,n)}}else if(a<0)throw Error(My+"NaN");return a=a<0&&1&e.d[Math.max(t,r)]?-1:1,c.s=1,_y=!1,i=e.times(qy(c,n+12)),_y=!0,(i=Wy(i)).s=a,i},Ly.toPrecision=function(e,t){var r,n,i=this,a=i.constructor;return void 0===e?n=Zy(i,(r=$y(i))<=a.toExpNeg||r>=a.toExpPos):(Ky(e,1,ky),void 0===t?t=a.rounding:Ky(t,0,8),n=Zy(i=Gy(new a(i),e,t),e<=(r=$y(i))||r<=a.toExpNeg,e)),n},Ly.toSignificantDigits=Ly.tosd=function(e,t){var r=this.constructor;return void 0===e?(e=r.precision,t=r.rounding):(Ky(e,1,ky),void 0===t?t=r.rounding:Ky(t,0,8)),Gy(new r(this),e,t)},Ly.toString=Ly.valueOf=Ly.val=Ly.toJSON=Ly[Symbol.for("nodejs.util.inspect.custom")]=function(){var e=this,t=$y(e),r=e.constructor;return Zy(e,t<=r.toExpNeg||t>=r.toExpPos)};var Uy=function(){function e(e,t){var r,n=0,i=e.length;for(e=e.slice();i--;)r=e[i]*t+n,e[i]=r%zy|0,n=r/zy|0;return n&&e.unshift(n),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function r(e,t,r){for(var n=0;r--;)e[r]-=n,n=e[r]1;)e.shift()}return function(n,i,a,o){var c,l,u,s,f,d,p,h,y,v,g,m,b,x,w,O,P,j,E=n.constructor,A=n.s==i.s?1:-1,S=n.d,k=i.d;if(!n.s)return new E(n);if(!i.s)throw Error(My+"Division by zero");for(l=n.e-i.e,P=k.length,w=S.length,h=(p=new E(A)).d=[],u=0;k[u]==(S[u]||0);)++u;if(k[u]>(S[u]||0)&&--l,(m=null==a?a=E.precision:o?a+($y(n)-$y(i))+1:a)<0)return new E(0);if(m=m/7+2|0,u=0,1==P)for(s=0,k=k[0],m++;(u1&&(k=e(k,s),S=e(S,s),P=k.length,w=S.length),x=P,v=(y=S.slice(0,P)).length;v=zy/2&&++O;do{s=0,(c=t(k,y,P,v))<0?(g=y[0],P!=v&&(g=g*zy+(y[1]||0)),(s=g/O|0)>1?(s>=zy&&(s=zy-1),1==(c=t(f=e(k,s),y,d=f.length,v=y.length))&&(s--,r(f,P16)throw Error(Cy+$y(e));if(!e.s)return new u(Sy);for(_y=!1,o=s,a=new u(.03125);e.abs().gte(.1);)e=e.times(a),l+=5;for(o+=Math.log(Dy(2,l))/Math.LN10*2+5|0,r=n=i=new u(Sy),u.precision=o;;){if(n=Gy(n.times(e),o),r=r.times(++c),Fy((a=i.plus(Uy(n,r,o))).d).slice(0,o)===Fy(i.d).slice(0,o)){for(;l--;)i=Gy(i.times(i),o);return u.precision=s,null==t?(_y=!0,Gy(i,s)):i}i=a}}function $y(e){for(var t=7*e.e,r=e.d[0];r>=10;r/=10)t++;return t}function Hy(e,t,r){if(t>e.LN10.sd())throw _y=!0,r&&(e.precision=r),Error(My+"LN10 precision limit exceeded");return Gy(new e(e.LN10),t)}function Vy(e){for(var t="";e--;)t+="0";return t}function qy(e,t){var r,n,i,a,o,c,l,u,s,f=1,d=e,p=d.d,h=d.constructor,y=h.precision;if(d.s<1)throw Error(My+(d.s?"NaN":"-Infinity"));if(d.eq(Sy))return new h(0);if(null==t?(_y=!1,u=y):u=t,d.eq(10))return null==t&&(_y=!0),Hy(h,u);if(u+=10,h.precision=u,n=(r=Fy(p)).charAt(0),a=$y(d),!(Math.abs(a)<15e14))return l=Hy(h,u+2,y).times(a+""),d=qy(new h(n+"."+r.slice(1)),u-10).plus(l),h.precision=y,null==t?(_y=!0,Gy(d,y)):d;for(;n<7&&1!=n||1==n&&r.charAt(1)>3;)n=(r=Fy((d=d.times(e)).d)).charAt(0),f++;for(a=$y(d),n>1?(d=new h("0."+r),a++):d=new h(n+"."+r.slice(1)),c=o=d=Uy(d.minus(Sy),d.plus(Sy),u),s=Gy(d.times(d),u),i=3;;){if(o=Gy(o.times(s),u),Fy((l=c.plus(Uy(o,new h(i),u))).d).slice(0,u)===Fy(c.d).slice(0,u))return c=c.times(2),0!==a&&(c=c.plus(Hy(h,u+2,y).times(a+""))),c=Uy(c,new h(f),u),h.precision=y,null==t?(_y=!0,Gy(c,y)):c;c=l,i+=2}}function Yy(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;48===t.charCodeAt(n);)++n;for(i=t.length;48===t.charCodeAt(i-1);)--i;if(t=t.slice(n,i)){if(i-=n,r=r-n-1,e.e=Iy(r/7),e.d=[],n=(r+1)%7,r<0&&(n+=7),nRy||e.e<-Ry))throw Error(Cy+r)}else e.s=0,e.e=0,e.d=[0];return e}function Gy(e,t,r){var n,i,a,o,c,l,u,s,f=e.d;for(o=1,a=f[0];a>=10;a/=10)o++;if((n=t-o)<0)n+=7,i=t,u=f[s=0];else{if((s=Math.ceil((n+1)/7))>=(a=f.length))return e;for(u=a=f[s],o=1;a>=10;a/=10)o++;i=(n%=7)-7+o}if(void 0!==r&&(c=u/(a=Dy(10,o-i-1))%10|0,l=t<0||void 0!==f[s+1]||u%a,l=r<4?(c||l)&&(0==r||r==(e.s<0?3:2)):c>5||5==c&&(4==r||l||6==r&&(n>0?i>0?u/Dy(10,o-i):0:f[s-1])%10&1||r==(e.s<0?8:7))),t<1||!f[0])return l?(a=$y(e),f.length=1,t=t-a-1,f[0]=Dy(10,(7-t%7)%7),e.e=Iy(-t/7)||0):(f.length=1,f[0]=e.e=e.s=0),e;if(0==n?(f.length=s,a=1,s--):(f.length=s+1,a=Dy(10,7-n),f[s]=i>0?(u/Dy(10,o-i)%Dy(10,i)|0)*a:0),l)for(;;){if(0==s){(f[0]+=a)==zy&&(f[0]=1,++e.e);break}if(f[s]+=a,f[s]!=zy)break;f[s--]=0,a=1}for(n=f.length;0===f[--n];)f.pop();if(_y&&(e.e>Ry||e.e<-Ry))throw Error(Cy+$y(e));return e}function Xy(e,t){var r,n,i,a,o,c,l,u,s,f,d=e.constructor,p=d.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new d(e),_y?Gy(t,p):t;if(l=e.d,f=t.d,n=t.e,u=e.e,l=l.slice(),o=u-n){for((s=o<0)?(r=l,o=-o,c=f.length):(r=f,n=u,c=l.length),o>(i=Math.max(Math.ceil(p/7),c)+2)&&(o=i,r.length=1),r.reverse(),i=o;i--;)r.push(0);r.reverse()}else{for((s=(i=l.length)<(c=f.length))&&(c=i),i=0;i0;--i)l[c++]=0;for(i=f.length;i>o;){if(l[--i]0?a=a.charAt(0)+"."+a.slice(1)+Vy(n):o>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(i<0?"e":"e+")+i):i<0?(a="0."+Vy(-i-1)+a,r&&(n=r-o)>0&&(a+=Vy(n))):i>=o?(a+=Vy(i+1-o),r&&(n=r-i-1)>0&&(a=a+"."+Vy(n))):((n=i+1)0&&(i+1===o&&(a+="."),a+=Vy(n))),e.s<0?"-"+a:a}function Qy(e,t){if(e.length>t)return e.length=t,!0}function Jy(e){if(!e||"object"!=typeof e)throw Error(My+"Object expected");var t,r,n,i=["precision",1,ky,"rounding",0,8,"toExpNeg",-1/0,0,"toExpPos",0,1/0];for(t=0;t=i[t+1]&&n<=i[t+2]))throw Error(Ty+r+": "+n);this[r]=n}if(void 0!==(n=e[r="LN10"])){if(n!=Math.LN10)throw Error(Ty+r+": "+n);this[r]=new this(n)}return this}var ev=function e(t){var r,n,i;function a(e){var t=this;if(!(t instanceof a))return new a(e);if(t.constructor=a,e instanceof a)return t.s=e.s,t.e=e.e,void(t.d=(e=e.d)?e.slice():e);if("number"==typeof e){if(0*e!=0)throw Error(Ty+e);if(e>0)t.s=1;else{if(!(e<0))return t.s=0,t.e=0,void(t.d=[0]);e=-e,t.s=-1}return e===~~e&&e<1e7?(t.e=0,void(t.d=[e])):Yy(t,e.toString())}if("string"!=typeof e)throw Error(Ty+e);if(45===e.charCodeAt(0)?(e=e.slice(1),t.s=-1):t.s=1,!Ny.test(e))throw Error(Ty+e);Yy(t,e)}if(a.prototype=Ly,a.ROUND_UP=0,a.ROUND_DOWN=1,a.ROUND_CEIL=2,a.ROUND_FLOOR=3,a.ROUND_HALF_UP=4,a.ROUND_HALF_DOWN=5,a.ROUND_HALF_EVEN=6,a.ROUND_HALF_CEIL=7,a.ROUND_HALF_FLOOR=8,a.clone=e,a.config=a.set=Jy,void 0===t&&(t={}),t)for(i=["precision","rounding","toExpNeg","toExpPos","LN10"],r=0;re,iv={},av=e=>e===iv,ov=e=>function t(){return 0===arguments.length||1===arguments.length&&av(arguments.length<=0?void 0:arguments[0])?t:e(...arguments)},cv=(e,t)=>1===e?t:ov(function(){for(var r=arguments.length,n=new Array(r),i=0;ie!==iv).length;return a>=e?t(...n):cv(e-a,ov(function(){for(var e=arguments.length,r=new Array(e),i=0;iav(e)?r.shift():e);return t(...a,...r)}))}),lv=(e,t)=>{for(var r=[],n=e;nArray.isArray(t)?t.map(e):Object.keys(t).map(e=>t[e]).map(e)).length,rv),sv=e=>Array.isArray(e)?e.reverse():e.split("").reverse().join("");function fv(e){return 0===e?1:Math.floor(new tv(e).abs().log(10).toNumber())+1}function dv(e,t,r){for(var n=new tv(e),i=0,a=[];n.lt(t)&&i<1e5;)a.push(n.toNumber()),n=n.add(r),i++;return a}var pv=e=>{var[t,r]=e,[n,i]=[t,r];return t>r&&([n,i]=[r,t]),[n,i]},hv=(e,t,r)=>{if(e.lte(0))return new tv(0);var n=fv(e.toNumber()),i=new tv(10).pow(n),a=e.div(i),o=1!==n?.05:.1,c=new tv(Math.ceil(a.div(o).toNumber())).add(r).mul(o).mul(i);return new tv(t?c.toNumber():Math.ceil(c.toNumber()))},yv=function(e,t,r,n){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(!Number.isFinite((t-e)/(r-1)))return{step:new tv(0),tickMin:new tv(0),tickMax:new tv(0)};var a,o=hv(new tv(t).sub(e).div(r-1),n,i);a=e<=0&&t>=0?new tv(0):(a=new tv(e).add(t).div(2)).sub(new tv(a).mod(o));var c=Math.ceil(a.sub(e).div(o).toNumber()),l=Math.ceil(new tv(t).sub(a).div(o).toNumber()),u=c+l+1;return u>r?yv(e,t,r,n,i+1):(u0?l+(r-u):l,c=t>0?c:c+(r-u)),{step:o,tickMin:a.sub(new tv(c).mul(o)),tickMax:a.add(new tv(l).mul(o))})},vv=e=>e.rootProps.stackOffset,gv=e=>e.rootProps.reverseStackOrder,mv=e=>e.options.chartName,bv=e=>e.rootProps.syncId,xv=e=>e.rootProps.syncMethod,wv=e=>e.options.eventEmitter,Ov={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3},Pv="auto",jv=!0,Ev=!1,Av=!0,Sv="auto",kv=!0,_v=(e,t)=>{if(e&&t)return null!=e&&e.reversed?[t[1],t[0]]:t},Mv={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!1,dataKey:void 0,domain:void 0,id:0,includeHidden:!1,name:void 0,reversed:!1,scale:Pv,tick:jv,tickCount:void 0,ticks:void 0,type:"category",unit:void 0},Tv={allowDataOverflow:Ev,allowDecimals:!1,allowDuplicatedCategory:Av,dataKey:void 0,domain:void 0,id:0,includeHidden:!1,name:void 0,reversed:!1,scale:Sv,tick:kv,tickCount:5,ticks:void 0,type:"number",unit:void 0},Cv={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,dataKey:void 0,domain:void 0,id:0,includeHidden:!1,name:void 0,reversed:!1,scale:Pv,tick:jv,tickCount:void 0,ticks:void 0,type:"number",unit:void 0},Iv={allowDataOverflow:Ev,allowDecimals:!1,allowDuplicatedCategory:Av,dataKey:void 0,domain:void 0,id:0,includeHidden:!1,name:void 0,reversed:!1,scale:Sv,tick:kv,tickCount:5,ticks:void 0,type:"category",unit:void 0},Dv=(e,t)=>null!=e.polarAxis.angleAxis[t]?e.polarAxis.angleAxis[t]:"radial"===e.layout.layoutType?Cv:Mv,Nv=(e,t)=>null!=e.polarAxis.radiusAxis[t]?e.polarAxis.radiusAxis[t]:"radial"===e.layout.layoutType?Iv:Tv,zv=e=>e.polarOptions,Rv=Nn([Yo,Go,uc],function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(e-(r.left||0)-(r.right||0)),Math.abs(t-(r.top||0)-(r.bottom||0)))/2}),Lv=Nn([zv,Rv],(e,t)=>{if(null!=e)return at(e.innerRadius,t,0)}),Bv=Nn([zv,Rv],(e,t)=>{if(null!=e)return at(e.outerRadius,t,.8*t)}),Kv=Nn([zv],e=>{if(null==e)return[0,0];var{startAngle:t,endAngle:r}=e;return[t,r]});Nn([Dv,Kv],_v);var Fv=Nn([Rv,Lv,Bv],(e,t,r)=>{if(null!=e&&null!=t&&null!=r)return[t,r]});Nn([Nv,Fv],_v);var Uv=Nn([qc,zv,Lv,Bv,Yo,Go],(e,t,r,n,i,a)=>{if(("centric"===e||"radial"===e)&&null!=t&&null!=r&&null!=n){var{cx:o,cy:c,startAngle:l,endAngle:u}=t;return{cx:at(o,i,i/2),cy:at(c,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}}),Wv=(e,t)=>t,$v=(e,t,r)=>r;function Hv(e){return null==e?void 0:e.id}function Vv(e,t,r){var{chartData:n=[]}=t,{allowDuplicatedCategory:i,dataKey:a}=r,o=new Map;return e.forEach(e=>{var t,r=null!==(t=e.data)&&void 0!==t?t:n;if(null!=r&&0!==r.length){var c=Hv(e);r.forEach((t,r)=>{var n,l=null==a||i?r:String(No(t,a,null)),u=No(t,e.dataKey,0);n=o.has(l)?o.get(l):{},Object.assign(n,{[c]:u}),o.set(l,n)})}}),Array.from(o.values())}function qv(e){return null!=e.stackId&&null!=e.dataKey}var Yv=(e,t)=>e===t||null!=e&&null!=t&&e[0]===t[0]&&e[1]===t[1];function Gv(e,t){return!(!Array.isArray(e)||!Array.isArray(t)||0!==e.length||0!==t.length)||e===t}var Xv=e=>{var t=qc(e);return"horizontal"===t?"xAxis":"vertical"===t?"yAxis":"centric"===t?"angleAxis":"radiusAxis"},Zv=e=>e.tooltip.settings.axisId;function Qv(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Jv(e){for(var t=1;te.cartesianAxis.xAxis[t],ig=(e,t)=>{var r=ng(e,t);return null==r?rg:r},ag={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:tg,hide:!0,id:0,includeHidden:!1,interval:"preserveEnd",minTickGap:5,mirror:!1,name:void 0,orientation:"left",padding:{top:0,bottom:0},reversed:!1,scale:"auto",tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:"number",unit:void 0,width:60},og=(e,t)=>e.cartesianAxis.yAxis[t],cg=(e,t)=>{var r=og(e,t);return null==r?ag:r},lg={domain:[0,"auto"],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:"",range:[64,64],scale:"auto",type:"number",unit:""},ug=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return null==r?lg:r},sg=(e,t,r)=>{switch(t){case"xAxis":return ig(e,r);case"yAxis":return cg(e,r);case"zAxis":return ug(e,r);case"angleAxis":return Dv(e,r);case"radiusAxis":return Nv(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},fg=(e,t,r)=>{switch(t){case"xAxis":return ig(e,r);case"yAxis":return cg(e,r);case"angleAxis":return Dv(e,r);case"radiusAxis":return Nv(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},dg=e=>e.graphicalItems.cartesianItems.some(e=>"bar"===e.type)||e.graphicalItems.polarItems.some(e=>"radialBar"===e.type);function pg(e,t){return r=>{switch(e){case"xAxis":return"xAxisId"in r&&r.xAxisId===t;case"yAxis":return"yAxisId"in r&&r.yAxisId===t;case"zAxis":return"zAxisId"in r&&r.zAxisId===t;case"angleAxis":return"angleAxisId"in r&&r.angleAxisId===t;case"radiusAxis":return"radiusAxisId"in r&&r.radiusAxisId===t;default:return!1}}}var hg=e=>e.graphicalItems.cartesianItems,yg=Nn([Wv,$v],pg),vg=(e,t,r)=>e.filter(r).filter(e=>!0===(null==t?void 0:t.includeHidden)||!e.hide),gg=Nn([hg,sg,yg],vg,{memoizeOptions:{resultEqualityCheck:Gv}}),mg=Nn([gg],e=>e.filter(e=>"area"===e.type||"bar"===e.type).filter(qv)),bg=e=>e.filter(e=>!("stackId"in e)||void 0===e.stackId),xg=Nn([gg],bg),wg=e=>e.map(e=>e.data).filter(Boolean).flat(1),Og=Nn([gg],wg,{memoizeOptions:{resultEqualityCheck:Gv}}),Pg=(e,t)=>{var{chartData:r=[],dataStartIndex:n,dataEndIndex:i}=t;return e.length>0?e:r.slice(n,i+1)},jg=Nn([Og,Py],Pg),Eg=(e,t,r)=>null!=(null==t?void 0:t.dataKey)?e.map(e=>({value:No(e,t.dataKey)})):r.length>0?r.map(e=>e.dataKey).flatMap(t=>e.map(e=>({value:No(e,t)}))):e.map(e=>({value:e})),Ag=Nn([jg,sg,gg],Eg);function Sg(e,t){switch(e){case"xAxis":return"x"===t.direction;case"yAxis":return"y"===t.direction;default:return!1}}function kg(e){if(rt(e)||e instanceof Date){var t=Number(e);if(Mc(t))return t}}function _g(e){if(Array.isArray(e)){var t=[kg(e[0]),kg(e[1])];return jy(t)?t:void 0}var r=kg(e);if(null!=r)return[r,r]}function Mg(e){return e.map(kg).filter(ft)}var Tg=e=>{var t=Xv(e),r=Zv(e);return fg(e,t,r)},Cg=Nn([Tg],e=>null==e?void 0:e.dataKey),Ig=Nn([mg,Py,Tg],Vv),Dg=(e,t,r,n)=>{var i=t.reduce((e,t)=>(null==t.stackId||(null==e[t.stackId]&&(e[t.stackId]=[]),e[t.stackId].push(t)),e),{});return Object.fromEntries(Object.entries(i).map(t=>{var[i,a]=t,o=n?[...a].reverse():a,c=o.map(Hv);return[i,{stackedData:Fo(e,c,r),graphicalItems:o}]}))},Ng=Nn([Ig,mg,vv,gv],Dg),zg=(e,t,r,n)=>{var{dataStartIndex:i,dataEndIndex:a}=t;if(null==n&&"zAxis"!==r){var o=((e,t,r)=>{var n;if(null!=e)return[(n=Object.keys(e).reduce((n,i)=>{var a=e[i],{stackedData:o}=a,c=o.reduce((e,n)=>{var i,a=(i=To(n,t,r).flat(2).filter(tt),[Math.min(...i),Math.max(...i)]);return[Math.min(e[0],a[0]),Math.max(e[1],a[1])]},[1/0,-1/0]);return[Math.min(c[0],n[0]),Math.max(c[1],n[1])]},[1/0,-1/0]))[0]===1/0?0:n[0],n[1]===-1/0?0:n[1]]})(e,i,a);if(null==o||0!==o[0]||0!==o[1])return o}},Rg=Nn([sg],e=>e.allowDataOverflow),Lg=e=>{var t;if(null==e||!("domain"in e))return tg;if(null!=e.domain)return e.domain;if(null!=e.ticks){if("number"===e.type){var r=Mg(e.ticks);return[Math.min(...r),Math.max(...r)]}if("category"===e.type)return e.ticks.map(String)}return null!==(t=null==e?void 0:e.domain)&&void 0!==t?t:tg},Bg=Nn([sg],Lg),Kg=Nn([Bg,Rg],Ay),Fg=Nn([Ng,wy,Wv,Kg],zg,{memoizeOptions:{resultEqualityCheck:Yv}}),Ug=e=>e.errorBars,Wg=function(){for(var e=arguments.length,t=new Array(e),r=0;r{var a,o;if(r.length>0&&e.forEach(e=>{r.forEach(r=>{var c,l,u=null===(c=n[r.id])||void 0===c?void 0:c.filter(e=>Sg(i,e)),s=No(e,null!==(l=t.dataKey)&&void 0!==l?l:r.dataKey),f=function(e,t,r){return!r||"number"!=typeof t||Je(t)?[]:r.length?Mg(r.flatMap(r=>{var n,i,a=No(e,r.dataKey);if(Array.isArray(a)?[n,i]=a:n=i=a,Mc(n)&&Mc(i))return[t-n,t+i]})):[]}(e,s,u);if(f.length>=2){var d=Math.min(...f),p=Math.max(...f);(null==a||do)&&(o=p)}var h=_g(s);null!=h&&(a=null==a?h[0]:Math.min(a,h[0]),o=null==o?h[1]:Math.max(o,h[1]))})}),null!=(null==t?void 0:t.dataKey)&&e.forEach(e=>{var r=_g(No(e,t.dataKey));null!=r&&(a=null==a?r[0]:Math.min(a,r[0]),o=null==o?r[1]:Math.max(o,r[1]))}),Mc(a)&&Mc(o))return[a,o]},Hg=Nn([jg,sg,xg,Ug,Wv],$g,{memoizeOptions:{resultEqualityCheck:Yv}});function Vg(e){var{value:t}=e;if(rt(t)||t instanceof Date)return t}var qg=e=>e.referenceElements.dots,Yg=(e,t,r)=>e.filter(e=>"extendDomain"===e.ifOverflow).filter(e=>"xAxis"===t?e.xAxisId===r:e.yAxisId===r),Gg=Nn([qg,Wv,$v],Yg),Xg=e=>e.referenceElements.areas,Zg=Nn([Xg,Wv,$v],Yg),Qg=e=>e.referenceElements.lines,Jg=Nn([Qg,Wv,$v],Yg),em=(e,t)=>{var r=Mg(e.map(e=>"xAxis"===t?e.x:e.y));if(0!==r.length)return[Math.min(...r),Math.max(...r)]},tm=Nn(Gg,Wv,em),rm=(e,t)=>{var r=Mg(e.flatMap(e=>["xAxis"===t?e.x1:e.y1,"xAxis"===t?e.x2:e.y2]));if(0!==r.length)return[Math.min(...r),Math.max(...r)]},nm=Nn([Zg,Wv],rm),im=(e,t)=>{var r=e.flatMap(e=>"xAxis"===t?function(e){var t;if(null!=e.x)return Mg([e.x]);var r=null===(t=e.segment)||void 0===t?void 0:t.map(e=>e.x);return null==r||0===r.length?[]:Mg(r)}(e):function(e){var t;if(null!=e.y)return Mg([e.y]);var r=null===(t=e.segment)||void 0===t?void 0:t.map(e=>e.y);return null==r||0===r.length?[]:Mg(r)}(e));if(0!==r.length)return[Math.min(...r),Math.max(...r)]},am=Nn([Jg,Wv],im),om=Nn(tm,am,nm,(e,t,r)=>Wg(e,r,t)),cm=(e,t,r,n,i,a,o,c)=>null!=r?r:function(e,t,r){if(r||null!=t){if("function"==typeof e&&null!=t)try{var n=e(t,r);if(jy(n))return Ey(n,t,r)}catch(p){}if(Array.isArray(e)&&2===e.length){var i,a,[o,c]=e;if("auto"===o)null!=t&&(i=Math.min(...t));else if(tt(o))i=o;else if("function"==typeof o)try{null!=t&&(i=o(null==t?void 0:t[0]))}catch(h){}else if("string"==typeof o&&Wo.test(o)){var l=Wo.exec(o);if(null==l||null==t)i=void 0;else{var u=+l[1];i=t[0]-u}}else i=null==t?void 0:t[0];if("auto"===c)null!=t&&(a=Math.max(...t));else if(tt(c))a=c;else if("function"==typeof c)try{null!=t&&(a=c(null==t?void 0:t[1]))}catch(y){}else if("string"==typeof c&&$o.test(c)){var s=$o.exec(c);if(null==s||null==t)a=void 0;else{var f=+s[1];a=t[1]+f}}else a=null==t?void 0:t[1];var d=[i,a];if(jy(d))return null==t?d:Ey(d,t,r)}}}(t,"vertical"===o&&"xAxis"===c||"horizontal"===o&&"yAxis"===c?Wg(n,a,i):Wg(a,i),e.allowDataOverflow),lm=Nn([sg,Bg,Kg,Fg,Hg,om,qc,Wv],cm,{memoizeOptions:{resultEqualityCheck:Yv}}),um=[0,1],sm=(e,t,r,n,i,a,o)=>{if(null!=e&&null!=r&&0!==r.length||void 0!==o){var c,{dataKey:l,type:u}=e,s=zo(t,a);return s&&null==l?Ws(0,null!==(c=null==r?void 0:r.length)&&void 0!==c?c:0):"category"===u?((e,t,r)=>{var n=e.map(Vg).filter(e=>null!=e);return r&&(null==t.dataKey||t.allowDuplicatedCategory&&ot(n))?Ws(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))})(n,e,s):"expand"===i?um:o}},fm=Nn([sg,qc,jg,Ag,vv,Wv,lm],sm),dm=(e,t,r,n,i)=>{if(null!=e){var{scale:a,type:o}=e;if("auto"===a)return"radial"===t&&"radiusAxis"===i?"band":"radial"===t&&"angleAxis"===i?"linear":"category"===o&&n&&(n.indexOf("LineChart")>=0||n.indexOf("AreaChart")>=0||n.indexOf("ComposedChart")>=0&&!r)?"point":"category"===o?"band":"linear";if("string"==typeof a){var c="scale".concat(st(a));return c in xy?c:"point"}}},pm=Nn([sg,qc,dg,mv,Wv],dm);function hm(e,t,r,n){if(null!=r&&null!=n){if("function"==typeof e.scale)return e.scale.copy().domain(r).range(n);var i=function(e){if(null!=e){if(e in xy)return xy[e]();var t="scale".concat(st(e));return t in xy?xy[t]():void 0}}(t);if(null!=i){var a=i.domain(r).range(n);return(e=>{var t=e.domain();if(t&&!(t.length<=2)){var r=t.length,n=e.range(),i=Math.min(n[0],n[1])-Bo,a=Math.max(n[0],n[1])+Bo,o=e(t[0]),c=e(t[r-1]);(oa||ca)&&e.domain([t[0],t[r-1]])}})(a),a}}}var ym=(e,t,r)=>{var n=Lg(t);if("auto"===r||"linear"===r)return null!=t&&t.tickCount&&Array.isArray(n)&&("auto"===n[0]||"auto"===n[1])&&jy(e)?function(e){var[t,r]=e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=Math.max(n,2),[o,c]=pv([t,r]);if(o===-1/0||c===1/0){var l=c===1/0?[o,...lv(0,n-1).map(()=>1/0)]:[...lv(0,n-1).map(()=>-1/0),c];return t>r?sv(l):l}if(o===c)return((e,t,r)=>{var n=new tv(1),i=new tv(e);if(!i.isint()&&r){var a=Math.abs(e);a<1?(n=new tv(10).pow(fv(e)-1),i=new tv(Math.floor(i.div(n).toNumber())).mul(n)):a>1&&(i=new tv(Math.floor(e)))}else 0===e?i=new tv(Math.floor((t-1)/2)):r||(i=new tv(Math.floor(e)));var o=Math.floor((t-1)/2);return function(){for(var e=arguments.length,t=new Array(e),r=0;rt(e),i(...arguments))}}(uv(e=>i.add(new tv(e-o).mul(n)).toNumber()),lv)(0,t)})(o,n,i);var{step:u,tickMin:s,tickMax:f}=yv(o,c,a,i,0),d=dv(s,f.add(new tv(.1).mul(u)),u);return t>r?sv(d):d}(e,t.tickCount,t.allowDecimals):null!=t&&t.tickCount&&"number"===t.type&&jy(e)?function(e,t){var[r,n]=e,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],[a,o]=pv([r,n]);if(a===-1/0||o===1/0)return[r,n];if(a===o)return[a];var c=Math.max(t,2),l=hv(new tv(o).sub(a).div(c-1),i,0),u=[...dv(new tv(a),new tv(o),l),o];return!1===i&&(u=u.map(e=>Math.round(e))),r>n?sv(u):u}(e,t.tickCount,t.allowDecimals):void 0},vm=Nn([fm,fg,pm],ym),gm=(e,t,r,n)=>{if("angleAxis"!==n&&"number"===(null==e?void 0:e.type)&&jy(t)&&Array.isArray(r)&&r.length>0){var i=t[0],a=r[0],o=t[1],c=r[r.length-1];return[Math.min(i,a),Math.max(o,c)]}return t},mm=Nn([sg,fm,vm,Wv],gm),bm=Nn(Ag,sg,(e,t)=>{if(t&&"number"===t.type){var r=1/0,n=Array.from(Mg(e.map(e=>e.value))).sort((e,t)=>e-t);if(n.length<2)return 1/0;var i=n[n.length-1]-n[0];if(0===i)return 1/0;for(var a=0;ae.rootProps.barCategoryGap,uc,(e,t,r,n)=>n,(e,t,r,n,i)=>{if(!Mc(e))return 0;var a="vertical"===t?n.height:n.width;if("gap"===i)return e*a/2;if("no-gap"===i){var o=at(r,e*a),c=e*a/2;return c-o-(c-o)/a*o}return 0}),wm=Nn(ig,(e,t)=>{var r=ig(e,t);return null==r||"string"!=typeof r.padding?0:xm(e,"xAxis",t,r.padding)},(e,t)=>{var r,n;if(null==e)return{left:0,right:0};var{padding:i}=e;return"string"==typeof i?{left:t,right:t}:{left:(null!==(r=i.left)&&void 0!==r?r:0)+t,right:(null!==(n=i.right)&&void 0!==n?n:0)+t}}),Om=Nn(cg,(e,t)=>{var r=cg(e,t);return null==r||"string"!=typeof r.padding?0:xm(e,"yAxis",t,r.padding)},(e,t)=>{var r,n;if(null==e)return{top:0,bottom:0};var{padding:i}=e;return"string"==typeof i?{top:t,bottom:t}:{top:(null!==(r=i.top)&&void 0!==r?r:0)+t,bottom:(null!==(n=i.bottom)&&void 0!==n?n:0)+t}}),Pm=Nn([uc,wm,yc,hc,(e,t,r)=>r],(e,t,r,n,i)=>{var{padding:a}=n;return i?[a.left,r.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),jm=Nn([uc,qc,Om,yc,hc,(e,t,r)=>r],(e,t,r,n,i,a)=>{var{padding:o}=i;return a?[n.height-o.bottom,o.top]:"horizontal"===t?[e.top+e.height-r.bottom,e.top+r.top]:[e.top+r.top,e.top+e.height-r.bottom]}),Em=(e,t,r,n)=>{var i;switch(t){case"xAxis":return Pm(e,r,n);case"yAxis":return jm(e,r,n);case"zAxis":return null===(i=ug(e,r))||void 0===i?void 0:i.range;case"angleAxis":return Kv(e);case"radiusAxis":return Fv(e,r);default:return}},Am=Nn([sg,Em],_v),Sm=Nn([sg,pm,mm,Am],hm);function km(e,t){return e.idt.id?1:0}Nn([gg,Ug,Wv],(e,t,r)=>e.flatMap(e=>t[e.id]).filter(Boolean).filter(e=>Sg(r,e)));var _m=(e,t)=>t,Mm=(e,t,r)=>r,Tm=Nn(Qo,_m,Mm,(e,t,r)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===r).sort(km)),Cm=Nn(Jo,_m,Mm,(e,t,r)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===r).sort(km)),Im=(e,t)=>({width:e.width,height:t.height}),Dm=Nn(uc,ig,Im),Nm=Nn(Go,uc,Tm,_m,Mm,(e,t,r,n,i)=>{var a,o={};return r.forEach(r=>{var c=Im(t,r);null==a&&(a=((e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}})(t,n,e));var l="top"===n&&!i||"bottom"===n&&i;o[r.id]=a-Number(l)*c.height,a+=(l?-1:1)*c.height}),o}),zm=Nn(Yo,uc,Cm,_m,Mm,(e,t,r,n,i)=>{var a,o={};return r.forEach(r=>{var c=((e,t)=>({width:"number"==typeof t.width?t.width:60,height:e.height}))(t,r);null==a&&(a=((e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}})(t,n,e));var l="left"===n&&!i||"right"===n&&i;o[r.id]=a-Number(l)*c.width,a+=(l?-1:1)*c.width}),o}),Rm=Nn([uc,ig,(e,t)=>{var r=ig(e,t);if(null!=r)return Nm(e,r.orientation,r.mirror)},(e,t)=>t],(e,t,r,n)=>{if(null!=t){var i=null==r?void 0:r[n];return null==i?{x:e.left,y:0}:{x:e.left,y:i}}}),Lm=Nn([uc,cg,(e,t)=>{var r=cg(e,t);if(null!=r)return zm(e,r.orientation,r.mirror)},(e,t)=>t],(e,t,r,n)=>{if(null!=t){var i=null==r?void 0:r[n];return null==i?{x:0,y:e.top}:{x:i,y:e.top}}}),Bm=Nn(uc,cg,(e,t)=>({width:"number"==typeof t.width?t.width:60,height:e.height})),Km=(e,t,r,n)=>{if(null!=r){var{allowDuplicatedCategory:i,type:a,dataKey:o}=r,c=zo(e,n),l=t.map(e=>e.value);return o&&c&&"category"===a&&i&&ot(l)?l:void 0}},Fm=Nn([qc,Ag,sg,Wv],Km),Um=(e,t,r,n)=>{if(null!=r&&null!=r.dataKey){var{type:i,scale:a}=r;return!zo(e,n)||"number"!==i&&"auto"===a?void 0:t.map(e=>e.value)}},Wm=Nn([qc,Ag,fg,Wv],Um),$m=Nn([qc,(e,t,r)=>{switch(t){case"xAxis":return ig(e,r);case"yAxis":return cg(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},pm,Sm,Fm,Wm,Em,vm,Wv],(e,t,r,n,i,a,o,c,l)=>{if(null!=t){var u=zo(e,l);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:l,categoricalDomain:a,duplicateDomain:i,isCategorical:u,niceTicks:c,range:o,realScaleType:r,scale:n}}}),Hm=Nn([qc,fg,pm,Sm,vm,Em,Fm,Wm,Wv],(e,t,r,n,i,a,o,c,l)=>{if(null!=t&&null!=n){var u=zo(e,l),{type:s,ticks:f,tickCount:d}=t,p="scaleBand"===r&&"function"==typeof n.bandwidth?n.bandwidth()/2:2,h="category"===s&&n.bandwidth?n.bandwidth()/p:0;h="angleAxis"===l&&null!=a&&a.length>=2?2*Qe(a[0]-a[1])*h:h;var y=f||i;return y?y.map((e,t)=>{var r=o?o.indexOf(e):e;return{index:t,coordinate:n(r)+h,value:e,offset:h}}).filter(e=>Mc(e.coordinate)):u&&c?c.map((e,t)=>({coordinate:n(e)+h,value:e,index:t,offset:h})).filter(e=>Mc(e.coordinate)):n.ticks?n.ticks(d).map(e=>({coordinate:n(e)+h,value:e,offset:h})):n.domain().map((e,t)=>({coordinate:n(e)+h,value:o?o[e]:e,index:t,offset:h}))}}),Vm=Nn([qc,fg,Sm,Em,Fm,Wm,Wv],(e,t,r,n,i,a,o)=>{if(null!=t&&null!=r&&null!=n&&n[0]!==n[1]){var c=zo(e,o),{tickCount:l}=t,u=0;return u="angleAxis"===o&&(null==n?void 0:n.length)>=2?2*Qe(n[0]-n[1])*u:u,c&&a?a.map((e,t)=>({coordinate:r(e)+u,value:e,index:t,offset:u})):r.ticks?r.ticks(l).map(e=>({coordinate:r(e)+u,value:e,offset:u})):r.domain().map((e,t)=>({coordinate:r(e)+u,value:i?i[e]:e,index:t,offset:u}))}}),qm=Nn(sg,Sm,(e,t)=>{if(null!=e&&null!=t)return Jv(Jv({},e),{},{scale:t})}),Ym=Nn([sg,pm,fm,Am],hm);Nn((e,t,r)=>ug(e,r),Ym,(e,t)=>{if(null!=e&&null!=t)return Jv(Jv({},e),{},{scale:t})});var Gm=Nn([qc,Qo,Jo],(e,t,r)=>{switch(e){case"horizontal":return t.some(e=>e.reversed)?"right-to-left":"left-to-right";case"vertical":return r.some(e=>e.reversed)?"bottom-to-top":"top-to-bottom";case"centric":case"radial":return"left-to-right";default:return}}),Xm=e=>e.options.defaultTooltipEventType,Zm=e=>e.options.validateTooltipEventTypes;function Qm(e,t,r){if(null==e)return t;var n=e?"axis":"item";return null==r?t:r.includes(n)?n:t}function Jm(e,t){return Qm(t,Xm(e),Zm(e))}var eb=(e,t)=>{var r,n=Number(t);if(!Je(n)&&null!=t)return n>=0?null==e||null===(r=e[n])||void 0===r?void 0:r.value:void 0},tb={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},rb=Ha({name:"tooltip",initialState:{itemInteraction:{click:tb,hover:tb},axisInteraction:{click:tb,hover:tb},keyboardInteraction:tb,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:"hover",axisId:0,active:!1,defaultIndex:void 0}},reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(t.payload)},prepare:za()},replaceTooltipEntrySettings:{reducer(e,t){var{prev:r,next:n}=t.payload,i=ja(e).tooltipItemPayloads.indexOf(r);i>-1&&(e.tooltipItemPayloads[i]=n)},prepare:za()},removeTooltipEntrySettings:{reducer(e,t){var r=ja(e).tooltipItemPayloads.indexOf(t.payload);r>-1&&e.tooltipItemPayloads.splice(r,1)},prepare:za()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate,e.keyboardInteraction.dataKey=t.payload.activeDataKey}}}),{addTooltipEntrySettings:nb,replaceTooltipEntrySettings:ib,removeTooltipEntrySettings:ab,setTooltipSettingsState:ob,setActiveMouseOverItemIndex:cb,mouseLeaveItem:lb,mouseLeaveChart:ub,setActiveClickItemIndex:sb,setMouseOverAxisIndex:fb,setMouseClickAxisIndex:db,setSyncInteraction:pb,setKeyboardInteraction:hb}=rb.actions,yb=rb.reducer;function vb(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function gb(e){for(var t=1;t{if(null==t)return tb;var i=function(e,t,r){return"axis"===t?"click"===r?e.axisInteraction.click:e.axisInteraction.hover:"click"===r?e.itemInteraction.click:e.itemInteraction.hover}(e,t,r);if(null==i)return tb;if(i.active)return i;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&null!=e.syncInteraction.index)return e.syncInteraction;var a=!0===e.settings.active;if(null!=i.index){if(a)return gb(gb({},i),{},{active:!0})}else if(null!=n)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return gb(gb({},tb),{},{coordinate:i.coordinate})};var xb=(e,t,r,n)=>{var i=null==e?void 0:e.index;if(null==i)return null;var a=Number(i);if(!Mc(a))return i;var o=1/0;t.length>0&&(o=t.length-1);var c=Math.max(0,Math.min(a,o)),l=t[c];return null==l||function(e,t,r){if(null==r||null==t)return!0;var n=No(e,t);return null==n||!jy(r)||function(e,t){var r=function(e){if("number"==typeof e)return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var r=Number(e);return Number.isFinite(r)?r:void 0}(e),n=t[0],i=t[1];if(void 0===r)return!1;var a=Math.min(n,i),o=Math.max(n,i);return r>=a&&r<=o}(n,r)}(l,r,n)?String(c):null},wb=(e,t,r,n,i,a,o,c)=>{if(null!=a&&null!=c){var l=o[0],u=null==l?void 0:c(l.positions,a);if(null!=u)return u;var s=null==i?void 0:i[Number(a)];if(s)return"horizontal"===r?{x:s.coordinate,y:(n.top+t)/2}:{x:(n.left+e)/2,y:s.coordinate}}},Ob=(e,t,r,n)=>{return"axis"===t?e.tooltipItemPayloads:0===e.tooltipItemPayloads.length?[]:null==(i="hover"===r?e.itemInteraction.hover.dataKey:e.itemInteraction.click.dataKey)&&null!=n?[e.tooltipItemPayloads[0]]:e.tooltipItemPayloads.filter(e=>{var t;return(null===(t=e.settings)||void 0===t?void 0:t.dataKey)===i});var i},Pb=e=>e.options.tooltipPayloadSearcher,jb=e=>e.tooltip;function Eb(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ab(e){for(var t=1;t{if(null!=t&&null!=a){var{chartData:c,computedData:l,dataStartIndex:u,dataEndIndex:s}=r;return e.reduce((e,r)=>{var f,d,p,{dataDefinedOnItem:h,settings:y}=r,v=function(e,t){return null!=e?e:t}(h,c),g=Array.isArray(v)?To(v,u,s):v,m=null!==(f=null==y?void 0:y.dataKey)&&void 0!==f?f:n,b=null==y?void 0:y.nameKey;return d=n&&Array.isArray(g)&&!Array.isArray(g[0])&&"axis"===o?lt(g,n,i):a(g,t,l,b),Array.isArray(d)?d.forEach(t=>{var r=Ab(Ab({},y),{},{name:t.name,unit:t.unit,color:void 0,fill:void 0});e.push(Vo({tooltipEntrySettings:r,dataKey:t.dataKey,payload:t.payload,value:No(t.payload,t.dataKey),name:t.name}))}):e.push(Vo({tooltipEntrySettings:y,dataKey:m,payload:d,value:No(d,m),name:null!==(p=No(d,b))&&void 0!==p?p:null==y?void 0:y.name})),e},[])}},_b=Nn([Tg,qc,dg,mv,Xv],dm),Mb=Nn([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),Tb=Nn([Xv,Zv],pg),Cb=Nn([Mb,Tg,Tb],vg,{memoizeOptions:{resultEqualityCheck:Gv}}),Ib=Nn([Cb],e=>e.filter(qv)),Db=Nn([Cb],wg,{memoizeOptions:{resultEqualityCheck:Gv}}),Nb=Nn([Db,wy],Pg),zb=Nn([Ib,wy,Tg],Vv),Rb=Nn([Nb,Tg,Cb],Eg),Lb=Nn([Tg],Lg),Bb=Nn([Tg],e=>e.allowDataOverflow),Kb=Nn([Lb,Bb],Ay),Fb=Nn([Cb],e=>e.filter(qv)),Ub=Nn([zb,Fb,vv,gv],Dg),Wb=Nn([Ub,wy,Xv,Kb],zg),$b=Nn([Cb],bg),Hb=Nn([Nb,Tg,$b,Ug,Xv],$g,{memoizeOptions:{resultEqualityCheck:Yv}}),Vb=Nn([qg,Xv,Zv],Yg),qb=Nn([Vb,Xv],em),Yb=Nn([Xg,Xv,Zv],Yg),Gb=Nn([Yb,Xv],rm),Xb=Nn([Qg,Xv,Zv],Yg),Zb=Nn([Xb,Xv],im),Qb=Nn([qb,Zb,Gb],Wg),Jb=Nn([Tg,Lb,Kb,Wb,Hb,Qb,qc,Xv],cm),ex=Nn([Tg,qc,Nb,Rb,vv,Xv,Jb],sm),tx=Nn([ex,Tg,_b],ym),rx=Nn([Tg,ex,tx,Xv],gm),nx=e=>{var t=Xv(e),r=Zv(e);return Em(e,t,r,!1)},ix=Nn([Tg,nx],_v),ax=Nn([Tg,_b,rx,ix],hm),ox=Nn([qc,Rb,Tg,Xv],Km),cx=Nn([qc,Rb,Tg,Xv],Um),lx=Nn([qc,Tg,_b,ax,nx,ox,cx,Xv],(e,t,r,n,i,a,o,c)=>{if(t){var{type:l}=t,u=zo(e,c);if(n){var s="scaleBand"===r&&n.bandwidth?n.bandwidth()/2:2,f="category"===l&&n.bandwidth?n.bandwidth()/s:0;return f="angleAxis"===c&&null!=i&&(null==i?void 0:i.length)>=2?2*Qe(i[0]-i[1])*f:f,u&&o?o.map((e,t)=>({coordinate:n(e)+f,value:e,index:t,offset:f})):n.domain().map((e,t)=>({coordinate:n(e)+f,value:a?a[e]:e,index:t,offset:f}))}}}),ux=Nn([Xm,Zm,e=>e.tooltip.settings],(e,t,r)=>Qm(r.shared,e,t)),sx=e=>e.tooltip.settings.trigger,fx=e=>e.tooltip.settings.defaultIndex,dx=Nn([jb,ux,sx,fx],bb),px=Nn([dx,Nb,Cg,ex],xb),hx=Nn([lx,px],eb),yx=Nn([dx],e=>{if(e)return e.dataKey});Nn([dx],e=>{if(e)return e.graphicalItemId});var vx=Nn([jb,ux,sx,fx],Ob),gx=Nn([Yo,Go,qc,uc,lx,fx,vx,Pb],wb),mx=Nn([dx,gx],(e,t)=>null!=e&&e.coordinate?e.coordinate:t),bx=Nn([dx],e=>e.active),xx=Nn([vx,px,wy,Cg,hx,Pb,ux],kb),wx=Nn([xx],e=>{if(null!=e){var t=e.map(e=>e.payload).filter(e=>null!=e);return Array.from(new Set(t))}});function Ox(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Px(e){for(var t=1;t{var a,o=-1,c=null!==(a=null==t?void 0:t.length)&&void 0!==a?a:0;if(c<=1||null==e)return 0;if("angleAxis"===n&&null!=i&&Math.abs(Math.abs(i[1]-i[0])-360)<=1e-6)for(var l=0;l0?r[l-1].coordinate:r[c-1].coordinate,s=r[l].coordinate,f=l>=c-1?r[0].coordinate:r[l+1].coordinate,d=void 0;if(Qe(s-u)!==Qe(f-s)){var p=[];if(Qe(f-s)===Qe(i[1]-i[0])){d=f;var h=s+i[1]-i[0];p[0]=Math.min(h,(h+u)/2),p[1]=Math.max(h,(h+u)/2)}else{d=u;var y=f+i[1]-i[0];p[0]=Math.min(s,(y+s)/2),p[1]=Math.max(s,(y+s)/2)}var v=[Math.min(s,(d+s)/2),Math.max(s,(d+s)/2)];if(e>v[0]&&e<=v[1]||e>=p[0]&&e<=p[1]){({index:o}=r[l]);break}}else{var g=Math.min(u,f),m=Math.max(u,f);if(e>(g+s)/2&&e<=(m+s)/2){({index:o}=r[l]);break}}}else if(t)for(var b=0;b0&&b(t[b].coordinate+t[b-1].coordinate)/2&&e<=(t[b].coordinate+t[b+1].coordinate)/2||b===c-1&&e>(t[b].coordinate+t[b-1].coordinate)/2){({index:o}=t[b]);break}return o},_x=()=>kn(mv),Mx=(e,t)=>t,Tx=(e,t,r)=>r,Cx=(e,t,r,n)=>n,Ix=Nn(lx,e=>ai(e,e=>e.coordinate)),Dx=Nn([jb,Mx,Tx,Cx],bb),Nx=Nn([Dx,Nb,Cg,ex],xb),zx=Nn([jb,Mx,Tx,Cx],Ob),Rx=Nn([Yo,Go,qc,uc,lx,Cx,zx,Pb],wb),Lx=Nn([Dx,Rx],(e,t)=>{var r;return null!==(r=e.coordinate)&&void 0!==r?r:t}),Bx=Nn([lx,Nx],eb),Kx=Nn([zx,Nx,wy,Cg,Bx,Pb,Mx],kb),Fx=Nn([Dx,Nx],(e,t)=>({isActive:e.active&&null!=t,activeIndex:t})),Ux=Nn(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,r)=>r,(e,t,r)=>{if(null!=t){var n=e[t];if(null!=n)return r?n.panoramaElementId:n.elementId}}),Wx=Nn(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(e=>parseInt(e,10)).concat(Object.values(Ov));return Array.from(new Set(t)).sort((e,t)=>e-t)},{memoizeOptions:{resultEqualityCheck:function(e,t){if(e.length===t.length){for(var r=0;rHx(Hx({},e),{},{[t]:{elementId:void 0,panoramaElementId:void 0,consumers:0}}),{})},Yx=new Set(Object.values(Ov)),Gx=Ha({name:"zIndex",initialState:qx,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var{zIndex:r}=t.payload;e.zIndexMap[r]?e.zIndexMap[r].consumers+=1:e.zIndexMap[r]={consumers:1,elementId:void 0,panoramaElementId:void 0}},prepare:za()},unregisterZIndexPortal:{reducer:(e,t)=>{var{zIndex:r}=t.payload;e.zIndexMap[r]&&(e.zIndexMap[r].consumers-=1,e.zIndexMap[r].consumers<=0&&!function(e){return Yx.has(e)}(r)&&delete e.zIndexMap[r])},prepare:za()},registerZIndexPortalId:{reducer:(e,t)=>{var{zIndex:r,elementId:n,isPanorama:i}=t.payload;e.zIndexMap[r]?i?e.zIndexMap[r].panoramaElementId=n:e.zIndexMap[r].elementId=n:e.zIndexMap[r]={consumers:0,elementId:i?void 0:n,panoramaElementId:i?n:void 0}},prepare:za()},unregisterZIndexPortalId:{reducer:(e,t)=>{var{zIndex:r}=t.payload;e.zIndexMap[r]&&(t.payload.isPanorama?e.zIndexMap[r].panoramaElementId=void 0:e.zIndexMap[r].elementId=void 0)},prepare:za()}}}),{registerZIndexPortal:Xx,unregisterZIndexPortal:Zx,registerZIndexPortalId:Qx,unregisterZIndexPortalId:Jx}=Gx.actions,ew=Gx.reducer;function tw(e){var{zIndex:t,children:n}=e,a=void 0!==Yc()&&void 0!==t&&0!==t,o=pc(),c=jn();r.useLayoutEffect(()=>a?(c(Xx({zIndex:t})),()=>{c(Zx({zIndex:t}))}):dt,[c,t,a]);var l=kn(e=>Ux(e,t,o));if(!a)return n;if(!l)return null;var u=document.getElementById(l);return u?i.createPortal(n,u):null}function rw(){return rw=Object.assign?Object.assign.bind():function(e){for(var t=1;t{null==e.eventEmitter&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),mw=gw.reducer,{createEventEmitter:bw}=gw.actions;function xw(e){return e.tooltip.syncInteraction}var ww=Ha({name:"chartData",initialState:{chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},reducers:{setChartData(e,t){if(e.chartData=t.payload,null==t.payload)return e.dataStartIndex=0,void(e.dataEndIndex=0);t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var{startIndex:r,endIndex:n}=t.payload;null!=r&&(e.dataStartIndex=r),null!=n&&(e.dataEndIndex=n)}}}),{setChartData:Ow,setDataStartEndIndexes:Pw,setComputedData:jw}=ww.actions,Ew=ww.reducer,Aw=["x","y"];function Sw(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function kw(e){for(var t=1;t{e(bw())},[e]),function(){var e=kn(bv),t=kn(wv),n=jn(),i=kn(xv),a=kn(lx),o=Yc(),c=Uc(),l=kn(e=>e.rootProps.className);r.useEffect(()=>{if(null==e)return dt;var r=(r,l,u)=>{var s;if(t!==u&&e===r)if("index"!==i){if(null!=a){var f;if("function"==typeof i){var d={activeTooltipIndex:null==l.payload.index?void 0:Number(l.payload.index),isTooltipActive:l.payload.active,activeIndex:null==l.payload.index?void 0:Number(l.payload.index),activeLabel:l.payload.label,activeDataKey:l.payload.dataKey,activeCoordinate:l.payload.coordinate},p=i(a,d);f=a[p]}else"value"===i&&(f=a.find(e=>String(e.value)===l.payload.label));var{coordinate:h}=l.payload;if(null!=f&&!1!==l.payload.active&&null!=h&&null!=c){var{x:y,y:v}=h,g=Math.min(y,c.x+c.width),m=Math.min(v,c.y+c.height),b={x:"horizontal"===o?f.coordinate:g,y:"horizontal"===o?m:f.coordinate},x=pb({active:l.payload.active,coordinate:b,dataKey:l.payload.dataKey,index:String(f.index),label:l.payload.label,sourceViewBox:l.payload.sourceViewBox,graphicalItemId:l.payload.graphicalItemId});n(x)}else n(pb({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}))}}else if(c&&null!=l&&null!==(s=l.payload)&&void 0!==s&&s.coordinate&&l.payload.sourceViewBox){var w=l.payload.coordinate,{x:O,y:P}=w,j=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{pw.off(hw,r)}},[l,n,t,e,i,a,o,c])}(),function(){var e=kn(bv),t=kn(wv),n=jn();r.useEffect(()=>{if(null==e)return dt;var r=(r,i,a)=>{t!==a&&e===r&&n(Pw(i))};return pw.on(yw,r),()=>{pw.off(yw,r)}},[n,t,e])}()}function Tw(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Cw(e){for(var t=1;t{E(ob({shared:x,trigger:w,axisId:j,active:o,defaultIndex:A}))},[E,x,w,j,o,A]);var S=Uc(),k=gu(),_=function(e){return kn(t=>Jm(t,e))}(x),{activeIndex:M,isActive:T}=null!==(t=kn(e=>Fx(e,_,w,A)))&&void 0!==t?t:{},C=kn(e=>Kx(e,_,w,A)),I=kn(e=>Bx(e,_,w,A)),D=kn(e=>Lx(e,_,w,A)),N=C,z=r.useContext(sw),R=null!==(n=null!=o?o:T)&&void 0!==n&&n,[L,B]=li([N,R]),K="axis"===_?I:void 0;!function(e,t,n,i,a,o){var c=kn(r=>((e,t,r)=>{if(null!=t){var n=jb(e);return"axis"===t?"hover"===r?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:"hover"===r?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}})(r,e,t)),l=kn(wv),u=kn(bv),s=kn(xv),f=kn(xw),d=null==f?void 0:f.active,p=Uc();r.useEffect(()=>{if(!d&&null!=u&&null!=l){var e=pb({active:o,coordinate:n,dataKey:c,index:a,label:"number"==typeof i?String(i):i,sourceViewBox:p,graphicalItemId:void 0});pw.emit(hw,u,e,l)}},[d,n,c,a,i,l,u,s,o,p])}(_,w,D,K,M,R);var F=null!=P?P:z;if(null==F||null==S||null==_)return null;var U=null!=N?N:Nw;R||(U=Nw),f&&U.length&&(U=dn(U.filter(e=>null!=e.value&&(!0!==e.hide||a.includeHidden)),h,Dw));var W=U.length>0,$=r.createElement(vu,{allowEscapeViewBox:c,animationDuration:l,animationEasing:u,isAnimationActive:d,active:R,coordinate:D,hasPayload:W,offset:p,position:y,reverseDirection:v,useTranslate3d:g,viewBox:S,wrapperStyle:m,lastBoundingBox:L,innerRef:B,hasPortalFromProps:Boolean(P)},function(e,t){return r.isValidElement(e)?r.cloneElement(e,t):"function"==typeof e?r.createElement(e,t):r.createElement(lu,t)}(s,Cw(Cw({},a),{},{payload:U,label:K,active:R,activeIndex:M,coordinate:D,accessibilityLayer:k})));return r.createElement(r.Fragment,null,i.createPortal($,F),R&&r.createElement(lw,{cursor:b,tooltipEventType:_,coordinate:D,payload:U,index:M}))}function Lw(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Bw(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Kw=function(e){for(var t=1;t=this.maxSize){var r=this.cache.keys().next().value;null!=r&&this.cache.delete(r)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}}(Kw.cacheSize),Uw={position:"absolute",top:"-20000px",left:0,padding:0,margin:0,border:"none",whiteSpace:"pre"},Ww="recharts_measurement_span",$w=(e,t)=>{try{var r=document.getElementById(Ww);r||((r=document.createElement("span")).setAttribute("id",Ww),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,Uw,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch(i){return{width:0,height:0}}},Hw=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==e||ts)return{width:0,height:0};if(!Kw.enableCache)return $w(e,t);var r=function(e,t){var r=t.fontSize||"",n=t.fontFamily||"",i=t.fontWeight||"",a=t.fontStyle||"",o=t.letterSpacing||"",c=t.textTransform||"";return"".concat(e,"|").concat(r,"|").concat(n,"|").concat(i,"|").concat(a,"|").concat(o,"|").concat(c)}(e,t),n=Fw.get(r);if(n)return n;var i=$w(e,t);return Fw.set(r,i),i},Vw=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,qw=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,Yw=/^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/,Gw=/(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/,Xw={cm:96/2.54,mm:96/25.4,pt:96/72,pc:16,in:96,Q:96/101.6,px:1},Zw=Object.keys(Xw),Qw="NaN";class Jw{static parse(e){var t,[,r,n]=null!==(t=Gw.exec(e))&&void 0!==t?t:[];return new Jw(parseFloat(r),null!=n?n:"")}constructor(e,t){this.num=e,this.unit=t,this.num=e,this.unit=t,Je(e)&&(this.unit=""),""===t||Yw.test(t)||(this.num=NaN,this.unit=""),Zw.includes(t)&&(this.num=function(e,t){return e*Xw[t]}(e,t),this.unit="px")}add(e){return this.unit!==e.unit?new Jw(NaN,""):new Jw(this.num+e.num,this.unit)}subtract(e){return this.unit!==e.unit?new Jw(NaN,""):new Jw(this.num-e.num,this.unit)}multiply(e){return""!==this.unit&&""!==e.unit&&this.unit!==e.unit?new Jw(NaN,""):new Jw(this.num*e.num,this.unit||e.unit)}divide(e){return""!==this.unit&&""!==e.unit&&this.unit!==e.unit?new Jw(NaN,""):new Jw(this.num/e.num,this.unit||e.unit)}toString(){return"".concat(this.num).concat(this.unit)}isNaN(){return Je(this.num)}}function eO(e){if(e.includes(Qw))return Qw;for(var t=e;t.includes("*")||t.includes("/");){var r,[,n,i,a]=null!==(r=Vw.exec(t))&&void 0!==r?r:[],o=Jw.parse(null!=n?n:""),c=Jw.parse(null!=a?a:""),l="*"===i?o.multiply(c):o.divide(c);if(l.isNaN())return Qw;t=t.replace(Vw,l.toString())}for(;t.includes("+")||/.-\d+(?:\.\d+)?/.test(t);){var u,[,s,f,d]=null!==(u=qw.exec(t))&&void 0!==u?u:[],p=Jw.parse(null!=s?s:""),h=Jw.parse(null!=d?d:""),y="+"===f?p.add(h):p.subtract(h);if(y.isNaN())return Qw;t=t.replace(qw,y.toString())}return t}var tO=/\(([^()]*)\)/;function rO(e){var t=function(e){try{return function(e){var t=e.replace(/\s+/g,"");return t=function(e){for(var t,r=e;null!=(t=tO.exec(r));){var[,n]=t;r=r.replace(tO,eO(n))}return r}(t),eO(t)}(e)}catch(t){return Qw}}(e.slice(5,-1));return t===Qw?"":t}var nO=["x","y","lineHeight","capHeight","fill","scaleToFit","textAnchor","verticalAnchor"],iO=["dx","dy","angle","className","breakAll"];function aO(){return aO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:t,breakAll:r,style:n}=e;try{var i=[];return ut(t)||(i=r?t.toString().split(""):t.toString().split(cO)),{wordsWithComputedWidth:i.map(e=>({word:e,width:Hw(e,n).width})),spaceWidth:r?0:Hw(" ",n).width}}catch(a){return null}};function uO(e){return"start"===e||"middle"===e||"end"===e||"inherit"===e}var sO=(e,t,r,n)=>e.reduce((e,i)=>{var{word:a,width:o}=i,c=e[e.length-1];if(c&&null!=o&&(null==t||n||c.width+o+re.reduce((e,t)=>e.width>t.width?e:t),dO=(e,t,r,n,i,a,o,c)=>{var l=e.slice(0,t),u=lO({breakAll:r,style:n,children:l+"…"});if(!u)return[!1,[]];var s=sO(u.wordsWithComputedWidth,a,o,c);return[s.length>i||fO(s).width>Number(a),s]},pO=e=>[{words:ut(e)?[]:e.toString().split(cO),width:void 0}],hO="#808080",yO={angle:0,breakAll:!1,capHeight:"0.71em",fill:hO,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},vO=r.forwardRef((e,t)=>{var n=At(e,yO),{x:i,y:a,lineHeight:o,capHeight:c,fill:l,scaleToFit:u,textAnchor:f,verticalAnchor:d}=n,p=oO(n,nO),h=r.useMemo(()=>(e=>{var{width:t,scaleToFit:r,children:n,style:i,breakAll:a,maxLines:o}=e;if((t||r)&&!ts){var c=lO({breakAll:a,children:n,style:i});if(!c)return pO(n);var{wordsWithComputedWidth:l,spaceWidth:u}=c;return((e,t,r,n,i)=>{var{maxLines:a,children:o,style:c,breakAll:l}=e,u=tt(a),s=String(o),f=sO(t,n,r,i);if(!u||i)return f;if(!(f.length>a||fO(f).width>Number(n)))return f;for(var d,p=0,h=s.length-1,y=0;p<=h&&y<=s.length-1;){var v=Math.floor((p+h)/2),g=v-1,[m,b]=dO(s,g,l,c,a,n,r,i),[x]=dO(s,v,l,c,a,n,r,i);if(m||x||(p=v+1),m&&x&&(h=v-1),!m&&x){d=b;break}y++}return d||f})({breakAll:a,children:n,maxLines:o,style:i},l,u,t,Boolean(r))}return pO(n)})({breakAll:p.breakAll,children:p.children,maxLines:p.maxLines,scaleToFit:u,style:p.style,width:p.width}),[p.breakAll,p.children,p.maxLines,u,p.style,p.width]),{dx:y,dy:v,angle:g,className:b,breakAll:x}=p,w=oO(p,iO);if(!rt(i)||!rt(a)||0===h.length)return null;var O,P=Number(i)+(tt(y)?y:0),j=Number(a)+(tt(v)?v:0);if(!Mc(P)||!Mc(j))return null;switch(d){case"start":O=rO("calc(".concat(c,")"));break;case"middle":O=rO("calc(".concat((h.length-1)/2," * -").concat(o," + (").concat(c," / 2))"));break;default:O=rO("calc(".concat(h.length-1," * -").concat(o,")"))}var E=[];if(u){var A=h[0].width,{width:S}=p;E.push("scale(".concat(tt(S)&&tt(A)?S/A:1,")"))}return g&&E.push("rotate(".concat(g,", ").concat(P,", ").concat(j,")")),E.length&&(w.transform=E.join(" ")),r.createElement("text",aO({},m(w),{ref:t,x:P,y:j,className:s("recharts-text",b),textAnchor:f,fill:l.includes("url")?hO:l}),h.map((e,t)=>{var n=e.words.join(x?"":" ");return r.createElement("tspan",{x:P,dy:0===t?O:o,key:"".concat(n,"-").concat(t)},n)}))});vO.displayName="Text";var gO=["labelRef"];function mO(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function bO(e){for(var t=1;t{var{x:t,y:n,upperWidth:i,lowerWidth:a,width:o,height:c,children:l}=e,u=r.useMemo(()=>({x:t,y:n,upperWidth:i,lowerWidth:a,width:o,height:c}),[t,n,i,a,o,c]);return r.createElement(OO.Provider,{value:u},l)},jO=()=>{var e=r.useContext(OO),t=Uc();return e||Fc(t)},EO=r.createContext(null),AO=e=>null!=e&&"function"==typeof e,SO=e=>"cx"in e&&tt(e.cx),kO={angle:0,offset:5,zIndex:Ov.label,position:"middle",textBreakAll:!1};function _O(e){var t,n,i,a,o,c=At(e,kO),{viewBox:l,position:u,value:f,children:d,content:p,className:h="",textBreakAll:y,labelRef:v}=c,g=(t=r.useContext(EO),n=kn(Uv),t||n),b=jO();if(!(i=null==l?"center"===u?b:null!=g?g:b:SO(l)?l:Fc(l))||ut(f)&&ut(d)&&!r.isValidElement(p)&&"function"!=typeof p)return null;var x=bO(bO({},c),{},{viewBox:i});if(r.isValidElement(p)){var{labelRef:w}=x,O=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var{value:t,formatter:r}=e,n=ut(e.children)?t:e.children;return"function"==typeof r?r(n):n})(c);var P=m(c);if(SO(i)){if("insideStart"===u||"insideEnd"===u||"end"===u)return((e,t,n,i,a)=>{var o,c,{offset:l,className:u}=e,{cx:f,cy:d,innerRadius:p,outerRadius:h,startAngle:y,endAngle:v,clockWise:g}=a,m=(p+h)/2,b=((e,t)=>Qe(t-e)*Math.min(Math.abs(t-e),360))(y,v),x=b>=0?1:-1;switch(t){case"insideStart":o=y+x*l,c=g;break;case"insideEnd":o=v-x*l,c=!g;break;case"end":o=v+x*l,c=g;break;default:throw new Error("Unsupported position ".concat(t))}c=b<=0?c:!c;var w=Os(f,d,m,o),O=Os(f,d,m,o+359*(c?1:-1)),P="M".concat(w.x,",").concat(w.y,"\n A").concat(m,",").concat(m,",0,1,").concat(c?0:1,",\n ").concat(O.x,",").concat(O.y),j=ut(e.id)?it("recharts-radial-line-"):e.id;return r.createElement("text",wO({},i,{dominantBaseline:"central",className:s("recharts-radial-bar-label",u)}),r.createElement("defs",null,r.createElement("path",{id:j,d:P})),r.createElement("textPath",{xlinkHref:"#".concat(j)},n))})(c,u,a,P,i);o=((e,t,r)=>{var{cx:n,cy:i,innerRadius:a,outerRadius:o,startAngle:c,endAngle:l}=e,u=(c+l)/2;if("outside"===r){var{x:s,y:f}=Os(n,i,o+t,u);return{x:s,y:f,textAnchor:s>=n?"start":"end",verticalAnchor:"middle"}}if("center"===r)return{x:n,y:i,textAnchor:"middle",verticalAnchor:"middle"};if("centerTop"===r)return{x:n,y:i,textAnchor:"middle",verticalAnchor:"start"};if("centerBottom"===r)return{x:n,y:i,textAnchor:"middle",verticalAnchor:"end"};var d=(a+o)/2,{x:p,y:h}=Os(n,i,d,u);return{x:p,y:h,textAnchor:"middle",verticalAnchor:"middle"}})(i,c.offset,c.position)}else o=((e,t)=>{var r,{parentViewBox:n,offset:i,position:a}=e;null==n||SO(n)||(r=n);var{x:o,y:c,upperWidth:l,lowerWidth:u,height:s}=t,f=o,d=o+(l-u)/2,p=(f+d)/2,h=(l+u)/2,y=f+l/2,v=s>=0?1:-1,g=v*i,m=v>0?"end":"start",b=v>0?"start":"end",x=l>=0?1:-1,w=x*i,O=x>0?"end":"start",P=x>0?"start":"end";if("top"===a)return bO(bO({},{x:f+l/2,y:c-g,textAnchor:"middle",verticalAnchor:m}),r?{height:Math.max(c-r.y,0),width:l}:{});if("bottom"===a)return bO(bO({},{x:d+u/2,y:c+s+g,textAnchor:"middle",verticalAnchor:b}),r?{height:Math.max(r.y+r.height-(c+s),0),width:u}:{});if("left"===a){var j={x:p-w,y:c+s/2,textAnchor:O,verticalAnchor:"middle"};return bO(bO({},j),r?{width:Math.max(j.x-r.x,0),height:s}:{})}if("right"===a){var E={x:p+h+w,y:c+s/2,textAnchor:P,verticalAnchor:"middle"};return bO(bO({},E),r?{width:Math.max(r.x+r.width-E.x,0),height:s}:{})}var A=r?{width:h,height:s}:{};return"insideLeft"===a?bO({x:p+w,y:c+s/2,textAnchor:P,verticalAnchor:"middle"},A):"insideRight"===a?bO({x:p+h-w,y:c+s/2,textAnchor:O,verticalAnchor:"middle"},A):"insideTop"===a?bO({x:f+l/2,y:c+g,textAnchor:"middle",verticalAnchor:b},A):"insideBottom"===a?bO({x:d+u/2,y:c+s-g,textAnchor:"middle",verticalAnchor:m},A):"insideTopLeft"===a?bO({x:f+w,y:c+g,textAnchor:P,verticalAnchor:b},A):"insideTopRight"===a?bO({x:f+l-w,y:c+g,textAnchor:O,verticalAnchor:b},A):"insideBottomLeft"===a?bO({x:d+w,y:c+s-g,textAnchor:P,verticalAnchor:m},A):"insideBottomRight"===a?bO({x:d+u-w,y:c+s-g,textAnchor:O,verticalAnchor:m},A):a&&"object"==typeof a&&(tt(a.x)||et(a.x))&&(tt(a.y)||et(a.y))?bO({x:o+at(a.x,h),y:c+at(a.y,s),textAnchor:"end",verticalAnchor:"end"},A):bO({x:y,y:c+s/2,textAnchor:"middle",verticalAnchor:"middle"},A)})(c,i);return r.createElement(tw,{zIndex:c.zIndex},r.createElement(vO,wO({ref:v,className:s("recharts-label",h)},P,o,{textAnchor:uO(P.textAnchor)?P.textAnchor:o.textAnchor,breakAll:y}),a))}function MO(e){var{label:t,labelRef:n}=e;return((e,t,n)=>{if(!e)return null;var i={viewBox:t,labelRef:n};return!0===e?r.createElement(_O,wO({key:"label-implicit"},i)):rt(e)?r.createElement(_O,wO({key:"label-implicit",value:e},i)):r.isValidElement(e)?e.type===_O?r.cloneElement(e,bO({key:"label-implicit"},i)):r.createElement(_O,wO({key:"label-implicit",content:e},i)):AO(e)?r.createElement(_O,wO({key:"label-implicit",content:e},i)):e&&"object"==typeof e?r.createElement(_O,wO({},e,{key:"label-implicit"},i)):null})(t,jO(),n)||null}_O.displayName="Label";var TO,CO={},IO={};function DO(){return TO||(TO=1,e=IO,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.last=function(e){return e[e.length-1]}),IO;var e}var NO,zO,RO,LO,BO={};function KO(){return NO||(NO=1,e=BO,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.toArray=function(e){return Array.isArray(e)?e:Array.from(e)}),BO;var e}function FO(){return LO?RO:(LO=1,RO=(zO||(zO=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=DO(),r=KO(),n=Yt();e.last=function(e){if(n.isArrayLike(e))return t.last(r.toArray(e))}}(CO)),CO).last)}const UO=l(FO());var WO=["valueAccessor"],$O=["dataKey","clockWise","id","textBreakAll","zIndex"];function HO(){return HO=Object.assign?Object.assign.bind():function(e){for(var t=1;tArray.isArray(e.value)?UO(e.value):e.value,YO=r.createContext(void 0),GO=YO.Provider,XO=r.createContext(void 0);function ZO(e){var{valueAccessor:t=qO}=e,n=VO(e,WO),{dataKey:i,clockWise:a,id:o,textBreakAll:c,zIndex:l}=n,u=VO(n,$O),s=r.useContext(YO),f=r.useContext(XO),d=s||f;return d&&d.length?r.createElement(tw,{zIndex:null!=l?l:Ov.label},r.createElement(j,{className:"recharts-label-list"},d.map((e,a)=>{var l,s=ut(i)?t(e,a):No(e&&e.payload,i),f=ut(o)?{}:{id:"".concat(o,"-").concat(a)};return r.createElement(_O,HO({key:"label-".concat(a)},m(e),u,f,{fill:null!==(l=n.fill)&&void 0!==l?l:e.fill,parentViewBox:e.parentViewBox,value:s,textBreakAll:c,viewBox:e.viewBox,index:a,zIndex:0}))}))):null}function QO(e){var{label:t}=e;return t?!0===t?r.createElement(ZO,{key:"labelList-implicit"}):r.isValidElement(t)||AO(t)?r.createElement(ZO,{key:"labelList-implicit",content:t}):"object"==typeof t?r.createElement(ZO,HO({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}XO.Provider,ZO.displayName="LabelList";var JO=["points","className","baseLinePoints","connectNulls"];function eP(){return eP=Object.assign?Object.assign.bind():function(e){for(var t=1;te&&e.x===+e.x&&e.y===+e.y,rP=(e,t)=>{var r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[[]];return e.forEach(e=>{tP(e)?t[t.length-1].push(e):t[t.length-1].length>0&&t.push([])}),tP(e[0])&&t[t.length-1].push(e[0]),t[t.length-1].length<=0&&(t=t.slice(0,-1)),t}(e);t&&(r=[r.reduce((e,t)=>[...e,...t],[])]);var n=r.map(e=>e.reduce((e,t,r)=>"".concat(e).concat(0===r?"M":"L").concat(t.x,",").concat(t.y),"")).join("");return 1===r.length?"".concat(n,"Z"):n},nP=e=>{var{points:t,className:n,baseLinePoints:i,connectNulls:a}=e,o=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var n=rP(e,r);return"".concat("Z"===n.slice(-1)?n.slice(0,-1):n,"L").concat(rP(Array.from(t).reverse(),r).slice(1))})(t,i,a);return r.createElement("g",{className:c},r.createElement("path",eP({},m(o),{fill:"Z"===u.slice(-1)?o.fill:"none",stroke:"none",d:u})),l?r.createElement("path",eP({},m(o),{fill:"none",d:rP(t,a)})):null,l?r.createElement("path",eP({},m(o),{fill:"none",d:rP(i,a)})):null)}var f=rP(t,a);return r.createElement("path",eP({},m(o),{fill:"Z"===f.slice(-1)?o.fill:"none",className:c,d:f}))};function iP(){return iP=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:n,r:i,className:a}=e,o=s("recharts-dot",a);return tt(t)&&tt(n)&&tt(i)?r.createElement("circle",iP({},v(e),Ot(e),{className:o,cx:t,cy:n,r:i})):null},uP=Ha({name:"polarAxis",initialState:{radiusAxis:{},angleAxis:{}},reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=t.payload},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=t.payload},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:sP,removeRadiusAxis:fP,addAngleAxis:dP,removeAngleAxis:pP}=uP.actions,hP=uP.reducer,yP=e=>!e||"object"!=typeof e||!("clipDot"in e)||Boolean(e.clipDot),vP={};function gP(){return aP||(aP=1,e=vP,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isPlainObject=function(e){var t;if("object"!=typeof e)return!1;if(null==e)return!1;if(null===Object.getPrototypeOf(e))return!0;if("[object Object]"!==Object.prototype.toString.call(e)){const r=e[Symbol.toStringTag];return null!=r&&!!(null==(t=Object.getOwnPropertyDescriptor(e,Symbol.toStringTag))?void 0:t.writable)&&e.toString()===`[object ${r}]`}let r=e;for(;null!==Object.getPrototypeOf(r);)r=Object.getPrototypeOf(r);return Object.getPrototypeOf(e)===r}),vP;var e}function mP(){return cP?oP:(cP=1,oP=gP().isPlainObject)}const bP=l(mP());function xP(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function wP(e){for(var t=1;t{var a,o=r-n;return a="M ".concat(e,",").concat(t),a+="L ".concat(e+r,",").concat(t),a+="L ".concat(e+r-o/2,",").concat(t+i),(a+="L ".concat(e+r-o/2-n,",").concat(t+i))+"L ".concat(e,",").concat(t," Z")},AP={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},SP=e=>{var t=At(e,AP),{x:n,y:i,upperWidth:a,lowerWidth:o,height:c,className:l}=t,{animationEasing:u,animationDuration:f,animationBegin:d,isUpdateAnimationActive:p}=t,h=r.useRef(null),[y,v]=r.useState(-1),g=r.useRef(a),b=r.useRef(o),x=r.useRef(c),w=r.useRef(n),O=r.useRef(i),P=os(e,"trapezoid-");if(r.useEffect(()=>{if(h.current&&h.current.getTotalLength)try{var e=h.current.getTotalLength();e&&v(e)}catch(t){}},[]),n!==+n||i!==+i||a!==+a||o!==+o||c!==+c||0===a&&0===o||0===c)return null;var j=s("recharts-trapezoid",l);if(!p)return r.createElement("g",null,r.createElement("path",PP({},m(t),{className:j,d:EP(n,i,a,o,c)})));var E=g.current,A=b.current,S=x.current,k=w.current,_=O.current,M="0px ".concat(-1===y?1:y,"px"),T="".concat(y,"px 0px"),C=Ru(["strokeDasharray"],f,u);return r.createElement(as,{animationId:P,key:P,canBegin:y>0,duration:f,easing:u,isActive:p,begin:d},e=>{var l=ct(E,a,e),u=ct(A,o,e),s=ct(S,c,e),f=ct(k,n,e),d=ct(_,i,e);h.current&&(g.current=l,b.current=u,x.current=s,w.current=f,O.current=d);var p=e>0?{transition:C,strokeDasharray:T}:{strokeDasharray:M};return r.createElement("path",PP({},m(t),{className:j,d:EP(f,d,l,u,s),ref:h,style:wP(wP({},p),t.style)}))})},kP=["option","shapeType","propTransformer","activeClassName"];function _P(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function MP(e){for(var t=1;t{i||(null===a.current?n(nb(t)):a.current!==t&&n(ib({prev:a.current,next:t})),a.current=t)},[t,n,i]),r.useLayoutEffect(()=>()=>{a.current&&(n(ab(a.current)),a.current=null)},[n]),null}function zP(e){var{legendPayload:t}=e,n=jn(),i=pc(),a=r.useRef(null);return r.useLayoutEffect(()=>{i||(null===a.current?n(Ul(t)):a.current!==t&&n(Wl({prev:a.current,next:t})),a.current=t)},[n,i,t]),r.useLayoutEffect(()=>()=>{a.current&&(n($l(a.current)),a.current=null)},[n]),null}var RP=null!==(jP=a["useId".toString()])&&void 0!==jP?jP:()=>{var[e]=r.useState(()=>it("uid-"));return e};function LP(e,t){var r=RP();return t||(e?"".concat(e,"-").concat(r):r)}var BP=r.createContext(void 0),KP=e=>{var{id:t,type:n,children:i}=e,a=LP("recharts-".concat(n),t);return r.createElement(BP.Provider,{value:a},i(a))},FP=Ha({name:"graphicalItems",initialState:{cartesianItems:[],polarItems:[]},reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(t.payload)},prepare:za()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:r,next:n}=t.payload,i=ja(e).cartesianItems.indexOf(r);i>-1&&(e.cartesianItems[i]=n)},prepare:za()},removeCartesianGraphicalItem:{reducer(e,t){var r=ja(e).cartesianItems.indexOf(t.payload);r>-1&&e.cartesianItems.splice(r,1)},prepare:za()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(t.payload)},prepare:za()},removePolarGraphicalItem:{reducer(e,t){var r=ja(e).polarItems.indexOf(t.payload);r>-1&&e.polarItems.splice(r,1)},prepare:za()}}}),{addCartesianGraphicalItem:UP,replaceCartesianGraphicalItem:WP,removeCartesianGraphicalItem:$P,addPolarGraphicalItem:HP,removePolarGraphicalItem:VP}=FP.actions,qP=FP.reducer,YP=e=>{var t=jn(),n=r.useRef(null);return r.useLayoutEffect(()=>{null===n.current?t(UP(e)):n.current!==e&&t(WP({prev:n.current,next:e})),n.current=e},[t,e]),r.useLayoutEffect(()=>()=>{n.current&&(t($P(n.current)),n.current=null)},[t]),null},GP=r.memo(YP),XP=["points"];function ZP(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function QP(e){for(var t=1;t{var l,u,s=QP(QP(QP({r:3},c),p),{},{index:i,cx:null!==(l=e.x)&&void 0!==l?l:void 0,cy:null!==(u=e.y)&&void 0!==u?u:void 0,dataKey:o,value:e.value,payload:e.payload,points:t});return r.createElement(tj,{key:"dot-".concat(i),option:n,dotProps:s,className:a})}),y={};return l&&null!=u&&(y.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(u,")")),r.createElement(tw,{zIndex:s},r.createElement(j,ej({className:i},y),h))}function nj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ij(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),bj=Nn([mj,Yo,Go],(e,t,r)=>{if(e&&null!=t&&null!=r)return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,r-e.top-e.bottom)}}),xj=()=>kn(bj);function wj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Oj(e){for(var t=1;t{var{point:t,childIndex:n,mainColor:i,activeDot:a,dataKey:o,clipPath:c}=e;if(!1===a||null==t.x||null==t.y)return null;var l,u=Oj(Oj(Oj({},{index:n,dataKey:o,cx:t.x,cy:t.y,r:4,fill:null!=i?i:"none",strokeWidth:2,stroke:"#fff",payload:t.payload,value:t.value}),g(a)),Ot(a));return l=r.isValidElement(a)?r.cloneElement(a,u):"function"==typeof a?a(u):r.createElement(lP,u),r.createElement(j,{className:"recharts-active-dot",clipPath:c},l)};function Ej(e){var{points:t,mainColor:n,activeDot:i,itemDataKey:a,clipPath:o,zIndex:c=Ov.activeDot}=e,l=kn(px),u=kn(wx);if(null==t||null==u)return null;var s=t.find(e=>u.includes(e.payload));return ut(s)?null:r.createElement(tw,{zIndex:c},r.createElement(jj,{point:s,childIndex:Number(l),mainColor:n,dataKey:a,activeDot:i,clipPath:o}))}var Aj=Ha({name:"errorBars",initialState:{},reducers:{addErrorBar:(e,t)=>{var{itemId:r,errorBar:n}=t.payload;e[r]||(e[r]=[]),e[r].push(n)},replaceErrorBar:(e,t)=>{var{itemId:r,prev:n,next:i}=t.payload;e[r]&&(e[r]=e[r].map(e=>e.dataKey===n.dataKey&&e.direction===n.direction?i:e))},removeErrorBar:(e,t)=>{var{itemId:r,errorBar:n}=t.payload;e[r]&&(e[r]=e[r].filter(e=>e.dataKey!==n.dataKey||e.direction!==n.direction))}}}),{addErrorBar:Sj,replaceErrorBar:kj,removeErrorBar:_j}=Aj.actions,Mj=Aj.reducer,Tj=["children"],Cj={data:[],xAxisId:"xAxis-0",yAxisId:"yAxis-0",dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0},Ij=r.createContext(Cj);function Dj(e){var{children:t}=e,n=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;nig(t,e)),a=kn(e=>cg(e,t)),o=null!==(r=null==i?void 0:i.allowDataOverflow)&&void 0!==r?r:rg.allowDataOverflow,c=null!==(n=null==a?void 0:a.allowDataOverflow)&&void 0!==n?n:ag.allowDataOverflow;return{needClip:o||c,needClipX:o,needClipY:c}}function zj(e){var{xAxisId:t,yAxisId:n,clipPathId:i}=e,a=xj(),{needClipX:o,needClipY:c,needClip:l}=Nj(t,n);if(!l||!a)return null;var{x:u,y:s,width:f,height:d}=a;return r.createElement("clipPath",{id:"clipPath-".concat(i)},r.createElement("rect",{x:o?u:u-f/2,y:c?s:s-d/2,width:o?f:2*f,height:c?d:2*d}))}var Rj=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle"]);function Lj(e,t){return null==e&&null==t||("number"==typeof e&&"number"==typeof t?e===t||e!=e&&t!=t:e===t)}function Bj(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(Rj.has(n)){if(null==e[n]&&null==t[n])continue;if(!o(e[n],t[n]))return!1}else if(!Lj(e[n],t[n]))return!1;return!0}var Kj,Fj,Uj,Wj,$j=e=>{var{chartData:t}=e,n=jn(),i=pc();return r.useEffect(()=>i?()=>{}:(n(Ow(t)),()=>{n(Ow(void 0))}),[t,n,i]),null},Hj={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},Vj=Ha({name:"brush",initialState:Hj,reducers:{setBrushSettings:(e,t)=>null==t.payload?Hj:t.payload}}),{setBrushSettings:qj}=Vj.actions,Yj=Vj.reducer;class Gj{static create(e){return new Gj(e)}constructor(e){this.scale=e}get domain(){return this.scale.domain}get range(){return this.scale.range}get rangeMin(){return this.range()[0]}get rangeMax(){return this.range()[1]}get bandwidth(){return this.scale.bandwidth}apply(e){var{bandAware:t,position:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==e){if(r)switch(r){case"start":default:return this.scale(e);case"middle":var n=this.bandwidth?this.bandwidth()/2:0;return this.scale(e)+n;case"end":var i=this.bandwidth?this.bandwidth():0;return this.scale(e)+i}if(t){var a=this.bandwidth?this.bandwidth()/2:0;return this.scale(e)+a}return this.scale(e)}}isInRange(e){var t=this.range(),r=t[0],n=t[t.length-1];return r<=n?e>=r&&e<=n:e>=n&&e<=r}}Kj=Gj,Uj=1e-4,Wj=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(Fj="EPS","string"),(Fj="symbol"==typeof Wj?Wj:Wj+"")in Kj?Object.defineProperty(Kj,Fj,{value:Uj,enumerable:!0,configurable:!0,writable:!0}):Kj[Fj]=Uj;var Xj=Ha({name:"referenceElements",initialState:{dots:[],areas:[],lines:[]},reducers:{addDot:(e,t)=>{e.dots.push(t.payload)},removeDot:(e,t)=>{var r=ja(e).dots.findIndex(e=>e===t.payload);-1!==r&&e.dots.splice(r,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var r=ja(e).areas.findIndex(e=>e===t.payload);-1!==r&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(t.payload)},removeLine:(e,t)=>{var r=ja(e).lines.findIndex(e=>e===t.payload);-1!==r&&e.lines.splice(r,1)}}}),{addDot:Zj,removeDot:Qj,addArea:Jj,removeArea:eE,addLine:tE,removeLine:rE}=Xj.actions,nE=Xj.reducer,iE=r.createContext(void 0),aE=e=>{var{children:t}=e,[n]=r.useState("".concat(it("recharts"),"-clip")),i=xj();if(null==i)return null;var{x:a,y:o,width:c,height:l}=i;return r.createElement(iE.Provider,{value:n},r.createElement("defs",null,r.createElement("clipPath",{id:n},r.createElement("rect",{x:a,y:o,height:l,width:c}))),t)};function oE(e,t){if(t<1)return[];if(1===t)return e;for(var r=[],n=0;ne*i)return!1;var a=r();return e*(t-e*a/2-n)>=0&&e*(t+e*a/2-i)<=0}function lE(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function uE(e){for(var t=1;t{var i="function"==typeof s?s(e.value,n):e.value;return"width"===h?function(e,t,r){return function(e){var{width:t,height:r}=e,n=function(e){return(e%180+180)%180}(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0),i=n*Math.PI/180,a=Math.atan(r/t),o=i>a&&i=2?Qe(a[1].coordinate-a[0].coordinate):1,m=function(e,t,r){var n="width"===r,{x:i,y:a,width:o,height:c}=e;return 1===t?{start:n?i:a,end:n?i+o:a+c}:{start:n?i+o:a+c,end:n?i:a}}(o,g,h);return"equidistantPreserveStart"===u?function(e,t,r,n,i){for(var a,o=(n||[]).slice(),{start:c,end:l}=t,u=0,s=1,f=c,d=function(){var t=null==n?void 0:n[u];if(void 0===t)return{v:oE(n,s)};var a,o=u,d=()=>(void 0===a&&(a=r(t,o)),a),p=t.coordinate,h=0===u||cE(e,p,d,f,l);h||(u=0,f=c,s+=1),h&&(f=p+e*(d()/2+i),u+=s)};s<=o.length;)if(a=d())return a.v;return[]}(g,m,v,a,c):(p="preserveStart"===u||"preserveStartEnd"===u?function(e,t,r,n,i,a){var o=(n||[]).slice(),c=o.length,{start:l,end:u}=t;if(a){var s=n[c-1],f=r(s,c-1),d=e*(s.coordinate+e*f/2-u);o[c-1]=s=uE(uE({},s),{},{tickCoord:d>0?s.coordinate-d*e:s.coordinate}),null!=s.tickCoord&&cE(e,s.tickCoord,()=>f,l,u)&&(u=s.tickCoord-e*(f/2+i),o[c-1]=uE(uE({},s),{},{isShow:!0}))}for(var p=a?c-1:c,h=function(t){var n,a=o[t],c=()=>(void 0===n&&(n=r(a,t)),n);if(0===t){var s=e*(a.coordinate-e*c()/2-l);o[t]=a=uE(uE({},a),{},{tickCoord:s<0?a.coordinate-s*e:a.coordinate})}else o[t]=a=uE(uE({},a),{},{tickCoord:a.coordinate});null!=a.tickCoord&&cE(e,a.tickCoord,c,l,u)&&(l=a.tickCoord+e*(c()/2+i),o[t]=uE(uE({},a),{},{isShow:!0}))},y=0;y(void 0===n&&(n=r(u,t)),n);if(t===o-1){var f=e*(u.coordinate+e*s()/2-l);a[t]=u=uE(uE({},u),{},{tickCoord:f>0?u.coordinate-f*e:u.coordinate})}else a[t]=u=uE(uE({},u),{},{tickCoord:u.coordinate});null!=u.tickCoord&&cE(e,u.tickCoord,s,c,l)&&(l=u.tickCoord-e*(s()/2+i),a[t]=uE(uE({},u),{},{isShow:!0}))},s=o-1;s>=0;s--)u(s);return a}(g,m,v,a,c),p.filter(e=>e.isShow))}var dE=["axisLine","width","height","className","hide","ticks","axisType"];function pE(){return pE=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{ticks:n=[],tick:i,tickLine:a,stroke:o,tickFormatter:c,unit:l,padding:u,tickTextProps:f,orientation:d,mirror:p,x:h,y:y,width:m,height:b,tickSize:x,tickMargin:w,fontSize:O,letterSpacing:P,getTicksConfig:E,events:A,axisType:S}=e,k=fE(yE(yE({},E),{},{ticks:n}),O,P),_=function(e,t){switch(e){case"left":return t?"start":"end";case"right":return t?"end":"start";default:return"middle"}}(d,p),M=function(e,t){switch(e){case"left":case"right":return"middle";case"top":return t?"start":"end";default:return t?"end":"start"}}(d,p),T=v(E),C=g(i),I={};"object"==typeof a&&(I=a);var D=yE(yE({},T),{},{fill:"none"},I),N=k.map(e=>yE({entry:e},function(e,t,r,n,i,a,o,c,l){var u,s,f,d,p,h,y=c?-1:1,v=e.tickSize||o,g=tt(e.tickCoord)?e.tickCoord:e.coordinate;switch(a){case"top":u=s=e.coordinate,h=(f=(d=r+ +!c*i)-y*v)-y*l,p=g;break;case"left":f=d=e.coordinate,p=(u=(s=t+ +!c*n)-y*v)-y*l,h=g;break;case"right":f=d=e.coordinate,p=(u=(s=t+ +c*n)+y*v)+y*l,h=g;break;default:u=s=e.coordinate,h=(f=(d=r+ +c*i)+y*v)+y*l,p=g}return{line:{x1:u,y1:f,x2:s,y2:d},tick:{x:p,y:h}}}(e,h,y,m,b,d,x,p,w))),z=N.map(e=>{var{entry:t,line:n}=e;return r.createElement(j,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(t.value,"-").concat(t.coordinate,"-").concat(t.tickCoord)},a&&r.createElement("line",pE({},D,n,{className:s("recharts-cartesian-axis-tick-line",Ze(a,"className"))})))}),R=N.map((e,t)=>{var{entry:n,tick:a}=e,s=yE(yE(yE(yE({textAnchor:_,verticalAnchor:M},T),{},{stroke:"none",fill:o},C),a),{},{index:t,payload:n,visibleTicksCount:k.length,tickFormatter:c,padding:u},f);return r.createElement(j,pE({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(n.value,"-").concat(n.coordinate,"-").concat(n.tickCoord)},Pt(A,n,t)),i&&r.createElement(bE,{option:i,tickProps:s,value:"".concat("function"==typeof c?c(n.value,t):n.value).concat(l||"")}))});return r.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(S,"-ticks")},R.length>0&&r.createElement(tw,{zIndex:Ov.label},r.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(S,"-tick-labels"),ref:t},R)),z.length>0&&r.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(S,"-tick-lines")},z))}),wE=r.forwardRef((e,t)=>{var{axisLine:n,width:i,height:a,className:o,hide:c,ticks:l,axisType:u}=e,f=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({getCalculatedWidth:()=>{var t;return(e=>{var{ticks:t,label:r,labelGapWithTick:n=5,tickSize:i=0,tickMargin:a=0}=e,o=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.width>o&&(o=t.width)}});var c=r?r.getBoundingClientRect().width:0,l=o+(i+a)+c+(r?n:0);return Math.round(l)}return 0})({ticks:g.current,label:null===(t=e.labelRef)||void 0===t?void 0:t.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var m=r.useCallback(e=>{if(e){var t=e.getElementsByClassName("recharts-cartesian-axis-tick-value");g.current=t;var r=t[0];if(r){var n=window.getComputedStyle(r),i=n.fontSize,a=n.letterSpacing;i===d&&a===h||(p(i),y(a))}}},[d,h]);return c||null!=i&&i<=0||null!=a&&a<=0?null:r.createElement(tw,{zIndex:e.zIndex},r.createElement(j,{className:s("recharts-cartesian-axis",o)},r.createElement(mE,{x:e.x,y:e.y,width:i,height:a,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:v(e)}),r.createElement(xE,{ref:m,axisType:u,events:f,fontSize:d,getTicksConfig:e,height:e.height,letterSpacing:h,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:l,unit:e.unit,width:e.width,x:e.x,y:e.y}),r.createElement(PO,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},r.createElement(MO,{label:e.label,labelRef:e.labelRef}),e.children)))}),OE=r.forwardRef((e,t)=>{var n=At(e,gE);return r.createElement(wE,pE({},n,{ref:t}))});OE.displayName="CartesianAxis";var PE=["x1","y1","x2","y2","key"],jE=["offset"],EE=["xAxisId","yAxisId"],AE=["xAxisId","yAxisId"];function SE(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function kE(e){for(var t=1;t{var{fill:t}=e;if(!t||"none"===t)return null;var{fillOpacity:n,x:i,y:a,width:o,height:c,ry:l}=e;return r.createElement("rect",{x:i,y:a,ry:l,width:o,height:c,stroke:"none",fill:t,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function IE(e){var t,{option:n,lineItemProps:i}=e;if(r.isValidElement(n))t=r.cloneElement(n,i);else if("function"==typeof n)t=n(i);else{var a,{x1:o,y1:c,x2:l,y2:u,key:s}=i,f=null!==(a=v(TE(i,PE)))&&void 0!==a?a:{},{offset:d}=f,p=TE(f,jE);t=r.createElement("line",ME({},p,{x1:o,y1:c,x2:l,y2:u,fill:"none",key:s}))}return t}function DE(e){var{x:t,width:n,horizontal:i=!0,horizontalPoints:a}=e;if(!i||!a||!a.length)return null;var{xAxisId:o,yAxisId:c}=e,l=TE(e,EE),u=a.map((e,a)=>{var o=kE(kE({},l),{},{x1:t,y1:e,x2:t+n,y2:e,key:"line-".concat(a),index:a});return r.createElement(IE,{key:"line-".concat(a),option:i,lineItemProps:o})});return r.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function NE(e){var{y:t,height:n,vertical:i=!0,verticalPoints:a}=e;if(!i||!a||!a.length)return null;var{xAxisId:o,yAxisId:c}=e,l=TE(e,AE),u=a.map((e,a)=>{var o=kE(kE({},l),{},{x1:e,y1:t,x2:e,y2:t+n,key:"line-".concat(a),index:a});return r.createElement(IE,{option:i,lineItemProps:o,key:"line-".concat(a)})});return r.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function zE(e){var{horizontalFill:t,fillOpacity:n,x:i,y:a,width:o,height:c,horizontalPoints:l,horizontal:u=!0}=e;if(!u||!t||!t.length||null==l)return null;var s=l.map(e=>Math.round(e+a-a)).sort((e,t)=>e-t);a!==s[0]&&s.unshift(0);var f=s.map((e,l)=>{var u=s[l+1]?s[l+1]-e:a+c-e;if(u<=0)return null;var f=l%t.length;return r.createElement("rect",{key:"react-".concat(l),y:e,x:i,height:u,width:o,stroke:"none",fill:t[f],fillOpacity:n,className:"recharts-cartesian-grid-bg"})});return r.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},f)}function RE(e){var{vertical:t=!0,verticalFill:n,fillOpacity:i,x:a,y:o,width:c,height:l,verticalPoints:u}=e;if(!t||!n||!n.length)return null;var s=u.map(e=>Math.round(e+a-a)).sort((e,t)=>e-t);a!==s[0]&&s.unshift(0);var f=s.map((e,t)=>{var u=s[t+1]?s[t+1]-e:a+c-e;if(u<=0)return null;var f=t%n.length;return r.createElement("rect",{key:"react-".concat(t),x:e,y:o,width:u,height:l,stroke:"none",fill:n[f],fillOpacity:i,className:"recharts-cartesian-grid-bg"})});return r.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},f)}var LE=(e,t)=>{var{xAxis:r,width:n,height:i,offset:a}=e;return Ro(fE(kE(kE(kE({},gE),r),{},{ticks:Lo(r),viewBox:{x:0,y:0,width:n,height:i}})),a.left,a.left+a.width,t)},BE=(e,t)=>{var{yAxis:r,width:n,height:i,offset:a}=e;return Ro(fE(kE(kE(kE({},gE),r),{},{ticks:Lo(r),viewBox:{x:0,y:0,width:n,height:i}})),a.top,a.top+a.height,t)},KE={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:Ov.grid};function FE(e){var t=Hc(),n=Vc(),i=$c(),a=kE(kE({},At(e,KE)),{},{x:tt(e.x)?e.x:i.left,y:tt(e.y)?e.y:i.top,width:tt(e.width)?e.width:i.width,height:tt(e.height)?e.height:i.height}),{xAxisId:o,yAxisId:c,x:l,y:u,width:s,height:f,syncWithTicks:d,horizontalValues:p,verticalValues:h}=a,y=pc(),v=kn(e=>$m(e,"xAxis",o,y)),g=kn(e=>$m(e,"yAxis",c,y));if(!(Tc(s)&&Tc(f)&&tt(l)&&tt(u)))return null;var m=a.verticalCoordinatesGenerator||LE,b=a.horizontalCoordinatesGenerator||BE,{horizontalPoints:x,verticalPoints:w}=a;if(!(x&&x.length||"function"!=typeof b)){var O=p&&p.length,P=b({yAxis:g?kE(kE({},g),{},{ticks:O?p:g.ticks}):void 0,width:null!=t?t:s,height:null!=n?n:f,offset:i},!!O||d);Pc(Array.isArray(P),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof P,"]")),Array.isArray(P)&&(x=P)}if(!(w&&w.length||"function"!=typeof m)){var j=h&&h.length,E=m({xAxis:v?kE(kE({},v),{},{ticks:j?h:v.ticks}):void 0,width:null!=t?t:s,height:null!=n?n:f,offset:i},!!j||d);Pc(Array.isArray(E),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof E,"]")),Array.isArray(E)&&(w=E)}return r.createElement(tw,{zIndex:a.zIndex},r.createElement("g",{className:"recharts-cartesian-grid"},r.createElement(CE,{fill:a.fill,fillOpacity:a.fillOpacity,x:a.x,y:a.y,width:a.width,height:a.height,ry:a.ry}),r.createElement(zE,ME({},a,{horizontalPoints:x})),r.createElement(RE,ME({},a,{verticalPoints:w})),r.createElement(DE,ME({},a,{offset:i,horizontalPoints:x,xAxis:v,yAxis:g})),r.createElement(NE,ME({},a,{offset:i,verticalPoints:w,xAxis:v,yAxis:g}))))}FE.displayName="CartesianGrid";var UE=(e,t,r,n)=>qm(e,"xAxis",t,n),WE=(e,t,r,n)=>Vm(e,"xAxis",t,n),$E=(e,t,r,n)=>qm(e,"yAxis",r,n),HE=(e,t,r,n)=>Vm(e,"yAxis",r,n),VE=Nn([qc,UE,$E,WE,HE],(e,t,r,n,i)=>zo(e,"xAxis")?Ho(t,n,!1):Ho(r,i,!1));function qE(e){return"line"===e.type}var YE=Nn([hg,(e,t,r,n,i)=>i],(e,t)=>e.filter(qE).find(e=>e.id===t)),GE=Nn([qc,UE,$E,WE,HE,YE,VE,Py],(e,t,r,n,i,a,o,c)=>{var{chartData:l,dataStartIndex:u,dataEndIndex:s}=c;if(null!=a&&null!=t&&null!=r&&null!=n&&null!=i&&0!==n.length&&0!==i.length&&null!=o&&("horizontal"===e||"vertical"===e)){var f,{dataKey:d,data:p}=a;if(null!=(f=null!=p&&p.length>0?p:null==l?void 0:l.slice(u,s+1)))return function(e){var{layout:t,xAxis:r,yAxis:n,xAxisTicks:i,yAxisTicks:a,dataKey:o,bandSize:c,displayedData:l}=e;return l.map((e,l)=>{var u=No(e,o);if("horizontal"===t)return{x:Uo({axis:r,ticks:i,bandSize:c,entry:e,index:l}),y:ut(u)?null:n.scale(u),value:u,payload:e};var s=ut(u)?null:r.scale(u),f=Uo({axis:n,ticks:a,bandSize:c,entry:e,index:l});return null==s||null==f?null:{x:s,y:f,value:u,payload:e}}).filter(Boolean)}({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:i,dataKey:d,bandSize:o,displayedData:f})}});function XE(e){var t=g(e);if(null!=t){var{r:r,strokeWidth:n}=t,i=Number(r),a=Number(n);return(Number.isNaN(i)||i<0)&&(i=3),(Number.isNaN(a)||a<0)&&(a=2),{r:i,strokeWidth:a}}return{r:3,strokeWidth:2}}var ZE=["id"],QE=["type","layout","connectNulls","needClip","shape"],JE=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function eA(){return eA=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:r,stroke:n,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:n,value:qo(r,t),payload:e}]},oA=r.memo(e=>{var{dataKey:t,data:n,stroke:i,strokeWidth:a,fill:o,name:c,hide:l,unit:u,tooltipType:s}=e,f={dataDefinedOnItem:n,positions:void 0,settings:{stroke:i,strokeWidth:a,fill:o,dataKey:t,nameKey:void 0,name:qo(c,t),hide:l,type:s,color:i,unit:u}};return r.createElement(NP,{tooltipEntrySettings:f})}),cA=(e,t)=>"".concat(t,"px ").concat(e-t,"px");function lA(e,t){for(var r=e.length%2!=0?[...e,0]:e,n=[],i=0;inull==i?void 0:i.map(e=>{var t,r,n={x:null!==(t=e.x)&&void 0!==t?t:0,y:null!==(r=e.y)&&void 0!==r?r:0,width:0,lowerWidth:0,upperWidth:0,height:0};return rA(rA({},n),{},{value:e.value,payload:e.payload,viewBox:n,parentViewBox:void 0,fill:void 0})}),[i]);return r.createElement(GO,{value:t?a:void 0},n)}function fA(e){var{clipPathId:t,pathRef:n,points:i,strokeDasharray:a,props:o}=e,{type:c,layout:l,connectNulls:u,needClip:s,shape:f}=o,d=rA(rA({},m(iA(o,QE))),{},{fill:"none",className:"recharts-line-curve",clipPath:s?"url(#clipPath-".concat(t,")"):void 0,points:i,type:c,layout:l,connectNulls:u,strokeDasharray:null!=a?a:o.strokeDasharray});return r.createElement(r.Fragment,null,(null==i?void 0:i.length)>1&&r.createElement(DP,eA({shapeType:"curve",option:f},d,{pathRef:n})),r.createElement(uA,{points:i,clipPathId:t,props:o}))}function dA(e){var{clipPathId:t,props:n,pathRef:i,previousPointsRef:a,longestAnimatedLengthRef:o}=e,{points:c,strokeDasharray:l,isAnimationActive:u,animationBegin:s,animationDuration:f,animationEasing:d,animateNewValues:p,width:h,height:y,onAnimationEnd:v,onAnimationStart:g}=n,m=a.current,b=os(c,"recharts-line-"),x=r.useRef(b),[w,O]=r.useState(!1),P=!w,j=r.useCallback(()=>{"function"==typeof v&&v(),O(!1)},[v]),E=r.useCallback(()=>{"function"==typeof g&&g(),O(!0)},[g]),A=function(e){try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch(t){return 0}}(i.current),S=r.useRef(0);x.current!==b&&(S.current=o.current,x.current=b);var k=S.current;return r.createElement(sA,{points:c,showLabels:P},n.children,r.createElement(as,{animationId:b,begin:s,duration:f,isActive:u,easing:d,onAnimationEnd:j,onAnimationStart:E,key:b},e=>{var s,f=ct(k,A+k,e),d=Math.min(f,A);if(u)if(l){var v="".concat(l).split(/[,\s]+/gim).map(e=>parseFloat(e));s=((e,t,r)=>{var n=r.reduce((e,t)=>e+t);if(!n)return cA(t,e);for(var i=Math.floor(e/n),a=e%n,o=t-e,c=[],l=0,u=0;la){c=[...r.slice(0,l),a-u];break}var s=c.length%2==0?[0,o]:[o];return[...lA(r,i),...c,...s].map(e=>"".concat(e,"px")).join(", ")})(d,A,v)}else s=cA(A,d);else s=null==l?void 0:String(l);if(e>0&&A>0&&(a.current=c,o.current=Math.max(o.current,d)),m){var g=m.length/c.length,b=1===e?c:c.map((t,r)=>{var n=Math.floor(r*g);if(m[n]){var i=m[n];return rA(rA({},t),{},{x:ct(i.x,t.x,e),y:ct(i.y,t.y,e)})}return rA(rA({},t),{},p?{x:ct(2*h,t.x,e),y:ct(y/2,t.y,e)}:{x:t.x,y:t.y})});return a.current=b,r.createElement(fA,{props:n,points:b,clipPathId:t,pathRef:i,strokeDasharray:s})}return r.createElement(fA,{props:n,points:c,clipPathId:t,pathRef:i,strokeDasharray:s})}),r.createElement(QO,{label:n.label}))}function pA(e){var{clipPathId:t,props:n}=e,i=r.useRef(null),a=r.useRef(0),o=r.useRef(null);return r.createElement(dA,{props:n,clipPathId:t,previousPointsRef:i,longestAnimatedLengthRef:a,pathRef:o})}var hA=(e,t)=>{var r,n;return{x:null!==(r=e.x)&&void 0!==r?r:void 0,y:null!==(n=e.y)&&void 0!==n?n:void 0,value:e.value,errorVal:No(e.payload,t)}};class yA extends r.Component{render(){var{hide:e,dot:t,points:n,className:i,xAxisId:a,yAxisId:o,top:c,left:l,width:u,height:f,id:d,needClip:p,zIndex:h}=this.props;if(e)return null;var y=s("recharts-line",i),v=d,{r:g,strokeWidth:m}=XE(t),b=yP(t),x=2*g+m,w=p?"url(#clipPath-".concat(b?"":"dots-").concat(v,")"):void 0;return r.createElement(tw,{zIndex:h},r.createElement(j,{className:y},p&&r.createElement("defs",null,r.createElement(zj,{clipPathId:v,xAxisId:a,yAxisId:o}),!b&&r.createElement("clipPath",{id:"clipPath-dots-".concat(v)},r.createElement("rect",{x:l-x/2,y:c-x/2,width:u+x,height:f+x}))),r.createElement(Dj,{xAxisId:a,yAxisId:o,data:n,dataPointFormatter:hA,errorBarOffset:0},r.createElement(pA,{props:this.props,clipPathId:v}))),r.createElement(Ej,{activeDot:this.props.activeDot,points:n,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}}var vA={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:Ov.line,type:"linear"};function gA(e){var t=At(e,vA),{activeDot:n,animateNewValues:i,animationBegin:a,animationDuration:o,animationEasing:c,connectNulls:l,dot:u,hide:s,isAnimationActive:f,label:d,legendType:p,xAxisId:h,yAxisId:y,id:v}=t,g=iA(t,JE),{needClip:m}=Nj(h,y),b=xj(),x=Yc(),w=pc(),O=kn(e=>GE(e,h,y,w,v));if("horizontal"!==x&&"vertical"!==x||null==O||null==b)return null;var{height:P,width:j,x:E,y:A}=b;return r.createElement(yA,eA({},g,{id:v,connectNulls:l,dot:u,activeDot:n,animateNewValues:i,animationBegin:a,animationDuration:o,animationEasing:c,isAnimationActive:f,hide:s,label:d,legendType:p,xAxisId:h,yAxisId:y,points:O,layout:x,height:P,width:j,left:E,top:A,needClip:m}))}function mA(e){var t=At(e,vA),n=pc();return r.createElement(KP,{id:t.id,type:"line"},e=>r.createElement(r.Fragment,null,r.createElement(zP,{legendPayload:aA(t)}),r.createElement(oA,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType}),r.createElement(GP,{type:"line",id:e,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:n}),r.createElement(gA,eA({},t,{id:e}))))}var bA=r.memo(mA,Bj);bA.displayName="Line";var xA=(e,t,r,n)=>qm(e,"xAxis",t,n),wA=(e,t,r,n)=>Vm(e,"xAxis",t,n),OA=(e,t,r,n)=>qm(e,"yAxis",r,n),PA=(e,t,r,n)=>Vm(e,"yAxis",r,n),jA=Nn([qc,xA,OA,wA,PA],(e,t,r,n,i)=>zo(e,"xAxis")?Ho(t,n,!1):Ho(r,i,!1)),EA=Nn([hg,(e,t,r,n,i)=>i],(e,t)=>e.filter(e=>"area"===e.type).find(e=>e.id===t)),AA=Nn([qc,xA,OA,wA,PA,(e,t,r,n,i)=>{var a,o=EA(e,t,r,n,i);if(null!=o){var c,l=qc(e);if(null!=(c=zo(l,"xAxis")?Ng(e,"yAxis",r,n):Ng(e,"xAxis",t,n))){var{stackId:u}=o,s=Hv(o);if(null!=u&&null!=s){var f=null===(a=c[u])||void 0===a?void 0:a.stackedData;return null==f?void 0:f.find(e=>e.key===s)}}}},Py,jA,EA,e=>e.rootProps.baseValue],(e,t,r,n,i,a,o,c,l,u)=>{var{chartData:s,dataStartIndex:f,dataEndIndex:d}=o;if(null!=l&&("horizontal"===e||"vertical"===e)&&null!=t&&null!=r&&null!=n&&null!=i&&0!==n.length&&0!==i.length&&null!=c){var p,{data:h}=l;if(null!=(p=h&&h.length>0?h:null==s?void 0:s.slice(f,d+1)))return function(e){var t,{areaSettings:{connectNulls:r,baseValue:n,dataKey:i},stackedData:a,layout:o,chartBaseValue:c,xAxis:l,yAxis:u,displayedData:s,dataStartIndex:f,xAxisTicks:d,yAxisTicks:p,bandSize:h}=e,y=a&&a.length,v=YA(o,c,n,l,u),g="horizontal"===o,m=!1,b=s.map((e,t)=>{var n;y?n=a[f+t]:(n=No(e,i),Array.isArray(n)?m=!0:n=[v,n]);var o=null==n[1]||y&&!r&&null==No(e,i);return g?{x:Uo({axis:l,ticks:d,bandSize:h,entry:e,index:t}),y:o?null:u.scale(n[1]),value:n,payload:e}:{x:o?null:l.scale(n[1]),y:Uo({axis:u,ticks:p,bandSize:h,entry:e,index:t}),value:n,payload:e}});return t=y||m?b.map(e=>{var t=Array.isArray(e.value)?e.value[0]:null;return g?{x:e.x,y:null!=t&&null!=e.y?u.scale(t):null,payload:e.payload}:{x:null!=t?l.scale(t):null,y:e.y,payload:e.payload}}):g?u.scale(v):l.scale(v),{points:b,baseLine:t,isRange:m}}({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:i,dataStartIndex:f,areaSettings:l,stackedData:a,displayedData:p,chartBaseValue:u,bandSize:c})}}),SA=["id"],kA=["activeDot","animationBegin","animationDuration","animationEasing","connectNulls","dot","fill","fillOpacity","hide","isAnimationActive","legendType","stroke","xAxisId","yAxisId"];function _A(){return _A=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:r,stroke:n,fill:i,legendType:a,hide:o}=e;return[{inactive:o,dataKey:t,type:a,color:DA(n,i),value:qo(r,t),payload:e}]},zA=r.memo(e=>{var{dataKey:t,data:n,stroke:i,strokeWidth:a,fill:o,name:c,hide:l,unit:u,tooltipType:s}=e,f={dataDefinedOnItem:n,positions:void 0,settings:{stroke:i,strokeWidth:a,fill:o,dataKey:t,nameKey:void 0,name:qo(c,t),hide:l,type:s,color:DA(i,o),unit:u}};return r.createElement(NP,{tooltipEntrySettings:f})});function RA(e){var{clipPathId:t,points:n,props:i}=e,{needClip:a,dot:o,dataKey:c}=i,l=v(i);return r.createElement(rj,{points:n,dot:o,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:c,baseProps:l,needClip:a,clipPathId:t})}function LA(e){var{showLabels:t,children:n,points:i}=e,a=i.map(e=>{var t,r,n={x:null!==(t=e.x)&&void 0!==t?t:0,y:null!==(r=e.y)&&void 0!==r?r:0,width:0,lowerWidth:0,upperWidth:0,height:0};return CA(CA({},n),{},{value:e.value,payload:e.payload,parentViewBox:void 0,viewBox:n,fill:void 0})});return r.createElement(GO,{value:t?a:void 0},n)}function BA(e){var{points:t,baseLine:n,needClip:i,clipPathId:a,props:o}=e,{layout:c,type:l,stroke:u,connectNulls:s,isRange:f}=o,{id:d}=o,p=MA(o,SA),h=v(p),y=m(p);return r.createElement(r.Fragment,null,(null==t?void 0:t.length)>1&&r.createElement(j,{clipPath:i?"url(#clipPath-".concat(a,")"):void 0},r.createElement(Su,_A({},y,{id:d,points:t,connectNulls:s,type:l,baseLine:n,layout:c,stroke:"none",className:"recharts-area-area"})),"none"!==u&&r.createElement(Su,_A({},h,{className:"recharts-area-curve",layout:c,type:l,connectNulls:s,fill:"none",points:t})),"none"!==u&&f&&r.createElement(Su,_A({},h,{className:"recharts-area-curve",layout:c,type:l,connectNulls:s,fill:"none",points:n}))),r.createElement(RA,{points:t,props:p,clipPathId:a}))}function KA(e){var{alpha:t,baseLine:n,points:i,strokeWidth:a}=e,o=i[0].y,c=i[i.length-1].y;if(!Mc(o)||!Mc(c))return null;var l=t*Math.abs(o-c),u=Math.max(...i.map(e=>e.x||0));return tt(n)?u=Math.max(n,u):n&&Array.isArray(n)&&n.length&&(u=Math.max(...n.map(e=>e.x||0),u)),tt(u)?r.createElement("rect",{x:0,y:oe.y||0));return tt(n)?u=Math.max(n,u):n&&Array.isArray(n)&&n.length&&(u=Math.max(...n.map(e=>e.y||0),u)),tt(u)?r.createElement("rect",{x:o({points:c,baseLine:l}),[c,l]),"recharts-area-"),v=(()=>{var e=Yc();if("horizontal"===e||"vertical"===e)return e})(),[g,m]=r.useState(!1),b=!g,x=r.useCallback(()=>{"function"==typeof h&&h(),m(!1)},[h]),w=r.useCallback(()=>{"function"==typeof p&&p(),m(!0)},[p]);if(null==v)return null;var O=a.current,P=o.current;return r.createElement(LA,{showLabels:b,points:c},i.children,r.createElement(as,{animationId:y,begin:s,duration:f,isActive:u,easing:d,onAnimationEnd:x,onAnimationStart:w,key:y},e=>{if(O){var s,f=O.length/c.length,d=1===e?c:c.map((t,r)=>{var n=Math.floor(r*f);if(O[n]){var i=O[n];return CA(CA({},t),{},{x:ct(i.x,t.x,e),y:ct(i.y,t.y,e)})}return t});return s=tt(l)?ct(P,l,e):ut(l)||Je(l)?ct(P,0,e):l.map((t,r)=>{var n=Math.floor(r*f);if(Array.isArray(P)&&P[n]){var i=P[n];return CA(CA({},t),{},{x:ct(i.x,t.x,e),y:ct(i.y,t.y,e)})}return t}),e>0&&(a.current=d,o.current=s),r.createElement(BA,{points:d,baseLine:s,needClip:t,clipPathId:n,props:i})}return e>0&&(a.current=c,o.current=l),r.createElement(j,null,u&&r.createElement("defs",null,r.createElement("clipPath",{id:"animationClipPath-".concat(n)},r.createElement(UA,{alpha:e,points:c,baseLine:l,layout:v,strokeWidth:i.strokeWidth}))),r.createElement(j,{clipPath:"url(#animationClipPath-".concat(n,")")},r.createElement(BA,{points:c,baseLine:l,needClip:t,clipPathId:n,props:i})))}),r.createElement(QO,{label:i.label}))}function $A(e){var{needClip:t,clipPathId:n,props:i}=e,a=r.useRef(null),o=r.useRef();return r.createElement(WA,{needClip:t,clipPathId:n,props:i,previousPointsRef:a,previousBaselineRef:o})}class HA extends r.PureComponent{render(){var{hide:e,dot:t,points:n,className:i,top:a,left:o,needClip:c,xAxisId:l,yAxisId:u,width:f,height:d,id:p,baseLine:h,zIndex:y}=this.props;if(e)return null;var v=s("recharts-area",i),g=p,{r:m,strokeWidth:b}=XE(t),x=yP(t),w=2*m+b,O=c?"url(#clipPath-".concat(x?"":"dots-").concat(g,")"):void 0;return r.createElement(tw,{zIndex:y},r.createElement(j,{className:v},c&&r.createElement("defs",null,r.createElement(zj,{clipPathId:g,xAxisId:l,yAxisId:u}),!x&&r.createElement("clipPath",{id:"clipPath-dots-".concat(g)},r.createElement("rect",{x:o-w/2,y:a-w/2,width:f+w,height:d+w}))),r.createElement($A,{needClip:c,clipPathId:g,props:this.props})),r.createElement(Ej,{points:n,mainColor:DA(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:O}),this.props.isRange&&Array.isArray(h)&&r.createElement(Ej,{points:h,mainColor:DA(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:O}))}}var VA={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,xAxisId:0,yAxisId:0,zIndex:Ov.area};function qA(e){var t,n=At(e,VA),{activeDot:i,animationBegin:a,animationDuration:o,animationEasing:c,connectNulls:l,dot:u,fill:s,fillOpacity:f,hide:d,isAnimationActive:p,legendType:h,stroke:y,xAxisId:v,yAxisId:g}=n,m=MA(n,kA),b=Yc(),x=_x(),{needClip:w}=Nj(v,g),O=pc(),{points:P,isRange:j,baseLine:E}=null!==(t=kn(t=>AA(t,v,g,O,e.id)))&&void 0!==t?t:{},A=xj();if("horizontal"!==b&&"vertical"!==b||null==A)return null;if("AreaChart"!==x&&"ComposedChart"!==x)return null;var{height:S,width:k,x:_,y:M}=A;return P&&P.length?r.createElement(HA,_A({},m,{activeDot:i,animationBegin:a,animationDuration:o,animationEasing:c,baseLine:E,connectNulls:l,dot:u,fill:s,fillOpacity:f,height:S,hide:d,layout:b,isAnimationActive:"auto"===p?!ts:p,isRange:j,legendType:h,needClip:w,points:P,stroke:y,width:k,left:_,top:M,xAxisId:v,yAxisId:g})):null}var YA=(e,t,r,n,i)=>{var a=null!=r?r:t;if(tt(a))return a;var o="horizontal"===e?i:n,c=o.scale.domain();if("number"===o.type){var l=Math.max(c[0],c[1]),u=Math.min(c[0],c[1]);return"dataMin"===a?u:"dataMax"===a||l<0?l:Math.max(Math.min(c[0],c[1]),0)}return"dataMin"===a?c[0]:"dataMax"===a?c[1]:c[0]};function GA(e){var t=At(e,VA),n=pc();return r.createElement(KP,{id:t.id,type:"area"},e=>{return r.createElement(r.Fragment,null,r.createElement(zP,{legendPayload:NA(t)}),r.createElement(zA,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType}),r.createElement(GP,{type:"area",id:e,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:(i=t.stackId,null==i?void 0:String(i)),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:n,connectNulls:t.connectNulls}),r.createElement(qA,_A({},t,{id:e})));var i})}var XA=r.memo(GA,Bj);XA.displayName="Area";var ZA=["domain","range"],QA=["domain","range"];function JA(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{null===n.current?t(cj(e)):n.current!==e&&t(lj({prev:n.current,next:e})),n.current=e},[e,t]),r.useLayoutEffect(()=>()=>{n.current&&(t(uj(n.current)),n.current=null)},[t]),null}var cS=e=>{var{xAxisId:t,className:n}=e,i=kn(fc),a=pc(),o="xAxis",c=kn(e=>Sm(e,o,t,a)),l=kn(e=>Hm(e,o,t,a)),u=kn(e=>Dm(e,t)),f=kn(e=>Rm(e,t)),d=kn(e=>ng(e,t));if(null==u||null==f||null==d)return null;var{dangerouslySetInnerHTML:p,ticks:h}=e,y=aS(e,rS),{id:v}=d,g=aS(d,nS);return r.createElement(OE,iS({},y,g,{scale:c,x:f.x,y:f.y,width:u.width,height:u.height,className:s("recharts-".concat(o," ").concat(o),n),viewBox:i,ticks:l,axisType:o}))},lS={allowDataOverflow:rg.allowDataOverflow,allowDecimals:rg.allowDecimals,allowDuplicatedCategory:rg.allowDuplicatedCategory,angle:rg.angle,axisLine:gE.axisLine,height:rg.height,hide:!1,includeHidden:rg.includeHidden,interval:rg.interval,minTickGap:rg.minTickGap,mirror:rg.mirror,orientation:rg.orientation,padding:rg.padding,reversed:rg.reversed,scale:rg.scale,tick:rg.tick,tickCount:rg.tickCount,tickLine:gE.tickLine,tickSize:gE.tickSize,type:rg.type,xAxisId:0},uS=e=>{var t=At(e,lS);return r.createElement(r.Fragment,null,r.createElement(oS,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit}),r.createElement(cS,t))},sS=r.memo(uS,tS);sS.displayName="XAxis";var fS=["dangerouslySetInnerHTML","ticks"],dS=["id"];function pS(){return pS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{null===n.current?t(sj(e)):n.current!==e&&t(fj({prev:n.current,next:e})),n.current=e},[e,t]),r.useLayoutEffect(()=>()=>{n.current&&(t(dj(n.current)),n.current=null)},[t]),null}var vS=e=>{var{yAxisId:t,className:n,width:i,label:a}=e,o=r.useRef(null),c=r.useRef(null),l=kn(fc),u=pc(),f=jn(),d="yAxis",p=kn(e=>Sm(e,d,t,u)),h=kn(e=>Bm(e,t)),y=kn(e=>Lm(e,t)),v=kn(e=>Hm(e,d,t,u)),g=kn(e=>og(e,t));if(r.useLayoutEffect(()=>{if("auto"===i&&h&&!AO(a)&&!r.isValidElement(a)&&null!=g){var e=o.current;if(e){var n=e.getCalculatedWidth();Math.round(h.width)!==Math.round(n)&&f(vj({id:t,width:n}))}}},[v,h,f,a,t,i,g]),null==h||null==y||null==g)return null;var{dangerouslySetInnerHTML:m,ticks:b}=e,x=hS(e,fS),{id:w}=g,O=hS(g,dS);return r.createElement(OE,pS({},x,O,{ref:o,labelRef:c,scale:p,x:y.x,y:y.y,tickTextProps:"auto"===i?{width:void 0}:{width:i},width:h.width,height:h.height,className:s("recharts-".concat(d," ").concat(d),n),viewBox:l,ticks:v,axisType:d}))},gS={allowDataOverflow:ag.allowDataOverflow,allowDecimals:ag.allowDecimals,allowDuplicatedCategory:ag.allowDuplicatedCategory,angle:ag.angle,axisLine:gE.axisLine,hide:!1,includeHidden:ag.includeHidden,interval:ag.interval,minTickGap:ag.minTickGap,mirror:ag.mirror,orientation:ag.orientation,padding:ag.padding,reversed:ag.reversed,scale:ag.scale,tick:ag.tick,tickCount:ag.tickCount,tickLine:gE.tickLine,tickSize:gE.tickSize,type:ag.type,width:ag.width,yAxisId:0},mS=e=>{var t=At(e,gS);return r.createElement(r.Fragment,null,r.createElement(yS,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter}),r.createElement(vS,t))},bS=r.memo(mS,tS);bS.displayName="YAxis";var xS={begin:0,duration:1e3,easing:"ease",isActive:!0,canBegin:!0,onAnimationEnd:()=>{},onAnimationStart:()=>{}};function wS(e){var t=At(e,xS),{animationId:n,from:i,to:a,attributeName:o,isActive:c,canBegin:l,duration:u,easing:s,begin:f,onAnimationEnd:d,onAnimationStart:p,children:h}=t,y="auto"===c?!ts:c,v=es(n+o,t.animationManager),[g,m]=r.useState(()=>y?i:a),b=r.useRef(!1),x=r.useCallback(()=>{m(i),p()},[i,p]);return r.useEffect(()=>{if(!y||!l)return dt;b.current=!0;var e=v.subscribe(m);return v.start([x,f,a,u,d]),()=>{v.stop(),e&&e(),d()}},[y,l,u,s,f,x,d,v,a,i]),y?l?b.current?h({transition:Ru([o],u,s),[o]:g}):h({[o]:i}):h({[o]:i}):h({[o]:a})}var OS=Nn([(e,t)=>t,qc,Uv,Xv,ix,lx,Ix,uc],(e,t,r,n,i,a,o,c)=>{if(e&&t&&n&&i&&a)return"horizontal"===t||"vertical"===t?((e,t,r,n,i,a,o)=>{if(e&&r&&n&&i&&function(e,t){var{chartX:r,chartY:n}=e;return r>=t.left&&r<=t.left+t.width&&n>=t.top&&n<=t.top+t.height}(e,o)){var c=((e,t)=>"horizontal"===t?e.chartX:"vertical"===t?e.chartY:void 0)(e,t),l=kx(c,a,i,r,n),u=((e,t,r,n)=>{var i=t.find(e=>e&&e.index===r);if(i){if("horizontal"===e)return{x:i.coordinate,y:n.chartY};if("vertical"===e)return{x:n.chartX,y:i.coordinate}}return{x:0,y:0}})(t,i,l,e);return{activeIndex:String(l),activeCoordinate:u}}})(e,t,n,i,a,o,c):((e,t,r,n,i,a,o)=>{if(e&&n&&i&&a&&r){var c=js(e,r);if(c){var l=((e,t)=>"centric"===t?e.angle:e.radius)(c,t),u=kx(l,o,a,n,i),s=((e,t,r,n)=>{var i=t.find(e=>e&&e.index===r);if(i){if("centric"===e){var a=i.coordinate,{radius:o}=n;return Ax(Ax(Ax({},n),Os(n.cx,n.cy,o,a)),{},{angle:a,radius:o})}var c=i.coordinate,{angle:l}=n;return Ax(Ax(Ax({},n),Os(n.cx,n.cy,c,l)),{},{angle:l,radius:c})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}})(t,a,u,c);return{activeIndex:String(u),activeCoordinate:s}}}})(e,t,r,n,i,a,o)}),PS=e=>{var t=e.currentTarget.getBoundingClientRect(),r=t.width/e.currentTarget.offsetWidth,n=t.height/e.currentTarget.offsetHeight;return{chartX:Math.round((e.clientX-t.left)/r),chartY:Math.round((e.clientY-t.top)/n)}},jS=Ta("mouseClick"),ES=Po();ES.startListening({actionCreator:jS,effect:(e,t)=>{var r=e.payload,n=OS(t.getState(),PS(r));null!=(null==n?void 0:n.activeIndex)&&t.dispatch(db({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var AS=Ta("mouseMove"),SS=Po(),kS=null;SS.startListening({actionCreator:AS,effect:(e,t)=>{var r=e.payload;null!==kS&&cancelAnimationFrame(kS);var n=PS(r);kS=requestAnimationFrame(()=>{var e=t.getState();if("axis"===Jm(e,e.tooltip.settings.shared)){var r=OS(e,n);null!=(null==r?void 0:r.activeIndex)?t.dispatch(fb({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate})):t.dispatch(ub())}kS=null})}});var _S={accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:"none",syncId:void 0,syncMethod:"index",baseValue:void 0,reverseStackOrder:!1},MS=Ha({name:"rootProps",initialState:_S,reducers:{updateOptions:(e,t)=>{var r;e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=null!==(r=t.payload.barGap)&&void 0!==r?r:_S.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),TS=MS.reducer,{updateOptions:CS}=MS.actions,IS=Ha({name:"polarOptions",initialState:null,reducers:{updatePolarOptions:(e,t)=>t.payload}}),{updatePolarOptions:DS}=IS.actions,NS=IS.reducer,zS=Ta("keyDown"),RS=Ta("focus"),LS=Po();LS.startListening({actionCreator:zS,effect:(e,t)=>{var r=t.getState();if(!1!==r.rootProps.accessibilityLayer){var{keyboardInteraction:n}=r.tooltip,i=e.payload;if("ArrowRight"===i||"ArrowLeft"===i||"Enter"===i){var a=xb(n,Nb(r),Cg(r),ex(r)),o=null==a?-1:Number(a);if(Number.isFinite(o)&&!(o<0)){var c=lx(r);if("Enter"!==i){var l=o+("ArrowRight"===i?1:-1)*("left-to-right"===Gm(r)?1:-1);if(!(null==c||l>=c.length||l<0)){var u=Rx(r,"axis","hover",String(l));t.dispatch(hb({active:!0,activeIndex:l.toString(),activeDataKey:void 0,activeCoordinate:u}))}}else{var s=Rx(r,"axis","hover",String(n.index));t.dispatch(hb({active:!n.active,activeIndex:n.index,activeDataKey:n.dataKey,activeCoordinate:s}))}}}}}}),LS.startListening({actionCreator:RS,effect:(e,t)=>{var r=t.getState();if(!1!==r.rootProps.accessibilityLayer){var{keyboardInteraction:n}=r.tooltip;if(!n.active&&null==n.index){var i=Rx(r,"axis","hover",String("0"));t.dispatch(hb({activeDataKey:void 0,active:!0,activeIndex:"0",activeCoordinate:i}))}}}});var BS=Ta("externalEvent"),KS=Po(),FS=new Map;KS.startListening({actionCreator:BS,effect:(e,t)=>{var{handler:r,reactEvent:n}=e.payload;if(null!=r){n.persist();var i=n.type,a=FS.get(i);void 0!==a&&cancelAnimationFrame(a);var o=requestAnimationFrame(()=>{try{var e=t.getState(),a={activeCoordinate:mx(e),activeDataKey:yx(e),activeIndex:px(e),activeLabel:hx(e),activeTooltipIndex:px(e),isTooltipActive:bx(e)};r(a,n)}finally{FS.delete(i)}});FS.set(i,o)}}});var US=Nn([jb],e=>e.tooltipItemPayloads),WS=Nn([US,Pb,(e,t,r)=>t,(e,t,r)=>r],(e,t,r,n)=>{var i=e.find(e=>e.settings.dataKey===n);if(null!=i){var{positions:a}=i;if(null!=a)return t(a,r)}}),$S=Ta("touchMove"),HS=Po();HS.startListening({actionCreator:$S,effect:(e,t)=>{var r=e.payload;if(null!=r.touches&&0!==r.touches.length){var n=t.getState(),i=Jm(n,n.tooltip.settings.shared);if("axis"===i){var a=OS(n,PS({clientX:r.touches[0].clientX,clientY:r.touches[0].clientY,currentTarget:r.currentTarget}));null!=(null==a?void 0:a.activeIndex)&&t.dispatch(fb({activeIndex:a.activeIndex,activeDataKey:void 0,activeCoordinate:a.activeCoordinate}))}else if("item"===i){var o,c=r.touches[0];if(null==document.elementFromPoint)return;var l=document.elementFromPoint(c.clientX,c.clientY);if(!l||!l.getAttribute)return;var u=l.getAttribute("data-recharts-item-index"),s=null!==(o=l.getAttribute("data-recharts-item-data-key"))&&void 0!==o?o:void 0,f=WS(t.getState(),u,s);t.dispatch(cb({activeDataKey:s,activeIndex:u,activeCoordinate:f}))}}}});var VS=yi({brush:Yj,cartesianAxis:gj,chartData:Ew,errorBars:Mj,graphicalItems:qP,layout:Mo,legend:Hl,options:mw,polarAxis:hP,polarOptions:NS,referenceElements:nE,rootProps:TS,tooltip:yb,zIndex:ew});function qS(e){var{preloadedState:t,children:n,reduxStoreName:i}=e,a=pc(),o=r.useRef(null);if(a)return n;null==o.current&&(o.current=function(e){return function(e){const t=function(e){const{thunk:t=!0,immutableCheck:r=!0,serializableCheck:n=!0,actionCreatorCheck:i=!0}=e??{};let a=new Ca;return t&&("boolean"==typeof t?a.push(ka):a.push(_a(t.extraArgument))),a},{reducer:r,middleware:n,devTools:i=!0,preloadedState:a,enhancers:o}=e||{};let c,l;if("function"==typeof r)c=r;else{if(!pi(r))throw new Error(jo(1));c=yi(r)}l="function"==typeof n?n(t):t();let u=vi;i&&(u=Ma({trace:!1,..."object"==typeof i&&i}));const s=function(...e){return t=>(r,n)=>{const i=t(r,n);let a=()=>{throw new Error(ui(15))};const o={getState:i.getState,dispatch:(e,...t)=>a(e,...t)},c=e.map(e=>e(o));return a=vi(...c)(i.dispatch),{...i,dispatch:a}}}(...l),f=(e=>function(t){const{autoBatch:r=!0}=t??{};let n=new Ca(e);return r&&n.push(La("object"==typeof r?r:void 0)),n})(s);return hi(c,a,u(..."function"==typeof o?o(f):f()))}({reducer:VS,preloadedState:e,middleware:e=>e({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes("es6")}).concat([ES.middleware,SS.middleware,LS.middleware,KS.middleware,HS.middleware]),enhancers:e=>{var t=e;return"function"==typeof e&&(t=e()),t.concat(La({type:"raf"}))},devTools:false})}(t));var l=On;return r.createElement(c,{context:l,store:o.current},n)}function YS(e){var{layout:t,margin:n}=e,i=jn(),a=pc();return r.useEffect(()=>{a||(i(So(t)),i(Ao(n)))},[i,a,t,n]),null}var GS=r.memo(YS,Bj);function XS(e){var t=jn();return r.useEffect(()=>{t(CS(e))},[t,e]),null}function ZS(e){var{zIndex:t,isPanorama:n}=e,i=LP("".concat(n?"recharts-zindex-panorama-":"recharts-zindex-").concat(t)),a=jn();return r.useLayoutEffect(()=>(a(Qx({zIndex:t,elementId:i,isPanorama:n})),()=>{a(Jx({zIndex:t,isPanorama:n}))}),[a,t,i,n]),r.createElement("g",{tabIndex:-1,id:i})}function QS(e){var{children:t,isPanorama:n}=e,i=kn(Wx);if(!i||0===i.length)return t;var a=i.filter(e=>e<0),o=i.filter(e=>e>0);return r.createElement(r.Fragment,null,a.map(e=>r.createElement(ZS,{key:e,zIndex:e,isPanorama:n})),t,o.map(e=>r.createElement(ZS,{key:e,zIndex:e,isPanorama:n})))}var JS=["children"];function ek(){return ek=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var n=Hc(),i=Vc(),a=gu();if(!Tc(n)||!Tc(i))return null;var o,c,{children:l,otherAttributes:u,title:s,desc:f}=e;return null!=u&&(o="number"==typeof u.tabIndex?u.tabIndex:a?0:void 0,c="string"==typeof u.role?u.role:a?"application":void 0),r.createElement(w,ek({},u,{title:s,desc:f,role:c,tabIndex:o,width:n,height:i,style:tk,ref:t}),l)}),nk=e=>{var{children:t}=e,n=kn(yc);if(!n)return null;var{width:i,height:a,y:o,x:c}=n;return r.createElement(w,{width:i,height:a,x:c,y:o},t)},ik=r.forwardRef((e,t)=>{var{children:n}=e,i=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n(Mw(),null);function sk(e){if("number"==typeof e)return e;if("string"==typeof e){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var fk=r.forwardRef((e,t)=>{var n,i,a=r.useRef(null),[o,c]=r.useState({containerWidth:sk(null===(n=e.style)||void 0===n?void 0:n.width),containerHeight:sk(null===(i=e.style)||void 0===i?void 0:i.height)}),l=r.useCallback((e,t)=>{c(r=>{var n=Math.round(e),i=Math.round(t);return r.containerWidth===n&&r.containerHeight===i?r:{containerWidth:n,containerHeight:i}})},[]),u=r.useCallback(e=>{if("function"==typeof t&&t(e),null!=e&&"undefined"!=typeof ResizeObserver){var{width:r,height:n}=e.getBoundingClientRect();l(r,n);var i=new ResizeObserver(e=>{var{width:t,height:r}=e[0].contentRect;l(t,r)});i.observe(e),a.current=i}},[t,l]);return r.useEffect(()=>()=>{var e=a.current;null!=e&&e.disconnect()},[l]),r.createElement(r.Fragment,null,r.createElement(Gc,{width:o.containerWidth,height:o.containerHeight}),r.createElement("div",lk({ref:u},e)))}),dk=r.forwardRef((e,t)=>{var{width:n,height:i}=e,[a,o]=r.useState({containerWidth:sk(n),containerHeight:sk(i)}),c=r.useCallback((e,t)=>{o(r=>{var n=Math.round(e),i=Math.round(t);return r.containerWidth===n&&r.containerHeight===i?r:{containerWidth:n,containerHeight:i}})},[]),l=r.useCallback(e=>{if("function"==typeof t&&t(e),null!=e){var{width:r,height:n}=e.getBoundingClientRect();c(r,n)}},[t,c]);return r.createElement(r.Fragment,null,r.createElement(Gc,{width:a.containerWidth,height:a.containerHeight}),r.createElement("div",lk({ref:l},e)))}),pk=r.forwardRef((e,t)=>{var{width:n,height:i}=e;return r.createElement(r.Fragment,null,r.createElement(Gc,{width:n,height:i}),r.createElement("div",lk({ref:t},e)))}),hk=r.forwardRef((e,t)=>{var{width:n,height:i}=e;return et(n)||et(i)?r.createElement(dk,lk({},e,{ref:t})):r.createElement(pk,lk({},e,{ref:t}))}),yk=r.forwardRef((e,t)=>{var{children:n,className:i,height:a,onClick:o,onContextMenu:c,onDoubleClick:l,onMouseDown:u,onMouseEnter:f,onMouseLeave:d,onMouseMove:p,onMouseUp:h,onTouchEnd:y,onTouchMove:v,onTouchStart:g,style:m,width:b,responsive:x,dispatchTouchEvents:w=!0}=e,O=r.useRef(null),P=jn(),[j,A]=r.useState(null),[S,k]=r.useState(null),_=function(){var e=jn(),[t,n]=r.useState(null),i=kn(Xo);return r.useEffect(()=>{if(null!=t){var r=t.getBoundingClientRect().width/t.offsetWidth;Mc(r)&&r!==i&&e(_o(r))}},[t,e,i]),n}(),M=Lc(),T=(null==M?void 0:M.width)>0?M.width:b,C=(null==M?void 0:M.height)>0?M.height:a,I=r.useCallback(e=>{_(e),"function"==typeof t&&t(e),A(e),k(e),null!=e&&(O.current=e)},[_,t,A,k]),D=r.useCallback(e=>{P(jS(e)),P(BS({handler:o,reactEvent:e}))},[P,o]),N=r.useCallback(e=>{P(AS(e)),P(BS({handler:f,reactEvent:e}))},[P,f]),z=r.useCallback(e=>{P(ub()),P(BS({handler:d,reactEvent:e}))},[P,d]),R=r.useCallback(e=>{P(AS(e)),P(BS({handler:p,reactEvent:e}))},[P,p]),L=r.useCallback(()=>{P(RS())},[P]),B=r.useCallback(e=>{P(zS(e.key))},[P]),K=r.useCallback(e=>{P(BS({handler:c,reactEvent:e}))},[P,c]),F=r.useCallback(e=>{P(BS({handler:l,reactEvent:e}))},[P,l]),U=r.useCallback(e=>{P(BS({handler:u,reactEvent:e}))},[P,u]),W=r.useCallback(e=>{P(BS({handler:h,reactEvent:e}))},[P,h]),$=r.useCallback(e=>{P(BS({handler:g,reactEvent:e}))},[P,g]),H=r.useCallback(e=>{w&&P($S(e)),P(BS({handler:v,reactEvent:e}))},[P,w,v]),V=r.useCallback(e=>{P(BS({handler:y,reactEvent:e}))},[P,y]),q=function(e){return!0===e?fk:hk}(x);return r.createElement(sw.Provider,{value:j},r.createElement(E.Provider,{value:S},r.createElement(q,{width:null!=T?T:null==m?void 0:m.width,height:null!=C?C:null==m?void 0:m.height,className:s("recharts-wrapper",i),style:ok({position:"relative",cursor:"default",width:T,height:C},m),onClick:D,onContextMenu:K,onDoubleClick:F,onFocus:L,onKeyDown:B,onMouseDown:U,onMouseEnter:N,onMouseLeave:z,onMouseMove:R,onMouseUp:W,onTouchEnd:V,onTouchMove:H,onTouchStart:$,ref:I},r.createElement(uk,null),n)))}),vk=["width","height","responsive","children","className","style","compact","title","desc"],gk=r.forwardRef((e,t)=>{var{width:n,height:i,responsive:a,children:o,className:c,style:l,compact:u,title:s,desc:f}=e,d=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;nr.createElement(wk,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Ok,tooltipPayloadSearcher:vw,categoricalChartProps:e,ref:t})),jk={},Ek={},Ak={};function Sk(){return bk||(bk=1,e=Ak,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isBuffer=function(e){return"undefined"!=typeof Buffer&&Buffer.isBuffer(e)}),Ak;var e}var kk,_k={};function Mk(){return kk||(kk=1,e=_k,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isPrototype=function(e){const t=null==e?void 0:e.constructor;return e===("function"==typeof t?t.prototype:Object.prototype)}),_k;var e}var Tk,Ck={};function Ik(){return Tk||(Tk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=zr();e.isTypedArray=function(e){return t.isTypedArray(e)}}(Ck)),Ck}var Dk,Nk,zk,Rk={},Lk={};function Bk(){return Dk||(Dk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Fs();e.toInteger=function(e){const r=t.toFinite(e),n=r%1;return n?r-n:r}}(Lk)),Lk}function Kk(){return Nk||(Nk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Bk();e.times=function(e,r){if((e=t.toInteger(e))<1||!Number.isSafeInteger(e))return[];const n=new Array(e);for(let t=0;t`${e}`),n=new Set(r);t.isBuffer(e)&&(n.add("offset"),n.add("parent")),i.isTypedArray(e)&&(n.add("buffer"),n.add("byteLength"),n.add("byteOffset"));const c=o(e).filter(e=>!n.has(e));return Array.isArray(e)?[...r,...c]:[...r.filter(t=>Object.hasOwn(e,t)),...c]}(e):r.isPrototype(e)?function(e){return o(e).filter(e=>"constructor"!==e)}(e):o(e);default:return o(Object(e))}}}(Ek)),Ek}var Uk,Wk={};function $k(){return Uk||(Uk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Ge(),r=Ie(),n=ze(),i=Be(),a=Ye();function o(e,n){const i=1===n.length?e:t.get(e,n.slice(0,-1)),a=n[n.length-1];if(void 0===(null==i?void 0:i[a]))return!0;if(r.isUnsafeProperty(a))return!1;try{return delete i[a],!0}catch{return!1}}e.unset=function(e,t){if(null==e)return!0;switch(typeof t){case"symbol":case"number":case"object":if(Array.isArray(t))return o(e,t);if("number"==typeof t?t=i.toKey(t):"object"==typeof t&&(t=Object.is(null==t?void 0:t.valueOf(),-0)?"-0":String(t)),r.isUnsafeProperty(t))return!1;if(void 0===(null==e?void 0:e[t]))return!0;try{return delete e[t],!0}catch{return!1}case"string":if(void 0===(null==e?void 0:e[t])&&n.isDeepKey(t))return o(e,a.toPath(t));if(r.isUnsafeProperty(t))return!1;try{return delete e[t],!0}catch{return!1}}}}(Wk)),Wk}var Hk,Vk={};function qk(){return Hk||(Hk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=jr();e.getSymbolsIn=function(e){const r=[];for(;e;)r.push(...t.getSymbols(e)),e=Object.getPrototypeOf(e);return r}}(Vk)),Vk}var Yk,Gk,Xk,Zk,Qk={};function Jk(){return Yk||(Yk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Yt();e.flatten=function(e,r=1){const n=[],i=Math.floor(r);if(!t.isArrayLike(e))return n;const a=(e,t)=>{for(let r=0;rArray.isArray(e)||a.isDeepKey(e))?function(e){const n={},a=[...r.keysIn(e),...i.getSymbolsIn(e)];for(let r=0;r{if(!c.isPlainObject(e))return e})}return n}(e):function(e){const t={},n=[...r.keysIn(e),...i.getSymbolsIn(e)];for(let r=0;r{if(e&&t)return Ze(e,t)},u_={chartName:"Treemap",defaultTooltipEventType:"item",validateTooltipEventTypes:["item"],tooltipPayloadSearcher:l_,eventEmitter:void 0},s_=e=>{var t,{depth:r,node:n,index:i,dataKey:a,nameKey:o,nestedActiveTooltipIndex:c}=e,l=0===r?"":function(e){return"".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"","children[").concat(e,"]")}(i,c),{children:u}=n,s=r+1,f=u&&u.length?u.map((e,t)=>s_({depth:s,node:e,index:t,dataKey:a,nameKey:o,nestedActiveTooltipIndex:l})):null;return t=f&&f.length?f.reduce((e,t)=>e+t[c_],0):Je(n[a])||n[a]<=0?0:n[a],a_(a_({},n),{},{children:f,name:No(n,o,""),[c_]:t,depth:r,index:i,tooltipIndex:l})},f_=(e,t,r)=>{var n=t*t,i=e.area*e.area,{min:a,max:o}=e.reduce((e,t)=>({min:Math.min(e.min,t.area),max:Math.max(e.max,t.area)}),{min:1/0,max:0});return i?Math.max(n*o*r/i,i/(n*a*r)):1/0},d_=(e,t,r,n)=>t===r.width?((e,t,r,n)=>{var i=t?Math.round(e.area/t):0;(n||i>r.height)&&(i=r.height);for(var a,o=r.x,c=0,l=e.length;c{var i=t?Math.round(e.area/t):0;(n||i>r.width)&&(i=r.width);for(var a,o=r.y,c=0,l=e.length;c{var{children:r}=e;if(r&&r.length){var n,i,a=(e=>({x:e.x,y:e.y,width:e.width,height:e.height}))(e),o=[],c=1/0,l=Math.min(a.width,a.height),u=((e,t)=>{var r=t<0?0:t;return e.map(e=>{var t=e[c_]*r;return a_(a_({},e),{},{area:Je(t)||t<=0?0:t})})})(r,a.width*a.height/e[c_]),s=u.slice();for(o.area=0;s.length>0;){var f,d;o.push(n=s[0]),o.area+=n.area,(i=f_(o,l,t))<=c?(s.shift(),c=i):(o.area-=null!==(f=null===(d=o.pop())||void 0===d?void 0:d.area)&&void 0!==f?f:0,a=d_(o,l,a,!1),l=Math.min(a.width,a.height),o.length=o.area=0,c=1/0)}return o.length&&(a=d_(o,l,a,!0),o.length=o.area=0),a_(a_({},e),{},{children:u.map(e=>p_(e,t))})}return e},h_={aspectRatio:.5*(1+Math.sqrt(5)),dataKey:"value",nameKey:"name",type:"flat",isAnimationActive:"auto",isUpdateAnimationActive:"auto",animationBegin:0,animationDuration:1500,animationEasing:"linear"},y_={isAnimationFinished:!1,formatRoot:null,currentRoot:null,nestIndex:[],prevAspectRatio:h_.aspectRatio,prevDataKey:h_.dataKey};function v_(e){var{content:t,nodeProps:n,type:i,colorPanel:a,onMouseEnter:o,onMouseLeave:c,onClick:l}=e;if(r.isValidElement(t))return r.createElement(j,{onMouseEnter:o,onMouseLeave:c,onClick:l},r.cloneElement(t,n));if("function"==typeof t)return r.createElement(j,{onMouseEnter:o,onMouseLeave:c,onClick:l},t(n));var{x:u,y:s,width:f,height:d,index:p}=n,h=null;f>10&&d>10&&n.children&&"nest"===i&&(h=r.createElement(nP,{points:[{x:u+2,y:s+d/2},{x:u+6,y:s+d/2+3},{x:u+2,y:s+d/2+6}]}));var y=null,v=Hw(n.name);f>20&&d>20&&v.width{t(cb({activeIndex:e.nodeProps.tooltipIndex,activeDataKey:e.dataKey,activeCoordinate:n}))},onMouseLeave:()=>{},onClick:()=>{t(sb({activeIndex:e.nodeProps.tooltipIndex,activeDataKey:e.dataKey,activeCoordinate:n}))}}))}var m_=r.memo(e=>{var{dataKey:t,nameKey:n,stroke:i,fill:a,currentRoot:o}=e,c={dataDefinedOnItem:o,positions:void 0,settings:{stroke:i,strokeWidth:void 0,fill:a,dataKey:t,nameKey:n,name:void 0,hide:!1,type:void 0,color:a,unit:""}};return r.createElement(NP,{tooltipEntrySettings:c})}),b_={top:0,right:0,bottom:0,left:0};function x_(e){var{content:t,nodeProps:n,isLeaf:i,treemapProps:a,onNestClick:o}=e,{isAnimationActive:c,animationBegin:l,animationDuration:u,animationEasing:s,isUpdateAnimationActive:f,type:d,colorPanel:p,dataKey:h,onAnimationStart:y,onAnimationEnd:v,onMouseEnter:g,onClick:m,onMouseLeave:b}=a,{width:x,height:w,x:O,y:P}=n,E=-O-x,A=e=>{!i&&"nest"!==d||"function"!=typeof g||g(n,e)},S=e=>{!i&&"nest"!==d||"function"!=typeof b||b(n,e)},k=()=>{"nest"===d&&o(n),!i&&"nest"!==d||"function"!=typeof m||m(n)},_=r.useCallback(()=>{"function"==typeof v&&v()},[v]),M=r.useCallback(()=>{"function"==typeof y&&y()},[y]);return r.createElement(wS,{animationId:"treemap-".concat(n.tooltipIndex),from:"translate(".concat(E,"px, ").concat(0,"px)"),to:"translate(0, 0)",attributeName:"transform",begin:l,easing:s,isActive:c,duration:u,onAnimationStart:M,onAnimationEnd:_},e=>r.createElement(j,{onMouseEnter:A,onMouseLeave:S,onClick:k,style:a_(a_({},e),{},{transformOrigin:"".concat(O," ").concat(P)})},r.createElement(g_,{content:t,dataKey:h,nodeProps:a_(a_({},n),{},{isAnimationActive:c,isUpdateAnimationActive:!f,width:x,height:w,x:O,y:P}),type:d,colorPanel:p})))}class w_ extends r.PureComponent{constructor(){super(...arguments),o_(this,"state",a_({},y_)),o_(this,"handleClick",e=>{var{onClick:t,type:r}=this.props;if("nest"===r&&e.children){var{width:n,height:i,dataKey:a,nameKey:o,aspectRatio:c}=this.props,l=s_({depth:0,node:a_(a_({},e),{},{x:0,y:0,width:n,height:i}),index:0,dataKey:a,nameKey:o,nestedActiveTooltipIndex:e.tooltipIndex}),u=p_(l,c),{nestIndex:s}=this.state;s.push(e),this.setState({formatRoot:u,currentRoot:l,nestIndex:s})}t&&t(e)}),o_(this,"handleTouchMove",e=>{var t=e.touches[0],r=document.elementFromPoint(t.clientX,t.clientY);if(r&&r.getAttribute&&null!=this.state.formatRoot){var n=r.getAttribute("data-recharts-item-index"),i=l_(this.state.formatRoot,n);if(i){var{dataKey:a,dispatch:o}=this.props,c={x:i.x+i.width/2,y:i.y+i.height/2};o(cb({activeIndex:n,activeDataKey:a,activeCoordinate:c}))}}})}static getDerivedStateFromProps(e,t){if(e.data!==t.prevData||e.type!==t.prevType||e.width!==t.prevWidth||e.height!==t.prevHeight||e.dataKey!==t.prevDataKey||e.aspectRatio!==t.prevAspectRatio){var r=s_({depth:0,node:{children:e.data,x:0,y:0,width:e.width,height:e.height},index:0,dataKey:e.dataKey,nameKey:e.nameKey}),n=p_(r,e.aspectRatio);return a_(a_({},t),{},{formatRoot:n,currentRoot:r,nestIndex:[r],prevAspectRatio:e.aspectRatio,prevData:e.data,prevWidth:e.width,prevHeight:e.height,prevDataKey:e.dataKey,prevType:e.type})}return null}handleNestIndex(e,t){var{nestIndex:r}=this.state,{width:n,height:i,dataKey:a,nameKey:o,aspectRatio:c}=this.props,l=s_({depth:0,node:a_(a_({},e),{},{x:0,y:0,width:n,height:i}),index:0,dataKey:a,nameKey:o,nestedActiveTooltipIndex:e.tooltipIndex}),u=p_(l,c);r=r.slice(0,t+1),this.setState({formatRoot:u,currentRoot:e,nestIndex:r})}renderNode(e,t){var{content:n,type:i}=this.props,a=a_(a_(a_({},v(this.props)),t),{},{root:e}),o=!t.children||!t.children.length,{currentRoot:c}=this.state;return!((null==c?void 0:c.children)||[]).filter(e=>e.depth===t.depth&&e.name===t.name).length&&e.depth&&"nest"===i?null:r.createElement(j,{key:"recharts-treemap-node-".concat(a.x,"-").concat(a.y,"-").concat(a.name),className:"recharts-treemap-depth-".concat(t.depth)},r.createElement(x_,{isLeaf:o,content:n,nodeProps:a,treemapProps:this.props,onNestClick:this.handleClick}),t.children&&t.children.length?t.children.map(e=>this.renderNode(t,e)):null)}renderAllNodes(){var{formatRoot:e}=this.state;return e?this.renderNode(e,e):null}renderNestIndex(){var{nameKey:e,nestIndexContent:t}=this.props,{nestIndex:n}=this.state;return r.createElement("div",{className:"recharts-treemap-nest-index-wrapper",style:{marginTop:"8px",textAlign:"center"}},n.map((n,i)=>{var a,o=Ze(n,e,"root");return r.isValidElement(t)&&(a=r.cloneElement(t,n,i)),a="function"==typeof t?t(n,i):o,r.createElement("div",{onClick:this.handleNestIndex.bind(this,n,i),key:"nest-index-".concat(it()),className:"recharts-treemap-nest-index-box",style:{cursor:"pointer",display:"inline-block",padding:"0 7px",background:"#000",color:"#fff",marginRight:"3px"}},a)}))}render(){var e=this.props,{width:t,height:n,className:i,style:a,children:o,type:c}=e,l=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{null==l&&null!=e&&u(e)},onMouseEnter:void 0,onMouseLeave:void 0,onClick:void 0,onMouseMove:void 0,onMouseDown:void 0,onMouseUp:void 0,onContextMenu:void 0,onDoubleClick:void 0,onTouchStart:void 0,onTouchMove:void 0,onTouchEnd:void 0},r.createElement(sw.Provider,{value:l},r.createElement(O_,n))))}o_(w_,"displayName","Treemap");var j_=["axis"],E_=r.forwardRef((e,t)=>r.createElement(wk,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:j_,tooltipPayloadSearcher:vw,categoricalChartProps:e,ref:t}));export{E_ as A,FE as C,Pk as L,Kc as R,Rw as T,sS as X,bS as Y,bA as a,XA as b,s as c,P_ as d,ru as e}; +var e=Object.defineProperty,t=(t,r,n)=>((t,r,n)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n)(t,"symbol"!=typeof r?r+"":r,n);import{r,a as n,b as i,R as a,s as o,P as c}from"./vendor-react-CWPBVwgk.js";import{g as l}from"./deckgl-DTsmDcfs.js";function u(e){var t,r,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var i=e.length;for(t=0;t{var{children:n,width:i,height:a,viewBox:o,className:c,style:l,title:u,desc:f}=e,d=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var{children:n,className:i}=e,a=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0))throw new Error(`invalid digits: ${e}`);if(t>15)return z;const r=10**t;return function(e){this._+=e[0];for(let t=1,n=e.length;tD)if(Math.abs(s*c-l*u)>D&&i){let d=r-a,p=n-o,h=c*c+l*l,y=d*d+p*p,v=Math.sqrt(h),g=Math.sqrt(f),m=i*Math.tan((C-Math.acos((h+f-y)/(2*v*g)))/2),b=m/g,x=m/v;Math.abs(b-1)>D&&this._append`L${e+b*u},${t+b*s}`,this._append`A${i},${i},0,0,${+(s*d>u*p)},${this._x1=e+x*c},${this._y1=t+x*l}`}else this._append`L${this._x1=e},${this._y1=t}`}arc(e,t,r,n,i,a){if(e=+e,t=+t,a=!!a,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(n),c=r*Math.sin(n),l=e+o,u=t+c,s=1^a,f=a?n-i:i-n;null===this._x1?this._append`M${l},${u}`:(Math.abs(this._x1-l)>D||Math.abs(this._y1-u)>D)&&this._append`L${l},${u}`,r&&(f<0&&(f=f%I+I),f>N?this._append`A${r},${r},0,1,${s},${e-o},${t-c}A${r},${r},0,1,${s},${this._x1=l},${this._y1=u}`:f>D&&this._append`A${r},${r},0,${+(f>=C)},${s},${this._x1=e+r*Math.cos(i)},${this._y1=t+r*Math.sin(i)}`)}rect(e,t,r,n){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${r=+r}v${+n}h${-r}Z`}toString(){return this._}}function L(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(null==r)t=null;else{const e=Math.floor(r);if(!(e>=0))throw new RangeError(`invalid digits: ${r}`);t=e}return e},()=>new R(t)}function B(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function K(e){this._context=e}function F(e){return new K(e)}function U(e){return e[0]}function W(e){return e[1]}function $(e,t){var r=A(!0),n=null,i=F,a=null,o=L(c);function c(c){var l,u,s,f=(c=B(c)).length,d=!1;for(null==n&&(a=i(s=o())),l=0;l<=f;++l)!(l=f;--d)c.point(g[d],m[d]);c.lineEnd(),c.areaEnd()}v&&(g[s]=+e(p,s,u),m[s]=+t(p,s,u),c.point(n?+n(p,s,u):g[s],r?+r(p,s,u):m[s]))}if(h)return c=null,h+""||null}function s(){return $().defined(i).curve(o).context(a)}return e="function"==typeof e?e:void 0===e?U:A(+e),t="function"==typeof t?t:A(void 0===t?0:+t),r="function"==typeof r?r:void 0===r?W:A(+r),u.x=function(t){return arguments.length?(e="function"==typeof t?t:A(+t),n=null,u):e},u.x0=function(t){return arguments.length?(e="function"==typeof t?t:A(+t),u):e},u.x1=function(e){return arguments.length?(n=null==e?null:"function"==typeof e?e:A(+e),u):n},u.y=function(e){return arguments.length?(t="function"==typeof e?e:A(+e),r=null,u):t},u.y0=function(e){return arguments.length?(t="function"==typeof e?e:A(+e),u):t},u.y1=function(e){return arguments.length?(r=null==e?null:"function"==typeof e?e:A(+e),u):r},u.lineX0=u.lineY0=function(){return s().x(e).y(t)},u.lineY1=function(){return s().x(e).y(r)},u.lineX1=function(){return s().x(n).y(t)},u.defined=function(e){return arguments.length?(i="function"==typeof e?e:A(!!e),u):i},u.curve=function(e){return arguments.length?(o=e,null!=a&&(c=o(a)),u):o},u.context=function(e){return arguments.length?(null==e?a=c=null:c=o(a=e),u):a},u}K.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};class V{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t)}this._x0=e,this._y0=t}}const q={draw(e,t){const r=_(t/M);e.moveTo(r,0),e.arc(0,0,r,0,T)}},Y={draw(e,t){const r=_(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}},G=_(1/3),X=2*G,Z={draw(e,t){const r=_(t/X),n=r*G;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}},Q={draw(e,t){const r=_(t),n=-r/2;e.rect(n,n,r,r)}},J=k(M/10)/k(7*M/10),ee=k(T/10)*J,te=-S(T/10)*J,re={draw(e,t){const r=_(.8908130915292852*t),n=ee*r,i=te*r;e.moveTo(0,-r),e.lineTo(n,i);for(let a=1;a<5;++a){const t=T*a/5,o=S(t),c=k(t);e.lineTo(c*r,-o*r),e.lineTo(o*n-c*i,c*n+o*i)}e.closePath()}},ne=_(3),ie={draw(e,t){const r=-_(t/(3*ne));e.moveTo(0,2*r),e.lineTo(-ne*r,-r),e.lineTo(ne*r,-r),e.closePath()}},ae=-.5,oe=_(3)/2,ce=1/_(12),le=3*(ce/2+1),ue={draw(e,t){const r=_(t/le),n=r/2,i=r*ce,a=n,o=r*ce+r,c=-a,l=o;e.moveTo(n,i),e.lineTo(a,o),e.lineTo(c,l),e.lineTo(ae*n-oe*i,oe*n+ae*i),e.lineTo(ae*a-oe*o,oe*a+ae*o),e.lineTo(ae*c-oe*l,oe*c+ae*l),e.lineTo(ae*n+oe*i,ae*i-oe*n),e.lineTo(ae*a+oe*o,ae*o-oe*a),e.lineTo(ae*c+oe*l,ae*l-oe*c),e.closePath()}};function se(){}function fe(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function de(e){this._context=e}function pe(e){this._context=e}function he(e){this._context=e}function ye(e){this._context=e}function ve(e){return e<0?-1:1}function ge(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),o=(r-e._y1)/(i||n<0&&-0),c=(a*i+o*n)/(n+i);return(ve(a)+ve(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(c))||0}function me(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function be(e,t,r){var n=e._x0,i=e._y0,a=e._x1,o=e._y1,c=(a-n)/3;e._context.bezierCurveTo(n+c,i+c*t,a-c,o-c*r,a,o)}function xe(e){this._context=e}function we(e){this._context=new Oe(e)}function Oe(e){this._context=e}function Pe(e){this._context=e}function je(e){var t,r,n=e.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t1)for(var r,n,i,a=1,o=e[t[0]],c=o.length;a=0;)r[t]=t;return r}function ke(e,t){return e[t]}function _e(e){const t=[];return t.key=e,t}de.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:fe(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:fe(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},pe.prototype={areaStart:se,areaEnd:se,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:fe(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},he.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:fe(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},ye.prototype={areaStart:se,areaEnd:se,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}},xe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:be(this,this._t0,me(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(t=+t,(e=+e)!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,be(this,me(this,r=ge(this,e,t)),r);break;default:be(this,this._t0,r=ge(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}},(we.prototype=Object.create(xe.prototype)).point=function(e,t){xe.prototype.point.call(this,t,e)},Oe.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)}},Pe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),2===r)this._context.lineTo(e[1],t[1]);else for(var n=je(e),i=je(t),a=0,o=1;o=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}}this._x=e,this._y=t}};var Me,Te={},Ce={};function Ie(){return Me||(Me=1,e=Ce,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isUnsafeProperty=function(e){return"__proto__"===e}),Ce;var e}var De,Ne={};function ze(){return De||(De=1,e=Ne,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isDeepKey=function(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e.includes(".")||e.includes("[")||e.includes("]")}}),Ne;var e}var Re,Le={};function Be(){return Re||(Re=1,e=Le,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.toKey=function(e){var t;return"string"==typeof e||"symbol"==typeof e?e:Object.is(null==(t=null==e?void 0:e.valueOf)?void 0:t.call(e),-0)?"-0":String(e)}),Le;var e}var Ke,Fe,Ue,We,$e,He={},Ve={};function qe(){return Ke||(Ke=1,e=Ve,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.toString=function e(t){if(null==t)return"";if("string"==typeof t)return t;if(Array.isArray(t))return t.map(e).join(",");const r=String(t);return"0"===r&&Object.is(Number(t),-0)?"-0":r}),Ve;var e}function Ye(){return Fe||(Fe=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=qe(),r=Be();e.toPath=function(e){if(Array.isArray(e))return e.map(r.toKey);if("symbol"==typeof e)return[e];const n=[],i=(e=t.toString(e)).length;if(0===i)return n;let a=0,o="",c="",l=!1;for(46===e.charCodeAt(0)&&(n.push(""),a++);a0===e?0:e>0?1:-1,Je=e=>"number"==typeof e&&e!=+e,et=e=>"string"==typeof e&&e.indexOf("%")===e.length-1,tt=e=>("number"==typeof e||e instanceof Number)&&!Je(e),rt=e=>tt(e)||"string"==typeof e,nt=0,it=e=>{var t=++nt;return"".concat(e||"").concat(t)},at=function(e,t){var r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!tt(e)&&"string"!=typeof e)return n;if(et(e)){if(null==t)return n;var a=e.indexOf("%");r=t*parseFloat(e.slice(0,a))/100}else r=+e;return Je(r)&&(r=n),i&&null!=t&&r>t&&(r=t),r},ot=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;ne&&("function"==typeof t?t(e):Ze(e,t))===r)}var ut=e=>null==e,st=e=>ut(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function ft(e){return null!=e}function dt(){}var pt=["type","size","sizeType"];function ht(){return ht=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{type:t="circle",size:n=64,sizeType:i="area"}=e,a=vt(vt({},function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var e=(e=>{var t="symbol".concat(st(e));return mt[t]||q})(o),t=function(e,t){let r=null,n=L(i);function i(){let i;if(r||(r=i=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),i)return r=null,i+""||null}return e="function"==typeof e?e:A(e||q),t="function"==typeof t?t:A(void 0===t?64:+t),i.type=function(t){return arguments.length?(e="function"==typeof t?t:A(t),i):e},i.size=function(e){return arguments.length?(t="function"==typeof e?e:A(+e),i):t},i.context=function(e){return arguments.length?(r=null==e?null:e,i):r},i}().type(e).size(((e,t,r)=>{if("area"===t)return e;switch(r){case"cross":return 5*e*e/9;case"diamond":return.5*e*e/Math.sqrt(3);case"square":return e*e;case"star":var n=18*bt;return 1.25*e*e*(Math.tan(n)-Math.tan(2*n)*Math.tan(n)**2);case"triangle":return Math.sqrt(3)*e*e/4;case"wye":return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}})(n,i,o)),r=t();if(null!==r)return r})()})):null};xt.registerSymbol=(e,t)=>{mt["symbol".concat(st(e))]=t};var wt=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,Ot=(e,t)=>{if(!e||"function"==typeof e||"boolean"==typeof e)return null;var n=e;if(r.isValidElement(e)&&(n=e.props),"object"!=typeof n&&"function"!=typeof n)return null;var i={};return Object.keys(n).forEach(e=>{d(e)&&(i[e]=t=>n[e](n,t))}),i},Pt=(e,t,r)=>{if(null===e||"object"!=typeof e&&"function"!=typeof e)return null;var n=null;return Object.keys(e).forEach(i=>{var a=e[i];d(i)&&"function"==typeof a&&(n||(n={}),n[i]=((e,t,r)=>n=>(e(t,r,n),null))(a,t,r))}),n};function jt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Et(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function At(e,t){var r=function(e){for(var t=1;t(void 0===e[t]&&void 0!==n[t]&&(e[t]=n[t]),e),r)}function St(){return St=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var d=t.formatter||a,p=s({"recharts-legend-item":!0,["legend-item-".concat(i)]:!0,inactive:t.inactive});if("none"===t.type)return null;var h=t.inactive?o:t.color,y=d?d(t.value,t,i):t.value;return r.createElement("li",St({className:p,style:u,key:"legend-item-".concat(i)},Pt(e,t,i)),r.createElement(w,{width:n,height:n,viewBox:l,style:f,"aria-label":"".concat(y," legend icon")},r.createElement(Ct,{data:t,iconType:c,inactiveColor:o})),r.createElement("span",{className:"recharts-legend-item-text",style:{color:h}},y))})}var Dt,Nt=e=>{var t=At(e,Tt),{payload:n,layout:i,align:a}=t;if(!n||!n.length)return null;var o={padding:0,margin:0,textAlign:"horizontal"===i?a:"left"};return r.createElement("ul",{className:"recharts-default-legend",style:o},r.createElement(It,St({},t,{payload:n})))},zt={},Rt={};function Lt(){return Dt||(Dt=1,e=Rt,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.uniqBy=function(e,t){const r=new Map;for(let n=0;n=0}),Vt;var e}function Yt(){return Wt||(Wt=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=qt();e.isArrayLike=function(e){return null!=e&&"function"!=typeof e&&t.isLength(e.length)}}(Ht)),Ht}var Gt,Xt,Zt={};function Qt(){return Gt||(Gt=1,e=Zt,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isObjectLike=function(e){return"object"==typeof e&&null!==e}),Zt;var e}function Jt(){return Xt||(Xt=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Yt(),r=Qt();e.isArrayLikeObject=function(e){return r.isObjectLike(e)&&t.isArrayLike(e)}}($t)),$t}var er,tr={},rr={};function nr(){return er||(er=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Ge();e.property=function(e){return function(r){return t.get(r,e)}}}(rr)),rr}var ir,ar={},or={},cr={},lr={};function ur(){return ir||(ir=1,e=lr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isObject=function(e){return null!==e&&("object"==typeof e||"function"==typeof e)}),lr;var e}var sr,fr={};function dr(){return sr||(sr=1,e=fr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isPrimitive=function(e){return null==e||"object"!=typeof e&&"function"!=typeof e}),fr;var e}var pr,hr,yr,vr={};function gr(){return pr||(pr=1,e=vr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.eq=function(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}),vr;var e}function mr(){return hr||(hr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ur(),r=dr(),n=gr();function i(e,c,l,u){if(c===e)return!0;switch(typeof c){case"object":return function(e,t,n,i){if(null==t)return!0;if(Array.isArray(t))return a(e,t,n,i);if(t instanceof Map)return function(e,t,r,n){if(0===t.size)return!0;if(!(e instanceof Map))return!1;for(const[i,a]of t.entries())if(!1===r(e.get(i),a,i,e,t,n))return!1;return!0}(e,t,n,i);if(t instanceof Set)return o(e,t,n,i);const c=Object.keys(t);if(null==e)return 0===c.length;if(0===c.length)return!0;if(null==i?void 0:i.has(t))return i.get(t)===e;null==i||i.set(t,e);try{for(let a=0;a0?i(e,{...c},l,u):n.eq(e,c);default:return t.isObject(e)?"string"!=typeof c||""===c:n.eq(e,c)}}function a(e,t,r,n){if(0===t.length)return!0;if(!Array.isArray(e))return!1;const i=new Set;for(let a=0;a{}):i(t,r,function e(t,r,a,o,c,l){const u=n(t,r,a,o,c,l);return void 0!==u?Boolean(u):i(t,r,e,l)},new Map)},e.isSetMatch=o}(cr)),cr}function br(){return yr||(yr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=mr();e.isMatch=function(e,r){return t.isMatchWith(e,r,()=>{})}}(or)),or}var xr,wr={},Or={},Pr={};function jr(){return xr||(xr=1,e=Pr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.getSymbols=function(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}),Pr;var e}var Er,Ar={};function Sr(){return Er||(Er=1,e=Ar,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.getTag=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}),Ar;var e}var kr,_r={};function Mr(){return kr||(kr=1,e=_r,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.argumentsTag="[object Arguments]",e.arrayBufferTag="[object ArrayBuffer]",e.arrayTag="[object Array]",e.bigInt64ArrayTag="[object BigInt64Array]",e.bigUint64ArrayTag="[object BigUint64Array]",e.booleanTag="[object Boolean]",e.dataViewTag="[object DataView]",e.dateTag="[object Date]",e.errorTag="[object Error]",e.float32ArrayTag="[object Float32Array]",e.float64ArrayTag="[object Float64Array]",e.functionTag="[object Function]",e.int16ArrayTag="[object Int16Array]",e.int32ArrayTag="[object Int32Array]",e.int8ArrayTag="[object Int8Array]",e.mapTag="[object Map]",e.numberTag="[object Number]",e.objectTag="[object Object]",e.regexpTag="[object RegExp]",e.setTag="[object Set]",e.stringTag="[object String]",e.symbolTag="[object Symbol]",e.uint16ArrayTag="[object Uint16Array]",e.uint32ArrayTag="[object Uint32Array]",e.uint8ArrayTag="[object Uint8Array]",e.uint8ClampedArrayTag="[object Uint8ClampedArray]"),_r;var e}var Tr,Cr,Ir,Dr,Nr={};function zr(){return Tr||(Tr=1,e=Nr,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isTypedArray=function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}),Nr;var e}function Rr(){return Cr||(Cr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=jr(),r=Sr(),n=Mr(),i=dr(),a=zr();function o(e,t,l,u=new Map,s=void 0){const f=null==s?void 0:s(e,t,l,u);if(void 0!==f)return f;if(i.isPrimitive(e))return e;if(u.has(e))return u.get(e);if(Array.isArray(e)){const t=new Array(e.length);u.set(e,t);for(let r=0;rt.isMatch(r,e)}}(ar)),ar}var Kr,Fr,Ur={},Wr={},$r={};function Hr(){return Kr||(Kr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Rr(),r=Mr();e.cloneDeepWith=function(e,n){return t.cloneDeepWith(e,(i,a,o,c)=>{const l=null==n?void 0:n(i,a,o,c);if(void 0!==l)return l;if("object"==typeof e)switch(Object.prototype.toString.call(e)){case r.numberTag:case r.stringTag:case r.booleanTag:{const r=new e.constructor(null==e?void 0:e.valueOf());return t.copyProperties(r,e),r}case r.argumentsTag:{const r={};return t.copyProperties(r,e),r.length=e.length,r[Symbol.iterator]=e[Symbol.iterator],r}default:return}})}}($r)),$r}function Vr(){return Fr||(Fr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Hr();e.cloneDeep=function(e){return t.cloneDeepWith(e)}}(Wr)),Wr}var qr,Yr={},Gr={};function Xr(){return qr||(qr=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=/^(?:0|[1-9]\d*)$/;e.isIndex=function(e,r=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&ee,jn=()=>{var e=r.useContext(On);return e?e.store.dispatch:Pn},En=()=>{},An=()=>En,Sn=(e,t)=>e===t;function kn(e){var t=r.useContext(On);return wn.useSyncExternalStoreWithSelector(t?t.subscription.addNestedSub:An,t?t.store.getState:En,t?t.store.getState:En,t?e:En,Sn)}var _n=e=>Array.isArray(e)?e:[e];var Mn="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}};function Tn(){return{s:0,v:void 0,o:null,p:null}}function Cn(e,t={}){let r={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:n}=t;let i,a=0;function o(){var t;let o=r;const{length:c}=arguments;for(let e=0,r=c;e{r={s:0,v:void 0,o:null,p:null},o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function In(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,n=(...e)=>{let t,n=0,i=0,a={},o=e.pop();"object"==typeof o&&(a=o,o=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);const c={...r,...a},{memoize:l,memoizeOptions:u=[],argsMemoize:s=Cn,argsMemoizeOptions:f=[]}=c,d=_n(u),p=_n(f),h=function(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(e=>"function"==typeof e)){const r=e.map(e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}(e),y=l(function(){return n++,o.apply(null,arguments)},...d),v=s(function(){i++;const e=function(e,t){const r=[],{length:n}=e;for(let i=0;ii,resetDependencyRecomputations:()=>{i=0},lastResult:()=>t,recomputations:()=>n,resetRecomputations:()=>{n=0},memoize:l,argsMemoize:s})};return Object.assign(n,{withTypes:()=>n}),n}var Dn,Nn=In(Cn),zn=Object.assign((e,t=Nn)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e);return t(r.map(t=>e[t]),(...e)=>e.reduce((e,t,n)=>(e[r[n]]=t,e),{}))},{withTypes:()=>zn}),Rn={},Ln={},Bn={};function Kn(){return Dn||(Dn=1,function(e){function t(e){return"symbol"==typeof e?1:null===e?2:void 0===e?3:e!=e?4:0}Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.compareValues=(e,r,n)=>{if(e!==r){const i=t(e),a=t(r);if(i===a&&0===i){if(er)return"desc"===n?-1:1}return"desc"===n?a-i:i-a}return 0}}(Bn)),Bn}var Fn,Un,Wn,$n={},Hn={};function Vn(){return Fn||(Fn=1,e=Hn,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isSymbol=function(e){return"symbol"==typeof e||e instanceof Symbol}),Hn;var e}function qn(){return Un||(Un=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Vn(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;e.isKey=function(e,i){return!Array.isArray(e)&&(!("number"!=typeof e&&"boolean"!=typeof e&&null!=e&&!t.isSymbol(e))||"string"==typeof e&&(n.test(e)||!r.test(e))||null!=i&&Object.hasOwn(i,e))}}($n)),$n}function Yn(){return Wn||(Wn=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Kn(),r=qn(),n=Ye();e.orderBy=function(e,i,a,o){if(null==e)return[];a=o?void 0:a,Array.isArray(e)||(e=Object.values(e)),Array.isArray(i)||(i=null==i?[null]:[i]),0===i.length&&(i=[null]),Array.isArray(a)||(a=null==a?[]:[a]),a=a.map(e=>String(e));const c=(e,t)=>{let r=e;for(let n=0;n(Array.isArray(e)&&1===e.length&&(e=e[0]),null==e||"function"==typeof e||Array.isArray(e)||r.isKey(e)?e:{key:e,path:n.toPath(e)}));return e.map(e=>({original:e,criteria:l.map(t=>((e,t)=>null==t||null==e?t:"object"==typeof e&&"key"in e?Object.hasOwn(t,e.key)?t[e.key]:c(t,e.path):"function"==typeof e?e(t):Array.isArray(e)?c(t,e):"object"==typeof t?t[e]:t)(t,e))})).slice().sort((e,r)=>{for(let n=0;ne.original)}}(Ln)),Ln}var Gn,Xn={};function Zn(){return Gn||(Gn=1,e=Xn,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.flatten=function(e,t=1){const r=[],n=Math.floor(t),i=(e,t)=>{for(let a=0;a1&&n.isIterateeCall(e,i[0],i[1])?i=[]:a>2&&n.isIterateeCall(i[0],i[1],i[2])&&(i=[i[0]]),t.orderBy(e,r.flatten(i),["asc"])}}(Rn)),Rn).sortBy)}const ai=l(ii());var oi=e=>e.legend.settings,ci=Nn([e=>e.legend.payload,oi],(e,t)=>{var{itemSorter:r}=t,n=e.flat(1);return r?ai(n,r):n});function li(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],[t,n]=r.useState({height:0,left:0,top:0,width:0}),i=r.useCallback(e=>{if(null!=e){var r=e.getBoundingClientRect(),i={height:r.height,left:r.left,top:r.top,width:r.width};(Math.abs(i.height-t.height)>1||Math.abs(i.left-t.left)>1||Math.abs(i.top-t.top)>1||Math.abs(i.width-t.width)>1)&&n({height:i.height,left:i.left,top:i.top,width:i.width})}},[t.width,t.height,t.top,t.left,...e]);return[t,i]}function ui(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var si=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),fi=()=>Math.random().toString(36).substring(7).split("").join("."),di={INIT:`@@redux/INIT${fi()}`,REPLACE:`@@redux/REPLACE${fi()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${fi()}`};function pi(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function hi(e,t,r){if("function"!=typeof e)throw new Error(ui(2));if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error(ui(0));if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(ui(1));return r(hi)(e,t)}let n=e,i=t,a=new Map,o=a,c=0,l=!1;function u(){o===a&&(o=new Map,a.forEach((e,t)=>{o.set(t,e)}))}function s(){if(l)throw new Error(ui(3));return i}function f(e){if("function"!=typeof e)throw new Error(ui(4));if(l)throw new Error(ui(5));let t=!0;u();const r=c++;return o.set(r,e),function(){if(t){if(l)throw new Error(ui(6));t=!1,u(),o.delete(r),a=null}}}function d(e){if(!pi(e))throw new Error(ui(7));if(void 0===e.type)throw new Error(ui(8));if("string"!=typeof e.type)throw new Error(ui(17));if(l)throw new Error(ui(9));try{l=!0,i=n(i,e)}finally{l=!1}return(a=o).forEach(e=>{e()}),e}return d({type:di.INIT}),{dispatch:d,subscribe:f,getState:s,replaceReducer:function(e){if("function"!=typeof e)throw new Error(ui(10));n=e,d({type:di.REPLACE})},[si]:function(){const e=f;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(ui(11));function r(){const e=t;e.next&&e.next(s())}return r(),{unsubscribe:e(r)}},[si](){return this}}}}}function yi(e){const t=Object.keys(e),r={};for(let a=0;a{const r=e[t];if(void 0===r(void 0,{type:di.INIT}))throw new Error(ui(12));if(void 0===r(void 0,{type:di.PROBE_UNKNOWN_ACTION()}))throw new Error(ui(13))})}(r)}catch(Kj){i=Kj}return function(e={},t){if(i)throw i;let a=!1;const o={};for(let i=0;ie:1===e.length?e[0]:e.reduce((e,t)=>(...r)=>e(t(...r)))}function gi(e){return pi(e)&&"type"in e&&"string"==typeof e.type}var mi=Symbol.for("immer-nothing"),bi=Symbol.for("immer-draftable"),xi=Symbol.for("immer-state");function wi(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Oi=Object,Pi=Oi.getPrototypeOf,ji="constructor",Ei="prototype",Ai="configurable",Si="enumerable",ki="writable",_i="value",Mi=e=>!!e&&!!e[xi];function Ti(e){var t;return!!e&&(Di(e)||Ki(e)||!!e[bi]||!!(null==(t=e[ji])?void 0:t[bi])||Fi(e)||Ui(e))}var Ci=Oi[Ei][ji].toString(),Ii=new WeakMap;function Di(e){if(!e||!Wi(e))return!1;const t=Pi(e);if(null===t||t===Oi[Ei])return!0;const r=Oi.hasOwnProperty.call(t,ji)&&t[ji];if(r===Object)return!0;if(!$i(r))return!1;let n=Ii.get(r);return void 0===n&&(n=Function.toString.call(r),Ii.set(r,n)),n===Ci}function Ni(e,t,r=!0){0===zi(e)?(r?Reflect.ownKeys(e):Oi.keys(e)).forEach(r=>{t(r,e[r],e)}):e.forEach((r,n)=>t(n,r,e))}function zi(e){const t=e[xi];return t?t.type_:Ki(e)?1:Fi(e)?2:Ui(e)?3:0}var Ri=(e,t,r=zi(e))=>2===r?e.has(t):Oi[Ei].hasOwnProperty.call(e,t),Li=(e,t,r=zi(e))=>2===r?e.get(t):e[t],Bi=(e,t,r,n=zi(e))=>{2===n?e.set(t,r):3===n?e.add(r):e[t]=r},Ki=Array.isArray,Fi=e=>e instanceof Map,Ui=e=>e instanceof Set,Wi=e=>"object"==typeof e,$i=e=>"function"==typeof e,Hi=e=>"boolean"==typeof e,Vi=e=>e.copy_||e.base_,qi=e=>e.modified_?e.copy_:e.base_;function Yi(e,t){if(Fi(e))return new Map(e);if(Ui(e))return new Set(e);if(Ki(e))return Array[Ei].slice.call(e);const r=Di(e);if(!0===t||"class_only"===t&&!r){const t=Oi.getOwnPropertyDescriptors(e);delete t[xi];let r=Reflect.ownKeys(t);for(let n=0;n1&&Oi.defineProperties(e,{set:Xi,add:Xi,clear:Xi,delete:Xi}),Oi.freeze(e),t&&Ni(e,(e,t)=>{Gi(t,!0)},!1)),e}var Xi={[_i]:function(){wi(2)}};function Zi(e){return null===e||!Wi(e)||Oi.isFrozen(e)}var Qi="MapSet",Ji="Patches",ea={};function ta(e){const t=ea[e];return t||wi(0),t}var ra,na=()=>ra;function ia(e,t){t&&(e.patchPlugin_=ta(Ji),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function aa(e){oa(e),e.drafts_.forEach(la),e.drafts_=null}function oa(e){e===ra&&(ra=e.parent_)}var ca=e=>{return ra={drafts_:[],parent_:ra,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:(t=Qi,ea[t]?ta(Qi):void 0)};var t};function la(e){const t=e[xi];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function ua(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];if(void 0!==e&&e!==r){r[xi].modified_&&(aa(t),wi(4)),Ti(e)&&(e=sa(t,e));const{patchPlugin_:n}=t;n&&n.generateReplacementPatches_(r[xi].base_,e,t)}else e=sa(t,r);return function(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Gi(t,r)}(t,e,!0),aa(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==mi?e:void 0}function sa(e,t){if(Zi(t))return t;const r=t[xi];if(!r)return va(t,e.handledSet_,e);if(!da(r,e))return t;if(!r.modified_)return r.base_;if(!r.finalized_){const{callbacks_:t}=r;if(t)for(;t.length>0;)t.pop()(e);ya(r,e)}return r.copy_}function fa(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var da=(e,t)=>e.scope_===t,pa=[];function ha(e,t,r,n){const i=Vi(e),a=e.type_;if(void 0!==n&&Li(i,n,a)===t)return void Bi(i,n,r,a);if(!e.draftLocations_){const t=e.draftLocations_=new Map;Ni(i,(e,r)=>{if(Mi(r)){const n=t.get(r)||[];n.push(e),t.set(r,n)}})}const o=e.draftLocations_.get(t)??pa;for(const c of o)Bi(i,c,r,a)}function ya(e,t){var r;if(e.modified_&&!e.finalized_&&(3===e.type_||((null==(r=e.assigned_)?void 0:r.size)??0)>0)){const{patchPlugin_:r}=t;if(r){const n=r.getPath(e);n&&r.generatePatches_(e,n,t)}fa(e)}}function va(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||Mi(e)||t.has(e)||!Ti(e)||Zi(e)||(t.add(e),Ni(e,(n,i)=>{if(Mi(i)){const t=i[xi];if(da(t,r)){const r=qi(t);Bi(e,n,r,e.type_),fa(t)}}else Ti(i)&&va(i,t,r)})),e}var ga={get(e,t){if(t===xi)return e;const r=Vi(e);if(!Ri(r,t,e.type_))return function(e,t,r){var n;const i=xa(t,r);return i?_i in i?i[_i]:null==(n=i.get)?void 0:n.call(e.draft_):void 0}(e,r,t);const n=r[t];if(e.finalized_||!Ti(n))return n;if(n===ba(e.base_,t)){Oa(e);const r=1===e.type_?+t:t,i=Pa(e.scope_,n,e,r);return e.copy_[r]=i}return n},has:(e,t)=>t in Vi(e),ownKeys:e=>Reflect.ownKeys(Vi(e)),set(e,t,r){const n=xa(Vi(e),t);if(null==n?void 0:n.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const n=ba(Vi(e),t),o=null==n?void 0:n[xi];if(o&&o.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(((i=r)===(a=n)?0!==i||1/i==1/a:i!=i&&a!=a)&&(void 0!==r||Ri(e.base_,t,e.type_)))return!0;Oa(e),wa(e)}var i,a;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),function(e,t,r){const{scope_:n}=e;if(Mi(r)){const i=r[xi];da(i,n)&&i.callbacks_.push(function(){Oa(e);const n=qi(i);ha(e,r,n,t)})}else Ti(r)&&e.callbacks_.push(function(){const i=Vi(e);Li(i,t,e.type_)===r&&n.drafts_.length>1&&!0===(e.assigned_.get(t)??!1)&&e.copy_&&va(Li(e.copy_,t,e.type_),n.handledSet_,n)})}(e,t,r)),!0},deleteProperty:(e,t)=>(Oa(e),void 0!==ba(e.base_,t)||t in e.base_?(e.assigned_.set(t,!1),wa(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=Vi(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n?{[ki]:!0,[Ai]:1!==e.type_||"length"!==t,[Si]:n[Si],[_i]:r[t]}:n},defineProperty(){wi(11)},getPrototypeOf:e=>Pi(e.base_),setPrototypeOf(){wi(12)}},ma={};function ba(e,t){const r=e[xi];return(r?Vi(r):e)[t]}function xa(e,t){if(!(t in e))return;let r=Pi(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Pi(r)}}function wa(e){e.modified_||(e.modified_=!0,e.parent_&&wa(e.parent_))}function Oa(e){e.copy_||(e.assigned_=new Map,e.copy_=Yi(e.base_,e.scope_.immer_.useStrictShallowCopy_))}function Pa(e,t,r,n){const[i,a]=Fi(t)?ta(Qi).proxyMap_(t,r):Ui(t)?ta(Qi).proxySet_(t,r):function(e,t){const r=Ki(e),n={type_:r?1:0,scope_:t?t.scope_:na(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let i=n,a=ga;r&&(i=[n],a=ma);const{revoke:o,proxy:c}=Proxy.revocable(i,a);return n.draft_=c,n.revoke_=o,[c,n]}(t,r);return((null==r?void 0:r.scope_)??na()).drafts_.push(i),a.callbacks_=(null==r?void 0:r.callbacks_)??[],a.key_=n,r&&void 0!==n?function(e,t,r){e.callbacks_.push(function(n){var i;const a=t;if(!a||!da(a,n))return;null==(i=n.mapSetPlugin_)||i.fixSetContents(a);const o=qi(a);ha(e,a.draft_??a,o,r),ya(a,n)})}(r,a,n):a.callbacks_.push(function(e){var t;null==(t=e.mapSetPlugin_)||t.fixSetContents(a);const{patchPlugin_:r}=e;a.modified_&&r&&r.generatePatches_(a,[],e)}),i}function ja(e){return Mi(e)||wi(10),Ea(e)}function Ea(e){if(!Ti(e)||Zi(e))return e;const t=e[xi];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=Yi(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=Yi(e,!0);return Ni(r,(e,t)=>{Bi(r,e,Ea(t))},n),t&&(t.finalized_=!1),r}Ni(ga,(e,t)=>{ma[e]=function(){const e=arguments;return e[0]=e[0][0],t.apply(this,e)}}),ma.deleteProperty=function(e,t){return ma.set.call(this,e,t,void 0)},ma.set=function(e,t,r){return ga.set.call(this,e[0],t,r,e[0])};var Aa=(new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,r)=>{if($i(e)&&!$i(t)){const r=t;t=e;const n=this;return function(e=r,...i){return n.produce(e,e=>t.call(this,e,...i))}}let n;if($i(t)||wi(6),void 0===r||$i(r)||wi(7),Ti(e)){const i=ca(this),a=Pa(0,e,void 0);let o=!0;try{n=t(a),o=!1}finally{o?aa(i):oa(i)}return ia(i,r),ua(n,i)}if(!e||!Wi(e)){if(n=t(e),void 0===n&&(n=e),n===mi&&(n=void 0),this.autoFreeze_&&Gi(n,!0),r){const t=[],i=[];ta(Ji).generateReplacementPatches_(e,n,{patches_:t,inversePatches_:i}),r(t,i)}return n}wi(1)},this.produceWithPatches=(e,t)=>{if($i(e))return(t,...r)=>this.produceWithPatches(t,t=>e(t,...r));let r,n;return[this.produce(e,t,(e,t)=>{r=e,n=t}),r,n]},Hi(null==e?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Hi(null==e?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Hi(null==e?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Ti(e)||wi(8),Mi(e)&&(e=ja(e));const t=ca(this),r=Pa(0,e,void 0);return r[xi].isManual_=!0,oa(t),r}finishDraft(e,t){const r=e&&e[xi];r&&r.isManual_||wi(9);const{scope_:n}=r;return ia(n,t),ua(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const n=t[r];if(0===n.path.length&&"replace"===n.op){e=n.value;break}}r>-1&&(t=t.slice(r+1));const n=ta(Ji).applyPatches_;return Mi(e)?n(e,t):this.produce(e,e=>n(e,t))}}).produce;function Sa(e){return({dispatch:t,getState:r})=>n=>i=>"function"==typeof i?i(t,r,e):n(i)}var ka=Sa(),_a=Sa,Ma="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?vi:vi.apply(null,arguments)};function Ta(e,t){function r(...r){if(t){let n=t(...r);if(!n)throw new Error(jo(0));return{type:e,payload:n.payload,..."meta"in n&&{meta:n.meta},..."error"in n&&{error:n.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>gi(t)&&t.type===e,r}var Ca=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function Ia(e){return Ti(e)?Aa(e,()=>{}):e}function Da(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}var Na="RTK_autoBatch",za=()=>e=>({payload:e,meta:{[Na]:!0}}),Ra=e=>t=>{setTimeout(t,e)},La=(e={type:"raf"})=>t=>(...r)=>{const n=t(...r);let i=!0,a=!1,o=!1;const c=new Set,l="tick"===e.type?queueMicrotask:"raf"===e.type?"undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:Ra(10):"callback"===e.type?e.queueNotification:Ra(e.timeout),u=()=>{o=!1,a&&(a=!1,c.forEach(e=>e()))};return Object.assign({},n,{subscribe(e){const t=n.subscribe(()=>i&&e());return c.add(e),()=>{t(),c.delete(e)}},dispatch(e){var t;try{return i=!(null==(t=null==e?void 0:e.meta)?void 0:t[Na]),a=!i,a&&(o||(o=!0,l(u))),n.dispatch(e)}finally{i=!0}}})};function Ba(e){const t={},r=[];let n;const i={addCase(e,r){const n="string"==typeof e?e:e.type;if(!n)throw new Error(jo(28));if(n in t)throw new Error(jo(29));return t[n]=r,i},addAsyncThunk:(e,n)=>(n.pending&&(t[e.pending.type]=n.pending),n.rejected&&(t[e.rejected.type]=n.rejected),n.fulfilled&&(t[e.fulfilled.type]=n.fulfilled),n.settled&&r.push({matcher:e.settled,reducer:n.settled}),i),addMatcher:(e,t)=>(r.push({matcher:e,reducer:t}),i),addDefaultCase:e=>(n=e,i)};return e(i),[t,r,n]}var Ka=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t},Fa=Symbol.for("rtk-slice-createasyncthunk");function Ua(e,t){return`${e}/${t}`}function Wa({creators:e}={}){var t;const r=null==(t=null==e?void 0:e.asyncThunk)?void 0:t[Fa];return function(e){const{name:t,reducerPath:n=t}=e;if(!t)throw new Error(jo(11));const i=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},a=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},c={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error(jo(12));if(r in o.sliceCaseReducersByType)throw new Error(jo(13));return o.sliceCaseReducersByType[r]=t,c},addMatcher:(e,t)=>(o.sliceMatchers.push({matcher:e,reducer:t}),c),exposeAction:(e,t)=>(o.actionCreators[e]=t,c),exposeCaseReducer:(e,t)=>(o.sliceCaseReducersByName[e]=t,c)};function l(){const[t={},r=[],n]="function"==typeof e.extraReducers?Ba(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return function(e){let t,[a,c,l]=Ba(e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);n&&e.addDefaultCase(n)});if("function"==typeof e)t=()=>Ia(e());else{const r=Ia(e);t=()=>r}function u(e=t(),r){let n=[a[r.type],...c.filter(({matcher:e})=>e(r)).map(({reducer:e})=>e)];return 0===n.filter(e=>!!e).length&&(n=[l]),n.reduce((e,t)=>{if(t){if(Mi(e)){const n=t(e,r);return void 0===n?e:n}if(Ti(e))return Aa(e,e=>t(e,r));{const n=t(e,r);if(void 0===n){if(null===e)return e;throw Error("A case reducer on a non-draftable value must not return undefined")}return n}}return e},e)}return u.getInitialState=t,u}(e.initialState)}a.forEach(n=>{const a=i[n],o={reducerName:n,type:Ua(t,n),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(a)?function({type:e,reducerName:t,createNotation:r},n,i){let a,o;if("reducer"in n){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(n))throw new Error(jo(17));a=n.reducer,o=n.prepare}else a=n;i.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,o?Ta(e,o):Ta(e))}(o,a,c):function({type:e,reducerName:t},r,n,i){if(!i)throw new Error(jo(18));const{payloadCreator:a,fulfilled:o,pending:c,rejected:l,settled:u,options:s}=r,f=i(e,a,s);n.exposeAction(t,f),o&&n.addCase(f.fulfilled,o),c&&n.addCase(f.pending,c),l&&n.addCase(f.rejected,l),u&&n.addMatcher(f.settled,u),n.exposeCaseReducer(t,{fulfilled:o||Va,pending:c||Va,rejected:l||Va,settled:u||Va})}(o,a,c,r)});const u=e=>e,s=new Map,f=new WeakMap;let d;function p(e,t){return d||(d=l()),d(e,t)}function h(){return d||(d=l()),d.getInitialState()}function y(t,r=!1){function n(e){let i=e[t];return void 0===i&&r&&(i=Da(f,n,h)),i}function i(t=u){const n=Da(s,r,()=>new WeakMap);return Da(n,t,()=>{const n={};for(const[i,a]of Object.entries(e.selectors??{}))n[i]=$a(a,t,()=>Da(f,t,h),r);return n})}return{reducerPath:t,getSelectors:i,get selectors(){return i(n)},selectSlice:n}}const v={name:t,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:h,...y(n),injectInto(e,{reducerPath:t,...r}={}){const i=t??n;return e.inject({reducerPath:i,reducer:p},r),{...v,...y(i,!0)}}};return v}}function $a(e,t,r,n){function i(i,...a){let o=t(i);return void 0===o&&n&&(o=r()),e(o,...a)}return i.unwrapped=e,i}var Ha=Wa();function Va(){}var qa="listener",Ya="completed",Ga="cancelled",Xa=`task-${Ga}`,Za=`task-${Ya}`,Qa=`${qa}-${Ga}`,Ja=`${qa}-${Ya}`,eo=class{constructor(e){t(this,"name","TaskAbortError"),t(this,"message"),this.code=e,this.message=`task ${Ga} (reason: ${e})`}},to=(e,t)=>{if("function"!=typeof e)throw new TypeError(jo(32))},ro=()=>{},no=(e,t=ro)=>(e.catch(t),e),io=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),ao=e=>{if(e.aborted)throw new eo(e.reason)};function oo(e,t){let r=ro;return new Promise((n,i)=>{const a=()=>i(new eo(e.reason));e.aborted?a():(r=io(e,a),t.finally(()=>r()).then(n,i))}).finally(()=>{r=ro})}var co=e=>t=>no(oo(e,t).then(t=>(ao(e),t))),lo=e=>{const t=co(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:uo}=Object,so={},fo="listenerMiddleware",po=(e,t)=>(r,n)=>{to(r);const i=new AbortController;var a;a=i,io(e,()=>a.abort(e.reason));const o=(async(t,n)=>{try{return await Promise.resolve(),{status:"ok",value:await(async()=>{ao(e),ao(i.signal);const t=await r({pause:co(i.signal),delay:lo(i.signal),signal:i.signal});return ao(i.signal),t})()}}catch(a){return{status:a instanceof eo?"cancelled":"rejected",error:a}}finally{null==n||n()}})(0,()=>i.abort(Za));return(null==n?void 0:n.autoJoin)&&t.push(o.catch(ro)),{result:co(e)(o),cancel(){i.abort(Xa)}}},ho=e=>{let{type:t,actionCreator:r,matcher:n,predicate:i,effect:a}=e;if(t)i=Ta(t).match;else if(r)t=r.type,i=r.match;else if(n)i=n;else if(!i)throw new Error(jo(21));return to(a),{predicate:i,type:t,effect:a}},yo=uo(e=>{const{type:t,predicate:r,effect:n}=ho(e);return{id:Ka(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(jo(22))}}},{withTypes:()=>yo}),vo=(e,t)=>{const{type:r,effect:n,predicate:i}=ho(t);return Array.from(e.values()).find(e=>("string"==typeof r?e.type===r:e.predicate===i)&&e.effect===n)},go=e=>{e.pending.forEach(e=>{e.abort(Qa)})},mo=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},bo=uo(Ta(`${fo}/add`),{withTypes:()=>bo}),xo=Ta(`${fo}/removeAll`),wo=uo(Ta(`${fo}/remove`),{withTypes:()=>wo}),Oo=(...e)=>{},Po=(e={})=>{const t=new Map,r=new Map,{extra:n,onError:i=Oo}=e;to(i);const a=e=>{return(r=vo(t,e)??yo(e)).unsubscribe=()=>t.delete(r.id),t.set(r.id,r),e=>{r.unsubscribe(),(null==e?void 0:e.cancelActive)&&go(r)};var r};uo(a,{withTypes:()=>a});const o=e=>{const r=vo(t,e);return r&&(r.unsubscribe(),e.cancelActive&&go(r)),!!r};uo(o,{withTypes:()=>o});const c=async(e,o,c,l)=>{const u=new AbortController,s=((e,t)=>(r,n)=>no((async(r,n)=>{ao(t);let i=()=>{};const a=[new Promise((t,n)=>{let a=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});i=()=>{a(),n()}})];null!=n&&a.push(new Promise(e=>setTimeout(e,n,null)));try{const e=await oo(t,Promise.race(a));return ao(t),e}finally{i()}})(r,n)))(a,u.signal),f=[];try{e.pending.add(u),(e=>{const t=r.get(e)??0;r.set(e,t+1)})(e),await Promise.resolve(e.effect(o,uo({},c,{getOriginalState:l,condition:(e,t)=>s(e,t).then(Boolean),take:s,delay:lo(u.signal),pause:co(u.signal),extra:n,signal:u.signal,fork:po(u.signal,f),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,r)=>{e!==u&&(e.abort(Qa),r.delete(e))})},cancel:()=>{u.abort(Qa),e.pending.delete(u)},throwIfCancelled:()=>{ao(u.signal)}})))}catch(d){d instanceof eo||mo(i,d,{raisedBy:"effect"})}finally{await Promise.all(f),u.abort(Ja),(e=>{const t=r.get(e)??1;1===t?r.delete(e):r.set(e,t-1)})(e),e.pending.delete(u)}},l=((e,t)=>()=>{for(const e of t.keys())go(e);e.clear()})(t,r);return{middleware:e=>r=>n=>{if(!gi(n))return r(n);if(bo.match(n))return a(n.payload);if(xo.match(n))return void l();if(wo.match(n))return o(n.payload);let u=e.getState();const s=()=>{if(u===so)throw new Error(jo(23));return u};let f;try{if(f=r(n),t.size>0){const r=e.getState(),a=Array.from(t.values());for(const t of a){let a=!1;try{a=t.predicate(n,r,u)}catch(d){a=!1,mo(i,d,{raisedBy:"predicate"})}a&&c(t,n,e,s)}}}finally{u=so}return f},startListening:a,stopListening:o,clearListeners:l}};function jo(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Eo=Ha({name:"chartLayout",initialState:{layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){var r,n,i,a;e.margin.top=null!==(r=t.payload.top)&&void 0!==r?r:0,e.margin.right=null!==(n=t.payload.right)&&void 0!==n?n:0,e.margin.bottom=null!==(i=t.payload.bottom)&&void 0!==i?i:0,e.margin.left=null!==(a=t.payload.left)&&void 0!==a?a:0},setScale(e,t){e.scale=t.payload}}}),{setMargin:Ao,setLayout:So,setChartSize:ko,setScale:_o}=Eo.actions,Mo=Eo.reducer;function To(e,t,r){return Array.isArray(e)&&e&&t+r!==0?e.slice(t,r+1):e}function Co(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Io(e){for(var t=1;t"horizontal"===e&&"xAxis"===t||"vertical"===e&&"yAxis"===t||"centric"===e&&"angleAxis"===t||"radial"===e&&"radiusAxis"===t,Ro=(e,t,r,n)=>{if(n)return e.map(e=>e.coordinate);var i,a,o=e.map(e=>(e.coordinate===t&&(i=!0),e.coordinate===r&&(a=!0),e.coordinate));return i||o.push(t),a||o.push(r),o},Lo=(e,t,r)=>{if(!e)return null;var{duplicateDomain:n,type:i,range:a,scale:o,realScaleType:c,isCategorical:l,categoricalDomain:u,tickCount:s,ticks:f,niceTicks:d,axisType:p}=e;if(!o)return null;var h="scaleBand"===c&&o.bandwidth?o.bandwidth()/2:2,y="category"===i&&o.bandwidth?o.bandwidth()/h:0;return y="angleAxis"===p&&a&&a.length>=2?2*Qe(a[0]-a[1])*y:y,f||d?(f||d||[]).map((e,t)=>{var r=n?n.indexOf(e):e;return{coordinate:o(r)+y,value:e,offset:y,index:t}}).filter(e=>!Je(e.coordinate)):l&&u?u.map((e,t)=>({coordinate:o(e)+y,value:e,index:t,offset:y})):o.ticks&&null!=s?o.ticks(s).map((e,t)=>({coordinate:o(e)+y,value:e,offset:y,index:t})):o.domain().map((e,t)=>({coordinate:o(e)+y,value:n?n[e]:e,index:t,offset:y}))},Bo=1e-4,Ko={sign:e=>{var t=e.length;if(!(t<=0))for(var r=0,n=e[0].length;r=0?(e[o][r][0]=i,e[o][r][1]=i+c,i=e[o][r][1]):(e[o][r][0]=a,e[o][r][1]=a+c,a=e[o][r][1])}},expand:function(e,t){if((n=e.length)>0){for(var r,n,i,a=0,o=e[0].length;a0){for(var r,n=0,i=e[t[0]],a=i.length;n0&&(n=(r=e[t[0]]).length)>0){for(var r,n,i,a=0,o=1;o{var t=e.length;if(!(t<=0))for(var r=0,n=e[0].length;r=0?(e[a][r][0]=i,e[a][r][1]=i+o,i=e[a][r][1]):(e[a][r][0]=0,e[a][r][1]=0)}}},Fo=(e,t,r)=>{var n=Ko[r],i=function(){var e=A([]),t=Se,r=Ae,n=ke;function i(i){var a,o,c=Array.from(e.apply(this,arguments),_e),l=c.length,u=-1;for(const e of i)for(a=0,++u;aNumber(No(e,t,0))).order(Se).offset(n);return i(e)};function Uo(e){var{axis:t,ticks:r,bandSize:n,entry:i,index:a,dataKey:o}=e;if("category"===t.type){if(!t.allowDuplicatedCategory&&t.dataKey&&!ut(i[t.dataKey])){var c=lt(r,"value",i[t.dataKey]);if(c)return c.coordinate+n/2}return r[a]?r[a].coordinate+n/2:null}var l=No(i,ut(o)?t.dataKey:o);return ut(l)?null:t.scale(l)}var Wo=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,$o=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Ho=(e,t,r)=>{if(e&&e.scale&&e.scale.bandwidth){var n=e.scale.bandwidth();if(!r||n>0)return n}if(e&&t&&t.length>=2){for(var i=ai(t,e=>e.coordinate),a=1/0,o=1,c=i.length;oe.layout.width,Go=e=>e.layout.height,Xo=e=>e.layout.scale,Zo=e=>e.layout.margin,Qo=Nn(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),Jo=Nn(e=>e.cartesianAxis.yAxis,e=>Object.values(e)),ec=["#1890FF","#66B5FF","#41D9C7","#2FC25B","#6EDB8F","#9AE65C","#FACC14","#E6965C","#57AD71","#223273","#738AE6","#7564CC","#8543E0","#A877ED","#5C8EE6","#13C2C2","#70E0E0","#5CA3E6","#3436C7","#8082FF","#DD81E6","#F04864","#FA7D92","#D598D9"];function tc(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function rc(e){for(var t=1;te.brush.height,function(e){return Jo(e).reduce((e,t)=>"left"!==t.orientation||t.mirror||t.hide?e:e+("number"==typeof t.width?t.width:60),0)},function(e){return Jo(e).reduce((e,t)=>"right"!==t.orientation||t.mirror||t.hide?e:e+("number"==typeof t.width?t.width:60),0)},function(e){return Qo(e).reduce((e,t)=>"top"!==t.orientation||t.mirror||t.hide?e:e+t.height,0)},function(e){return Qo(e).reduce((e,t)=>"bottom"!==t.orientation||t.mirror||t.hide?e:e+t.height,0)},oi,e=>e.legend.size],(e,t,r,n,i,a,o,c,l,u)=>{var s={left:(r.left||0)+i,right:(r.right||0)+a},f=rc(rc({},{top:(r.top||0)+o,bottom:(r.bottom||0)+c}),s),d=f.bottom;f.bottom+=n,f=((e,t,r)=>{if(t&&r){var{width:n,height:i}=r,{align:a,verticalAlign:o,layout:c}=t;if(("vertical"===c||"horizontal"===c&&"middle"===o)&&"center"!==a&&tt(e[a]))return Io(Io({},e),{},{[a]:e[a]+(n||0)});if(("horizontal"===c||"vertical"===c&&"center"===a)&&"middle"!==o&&tt(e[o]))return Io(Io({},e),{},{[o]:e[o]+(i||0)})}return e})(f,l,u);var p=e-f.left-f.right,h=t-f.top-f.bottom;return rc(rc({brushBottom:d},f),{},{width:Math.max(p,0),height:Math.max(h,0)})}),sc=Nn(uc,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),fc=Nn(Yo,Go,(e,t)=>({x:0,y:0,width:e,height:t})),dc=r.createContext(null),pc=()=>null!=r.useContext(dc),hc=e=>e.brush,yc=Nn([hc,uc,Zo],(e,t,r)=>({height:e.height,x:tt(e.x)?e.x:t.left,y:tt(e.y)?e.y:t.top+t.height+t.brushBottom-((null==r?void 0:r.bottom)||0),width:tt(e.width)?e.width:t.width})),vc={},gc={},mc={};function bc(){return ic||(ic=1,e=mc,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.debounce=function(e,t,{signal:r,edges:n}={}){let i,a=null;const o=null!=n&&n.includes("leading"),c=null==n||n.includes("trailing"),l=()=>{null!==a&&(e.apply(i,a),i=void 0,a=null)};let u=null;const s=()=>{null!=u&&clearTimeout(u),u=setTimeout(()=>{u=null,c&&l(),f()},t)},f=()=>{null!==u&&(clearTimeout(u),u=null),i=void 0,a=null},d=function(...e){if(null==r?void 0:r.aborted)return;i=this,a=e;const t=null==u;s(),o&&t&&l()};return d.schedule=s,d.cancel=f,d.flush=()=>{l()},null==r||r.addEventListener("abort",f,{once:!0}),d}),mc;var e}function xc(){return ac||(ac=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=bc();e.debounce=function(e,r=0,n={}){"object"!=typeof n&&(n={});const{leading:i=!1,trailing:a=!0,maxWait:o}=n,c=Array(2);let l;i&&(c[0]="leading"),a&&(c[1]="trailing");let u=null;const s=t.debounce(function(...t){l=e.apply(this,t),u=null},r,{edges:c}),f=function(...t){return null!=o&&(null===u&&(u=Date.now()),Date.now()-u>=o)?(l=e.apply(this,t),u=Date.now(),s.cancel(),s.schedule(),l):(s.apply(this,t),l)};return f.cancel=s.cancel,f.flush=()=>(s.flush(),l),f}}(gc)),gc}function wc(){return lc?cc:(lc=1,cc=(oc||(oc=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=xc();e.throttle=function(e,r=0,n={}){const{leading:i=!0,trailing:a=!0}=n;return t.debounce(e,r,{leading:i,maxWait:r,trailing:a})}}(vc)),vc).throttle)}const Oc=l(wc());var Pc=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),i=2;i{var{width:n="100%",height:i="100%",aspect:a,maxHeight:o}=r,c=et(n)?e:Number(n),l=et(i)?t:Number(i);return a&&a>0&&(c?l=c/a:l&&(c=l*a),o&&null!=l&&l>o&&(l=o)),{calculatedWidth:c,calculatedHeight:l}},Ec={width:0,height:0,overflow:"visible"},Ac={width:0,overflowX:"visible"},Sc={height:0,overflowY:"visible"},kc={},_c=e=>{var{width:t,height:r}=e,n=et(t),i=et(r);return n&&i?Ec:n?Ac:i?Sc:kc};function Mc(e){return Number.isFinite(e)}function Tc(e){return"number"==typeof e&&e>0&&Number.isFinite(e)}function Cc(){return Cc=Object.assign?Object.assign.bind():function(e){for(var t=1;t({width:n,height:i}),[n,i]);return function(e){return Tc(e.width)&&Tc(e.height)}(a)?r.createElement(zc.Provider,{value:a},t):null}var Lc=()=>r.useContext(zc),Bc=r.forwardRef((e,t)=>{var{aspect:n,initialDimension:i={width:-1,height:-1},width:a,height:o,minWidth:c=0,minHeight:l,maxHeight:u,children:f,debounce:d=0,id:p,className:h,onResize:y,style:v={}}=e,g=r.useRef(null),m=r.useRef();m.current=y,r.useImperativeHandle(t,()=>g.current);var[b,x]=r.useState({containerWidth:i.width,containerHeight:i.height}),w=r.useCallback((e,t)=>{x(r=>{var n=Math.round(e),i=Math.round(t);return r.containerWidth===n&&r.containerHeight===i?r:{containerWidth:n,containerHeight:i}})},[]);r.useEffect(()=>{if(null==g.current||"undefined"==typeof ResizeObserver)return dt;var e=e=>{var t,{width:r,height:n}=e[0].contentRect;w(r,n),null===(t=m.current)||void 0===t||t.call(m,r,n)};d>0&&(e=Oc(e,d,{trailing:!0,leading:!1}));var t=new ResizeObserver(e),{width:r,height:n}=g.current.getBoundingClientRect();return w(r,n),t.observe(g.current),()=>{t.disconnect()}},[w,d]);var{containerWidth:O,containerHeight:P}=b;Pc(!n||n>0,"The aspect(%s) must be greater than zero.",n);var{calculatedWidth:j,calculatedHeight:E}=jc(O,P,{width:a,height:o,aspect:n,maxHeight:u});return Pc(null!=j&&j>0||null!=E&&E>0,"The width(%s) and height(%s) of chart should be greater than 0,\n please check the style of container, or the props width(%s) and height(%s),\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\n height and width.",j,E,a,o,c,l,n),r.createElement("div",{id:p?"".concat(p):void 0,className:s("recharts-responsive-container",h),style:Dc(Dc({},v),{},{width:a,height:o,minWidth:c,minHeight:l,maxHeight:u}),ref:g},r.createElement("div",{style:_c({width:a,height:o})},r.createElement(Rc,{width:j,height:E},f)))}),Kc=r.forwardRef((e,t)=>{var n=Lc();if(Tc(n.width)&&Tc(n.height))return e.children;var{width:i,height:a}=function(e){var{width:t,height:r,aspect:n}=e,i=t,a=r;return void 0===i&&void 0===a?(i="100%",a="100%"):void 0===i?i=n&&n>0?void 0:"100%":void 0===a&&(a=n&&n>0?void 0:"100%"),{width:i,height:a}}({width:e.width,height:e.height,aspect:e.aspect}),{calculatedWidth:o,calculatedHeight:c}=jc(void 0,void 0,{width:i,height:a,aspect:e.aspect,maxHeight:e.maxHeight});return tt(o)&&tt(c)?r.createElement(Rc,{width:o,height:c},e.children):r.createElement(Bc,Cc({},e,{width:i,height:a,ref:t}))});function Fc(e){if(e)return{x:e.x,y:e.y,upperWidth:"upperWidth"in e?e.upperWidth:e.width,lowerWidth:"lowerWidth"in e?e.lowerWidth:e.width,width:e.width,height:e.height}}var Uc=()=>{var e,t=pc(),r=kn(sc),n=kn(yc),i=null===(e=kn(hc))||void 0===e?void 0:e.padding;return t&&n&&i?{width:n.width-i.left-i.right,height:n.height-i.top-i.bottom,x:i.left,y:i.top}:r},Wc={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},$c=()=>{var e;return null!==(e=kn(uc))&&void 0!==e?e:Wc},Hc=()=>kn(Yo),Vc=()=>kn(Go),qc=e=>e.layout.layoutType,Yc=()=>kn(qc),Gc=e=>{var t=jn(),n=pc(),{width:i,height:a}=e,o=Lc(),c=i,l=a;return o&&(c=o.width>0?o.width:i,l=o.height>0?o.height:a),r.useEffect(()=>{!n&&Tc(c)&&Tc(l)&&t(ko({width:c,height:l}))},[t,n,c,l]),null},Xc=e=>{var{margin:t}=e,n=jn();return r.useEffect(()=>{n(Ao(t))},[n,t]),null},Zc=Symbol.for("immer-nothing"),Qc=Symbol.for("immer-draftable"),Jc=Symbol.for("immer-state");function el(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var tl=Object.getPrototypeOf;function rl(e){return!!e&&!!e[Jc]}function nl(e){var t;return!!e&&(ol(e)||Array.isArray(e)||!!e[Qc]||!!(null==(t=e.constructor)?void 0:t[Qc])||fl(e)||dl(e))}var il=Object.prototype.constructor.toString(),al=new WeakMap;function ol(e){if(!e||"object"!=typeof e)return!1;const t=Object.getPrototypeOf(e);if(null===t||t===Object.prototype)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(r===Object)return!0;if("function"!=typeof r)return!1;let n=al.get(r);return void 0===n&&(n=Function.toString.call(r),al.set(r,n)),n===il}function cl(e,t,r=!0){0===ll(e)?(r?Reflect.ownKeys(e):Object.keys(e)).forEach(r=>{t(r,e[r],e)}):e.forEach((r,n)=>t(n,r,e))}function ll(e){const t=e[Jc];return t?t.type_:Array.isArray(e)?1:fl(e)?2:dl(e)?3:0}function ul(e,t){return 2===ll(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function sl(e,t,r){const n=ll(e);2===n?e.set(t,r):3===n?e.add(r):e[t]=r}function fl(e){return e instanceof Map}function dl(e){return e instanceof Set}function pl(e){return e.copy_||e.base_}function hl(e,t){if(fl(e))return new Map(e);if(dl(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const r=ol(e);if(!0===t||"class_only"===t&&!r){const t=Object.getOwnPropertyDescriptors(e);delete t[Jc];let r=Reflect.ownKeys(t);for(let n=0;n1&&Object.defineProperties(e,{set:vl,add:vl,clear:vl,delete:vl}),Object.freeze(e),t&&Object.values(e).forEach(e=>yl(e,!0))),e}var vl={value:function(){el(2)}};function gl(e){return null===e||"object"!=typeof e||Object.isFrozen(e)}var ml,bl={};function xl(e){const t=bl[e];return t||el(0),t}function wl(){return ml}function Ol(e,t){t&&(xl("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Pl(e){jl(e),e.drafts_.forEach(Al),e.drafts_=null}function jl(e){e===ml&&(ml=e.parent_)}function El(e){return ml={drafts_:[],parent_:ml,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Al(e){const t=e[Jc];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function Sl(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[Jc].modified_&&(Pl(t),el(4)),nl(e)&&(e=kl(t,e),t.parent_||Ml(t,e)),t.patches_&&xl("Patches").generateReplacementPatches_(r[Jc].base_,e,t.patches_,t.inversePatches_)):e=kl(t,r,[]),Pl(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==Zc?e:void 0}function kl(e,t,r){if(gl(t))return t;const n=e.immer_.shouldUseStrictIteration(),i=t[Jc];if(!i)return cl(t,(n,a)=>_l(e,i,t,n,a,r),n),t;if(i.scope_!==e)return t;if(!i.modified_)return Ml(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let a=t,o=!1;3===i.type_&&(a=new Set(t),t.clear(),o=!0),cl(a,(n,a)=>_l(e,i,t,n,a,r,o),n),Ml(e,t,!1),r&&e.patches_&&xl("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function _l(e,t,r,n,i,a,o){if(null==i)return;if("object"!=typeof i&&!o)return;const c=gl(i);if(!c||o){if(rl(i)){const o=kl(e,i,a&&t&&3!==t.type_&&!ul(t.assigned_,n)?a.concat(n):void 0);if(sl(r,n,o),!rl(o))return;e.canAutoFreeze_=!1}else o&&r.add(i);if(nl(i)&&!c){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;if(t&&t.base_&&t.base_[n]===i&&c)return;kl(e,i),t&&t.scope_.parent_||"symbol"==typeof n||!(fl(r)?r.has(n):Object.prototype.propertyIsEnumerable.call(r,n))||Ml(e,i)}}}function Ml(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&yl(t,r)}var Tl={get(e,t){if(t===Jc)return e;const r=pl(e);if(!ul(r,t))return function(e,t,r){var n;const i=Dl(t,r);return i?"value"in i?i.value:null==(n=i.get)?void 0:n.call(e.draft_):void 0}(e,r,t);const n=r[t];return e.finalized_||!nl(n)?n:n===Il(e.base_,t)?(zl(e),e.copy_[t]=Rl(n,e)):n},has:(e,t)=>t in pl(e),ownKeys:e=>Reflect.ownKeys(pl(e)),set(e,t,r){const n=Dl(pl(e),t);if(null==n?void 0:n.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const n=Il(pl(e),t),o=null==n?void 0:n[Jc];if(o&&o.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((i=r)===(a=n)?0!==i||1/i==1/a:i!=i&&a!=a)&&(void 0!==r||ul(e.base_,t)))return!0;zl(e),Nl(e)}var i,a;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==Il(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,zl(e),Nl(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=pl(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:n.enumerable,value:r[t]}:n},defineProperty(){el(11)},getPrototypeOf:e=>tl(e.base_),setPrototypeOf(){el(12)}},Cl={};function Il(e,t){const r=e[Jc];return(r?pl(r):e)[t]}function Dl(e,t){if(!(t in e))return;let r=tl(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=tl(r)}}function Nl(e){e.modified_||(e.modified_=!0,e.parent_&&Nl(e.parent_))}function zl(e){e.copy_||(e.copy_=hl(e.base_,e.scope_.immer_.useStrictShallowCopy_))}function Rl(e,t){const r=fl(e)?xl("MapSet").proxyMap_(e,t):dl(e)?xl("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:wl(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let i=n,a=Tl;r&&(i=[n],a=Cl);const{revoke:o,proxy:c}=Proxy.revocable(i,a);return n.draft_=c,n.revoke_=o,c}(e,t);return(t?t.scope_:wl()).drafts_.push(r),r}function Ll(e){if(!nl(e)||gl(e))return e;const t=e[Jc];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=hl(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=hl(e,!0);return cl(r,(e,t)=>{sl(r,e,Ll(t))},n),t&&(t.finalized_=!1),r}cl(Tl,(e,t)=>{Cl[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),Cl.deleteProperty=function(e,t){return Cl.set.call(this,e,t,void 0)},Cl.set=function(e,t,r){return Tl.set.call(this,e[0],t,r,e[0])},(new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const n=this;return function(e=r,...i){return n.produce(e,e=>t.call(this,e,...i))}}let n;if("function"!=typeof t&&el(6),void 0!==r&&"function"!=typeof r&&el(7),nl(e)){const i=El(this),a=Rl(e,void 0);let o=!0;try{n=t(a),o=!1}finally{o?Pl(i):jl(i)}return Ol(i,r),Sl(n,i)}if(!e||"object"!=typeof e){if(n=t(e),void 0===n&&(n=e),n===Zc&&(n=void 0),this.autoFreeze_&&yl(n,!0),r){const t=[],i=[];xl("Patches").generateReplacementPatches_(e,n,t,i),r(t,i)}return n}el(1)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,t=>e(t,...r));let r,n;return[this.produce(e,t,(e,t)=>{r=e,n=t}),r,n]},"boolean"==typeof(null==e?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof(null==e?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),"boolean"==typeof(null==e?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){var t;nl(e)||el(8),rl(e)&&(rl(t=e)||el(10),e=Ll(t));const r=El(this),n=Rl(e,void 0);return n[Jc].isManual_=!0,jl(r),n}finishDraft(e,t){const r=e&&e[Jc];r&&r.isManual_||el(9);const{scope_:n}=r;return Ol(n,t),Sl(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const n=t[r];if(0===n.path.length&&"replace"===n.op){e=n.value;break}}r>-1&&(t=t.slice(r+1));const n=xl("Patches").applyPatches_;return rl(e)?n(e,t):this.produce(e,e=>n(e,t))}}).produce;var Bl=Ha({name:"legend",initialState:{settings:{layout:"horizontal",align:"center",verticalAlign:"middle",itemSorter:"value"},size:{width:0,height:0},payload:[]},reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter},addLegendPayload:{reducer(e,t){e.payload.push(t.payload)},prepare:za()},replaceLegendPayload:{reducer(e,t){var{prev:r,next:n}=t.payload,i=ja(e).payload.indexOf(r);i>-1&&(e.payload[i]=n)},prepare:za()},removeLegendPayload:{reducer(e,t){var r=ja(e).payload.indexOf(t.payload);r>-1&&e.payload.splice(r,1)},prepare:za()}}}),{setLegendSize:Kl,setLegendSettings:Fl,addLegendPayload:Ul,replaceLegendPayload:Wl,removeLegendPayload:$l}=Bl.actions,Hl=Bl.reducer,Vl=["contextPayload"];function ql(){return ql=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t(Fl(e))},[t,e]),null}function eu(e){var t=jn();return r.useEffect(()=>(t(Kl(e)),()=>{t(Kl({width:0,height:0}))}),[t,e]),null}var tu={align:"center",iconSize:14,itemSorter:"value",layout:"horizontal",verticalAlign:"bottom"};function ru(e){var t=At(e,tu),n=kn(ci),a=r.useContext(E),o=kn(e=>e.layout.margin),{width:c,height:l,wrapperStyle:u,portal:s}=t,[f,d]=li([n]),p=Hc(),h=Vc();if(null==p||null==h)return null;var y=p-((null==o?void 0:o.left)||0)-((null==o?void 0:o.right)||0),v=function(e,t,r,n){return"vertical"===e&&tt(t)?{height:t}:"horizontal"===e?{width:r||n}:null}(t.layout,l,c,y),g=s?u:Gl(Gl({position:"absolute",width:(null==v?void 0:v.width)||c||"auto",height:(null==v?void 0:v.height)||l||"auto"},function(e,t,r,n,i,a){var o,c,{layout:l,align:u,verticalAlign:s}=t;return e&&(void 0!==e.left&&null!==e.left||void 0!==e.right&&null!==e.right)||(o="center"===u&&"vertical"===l?{left:((n||0)-a.width)/2}:"right"===u?{right:r&&r.right||0}:{left:r&&r.left||0}),e&&(void 0!==e.top&&null!==e.top||void 0!==e.bottom&&null!==e.bottom)||(c="middle"===s?{top:((i||0)-a.height)/2}:"bottom"===s?{bottom:r&&r.bottom||0}:{top:r&&r.top||0}),Gl(Gl({},o),c)}(u,t,o,p,h,f)),u),m=null!=s?s:a;if(null==m||null==n)return null;var b=r.createElement("div",{className:"recharts-legend-wrapper",style:g,ref:d},r.createElement(Jl,{layout:t.layout,align:t.align,verticalAlign:t.verticalAlign,itemSorter:t.itemSorter}),!s&&r.createElement(eu,{width:f.width,height:f.height}),r.createElement(Ql,ql({},t,v,{margin:o,chartWidth:p,chartHeight:h,contextPayload:n})));return i.createPortal(b,m)}function nu(){return nu=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{separator:t=" : ",contentStyle:n={},itemStyle:i={},labelStyle:a={},payload:o,formatter:c,itemSorter:l,wrapperClassName:u,labelClassName:f,label:d,labelFormatter:p,accessibilityLayer:h=!1}=e,y=au({margin:0,padding:10,backgroundColor:"#fff",border:"1px solid #ccc",whiteSpace:"nowrap"},n),v=au({margin:0},a),g=!ut(d),m=g?d:"",b=s("recharts-default-tooltip",u),x=s("recharts-tooltip-label",f);g&&p&&null!=o&&(m=p(d,o));var w=h?{role:"status","aria-live":"assertive"}:{};return r.createElement("div",nu({className:b,style:y},w),r.createElement("p",{className:x,style:v},r.isValidElement(m)?m:"".concat(m)),(()=>{if(o&&o.length){var e=(l?ai(o,l):o).map((e,n)=>{if("none"===e.type)return null;var a=e.formatter||c||cu,{value:l,name:u}=e,s=l,f=u;if(a){var d=a(l,u,e,n,o);if(Array.isArray(d))[s,f]=d;else{if(null==d)return null;s=d}}var p=au({display:"block",paddingTop:4,paddingBottom:4,color:e.color||"#000"},i);return r.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(n),style:p},rt(f)?r.createElement("span",{className:"recharts-tooltip-item-name"},f):null,rt(f)?r.createElement("span",{className:"recharts-tooltip-item-separator"},t):null,r.createElement("span",{className:"recharts-tooltip-item-value"},s),r.createElement("span",{className:"recharts-tooltip-item-unit"},e.unit||""))});return r.createElement("ul",{className:"recharts-tooltip-item-list",style:{padding:0,margin:0}},e)}return null})())},uu="recharts-tooltip-wrapper",su={visibility:"hidden"};function fu(e){var{coordinate:t,translateX:r,translateY:n}=e;return s(uu,{["".concat(uu,"-right")]:tt(r)&&t&&tt(t.x)&&r>=t.x,["".concat(uu,"-left")]:tt(r)&&t&&tt(t.x)&&r=t.y,["".concat(uu,"-top")]:tt(n)&&t&&tt(t.y)&&n0?i:0),f=r[n]+i;if(t[n])return o[n]?s:f;var d=l[n];return null==d?0:o[n]?sd+u?Math.max(s,d):Math.max(f,d)}function pu(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function hu(e){for(var t=1;t{var t,r,n,i;"Escape"===e.key&&this.setState({dismissed:!0,dismissedAtCoordinate:{x:null!==(t=null===(r=this.props.coordinate)||void 0===r?void 0:r.x)&&void 0!==t?t:0,y:null!==(n=null===(i=this.props.coordinate)||void 0===i?void 0:i.y)&&void 0!==n?n:0}})})}componentDidMount(){document.addEventListener("keydown",this.handleKeyDown)}componentWillUnmount(){document.removeEventListener("keydown",this.handleKeyDown)}componentDidUpdate(){var e,t;this.state.dismissed&&((null===(e=this.props.coordinate)||void 0===e?void 0:e.x)===this.state.dismissedAtCoordinate.x&&(null===(t=this.props.coordinate)||void 0===t?void 0:t.y)===this.state.dismissedAtCoordinate.y||(this.state.dismissed=!1))}render(){var{active:e,allowEscapeViewBox:t,animationDuration:n,animationEasing:i,children:a,coordinate:o,hasPayload:c,isAnimationActive:l,offset:u,position:s,reverseDirection:f,useTranslate3d:d,viewBox:p,wrapperStyle:h,lastBoundingBox:y,innerRef:v,hasPortalFromProps:g}=this.props,{cssClasses:m,cssProperties:b}=function(e){var t,r,n,{allowEscapeViewBox:i,coordinate:a,offsetTopLeft:o,position:c,reverseDirection:l,tooltipBox:u,useTranslate3d:s,viewBox:f}=e;return t=u.height>0&&u.width>0&&a?function(e){var{translateX:t,translateY:r,useTranslate3d:n}=e;return{transform:n?"translate3d(".concat(t,"px, ").concat(r,"px, 0)"):"translate(".concat(t,"px, ").concat(r,"px)")}}({translateX:r=du({allowEscapeViewBox:i,coordinate:a,key:"x",offsetTopLeft:o,position:c,reverseDirection:l,tooltipDimension:u.width,viewBox:f,viewBoxDimension:f.width}),translateY:n=du({allowEscapeViewBox:i,coordinate:a,key:"y",offsetTopLeft:o,position:c,reverseDirection:l,tooltipDimension:u.height,viewBox:f,viewBoxDimension:f.height}),useTranslate3d:s}):su,{cssProperties:t,cssClasses:fu({translateX:r,translateY:n,coordinate:a})}}({allowEscapeViewBox:t,coordinate:o,offsetTopLeft:u,position:s,reverseDirection:f,tooltipBox:{height:y.height,width:y.width},useTranslate3d:d,viewBox:p}),x=g?{}:hu(hu({transition:l&&e?"transform ".concat(n,"ms ").concat(i):void 0},b),{},{pointerEvents:"none",visibility:!this.state.dismissed&&e&&c?"visible":"hidden",position:"absolute",top:0,left:0}),w=hu(hu({},x),{},{visibility:!this.state.dismissed&&e&&c?"visible":"hidden"},h);return r.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:m,style:w,ref:v},a)}}var gu=()=>{var e;return null===(e=kn(e=>e.rootProps.accessibilityLayer))||void 0===e||e};function mu(){return mu=Object.assign?Object.assign.bind():function(e){for(var t=1;tMc(e.x)&&Mc(e.y),ju=e=>null!=e.base&&Pu(e.base)&&Pu(e),Eu=e=>e.x,Au=e=>e.y,Su=e=>{var{className:t,points:n,path:i,pathRef:a}=e;if(!(n&&n.length||i))return null;var o=n&&n.length?(e=>{var{type:t="linear",points:r=[],baseLine:n,layout:i,connectNulls:a=!1}=e,o=((e,t)=>{if("function"==typeof e)return e;var r="curve".concat(st(e));return"curveMonotone"!==r&&"curveBump"!==r||!t?Ou[r]||F:Ou["".concat(r).concat("vertical"===t?"Y":"X")]})(t,i),c=a?r.filter(Pu):r;if(Array.isArray(n)){var l=r.map((e,t)=>xu(xu({},e),{},{base:n[t]}));return("vertical"===i?H().y(Au).x1(Eu).x0(e=>e.base.x):H().x(Eu).y1(Au).y0(e=>e.base.y)).defined(ju).curve(o)(a?l.filter(ju):l)}return("vertical"===i&&tt(n)?H().y(Au).x1(Eu).x0(n):tt(n)?H().x(Eu).y1(Au).y0(n):$().x(Eu).y(Au)).defined(Pu).curve(o)(c)})(e):i;return r.createElement("path",mu({},v(e),Ot(e),{className:s("recharts-curve",t),d:null===o?void 0:o,ref:a}))},ku=["x","y","top","left","width","height","className"];function _u(){return _u=Object.assign?Object.assign.bind():function(e){for(var t=1;t"M".concat(e,",").concat(i,"v").concat(n,"M").concat(a,",").concat(t,"h").concat(r),Iu=e=>{var{x:t=0,y:n=0,top:i=0,left:a=0,width:o=0,height:c=0,className:l}=e,u=function(e){for(var t=1;te.map(e=>{return"".concat((n=e,n.replace(/([A-Z])/g,e=>"-".concat(e.toLowerCase())))," ").concat(t,"ms ").concat(r);var n}).join(","),Lu=(e,t)=>Object.keys(t).reduce((r,n)=>Nu(Nu({},r),{},{[n]:e(n,t[n])}),{});function Bu(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ku(e){for(var t=1;te+(t-e)*r,Wu=e=>{var{from:t,to:r}=e;return t!==r},$u=(e,t,r)=>{var n=Lu((t,r)=>{if(Wu(r)){var[n,i]=e(r.from,r.to,r.velocity);return Ku(Ku({},r),{},{from:n,velocity:i})}return r},t);return r<1?Lu((e,t)=>Wu(t)?Ku(Ku({},t),{},{velocity:Uu(t.velocity,n[e].velocity,r),from:Uu(t.from,n[e].from,r)}):t,t):$u(e,n,r-1)};const Hu=(e,t,r,n,i,a)=>{var o,c,l=(o=e,c=t,[Object.keys(o),Object.keys(c)].reduce((e,t)=>e.filter(e=>t.includes(e))));return null==r?()=>(i(Ku(Ku({},e),t)),()=>{}):!0===r.isStepper?function(e,t,r,n,i,a){var o,c=n.reduce((r,n)=>Ku(Ku({},r),{},{[n]:{from:e[n],velocity:0,to:t[n]}}),{}),l=null,u=n=>{o||(o=n);var s=(n-o)/r.dt;c=$u(r,c,s),i(Ku(Ku(Ku({},e),t),Lu((e,t)=>t.from,c))),o=n,Object.values(c).filter(Wu).length&&(l=a.setTimeout(u))};return()=>(l=a.setTimeout(u),()=>{var e;null===(e=l)||void 0===e||e()})}(e,t,r,l,i,a):function(e,t,r,n,i,a,o){var c,l=null,u=i.reduce((r,n)=>Ku(Ku({},r),{},{[n]:[e[n],t[n]]}),{}),s=i=>{c||(c=i);var f=(i-c)/n,d=Lu((e,t)=>Uu(...t,r(f)),u);if(a(Ku(Ku(Ku({},e),t),d)),f<1)l=o.setTimeout(s);else{var p=Lu((e,t)=>Uu(...t,r(1)),u);a(Ku(Ku(Ku({},e),t),p))}};return()=>(l=o.setTimeout(s),()=>{var e;null===(e=l)||void 0===e||e()})}(e,t,r,n,l,i,a)};var Vu=1e-4,qu=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],Yu=(e,t)=>e.map((e,r)=>e*t**r).reduce((e,t)=>e+t),Gu=(e,t)=>r=>{var n=qu(e,t);return Yu(n,r)},Xu=function(){return((e,t,r,n)=>{var i,a,o=Gu(e,r),c=Gu(t,n),l=(i=e,a=r,e=>{var t=[...qu(i,a).map((e,t)=>e*t).slice(1),0];return Yu(t,e)}),u=e=>e>1?1:e<0?0:e,s=e=>{for(var t=e>1?1:e,r=t,n=0;n<8;++n){var i=o(r)-t,a=l(r);if(Math.abs(i-t)parseFloat(e));return[a[0],a[1],a[2],a[3]]}}return 4===t.length?t:[0,0,1,1]}(...arguments))};class Zu{setTimeout(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=performance.now(),n=null,i=a=>{a-r>=t?e(a):"function"==typeof requestAnimationFrame&&(n=requestAnimationFrame(i))};return n=requestAnimationFrame(i),()=>{null!=n&&cancelAnimationFrame(n)}}}function Qu(){return e=new Zu,t=()=>null,r=!1,n=null,i=a=>{if(!r){if(Array.isArray(a)){if(!a.length)return;var o=a,[c,...l]=o;return"number"==typeof c?void(n=e.setTimeout(i.bind(null,l),c)):(i(c),void(n=e.setTimeout(i.bind(null,l))))}"string"==typeof a&&t(a),"object"==typeof a&&t(a),"function"==typeof a&&a()}},{stop:()=>{r=!0},start:e=>{r=!1,n&&(n(),n=null),i(e)},subscribe:e=>(t=e,()=>{t=()=>null}),getTimeoutController:()=>e};var e,t,r,n,i}var Ju=r.createContext(Qu);function es(e,t){var n=r.useContext(Ju);return r.useMemo(()=>null!=t?t:n(e),[e,t,n])}var ts=!("undefined"!=typeof window&&window.document&&Boolean(window.document.createElement)&&window.setTimeout),rs={begin:0,duration:1e3,easing:"ease",isActive:!0,canBegin:!0,onAnimationEnd:()=>{},onAnimationStart:()=>{}},ns={t:0},is={t:1};function as(e){var t=At(e,rs),{isActive:n,canBegin:i,duration:a,easing:o,begin:c,onAnimationEnd:l,onAnimationStart:u,children:s}=t,f="auto"===n?!ts:n,d=es(t.animationId,t.animationManager),[p,h]=r.useState(f?ns:is),y=r.useRef(null);return r.useEffect(()=>{f||h(is)},[f]),r.useEffect(()=>{if(!f||!i)return dt;var e=Hu(ns,is,(e=>{if("string"==typeof e)switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return Xu(e);case"spring":return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{stiff:t=100,damping:r=8,dt:n=17}=e,i=(e,i,a)=>{var o=a+(-(e-i)*t-a*r)*n/1e3,c=a*n/1e3+e;return Math.abs(c-i){y.current=e()},a,l]),()=>{d.stop(),y.current&&y.current(),l()}},[f,i,a,o,c,u,l,d]),s(p.t)}function os(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"animation-",n=r.useRef(it(t)),i=r.useRef(e);return i.current!==e&&(n.current=it(t),i.current=e),n.current}var cs=["radius"],ls=["radius"];function us(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ss(e){for(var t=1;t{var a,o=Math.min(Math.abs(r)/2,Math.abs(n)/2),c=n>=0?1:-1,l=r>=0?1:-1,u=n>=0&&r>=0||n<0&&r<0?1:0;if(o>0&&i instanceof Array){for(var s=[0,0,0,0],f=0;f<4;f++)s[f]=i[f]>o?o:i[f];a="M".concat(e,",").concat(t+c*s[0]),s[0]>0&&(a+="A ".concat(s[0],",").concat(s[0],",0,0,").concat(u,",").concat(e+l*s[0],",").concat(t)),a+="L ".concat(e+r-l*s[1],",").concat(t),s[1]>0&&(a+="A ".concat(s[1],",").concat(s[1],",0,0,").concat(u,",\n ").concat(e+r,",").concat(t+c*s[1])),a+="L ".concat(e+r,",").concat(t+n-c*s[2]),s[2]>0&&(a+="A ".concat(s[2],",").concat(s[2],",0,0,").concat(u,",\n ").concat(e+r-l*s[2],",").concat(t+n)),a+="L ".concat(e+l*s[3],",").concat(t+n),s[3]>0&&(a+="A ".concat(s[3],",").concat(s[3],",0,0,").concat(u,",\n ").concat(e,",").concat(t+n-c*s[3])),a+="Z"}else if(o>0&&i===+i&&i>0){var d=Math.min(o,i);a="M ".concat(e,",").concat(t+c*d,"\n A ").concat(d,",").concat(d,",0,0,").concat(u,",").concat(e+l*d,",").concat(t,"\n L ").concat(e+r-l*d,",").concat(t,"\n A ").concat(d,",").concat(d,",0,0,").concat(u,",").concat(e+r,",").concat(t+c*d,"\n L ").concat(e+r,",").concat(t+n-c*d,"\n A ").concat(d,",").concat(d,",0,0,").concat(u,",").concat(e+r-l*d,",").concat(t+n,"\n L ").concat(e+l*d,",").concat(t+n,"\n A ").concat(d,",").concat(d,",0,0,").concat(u,",").concat(e,",").concat(t+n-c*d," Z")}else a="M ".concat(e,",").concat(t," h ").concat(r," v ").concat(n," h ").concat(-r," Z");return a},ys={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},vs=e=>{var t=At(e,ys),n=r.useRef(null),[i,a]=r.useState(-1);r.useEffect(()=>{if(n.current&&n.current.getTotalLength)try{var e=n.current.getTotalLength();e&&a(e)}catch(t){}},[]);var{x:o,y:c,width:l,height:u,radius:f,className:d}=t,{animationEasing:p,animationDuration:h,animationBegin:y,isAnimationActive:v,isUpdateAnimationActive:g}=t,b=r.useRef(l),x=r.useRef(u),w=r.useRef(o),O=r.useRef(c),P=os(r.useMemo(()=>({x:o,y:c,width:l,height:u,radius:f}),[o,c,l,u,f]),"rectangle-");if(o!==+o||c!==+c||l!==+l||u!==+u||0===l||0===u)return null;var j=s("recharts-rectangle",d);if(!g){var E=m(t),{radius:A}=E,S=ps(E,cs);return r.createElement("path",ds({},S,{radius:"number"==typeof f?f:void 0,className:j,d:hs(o,c,l,u,f)}))}var k=b.current,_=x.current,M=w.current,T=O.current,C="0px ".concat(-1===i?1:i,"px"),I="".concat(i,"px 0px"),D=Ru(["strokeDasharray"],h,"string"==typeof p?p:ys.animationEasing);return r.createElement(as,{animationId:P,key:P,canBegin:i>0,duration:h,easing:p,isActive:g,begin:y},e=>{var i,a=ct(k,l,e),s=ct(_,u,e),d=ct(M,o,e),p=ct(T,c,e);n.current&&(b.current=a,x.current=s,w.current=d,O.current=p),i=v?e>0?{transition:D,strokeDasharray:I}:{strokeDasharray:C}:{strokeDasharray:I};var h=m(t),{radius:y}=h,g=ps(h,ls);return r.createElement("path",ds({},g,{radius:"number"==typeof f?f:void 0,className:j,d:hs(d,p,a,s,f),ref:n,style:ss(ss({},i),t.style)}))})};function gs(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ms(e){for(var t=1;t180*e/Math.PI,Os=(e,t,r,n)=>({x:e+Math.cos(-xs*n)*r,y:t+Math.sin(-xs*n)*r}),Ps=(e,t)=>{var{startAngle:r,endAngle:n}=t,i=Math.floor(r/360),a=Math.floor(n/360);return e+360*Math.min(i,a)},js=(e,t)=>{var{chartX:r,chartY:n}=e,{radius:i,angle:a}=((e,t)=>{var{x:r,y:n}=e,{cx:i,cy:a}=t,o=((e,t)=>{var{x:r,y:n}=e,{x:i,y:a}=t;return Math.sqrt((r-i)**2+(n-a)**2)})({x:r,y:n},{x:i,y:a});if(o<=0)return{radius:o,angle:0};var c=(r-i)/o,l=Math.acos(c);return n>a&&(l=2*Math.PI-l),{radius:o,angle:ws(l),angleInRadian:l}})({x:r,y:n},t),{innerRadius:o,outerRadius:c}=t;if(ic)return null;if(0===i)return null;var l,{startAngle:u,endAngle:s}=(e=>{var{startAngle:t,endAngle:r}=e,n=Math.floor(t/360),i=Math.floor(r/360),a=Math.min(n,i);return{startAngle:t-360*a,endAngle:r-360*a}})(t),f=a;if(u<=s){for(;f>s;)f-=360;for(;f=u&&f<=s}else{for(;f>u;)f-=360;for(;f=s&&f<=u}return l?ms(ms({},t),{},{radius:i,angle:Ps(f,t)}):null};function Es(e){var{cx:t,cy:r,radius:n,startAngle:i,endAngle:a}=e;return{points:[Os(t,r,n,i),Os(t,r,n,a)],cx:t,cy:r,radius:n,startAngle:i,endAngle:a}}function As(){return As=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:r,radius:n,angle:i,sign:a,isExternal:o,cornerRadius:c,cornerIsExternal:l}=e,u=c*(o?1:-1)+n,s=Math.asin(c/u)/xs,f=l?i:i+a*s,d=l?i-a*s:i;return{center:Os(t,r,u,f),circleTangency:Os(t,r,n,f),lineTangency:Os(t,r,u*Math.cos(s*xs),d),theta:s}},ks=e=>{var{cx:t,cy:r,innerRadius:n,outerRadius:i,startAngle:a,endAngle:o}=e,c=((e,t)=>Qe(t-e)*Math.min(Math.abs(t-e),359.999))(a,o),l=a+c,u=Os(t,r,i,a),s=Os(t,r,i,l),f="M ".concat(u.x,",").concat(u.y,"\n A ").concat(i,",").concat(i,",0,\n ").concat(+(Math.abs(c)>180),",").concat(+(a>l),",\n ").concat(s.x,",").concat(s.y,"\n ");if(n>0){var d=Os(t,r,n,a),p=Os(t,r,n,l);f+="L ".concat(p.x,",").concat(p.y,"\n A ").concat(n,",").concat(n,",0,\n ").concat(+(Math.abs(c)>180),",").concat(+(a<=l),",\n ").concat(d.x,",").concat(d.y," Z")}else f+="L ".concat(t,",").concat(r," Z");return f},_s={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Ms=e=>{var t=At(e,_s),{cx:n,cy:i,innerRadius:a,outerRadius:o,cornerRadius:c,forceCornerRadius:l,cornerIsExternal:u,startAngle:f,endAngle:d,className:p}=t;if(o0&&Math.abs(f-d)<360?(e=>{var{cx:t,cy:r,innerRadius:n,outerRadius:i,cornerRadius:a,forceCornerRadius:o,cornerIsExternal:c,startAngle:l,endAngle:u}=e,s=Qe(u-l),{circleTangency:f,lineTangency:d,theta:p}=Ss({cx:t,cy:r,radius:i,angle:l,sign:s,cornerRadius:a,cornerIsExternal:c}),{circleTangency:h,lineTangency:y,theta:v}=Ss({cx:t,cy:r,radius:i,angle:u,sign:-s,cornerRadius:a,cornerIsExternal:c}),g=c?Math.abs(l-u):Math.abs(l-u)-p-v;if(g<0)return o?"M ".concat(d.x,",").concat(d.y,"\n a").concat(a,",").concat(a,",0,0,1,").concat(2*a,",0\n a").concat(a,",").concat(a,",0,0,1,").concat(2*-a,",0\n "):ks({cx:t,cy:r,innerRadius:n,outerRadius:i,startAngle:l,endAngle:u});var m="M ".concat(d.x,",").concat(d.y,"\n A").concat(a,",").concat(a,",0,0,").concat(+(s<0),",").concat(f.x,",").concat(f.y,"\n A").concat(i,",").concat(i,",0,").concat(+(g>180),",").concat(+(s<0),",").concat(h.x,",").concat(h.y,"\n A").concat(a,",").concat(a,",0,0,").concat(+(s<0),",").concat(y.x,",").concat(y.y,"\n ");if(n>0){var{circleTangency:b,lineTangency:x,theta:w}=Ss({cx:t,cy:r,radius:n,angle:l,sign:s,isExternal:!0,cornerRadius:a,cornerIsExternal:c}),{circleTangency:O,lineTangency:P,theta:j}=Ss({cx:t,cy:r,radius:n,angle:u,sign:-s,isExternal:!0,cornerRadius:a,cornerIsExternal:c}),E=c?Math.abs(l-u):Math.abs(l-u)-w-j;if(E<0&&0===a)return"".concat(m,"L").concat(t,",").concat(r,"Z");m+="L".concat(P.x,",").concat(P.y,"\n A").concat(a,",").concat(a,",0,0,").concat(+(s<0),",").concat(O.x,",").concat(O.y,"\n A").concat(n,",").concat(n,",0,").concat(+(E>180),",").concat(+(s>0),",").concat(b.x,",").concat(b.y,"\n A").concat(a,",").concat(a,",0,0,").concat(+(s<0),",").concat(x.x,",").concat(x.y,"Z")}else m+="L".concat(t,",").concat(r,"Z");return m})({cx:n,cy:i,innerRadius:a,outerRadius:o,cornerRadius:Math.min(g,v/2),forceCornerRadius:l,cornerIsExternal:u,startAngle:f,endAngle:d}):ks({cx:n,cy:i,innerRadius:a,outerRadius:o,startAngle:f,endAngle:d}),r.createElement("path",As({},m(t),{className:y,d:h}))};function Ts(e,t,r){if("horizontal"===e)return[{x:t.x,y:r.top},{x:t.x,y:r.top+r.height}];if("vertical"===e)return[{x:r.left,y:t.y},{x:r.left+r.width,y:t.y}];if(wt(t)){if("centric"===e){var{cx:n,cy:i,innerRadius:a,outerRadius:o,angle:c}=t,l=Os(n,i,a,c),u=Os(n,i,o,c);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return Es(t)}}var Cs,Is,Ds,Ns,zs,Rs={},Ls={},Bs={};function Ks(){return Cs||(Cs=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Vn();e.toNumber=function(e){return t.isSymbol(e)?NaN:Number(e)}}(Bs)),Bs}function Fs(){return Is||(Is=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Ks();e.toFinite=function(e){return e?(e=t.toNumber(e))===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e==e?e:0:0===e?e:0}}(Ls)),Ls}function Us(){return zs?Ns:(zs=1,Ns=(Ds||(Ds=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=ni(),r=Fs();e.range=function(e,n,i){i&&"number"!=typeof i&&t.isIterateeCall(e,n,i)&&(n=i=void 0),e=r.toFinite(e),void 0===n?(n=e,e=0):n=r.toFinite(n),i=void 0===i?et?1:e>=t?0:NaN}function Hs(e,t){return null==e||null==t?NaN:te?1:t>=e?0:NaN}function Vs(e){let t,r,n;function i(e,n,i=0,a=e.length){if(i>>1;r(e[t],n)<0?i=t+1:a=t}while(i$s(e(t),r),n=(t,r)=>e(t)-r):(t=e===$s||e===Hs?e:qs,r=e,n=e),{left:i,center:function(e,t,r=0,a=e.length){const o=i(e,t,r,a-1);return o>r&&n(e[o-1],t)>-n(e[o],t)?o-1:o},right:function(e,n,i=0,a=e.length){if(i>>1;r(e[t],n)<=0?i=t+1:a=t}while(i=e))-(null==t||!(t>=t))||(et?1:0)}const ef=Math.sqrt(50),tf=Math.sqrt(10),rf=Math.sqrt(2);function nf(e,t,r){const n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),o=a>=ef?10:a>=tf?5:a>=rf?2:1;let c,l,u;return i<0?(u=Math.pow(10,-i)/o,c=Math.round(e*u),l=Math.round(t*u),c/ut&&--l,u=-u):(u=Math.pow(10,i)*o,c=Math.round(e/u),l=Math.round(t/u),c*ut&&--l),l0))return[];if((e=+e)===(t=+t))return[e];const n=t=i))return[];const c=a-i+1,l=new Array(c);if(n)if(o<0)for(let u=0;u=n)&&(r=n);return r}function uf(e,t){let r;for(const n of e)null!=n&&(r>n||void 0===r&&n>=n)&&(r=n);return r}function sf(e,t,r=0,n=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(i=void 0===i?Js:function(e=$s){if(e===$s)return Js;if("function"!=typeof e)throw new TypeError("compare is not a function");return(t,r)=>{const n=e(t,r);return n||0===n?n:(0===e(r,r))-(0===e(t,t))}}(i);n>r;){if(n-r>600){const a=n-r+1,o=t-r+1,c=Math.log(a),l=.5*Math.exp(2*c/3),u=.5*Math.sqrt(c*l*(a-l)/a)*(o-a/2<0?-1:1);sf(e,t,Math.max(r,Math.floor(t-o*l/a+u)),Math.min(n,Math.floor(t+(a-o)*l/a+u)),i)}const a=e[t];let o=r,c=n;for(ff(e,r,t),i(e[n],a)>0&&ff(e,r,n);o0;)--c}0===i(e[r],a)?ff(e,r,c):(++c,ff(e,c,n)),c<=t&&(r=c+1),t<=c&&(n=c-1)}return e}function ff(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function df(e,t,r=Ys){if((n=e.length)&&!isNaN(t=+t)){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,i=(n-1)*t,a=Math.floor(i),o=+r(e[a],a,e);return o+(+r(e[a+1],a+1,e)-o)*(i-a)}}function pf(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function hf(e,t){switch(arguments.length){case 0:break;case 1:"function"==typeof e?this.interpolator(e):this.range(e);break;default:this.domain(e),"function"==typeof t?this.interpolator(t):this.range(t)}return this}const yf=Symbol("implicit");function vf(){var e=new Xs,t=[],r=[],n=yf;function i(i){let a=e.get(i);if(void 0===a){if(n!==yf)return n;e.set(i,a=t.push(i)-1)}return r[a%r.length]}return i.domain=function(r){if(!arguments.length)return t.slice();t=[],e=new Xs;for(const n of r)e.has(n)||e.set(n,t.push(n)-1);return i},i.range=function(e){return arguments.length?(r=Array.from(e),i):r.slice()},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return vf(t,r).unknown(n)},pf.apply(i,arguments),i}function gf(){var e,t,r=vf().unknown(void 0),n=r.domain,i=r.range,a=0,o=1,c=!1,l=0,u=0,s=.5;function f(){var r=n().length,f=o>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?Bf(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?Bf(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=kf.exec(e))?new Ff(t[1],t[2],t[3],1):(t=_f.exec(e))?new Ff(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=Mf.exec(e))?Bf(t[1],t[2],t[3],t[4]):(t=Tf.exec(e))?Bf(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=Cf.exec(e))?qf(t[1],t[2]/100,t[3]/100,1):(t=If.exec(e))?qf(t[1],t[2]/100,t[3]/100,t[4]):Df.hasOwnProperty(e)?Lf(Df[e]):"transparent"===e?new Ff(NaN,NaN,NaN,0):null}function Lf(e){return new Ff(e>>16&255,e>>8&255,255&e,1)}function Bf(e,t,r,n){return n<=0&&(e=t=r=NaN),new Ff(e,t,r,n)}function Kf(e,t,r,n){return 1===arguments.length?((i=e)instanceof wf||(i=Rf(i)),i?new Ff((i=i.rgb()).r,i.g,i.b,i.opacity):new Ff):new Ff(e,t,r,null==n?1:n);var i}function Ff(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function Uf(){return`#${Vf(this.r)}${Vf(this.g)}${Vf(this.b)}`}function Wf(){const e=$f(this.opacity);return`${1===e?"rgb(":"rgba("}${Hf(this.r)}, ${Hf(this.g)}, ${Hf(this.b)}${1===e?")":`, ${e})`}`}function $f(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Hf(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Vf(e){return((e=Hf(e))<16?"0":"")+e.toString(16)}function qf(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Gf(e,t,r,n)}function Yf(e){if(e instanceof Gf)return new Gf(e.h,e.s,e.l,e.opacity);if(e instanceof wf||(e=Rf(e)),!e)return new Gf;if(e instanceof Gf)return e;var t=(e=e.rgb()).r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,c=a-i,l=(a+i)/2;return c?(o=t===a?(r-n)/c+6*(r0&&l<1?0:o,new Gf(o,c,l,e.opacity)}function Gf(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function Xf(e){return(e=(e||0)%360)<0?e+360:e}function Zf(e){return Math.max(0,Math.min(1,e||0))}function Qf(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}bf(wf,Rf,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Nf,formatHex:Nf,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Yf(this).formatHsl()},formatRgb:zf,toString:zf}),bf(Ff,Kf,xf(wf,{brighter(e){return e=null==e?Pf:Math.pow(Pf,e),new Ff(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?Of:Math.pow(Of,e),new Ff(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ff(Hf(this.r),Hf(this.g),Hf(this.b),$f(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Uf,formatHex:Uf,formatHex8:function(){return`#${Vf(this.r)}${Vf(this.g)}${Vf(this.b)}${Vf(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Wf,toString:Wf})),bf(Gf,function(e,t,r,n){return 1===arguments.length?Yf(e):new Gf(e,t,r,null==n?1:n)},xf(wf,{brighter(e){return e=null==e?Pf:Math.pow(Pf,e),new Gf(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?Of:Math.pow(Of,e),new Gf(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Ff(Qf(e>=240?e-240:e+120,i,n),Qf(e,i,n),Qf(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Gf(Xf(this.h),Zf(this.s),Zf(this.l),$f(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=$f(this.opacity);return`${1===e?"hsl(":"hsla("}${Xf(this.h)}, ${100*Zf(this.s)}%, ${100*Zf(this.l)}%${1===e?")":`, ${e})`}`}}));const Jf=e=>()=>e;function ed(e,t){var r=t-e;return r?function(e,t){return function(r){return e+r*t}}(e,r):Jf(isNaN(e)?t:e)}const td=function e(t){var r=function(e){return 1===(e=+e)?ed:function(t,r){return r-t?function(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}(t,r,e):Jf(isNaN(t)?r:t)}}(t);function n(e,t){var n=r((e=Kf(e)).r,(t=Kf(t)).r),i=r(e.g,t.g),a=r(e.b,t.b),o=ed(e.opacity,t.opacity);return function(t){return e.r=n(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+""}}return n.gamma=e,n}(1);function rd(e,t){t||(t=[]);var r,n=e?Math.min(t.length,e.length):0,i=t.slice();return function(a){for(r=0;ra&&(i=t.slice(a,i),c[o]?c[o]+=i:c[++o]=i),(r=r[0])===(n=n[0])?c[o]?c[o]+=n:c[++o]=n:(c[++o]=null,l.push({i:o,x:ad(r,n)})),a=ld.lastIndex;return at&&(r=e,e=t,t=r),u=function(r){return Math.max(e,Math.min(t,r))}),n=l>2?gd:vd,i=a=null,f}function f(t){return null==t||isNaN(t=+t)?r:(i||(i=n(o.map(e),c,l)))(e(u(t)))}return f.invert=function(r){return u(t((a||(a=n(c,o.map(e),ad)))(r)))},f.domain=function(e){return arguments.length?(o=Array.from(e,dd),s()):o.slice()},f.range=function(e){return arguments.length?(c=Array.from(e),s()):c.slice()},f.rangeRound=function(e){return c=Array.from(e),l=fd,s()},f.clamp=function(e){return arguments.length?(u=!!e||hd,s()):u!==hd},f.interpolate=function(e){return arguments.length?(l=e,s()):l},f.unknown=function(e){return arguments.length?(r=e,f):r},function(r,n){return e=r,t=n,s()}}function xd(){return bd()(hd,hd)}function wd(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Od(e){return(e=wd(Math.abs(e)))?e[1]:NaN}var Pd,jd=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ed(e){if(!(t=jd.exec(e)))throw new Error("invalid format: "+e);var t;return new Ad({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function Ad(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function Sd(e,t){var r=wd(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}Ed.prototype=Ad.prototype,Ad.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const kd={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Sd(100*e,t),r:Sd,s:function(e,t){var r=wd(e,t);if(!r)return e+"";var n=r[0],i=r[1],a=i-(Pd=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=n.length;return a===o?n:a>o?n+new Array(a-o+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+wd(e,Math.max(0,t+a-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function _d(e){return e}var Md,Td,Cd,Id=Array.prototype.map,Dd=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Nd(e,t,r,n){var i,a=cf(e,t,r);switch((n=Ed(null==n?",f":n)).type){case"s":var o=Math.max(Math.abs(e),Math.abs(t));return null!=n.precision||isNaN(i=function(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Od(t)/3)))-Od(Math.abs(e)))}(a,o))||(n.precision=i),Cd(n,o);case"":case"e":case"g":case"p":case"r":null!=n.precision||isNaN(i=function(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Od(t)-Od(e))+1}(a,Math.max(Math.abs(e),Math.abs(t))))||(n.precision=i-("e"===n.type));break;case"f":case"%":null!=n.precision||isNaN(i=function(e){return Math.max(0,-Od(Math.abs(e)))}(a))||(n.precision=i-2*("%"===n.type))}return Td(n)}function zd(e){var t=e.domain;return e.ticks=function(e){var r=t();return af(r[0],r[r.length-1],null==e?10:e)},e.tickFormat=function(e,r){var n=t();return Nd(n[0],n[n.length-1],null==e?10:e,r)},e.nice=function(r){null==r&&(r=10);var n,i,a=t(),o=0,c=a.length-1,l=a[o],u=a[c],s=10;for(u0;){if((i=of(l,u,r))===n)return a[o]=l,a[c]=u,t(a);if(i>0)l=Math.floor(l/i)*i,u=Math.ceil(u/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,u=Math.floor(u*i)/i}n=i}return e},e}function Rd(e,t){var r,n=0,i=(e=e.slice()).length-1,a=e[n],o=e[i];return o-e(-t,r)}function $d(e){const t=e(Ld,Bd),r=t.domain;let n,i,a=10;function o(){return n=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}(a),i=function(e){return 10===e?Ud:e===Math.E?Math.exp:t=>Math.pow(e,t)}(a),r()[0]<0?(n=Wd(n),i=Wd(i),e(Kd,Fd)):e(Ld,Bd),t}return t.base=function(e){return arguments.length?(a=+e,o()):a},t.domain=function(e){return arguments.length?(r(e),o()):r()},t.ticks=e=>{const t=r();let o=t[0],c=t[t.length-1];const l=c0){for(;f<=d;++f)for(u=1;uc)break;h.push(s)}}else for(;f<=d;++f)for(u=a-1;u>=1;--u)if(s=f>0?u/i(-f):u*i(f),!(sc)break;h.push(s)}2*h.length{if(null==e&&(e=10),null==r&&(r=10===a?"s":","),"function"!=typeof r&&(a%1||null!=(r=Ed(r)).precision||(r.trim=!0),r=Td(r)),e===1/0)return r;const o=Math.max(1,a*e/t.ticks().length);return e=>{let t=e/i(Math.round(n(e)));return t*ar(Rd(r(),{floor:e=>i(Math.floor(n(e))),ceil:e=>i(Math.ceil(n(e)))})),t}function Hd(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Vd(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function qd(e){var t=1,r=e(Hd(t),Vd(t));return r.constant=function(r){return arguments.length?e(Hd(t=+r),Vd(t)):t},zd(r)}function Yd(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Gd(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Xd(e){return e<0?-e*e:e*e}function Zd(e){var t=e(hd,hd),r=1;return t.exponent=function(t){return arguments.length?1===(r=+t)?e(hd,hd):.5===r?e(Gd,Xd):e(Yd(r),Yd(1/r)):r},zd(t)}function Qd(){var e=Zd(bd());return e.copy=function(){return md(e,Qd()).exponent(e.exponent())},pf.apply(e,arguments),e}function Jd(e){return Math.sign(e)*e*e}Md=function(e){var t,r,n=void 0===e.grouping||void 0===e.thousands?_d:(t=Id.call(e.grouping,Number),r=e.thousands+"",function(e,n){for(var i=e.length,a=[],o=0,c=t[0],l=0;i>0&&c>0&&(l+c+1>n&&(c=Math.max(1,n-l)),a.push(e.substring(i-=c,i+c)),!((l+=c+1)>n));)c=t[o=(o+1)%t.length];return a.reverse().join(r)}),i=void 0===e.currency?"":e.currency[0]+"",a=void 0===e.currency?"":e.currency[1]+"",o=void 0===e.decimal?".":e.decimal+"",c=void 0===e.numerals?_d:function(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}(Id.call(e.numerals,String)),l=void 0===e.percent?"%":e.percent+"",u=void 0===e.minus?"−":e.minus+"",s=void 0===e.nan?"NaN":e.nan+"";function f(e){var t=(e=Ed(e)).fill,r=e.align,f=e.sign,d=e.symbol,p=e.zero,h=e.width,y=e.comma,v=e.precision,g=e.trim,m=e.type;"n"===m?(y=!0,m="g"):kd[m]||(void 0===v&&(v=12),g=!0,m="g"),(p||"0"===t&&"="===r)&&(p=!0,t="0",r="=");var b="$"===d?i:"#"===d&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",x="$"===d?a:/[%p]/.test(m)?l:"",w=kd[m],O=/[defgprs%]/.test(m);function P(e){var i,a,l,d=b,P=x;if("c"===m)P=w(e)+P,e="";else{var j=(e=+e)<0||1/e<0;if(e=isNaN(e)?s:w(Math.abs(e),v),g&&(e=function(e){e:for(var t,r=e.length,n=1,i=-1;n0&&(i=0)}return i>0?e.slice(0,i)+e.slice(t+1):e}(e)),j&&0===+e&&"+"!==f&&(j=!1),d=(j?"("===f?f:u:"-"===f||"("===f?"":f)+d,P=("s"===m?Dd[8+Pd/3]:"")+P+(j&&"("===f?")":""),O)for(i=-1,a=e.length;++i(l=e.charCodeAt(i))||l>57){P=(46===l?o+e.slice(i+1):e.slice(i))+P,e=e.slice(0,i);break}}y&&!p&&(e=n(e,1/0));var E=d.length+e.length+P.length,A=E>1)+d+e+P+A.slice(E);break;default:e=A+d+e+P}return c(e)}return v=void 0===v?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),P.toString=function(){return e+""},P}return{format:f,formatPrefix:function(e,t){var r=f(((e=Ed(e)).type="f",e)),n=3*Math.max(-8,Math.min(8,Math.floor(Od(t)/3))),i=Math.pow(10,-n),a=Dd[8+n/3];return function(e){return r(i*e)+a}}}}({thousands:",",grouping:[3],currency:["$",""]}),Td=Md.format,Cd=Md.formatPrefix;const ep=new Date,tp=new Date;function rp(e,t,r,n){function i(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=r=>(e(r=new Date(r-1)),t(r,1),e(r),r),i.round=e=>{const t=i(e),r=i.ceil(e);return e-t(t(e=new Date(+e),null==r?1:Math.floor(r)),e),i.range=(r,n,a)=>{const o=[];if(r=i.ceil(r),a=null==a?1:Math.floor(a),!(r0))return o;let c;do{o.push(c=new Date(+r)),t(r,a),e(r)}while(crp(t=>{if(t>=t)for(;e(t),!r(t);)t.setTime(t-1)},(e,n)=>{if(e>=e)if(n<0)for(;++n<=0;)for(;t(e,-1),!r(e););else for(;--n>=0;)for(;t(e,1),!r(e););}),r&&(i.count=(t,n)=>(ep.setTime(+t),tp.setTime(+n),e(ep),e(tp),Math.floor(r(ep,tp))),i.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?i.filter(n?t=>n(t)%e===0:t=>i.count(0,t)%e===0):i:null)),i}const np=rp(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);np.every=e=>(e=Math.floor(e),isFinite(e)&&e>0?e>1?rp(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):np:null),np.range;const ip=1e3,ap=6e4,op=36e5,cp=864e5,lp=6048e5,up=31536e6,sp=rp(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*ip)},(e,t)=>(t-e)/ip,e=>e.getUTCSeconds());sp.range;const fp=rp(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*ip)},(e,t)=>{e.setTime(+e+t*ap)},(e,t)=>(t-e)/ap,e=>e.getMinutes());fp.range;const dp=rp(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*ap)},(e,t)=>(t-e)/ap,e=>e.getUTCMinutes());dp.range;const pp=rp(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*ip-e.getMinutes()*ap)},(e,t)=>{e.setTime(+e+t*op)},(e,t)=>(t-e)/op,e=>e.getHours());pp.range;const hp=rp(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*op)},(e,t)=>(t-e)/op,e=>e.getUTCHours());hp.range;const yp=rp(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*ap)/cp,e=>e.getDate()-1);yp.range;const vp=rp(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/cp,e=>e.getUTCDate()-1);vp.range;const gp=rp(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/cp,e=>Math.floor(e/cp));function mp(e){return rp(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+7*t)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*ap)/lp)}gp.range;const bp=mp(0),xp=mp(1),wp=mp(2),Op=mp(3),Pp=mp(4),jp=mp(5),Ep=mp(6);function Ap(e){return rp(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)},(e,t)=>(t-e)/lp)}bp.range,xp.range,wp.range,Op.range,Pp.range,jp.range,Ep.range;const Sp=Ap(0),kp=Ap(1),_p=Ap(2),Mp=Ap(3),Tp=Ap(4),Cp=Ap(5),Ip=Ap(6);Sp.range,kp.range,_p.range,Mp.range,Tp.range,Cp.range,Ip.range;const Dp=rp(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear()),e=>e.getMonth());Dp.range;const Np=rp(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear()),e=>e.getUTCMonth());Np.range;const zp=rp(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());zp.every=e=>isFinite(e=Math.floor(e))&&e>0?rp(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)}):null,zp.range;const Rp=rp(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());function Lp(e,t,r,n,i,a){const o=[[sp,1,ip],[sp,5,5e3],[sp,15,15e3],[sp,30,3e4],[a,1,ap],[a,5,3e5],[a,15,9e5],[a,30,18e5],[i,1,op],[i,3,108e5],[i,6,216e5],[i,12,432e5],[n,1,cp],[n,2,1728e5],[r,1,lp],[t,1,2592e6],[t,3,7776e6],[e,1,up]];function c(t,r,n){const i=Math.abs(r-t)/n,a=Vs(([,,e])=>e).right(o,i);if(a===o.length)return e.every(cf(t/up,r/up,n));if(0===a)return np.every(Math.max(cf(t,r,n),1));const[c,l]=o[i/o[a-1][2]isFinite(e=Math.floor(e))&&e>0?rp(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)}):null,Rp.range;const[Bp,Kp]=Lp(Rp,Np,Sp,gp,hp,dp),[Fp,Up]=Lp(zp,Dp,bp,yp,pp,fp);function Wp(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function $p(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Hp(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}var Vp,qp,Yp,Gp={"-":"",_:" ",0:"0"},Xp=/^\s*\d+/,Zp=/^%/,Qp=/[\\^$*+?|[\]().{}]/g;function Jp(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",a=i.length;return n+(a[e.toLowerCase(),t]))}function nh(e,t,r){var n=Xp.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function ih(e,t,r){var n=Xp.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function ah(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function oh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function ch(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function lh(e,t,r){var n=Xp.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function uh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function sh(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function fh(e,t,r){var n=Xp.exec(t.slice(r,r+1));return n?(e.q=3*n[0]-3,r+n[0].length):-1}function dh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function ph(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function hh(e,t,r){var n=Xp.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function yh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function vh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function gh(e,t,r){var n=Xp.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function mh(e,t,r){var n=Xp.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function bh(e,t,r){var n=Xp.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function xh(e,t,r){var n=Zp.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function wh(e,t,r){var n=Xp.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Oh(e,t,r){var n=Xp.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function Ph(e,t){return Jp(e.getDate(),t,2)}function jh(e,t){return Jp(e.getHours(),t,2)}function Eh(e,t){return Jp(e.getHours()%12||12,t,2)}function Ah(e,t){return Jp(1+yp.count(zp(e),e),t,3)}function Sh(e,t){return Jp(e.getMilliseconds(),t,3)}function kh(e,t){return Sh(e,t)+"000"}function _h(e,t){return Jp(e.getMonth()+1,t,2)}function Mh(e,t){return Jp(e.getMinutes(),t,2)}function Th(e,t){return Jp(e.getSeconds(),t,2)}function Ch(e){var t=e.getDay();return 0===t?7:t}function Ih(e,t){return Jp(bp.count(zp(e)-1,e),t,2)}function Dh(e){var t=e.getDay();return t>=4||0===t?Pp(e):Pp.ceil(e)}function Nh(e,t){return e=Dh(e),Jp(Pp.count(zp(e),e)+(4===zp(e).getDay()),t,2)}function zh(e){return e.getDay()}function Rh(e,t){return Jp(xp.count(zp(e)-1,e),t,2)}function Lh(e,t){return Jp(e.getFullYear()%100,t,2)}function Bh(e,t){return Jp((e=Dh(e)).getFullYear()%100,t,2)}function Kh(e,t){return Jp(e.getFullYear()%1e4,t,4)}function Fh(e,t){var r=e.getDay();return Jp((e=r>=4||0===r?Pp(e):Pp.ceil(e)).getFullYear()%1e4,t,4)}function Uh(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Jp(t/60|0,"0",2)+Jp(t%60,"0",2)}function Wh(e,t){return Jp(e.getUTCDate(),t,2)}function $h(e,t){return Jp(e.getUTCHours(),t,2)}function Hh(e,t){return Jp(e.getUTCHours()%12||12,t,2)}function Vh(e,t){return Jp(1+vp.count(Rp(e),e),t,3)}function qh(e,t){return Jp(e.getUTCMilliseconds(),t,3)}function Yh(e,t){return qh(e,t)+"000"}function Gh(e,t){return Jp(e.getUTCMonth()+1,t,2)}function Xh(e,t){return Jp(e.getUTCMinutes(),t,2)}function Zh(e,t){return Jp(e.getUTCSeconds(),t,2)}function Qh(e){var t=e.getUTCDay();return 0===t?7:t}function Jh(e,t){return Jp(Sp.count(Rp(e)-1,e),t,2)}function ey(e){var t=e.getUTCDay();return t>=4||0===t?Tp(e):Tp.ceil(e)}function ty(e,t){return e=ey(e),Jp(Tp.count(Rp(e),e)+(4===Rp(e).getUTCDay()),t,2)}function ry(e){return e.getUTCDay()}function ny(e,t){return Jp(kp.count(Rp(e)-1,e),t,2)}function iy(e,t){return Jp(e.getUTCFullYear()%100,t,2)}function ay(e,t){return Jp((e=ey(e)).getUTCFullYear()%100,t,2)}function oy(e,t){return Jp(e.getUTCFullYear()%1e4,t,4)}function cy(e,t){var r=e.getUTCDay();return Jp((e=r>=4||0===r?Tp(e):Tp.ceil(e)).getUTCFullYear()%1e4,t,4)}function ly(){return"+0000"}function uy(){return"%"}function sy(e){return+e}function fy(e){return Math.floor(+e/1e3)}function dy(e){return new Date(e)}function py(e){return e instanceof Date?+e:+new Date(+e)}function hy(e,t,r,n,i,a,o,c,l,u){var s=xd(),f=s.invert,d=s.domain,p=u(".%L"),h=u(":%S"),y=u("%I:%M"),v=u("%I %p"),g=u("%a %d"),m=u("%b %d"),b=u("%B"),x=u("%Y");function w(e){return(l(e)=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:sy,s:fy,S:Th,u:Ch,U:Ih,V:Nh,w:zh,W:Rh,x:null,X:null,y:Lh,Y:Kh,Z:Uh,"%":uy},x={a:function(e){return o[e.getUTCDay()]},A:function(e){return a[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return c[e.getUTCMonth()]},c:null,d:Wh,e:Wh,f:Yh,g:ay,G:cy,H:$h,I:Hh,j:Vh,L:qh,m:Gh,M:Xh,p:function(e){return i[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:sy,s:fy,S:Zh,u:Qh,U:Jh,V:ty,w:ry,W:ny,x:null,X:null,y:iy,Y:oy,Z:ly,"%":uy},w={a:function(e,t,r){var n=p.exec(t.slice(r));return n?(e.w=h.get(n[0].toLowerCase()),r+n[0].length):-1},A:function(e,t,r){var n=f.exec(t.slice(r));return n?(e.w=d.get(n[0].toLowerCase()),r+n[0].length):-1},b:function(e,t,r){var n=g.exec(t.slice(r));return n?(e.m=m.get(n[0].toLowerCase()),r+n[0].length):-1},B:function(e,t,r){var n=y.exec(t.slice(r));return n?(e.m=v.get(n[0].toLowerCase()),r+n[0].length):-1},c:function(e,r,n){return j(e,t,r,n)},d:ph,e:ph,f:bh,g:uh,G:lh,H:yh,I:yh,j:hh,L:mh,m:dh,M:vh,p:function(e,t,r){var n=u.exec(t.slice(r));return n?(e.p=s.get(n[0].toLowerCase()),r+n[0].length):-1},q:fh,Q:wh,s:Oh,S:gh,u:ih,U:ah,V:oh,w:nh,W:ch,x:function(e,t,n){return j(e,r,t,n)},X:function(e,t,r){return j(e,n,t,r)},y:uh,Y:lh,Z:sh,"%":xh};function O(e,t){return function(r){var n,i,a,o=[],c=-1,l=0,u=e.length;for(r instanceof Date||(r=new Date(+r));++c53)return null;"w"in a||(a.w=1),"Z"in a?(i=(n=$p(Hp(a.y,0,1))).getUTCDay(),n=i>4||0===i?kp.ceil(n):kp(n),n=vp.offset(n,7*(a.V-1)),a.y=n.getUTCFullYear(),a.m=n.getUTCMonth(),a.d=n.getUTCDate()+(a.w+6)%7):(i=(n=Wp(Hp(a.y,0,1))).getDay(),n=i>4||0===i?xp.ceil(n):xp(n),n=yp.offset(n,7*(a.V-1)),a.y=n.getFullYear(),a.m=n.getMonth(),a.d=n.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?$p(Hp(a.y,0,1)).getUTCDay():Wp(Hp(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,$p(a)):Wp(a)}}function j(e,t,r,n){for(var i,a,o=0,c=t.length,l=r.length;o=l)return-1;if(37===(i=t.charCodeAt(o++))){if(i=t.charAt(o++),!(a=w[i in Gp?t.charAt(o++):i])||(n=a(e,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return b.x=O(r,b),b.X=O(n,b),b.c=O(t,b),x.x=O(r,x),x.X=O(n,x),x.c=O(t,x),{format:function(e){var t=O(e+="",b);return t.toString=function(){return e},t},parse:function(e){var t=P(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=O(e+="",x);return t.toString=function(){return e},t},utcParse:function(e){var t=P(e+="",!0);return t.toString=function(){return e},t}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),qp=Vp.format,Vp.parse,Yp=Vp.utcFormat,Vp.utcParse;const xy=Object.freeze(Object.defineProperty({__proto__:null,scaleBand:gf,scaleDiverging:function e(){var t=zd(my()(hd));return t.copy=function(){return vy(t,e())},hf.apply(t,arguments)},scaleDivergingLog:function e(){var t=$d(my()).domain([.1,1,10]);return t.copy=function(){return vy(t,e()).base(t.base())},hf.apply(t,arguments)},scaleDivergingPow:by,scaleDivergingSqrt:function(){return by.apply(null,arguments).exponent(.5)},scaleDivergingSymlog:function e(){var t=qd(my());return t.copy=function(){return vy(t,e()).constant(t.constant())},hf.apply(t,arguments)},scaleIdentity:function e(t){var r;function n(e){return null==e||isNaN(e=+e)?r:e}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Array.from(e,dd),n):t.slice()},n.unknown=function(e){return arguments.length?(r=e,n):r},n.copy=function(){return e(t).unknown(r)},t=arguments.length?Array.from(t,dd):[0,1],zd(n)},scaleImplicit:yf,scaleLinear:function e(){var t=xd();return t.copy=function(){return md(t,e())},pf.apply(t,arguments),zd(t)},scaleLog:function e(){const t=$d(bd()).domain([1,10]);return t.copy=()=>md(t,e()).base(t.base()),pf.apply(t,arguments),t},scaleOrdinal:vf,scalePoint:function(){return mf(gf.apply(null,arguments).paddingInner(1))},scalePow:Qd,scaleQuantile:function e(){var t,r=[],n=[],i=[];function a(){var e=0,t=Math.max(1,n.length);for(i=new Array(t-1);++e0?i[t-1]:r[0],t=i?[a[i-1],n]:[a[t-1],a[t]]},c.unknown=function(e){return arguments.length?(t=e,c):c},c.thresholds=function(){return a.slice()},c.copy=function(){return e().domain([r,n]).range(o).unknown(t)},pf.apply(zd(c),arguments)},scaleRadial:function e(){var t,r=xd(),n=[0,1],i=!1;function a(e){var n=function(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}(r(e));return isNaN(n)?t:i?Math.round(n):n}return a.invert=function(e){return r.invert(Jd(e))},a.domain=function(e){return arguments.length?(r.domain(e),a):r.domain()},a.range=function(e){return arguments.length?(r.range((n=Array.from(e,dd)).map(Jd)),a):n.slice()},a.rangeRound=function(e){return a.range(e).round(!0)},a.round=function(e){return arguments.length?(i=!!e,a):i},a.clamp=function(e){return arguments.length?(r.clamp(e),a):r.clamp()},a.unknown=function(e){return arguments.length?(t=e,a):t},a.copy=function(){return e(r.domain(),n).round(i).clamp(r.clamp()).unknown(t)},pf.apply(a,arguments),zd(a)},scaleSequential:function e(){var t=zd(yy()(hd));return t.copy=function(){return vy(t,e())},hf.apply(t,arguments)},scaleSequentialLog:function e(){var t=$d(yy()).domain([1,10]);return t.copy=function(){return vy(t,e()).base(t.base())},hf.apply(t,arguments)},scaleSequentialPow:gy,scaleSequentialQuantile:function e(){var t=[],r=hd;function n(e){if(null!=e&&!isNaN(e=+e))return r((Gs(t,e,1)-1)/(t.length-1))}return n.domain=function(e){if(!arguments.length)return t.slice();t=[];for(let r of e)null==r||isNaN(r=+r)||t.push(r);return t.sort($s),n},n.interpolator=function(e){return arguments.length?(r=e,n):r},n.range=function(){return t.map((e,n)=>r(n/(t.length-1)))},n.quantiles=function(e){return Array.from({length:e+1},(r,n)=>function(e,t){if((r=(e=Float64Array.from(function*(e){for(let t of e)null!=t&&(t=+t)>=t&&(yield t)}(e))).length)&&!isNaN(t=+t)){if(t<=0||r<2)return uf(e);if(t>=1)return lf(e);var r,n=(r-1)*t,i=Math.floor(n),a=lf(sf(e,i).subarray(0,i+1));return a+(uf(e.subarray(i+1))-a)*(n-i)}}(t,n/e))},n.copy=function(){return e(r).domain(t)},hf.apply(n,arguments)},scaleSequentialSqrt:function(){return gy.apply(null,arguments).exponent(.5)},scaleSequentialSymlog:function e(){var t=qd(yy());return t.copy=function(){return vy(t,e()).constant(t.constant())},hf.apply(t,arguments)},scaleSqrt:function(){return Qd.apply(null,arguments).exponent(.5)},scaleSymlog:function e(){var t=qd(bd());return t.copy=function(){return md(t,e()).constant(t.constant())},pf.apply(t,arguments)},scaleThreshold:function e(){var t,r=[.5],n=[0,1],i=1;function a(e){return null!=e&&e<=e?n[Gs(r,e,0,i)]:t}return a.domain=function(e){return arguments.length?(r=Array.from(e),i=Math.min(r.length,n.length-1),a):r.slice()},a.range=function(e){return arguments.length?(n=Array.from(e),i=Math.min(r.length,n.length-1),a):n.slice()},a.invertExtent=function(e){var t=n.indexOf(e);return[r[t-1],r[t]]},a.unknown=function(e){return arguments.length?(t=e,a):t},a.copy=function(){return e().domain(r).range(n).unknown(t)},pf.apply(a,arguments)},scaleTime:function(){return pf.apply(hy(Fp,Up,zp,Dp,bp,yp,pp,fp,sp,qp).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},scaleUtc:function(){return pf.apply(hy(Bp,Kp,Rp,Np,Sp,vp,hp,dp,sp,Yp).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},tickFormat:Nd},Symbol.toStringTag,{value:"Module"}));var wy=e=>e.chartData,Oy=Nn([wy],e=>{var t=null!=e.chartData?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),Py=(e,t,r,n)=>n?Oy(e):wy(e);function jy(e){if(Array.isArray(e)&&2===e.length){var[t,r]=e;if(Mc(t)&&Mc(r))return!0}return!1}function Ey(e,t,r){return r?e:[Math.min(e[0],t[0]),Math.max(e[1],t[1])]}function Ay(e,t){if(t&&"function"!=typeof e&&Array.isArray(e)&&2===e.length){var r,n,[i,a]=e;if(Mc(i))r=i;else if("function"==typeof i)return;if(Mc(a))n=a;else if("function"==typeof a)return;var o=[r,n];if(jy(o))return o}}var Sy,ky=1e9,_y=!0,My="[DecimalError] ",Ty=My+"Invalid argument: ",Cy=My+"Exponent out of range: ",Iy=Math.floor,Dy=Math.pow,Ny=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,zy=1e7,Ry=Iy(1286742750677284.5),Ly={};function By(e,t){var r,n,i,a,o,c,l,u,s=e.constructor,f=s.precision;if(!e.s||!t.s)return t.s||(t=new s(e)),_y?Gy(t,f):t;if(l=e.d,u=t.d,o=e.e,i=t.e,l=l.slice(),a=o-i){for(a<0?(n=l,a=-a,c=u.length):(n=u,i=o,c=l.length),a>(c=(o=Math.ceil(f/7))>c?o+1:c+1)&&(a=c,n.length=1),n.reverse();a--;)n.push(0);n.reverse()}for((c=l.length)-(a=u.length)<0&&(a=c,n=u,u=l,l=n),r=0;a;)r=(l[--a]=l[a]+u[a]+r)/zy|0,l[a]%=zy;for(r&&(l.unshift(r),++i),c=l.length;0==l[--c];)l.pop();return t.d=l,t.e=i,_y?Gy(t,f):t}function Ky(e,t,r){if(e!==~~e||er)throw Error(Ty+e)}function Fy(e){var t,r,n,i=e.length-1,a="",o=e[0];if(i>0){for(a+=o,t=1;te.e^a.s<0?1:-1;for(t=0,r=(n=a.d.length)<(i=e.d.length)?n:i;te.d[t]^a.s<0?1:-1;return n===i?0:n>i^a.s<0?1:-1},Ly.decimalPlaces=Ly.dp=function(){var e=this,t=e.d.length-1,r=7*(t-e.e);if(t=e.d[t])for(;t%10==0;t/=10)r--;return r<0?0:r},Ly.dividedBy=Ly.div=function(e){return Uy(this,new this.constructor(e))},Ly.dividedToIntegerBy=Ly.idiv=function(e){var t=this.constructor;return Gy(Uy(this,new t(e),0,1),t.precision)},Ly.equals=Ly.eq=function(e){return!this.cmp(e)},Ly.exponent=function(){return $y(this)},Ly.greaterThan=Ly.gt=function(e){return this.cmp(e)>0},Ly.greaterThanOrEqualTo=Ly.gte=function(e){return this.cmp(e)>=0},Ly.isInteger=Ly.isint=function(){return this.e>this.d.length-2},Ly.isNegative=Ly.isneg=function(){return this.s<0},Ly.isPositive=Ly.ispos=function(){return this.s>0},Ly.isZero=function(){return 0===this.s},Ly.lessThan=Ly.lt=function(e){return this.cmp(e)<0},Ly.lessThanOrEqualTo=Ly.lte=function(e){return this.cmp(e)<1},Ly.logarithm=Ly.log=function(e){var t,r=this,n=r.constructor,i=n.precision,a=i+5;if(void 0===e)e=new n(10);else if((e=new n(e)).s<1||e.eq(Sy))throw Error(My+"NaN");if(r.s<1)throw Error(My+(r.s?"NaN":"-Infinity"));return r.eq(Sy)?new n(0):(_y=!1,t=Uy(qy(r,a),qy(e,a),a),_y=!0,Gy(t,i))},Ly.minus=Ly.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?Xy(t,e):By(t,(e.s=-e.s,e))},Ly.modulo=Ly.mod=function(e){var t,r=this,n=r.constructor,i=n.precision;if(!(e=new n(e)).s)throw Error(My+"NaN");return r.s?(_y=!1,t=Uy(r,e,0,1).times(e),_y=!0,r.minus(t)):Gy(new n(r),i)},Ly.naturalExponential=Ly.exp=function(){return Wy(this)},Ly.naturalLogarithm=Ly.ln=function(){return qy(this)},Ly.negated=Ly.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},Ly.plus=Ly.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?By(t,e):Xy(t,(e.s=-e.s,e))},Ly.precision=Ly.sd=function(e){var t,r,n,i=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(Ty+e);if(t=$y(i)+1,r=7*(n=i.d.length-1)+1,n=i.d[n]){for(;n%10==0;n/=10)r--;for(n=i.d[0];n>=10;n/=10)r++}return e&&t>r?t:r},Ly.squareRoot=Ly.sqrt=function(){var e,t,r,n,i,a,o,c=this,l=c.constructor;if(c.s<1){if(!c.s)return new l(0);throw Error(My+"NaN")}for(e=$y(c),_y=!1,0==(i=Math.sqrt(+c))||i==1/0?(((t=Fy(c.d)).length+e)%2==0&&(t+="0"),i=Math.sqrt(t),e=Iy((e+1)/2)-(e<0||e%2),n=new l(t=i==1/0?"5e"+e:(t=i.toExponential()).slice(0,t.indexOf("e")+1)+e)):n=new l(i.toString()),i=o=(r=l.precision)+3;;)if(n=(a=n).plus(Uy(c,a,o+2)).times(.5),Fy(a.d).slice(0,o)===(t=Fy(n.d)).slice(0,o)){if(t=t.slice(o-3,o+1),i==o&&"4999"==t){if(Gy(a,r+1,0),a.times(a).eq(c)){n=a;break}}else if("9999"!=t)break;o+=4}return _y=!0,Gy(n,r)},Ly.times=Ly.mul=function(e){var t,r,n,i,a,o,c,l,u,s=this,f=s.constructor,d=s.d,p=(e=new f(e)).d;if(!s.s||!e.s)return new f(0);for(e.s*=s.s,r=s.e+e.e,(l=d.length)<(u=p.length)&&(a=d,d=p,p=a,o=l,l=u,u=o),a=[],n=o=l+u;n--;)a.push(0);for(n=u;--n>=0;){for(t=0,i=l+n;i>n;)c=a[i]+p[n]*d[i-n-1]+t,a[i--]=c%zy|0,t=c/zy|0;a[i]=(a[i]+t)%zy|0}for(;!a[--o];)a.pop();return t?++r:a.shift(),e.d=a,e.e=r,_y?Gy(e,f.precision):e},Ly.toDecimalPlaces=Ly.todp=function(e,t){var r=this,n=r.constructor;return r=new n(r),void 0===e?r:(Ky(e,0,ky),void 0===t?t=n.rounding:Ky(t,0,8),Gy(r,e+$y(r)+1,t))},Ly.toExponential=function(e,t){var r,n=this,i=n.constructor;return void 0===e?r=Zy(n,!0):(Ky(e,0,ky),void 0===t?t=i.rounding:Ky(t,0,8),r=Zy(n=Gy(new i(n),e+1,t),!0,e+1)),r},Ly.toFixed=function(e,t){var r,n,i=this,a=i.constructor;return void 0===e?Zy(i):(Ky(e,0,ky),void 0===t?t=a.rounding:Ky(t,0,8),r=Zy((n=Gy(new a(i),e+$y(i)+1,t)).abs(),!1,e+$y(n)+1),i.isneg()&&!i.isZero()?"-"+r:r)},Ly.toInteger=Ly.toint=function(){var e=this,t=e.constructor;return Gy(new t(e),$y(e)+1,t.rounding)},Ly.toNumber=function(){return+this},Ly.toPower=Ly.pow=function(e){var t,r,n,i,a,o,c=this,l=c.constructor,u=+(e=new l(e));if(!e.s)return new l(Sy);if(!(c=new l(c)).s){if(e.s<1)throw Error(My+"Infinity");return c}if(c.eq(Sy))return c;if(n=l.precision,e.eq(Sy))return Gy(c,n);if(o=(t=e.e)>=(r=e.d.length-1),a=c.s,o){if((r=u<0?-u:u)<=9007199254740991){for(i=new l(Sy),t=Math.ceil(n/7+4),_y=!1;r%2&&Qy((i=i.times(c)).d,t),0!==(r=Iy(r/2));)Qy((c=c.times(c)).d,t);return _y=!0,e.s<0?new l(Sy).div(i):Gy(i,n)}}else if(a<0)throw Error(My+"NaN");return a=a<0&&1&e.d[Math.max(t,r)]?-1:1,c.s=1,_y=!1,i=e.times(qy(c,n+12)),_y=!0,(i=Wy(i)).s=a,i},Ly.toPrecision=function(e,t){var r,n,i=this,a=i.constructor;return void 0===e?n=Zy(i,(r=$y(i))<=a.toExpNeg||r>=a.toExpPos):(Ky(e,1,ky),void 0===t?t=a.rounding:Ky(t,0,8),n=Zy(i=Gy(new a(i),e,t),e<=(r=$y(i))||r<=a.toExpNeg,e)),n},Ly.toSignificantDigits=Ly.tosd=function(e,t){var r=this.constructor;return void 0===e?(e=r.precision,t=r.rounding):(Ky(e,1,ky),void 0===t?t=r.rounding:Ky(t,0,8)),Gy(new r(this),e,t)},Ly.toString=Ly.valueOf=Ly.val=Ly.toJSON=Ly[Symbol.for("nodejs.util.inspect.custom")]=function(){var e=this,t=$y(e),r=e.constructor;return Zy(e,t<=r.toExpNeg||t>=r.toExpPos)};var Uy=function(){function e(e,t){var r,n=0,i=e.length;for(e=e.slice();i--;)r=e[i]*t+n,e[i]=r%zy|0,n=r/zy|0;return n&&e.unshift(n),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function r(e,t,r){for(var n=0;r--;)e[r]-=n,n=e[r]1;)e.shift()}return function(n,i,a,o){var c,l,u,s,f,d,p,h,y,v,g,m,b,x,w,O,P,j,E=n.constructor,A=n.s==i.s?1:-1,S=n.d,k=i.d;if(!n.s)return new E(n);if(!i.s)throw Error(My+"Division by zero");for(l=n.e-i.e,P=k.length,w=S.length,h=(p=new E(A)).d=[],u=0;k[u]==(S[u]||0);)++u;if(k[u]>(S[u]||0)&&--l,(m=null==a?a=E.precision:o?a+($y(n)-$y(i))+1:a)<0)return new E(0);if(m=m/7+2|0,u=0,1==P)for(s=0,k=k[0],m++;(u1&&(k=e(k,s),S=e(S,s),P=k.length,w=S.length),x=P,v=(y=S.slice(0,P)).length;v=zy/2&&++O;do{s=0,(c=t(k,y,P,v))<0?(g=y[0],P!=v&&(g=g*zy+(y[1]||0)),(s=g/O|0)>1?(s>=zy&&(s=zy-1),1==(c=t(f=e(k,s),y,d=f.length,v=y.length))&&(s--,r(f,P16)throw Error(Cy+$y(e));if(!e.s)return new u(Sy);for(_y=!1,o=s,a=new u(.03125);e.abs().gte(.1);)e=e.times(a),l+=5;for(o+=Math.log(Dy(2,l))/Math.LN10*2+5|0,r=n=i=new u(Sy),u.precision=o;;){if(n=Gy(n.times(e),o),r=r.times(++c),Fy((a=i.plus(Uy(n,r,o))).d).slice(0,o)===Fy(i.d).slice(0,o)){for(;l--;)i=Gy(i.times(i),o);return u.precision=s,null==t?(_y=!0,Gy(i,s)):i}i=a}}function $y(e){for(var t=7*e.e,r=e.d[0];r>=10;r/=10)t++;return t}function Hy(e,t,r){if(t>e.LN10.sd())throw _y=!0,r&&(e.precision=r),Error(My+"LN10 precision limit exceeded");return Gy(new e(e.LN10),t)}function Vy(e){for(var t="";e--;)t+="0";return t}function qy(e,t){var r,n,i,a,o,c,l,u,s,f=1,d=e,p=d.d,h=d.constructor,y=h.precision;if(d.s<1)throw Error(My+(d.s?"NaN":"-Infinity"));if(d.eq(Sy))return new h(0);if(null==t?(_y=!1,u=y):u=t,d.eq(10))return null==t&&(_y=!0),Hy(h,u);if(u+=10,h.precision=u,n=(r=Fy(p)).charAt(0),a=$y(d),!(Math.abs(a)<15e14))return l=Hy(h,u+2,y).times(a+""),d=qy(new h(n+"."+r.slice(1)),u-10).plus(l),h.precision=y,null==t?(_y=!0,Gy(d,y)):d;for(;n<7&&1!=n||1==n&&r.charAt(1)>3;)n=(r=Fy((d=d.times(e)).d)).charAt(0),f++;for(a=$y(d),n>1?(d=new h("0."+r),a++):d=new h(n+"."+r.slice(1)),c=o=d=Uy(d.minus(Sy),d.plus(Sy),u),s=Gy(d.times(d),u),i=3;;){if(o=Gy(o.times(s),u),Fy((l=c.plus(Uy(o,new h(i),u))).d).slice(0,u)===Fy(c.d).slice(0,u))return c=c.times(2),0!==a&&(c=c.plus(Hy(h,u+2,y).times(a+""))),c=Uy(c,new h(f),u),h.precision=y,null==t?(_y=!0,Gy(c,y)):c;c=l,i+=2}}function Yy(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;48===t.charCodeAt(n);)++n;for(i=t.length;48===t.charCodeAt(i-1);)--i;if(t=t.slice(n,i)){if(i-=n,r=r-n-1,e.e=Iy(r/7),e.d=[],n=(r+1)%7,r<0&&(n+=7),nRy||e.e<-Ry))throw Error(Cy+r)}else e.s=0,e.e=0,e.d=[0];return e}function Gy(e,t,r){var n,i,a,o,c,l,u,s,f=e.d;for(o=1,a=f[0];a>=10;a/=10)o++;if((n=t-o)<0)n+=7,i=t,u=f[s=0];else{if((s=Math.ceil((n+1)/7))>=(a=f.length))return e;for(u=a=f[s],o=1;a>=10;a/=10)o++;i=(n%=7)-7+o}if(void 0!==r&&(c=u/(a=Dy(10,o-i-1))%10|0,l=t<0||void 0!==f[s+1]||u%a,l=r<4?(c||l)&&(0==r||r==(e.s<0?3:2)):c>5||5==c&&(4==r||l||6==r&&(n>0?i>0?u/Dy(10,o-i):0:f[s-1])%10&1||r==(e.s<0?8:7))),t<1||!f[0])return l?(a=$y(e),f.length=1,t=t-a-1,f[0]=Dy(10,(7-t%7)%7),e.e=Iy(-t/7)||0):(f.length=1,f[0]=e.e=e.s=0),e;if(0==n?(f.length=s,a=1,s--):(f.length=s+1,a=Dy(10,7-n),f[s]=i>0?(u/Dy(10,o-i)%Dy(10,i)|0)*a:0),l)for(;;){if(0==s){(f[0]+=a)==zy&&(f[0]=1,++e.e);break}if(f[s]+=a,f[s]!=zy)break;f[s--]=0,a=1}for(n=f.length;0===f[--n];)f.pop();if(_y&&(e.e>Ry||e.e<-Ry))throw Error(Cy+$y(e));return e}function Xy(e,t){var r,n,i,a,o,c,l,u,s,f,d=e.constructor,p=d.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new d(e),_y?Gy(t,p):t;if(l=e.d,f=t.d,n=t.e,u=e.e,l=l.slice(),o=u-n){for((s=o<0)?(r=l,o=-o,c=f.length):(r=f,n=u,c=l.length),o>(i=Math.max(Math.ceil(p/7),c)+2)&&(o=i,r.length=1),r.reverse(),i=o;i--;)r.push(0);r.reverse()}else{for((s=(i=l.length)<(c=f.length))&&(c=i),i=0;i0;--i)l[c++]=0;for(i=f.length;i>o;){if(l[--i]0?a=a.charAt(0)+"."+a.slice(1)+Vy(n):o>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(i<0?"e":"e+")+i):i<0?(a="0."+Vy(-i-1)+a,r&&(n=r-o)>0&&(a+=Vy(n))):i>=o?(a+=Vy(i+1-o),r&&(n=r-i-1)>0&&(a=a+"."+Vy(n))):((n=i+1)0&&(i+1===o&&(a+="."),a+=Vy(n))),e.s<0?"-"+a:a}function Qy(e,t){if(e.length>t)return e.length=t,!0}function Jy(e){if(!e||"object"!=typeof e)throw Error(My+"Object expected");var t,r,n,i=["precision",1,ky,"rounding",0,8,"toExpNeg",-1/0,0,"toExpPos",0,1/0];for(t=0;t=i[t+1]&&n<=i[t+2]))throw Error(Ty+r+": "+n);this[r]=n}if(void 0!==(n=e[r="LN10"])){if(n!=Math.LN10)throw Error(Ty+r+": "+n);this[r]=new this(n)}return this}var ev=function e(t){var r,n,i;function a(e){var t=this;if(!(t instanceof a))return new a(e);if(t.constructor=a,e instanceof a)return t.s=e.s,t.e=e.e,void(t.d=(e=e.d)?e.slice():e);if("number"==typeof e){if(0*e!=0)throw Error(Ty+e);if(e>0)t.s=1;else{if(!(e<0))return t.s=0,t.e=0,void(t.d=[0]);e=-e,t.s=-1}return e===~~e&&e<1e7?(t.e=0,void(t.d=[e])):Yy(t,e.toString())}if("string"!=typeof e)throw Error(Ty+e);if(45===e.charCodeAt(0)?(e=e.slice(1),t.s=-1):t.s=1,!Ny.test(e))throw Error(Ty+e);Yy(t,e)}if(a.prototype=Ly,a.ROUND_UP=0,a.ROUND_DOWN=1,a.ROUND_CEIL=2,a.ROUND_FLOOR=3,a.ROUND_HALF_UP=4,a.ROUND_HALF_DOWN=5,a.ROUND_HALF_EVEN=6,a.ROUND_HALF_CEIL=7,a.ROUND_HALF_FLOOR=8,a.clone=e,a.config=a.set=Jy,void 0===t&&(t={}),t)for(i=["precision","rounding","toExpNeg","toExpPos","LN10"],r=0;re,iv={},av=e=>e===iv,ov=e=>function t(){return 0===arguments.length||1===arguments.length&&av(arguments.length<=0?void 0:arguments[0])?t:e(...arguments)},cv=(e,t)=>1===e?t:ov(function(){for(var r=arguments.length,n=new Array(r),i=0;ie!==iv).length;return a>=e?t(...n):cv(e-a,ov(function(){for(var e=arguments.length,r=new Array(e),i=0;iav(e)?r.shift():e);return t(...a,...r)}))}),lv=(e,t)=>{for(var r=[],n=e;nArray.isArray(t)?t.map(e):Object.keys(t).map(e=>t[e]).map(e)).length,rv),sv=e=>Array.isArray(e)?e.reverse():e.split("").reverse().join("");function fv(e){return 0===e?1:Math.floor(new tv(e).abs().log(10).toNumber())+1}function dv(e,t,r){for(var n=new tv(e),i=0,a=[];n.lt(t)&&i<1e5;)a.push(n.toNumber()),n=n.add(r),i++;return a}var pv=e=>{var[t,r]=e,[n,i]=[t,r];return t>r&&([n,i]=[r,t]),[n,i]},hv=(e,t,r)=>{if(e.lte(0))return new tv(0);var n=fv(e.toNumber()),i=new tv(10).pow(n),a=e.div(i),o=1!==n?.05:.1,c=new tv(Math.ceil(a.div(o).toNumber())).add(r).mul(o).mul(i);return new tv(t?c.toNumber():Math.ceil(c.toNumber()))},yv=function(e,t,r,n){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(!Number.isFinite((t-e)/(r-1)))return{step:new tv(0),tickMin:new tv(0),tickMax:new tv(0)};var a,o=hv(new tv(t).sub(e).div(r-1),n,i);a=e<=0&&t>=0?new tv(0):(a=new tv(e).add(t).div(2)).sub(new tv(a).mod(o));var c=Math.ceil(a.sub(e).div(o).toNumber()),l=Math.ceil(new tv(t).sub(a).div(o).toNumber()),u=c+l+1;return u>r?yv(e,t,r,n,i+1):(u0?l+(r-u):l,c=t>0?c:c+(r-u)),{step:o,tickMin:a.sub(new tv(c).mul(o)),tickMax:a.add(new tv(l).mul(o))})},vv=e=>e.rootProps.stackOffset,gv=e=>e.rootProps.reverseStackOrder,mv=e=>e.options.chartName,bv=e=>e.rootProps.syncId,xv=e=>e.rootProps.syncMethod,wv=e=>e.options.eventEmitter,Ov={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3},Pv="auto",jv=!0,Ev=!1,Av=!0,Sv="auto",kv=!0,_v=(e,t)=>{if(e&&t)return null!=e&&e.reversed?[t[1],t[0]]:t},Mv={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!1,dataKey:void 0,domain:void 0,id:0,includeHidden:!1,name:void 0,reversed:!1,scale:Pv,tick:jv,tickCount:void 0,ticks:void 0,type:"category",unit:void 0},Tv={allowDataOverflow:Ev,allowDecimals:!1,allowDuplicatedCategory:Av,dataKey:void 0,domain:void 0,id:0,includeHidden:!1,name:void 0,reversed:!1,scale:Sv,tick:kv,tickCount:5,ticks:void 0,type:"number",unit:void 0},Cv={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,dataKey:void 0,domain:void 0,id:0,includeHidden:!1,name:void 0,reversed:!1,scale:Pv,tick:jv,tickCount:void 0,ticks:void 0,type:"number",unit:void 0},Iv={allowDataOverflow:Ev,allowDecimals:!1,allowDuplicatedCategory:Av,dataKey:void 0,domain:void 0,id:0,includeHidden:!1,name:void 0,reversed:!1,scale:Sv,tick:kv,tickCount:5,ticks:void 0,type:"category",unit:void 0},Dv=(e,t)=>null!=e.polarAxis.angleAxis[t]?e.polarAxis.angleAxis[t]:"radial"===e.layout.layoutType?Cv:Mv,Nv=(e,t)=>null!=e.polarAxis.radiusAxis[t]?e.polarAxis.radiusAxis[t]:"radial"===e.layout.layoutType?Iv:Tv,zv=e=>e.polarOptions,Rv=Nn([Yo,Go,uc],function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(e-(r.left||0)-(r.right||0)),Math.abs(t-(r.top||0)-(r.bottom||0)))/2}),Lv=Nn([zv,Rv],(e,t)=>{if(null!=e)return at(e.innerRadius,t,0)}),Bv=Nn([zv,Rv],(e,t)=>{if(null!=e)return at(e.outerRadius,t,.8*t)}),Kv=Nn([zv],e=>{if(null==e)return[0,0];var{startAngle:t,endAngle:r}=e;return[t,r]});Nn([Dv,Kv],_v);var Fv=Nn([Rv,Lv,Bv],(e,t,r)=>{if(null!=e&&null!=t&&null!=r)return[t,r]});Nn([Nv,Fv],_v);var Uv=Nn([qc,zv,Lv,Bv,Yo,Go],(e,t,r,n,i,a)=>{if(("centric"===e||"radial"===e)&&null!=t&&null!=r&&null!=n){var{cx:o,cy:c,startAngle:l,endAngle:u}=t;return{cx:at(o,i,i/2),cy:at(c,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}}),Wv=(e,t)=>t,$v=(e,t,r)=>r;function Hv(e){return null==e?void 0:e.id}function Vv(e,t,r){var{chartData:n=[]}=t,{allowDuplicatedCategory:i,dataKey:a}=r,o=new Map;return e.forEach(e=>{var t,r=null!==(t=e.data)&&void 0!==t?t:n;if(null!=r&&0!==r.length){var c=Hv(e);r.forEach((t,r)=>{var n,l=null==a||i?r:String(No(t,a,null)),u=No(t,e.dataKey,0);n=o.has(l)?o.get(l):{},Object.assign(n,{[c]:u}),o.set(l,n)})}}),Array.from(o.values())}function qv(e){return null!=e.stackId&&null!=e.dataKey}var Yv=(e,t)=>e===t||null!=e&&null!=t&&e[0]===t[0]&&e[1]===t[1];function Gv(e,t){return!(!Array.isArray(e)||!Array.isArray(t)||0!==e.length||0!==t.length)||e===t}var Xv=e=>{var t=qc(e);return"horizontal"===t?"xAxis":"vertical"===t?"yAxis":"centric"===t?"angleAxis":"radiusAxis"},Zv=e=>e.tooltip.settings.axisId;function Qv(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Jv(e){for(var t=1;te.cartesianAxis.xAxis[t],ig=(e,t)=>{var r=ng(e,t);return null==r?rg:r},ag={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:tg,hide:!0,id:0,includeHidden:!1,interval:"preserveEnd",minTickGap:5,mirror:!1,name:void 0,orientation:"left",padding:{top:0,bottom:0},reversed:!1,scale:"auto",tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:"number",unit:void 0,width:60},og=(e,t)=>e.cartesianAxis.yAxis[t],cg=(e,t)=>{var r=og(e,t);return null==r?ag:r},lg={domain:[0,"auto"],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:"",range:[64,64],scale:"auto",type:"number",unit:""},ug=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return null==r?lg:r},sg=(e,t,r)=>{switch(t){case"xAxis":return ig(e,r);case"yAxis":return cg(e,r);case"zAxis":return ug(e,r);case"angleAxis":return Dv(e,r);case"radiusAxis":return Nv(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},fg=(e,t,r)=>{switch(t){case"xAxis":return ig(e,r);case"yAxis":return cg(e,r);case"angleAxis":return Dv(e,r);case"radiusAxis":return Nv(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},dg=e=>e.graphicalItems.cartesianItems.some(e=>"bar"===e.type)||e.graphicalItems.polarItems.some(e=>"radialBar"===e.type);function pg(e,t){return r=>{switch(e){case"xAxis":return"xAxisId"in r&&r.xAxisId===t;case"yAxis":return"yAxisId"in r&&r.yAxisId===t;case"zAxis":return"zAxisId"in r&&r.zAxisId===t;case"angleAxis":return"angleAxisId"in r&&r.angleAxisId===t;case"radiusAxis":return"radiusAxisId"in r&&r.radiusAxisId===t;default:return!1}}}var hg=e=>e.graphicalItems.cartesianItems,yg=Nn([Wv,$v],pg),vg=(e,t,r)=>e.filter(r).filter(e=>!0===(null==t?void 0:t.includeHidden)||!e.hide),gg=Nn([hg,sg,yg],vg,{memoizeOptions:{resultEqualityCheck:Gv}}),mg=Nn([gg],e=>e.filter(e=>"area"===e.type||"bar"===e.type).filter(qv)),bg=e=>e.filter(e=>!("stackId"in e)||void 0===e.stackId),xg=Nn([gg],bg),wg=e=>e.map(e=>e.data).filter(Boolean).flat(1),Og=Nn([gg],wg,{memoizeOptions:{resultEqualityCheck:Gv}}),Pg=(e,t)=>{var{chartData:r=[],dataStartIndex:n,dataEndIndex:i}=t;return e.length>0?e:r.slice(n,i+1)},jg=Nn([Og,Py],Pg),Eg=(e,t,r)=>null!=(null==t?void 0:t.dataKey)?e.map(e=>({value:No(e,t.dataKey)})):r.length>0?r.map(e=>e.dataKey).flatMap(t=>e.map(e=>({value:No(e,t)}))):e.map(e=>({value:e})),Ag=Nn([jg,sg,gg],Eg);function Sg(e,t){switch(e){case"xAxis":return"x"===t.direction;case"yAxis":return"y"===t.direction;default:return!1}}function kg(e){if(rt(e)||e instanceof Date){var t=Number(e);if(Mc(t))return t}}function _g(e){if(Array.isArray(e)){var t=[kg(e[0]),kg(e[1])];return jy(t)?t:void 0}var r=kg(e);if(null!=r)return[r,r]}function Mg(e){return e.map(kg).filter(ft)}var Tg=e=>{var t=Xv(e),r=Zv(e);return fg(e,t,r)},Cg=Nn([Tg],e=>null==e?void 0:e.dataKey),Ig=Nn([mg,Py,Tg],Vv),Dg=(e,t,r,n)=>{var i=t.reduce((e,t)=>(null==t.stackId||(null==e[t.stackId]&&(e[t.stackId]=[]),e[t.stackId].push(t)),e),{});return Object.fromEntries(Object.entries(i).map(t=>{var[i,a]=t,o=n?[...a].reverse():a,c=o.map(Hv);return[i,{stackedData:Fo(e,c,r),graphicalItems:o}]}))},Ng=Nn([Ig,mg,vv,gv],Dg),zg=(e,t,r,n)=>{var{dataStartIndex:i,dataEndIndex:a}=t;if(null==n&&"zAxis"!==r){var o=((e,t,r)=>{var n;if(null!=e)return[(n=Object.keys(e).reduce((n,i)=>{var a=e[i],{stackedData:o}=a,c=o.reduce((e,n)=>{var i,a=(i=To(n,t,r).flat(2).filter(tt),[Math.min(...i),Math.max(...i)]);return[Math.min(e[0],a[0]),Math.max(e[1],a[1])]},[1/0,-1/0]);return[Math.min(c[0],n[0]),Math.max(c[1],n[1])]},[1/0,-1/0]))[0]===1/0?0:n[0],n[1]===-1/0?0:n[1]]})(e,i,a);if(null==o||0!==o[0]||0!==o[1])return o}},Rg=Nn([sg],e=>e.allowDataOverflow),Lg=e=>{var t;if(null==e||!("domain"in e))return tg;if(null!=e.domain)return e.domain;if(null!=e.ticks){if("number"===e.type){var r=Mg(e.ticks);return[Math.min(...r),Math.max(...r)]}if("category"===e.type)return e.ticks.map(String)}return null!==(t=null==e?void 0:e.domain)&&void 0!==t?t:tg},Bg=Nn([sg],Lg),Kg=Nn([Bg,Rg],Ay),Fg=Nn([Ng,wy,Wv,Kg],zg,{memoizeOptions:{resultEqualityCheck:Yv}}),Ug=e=>e.errorBars,Wg=function(){for(var e=arguments.length,t=new Array(e),r=0;r{var a,o;if(r.length>0&&e.forEach(e=>{r.forEach(r=>{var c,l,u=null===(c=n[r.id])||void 0===c?void 0:c.filter(e=>Sg(i,e)),s=No(e,null!==(l=t.dataKey)&&void 0!==l?l:r.dataKey),f=function(e,t,r){return!r||"number"!=typeof t||Je(t)?[]:r.length?Mg(r.flatMap(r=>{var n,i,a=No(e,r.dataKey);if(Array.isArray(a)?[n,i]=a:n=i=a,Mc(n)&&Mc(i))return[t-n,t+i]})):[]}(e,s,u);if(f.length>=2){var d=Math.min(...f),p=Math.max(...f);(null==a||do)&&(o=p)}var h=_g(s);null!=h&&(a=null==a?h[0]:Math.min(a,h[0]),o=null==o?h[1]:Math.max(o,h[1]))})}),null!=(null==t?void 0:t.dataKey)&&e.forEach(e=>{var r=_g(No(e,t.dataKey));null!=r&&(a=null==a?r[0]:Math.min(a,r[0]),o=null==o?r[1]:Math.max(o,r[1]))}),Mc(a)&&Mc(o))return[a,o]},Hg=Nn([jg,sg,xg,Ug,Wv],$g,{memoizeOptions:{resultEqualityCheck:Yv}});function Vg(e){var{value:t}=e;if(rt(t)||t instanceof Date)return t}var qg=e=>e.referenceElements.dots,Yg=(e,t,r)=>e.filter(e=>"extendDomain"===e.ifOverflow).filter(e=>"xAxis"===t?e.xAxisId===r:e.yAxisId===r),Gg=Nn([qg,Wv,$v],Yg),Xg=e=>e.referenceElements.areas,Zg=Nn([Xg,Wv,$v],Yg),Qg=e=>e.referenceElements.lines,Jg=Nn([Qg,Wv,$v],Yg),em=(e,t)=>{var r=Mg(e.map(e=>"xAxis"===t?e.x:e.y));if(0!==r.length)return[Math.min(...r),Math.max(...r)]},tm=Nn(Gg,Wv,em),rm=(e,t)=>{var r=Mg(e.flatMap(e=>["xAxis"===t?e.x1:e.y1,"xAxis"===t?e.x2:e.y2]));if(0!==r.length)return[Math.min(...r),Math.max(...r)]},nm=Nn([Zg,Wv],rm),im=(e,t)=>{var r=e.flatMap(e=>"xAxis"===t?function(e){var t;if(null!=e.x)return Mg([e.x]);var r=null===(t=e.segment)||void 0===t?void 0:t.map(e=>e.x);return null==r||0===r.length?[]:Mg(r)}(e):function(e){var t;if(null!=e.y)return Mg([e.y]);var r=null===(t=e.segment)||void 0===t?void 0:t.map(e=>e.y);return null==r||0===r.length?[]:Mg(r)}(e));if(0!==r.length)return[Math.min(...r),Math.max(...r)]},am=Nn([Jg,Wv],im),om=Nn(tm,am,nm,(e,t,r)=>Wg(e,r,t)),cm=(e,t,r,n,i,a,o,c)=>null!=r?r:function(e,t,r){if(r||null!=t){if("function"==typeof e&&null!=t)try{var n=e(t,r);if(jy(n))return Ey(n,t,r)}catch(p){}if(Array.isArray(e)&&2===e.length){var i,a,[o,c]=e;if("auto"===o)null!=t&&(i=Math.min(...t));else if(tt(o))i=o;else if("function"==typeof o)try{null!=t&&(i=o(null==t?void 0:t[0]))}catch(h){}else if("string"==typeof o&&Wo.test(o)){var l=Wo.exec(o);if(null==l||null==t)i=void 0;else{var u=+l[1];i=t[0]-u}}else i=null==t?void 0:t[0];if("auto"===c)null!=t&&(a=Math.max(...t));else if(tt(c))a=c;else if("function"==typeof c)try{null!=t&&(a=c(null==t?void 0:t[1]))}catch(y){}else if("string"==typeof c&&$o.test(c)){var s=$o.exec(c);if(null==s||null==t)a=void 0;else{var f=+s[1];a=t[1]+f}}else a=null==t?void 0:t[1];var d=[i,a];if(jy(d))return null==t?d:Ey(d,t,r)}}}(t,"vertical"===o&&"xAxis"===c||"horizontal"===o&&"yAxis"===c?Wg(n,a,i):Wg(a,i),e.allowDataOverflow),lm=Nn([sg,Bg,Kg,Fg,Hg,om,qc,Wv],cm,{memoizeOptions:{resultEqualityCheck:Yv}}),um=[0,1],sm=(e,t,r,n,i,a,o)=>{if(null!=e&&null!=r&&0!==r.length||void 0!==o){var c,{dataKey:l,type:u}=e,s=zo(t,a);return s&&null==l?Ws(0,null!==(c=null==r?void 0:r.length)&&void 0!==c?c:0):"category"===u?((e,t,r)=>{var n=e.map(Vg).filter(e=>null!=e);return r&&(null==t.dataKey||t.allowDuplicatedCategory&&ot(n))?Ws(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))})(n,e,s):"expand"===i?um:o}},fm=Nn([sg,qc,jg,Ag,vv,Wv,lm],sm),dm=(e,t,r,n,i)=>{if(null!=e){var{scale:a,type:o}=e;if("auto"===a)return"radial"===t&&"radiusAxis"===i?"band":"radial"===t&&"angleAxis"===i?"linear":"category"===o&&n&&(n.indexOf("LineChart")>=0||n.indexOf("AreaChart")>=0||n.indexOf("ComposedChart")>=0&&!r)?"point":"category"===o?"band":"linear";if("string"==typeof a){var c="scale".concat(st(a));return c in xy?c:"point"}}},pm=Nn([sg,qc,dg,mv,Wv],dm);function hm(e,t,r,n){if(null!=r&&null!=n){if("function"==typeof e.scale)return e.scale.copy().domain(r).range(n);var i=function(e){if(null!=e){if(e in xy)return xy[e]();var t="scale".concat(st(e));return t in xy?xy[t]():void 0}}(t);if(null!=i){var a=i.domain(r).range(n);return(e=>{var t=e.domain();if(t&&!(t.length<=2)){var r=t.length,n=e.range(),i=Math.min(n[0],n[1])-Bo,a=Math.max(n[0],n[1])+Bo,o=e(t[0]),c=e(t[r-1]);(oa||ca)&&e.domain([t[0],t[r-1]])}})(a),a}}}var ym=(e,t,r)=>{var n=Lg(t);if("auto"===r||"linear"===r)return null!=t&&t.tickCount&&Array.isArray(n)&&("auto"===n[0]||"auto"===n[1])&&jy(e)?function(e){var[t,r]=e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=Math.max(n,2),[o,c]=pv([t,r]);if(o===-1/0||c===1/0){var l=c===1/0?[o,...lv(0,n-1).map(()=>1/0)]:[...lv(0,n-1).map(()=>-1/0),c];return t>r?sv(l):l}if(o===c)return((e,t,r)=>{var n=new tv(1),i=new tv(e);if(!i.isint()&&r){var a=Math.abs(e);a<1?(n=new tv(10).pow(fv(e)-1),i=new tv(Math.floor(i.div(n).toNumber())).mul(n)):a>1&&(i=new tv(Math.floor(e)))}else 0===e?i=new tv(Math.floor((t-1)/2)):r||(i=new tv(Math.floor(e)));var o=Math.floor((t-1)/2);return function(){for(var e=arguments.length,t=new Array(e),r=0;rt(e),i(...arguments))}}(uv(e=>i.add(new tv(e-o).mul(n)).toNumber()),lv)(0,t)})(o,n,i);var{step:u,tickMin:s,tickMax:f}=yv(o,c,a,i,0),d=dv(s,f.add(new tv(.1).mul(u)),u);return t>r?sv(d):d}(e,t.tickCount,t.allowDecimals):null!=t&&t.tickCount&&"number"===t.type&&jy(e)?function(e,t){var[r,n]=e,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],[a,o]=pv([r,n]);if(a===-1/0||o===1/0)return[r,n];if(a===o)return[a];var c=Math.max(t,2),l=hv(new tv(o).sub(a).div(c-1),i,0),u=[...dv(new tv(a),new tv(o),l),o];return!1===i&&(u=u.map(e=>Math.round(e))),r>n?sv(u):u}(e,t.tickCount,t.allowDecimals):void 0},vm=Nn([fm,fg,pm],ym),gm=(e,t,r,n)=>{if("angleAxis"!==n&&"number"===(null==e?void 0:e.type)&&jy(t)&&Array.isArray(r)&&r.length>0){var i=t[0],a=r[0],o=t[1],c=r[r.length-1];return[Math.min(i,a),Math.max(o,c)]}return t},mm=Nn([sg,fm,vm,Wv],gm),bm=Nn(Ag,sg,(e,t)=>{if(t&&"number"===t.type){var r=1/0,n=Array.from(Mg(e.map(e=>e.value))).sort((e,t)=>e-t);if(n.length<2)return 1/0;var i=n[n.length-1]-n[0];if(0===i)return 1/0;for(var a=0;ae.rootProps.barCategoryGap,uc,(e,t,r,n)=>n,(e,t,r,n,i)=>{if(!Mc(e))return 0;var a="vertical"===t?n.height:n.width;if("gap"===i)return e*a/2;if("no-gap"===i){var o=at(r,e*a),c=e*a/2;return c-o-(c-o)/a*o}return 0}),wm=Nn(ig,(e,t)=>{var r=ig(e,t);return null==r||"string"!=typeof r.padding?0:xm(e,"xAxis",t,r.padding)},(e,t)=>{var r,n;if(null==e)return{left:0,right:0};var{padding:i}=e;return"string"==typeof i?{left:t,right:t}:{left:(null!==(r=i.left)&&void 0!==r?r:0)+t,right:(null!==(n=i.right)&&void 0!==n?n:0)+t}}),Om=Nn(cg,(e,t)=>{var r=cg(e,t);return null==r||"string"!=typeof r.padding?0:xm(e,"yAxis",t,r.padding)},(e,t)=>{var r,n;if(null==e)return{top:0,bottom:0};var{padding:i}=e;return"string"==typeof i?{top:t,bottom:t}:{top:(null!==(r=i.top)&&void 0!==r?r:0)+t,bottom:(null!==(n=i.bottom)&&void 0!==n?n:0)+t}}),Pm=Nn([uc,wm,yc,hc,(e,t,r)=>r],(e,t,r,n,i)=>{var{padding:a}=n;return i?[a.left,r.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),jm=Nn([uc,qc,Om,yc,hc,(e,t,r)=>r],(e,t,r,n,i,a)=>{var{padding:o}=i;return a?[n.height-o.bottom,o.top]:"horizontal"===t?[e.top+e.height-r.bottom,e.top+r.top]:[e.top+r.top,e.top+e.height-r.bottom]}),Em=(e,t,r,n)=>{var i;switch(t){case"xAxis":return Pm(e,r,n);case"yAxis":return jm(e,r,n);case"zAxis":return null===(i=ug(e,r))||void 0===i?void 0:i.range;case"angleAxis":return Kv(e);case"radiusAxis":return Fv(e,r);default:return}},Am=Nn([sg,Em],_v),Sm=Nn([sg,pm,mm,Am],hm);function km(e,t){return e.idt.id?1:0}Nn([gg,Ug,Wv],(e,t,r)=>e.flatMap(e=>t[e.id]).filter(Boolean).filter(e=>Sg(r,e)));var _m=(e,t)=>t,Mm=(e,t,r)=>r,Tm=Nn(Qo,_m,Mm,(e,t,r)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===r).sort(km)),Cm=Nn(Jo,_m,Mm,(e,t,r)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===r).sort(km)),Im=(e,t)=>({width:e.width,height:t.height}),Dm=Nn(uc,ig,Im),Nm=Nn(Go,uc,Tm,_m,Mm,(e,t,r,n,i)=>{var a,o={};return r.forEach(r=>{var c=Im(t,r);null==a&&(a=((e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}})(t,n,e));var l="top"===n&&!i||"bottom"===n&&i;o[r.id]=a-Number(l)*c.height,a+=(l?-1:1)*c.height}),o}),zm=Nn(Yo,uc,Cm,_m,Mm,(e,t,r,n,i)=>{var a,o={};return r.forEach(r=>{var c=((e,t)=>({width:"number"==typeof t.width?t.width:60,height:e.height}))(t,r);null==a&&(a=((e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}})(t,n,e));var l="left"===n&&!i||"right"===n&&i;o[r.id]=a-Number(l)*c.width,a+=(l?-1:1)*c.width}),o}),Rm=Nn([uc,ig,(e,t)=>{var r=ig(e,t);if(null!=r)return Nm(e,r.orientation,r.mirror)},(e,t)=>t],(e,t,r,n)=>{if(null!=t){var i=null==r?void 0:r[n];return null==i?{x:e.left,y:0}:{x:e.left,y:i}}}),Lm=Nn([uc,cg,(e,t)=>{var r=cg(e,t);if(null!=r)return zm(e,r.orientation,r.mirror)},(e,t)=>t],(e,t,r,n)=>{if(null!=t){var i=null==r?void 0:r[n];return null==i?{x:0,y:e.top}:{x:i,y:e.top}}}),Bm=Nn(uc,cg,(e,t)=>({width:"number"==typeof t.width?t.width:60,height:e.height})),Km=(e,t,r,n)=>{if(null!=r){var{allowDuplicatedCategory:i,type:a,dataKey:o}=r,c=zo(e,n),l=t.map(e=>e.value);return o&&c&&"category"===a&&i&&ot(l)?l:void 0}},Fm=Nn([qc,Ag,sg,Wv],Km),Um=(e,t,r,n)=>{if(null!=r&&null!=r.dataKey){var{type:i,scale:a}=r;return!zo(e,n)||"number"!==i&&"auto"===a?void 0:t.map(e=>e.value)}},Wm=Nn([qc,Ag,fg,Wv],Um),$m=Nn([qc,(e,t,r)=>{switch(t){case"xAxis":return ig(e,r);case"yAxis":return cg(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},pm,Sm,Fm,Wm,Em,vm,Wv],(e,t,r,n,i,a,o,c,l)=>{if(null!=t){var u=zo(e,l);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:l,categoricalDomain:a,duplicateDomain:i,isCategorical:u,niceTicks:c,range:o,realScaleType:r,scale:n}}}),Hm=Nn([qc,fg,pm,Sm,vm,Em,Fm,Wm,Wv],(e,t,r,n,i,a,o,c,l)=>{if(null!=t&&null!=n){var u=zo(e,l),{type:s,ticks:f,tickCount:d}=t,p="scaleBand"===r&&"function"==typeof n.bandwidth?n.bandwidth()/2:2,h="category"===s&&n.bandwidth?n.bandwidth()/p:0;h="angleAxis"===l&&null!=a&&a.length>=2?2*Qe(a[0]-a[1])*h:h;var y=f||i;return y?y.map((e,t)=>{var r=o?o.indexOf(e):e;return{index:t,coordinate:n(r)+h,value:e,offset:h}}).filter(e=>Mc(e.coordinate)):u&&c?c.map((e,t)=>({coordinate:n(e)+h,value:e,index:t,offset:h})).filter(e=>Mc(e.coordinate)):n.ticks?n.ticks(d).map(e=>({coordinate:n(e)+h,value:e,offset:h})):n.domain().map((e,t)=>({coordinate:n(e)+h,value:o?o[e]:e,index:t,offset:h}))}}),Vm=Nn([qc,fg,Sm,Em,Fm,Wm,Wv],(e,t,r,n,i,a,o)=>{if(null!=t&&null!=r&&null!=n&&n[0]!==n[1]){var c=zo(e,o),{tickCount:l}=t,u=0;return u="angleAxis"===o&&(null==n?void 0:n.length)>=2?2*Qe(n[0]-n[1])*u:u,c&&a?a.map((e,t)=>({coordinate:r(e)+u,value:e,index:t,offset:u})):r.ticks?r.ticks(l).map(e=>({coordinate:r(e)+u,value:e,offset:u})):r.domain().map((e,t)=>({coordinate:r(e)+u,value:i?i[e]:e,index:t,offset:u}))}}),qm=Nn(sg,Sm,(e,t)=>{if(null!=e&&null!=t)return Jv(Jv({},e),{},{scale:t})}),Ym=Nn([sg,pm,fm,Am],hm);Nn((e,t,r)=>ug(e,r),Ym,(e,t)=>{if(null!=e&&null!=t)return Jv(Jv({},e),{},{scale:t})});var Gm=Nn([qc,Qo,Jo],(e,t,r)=>{switch(e){case"horizontal":return t.some(e=>e.reversed)?"right-to-left":"left-to-right";case"vertical":return r.some(e=>e.reversed)?"bottom-to-top":"top-to-bottom";case"centric":case"radial":return"left-to-right";default:return}}),Xm=e=>e.options.defaultTooltipEventType,Zm=e=>e.options.validateTooltipEventTypes;function Qm(e,t,r){if(null==e)return t;var n=e?"axis":"item";return null==r?t:r.includes(n)?n:t}function Jm(e,t){return Qm(t,Xm(e),Zm(e))}var eb=(e,t)=>{var r,n=Number(t);if(!Je(n)&&null!=t)return n>=0?null==e||null===(r=e[n])||void 0===r?void 0:r.value:void 0},tb={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},rb=Ha({name:"tooltip",initialState:{itemInteraction:{click:tb,hover:tb},axisInteraction:{click:tb,hover:tb},keyboardInteraction:tb,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:"hover",axisId:0,active:!1,defaultIndex:void 0}},reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(t.payload)},prepare:za()},replaceTooltipEntrySettings:{reducer(e,t){var{prev:r,next:n}=t.payload,i=ja(e).tooltipItemPayloads.indexOf(r);i>-1&&(e.tooltipItemPayloads[i]=n)},prepare:za()},removeTooltipEntrySettings:{reducer(e,t){var r=ja(e).tooltipItemPayloads.indexOf(t.payload);r>-1&&e.tooltipItemPayloads.splice(r,1)},prepare:za()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate,e.keyboardInteraction.dataKey=t.payload.activeDataKey}}}),{addTooltipEntrySettings:nb,replaceTooltipEntrySettings:ib,removeTooltipEntrySettings:ab,setTooltipSettingsState:ob,setActiveMouseOverItemIndex:cb,mouseLeaveItem:lb,mouseLeaveChart:ub,setActiveClickItemIndex:sb,setMouseOverAxisIndex:fb,setMouseClickAxisIndex:db,setSyncInteraction:pb,setKeyboardInteraction:hb}=rb.actions,yb=rb.reducer;function vb(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function gb(e){for(var t=1;t{if(null==t)return tb;var i=function(e,t,r){return"axis"===t?"click"===r?e.axisInteraction.click:e.axisInteraction.hover:"click"===r?e.itemInteraction.click:e.itemInteraction.hover}(e,t,r);if(null==i)return tb;if(i.active)return i;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&null!=e.syncInteraction.index)return e.syncInteraction;var a=!0===e.settings.active;if(null!=i.index){if(a)return gb(gb({},i),{},{active:!0})}else if(null!=n)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return gb(gb({},tb),{},{coordinate:i.coordinate})};var xb=(e,t,r,n)=>{var i=null==e?void 0:e.index;if(null==i)return null;var a=Number(i);if(!Mc(a))return i;var o=1/0;t.length>0&&(o=t.length-1);var c=Math.max(0,Math.min(a,o)),l=t[c];return null==l||function(e,t,r){if(null==r||null==t)return!0;var n=No(e,t);return null==n||!jy(r)||function(e,t){var r=function(e){if("number"==typeof e)return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var r=Number(e);return Number.isFinite(r)?r:void 0}(e),n=t[0],i=t[1];if(void 0===r)return!1;var a=Math.min(n,i),o=Math.max(n,i);return r>=a&&r<=o}(n,r)}(l,r,n)?String(c):null},wb=(e,t,r,n,i,a,o,c)=>{if(null!=a&&null!=c){var l=o[0],u=null==l?void 0:c(l.positions,a);if(null!=u)return u;var s=null==i?void 0:i[Number(a)];if(s)return"horizontal"===r?{x:s.coordinate,y:(n.top+t)/2}:{x:(n.left+e)/2,y:s.coordinate}}},Ob=(e,t,r,n)=>{return"axis"===t?e.tooltipItemPayloads:0===e.tooltipItemPayloads.length?[]:null==(i="hover"===r?e.itemInteraction.hover.dataKey:e.itemInteraction.click.dataKey)&&null!=n?[e.tooltipItemPayloads[0]]:e.tooltipItemPayloads.filter(e=>{var t;return(null===(t=e.settings)||void 0===t?void 0:t.dataKey)===i});var i},Pb=e=>e.options.tooltipPayloadSearcher,jb=e=>e.tooltip;function Eb(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Ab(e){for(var t=1;t{if(null!=t&&null!=a){var{chartData:c,computedData:l,dataStartIndex:u,dataEndIndex:s}=r;return e.reduce((e,r)=>{var f,d,p,{dataDefinedOnItem:h,settings:y}=r,v=function(e,t){return null!=e?e:t}(h,c),g=Array.isArray(v)?To(v,u,s):v,m=null!==(f=null==y?void 0:y.dataKey)&&void 0!==f?f:n,b=null==y?void 0:y.nameKey;return d=n&&Array.isArray(g)&&!Array.isArray(g[0])&&"axis"===o?lt(g,n,i):a(g,t,l,b),Array.isArray(d)?d.forEach(t=>{var r=Ab(Ab({},y),{},{name:t.name,unit:t.unit,color:void 0,fill:void 0});e.push(Vo({tooltipEntrySettings:r,dataKey:t.dataKey,payload:t.payload,value:No(t.payload,t.dataKey),name:t.name}))}):e.push(Vo({tooltipEntrySettings:y,dataKey:m,payload:d,value:No(d,m),name:null!==(p=No(d,b))&&void 0!==p?p:null==y?void 0:y.name})),e},[])}},_b=Nn([Tg,qc,dg,mv,Xv],dm),Mb=Nn([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),Tb=Nn([Xv,Zv],pg),Cb=Nn([Mb,Tg,Tb],vg,{memoizeOptions:{resultEqualityCheck:Gv}}),Ib=Nn([Cb],e=>e.filter(qv)),Db=Nn([Cb],wg,{memoizeOptions:{resultEqualityCheck:Gv}}),Nb=Nn([Db,wy],Pg),zb=Nn([Ib,wy,Tg],Vv),Rb=Nn([Nb,Tg,Cb],Eg),Lb=Nn([Tg],Lg),Bb=Nn([Tg],e=>e.allowDataOverflow),Kb=Nn([Lb,Bb],Ay),Fb=Nn([Cb],e=>e.filter(qv)),Ub=Nn([zb,Fb,vv,gv],Dg),Wb=Nn([Ub,wy,Xv,Kb],zg),$b=Nn([Cb],bg),Hb=Nn([Nb,Tg,$b,Ug,Xv],$g,{memoizeOptions:{resultEqualityCheck:Yv}}),Vb=Nn([qg,Xv,Zv],Yg),qb=Nn([Vb,Xv],em),Yb=Nn([Xg,Xv,Zv],Yg),Gb=Nn([Yb,Xv],rm),Xb=Nn([Qg,Xv,Zv],Yg),Zb=Nn([Xb,Xv],im),Qb=Nn([qb,Zb,Gb],Wg),Jb=Nn([Tg,Lb,Kb,Wb,Hb,Qb,qc,Xv],cm),ex=Nn([Tg,qc,Nb,Rb,vv,Xv,Jb],sm),tx=Nn([ex,Tg,_b],ym),rx=Nn([Tg,ex,tx,Xv],gm),nx=e=>{var t=Xv(e),r=Zv(e);return Em(e,t,r,!1)},ix=Nn([Tg,nx],_v),ax=Nn([Tg,_b,rx,ix],hm),ox=Nn([qc,Rb,Tg,Xv],Km),cx=Nn([qc,Rb,Tg,Xv],Um),lx=Nn([qc,Tg,_b,ax,nx,ox,cx,Xv],(e,t,r,n,i,a,o,c)=>{if(t){var{type:l}=t,u=zo(e,c);if(n){var s="scaleBand"===r&&n.bandwidth?n.bandwidth()/2:2,f="category"===l&&n.bandwidth?n.bandwidth()/s:0;return f="angleAxis"===c&&null!=i&&(null==i?void 0:i.length)>=2?2*Qe(i[0]-i[1])*f:f,u&&o?o.map((e,t)=>({coordinate:n(e)+f,value:e,index:t,offset:f})):n.domain().map((e,t)=>({coordinate:n(e)+f,value:a?a[e]:e,index:t,offset:f}))}}}),ux=Nn([Xm,Zm,e=>e.tooltip.settings],(e,t,r)=>Qm(r.shared,e,t)),sx=e=>e.tooltip.settings.trigger,fx=e=>e.tooltip.settings.defaultIndex,dx=Nn([jb,ux,sx,fx],bb),px=Nn([dx,Nb,Cg,ex],xb),hx=Nn([lx,px],eb),yx=Nn([dx],e=>{if(e)return e.dataKey});Nn([dx],e=>{if(e)return e.graphicalItemId});var vx=Nn([jb,ux,sx,fx],Ob),gx=Nn([Yo,Go,qc,uc,lx,fx,vx,Pb],wb),mx=Nn([dx,gx],(e,t)=>null!=e&&e.coordinate?e.coordinate:t),bx=Nn([dx],e=>e.active),xx=Nn([vx,px,wy,Cg,hx,Pb,ux],kb),wx=Nn([xx],e=>{if(null!=e){var t=e.map(e=>e.payload).filter(e=>null!=e);return Array.from(new Set(t))}});function Ox(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Px(e){for(var t=1;t{var a,o=-1,c=null!==(a=null==t?void 0:t.length)&&void 0!==a?a:0;if(c<=1||null==e)return 0;if("angleAxis"===n&&null!=i&&Math.abs(Math.abs(i[1]-i[0])-360)<=1e-6)for(var l=0;l0?r[l-1].coordinate:r[c-1].coordinate,s=r[l].coordinate,f=l>=c-1?r[0].coordinate:r[l+1].coordinate,d=void 0;if(Qe(s-u)!==Qe(f-s)){var p=[];if(Qe(f-s)===Qe(i[1]-i[0])){d=f;var h=s+i[1]-i[0];p[0]=Math.min(h,(h+u)/2),p[1]=Math.max(h,(h+u)/2)}else{d=u;var y=f+i[1]-i[0];p[0]=Math.min(s,(y+s)/2),p[1]=Math.max(s,(y+s)/2)}var v=[Math.min(s,(d+s)/2),Math.max(s,(d+s)/2)];if(e>v[0]&&e<=v[1]||e>=p[0]&&e<=p[1]){({index:o}=r[l]);break}}else{var g=Math.min(u,f),m=Math.max(u,f);if(e>(g+s)/2&&e<=(m+s)/2){({index:o}=r[l]);break}}}else if(t)for(var b=0;b0&&b(t[b].coordinate+t[b-1].coordinate)/2&&e<=(t[b].coordinate+t[b+1].coordinate)/2||b===c-1&&e>(t[b].coordinate+t[b-1].coordinate)/2){({index:o}=t[b]);break}return o},_x=()=>kn(mv),Mx=(e,t)=>t,Tx=(e,t,r)=>r,Cx=(e,t,r,n)=>n,Ix=Nn(lx,e=>ai(e,e=>e.coordinate)),Dx=Nn([jb,Mx,Tx,Cx],bb),Nx=Nn([Dx,Nb,Cg,ex],xb),zx=Nn([jb,Mx,Tx,Cx],Ob),Rx=Nn([Yo,Go,qc,uc,lx,Cx,zx,Pb],wb),Lx=Nn([Dx,Rx],(e,t)=>{var r;return null!==(r=e.coordinate)&&void 0!==r?r:t}),Bx=Nn([lx,Nx],eb),Kx=Nn([zx,Nx,wy,Cg,Bx,Pb,Mx],kb),Fx=Nn([Dx,Nx],(e,t)=>({isActive:e.active&&null!=t,activeIndex:t})),Ux=Nn(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,r)=>r,(e,t,r)=>{if(null!=t){var n=e[t];if(null!=n)return r?n.panoramaElementId:n.elementId}}),Wx=Nn(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(e=>parseInt(e,10)).concat(Object.values(Ov));return Array.from(new Set(t)).sort((e,t)=>e-t)},{memoizeOptions:{resultEqualityCheck:function(e,t){if(e.length===t.length){for(var r=0;rHx(Hx({},e),{},{[t]:{elementId:void 0,panoramaElementId:void 0,consumers:0}}),{})},Yx=new Set(Object.values(Ov)),Gx=Ha({name:"zIndex",initialState:qx,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var{zIndex:r}=t.payload;e.zIndexMap[r]?e.zIndexMap[r].consumers+=1:e.zIndexMap[r]={consumers:1,elementId:void 0,panoramaElementId:void 0}},prepare:za()},unregisterZIndexPortal:{reducer:(e,t)=>{var{zIndex:r}=t.payload;e.zIndexMap[r]&&(e.zIndexMap[r].consumers-=1,e.zIndexMap[r].consumers<=0&&!function(e){return Yx.has(e)}(r)&&delete e.zIndexMap[r])},prepare:za()},registerZIndexPortalId:{reducer:(e,t)=>{var{zIndex:r,elementId:n,isPanorama:i}=t.payload;e.zIndexMap[r]?i?e.zIndexMap[r].panoramaElementId=n:e.zIndexMap[r].elementId=n:e.zIndexMap[r]={consumers:0,elementId:i?void 0:n,panoramaElementId:i?n:void 0}},prepare:za()},unregisterZIndexPortalId:{reducer:(e,t)=>{var{zIndex:r}=t.payload;e.zIndexMap[r]&&(t.payload.isPanorama?e.zIndexMap[r].panoramaElementId=void 0:e.zIndexMap[r].elementId=void 0)},prepare:za()}}}),{registerZIndexPortal:Xx,unregisterZIndexPortal:Zx,registerZIndexPortalId:Qx,unregisterZIndexPortalId:Jx}=Gx.actions,ew=Gx.reducer;function tw(e){var{zIndex:t,children:n}=e,a=void 0!==Yc()&&void 0!==t&&0!==t,o=pc(),c=jn();r.useLayoutEffect(()=>a?(c(Xx({zIndex:t})),()=>{c(Zx({zIndex:t}))}):dt,[c,t,a]);var l=kn(e=>Ux(e,t,o));if(!a)return n;if(!l)return null;var u=document.getElementById(l);return u?i.createPortal(n,u):null}function rw(){return rw=Object.assign?Object.assign.bind():function(e){for(var t=1;t{null==e.eventEmitter&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),mw=gw.reducer,{createEventEmitter:bw}=gw.actions;function xw(e){return e.tooltip.syncInteraction}var ww=Ha({name:"chartData",initialState:{chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},reducers:{setChartData(e,t){if(e.chartData=t.payload,null==t.payload)return e.dataStartIndex=0,void(e.dataEndIndex=0);t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var{startIndex:r,endIndex:n}=t.payload;null!=r&&(e.dataStartIndex=r),null!=n&&(e.dataEndIndex=n)}}}),{setChartData:Ow,setDataStartEndIndexes:Pw,setComputedData:jw}=ww.actions,Ew=ww.reducer,Aw=["x","y"];function Sw(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function kw(e){for(var t=1;t{e(bw())},[e]),function(){var e=kn(bv),t=kn(wv),n=jn(),i=kn(xv),a=kn(lx),o=Yc(),c=Uc(),l=kn(e=>e.rootProps.className);r.useEffect(()=>{if(null==e)return dt;var r=(r,l,u)=>{var s;if(t!==u&&e===r)if("index"!==i){if(null!=a){var f;if("function"==typeof i){var d={activeTooltipIndex:null==l.payload.index?void 0:Number(l.payload.index),isTooltipActive:l.payload.active,activeIndex:null==l.payload.index?void 0:Number(l.payload.index),activeLabel:l.payload.label,activeDataKey:l.payload.dataKey,activeCoordinate:l.payload.coordinate},p=i(a,d);f=a[p]}else"value"===i&&(f=a.find(e=>String(e.value)===l.payload.label));var{coordinate:h}=l.payload;if(null!=f&&!1!==l.payload.active&&null!=h&&null!=c){var{x:y,y:v}=h,g=Math.min(y,c.x+c.width),m=Math.min(v,c.y+c.height),b={x:"horizontal"===o?f.coordinate:g,y:"horizontal"===o?m:f.coordinate},x=pb({active:l.payload.active,coordinate:b,dataKey:l.payload.dataKey,index:String(f.index),label:l.payload.label,sourceViewBox:l.payload.sourceViewBox,graphicalItemId:l.payload.graphicalItemId});n(x)}else n(pb({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}))}}else if(c&&null!=l&&null!==(s=l.payload)&&void 0!==s&&s.coordinate&&l.payload.sourceViewBox){var w=l.payload.coordinate,{x:O,y:P}=w,j=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{pw.off(hw,r)}},[l,n,t,e,i,a,o,c])}(),function(){var e=kn(bv),t=kn(wv),n=jn();r.useEffect(()=>{if(null==e)return dt;var r=(r,i,a)=>{t!==a&&e===r&&n(Pw(i))};return pw.on(yw,r),()=>{pw.off(yw,r)}},[n,t,e])}()}function Tw(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Cw(e){for(var t=1;t{E(ob({shared:x,trigger:w,axisId:j,active:o,defaultIndex:A}))},[E,x,w,j,o,A]);var S=Uc(),k=gu(),_=function(e){return kn(t=>Jm(t,e))}(x),{activeIndex:M,isActive:T}=null!==(t=kn(e=>Fx(e,_,w,A)))&&void 0!==t?t:{},C=kn(e=>Kx(e,_,w,A)),I=kn(e=>Bx(e,_,w,A)),D=kn(e=>Lx(e,_,w,A)),N=C,z=r.useContext(sw),R=null!==(n=null!=o?o:T)&&void 0!==n&&n,[L,B]=li([N,R]),K="axis"===_?I:void 0;!function(e,t,n,i,a,o){var c=kn(r=>((e,t,r)=>{if(null!=t){var n=jb(e);return"axis"===t?"hover"===r?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:"hover"===r?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}})(r,e,t)),l=kn(wv),u=kn(bv),s=kn(xv),f=kn(xw),d=null==f?void 0:f.active,p=Uc();r.useEffect(()=>{if(!d&&null!=u&&null!=l){var e=pb({active:o,coordinate:n,dataKey:c,index:a,label:"number"==typeof i?String(i):i,sourceViewBox:p,graphicalItemId:void 0});pw.emit(hw,u,e,l)}},[d,n,c,a,i,l,u,s,o,p])}(_,w,D,K,M,R);var F=null!=P?P:z;if(null==F||null==S||null==_)return null;var U=null!=N?N:Nw;R||(U=Nw),f&&U.length&&(U=dn(U.filter(e=>null!=e.value&&(!0!==e.hide||a.includeHidden)),h,Dw));var W=U.length>0,$=r.createElement(vu,{allowEscapeViewBox:c,animationDuration:l,animationEasing:u,isAnimationActive:d,active:R,coordinate:D,hasPayload:W,offset:p,position:y,reverseDirection:v,useTranslate3d:g,viewBox:S,wrapperStyle:m,lastBoundingBox:L,innerRef:B,hasPortalFromProps:Boolean(P)},function(e,t){return r.isValidElement(e)?r.cloneElement(e,t):"function"==typeof e?r.createElement(e,t):r.createElement(lu,t)}(s,Cw(Cw({},a),{},{payload:U,label:K,active:R,activeIndex:M,coordinate:D,accessibilityLayer:k})));return r.createElement(r.Fragment,null,i.createPortal($,F),R&&r.createElement(lw,{cursor:b,tooltipEventType:_,coordinate:D,payload:U,index:M}))}function Lw(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Bw(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Kw=function(e){for(var t=1;t=this.maxSize){var r=this.cache.keys().next().value;null!=r&&this.cache.delete(r)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}}(Kw.cacheSize),Uw={position:"absolute",top:"-20000px",left:0,padding:0,margin:0,border:"none",whiteSpace:"pre"},Ww="recharts_measurement_span",$w=(e,t)=>{try{var r=document.getElementById(Ww);r||((r=document.createElement("span")).setAttribute("id",Ww),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,Uw,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch(i){return{width:0,height:0}}},Hw=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null==e||ts)return{width:0,height:0};if(!Kw.enableCache)return $w(e,t);var r=function(e,t){var r=t.fontSize||"",n=t.fontFamily||"",i=t.fontWeight||"",a=t.fontStyle||"",o=t.letterSpacing||"",c=t.textTransform||"";return"".concat(e,"|").concat(r,"|").concat(n,"|").concat(i,"|").concat(a,"|").concat(o,"|").concat(c)}(e,t),n=Fw.get(r);if(n)return n;var i=$w(e,t);return Fw.set(r,i),i},Vw=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,qw=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,Yw=/^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/,Gw=/(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/,Xw={cm:96/2.54,mm:96/25.4,pt:96/72,pc:16,in:96,Q:96/101.6,px:1},Zw=Object.keys(Xw),Qw="NaN";class Jw{static parse(e){var t,[,r,n]=null!==(t=Gw.exec(e))&&void 0!==t?t:[];return new Jw(parseFloat(r),null!=n?n:"")}constructor(e,t){this.num=e,this.unit=t,this.num=e,this.unit=t,Je(e)&&(this.unit=""),""===t||Yw.test(t)||(this.num=NaN,this.unit=""),Zw.includes(t)&&(this.num=function(e,t){return e*Xw[t]}(e,t),this.unit="px")}add(e){return this.unit!==e.unit?new Jw(NaN,""):new Jw(this.num+e.num,this.unit)}subtract(e){return this.unit!==e.unit?new Jw(NaN,""):new Jw(this.num-e.num,this.unit)}multiply(e){return""!==this.unit&&""!==e.unit&&this.unit!==e.unit?new Jw(NaN,""):new Jw(this.num*e.num,this.unit||e.unit)}divide(e){return""!==this.unit&&""!==e.unit&&this.unit!==e.unit?new Jw(NaN,""):new Jw(this.num/e.num,this.unit||e.unit)}toString(){return"".concat(this.num).concat(this.unit)}isNaN(){return Je(this.num)}}function eO(e){if(e.includes(Qw))return Qw;for(var t=e;t.includes("*")||t.includes("/");){var r,[,n,i,a]=null!==(r=Vw.exec(t))&&void 0!==r?r:[],o=Jw.parse(null!=n?n:""),c=Jw.parse(null!=a?a:""),l="*"===i?o.multiply(c):o.divide(c);if(l.isNaN())return Qw;t=t.replace(Vw,l.toString())}for(;t.includes("+")||/.-\d+(?:\.\d+)?/.test(t);){var u,[,s,f,d]=null!==(u=qw.exec(t))&&void 0!==u?u:[],p=Jw.parse(null!=s?s:""),h=Jw.parse(null!=d?d:""),y="+"===f?p.add(h):p.subtract(h);if(y.isNaN())return Qw;t=t.replace(qw,y.toString())}return t}var tO=/\(([^()]*)\)/;function rO(e){var t=function(e){try{return function(e){var t=e.replace(/\s+/g,"");return t=function(e){for(var t,r=e;null!=(t=tO.exec(r));){var[,n]=t;r=r.replace(tO,eO(n))}return r}(t),eO(t)}(e)}catch(t){return Qw}}(e.slice(5,-1));return t===Qw?"":t}var nO=["x","y","lineHeight","capHeight","fill","scaleToFit","textAnchor","verticalAnchor"],iO=["dx","dy","angle","className","breakAll"];function aO(){return aO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:t,breakAll:r,style:n}=e;try{var i=[];return ut(t)||(i=r?t.toString().split(""):t.toString().split(cO)),{wordsWithComputedWidth:i.map(e=>({word:e,width:Hw(e,n).width})),spaceWidth:r?0:Hw(" ",n).width}}catch(a){return null}};function uO(e){return"start"===e||"middle"===e||"end"===e||"inherit"===e}var sO=(e,t,r,n)=>e.reduce((e,i)=>{var{word:a,width:o}=i,c=e[e.length-1];if(c&&null!=o&&(null==t||n||c.width+o+re.reduce((e,t)=>e.width>t.width?e:t),dO=(e,t,r,n,i,a,o,c)=>{var l=e.slice(0,t),u=lO({breakAll:r,style:n,children:l+"…"});if(!u)return[!1,[]];var s=sO(u.wordsWithComputedWidth,a,o,c);return[s.length>i||fO(s).width>Number(a),s]},pO=e=>[{words:ut(e)?[]:e.toString().split(cO),width:void 0}],hO="#808080",yO={angle:0,breakAll:!1,capHeight:"0.71em",fill:hO,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},vO=r.forwardRef((e,t)=>{var n=At(e,yO),{x:i,y:a,lineHeight:o,capHeight:c,fill:l,scaleToFit:u,textAnchor:f,verticalAnchor:d}=n,p=oO(n,nO),h=r.useMemo(()=>(e=>{var{width:t,scaleToFit:r,children:n,style:i,breakAll:a,maxLines:o}=e;if((t||r)&&!ts){var c=lO({breakAll:a,children:n,style:i});if(!c)return pO(n);var{wordsWithComputedWidth:l,spaceWidth:u}=c;return((e,t,r,n,i)=>{var{maxLines:a,children:o,style:c,breakAll:l}=e,u=tt(a),s=String(o),f=sO(t,n,r,i);if(!u||i)return f;if(!(f.length>a||fO(f).width>Number(n)))return f;for(var d,p=0,h=s.length-1,y=0;p<=h&&y<=s.length-1;){var v=Math.floor((p+h)/2),g=v-1,[m,b]=dO(s,g,l,c,a,n,r,i),[x]=dO(s,v,l,c,a,n,r,i);if(m||x||(p=v+1),m&&x&&(h=v-1),!m&&x){d=b;break}y++}return d||f})({breakAll:a,children:n,maxLines:o,style:i},l,u,t,Boolean(r))}return pO(n)})({breakAll:p.breakAll,children:p.children,maxLines:p.maxLines,scaleToFit:u,style:p.style,width:p.width}),[p.breakAll,p.children,p.maxLines,u,p.style,p.width]),{dx:y,dy:v,angle:g,className:b,breakAll:x}=p,w=oO(p,iO);if(!rt(i)||!rt(a)||0===h.length)return null;var O,P=Number(i)+(tt(y)?y:0),j=Number(a)+(tt(v)?v:0);if(!Mc(P)||!Mc(j))return null;switch(d){case"start":O=rO("calc(".concat(c,")"));break;case"middle":O=rO("calc(".concat((h.length-1)/2," * -").concat(o," + (").concat(c," / 2))"));break;default:O=rO("calc(".concat(h.length-1," * -").concat(o,")"))}var E=[];if(u){var A=h[0].width,{width:S}=p;E.push("scale(".concat(tt(S)&&tt(A)?S/A:1,")"))}return g&&E.push("rotate(".concat(g,", ").concat(P,", ").concat(j,")")),E.length&&(w.transform=E.join(" ")),r.createElement("text",aO({},m(w),{ref:t,x:P,y:j,className:s("recharts-text",b),textAnchor:f,fill:l.includes("url")?hO:l}),h.map((e,t)=>{var n=e.words.join(x?"":" ");return r.createElement("tspan",{x:P,dy:0===t?O:o,key:"".concat(n,"-").concat(t)},n)}))});vO.displayName="Text";var gO=["labelRef"];function mO(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function bO(e){for(var t=1;t{var{x:t,y:n,upperWidth:i,lowerWidth:a,width:o,height:c,children:l}=e,u=r.useMemo(()=>({x:t,y:n,upperWidth:i,lowerWidth:a,width:o,height:c}),[t,n,i,a,o,c]);return r.createElement(OO.Provider,{value:u},l)},jO=()=>{var e=r.useContext(OO),t=Uc();return e||Fc(t)},EO=r.createContext(null),AO=e=>null!=e&&"function"==typeof e,SO=e=>"cx"in e&&tt(e.cx),kO={angle:0,offset:5,zIndex:Ov.label,position:"middle",textBreakAll:!1};function _O(e){var t,n,i,a,o,c=At(e,kO),{viewBox:l,position:u,value:f,children:d,content:p,className:h="",textBreakAll:y,labelRef:v}=c,g=(t=r.useContext(EO),n=kn(Uv),t||n),b=jO();if(!(i=null==l?"center"===u?b:null!=g?g:b:SO(l)?l:Fc(l))||ut(f)&&ut(d)&&!r.isValidElement(p)&&"function"!=typeof p)return null;var x=bO(bO({},c),{},{viewBox:i});if(r.isValidElement(p)){var{labelRef:w}=x,O=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var{value:t,formatter:r}=e,n=ut(e.children)?t:e.children;return"function"==typeof r?r(n):n})(c);var P=m(c);if(SO(i)){if("insideStart"===u||"insideEnd"===u||"end"===u)return((e,t,n,i,a)=>{var o,c,{offset:l,className:u}=e,{cx:f,cy:d,innerRadius:p,outerRadius:h,startAngle:y,endAngle:v,clockWise:g}=a,m=(p+h)/2,b=((e,t)=>Qe(t-e)*Math.min(Math.abs(t-e),360))(y,v),x=b>=0?1:-1;switch(t){case"insideStart":o=y+x*l,c=g;break;case"insideEnd":o=v-x*l,c=!g;break;case"end":o=v+x*l,c=g;break;default:throw new Error("Unsupported position ".concat(t))}c=b<=0?c:!c;var w=Os(f,d,m,o),O=Os(f,d,m,o+359*(c?1:-1)),P="M".concat(w.x,",").concat(w.y,"\n A").concat(m,",").concat(m,",0,1,").concat(c?0:1,",\n ").concat(O.x,",").concat(O.y),j=ut(e.id)?it("recharts-radial-line-"):e.id;return r.createElement("text",wO({},i,{dominantBaseline:"central",className:s("recharts-radial-bar-label",u)}),r.createElement("defs",null,r.createElement("path",{id:j,d:P})),r.createElement("textPath",{xlinkHref:"#".concat(j)},n))})(c,u,a,P,i);o=((e,t,r)=>{var{cx:n,cy:i,innerRadius:a,outerRadius:o,startAngle:c,endAngle:l}=e,u=(c+l)/2;if("outside"===r){var{x:s,y:f}=Os(n,i,o+t,u);return{x:s,y:f,textAnchor:s>=n?"start":"end",verticalAnchor:"middle"}}if("center"===r)return{x:n,y:i,textAnchor:"middle",verticalAnchor:"middle"};if("centerTop"===r)return{x:n,y:i,textAnchor:"middle",verticalAnchor:"start"};if("centerBottom"===r)return{x:n,y:i,textAnchor:"middle",verticalAnchor:"end"};var d=(a+o)/2,{x:p,y:h}=Os(n,i,d,u);return{x:p,y:h,textAnchor:"middle",verticalAnchor:"middle"}})(i,c.offset,c.position)}else o=((e,t)=>{var r,{parentViewBox:n,offset:i,position:a}=e;null==n||SO(n)||(r=n);var{x:o,y:c,upperWidth:l,lowerWidth:u,height:s}=t,f=o,d=o+(l-u)/2,p=(f+d)/2,h=(l+u)/2,y=f+l/2,v=s>=0?1:-1,g=v*i,m=v>0?"end":"start",b=v>0?"start":"end",x=l>=0?1:-1,w=x*i,O=x>0?"end":"start",P=x>0?"start":"end";if("top"===a)return bO(bO({},{x:f+l/2,y:c-g,textAnchor:"middle",verticalAnchor:m}),r?{height:Math.max(c-r.y,0),width:l}:{});if("bottom"===a)return bO(bO({},{x:d+u/2,y:c+s+g,textAnchor:"middle",verticalAnchor:b}),r?{height:Math.max(r.y+r.height-(c+s),0),width:u}:{});if("left"===a){var j={x:p-w,y:c+s/2,textAnchor:O,verticalAnchor:"middle"};return bO(bO({},j),r?{width:Math.max(j.x-r.x,0),height:s}:{})}if("right"===a){var E={x:p+h+w,y:c+s/2,textAnchor:P,verticalAnchor:"middle"};return bO(bO({},E),r?{width:Math.max(r.x+r.width-E.x,0),height:s}:{})}var A=r?{width:h,height:s}:{};return"insideLeft"===a?bO({x:p+w,y:c+s/2,textAnchor:P,verticalAnchor:"middle"},A):"insideRight"===a?bO({x:p+h-w,y:c+s/2,textAnchor:O,verticalAnchor:"middle"},A):"insideTop"===a?bO({x:f+l/2,y:c+g,textAnchor:"middle",verticalAnchor:b},A):"insideBottom"===a?bO({x:d+u/2,y:c+s-g,textAnchor:"middle",verticalAnchor:m},A):"insideTopLeft"===a?bO({x:f+w,y:c+g,textAnchor:P,verticalAnchor:b},A):"insideTopRight"===a?bO({x:f+l-w,y:c+g,textAnchor:O,verticalAnchor:b},A):"insideBottomLeft"===a?bO({x:d+w,y:c+s-g,textAnchor:P,verticalAnchor:m},A):"insideBottomRight"===a?bO({x:d+u-w,y:c+s-g,textAnchor:O,verticalAnchor:m},A):a&&"object"==typeof a&&(tt(a.x)||et(a.x))&&(tt(a.y)||et(a.y))?bO({x:o+at(a.x,h),y:c+at(a.y,s),textAnchor:"end",verticalAnchor:"end"},A):bO({x:y,y:c+s/2,textAnchor:"middle",verticalAnchor:"middle"},A)})(c,i);return r.createElement(tw,{zIndex:c.zIndex},r.createElement(vO,wO({ref:v,className:s("recharts-label",h)},P,o,{textAnchor:uO(P.textAnchor)?P.textAnchor:o.textAnchor,breakAll:y}),a))}function MO(e){var{label:t,labelRef:n}=e;return((e,t,n)=>{if(!e)return null;var i={viewBox:t,labelRef:n};return!0===e?r.createElement(_O,wO({key:"label-implicit"},i)):rt(e)?r.createElement(_O,wO({key:"label-implicit",value:e},i)):r.isValidElement(e)?e.type===_O?r.cloneElement(e,bO({key:"label-implicit"},i)):r.createElement(_O,wO({key:"label-implicit",content:e},i)):AO(e)?r.createElement(_O,wO({key:"label-implicit",content:e},i)):e&&"object"==typeof e?r.createElement(_O,wO({},e,{key:"label-implicit"},i)):null})(t,jO(),n)||null}_O.displayName="Label";var TO,CO={},IO={};function DO(){return TO||(TO=1,e=IO,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.last=function(e){return e[e.length-1]}),IO;var e}var NO,zO,RO,LO,BO={};function KO(){return NO||(NO=1,e=BO,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.toArray=function(e){return Array.isArray(e)?e:Array.from(e)}),BO;var e}function FO(){return LO?RO:(LO=1,RO=(zO||(zO=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=DO(),r=KO(),n=Yt();e.last=function(e){if(n.isArrayLike(e))return t.last(r.toArray(e))}}(CO)),CO).last)}const UO=l(FO());var WO=["valueAccessor"],$O=["dataKey","clockWise","id","textBreakAll","zIndex"];function HO(){return HO=Object.assign?Object.assign.bind():function(e){for(var t=1;tArray.isArray(e.value)?UO(e.value):e.value,YO=r.createContext(void 0),GO=YO.Provider,XO=r.createContext(void 0);function ZO(e){var{valueAccessor:t=qO}=e,n=VO(e,WO),{dataKey:i,clockWise:a,id:o,textBreakAll:c,zIndex:l}=n,u=VO(n,$O),s=r.useContext(YO),f=r.useContext(XO),d=s||f;return d&&d.length?r.createElement(tw,{zIndex:null!=l?l:Ov.label},r.createElement(j,{className:"recharts-label-list"},d.map((e,a)=>{var l,s=ut(i)?t(e,a):No(e&&e.payload,i),f=ut(o)?{}:{id:"".concat(o,"-").concat(a)};return r.createElement(_O,HO({key:"label-".concat(a)},m(e),u,f,{fill:null!==(l=n.fill)&&void 0!==l?l:e.fill,parentViewBox:e.parentViewBox,value:s,textBreakAll:c,viewBox:e.viewBox,index:a,zIndex:0}))}))):null}function QO(e){var{label:t}=e;return t?!0===t?r.createElement(ZO,{key:"labelList-implicit"}):r.isValidElement(t)||AO(t)?r.createElement(ZO,{key:"labelList-implicit",content:t}):"object"==typeof t?r.createElement(ZO,HO({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}XO.Provider,ZO.displayName="LabelList";var JO=["points","className","baseLinePoints","connectNulls"];function eP(){return eP=Object.assign?Object.assign.bind():function(e){for(var t=1;te&&e.x===+e.x&&e.y===+e.y,rP=(e,t)=>{var r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[[]];return e.forEach(e=>{tP(e)?t[t.length-1].push(e):t[t.length-1].length>0&&t.push([])}),tP(e[0])&&t[t.length-1].push(e[0]),t[t.length-1].length<=0&&(t=t.slice(0,-1)),t}(e);t&&(r=[r.reduce((e,t)=>[...e,...t],[])]);var n=r.map(e=>e.reduce((e,t,r)=>"".concat(e).concat(0===r?"M":"L").concat(t.x,",").concat(t.y),"")).join("");return 1===r.length?"".concat(n,"Z"):n},nP=e=>{var{points:t,className:n,baseLinePoints:i,connectNulls:a}=e,o=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var n=rP(e,r);return"".concat("Z"===n.slice(-1)?n.slice(0,-1):n,"L").concat(rP(Array.from(t).reverse(),r).slice(1))})(t,i,a);return r.createElement("g",{className:c},r.createElement("path",eP({},m(o),{fill:"Z"===u.slice(-1)?o.fill:"none",stroke:"none",d:u})),l?r.createElement("path",eP({},m(o),{fill:"none",d:rP(t,a)})):null,l?r.createElement("path",eP({},m(o),{fill:"none",d:rP(i,a)})):null)}var f=rP(t,a);return r.createElement("path",eP({},m(o),{fill:"Z"===f.slice(-1)?o.fill:"none",className:c,d:f}))};function iP(){return iP=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:n,r:i,className:a}=e,o=s("recharts-dot",a);return tt(t)&&tt(n)&&tt(i)?r.createElement("circle",iP({},v(e),Ot(e),{className:o,cx:t,cy:n,r:i})):null},uP=Ha({name:"polarAxis",initialState:{radiusAxis:{},angleAxis:{}},reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=t.payload},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=t.payload},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:sP,removeRadiusAxis:fP,addAngleAxis:dP,removeAngleAxis:pP}=uP.actions,hP=uP.reducer,yP=e=>!e||"object"!=typeof e||!("clipDot"in e)||Boolean(e.clipDot),vP={};function gP(){return aP||(aP=1,e=vP,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isPlainObject=function(e){var t;if("object"!=typeof e)return!1;if(null==e)return!1;if(null===Object.getPrototypeOf(e))return!0;if("[object Object]"!==Object.prototype.toString.call(e)){const r=e[Symbol.toStringTag];return null!=r&&!!(null==(t=Object.getOwnPropertyDescriptor(e,Symbol.toStringTag))?void 0:t.writable)&&e.toString()===`[object ${r}]`}let r=e;for(;null!==Object.getPrototypeOf(r);)r=Object.getPrototypeOf(r);return Object.getPrototypeOf(e)===r}),vP;var e}function mP(){return cP?oP:(cP=1,oP=gP().isPlainObject)}const bP=l(mP());function xP(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function wP(e){for(var t=1;t{var a,o=r-n;return a="M ".concat(e,",").concat(t),a+="L ".concat(e+r,",").concat(t),a+="L ".concat(e+r-o/2,",").concat(t+i),(a+="L ".concat(e+r-o/2-n,",").concat(t+i))+"L ".concat(e,",").concat(t," Z")},AP={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},SP=e=>{var t=At(e,AP),{x:n,y:i,upperWidth:a,lowerWidth:o,height:c,className:l}=t,{animationEasing:u,animationDuration:f,animationBegin:d,isUpdateAnimationActive:p}=t,h=r.useRef(null),[y,v]=r.useState(-1),g=r.useRef(a),b=r.useRef(o),x=r.useRef(c),w=r.useRef(n),O=r.useRef(i),P=os(e,"trapezoid-");if(r.useEffect(()=>{if(h.current&&h.current.getTotalLength)try{var e=h.current.getTotalLength();e&&v(e)}catch(t){}},[]),n!==+n||i!==+i||a!==+a||o!==+o||c!==+c||0===a&&0===o||0===c)return null;var j=s("recharts-trapezoid",l);if(!p)return r.createElement("g",null,r.createElement("path",PP({},m(t),{className:j,d:EP(n,i,a,o,c)})));var E=g.current,A=b.current,S=x.current,k=w.current,_=O.current,M="0px ".concat(-1===y?1:y,"px"),T="".concat(y,"px 0px"),C=Ru(["strokeDasharray"],f,u);return r.createElement(as,{animationId:P,key:P,canBegin:y>0,duration:f,easing:u,isActive:p,begin:d},e=>{var l=ct(E,a,e),u=ct(A,o,e),s=ct(S,c,e),f=ct(k,n,e),d=ct(_,i,e);h.current&&(g.current=l,b.current=u,x.current=s,w.current=f,O.current=d);var p=e>0?{transition:C,strokeDasharray:T}:{strokeDasharray:M};return r.createElement("path",PP({},m(t),{className:j,d:EP(f,d,l,u,s),ref:h,style:wP(wP({},p),t.style)}))})},kP=["option","shapeType","propTransformer","activeClassName"];function _P(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function MP(e){for(var t=1;t{i||(null===a.current?n(nb(t)):a.current!==t&&n(ib({prev:a.current,next:t})),a.current=t)},[t,n,i]),r.useLayoutEffect(()=>()=>{a.current&&(n(ab(a.current)),a.current=null)},[n]),null}function zP(e){var{legendPayload:t}=e,n=jn(),i=pc(),a=r.useRef(null);return r.useLayoutEffect(()=>{i||(null===a.current?n(Ul(t)):a.current!==t&&n(Wl({prev:a.current,next:t})),a.current=t)},[n,i,t]),r.useLayoutEffect(()=>()=>{a.current&&(n($l(a.current)),a.current=null)},[n]),null}var RP=null!==(jP=a["useId".toString()])&&void 0!==jP?jP:()=>{var[e]=r.useState(()=>it("uid-"));return e};function LP(e,t){var r=RP();return t||(e?"".concat(e,"-").concat(r):r)}var BP=r.createContext(void 0),KP=e=>{var{id:t,type:n,children:i}=e,a=LP("recharts-".concat(n),t);return r.createElement(BP.Provider,{value:a},i(a))},FP=Ha({name:"graphicalItems",initialState:{cartesianItems:[],polarItems:[]},reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(t.payload)},prepare:za()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:r,next:n}=t.payload,i=ja(e).cartesianItems.indexOf(r);i>-1&&(e.cartesianItems[i]=n)},prepare:za()},removeCartesianGraphicalItem:{reducer(e,t){var r=ja(e).cartesianItems.indexOf(t.payload);r>-1&&e.cartesianItems.splice(r,1)},prepare:za()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(t.payload)},prepare:za()},removePolarGraphicalItem:{reducer(e,t){var r=ja(e).polarItems.indexOf(t.payload);r>-1&&e.polarItems.splice(r,1)},prepare:za()}}}),{addCartesianGraphicalItem:UP,replaceCartesianGraphicalItem:WP,removeCartesianGraphicalItem:$P,addPolarGraphicalItem:HP,removePolarGraphicalItem:VP}=FP.actions,qP=FP.reducer,YP=e=>{var t=jn(),n=r.useRef(null);return r.useLayoutEffect(()=>{null===n.current?t(UP(e)):n.current!==e&&t(WP({prev:n.current,next:e})),n.current=e},[t,e]),r.useLayoutEffect(()=>()=>{n.current&&(t($P(n.current)),n.current=null)},[t]),null},GP=r.memo(YP),XP=["points"];function ZP(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function QP(e){for(var t=1;t{var l,u,s=QP(QP(QP({r:3},c),p),{},{index:i,cx:null!==(l=e.x)&&void 0!==l?l:void 0,cy:null!==(u=e.y)&&void 0!==u?u:void 0,dataKey:o,value:e.value,payload:e.payload,points:t});return r.createElement(tj,{key:"dot-".concat(i),option:n,dotProps:s,className:a})}),y={};return l&&null!=u&&(y.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(u,")")),r.createElement(tw,{zIndex:s},r.createElement(j,ej({className:i},y),h))}function nj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ij(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),bj=Nn([mj,Yo,Go],(e,t,r)=>{if(e&&null!=t&&null!=r)return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,r-e.top-e.bottom)}}),xj=()=>kn(bj);function wj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Oj(e){for(var t=1;t{var{point:t,childIndex:n,mainColor:i,activeDot:a,dataKey:o,clipPath:c}=e;if(!1===a||null==t.x||null==t.y)return null;var l,u=Oj(Oj(Oj({},{index:n,dataKey:o,cx:t.x,cy:t.y,r:4,fill:null!=i?i:"none",strokeWidth:2,stroke:"#fff",payload:t.payload,value:t.value}),g(a)),Ot(a));return l=r.isValidElement(a)?r.cloneElement(a,u):"function"==typeof a?a(u):r.createElement(lP,u),r.createElement(j,{className:"recharts-active-dot",clipPath:c},l)};function Ej(e){var{points:t,mainColor:n,activeDot:i,itemDataKey:a,clipPath:o,zIndex:c=Ov.activeDot}=e,l=kn(px),u=kn(wx);if(null==t||null==u)return null;var s=t.find(e=>u.includes(e.payload));return ut(s)?null:r.createElement(tw,{zIndex:c},r.createElement(jj,{point:s,childIndex:Number(l),mainColor:n,dataKey:a,activeDot:i,clipPath:o}))}var Aj=Ha({name:"errorBars",initialState:{},reducers:{addErrorBar:(e,t)=>{var{itemId:r,errorBar:n}=t.payload;e[r]||(e[r]=[]),e[r].push(n)},replaceErrorBar:(e,t)=>{var{itemId:r,prev:n,next:i}=t.payload;e[r]&&(e[r]=e[r].map(e=>e.dataKey===n.dataKey&&e.direction===n.direction?i:e))},removeErrorBar:(e,t)=>{var{itemId:r,errorBar:n}=t.payload;e[r]&&(e[r]=e[r].filter(e=>e.dataKey!==n.dataKey||e.direction!==n.direction))}}}),{addErrorBar:Sj,replaceErrorBar:kj,removeErrorBar:_j}=Aj.actions,Mj=Aj.reducer,Tj=["children"],Cj={data:[],xAxisId:"xAxis-0",yAxisId:"yAxis-0",dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0},Ij=r.createContext(Cj);function Dj(e){var{children:t}=e,n=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;nig(t,e)),a=kn(e=>cg(e,t)),o=null!==(r=null==i?void 0:i.allowDataOverflow)&&void 0!==r?r:rg.allowDataOverflow,c=null!==(n=null==a?void 0:a.allowDataOverflow)&&void 0!==n?n:ag.allowDataOverflow;return{needClip:o||c,needClipX:o,needClipY:c}}function zj(e){var{xAxisId:t,yAxisId:n,clipPathId:i}=e,a=xj(),{needClipX:o,needClipY:c,needClip:l}=Nj(t,n);if(!l||!a)return null;var{x:u,y:s,width:f,height:d}=a;return r.createElement("clipPath",{id:"clipPath-".concat(i)},r.createElement("rect",{x:o?u:u-f/2,y:c?s:s-d/2,width:o?f:2*f,height:c?d:2*d}))}var Rj=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle"]);function Lj(e,t){return null==e&&null==t||("number"==typeof e&&"number"==typeof t?e===t||e!=e&&t!=t:e===t)}function Bj(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(Rj.has(n)){if(null==e[n]&&null==t[n])continue;if(!o(e[n],t[n]))return!1}else if(!Lj(e[n],t[n]))return!1;return!0}var Kj,Fj,Uj,Wj,$j=e=>{var{chartData:t}=e,n=jn(),i=pc();return r.useEffect(()=>i?()=>{}:(n(Ow(t)),()=>{n(Ow(void 0))}),[t,n,i]),null},Hj={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},Vj=Ha({name:"brush",initialState:Hj,reducers:{setBrushSettings:(e,t)=>null==t.payload?Hj:t.payload}}),{setBrushSettings:qj}=Vj.actions,Yj=Vj.reducer;class Gj{static create(e){return new Gj(e)}constructor(e){this.scale=e}get domain(){return this.scale.domain}get range(){return this.scale.range}get rangeMin(){return this.range()[0]}get rangeMax(){return this.range()[1]}get bandwidth(){return this.scale.bandwidth}apply(e){var{bandAware:t,position:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==e){if(r)switch(r){case"start":default:return this.scale(e);case"middle":var n=this.bandwidth?this.bandwidth()/2:0;return this.scale(e)+n;case"end":var i=this.bandwidth?this.bandwidth():0;return this.scale(e)+i}if(t){var a=this.bandwidth?this.bandwidth()/2:0;return this.scale(e)+a}return this.scale(e)}}isInRange(e){var t=this.range(),r=t[0],n=t[t.length-1];return r<=n?e>=r&&e<=n:e>=n&&e<=r}}Kj=Gj,Uj=1e-4,Wj=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(Fj="EPS","string"),(Fj="symbol"==typeof Wj?Wj:Wj+"")in Kj?Object.defineProperty(Kj,Fj,{value:Uj,enumerable:!0,configurable:!0,writable:!0}):Kj[Fj]=Uj;var Xj=Ha({name:"referenceElements",initialState:{dots:[],areas:[],lines:[]},reducers:{addDot:(e,t)=>{e.dots.push(t.payload)},removeDot:(e,t)=>{var r=ja(e).dots.findIndex(e=>e===t.payload);-1!==r&&e.dots.splice(r,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var r=ja(e).areas.findIndex(e=>e===t.payload);-1!==r&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(t.payload)},removeLine:(e,t)=>{var r=ja(e).lines.findIndex(e=>e===t.payload);-1!==r&&e.lines.splice(r,1)}}}),{addDot:Zj,removeDot:Qj,addArea:Jj,removeArea:eE,addLine:tE,removeLine:rE}=Xj.actions,nE=Xj.reducer,iE=r.createContext(void 0),aE=e=>{var{children:t}=e,[n]=r.useState("".concat(it("recharts"),"-clip")),i=xj();if(null==i)return null;var{x:a,y:o,width:c,height:l}=i;return r.createElement(iE.Provider,{value:n},r.createElement("defs",null,r.createElement("clipPath",{id:n},r.createElement("rect",{x:a,y:o,height:l,width:c}))),t)};function oE(e,t){if(t<1)return[];if(1===t)return e;for(var r=[],n=0;ne*i)return!1;var a=r();return e*(t-e*a/2-n)>=0&&e*(t+e*a/2-i)<=0}function lE(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function uE(e){for(var t=1;t{var i="function"==typeof s?s(e.value,n):e.value;return"width"===h?function(e,t,r){return function(e){var{width:t,height:r}=e,n=function(e){return(e%180+180)%180}(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0),i=n*Math.PI/180,a=Math.atan(r/t),o=i>a&&i=2?Qe(a[1].coordinate-a[0].coordinate):1,m=function(e,t,r){var n="width"===r,{x:i,y:a,width:o,height:c}=e;return 1===t?{start:n?i:a,end:n?i+o:a+c}:{start:n?i+o:a+c,end:n?i:a}}(o,g,h);return"equidistantPreserveStart"===u?function(e,t,r,n,i){for(var a,o=(n||[]).slice(),{start:c,end:l}=t,u=0,s=1,f=c,d=function(){var t=null==n?void 0:n[u];if(void 0===t)return{v:oE(n,s)};var a,o=u,d=()=>(void 0===a&&(a=r(t,o)),a),p=t.coordinate,h=0===u||cE(e,p,d,f,l);h||(u=0,f=c,s+=1),h&&(f=p+e*(d()/2+i),u+=s)};s<=o.length;)if(a=d())return a.v;return[]}(g,m,v,a,c):(p="preserveStart"===u||"preserveStartEnd"===u?function(e,t,r,n,i,a){var o=(n||[]).slice(),c=o.length,{start:l,end:u}=t;if(a){var s=n[c-1],f=r(s,c-1),d=e*(s.coordinate+e*f/2-u);o[c-1]=s=uE(uE({},s),{},{tickCoord:d>0?s.coordinate-d*e:s.coordinate}),null!=s.tickCoord&&cE(e,s.tickCoord,()=>f,l,u)&&(u=s.tickCoord-e*(f/2+i),o[c-1]=uE(uE({},s),{},{isShow:!0}))}for(var p=a?c-1:c,h=function(t){var n,a=o[t],c=()=>(void 0===n&&(n=r(a,t)),n);if(0===t){var s=e*(a.coordinate-e*c()/2-l);o[t]=a=uE(uE({},a),{},{tickCoord:s<0?a.coordinate-s*e:a.coordinate})}else o[t]=a=uE(uE({},a),{},{tickCoord:a.coordinate});null!=a.tickCoord&&cE(e,a.tickCoord,c,l,u)&&(l=a.tickCoord+e*(c()/2+i),o[t]=uE(uE({},a),{},{isShow:!0}))},y=0;y(void 0===n&&(n=r(u,t)),n);if(t===o-1){var f=e*(u.coordinate+e*s()/2-l);a[t]=u=uE(uE({},u),{},{tickCoord:f>0?u.coordinate-f*e:u.coordinate})}else a[t]=u=uE(uE({},u),{},{tickCoord:u.coordinate});null!=u.tickCoord&&cE(e,u.tickCoord,s,c,l)&&(l=u.tickCoord-e*(s()/2+i),a[t]=uE(uE({},u),{},{isShow:!0}))},s=o-1;s>=0;s--)u(s);return a}(g,m,v,a,c),p.filter(e=>e.isShow))}var dE=["axisLine","width","height","className","hide","ticks","axisType"];function pE(){return pE=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{ticks:n=[],tick:i,tickLine:a,stroke:o,tickFormatter:c,unit:l,padding:u,tickTextProps:f,orientation:d,mirror:p,x:h,y:y,width:m,height:b,tickSize:x,tickMargin:w,fontSize:O,letterSpacing:P,getTicksConfig:E,events:A,axisType:S}=e,k=fE(yE(yE({},E),{},{ticks:n}),O,P),_=function(e,t){switch(e){case"left":return t?"start":"end";case"right":return t?"end":"start";default:return"middle"}}(d,p),M=function(e,t){switch(e){case"left":case"right":return"middle";case"top":return t?"start":"end";default:return t?"end":"start"}}(d,p),T=v(E),C=g(i),I={};"object"==typeof a&&(I=a);var D=yE(yE({},T),{},{fill:"none"},I),N=k.map(e=>yE({entry:e},function(e,t,r,n,i,a,o,c,l){var u,s,f,d,p,h,y=c?-1:1,v=e.tickSize||o,g=tt(e.tickCoord)?e.tickCoord:e.coordinate;switch(a){case"top":u=s=e.coordinate,h=(f=(d=r+ +!c*i)-y*v)-y*l,p=g;break;case"left":f=d=e.coordinate,p=(u=(s=t+ +!c*n)-y*v)-y*l,h=g;break;case"right":f=d=e.coordinate,p=(u=(s=t+ +c*n)+y*v)+y*l,h=g;break;default:u=s=e.coordinate,h=(f=(d=r+ +c*i)+y*v)+y*l,p=g}return{line:{x1:u,y1:f,x2:s,y2:d},tick:{x:p,y:h}}}(e,h,y,m,b,d,x,p,w))),z=N.map(e=>{var{entry:t,line:n}=e;return r.createElement(j,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(t.value,"-").concat(t.coordinate,"-").concat(t.tickCoord)},a&&r.createElement("line",pE({},D,n,{className:s("recharts-cartesian-axis-tick-line",Ze(a,"className"))})))}),R=N.map((e,t)=>{var{entry:n,tick:a}=e,s=yE(yE(yE(yE({textAnchor:_,verticalAnchor:M},T),{},{stroke:"none",fill:o},C),a),{},{index:t,payload:n,visibleTicksCount:k.length,tickFormatter:c,padding:u},f);return r.createElement(j,pE({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(n.value,"-").concat(n.coordinate,"-").concat(n.tickCoord)},Pt(A,n,t)),i&&r.createElement(bE,{option:i,tickProps:s,value:"".concat("function"==typeof c?c(n.value,t):n.value).concat(l||"")}))});return r.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(S,"-ticks")},R.length>0&&r.createElement(tw,{zIndex:Ov.label},r.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(S,"-tick-labels"),ref:t},R)),z.length>0&&r.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(S,"-tick-lines")},z))}),wE=r.forwardRef((e,t)=>{var{axisLine:n,width:i,height:a,className:o,hide:c,ticks:l,axisType:u}=e,f=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({getCalculatedWidth:()=>{var t;return(e=>{var{ticks:t,label:r,labelGapWithTick:n=5,tickSize:i=0,tickMargin:a=0}=e,o=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.width>o&&(o=t.width)}});var c=r?r.getBoundingClientRect().width:0,l=o+(i+a)+c+(r?n:0);return Math.round(l)}return 0})({ticks:g.current,label:null===(t=e.labelRef)||void 0===t?void 0:t.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var m=r.useCallback(e=>{if(e){var t=e.getElementsByClassName("recharts-cartesian-axis-tick-value");g.current=t;var r=t[0];if(r){var n=window.getComputedStyle(r),i=n.fontSize,a=n.letterSpacing;i===d&&a===h||(p(i),y(a))}}},[d,h]);return c||null!=i&&i<=0||null!=a&&a<=0?null:r.createElement(tw,{zIndex:e.zIndex},r.createElement(j,{className:s("recharts-cartesian-axis",o)},r.createElement(mE,{x:e.x,y:e.y,width:i,height:a,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:v(e)}),r.createElement(xE,{ref:m,axisType:u,events:f,fontSize:d,getTicksConfig:e,height:e.height,letterSpacing:h,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:l,unit:e.unit,width:e.width,x:e.x,y:e.y}),r.createElement(PO,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},r.createElement(MO,{label:e.label,labelRef:e.labelRef}),e.children)))}),OE=r.forwardRef((e,t)=>{var n=At(e,gE);return r.createElement(wE,pE({},n,{ref:t}))});OE.displayName="CartesianAxis";var PE=["x1","y1","x2","y2","key"],jE=["offset"],EE=["xAxisId","yAxisId"],AE=["xAxisId","yAxisId"];function SE(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function kE(e){for(var t=1;t{var{fill:t}=e;if(!t||"none"===t)return null;var{fillOpacity:n,x:i,y:a,width:o,height:c,ry:l}=e;return r.createElement("rect",{x:i,y:a,ry:l,width:o,height:c,stroke:"none",fill:t,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function IE(e){var t,{option:n,lineItemProps:i}=e;if(r.isValidElement(n))t=r.cloneElement(n,i);else if("function"==typeof n)t=n(i);else{var a,{x1:o,y1:c,x2:l,y2:u,key:s}=i,f=null!==(a=v(TE(i,PE)))&&void 0!==a?a:{},{offset:d}=f,p=TE(f,jE);t=r.createElement("line",ME({},p,{x1:o,y1:c,x2:l,y2:u,fill:"none",key:s}))}return t}function DE(e){var{x:t,width:n,horizontal:i=!0,horizontalPoints:a}=e;if(!i||!a||!a.length)return null;var{xAxisId:o,yAxisId:c}=e,l=TE(e,EE),u=a.map((e,a)=>{var o=kE(kE({},l),{},{x1:t,y1:e,x2:t+n,y2:e,key:"line-".concat(a),index:a});return r.createElement(IE,{key:"line-".concat(a),option:i,lineItemProps:o})});return r.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function NE(e){var{y:t,height:n,vertical:i=!0,verticalPoints:a}=e;if(!i||!a||!a.length)return null;var{xAxisId:o,yAxisId:c}=e,l=TE(e,AE),u=a.map((e,a)=>{var o=kE(kE({},l),{},{x1:e,y1:t,x2:e,y2:t+n,key:"line-".concat(a),index:a});return r.createElement(IE,{option:i,lineItemProps:o,key:"line-".concat(a)})});return r.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function zE(e){var{horizontalFill:t,fillOpacity:n,x:i,y:a,width:o,height:c,horizontalPoints:l,horizontal:u=!0}=e;if(!u||!t||!t.length||null==l)return null;var s=l.map(e=>Math.round(e+a-a)).sort((e,t)=>e-t);a!==s[0]&&s.unshift(0);var f=s.map((e,l)=>{var u=s[l+1]?s[l+1]-e:a+c-e;if(u<=0)return null;var f=l%t.length;return r.createElement("rect",{key:"react-".concat(l),y:e,x:i,height:u,width:o,stroke:"none",fill:t[f],fillOpacity:n,className:"recharts-cartesian-grid-bg"})});return r.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},f)}function RE(e){var{vertical:t=!0,verticalFill:n,fillOpacity:i,x:a,y:o,width:c,height:l,verticalPoints:u}=e;if(!t||!n||!n.length)return null;var s=u.map(e=>Math.round(e+a-a)).sort((e,t)=>e-t);a!==s[0]&&s.unshift(0);var f=s.map((e,t)=>{var u=s[t+1]?s[t+1]-e:a+c-e;if(u<=0)return null;var f=t%n.length;return r.createElement("rect",{key:"react-".concat(t),x:e,y:o,width:u,height:l,stroke:"none",fill:n[f],fillOpacity:i,className:"recharts-cartesian-grid-bg"})});return r.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},f)}var LE=(e,t)=>{var{xAxis:r,width:n,height:i,offset:a}=e;return Ro(fE(kE(kE(kE({},gE),r),{},{ticks:Lo(r),viewBox:{x:0,y:0,width:n,height:i}})),a.left,a.left+a.width,t)},BE=(e,t)=>{var{yAxis:r,width:n,height:i,offset:a}=e;return Ro(fE(kE(kE(kE({},gE),r),{},{ticks:Lo(r),viewBox:{x:0,y:0,width:n,height:i}})),a.top,a.top+a.height,t)},KE={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:Ov.grid};function FE(e){var t=Hc(),n=Vc(),i=$c(),a=kE(kE({},At(e,KE)),{},{x:tt(e.x)?e.x:i.left,y:tt(e.y)?e.y:i.top,width:tt(e.width)?e.width:i.width,height:tt(e.height)?e.height:i.height}),{xAxisId:o,yAxisId:c,x:l,y:u,width:s,height:f,syncWithTicks:d,horizontalValues:p,verticalValues:h}=a,y=pc(),v=kn(e=>$m(e,"xAxis",o,y)),g=kn(e=>$m(e,"yAxis",c,y));if(!(Tc(s)&&Tc(f)&&tt(l)&&tt(u)))return null;var m=a.verticalCoordinatesGenerator||LE,b=a.horizontalCoordinatesGenerator||BE,{horizontalPoints:x,verticalPoints:w}=a;if(!(x&&x.length||"function"!=typeof b)){var O=p&&p.length,P=b({yAxis:g?kE(kE({},g),{},{ticks:O?p:g.ticks}):void 0,width:null!=t?t:s,height:null!=n?n:f,offset:i},!!O||d);Pc(Array.isArray(P),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof P,"]")),Array.isArray(P)&&(x=P)}if(!(w&&w.length||"function"!=typeof m)){var j=h&&h.length,E=m({xAxis:v?kE(kE({},v),{},{ticks:j?h:v.ticks}):void 0,width:null!=t?t:s,height:null!=n?n:f,offset:i},!!j||d);Pc(Array.isArray(E),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof E,"]")),Array.isArray(E)&&(w=E)}return r.createElement(tw,{zIndex:a.zIndex},r.createElement("g",{className:"recharts-cartesian-grid"},r.createElement(CE,{fill:a.fill,fillOpacity:a.fillOpacity,x:a.x,y:a.y,width:a.width,height:a.height,ry:a.ry}),r.createElement(zE,ME({},a,{horizontalPoints:x})),r.createElement(RE,ME({},a,{verticalPoints:w})),r.createElement(DE,ME({},a,{offset:i,horizontalPoints:x,xAxis:v,yAxis:g})),r.createElement(NE,ME({},a,{offset:i,verticalPoints:w,xAxis:v,yAxis:g}))))}FE.displayName="CartesianGrid";var UE=(e,t,r,n)=>qm(e,"xAxis",t,n),WE=(e,t,r,n)=>Vm(e,"xAxis",t,n),$E=(e,t,r,n)=>qm(e,"yAxis",r,n),HE=(e,t,r,n)=>Vm(e,"yAxis",r,n),VE=Nn([qc,UE,$E,WE,HE],(e,t,r,n,i)=>zo(e,"xAxis")?Ho(t,n,!1):Ho(r,i,!1));function qE(e){return"line"===e.type}var YE=Nn([hg,(e,t,r,n,i)=>i],(e,t)=>e.filter(qE).find(e=>e.id===t)),GE=Nn([qc,UE,$E,WE,HE,YE,VE,Py],(e,t,r,n,i,a,o,c)=>{var{chartData:l,dataStartIndex:u,dataEndIndex:s}=c;if(null!=a&&null!=t&&null!=r&&null!=n&&null!=i&&0!==n.length&&0!==i.length&&null!=o&&("horizontal"===e||"vertical"===e)){var f,{dataKey:d,data:p}=a;if(null!=(f=null!=p&&p.length>0?p:null==l?void 0:l.slice(u,s+1)))return function(e){var{layout:t,xAxis:r,yAxis:n,xAxisTicks:i,yAxisTicks:a,dataKey:o,bandSize:c,displayedData:l}=e;return l.map((e,l)=>{var u=No(e,o);if("horizontal"===t)return{x:Uo({axis:r,ticks:i,bandSize:c,entry:e,index:l}),y:ut(u)?null:n.scale(u),value:u,payload:e};var s=ut(u)?null:r.scale(u),f=Uo({axis:n,ticks:a,bandSize:c,entry:e,index:l});return null==s||null==f?null:{x:s,y:f,value:u,payload:e}}).filter(Boolean)}({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:i,dataKey:d,bandSize:o,displayedData:f})}});function XE(e){var t=g(e);if(null!=t){var{r:r,strokeWidth:n}=t,i=Number(r),a=Number(n);return(Number.isNaN(i)||i<0)&&(i=3),(Number.isNaN(a)||a<0)&&(a=2),{r:i,strokeWidth:a}}return{r:3,strokeWidth:2}}var ZE=["id"],QE=["type","layout","connectNulls","needClip","shape"],JE=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function eA(){return eA=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:r,stroke:n,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:n,value:qo(r,t),payload:e}]},oA=r.memo(e=>{var{dataKey:t,data:n,stroke:i,strokeWidth:a,fill:o,name:c,hide:l,unit:u,tooltipType:s}=e,f={dataDefinedOnItem:n,positions:void 0,settings:{stroke:i,strokeWidth:a,fill:o,dataKey:t,nameKey:void 0,name:qo(c,t),hide:l,type:s,color:i,unit:u}};return r.createElement(NP,{tooltipEntrySettings:f})}),cA=(e,t)=>"".concat(t,"px ").concat(e-t,"px");function lA(e,t){for(var r=e.length%2!=0?[...e,0]:e,n=[],i=0;inull==i?void 0:i.map(e=>{var t,r,n={x:null!==(t=e.x)&&void 0!==t?t:0,y:null!==(r=e.y)&&void 0!==r?r:0,width:0,lowerWidth:0,upperWidth:0,height:0};return rA(rA({},n),{},{value:e.value,payload:e.payload,viewBox:n,parentViewBox:void 0,fill:void 0})}),[i]);return r.createElement(GO,{value:t?a:void 0},n)}function fA(e){var{clipPathId:t,pathRef:n,points:i,strokeDasharray:a,props:o}=e,{type:c,layout:l,connectNulls:u,needClip:s,shape:f}=o,d=rA(rA({},m(iA(o,QE))),{},{fill:"none",className:"recharts-line-curve",clipPath:s?"url(#clipPath-".concat(t,")"):void 0,points:i,type:c,layout:l,connectNulls:u,strokeDasharray:null!=a?a:o.strokeDasharray});return r.createElement(r.Fragment,null,(null==i?void 0:i.length)>1&&r.createElement(DP,eA({shapeType:"curve",option:f},d,{pathRef:n})),r.createElement(uA,{points:i,clipPathId:t,props:o}))}function dA(e){var{clipPathId:t,props:n,pathRef:i,previousPointsRef:a,longestAnimatedLengthRef:o}=e,{points:c,strokeDasharray:l,isAnimationActive:u,animationBegin:s,animationDuration:f,animationEasing:d,animateNewValues:p,width:h,height:y,onAnimationEnd:v,onAnimationStart:g}=n,m=a.current,b=os(c,"recharts-line-"),x=r.useRef(b),[w,O]=r.useState(!1),P=!w,j=r.useCallback(()=>{"function"==typeof v&&v(),O(!1)},[v]),E=r.useCallback(()=>{"function"==typeof g&&g(),O(!0)},[g]),A=function(e){try{return e&&e.getTotalLength&&e.getTotalLength()||0}catch(t){return 0}}(i.current),S=r.useRef(0);x.current!==b&&(S.current=o.current,x.current=b);var k=S.current;return r.createElement(sA,{points:c,showLabels:P},n.children,r.createElement(as,{animationId:b,begin:s,duration:f,isActive:u,easing:d,onAnimationEnd:j,onAnimationStart:E,key:b},e=>{var s,f=ct(k,A+k,e),d=Math.min(f,A);if(u)if(l){var v="".concat(l).split(/[,\s]+/gim).map(e=>parseFloat(e));s=((e,t,r)=>{var n=r.reduce((e,t)=>e+t);if(!n)return cA(t,e);for(var i=Math.floor(e/n),a=e%n,o=t-e,c=[],l=0,u=0;la){c=[...r.slice(0,l),a-u];break}var s=c.length%2==0?[0,o]:[o];return[...lA(r,i),...c,...s].map(e=>"".concat(e,"px")).join(", ")})(d,A,v)}else s=cA(A,d);else s=null==l?void 0:String(l);if(e>0&&A>0&&(a.current=c,o.current=Math.max(o.current,d)),m){var g=m.length/c.length,b=1===e?c:c.map((t,r)=>{var n=Math.floor(r*g);if(m[n]){var i=m[n];return rA(rA({},t),{},{x:ct(i.x,t.x,e),y:ct(i.y,t.y,e)})}return rA(rA({},t),{},p?{x:ct(2*h,t.x,e),y:ct(y/2,t.y,e)}:{x:t.x,y:t.y})});return a.current=b,r.createElement(fA,{props:n,points:b,clipPathId:t,pathRef:i,strokeDasharray:s})}return r.createElement(fA,{props:n,points:c,clipPathId:t,pathRef:i,strokeDasharray:s})}),r.createElement(QO,{label:n.label}))}function pA(e){var{clipPathId:t,props:n}=e,i=r.useRef(null),a=r.useRef(0),o=r.useRef(null);return r.createElement(dA,{props:n,clipPathId:t,previousPointsRef:i,longestAnimatedLengthRef:a,pathRef:o})}var hA=(e,t)=>{var r,n;return{x:null!==(r=e.x)&&void 0!==r?r:void 0,y:null!==(n=e.y)&&void 0!==n?n:void 0,value:e.value,errorVal:No(e.payload,t)}};class yA extends r.Component{render(){var{hide:e,dot:t,points:n,className:i,xAxisId:a,yAxisId:o,top:c,left:l,width:u,height:f,id:d,needClip:p,zIndex:h}=this.props;if(e)return null;var y=s("recharts-line",i),v=d,{r:g,strokeWidth:m}=XE(t),b=yP(t),x=2*g+m,w=p?"url(#clipPath-".concat(b?"":"dots-").concat(v,")"):void 0;return r.createElement(tw,{zIndex:h},r.createElement(j,{className:y},p&&r.createElement("defs",null,r.createElement(zj,{clipPathId:v,xAxisId:a,yAxisId:o}),!b&&r.createElement("clipPath",{id:"clipPath-dots-".concat(v)},r.createElement("rect",{x:l-x/2,y:c-x/2,width:u+x,height:f+x}))),r.createElement(Dj,{xAxisId:a,yAxisId:o,data:n,dataPointFormatter:hA,errorBarOffset:0},r.createElement(pA,{props:this.props,clipPathId:v}))),r.createElement(Ej,{activeDot:this.props.activeDot,points:n,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}}var vA={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:Ov.line,type:"linear"};function gA(e){var t=At(e,vA),{activeDot:n,animateNewValues:i,animationBegin:a,animationDuration:o,animationEasing:c,connectNulls:l,dot:u,hide:s,isAnimationActive:f,label:d,legendType:p,xAxisId:h,yAxisId:y,id:v}=t,g=iA(t,JE),{needClip:m}=Nj(h,y),b=xj(),x=Yc(),w=pc(),O=kn(e=>GE(e,h,y,w,v));if("horizontal"!==x&&"vertical"!==x||null==O||null==b)return null;var{height:P,width:j,x:E,y:A}=b;return r.createElement(yA,eA({},g,{id:v,connectNulls:l,dot:u,activeDot:n,animateNewValues:i,animationBegin:a,animationDuration:o,animationEasing:c,isAnimationActive:f,hide:s,label:d,legendType:p,xAxisId:h,yAxisId:y,points:O,layout:x,height:P,width:j,left:E,top:A,needClip:m}))}function mA(e){var t=At(e,vA),n=pc();return r.createElement(KP,{id:t.id,type:"line"},e=>r.createElement(r.Fragment,null,r.createElement(zP,{legendPayload:aA(t)}),r.createElement(oA,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType}),r.createElement(GP,{type:"line",id:e,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:n}),r.createElement(gA,eA({},t,{id:e}))))}var bA=r.memo(mA,Bj);bA.displayName="Line";var xA=(e,t,r,n)=>qm(e,"xAxis",t,n),wA=(e,t,r,n)=>Vm(e,"xAxis",t,n),OA=(e,t,r,n)=>qm(e,"yAxis",r,n),PA=(e,t,r,n)=>Vm(e,"yAxis",r,n),jA=Nn([qc,xA,OA,wA,PA],(e,t,r,n,i)=>zo(e,"xAxis")?Ho(t,n,!1):Ho(r,i,!1)),EA=Nn([hg,(e,t,r,n,i)=>i],(e,t)=>e.filter(e=>"area"===e.type).find(e=>e.id===t)),AA=Nn([qc,xA,OA,wA,PA,(e,t,r,n,i)=>{var a,o=EA(e,t,r,n,i);if(null!=o){var c,l=qc(e);if(null!=(c=zo(l,"xAxis")?Ng(e,"yAxis",r,n):Ng(e,"xAxis",t,n))){var{stackId:u}=o,s=Hv(o);if(null!=u&&null!=s){var f=null===(a=c[u])||void 0===a?void 0:a.stackedData;return null==f?void 0:f.find(e=>e.key===s)}}}},Py,jA,EA,e=>e.rootProps.baseValue],(e,t,r,n,i,a,o,c,l,u)=>{var{chartData:s,dataStartIndex:f,dataEndIndex:d}=o;if(null!=l&&("horizontal"===e||"vertical"===e)&&null!=t&&null!=r&&null!=n&&null!=i&&0!==n.length&&0!==i.length&&null!=c){var p,{data:h}=l;if(null!=(p=h&&h.length>0?h:null==s?void 0:s.slice(f,d+1)))return function(e){var t,{areaSettings:{connectNulls:r,baseValue:n,dataKey:i},stackedData:a,layout:o,chartBaseValue:c,xAxis:l,yAxis:u,displayedData:s,dataStartIndex:f,xAxisTicks:d,yAxisTicks:p,bandSize:h}=e,y=a&&a.length,v=YA(o,c,n,l,u),g="horizontal"===o,m=!1,b=s.map((e,t)=>{var n;y?n=a[f+t]:(n=No(e,i),Array.isArray(n)?m=!0:n=[v,n]);var o=null==n[1]||y&&!r&&null==No(e,i);return g?{x:Uo({axis:l,ticks:d,bandSize:h,entry:e,index:t}),y:o?null:u.scale(n[1]),value:n,payload:e}:{x:o?null:l.scale(n[1]),y:Uo({axis:u,ticks:p,bandSize:h,entry:e,index:t}),value:n,payload:e}});return t=y||m?b.map(e=>{var t=Array.isArray(e.value)?e.value[0]:null;return g?{x:e.x,y:null!=t&&null!=e.y?u.scale(t):null,payload:e.payload}:{x:null!=t?l.scale(t):null,y:e.y,payload:e.payload}}):g?u.scale(v):l.scale(v),{points:b,baseLine:t,isRange:m}}({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:i,dataStartIndex:f,areaSettings:l,stackedData:a,displayedData:p,chartBaseValue:u,bandSize:c})}}),SA=["id"],kA=["activeDot","animationBegin","animationDuration","animationEasing","connectNulls","dot","fill","fillOpacity","hide","isAnimationActive","legendType","stroke","xAxisId","yAxisId"];function _A(){return _A=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:r,stroke:n,fill:i,legendType:a,hide:o}=e;return[{inactive:o,dataKey:t,type:a,color:DA(n,i),value:qo(r,t),payload:e}]},zA=r.memo(e=>{var{dataKey:t,data:n,stroke:i,strokeWidth:a,fill:o,name:c,hide:l,unit:u,tooltipType:s}=e,f={dataDefinedOnItem:n,positions:void 0,settings:{stroke:i,strokeWidth:a,fill:o,dataKey:t,nameKey:void 0,name:qo(c,t),hide:l,type:s,color:DA(i,o),unit:u}};return r.createElement(NP,{tooltipEntrySettings:f})});function RA(e){var{clipPathId:t,points:n,props:i}=e,{needClip:a,dot:o,dataKey:c}=i,l=v(i);return r.createElement(rj,{points:n,dot:o,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:c,baseProps:l,needClip:a,clipPathId:t})}function LA(e){var{showLabels:t,children:n,points:i}=e,a=i.map(e=>{var t,r,n={x:null!==(t=e.x)&&void 0!==t?t:0,y:null!==(r=e.y)&&void 0!==r?r:0,width:0,lowerWidth:0,upperWidth:0,height:0};return CA(CA({},n),{},{value:e.value,payload:e.payload,parentViewBox:void 0,viewBox:n,fill:void 0})});return r.createElement(GO,{value:t?a:void 0},n)}function BA(e){var{points:t,baseLine:n,needClip:i,clipPathId:a,props:o}=e,{layout:c,type:l,stroke:u,connectNulls:s,isRange:f}=o,{id:d}=o,p=MA(o,SA),h=v(p),y=m(p);return r.createElement(r.Fragment,null,(null==t?void 0:t.length)>1&&r.createElement(j,{clipPath:i?"url(#clipPath-".concat(a,")"):void 0},r.createElement(Su,_A({},y,{id:d,points:t,connectNulls:s,type:l,baseLine:n,layout:c,stroke:"none",className:"recharts-area-area"})),"none"!==u&&r.createElement(Su,_A({},h,{className:"recharts-area-curve",layout:c,type:l,connectNulls:s,fill:"none",points:t})),"none"!==u&&f&&r.createElement(Su,_A({},h,{className:"recharts-area-curve",layout:c,type:l,connectNulls:s,fill:"none",points:n}))),r.createElement(RA,{points:t,props:p,clipPathId:a}))}function KA(e){var{alpha:t,baseLine:n,points:i,strokeWidth:a}=e,o=i[0].y,c=i[i.length-1].y;if(!Mc(o)||!Mc(c))return null;var l=t*Math.abs(o-c),u=Math.max(...i.map(e=>e.x||0));return tt(n)?u=Math.max(n,u):n&&Array.isArray(n)&&n.length&&(u=Math.max(...n.map(e=>e.x||0),u)),tt(u)?r.createElement("rect",{x:0,y:oe.y||0));return tt(n)?u=Math.max(n,u):n&&Array.isArray(n)&&n.length&&(u=Math.max(...n.map(e=>e.y||0),u)),tt(u)?r.createElement("rect",{x:o({points:c,baseLine:l}),[c,l]),"recharts-area-"),v=(()=>{var e=Yc();if("horizontal"===e||"vertical"===e)return e})(),[g,m]=r.useState(!1),b=!g,x=r.useCallback(()=>{"function"==typeof h&&h(),m(!1)},[h]),w=r.useCallback(()=>{"function"==typeof p&&p(),m(!0)},[p]);if(null==v)return null;var O=a.current,P=o.current;return r.createElement(LA,{showLabels:b,points:c},i.children,r.createElement(as,{animationId:y,begin:s,duration:f,isActive:u,easing:d,onAnimationEnd:x,onAnimationStart:w,key:y},e=>{if(O){var s,f=O.length/c.length,d=1===e?c:c.map((t,r)=>{var n=Math.floor(r*f);if(O[n]){var i=O[n];return CA(CA({},t),{},{x:ct(i.x,t.x,e),y:ct(i.y,t.y,e)})}return t});return s=tt(l)?ct(P,l,e):ut(l)||Je(l)?ct(P,0,e):l.map((t,r)=>{var n=Math.floor(r*f);if(Array.isArray(P)&&P[n]){var i=P[n];return CA(CA({},t),{},{x:ct(i.x,t.x,e),y:ct(i.y,t.y,e)})}return t}),e>0&&(a.current=d,o.current=s),r.createElement(BA,{points:d,baseLine:s,needClip:t,clipPathId:n,props:i})}return e>0&&(a.current=c,o.current=l),r.createElement(j,null,u&&r.createElement("defs",null,r.createElement("clipPath",{id:"animationClipPath-".concat(n)},r.createElement(UA,{alpha:e,points:c,baseLine:l,layout:v,strokeWidth:i.strokeWidth}))),r.createElement(j,{clipPath:"url(#animationClipPath-".concat(n,")")},r.createElement(BA,{points:c,baseLine:l,needClip:t,clipPathId:n,props:i})))}),r.createElement(QO,{label:i.label}))}function $A(e){var{needClip:t,clipPathId:n,props:i}=e,a=r.useRef(null),o=r.useRef();return r.createElement(WA,{needClip:t,clipPathId:n,props:i,previousPointsRef:a,previousBaselineRef:o})}class HA extends r.PureComponent{render(){var{hide:e,dot:t,points:n,className:i,top:a,left:o,needClip:c,xAxisId:l,yAxisId:u,width:f,height:d,id:p,baseLine:h,zIndex:y}=this.props;if(e)return null;var v=s("recharts-area",i),g=p,{r:m,strokeWidth:b}=XE(t),x=yP(t),w=2*m+b,O=c?"url(#clipPath-".concat(x?"":"dots-").concat(g,")"):void 0;return r.createElement(tw,{zIndex:y},r.createElement(j,{className:v},c&&r.createElement("defs",null,r.createElement(zj,{clipPathId:g,xAxisId:l,yAxisId:u}),!x&&r.createElement("clipPath",{id:"clipPath-dots-".concat(g)},r.createElement("rect",{x:o-w/2,y:a-w/2,width:f+w,height:d+w}))),r.createElement($A,{needClip:c,clipPathId:g,props:this.props})),r.createElement(Ej,{points:n,mainColor:DA(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:O}),this.props.isRange&&Array.isArray(h)&&r.createElement(Ej,{points:h,mainColor:DA(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:O}))}}var VA={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,xAxisId:0,yAxisId:0,zIndex:Ov.area};function qA(e){var t,n=At(e,VA),{activeDot:i,animationBegin:a,animationDuration:o,animationEasing:c,connectNulls:l,dot:u,fill:s,fillOpacity:f,hide:d,isAnimationActive:p,legendType:h,stroke:y,xAxisId:v,yAxisId:g}=n,m=MA(n,kA),b=Yc(),x=_x(),{needClip:w}=Nj(v,g),O=pc(),{points:P,isRange:j,baseLine:E}=null!==(t=kn(t=>AA(t,v,g,O,e.id)))&&void 0!==t?t:{},A=xj();if("horizontal"!==b&&"vertical"!==b||null==A)return null;if("AreaChart"!==x&&"ComposedChart"!==x)return null;var{height:S,width:k,x:_,y:M}=A;return P&&P.length?r.createElement(HA,_A({},m,{activeDot:i,animationBegin:a,animationDuration:o,animationEasing:c,baseLine:E,connectNulls:l,dot:u,fill:s,fillOpacity:f,height:S,hide:d,layout:b,isAnimationActive:"auto"===p?!ts:p,isRange:j,legendType:h,needClip:w,points:P,stroke:y,width:k,left:_,top:M,xAxisId:v,yAxisId:g})):null}var YA=(e,t,r,n,i)=>{var a=null!=r?r:t;if(tt(a))return a;var o="horizontal"===e?i:n,c=o.scale.domain();if("number"===o.type){var l=Math.max(c[0],c[1]),u=Math.min(c[0],c[1]);return"dataMin"===a?u:"dataMax"===a||l<0?l:Math.max(Math.min(c[0],c[1]),0)}return"dataMin"===a?c[0]:"dataMax"===a?c[1]:c[0]};function GA(e){var t=At(e,VA),n=pc();return r.createElement(KP,{id:t.id,type:"area"},e=>{return r.createElement(r.Fragment,null,r.createElement(zP,{legendPayload:NA(t)}),r.createElement(zA,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType}),r.createElement(GP,{type:"area",id:e,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:(i=t.stackId,null==i?void 0:String(i)),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:n,connectNulls:t.connectNulls}),r.createElement(qA,_A({},t,{id:e})));var i})}var XA=r.memo(GA,Bj);XA.displayName="Area";var ZA=["domain","range"],QA=["domain","range"];function JA(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{null===n.current?t(cj(e)):n.current!==e&&t(lj({prev:n.current,next:e})),n.current=e},[e,t]),r.useLayoutEffect(()=>()=>{n.current&&(t(uj(n.current)),n.current=null)},[t]),null}var cS=e=>{var{xAxisId:t,className:n}=e,i=kn(fc),a=pc(),o="xAxis",c=kn(e=>Sm(e,o,t,a)),l=kn(e=>Hm(e,o,t,a)),u=kn(e=>Dm(e,t)),f=kn(e=>Rm(e,t)),d=kn(e=>ng(e,t));if(null==u||null==f||null==d)return null;var{dangerouslySetInnerHTML:p,ticks:h}=e,y=aS(e,rS),{id:v}=d,g=aS(d,nS);return r.createElement(OE,iS({},y,g,{scale:c,x:f.x,y:f.y,width:u.width,height:u.height,className:s("recharts-".concat(o," ").concat(o),n),viewBox:i,ticks:l,axisType:o}))},lS={allowDataOverflow:rg.allowDataOverflow,allowDecimals:rg.allowDecimals,allowDuplicatedCategory:rg.allowDuplicatedCategory,angle:rg.angle,axisLine:gE.axisLine,height:rg.height,hide:!1,includeHidden:rg.includeHidden,interval:rg.interval,minTickGap:rg.minTickGap,mirror:rg.mirror,orientation:rg.orientation,padding:rg.padding,reversed:rg.reversed,scale:rg.scale,tick:rg.tick,tickCount:rg.tickCount,tickLine:gE.tickLine,tickSize:gE.tickSize,type:rg.type,xAxisId:0},uS=e=>{var t=At(e,lS);return r.createElement(r.Fragment,null,r.createElement(oS,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit}),r.createElement(cS,t))},sS=r.memo(uS,tS);sS.displayName="XAxis";var fS=["dangerouslySetInnerHTML","ticks"],dS=["id"];function pS(){return pS=Object.assign?Object.assign.bind():function(e){for(var t=1;t{null===n.current?t(sj(e)):n.current!==e&&t(fj({prev:n.current,next:e})),n.current=e},[e,t]),r.useLayoutEffect(()=>()=>{n.current&&(t(dj(n.current)),n.current=null)},[t]),null}var vS=e=>{var{yAxisId:t,className:n,width:i,label:a}=e,o=r.useRef(null),c=r.useRef(null),l=kn(fc),u=pc(),f=jn(),d="yAxis",p=kn(e=>Sm(e,d,t,u)),h=kn(e=>Bm(e,t)),y=kn(e=>Lm(e,t)),v=kn(e=>Hm(e,d,t,u)),g=kn(e=>og(e,t));if(r.useLayoutEffect(()=>{if("auto"===i&&h&&!AO(a)&&!r.isValidElement(a)&&null!=g){var e=o.current;if(e){var n=e.getCalculatedWidth();Math.round(h.width)!==Math.round(n)&&f(vj({id:t,width:n}))}}},[v,h,f,a,t,i,g]),null==h||null==y||null==g)return null;var{dangerouslySetInnerHTML:m,ticks:b}=e,x=hS(e,fS),{id:w}=g,O=hS(g,dS);return r.createElement(OE,pS({},x,O,{ref:o,labelRef:c,scale:p,x:y.x,y:y.y,tickTextProps:"auto"===i?{width:void 0}:{width:i},width:h.width,height:h.height,className:s("recharts-".concat(d," ").concat(d),n),viewBox:l,ticks:v,axisType:d}))},gS={allowDataOverflow:ag.allowDataOverflow,allowDecimals:ag.allowDecimals,allowDuplicatedCategory:ag.allowDuplicatedCategory,angle:ag.angle,axisLine:gE.axisLine,hide:!1,includeHidden:ag.includeHidden,interval:ag.interval,minTickGap:ag.minTickGap,mirror:ag.mirror,orientation:ag.orientation,padding:ag.padding,reversed:ag.reversed,scale:ag.scale,tick:ag.tick,tickCount:ag.tickCount,tickLine:gE.tickLine,tickSize:gE.tickSize,type:ag.type,width:ag.width,yAxisId:0},mS=e=>{var t=At(e,gS);return r.createElement(r.Fragment,null,r.createElement(yS,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter}),r.createElement(vS,t))},bS=r.memo(mS,tS);bS.displayName="YAxis";var xS={begin:0,duration:1e3,easing:"ease",isActive:!0,canBegin:!0,onAnimationEnd:()=>{},onAnimationStart:()=>{}};function wS(e){var t=At(e,xS),{animationId:n,from:i,to:a,attributeName:o,isActive:c,canBegin:l,duration:u,easing:s,begin:f,onAnimationEnd:d,onAnimationStart:p,children:h}=t,y="auto"===c?!ts:c,v=es(n+o,t.animationManager),[g,m]=r.useState(()=>y?i:a),b=r.useRef(!1),x=r.useCallback(()=>{m(i),p()},[i,p]);return r.useEffect(()=>{if(!y||!l)return dt;b.current=!0;var e=v.subscribe(m);return v.start([x,f,a,u,d]),()=>{v.stop(),e&&e(),d()}},[y,l,u,s,f,x,d,v,a,i]),y?l?b.current?h({transition:Ru([o],u,s),[o]:g}):h({[o]:i}):h({[o]:i}):h({[o]:a})}var OS=Nn([(e,t)=>t,qc,Uv,Xv,ix,lx,Ix,uc],(e,t,r,n,i,a,o,c)=>{if(e&&t&&n&&i&&a)return"horizontal"===t||"vertical"===t?((e,t,r,n,i,a,o)=>{if(e&&r&&n&&i&&function(e,t){var{chartX:r,chartY:n}=e;return r>=t.left&&r<=t.left+t.width&&n>=t.top&&n<=t.top+t.height}(e,o)){var c=((e,t)=>"horizontal"===t?e.chartX:"vertical"===t?e.chartY:void 0)(e,t),l=kx(c,a,i,r,n),u=((e,t,r,n)=>{var i=t.find(e=>e&&e.index===r);if(i){if("horizontal"===e)return{x:i.coordinate,y:n.chartY};if("vertical"===e)return{x:n.chartX,y:i.coordinate}}return{x:0,y:0}})(t,i,l,e);return{activeIndex:String(l),activeCoordinate:u}}})(e,t,n,i,a,o,c):((e,t,r,n,i,a,o)=>{if(e&&n&&i&&a&&r){var c=js(e,r);if(c){var l=((e,t)=>"centric"===t?e.angle:e.radius)(c,t),u=kx(l,o,a,n,i),s=((e,t,r,n)=>{var i=t.find(e=>e&&e.index===r);if(i){if("centric"===e){var a=i.coordinate,{radius:o}=n;return Ax(Ax(Ax({},n),Os(n.cx,n.cy,o,a)),{},{angle:a,radius:o})}var c=i.coordinate,{angle:l}=n;return Ax(Ax(Ax({},n),Os(n.cx,n.cy,c,l)),{},{angle:l,radius:c})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}})(t,a,u,c);return{activeIndex:String(u),activeCoordinate:s}}}})(e,t,r,n,i,a,o)}),PS=e=>{var t=e.currentTarget.getBoundingClientRect(),r=t.width/e.currentTarget.offsetWidth,n=t.height/e.currentTarget.offsetHeight;return{chartX:Math.round((e.clientX-t.left)/r),chartY:Math.round((e.clientY-t.top)/n)}},jS=Ta("mouseClick"),ES=Po();ES.startListening({actionCreator:jS,effect:(e,t)=>{var r=e.payload,n=OS(t.getState(),PS(r));null!=(null==n?void 0:n.activeIndex)&&t.dispatch(db({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var AS=Ta("mouseMove"),SS=Po(),kS=null;SS.startListening({actionCreator:AS,effect:(e,t)=>{var r=e.payload;null!==kS&&cancelAnimationFrame(kS);var n=PS(r);kS=requestAnimationFrame(()=>{var e=t.getState();if("axis"===Jm(e,e.tooltip.settings.shared)){var r=OS(e,n);null!=(null==r?void 0:r.activeIndex)?t.dispatch(fb({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate})):t.dispatch(ub())}kS=null})}});var _S={accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:"none",syncId:void 0,syncMethod:"index",baseValue:void 0,reverseStackOrder:!1},MS=Ha({name:"rootProps",initialState:_S,reducers:{updateOptions:(e,t)=>{var r;e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=null!==(r=t.payload.barGap)&&void 0!==r?r:_S.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),TS=MS.reducer,{updateOptions:CS}=MS.actions,IS=Ha({name:"polarOptions",initialState:null,reducers:{updatePolarOptions:(e,t)=>t.payload}}),{updatePolarOptions:DS}=IS.actions,NS=IS.reducer,zS=Ta("keyDown"),RS=Ta("focus"),LS=Po();LS.startListening({actionCreator:zS,effect:(e,t)=>{var r=t.getState();if(!1!==r.rootProps.accessibilityLayer){var{keyboardInteraction:n}=r.tooltip,i=e.payload;if("ArrowRight"===i||"ArrowLeft"===i||"Enter"===i){var a=xb(n,Nb(r),Cg(r),ex(r)),o=null==a?-1:Number(a);if(Number.isFinite(o)&&!(o<0)){var c=lx(r);if("Enter"!==i){var l=o+("ArrowRight"===i?1:-1)*("left-to-right"===Gm(r)?1:-1);if(!(null==c||l>=c.length||l<0)){var u=Rx(r,"axis","hover",String(l));t.dispatch(hb({active:!0,activeIndex:l.toString(),activeDataKey:void 0,activeCoordinate:u}))}}else{var s=Rx(r,"axis","hover",String(n.index));t.dispatch(hb({active:!n.active,activeIndex:n.index,activeDataKey:n.dataKey,activeCoordinate:s}))}}}}}}),LS.startListening({actionCreator:RS,effect:(e,t)=>{var r=t.getState();if(!1!==r.rootProps.accessibilityLayer){var{keyboardInteraction:n}=r.tooltip;if(!n.active&&null==n.index){var i=Rx(r,"axis","hover",String("0"));t.dispatch(hb({activeDataKey:void 0,active:!0,activeIndex:"0",activeCoordinate:i}))}}}});var BS=Ta("externalEvent"),KS=Po(),FS=new Map;KS.startListening({actionCreator:BS,effect:(e,t)=>{var{handler:r,reactEvent:n}=e.payload;if(null!=r){n.persist();var i=n.type,a=FS.get(i);void 0!==a&&cancelAnimationFrame(a);var o=requestAnimationFrame(()=>{try{var e=t.getState(),a={activeCoordinate:mx(e),activeDataKey:yx(e),activeIndex:px(e),activeLabel:hx(e),activeTooltipIndex:px(e),isTooltipActive:bx(e)};r(a,n)}finally{FS.delete(i)}});FS.set(i,o)}}});var US=Nn([jb],e=>e.tooltipItemPayloads),WS=Nn([US,Pb,(e,t,r)=>t,(e,t,r)=>r],(e,t,r,n)=>{var i=e.find(e=>e.settings.dataKey===n);if(null!=i){var{positions:a}=i;if(null!=a)return t(a,r)}}),$S=Ta("touchMove"),HS=Po();HS.startListening({actionCreator:$S,effect:(e,t)=>{var r=e.payload;if(null!=r.touches&&0!==r.touches.length){var n=t.getState(),i=Jm(n,n.tooltip.settings.shared);if("axis"===i){var a=OS(n,PS({clientX:r.touches[0].clientX,clientY:r.touches[0].clientY,currentTarget:r.currentTarget}));null!=(null==a?void 0:a.activeIndex)&&t.dispatch(fb({activeIndex:a.activeIndex,activeDataKey:void 0,activeCoordinate:a.activeCoordinate}))}else if("item"===i){var o,c=r.touches[0];if(null==document.elementFromPoint)return;var l=document.elementFromPoint(c.clientX,c.clientY);if(!l||!l.getAttribute)return;var u=l.getAttribute("data-recharts-item-index"),s=null!==(o=l.getAttribute("data-recharts-item-data-key"))&&void 0!==o?o:void 0,f=WS(t.getState(),u,s);t.dispatch(cb({activeDataKey:s,activeIndex:u,activeCoordinate:f}))}}}});var VS=yi({brush:Yj,cartesianAxis:gj,chartData:Ew,errorBars:Mj,graphicalItems:qP,layout:Mo,legend:Hl,options:mw,polarAxis:hP,polarOptions:NS,referenceElements:nE,rootProps:TS,tooltip:yb,zIndex:ew});function qS(e){var{preloadedState:t,children:n,reduxStoreName:i}=e,a=pc(),o=r.useRef(null);if(a)return n;null==o.current&&(o.current=function(e){return function(e){const t=function(e){const{thunk:t=!0,immutableCheck:r=!0,serializableCheck:n=!0,actionCreatorCheck:i=!0}=e??{};let a=new Ca;return t&&("boolean"==typeof t?a.push(ka):a.push(_a(t.extraArgument))),a},{reducer:r,middleware:n,devTools:i=!0,preloadedState:a,enhancers:o}=e||{};let c,l;if("function"==typeof r)c=r;else{if(!pi(r))throw new Error(jo(1));c=yi(r)}l="function"==typeof n?n(t):t();let u=vi;i&&(u=Ma({trace:!1,..."object"==typeof i&&i}));const s=function(...e){return t=>(r,n)=>{const i=t(r,n);let a=()=>{throw new Error(ui(15))};const o={getState:i.getState,dispatch:(e,...t)=>a(e,...t)},c=e.map(e=>e(o));return a=vi(...c)(i.dispatch),{...i,dispatch:a}}}(...l),f=(e=>function(t){const{autoBatch:r=!0}=t??{};let n=new Ca(e);return r&&n.push(La("object"==typeof r?r:void 0)),n})(s);return hi(c,a,u(..."function"==typeof o?o(f):f()))}({reducer:VS,preloadedState:e,middleware:e=>e({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes("es6")}).concat([ES.middleware,SS.middleware,LS.middleware,KS.middleware,HS.middleware]),enhancers:e=>{var t=e;return"function"==typeof e&&(t=e()),t.concat(La({type:"raf"}))},devTools:false})}(t));var l=On;return r.createElement(c,{context:l,store:o.current},n)}function YS(e){var{layout:t,margin:n}=e,i=jn(),a=pc();return r.useEffect(()=>{a||(i(So(t)),i(Ao(n)))},[i,a,t,n]),null}var GS=r.memo(YS,Bj);function XS(e){var t=jn();return r.useEffect(()=>{t(CS(e))},[t,e]),null}function ZS(e){var{zIndex:t,isPanorama:n}=e,i=LP("".concat(n?"recharts-zindex-panorama-":"recharts-zindex-").concat(t)),a=jn();return r.useLayoutEffect(()=>(a(Qx({zIndex:t,elementId:i,isPanorama:n})),()=>{a(Jx({zIndex:t,isPanorama:n}))}),[a,t,i,n]),r.createElement("g",{tabIndex:-1,id:i})}function QS(e){var{children:t,isPanorama:n}=e,i=kn(Wx);if(!i||0===i.length)return t;var a=i.filter(e=>e<0),o=i.filter(e=>e>0);return r.createElement(r.Fragment,null,a.map(e=>r.createElement(ZS,{key:e,zIndex:e,isPanorama:n})),t,o.map(e=>r.createElement(ZS,{key:e,zIndex:e,isPanorama:n})))}var JS=["children"];function ek(){return ek=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var n=Hc(),i=Vc(),a=gu();if(!Tc(n)||!Tc(i))return null;var o,c,{children:l,otherAttributes:u,title:s,desc:f}=e;return null!=u&&(o="number"==typeof u.tabIndex?u.tabIndex:a?0:void 0,c="string"==typeof u.role?u.role:a?"application":void 0),r.createElement(w,ek({},u,{title:s,desc:f,role:c,tabIndex:o,width:n,height:i,style:tk,ref:t}),l)}),nk=e=>{var{children:t}=e,n=kn(yc);if(!n)return null;var{width:i,height:a,y:o,x:c}=n;return r.createElement(w,{width:i,height:a,x:c,y:o},t)},ik=r.forwardRef((e,t)=>{var{children:n}=e,i=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n(Mw(),null);function sk(e){if("number"==typeof e)return e;if("string"==typeof e){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var fk=r.forwardRef((e,t)=>{var n,i,a=r.useRef(null),[o,c]=r.useState({containerWidth:sk(null===(n=e.style)||void 0===n?void 0:n.width),containerHeight:sk(null===(i=e.style)||void 0===i?void 0:i.height)}),l=r.useCallback((e,t)=>{c(r=>{var n=Math.round(e),i=Math.round(t);return r.containerWidth===n&&r.containerHeight===i?r:{containerWidth:n,containerHeight:i}})},[]),u=r.useCallback(e=>{if("function"==typeof t&&t(e),null!=e&&"undefined"!=typeof ResizeObserver){var{width:r,height:n}=e.getBoundingClientRect();l(r,n);var i=new ResizeObserver(e=>{var{width:t,height:r}=e[0].contentRect;l(t,r)});i.observe(e),a.current=i}},[t,l]);return r.useEffect(()=>()=>{var e=a.current;null!=e&&e.disconnect()},[l]),r.createElement(r.Fragment,null,r.createElement(Gc,{width:o.containerWidth,height:o.containerHeight}),r.createElement("div",lk({ref:u},e)))}),dk=r.forwardRef((e,t)=>{var{width:n,height:i}=e,[a,o]=r.useState({containerWidth:sk(n),containerHeight:sk(i)}),c=r.useCallback((e,t)=>{o(r=>{var n=Math.round(e),i=Math.round(t);return r.containerWidth===n&&r.containerHeight===i?r:{containerWidth:n,containerHeight:i}})},[]),l=r.useCallback(e=>{if("function"==typeof t&&t(e),null!=e){var{width:r,height:n}=e.getBoundingClientRect();c(r,n)}},[t,c]);return r.createElement(r.Fragment,null,r.createElement(Gc,{width:a.containerWidth,height:a.containerHeight}),r.createElement("div",lk({ref:l},e)))}),pk=r.forwardRef((e,t)=>{var{width:n,height:i}=e;return r.createElement(r.Fragment,null,r.createElement(Gc,{width:n,height:i}),r.createElement("div",lk({ref:t},e)))}),hk=r.forwardRef((e,t)=>{var{width:n,height:i}=e;return et(n)||et(i)?r.createElement(dk,lk({},e,{ref:t})):r.createElement(pk,lk({},e,{ref:t}))}),yk=r.forwardRef((e,t)=>{var{children:n,className:i,height:a,onClick:o,onContextMenu:c,onDoubleClick:l,onMouseDown:u,onMouseEnter:f,onMouseLeave:d,onMouseMove:p,onMouseUp:h,onTouchEnd:y,onTouchMove:v,onTouchStart:g,style:m,width:b,responsive:x,dispatchTouchEvents:w=!0}=e,O=r.useRef(null),P=jn(),[j,A]=r.useState(null),[S,k]=r.useState(null),_=function(){var e=jn(),[t,n]=r.useState(null),i=kn(Xo);return r.useEffect(()=>{if(null!=t){var r=t.getBoundingClientRect().width/t.offsetWidth;Mc(r)&&r!==i&&e(_o(r))}},[t,e,i]),n}(),M=Lc(),T=(null==M?void 0:M.width)>0?M.width:b,C=(null==M?void 0:M.height)>0?M.height:a,I=r.useCallback(e=>{_(e),"function"==typeof t&&t(e),A(e),k(e),null!=e&&(O.current=e)},[_,t,A,k]),D=r.useCallback(e=>{P(jS(e)),P(BS({handler:o,reactEvent:e}))},[P,o]),N=r.useCallback(e=>{P(AS(e)),P(BS({handler:f,reactEvent:e}))},[P,f]),z=r.useCallback(e=>{P(ub()),P(BS({handler:d,reactEvent:e}))},[P,d]),R=r.useCallback(e=>{P(AS(e)),P(BS({handler:p,reactEvent:e}))},[P,p]),L=r.useCallback(()=>{P(RS())},[P]),B=r.useCallback(e=>{P(zS(e.key))},[P]),K=r.useCallback(e=>{P(BS({handler:c,reactEvent:e}))},[P,c]),F=r.useCallback(e=>{P(BS({handler:l,reactEvent:e}))},[P,l]),U=r.useCallback(e=>{P(BS({handler:u,reactEvent:e}))},[P,u]),W=r.useCallback(e=>{P(BS({handler:h,reactEvent:e}))},[P,h]),$=r.useCallback(e=>{P(BS({handler:g,reactEvent:e}))},[P,g]),H=r.useCallback(e=>{w&&P($S(e)),P(BS({handler:v,reactEvent:e}))},[P,w,v]),V=r.useCallback(e=>{P(BS({handler:y,reactEvent:e}))},[P,y]),q=function(e){return!0===e?fk:hk}(x);return r.createElement(sw.Provider,{value:j},r.createElement(E.Provider,{value:S},r.createElement(q,{width:null!=T?T:null==m?void 0:m.width,height:null!=C?C:null==m?void 0:m.height,className:s("recharts-wrapper",i),style:ok({position:"relative",cursor:"default",width:T,height:C},m),onClick:D,onContextMenu:K,onDoubleClick:F,onFocus:L,onKeyDown:B,onMouseDown:U,onMouseEnter:N,onMouseLeave:z,onMouseMove:R,onMouseUp:W,onTouchEnd:V,onTouchMove:H,onTouchStart:$,ref:I},r.createElement(uk,null),n)))}),vk=["width","height","responsive","children","className","style","compact","title","desc"],gk=r.forwardRef((e,t)=>{var{width:n,height:i,responsive:a,children:o,className:c,style:l,compact:u,title:s,desc:f}=e,d=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;nr.createElement(wk,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Ok,tooltipPayloadSearcher:vw,categoricalChartProps:e,ref:t})),jk={},Ek={},Ak={};function Sk(){return bk||(bk=1,e=Ak,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isBuffer=function(e){return"undefined"!=typeof Buffer&&Buffer.isBuffer(e)}),Ak;var e}var kk,_k={};function Mk(){return kk||(kk=1,e=_k,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),e.isPrototype=function(e){const t=null==e?void 0:e.constructor;return e===("function"==typeof t?t.prototype:Object.prototype)}),_k;var e}var Tk,Ck={};function Ik(){return Tk||(Tk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=zr();e.isTypedArray=function(e){return t.isTypedArray(e)}}(Ck)),Ck}var Dk,Nk,zk,Rk={},Lk={};function Bk(){return Dk||(Dk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Fs();e.toInteger=function(e){const r=t.toFinite(e),n=r%1;return n?r-n:r}}(Lk)),Lk}function Kk(){return Nk||(Nk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Bk();e.times=function(e,r){if((e=t.toInteger(e))<1||!Number.isSafeInteger(e))return[];const n=new Array(e);for(let t=0;t`${e}`),n=new Set(r);t.isBuffer(e)&&(n.add("offset"),n.add("parent")),i.isTypedArray(e)&&(n.add("buffer"),n.add("byteLength"),n.add("byteOffset"));const c=o(e).filter(e=>!n.has(e));return Array.isArray(e)?[...r,...c]:[...r.filter(t=>Object.hasOwn(e,t)),...c]}(e):r.isPrototype(e)?function(e){return o(e).filter(e=>"constructor"!==e)}(e):o(e);default:return o(Object(e))}}}(Ek)),Ek}var Uk,Wk={};function $k(){return Uk||(Uk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Ge(),r=Ie(),n=ze(),i=Be(),a=Ye();function o(e,n){const i=1===n.length?e:t.get(e,n.slice(0,-1)),a=n[n.length-1];if(void 0===(null==i?void 0:i[a]))return!0;if(r.isUnsafeProperty(a))return!1;try{return delete i[a],!0}catch{return!1}}e.unset=function(e,t){if(null==e)return!0;switch(typeof t){case"symbol":case"number":case"object":if(Array.isArray(t))return o(e,t);if("number"==typeof t?t=i.toKey(t):"object"==typeof t&&(t=Object.is(null==t?void 0:t.valueOf(),-0)?"-0":String(t)),r.isUnsafeProperty(t))return!1;if(void 0===(null==e?void 0:e[t]))return!0;try{return delete e[t],!0}catch{return!1}case"string":if(void 0===(null==e?void 0:e[t])&&n.isDeepKey(t))return o(e,a.toPath(t));if(r.isUnsafeProperty(t))return!1;try{return delete e[t],!0}catch{return!1}}}}(Wk)),Wk}var Hk,Vk={};function qk(){return Hk||(Hk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=jr();e.getSymbolsIn=function(e){const r=[];for(;e;)r.push(...t.getSymbols(e)),e=Object.getPrototypeOf(e);return r}}(Vk)),Vk}var Yk,Gk,Xk,Zk,Qk={};function Jk(){return Yk||(Yk=1,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t=Yt();e.flatten=function(e,r=1){const n=[],i=Math.floor(r);if(!t.isArrayLike(e))return n;const a=(e,t)=>{for(let r=0;rArray.isArray(e)||a.isDeepKey(e))?function(e){const n={},a=[...r.keysIn(e),...i.getSymbolsIn(e)];for(let r=0;r{if(!c.isPlainObject(e))return e})}return n}(e):function(e){const t={},n=[...r.keysIn(e),...i.getSymbolsIn(e)];for(let r=0;r{if(e&&t)return Ze(e,t)},u_={chartName:"Treemap",defaultTooltipEventType:"item",validateTooltipEventTypes:["item"],tooltipPayloadSearcher:l_,eventEmitter:void 0},s_=e=>{var t,{depth:r,node:n,index:i,dataKey:a,nameKey:o,nestedActiveTooltipIndex:c}=e,l=0===r?"":function(e){return"".concat(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"","children[").concat(e,"]")}(i,c),{children:u}=n,s=r+1,f=u&&u.length?u.map((e,t)=>s_({depth:s,node:e,index:t,dataKey:a,nameKey:o,nestedActiveTooltipIndex:l})):null;return t=f&&f.length?f.reduce((e,t)=>e+t[c_],0):Je(n[a])||n[a]<=0?0:n[a],a_(a_({},n),{},{children:f,name:No(n,o,""),[c_]:t,depth:r,index:i,tooltipIndex:l})},f_=(e,t,r)=>{var n=t*t,i=e.area*e.area,{min:a,max:o}=e.reduce((e,t)=>({min:Math.min(e.min,t.area),max:Math.max(e.max,t.area)}),{min:1/0,max:0});return i?Math.max(n*o*r/i,i/(n*a*r)):1/0},d_=(e,t,r,n)=>t===r.width?((e,t,r,n)=>{var i=t?Math.round(e.area/t):0;(n||i>r.height)&&(i=r.height);for(var a,o=r.x,c=0,l=e.length;c{var i=t?Math.round(e.area/t):0;(n||i>r.width)&&(i=r.width);for(var a,o=r.y,c=0,l=e.length;c{var{children:r}=e;if(r&&r.length){var n,i,a=(e=>({x:e.x,y:e.y,width:e.width,height:e.height}))(e),o=[],c=1/0,l=Math.min(a.width,a.height),u=((e,t)=>{var r=t<0?0:t;return e.map(e=>{var t=e[c_]*r;return a_(a_({},e),{},{area:Je(t)||t<=0?0:t})})})(r,a.width*a.height/e[c_]),s=u.slice();for(o.area=0;s.length>0;){var f,d;o.push(n=s[0]),o.area+=n.area,(i=f_(o,l,t))<=c?(s.shift(),c=i):(o.area-=null!==(f=null===(d=o.pop())||void 0===d?void 0:d.area)&&void 0!==f?f:0,a=d_(o,l,a,!1),l=Math.min(a.width,a.height),o.length=o.area=0,c=1/0)}return o.length&&(a=d_(o,l,a,!0),o.length=o.area=0),a_(a_({},e),{},{children:u.map(e=>p_(e,t))})}return e},h_={aspectRatio:.5*(1+Math.sqrt(5)),dataKey:"value",nameKey:"name",type:"flat",isAnimationActive:"auto",isUpdateAnimationActive:"auto",animationBegin:0,animationDuration:1500,animationEasing:"linear"},y_={isAnimationFinished:!1,formatRoot:null,currentRoot:null,nestIndex:[],prevAspectRatio:h_.aspectRatio,prevDataKey:h_.dataKey};function v_(e){var{content:t,nodeProps:n,type:i,colorPanel:a,onMouseEnter:o,onMouseLeave:c,onClick:l}=e;if(r.isValidElement(t))return r.createElement(j,{onMouseEnter:o,onMouseLeave:c,onClick:l},r.cloneElement(t,n));if("function"==typeof t)return r.createElement(j,{onMouseEnter:o,onMouseLeave:c,onClick:l},t(n));var{x:u,y:s,width:f,height:d,index:p}=n,h=null;f>10&&d>10&&n.children&&"nest"===i&&(h=r.createElement(nP,{points:[{x:u+2,y:s+d/2},{x:u+6,y:s+d/2+3},{x:u+2,y:s+d/2+6}]}));var y=null,v=Hw(n.name);f>20&&d>20&&v.width{t(cb({activeIndex:e.nodeProps.tooltipIndex,activeDataKey:e.dataKey,activeCoordinate:n}))},onMouseLeave:()=>{},onClick:()=>{t(sb({activeIndex:e.nodeProps.tooltipIndex,activeDataKey:e.dataKey,activeCoordinate:n}))}}))}var m_=r.memo(e=>{var{dataKey:t,nameKey:n,stroke:i,fill:a,currentRoot:o}=e,c={dataDefinedOnItem:o,positions:void 0,settings:{stroke:i,strokeWidth:void 0,fill:a,dataKey:t,nameKey:n,name:void 0,hide:!1,type:void 0,color:a,unit:""}};return r.createElement(NP,{tooltipEntrySettings:c})}),b_={top:0,right:0,bottom:0,left:0};function x_(e){var{content:t,nodeProps:n,isLeaf:i,treemapProps:a,onNestClick:o}=e,{isAnimationActive:c,animationBegin:l,animationDuration:u,animationEasing:s,isUpdateAnimationActive:f,type:d,colorPanel:p,dataKey:h,onAnimationStart:y,onAnimationEnd:v,onMouseEnter:g,onClick:m,onMouseLeave:b}=a,{width:x,height:w,x:O,y:P}=n,E=-O-x,A=e=>{!i&&"nest"!==d||"function"!=typeof g||g(n,e)},S=e=>{!i&&"nest"!==d||"function"!=typeof b||b(n,e)},k=()=>{"nest"===d&&o(n),!i&&"nest"!==d||"function"!=typeof m||m(n)},_=r.useCallback(()=>{"function"==typeof v&&v()},[v]),M=r.useCallback(()=>{"function"==typeof y&&y()},[y]);return r.createElement(wS,{animationId:"treemap-".concat(n.tooltipIndex),from:"translate(".concat(E,"px, ").concat(0,"px)"),to:"translate(0, 0)",attributeName:"transform",begin:l,easing:s,isActive:c,duration:u,onAnimationStart:M,onAnimationEnd:_},e=>r.createElement(j,{onMouseEnter:A,onMouseLeave:S,onClick:k,style:a_(a_({},e),{},{transformOrigin:"".concat(O," ").concat(P)})},r.createElement(g_,{content:t,dataKey:h,nodeProps:a_(a_({},n),{},{isAnimationActive:c,isUpdateAnimationActive:!f,width:x,height:w,x:O,y:P}),type:d,colorPanel:p})))}class w_ extends r.PureComponent{constructor(){super(...arguments),o_(this,"state",a_({},y_)),o_(this,"handleClick",e=>{var{onClick:t,type:r}=this.props;if("nest"===r&&e.children){var{width:n,height:i,dataKey:a,nameKey:o,aspectRatio:c}=this.props,l=s_({depth:0,node:a_(a_({},e),{},{x:0,y:0,width:n,height:i}),index:0,dataKey:a,nameKey:o,nestedActiveTooltipIndex:e.tooltipIndex}),u=p_(l,c),{nestIndex:s}=this.state;s.push(e),this.setState({formatRoot:u,currentRoot:l,nestIndex:s})}t&&t(e)}),o_(this,"handleTouchMove",e=>{var t=e.touches[0],r=document.elementFromPoint(t.clientX,t.clientY);if(r&&r.getAttribute&&null!=this.state.formatRoot){var n=r.getAttribute("data-recharts-item-index"),i=l_(this.state.formatRoot,n);if(i){var{dataKey:a,dispatch:o}=this.props,c={x:i.x+i.width/2,y:i.y+i.height/2};o(cb({activeIndex:n,activeDataKey:a,activeCoordinate:c}))}}})}static getDerivedStateFromProps(e,t){if(e.data!==t.prevData||e.type!==t.prevType||e.width!==t.prevWidth||e.height!==t.prevHeight||e.dataKey!==t.prevDataKey||e.aspectRatio!==t.prevAspectRatio){var r=s_({depth:0,node:{children:e.data,x:0,y:0,width:e.width,height:e.height},index:0,dataKey:e.dataKey,nameKey:e.nameKey}),n=p_(r,e.aspectRatio);return a_(a_({},t),{},{formatRoot:n,currentRoot:r,nestIndex:[r],prevAspectRatio:e.aspectRatio,prevData:e.data,prevWidth:e.width,prevHeight:e.height,prevDataKey:e.dataKey,prevType:e.type})}return null}handleNestIndex(e,t){var{nestIndex:r}=this.state,{width:n,height:i,dataKey:a,nameKey:o,aspectRatio:c}=this.props,l=s_({depth:0,node:a_(a_({},e),{},{x:0,y:0,width:n,height:i}),index:0,dataKey:a,nameKey:o,nestedActiveTooltipIndex:e.tooltipIndex}),u=p_(l,c);r=r.slice(0,t+1),this.setState({formatRoot:u,currentRoot:e,nestIndex:r})}renderNode(e,t){var{content:n,type:i}=this.props,a=a_(a_(a_({},v(this.props)),t),{},{root:e}),o=!t.children||!t.children.length,{currentRoot:c}=this.state;return!((null==c?void 0:c.children)||[]).filter(e=>e.depth===t.depth&&e.name===t.name).length&&e.depth&&"nest"===i?null:r.createElement(j,{key:"recharts-treemap-node-".concat(a.x,"-").concat(a.y,"-").concat(a.name),className:"recharts-treemap-depth-".concat(t.depth)},r.createElement(x_,{isLeaf:o,content:n,nodeProps:a,treemapProps:this.props,onNestClick:this.handleClick}),t.children&&t.children.length?t.children.map(e=>this.renderNode(t,e)):null)}renderAllNodes(){var{formatRoot:e}=this.state;return e?this.renderNode(e,e):null}renderNestIndex(){var{nameKey:e,nestIndexContent:t}=this.props,{nestIndex:n}=this.state;return r.createElement("div",{className:"recharts-treemap-nest-index-wrapper",style:{marginTop:"8px",textAlign:"center"}},n.map((n,i)=>{var a,o=Ze(n,e,"root");return r.isValidElement(t)&&(a=r.cloneElement(t,n,i)),a="function"==typeof t?t(n,i):o,r.createElement("div",{onClick:this.handleNestIndex.bind(this,n,i),key:"nest-index-".concat(it()),className:"recharts-treemap-nest-index-box",style:{cursor:"pointer",display:"inline-block",padding:"0 7px",background:"#000",color:"#fff",marginRight:"3px"}},a)}))}render(){var e=this.props,{width:t,height:n,className:i,style:a,children:o,type:c}=e,l=function(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{null==l&&null!=e&&u(e)},onMouseEnter:void 0,onMouseLeave:void 0,onClick:void 0,onMouseMove:void 0,onMouseDown:void 0,onMouseUp:void 0,onContextMenu:void 0,onDoubleClick:void 0,onTouchStart:void 0,onTouchMove:void 0,onTouchEnd:void 0},r.createElement(sw.Provider,{value:l},r.createElement(O_,n))))}o_(w_,"displayName","Treemap");var j_=["axis"],E_=r.forwardRef((e,t)=>r.createElement(wk,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:j_,tooltipPayloadSearcher:vw,categoricalChartProps:e,ref:t}));export{E_ as A,FE as C,Pk as L,Kc as R,Rw as T,sS as X,bS as Y,bA as a,XA as b,s as c,P_ as d,ru as e}; diff --git a/frontend/dist/assets/topology.worker-BHEhB0-W.js b/frontend/dist/assets/topology.worker-BHEhB0-W.js new file mode 100644 index 00000000..c847a384 --- /dev/null +++ b/frontend/dist/assets/topology.worker-BHEhB0-W.js @@ -0,0 +1 @@ +var __defProp=Object.defineProperty,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__publicField=(e,t,n)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,n);!function(){"use strict";const e=.6,t=100;function n(e){return 1===e||0===e}function o(e){return 2===e||3===e}function i(e){return e.startsWith("0x")||e.startsWith("0X")?e.slice(2,4).toUpperCase():e.slice(0,2).toUpperCase()}function s(e,t){let n=e.forwarded_path??e.original_path;if("string"==typeof n)try{n=JSON.parse(n)}catch{return null}if(!n||!Array.isArray(n)||0===n.length)return null;const o=n.map(e=>String(e).toUpperCase()),s=t?i(t):null,r=o[o.length-1],a=null!==s&&r===s,c=a?o.slice(0,-1):[...o];return{effective:c,original:o,hadLocal:a,effectiveLength:c.length}}function r(e,t){return t-e}function a(e){return e}function c(e,t,n,o){const i=(n-e)*Math.PI/180,s=(o-t)*Math.PI/180,r=Math.sin(i/2)*Math.sin(i/2)+Math.cos(e*Math.PI/180)*Math.cos(n*Math.PI/180)*Math.sin(s/2)*Math.sin(s/2);return 2*Math.atan2(Math.sqrt(r),Math.sqrt(1-r))*6371e3}function u(e){return e<500?1:e<2e3?.8:e<5e3?.6:e<1e4?.4:e<2e4?.2:.1}function l(e){if(e.contact_type){const t=e.contact_type.toLowerCase();if("repeater"===t||"rep"===t)return!0;if("companion"===t||"client"===t||"cli"===t)return!1;if("room server"===t||"room_server"===t||"room"===t||"server"===t)return!1}return!0===e.is_repeater||(e.is_repeater,!1)}function f(e,t){if(!e||e<=0)return.1;const n=(Math.floor(Date.now()/1e3)-e)/3600;return n<0?1:Math.exp(-n/12)}function h(e){return!(!e||e<=0)&&(Math.floor(Date.now()/1e3)-e)/3600>336}function d(e,t,n){const o=t.toUpperCase(),i=e.get(o);if(!i||0===i.candidates.length)return{hash:null,confidence:0};if(null==n?void 0:n.isLastHop)return{hash:i.bestMatch,confidence:i.confidence};if(1===(null==n?void 0:n.position))return{hash:i.bestMatch,confidence:i.confidence};if((null==n?void 0:n.position)&&i.bestMatchForPosition.has(n.position)){const e=i.bestMatchForPosition.get(n.position),t=Math.max(e.confidence,i.confidence);return{hash:e.hash,confidence:t}}if((null==n?void 0:n.adjacentPrefixes)&&n.adjacentPrefixes.length>0){let e=i.bestMatch,t=0;for(const o of i.candidates){let i=0;for(const e of n.adjacentPrefixes)i+=o.adjacentPrefixCounts.get(e.toUpperCase())||0;const s=o.combinedScore+i/Math.max(1,o.totalAdjacentObservations)*.3;s>t&&(t=s,e=o.hash)}return{hash:e,confidence:i.confidence}}return{hash:i.bestMatch,confidence:i.confidence}}function p(e){return!e||e<=0||(Math.floor(Date.now()/1e3)-e)/3600>168}function g(e){var t;if(e.length<=1)return{isReplacement:!1,activeCandidates:e,staleReplacements:[]};const n=new Map,o=[];for(const a of e){const e=null==(t=a.name)?void 0:t.trim().toLowerCase();if(e){const t=n.get(e)||[];t.push(a),n.set(e,t)}else o.push(a)}const i=[],s=[];let r=!1;for(const[,a]of n)if(a.length>1){const e=a.filter(e=>!p(e.lastSeenTimestamp)),t=a.filter(e=>p(e.lastSeenTimestamp));if(e.length>=1&&t.length>=1){r=!0,e.sort((e,t)=>t.recencyScore-e.recencyScore),i.push(e[0]),s.push(...t);for(let t=1;t=e.width-1||i<0||i>=e.height-1)return 0;const s=Math.floor(o),r=Math.floor(i),a=o-s,c=i-r,u=r*e.width+s,l=r*e.width+s+1,f=(r+1)*e.width+s,h=(r+1)*e.width+s+1;return((e.elevations[u]??0)*(1-a)+(e.elevations[l]??0)*a)*(1-c)+((e.elevations[f]??0)*(1-a)+(e.elevations[h]??0)*a)*c}function v(e,t,n,o,i){return[e+(n-e)*i,t+(o-t)*i]}function b(e,t,n,o){const i=e+(t-e)*n,s=2*Math.abs(n-.5);return i-H(o)*(1-s*s)}function M(e,t,n=915){const o=299792458/(1e6*n),i=1e3*e,s=1e3*(t-e);return i<=0||s<=0?0:Math.sqrt(o*i*s/(i+s))}function S(e,t,n){const o=void 0!==e.latitude&&void 0!==e.longitude&&(0!==e.latitude||0!==e.longitude),i=void 0!==t.latitude&&void 0!==t.longitude&&(0!==t.latitude||0!==t.longitude);if(!o||!i)return{theoreticallyPossible:!0,losConfidence:.3,worstClearance:0,sampleCount:0,reason:"no_terrain",distanceKm:0,earthBulgeM:0};const s=_(e.latitude,e.longitude,t.latitude,t.longitude);if(s>150)return{theoreticallyPossible:!1,losConfidence:1,worstClearance:-1/0,sampleCount:0,reason:"distance_limit",distanceKm:s,earthBulgeM:H(s)};if(s<.5)return{theoreticallyPossible:!0,losConfidence:.95,worstClearance:100,sampleCount:0,reason:"too_close",distanceKm:s,earthBulgeM:H(s)};if(!n){const e=H(s),t=20-e;return{theoreticallyPossible:t>0||s<30,losConfidence:.4,worstClearance:t,sampleCount:0,reason:t>10?"likely_clear":"marginal",distanceKm:s,earthBulgeM:e}}const r=e.elevation??y(n,e.latitude,e.longitude),a=t.elevation??y(n,t.latitude,t.longitude),c=r+(e.antennaHeight??10),u=a+(t.antennaHeight??10);let l=1/0,f=1;for(const d of C){const[o,i]=v(e.latitude,e.longitude,t.latitude,t.longitude,d),r=y(n,o,i),a=b(c,u,d,s)-r;a20&&t>1?"clear":e>5&&t>.6?"likely_clear":e>-5&&t>.3?"marginal":e>-20||n<10?"likely_blocked":"blocked"}(l,f,s);return{theoreticallyPossible:"blocked"!==h&&"distance_limit"!==h,losConfidence:.7,worstClearance:l,sampleCount:C.length,reason:h,distanceKm:s,earthBulgeM:H(s)}}function w(e){const{terrainFeasibility:t,observationCount:n,observationConfidence:o}=e;if(t.theoreticallyPossible)return!0;const i=function(e){switch(e){case"clear":case"likely_clear":case"too_close":return{minCount:0,minConfidence:0};case"marginal":return{minCount:5,minConfidence:.6};case"likely_blocked":default:return{minCount:10,minConfidence:.7};case"blocked":return{minCount:20,minConfidence:.8};case"distance_limit":return{minCount:1/0,minConfidence:1};case"no_terrain":return{minCount:3,minConfidence:.5}}}(t.reason);return"distance_limit"!==t.reason&&n>=i.minCount&&o>=i.minConfidence}function k(e,t){return e150)return 1/0;if(i<.1)return.01;const s=H(i);var r,a;const c=(r=i,1/(1+Math.exp(.15*(r-60)))*(a=s,1/(1+Math.exp(.5*(a-40)))));return c<1e-10?1e3:-Math.log(c)}(e.latitude,e.longitude,t.latitude,t.longitude):3}function L(e,t,n){if(n>=.8&&t>0){const e=Math.log(1+Math.min(t,50)/5);return Math.max(.01,.5-e)}if(n>=.5&&t>0){const n=Math.log(1+t/10);return.3*e+.7*Math.max(.1,e-n)}if(t>0){const n=Math.log(1+t/20);return.7*e+.3*Math.max(.1,e-n)}return e}function O(e,t){return e=.8?n=Math.max(0,n-2):c.confidence>=.5&&(n=Math.max(0,n-1)),s.push({stateIdx:r,hash:c.hash,prefix:e,isGhost:!1,latitude:c.latitude,longitude:c.longitude,priorCost:n,disambiguationConfidence:c.confidence}),r++}const a=function(e,t,n){for(const o of e){const e=void 0!==o.latitude&&void 0!==o.longitude,t=o.recencyScore>=.35,n=o.confidence>=.3;if(e&&t&&n)return!0}if(n&&e.length>0&&t.length>0)for(const o of e)for(const e of t){const t=O(o.hash,e);if((n.edgeCounts.get(t)??0)>=5)return!0}return!1}(t,o,i);if(n&&!a){const n=function(e){if(0===e.length)return 5;const t=Math.max(...e.map(e=>e.confidence));return t>=.6?20:t>=.3?15:12}(t);s.push({stateIdx:r,hash:null,prefix:e,isGhost:!0,priorCost:n,disambiguationConfidence:0})}return s}function D(e,t,n){var o,i,s;const r=n.minEdgeObservationsForHistory??3;if(e.isGhost||t.isGhost)return 15;const a=O(e.hash,t.hash),c=(null==(o=n.edgeHistory)?void 0:o.edgeCounts.get(a))??0,u=(null==(i=n.edgeHistory)?void 0:i.edgeConfidence.get(a))??0,l=Math.sqrt(e.disambiguationConfidence*t.disambiguationConfidence),f=c>=r?Math.max(l,u):l;if(n.enableTerrainAware??void 0!==n.terrainGrid){const o={hash:e.hash,latitude:e.latitude,longitude:e.longitude},i={hash:t.hash,latitude:t.latitude,longitude:t.longitude},r=null==(s=n.feasibilityCache)?void 0:s.get(e.hash,t.hash),a=function(e,t,n,o,i,s){const r=function(e,t,n,o){let i,s;if(o?(i=o.terrainFeasibility,s=w(o)):(i=S(e,t,n),s=i.theoreticallyPossible),"distance_limit"===i.reason)return 1/0;if(!s)return 1/0;const r=E({latitude:e.latitude,longitude:e.longitude},{latitude:t.latitude,longitude:t.longitude});let a=0;switch(i.reason){case"clear":case"too_close":case"no_terrain":a=0;break;case"likely_clear":a=.5;break;case"marginal":a=2;break;case"likely_blocked":a=(null==o?void 0:o.isOverridden)?2:5;break;case"blocked":a=(null==o?void 0:o.isOverridden)?2:8}if((null==o?void 0:o.isOverridden)&&o.observationCount>0){const e=Math.log(1+o.observationCount/10);a=Math.max(0,a-e)}return r+a}(e,t,n,o);if(r===1/0){if(s>=.8&&i>=20){const e=Math.log(1+i/5);return Math.max(.5,2-e)}return 1/0}return L(r,i,s)}(o,i,n.terrainGrid,r,c,f);return n.feasibilityCache&&a!==1/0&&f>.3&&n.feasibilityCache.recordObservation(e.hash,t.hash,f,Date.now()),a}return L(E({latitude:e.latitude,longitude:e.longitude},{latitude:t.latitude,longitude:t.longitude}),c,f)}function $(e,t,n={}){const o=n.enableGhostNodes??!0;if(0===t.length)return{nodes:[],totalCost:0,confidence:1,hasGhostNodes:!1,ghostPrefixes:[],originalPrefixes:[],usedObservationOverride:!1};const i=t.length,s=[];for(let m=0;m0&&c.push(...s[m-1].map(e=>e.hash)),me.hash));const u=R(e,a,o,c,n.edgeHistory);if(0===u.length)return A(t);r.push(u)}const a=[];a[0]=r[0].map(e=>({cost:e.priorCost,prevStateIdx:null,state:e}));let c=!1;for(let m=1;m{let o=1/0,i=null;for(let s=0;s=(n.observationOverrideThreshold??.8)&&(c=!0),u===1/0)continue;const l=r.cost+u+e.priorCost;l=0;m--){const e=a[m][p],t=e.state;if(t.isGhost){const e={type:"ghost",prefix:t.prefix};h.unshift(e),d.unshift(t.prefix)}else{const e={type:"known",hash:t.hash,prefix:t.prefix,confidence:t.disambiguationConfidence,latitude:t.latitude,longitude:t.longitude};h.unshift(e)}m>0&&null!==e.prevStateIdx&&(p=e.prevStateIdx)}var g;return{nodes:h,totalCost:l,confidence:(g=i>0?l/i:l)===1/0?0:Math.exp(-g),hasGhostNodes:d.length>0,ghostPrefixes:d,originalPrefixes:t,usedObservationOverride:c}}function A(e){return{nodes:e.map(e=>({type:"ghost",prefix:e.toUpperCase()})),totalCost:1/0,confidence:0,hasGhostNodes:!0,ghostPrefixes:e.map(e=>e.toUpperCase()),originalPrefixes:e,usedObservationOverride:!1}}function N(e,t,n){if(!e.hasGhostNodes)return[];const o=[];for(let i=0;i=0;t--)if("known"===e.nodes[t].type){r=e.nodes[t];break}for(let t=i+1;t0?i.confidenceSum/i.count:0);return{edgeCounts:t,edgeConfidence:n}}const U=6048e5;function F(e,t){if(!e||e<=0)return.1;const n=(t-1e3*e)/36e5;return n<0?1:Math.exp(-n/168)}function G(e,t,n){const o=new Map,i=[];let s,r=1/0,a=0;for(const d of t)if(d.beforeNodeHash&&o.set(d.beforeNodeHash,(o.get(d.beforeNodeHash)??0)+1),d.afterNodeHash&&o.set(d.afterNodeHash,(o.get(d.afterNodeHash)??0)+1),r=Math.min(r,d.timestamp),a=Math.max(a,d.timestamp),d.beforeLocation&&d.afterLocation){const e=_(d.beforeLocation.lat,d.beforeLocation.lon,d.afterLocation.lat,d.afterLocation.lon);if(e>50)continue;const t=(d.beforeLocation.lat+d.afterLocation.lat)/2,o=(d.beforeLocation.lon+d.afterLocation.lon)/2,s=n-1e3*d.timestamp,r=s0){const e=i.reduce((e,t)=>e+t.weight,0),t=i.reduce((e,t)=>e+t.lat*t.weight,0)/e,n=i.reduce((e,t)=>e+t.lon*t.weight,0)/e,o=i.map(e=>e.anchorDistanceKm).sort((e,t)=>e-t),r=1e3*o[Math.floor(o.length/2)]*.5,a=i.map(e=>_(t,n,e.lat,e.lon)),c=1e3*Math.max(...a),u=Math.sqrt(r**2+c**2),l=Math.min(Math.max(u,500),25e3);s={lat:t,lon:n,uncertaintyM:l}}const c=.2*t.length,u=new Set;for(const[d,p]of o)p>=c&&u.add(d);const l=function(e,t,n,o,i){const s=i-1e3*o;return Math.min(.4,e/30*.4)+Math.min(.3,t/4*.3)+(n<1/0?Math.max(0,.2*(1-n/1e4)):0)+(s=50,a=e>=200,c=t>=.5,u=t>=.7,l=n>=2,f=void 0!==o,h=f&&o.uncertaintyM<1e4,d=s-1e3*i=10&&c&&h)return{tier:"likely",reason:`Consistent location (±${(o.uncertaintyM/1e3).toFixed(1)}km)`,criteria:p};if(a&&c)return{tier:"likely",reason:`${e} observations suggests real node`,criteria:p};if(e>=10&&(c||l||f)){const e=[];return l||e.push("few neighbors"),f||e.push("no location"),c||e.push("low confidence"),d||e.push("stale"),{tier:"possible",reason:e.length>0?`Needs: ${e.join(", ")}`:"Moderate evidence",criteria:p}}return{tier:"noise",reason:e<10?`Only ${e} observations`:"Insufficient corroborating evidence",criteria:p}}(t.length,l,u.size,s,a,n),h="confirmed"===f.tier||"likely"===f.tier;return{prefix:e,observations:t,observationCount:t.length,estimatedLocation:s,confidence:l,commonNeighbors:u,firstSeen:r,lastSeen:a,isLikelyReal:h,classification:f}}function I(e,t){return`${t}:${e.join(">")}`}function T(e,t){return`${e}→${t}`}function q(e){const t=e.route??e.route_type;return n(t)?"flood":o(t)?"direct":"unknown"}function z(e,t){return e.toUpperCase()===(t.startsWith("0x")?t.slice(2,4).toUpperCase():t.slice(0,2).toUpperCase())}function B(e,t){return[e,t].sort().join("-")}function K(p,C,y,v=.4,b,M,S,w,k,P){const _=[...p].sort((e,t)=>(e.timestamp??0)-(t.timestamp??0)),H=new Map;for(const e of _){if(!e.packet_hash)continue;const t=H.get(e.packet_hash);t?t.push(e):H.set(e.packet_hash,[e])}let E=0,L=0,O=0;const R=new Map;for(const[,e]of H){if(e.length<2)continue;E++;const t=new Map,n=new Set;for(const o of e){const e=o.original_path??o.forwarded_path;if(!e||!Array.isArray(e)||0===e.length)continue;const i=e.map(e=>String(e).toUpperCase()).join("-");t.has(i)||(t.set(i,e.map(e=>String(e).toUpperCase())),L++);const s=String(e[e.length-1]).toUpperCase();n.add(s)}if(n.size>=2){const e=Array.from(n);for(let t=0;t1&&l&&e.latitude&&e.longitude){const t=c(u.latitude,u.longitude,e.latitude,e.longitude);let n=0;n=t<500?1:t<2e3?.8:t<5e3?.5:t<1e4?.3:.1,void 0!==e.distanceToLocal&&(e.distanceToLocal<500?n*=1.2:e.distanceToLocal<2e3?n*=1:n*=.8),e.srcGeoEvidenceScore+=n,e.srcGeoEvidenceCount++}if(t>0&&i.length>1&&e.latitude&&e.longitude){const n=o[t-1],i=p.get(n);if(i&&i.length>0){let t,n,o=0;if(1===i.length){const e=i[0];e.latitude&&e.longitude&&(t=e.latitude,n=e.longitude,o=1)}else{const e=[...i].sort((e,t)=>t.combinedScore-e.combinedScore),s=e[0],r=e[1];if(s.latitude&&s.longitude&&s.combinedScore>0){const e=r?(s.combinedScore-r.combinedScore)/s.combinedScore:1;o=Math.min(1,e+.3),o>.4&&(t=s.latitude,n=s.longitude)}}if(void 0!==t&&void 0!==n){const i=c(e.latitude,e.longitude,t,n);let s=0;s=i<500?1:i<2e3?.8:i<5e3?.5:i<1e4?.3:.1,s*=o,e.srcGeoEvidenceScore+=s,e.srcGeoEvidenceCount++}}}if(s>1&&i.length>1&&e.latitude&&e.longitude){const n=t+1;if(n0){let t,n,o=0;if(1===i.length){const e=i[0];e.latitude&&e.longitude&&(t=e.latitude,n=e.longitude,o=1)}else{const e=[...i].sort((e,t)=>t.combinedScore-e.combinedScore),s=e[0],r=e[1];if(s.latitude&&s.longitude&&s.combinedScore>0){const e=r?(s.combinedScore-r.combinedScore)/s.combinedScore:1;o=Math.min(1,e+.3),o>.4&&(t=s.latitude,n=s.longitude)}}if(void 0!==t&&void 0!==n){const i=c(e.latitude,e.longitude,t,n);let s=0;s=i<500?1:i<2e3?.8:i<5e3?.5:i<1e4?.3:.1,s*=o,e.srcGeoEvidenceScore+=s,e.srcGeoEvidenceCount++}}}}if(t>0){const n=o[t-1];e.adjacentPrefixCounts.set(n,(e.adjacentPrefixCounts.get(n)||0)+1),e.totalAdjacentObservations++}if(t0){let t=0,n=1;for(let i=0;i<5;i++)e.positionCounts[i]>t&&(t=e.positionCounts[i],n=i+1);e.typicalPosition=n,e.positionConsistency=t/e.totalAppearances;const o=e.totalAppearances/m;e.positionScore=.6*e.positionConsistency+.4*o}if(e.totalAdjacentObservations>0&&(e.cooccurrenceScore=e.totalAdjacentObservations/C),e.combinedScore=.15*e.positionScore+.15*e.cooccurrenceScore+.35*e.geographicScore+.35*e.recencyScore,e.srcGeoEvidenceCount>0){const t=e.srcGeoEvidenceScore/e.srcGeoEvidenceCount*Math.min(e.srcGeoEvidenceCount/50,1)*.3;e.combinedScore+=t}}for(const[i,s]of p){s.sort((e,t)=>t.combinedScore-e.combinedScore);const e=s.length>0?s[0].hash:null;let t=0;if(1===s.length)t=1;else if(s.length>1){const e=s[0].combinedScore,n=s[1].combinedScore;e>0&&(t=Math.min(1,(e-n)/e)),s[0].totalAppearances>2*s[1].totalAppearances&&(t=Math.min(1,t+.2));const o=0,i=s[0].positionCounts[o]||0,r=i+(s[1].positionCounts[o]||0);if(r>=20&&i>=10){const e=i/r;if(e>=.8){const n=.3+1.5*(e-.8);t=Math.min(1,t+n)}}const a=s.reduce((e,t)=>e+t.combinedScore,0);if(a>0){const e=[],n=s.reduce((e,t)=>e+(t.positionCounts[0]||0),0);for(const t of s){const o=n*(t.combinedScore/a);e.push(o)}const o=e[0],i=o+(e[1]||0);if(i>=20&&o>=10){const e=o/i;if(e>=.6){const n=.2+1*(e-.6);t=Math.min(1,t+n)}}}const c=s[0].srcGeoEvidenceScore,u=s[1].srcGeoEvidenceScore;if(s[0].srcGeoEvidenceCount>=10&&c>1.5*u){const e=u>0?c/(c+u):1,n=Math.min(.3,.6*(e-.5));t=Math.min(1,t+n)}}const n=new Map;for(let i=1;i<=5;i++){const e=[...s].sort((e,t)=>{const n=e.positionCounts[i-1]||0;return(t.positionCounts[i-1]||0)-n});if(e.length>0&&e[0].positionCounts[i-1]>0){const t=e[0];let o=1;if(e.length>1){const n=t.positionCounts[i-1],s=n+(e[1].positionCounts[i-1]||0);o=s>0?n/s:0}n.set(i,{hash:t.hash,confidence:o})}}const o={prefix:i,candidates:s,bestMatch:e,confidence:t,isUnambiguous:1===s.length,bestMatchForPosition:n};u.set(i,o)}return u}(_,C,y,b,M),A=function(e,t,n,o,i,a){const l=new Map,f=void 0!==n&&void 0!==o&&(0!==n||0!==o);for(const[s,r]of Object.entries(t)){let e=null,t=.5;f&&r.latitude&&r.longitude&&(0!==r.latitude||0!==r.longitude)&&(e=c(n,o,r.latitude,r.longitude),t=u(e)),r.zero_hop&&(t=Math.max(t,.9)),l.set(s,{hash:s,frequency:0,directForwardCount:0,distanceMeters:e,proximityScore:t,hopPositionCounts:[0,0,0,0,0],avgHopDistance:0,typicalHopPosition:0,hopConsistencyScore:0,frequencyScore:0,combinedScore:0,avgDisambiguationConfidence:0,collisionCount:0,resolutionCount:0})}const h=new Map;for(const c of e){const e=s(c,i);if(e&&e.effectiveLength>=1){const t=e.effective;for(let n=0;n0?[t[n-1]]:[],...nn&&(n=i,o=a)}s.avgHopDistance=e>0?t/e:0,s.typicalHopPosition=o,e>0&&n>0&&(s.hopConsistencyScore=n/e),s.frequencyScore=p>0?s.frequency/p:0;const i=h.get(s.hash)||0;s.avgDisambiguationConfidence=s.resolutionCount>0?i/s.resolutionCount:0,s.combinedScore=.3*s.proximityScore+.3*s.hopConsistencyScore+.4*s.frequencyScore}return l}(_,C,b,M,y,D),U=y?i(y):null,K=new Map;for(const[e,t]of A)K.set(e,t.combinedScore);const V=new Map,W=P??void 0!==k?new x:void 0,Z=new Map,J=new Map,X=new Map,Y=new Map,Q=Math.floor(Date.now()/1e3),ee=(e,t,i,s,r,a,c,u,l)=>{const f=B(e,t),h=V.get(f),[d,p]=e{if(!e||e<=0)return.1;const t=(Q-e)/3600;return t<0?1:Math.exp(-t/12)})(c);if(h)h.count++,h.confidenceSum+=i,h.recencySum+=y,h.minHopDistance=Math.min(h.minHopDistance,r),r0&&(h.viterbiConfidenceSum+=u,h.viterbiObservationCount++);else{const e=[0,0,0,0,0,0,0,0,0,0];r0?1:0})}},te=function(e){const t=new Map;for(const[n,o]of e){const e=o.candidates.map(e=>({hash:e.hash,prefix:e.prefix,latitude:e.latitude,longitude:e.longitude,confidence:e.combinedScore,recencyScore:e.recencyScore}));t.set(n,e)}return t}(D),ne=[];let oe=0,ie=0,se=0,re=0;const ae=new Set,ce=new Map;let ue=0,le=0,fe=0;for(const t of _){const n=s(t,y);if(!n)continue;const o=n.effective,i=n.effectiveLength,c=n.original,u=new Set;if(t.src_hash&&c.length>=1){const e=c[0],n=t.src_hash.toUpperCase();if(n!==e){const o=d(D,n,{position:i+1,adjacentPrefixes:[e]}),s=d(D,e,{position:i,adjacentPrefixes:[n,...c.length>1?[c[1]]:[]]});if(o.hash&&s.hash&&o.hash!==s.hash){const e=Object.keys(C).includes(o.hash),n=o.confidence*s.confidence,r=n>=.6&&e,a=n*(e?1:.8),c=i+1,l=t.route??t.route_type;ee(o.hash,s.hash,a,r,c,l,t.timestamp,void 0,t.is_duplicate),u.add(o.hash),u.add(s.hash)}}}const l=4===(t.type??t.payload_type);if(l&&0===i&&t.src_hash&&y){const e=d(D,t.src_hash.toUpperCase(),{position:1,isLastHop:!0});if(e.hash&&e.hash!==y){const n=t.route??t.route_type;ee(e.hash,y,1,!0,0,n,t.timestamp,void 0,t.is_duplicate),u.add(e.hash),u.add(y),X.set(e.hash,(X.get(e.hash)||0)+1)}}if(y&&i>=1){const e=i-1,n=o[e];if(l){const e=Y.get(n);e?(e.count++,"number"!=typeof t.rssi||isNaN(t.rssi)||(e.rssiSum+=t.rssi,e.rssiCount++),"number"!=typeof t.snr||isNaN(t.snr)||(e.snrSum+=t.snr,e.snrCount++),e.lastSeen=Math.max(e.lastSeen,t.timestamp??0)):Y.set(n,{prefix:n,count:1,rssiSum:"number"!=typeof t.rssi||isNaN(t.rssi)?0:t.rssi,rssiCount:"number"!=typeof t.rssi||isNaN(t.rssi)?0:1,snrSum:"number"!=typeof t.snr||isNaN(t.snr)?0:t.snr,snrCount:"number"!=typeof t.snr||isNaN(t.snr)?0:1,lastSeen:t.timestamp??0,resolvedHashes:new Map})}const s=d(D,n,{position:1,adjacentPrefixes:e>0?[o[e-1]]:[],isLastHop:!0});if(l&&s.hash){const e=Y.get(n);if(e){const t=e.resolvedHashes.get(s.hash);t?(t.count++,t.confidenceSum+=s.confidence):e.resolvedHashes.set(s.hash,{count:1,confidenceSum:s.confidence})}}if(s.hash&&s.hash!==y){const e=!0,n=s.confidence,o=t.route??t.route_type;ee(s.hash,y,n,e,0,o,t.timestamp,void 0,t.is_duplicate),u.add(s.hash),u.add(y),X.set(s.hash,(X.get(s.hash)||0)+1)}}if(i>=2){const n=$(te,o,{edgeHistory:j(V),observationOverrideThreshold:.8,enableGhostNodes:!0,minEdgeObservationsForHistory:3,terrainGrid:k,feasibilityCache:W,enableTerrainAware:P??void 0!==k}),s=t.packet_hash,c=t.timestamp??0,l=(c>0?(Q-c)/3600:1/0)<=336,f=s&&!ae.has(s);if(f&&l?(ae.add(s),oe++,n.hasGhostNodes&&ie++,n.usedObservationOverride&&se++,n.totalCost!==1/0&&(re+=n.confidence)):f&&ae.add(s),n.hasGhostNodes&&l){const e=N(n,c,t.packet_hash);ne.push(...e)}for(let o=0;o=.9,C=h>=e&&d>=e||g||1===p&&d>=e;u.add(l),u.add(f),o>0&&o=3)for(let e=0;eString(e).toUpperCase());9===n?le++:fe++;for(let s=0;s0?[i[s-1]]:[]}),a=d(D,o,{position:i.length-s-1,adjacentPrefixes:[n,...s+2=e&&a.confidence>=e,l=r.hash===y,f=a.hash===y,h=Object.keys(C).includes(r.hash),p=Object.keys(C).includes(a.hash);let g;g=l||f?0:h||p?1:Math.max(2,Math.min(s+1,5));const m=2;ee(r.hash,a.hash,c,u,g,m,t.timestamp,.8*c,t.is_duplicate),ue++,Z.set(r.hash,(Z.get(r.hash)||0)+1),Z.set(a.hash,(Z.get(a.hash)||0)+1),s>0&&s0?n/t:0;he.set(e,o),de=Math.max(de,o)}if(de>0)for(const[e,t]of he)he.set(e,t/de);const pe=new Set,ge=new Set,me=[...X.values()].reduce((e,t)=>e+t,0);for(const[e,t]of X){if(e===y)continue;const n=me>0?t/me:0;if(n>=.1){pe.add(e);const t=he.get(e)||0;he.set(e,Math.max(t,n))}else if(n>=.07){ge.add(e);const t=he.get(e)||0;he.set(e,Math.max(t,n))}}const Ce=Array.from(pe),ye=Array.from(ge);for(const e of ce.values()){if(e.count<5)continue;if(e.totalConfidence/e.count<.5)continue;const t=B(e.endpointA,e.endpointB);if(V.has(t)){const n=V.get(t);n.count+=Math.floor(.5*e.count),n.confidenceSum+=.5*e.totalConfidence,n.viterbiConfidenceSum+=e.totalConfidence,n.viterbiObservationCount+=e.count}else{const n=[0,0,0,0,0,0,0,0,0,0];n[2]=e.count,V.set(t,{fromHash:e.endpointA,toHash:e.endpointB,key:t,count:e.count,confidenceSum:.7*e.totalConfidence,minHopDistance:2,hopDistanceCounts:n,certainCount:0,uncertainCount:e.count,forwardCount:Math.floor(e.count/2),reverseCount:Math.ceil(e.count/2),floodCount:e.count,directCount:0,recencySum:.5*e.count,viterbiConfidenceSum:e.totalConfidence,viterbiObservationCount:e.count})}}for(const[t,n]of R){if(n.count<3)continue;if(n.confidence<.6)continue;const[o,i]=t.split("-"),s=d(D,o,{position:1,isLastHop:!0}),r=d(D,i,{position:1,isLastHop:!0});if(!s.hash||!r.hash)continue;if(s.hash===r.hash)continue;const a=B(s.hash,r.hash),c=V.get(a),u=n.confidence*Math.min(s.confidence,r.confidence);if(c)c.count+=n.count,c.confidenceSum+=u*n.count,c.recencySum+=.7*n.count,u>=e?c.certainCount+=Math.floor(.5*n.count):c.uncertainCount+=n.count,O++;else{const t=[0,0,0,0,0,0,0,0,0,0];t[1]=n.count;const[o,i]=s.hash=e?Math.floor(.3*n.count):0,uncertainCount:n.count,forwardCount:Math.floor(n.count/2),reverseCount:Math.ceil(n.count/2),floodCount:n.count,directCount:0,recencySum:.7*n.count,viterbiConfidenceSum:0,viterbiObservationCount:0}),O++}}const ve=[],be=[],Me=[];let Se=0,we=0;const ke=new Set(Ce),xe=new Set;for(const e of V.values()){const t=e.confidenceSum/e.count;Se=Math.max(Se,e.count),we=Math.max(we,e.certainCount);const n=ke.has(e.fromHash)||ke.has(e.toHash),o=e.certainCount>=5,i=e.forwardCount+e.reverseCount,s=i>0?Math.min(e.forwardCount,e.reverseCount)/Math.max(e.forwardCount,e.reverseCount):0;let r="balanced";s<.7&&i>0&&(r=e.forwardCount>e.reverseCount?"forward":"reverse");const a=e.floodCount+e.directCount>0&&e.directCount>e.floodCount,c=e.count>0?e.recencySum/e.count:0,u={fromHash:e.fromHash,toHash:e.toHash,key:e.key,packetCount:e.count,avgConfidence:t,strength:0,avgRecency:c,hopDistanceFromLocal:e.minHopDistance,isHubConnection:n,isCertain:o,certainCount:e.certainCount,forwardCount:e.forwardCount,reverseCount:e.reverseCount,symmetryRatio:s,dominantDirection:r,floodCount:e.floodCount,directCount:e.directCount,isDirectPathEdge:a};ve.push(u),o&&(be.push(u),xe.add(e.key))}for(const e of ve)!xe.has(e.key)&&e.packetCount>=2&&Me.push(e);if(w&&w.length>0&&y)for(const e of w){if(e.hash===y)continue;const t=B(y,e.hash),n=ve.find(e=>e.key===t);if(n)n.isZeroHop=!0,n.isCertain=!0,n.avgConfidence=Math.max(n.avgConfidence,.95),xe.has(t)||(be.push(n),xe.add(t));else{const[n,o]=y0){const t=(Q-e.lastSeen)/3600;i.avgRecency=t>=0?Math.exp(-t/12):1}ve.push(i),be.push(i),xe.add(t)}}for(const e of ve){const t=V.get(e.key),n=t&&t.viterbiObservationCount>0?t.viterbiConfidenceSum/t.viterbiObservationCount:0,o=Se>0?e.packetCount/Se:0;e.strength=.3*o+.3*e.avgConfidence+.25*n+.15*e.avgRecency}ve.sort((e,t)=>t.certainCount-e.certainCount),be.sort((e,t)=>{const n=e.certainCount+(e.isHubConnection?1e3:0);return t.certainCount+(t.isHubConnection?1e3:0)-n}),Me.sort((e,t)=>e.packetCount-t.packetCount);const Pe=be.slice(0,100),_e=Me.slice(0,100),He=new Map(ve.map(e=>[e.key,e])),{loops:Ee,loopEdgeKeys:Le}=function(e,t,n=1){if(e.length<3)return{loops:[],loopEdgeKeys:new Set};const o=new Map,i=new Map;for(const u of e)i.set(u.key,u),o.has(u.fromHash)||o.set(u.fromHash,new Set),o.has(u.toHash)||o.set(u.toHash,new Set),o.get(u.fromHash).add(u.toHash),o.get(u.toHash).add(u.fromHash);const s=[],r=new Set,a=new Set;function c(e,t,n){if(e===t)return[e];const i=new Set([e]),s=[{node:e,path:[e]}];for(;s.length>0;){const{node:e,path:r}=s.shift(),a=o.get(e);if(a)for(const o of a)if(B(e,o)!==n){if(o===t)return[...r,o];i.has(o)||(i.add(o),s.push({node:o,path:[...r,o]}))}}return null}for(const u of e){const e=c(u.fromHash,u.toHash,u.key);if(e&&e.length>=2){const o=e,c=[u.key];for(let t=0;t0?f/c.length:0,p=!!t&&o.includes(t),g={id:`loop-${s.length}`,edgeKeys:c,nodes:o,size:c.length,avgCertainCount:d,minCertainCount:h===1/0?0:h,includesLocal:p,strength:n>0?h===1/0?0:h/n:0};s.push(g)}}return s.sort((e,t)=>e.includesLocal!==t.includesLocal?e.includesLocal?-1:1:t.strength-e.strength),{loops:s,loopEdgeKeys:r}}(be,y,we);for(const e of ve)e.isLoopEdge=Le.has(e.key);const Oe=function(e,t){const n=new Map,o=new Map;let i=0;for(const a of e){if(!a.src_hash)continue;const e=a.original_path??a.forwarded_path;if(!e||!Array.isArray(e)||0===e.length)continue;const o=e.map(e=>"string"==typeof e?e.toUpperCase().slice(0,2):String(e).toUpperCase().slice(0,2)),s=t||"unknown",r=a.src_hash,c=I(o,r);let u=n.get(c);u||(u={id:c,hops:o,srcHash:r,dstHash:s,observationCount:0,firstSeen:a.timestamp,lastSeen:a.timestamp,routeType:q(a),hopCount:o.length},n.set(c,u)),u.observationCount++,u.lastSeen=Math.max(u.lastSeen,a.timestamp),u.firstSeen=Math.min(u.firstSeen,a.timestamp),i++,"direct"===q(a)&&"direct"!==u.routeType&&(u.routeType="direct")}const s=Array.from(n.values());for(const a of s){const e=T(a.srcHash,a.dstHash),t=o.get(e)||[];t.push(a),o.set(e,t)}for(const a of o.values())a.sort((e,t)=>t.observationCount-e.observationCount);const r=new Map;for(const[a,c]of o)c.length>0&&r.set(a,c[0]);return{paths:s,byEndpoints:o,canonicalPaths:r,totalObservations:i,uniquePathCount:s.length}}(_,y),Re=function(e,n,o,i){const s=new Map;if(0===e.length||0===o.length)return s;const r=e=>{const t=.2*Math.round(e/.2);return Math.max(.4,Math.min(2,t))},a=e=>Math.floor(5*e),c=new Set;for(const t of e)c.add(t.fromHash),c.add(t.toHash);const u=o.map(e=>e.timestamp).filter(e=>void 0!==e&&e>0).sort((e,t)=>e-t),l=u.length>=2?(u[u.length-1]-u[0])/60:1,f=new Map;for(const t of e)f.has(t.fromHash)||f.set(t.fromHash,[]),f.has(t.toHash)||f.set(t.toHash,[]),f.get(t.fromHash).push(t),f.get(t.toHash).push(t);const h=new Set;for(const t of e)t.isLoopEdge&&h.add(t.key);const d=new Set;for(const[,t]of i.canonicalPaths)for(const e of t.hops)d.add(e.toUpperCase());const p=new Map;for(const t of c){const e=f.get(t)||[];if(0===e.length)continue;const n=t.startsWith("0x")?t.slice(2,4).toUpperCase():t.slice(0,2).toUpperCase(),o=new Set;let s=0,r=0,a=0,c=0,u=0,d=0,g=0;for(const i of e){const e=i.fromHash===t?i.toHash:i.fromHash;o.add(e),s+=i.packetCount,r+=i.certainCount,a=Math.max(a,i.certainCount),c+=i.symmetryRatio,u+=i.floodCount,i.isDirectPathEdge&&d++,h.has(i.key)&&g++}const m=o.size,C=e.length>0?c/e.length:0,y=e.length>0?r/e.length:0,v=i.paths.filter(e=>e.hops.some(e=>e.toUpperCase()===n)),b=v.length;let M=0;for(const[,t]of i.canonicalPaths)t.hops.some(e=>e.toUpperCase()===n)&&M++;const S=v.length>0?v.reduce((e,t)=>e+t.hopCount,0)/v.length:0;p.set(t,{neighborCount:m,totalEdgePackets:s,maxEdgeCertainCount:a,avgEdgeCertainCount:y,avgSymmetry:C,forwardingBurden:0,floodForwardRatio:s>0?u/s:0,pathCount:b,canonicalPathCount:M,avgPathLength:S,loopParticipation:e.length>0?g/e.length:0,isInLoop:g>0,edgeDensity:0,trafficRate:l>0?s/l:0,directPathEdgeRatio:e.length>0?d/e.length:0})}const g=[],m=[],C=[],y=[];for(const[,k]of p)k.totalEdgePackets>=t&&(g.push(k.totalEdgePackets),m.push(k.neighborCount),C.push(k.pathCount),y.push(k.trafficRate));g.sort((e,t)=>e-t),m.sort((e,t)=>e-t),C.sort((e,t)=>e-t),y.sort((e,t)=>e-t);const v=(e,t)=>{if(0===e.length)return.5;const n=e.findIndex(e=>e>=t);return-1===n?1:0===n?0:n/e.length},b=m.length>0?Math.max(...m):1;for(const[,t]of p)t.forwardingBurden=v(g,t.totalEdgePackets),t.edgeDensity=b>0?t.neighborCount/b:0;const M=new Map;for(const k of c){const e=p.get(k);if(!e||e.totalEdgePackets0?e.canonicalPathCount/i.canonicalPaths.size:0)+.4*v(C,e.pathCount),l=e.loopParticipation,f=.3*s+.3*c+.2*u+.2*l;let h,d=.4+1.6*f;d=Math.max(.4,Math.min(2,d)),h=f>=.7&&e.neighborCount>=4?"backbone":e.neighborCount>=4?"hub":f>=.3&&e.neighborCount>=2?"relay":"edge";const g=i.paths.filter(e=>e.hops.some(e=>e.toUpperCase()===n)).flatMap(e=>{const t=e.hops.findIndex(e=>e.toUpperCase()===n);return t>=0?[t+1]:[]}),y=g.length>0?g.reduce((e,t)=>e+t,0)/g.length:0;let b=0;g.length>1&&(b=g.reduce((e,t)=>e+Math.pow(t-y,2),0)/g.length);const S=.3*Math.min(e.avgEdgeCertainCount/10,1)+.3*Math.min(o.length/1e3,1)+.4*e.avgSymmetry;let w;w=o.length{const n=M.get(e),o=M.get(t);return n.compositeScore-o.compositeScore});for(let t=0;t=.6?f+=". High bidirectional visibility (+1 slot)":n.observationSymmetry<.3&&(f+=". ⚠️ Low symmetry (possible observer bias)"),"low"===n.dataConfidence&&(f+=". Limited data"),l=c>a(1)?"increase":c[e.key,e]));for(const i of t)n.set(i.key,0);if(0===e.paths.length)return n;for(const r of e.paths)for(let e=0;ee>=n).sort((e,t)=>t[1]-e[1]).slice(0,t).map(([e])=>e)}(De,3,.3),{nodeMobility:Ae,mobileNodes:Ne}=function(e,t){const n=new Map,o=[];if(0===e.paths.length)return{nodeMobility:n,mobileNodes:o};const i=36e5,s=e.paths.map(e=>e.lastSeen).sort((e,t)=>e-t),r=s[0],a=s[s.length-1],c=Math.ceil((a-r)/i)||1,u=new Map;for(const l of e.paths){const e=Math.floor((l.lastSeen-r)/i);for(const n of l.hops){let o=n;for(const[e]of Object.entries(t))if((e.startsWith("0x")?e.slice(2,4).toUpperCase():e.slice(0,2).toUpperCase())===n.toUpperCase()){o=e;break}let i=u.get(o);i||(i={paths:new Set,firstSeen:l.firstSeen,lastSeen:l.lastSeen,windowPresence:new Set},u.set(o,i)),i.paths.add(l.id),i.firstSeen=Math.min(i.firstSeen,l.firstSeen),i.lastSeen=Math.max(i.lastSeen,l.lastSeen),i.windowPresence.add(e)}}for(const[l,f]of u){const e=f.paths.size,t=f.lastSeen-f.firstSeen,i=t>0?t/36e5:0,s=c>0?f.windowPresence.size/c:1,r=(1-s)*(1-.5*Math.min(e/10,1)),a=r>.3,u={hash:l,pathVolatility:r,pathDiversity:e,avgPathLifespanHours:i,isMobile:a,lastSeen:f.lastSeen,activeWindowRatio:s};n.set(l,u),a&&o.push(l)}return o.sort((e,t)=>{var o,i;const s=(null==(o=n.get(e))?void 0:o.pathVolatility)??0;return((null==(i=n.get(t))?void 0:i.pathVolatility)??0)-s}),{nodeMobility:n,mobileNodes:o}}(Oe,C),je=function(e,t,n,o=20){const s=[];if(0===e.paths.length)return s;const r=new Map;for(const f of t){const e=i(f.fromHash),t=i(f.toHash);r.set(`${e}>${t}`,f),r.set(`${t}>${e}`,f)}const a=new Set;for(const f of n)a.add(i(f));const c=new Map;for(const i of e.paths){if(0===i.hops.length)continue;const e=i.hops[i.hops.length-1],t=c.get(e)||[];t.push(i.id),c.set(e,t)}const u=[...e.paths].sort((e,t)=>t.observationCount-e.observationCount),l=Date.now();for(const i of u.slice(0,o)){if(i.hops.length<2)continue;let e=0,t=1/0,n=null,o=0,u=!1;for(let s=0;s${l}`,h=r.get(f);if(h){const i=h.packetCount>0?h.certainCount/h.packetCount:0;e+=i,o++,i0?e/o:0,h=t===1/0?0:t,d=(l-i.lastSeen)/36e5,p=Math.exp(-d/24),g=i.observationCount>10&&d<12?.5+.5*(1-d/12):d>48?-.5:0,m=i.hops[i.hops.length-1],C=c.get(m)||[],y=Math.max(0,C.length-1),v="direct"===i.routeType?20:30,b=i.hops.length*v,M=.4*f,S=.3*p,w=(g+1)/2*.15,k=.15*Math.min(y/3,1),x=Math.round(100*(M+S+w+k))/100;s.push({pathKey:i.id,hops:[...i.hops],healthScore:x,weakestLinkKey:n,weakestLinkConfidence:Math.round(100*h)/100,avgEdgeCertainty:Math.round(100*f)/100,observationTrend:Math.round(100*g)/100,alternatePathsCount:y,estimatedLatencyMs:b,observationCount:i.observationCount,routeType:"unknown"===i.routeType?"mixed":i.routeType,lastSeen:i.lastSeen,involvesHub:u})}return s.sort((e,t)=>t.healthScore-e.healthScore),s}(Oe,ve,Ce,20),Ue=[];for(const e of Y.values()){let t=null,n=0,o=0;for(const[i,s]of e.resolvedHashes){if(i===y)continue;const e=s.count>0?s.confidenceSum/s.count:0,r=s.count*e;r>n&&(n=r,t=i,o=e)}t&&Ue.push({hash:t,prefix:e.prefix,count:e.count,confidence:o,avgRssi:e.rssiCount>0?e.rssiSum/e.rssiCount:null,avgSnr:e.snrCount>0?e.snrSum/e.snrCount:null,lastSeen:e.lastSeen})}Ue.sort((e,t)=>t.count-e.count);let Fe=0,Ge=0;const Ie=[],Te=[];let qe=0;for(const[e,t]of D){if(Fe+=t.confidence,!t.isUnambiguous){const{isReplacement:n,activeCandidates:o}=g(t.candidates);if(n&&o.length<=1);else{const n=o.length;if(n>1){Ge++;const i=o.map(e=>e.hash);Te.push({prefix:e,candidateCount:n,candidateHashes:i}),t.confidence<.5&&Ie.push(e)}}}for(const t of A.values())if(t.hash.toUpperCase().startsWith(e)||t.hash.slice(2).toUpperCase().startsWith(e)){qe+=t.resolutionCount;break}}Te.sort((e,t)=>t.candidateCount-e.candidateCount);const ze=Te.slice(0,5),Be={totalPrefixes:D.size,unambiguousPrefixes:D.size-Ge,collisionPrefixes:Ge,collisionRate:D.size>0?Math.round(Ge/D.size*1e3)/10:0,avgConfidence:D.size>0?Math.round(Fe/D.size*1e3)/1e3:0,lowConfidencePrefixes:Ie,highCollisionPrefixes:ze,totalResolutions:qe},Ke=function(e,t){const n=t??Date.now(),o=new Map;for(const s of e){const e=s.prefix.toUpperCase(),t=F(s.timestamp,n),i=o.get(e);i?(i.observations.push(s),i.weightedCount+=t):o.set(e,{observations:[s],weightedCount:t})}const i=[];for(const[s,r]of o){const e=r.observations.length>=10,t=r.weightedCount>=5;if(!e&&!t)continue;const o=G(s,r.observations,n);o&&i.push(o)}return i.sort((e,t)=>t.confidence-e.confidence),i}(ne,1e3*Q),Ve=oe-ie;return{edges:ve,validatedEdges:Pe,weakEdges:_e,certainEdges:Pe,uncertainEdges:[],edgeMap:He,maxPacketCount:Se,maxCertainCount:we,neighborAffinity:K,fullAffinity:A,localPrefix:U,centrality:he,hubNodes:Ce,gatewayNodes:ye,loops:Ee,loopEdgeKeys:Le,txDelayRecommendations:Re,pathRegistry:Oe,edgeBetweenness:De,backboneEdges:$e,nodeMobility:Ae,mobileNodes:Ne,pathHealth:je,lastHopNeighbors:Ue,disambiguationStats:Be,discoveredNodes:Ke,viterbiStats:{totalPaths:oe,pathsWithGhosts:ie,observationOverrideCount:se,avgPathConfidence:Ve>0?re/Ve:0,avgPathCost:0,tracePacketsProcessed:le,pathPacketsProcessed:fe,distantEdgesDiscovered:ue,duplicateGroupsFound:E,duplicatePathsUnique:L,echolocationEdgesInferred:O}}}var V,W,Z={exports:{}},J={};W||(W=1,Z.exports=function(){if(V)return J;V=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),r=Symbol.for("react.context"),a=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),l=Symbol.for("react.lazy"),f=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},d=Object.assign,p={};function g(e,t,n){this.props=e,this.context=t,this.refs=p,this.updater=n||h}function m(){}function C(e,t,n){this.props=e,this.context=t,this.refs=p,this.updater=n||h}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},m.prototype=g.prototype;var y=C.prototype=new m;y.constructor=C,d(y,g.prototype),y.isPureReactComponent=!0;var v=Array.isArray,b=Object.prototype.hasOwnProperty,M={current:null},S={key:!0,ref:!0,__self:!0,__source:!0};function w(t,n,o){var i,s={},r=null,a=null;if(null!=n)for(i in void 0!==n.ref&&(a=n.ref),void 0!==n.key&&(r=""+n.key),n)b.call(n,i)&&!S.hasOwnProperty(i)&&(s[i]=n[i]);var c=arguments.length-2;if(1===c)s.children=o;else if(1{const{type:t,payload:n}=e.data;if("compute"!==t)return void self.postMessage({type:"error",error:`Unknown message type: ${t}`});const o=performance.now();try{const{packets:e,neighbors:t,localHash:s,localLat:r,localLon:a,airtimeMs:c,zeroHopNeighbors:u,terrainGrid:l,enableTerrainAware:f}=n,h=K(e,t,s,.5,r,a,0,u,l,f),d=l?{enabled:!0,totalLinks:0,feasibleLinks:0,blockedLinks:0,overriddenLinks:0,reasonCounts:{}}:void 0,p={type:"result",payload:{edges:h.edges,validatedEdges:h.validatedEdges,weakEdges:h.weakEdges,certainEdges:h.certainEdges,uncertainEdges:h.uncertainEdges,maxPacketCount:h.maxPacketCount,maxCertainCount:h.maxCertainCount,localPrefix:h.localPrefix,hubNodes:h.hubNodes,gatewayNodes:h.gatewayNodes,edgeMapEntries:Array.from(h.edgeMap.entries()),neighborAffinityEntries:Array.from(h.neighborAffinity.entries()),fullAffinityEntries:Array.from(h.fullAffinity.entries()),centralityEntries:Array.from(h.centrality.entries()),loops:h.loops,loopEdgeKeyEntries:Array.from(h.loopEdgeKeys),txDelayRecommendationEntries:Array.from(h.txDelayRecommendations.entries()),pathRegistry:(i=h.pathRegistry,{paths:i.paths,byEndpointsEntries:Array.from(i.byEndpoints.entries()),canonicalPathsEntries:Array.from(i.canonicalPaths.entries()),totalObservations:i.totalObservations,uniquePathCount:i.uniquePathCount}),edgeBetweennessEntries:Array.from(h.edgeBetweenness.entries()),backboneEdges:h.backboneEdges,nodeMobilityEntries:Array.from(h.nodeMobility.entries()),mobileNodes:h.mobileNodes,pathHealth:h.pathHealth,lastHopNeighbors:h.lastHopNeighbors,disambiguationStats:h.disambiguationStats,discoveredNodes:h.discoveredNodes,viterbiStats:h.viterbiStats,terrainStats:d},computeTimeMs:performance.now()-o};self.postMessage(p)}catch(s){const e={type:"error",error:s instanceof Error?s.message:"Unknown error in topology worker"};self.postMessage(e)}var i}}(); diff --git a/frontend/dist/assets/topology.worker-eIne159M.js b/frontend/dist/assets/topology.worker-eIne159M.js deleted file mode 100644 index 59eb8fab..00000000 --- a/frontend/dist/assets/topology.worker-eIne159M.js +++ /dev/null @@ -1 +0,0 @@ -!function(){"use strict";const t=.6,e=100;function o(t){return 1===t||0===t}function n(t){return 2===t||3===t}function s(t){return t.startsWith("0x")||t.startsWith("0X")?t.slice(2,4).toUpperCase():t.slice(0,2).toUpperCase()}function i(t,e){let o=t.forwarded_path??t.original_path;if("string"==typeof o)try{o=JSON.parse(o)}catch{return null}if(!o||!Array.isArray(o)||0===o.length)return null;const n=o.map(t=>String(t).toUpperCase()),i=e?s(e):null,r=n[n.length-1],a=null!==i&&r===i,c=a?n.slice(0,-1):[...n];return{effective:c,original:n,hadLocal:a,effectiveLength:c.length}}function r(t,e){return e-t}function a(t){return t}function c(t,e,o,n){const s=(o-t)*Math.PI/180,i=(n-e)*Math.PI/180,r=Math.sin(s/2)*Math.sin(s/2)+Math.cos(t*Math.PI/180)*Math.cos(o*Math.PI/180)*Math.sin(i/2)*Math.sin(i/2);return 2*Math.atan2(Math.sqrt(r),Math.sqrt(1-r))*6371e3}function u(t){return t<500?1:t<2e3?.8:t<5e3?.6:t<1e4?.4:t<2e4?.2:.1}function f(t){if(t.contact_type){const e=t.contact_type.toLowerCase();if("repeater"===e||"rep"===e)return!0;if("companion"===e||"client"===e||"cli"===e)return!1;if("room server"===e||"room_server"===e||"room"===e||"server"===e)return!1}return!0===t.is_repeater||(t.is_repeater,!1)}function l(t,e){if(!t||t<=0)return.1;const o=(Math.floor(Date.now()/1e3)-t)/3600;return o<0?1:Math.exp(-o/12)}function h(t){return!(!t||t<=0)&&(Math.floor(Date.now()/1e3)-t)/3600>336}function d(t,e,o){const n=e.toUpperCase(),s=t.get(n);if(!s||0===s.candidates.length)return{hash:null,confidence:0};if(null==o?void 0:o.isLastHop)return{hash:s.bestMatch,confidence:s.confidence};if(1===(null==o?void 0:o.position))return{hash:s.bestMatch,confidence:s.confidence};if((null==o?void 0:o.position)&&s.bestMatchForPosition.has(o.position)){const t=s.bestMatchForPosition.get(o.position),e=Math.max(t.confidence,s.confidence);return{hash:t.hash,confidence:e}}if((null==o?void 0:o.adjacentPrefixes)&&o.adjacentPrefixes.length>0){let t=s.bestMatch,e=0;for(const n of s.candidates){let s=0;for(const t of o.adjacentPrefixes)s+=n.adjacentPrefixCounts.get(t.toUpperCase())||0;const i=n.combinedScore+s/Math.max(1,n.totalAdjacentObservations)*.3;i>e&&(e=i,t=n.hash)}return{hash:t,confidence:s.confidence}}return{hash:s.bestMatch,confidence:s.confidence}}function p(t){return"known"===t.type}function g(t,e,o,n){const s=t*Math.PI/180,i=e*Math.PI/180,r=o*Math.PI/180,a=r-s,c=n*Math.PI/180-i,u=Math.sin(a/2)**2+Math.cos(s)*Math.cos(r)*Math.sin(c/2)**2;return 2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u))*6371}function m(t,e,o){const n=[];let s=0;for(const i of e){const e=-Math.log(Math.max(i.recencyScore,.01));let o=Math.min(e,5);i.confidence>=.8?o=Math.max(0,o-2):i.confidence>=.5&&(o=Math.max(0,o-1)),n.push({stateIdx:s,hash:i.hash,prefix:t,isGhost:!1,latitude:i.latitude,longitude:i.longitude,priorCost:o,disambiguationConfidence:i.confidence}),s++}if(o){const o=function(t){if(0===t.length)return 3;const e=Math.max(...t.map(t=>t.confidence));return e>=.6?12:e>=.3?8:5}(e);n.push({stateIdx:s,hash:null,prefix:t,isGhost:!0,priorCost:o,disambiguationConfidence:0})}return n}function y(t,e,o){var n,s;const i=o.minEdgeObservationsForHistory??3;if(t.isGhost||e.isGhost)return 8;const r=(c={latitude:t.latitude,longitude:t.longitude},u={latitude:e.latitude,longitude:e.longitude},void 0===c.latitude||void 0===c.longitude||0===c.latitude&&0===c.longitude||void 0===u.latitude||void 0===u.longitude||0===u.latitude&&0===u.longitude?3:function(t,e,o,n){const s=g(t,e,o,n);if(s>150)return 1/0;if(s<.1)return.01;const i=function(t){if(t<=0)return 0;const e=1e3*t;return e*e/50968e3}(s);var r,a;const c=(r=s,1/(1+Math.exp(.15*(r-60)))*(a=i,1/(1+Math.exp(.5*(a-40)))));return c<1e-10?1e3:-Math.log(c)}(c.latitude,c.longitude,u.latitude,u.longitude)),a=(f=t.hash)<(l=e.hash)?`${f}-${l}`:`${l}-${f}`;var c,u,f,l;const h=(null==(n=o.edgeHistory)?void 0:n.edgeCounts.get(a))??0,d=(null==(s=o.edgeHistory)?void 0:s.edgeConfidence.get(a))??0,p=Math.sqrt(t.disambiguationConfidence*e.disambiguationConfidence);return function(t,e,o){if(o>=.8&&e>0){const t=Math.log(1+Math.min(e,50)/5);return Math.max(.01,.5-t)}if(o>=.5&&e>0){const o=Math.log(1+e/10);return.3*t+.7*Math.max(.1,t-o)}if(e>0){const o=Math.log(1+e/20);return.7*t+.3*Math.max(.1,t-o)}return t}(r,h,h>=i?Math.max(p,d):p)}function C(t,e,o={}){const n=o.enableGhostNodes??!0;if(0===e.length)return{nodes:[],totalCost:0,confidence:1,hasGhostNodes:!1,ghostPrefixes:[],originalPrefixes:[],usedObservationOverride:!1};const s=e.length,i=[];for(let g=0;g({cost:t.priorCost,prevStateIdx:null,state:t}));let a=!1;for(let g=1;g{let n=1/0,s=null;for(let i=0;i=(o.observationOverrideThreshold??.8)&&(a=!0),u===1/0)continue;const f=r.cost+u+t.priorCost;f=0;g--){const t=r[g][d],e=t.state;if(e.isGhost){const t={type:"ghost",prefix:e.prefix};l.unshift(t),h.unshift(e.prefix)}else{const t={type:"known",hash:e.hash,prefix:e.prefix,confidence:e.disambiguationConfidence,latitude:e.latitude,longitude:e.longitude};l.unshift(t)}g>0&&null!==t.prevStateIdx&&(d=t.prevStateIdx)}var p;return{nodes:l,totalCost:u,confidence:(p=s>0?u/s:u)===1/0?0:Math.exp(-p),hasGhostNodes:h.length>0,ghostPrefixes:h,originalPrefixes:e,usedObservationOverride:a}}function v(t){return{nodes:t.map(t=>({type:"ghost",prefix:t.toUpperCase()})),totalCost:1/0,confidence:0,hasGhostNodes:!0,ghostPrefixes:t.map(t=>t.toUpperCase()),originalPrefixes:t,usedObservationOverride:!1}}function b(t,e,o){if(!t.hasGhostNodes)return[];const n=[];for(let s=0;s=0;e--)if("known"===t.nodes[e].type){r=t.nodes[e];break}for(let e=s+1;e0?s.confidenceSum/s.count:0);return{edgeCounts:e,edgeConfidence:o}}const M=6048e5;function w(t,e){if(!t||t<=0)return.1;const o=(e-1e3*t)/36e5;return o<0?1:Math.exp(-o/168)}function x(t,e,o){const n=new Map,s=[];let i,r=1/0,a=0;for(const h of e)if(h.beforeNodeHash&&n.set(h.beforeNodeHash,(n.get(h.beforeNodeHash)??0)+1),h.afterNodeHash&&n.set(h.afterNodeHash,(n.get(h.afterNodeHash)??0)+1),r=Math.min(r,h.timestamp),a=Math.max(a,h.timestamp),h.beforeLocation&&h.afterLocation){const t=(h.beforeLocation.lat+h.afterLocation.lat)/2,e=(h.beforeLocation.lon+h.afterLocation.lon)/2,n=o-1e3*h.timestamp,i=n0){const t=s.reduce((t,e)=>t+e.weight,0),e=s.reduce((t,e)=>t+e.lat*e.weight,0)/t,o=s.reduce((t,e)=>t+e.lon*e.weight,0)/t,n=s.map(t=>g(e,o,t.lat,t.lon)),r=n.reduce((t,e)=>t+e,0)/n.length,a=n.reduce((t,e)=>t+(e-r)**2,0)/n.length,c=Math.sqrt(a);i={lat:e,lon:o,uncertaintyM:1e3*c}}const c=.2*e.length,u=new Set;for(const[h,d]of n)d>=c&&u.add(h);const f=function(t,e,o,n,s){const i=s-1e3*n;return Math.min(.4,t/30*.4)+Math.min(.3,e/4*.3)+(o<1/0?Math.max(0,.2*(1-o/1e4)):0)+(i=10&&u.size>=2&&(void 0===i||i.uncertaintyM<1e4)&&f>=.3;return{prefix:t,observations:e,observationCount:e.length,estimatedLocation:i,confidence:f,commonNeighbors:u,firstSeen:r,lastSeen:a,isLikelyReal:l}}function P(t,e){return`${e}:${t.join(">")}`}function k(t,e){return`${t}→${e}`}function H(t){const e=t.route??t.route_type;return o(e)?"flood":n(e)?"direct":"unknown"}function E(t,e){return t.toUpperCase()===(e.startsWith("0x")?e.slice(2,4).toUpperCase():e.slice(0,2).toUpperCase())}function _(t,e){return[t,e].sort().join("-")}function R(g,m,y,v=.4,M,R,D,L){const A=[...g].sort((t,e)=>(t.timestamp??0)-(e.timestamp??0)),N=new Map;for(const t of A){if(!t.packet_hash)continue;const e=N.get(t.packet_hash);e?e.push(t):N.set(t.packet_hash,[t])}let j=0,O=0,$=0;const U=new Map;for(const[,t]of N){if(t.length<2)continue;j++;const e=new Map,o=new Set;for(const n of t){const t=n.original_path??n.forwarded_path;if(!t||!Array.isArray(t)||0===t.length)continue;const s=t.map(t=>String(t).toUpperCase()).join("-");e.has(s)||(e.set(s,t.map(t=>String(t).toUpperCase())),O++);const i=String(t[t.length-1]).toUpperCase();o.add(i)}if(o.size>=2){const t=Array.from(o);for(let e=0;e1&&f&&t.latitude&&t.longitude){const e=c(u.latitude,u.longitude,t.latitude,t.longitude);let o=0;o=e<500?1:e<2e3?.8:e<5e3?.5:e<1e4?.3:.1,void 0!==t.distanceToLocal&&(t.distanceToLocal<500?o*=1.2:t.distanceToLocal<2e3?o*=1:o*=.8),t.srcGeoEvidenceScore+=o,t.srcGeoEvidenceCount++}if(e>0&&s.length>1&&t.latitude&&t.longitude){const o=n[e-1],s=p.get(o);if(s&&s.length>0){let e,o,n=0;if(1===s.length){const t=s[0];t.latitude&&t.longitude&&(e=t.latitude,o=t.longitude,n=1)}else{const t=[...s].sort((t,e)=>e.combinedScore-t.combinedScore),i=t[0],r=t[1];if(i.latitude&&i.longitude&&i.combinedScore>0){const t=r?(i.combinedScore-r.combinedScore)/i.combinedScore:1;n=Math.min(1,t+.3),n>.4&&(e=i.latitude,o=i.longitude)}}if(void 0!==e&&void 0!==o){const s=c(t.latitude,t.longitude,e,o);let i=0;i=s<500?1:s<2e3?.8:s<5e3?.5:s<1e4?.3:.1,i*=n,t.srcGeoEvidenceScore+=i,t.srcGeoEvidenceCount++}}}if(i>1&&s.length>1&&t.latitude&&t.longitude){const o=e+1;if(o0){let e,o,n=0;if(1===s.length){const t=s[0];t.latitude&&t.longitude&&(e=t.latitude,o=t.longitude,n=1)}else{const t=[...s].sort((t,e)=>e.combinedScore-t.combinedScore),i=t[0],r=t[1];if(i.latitude&&i.longitude&&i.combinedScore>0){const t=r?(i.combinedScore-r.combinedScore)/i.combinedScore:1;n=Math.min(1,t+.3),n>.4&&(e=i.latitude,o=i.longitude)}}if(void 0!==e&&void 0!==o){const s=c(t.latitude,t.longitude,e,o);let i=0;i=s<500?1:s<2e3?.8:s<5e3?.5:s<1e4?.3:.1,i*=n,t.srcGeoEvidenceScore+=i,t.srcGeoEvidenceCount++}}}}if(e>0){const o=n[e-1];t.adjacentPrefixCounts.set(o,(t.adjacentPrefixCounts.get(o)||0)+1),t.totalAdjacentObservations++}if(e0){let e=0,o=1;for(let s=0;s<5;s++)t.positionCounts[s]>e&&(e=t.positionCounts[s],o=s+1);t.typicalPosition=o,t.positionConsistency=e/t.totalAppearances;const n=t.totalAppearances/m;t.positionScore=.6*t.positionConsistency+.4*n}if(t.totalAdjacentObservations>0&&(t.cooccurrenceScore=t.totalAdjacentObservations/y),t.combinedScore=.15*t.positionScore+.15*t.cooccurrenceScore+.35*t.geographicScore+.35*t.recencyScore,t.srcGeoEvidenceCount>0){const e=t.srcGeoEvidenceScore/t.srcGeoEvidenceCount*Math.min(t.srcGeoEvidenceCount/50,1)*.3;t.combinedScore+=e}}for(const[s,i]of p){i.sort((t,e)=>e.combinedScore-t.combinedScore);const t=i.length>0?i[0].hash:null;let e=0;if(1===i.length)e=1;else if(i.length>1){const t=i[0].combinedScore,o=i[1].combinedScore;t>0&&(e=Math.min(1,(t-o)/t)),i[0].totalAppearances>2*i[1].totalAppearances&&(e=Math.min(1,e+.2));const n=0,s=i[0].positionCounts[n]||0,r=s+(i[1].positionCounts[n]||0);if(r>=20&&s>=10){const t=s/r;if(t>=.8){const o=.3+1.5*(t-.8);e=Math.min(1,e+o)}}const a=i.reduce((t,e)=>t+e.combinedScore,0);if(a>0){const t=[],o=i.reduce((t,e)=>t+(e.positionCounts[0]||0),0);for(const e of i){const n=o*(e.combinedScore/a);t.push(n)}const n=t[0],s=n+(t[1]||0);if(s>=20&&n>=10){const t=n/s;if(t>=.6){const o=.2+1*(t-.6);e=Math.min(1,e+o)}}}const c=i[0].srcGeoEvidenceScore,u=i[1].srcGeoEvidenceScore;if(i[0].srcGeoEvidenceCount>=10&&c>1.5*u){const t=u>0?c/(c+u):1,o=Math.min(.3,.6*(t-.5));e=Math.min(1,e+o)}}const o=new Map;for(let s=1;s<=5;s++){const t=[...i].sort((t,e)=>{const o=t.positionCounts[s-1]||0;return(e.positionCounts[s-1]||0)-o});if(t.length>0&&t[0].positionCounts[s-1]>0){const e=t[0];let n=1;if(t.length>1){const o=e.positionCounts[s-1],i=o+(t[1].positionCounts[s-1]||0);n=i>0?o/i:0}o.set(s,{hash:e.hash,confidence:n})}}const n={prefix:s,candidates:i,bestMatch:t,confidence:e,isUnambiguous:1===i.length,bestMatchForPosition:o};u.set(s,n)}return u}(A,m,y,M,R),I=function(t,e,o,n,s,a){const f=new Map,l=void 0!==o&&void 0!==n&&(0!==o||0!==n);for(const[i,r]of Object.entries(e)){let t=null,e=.5;l&&r.latitude&&r.longitude&&(0!==r.latitude||0!==r.longitude)&&(t=c(o,n,r.latitude,r.longitude),e=u(t)),r.zero_hop&&(e=Math.max(e,.9)),f.set(i,{hash:i,frequency:0,directForwardCount:0,distanceMeters:t,proximityScore:e,hopPositionCounts:[0,0,0,0,0],avgHopDistance:0,typicalHopPosition:0,hopConsistencyScore:0,frequencyScore:0,combinedScore:0,avgDisambiguationConfidence:0,collisionCount:0,resolutionCount:0})}const h=new Map;for(const c of t){const t=i(c,s);if(t&&t.effectiveLength>=1){const e=t.effective;for(let o=0;o0?[e[o-1]]:[],...oo&&(o=s,n=a)}i.avgHopDistance=t>0?e/t:0,i.typicalHopPosition=n,t>0&&o>0&&(i.hopConsistencyScore=o/t),i.frequencyScore=p>0?i.frequency/p:0;const s=h.get(i.hash)||0;i.avgDisambiguationConfidence=i.resolutionCount>0?s/i.resolutionCount:0,i.combinedScore=.3*i.proximityScore+.3*i.hopConsistencyScore+.4*i.frequencyScore}return f}(A,m,M,R,y,G),F=y?s(y):null,T=new Map;for(const[t,e]of I)T.set(t,e.combinedScore);const q=new Map,z=new Map,V=new Map,B=new Map,W=new Map,K=Math.floor(Date.now()/1e3),Z=(t,e,s,i,r,a,c,u)=>{const f=_(t,e),l=q.get(f),[h,d]=t{if(!t||t<=0)return.1;const e=(K-t)/3600;return e<0?1:Math.exp(-e/12)})(c);if(l)l.count++,l.confidenceSum+=s,l.recencySum+=y,l.minHopDistance=Math.min(l.minHopDistance,r),r0&&(l.viterbiConfidenceSum+=u,l.viterbiObservationCount++);else{const t=[0,0,0,0,0,0,0,0,0,0];r0?1:0})}},J=function(t){const e=new Map;for(const[o,n]of t){const t=n.candidates.map(t=>({hash:t.hash,prefix:t.prefix,latitude:t.latitude,longitude:t.longitude,confidence:t.combinedScore,recencyScore:t.recencyScore}));e.set(o,t)}return e}(G),X=[];let Y=0,Q=0,tt=0,et=0;const ot=new Set,nt=new Map;let st=0,it=0,rt=0;for(const e of A){const o=i(e,y);if(!o)continue;const n=o.effective,s=o.effectiveLength,c=o.original,u=new Set;if(e.src_hash&&c.length>=1){const t=c[0],o=e.src_hash.toUpperCase();if(o!==t){const n=d(G,o,{position:s+1,adjacentPrefixes:[t]}),i=d(G,t,{position:s,adjacentPrefixes:[o,...c.length>1?[c[1]]:[]]});if(n.hash&&i.hash&&n.hash!==i.hash){const t=Object.keys(m).includes(n.hash),o=n.confidence*i.confidence,r=o>=.6&&t,a=o*(t?1:.8),c=s+1,f=e.route??e.route_type;Z(n.hash,i.hash,a,r,c,f,e.timestamp),u.add(n.hash),u.add(i.hash)}}}const f=4===(e.type??e.payload_type);if(f&&0===s&&e.src_hash&&y){const t=d(G,e.src_hash.toUpperCase(),{position:1,isLastHop:!0});if(t.hash&&t.hash!==y){const o=e.route??e.route_type;Z(t.hash,y,1,!0,0,o,e.timestamp),u.add(t.hash),u.add(y),B.set(t.hash,(B.get(t.hash)||0)+1)}}if(y&&s>=1){const t=s-1,o=n[t];if(f){const t=W.get(o);t?(t.count++,"number"!=typeof e.rssi||isNaN(e.rssi)||(t.rssiSum+=e.rssi,t.rssiCount++),"number"!=typeof e.snr||isNaN(e.snr)||(t.snrSum+=e.snr,t.snrCount++),t.lastSeen=Math.max(t.lastSeen,e.timestamp??0)):W.set(o,{prefix:o,count:1,rssiSum:"number"!=typeof e.rssi||isNaN(e.rssi)?0:e.rssi,rssiCount:"number"!=typeof e.rssi||isNaN(e.rssi)?0:1,snrSum:"number"!=typeof e.snr||isNaN(e.snr)?0:e.snr,snrCount:"number"!=typeof e.snr||isNaN(e.snr)?0:1,lastSeen:e.timestamp??0,resolvedHashes:new Map})}const i=d(G,o,{position:1,adjacentPrefixes:t>0?[n[t-1]]:[],isLastHop:!0});if(f&&i.hash){const t=W.get(o);if(t){const e=t.resolvedHashes.get(i.hash);e?(e.count++,e.confidenceSum+=i.confidence):t.resolvedHashes.set(i.hash,{count:1,confidenceSum:i.confidence})}}if(i.hash&&i.hash!==y){const t=!0,o=i.confidence,n=e.route??e.route_type;Z(i.hash,y,o,t,0,n,e.timestamp),u.add(i.hash),u.add(y),B.set(i.hash,(B.get(i.hash)||0)+1)}}if(s>=2){const o=C(J,n,{edgeHistory:S(q),observationOverrideThreshold:.8,enableGhostNodes:!0,minEdgeObservationsForHistory:3}),i=e.packet_hash,c=e.timestamp??0,f=(c>0?(K-c)/3600:1/0)<=336,l=i&&!ot.has(i);if(l&&f?(ot.add(i),Y++,o.hasGhostNodes&&Q++,o.usedObservationOverride&&tt++,o.totalCost!==1/0&&(et+=o.confidence)):l&&ot.add(i),o.hasGhostNodes&&f){const t=b(o,c,e.packet_hash);X.push(...t)}for(let n=0;n=.9,y=h>=t&&d>=t||m||1===g&&d>=t;u.add(f),u.add(l),n>0&&n=3)for(let t=0;tString(t).toUpperCase());9===o?it++:rt++;for(let i=0;i0?[s[i-1]]:[]}),a=d(G,n,{position:s.length-i-1,adjacentPrefixes:[o,...i+2=t&&a.confidence>=t,f=r.hash===y,l=a.hash===y,h=Object.keys(m).includes(r.hash),p=Object.keys(m).includes(a.hash);let g;g=f||l?0:h||p?1:Math.max(2,Math.min(i+1,5));const C=2;Z(r.hash,a.hash,c,u,g,C,e.timestamp,.8*c),st++,z.set(r.hash,(z.get(r.hash)||0)+1),z.set(a.hash,(z.get(a.hash)||0)+1),i>0&&i0?o/e:0;at.set(t,n),ct=Math.max(ct,n)}if(ct>0)for(const[t,e]of at)at.set(t,e/ct);const ut=new Set,ft=new Set,lt=[...B.values()].reduce((t,e)=>t+e,0);for(const[t,e]of B){if(t===y)continue;const o=lt>0?e/lt:0;if(o>=.1){ut.add(t);const e=at.get(t)||0;at.set(t,Math.max(e,o))}else if(o>=.07){ft.add(t);const e=at.get(t)||0;at.set(t,Math.max(e,o))}}const ht=Array.from(ut),dt=Array.from(ft);for(const t of nt.values()){if(t.count<5)continue;if(t.totalConfidence/t.count<.5)continue;const e=_(t.endpointA,t.endpointB);if(q.has(e)){const o=q.get(e);o.count+=Math.floor(.5*t.count),o.confidenceSum+=.5*t.totalConfidence,o.viterbiConfidenceSum+=t.totalConfidence,o.viterbiObservationCount+=t.count}else{const o=[0,0,0,0,0,0,0,0,0,0];o[2]=t.count,q.set(e,{fromHash:t.endpointA,toHash:t.endpointB,key:e,count:t.count,confidenceSum:.7*t.totalConfidence,minHopDistance:2,hopDistanceCounts:o,certainCount:0,uncertainCount:t.count,forwardCount:Math.floor(t.count/2),reverseCount:Math.ceil(t.count/2),floodCount:t.count,directCount:0,recencySum:.5*t.count,viterbiConfidenceSum:t.totalConfidence,viterbiObservationCount:t.count})}}for(const[e,o]of U){if(o.count<3)continue;if(o.confidence<.6)continue;const[n,s]=e.split("-"),i=d(G,n,{position:1,isLastHop:!0}),r=d(G,s,{position:1,isLastHop:!0});if(!i.hash||!r.hash)continue;if(i.hash===r.hash)continue;const a=_(i.hash,r.hash),c=q.get(a),u=o.confidence*Math.min(i.confidence,r.confidence);if(c)c.count+=o.count,c.confidenceSum+=u*o.count,c.recencySum+=.7*o.count,u>=t?c.certainCount+=Math.floor(.5*o.count):c.uncertainCount+=o.count,$++;else{const e=[0,0,0,0,0,0,0,0,0,0];e[1]=o.count;const[n,s]=i.hash=t?Math.floor(.3*o.count):0,uncertainCount:o.count,forwardCount:Math.floor(o.count/2),reverseCount:Math.ceil(o.count/2),floodCount:o.count,directCount:0,recencySum:.7*o.count,viterbiConfidenceSum:0,viterbiObservationCount:0}),$++}}const pt=[],gt=[],mt=[];let yt=0,Ct=0;const vt=new Set(ht),bt=new Set;for(const t of q.values()){const e=t.confidenceSum/t.count;yt=Math.max(yt,t.count),Ct=Math.max(Ct,t.certainCount);const o=vt.has(t.fromHash)||vt.has(t.toHash),n=t.certainCount>=5,s=t.forwardCount+t.reverseCount,i=s>0?Math.min(t.forwardCount,t.reverseCount)/Math.max(t.forwardCount,t.reverseCount):0;let r="balanced";i<.7&&s>0&&(r=t.forwardCount>t.reverseCount?"forward":"reverse");const a=t.floodCount+t.directCount>0&&t.directCount>t.floodCount,c=t.count>0?t.recencySum/t.count:0,u={fromHash:t.fromHash,toHash:t.toHash,key:t.key,packetCount:t.count,avgConfidence:e,strength:0,avgRecency:c,hopDistanceFromLocal:t.minHopDistance,isHubConnection:o,isCertain:n,certainCount:t.certainCount,forwardCount:t.forwardCount,reverseCount:t.reverseCount,symmetryRatio:i,dominantDirection:r,floodCount:t.floodCount,directCount:t.directCount,isDirectPathEdge:a};pt.push(u),n&&(gt.push(u),bt.add(t.key))}for(const t of pt)!bt.has(t.key)&&t.packetCount>=2&&mt.push(t);if(L&&L.length>0&&y)for(const t of L){if(t.hash===y)continue;const e=_(y,t.hash),o=pt.find(t=>t.key===e);if(o)o.isZeroHop=!0,o.isCertain=!0,o.avgConfidence=Math.max(o.avgConfidence,.95),bt.has(e)||(gt.push(o),bt.add(e));else{const[o,n]=y0){const e=(K-t.lastSeen)/3600;s.avgRecency=e>=0?Math.exp(-e/12):1}pt.push(s),gt.push(s),bt.add(e)}}for(const t of pt){const e=q.get(t.key),o=e&&e.viterbiObservationCount>0?e.viterbiConfidenceSum/e.viterbiObservationCount:0,n=yt>0?t.packetCount/yt:0;t.strength=.3*n+.3*t.avgConfidence+.25*o+.15*t.avgRecency}pt.sort((t,e)=>e.certainCount-t.certainCount),gt.sort((t,e)=>{const o=t.certainCount+(t.isHubConnection?1e3:0);return e.certainCount+(e.isHubConnection?1e3:0)-o}),mt.sort((t,e)=>t.packetCount-e.packetCount);const St=gt.slice(0,100),Mt=mt.slice(0,100),wt=new Map(pt.map(t=>[t.key,t])),{loops:xt,loopEdgeKeys:Pt}=function(t,e,o=1){if(t.length<3)return{loops:[],loopEdgeKeys:new Set};const n=new Map,s=new Map;for(const u of t)s.set(u.key,u),n.has(u.fromHash)||n.set(u.fromHash,new Set),n.has(u.toHash)||n.set(u.toHash,new Set),n.get(u.fromHash).add(u.toHash),n.get(u.toHash).add(u.fromHash);const i=[],r=new Set,a=new Set;function c(t,e,o){if(t===e)return[t];const s=new Set([t]),i=[{node:t,path:[t]}];for(;i.length>0;){const{node:t,path:r}=i.shift(),a=n.get(t);if(a)for(const n of a)if(_(t,n)!==o){if(n===e)return[...r,n];s.has(n)||(s.add(n),i.push({node:n,path:[...r,n]}))}}return null}for(const u of t){const t=c(u.fromHash,u.toHash,u.key);if(t&&t.length>=2){const n=t,c=[u.key];for(let e=0;e0?l/c.length:0,p=!!e&&n.includes(e),g={id:`loop-${i.length}`,edgeKeys:c,nodes:n,size:c.length,avgCertainCount:d,minCertainCount:h===1/0?0:h,includesLocal:p,strength:o>0?h===1/0?0:h/o:0};i.push(g)}}return i.sort((t,e)=>t.includesLocal!==e.includesLocal?t.includesLocal?-1:1:e.strength-t.strength),{loops:i,loopEdgeKeys:r}}(gt,y,Ct);for(const t of pt)t.isLoopEdge=Pt.has(t.key);const kt=function(t,e){const o=new Map,n=new Map;let s=0;for(const a of t){if(!a.src_hash)continue;const t=a.original_path??a.forwarded_path;if(!t||!Array.isArray(t)||0===t.length)continue;const n=t.map(t=>"string"==typeof t?t.toUpperCase().slice(0,2):String(t).toUpperCase().slice(0,2)),i=e||"unknown",r=a.src_hash,c=P(n,r);let u=o.get(c);u||(u={id:c,hops:n,srcHash:r,dstHash:i,observationCount:0,firstSeen:a.timestamp,lastSeen:a.timestamp,routeType:H(a),hopCount:n.length},o.set(c,u)),u.observationCount++,u.lastSeen=Math.max(u.lastSeen,a.timestamp),u.firstSeen=Math.min(u.firstSeen,a.timestamp),s++,"direct"===H(a)&&"direct"!==u.routeType&&(u.routeType="direct")}const i=Array.from(o.values());for(const a of i){const t=k(a.srcHash,a.dstHash),e=n.get(t)||[];e.push(a),n.set(t,e)}for(const a of n.values())a.sort((t,e)=>e.observationCount-t.observationCount);const r=new Map;for(const[a,c]of n)c.length>0&&r.set(a,c[0]);return{paths:i,byEndpoints:n,canonicalPaths:r,totalObservations:s,uniquePathCount:i.length}}(A,y),Ht=function(t,o,n,s){const i=new Map;if(0===t.length||0===n.length)return i;const r=t=>{const e=.2*Math.round(t/.2);return Math.max(.4,Math.min(2,e))},a=t=>Math.floor(5*t),c=new Set;for(const e of t)c.add(e.fromHash),c.add(e.toHash);const u=n.map(t=>t.timestamp).filter(t=>void 0!==t&&t>0).sort((t,e)=>t-e),f=u.length>=2?(u[u.length-1]-u[0])/60:1,l=new Map;for(const e of t)l.has(e.fromHash)||l.set(e.fromHash,[]),l.has(e.toHash)||l.set(e.toHash,[]),l.get(e.fromHash).push(e),l.get(e.toHash).push(e);const h=new Set;for(const e of t)e.isLoopEdge&&h.add(e.key);const d=new Set;for(const[,e]of s.canonicalPaths)for(const t of e.hops)d.add(t.toUpperCase());const p=new Map;for(const e of c){const t=l.get(e)||[];if(0===t.length)continue;const o=e.startsWith("0x")?e.slice(2,4).toUpperCase():e.slice(0,2).toUpperCase(),n=new Set;let i=0,r=0,a=0,c=0,u=0,d=0,g=0;for(const s of t){const t=s.fromHash===e?s.toHash:s.fromHash;n.add(t),i+=s.packetCount,r+=s.certainCount,a=Math.max(a,s.certainCount),c+=s.symmetryRatio,u+=s.floodCount,s.isDirectPathEdge&&d++,h.has(s.key)&&g++}const m=n.size,y=t.length>0?c/t.length:0,C=t.length>0?r/t.length:0,v=s.paths.filter(t=>t.hops.some(t=>t.toUpperCase()===o)),b=v.length;let S=0;for(const[,e]of s.canonicalPaths)e.hops.some(t=>t.toUpperCase()===o)&&S++;const M=v.length>0?v.reduce((t,e)=>t+e.hopCount,0)/v.length:0;p.set(e,{neighborCount:m,totalEdgePackets:i,maxEdgeCertainCount:a,avgEdgeCertainCount:C,avgSymmetry:y,forwardingBurden:0,floodForwardRatio:i>0?u/i:0,pathCount:b,canonicalPathCount:S,avgPathLength:M,loopParticipation:t.length>0?g/t.length:0,isInLoop:g>0,edgeDensity:0,trafficRate:f>0?i/f:0,directPathEdgeRatio:t.length>0?d/t.length:0})}const g=[],m=[],y=[],C=[];for(const[,x]of p)x.totalEdgePackets>=e&&(g.push(x.totalEdgePackets),m.push(x.neighborCount),y.push(x.pathCount),C.push(x.trafficRate));g.sort((t,e)=>t-e),m.sort((t,e)=>t-e),y.sort((t,e)=>t-e),C.sort((t,e)=>t-e);const v=(t,e)=>{if(0===t.length)return.5;const o=t.findIndex(t=>t>=e);return-1===o?1:0===o?0:o/t.length},b=m.length>0?Math.max(...m):1;for(const[,e]of p)e.forwardingBurden=v(g,e.totalEdgePackets),e.edgeDensity=b>0?e.neighborCount/b:0;const S=new Map;for(const x of c){const t=p.get(x);if(!t||t.totalEdgePackets0?t.canonicalPathCount/s.canonicalPaths.size:0)+.4*v(y,t.pathCount),f=t.loopParticipation,l=.3*i+.3*c+.2*u+.2*f;let h,d=.4+1.6*l;d=Math.max(.4,Math.min(2,d)),h=l>=.7&&t.neighborCount>=4?"backbone":t.neighborCount>=4?"hub":l>=.3&&t.neighborCount>=2?"relay":"edge";const g=s.paths.filter(t=>t.hops.some(t=>t.toUpperCase()===o)).flatMap(t=>{const e=t.hops.findIndex(t=>t.toUpperCase()===o);return e>=0?[e+1]:[]}),C=g.length>0?g.reduce((t,e)=>t+e,0)/g.length:0;let b=0;g.length>1&&(b=g.reduce((t,e)=>t+Math.pow(e-C,2),0)/g.length);const M=.3*Math.min(t.avgEdgeCertainCount/10,1)+.3*Math.min(n.length/1e3,1)+.4*t.avgSymmetry;let w;w=n.length{const o=S.get(t),n=S.get(e);return o.compositeScore-n.compositeScore});for(let e=0;e=.6?l+=". High bidirectional visibility (+1 slot)":o.observationSymmetry<.3&&(l+=". ⚠️ Low symmetry (possible observer bias)"),"low"===o.dataConfidence&&(l+=". Limited data"),f=c>a(1)?"increase":c[t.key,t]));for(const s of e)o.set(s.key,0);if(0===t.paths.length)return o;for(const r of t.paths)for(let t=0;tt>=o).sort((t,e)=>e[1]-t[1]).slice(0,e).map(([t])=>t)}(Et,3,.3),{nodeMobility:Rt,mobileNodes:Dt}=function(t,e){const o=new Map,n=[];if(0===t.paths.length)return{nodeMobility:o,mobileNodes:n};const s=36e5,i=t.paths.map(t=>t.lastSeen).sort((t,e)=>t-e),r=i[0],a=i[i.length-1],c=Math.ceil((a-r)/s)||1,u=new Map;for(const f of t.paths){const t=Math.floor((f.lastSeen-r)/s);for(const o of f.hops){let n=o;for(const[t]of Object.entries(e))if((t.startsWith("0x")?t.slice(2,4).toUpperCase():t.slice(0,2).toUpperCase())===o.toUpperCase()){n=t;break}let s=u.get(n);s||(s={paths:new Set,firstSeen:f.firstSeen,lastSeen:f.lastSeen,windowPresence:new Set},u.set(n,s)),s.paths.add(f.id),s.firstSeen=Math.min(s.firstSeen,f.firstSeen),s.lastSeen=Math.max(s.lastSeen,f.lastSeen),s.windowPresence.add(t)}}for(const[f,l]of u){const t=l.paths.size,e=l.lastSeen-l.firstSeen,s=e>0?e/36e5:0,i=c>0?l.windowPresence.size/c:1,r=(1-i)*(1-.5*Math.min(t/10,1)),a=r>.3,u={hash:f,pathVolatility:r,pathDiversity:t,avgPathLifespanHours:s,isMobile:a,lastSeen:l.lastSeen,activeWindowRatio:i};o.set(f,u),a&&n.push(f)}return n.sort((t,e)=>{var n,s;const i=(null==(n=o.get(t))?void 0:n.pathVolatility)??0;return((null==(s=o.get(e))?void 0:s.pathVolatility)??0)-i}),{nodeMobility:o,mobileNodes:n}}(kt,m),Lt=function(t,e,o,n=20){const i=[];if(0===t.paths.length)return i;const r=new Map;for(const l of e){const t=s(l.fromHash),e=s(l.toHash);r.set(`${t}>${e}`,l),r.set(`${e}>${t}`,l)}const a=new Set;for(const l of o)a.add(s(l));const c=new Map;for(const s of t.paths){if(0===s.hops.length)continue;const t=s.hops[s.hops.length-1],e=c.get(t)||[];e.push(s.id),c.set(t,e)}const u=[...t.paths].sort((t,e)=>e.observationCount-t.observationCount),f=Date.now();for(const s of u.slice(0,n)){if(s.hops.length<2)continue;let t=0,e=1/0,o=null,n=0,u=!1;for(let i=0;i${f}`,h=r.get(l);if(h){const s=h.packetCount>0?h.certainCount/h.packetCount:0;t+=s,n++,s0?t/n:0,h=e===1/0?0:e,d=(f-s.lastSeen)/36e5,p=Math.exp(-d/24),g=s.observationCount>10&&d<12?.5+.5*(1-d/12):d>48?-.5:0,m=s.hops[s.hops.length-1],y=c.get(m)||[],C=Math.max(0,y.length-1),v="direct"===s.routeType?20:30,b=s.hops.length*v,S=.4*l,M=.3*p,w=(g+1)/2*.15,x=.15*Math.min(C/3,1),P=Math.round(100*(S+M+w+x))/100;i.push({pathKey:s.id,hops:[...s.hops],healthScore:P,weakestLinkKey:o,weakestLinkConfidence:Math.round(100*h)/100,avgEdgeCertainty:Math.round(100*l)/100,observationTrend:Math.round(100*g)/100,alternatePathsCount:C,estimatedLatencyMs:b,observationCount:s.observationCount,routeType:"unknown"===s.routeType?"mixed":s.routeType,lastSeen:s.lastSeen,involvesHub:u})}return i.sort((t,e)=>e.healthScore-t.healthScore),i}(kt,pt,ht,20),At=[];for(const t of W.values()){let e=null,o=0,n=0;for(const[s,i]of t.resolvedHashes){if(s===y)continue;const t=i.count>0?i.confidenceSum/i.count:0,r=i.count*t;r>o&&(o=r,e=s,n=t)}e&&At.push({hash:e,prefix:t.prefix,count:t.count,confidence:n,avgRssi:t.rssiCount>0?t.rssiSum/t.rssiCount:null,avgSnr:t.snrCount>0?t.snrSum/t.snrCount:null,lastSeen:t.lastSeen})}At.sort((t,e)=>e.count-t.count);let Nt=0,jt=0;const Ot=[],$t=[];let Ut=0;for(const[t,e]of G){Nt+=e.confidence;const o=e.candidates.length;if(!e.isUnambiguous){jt++;const n=e.candidates.map(t=>t.hash);$t.push({prefix:t,candidateCount:o,candidateHashes:n}),e.confidence<.5&&Ot.push(t)}for(const e of I.values())if(e.hash.toUpperCase().startsWith(t)||e.hash.slice(2).toUpperCase().startsWith(t)){Ut+=e.resolutionCount;break}}$t.sort((t,e)=>e.candidateCount-t.candidateCount);const Gt=$t.slice(0,5),It={totalPrefixes:G.size,unambiguousPrefixes:G.size-jt,collisionPrefixes:jt,collisionRate:G.size>0?Math.round(jt/G.size*1e3)/10:0,avgConfidence:G.size>0?Math.round(Nt/G.size*1e3)/1e3:0,lowConfidencePrefixes:Ot,highCollisionPrefixes:Gt,totalResolutions:Ut},Ft=function(t,e){const o=e??Date.now(),n=new Map;for(const i of t){const t=i.prefix.toUpperCase(),e=w(i.timestamp,o),s=n.get(t);s?(s.observations.push(i),s.weightedCount+=e):n.set(t,{observations:[i],weightedCount:e})}const s=[];for(const[i,r]of n){const t=r.observations.length>=10,e=r.weightedCount>=5;if(!t&&!e)continue;const n=x(i,r.observations,o);n&&s.push(n)}return s.sort((t,e)=>e.confidence-t.confidence),s}(X,1e3*K),Tt=Y-Q;return{edges:pt,validatedEdges:St,weakEdges:Mt,certainEdges:St,uncertainEdges:[],edgeMap:wt,maxPacketCount:yt,maxCertainCount:Ct,neighborAffinity:T,fullAffinity:I,localPrefix:F,centrality:at,hubNodes:ht,gatewayNodes:dt,loops:xt,loopEdgeKeys:Pt,txDelayRecommendations:Ht,pathRegistry:kt,edgeBetweenness:Et,backboneEdges:_t,nodeMobility:Rt,mobileNodes:Dt,pathHealth:Lt,lastHopNeighbors:At,disambiguationStats:It,discoveredNodes:Ft,viterbiStats:{totalPaths:Y,pathsWithGhosts:Q,observationOverrideCount:tt,avgPathConfidence:Tt>0?et/Tt:0,avgPathCost:0,tracePacketsProcessed:it,pathPacketsProcessed:rt,distantEdgesDiscovered:st,duplicateGroupsFound:j,duplicatePathsUnique:O,echolocationEdgesInferred:$}}}var D,L,A={exports:{}},N={};L||(L=1,A.exports=function(){if(D)return N;D=1;var t=Symbol.for("react.element"),e=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),i=Symbol.for("react.provider"),r=Symbol.for("react.context"),a=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),l=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},d=Object.assign,p={};function g(t,e,o){this.props=t,this.context=e,this.refs=p,this.updater=o||h}function m(){}function y(t,e,o){this.props=t,this.context=e,this.refs=p,this.updater=o||h}g.prototype.isReactComponent={},g.prototype.setState=function(t,e){if("object"!=typeof t&&"function"!=typeof t&&null!=t)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")},g.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")},m.prototype=g.prototype;var C=y.prototype=new m;C.constructor=y,d(C,g.prototype),C.isPureReactComponent=!0;var v=Array.isArray,b=Object.prototype.hasOwnProperty,S={current:null},M={key:!0,ref:!0,__self:!0,__source:!0};function w(e,o,n){var s,i={},r=null,a=null;if(null!=o)for(s in void 0!==o.ref&&(a=o.ref),void 0!==o.key&&(r=""+o.key),o)b.call(o,s)&&!M.hasOwnProperty(s)&&(i[s]=o[s]);var c=arguments.length-2;if(1===c)i.children=n;else if(1{const{type:e,payload:o}=t.data;if("compute"!==e)return void self.postMessage({type:"error",error:`Unknown message type: ${e}`});const n=performance.now();try{const{packets:t,neighbors:e,localHash:i,localLat:r,localLon:a,airtimeMs:c,zeroHopNeighbors:u}=o,f=R(t,e,i,.5,r,a,0,u),l={type:"result",payload:{edges:f.edges,validatedEdges:f.validatedEdges,weakEdges:f.weakEdges,certainEdges:f.certainEdges,uncertainEdges:f.uncertainEdges,maxPacketCount:f.maxPacketCount,maxCertainCount:f.maxCertainCount,localPrefix:f.localPrefix,hubNodes:f.hubNodes,gatewayNodes:f.gatewayNodes,edgeMapEntries:Array.from(f.edgeMap.entries()),neighborAffinityEntries:Array.from(f.neighborAffinity.entries()),fullAffinityEntries:Array.from(f.fullAffinity.entries()),centralityEntries:Array.from(f.centrality.entries()),loops:f.loops,loopEdgeKeyEntries:Array.from(f.loopEdgeKeys),txDelayRecommendationEntries:Array.from(f.txDelayRecommendations.entries()),pathRegistry:(s=f.pathRegistry,{paths:s.paths,byEndpointsEntries:Array.from(s.byEndpoints.entries()),canonicalPathsEntries:Array.from(s.canonicalPaths.entries()),totalObservations:s.totalObservations,uniquePathCount:s.uniquePathCount}),edgeBetweennessEntries:Array.from(f.edgeBetweenness.entries()),backboneEdges:f.backboneEdges,nodeMobilityEntries:Array.from(f.nodeMobility.entries()),mobileNodes:f.mobileNodes,pathHealth:f.pathHealth,lastHopNeighbors:f.lastHopNeighbors,disambiguationStats:f.disambiguationStats,discoveredNodes:f.discoveredNodes,viterbiStats:f.viterbiStats},computeTimeMs:performance.now()-n};self.postMessage(l)}catch(i){const t={type:"error",error:i instanceof Error?i.message:"Unknown error in topology worker"};self.postMessage(t)}var s}}(); diff --git a/frontend/dist/assets/usePolling-BvmU-1bN.js b/frontend/dist/assets/usePolling-BsbqQ0mQ.js similarity index 75% rename from frontend/dist/assets/usePolling-BvmU-1bN.js rename to frontend/dist/assets/usePolling-BsbqQ0mQ.js index b88debcb..04f154e8 100644 --- a/frontend/dist/assets/usePolling-BvmU-1bN.js +++ b/frontend/dist/assets/usePolling-BsbqQ0mQ.js @@ -1 +1 @@ -import{r}from"./vendor-react-CUlQ5-Td.js";function e(e,t,n=!0,c=!1){const u=r.useRef(e);r.useEffect(()=>{u.current=e},[e]),r.useEffect(()=>{if(!n)return;c||u.current();const r=setInterval(()=>{u.current()},t);return()=>clearInterval(r)},[t,n,c])}export{e as u}; +import{r}from"./vendor-react-CWPBVwgk.js";function e(e,t,n=!0,c=!1){const u=r.useRef(e);r.useEffect(()=>{u.current=e},[e]),r.useEffect(()=>{if(!n)return;c||u.current();const r=setInterval(()=>{u.current()},t);return()=>clearInterval(r)},[t,n,c])}export{e as u}; diff --git a/frontend/dist/assets/useThemeColors-8RSyMp_o.js b/frontend/dist/assets/useThemeColors-f-o_FvwS.js similarity index 99% rename from frontend/dist/assets/useThemeColors-8RSyMp_o.js rename to frontend/dist/assets/useThemeColors-f-o_FvwS.js index 0ea19c0c..14315924 100644 --- a/frontend/dist/assets/useThemeColors-8RSyMp_o.js +++ b/frontend/dist/assets/useThemeColors-f-o_FvwS.js @@ -1 +1 @@ -import{r as t}from"./vendor-react-CUlQ5-Td.js";function r(t){if(!t)return null;const r=t.match(/color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(r)return{r:Math.round(255*Math.min(1,Math.max(0,parseFloat(r[1])))),g:Math.round(255*Math.min(1,Math.max(0,parseFloat(r[2])))),b:Math.round(255*Math.min(1,Math.max(0,parseFloat(r[3]))))};if(t.startsWith("#")){const r=t.replace("#","");if(3===r.length)return{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16)};if(r.length>=6)return{r:parseInt(r.slice(0,2),16),g:parseInt(r.slice(2,4),16),b:parseInt(r.slice(4,6),16)}}const e=t.match(/rgba?\(([\d.]+),?\s*([\d.]+),?\s*([\d.]+)/);return e?{r:Math.round(parseFloat(e[1])),g:Math.round(parseFloat(e[2])),b:Math.round(parseFloat(e[3]))}:null}function e(t){return"undefined"==typeof window?"":getComputedStyle(document.documentElement).getPropertyValue(t).trim()}function o(t){return function(t){if(!t)return"";if(t.startsWith("#"))return t;const r=t.match(/color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(r){const t=Math.round(255*Math.min(1,Math.max(0,parseFloat(r[1])))),e=Math.round(255*Math.min(1,Math.max(0,parseFloat(r[2])))),o=Math.round(255*Math.min(1,Math.max(0,parseFloat(r[3]))));return`#${t.toString(16).padStart(2,"0")}${e.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`}const e=t.match(/rgba?\(([\d.]+),?\s*([\d.]+),?\s*([\d.]+)/);if(e){const t=Math.round(parseFloat(e[1])),r=Math.round(parseFloat(e[2])),o=Math.round(parseFloat(e[3]));return`#${t.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`}return t}(e(t))}const a={chart1:"#719CDF",chart2:"#0074BE",chart3:"#6FBCBD",chart4:"#DFBC72",chart5:"#719872",chart6:"#E12672",chart7:"#E17899",chart8:"#999ABD"},n={received:"#719872",forwarded:"#0074BE",transmitted:"#DFBC72",dropped:"#E12672",neutral:"#BFBFBF"},c={excellent:"#719872",good:"#6FBCBD",fair:"#DFBC72",poor:"#BE7572",critical:"#E12672",unknown:"#616161"},i={primary:"#E4E4E4",secondary:"#BFBFBF",muted:"#727272"},s={nodeFill:"#F5F5F0",nodeStroke:"#4A5568",hubColor:"#8B7BAD",localColor:"#FBBF24",neighborColor:"#FBBF24",mobileColor:"#F97316",roomColor:"#E17899",ghostColor:"#9F7AEA"};function l(){const[r,o]=t.useState(a);return t.useEffect(()=>{const t=()=>{const t={chart1:e("--chart-1")||a.chart1,chart2:e("--chart-2")||a.chart2,chart3:e("--chart-3")||a.chart3,chart4:e("--chart-4")||a.chart4,chart5:e("--chart-5")||a.chart5,chart6:e("--chart-6")||a.chart6,chart7:e("--chart-7")||a.chart7,chart8:e("--chart-8")||a.chart8};o(t)};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function u(){const[r,o]=t.useState(n);return t.useEffect(()=>{const t=()=>{o({received:e("--metric-received")||n.received,forwarded:e("--metric-forwarded")||n.forwarded,transmitted:e("--metric-transmitted")||n.transmitted,dropped:e("--metric-dropped")||n.dropped,neutral:e("--metric-neutral")||n.neutral})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function d(){const[r,o]=t.useState(i);return t.useEffect(()=>{const t=()=>{o({primary:e("--text-primary")||i.primary,secondary:e("--text-secondary")||i.secondary,muted:e("--text-muted")||i.muted})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function h(){const[r,o]=t.useState(c);return t.useEffect(()=>{const t=()=>{o({excellent:e("--signal-excellent")||c.excellent,good:e("--signal-good")||c.good,fair:e("--signal-fair")||c.fair,poor:e("--signal-poor")||c.poor,critical:e("--signal-critical")||c.critical,unknown:e("--signal-unknown")||c.unknown})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function m(){const t=l();return[t.chart1,t.chart2,t.chart3,t.chart4,t.chart5,t.chart6,t.chart7,t.chart8]}function p(){const[r,o]=t.useState(s);return t.useEffect(()=>{const t=()=>{o({nodeFill:e("--map-node-fill")||s.nodeFill,nodeStroke:e("--map-node-stroke")||s.nodeStroke,hubColor:e("--map-hub-color")||s.hubColor,localColor:e("--map-local-color")||s.localColor,neighborColor:e("--map-neighbor-color")||s.neighborColor,mobileColor:e("--map-mobile-color")||s.mobileColor,roomColor:e("--map-room-color")||s.roomColor,ghostColor:e("--map-ghost-color")||s.ghostColor})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function f(){return"undefined"==typeof window?s:{nodeFill:o("--map-node-fill")||s.nodeFill,nodeStroke:o("--map-node-stroke")||s.nodeStroke,hubColor:o("--map-hub-color")||s.hubColor,localColor:o("--map-local-color")||s.localColor,neighborColor:o("--map-neighbor-color")||s.neighborColor,mobileColor:o("--map-mobile-color")||s.mobileColor,roomColor:o("--map-room-color")||s.roomColor,ghostColor:o("--map-ghost-color")||s.ghostColor}}const g={rest:"#4B4B4B",restBright:"#616161",restDim:"#3F3F3F",hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:"#8A8A8A",hoverNeighbor:"#FBBF24",highlight:"#FFD700"};function b(){return"undefined"==typeof window?g:{rest:o("--map-edge-rest")||g.rest,restBright:o("--map-edge-rest-bright")||g.restBright,restDim:o("--map-edge-rest-dim")||g.restDim,hoverDirect:o("--map-edge-hover-direct")||g.hoverDirect,hoverLoop:o("--map-edge-hover-loop")||g.hoverLoop,hoverStandard:o("--map-edge-hover-standard")||g.hoverStandard,hoverNeighbor:o("--map-edge-hover-neighbor")||g.hoverNeighbor,highlight:o("--map-edge-highlight")||g.highlight}}const F={grid:"rgba(255, 255, 255, 0.06)",axisTick:"rgba(255, 255, 255, 0.4)",cursor:"rgba(255, 255, 255, 0.2)"};function C(){const[r,o]=t.useState(F);return t.useEffect(()=>{const t=()=>{o("undefined"==typeof window?F:{grid:e("--chart-grid")||F.grid,axisTick:e("--chart-axis-tick")||F.axisTick,cursor:e("--chart-cursor")||F.cursor})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function M(t,r){return e(`--palette-${t}-${r}`)||""}function v(){const t=[];for(let r=0;r<24;r++){const e=r/23,o=1-e,a=M("aqua",[900,800,700,600,500,400,300,200,100,50][Math.min(8,Math.floor(9*o))]),n=parseInt(a.slice(1,3),16)||0,c=parseInt(a.slice(3,5),16)||0,i=parseInt(a.slice(5,7),16)||0,s=Math.round(80+130*e);t.push([n,c,i,s])}return t}function B(){const t=e("--signal-excellent")||c.excellent,r=e("--signal-good")||c.good,o=e("--signal-fair")||c.fair,a=e("--signal-poor")||c.poor,n=e("--signal-critical")||c.critical,i=[];for(let e=0;e<24;e++){let c;c=e<5?t:e<10?r:e<15?o:e<20?a:n,i.push(c)}return i}function S(){const[r,e]=t.useState(()=>B());return t.useEffect(()=>{const t=()=>{e(B())};let r=requestAnimationFrame(()=>{r=requestAnimationFrame(t)});const o=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){requestAnimationFrame(()=>{requestAnimationFrame(t)});break}});return o.observe(document.documentElement,{attributes:!0}),()=>{cancelAnimationFrame(r),o.disconnect()}},[]),r}function E(t){const r=(Math.max(-12,Math.min(12,t))- -12)/24;return Math.round(23*(1-r))}export{C as a,m as b,h as c,d,S as e,l as f,f as g,b as h,p as i,v as j,r as p,E as s,u}; +import{r as t}from"./vendor-react-CWPBVwgk.js";function r(t){if(!t)return null;const r=t.match(/color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(r)return{r:Math.round(255*Math.min(1,Math.max(0,parseFloat(r[1])))),g:Math.round(255*Math.min(1,Math.max(0,parseFloat(r[2])))),b:Math.round(255*Math.min(1,Math.max(0,parseFloat(r[3]))))};if(t.startsWith("#")){const r=t.replace("#","");if(3===r.length)return{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16)};if(r.length>=6)return{r:parseInt(r.slice(0,2),16),g:parseInt(r.slice(2,4),16),b:parseInt(r.slice(4,6),16)}}const e=t.match(/rgba?\(([\d.]+),?\s*([\d.]+),?\s*([\d.]+)/);return e?{r:Math.round(parseFloat(e[1])),g:Math.round(parseFloat(e[2])),b:Math.round(parseFloat(e[3]))}:null}function e(t){return"undefined"==typeof window?"":getComputedStyle(document.documentElement).getPropertyValue(t).trim()}function o(t){return function(t){if(!t)return"";if(t.startsWith("#"))return t;const r=t.match(/color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(r){const t=Math.round(255*Math.min(1,Math.max(0,parseFloat(r[1])))),e=Math.round(255*Math.min(1,Math.max(0,parseFloat(r[2])))),o=Math.round(255*Math.min(1,Math.max(0,parseFloat(r[3]))));return`#${t.toString(16).padStart(2,"0")}${e.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`}const e=t.match(/rgba?\(([\d.]+),?\s*([\d.]+),?\s*([\d.]+)/);if(e){const t=Math.round(parseFloat(e[1])),r=Math.round(parseFloat(e[2])),o=Math.round(parseFloat(e[3]));return`#${t.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`}return t}(e(t))}const a={chart1:"#719CDF",chart2:"#0074BE",chart3:"#6FBCBD",chart4:"#DFBC72",chart5:"#719872",chart6:"#E12672",chart7:"#E17899",chart8:"#999ABD"},n={received:"#719872",forwarded:"#0074BE",transmitted:"#DFBC72",dropped:"#E12672",neutral:"#BFBFBF"},c={excellent:"#719872",good:"#6FBCBD",fair:"#DFBC72",poor:"#BE7572",critical:"#E12672",unknown:"#616161"},i={primary:"#E4E4E4",secondary:"#BFBFBF",muted:"#727272"},s={nodeFill:"#F5F5F0",nodeStroke:"#4A5568",hubColor:"#8B7BAD",localColor:"#FBBF24",neighborColor:"#FBBF24",mobileColor:"#F97316",roomColor:"#E17899",ghostColor:"#9F7AEA"};function l(){const[r,o]=t.useState(a);return t.useEffect(()=>{const t=()=>{const t={chart1:e("--chart-1")||a.chart1,chart2:e("--chart-2")||a.chart2,chart3:e("--chart-3")||a.chart3,chart4:e("--chart-4")||a.chart4,chart5:e("--chart-5")||a.chart5,chart6:e("--chart-6")||a.chart6,chart7:e("--chart-7")||a.chart7,chart8:e("--chart-8")||a.chart8};o(t)};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function u(){const[r,o]=t.useState(n);return t.useEffect(()=>{const t=()=>{o({received:e("--metric-received")||n.received,forwarded:e("--metric-forwarded")||n.forwarded,transmitted:e("--metric-transmitted")||n.transmitted,dropped:e("--metric-dropped")||n.dropped,neutral:e("--metric-neutral")||n.neutral})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function d(){const[r,o]=t.useState(i);return t.useEffect(()=>{const t=()=>{o({primary:e("--text-primary")||i.primary,secondary:e("--text-secondary")||i.secondary,muted:e("--text-muted")||i.muted})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function h(){const[r,o]=t.useState(c);return t.useEffect(()=>{const t=()=>{o({excellent:e("--signal-excellent")||c.excellent,good:e("--signal-good")||c.good,fair:e("--signal-fair")||c.fair,poor:e("--signal-poor")||c.poor,critical:e("--signal-critical")||c.critical,unknown:e("--signal-unknown")||c.unknown})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function m(){const t=l();return[t.chart1,t.chart2,t.chart3,t.chart4,t.chart5,t.chart6,t.chart7,t.chart8]}function p(){const[r,o]=t.useState(s);return t.useEffect(()=>{const t=()=>{o({nodeFill:e("--map-node-fill")||s.nodeFill,nodeStroke:e("--map-node-stroke")||s.nodeStroke,hubColor:e("--map-hub-color")||s.hubColor,localColor:e("--map-local-color")||s.localColor,neighborColor:e("--map-neighbor-color")||s.neighborColor,mobileColor:e("--map-mobile-color")||s.mobileColor,roomColor:e("--map-room-color")||s.roomColor,ghostColor:e("--map-ghost-color")||s.ghostColor})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function f(){return"undefined"==typeof window?s:{nodeFill:o("--map-node-fill")||s.nodeFill,nodeStroke:o("--map-node-stroke")||s.nodeStroke,hubColor:o("--map-hub-color")||s.hubColor,localColor:o("--map-local-color")||s.localColor,neighborColor:o("--map-neighbor-color")||s.neighborColor,mobileColor:o("--map-mobile-color")||s.mobileColor,roomColor:o("--map-room-color")||s.roomColor,ghostColor:o("--map-ghost-color")||s.ghostColor}}const g={rest:"#4B4B4B",restBright:"#616161",restDim:"#3F3F3F",hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:"#8A8A8A",hoverNeighbor:"#FBBF24",highlight:"#FFD700"};function b(){return"undefined"==typeof window?g:{rest:o("--map-edge-rest")||g.rest,restBright:o("--map-edge-rest-bright")||g.restBright,restDim:o("--map-edge-rest-dim")||g.restDim,hoverDirect:o("--map-edge-hover-direct")||g.hoverDirect,hoverLoop:o("--map-edge-hover-loop")||g.hoverLoop,hoverStandard:o("--map-edge-hover-standard")||g.hoverStandard,hoverNeighbor:o("--map-edge-hover-neighbor")||g.hoverNeighbor,highlight:o("--map-edge-highlight")||g.highlight}}const F={grid:"rgba(255, 255, 255, 0.06)",axisTick:"rgba(255, 255, 255, 0.4)",cursor:"rgba(255, 255, 255, 0.2)"};function C(){const[r,o]=t.useState(F);return t.useEffect(()=>{const t=()=>{o("undefined"==typeof window?F:{grid:e("--chart-grid")||F.grid,axisTick:e("--chart-axis-tick")||F.axisTick,cursor:e("--chart-cursor")||F.cursor})};t();const r=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){setTimeout(t,50);break}});return r.observe(document.documentElement,{attributes:!0}),()=>{r.disconnect()}},[]),r}function M(t,r){return e(`--palette-${t}-${r}`)||""}function v(){const t=[];for(let r=0;r<24;r++){const e=r/23,o=1-e,a=M("aqua",[900,800,700,600,500,400,300,200,100,50][Math.min(8,Math.floor(9*o))]),n=parseInt(a.slice(1,3),16)||0,c=parseInt(a.slice(3,5),16)||0,i=parseInt(a.slice(5,7),16)||0,s=Math.round(80+130*e);t.push([n,c,i,s])}return t}function B(){const t=e("--signal-excellent")||c.excellent,r=e("--signal-good")||c.good,o=e("--signal-fair")||c.fair,a=e("--signal-poor")||c.poor,n=e("--signal-critical")||c.critical,i=[];for(let e=0;e<24;e++){let c;c=e<5?t:e<10?r:e<15?o:e<20?a:n,i.push(c)}return i}function S(){const[r,e]=t.useState(()=>B());return t.useEffect(()=>{const t=()=>{e(B())};let r=requestAnimationFrame(()=>{r=requestAnimationFrame(t)});const o=new MutationObserver(r=>{for(const e of r)if("data-theme"===e.attributeName){requestAnimationFrame(()=>{requestAnimationFrame(t)});break}});return o.observe(document.documentElement,{attributes:!0}),()=>{cancelAnimationFrame(r),o.disconnect()}},[]),r}function E(t){const r=(Math.max(-12,Math.min(12,t))- -12)/24;return Math.round(23*(1-r))}export{C as a,m as b,h as c,d,S as e,l as f,f as g,b as h,p as i,v as j,r as p,E as s,u}; diff --git a/frontend/dist/assets/vendor-react-CUlQ5-Td.js b/frontend/dist/assets/vendor-react-CWPBVwgk.js similarity index 60% rename from frontend/dist/assets/vendor-react-CUlQ5-Td.js rename to frontend/dist/assets/vendor-react-CWPBVwgk.js index 07264391..31726382 100644 --- a/frontend/dist/assets/vendor-react-CUlQ5-Td.js +++ b/frontend/dist/assets/vendor-react-CWPBVwgk.js @@ -1,2 +1,2 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/maplibre-gl-B1CfjdFi.css"])))=>i.map(i=>d[i]); -import{c as e}from"./vendor-core-XI_xDZ-M.js";import{g as t,_ as n}from"./deckgl-MTXp-Y3t.js";function r(e,t){for(var n=0;nr[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var a,o,l,i,u={exports:{}},s={},c={exports:{}},d={};function f(){if(a)return d;a=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),i=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),s=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),p=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,y={};function g(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var k=b.prototype=new v;k.constructor=b,m(k,g.prototype),k.isPureReactComponent=!0;var w=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function C(t,n,r){var a,o={},l=null,i=null;if(null!=n)for(a in void 0!==n.ref&&(i=n.ref),void 0!==n.key&&(l=""+n.key),n)x.call(n,a)&&!E.hasOwnProperty(a)&&(o[a]=n[a]);var u=arguments.length-2;if(1===u)o.children=r;else if(1>>1,o=e[r];if(!(0>>1;ra(u,n))sa(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else{if(!(sa(c,n)))break e;e[r]=c,e[s]=n,r=s}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var o=performance;e.unstable_now=function(){return o.now()}}else{var l=Date,i=l.now();e.unstable_now=function(){return l.now()-i}}var u=[],s=[],c=1,d=null,f=3,p=!1,h=!1,m=!1,y="function"==typeof setTimeout?setTimeout:null,g="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function b(e){for(var a=n(s);null!==a;){if(null===a.callback)r(s);else{if(!(a.startTime<=e))break;r(s),a.sortIndex=a.expirationTime,t(u,a)}a=n(s)}}function k(e){if(m=!1,b(e),!h)if(null!==n(u))h=!0,L(w);else{var t=n(s);null!==t&&F(k,t.startTime-e)}}function w(t,a){h=!1,m&&(m=!1,g(C),C=-1),p=!0;var o=f;try{for(b(a),d=n(u);null!==d&&(!(d.expirationTime>a)||t&&!P());){var l=d.callback;if("function"==typeof l){d.callback=null,f=d.priorityLevel;var i=l(d.expirationTime<=a);a=e.unstable_now(),"function"==typeof i?d.callback=i:d===n(u)&&r(u),b(a)}else r(u);d=n(u)}if(null!==d)var c=!0;else{var y=n(s);null!==y&&F(k,y.startTime-a),c=!1}return c}finally{d=null,f=o,p=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var x,S=!1,E=null,C=-1,M=5,_=-1;function P(){return!(e.unstable_now()-_e||125l?(r.sortIndex=o,t(s,r),null===n(u)&&r===n(s)&&(m?(g(C),C=-1):m=!0,F(k,o-l))):(r.sortIndex=i,t(u,r),h||p||(h=!0,L(w))),r},e.unstable_shouldYield=P,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}}(_)),_)),M.exports);function n(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n