diff --git a/frontend/dist/VERSION b/frontend/dist/VERSION index 1a02c2df..d69a1f68 100644 --- a/frontend/dist/VERSION +++ b/frontend/dist/VERSION @@ -1 +1 @@ -0.9.142 +0.9.143 diff --git a/frontend/dist/assets/CollisionExplorerModal-2LJtIYk6.js b/frontend/dist/assets/CollisionExplorerModal-DEtEH0fD.js similarity index 97% rename from frontend/dist/assets/CollisionExplorerModal-2LJtIYk6.js rename to frontend/dist/assets/CollisionExplorerModal-DEtEH0fD.js index 2156eeb6..746d91b4 100644 --- a/frontend/dist/assets/CollisionExplorerModal-2LJtIYk6.js +++ b/frontend/dist/assets/CollisionExplorerModal-DEtEH0fD.js @@ -1 +1 @@ -import{r as e,b as t,j as o,a7 as s,X as n,a5 as r,ao as a,ap as l,aq as i,ar as c,aa as d,$ as u}from"./vendor-react-ClShp8p7.js";import{L as m}from"./leaflet-D_ckmI2R.js";import{c as h}from"./recharts-BjCld2b0.js";import{d as x,w as p,f}from"./index-DY0XR9s0.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,a7 as s,X as n,a5 as r,ao as a,ap as l,aq as i,ar as c,aa as d,$ as u}from"./vendor-react-O8XH9yVn.js";import{L as m}from"./leaflet-D_ckmI2R.js";import{c as h}from"./recharts-BU7auunF.js";import{d as x,w as p,f}from"./index-Dp0UlTio.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-DZ4tFrFG.js b/frontend/dist/assets/Configuration-Cq1_waCf.js similarity index 99% rename from frontend/dist/assets/Configuration-DZ4tFrFG.js rename to frontend/dist/assets/Configuration-Cq1_waCf.js index f50a76b4..78036c2b 100644 --- a/frontend/dist/assets/Configuration-DZ4tFrFG.js +++ b/frontend/dist/assets/Configuration-Cq1_waCf.js @@ -1 +1 @@ -import{r as e,j as t,f as s,i as a,X as r,at as n,aa as l,aX as c,aY as i,k as d,p as o,aZ as u,af as m,a_ as x,a$ as p,b0 as h,aP as b,av as y,b1 as g,aj as f,b2 as j,a7 as v,a2 as N,$ as w,a9 as k,b3 as C}from"./vendor-react-ClShp8p7.js";import{c as _}from"./recharts-BjCld2b0.js";import{ad as S,ae as T,af as F,I as E,ag as L,ah as P,ai as R,aj as I,ac as A,ak as M,al as D,am as z,an as K,ao as O,ap as q,aq as H,ar as $,as as Y}from"./index-DY0XR9s0.js";import{H as V}from"./HashBadge-BiZRDKRx.js";import{C as X}from"./ConfirmModal-C9RGn9JH.js";import{P as B,b as U,a as G,c as W}from"./PageLayout-CQDLcONp.js";import{R as Z,C as J}from"./Grid-CpI-_Yqf.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";const Q=e.memo(function({showLogoOnly:s=!1,showThumbnailsOnly:a=!1}){const{theme:r,setThemePreset:n,setBrightness:l}=S(),{backgroundImage:c,brightness:i}=r,[d,o]=e.useState(!1),[u,m]=e.useState(!1),x=e.useRef(null),p=e.useRef(null),h=T.find(e=>e.backgroundImage===c)??T[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=T.find(t=>t.id===e);t&&F(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:T.map(e=>{const s=b===e.id,a=s&&(d||u);return t.jsxs("div",{ref:s?x:void 0,title:e.displayName,className:_("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:_("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"}],ae="radioConfig",re="repeaterSettings",ne="operatingMode";function le({node:e,level:s,expandedKeys:a,selectedKeyId:r,globalFloodPolicy:n,onSelect:l,onToggle:c}){const i=a.has(e.id),d=r===e.id,o=e.children&&e.children.length>0,u="allow"===n;return t.jsxs("div",{children:[t.jsxs("div",{className:_("flex items-center gap-2 h-[36px] px-3 rounded-full cursor-pointer transition-colors",d?"bg-accent-primary/15":"hover:bg-white/[0.02]",u&&"opacity-50 cursor-not-allowed"),style:{marginLeft:16*s+"px"},onClick:()=>!u&&l(e.id),children:[o?t.jsx("button",{onClick:t=>{t.stopPropagation(),c(e.id)},className:"p-1 hover:bg-white/[0.05] rounded-full transition-colors",children:t.jsx(k,{className:_("w-3.5 h-3.5 text-text-muted transition-transform",i&&"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:_("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"})]}),o&&i&&t.jsx("div",{children:e.children.map(e=>t.jsx(le,{node:e,level:s+1,expandedKeys:a,selectedKeyId:r,globalFloodPolicy:n,onSelect:l,onToggle:c},e.id))})]})}function ce(){var k,C,S,T,F,ce;const{stats:ie,setMode:de,clearModeMutation:oe,setDutyCycleConfig:ue,clearDutyCycleMutation:me,fetchStats:xe,startMutation:pe,clearMutation:he}=E(),be=null==(k=null==ie?void 0:ie.config)?void 0:k.radio,ye=null==(C=null==ie?void 0:ie.config)?void 0:C.repeater,ge=null==(S=null==ie?void 0:ie.config)?void 0:S.duty_cycle,fe=(null==ie?void 0:ie.node_name)||(null==(T=null==ie?void 0:ie.config)?void 0:T.node_name)||"Unknown Node",je=(null==ye?void 0:ye.mode)??"forward",ve=(null==ge?void 0:ge.enforcement_enabled)??!1,Ne=null==(F=null==ie?void 0:ie.config)?void 0:F.delays,[we,ke]=e.useState(!1),[Ce,_e]=e.useState(""),[Se,Te]=e.useState(62.5),[Fe,Ee]=e.useState(7),[Le,Pe]=e.useState(5),[Re,Ie]=e.useState(""),[Ae,Me]=e.useState("idle"),[De,ze]=e.useState(null),Ke=e.useRef(null),Oe=e.useRef(null),[qe,He]=e.useState(!1),[$e,Ye]=e.useState(""),[Ve,Xe]=e.useState(""),[Be,Ue]=e.useState(""),[Ge,We]=e.useState("idle"),Ze=e.useRef(null),Je=e.useRef(null),[Qe,et]=e.useState(!1),[tt,st]=e.useState(""),[at,rt]=e.useState(""),[nt,lt]=e.useState(""),[ct,it]=e.useState(""),[dt,ot]=e.useState("idle"),[ut,mt]=e.useState(null),xt=e.useRef(null),pt=e.useRef(null),[ht,bt]=e.useState("idle"),[yt,gt]=e.useState("idle"),[ft,jt]=e.useState(null),[vt,Nt]=e.useState(null),wt=e.useRef(!0),kt=e.useRef(null),Ct=e.useRef(null),_t=e.useRef(null),St=e.useRef(null),Tt=e.useRef(!1),Ft=e.useRef(!1);e.useEffect(()=>(wt.current=!0,()=>{wt.current=!1,kt.current&&clearTimeout(kt.current),Ct.current&&clearTimeout(Ct.current),_t.current&&clearTimeout(_t.current),St.current&&clearTimeout(St.current),At.current&&clearTimeout(At.current),Mt.current&&clearTimeout(Mt.current),Oe.current&&clearTimeout(Oe.current),Ze.current&&clearTimeout(Ze.current),pt.current&&clearTimeout(pt.current)}),[]),e.useEffect(()=>{const e=e=>{if(we||Qe||qe)return e.preventDefault(),e.returnValue="You have unsaved changes. Are you sure you want to leave?",e.returnValue};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[we,Qe,qe]);const Et=null==(ce=null==ie?void 0:ie.config)?void 0:ce.web,[Lt,Pt]=e.useState("idle"),[Rt,It]=e.useState(null),At=e.useRef(null),Mt=e.useRef(null),Dt=e.useRef(!1),[zt,Kt]=e.useState([]),[Ot,qt]=e.useState(!1),[Ht,$t]=e.useState(null),[Yt,Vt]=e.useState(!1),[Xt,Bt]=e.useState(""),[Ut,Gt]=e.useState(null),[Wt,Zt]=e.useState(!1),[Jt,Qt]=e.useState(null),[es,ts]=e.useState(!1),[ss,as]=e.useState(!1),[rs,ns]=e.useState(!1),[ls,cs]=e.useState([]),[is,ds]=e.useState(!1),[os,us]=e.useState(null),[ms,xs]=e.useState("deny"),[ps,hs]=e.useState(!1),[bs,ys]=e.useState(null),[gs,fs]=e.useState(new Set),[js,vs]=e.useState(!1),[Ns,ws]=e.useState(!1),[ks,Cs]=e.useState(!1),[_s,Ss]=e.useState(null),[Ts,Fs]=e.useState(null),[Es,Ls]=e.useState(""),[Ps,Rs]=e.useState("deny"),[Is,As]=e.useState(!1),[Ms,Ds]=e.useState(!0),[zs,Ks]=e.useState(!1),[Os,qs]=e.useState(!0),[Hs,$s]=e.useState("idle"),[Ys,Vs]=e.useState(!1),[Xs,Bs]=e.useState(!1),Us=e.useRef(!1);e.useEffect(()=>{const e=we&&!Us.current;Us.current=we,be&&e&&(_e((be.frequency/1e6).toFixed(3)),Te(be.bandwidth/1e3),Ee(be.spreading_factor),Pe(be.coding_rate),Ie(String(be.tx_power)))},[be,we]);const Gs=e.useMemo(()=>{if(!be||!we)return!1;const e=be.frequency/1e6,t=be.bandwidth/1e3,s=parseFloat(Ce)||0;return Math.abs(s-e)>1e-4||Se!==t||Fe!==be.spreading_factor||Le!==be.coding_rate||parseInt(Re)!==be.tx_power},[be,we,Ce,Se,Fe,Le,Re]),Ws=e.useCallback(()=>{ke(!1),ze(null),be&&(_e((be.frequency/1e6).toFixed(3)),Te(be.bandwidth/1e3),Ee(be.spreading_factor),Pe(be.coding_rate),Ie(String(be.tx_power)))},[be]);e.useEffect(()=>{if(!we)return;const e=e=>{"loading"!==Ae&&Ke.current&&!Ke.current.contains(e.target)&&Ws()};return document.addEventListener("mouseup",e),()=>{document.removeEventListener("mouseup",e)}},[we,Ws,Ae]);const Zs=e.useCallback(()=>{const e=null==Ne?void 0:Ne.tx_delay_factor;return e&&"object"==typeof e&&"parsedValue"in e?e.parsedValue??1:"number"==typeof e?e:1},[Ne]),Js=e.useCallback(()=>{const e=null==Ne?void 0:Ne.direct_tx_delay_factor;return"number"==typeof e?e:.5},[Ne]),Qs=e.useCallback(()=>{const e=null==ge?void 0:ge.max_airtime_percent;return"number"==typeof e?e:e&&"object"==typeof e&&"parsedValue"in e?e.parsedValue??6:6},[ge]),ea=e.useCallback(()=>{Ye(Zs().toFixed(2)),Xe(Js().toFixed(2)),Ue(Qs().toFixed(1)),He(!0)},[Zs,Js,Qs]),ta=e.useCallback(()=>{He(!1)},[]);e.useEffect(()=>{if(!qe)return;const e=e=>{"loading"!==Ge&&Je.current&&!Je.current.contains(e.target)&&ta()};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[qe,ta,Ge]);const sa=e.useCallback(()=>{var e,t,s;st(fe),rt((null==(e=null==ye?void 0:ye.latitude)?void 0:e.toString())||"0"),lt((null==(t=null==ye?void 0:ye.longitude)?void 0:t.toString())||"0"),it((null==(s=null==ye?void 0:ye.send_advert_interval_hours)?void 0:s.toString())||"0"),mt(null),et(!0)},[fe,ye]),aa=e.useCallback(()=>{et(!1),mt(null)},[]);e.useEffect(()=>{if(!Qe)return;const e=e=>{"loading"!==dt&&xt.current&&!xt.current.contains(e.target)&&aa()};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[Qe,aa,dt]);const ra=async()=>{var e;if("loading"===Lt)return;const t=(null==Et?void 0:Et.cors_enabled)??!1,s=!t,a=t;At.current&&clearTimeout(At.current),Mt.current&&clearTimeout(Mt.current),Dt.current=!1,It(s),Pt("loading"),At.current=setTimeout(()=>{Dt.current||wt.current&&(It(a),Pt("error"),Mt.current=setTimeout(()=>{wt.current&&(Pt("idle"),It(null))},2e3))},1e4);try{const t=await M({web:{cors_enabled:s}});if(Dt.current=!0,At.current&&clearTimeout(At.current),!wt.current)return;t.success||(null==(e=t.data)?void 0:e.persisted)?(await xe(),Pt("success"),Mt.current=setTimeout(()=>{wt.current&&(Pt("idle"),It(null))},2e3)):(It(a),Pt("error"),Mt.current=setTimeout(()=>{wt.current&&(Pt("idle"),It(null))},2e3))}catch{if(Dt.current=!0,At.current&&clearTimeout(At.current),!wt.current)return;It(a),Pt("error"),Mt.current=setTimeout(()=>{wt.current&&(Pt("idle"),It(null))},2e3)}};e.useEffect(()=>{(async()=>{qs(!0);try{const e=await D();e.success&&e.data?Ks(e.data.exists):Ks(!1);const t=null==Et?void 0:Et.web_path;Ds(!t||""===t)}catch{Ks(!1)}finally{qs(!1)}})()},[null==Et?void 0:Et.web_path]);const na=async e=>{var t;if("loading"!==Hs){$s("loading");try{const s=await M({web:{web_path:e?null:"/opt/pymc_console/web/html"}});if(!wt.current)return;s.success||(null==(t=s.data)?void 0:t.persisted)?(Ds(e),$s("success"),Vs(!0),setTimeout(()=>{wt.current&&$s("idle")},2e3)):($s("error"),setTimeout(()=>{wt.current&&$s("idle")},2e3))}catch{if(!wt.current)return;$s("error"),setTimeout(()=>{wt.current&&$s("idle")},2e3)}}},la=e.useCallback(async()=>{qt(!0),$t(null);try{const e=await L();Kt(e.tokens||[])}catch(e){$t(e instanceof Error?e.message:"Failed to fetch tokens")}finally{qt(!1)}},[]);e.useEffect(()=>{la()},[la]);const ca=async()=>{if(Xt.trim()){ts(!0),$t(null);try{const e=await K(Xt.trim());Gt(e.token||null),Vt(!1),Zt(!0),Bt(""),await la()}catch(e){$t(e instanceof Error?e.message:"Failed to create token")}finally{ts(!1)}}else $t("Token name is required")},ia=e=>e?new Date(1e3*e).toLocaleString():"Never",da=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},[]),oa=e.useCallback(async()=>{ds(!0),us(null);try{const e=await P();e.success&&e.data?cs(da(e.data)):us(e.error||"Failed to load transport keys")}catch(e){us(e instanceof Error?e.message:"Unknown error occurred")}finally{ds(!1)}},[da]);e.useEffect(()=>{oa()},[oa]);const ua=e.useCallback((e,t)=>{for(const s of e){if(s.id===t)return s;if(s.children){const e=ua(s.children,t);if(e)return e}}return null},[]),ma=e.useCallback(()=>{if(!bs)return;const e=ua(ls,bs);return null==e?void 0:e.name},[bs,ls,ua]),xa=e.useCallback(e=>{fs(t=>{const s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),pa=async e=>{hs(!0),us(null);try{const t=await q("allow"===e);t.success?xs(e):us(t.error||"Failed to update global flood policy")}catch(t){us(t instanceof Error?t.message:"Failed to update global flood policy")}finally{hs(!1)}},ha=async()=>{if(Es.trim()){As(!0),us(null);try{const e=await H({name:Es.trim(),flood_policy:Ps,parent_id:bs??void 0});e.success?(await oa(),vs(!1),Ls(""),Rs("deny")):us(e.error||"Failed to add transport key")}catch(e){us(e instanceof Error?e.message:"Failed to add transport key")}finally{As(!1)}}else us("Key name is required")},ba=e.useCallback(()=>{if(!bs)return;const e=ua(ls,bs);e&&(Ss({...e}),ws(!0))},[bs,ls,ua]);e.useEffect(()=>{const e=e=>{"Escape"===e.key&&(js&&(vs(!1),Ls(""),Rs("deny")),Ns&&(ws(!1),Ss(null)),ks&&(Cs(!1),Fs(null)),Yt&&(Vt(!1),Bt("")),Wt&&(Zt(!1),Gt(null)))};if(js||Ns||ks||Yt||Wt)return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[js,Ns,ks,Yt,Wt]);const ya=e.useCallback(()=>{if(!bs)return;const e=ua(ls,bs);e&&(Fs(e),Cs(!0))},[bs,ls,ua]);return t.jsxs(B,{children:[t.jsx(U,{title:"Configuration",icon:t.jsx(s,{})}),t.jsxs(Z,{template:"standard",children:[t.jsx(J,{span:12,md:6,children:t.jsx(G,{children:t.jsxs("div",{ref:xt,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:ye&&(Qe?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:aa,disabled:"loading"===dt,className:_("p-2 rounded-lg transition-colors","loading"===dt?"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"!==dt){pt.current&&clearTimeout(pt.current),pe(re),ot("loading"),mt(null);try{const e={};tt&&tt!==fe&&(e.node_name=tt);const t=parseFloat(at);isNaN(t)||t===(null==ye?void 0:ye.latitude)||(e.latitude=t);const s=parseFloat(nt);isNaN(s)||s===(null==ye?void 0:ye.longitude)||(e.longitude=s);const a=parseInt(ct);if(isNaN(a)||a===(null==ye?void 0:ye.send_advert_interval_hours)||(e.flood_advert_interval_hours=a),0===Object.keys(e).length)return mt({success:!0,message:"No changes to save"}),ot("idle"),void he(re);const r=await A(e);if(!wt.current)return void he(re);if(r.success&&r.data){const e=r.data.applied.join(", ");mt({success:!0,message:`Updated: ${e}`}),await xe({force:!0}),ot("success"),pt.current=setTimeout(()=>{wt.current&&(ot("idle"),et(!1),mt(null),he(re))},1500)}else mt({success:!1,message:r.error||"Failed to save"}),ot("error"),he(re),pt.current=setTimeout(()=>{wt.current&&ot("idle")},2e3)}catch(e){if(!wt.current)return void he(re);mt({success:!1,message:String(e)}),ot("error"),he(re),pt.current=setTimeout(()=>{wt.current&&ot("idle")},2e3)}}},disabled:"loading"===dt,className:_("p-2 rounded-lg transition-colors","loading"===dt?"text-accent-primary cursor-wait":"success"===dt?"text-accent-success":"error"===dt?"text-accent-danger":"text-accent-success hover:bg-accent-success/10"),title:"Save changes",children:"loading"===dt?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===dt?t.jsx(l,{className:"w-4 h-4"}):"error"===dt?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:sa,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"})}))})]}),ut&&t.jsx("div",{className:_("text-xs mb-3 px-2 py-1.5 rounded-md",ut.success?"text-accent-success bg-accent-success/10":"text-accent-danger bg-accent-danger/10"),children:ut.message}),ye?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:_("h-[38px] rounded-full px-4 flex items-center transition-colors",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsx("input",{type:"text",value:tt,onChange:e=>st(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:fe})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:Qe?"Latitude (°)":"Latitude"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsx("input",{type:"number",value:at,onChange:e=>rt(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!==ye.latitude?ye.latitude.toFixed(6):"Not set"})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:Qe?"Longitude (°)":"Longitude"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsx("input",{type:"number",value:nt,onChange:e=>lt(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!==ye.longitude?ye.longitude.toFixed(6):"Not set"})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:Qe?"Advert Interval (hours)":"Advert Interval"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsx("input",{type:"number",value:ct,onChange:e=>it(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:ye.send_advert_interval_hours>0?`${ye.send_advert_interval_hours}h`:"Disabled"})}),Qe&&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:ye.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(G,{children:t.jsxs("div",{ref:Ke,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:be&&(we?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:Ws,disabled:"loading"===Ae,className:_("p-2 rounded-lg transition-colors","loading"===Ae?"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"!==Ae){Oe.current&&clearTimeout(Oe.current),pe(ae),Me("loading"),ze(null);try{const e={},t=parseFloat(Ce),s=be?be.frequency/1e6:0;Math.abs(t-s)>1e-4&&(e.frequency_mhz=t);const a=be?be.bandwidth/1e3:0;Se!==a&&(e.bandwidth_khz=Se),Fe!==(null==be?void 0:be.spreading_factor)&&(e.spreading_factor=Fe),Le!==(null==be?void 0:be.coding_rate)&&(e.coding_rate=Le);const r=parseInt(Re);if(r!==(null==be?void 0:be.tx_power)&&(e.tx_power=r),0===Object.keys(e).length)return ze({success:!0,message:"No changes to save"}),Me("idle"),void he(ae);const n=await A(e);if(!wt.current)return void he(ae);if(n.success&&n.data){const e=n.data.applied.join(", "),t=n.data.live_update?" (applied live)":" (restart required)";ze({success:!0,message:`Updated: ${e}${t}`}),await xe({force:!0}),Me("success"),Oe.current=setTimeout(()=>{wt.current&&(Me("idle"),ke(!1),ze(null),he(ae))},1500)}else ze({success:!1,message:n.error||"Failed to save"}),Me("error"),he(ae),Oe.current=setTimeout(()=>{wt.current&&Me("idle")},2e3)}catch(e){if(!wt.current)return void he(ae);ze({success:!1,message:String(e)}),Me("error"),he(ae),Oe.current=setTimeout(()=>{wt.current&&Me("idle")},2e3)}}},disabled:"loading"===Ae||!Gs,className:_("p-2 rounded-lg transition-colors","loading"===Ae?"text-accent-primary cursor-wait":"success"===Ae?"text-accent-success":"error"===Ae?"text-accent-danger":Gs?"text-accent-success hover:bg-accent-success/10":"text-text-muted cursor-not-allowed"),title:Gs?"Save changes":"No changes to save",children:"loading"===Ae?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===Ae?t.jsx(l,{className:"w-4 h-4"}):"error"===Ae?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:()=>{be&&(_e((be.frequency/1e6).toFixed(3)),Te(be.bandwidth/1e3),Ee(be.spreading_factor),Pe(be.coding_rate),Ie(String(be.tx_power))),ze(null),ke(!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"})}))})]}),De&&t.jsx("div",{className:_("text-xs mb-3 px-2 py-1.5 rounded-md",De.success?"text-accent-success bg-accent-success/10":"text-accent-danger bg-accent-danger/10"),children:De.message}),be?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:we?"Frequency (MHz)":"Frequency"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsx("input",{type:"number",value:Ce,onChange:e=>_e(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:R(be.frequency)})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:we?"TX Power (dBm)":"TX Power"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsx("input",{type:"number",value:Re,onChange:e=>Ie(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:[be.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:_("h-[38px] rounded-full px-4 flex items-center transition-colors relative",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Se,onChange:e=>Te(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:I(be.bandwidth)})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Spreading Factor"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors relative",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Fe,onChange:e=>Ee(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",be.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:_("h-[38px] rounded-full px-4 flex items-center transition-colors relative",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Le,onChange:e=>Pe(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/",be.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:[be.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(G,{children:t.jsxs("div",{ref:Je,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"!==Ge){Ze.current&&clearTimeout(Ze.current),pe(ne),We("loading");try{const e=await A({tx_delay_factor:parseFloat($e),direct_tx_delay_factor:parseFloat(Ve)});if(await ue({max_airtime_percent:parseFloat(Be),enforcement_enabled:ve}),!wt.current)return void he(ne);e.success&&e.data?(await xe({force:!0}),We("success"),Ze.current=setTimeout(()=>{wt.current&&(We("idle"),He(!1),he(ne))},1500)):(We("error"),he(ne),Ze.current=setTimeout(()=>{wt.current&&We("idle")},2e3))}catch{if(!wt.current)return void he(ne);We("error"),he(ne),Ze.current=setTimeout(()=>{wt.current&&We("idle")},2e3)}}},disabled:"loading"===Ge,className:_("p-2 rounded-lg transition-colors","loading"===Ge?"text-accent-primary cursor-wait":"success"===Ge?"text-accent-success":"error"===Ge?"text-accent-danger":"text-accent-success hover:bg-accent-success/10"),title:"Save",children:"loading"===Ge?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===Ge?t.jsx(l,{className:"w-4 h-4"}):"error"===Ge?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})}),t.jsx("button",{onClick:ta,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:ea,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!==ft?ft:"forward"===je;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"===ht)return;const t=!e,s="forward"===je;kt.current&&clearTimeout(kt.current),Ct.current&&clearTimeout(Ct.current),Tt.current=!1,jt(t),bt("loading"),kt.current=setTimeout(()=>{Tt.current||wt.current&&(jt(s),bt("error"),Ct.current=setTimeout(()=>{wt.current&&(bt("idle"),jt(null))},2e3))},1e4);try{if(await de(t?"forward":"monitor"),Tt.current=!0,kt.current&&clearTimeout(kt.current),!wt.current)return;bt("success"),Ct.current=setTimeout(()=>{wt.current&&(bt("idle"),jt(null),oe())},2e3)}catch{if(Tt.current=!0,kt.current&&clearTimeout(kt.current),!wt.current)return;jt(s),bt("error"),Ct.current=setTimeout(()=>{wt.current&&(bt("idle"),jt(null))},2e3)}},disabled:"loading"===ht,className:_("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"===ht&&"opacity-70"),"aria-label":"Toggle forward mode",children:t.jsx("span",{className:_("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:_("type-data text-sm w-7",e?"text-accent-success":"text-text-muted"),children:e?"On":"Off"}),"loading"===ht&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===ht&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===ht&&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!==vt?vt:ve;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"===yt)return;const t=!e,s=ve;_t.current&&clearTimeout(_t.current),St.current&&clearTimeout(St.current),Ft.current=!1,Nt(t),gt("loading"),_t.current=setTimeout(()=>{Ft.current||wt.current&&(Nt(s),gt("error"),St.current=setTimeout(()=>{wt.current&&(gt("idle"),Nt(null))},2e3))},1e4);try{if(await ue({max_airtime_percent:Qs(),enforcement_enabled:t}),Ft.current=!0,_t.current&&clearTimeout(_t.current),!wt.current)return;gt("success"),St.current=setTimeout(()=>{wt.current&&(gt("idle"),Nt(null),me())},2e3)}catch{if(Ft.current=!0,_t.current&&clearTimeout(_t.current),!wt.current)return;Nt(s),gt("error"),St.current=setTimeout(()=>{wt.current&&(gt("idle"),Nt(null))},2e3)}},disabled:"loading"===yt,className:_("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"===yt&&"opacity-70"),"aria-label":"Toggle duty cycle",children:t.jsx("span",{className:_("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:_("type-data text-sm w-7",e?"text-accent-success":"text-text-muted"),children:e?"On":"Off"}),"loading"===yt&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===yt&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===yt&&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:_("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:Be,onChange:e=>Ue(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:[Qs().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:_("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:$e,onChange:e=>Ye(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:[Zs().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:_("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:Ve,onChange:e=>Xe(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:[Js().toFixed(2),"s"]})})]})]})]})]})]})})}),t.jsx(J,{span:12,md:6,children:t.jsxs(G,{children:[t.jsx(W,{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!==Rt?Rt:(null==Et?void 0:Et.cors_enabled)??!1;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:ra,disabled:"loading"===Lt,className:_("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"===Lt&&"opacity-70"),title:e?"Disable CORS":"Enable CORS",children:t.jsx("span",{className:_("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",e?"translate-x-5":"translate-x-0.5")})}),"loading"===Lt&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===Lt&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===Lt&&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(G,{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:()=>vs(!0),disabled:"allow"===ms,className:_("flex items-center gap-1.5 h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium","allow"===ms?"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:ba,disabled:!bs||"allow"===ms,className:_("h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium",bs&&"allow"!==ms?"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:ya,disabled:!bs||"allow"===ms,className:_("h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium",bs&&"allow"!==ms?"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:_("w-10 h-10 rounded-full flex items-center justify-center","allow"===ms?"bg-accent-success/20":"bg-accent-danger/20"),children:"allow"===ms?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:()=>pa("deny"),disabled:ps,className:_("px-4 py-1.5 rounded-full transition-colors type-body-sm font-medium","deny"===ms?"bg-accent-danger/20 text-accent-danger":"text-text-muted hover:text-text-secondary",ps&&"opacity-50"),children:"Deny"}),t.jsx("button",{onClick:()=>pa("allow"),disabled:ps,className:_("px-4 py-1.5 rounded-full transition-colors type-body-sm font-medium","allow"===ms?"bg-accent-success/20 text-accent-success":"text-text-muted hover:text-text-secondary",ps&&"opacity-50"),children:"Allow"})]}),ps&&t.jsx(n,{className:"w-4 h-4 animate-spin text-text-muted"})]})]})}),os&&t.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-accent-danger bg-accent-danger/10",children:os}),t.jsx("div",{className:"bg-white/[0.02] rounded-2xl p-4 min-h-[120px]",children:is?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===ls.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:ls.map(e=>t.jsx(le,{node:e,level:0,expandedKeys:gs,selectedKeyId:bs,globalFloodPolicy:ms,onSelect:ys,onToggle:xa},e.id))})})]})}),t.jsx(Z,{template:"auto",children:t.jsxs(G,{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:()=>Vt(!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."})]})]})}),Ht&&t.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-accent-danger bg-accent-danger/10",children:Ht}),Ot&&0===zt.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..."})]}):zt.length>0?t.jsx("div",{className:"space-y-2",children:zt.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: ",ia(e.created_at)]}),t.jsxs("span",{className:"type-data-sm text-text-muted truncate",children:["Last used: ",ia(e.last_used)]})]})]})]}),t.jsxs("button",{onClick:()=>Qt({id:e.id,name:e.name}),disabled:ss,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:()=>Vt(!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(G,{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:_("flex items-start gap-3 p-4 bg-white/[0.02] rounded-2xl border-2 cursor-pointer transition-all",Ms?"border-accent-primary bg-accent-primary/5":"border-transparent hover:border-accent-primary/30","loading"===Hs&&"opacity-50 pointer-events-none"),children:[t.jsx("input",{type:"radio",name:"frontend",checked:Ms,onChange:()=>na(!0),disabled:"loading"===Hs,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:_("flex items-start gap-3 p-4 bg-white/[0.02] rounded-2xl border-2 cursor-pointer transition-all",Ms?"border-transparent hover:border-accent-primary/30":"border-accent-primary bg-accent-primary/5","loading"===Hs&&"opacity-50 pointer-events-none"),children:[t.jsx("input",{type:"radio",name:"frontend",checked:!Ms,onChange:()=>na(!1),disabled:"loading"===Hs,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"})]})]})]}),!Os&&t.jsx("div",{className:_("bg-white/[0.02] rounded-2xl p-4",zs?"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:_("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0",zs?"bg-accent-success/20":"bg-accent-tertiary/20"),children:zs?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:zs?"PyMC Console has been detected":"PyMC Console Not Installed"}),zs?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"]})]})]})]})}),Ys&&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(!Xs){Bs(!0);try{await z(),Vs(!1),setTimeout(()=>{window.location.reload()},2e3)}catch{Vs(!1),setTimeout(()=>{window.location.reload()},3e3)}}},disabled:Xs,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:Xs?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(G,{children:[t.jsx(W,{icon:t.jsx(o,{}),title:"Node Information",largeTitle:!0}),ie?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:fe})]}),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",ie.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",ie.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:ie.local_hash?t.jsx(V,{hash:ie.local_hash,size:"sm"}):t.jsx("span",{className:"type-data-sm text-text-muted",children:"N/A"})})]})]}),ie.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(V,{hash:ie.public_key,prefixLength:12,suffixLength:8})})]})]}):t.jsx("p",{className:"text-text-muted",children:"Loading node information..."})]})}),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&&Vt(!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:Xt,onChange:e=>Bt(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&&ca(),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:()=>{Vt(!1),Bt(""),$t(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:ca,disabled:es||!Xt.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"}),"Creating..."]}):"Create Token"})]})]})]})}),Wt&&Ut&&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&&Zt(!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:Ut,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:()=>{Ut&&(navigator.clipboard.writeText(Ut),ns(!0),setTimeout(()=>ns(!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:[rs?t.jsx(l,{className:"w-4 h-4 text-accent-success"}):t.jsx(w,{className:"w-4 h-4"}),rs?"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: ',Ut.slice(0,12),'..." ',window.location.origin,"/api/stats"]})]}),t.jsx("div",{className:"flex justify-end mt-6",children:t.jsx("button",{onClick:()=>{Zt(!1),Gt(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(X,{isOpen:!!Jt,title:"Revoke API Token",message:`Are you sure you want to revoke the token '${null==Jt?void 0:Jt.name}'? This action cannot be undone.`,confirmLabel:ss?"Revoking...":"Revoke",cancelLabel:"Cancel",variant:"danger",onConfirm:async()=>{if(Jt){as(!0),$t(null);try{await O(Jt.id),await la(),Qt(null)}catch(e){$t(e instanceof Error?e.message:"Failed to revoke token")}finally{as(!1)}}},onCancel:()=>Qt(null)}),js&&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":"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:[bs&&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:ma()})]}),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:Es,onChange:e=>Ls(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&&ha(),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:()=>Rs("deny"),className:_("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","deny"===Ps?"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:()=>Rs("allow"),className:_("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","allow"===Ps?"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:()=>{vs(!1),Ls(""),Rs("deny")},disabled:Is,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:ha,disabled:Is||!Es.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:Is?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Adding..."]}):"Add Key"})]})]})]})}),Ns&&_s&&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&&ws(!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:_s.name,onChange:e=>Ss({..._s,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:()=>Ss({..._s,floodPolicy:"deny"}),className:_("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","deny"===_s.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:()=>Ss({..._s,floodPolicy:"allow"}),className:_("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","allow"===_s.floodPolicy?"bg-accent-success/20 text-accent-success border border-accent-success/50":"text-text-muted hover:text-text-secondary"),children:"ALLOW"})]})]}),_s.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:_s.transport_key})]}),t.jsxs("div",{className:"flex justify-between gap-3 mt-6",children:[t.jsx("button",{onClick:()=>{ws(!1),Fs(_s),Cs(!0),Ss(null)},disabled:Is,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:()=>{ws(!1),Ss(null)},disabled:Is,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(_s){As(!0),us(null);try{const e=await $(_s.id,{name:_s.name,flood_policy:_s.floodPolicy});e.success?(await oa(),ws(!1),Ss(null)):us(e.error||"Failed to update transport key")}catch(e){us(e instanceof Error?e.message:"Failed to update transport key")}finally{As(!1)}}},disabled:Is||!_s.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:Is?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Saving..."]}):"Save"})]})]})]})]})}),ks&&Ts&&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&&Cs(!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:["'",Ts.name,"'"]}),"?"]}),Ts.children&&Ts.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 ",Ts.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:()=>{Cs(!1),Fs(null)},disabled:Is,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(Ts){As(!0),us(null);try{const e=await Y(Ts.id);e.success?(await oa(),Cs(!1),Fs(null),ys(null)):us(e.error||"Failed to delete transport key")}catch(e){us(e instanceof Error?e.message:"Failed to delete transport key")}finally{As(!1)}}},disabled:Is,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:Is?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Deleting..."]}):"Delete"})]})]})})]})}export{ce as default}; +import{r as e,j as t,f as s,i as a,X as r,at as n,aa as l,aX as c,aY as i,k as d,p as o,aZ as u,af as m,a_ as x,a$ as p,b0 as h,aP as b,av as y,b1 as g,aj as f,b2 as j,a7 as v,a2 as N,$ as w,a9 as k,b3 as C}from"./vendor-react-O8XH9yVn.js";import{c as _}from"./recharts-BU7auunF.js";import{ad as S,ae as T,af as F,I as E,ag as L,ah as P,ai as R,aj as I,ac as A,ak as M,al as D,am as z,an as K,ao as O,ap as q,aq as H,ar as $,as as Y}from"./index-Dp0UlTio.js";import{H as V}from"./HashBadge-aS_UIcg2.js";import{C as X}from"./ConfirmModal-DYznouaT.js";import{P as B,b as U,a as G,c as W}from"./PageLayout-DE5PEtD2.js";import{R as Z,C as J}from"./Grid-CIZAny_R.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";const Q=e.memo(function({showLogoOnly:s=!1,showThumbnailsOnly:a=!1}){const{theme:r,setThemePreset:n,setBrightness:l}=S(),{backgroundImage:c,brightness:i}=r,[d,o]=e.useState(!1),[u,m]=e.useState(!1),x=e.useRef(null),p=e.useRef(null),h=T.find(e=>e.backgroundImage===c)??T[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=T.find(t=>t.id===e);t&&F(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:T.map(e=>{const s=b===e.id,a=s&&(d||u);return t.jsxs("div",{ref:s?x:void 0,title:e.displayName,className:_("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:_("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"}],ae="radioConfig",re="repeaterSettings",ne="operatingMode";function le({node:e,level:s,expandedKeys:a,selectedKeyId:r,globalFloodPolicy:n,onSelect:l,onToggle:c}){const i=a.has(e.id),d=r===e.id,o=e.children&&e.children.length>0,u="allow"===n;return t.jsxs("div",{children:[t.jsxs("div",{className:_("flex items-center gap-2 h-[36px] px-3 rounded-full cursor-pointer transition-colors",d?"bg-accent-primary/15":"hover:bg-white/[0.02]",u&&"opacity-50 cursor-not-allowed"),style:{marginLeft:16*s+"px"},onClick:()=>!u&&l(e.id),children:[o?t.jsx("button",{onClick:t=>{t.stopPropagation(),c(e.id)},className:"p-1 hover:bg-white/[0.05] rounded-full transition-colors",children:t.jsx(k,{className:_("w-3.5 h-3.5 text-text-muted transition-transform",i&&"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:_("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"})]}),o&&i&&t.jsx("div",{children:e.children.map(e=>t.jsx(le,{node:e,level:s+1,expandedKeys:a,selectedKeyId:r,globalFloodPolicy:n,onSelect:l,onToggle:c},e.id))})]})}function ce(){var k,C,S,T,F,ce;const{stats:ie,setMode:de,clearModeMutation:oe,setDutyCycleConfig:ue,clearDutyCycleMutation:me,fetchStats:xe,startMutation:pe,clearMutation:he}=E(),be=null==(k=null==ie?void 0:ie.config)?void 0:k.radio,ye=null==(C=null==ie?void 0:ie.config)?void 0:C.repeater,ge=null==(S=null==ie?void 0:ie.config)?void 0:S.duty_cycle,fe=(null==ie?void 0:ie.node_name)||(null==(T=null==ie?void 0:ie.config)?void 0:T.node_name)||"Unknown Node",je=(null==ye?void 0:ye.mode)??"forward",ve=(null==ge?void 0:ge.enforcement_enabled)??!1,Ne=null==(F=null==ie?void 0:ie.config)?void 0:F.delays,[we,ke]=e.useState(!1),[Ce,_e]=e.useState(""),[Se,Te]=e.useState(62.5),[Fe,Ee]=e.useState(7),[Le,Pe]=e.useState(5),[Re,Ie]=e.useState(""),[Ae,Me]=e.useState("idle"),[De,ze]=e.useState(null),Ke=e.useRef(null),Oe=e.useRef(null),[qe,He]=e.useState(!1),[$e,Ye]=e.useState(""),[Ve,Xe]=e.useState(""),[Be,Ue]=e.useState(""),[Ge,We]=e.useState("idle"),Ze=e.useRef(null),Je=e.useRef(null),[Qe,et]=e.useState(!1),[tt,st]=e.useState(""),[at,rt]=e.useState(""),[nt,lt]=e.useState(""),[ct,it]=e.useState(""),[dt,ot]=e.useState("idle"),[ut,mt]=e.useState(null),xt=e.useRef(null),pt=e.useRef(null),[ht,bt]=e.useState("idle"),[yt,gt]=e.useState("idle"),[ft,jt]=e.useState(null),[vt,Nt]=e.useState(null),wt=e.useRef(!0),kt=e.useRef(null),Ct=e.useRef(null),_t=e.useRef(null),St=e.useRef(null),Tt=e.useRef(!1),Ft=e.useRef(!1);e.useEffect(()=>(wt.current=!0,()=>{wt.current=!1,kt.current&&clearTimeout(kt.current),Ct.current&&clearTimeout(Ct.current),_t.current&&clearTimeout(_t.current),St.current&&clearTimeout(St.current),At.current&&clearTimeout(At.current),Mt.current&&clearTimeout(Mt.current),Oe.current&&clearTimeout(Oe.current),Ze.current&&clearTimeout(Ze.current),pt.current&&clearTimeout(pt.current)}),[]),e.useEffect(()=>{const e=e=>{if(we||Qe||qe)return e.preventDefault(),e.returnValue="You have unsaved changes. Are you sure you want to leave?",e.returnValue};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[we,Qe,qe]);const Et=null==(ce=null==ie?void 0:ie.config)?void 0:ce.web,[Lt,Pt]=e.useState("idle"),[Rt,It]=e.useState(null),At=e.useRef(null),Mt=e.useRef(null),Dt=e.useRef(!1),[zt,Kt]=e.useState([]),[Ot,qt]=e.useState(!1),[Ht,$t]=e.useState(null),[Yt,Vt]=e.useState(!1),[Xt,Bt]=e.useState(""),[Ut,Gt]=e.useState(null),[Wt,Zt]=e.useState(!1),[Jt,Qt]=e.useState(null),[es,ts]=e.useState(!1),[ss,as]=e.useState(!1),[rs,ns]=e.useState(!1),[ls,cs]=e.useState([]),[is,ds]=e.useState(!1),[os,us]=e.useState(null),[ms,xs]=e.useState("deny"),[ps,hs]=e.useState(!1),[bs,ys]=e.useState(null),[gs,fs]=e.useState(new Set),[js,vs]=e.useState(!1),[Ns,ws]=e.useState(!1),[ks,Cs]=e.useState(!1),[_s,Ss]=e.useState(null),[Ts,Fs]=e.useState(null),[Es,Ls]=e.useState(""),[Ps,Rs]=e.useState("deny"),[Is,As]=e.useState(!1),[Ms,Ds]=e.useState(!0),[zs,Ks]=e.useState(!1),[Os,qs]=e.useState(!0),[Hs,$s]=e.useState("idle"),[Ys,Vs]=e.useState(!1),[Xs,Bs]=e.useState(!1),Us=e.useRef(!1);e.useEffect(()=>{const e=we&&!Us.current;Us.current=we,be&&e&&(_e((be.frequency/1e6).toFixed(3)),Te(be.bandwidth/1e3),Ee(be.spreading_factor),Pe(be.coding_rate),Ie(String(be.tx_power)))},[be,we]);const Gs=e.useMemo(()=>{if(!be||!we)return!1;const e=be.frequency/1e6,t=be.bandwidth/1e3,s=parseFloat(Ce)||0;return Math.abs(s-e)>1e-4||Se!==t||Fe!==be.spreading_factor||Le!==be.coding_rate||parseInt(Re)!==be.tx_power},[be,we,Ce,Se,Fe,Le,Re]),Ws=e.useCallback(()=>{ke(!1),ze(null),be&&(_e((be.frequency/1e6).toFixed(3)),Te(be.bandwidth/1e3),Ee(be.spreading_factor),Pe(be.coding_rate),Ie(String(be.tx_power)))},[be]);e.useEffect(()=>{if(!we)return;const e=e=>{"loading"!==Ae&&Ke.current&&!Ke.current.contains(e.target)&&Ws()};return document.addEventListener("mouseup",e),()=>{document.removeEventListener("mouseup",e)}},[we,Ws,Ae]);const Zs=e.useCallback(()=>{const e=null==Ne?void 0:Ne.tx_delay_factor;return e&&"object"==typeof e&&"parsedValue"in e?e.parsedValue??1:"number"==typeof e?e:1},[Ne]),Js=e.useCallback(()=>{const e=null==Ne?void 0:Ne.direct_tx_delay_factor;return"number"==typeof e?e:.5},[Ne]),Qs=e.useCallback(()=>{const e=null==ge?void 0:ge.max_airtime_percent;return"number"==typeof e?e:e&&"object"==typeof e&&"parsedValue"in e?e.parsedValue??6:6},[ge]),ea=e.useCallback(()=>{Ye(Zs().toFixed(2)),Xe(Js().toFixed(2)),Ue(Qs().toFixed(1)),He(!0)},[Zs,Js,Qs]),ta=e.useCallback(()=>{He(!1)},[]);e.useEffect(()=>{if(!qe)return;const e=e=>{"loading"!==Ge&&Je.current&&!Je.current.contains(e.target)&&ta()};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[qe,ta,Ge]);const sa=e.useCallback(()=>{var e,t,s;st(fe),rt((null==(e=null==ye?void 0:ye.latitude)?void 0:e.toString())||"0"),lt((null==(t=null==ye?void 0:ye.longitude)?void 0:t.toString())||"0"),it((null==(s=null==ye?void 0:ye.send_advert_interval_hours)?void 0:s.toString())||"0"),mt(null),et(!0)},[fe,ye]),aa=e.useCallback(()=>{et(!1),mt(null)},[]);e.useEffect(()=>{if(!Qe)return;const e=e=>{"loading"!==dt&&xt.current&&!xt.current.contains(e.target)&&aa()};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[Qe,aa,dt]);const ra=async()=>{var e;if("loading"===Lt)return;const t=(null==Et?void 0:Et.cors_enabled)??!1,s=!t,a=t;At.current&&clearTimeout(At.current),Mt.current&&clearTimeout(Mt.current),Dt.current=!1,It(s),Pt("loading"),At.current=setTimeout(()=>{Dt.current||wt.current&&(It(a),Pt("error"),Mt.current=setTimeout(()=>{wt.current&&(Pt("idle"),It(null))},2e3))},1e4);try{const t=await M({web:{cors_enabled:s}});if(Dt.current=!0,At.current&&clearTimeout(At.current),!wt.current)return;t.success||(null==(e=t.data)?void 0:e.persisted)?(await xe(),Pt("success"),Mt.current=setTimeout(()=>{wt.current&&(Pt("idle"),It(null))},2e3)):(It(a),Pt("error"),Mt.current=setTimeout(()=>{wt.current&&(Pt("idle"),It(null))},2e3))}catch{if(Dt.current=!0,At.current&&clearTimeout(At.current),!wt.current)return;It(a),Pt("error"),Mt.current=setTimeout(()=>{wt.current&&(Pt("idle"),It(null))},2e3)}};e.useEffect(()=>{(async()=>{qs(!0);try{const e=await D();e.success&&e.data?Ks(e.data.exists):Ks(!1);const t=null==Et?void 0:Et.web_path;Ds(!t||""===t)}catch{Ks(!1)}finally{qs(!1)}})()},[null==Et?void 0:Et.web_path]);const na=async e=>{var t;if("loading"!==Hs){$s("loading");try{const s=await M({web:{web_path:e?null:"/opt/pymc_console/web/html"}});if(!wt.current)return;s.success||(null==(t=s.data)?void 0:t.persisted)?(Ds(e),$s("success"),Vs(!0),setTimeout(()=>{wt.current&&$s("idle")},2e3)):($s("error"),setTimeout(()=>{wt.current&&$s("idle")},2e3))}catch{if(!wt.current)return;$s("error"),setTimeout(()=>{wt.current&&$s("idle")},2e3)}}},la=e.useCallback(async()=>{qt(!0),$t(null);try{const e=await L();Kt(e.tokens||[])}catch(e){$t(e instanceof Error?e.message:"Failed to fetch tokens")}finally{qt(!1)}},[]);e.useEffect(()=>{la()},[la]);const ca=async()=>{if(Xt.trim()){ts(!0),$t(null);try{const e=await K(Xt.trim());Gt(e.token||null),Vt(!1),Zt(!0),Bt(""),await la()}catch(e){$t(e instanceof Error?e.message:"Failed to create token")}finally{ts(!1)}}else $t("Token name is required")},ia=e=>e?new Date(1e3*e).toLocaleString():"Never",da=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},[]),oa=e.useCallback(async()=>{ds(!0),us(null);try{const e=await P();e.success&&e.data?cs(da(e.data)):us(e.error||"Failed to load transport keys")}catch(e){us(e instanceof Error?e.message:"Unknown error occurred")}finally{ds(!1)}},[da]);e.useEffect(()=>{oa()},[oa]);const ua=e.useCallback((e,t)=>{for(const s of e){if(s.id===t)return s;if(s.children){const e=ua(s.children,t);if(e)return e}}return null},[]),ma=e.useCallback(()=>{if(!bs)return;const e=ua(ls,bs);return null==e?void 0:e.name},[bs,ls,ua]),xa=e.useCallback(e=>{fs(t=>{const s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),pa=async e=>{hs(!0),us(null);try{const t=await q("allow"===e);t.success?xs(e):us(t.error||"Failed to update global flood policy")}catch(t){us(t instanceof Error?t.message:"Failed to update global flood policy")}finally{hs(!1)}},ha=async()=>{if(Es.trim()){As(!0),us(null);try{const e=await H({name:Es.trim(),flood_policy:Ps,parent_id:bs??void 0});e.success?(await oa(),vs(!1),Ls(""),Rs("deny")):us(e.error||"Failed to add transport key")}catch(e){us(e instanceof Error?e.message:"Failed to add transport key")}finally{As(!1)}}else us("Key name is required")},ba=e.useCallback(()=>{if(!bs)return;const e=ua(ls,bs);e&&(Ss({...e}),ws(!0))},[bs,ls,ua]);e.useEffect(()=>{const e=e=>{"Escape"===e.key&&(js&&(vs(!1),Ls(""),Rs("deny")),Ns&&(ws(!1),Ss(null)),ks&&(Cs(!1),Fs(null)),Yt&&(Vt(!1),Bt("")),Wt&&(Zt(!1),Gt(null)))};if(js||Ns||ks||Yt||Wt)return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[js,Ns,ks,Yt,Wt]);const ya=e.useCallback(()=>{if(!bs)return;const e=ua(ls,bs);e&&(Fs(e),Cs(!0))},[bs,ls,ua]);return t.jsxs(B,{children:[t.jsx(U,{title:"Configuration",icon:t.jsx(s,{})}),t.jsxs(Z,{template:"standard",children:[t.jsx(J,{span:12,md:6,children:t.jsx(G,{children:t.jsxs("div",{ref:xt,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:ye&&(Qe?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:aa,disabled:"loading"===dt,className:_("p-2 rounded-lg transition-colors","loading"===dt?"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"!==dt){pt.current&&clearTimeout(pt.current),pe(re),ot("loading"),mt(null);try{const e={};tt&&tt!==fe&&(e.node_name=tt);const t=parseFloat(at);isNaN(t)||t===(null==ye?void 0:ye.latitude)||(e.latitude=t);const s=parseFloat(nt);isNaN(s)||s===(null==ye?void 0:ye.longitude)||(e.longitude=s);const a=parseInt(ct);if(isNaN(a)||a===(null==ye?void 0:ye.send_advert_interval_hours)||(e.flood_advert_interval_hours=a),0===Object.keys(e).length)return mt({success:!0,message:"No changes to save"}),ot("idle"),void he(re);const r=await A(e);if(!wt.current)return void he(re);if(r.success&&r.data){const e=r.data.applied.join(", ");mt({success:!0,message:`Updated: ${e}`}),await xe({force:!0}),ot("success"),pt.current=setTimeout(()=>{wt.current&&(ot("idle"),et(!1),mt(null),he(re))},1500)}else mt({success:!1,message:r.error||"Failed to save"}),ot("error"),he(re),pt.current=setTimeout(()=>{wt.current&&ot("idle")},2e3)}catch(e){if(!wt.current)return void he(re);mt({success:!1,message:String(e)}),ot("error"),he(re),pt.current=setTimeout(()=>{wt.current&&ot("idle")},2e3)}}},disabled:"loading"===dt,className:_("p-2 rounded-lg transition-colors","loading"===dt?"text-accent-primary cursor-wait":"success"===dt?"text-accent-success":"error"===dt?"text-accent-danger":"text-accent-success hover:bg-accent-success/10"),title:"Save changes",children:"loading"===dt?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===dt?t.jsx(l,{className:"w-4 h-4"}):"error"===dt?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:sa,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"})}))})]}),ut&&t.jsx("div",{className:_("text-xs mb-3 px-2 py-1.5 rounded-md",ut.success?"text-accent-success bg-accent-success/10":"text-accent-danger bg-accent-danger/10"),children:ut.message}),ye?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:_("h-[38px] rounded-full px-4 flex items-center transition-colors",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsx("input",{type:"text",value:tt,onChange:e=>st(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:fe})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:Qe?"Latitude (°)":"Latitude"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsx("input",{type:"number",value:at,onChange:e=>rt(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!==ye.latitude?ye.latitude.toFixed(6):"Not set"})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:Qe?"Longitude (°)":"Longitude"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsx("input",{type:"number",value:nt,onChange:e=>lt(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!==ye.longitude?ye.longitude.toFixed(6):"Not set"})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:Qe?"Advert Interval (hours)":"Advert Interval"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",Qe?"bg-white/5":"bg-white/[0.02]"),children:Qe?t.jsx("input",{type:"number",value:ct,onChange:e=>it(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:ye.send_advert_interval_hours>0?`${ye.send_advert_interval_hours}h`:"Disabled"})}),Qe&&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:ye.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(G,{children:t.jsxs("div",{ref:Ke,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:be&&(we?t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:Ws,disabled:"loading"===Ae,className:_("p-2 rounded-lg transition-colors","loading"===Ae?"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"!==Ae){Oe.current&&clearTimeout(Oe.current),pe(ae),Me("loading"),ze(null);try{const e={},t=parseFloat(Ce),s=be?be.frequency/1e6:0;Math.abs(t-s)>1e-4&&(e.frequency_mhz=t);const a=be?be.bandwidth/1e3:0;Se!==a&&(e.bandwidth_khz=Se),Fe!==(null==be?void 0:be.spreading_factor)&&(e.spreading_factor=Fe),Le!==(null==be?void 0:be.coding_rate)&&(e.coding_rate=Le);const r=parseInt(Re);if(r!==(null==be?void 0:be.tx_power)&&(e.tx_power=r),0===Object.keys(e).length)return ze({success:!0,message:"No changes to save"}),Me("idle"),void he(ae);const n=await A(e);if(!wt.current)return void he(ae);if(n.success&&n.data){const e=n.data.applied.join(", "),t=n.data.live_update?" (applied live)":" (restart required)";ze({success:!0,message:`Updated: ${e}${t}`}),await xe({force:!0}),Me("success"),Oe.current=setTimeout(()=>{wt.current&&(Me("idle"),ke(!1),ze(null),he(ae))},1500)}else ze({success:!1,message:n.error||"Failed to save"}),Me("error"),he(ae),Oe.current=setTimeout(()=>{wt.current&&Me("idle")},2e3)}catch(e){if(!wt.current)return void he(ae);ze({success:!1,message:String(e)}),Me("error"),he(ae),Oe.current=setTimeout(()=>{wt.current&&Me("idle")},2e3)}}},disabled:"loading"===Ae||!Gs,className:_("p-2 rounded-lg transition-colors","loading"===Ae?"text-accent-primary cursor-wait":"success"===Ae?"text-accent-success":"error"===Ae?"text-accent-danger":Gs?"text-accent-success hover:bg-accent-success/10":"text-text-muted cursor-not-allowed"),title:Gs?"Save changes":"No changes to save",children:"loading"===Ae?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===Ae?t.jsx(l,{className:"w-4 h-4"}):"error"===Ae?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})})]}):t.jsx("button",{onClick:()=>{be&&(_e((be.frequency/1e6).toFixed(3)),Te(be.bandwidth/1e3),Ee(be.spreading_factor),Pe(be.coding_rate),Ie(String(be.tx_power))),ze(null),ke(!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"})}))})]}),De&&t.jsx("div",{className:_("text-xs mb-3 px-2 py-1.5 rounded-md",De.success?"text-accent-success bg-accent-success/10":"text-accent-danger bg-accent-danger/10"),children:De.message}),be?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:we?"Frequency (MHz)":"Frequency"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsx("input",{type:"number",value:Ce,onChange:e=>_e(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:R(be.frequency)})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:we?"TX Power (dBm)":"TX Power"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsx("input",{type:"number",value:Re,onChange:e=>Ie(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:[be.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:_("h-[38px] rounded-full px-4 flex items-center transition-colors relative",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Se,onChange:e=>Te(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:I(be.bandwidth)})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"type-label text-text-muted block mb-1",children:"Spreading Factor"}),t.jsx("div",{className:_("h-[38px] rounded-full px-4 flex items-center transition-colors relative",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Fe,onChange:e=>Ee(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",be.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:_("h-[38px] rounded-full px-4 flex items-center transition-colors relative",we?"bg-white/5":"bg-white/[0.02]"),children:we?t.jsxs(t.Fragment,{children:[t.jsx("select",{value:Le,onChange:e=>Pe(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/",be.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:[be.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(G,{children:t.jsxs("div",{ref:Je,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"!==Ge){Ze.current&&clearTimeout(Ze.current),pe(ne),We("loading");try{const e=await A({tx_delay_factor:parseFloat($e),direct_tx_delay_factor:parseFloat(Ve)});if(await ue({max_airtime_percent:parseFloat(Be),enforcement_enabled:ve}),!wt.current)return void he(ne);e.success&&e.data?(await xe({force:!0}),We("success"),Ze.current=setTimeout(()=>{wt.current&&(We("idle"),He(!1),he(ne))},1500)):(We("error"),he(ne),Ze.current=setTimeout(()=>{wt.current&&We("idle")},2e3))}catch{if(!wt.current)return void he(ne);We("error"),he(ne),Ze.current=setTimeout(()=>{wt.current&&We("idle")},2e3)}}},disabled:"loading"===Ge,className:_("p-2 rounded-lg transition-colors","loading"===Ge?"text-accent-primary cursor-wait":"success"===Ge?"text-accent-success":"error"===Ge?"text-accent-danger":"text-accent-success hover:bg-accent-success/10"),title:"Save",children:"loading"===Ge?t.jsx(n,{className:"w-4 h-4 animate-spin"}):"success"===Ge?t.jsx(l,{className:"w-4 h-4"}):"error"===Ge?t.jsx(r,{className:"w-4 h-4"}):t.jsx(l,{className:"w-4 h-4"})}),t.jsx("button",{onClick:ta,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:ea,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!==ft?ft:"forward"===je;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"===ht)return;const t=!e,s="forward"===je;kt.current&&clearTimeout(kt.current),Ct.current&&clearTimeout(Ct.current),Tt.current=!1,jt(t),bt("loading"),kt.current=setTimeout(()=>{Tt.current||wt.current&&(jt(s),bt("error"),Ct.current=setTimeout(()=>{wt.current&&(bt("idle"),jt(null))},2e3))},1e4);try{if(await de(t?"forward":"monitor"),Tt.current=!0,kt.current&&clearTimeout(kt.current),!wt.current)return;bt("success"),Ct.current=setTimeout(()=>{wt.current&&(bt("idle"),jt(null),oe())},2e3)}catch{if(Tt.current=!0,kt.current&&clearTimeout(kt.current),!wt.current)return;jt(s),bt("error"),Ct.current=setTimeout(()=>{wt.current&&(bt("idle"),jt(null))},2e3)}},disabled:"loading"===ht,className:_("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"===ht&&"opacity-70"),"aria-label":"Toggle forward mode",children:t.jsx("span",{className:_("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:_("type-data text-sm w-7",e?"text-accent-success":"text-text-muted"),children:e?"On":"Off"}),"loading"===ht&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===ht&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===ht&&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!==vt?vt:ve;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:async()=>{if("loading"===yt)return;const t=!e,s=ve;_t.current&&clearTimeout(_t.current),St.current&&clearTimeout(St.current),Ft.current=!1,Nt(t),gt("loading"),_t.current=setTimeout(()=>{Ft.current||wt.current&&(Nt(s),gt("error"),St.current=setTimeout(()=>{wt.current&&(gt("idle"),Nt(null))},2e3))},1e4);try{if(await ue({max_airtime_percent:Qs(),enforcement_enabled:t}),Ft.current=!0,_t.current&&clearTimeout(_t.current),!wt.current)return;gt("success"),St.current=setTimeout(()=>{wt.current&&(gt("idle"),Nt(null),me())},2e3)}catch{if(Ft.current=!0,_t.current&&clearTimeout(_t.current),!wt.current)return;Nt(s),gt("error"),St.current=setTimeout(()=>{wt.current&&(gt("idle"),Nt(null))},2e3)}},disabled:"loading"===yt,className:_("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"===yt&&"opacity-70"),"aria-label":"Toggle duty cycle",children:t.jsx("span",{className:_("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:_("type-data text-sm w-7",e?"text-accent-success":"text-text-muted"),children:e?"On":"Off"}),"loading"===yt&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===yt&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===yt&&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:_("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:Be,onChange:e=>Ue(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:[Qs().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:_("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:$e,onChange:e=>Ye(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:[Zs().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:_("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:Ve,onChange:e=>Xe(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:[Js().toFixed(2),"s"]})})]})]})]})]})]})})}),t.jsx(J,{span:12,md:6,children:t.jsxs(G,{children:[t.jsx(W,{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!==Rt?Rt:(null==Et?void 0:Et.cors_enabled)??!1;return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:ra,disabled:"loading"===Lt,className:_("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"===Lt&&"opacity-70"),title:e?"Disable CORS":"Enable CORS",children:t.jsx("span",{className:_("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",e?"translate-x-5":"translate-x-0.5")})}),"loading"===Lt&&t.jsx(n,{className:"w-4 h-4 text-text-muted animate-spin"}),"success"===Lt&&t.jsx(l,{className:"w-4 h-4 text-accent-success"}),"error"===Lt&&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(G,{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:()=>vs(!0),disabled:"allow"===ms,className:_("flex items-center gap-1.5 h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium","allow"===ms?"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:ba,disabled:!bs||"allow"===ms,className:_("h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium",bs&&"allow"!==ms?"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:ya,disabled:!bs||"allow"===ms,className:_("h-[32px] px-3 rounded-full transition-colors type-body-sm font-medium",bs&&"allow"!==ms?"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:_("w-10 h-10 rounded-full flex items-center justify-center","allow"===ms?"bg-accent-success/20":"bg-accent-danger/20"),children:"allow"===ms?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:()=>pa("deny"),disabled:ps,className:_("px-4 py-1.5 rounded-full transition-colors type-body-sm font-medium","deny"===ms?"bg-accent-danger/20 text-accent-danger":"text-text-muted hover:text-text-secondary",ps&&"opacity-50"),children:"Deny"}),t.jsx("button",{onClick:()=>pa("allow"),disabled:ps,className:_("px-4 py-1.5 rounded-full transition-colors type-body-sm font-medium","allow"===ms?"bg-accent-success/20 text-accent-success":"text-text-muted hover:text-text-secondary",ps&&"opacity-50"),children:"Allow"})]}),ps&&t.jsx(n,{className:"w-4 h-4 animate-spin text-text-muted"})]})]})}),os&&t.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-accent-danger bg-accent-danger/10",children:os}),t.jsx("div",{className:"bg-white/[0.02] rounded-2xl p-4 min-h-[120px]",children:is?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===ls.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:ls.map(e=>t.jsx(le,{node:e,level:0,expandedKeys:gs,selectedKeyId:bs,globalFloodPolicy:ms,onSelect:ys,onToggle:xa},e.id))})})]})}),t.jsx(Z,{template:"auto",children:t.jsxs(G,{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:()=>Vt(!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."})]})]})}),Ht&&t.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-accent-danger bg-accent-danger/10",children:Ht}),Ot&&0===zt.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..."})]}):zt.length>0?t.jsx("div",{className:"space-y-2",children:zt.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: ",ia(e.created_at)]}),t.jsxs("span",{className:"type-data-sm text-text-muted truncate",children:["Last used: ",ia(e.last_used)]})]})]})]}),t.jsxs("button",{onClick:()=>Qt({id:e.id,name:e.name}),disabled:ss,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:()=>Vt(!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(G,{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:_("flex items-start gap-3 p-4 bg-white/[0.02] rounded-2xl border-2 cursor-pointer transition-all",Ms?"border-accent-primary bg-accent-primary/5":"border-transparent hover:border-accent-primary/30","loading"===Hs&&"opacity-50 pointer-events-none"),children:[t.jsx("input",{type:"radio",name:"frontend",checked:Ms,onChange:()=>na(!0),disabled:"loading"===Hs,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:_("flex items-start gap-3 p-4 bg-white/[0.02] rounded-2xl border-2 cursor-pointer transition-all",Ms?"border-transparent hover:border-accent-primary/30":"border-accent-primary bg-accent-primary/5","loading"===Hs&&"opacity-50 pointer-events-none"),children:[t.jsx("input",{type:"radio",name:"frontend",checked:!Ms,onChange:()=>na(!1),disabled:"loading"===Hs,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"})]})]})]}),!Os&&t.jsx("div",{className:_("bg-white/[0.02] rounded-2xl p-4",zs?"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:_("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0",zs?"bg-accent-success/20":"bg-accent-tertiary/20"),children:zs?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:zs?"PyMC Console has been detected":"PyMC Console Not Installed"}),zs?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"]})]})]})]})}),Ys&&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(!Xs){Bs(!0);try{await z(),Vs(!1),setTimeout(()=>{window.location.reload()},2e3)}catch{Vs(!1),setTimeout(()=>{window.location.reload()},3e3)}}},disabled:Xs,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:Xs?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(G,{children:[t.jsx(W,{icon:t.jsx(o,{}),title:"Node Information",largeTitle:!0}),ie?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:fe})]}),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",ie.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",ie.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:ie.local_hash?t.jsx(V,{hash:ie.local_hash,size:"sm"}):t.jsx("span",{className:"type-data-sm text-text-muted",children:"N/A"})})]})]}),ie.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(V,{hash:ie.public_key,prefixLength:12,suffixLength:8})})]})]}):t.jsx("p",{className:"text-text-muted",children:"Loading node information..."})]})}),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&&Vt(!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:Xt,onChange:e=>Bt(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&&ca(),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:()=>{Vt(!1),Bt(""),$t(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:ca,disabled:es||!Xt.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"}),"Creating..."]}):"Create Token"})]})]})]})}),Wt&&Ut&&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&&Zt(!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:Ut,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:()=>{Ut&&(navigator.clipboard.writeText(Ut),ns(!0),setTimeout(()=>ns(!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:[rs?t.jsx(l,{className:"w-4 h-4 text-accent-success"}):t.jsx(w,{className:"w-4 h-4"}),rs?"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: ',Ut.slice(0,12),'..." ',window.location.origin,"/api/stats"]})]}),t.jsx("div",{className:"flex justify-end mt-6",children:t.jsx("button",{onClick:()=>{Zt(!1),Gt(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(X,{isOpen:!!Jt,title:"Revoke API Token",message:`Are you sure you want to revoke the token '${null==Jt?void 0:Jt.name}'? This action cannot be undone.`,confirmLabel:ss?"Revoking...":"Revoke",cancelLabel:"Cancel",variant:"danger",onConfirm:async()=>{if(Jt){as(!0),$t(null);try{await O(Jt.id),await la(),Qt(null)}catch(e){$t(e instanceof Error?e.message:"Failed to revoke token")}finally{as(!1)}}},onCancel:()=>Qt(null)}),js&&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":"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:[bs&&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:ma()})]}),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:Es,onChange:e=>Ls(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&&ha(),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:()=>Rs("deny"),className:_("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","deny"===Ps?"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:()=>Rs("allow"),className:_("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","allow"===Ps?"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:()=>{vs(!1),Ls(""),Rs("deny")},disabled:Is,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:ha,disabled:Is||!Es.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:Is?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Adding..."]}):"Add Key"})]})]})]})}),Ns&&_s&&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&&ws(!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:_s.name,onChange:e=>Ss({..._s,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:()=>Ss({..._s,floodPolicy:"deny"}),className:_("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","deny"===_s.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:()=>Ss({..._s,floodPolicy:"allow"}),className:_("flex-1 px-3 py-2 text-sm font-medium rounded transition-colors","allow"===_s.floodPolicy?"bg-accent-success/20 text-accent-success border border-accent-success/50":"text-text-muted hover:text-text-secondary"),children:"ALLOW"})]})]}),_s.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:_s.transport_key})]}),t.jsxs("div",{className:"flex justify-between gap-3 mt-6",children:[t.jsx("button",{onClick:()=>{ws(!1),Fs(_s),Cs(!0),Ss(null)},disabled:Is,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:()=>{ws(!1),Ss(null)},disabled:Is,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(_s){As(!0),us(null);try{const e=await $(_s.id,{name:_s.name,flood_policy:_s.floodPolicy});e.success?(await oa(),ws(!1),Ss(null)):us(e.error||"Failed to update transport key")}catch(e){us(e instanceof Error?e.message:"Failed to update transport key")}finally{As(!1)}}},disabled:Is||!_s.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:Is?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Saving..."]}):"Save"})]})]})]})]})}),ks&&Ts&&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&&Cs(!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:["'",Ts.name,"'"]}),"?"]}),Ts.children&&Ts.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 ",Ts.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:()=>{Cs(!1),Fs(null)},disabled:Is,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(Ts){As(!0),us(null);try{const e=await Y(Ts.id);e.success?(await oa(),Cs(!1),Fs(null),ys(null)):us(e.error||"Failed to delete transport key")}catch(e){us(e instanceof Error?e.message:"Failed to delete transport key")}finally{As(!1)}}},disabled:Is,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:Is?t.jsxs(t.Fragment,{children:[t.jsx(n,{className:"w-4 h-4 animate-spin"}),"Deleting..."]}):"Delete"})]})]})})]})}export{ce as default}; diff --git a/frontend/dist/assets/ConfirmModal-C9RGn9JH.js b/frontend/dist/assets/ConfirmModal-DYznouaT.js similarity index 95% rename from frontend/dist/assets/ConfirmModal-C9RGn9JH.js rename to frontend/dist/assets/ConfirmModal-DYznouaT.js index 77a89746..8a4d67a7 100644 --- a/frontend/dist/assets/ConfirmModal-C9RGn9JH.js +++ b/frontend/dist/assets/ConfirmModal-DYznouaT.js @@ -1 +1 @@ -import{r as e,b as t,j as o,a7 as s,X as n}from"./vendor-react-ClShp8p7.js";import{c as r}from"./recharts-BjCld2b0.js";const d={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"}},l=e.memo(function({isOpen:l,title:a="Confirm",message:i,confirmLabel:c="Confirm",cancelLabel:m="Cancel",variant:b="default",onConfirm:x,onCancel:u}){if(e.useEffect(()=>{if(!l)return;const e=e=>{"Escape"===e.key&&u()};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)}},[l,u]),!l)return null;const y=d[b];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:u,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",y.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:a})]}),o.jsx("button",{onClick:u,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:i})}),o.jsxs("div",{className:"flex gap-3 p-4 pt-0",children:[o.jsx("button",{onClick:u,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:m}),o.jsx("button",{onClick:x,className:r("flex-1 px-4 py-2.5 rounded-lg text-sm font-medium text-text-primary transition-colors",y.button),children:c})]})]})}),document.body)});export{l as C}; +import{r as e,b as t,j as o,a7 as s,X as n}from"./vendor-react-O8XH9yVn.js";import{c as r}from"./recharts-BU7auunF.js";const d={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"}},l=e.memo(function({isOpen:l,title:a="Confirm",message:i,confirmLabel:c="Confirm",cancelLabel:m="Cancel",variant:b="default",onConfirm:x,onCancel:u}){if(e.useEffect(()=>{if(!l)return;const e=e=>{"Escape"===e.key&&u()};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)}},[l,u]),!l)return null;const y=d[b];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:u,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",y.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:a})]}),o.jsx("button",{onClick:u,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:i})}),o.jsxs("div",{className:"flex gap-3 p-4 pt-0",children:[o.jsx("button",{onClick:u,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:m}),o.jsx("button",{onClick:x,className:r("flex-1 px-4 py-2.5 rounded-lg text-sm font-medium text-text-primary transition-colors",y.button),children:c})]})]})}),document.body)});export{l as C}; diff --git a/frontend/dist/assets/Contacts-BOYQNB5L.js b/frontend/dist/assets/Contacts-BOYQNB5L.js deleted file mode 100644 index 4dbdf80e..00000000 --- a/frontend/dist/assets/Contacts-BOYQNB5L.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ContactsMapMapLibre-5tC18drw.js","assets/vendor-react-ClShp8p7.js","assets/vendor-core-WoOfkQwm.js","assets/link-scoring-LdZ64cNF.js","assets/index-DY0XR9s0.js","assets/ConfirmModal-C9RGn9JH.js","assets/useThemeColors-BsFY5Gki.js","assets/PageLayout-CQDLcONp.js","assets/HashBadge-BiZRDKRx.js","assets/SignalIndicator-Dag5FlAv.js","assets/CollisionExplorerModal-2LJtIYk6.js","assets/maplibre-gl-B1CfjdFi.css","assets/index-DnW36GDX.css","assets/leaflet-CIGW-MKW.css"])))=>i.map(i=>d[i]); -import{j as e,r as s,ab as t,a7 as a,y as n,h as c,ac as l,k as r,ad as i,Z as o,ae as d,T as x,z as m,a1 as h,af as p,ag as u,aa as g,a6 as j,a0 as b,a5 as N,ah as f,o as v,ai as y,aj as w,Y as C,ak as k,p as S,al as M,X as L,am as H,an as P,ao as F,ap as E,aq as R,ar as T,as as $,at as _,au as A,av as O}from"./vendor-react-ClShp8p7.js";import{A as D,B as z,y as G,C as W,E as I,F as K,G as U,H as B,e as V,I as q,h as J,J as Y,K as Z,L as Q,f as X,M as ee,N as se}from"./index-DY0XR9s0.js";import{P as te,b as ae}from"./PageLayout-CQDLcONp.js";import{_ as ne}from"./deckgl-DTsmDcfs.js";import{c as ce,L as le,T as re,a as ie}from"./recharts-BjCld2b0.js";import{H as oe}from"./HashBadge-BiZRDKRx.js";import{a as de}from"./SignalIndicator-Dag5FlAv.js";import{C as xe}from"./CollisionExplorerModal-2LJtIYk6.js";import{C as me}from"./ConfirmModal-C9RGn9JH.js";class he 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 pe=s.lazy(()=>ne(()=>import("./ContactsMapMapLibre-5tC18drw.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])));function ue({neighbors:t,localNode:a,localHash:n,onRemoveNode:c,selectedNodeHash:l,onNodeSelected:r,highlightedEdgeKey:i,highlightedGhost:o}){return e.jsx(he,{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(pe,{neighbors:t,localNode:a,localHash:n,onRemoveNode:c,selectedNodeHash:l,onNodeSelected:r,highlightedEdgeKey:i,highlightedGhost:o})})})}function ge(e){return e>=.7?"text-accent-success":e>=.5?"text-accent-secondary":e>=.3?"text-signal-poor":"text-accent-danger"}function je(e){return`${Math.round(100*e)}%`}function be(e,s){return s.has(e.toUpperCase())}const Ne=s.memo(function({path:s,isHighlighted:t,onHighlight:l,ghostPrefixes:r}){const i=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=>be(e,r));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 ${ge(s.healthScore)}`,children:je(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=be(t,r),i=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":i?"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]),b=s.useMemo(()=>m.slice(0,o),[m,o]),N=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:[N&&e.jsxs("div",{className:"flex items-center gap-3 text-[10px]",children:[e.jsxs("span",{className:`tabular-nums ${ge(N.avgHealth)}`,children:["Avg: ",je(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(c,{className:"w-3 h-3"}),N.pathsWithGhosts," ghost"]})]}),u?e.jsx(l,{className:"w-4 h-4 text-text-muted"}):e.jsx(r,{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(i,{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:b.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 ve(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 ye={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 we({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=ye[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:ce("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:ce("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:ce("px-1.5 py-0.5 rounded text-xs font-medium",g.badgeClass),children:g.label})]}),e.jsx("div",{className:ce("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(i,{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(b,{className:"w-3 h-3"}),t.commonNeighbors.size]}),t.estimatedLocation&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(N,{className:"w-3 h-3"}),k]}),S&&e.jsxs("span",{className:ce("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(r,{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(oe,{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(N,{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: ",ve(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: ",W(t.firstSeen)," ago"]}),e.jsxs("div",{className:"text-text-muted",children:["Last seen: ",W(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: ",W(t.firstSeen)," – ",W(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(b,{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(oe,{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(Ce,{label:"Candidates",passed:t.validationStages.candidateExhaustion}),e.jsx(Ce,{label:"Temporal",passed:t.validationStages.temporalConsistency}),e.jsx(Ce,{label:"Topology",passed:t.validationStages.topologicalFit}),e.jsx(Ce,{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 Ce({label:s,passed:t}){return e.jsxs("span",{className:ce("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 ke({neighbors:t,className:n,onGhostSelect:i}){const o=G(),d=z(),[x,b]=s.useState(new Set),[N,f]=s.useState("actionable"),[v,y]=s.useState(!1),[w,C]=s.useState(!0),[k,S]=s.useState(Date.now);s.useEffect(()=>{S(Date.now())},[o]);const M=s.useMemo(()=>o.filter(e=>!function(e,s){return s-1e3*e.lastSeen>6048e5}(e,k)),[o,k]),L=s.useMemo(()=>{const e=Array.from(x);return e.length>0?e[0]:null},[x]),H=s.useMemo(()=>L?M.find(e=>e.prefix===L)??null:null,[L,M]);s.useEffect(()=>{i&&i(H&&!w?{prefix:H.prefix,commonNeighbors:Array.from(H.commonNeighbors),estimatedLocation:H.estimatedLocation}:null)},[H,w,i]),s.useEffect(()=>{w&&b(new Set)},[w]);const{confirmed:P,likely:F,possible:E,noise:R,actionableCount:T}=s.useMemo(()=>{var e;const s=[],t=[],a=[],n=[];for(const l of M)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}},[M]);if(0===M.length)return null;const $=e=>{b(s=>s.has(e)?new Set:new Set([e]))},_="all"===N,A=P.length+F.length+(_?E.length:0)+(v?R.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",T>0&&e.jsxs("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium bg-accent-success/20 text-accent-success",children:[T," actionable"]}),w&&M.length>0&&e.jsxs("span",{className:"text-xs text-text-muted ml-2",children:["(",M.length," total)"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[!w&&e.jsxs("button",{onClick:()=>f(e=>"actionable"===e?"all":"actionable"),className:ce("flex items-center gap-1.5 px-2 py-1 rounded text-xs transition-colors","all"===N?"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"===N?"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:[P.length>0&&e.jsxs("span",{className:"flex items-center gap-1 text-accent-success",children:[e.jsx(u,{className:"w-3 h-3"}),P.length," confirmed"]}),F.length>0&&e.jsxs("span",{className:"flex items-center gap-1 text-accent-tertiary",children:[e.jsx(g,{className:"w-3 h-3"}),F.length," likely"]}),E.length>0&&e.jsxs("span",{className:"text-accent-secondary",children:[E.length," possible"]}),R.length>0&&e.jsxs("span",{className:"text-text-muted",children:[R.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:[P.length>0&&e.jsxs("span",{className:"text-accent-success",children:[P.length," confirmed"]}),F.length>0&&e.jsxs("span",{className:"text-accent-tertiary",children:[F.length," likely"]}),E.length>0&&e.jsxs("span",{className:"text-accent-secondary",children:[E.length," possible"]}),R.length>0&&e.jsxs("span",{className:"text-text-muted",children:[R.length," noise"]})]})]}),e.jsxs("div",{className:"px-4 py-3 space-y-4 sm:px-5",children:[P.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 (",P.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:P.map(s=>e.jsx(we,{ghost:s,neighbors:t,isExpanded:x.has(s.prefix),onToggle:()=>$(s.prefix)},s.prefix))})]}),F.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 (",F.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:F.map(s=>e.jsx(we,{ghost:s,neighbors:t,isExpanded:x.has(s.prefix),onToggle:()=>$(s.prefix)},s.prefix))})]}),_&&E.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 (",E.length,")"]})]}),e.jsxs("div",{className:"space-y-2",children:[E.slice(0,10).map(s=>e.jsx(we,{ghost:s,neighbors:t,isExpanded:x.has(s.prefix),onToggle:()=>$(s.prefix)},s.prefix)),E.length>10&&e.jsxs("div",{className:"text-xs text-text-muted text-center py-1",children:["+",E.length-10," more possible nodes"]})]})]}),R.length>0&&"all"===N&&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(r,{className:"w-3.5 h-3.5"}),e.jsx(a,{className:"w-3.5 h-3.5"}),e.jsxs("span",{children:["Noise (",R.length,")"]})]}),v&&e.jsx("div",{className:"flex flex-wrap gap-1",children:R.map(s=>e.jsx(we,{ghost:s,neighbors:t,isExpanded:!1,onToggle:()=>{},compact:!0},s.prefix))})]}),"actionable"===N&&0===T&&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:[E.length+R.length," prefixes need more evidence."]}),e.jsxs("button",{onClick:()=>f("all"),className:"mt-3 text-accent-primary hover:underline",children:["View all ",M.length," discovered nodes"]})]}),d.observationOverrideCount>0&&A>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 Se="var(--sparkline-critical)",Me="var(--sparkline-poor)",Le="var(--sparkline-fair)",He="var(--sparkline-good)",Pe="var(--sparkline-excellent)";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:r=""}){const i=I(s),o=K(),d=!U().backgroundLoadComplete||o,x=n??(i.length>0?function(e){if(0===e.length)return Se;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 Se;if(n>0){const e=a/n;return e>=1.2?Pe:e>=.8?He:e>=.4?Le:e>=.1?Me:Se}return t>=10?Pe:t>=5?He:t>=2?Le:t>=1?Me:Se}(i):"var(--text-muted)"),m="number"==typeof t?t:60,h=a;return d&&i.length<2?e.jsx("div",{className:`flex items-center justify-center ${r}`,style:{width:m,height:h},children:e.jsx("div",{className:"rounded animate-pulse bg-white/[0.06]",style:{width:m-8,height:h-6}})}):i.length<2?e.jsx("div",{className:`flex items-center justify-center ${r}`,style:{width:m,height:h,color:Se},children:e.jsx("svg",{width:m,height:h,viewBox:`0 0 ${m} ${h}`,preserveAspectRatio:"none",children:e.jsx("line",{x1:4,y1:h/2,x2:m-4,y2:h/2,stroke:"currentColor",strokeWidth:1.5,strokeDasharray:"3,2"})})}):e.jsx("div",{className:r,style:{width:m,height:h},children:e.jsxs(le,{data:i,width:m,height:h,margin:{top:1,right:1,bottom:1,left:1},children:[l&&e.jsx(re,{content:e.jsx(Fe,{}),cursor:{stroke:"rgba(255,255,255,0.2)",strokeWidth:1}}),e.jsx(ie,{type:"monotone",dataKey:"count",stroke:x,strokeWidth:1.5,dot:!1,isAnimationActive:!1})]})})}),Re=s.memo(function({hash:t,className:a="",size:n="sm"}){const c=B(),l=z(),[r,o]=s.useState(!1),d=s.useMemo(()=>V(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",b=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:b,"aria-label":`View prefix conflict for ${d}${m?" (Viterbi resolved)":""}`,children:m?e.jsxs("span",{className:"relative",children:[e.jsx(i,{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(xe,{isOpen:r,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}=q(),a=J(),n=Y(),c=Z(),l=Q(),i=X(),o=G(),[x,m]=s.useState(null),[h,p]=s.useState("lastHeard"),[u,j]=s.useState("desc"),[f,y]=s.useState(""),[w,C]=s.useState(!1),[k,D]=s.useState(null),[z,W]=s.useState(null),[I,K]=s.useState(null),[U,B]=s.useState(null),[V,ne]=s.useState(new Map),[ce,le]=s.useState(new Map),[re,ie]=s.useState(25),[xe,he]=s.useState(25),pe=s.useRef(null),[ge,je]=s.useState(!1),be=s.useMemo(()=>(null==t?void 0:t.neighbors)??{},[null==t?void 0:t.neighbors]),Ne=s.useMemo(()=>Object.fromEntries(Object.entries(be).filter(([e])=>!a.has(e))),[be,a]),ve=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]),ye=null==t?void 0:t.local_hash,we=s.useMemo(()=>{const e=new Map;if(!(null==ve?void 0:ve.latitude)||!(null==ve?void 0:ve.longitude))return e;for(const[s,t]of Object.entries(Ne))t.latitude&&t.longitude&&0!==t.latitude&&0!==t.longitude?e.set(s,Te(ve.latitude,ve.longitude,t.latitude,t.longitude)):e.set(s,null);return e},[Ne,ve]),{neighborHashSet:Ce,neighborSignalMap:Se}=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]),Me=s.useMemo(()=>{const e=f.toLowerCase().trim(),s="neighbor"===e||"neighbors"===e,t=w||s;return Object.fromEntries(Object.entries(Ne).filter(([a,n])=>{if(t&&!Ce.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)}))},[Ne,f,w,Ce]),Le=s.useMemo(()=>Object.entries(Me).sort(([e,s],[t,a])=>{let n=0;switch(h){case"lastHeard":n=(s.last_seen||0)-(a.last_seen||0);break;case"distance":{const s=we.get(e)??null,a=we.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"===u?-n:n}),[Me,h,u,we,l]),He=Le.filter(([,e])=>e.latitude&&e.longitude&&0!==e.latitude&&0!==e.longitude).length,Pe=s.useMemo(()=>new Set(c),[c]),Fe=s.useMemo(()=>0===re?Le:Le.slice(0,xe),[Le,xe,re]);s.useEffect(()=>{he(re||Le.length)},[h,u,f,w,re,Le.length]),s.useEffect(()=>{if(0===re)return;const e=new IntersectionObserver(e=>{e[0].isIntersecting&&xeMath.min(e+re,Le.length))},{threshold:.1,rootMargin:"100px"});return pe.current&&e.observe(pe.current),()=>e.disconnect()},[re,xe,Le.length]);const $e=s.useCallback(e=>{ie(e),he(e||Le.length),je(!1)},[Le.length]),_e=s.useCallback(e=>{h===e?j(e=>"desc"===e?"asc":"desc"):(p(e),j("desc"))},[h]),Ae=s.useCallback(e=>{const s=Ne[e];(null==s?void 0:s.latitude)&&(null==s?void 0:s.longitude)&&0!==s.latitude&&0!==s.longitude&&D(e)},[Ne]),Oe=s.useCallback(()=>{D(null)},[]),De=s.useCallback(async(e,s)=>{if(s.stopPropagation(),!U){B(e),ne(s=>{const t=new Map(s);return t.delete(e),t}),le(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 ee(s,30);t.success&&t.data?(ne(s=>new Map(s).set(e,t.data)),setTimeout(()=>{ne(s=>{const t=new Map(s);return t.delete(e),t})},1e4)):(le(s=>new Map(s).set(e,t.error||"Ping failed")),setTimeout(()=>{le(s=>{const t=new Map(s);return t.delete(e),t})},5e3))}catch(t){const s=t instanceof Error?t.message:"Ping failed";le(t=>new Map(t).set(e,s)),setTimeout(()=>{le(s=>{const t=new Map(s);return t.delete(e),t})},5e3)}finally{B(null)}}},[U]);return e.jsxs(te,{children:[e.jsx(ae,{title:"Contacts",icon:e.jsx(b,{}),controls:e.jsxs("div",{className:"flex items-baseline gap-3 sm:gap-4",children:[e.jsxs("span",{className:"roster-title tabular-nums",children:[Le.length," node",1!==Le.length?"s":""]}),He>0&&e.jsxs("span",{className:"roster-title flex items-baseline gap-1.5 tabular-nums",children:[e.jsx(N,{className:"w-3.5 h-3.5 relative top-[2px]"}),He," with location"]})]})}),e.jsx("div",{className:"relative",children:e.jsx(ue,{neighbors:Ne,localNode:ve,localHash:ye,onRemoveNode:n,selectedNodeHash:k,onNodeSelected:Oe,highlightedEdgeKey:z,highlightedGhost:I})}),e.jsx(fe,{maxPaths:10,highlightedEdge:z,onHighlightEdge:W}),o.length>0&&e.jsx("div",{className:"chart-container",children:e.jsx(ke,{neighbors:Ne,onGhostSelect:K})}),e.jsxs("div",{className:"chart-container",children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(b,{className:"chart-title-icon"}),"Discovered Contacts"]}),e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2",children:[Ce.size>0&&e.jsxs("button",{onClick:()=>C(!w),className:"flex items-center gap-1 px-1.5 sm:px-2.5 py-1.5 text-xs rounded-lg transition-colors "+(w?"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:w?"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:Ce.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:f,onChange:e=>y(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:()=>{y(""),"neighbor"!==f.toLowerCase().trim()&&"neighbors"!==f.toLowerCase().trim()||C(!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:()=>_e("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(v,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Recent"}),"lastHeard"===h&&e.jsx(H,{className:"w-3 h-3 "+("asc"===u?"rotate-180":"")})]}),e.jsxs("button",{onClick:()=>_e("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(P,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Distance"}),"distance"===h&&e.jsx(H,{className:"w-3 h-3 "+("asc"===u?"rotate-180":"")})]}),e.jsxs("button",{onClick:()=>_e("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(H,{className:"w-3 h-3 "+("asc"===u?"rotate-180":"")})]})]}),e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>je(!ge),className:"flex items-center gap-1 px-2 py-1.5 text-xs text-text-muted hover:text-text-secondary hover:bg-white/5 rounded-lg transition-colors",title:"Items per page",children:[e.jsx("span",{className:"tabular-nums",children:0===re?"All":re}),e.jsx(r,{className:"w-3 h-3 transition-transform "+(ge?"rotate-180":"")})]}),ge&&e.jsx("div",{className:"absolute right-0 top-full mt-1 z-50 bg-bg-surface border border-border-subtle rounded-lg shadow-lg py-1 min-w-[80px]",children:[25,50,100,0].map(s=>e.jsx("button",{onClick:()=>$e(s),className:"w-full px-3 py-1.5 text-xs text-left hover:bg-white/5 transition-colors "+(re===s?"text-accent-primary":"text-text-secondary"),children:0===s?"All":s},s))})]})]})]}),Le.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(([s,t])=>{var a;const n=t.latitude&&t.longitude&&0!==t.latitude&&0!==t.longitude,c=t.node_name||t.name||"Unknown",r=Pe.has(s),i=Ce.has(s),o=we.get(s),x=l.get(s)||0,h=i?Se.get(s):void 0,p=i&&h,u=null==(a=t.contact_type)?void 0:a.toLowerCase(),j="room server"===u||"room_server"===u||"room"===u||"server"===u,b="companion"===u||"client"===u||"cli"===u,N=t.is_repeater||"repeater"===u||"rep"===u,f=i?"direct":"flood",v=i?"Direct RF contact (zero-hop neighbor)":"Flood routing (multi-hop via mesh)";return e.jsxs("div",{className:`contacts-grid-row ${r?"bg-amber-500/5 border-l-2 border-l-amber-400":""} ${n?"cursor-pointer hover:bg-white/[0.02]":""}`,onClick:()=>Ae(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&&N?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"}):b?e.jsx(R,{className:"w-5 h-5 text-text-muted"}):N?"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}),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"}),r&&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"]}),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(oe,{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(de,{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:x>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*x).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?se(t.last_seen):"—"})}),e.jsxs("div",{className:"contacts-col-actions flex items-center justify-end gap-1",children:[i&&e.jsx(e.Fragment,{children:V.has(s)?e.jsxs("div",{className:"flex items-center gap-1 text-accent-success",title:`RTT: ${V.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:[V.get(s).snr_db.toFixed(1),"dB"]})]}):ce.has(s)?e.jsx("span",{className:"text-red-400 text-[10px]",title:ce.get(s),children:"✗"}):e.jsx("button",{onClick:e=>De(s,e),disabled:null!==U,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:U===s?e.jsx(_,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 animate-spin"}):e.jsx(A,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})}),e.jsx("button",{onClick:e=>{e.stopPropagation(),m({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(O,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]},s);var y,w})}),re>0&&xe0&&xehe(e=>Math.min(e+re,Le.length)),className:"text-accent-primary hover:text-accent-primary/80 transition-colors",children:"Load more"})]})]}):e.jsxs("div",{className:"roster-empty",children:[e.jsx(b,{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(me,{isOpen:!!x,title:"Remove Contact",message:`Are you sure you would like to remove ${(null==x?void 0:x.name)||"this contact"}?`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{x&&n(x.hash),m(null)},onCancel:()=>m(null)})]})}},Symbol.toStringTag,{value:"Module"}));export{$e as C,Ee as N,Re as P}; diff --git a/frontend/dist/assets/Contacts-au5gCj-N.js b/frontend/dist/assets/Contacts-au5gCj-N.js new file mode 100644 index 00000000..28c806d0 --- /dev/null +++ b/frontend/dist/assets/Contacts-au5gCj-N.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ContactsMapMapLibre-C5vcx8J6.js","assets/vendor-react-O8XH9yVn.js","assets/vendor-core-WoOfkQwm.js","assets/link-scoring-DacI-LFP.js","assets/index-Dp0UlTio.js","assets/ConfirmModal-DYznouaT.js","assets/useThemeColors-CD0TSU03.js","assets/PageLayout-DE5PEtD2.js","assets/HashBadge-aS_UIcg2.js","assets/SignalIndicator-BVAbF7xm.js","assets/CollisionExplorerModal-DEtEH0fD.js","assets/maplibre-gl-B1CfjdFi.css","assets/index-DjRKexsi.css","assets/leaflet-CIGW-MKW.css"])))=>i.map(i=>d[i]); +import{j as e,r as s,ab as t,a7 as a,z as n,h as l,ac as c,k as i,ad as r,Z as o,ae as d,y as x,A as m,a1 as h,af as p,ag as u,aa as g,a6 as j,a0 as b,a5 as N,ah as v,o as f,ai as y,aj as w,Y as C,ak as k,p as S,al as M,X as L,am as H,an as P,ao as F,ap as E,aq as R,ar as $,as as T,at as _,au as A,av as O}from"./vendor-react-O8XH9yVn.js";import{A as D,B as z,y as G,C as W,E as I,F as K,G as U,H as B,e as V,I as q,h as J,J as Y,K as Z,L as Q,f as X,m as ee,M as se,N as te}from"./index-Dp0UlTio.js";import{P as ae,b as ne}from"./PageLayout-DE5PEtD2.js";import{_ as le}from"./deckgl-DTsmDcfs.js";import{c as ce,L as ie,T as re,a as oe}from"./recharts-BU7auunF.js";import{H as de}from"./HashBadge-aS_UIcg2.js";import{a as xe}from"./SignalIndicator-BVAbF7xm.js";import{C as me}from"./CollisionExplorerModal-DEtEH0fD.js";import{C as he}from"./ConfirmModal-DYznouaT.js";class pe 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 ue=s.lazy(()=>le(()=>import("./ContactsMapMapLibre-C5vcx8J6.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])));function ge({neighbors:t,localNode:a,localHash:n,onRemoveNode:l,selectedNodeHash:c,onNodeSelected:i,highlightedEdgeKey:r,highlightedGhost:o}){return e.jsx(pe,{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(ue,{neighbors:t,localNode:a,localHash:n,onRemoveNode:l,selectedNodeHash:c,onNodeSelected:i,highlightedEdgeKey:r,highlightedGhost:o})})})}function je(e){return e>=.7?"text-accent-success":e>=.5?"text-accent-secondary":e>=.3?"text-signal-poor":"text-accent-danger"}function be(e){return`${Math.round(100*e)}%`}function Ne(e,s){return s.has(e.toUpperCase())}const ve=s.memo(function({path:s,isHighlighted:t,onHighlight:c,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=>Ne(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:()=>c(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 ${je(s.healthScore)}`,children:be(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 c=Ne(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 "+(c?"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:[c&&e.jsx(l,{className:"w-2.5 h-2.5"}),t]}),anew Set(p.map(e=>e.prefix.toUpperCase())),[p]),b=s.useMemo(()=>m.slice(0,o),[m,o]),N=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]),v=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:[N&&e.jsxs("div",{className:"flex items-center gap-3 text-[10px]",children:[e.jsxs("span",{className:`tabular-nums ${je(N.avgHealth)}`,children:["Avg: ",be(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(l,{className:"w-3 h-3"}),N.pathsWithGhosts," ghost"]})]}),u?e.jsx(c,{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(l,{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(l,{className:"w-3 h-3 text-accent-tertiary"})," Ghost"]})]}),e.jsx("div",{className:"space-y-1 max-h-64 overflow-y-auto",children:b.map(s=>e.jsx(ve,{path:s,isHighlighted:x===s.weakestLinkKey,onHighlight:v,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 ye(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 we={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 Ce({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=we[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:ce("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(l,{className:ce("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:ce("px-1.5 py-0.5 rounded text-xs font-medium",g.badgeClass),children:g.label})]}),e.jsx("div",{className:ce("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(b,{className:"w-3 h-3"}),t.commonNeighbors.size]}),t.estimatedLocation&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(N,{className:"w-3 h-3"}),k]}),S&&e.jsxs("span",{className:ce("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(v,{className:"w-3 h-3"}),"Collision?"]})]})]}),o?e.jsx(c,{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(v,{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(de,{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(N,{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: ",ye(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(f,{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: ",W(t.firstSeen)," ago"]}),e.jsxs("div",{className:"text-text-muted",children:["Last seen: ",W(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: ",W(t.firstSeen)," – ",W(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(b,{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(de,{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(ke,{label:"Candidates",passed:t.validationStages.candidateExhaustion}),e.jsx(ke,{label:"Temporal",passed:t.validationStages.temporalConsistency}),e.jsx(ke,{label:"Topology",passed:t.validationStages.topologicalFit}),e.jsx(ke,{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 ke({label:s,passed:t}){return e.jsxs("span",{className:ce("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 Se({neighbors:t,className:n,onGhostSelect:r}){const o=G(),d=z(),[x,b]=s.useState(new Set),[N,v]=s.useState("actionable"),[f,y]=s.useState(!1),[w,C]=s.useState(!0),[k,S]=s.useState(Date.now);s.useEffect(()=>{S(Date.now())},[o]);const M=s.useMemo(()=>o.filter(e=>!function(e,s){return s-1e3*e.lastSeen>6048e5}(e,k)),[o,k]),L=s.useMemo(()=>{const e=Array.from(x);return e.length>0?e[0]:null},[x]),H=s.useMemo(()=>L?M.find(e=>e.prefix===L)??null:null,[L,M]);s.useEffect(()=>{r&&r(H&&!w?{prefix:H.prefix,commonNeighbors:Array.from(H.commonNeighbors),estimatedLocation:H.estimatedLocation}:null)},[H,w,r]),s.useEffect(()=>{w&&b(new Set)},[w]);const{confirmed:P,likely:F,possible:E,noise:R,actionableCount:$}=s.useMemo(()=>{var e;const s=[],t=[],a=[],n=[];for(const c of M)switch((null==(e=c.classification)?void 0:e.tier)??"noise"){case"confirmed":s.push(c);break;case"likely":t.push(c);break;case"possible":a.push(c);break;case"noise":n.push(c)}const l=(e,s)=>s.observationCount-e.observationCount;return s.sort(l),t.sort(l),a.sort(l),n.sort(l),{confirmed:s,likely:t,possible:a,noise:n,actionableCount:s.length+t.length}},[M]);if(0===M.length)return null;const T=e=>{b(s=>s.has(e)?new Set:new Set([e]))},_="all"===N,A=P.length+F.length+(_?E.length:0)+(f?R.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(l,{className:"chart-title-icon"}),"Ghost Buster",$>0&&e.jsxs("span",{className:"px-2 py-0.5 rounded-full text-xs font-medium bg-accent-success/20 text-accent-success",children:[$," actionable"]}),w&&M.length>0&&e.jsxs("span",{className:"text-xs text-text-muted ml-2",children:["(",M.length," total)"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[!w&&e.jsxs("button",{onClick:()=>v(e=>"actionable"===e?"all":"actionable"),className:ce("flex items-center gap-1.5 px-2 py-1 rounded text-xs transition-colors","all"===N?"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"===N?"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-5 py-3 flex items-center gap-3 text-xs cursor-pointer hover:bg-white/5 transition-colors",onClick:()=>C(!1),children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[P.length>0&&e.jsxs("span",{className:"flex items-center gap-1 text-accent-success",children:[e.jsx(u,{className:"w-3 h-3"}),P.length," confirmed"]}),F.length>0&&e.jsxs("span",{className:"flex items-center gap-1 text-accent-tertiary",children:[e.jsx(g,{className:"w-3 h-3"}),F.length," likely"]}),E.length>0&&e.jsxs("span",{className:"text-accent-secondary",children:[E.length," possible"]}),R.length>0&&e.jsxs("span",{className:"text-text-muted",children:[R.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-5 py-2 flex items-center gap-3 text-xs border-b border-border-muted/30",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:[P.length>0&&e.jsxs("span",{className:"text-accent-success",children:[P.length," confirmed"]}),F.length>0&&e.jsxs("span",{className:"text-accent-tertiary",children:[F.length," likely"]}),E.length>0&&e.jsxs("span",{className:"text-accent-secondary",children:[E.length," possible"]}),R.length>0&&e.jsxs("span",{className:"text-text-muted",children:[R.length," noise"]})]})]}),e.jsxs("div",{className:"px-5 py-4 space-y-4",children:[P.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 (",P.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:P.map(s=>e.jsx(Ce,{ghost:s,neighbors:t,isExpanded:x.has(s.prefix),onToggle:()=>T(s.prefix)},s.prefix))})]}),F.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 (",F.length,")"]})]}),e.jsx("div",{className:"space-y-2",children:F.map(s=>e.jsx(Ce,{ghost:s,neighbors:t,isExpanded:x.has(s.prefix),onToggle:()=>T(s.prefix)},s.prefix))})]}),_&&E.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 (",E.length,")"]})]}),e.jsxs("div",{className:"space-y-2",children:[E.slice(0,10).map(s=>e.jsx(Ce,{ghost:s,neighbors:t,isExpanded:x.has(s.prefix),onToggle:()=>T(s.prefix)},s.prefix)),E.length>10&&e.jsxs("div",{className:"text-xs text-text-muted text-center py-1",children:["+",E.length-10," more possible nodes"]})]})]}),R.length>0&&"all"===N&&e.jsxs("div",{className:"space-y-2",children:[e.jsxs("button",{onClick:()=>y(!f),className:"flex items-center gap-2 text-xs text-text-muted hover:text-text-secondary transition-colors",children:[f?e.jsx(c,{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 (",R.length,")"]})]}),f&&e.jsx("div",{className:"flex flex-wrap gap-1",children:R.map(s=>e.jsx(Ce,{ghost:s,neighbors:t,isExpanded:!1,onToggle:()=>{},compact:!0},s.prefix))})]}),"actionable"===N&&0===$&&e.jsxs("div",{className:"text-center py-6 text-sm text-text-muted",children:[e.jsx(l,{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:[E.length+R.length," prefixes need more evidence."]}),e.jsxs("button",{onClick:()=>v("all"),className:"mt-3 text-accent-primary hover:underline",children:["View all ",M.length," discovered nodes"]})]}),d.observationOverrideCount>0&&A>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 Me="var(--sparkline-critical)",Le="var(--sparkline-poor)",He="var(--sparkline-fair)",Pe="var(--sparkline-good)",Fe="var(--sparkline-excellent)";function Ee({active:s,payload:t}){if(!s||!t||!t.length)return null;const a=t[0].payload,n=new Date(a.timestamp),l=`${(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:l}),e.jsx("span",{className:"ml-1.5 font-semibold tabular-nums",children:a.count})]})}const Re=s.memo(function({nodeHash:s,width:t=60,height:a=20,color:n,showArea:l=!0,showTooltip:c=!1,className:i=""}){const r=I(s),o=K(),d=!U().backgroundLoadComplete||o,x=n??(r.length>0?function(e){if(0===e.length)return Me;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 Me;if(n>0){const e=a/n;return e>=1.2?Fe:e>=.8?Pe:e>=.4?He:e>=.1?Le:Me}return t>=10?Fe:t>=5?Pe:t>=2?He:t>=1?Le:Me}(r):"var(--text-muted)"),m="number"==typeof t?t:60,h=a;return d&&r.length<2?e.jsx("div",{className:`flex items-center justify-center ${i}`,style:{width:m,height:h},children:e.jsx("div",{className:"rounded animate-pulse bg-white/[0.06]",style:{width:m-8,height:h-6}})}):r.length<2?e.jsx("div",{className:`flex items-center justify-center ${i}`,style:{width:m,height:h,color:Me},children:e.jsx("svg",{width:m,height:h,viewBox:`0 0 ${m} ${h}`,preserveAspectRatio:"none",children:e.jsx("line",{x1:4,y1:h/2,x2:m-4,y2:h/2,stroke:"currentColor",strokeWidth:1.5,strokeDasharray:"3,2"})})}):e.jsx("div",{className:i,style:{width:m,height:h},children:e.jsxs(ie,{data:r,width:m,height:h,margin:{top:1,right:1,bottom:1,left:1},children:[c&&e.jsx(re,{content:e.jsx(Ee,{}),cursor:{stroke:"rgba(255,255,255,0.2)",strokeWidth:1}}),e.jsx(oe,{type:"monotone",dataKey:"count",stroke:x,strokeWidth:1.5,dot:!1,isAnimationActive:!1})]})})}),$e=s.memo(function({hash:t,className:a="",size:n="sm"}){const l=B(),c=z(),[i,o]=s.useState(!1),d=s.useMemo(()=>V(t),[t]),x=s.useMemo(()=>d?l.find(e=>e.prefix===d)??null:null,[d,l]),m=c.totalPaths>0&&c.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",b=m?`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: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:b,"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(me,{isOpen:i,prefix:x.prefix,candidateHashes:x.candidateHashes,onClose:p})]})});function Te(e,s,t,a){const n=(t-e)*Math.PI/180,l=(a-s)*Math.PI/180,c=Math.sin(n/2)*Math.sin(n/2)+Math.cos(e*Math.PI/180)*Math.cos(t*Math.PI/180)*Math.sin(l/2)*Math.sin(l/2);return 2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c))*6371e3}const _e=Object.freeze(Object.defineProperty({__proto__:null,default:function(){const{stats:t}=q(),a=J(),n=Y(),l=Z(),c=Q(),r=X(),o=G(),x=ee(),[m,h]=s.useState(null),[p,u]=s.useState("lastHeard"),[j,v]=s.useState("desc"),[y,w]=s.useState(""),[C,k]=s.useState(!1),[D,z]=s.useState(null),[W,I]=s.useState(null),[K,U]=s.useState(null),[B,V]=s.useState(null),[le,ce]=s.useState(new Map),[ie,re]=s.useState(new Map),[oe,me]=s.useState(25),[pe,ue]=s.useState(25),je=s.useRef(null),[be,Ne]=s.useState(!1),ve=s.useMemo(()=>(null==t?void 0:t.neighbors)??{},[null==t?void 0:t.neighbors]),ye=s.useMemo(()=>Object.fromEntries(Object.entries(ve).filter(([e])=>!a.has(e))),[ve,a]),we=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]),Ce=null==t?void 0:t.local_hash,ke=s.useMemo(()=>{const e=new Map;if(!(null==we?void 0:we.latitude)||!(null==we?void 0:we.longitude))return e;for(const[s,t]of Object.entries(ye))t.latitude&&t.longitude&&0!==t.latitude&&0!==t.longitude?e.set(s,Te(we.latitude,we.longitude,t.latitude,t.longitude)):e.set(s,null);return e},[ye,we]),{neighborHashSet:Me,neighborSignalMap:Le}=s.useMemo(()=>{const e=new Set,s=new Map;for(const t of r)e.add(t.hash),s.set(t.hash,{avgRssi:t.avgRssi,avgSnr:t.avgSnr});return{neighborHashSet:e,neighborSignalMap:s}},[r]),He=s.useMemo(()=>{const e=y.toLowerCase().trim(),s="neighbor"===e||"neighbors"===e,t=C||s;return Object.fromEntries(Object.entries(ye).filter(([a,n])=>{if(t&&!Me.has(a))return!1;if(s)return!0;if(!e)return!0;const l=(n.node_name||n.name||"").toLowerCase(),c=a.slice(2,4).toLowerCase();return l.includes(e)||c.includes(e)||a.toLowerCase().includes(e)}))},[ye,y,C,Me]),Pe=s.useMemo(()=>Object.entries(He).sort(([e,s],[t,a])=>{let n=0;switch(p){case"lastHeard":n=(s.last_seen||0)-(a.last_seen||0);break;case"distance":{const s=ke.get(e)??null,a=ke.get(t)??null;n=null===s&&null===a?0:null===s?1:null===a?-1:s-a;break}case"centrality":n=(c.get(e)||0)-(c.get(t)||0)}return"desc"===j?-n:n}),[He,p,j,ke,c]),Fe=Pe.filter(([,e])=>e.latitude&&e.longitude&&0!==e.latitude&&0!==e.longitude).length,Ee=s.useMemo(()=>new Set(l),[l]),_e=s.useMemo(()=>0===oe?Pe:Pe.slice(0,pe),[Pe,pe,oe]);s.useEffect(()=>{ue(oe||Pe.length)},[p,j,y,C,oe,Pe.length]),s.useEffect(()=>{if(0===oe)return;const e=new IntersectionObserver(e=>{e[0].isIntersecting&&peMath.min(e+oe,Pe.length))},{threshold:.1,rootMargin:"100px"});return je.current&&e.observe(je.current),()=>e.disconnect()},[oe,pe,Pe.length]);const Ae=s.useCallback(e=>{me(e),ue(e||Pe.length),Ne(!1)},[Pe.length]),Oe=s.useCallback(e=>{p===e?v(e=>"desc"===e?"asc":"desc"):(u(e),v("desc"))},[p]),De=s.useCallback(e=>{const s=ye[e];(null==s?void 0:s.latitude)&&(null==s?void 0:s.longitude)&&0!==s.latitude&&0!==s.longitude&&z(e)},[ye]),ze=s.useCallback(()=>{z(null)},[]),Ge=s.useCallback(async(e,s)=>{if(s.stopPropagation(),!B){V(e),ce(s=>{const t=new Map(s);return t.delete(e),t}),re(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 se(s,30);t.success&&t.data?(ce(s=>new Map(s).set(e,t.data)),setTimeout(()=>{ce(s=>{const t=new Map(s);return t.delete(e),t})},1e4)):(re(s=>new Map(s).set(e,t.error||"Ping failed")),setTimeout(()=>{re(s=>{const t=new Map(s);return t.delete(e),t})},5e3))}catch(t){const s=t instanceof Error?t.message:"Ping failed";re(t=>new Map(t).set(e,s)),setTimeout(()=>{re(s=>{const t=new Map(s);return t.delete(e),t})},5e3)}finally{V(null)}}},[B]);return e.jsxs(ae,{children:[e.jsx(ne,{title:"Contacts",icon:e.jsx(b,{}),controls:e.jsxs("div",{className:"flex items-baseline gap-3 sm:gap-4",children:[e.jsxs("span",{className:"roster-title tabular-nums",children:[Pe.length," node",1!==Pe.length?"s":""]}),Fe>0&&e.jsxs("span",{className:"roster-title flex items-baseline gap-1.5 tabular-nums",children:[e.jsx(N,{className:"w-3.5 h-3.5 relative top-[2px]"}),Fe," with location"]})]})}),x?e.jsx(ge,{neighbors:ye,localNode:we,localHash:Ce,onRemoveNode:n,selectedNodeHash:D,onNodeSelected:ze,highlightedEdgeKey:W,highlightedGhost:K}):e.jsx("div",{className:"glass-card aspect-video flex items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-6 h-6 border-2 border-accent-primary border-t-transparent rounded-full animate-spin"}),e.jsx("span",{className:"text-sm text-text-muted",children:"Loading map..."})]})}),e.jsx(fe,{maxPaths:10,highlightedEdge:W,onHighlightEdge:I}),o.length>0&&(x?e.jsx("div",{className:"chart-container",children:e.jsx(Se,{neighbors:ye,onGhostSelect:U})}):e.jsxs("div",{className:"glass-card",children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-bg-elevated animate-pulse"}),e.jsx("div",{className:"w-24 h-4 rounded bg-bg-elevated animate-pulse"})]}),e.jsx("div",{className:"w-6 h-6 rounded bg-bg-elevated animate-pulse"})]}),e.jsx("div",{className:"px-5 py-3",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-20 h-4 rounded bg-bg-elevated animate-pulse"}),e.jsx("div",{className:"w-16 h-4 rounded bg-bg-elevated animate-pulse"})]})})]})),e.jsx("div",{className:"chart-container",children:x?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"chart-title",children:[e.jsx(b,{className:"chart-title-icon"}),"Discovered Contacts"]}),e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2",children:[Me.size>0&&e.jsxs("button",{onClick:()=>k(!C),className:"flex items-center gap-1 px-1.5 sm:px-2.5 py-1.5 text-xs rounded-lg transition-colors "+(C?"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:C?"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:Me.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:y,onChange:e=>w(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"}),y&&e.jsx("button",{onClick:()=>{w(""),"neighbor"!==y.toLowerCase().trim()&&"neighbors"!==y.toLowerCase().trim()||k(!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:()=>Oe("lastHeard"),className:"flex items-center gap-1 p-1.5 sm:px-2 sm:py-1.5 text-xs rounded-lg transition-colors "+("lastHeard"===p?"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(f,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden sm:inline",children:"Recent"}),"lastHeard"===p&&e.jsx(H,{className:"w-3 h-3 "+("asc"===j?"rotate-180":"")})]}),e.jsxs("button",{onClick:()=>Oe("distance"),className:"flex items-center gap-1 p-1.5 sm:px-2 sm:py-1.5 text-xs rounded-lg transition-colors "+("distance"===p?"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"===p&&e.jsx(H,{className:"w-3 h-3 "+("asc"===j?"rotate-180":"")})]}),e.jsxs("button",{onClick:()=>Oe("centrality"),className:"flex items-center gap-1 p-1.5 sm:px-2 sm:py-1.5 text-xs rounded-lg transition-colors "+("centrality"===p?"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"===p&&e.jsx(H,{className:"w-3 h-3 "+("asc"===j?"rotate-180":"")})]})]}),e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>Ne(!be),className:"flex items-center gap-1 px-2 py-1.5 text-xs text-text-muted hover:text-text-secondary hover:bg-white/5 rounded-lg transition-colors",title:"Items per page",children:[e.jsx("span",{className:"tabular-nums",children:0===oe?"All":oe}),e.jsx(i,{className:"w-3 h-3 transition-transform "+(be?"rotate-180":"")})]}),be&&e.jsx("div",{className:"absolute right-0 top-full mt-1 z-50 bg-bg-surface border border-border-subtle rounded-lg shadow-lg py-1 min-w-[80px]",children:[25,50,100,0].map(s=>e.jsx("button",{onClick:()=>Ae(s),className:"w-full px-3 py-1.5 text-xs text-left hover:bg-white/5 transition-colors "+(oe===s?"text-accent-primary":"text-text-secondary"),children:0===s?"All":s},s))})]})]})]}),Pe.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:_e.map(([s,t])=>{var a;const n=t.latitude&&t.longitude&&0!==t.latitude&&0!==t.longitude,l=t.node_name||t.name||"Unknown",i=Ee.has(s),r=Me.has(s),o=ke.get(s),x=c.get(s)||0,m=r?Le.get(s):void 0,p=r&&m,u=null==(a=t.contact_type)?void 0:a.toLowerCase(),j="room server"===u||"room_server"===u||"room"===u||"server"===u,b="companion"===u||"client"===u||"cli"===u,N=t.is_repeater||"repeater"===u||"rep"===u,v=r?"direct":"flood",f=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:()=>De(s),children:[e.jsxs("div",{className:"contacts-col-node flex items-center gap-2 min-w-0",children:[p&&null!==(null==m?void 0:m.avgSnr)?e.jsx("div",{className:"w-2 h-2 rounded-full flex-shrink-0 self-center "+(w=m.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:f,children:j&&N?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"}):b?e.jsx(R,{className:"w-5 h-5 text-text-muted"}):N?"direct"===v?e.jsx($,{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:l,children:l}),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(T,{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(de,{hash:s,size:"xs",prefixLength:8,suffixLength:6}),e.jsx($e,{hash:s})]})]})]}),e.jsxs("div",{className:"contacts-col-signal flex items-center justify-end gap-2",children:[p&&null!==(null==m?void 0:m.avgRssi)&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(xe,{rssi:m.avgRssi,className:"w-3.5 h-3.5"}),e.jsx("span",{className:"type-data-xs tabular-nums text-text-muted",children:Math.round(m.avgRssi)})]}),p&&null!==(null==m?void 0:m.avgSnr)&&e.jsxs("span",{className:"type-data-xs tabular-nums text-text-muted",children:[m.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:x>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*x).toFixed(0),"%"]})]})}),e.jsx("div",{className:"contacts-col-activity flex items-center justify-center",children:e.jsx(Re,{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?te(t.last_seen):"—"})}),e.jsxs("div",{className:"contacts-col-actions flex items-center justify-end gap-1",children:[r&&e.jsx(e.Fragment,{children:le.has(s)?e.jsxs("div",{className:"flex items-center gap-1 text-accent-success",title:`RTT: ${le.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:[le.get(s).snr_db.toFixed(1),"dB"]})]}):ie.has(s)?e.jsx("span",{className:"text-red-400 text-[10px]",title:ie.get(s),children:"✗"}):e.jsx("button",{onClick:e=>Ge(s,e),disabled:null!==B,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:B===s?e.jsx(_,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 animate-spin"}):e.jsx(A,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})}),e.jsx("button",{onClick:e=>{e.stopPropagation(),h({hash:s,name:l})},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(O,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]},s);var y,w})}),oe>0&&pe0&&peue(e=>Math.min(e+oe,Pe.length)),className:"text-accent-primary hover:text-accent-primary/80 transition-colors",children:"Load more"})]})]}):e.jsxs("div",{className:"roster-empty",children:[e.jsx(b,{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.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"chart-header",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-bg-elevated animate-pulse"}),e.jsx("div",{className:"w-32 h-4 rounded bg-bg-elevated animate-pulse"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-16 h-6 rounded bg-bg-elevated animate-pulse"}),e.jsx("div",{className:"w-24 h-6 rounded bg-bg-elevated animate-pulse"}),e.jsx("div",{className:"w-16 h-6 rounded bg-bg-elevated animate-pulse"})]})]}),e.jsx("div",{className:"px-3 py-3 space-y-3",children:[...Array(5)].map((s,t)=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-5 h-5 rounded bg-bg-elevated animate-pulse"}),e.jsxs("div",{className:"flex-1 space-y-1.5",children:[e.jsx("div",{className:"h-4 w-32 rounded bg-bg-elevated animate-pulse"}),e.jsx("div",{className:"h-3 w-24 rounded bg-bg-elevated animate-pulse"})]}),e.jsx("div",{className:"w-12 h-4 rounded bg-bg-elevated animate-pulse"}),e.jsx("div",{className:"w-16 h-4 rounded bg-bg-elevated animate-pulse"})]},t))})]})}),e.jsx(he,{isOpen:!!m,title:"Remove Contact",message:`Are you sure you would like to remove ${(null==m?void 0:m.name)||"this contact"}?`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{m&&n(m.hash),h(null)},onCancel:()=>h(null)})]})}},Symbol.toStringTag,{value:"Module"}));export{_e as C,Re as N,$e as P}; diff --git a/frontend/dist/assets/ContactsMapMapLibre-5tC18drw.js b/frontend/dist/assets/ContactsMapMapLibre-5tC18drw.js deleted file mode 100644 index 7faa5478..00000000 --- a/frontend/dist/assets/ContactsMapMapLibre-5tC18drw.js +++ /dev/null @@ -1 +0,0 @@ -import{r as A,b as e,j as t,aa as r,ab as n,b9 as o,ba as i,h as a,at as s,ao as l,V as c,a2 as u,ad as d,k as f,aP as g,bb as h,bc as m,bd as b,be as p,af as x,z as v,aL as w,Z as y,bf as k,bg as C,bh as B,c as M,bi as D,X as E,bj as N,a8 as Q,bk as j,av as P,b2 as F,bl as S,$ as L,o as I,an as R,a5 as T,bm as _,au as H,b5 as z,b6 as G,b8 as O,b4 as U,bn as Y}from"./vendor-react-ClShp8p7.js";import"./maplibre-gl-Bk5DsYkB.js";import{L as W,c as V}from"./link-scoring-LdZ64cNF.js";import{y as Z,B as K,T as J,at as X,au as q,av as $,e as AA,aw as eA,M as tA,N as rA,ax as nA,ay as oA,f as iA,G as aA,az as sA,aA as lA}from"./index-DY0XR9s0.js";import{C as cA}from"./ConfirmModal-C9RGn9JH.js";import{c as uA}from"./recharts-BjCld2b0.js";import{g as dA,f as fA,h as gA,i as hA}from"./useThemeColors-BsFY5Gki.js";import{p as mA,a as bA}from"./vendor-core-WoOfkQwm.js";import{P as pA,N as xA}from"./Contacts-BOYQNB5L.js";import"./deckgl-DTsmDcfs.js";import"./PageLayout-CQDLcONp.js";import"./HashBadge-BiZRDKRx.js";import"./SignalIndicator-Dag5FlAv.js";import"./CollisionExplorerModal-2LJtIYk6.js";import"./leaflet-D_ckmI2R.js";function vA(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 wA({label:A,icon:e,status:n,detail:o}){return t.jsxs("div",{className:uA("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:uA("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:uA("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 yA=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(wA,{label:"Analyzing Database",icon:t.jsx(i,{className:"w-4 h-4"}),status:f("analyzing"),detail:"Processing packet paths"}),t.jsx(wA,{label:"Building Topology",icon:t.jsx(n,{className:"w-4 h-4"}),status:f("building"),detail:"Computing mesh edges"}),t.jsx(wA,{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)}),kA={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 CA(){if("undefined"==typeof window)return kA;const A=dA(),e=fA();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:kA.edges.neighborRest,neighborHover:kA.edges.neighborHover,highlight:e.highlight},edgeOpacity:kA.edgeOpacity}}const BA=2e3;function MA({text:A}){return t.jsx(J,{content:A,delay:200,children:t.jsx(g,{className:"w-3.5 h-3.5 text-text-muted cursor-help"})})}function DA({title:A,tooltip:e,isOpen:r,onToggle:n,hasBorder:o=!1}){return t.jsxs("button",{onClick:n,className:"w-full flex items-center justify-between text-text-secondary font-medium py-1 hover:text-text-primary transition-colors "+(o?"mt-2 pt-2 border-t border-white/10":""),children:[t.jsxs("span",{className:"flex items-center gap-1",children:[A,t.jsx(MA,{text:e})]}),t.jsx(f,{className:"w-3 h-3 text-text-muted transition-transform duration-200 "+(r?"":"-rotate-90")})]})}function EA({showTopology:e,validatedPolylineCount:r,filteredNeighborCount:n,hasLocalNode:o,meshTopology:i,zeroHopNeighbors:s,neighborsWithLocation:f}){const g=gA(),h=Z(),m=K(),b=h.filter(A=>A.isLikelyReal).length,p=function(A){let e=0;for(const t of A.txDelayRecommendations.values())"backbone"===t.networkRole&&e++;return e}(i),[x,v]=A.useState(!0),[w,y]=A.useState(!0),[k,C]=A.useState(!0);return t.jsxs("div",{className:"map-control-glass text-xs",style:{padding:"0.625rem"},children:[t.jsx(DA,{title:"Nodes",tooltip:"Node type shown by shape. Yellow = direct RF neighbor.",isOpen:x,onToggle:()=>v(!x)}),x&&t.jsxs("div",{className:"flex flex-col gap-1 mt-1.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"14px",height:"14px",backgroundColor:g.nodeFill}}),t.jsx("span",{className:"text-text-muted",children:"Node"}),t.jsx(MA,{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:"14px",height:"14px",backgroundColor:g.hubColor}}),t.jsx("span",{className:"text-text-muted",children:"Hub"}),t.jsx(MA,{text:"Network hub (≥10% of last-hop traffic). Hubs are central to mesh traffic flow."})]}),(B=f,B.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(l,{className:"w-3 h-3 flex-shrink-0",style:{color:g.roomColor},strokeWidth:2.5}),t.jsx("span",{className:"text-text-muted",children:"Room"}),t.jsx(MA,{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(c,{className:"w-3 h-3 flex-shrink-0",style:{color:g.localColor},strokeWidth:2.5}),t.jsx("span",{className:"text-text-muted",children:"Local"}),t.jsx(MA,{text:"Your repeater. This is the node running pyMC_Repeater that you're connected to."})]}),s.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:g.neighborColor}}),t.jsx("span",{className:"text-text-muted",children:"Neighbor"}),t.jsx(MA,{text:"Zero-hop direct RF contact. Color indicates we receive their ADVERTs directly."})]}),i.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:"14px",height:"14px",backgroundColor:g.hubColor,opacity:.7}}),t.jsx("span",{className:"text-text-muted",children:"Gateway"}),t.jsx(MA,{text:"Significant traffic forwarder (7-10% of last-hop traffic). Gateways relay substantial traffic to the local node."})]}),p>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"14px",height:"14px",backgroundColor:"rgb(168, 85, 247)",opacity:.8}}),t.jsx("span",{className:"text-text-muted",children:"Backbone"}),t.jsx(MA,{text:"Critical relay with 4+ neighbors and high betweenness centrality. Backbone nodes carry the majority of mesh traffic."})]}),i.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:"14px",height:"14px",background:"transparent",border:`4px solid ${g.mobileColor}`,boxSizing:"border-box"}}),t.jsx("span",{className:"text-text-muted",children:"Mobile"}),t.jsx(MA,{text:"Volatile node that frequently appears/disappears from paths. Likely a portable or vehicle-mounted device."})]}),b>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 (",b,")"]}),t.jsx(MA,{text:"Unknown repeater discovered via Viterbi HMM path analysis. These nodes appear in paths but aren't in our neighbor table."})]})]}),s.size>0&&t.jsxs(t.Fragment,{children:[t.jsx(DA,{title:"Link Quality",tooltip:"Neighbor edge colors based on bidirectional link balance. 2-Way = balanced. Listener = they hear us. Loud = they route to us.",isOpen:w,onToggle:()=>y(!w),hasBorder:!0}),w&&t.jsxs("div",{className:"flex flex-col gap-1 mt-1.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"flex-shrink-0 rounded-sm",style:{width:"16px",height:"3px",backgroundColor:W.YELLOW}}),t.jsx("span",{className:"text-text-muted",children:"2-Way"}),t.jsx(MA,{text:"33-67% balanced. Ideal bidirectional link - this neighbor both hears us and routes traffic to us equally well."})]}),t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"flex-shrink-0 rounded-sm",style:{width:"16px",height:"3px",backgroundColor:W.GREEN}}),t.jsx("span",{className:"text-text-muted",children:"Listener"}),t.jsx(MA,{text:">67% listener score. This neighbor hears our transmissions well (good RX from us)."})]}),t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"flex-shrink-0 rounded-sm",style:{width:"16px",height:"3px",backgroundColor:W.RED}}),t.jsx("span",{className:"text-text-muted",children:"Loud"}),t.jsx(MA,{text:"<33% listener score. This neighbor routes more traffic TO us than they hear from us."})]})]})]}),e&&r>0&&t.jsxs(t.Fragment,{children:[t.jsx(DA,{title:"Topology",tooltip:"Links with 5+ validations. Thickness = relative strength.",isOpen:k,onToggle:()=>C(!k),hasBorder:!0}),k&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex flex-col gap-0.5 text-text-muted mt-1",children:[t.jsxs("div",{className:"flex justify-between tabular-nums",children:[t.jsx("span",{children:"Nodes"}),t.jsx("span",{className:"text-text-secondary",children:n+(o?1:0)})]}),i.hubNodes.length>0&&t.jsxs("div",{className:"flex justify-between tabular-nums",children:[t.jsx("span",{children:"Hubs"}),t.jsx("span",{style:{color:kA.hubColor},children:i.hubNodes.length})]})]}),i.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(u,{className:"w-3 h-3 flex-shrink-0",style:{color:kA.edges.hoverLoop}}),t.jsxs("div",{className:"flex flex-col",children:[t.jsxs("span",{style:{color:kA.edges.hoverLoop},className:"font-medium",children:[i.loops.length," ",1===i.loops.length?"Loop":"Loops"]}),t.jsx("span",{className:"text-text-muted text-[10px] leading-tight",children:"Redundant paths"})]})]})}),m.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(d,{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:[m.totalPaths.toLocaleString()," Viterbi"]}),t.jsx("span",{className:"text-text-muted text-[10px] leading-tight",children:"HMM decoded paths"})]})]})})]})]})]});var B}function NA({options:A,value:e,onChange:r,size:n="sm",className:o=""}){const i={sm:"text-[10px] px-1.5 py-0.5",md:"text-xs px-2 py-1"};return t.jsx("div",{className:`inline-flex rounded-md bg-black/40 p-0.5 ${o}`,role:"radiogroup",children:A.map(A=>{const o=e===A.value;return t.jsx("button",{onClick:()=>r(A.value),className:`\n ${i[n]}\n rounded transition-all font-medium\n ${o?"bg-white/15 text-text-primary shadow-sm":"text-text-muted hover:text-text-secondary hover:bg-white/5"}\n `,role:"radio","aria-checked":o,title:A.title,children:A.icon?t.jsxs("span",{className:"flex items-center gap-1",children:[A.icon,t.jsx("span",{className:"hidden sm:inline",children:A.label})]}):A.label},A.value)})})}function QA({mapRef:A,showNeighborLines:e,onToggleNeighborLines:r,hasNeighborPolylines:n,nodeFilter:o,onNodeFilterChange:i,hasHubNodes:a,hasZeroHopNeighbors:s,showCoverage:l,onToggleCoverage:c,show3DTerrain:u,onToggle3DTerrain:d,isFullscreen:f,onToggleFullscreen:g}){const y=[{value:"all",label:"All",title:"Show all nodes"},...a?[{value:"hubs",label:"Hubs",title:"Show only hub nodes and their connections"}]:[],...s?[{value:"direct",label:"Direct",title:"Show only zero-hop (direct RF) neighbors"}]:[]];return t.jsxs(t.Fragment,{children:[t.jsx("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",children:[n&&t.jsx("button",{onClick:r,className:"map-control-btn rounded-lg transition-colors hover:bg-white/5",style:e?{backgroundColor:"#1a1408"}:void 0,title:e?"Hide neighbor lines":"Show neighbor lines","aria-label":e?"Hide neighbor lines":"Show neighbor lines","aria-pressed":e,children:t.jsx(h,{className:"map-control-icon "+(e?"text-amber-400":"text-text-secondary")})}),y.length>1&&t.jsx(NA,{options:y,value:o,onChange:i,size:"sm"}),t.jsx("button",{onClick:d,className:"map-control-btn rounded-lg transition-colors hover:bg-white/5",style:u?{backgroundColor:"#0a1a1a"}:void 0,title:u?"Disable 3D terrain":"Enable 3D terrain","aria-label":u?"Disable 3D terrain":"Enable 3D terrain","aria-pressed":u,children:t.jsx(m,{className:"map-control-icon "+(u?"text-teal-400":"text-text-secondary")})}),t.jsx("button",{onClick:g,className:"map-control-btn rounded-lg transition-colors hover:bg-white/5",title:f?"Exit fullscreen":"Fullscreen","aria-label":f?"Exit fullscreen":"Enter fullscreen","aria-pressed":f,children:f?t.jsx(b,{className:"map-control-icon text-text-secondary"}):t.jsx(p,{className:"map-control-icon text-text-secondary"})})]})}),t.jsx("div",{className:"absolute top-[3.5rem] right-3 z-[600] map-controls-container sm:top-[4rem] sm:right-4 lg:top-[4.5rem]",children:t.jsxs("div",{className:"flex flex-col items-stretch map-nav-module",children:[t.jsx("button",{onClick:()=>{var e,t;null==(t=null==(e=A.current)?void 0:e.getMap())||t.zoomIn()},className:"map-control-btn hover:bg-white/5 flex items-center justify-center",title:"Zoom in","aria-label":"Zoom in",children:t.jsx(x,{className:"map-control-icon text-text-secondary"})}),t.jsx("button",{onClick:()=>{var e,t;null==(t=null==(e=A.current)?void 0:e.getMap())||t.zoomOut()},className:"map-control-btn hover:bg-white/5 border-t border-white/6 flex items-center justify-center",title:"Zoom out","aria-label":"Zoom out",children:t.jsx(v,{className:"map-control-icon text-text-secondary"})}),t.jsx("button",{onClick:()=>{var e;const t=null==(e=A.current)?void 0:e.getMap();t&&t.easeTo({bearing:0,pitch:0,duration:300})},className:"map-control-btn hover:bg-white/5 border-t border-white/6 flex items-center justify-center",title:"Reset bearing to north","aria-label":"Reset bearing to north",children:t.jsx(w,{className:"map-control-icon text-text-secondary"})})]})})]})}const jA="#4ADE80",PA="DeepAnalysis";function FA(){return"abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(36*Math.random())]}function SA({isActive:e,hasAnalyzed:r,isLoading:o,onClick:i}){const[a,l]=A.useState(!1),[c,u]=A.useState(PA),d=A.useRef(!1),f=A.useRef(null),[g]=A.useState(()=>{var A;return"undefined"!=typeof window&&((null==(A=window.matchMedia)?void 0:A.call(window,"(hover: hover)").matches)??!1)}),h=a&&!e&&!o&&g;A.useEffect(()=>{if(a&&!e&&!o&&!d.current){d.current=!0;const A=performance.now(),e=t=>{const r=t-A,n=Math.min(r/700,1),o=Math.floor(12*n);let i="";for(let A=0;A<12;A++)i+=A{f.current&&cancelAnimationFrame(f.current)}},[a,e,o]);const m=o?"Analyzing...":c;return t.jsxs("button",{onClick:i,onMouseEnter:()=>g&&l(!0),onMouseLeave:()=>g&&l(!1),onPointerEnter:()=>g&&l(!0),onPointerLeave:()=>g&&l(!1),disabled:o,className:`map-control-btn flex items-center gap-2 w-full text-left transition-colors ${e?"map-control-glass-active":"map-control-glass"} ${o?"cursor-wait":""}`,style:{padding:"0.5rem 0.625rem",backgroundColor:e?"#0a1a0a":"#050505"},title:o?"Analyzing packet history...":r?e?"Hide topology edges":"Show topology edges":"Load full packet history and build topology",children:[o?t.jsx(s,{className:"w-3.5 h-3.5 flex-shrink-0 text-green-400 animate-spin"}):t.jsx(n,{className:"w-3.5 h-3.5 flex-shrink-0 transition-colors "+(e?"text-green-400":"text-text-secondary"),style:h?{color:jA}:void 0}),t.jsx("span",{className:e?"text-green-400":"text-text-secondary",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:h?700:500,letterSpacing:"-0.01em",lineHeight:1,...h?{color:jA}:{}},children:m})]})}const LA="#00FFFF";function IA({isActive:e,onClick:r}){const[n,o]=A.useState(!1),[i,a]=A.useState(0),s=A.useRef(!1),l=A.useRef(null),[c,u]=A.useState(0),d=A.useRef(!1),[f]=A.useState(()=>{var A;return"undefined"!=typeof window&&((null==(A=window.matchMedia)?void 0:A.call(window,"(hover: hover)").matches)??!1)}),g=n&&!e&&f;A.useEffect(()=>{g&&!d.current&&(d.current=!0,u(1),setTimeout(()=>u(2),100),setTimeout(()=>u(3),200)),n||(d.current=!1,u(0))},[g,n]),A.useEffect(()=>{if(n&&!e&&!s.current){s.current=!0;const A=performance.now(),e=t=>{const r=t-A,n=Math.min(r/400,1);a(n),n<1&&(l.current=requestAnimationFrame(e))};l.current=requestAnimationFrame(e)}return n||(l.current&&(cancelAnimationFrame(l.current),l.current=null),s.current=!1,a(0)),()=>{l.current&&cancelAnimationFrame(l.current)}},[n,e]);const h=A=>{if(e)return;if(!g)return;const t=11*i;return A>=t-2&&Af&&o(!0),onMouseLeave:()=>f&&o(!1),onPointerEnter:()=>f&&o(!0),onPointerLeave:()=>f&&o(!1),className:"map-control-btn flex items-center gap-2 w-full text-left transition-colors "+(e?"map-control-glass-active":"map-control-glass"),style:{padding:"0.5rem 0.625rem",backgroundColor:e?"#0a2a2a":"#050505"},title:e?"Disable live packet tracing (reduces CPU usage)":"Enable live packet tracing",children:[t.jsx(y,{className:"w-3.5 h-3.5 flex-shrink-0 "+(e?"text-cyan-400":"text-text-secondary"),fill:1===c?"#FFFFFF":3===c?LA:"none",stroke:1===c||2===c?"#FFFFFF":g?LA:"currentColor",style:{transition:"fill 0.05s, stroke 0.05s"}}),t.jsx("span",{className:e?"text-cyan-400":"text-text-secondary",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:g?700:500,letterSpacing:"-0.01em",lineHeight:1},children:"LiveTrace".split("").map((A,e)=>t.jsx("span",{style:{color:h(e)||void 0},children:A},e))})]})}const RA="#fe8019";function TA({isActive:e,onClick:r,brightness:n=.7,onBrightnessChange:o}){const[i,a]=A.useState(!1),[s,l]=A.useState(!1),[c]=A.useState(()=>{var A;return"undefined"!=typeof window&&((null==(A=window.matchMedia)?void 0:A.call(window,"(hover: hover)").matches)??!1)});A.useEffect(()=>{if(!i||e)return;const A=requestAnimationFrame(()=>l(!0)),t=setTimeout(()=>l(!1),80);return()=>{cancelAnimationFrame(A),clearTimeout(t)}},[i,e]);const u=Math.max(.01,Math.min(1,n)),d=u<.999,f=u>.011,g=i&&!e&&c;return t.jsxs("button",{onClick:r,onMouseEnter:()=>c&&a(!0),onMouseLeave:()=>c&&a(!1),onPointerEnter:()=>c&&a(!0),onPointerLeave:()=>c&&a(!1),className:"map-control-btn flex items-center gap-2 w-full text-left transition-colors "+(e?"map-control-glass-active":"map-control-glass"),style:{padding:"0.5rem 0.625rem",backgroundColor:e?"#1a1408":"#050505"},title:e?"Configure wardriving coverage":"Show wardriving coverage",children:[t.jsx(k,{className:"w-3.5 h-3.5 flex-shrink-0 transition-colors "+(e?"text-amber-400":"text-text-secondary"),style:g?{color:RA}:void 0}),t.jsx("span",{className:e?"text-amber-400":"text-text-secondary",style:{fontFamily:g?"'Jacquard 12', serif":"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:500,letterSpacing:"-0.01em",lineHeight:1,transition:"none",...g?{color:RA,fontSize:"0.75rem",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,u-.2);null==o||o(e)},disabled:!f,className:"p-0.5 rounded transition-colors "+(f?"hover:bg-[#252525] text-amber-400":"text-amber-400/30 cursor-not-allowed"),title:`Decrease opacity (${Math.round(100*u)}%)`,children:t.jsx(C,{className:"w-3.5 h-3.5"})}),t.jsx("button",{onClick:A=>{A.stopPropagation();const e=Math.min(1,u+.2);null==o||o(e)},disabled:!d,className:"p-0.5 rounded transition-colors "+(d?"hover:bg-[#252525] text-amber-400":"text-amber-400/30 cursor-not-allowed"),title:`Increase opacity (${Math.round(100*u)}%)`,children:t.jsx(B,{className:"w-3.5 h-3.5"})})]})]})}function _A(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 HA(A){return Math.exp(-A*Math.LN2/7)}const zA="pymc-wardriving-url",GA="pymc-wardriving-enabled",OA="pymc-wardriving-brightness";function UA(A){"undefined"!=typeof localStorage&&(A?localStorage.setItem(zA,A):localStorage.removeItem(zA))}function YA(A){"undefined"!=typeof localStorage&&localStorage.setItem(GA,String(A))}function WA(){if("undefined"==typeof localStorage)return.7;const A=localStorage.getItem(OA);if(A){const e=parseFloat(A);if(!isNaN(e)&&e>=.01&&e<=1)return e}return.7}function VA(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 ZA=M((A,e)=>({status:"idle",isVisible:"undefined"!=typeof localStorage&&"true"===localStorage.getItem(GA),coveragePoints:[],repeaters:[],error:null,stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},url:"undefined"==typeof localStorage?"":localStorage.getItem(zA)||"",brightness:WA(),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(OA,String(e))}(t),A({brightness:t})},toggleVisibility:()=>{const t=!e().isVisible;YA(t),A({isVisible:t})},setVisible:e=>{YA(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}=_A(r.hash),o=parseInt(r.time,10),i=isNaN(o)?30:(Date.now()-o)/864e5,a=HA(i),s=VA(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()}),UA(e.trim()),YA(!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:""}),UA(""),YA(!1)}}));function KA({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 JA(){const{isModalOpen:e,closeModal:n,status:i,isVisible:a,stats:l,error:c,url:u,brightness:f,loadCoverage:g,clearCoverage:h,toggleVisibility:m,setUrl:b,setBrightness:p}=ZA(),x="connecting"===i||"loading"===i||"processing"===i,[v,w]=A.useState(u),y=A.useCallback(async()=>{await g(v)},[v,g]),k=A.useCallback(()=>{w(""),h()},[h]),C=A.useCallback(A=>{"Enter"!==A.key||A.shiftKey||x||(A.preventDefault(),y())},[y,x]),M=A.useCallback(A=>{const e=A.target.value;w(e),b(e)},[b]);if(!e)return null;const S=l.coverageCount>0,L=v.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(D,{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-[#252525] transition-colors disabled:opacity-50",children:t.jsx(E,{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:v,onChange:M,onKeyDown:C,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(KA,{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(N,{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&&S&&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"]})]})]}),S&&!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(Q,{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()}`]})]})]}),S&&!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(B,{className:"w-4 h-4 flex-shrink-0 "+(f>.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*f),"%"]})]}),t.jsx("input",{type:"range",min:"1",max:"100",value:100*f,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:S&&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-[#202020] rounded-lg transition-colors disabled:opacity-50",title:a?"Hide heatmap":"Show heatmap",children:a?t.jsxs(t.Fragment,{children:[t.jsx(j,{className:"w-3.5 h-3.5"})," Hide"]}):t.jsxs(t.Fragment,{children:[t.jsx(d,{className:"w-3.5 h-3.5"})," Show"]})}),t.jsxs("button",{onClick:k,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(P,{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-[#252525] rounded-lg transition-colors disabled:opacity-50",children:S?"Done":"Cancel"}),t.jsx("button",{onClick:y,disabled:!L,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..."]}):S?t.jsxs(t.Fragment,{children:[t.jsx(o,{className:"w-4 h-4"}),"Refresh"]}):t.jsxs(t.Fragment,{children:[t.jsx(F,{className:"w-4 h-4"}),"Connect"]})})]})]})]})]})}const XA={getItem:A=>{try{return localStorage.getItem(A)}catch{return null}},setItem:(A,e)=>{try{localStorage.setItem(A,e)}catch{}},removeItem:A=>{try{localStorage.removeItem(A)}catch{}}},qA=M()(mA(A=>({isEnabled:!1,toggle:()=>A(A=>({isEnabled:!A.isEnabled})),setEnabled:e=>A({isEnabled:e})}),{name:"pymc-live-trace",storage:bA(()=>XA)}));var $A=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=O(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=[],M=[],D=[];function E(A){C.unshift(A)}function N(A){D.unshift(A)}var Q=Math.abs,j=Math.ceil,P=Math.floor,F=Math.min,S=0,L=null;t.preloadedImages={},t.preloadedAudios={};var I,R,T=null,_="data:application/octet-stream;base64,";function H(A){return String.prototype.startsWith?A.startsWith(_):0===A.indexOf(_)}function z(){return d.length}T="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|Ve(0|t,0|a,1,0),a=0|Ve(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|We(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 L(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|Ve(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|OA(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|OA(A,e))){if((0|a)!=(0|c)){if(0|Y(c,0|n[7696+(28*a|0)>>2])){A=0|VA(A,e),l=1,e=0|B();break}M(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|VA(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|UA(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|OA(A,e)))break;n[r>>2]=1+(0|n[r>>2]);break}switch(127&d){case 8:case 118:break A}3!=(0|OA(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 T(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,M=0,D=0,E=0,N=0,Q=0,j=0,F=0,S=0,L=0,I=0,R=0,T=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){Q=0,j=0;e:for(;;){if(R=1/(+(w>>>0)+4294967296*+(0|v)),_=+o[h>>3],T=+((v=0|Ze(0|w,0|v,0|Q,0|j))>>>0)+4294967296*+(0|B()),I=+(Q>>>0)+4294967296*+(0|j),o[l>>3]=R*(_*T)+R*(+o[m>>3]*I),o[g>>3]=R*(+o[d>>3]*T)+R*(+o[f>>3]*I),0|(v=0|KA(l,r,c))){x=v;break}C=0|At(0|(E=0|n[(N=c)>>2]),0|(N=0|n[N+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,L=16;else for(M=0,D=0;;){if((0|M)>(0|t)|(0|M)==(0|t)&D>>>0>e>>>0){x=1;break e}if((0|w)==(0|E)&(0|k)==(0|N))break t;if(C=0|$e(0|(v=0|Ve(0|C,0|y,1,0)),0|B(),0|e,0|t),y=0|B(),D=0|Ve(0|D,0|M,1,0),M=0|B(),!(0|(w=0|n[(k=v=s+(C<<3)|0)>>2]))&!(0|(k=0|n[k+4>>2]))){S=v,L=16;break}}}while(0);if(16!=(0|L)||(L=0,!(0|E)&!(0|N))||(n[(D=S)>>2]=E,n[D+4>>2]=N,D=a+(n[i>>2]<<3)|0,n[D>>2]=E,n[D+4>>2]=N,D=0|Ve(0|n[(D=i)>>2],0|n[D+4>>2],1,0),E=0|B(),n[(N=i)>>2]=D,n[N+4>>2]=E),Q=0|Ve(0|Q,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>Q>>>0)){w=1;break A}}w=0}else w=1}while(0);if(F=F+1|0,!w){L=21;break}if((0|F)>=(0|(v=0|n[A>>2]))){x=0,L=21;break}}return 21==(0|L)?(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 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)>>2]}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)+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 W(A,e){return 0|n[848+(28*(A|=0)|0)+((e|=0)<<2)>>2]}function V(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|Oe(.14285714285714285*+(r-l|0)),n[A>>2]=i,a=0|Oe(.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)))&&M(27795,26892,354,26903),((0|r)>-1?(-2147483648|r)>=(0|o):(-2147483648^r)<(0|o))&&M(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|Oe(.14285714285714285*+(t+i|0)),n[A>>2]=o,i=0|Oe(.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)))&&M(27795,26892,402,26917),((0|t)>-1?(-2147483648|t)>=(0|r):(-2147483648^t)<(0|r))&&M(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|Oe(.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|Oe(.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|Oe(.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|Oe(.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 MA(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 DA(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)&&M(27795,26932,282,26947),e=0|tt(0|A,0|e,52),B(),e&=15,0|HA(A,a)?NA(r,e,i,2,t):FA(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 NA(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,D,E,N,Q=0,j=0,F=0,S=0,L=0,I=0;if(N=P,P=P+272|0,S=N+240|0,B=N,D=N+224|0,E=N+208|0,b=N+176|0,p=N+160|0,x=N+192|0,v=N+144|0,w=N+128|0,y=N+112|0,k=N+96|0,C=N+80|0,n[(Q=N+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],QA(S,Q,B),n[i>>2]=0,(0|(S=r+t+(5==(0|r)&1)|0))<=(0|t))P=N;else{s=D+4|0,l=b+4|0,c=t+5|0,u=16880+((a=0|n[Q>>2])<<2)|0,d=16960+(a<<2)|0,f=w+8|0,g=y+8|0,h=k+8|0,m=E+4|0,F=t;A:for(;;){j=B+((0|F)%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|F)>(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],Q=0|n[17040+(80*r|0)+(n[D>>2]<<2)>>2],n[b>>2]=n[18640+(80*r|0)+(20*Q|0)>>2],(0|(j=0|n[18640+(80*r|0)+(20*Q|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*Q|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),L=+(0|n[d>>2]),o[w>>3]=3*L,o[f>>3]=0,I=-1.5*L,o[y>>3]=I,o[g>>3]=2.598076211353316*L,o[k>>3]=I,o[h>>3]=-2.598076211353316*L,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}Qe(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|F)<(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[D>>2]=n[E>>2],n[D+4>>2]=n[E+4>>2],n[D+8>>2]=n[E+8>>2],n[D+12>>2]=n[E+12>>2],(0|(F=F+1|0))>=(0|S)){A=3;break}}3!=(0|A)?12==(0|A)&&M(26970,27017,572,27027):P=N}}function QA(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,D=0,E=0,N=0,Q=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,D=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=D,D=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),N=+(0|n[l>>2]),o[m>>3]=3*N,o[c>>3]=0,Q=-1.5*N,o[b>>3]=Q,o[u>>3]=2.598076211353316*N,o[p>>3]=Q,o[d>>3]=-2.598076211353316*N,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}Qe(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)&&M(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 LA(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 TA(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|Ve(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|Ve(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 OA(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 UA(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 WA(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 VA(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|O(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|O(l)),0,45),e|=A,A=B()|-1040385&r,a=0|U(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|UA(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)&&M(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 NA(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|Ve(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|Ve(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|Ve(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)&&M(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|We(1,12))||M(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]&&M(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|Ue(24))||M(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]&&M(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|V(h,m))))return P=c,1;7==(0|(g=0|V(m,h)))?M(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|WA(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|VA(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||M(27563,27538,191,27548),(f=!!(0|a))&(d=!!(0|s))&&M(27590,27538,192,27548),f){if(7==(0|(d=0|OA(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|OA(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)&&M(27621,27538,261,27548),7==(0|(d=0|OA(A,e)))|7==(0|(u=0|OA(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|W(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|W(g,t=0|lA(o))))?0:0|z(s);e:do{if(t){if(i){if(7==(0|(s=0|OA(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|W(g,s)))&&M(27648,27538,411,27678),0|z(t)?M(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&&M(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|V(m,g)))&&M(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|OA(t,s)))&&M(27795,27538,440,27678),t=0|G(m),(0|(t=0|n[(t?21792:21584)+(28*c|0)+(s<<2)>>2]))<0&&M(27795,27538,454,27678),t){s=0,l=0|n[(c=r)>>2],c=0|n[c+4>>2];do{l=0|UA(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|OA(A,e)))|7==(0|(l=0|OA(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|OA(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|Me(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|De(0|n[o>>2],0|n[p>>2],e,t)){v=42;break}if(g&&0|Ne(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|Me(0|n[o>>2],0|n[p>>2],f)){v=53;break}if(0|Ne(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|De(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:M(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:M(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|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,M=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);)M=x,x=i,g=s,i=M;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 Me(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 De(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,M=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(M=e,B=(0|(e=e+1|0))==(0|d)?0:e,f=+o[c+8+(M<<4)+8>>3],g=+o[c+8+(B<<4)+8>>3]-f,h=+o[c+8+(M<<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 Ne(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 Qe(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|LA(A,e),i=0|OA(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:M(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&&M(27795,27797,248,27822),(0|((g=!!(0|c))?4:5))<(0|f)&&M(27795,27797,248,27822),0|Fe(A,e,v)&&M(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]))&&M(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 Le(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|We(e,4),n[A>>2]=r,r||M(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 Te(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|Ue(40))||M(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 Oe(A){return 0|+ct(+(A=+A))}function Ue(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 We(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|Ue(t))&&3&n[A+-4>>2]?(lt(0|A,0,0|t),0|A):0|A}function Ve(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|Ve(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 N(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),D(12),-1):(0|e)>(0|r)&&!(0|Q(0|e))?(D(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){TA(A,e,l,a),TA(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:We,_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|Ve(0|(a=0|qe(0|u,0|d,5,0)),0|B(),-5,-1),a=0|Ve(0|(a=0|Xe(0|a,0|B(),6,0)),0|B(),1,0),c=0|B()):(a=u,c=d),g=0|Ve(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|Ve(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))M(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|Ve(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)&&M(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)):(M(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|Ve(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:TA,_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|Te(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|Te(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,D=0,E=0,N=0,Q=0,j=0,P=0,F=0,S=0,L=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|Ue(i<<2))||M(27396,27235,317,27415),(e=0|Ue(i<<5))||M(27437,27235,321,27415),n[A>>2]=0,n[(E=A+4|0)>>2]=0,n[s>>2]=0,i=0,S=0,D=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=D,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|We(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+(D<<5)|0,g=0|n[a>>2]){for(o[(h=e+(D<<5)+8|0)>>3]=17976931348623157e292,o[(m=e+(D<<5)+24|0)>>3]=17976931348623157e292,o[u>>3]=-17976931348623157e292,o[(b=e+(D<<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=D+1|0}if(a=0|n[(F=a+8|0)>>2],n[F>>2]=0,!a){I=45;break}D=s,m=r}if(21==(0|I))M(27213,27235,35,27247);else if(23==(0|I))M(27267,27235,37,27247);else if(27==(0|I))M(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),Q=0,r=0;;){if(N=0|n[t+(Q<<2)>>2],F)I=73;else{if(!(D=0|Ue(j))){I=50;break}if(!(E=0|Ue(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[N>>2])?(n[D+(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[D>>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[D+(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[D+(a<<2)>>2]}else i=0}}while(0);if(Ye(D),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]=N,n[s>>2]=N}else I=73}if(73==(0|I)){if(I=0,0|(r=0|n[N>>2]))do{E=r,r=0|n[r+16>>2],Ye(E)}while(0|r);Ye(N),r=1}if((0|(Q=Q+1|0))>=(0|S)){L=r;break A}}50==(0|I)?M(27452,27235,249,27471):52==(0|I)?M(27490,27235,252,27471):70==(0|I)&&M(27310,27235,61,27333)}else L=0}while(0);return Ye(t),Ye(e),0|L}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)&&M(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|Ve(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|Ve(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|Ve(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,D=0,E=0,N=0,Q=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+(Q=A+(i<<3)|0)>>2],n[(P=e+(i<<3)|0)>>2]=n[Q>>2],n[P+4>>2]=j,i=0|Ve(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|Ue(o=t<<3)))return 13;if(st(0|j,0|A,0|o),!(Q=0|We(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(),N=(E&=15)-1|0,D=!!(0|E),C=(0|r)>0|!(0|r)&t>>>0>0;e:do{if(D&C){if(v=0|rt(0|N,0,52),w=0|B(),N>>>0>15){if(!(!(0|u)&!(0|i))){P=16;break A}for(a=0,A=0;;){if(a=0|Ve(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|N)){i=12,P=27;break A}if((0|d)!=(0|N)&&(l|=v,A=-15728641&A|w,d>>>0>=E>>>0)){c=N;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=Q+(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|Ve(0|g,0|h,1,0)),0|B(),0|t,0|r),h=0|B();x=0|Ve(0|x,0|p,1,0),p=0|B(),f=0|n[(d=c=Q+(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|Ve(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|Ve(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|We(k,8))){P=48;break}do{if(C){for(b=0,A=0,m=0,p=0;;){if(!(0|(a=0|n[(s=d=Q+(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|Ve(0|A,0|m,1,0),y=0|B()):y=m}if(b=0|Ve(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=N>>>0>15,v=0|rt(0|N,0,52),w=0|B(),!D){for(a=0,c=0,l=0,s=0;!(0|u)&!(0|i)||(n[(N=e+(a<<3)|0)>>2]=u,n[N+4>>2]=i,a=0|Ve(0|a,0|c,1,0),c=0|B()),l=0|Ve(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|N)){P=80;break A}if((0|h)!=(0|N)){if(d=u|v,f=-15728641&i|w,h>>>0>=E>>>0){g=N;do{D=0|rt(7,0,3*(14-g|0)|0),g=g+1|0,d|=D,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+(D=Q+(m<<3)|0)>>2]))==(0|f)&&(0|n[D>>2])==(0|d)){P=65;break}m=0|$e(0|(D=0|Ve(0|m,0|p,1,0)),0|B(),0|t,0|r),p=0|B(),h=0|Ve(0|h,0|g,1,0),g=0|B(),D=Q+(m<<3)|0}while((0|n[D>>2])!=(0|d)||(0|n[D+4>>2])!=(0|f));if(65==(0|P)&&(P=0,!0&100663296==(117440512&b)))break;n[(D=e+(a<<3)|0)>>2]=u,n[D+4>>2]=i,a=0|Ve(0|a,0|c,1,0),c=0|B()}}while(0);if(s=0|Ve(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|Q,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))M(27795,27122,620,27132);else{if(41==(0|P))return Ye(j),Ye(Q),10;if(48==(0|P))return Ye(j),Ye(Q),13;80==(0|P)?M(27795,27122,711,27132):81==(0|P)?M(27795,27122,723,27132):85==(0|P)&&(st(0|e,0|j,t<<3),P=89)}return 21==(0|P)?(Ye(j),Ye(Q),0|(P=5)):27==(0|P)?(Ye(j),Ye(Q),0|(P=i)):89==(0|P)?(Ye(j),Ye(Q),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:DA,_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|DA(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|DA(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|DA(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:LA,_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?(QA(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,D=0,E=0;if(a=P,P=P+48|0,c=a+12|0,D=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)&&M(27795,27538,692,27747),0|me(A,e,t,r,c)&&M(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[D>>2]=t,n[(h=D+4|0)>>2]=r,n[(m=D+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[D>>2]=t,n[h>>2]=r,n[m>>2]=s,BA(D),0|(s=0|be(A,e,D,o+(p<<3)|0)))break A;if(!((0|b)<(0|C)|(0|b)==(0|C)&p>>>0>>0)){s=0;break A}t=0|Ve(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|Ve(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|T(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|Ve(0|t,0|i,1,0),i=0|Ve(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|We(i,8)){if(!(d=0|We(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|Ve(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:T,_i64Add:Ve,_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:MA,_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|MA(A,e)?0|(i=1):0|(i=1&!!(0|Le(A,e)))},_isValidVertex:Le,_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:Ue,_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|Ve(0|A,0|t,1,0),t=0|Ve(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|Ve(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|We(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|Ve(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,M=0,D=0,E=0,N=0,Q=0,j=0,F=0,S=0,R=0,T=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|Ue(32+(n[(g=A+8|0)>>2]<<5)|0)))return P=s,13;if(Be(A,_),!(l=0|Ce(t))){if(T=0|n[(R=A)+4>>2],n[(l=f)>>2]=n[R>>2],n[l+4>>2]=T,ke(f,o),l=0|eA(o,e,i))R=0,T=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|Ve(0|t,0|l,12,0),T=0|B(),n[(l=i)>>2]=R,n[l+4>>2]=T,l=0}if(!l){if(!(t=0|We(R,8)))return Ye(_),P=s,13;if(!(d=0|We(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,T,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,T,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|T)>0|!(0|T)&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){N=t,Q=d,j=t,F=d,S=t,l=t,M=t,D=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|L(g=0|n[(e=N+(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|We(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|T),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|T)|(0|m)==(0|T)&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|Ve(0|h,0|g,1,0)),0|B(),0|R,0|T),g=0|B(),b=0|Ve(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|Me(A,_,a)&&(b=0|Ve(0|c,0|u,1,0),u=0|B(),n[(m=d)>>2]=p,n[m+4>>2]=x,n[(c=Q+(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|Ve(0|w,0|y,1,0),y=0|B(),k=0|Ve(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=N+(c<<3)|0)>>2]=0,n[C+4>>2]=0,c=0|Ve(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=S,k=D,C=Q,t=M,E=l,D=j,M=v,l=w,S=F,F=y,j=k,Q=N,N=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|We(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|Ve(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|Ve(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|Ve(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|Ve(0|n[(c=i)>>2],0|n[c+4>>2],0|l,0|s),s=0|B(),u))){s=12;break}if(d=0|Ve(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)?NA(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,+Q(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},T){H(T)||(W=T,T=t.locateFile?t.locateFile(W,o):o+W),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&&L){var A=L;L=null,A()}}()},q=function(){n(T,X,function(){throw"could not load memory initializer "+T})},$=O(T);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=O(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(){V||(V=!0,l||(k(B),k(M),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)N(t.postRun.shift());k(D)}()))}S>0||(function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)E(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(L=function A(){V||eA(),V||(L=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 $A?$A:{}),Ae="number",ee={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"},te={1e3:"Unknown unit",1001:"Array length out of bounds",1002:"Got unexpected null value for H3 index"};function re(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 ne(A){if(0!==A)throw function(A,e){return re(ee,A,2===arguments.length?{value:e}:{})}(A)}var oe={};[["sizeOfH3Index",Ae],["sizeOfLatLng",Ae],["sizeOfCellBoundary",Ae],["sizeOfGeoLoop",Ae],["sizeOfGeoPolygon",Ae],["sizeOfLinkedGeoPolygon",Ae],["sizeOfCoordIJ",Ae],["readInt64AsDoubleFromPointer",Ae],["isValidCell",Ae,[Ae,Ae]],["isValidIndex",Ae,[Ae,Ae]],["latLngToCell",Ae,[Ae,Ae,Ae,Ae]],["cellToLatLng",Ae,[Ae,Ae,Ae]],["cellToBoundary",Ae,[Ae,Ae,Ae]],["maxGridDiskSize",Ae,[Ae,Ae]],["gridDisk",Ae,[Ae,Ae,Ae,Ae]],["gridDiskDistances",Ae,[Ae,Ae,Ae,Ae,Ae]],["gridRing",Ae,[Ae,Ae,Ae,Ae]],["gridRingUnsafe",Ae,[Ae,Ae,Ae,Ae]],["maxPolygonToCellsSize",Ae,[Ae,Ae,Ae,Ae]],["polygonToCells",Ae,[Ae,Ae,Ae,Ae]],["maxPolygonToCellsSizeExperimental",Ae,[Ae,Ae,Ae,Ae]],["polygonToCellsExperimental",Ae,[Ae,Ae,Ae,Ae,Ae,Ae]],["cellsToLinkedMultiPolygon",Ae,[Ae,Ae,Ae]],["destroyLinkedMultiPolygon",null,[Ae]],["compactCells",Ae,[Ae,Ae,Ae,Ae]],["uncompactCells",Ae,[Ae,Ae,Ae,Ae,Ae,Ae]],["uncompactCellsSize",Ae,[Ae,Ae,Ae,Ae,Ae]],["isPentagon",Ae,[Ae,Ae]],["isResClassIII",Ae,[Ae,Ae]],["getBaseCellNumber",Ae,[Ae,Ae]],["getResolution",Ae,[Ae,Ae]],["getIndexDigit",Ae,[Ae,Ae,Ae]],["constructCell",Ae,[Ae,Ae,Ae,Ae]],["maxFaceCount",Ae,[Ae,Ae,Ae]],["getIcosahedronFaces",Ae,[Ae,Ae,Ae]],["cellToParent",Ae,[Ae,Ae,Ae,Ae]],["cellToChildren",Ae,[Ae,Ae,Ae,Ae]],["cellToCenterChild",Ae,[Ae,Ae,Ae,Ae]],["cellToChildrenSize",Ae,[Ae,Ae,Ae,Ae]],["cellToChildPos",Ae,[Ae,Ae,Ae,Ae]],["childPosToCell",Ae,[Ae,Ae,Ae,Ae,Ae,Ae]],["areNeighborCells",Ae,[Ae,Ae,Ae,Ae,Ae]],["cellsToDirectedEdge",Ae,[Ae,Ae,Ae,Ae,Ae]],["getDirectedEdgeOrigin",Ae,[Ae,Ae,Ae]],["getDirectedEdgeDestination",Ae,[Ae,Ae,Ae]],["isValidDirectedEdge",Ae,[Ae,Ae]],["directedEdgeToCells",Ae,[Ae,Ae,Ae]],["originToDirectedEdges",Ae,[Ae,Ae,Ae]],["directedEdgeToBoundary",Ae,[Ae,Ae,Ae]],["gridDistance",Ae,[Ae,Ae,Ae,Ae,Ae]],["gridPathCells",Ae,[Ae,Ae,Ae,Ae,Ae]],["gridPathCellsSize",Ae,[Ae,Ae,Ae,Ae,Ae]],["cellToLocalIj",Ae,[Ae,Ae,Ae,Ae,Ae,Ae]],["localIjToCell",Ae,[Ae,Ae,Ae,Ae,Ae]],["getHexagonAreaAvgM2",Ae,[Ae,Ae]],["getHexagonAreaAvgKm2",Ae,[Ae,Ae]],["getHexagonEdgeLengthAvgM",Ae,[Ae,Ae]],["getHexagonEdgeLengthAvgKm",Ae,[Ae,Ae]],["greatCircleDistanceM",Ae,[Ae,Ae]],["greatCircleDistanceKm",Ae,[Ae,Ae]],["greatCircleDistanceRads",Ae,[Ae,Ae]],["cellAreaM2",Ae,[Ae,Ae,Ae]],["cellAreaKm2",Ae,[Ae,Ae,Ae]],["cellAreaRads2",Ae,[Ae,Ae,Ae]],["edgeLengthM",Ae,[Ae,Ae,Ae]],["edgeLengthKm",Ae,[Ae,Ae,Ae]],["edgeLengthRads",Ae,[Ae,Ae,Ae]],["getNumCells",Ae,[Ae,Ae]],["getRes0Cells",Ae,[Ae]],["res0CellCount",Ae],["getPentagons",Ae,[Ae,Ae]],["pentagonCount",Ae],["cellToVertex",Ae,[Ae,Ae,Ae,Ae]],["cellToVertexes",Ae,[Ae,Ae,Ae]],["vertexToLatLng",Ae,[Ae,Ae,Ae]],["isValidVertex",Ae,[Ae,Ae]]].forEach(function(A){oe[A[0]]=$A.cwrap.apply($A,A)});var ie=16,ae=oe.sizeOfH3Index(),se=oe.sizeOfLatLng(),le=oe.sizeOfCellBoundary();oe.sizeOfGeoPolygon(),oe.sizeOfGeoLoop(),oe.sizeOfLinkedGeoPolygon(),oe.sizeOfCoordIJ();var ce=/[^0-9a-fA-F]/;function ue(A){if(A>=0)return A.toString(ie);var e=de(8,(A&=2147483647).toString(ie));return(parseInt(e[0],ie)+8).toString(ie)+e.substring(1)}function de(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 we(r[Math.min(23,Math.floor(24*o))])}function ke({coveragePoints:e,visible:r,terrainEnabled:n=!1,brightness:o=.7}){const{current:i}=S(),[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=hA();return 24===e.length&&0!==(null==(A=e[0])?void 0:A[0])?e:ve}(),[]);A.useEffect(()=>{if(!f||!Array.isArray(f)||0===f.length)return void queueMicrotask(()=>{s(null),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=he(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=me(o.hexId).map(([A,e])=>[e,A]);A.push(A[0]);const i=ye(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=ye(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(xe),i=e.getSource(pe);if(r&&a&&a.features.length>0){if(i?e.getSource(pe).setData(a):e.addSource(pe,{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:xe,type:"fill",source:pe,paint:{"fill-color":["get","color"],"fill-opacity":o}},i)}}else n&&e.removeLayer(xe),i&&e.removeSource(pe)}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(xe)&&e.setPaintProperty(xe,"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(xe)&&e.removeLayer(xe),e.getSource(pe)&&e.removeSource(pe)}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 Ce="https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png",Be="terrarium",Me="terrain-dem",De="terrain-hillshade";function Ee({enabled:e,exaggeration:t=4}){const{current:r}=S(),n=A.useRef(null);return A.useEffect(()=>{var A;const e=null==(A=null==r?void 0:r.getMap)?void 0:A.call(r);if(!e)return;let t=!0;const n=()=>{var A,r;if(t)try{if(e.getSource(Me)||e.addSource(Me,{type:"raster-dem",tiles:[Ce],encoding:Be,tileSize:256,maxzoom:14}),!e.getLayer(De)){const t=null==(r=null==(A=e.getStyle())?void 0:A.layers)?void 0:r.find(A=>"symbol"===A.type);e.addLayer({id:De,type:"hillshade",source:Me,paint:{"hillshade-shadow-color":"rgba(10, 10, 10, 0.6)","hillshade-highlight-color":"rgba(245, 240, 230, 0.4)","hillshade-accent-color":"rgba(90, 75, 65, 0.3)","hillshade-illumination-direction":315,"hillshade-exaggeration":.35}},null==t?void 0:t.id)}}catch(n){}};return e.isStyleLoaded()?n():e.once("style.load",n),()=>{t=!1}},[r]),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=()=>{if(i)try{o.getSource(Me)||o.addSource(Me,{type:"raster-dem",tiles:[Ce],encoding:Be,tileSize:256,maxzoom:14}),e?(o.setCenterClampedToGround(!1),o.setTerrain({source:Me,exaggeration:t}),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))):(o.setTerrain(null),o.setCenterClampedToGround(!0),o.getPitch()>0&&!o.isMoving()&&o.easeTo({pitch:0,duration:800}),o.setMaxPitch(60))}catch(A){}};return o.isStyleLoaded()?a():o.once("style.load",a),()=>{i=!1,null!==n.current&&(clearTimeout(n.current),n.current=null);try{o.isStyleLoaded()&&o.setTerrain(null)}catch{}}},[r,e,t]),A.useEffect(()=>{var A;const e=null==(A=null==r?void 0:r.getMap)?void 0:A.call(r);return()=>{var A;try{(null==(A=null==e?void 0:e.isStyleLoaded)?void 0:A.call(e))&&(e.setTerrain(null),e.getLayer(De)&&e.removeLayer(De),e.getSource(Me)&&e.removeSource(Me))}catch{}}},[r]),null}function Ne(A,e=!1,t=!1,r=!1,n=.7){const o=fA();return r?n>=.75?o.restBright:o.rest:n>=.85?o.rest:o.restDim}function Qe(A){return[A[1],A[0]]}function je(A,e,t,r=12){const[n,o]=A,[i,a]=e,s=[];for(let l=0;l<=r;l++){const A=l/r,e=o+(a-o)*A,c=n+(i-n)*A,u=4*t*A*(1-A);s.push([e,c,u])}return s}function Pe(A){return A<.5?4*A*A*A:1-Math.pow(-2*A+2,3)/2}function Fe(A,e,t,r,n,o,i,a,s,l,c){const u=CA(),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),M=(null==C?void 0:C.node_name)||(null==C?void 0:C.name)||g.toHash.slice(0,8),D=[A[0]+(i[0]-A[0])*h,A[1]+(i[1]-A[1])*h];let E,N,Q,j;if(e){const A=o.get(g.key)??vA(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(N=y?u.edges.highlight:Ne(0,g.isDirectPathEdge??!1,x,v,w),Q=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:N,hoverColor:Q,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:M,fromHash:g.fromHash,toHash:g.toHash},geometry:{type:"LineString",coordinates:[Qe(A),Qe(D)]}})}return{type:"FeatureCollection",features:d}}function Se(A,e){const t=CA(),r=[];let n=0;for(const o of A){const A=e.get(o.hash);A&&A.blendedScore>n&&(n=A.blendedScore)}for(const o of A){const{from:A,to:i,hash:a,neighbor:s,lastHopData:l}=o,c=`neighbor-${a}`,u=(null==l?void 0:l.avgRssi)??s.rssi??null,d=(null==l?void 0:l.avgSnr)??s.snr??null,f=(null==l?void 0:l.count)??0,g=(null==l?void 0:l.confidence)??1,h=e.get(a),m=(null==h?void 0:h.listenerScore)??0,b=(null==h?void 0:h.loudScore)??0,p=(null==h?void 0:h.blendedScore)??0,x=n>0?p/n:0,v=o.rxAdvertCount??0,w=o.txProxyCount??0,y=v+w,k=y>0?(w-v)/y:0,C=je(A,i,150,8);r.push({type:"Feature",properties:{key:c,hash:a,name:s.node_name||s.name||a.slice(0,8),prefix:a.slice(2,4).toUpperCase(),color:t.neighborColor,width:2.5,opacity:.85,rssi:u,snr:d,packetCount:f,confidence:g,hasAvgRssi:void 0!==(null==l?void 0:l.avgRssi),hasAvgSnr:void 0!==(null==l?void 0:l.avgSnr),isNeighborEdge:!0,listenerScore:m,loudScore:b,blendedScore:p,trafficWeight:x,linkAsymmetry:k,rxAdvertCount:v,txProxyCount:w},geometry:{type:"LineString",coordinates:C}})}return{type:"FeatureCollection",features:r}}function Le(A){return A<.5?4*A*A*A:1-Math.pow(-2*A+2,3)/2}function Ie(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 Re(A,e,t){const r=t?AA(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 Te="edge-blink-source",_e="edge-blink-layer",He=1e3,ze=1e3,Ge="node-markers-layer";function Oe(A){return A<0||A>=He?0:1-A/He}function Ue(A){if(A<0)return 0;if(A>=ze)return 0;const e=A/ze;return Math.pow(1-e,3)}function Ye(A){return[A[1],A[0]]}function We(A){const e=new Date(1e3*A);return`${(e.getMonth()+1).toString().padStart(2,"0")}/${e.getDate().toString().padStart(2,"0")}`}function Ve({hash:e,hashPrefix:n,name:o,isHub:i,isGateway:a,isBackbone:l,isZeroHop:c,isMobile:u,isRoomServer:d,isStale:f,lastSeenTimestamp:g,centrality:h,affinity:m,meanSnr:b,meanRssi:p,neighbor:x,onRemove:v,txDelayRec:w,onPingResult:y}){const k=gA(),[C,B]=A.useState(!1),[M,D]=A.useState(!1),[E,N]=A.useState(null),[Q,j]=A.useState(null),F=A.useCallback(async()=>{if(!M){D(!0),j(null),N(null);try{const A=e.startsWith("0x")?e.slice(0,4):`0x${e.slice(0,2)}`,t=await tA(A,30);t.success&&t.data?(N(t.data),null==y||y(t.data)):j(t.error||"Ping failed")}catch(A){j(A instanceof Error?A.message:"Ping failed")}finally{D(!1)}}},[e,M,y]),S=c?"Direct":(null==m?void 0:m.typicalHopPosition)?`${m.typicalHopPosition}-hop`:null,z=w&&!w.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"}},O={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-[#1a1a1a] px-1 py-0.5 rounded",children:n}),t.jsx("button",{onClick:async()=>{try{await navigator.clipboard.writeText(e),B(!0),setTimeout(()=>B(!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"),B(!0),setTimeout(()=>B(!1),1500)}catch{}document.body.removeChild(t)}},className:"p-0.5 hover:bg-[#252525] rounded transition-colors",title:"Copy full hash",children:C?t.jsx(r,{className:"w-3 h-3 text-accent-success"}):t.jsx(L,{className:"w-3 h-3 text-text-secondary"})}),t.jsx(pA,{hash:e,size:"sm"}),S&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded "+(c?"bg-amber-400 text-gray-900":"bg-[#2a2a2a] text-white"),children:S}),x.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:k.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:k.hubColor,color:"#fff",opacity:.8},title:"Gateway: 7-10% of last-hop traffic",children:"Gate"}),l&&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"}),u&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-orange-500/25 text-orange-300",children:"Mobile"}),d&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-amber-500/25 text-amber-400",children:"Room"}),f&&g&&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 ",We(g)]})]}),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(I,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsx("span",{className:"font-mono",children:rA(x.last_seen)})]}),(null==m?void 0:m.distanceMeters)&&t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(R,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:(U=m.distanceMeters,null===U?"—":U<1e3?`${Math.round(U)}m`:`${(U/1e3).toFixed(1)}km`)})]}),x.latitude&&x.longitude&&0!==x.latitude&&0!==x.longitude&&t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(T,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsxs("span",{className:"font-mono text-text-muted",children:[x.latitude.toFixed(2),", ",x.longitude.toFixed(2)]})]})]}),t.jsx("div",{className:"mb-1.5",style:{width:224},children:t.jsx(xA,{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==m?void 0:m.frequency)||0})]}),c&&void 0!==b&&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:[b.toFixed(1)," dB"]})]}),z&&w.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[w.networkRole].bg} ${G[w.networkRole].text}`,title:G[w.networkRole].title,children:w.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:x.advert_count||0})]}),c&&void 0!==p&&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(p)," dBm"]})]}),z&&w.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 ${O[w.dataConfidence].bg} ${O[w.dataConfidence].text}`,title:O[w.dataConfidence].title,children:w.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(_,{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:["×",(w.floodFactor??w.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:["×",(w.directFactor??w.directTxDelayFactor).toFixed(1)]})]})]})]}),t.jsxs("div",{className:"flex items-center justify-between pt-1 border-t border-white/[0.08]",children:[c?t.jsxs("button",{onClick:F,disabled:M,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:[M?t.jsx(s,{className:"w-3 h-3 animate-spin"}):t.jsx(H,{className:"w-3 h-3"}),t.jsx("span",{children:"Ping"})]}):t.jsx("div",{}),v&&t.jsx("button",{onClick:v,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(P,{className:"w-3.5 h-3.5"})})]}),E&&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:[E.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:[E.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:[E.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:E.path.length})]})]})]})]}),Q&&t.jsxs("div",{className:"mt-1.5 pt-1.5 border-t border-white/[0.08] text-[10px] text-red-400",children:["⚠ ",Q]})]});var U}const Ze="node-markers-native",Ke="node-markers-layer",Je="node-markers-layer-local",Xe="marker-standard",qe="marker-standard-neighbor",$e="marker-hub",At="marker-hub-neighbor",et="marker-gateway",tt="marker-gateway-neighbor",rt="marker-mobile",nt="marker-mobile-neighbor",ot="marker-room-server",it="marker-room-server-neighbor",at="marker-local",st="marker-blink-black",lt="marker-blink-black-local",ct="marker-blink",ut="marker-blink-local";function dt(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 ft(A){return A.startsWith("0x")?A.slice(2,4).toUpperCase():A.slice(0,2).toUpperCase()}function gt({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}=S(),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=dA(),t=(A,e,t=0,r=!1)=>{const n=document.createElement("canvas");n.width=32,n.height=32;const o=n.getContext("2d",r?{colorSpace:"display-p3"}:void 0),i=14-t/2;return o.beginPath(),o.arc(16,16,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,{data:o.getImageData(0,0,32,32),pixelRatio:2}},r=(A,e=!1)=>{const t=document.createElement("canvas");t.width=48,t.height=48;const r=t.getContext("2d",e?{colorSpace:"display-p3"}:void 0),n=24*.35*2;return r.strokeStyle=A,r.lineWidth=5,r.lineCap="round",r.lineJoin="round",r.beginPath(),r.moveTo(24-n,24),r.lineTo(24,24-n),r.lineTo(40.8,24),r.stroke(),r.beginPath(),r.moveTo(24-.7*n,24),r.lineTo(24-.7*n,35.76),r.lineTo(35.76,35.76),r.lineTo(35.76,24),r.stroke(),r.beginPath(),r.moveTo(20.64,35.76),r.lineTo(20.64,27.36),r.lineTo(27.36,27.36),r.lineTo(27.36,35.76),r.stroke(),{data:r.getImageData(0,0,48,48),pixelRatio:2}},n=(A,e)=>{const t=document.createElement("canvas");t.width=48,t.height=48;const r=t.getContext("2d"),n=24*.35*2;return r.strokeStyle=A,r.lineWidth=5,r.lineCap="round",r.lineJoin="round",e&&(r.fillStyle=e),r.beginPath(),r.roundRect(24-n,24-.6*n,1.6*n,1.2*n,6),e&&r.fill(),r.stroke(),r.beginPath(),r.moveTo(18.96,34.08),r.lineTo(24-.6*n,40.8),r.lineTo(24,34.08),r.stroke(),{data:r.getImageData(0,0,48,48),pixelRatio:2}},o="#00FF00",i={[Xe]:t(e.nodeFill,e.nodeStroke,1.5),[qe]:t(e.neighborColor),[$e]:t(e.hubColor),[At]:t(e.neighborColor),[et]:t(e.hubColor+"B3"),[tt]:t(e.neighborColor),[rt]:t("transparent",e.mobileColor,2),[nt]:t(e.neighborColor),[ot]:n(e.roomColor),[it]:n(e.neighborColor,"#1a1a1c"),[at]:r(e.localColor),[st]:t("#000000"),[lt]:r("#000000"),[ct]:t(o,void 0,0,!0),[ut]:r(o,!0)};for(const[a,s]of Object.entries(i))A.hasImage(a)&&A.removeImage(a),A.addImage(a,s.data,{pixelRatio:s.pixelRatio})}(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 dt(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=dt(n),m=a.centrality.get(e)||0,b=i.get(e),p="stale"===(null==b?void 0:b.status),x=p?Math.min(s,.5):s;let v="standard";h?v="roomServer":d?v="hub":f?v="gateway":g&&(v="mobile");const w=a.fullAffinity.get(e),y=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:ft(e),iconType:v,isNeighbor:l,isHub:d,isGateway:f,isMobile:g,isRoomServer:h,isStale:p,isZeroHop:l,opacity:x,blinkIntensity:0,lastSeenTimestamp:null==b?void 0:b.lastSeen,centrality:m,neighborJson:JSON.stringify(n),affinityJson:w?JSON.stringify(w):void 0,txDelayRecJson:y?JSON.stringify(y):void 0,meanSnr:(null==b?void 0:b.avgSnr)??void 0,meanRssi:(null==b?void 0:b.avgRssi)??void 0}})}return{type:"FeatureCollection",features:t}},[e,o,i,a,c,u]),y=A.useMemo(()=>(null==r?void 0:r.latitude)&&(null==r?void 0:r.longitude)?{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:[r.longitude,r.latitude]},properties:{hash:"local",name:r.name,hashPrefix:n?ft(n):"",iconType:"local",isNeighbor:!1,isHub:!1,isGateway:!1,isMobile:!1,isRoomServer:!1,isStale:!1,isZeroHop:!1,opacity:1,blinkIntensity:0,centrality:0}}]}:{type:"FeatureCollection",features:[]},[r,n]),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=[Ke,Je];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 M=A.useRef(w),D=A.useRef(y);A.useEffect(()=>{M.current=w,D.current=y},[w,y]),A.useEffect(()=>{var A;const e=null==(A=null==b?void 0:b.getMap)?void 0:A.call(b);if(!e||!x||!m||0===m.size)return;const t=e.getSource(Ze),r=e.getSource(`${Ze}-local`);if(t||r){if(t){const A=M.current;let e=!1;const r=A.features.map(A=>{const t=m.get(A.properties.hash)??0;return t!==A.properties.blinkIntensity?(e=!0,{...A,properties:{...A.properties,blinkIntensity:t}}):A});e&&t.setData({type:"FeatureCollection",features:r})}if(r&&n){const A=m.get(n)??0,e=D.current;e.features.length>0&&e.features[0].properties.blinkIntensity!==A&&r.setData({type:"FeatureCollection",features:[{...e.features[0],properties:{...e.features[0].properties,blinkIntensity:A}}]})}}},[b,x,m,n]);const E=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 N=dA(),Q=["case",[">",["get","blinkIntensity"],.66],ct,[">",["get","blinkIntensity"],.33],st,["==",["get","iconType"],"roomServer"],["case",["get","isNeighbor"],it,ot],["==",["get","iconType"],"hub"],["case",["get","isNeighbor"],At,$e],["==",["get","iconType"],"gateway"],["case",["get","isNeighbor"],tt,et],["==",["get","iconType"],"mobile"],["case",["get","isNeighbor"],nt,rt],["case",["get","isNeighbor"],qe,Xe]],j=["interpolate",["linear"],["zoom"],6,.25,10,1];return t.jsxs(t.Fragment,{children:[t.jsx(z,{id:Ze,type:"geojson",data:w,children:t.jsx(G,{id:Ke,type:"symbol",layout:{"icon-image":Q,"icon-size":j,"icon-allow-overlap":!0,"icon-ignore-placement":!0,"symbol-sort-key":["get","opacity"]},paint:{"icon-opacity":["get","opacity"]}})}),t.jsx(z,{id:`${Ze}-local`,type:"geojson",data:y,children:t.jsx(G,{id:Je,type:"symbol",layout:{"icon-image":["case",[">",["get","blinkIntensity"],.66],ut,[">",["get","blinkIntensity"],.33],lt,at],"icon-size":j,"icon-allow-overlap":!0,"icon-ignore-placement":!0},paint:{"icon-opacity":1}})}),E&&h&&t.jsx(O,{longitude:E.longitude,latitude:E.latitude,offset:{center:[0,0],top:[0,12],"top-left":[6,12],"top-right":[-6,12],bottom:[0,-12],"bottom-left":[6,-12],"bottom-right":[-6,-12],left:[12,0],right:[-12,0]},maxWidth:"280px",closeOnClick:!0,onClose:h,className:"maplibre-popup",children:E.isLocal?t.jsxs("div",{className:"text-sm",children:[t.jsx("strong",{className:"text-base",children:E.name}),E.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:ft(E.hash)}),t.jsx("br",{}),t.jsx("span",{style:{color:N.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)]})]}):E.neighbor&&E.hash?t.jsx(Ve,{hash:E.hash,hashPrefix:E.hashPrefix,name:E.name,isHub:E.isHub,isGateway:E.isGateway,isBackbone:E.isBackbone,isZeroHop:E.isZeroHop,isMobile:E.isMobile,isRoomServer:E.isRoomServer,isStale:E.isStale,lastSeenTimestamp:E.lastSeenTimestamp,centrality:E.centrality,affinity:E.affinity,meanSnr:E.meanSnr,meanRssi:E.meanRssi,neighbor:E.neighbor,txDelayRec:E.txDelayRec,onRemove:d?()=>d(E.hash,E.name):void 0}):null})]})}const ht=[Ke,Je];A.createContext(null);const mt="topology-validated-edges-native",bt="topology-weak-edges-native",pt="neighbor-edges-native",xt="topology-weak-edges-native",vt="topology-validated-edges-native",wt="neighbor-edges-native",yt={type:"FeatureCollection",features:[]},kt={"line-cap":"round","line-join":"round"},Ct={"line-color":"transparent","line-width":16,"line-opacity":0};function Bt({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}=S(),m=e||r,b=!0,p=f?"visible":"none",x=g||r,v=A.useRef(null),w=A.useRef(x),y=A.useRef(new Map),k=A.useRef(l),C=A.useRef(a);A.useLayoutEffect(()=>{w.current=x,k.current=l,C.current=a});const B=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]);A.useLayoutEffect(()=>{y.current=B},[B]);const M=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=C.current)||e.call(C,null)}else if(a&&C.current){const e=y.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=>k.current[A]||A.substring(0,4))};C.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=C.current)||t.call(C,null)}}},[i]),D=A.useCallback(()=>{var A;null!==v.current&&(v.current=null,i(null),null==(A=C.current)||A.call(C,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,M),e.on("mouseleave",t,D),!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,M),e.off("mouseleave",t,D))}catch{}}}return()=>{try{r()&&(e.off("mousemove",t,M),e.off("mouseleave",t,D))}catch{}}},[h,m,M,D]),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,M),e.on("mouseleave",t,D),!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,M),e.off("mouseleave",t,D))}catch{}}}return()=>{try{r()&&(e.off("mousemove",t,M),e.off("mouseleave",t,D))}catch{}}},[h,b,f,M,D]),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(wt,"node-markers-layer"),r("neighbor-edges-hitarea-native",wt),(r(vt,"neighbor-edges-hitarea-native")||r(vt,"node-markers-layer"))&&r("topology-validated-edges-hitarea-native",vt),r(xt,"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===mt||A.sourceId===bt||A.sourceId===pt)&&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,N=function(A,e,t,r,n){const o=CA(),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),Q=function(A){const e=null!==A,{YELLOW:t,GREEN:r,RED:n,GRAY:o}=W,i=["to-number",["get","listenerScore"],0],a=["to-number",["get","loudScore"],0],s=["/",i,["max",["+",i,a],1]],l=["*",["+",.2,["*",["to-number",["get","trafficWeight"],0],.8]],8];return{"line-color":["case",["all",["==",i,0],["==",a,0]],o,[">=",s,.97],r,["<=",s,.03],n,["interpolate",["linear"],s,.03,n,.5,t,.97,r]],"line-width":["interpolate",["linear"],["zoom"],6,e?["case",["==",["get","key"],A],["max",["*",l,.25],1.25],["*",l,.25]]:["*",l,.25],10,e?["case",["==",["get","key"],A],["max",l,5],l]:l],"line-opacity":e?["case",["==",["get","key"],A],1,.35]:.9}}(E);return t.jsxs(t.Fragment,{children:[m&&t.jsx(z,{id:bt,type:"geojson",data:yt,children:t.jsx(G,{id:xt,type:"line",paint:N,layout:kt})}),m&&t.jsxs(z,{id:mt,type:"geojson",data:yt,children:[t.jsx(G,{id:"topology-validated-edges-hitarea-native",type:"line",paint:Ct,layout:kt}),t.jsx(G,{id:vt,type:"line",paint:N,layout:kt})]}),t.jsxs(z,{id:pt,type:"geojson",data:yt,children:[t.jsx(G,{id:"neighbor-edges-hitarea-native",type:"line",paint:Ct,layout:{...kt,visibility:p}}),t.jsx(G,{id:wt,type:"line",paint:Q,layout:{...kt,visibility:p}})]})]})}const Mt=["topology-validated-edges-hitarea-native","topology-validated-edges-native","topology-weak-edges-native","neighbor-edges-hitarea-native","neighbor-edges-native"];function Dt({targetHash:e,nodeCoordinates:t,onComplete:r}){const{current:n}=S(),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:10,duration:2500,essential:!0}),setTimeout(()=>{null==r||r()},2600)},[e,t,n,r]),null}function Et({highlightedEdgeKey:e,validatedPolylines:t,weakPolylines:r,onEnsureTopology:n}){const{current:o}=S(),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 Nt(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 Qt(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 jt({ghost:e,neighborCoordinates:r,onHighlightedNeighborsChange:n}){const{current:o}=S(),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)},[e,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:[Qt(t,A,Math.max(500,Math.min(o,n)))]}},[e,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(z,{id:"ghost-uncertainty-circle",type:"geojson",data:c,children:t.jsx(G,{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))}(kA.edges.neighborHover);const Pt={longitude:0,latitude:0,zoom:2};function Ft(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))*6371}function St({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 Lt({neighbors:e,localNode:r,localHash:n,onRemoveNode:o,selectedNodeHash:i,onNodeSelected:a,highlightedEdgeKey:s,highlightedGhost:l}){const c=A.useRef(null),u=nA(),d=oA(),f=iA(),g=aA(),h=sA(),[m,b]=A.useState(!1),p=lA(A=>A.preloadFromNodes),x=lA(A=>A.isLoading),v=lA(A=>A.terrainGrid),w=n??h,y=A.useMemo(()=>{const A=[];for(const[,t]of Object.entries(e))t.latitude&&t.longitude&&A.push([t.latitude,t.longitude]);return A},[e]),k=A.useMemo(()=>function(A,e){let t=[...A];if((null==e?void 0:e.latitude)&&(null==e?void 0:e.longitude)&&t.push([e.latitude,e.longitude]),0===t.length)return null;if(1===t.length){const[A,e]=t[0];return{longitude:e,latitude:A,zoom:14}}t=function(A,e){if(A.length<=2)return A;let t,r;if((null==e?void 0:e.latitude)&&(null==e?void 0:e.longitude))t=e.latitude,r=e.longitude;else{let e=0,n=0;for(const[t,r]of A)e+=t,n+=r;t=e/A.length,r=n/A.length}const n=A.map(([A,e])=>({pos:[A,e],dist:Ft(t,r,A,e)}));n.sort((A,e)=>A.dist-e.dist);const o=n[Math.floor(n.length/2)].dist,i=Math.max(3*o,50),a=n.filter(A=>A.dist<=i).map(A=>A.pos);return a.length<.5*A.length?A:a}(t,e);let r=1/0,n=-1/0,o=1/0,i=-1/0;for(const[f,g]of t)r=Math.min(r,g),n=Math.max(n,g),o=Math.min(o,f),i=Math.max(i,f);const a=(r+n)/2,s=(o+i)/2,l=i-o,c=n-r,u=Math.max(l,c);let d=16;return u>0&&(d=Math.floor(Math.log2(360/u*1.2)),d=Math.max(1,Math.min(14,d))),d=Math.min(d+1,12),{longitude:a,latitude:s,zoom:d}}(y,r),[y,r]),[C,B]=A.useState(()=>k??Pt),M=A.useRef(!1);A.useEffect(()=>{!M.current&&k&&(B(k),M.current=!0,setTimeout(()=>b(!0),50))},[k]);const[D,E]=A.useState(!1),[N,Q]=A.useState(!1),[j,P]=A.useState(!0),[F,S]=A.useState(!1),[L,I]=A.useState(!1),[R,T]=A.useState("all"),[_,H]=A.useState(null),[z,G]=A.useState(null),[O]=A.useState(0),[W]=A.useState(.5),[Z]=A.useState(0),[K,J]=A.useState(null),[tA,rA]=A.useState(""),[uA,dA]=A.useState(!1),[fA,gA]=A.useState("fetching"),[hA,mA]=A.useState(!1),[bA,pA]=A.useState(0),[xA,wA]=A.useState(!1),[kA,CA]=A.useState(null),MA=A.useCallback(A=>CA(A),[]),DA=A.useCallback(()=>CA(null),[]),[,NA]=A.useState(new Set),jA=ZA(A=>A.coveragePoints),PA=ZA(A=>A.isVisible),FA=ZA(A=>A.brightness),LA=ZA(A=>A.openModal),RA=qA(A=>A.isEnabled),_A=qA(A=>A.toggle),HA=A.useRef(!1);A.useEffect(()=>{jA.length>0&&PA&&!HA.current&&(P(!1),HA.current=!0)},[jA.length,PA]);const zA=A.useRef(null);A.useEffect(()=>{if(i&&i!==zA.current){zA.current=i;const A=setTimeout(()=>{CA(i)},1250);return()=>clearTimeout(A)}},[i]);const[GA,OA]=A.useState(null),[UA,YA]=A.useState(null),WA=A.useCallback((A,e,t)=>{G(A),A&&e&&t?OA({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||OA(null)},[]),VA=A.useCallback((A,e)=>{YA(A),A&&OA(null)},[]),KA=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]),XA=A.useMemo(()=>Object.entries(e).filter(([,A])=>A.latitude&&A.longitude),[e]),$A=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 XA)t.latitude&&t.longitude&&A.set(e,[t.latitude,t.longitude]);return A},[w,r,XA]),Ae=A.useMemo(()=>{const A=new Map;for(const e of f)"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},[f]),ee=A.useMemo(()=>{var A,t;const r=new Set;for(const n of Ae.keys())(null==(A=e[n])?void 0:A.latitude)&&(null==(t=e[n])?void 0:t.longitude)&&r.add(n);return r},[Ae,e]),te=A.useMemo(()=>{if(0===ee.size||!w)return new Map;const A=q.getPackets();if(0===A.length)return new Map;const e=AA(w);return V(A,ee,e).scores},[ee,w,g.packetCount]),re=A.useCallback(A=>!!(w&&(A.fromHash===w&&ee.has(A.toHash)||A.toHash===w&&ee.has(A.fromHash))),[w,ee]),ne=A.useMemo(()=>{var A,t;if(0===f.length||!w)return[];if(g.backgroundLoadComplete)return[];const r=[];for(const n of f){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},[f,w,g.backgroundLoadComplete,e]),oe=A.useMemo(()=>{const A=[];if(ne.length>0&&!g.backgroundLoadComplete){for(const e of ne){const t=$A.get(e.fromHash),r=$A.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A}for(const e of u.validatedEdges){if(re(e))continue;const t=$A.get(e.fromHash),r=$A.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A},[u.validatedEdges,$A,re,ne,g.backgroundLoadComplete]),ie=A.useMemo(()=>{const A=[];for(const e of u.weakEdges){if(re(e))continue;const t=$A.get(e.fromHash),r=$A.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A},[u.weakEdges,$A,re]),ae=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 u.lastHopNeighbors)n.set(e.hash,e.count);const o=new Map;for(const e of f)o.set(e.hash,e.count);for(const r of ee){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:Ae.get(r)??null,rxAdvertCount:a,txProxyCount:s})}return A},[r,ee,e,Ae,u.lastHopNeighbors,f]),se=A.useMemo(()=>new Set(u.loopEdgeKeys),[u.loopEdgeKeys]),le=A.useMemo(()=>new Set(u.backboneEdges),[u.backboneEdges]),ce=A.useMemo(()=>{let A=0;if(ne.length>0&&!g.backgroundLoadComplete){for(const e of ne)e.certainCount>A&&(A=e.certainCount);return A||1}for(const e of u.validatedEdges)e.certainCount>A&&(A=e.certainCount);return A||1},[u.validatedEdges,ne,g.backgroundLoadComplete]),ue=A.useRef(null);A.useLayoutEffect(()=>{var A,e;ue.current=(null==(e=null==(A=c.current)?void 0:A.getMap)?void 0:e.call(A))??null});const de=X(),fe=A.useMemo(()=>q.getPackets(),[de]);!function({map:e,nodeCoordinates:t,packets:r,localHash:n,neighbors:o,meshTopology:i,enabled:a=!0}){const s=A.useRef(null);A.useEffect(()=>{const A=e&&"current"in e?e.current:e;s.current=A});const l=A.useRef(!1),c=A.useRef(null),u=A.useRef([]),d=A.useRef(0),f=A.useRef(null),g=A.useRef([]),h=A.useRef(new Map),m=A.useRef(t);A.useEffect(()=>{m.current=t},[t]),A.useEffect(()=>{h.current=function(A,e){const t=new Map;for(const r of Object.keys(A)){const A=AA(r);t.has(A)||t.set(A,r)}if(e){const A=AA(e);t.set(A,e)}return t}(o,n)},[o,n]),A.useEffect(()=>{if(!a){f.current&&(clearTimeout(f.current),f.current=null),g.current=[],null!==c.current&&(cancelAnimationFrame(c.current),c.current=null),u.current=[];const A=s.current;if(A&&l.current){const e=A.getSource(Te);e&&e.setData({type:"FeatureCollection",features:[]})}}},[a]),A.useEffect(()=>{const A=s.current;if(!A)return;let e=null,t=!1;const r=()=>{if(!t&&!l.current)try{A.getLayer(_e)&&A.removeLayer(_e),A.getSource(Te)&&A.removeSource(Te),A.addSource(Te,{type:"geojson",data:{type:"FeatureCollection",features:[]}});const t=A.getLayer(Ge)?Ge:void 0;A.addLayer({id:_e,type:"line",source:Te,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),l.current=!0,e&&(clearInterval(e),e=null)}catch{}};return A.isStyleLoaded()&&r(),A.once("style.load",()=>{r()}),l.current||(e=setInterval(()=>{l.current?e&&clearInterval(e):r()},100),setTimeout(()=>{e&&(clearInterval(e),e=null)},5e3)),()=>{t=!0,e&&clearInterval(e),null!==c.current&&(cancelAnimationFrame(c.current),c.current=null);const A=s.current;if(A&&l.current){try{A.getLayer(_e)&&A.removeLayer(_e),A.getSource(Te)&&A.removeSource(Te)}catch{}l.current=!1}}},[]);const b=A.useRef(()=>{});A.useEffect(()=>{b.current=()=>{const A=s.current;if(!A)return;const e=A.getSource(Te);if(!e)return;const t=performance.now(),r=u.current,n=[],o=[];for(const i of r){const A=t-i.startTime-i.delay;if(A<(i.isSpeculative?ze:He)){o.push(i);const e=i.isSpeculative?Ue(A):Oe(A);e>0&&n.push({type:"Feature",properties:{intensity:e,opacityMult:i.isSpeculative?.5:1,isSpeculative:i.isSpeculative??!1},geometry:{type:"LineString",coordinates:[i.fromCoord,i.toCoord]}})}}e.setData({type:"FeatureCollection",features:n}),u.current=o,o.length>0?c.current=requestAnimationFrame(()=>b.current()):c.current=null}},[]);const p=A.useCallback(()=>{const A=s.current;A&&function(A){if(!A.getLayer(_e))return;const e=A.getLayer(Ge)?Ge:void 0;try{A.moveLayer(_e,e)}catch{}}(A),null===c.current&&(c.current=requestAnimationFrame(()=>b.current()))},[]),x=A.useCallback(()=>{if(!s.current||!l.current)return;const A=g.current;if(g.current=[],f.current=null,0===A.length)return;const e=h.current,t=m.current;if(0===e.size)return;const r=performance.now();let o=0,a=!1;const c=new Set;for(const s of A){const A=$(s,n);if(!A||A.original.length<2)continue;const l=A.original;let d=0,f=null;for(let n=0;n0){A.sort((A,e)=>e.confidence-A.confidence);const e=Math.max(1,Math.ceil(.25*A.length)),n=A.slice(0,e),i=o+150*d;for(const{edgeKey:A,otherHash:o}of n){const e=t.get(f),n=t.get(o);u.current.push({edgeKey:A,fromCoord:Ye(e),toCoord:Ye(n),startTime:r,delay:i,isSpeculative:!0}),c.add(A),a=!0}}}d>0&&(o+=150*d*.5)}a&&p()},[n,i,p]);A.useEffect(()=>{const A=s.current;if(!a||!A||0===r.length)return;if(!l.current)return;const e=d.current,t=r.filter(A=>(A.timestamp??0)>e);0!==e?0!==t.length&&(d.current=Math.max(...t.map(A=>A.timestamp??0)),g.current.push(...t),f.current&&clearTimeout(f.current),f.current=setTimeout(x,175)):d.current=Math.max(...r.map(A=>A.timestamp??0))},[a,r,x]),A.useEffect(()=>()=>{f.current&&clearTimeout(f.current)},[])}({map:ue,nodeCoordinates:$A,packets:fe,localHash:w,neighbors:e,meshTopology:u,enabled:RA});const{isExiting:ge,isAnimating:he,resetAnimationState:me}=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,neighborLinkScores:h=new Map}){const m=A.useRef(null);A.useEffect(()=>{const A=e&&"current"in e?e.current:e;m.current=A});const b=A.useRef(new Map),p=A.useRef(1),x=A.useRef(new Map),v=A.useRef(new Map),w=A.useRef(!1),y=A.useRef(null),k=A.useRef(t),C=A.useRef(new Set),B=A.useRef(""),M=A.useRef(new Map),D=A.useRef(""),E=A.useRef(""),N=A.useRef(""),Q=A.useRef(r),j=A.useRef(n),P=A.useRef(o),F=A.useRef(i),S=A.useRef(a),L=A.useRef(s),I=A.useRef(l),R=A.useRef(d),T=A.useRef(f),_=A.useRef(h);A.useEffect(()=>{Q.current=r,j.current=n,P.current=o,F.current=i,S.current=a,L.current=s,I.current=l,R.current=d,T.current=f,_.current=h},[r,n,o,i,a,s,l,d,f,h]);const H=A.useCallback((A=!1)=>{var e,t,r,n,o,i,a,s,l,d;const f=m.current;if(!f)return;const h=f.getSource(c),w=f.getSource(u),y=f.getSource(g);if(h){const o=Fe(Q.current,!0,b.current,p.current,x.current,v.current,P.current,F.current,S.current,L.current,I.current),i=`${o.features.length}:${(null==(t=null==(e=o.features[0])?void 0:e.properties)?void 0:t.key)??""}:${(null==(n=null==(r=o.features[o.features.length-1])?void 0:r.properties)?void 0:n.key)??""}:${Array.from(b.current.values()).reduce((A,e)=>A+e,0).toFixed(2)}`;(A||i!==D.current)&&(h.setData(o),D.current=i)}if(w){const e=Fe(j.current,!1,b.current,p.current,x.current,v.current,P.current,F.current,S.current,L.current,I.current),t=`${e.features.length}:${(null==(i=null==(o=e.features[0])?void 0:o.properties)?void 0:i.key)??""}:${(null==(s=null==(a=e.features[e.features.length-1])?void 0:a.properties)?void 0:s.key)??""}`;(A||t!==E.current)&&(w.setData(e),E.current=t)}if(y&&R.current.length>0){const e=Se(R.current,_.current),t=`${e.features.length}:${(null==(d=null==(l=e.features[0])?void 0:l.properties)?void 0:d.hash)??""}`;(A||t!==N.current)&&(y.setData(e),N.current=t)}},[c,u,g]),z=A.useCallback(()=>{y.current&&(cancelAnimationFrame(y.current),y.current=null),b.current=new Map,p.current=1,x.current=new Map,v.current=new Map,w.current=!1,C.current=new Set,B.current="",M.current=new Map},[]);return A.useEffect(()=>{const A=k.current,e=t;if(k.current=t,m.current){if(y.current&&(cancelAnimationFrame(y.current),y.current=null),A&&!e&&!w.current){w.current=!0;const A=new Map(b.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)b.current.set(e,t*(1-i));H(!0),o<1?y.current=requestAnimationFrame(t):(w.current=!1,b.current=new Map,C.current=new Set,B.current="",x.current=new Map,v.current=new Map,y.current=null,H(!0))};y.current=requestAnimationFrame(t)}!A&&e&&(b.current=new Map,C.current=new Set,B.current="")}},[t,H]),A.useEffect(()=>{const A=m.current;if(!t||w.current||!A)return;const e=[...r,...n],o=e.map(A=>`${A.edge.key}:${A.edge.certainCount}`).sort().join(","),i=0===C.current.size,a=""!==B.current&&B.current!==o;if(!i&&!a)return void H();const s=[],l=[];for(const{edge:t}of e)C.current.has(t.key)?l.push(t.key):s.push(t.key);a&&l.length>0&&(x.current=new Map(M.current),p.current=0),v.current=new Map;for(const{edge:t}of r){const A=vA(t.certainCount);v.current.set(t.key,A)}for(const t of s)b.current.set(t,0);for(const t of l)b.current.has(t)||b.current.set(t,1);if(s.length>0||a&&l.length>0){y.current&&(cancelAnimationFrame(y.current),y.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);p.current=Pe(A)}H(!0);const o=BA+(s.length-1)*e;y.current=n{const A=m.current;if(!A||!g)return;const e=()=>{const e=A.getSource(g);if(!e)return!1;if(d.length>0){const A=Se(d,h);e.setData(A)}else e.setData({type:"FeatureCollection",features:[]});return!0};if(e())return;const t=r=>{r.sourceId===g&&e()&&A.off("sourcedata",t)};A.on("sourcedata",t);const r=()=>{e()&&(A.off("styledata",r),A.off("sourcedata",t))};return A.on("styledata",r),()=>{A.off("sourcedata",t),A.off("styledata",r)}},[g,d,h]),A.useEffect(()=>()=>{y.current&&(cancelAnimationFrame(y.current),y.current=null)},[]),{isExiting:w.current,isAnimating:null!==y.current,resetAnimationState:z,weightAnimProgress:p.current,animStartWeights:x.current,animTargetWeights:v.current}}({map:ue,showTopology:N,validatedPolylines:oe,weakPolylines:ie,maxCertainCount:ce,loopEdgeKeys:se,backboneEdgeKeys:le,highlightedEdgeKey:s,neighbors:e,validatedSourceId:mt,weakSourceId:bt,neighborPolylines:ae,showNeighborLines:j,neighborSourceId:pt,neighborLinkScores:te}),be=A.useMemo(()=>{const A=new Set;for(const e of u.hubNodes){A.add(e);for(const t of u.validatedEdges)t.fromHash===e&&A.add(t.toHash),t.toHash===e&&A.add(t.fromHash)}return A},[u.hubNodes,u.validatedEdges]),pe=A.useMemo(()=>{const A=new Set;if(!n)return A;for(const e of u.validatedEdges)e.fromHash===n&&A.add(e.toHash),e.toHash===n&&A.add(e.fromHash);return A},[n,u.validatedEdges]),{getNodeOpacity:xe}=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)*Le(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:"direct"===R,soloHubs:"hubs"===R,neighborHashes:XA.map(([A])=>A),hubConnectedNodes:be,directNodeSet:ee,localConnectedNodes:pe,showTopology:N}),{blinkingNodes:ve,blinkColor:we}=function({neighbors:e,localHash:t,enabled:r=!0}){const[n,o]=A.useState(new Map),i=X(),a=A.useRef(q.getPackets());A.useEffect(()=>{a.current=q.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=AA(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=Ie(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=$(r,t);if(!A||0===A.original.length)continue;const e=Re(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:RA}),ye=A.useCallback(A=>{if("all"===R)return!0;if("direct"===R)return ee.has(A);if("hubs"===R){if(u.hubNodes.includes(A))return!0;for(const e of u.validatedEdges){if(e.fromHash===A&&u.hubNodes.includes(e.toHash))return!0;if(e.toHash===A&&u.hubNodes.includes(e.fromHash))return!0}return!1}return!0},[R,ee,u.hubNodes,u.validatedEdges]),Ce=A.useCallback(async()=>{mA(!0),dA(!0),gA("fetching"),pA(0),await d(),pA(g.packetCount),gA("analyzing"),await new Promise(A=>setTimeout(A,200)),gA("building");const A=Date.now(),e=Date.now()-A;e<1700&&await new Promise(A=>setTimeout(A,1700-e)),gA("complete"),await new Promise(A=>setTimeout(A,1e3)),dA(!1),mA(!1),me(),wA(!0),setTimeout(()=>{Q(!0)},150)},[d,me,g.packetCount]),Be=A.useCallback(()=>{xA?Q(A=>!A):Ce()},[xA,Ce]),Me=A.useCallback(A=>{B(A.viewState)},[]),De=A.useCallback(()=>{E(A=>{var e,t,r,n,o,i,a;const s=!A,l=null==(r=null==(t=null==(e=c.current)?void 0:e.getContainer())?void 0:t.closest(".map-container-fullscreen, .map-container-16-9"))?void 0:r.parentElement;return s?l&&document.fullscreenEnabled?null==(n=l.requestFullscreen)||n.call(l).catch(()=>{}):l&&document.webkitFullscreenEnabled&&(null==(o=l.webkitRequestFullscreen)||o.call(l)):document.fullscreenElement?null==(i=document.exitFullscreen)||i.call(document).catch(()=>{}):document.webkitFullscreenElement&&(null==(a=document.webkitExitFullscreen)||a.call(document)),s})},[]),Ne=A.useCallback(A=>{T(A)},[]),Qe=A.useCallback(()=>{P(A=>!A)},[]),je=A.useCallback(()=>{S(A=>!A)},[]),We=A.useCallback(()=>{I(A=>{const e=!A;if(c.current){const A=c.current.getMap();A&&A.stop()}if(e&&c.current){const A=c.current.getMap();A&&A.easeTo({pitch:45,duration:1500,easing:A=>1-Math.pow(1-A,3)})}if(!e&&c.current){const A=c.current.getMap();A&&A.easeTo({pitch:0,bearing:0,duration:800,easing:A=>1-Math.pow(1-A,2)})}return e})},[]),Ve=A.useCallback(()=>{N||Q(!0)},[N]),Ze=A.useCallback((A,e)=>{J(A),rA(e)},[]),Ke=A.useCallback(()=>{K&&o&&o(K),J(null),rA("")},[K,o]),Je=A.useMemo(()=>[...Mt,...ht],[]),Xe=A.useRef(!1);A.useEffect(()=>{Xe.current="ontouchstart"in window||navigator.maxTouchPoints>0},[]);const qe=A.useCallback(A=>{!Xe.current||!GA||A.features&&0!==A.features.length||(OA(null),G(null))},[GA]),$e=A.useCallback(A=>{var e,t;if(!A.features||0===A.features.length)return;if(A.features.some(A=>{var e,t;return null==(t=null==(e=A.layer)?void 0:e.id)?void 0:t.startsWith("node-markers-")}))return void(z&&(G(null),OA(null)));const r=A.features.find(A=>{var e;const t=null==(e=A.layer)?void 0:e.id;return(null==t?void 0:t.startsWith("topology-"))||(null==t?void 0:t.startsWith("neighbor-"))});if(!r)return;const 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]$/,"");G(e),A.lngLat&&OA({longitude:A.lngLat.lng,latitude:A.lngLat.lat,type:i?"topology":"neighbor",properties:o})}try{(null==(t=c.current)?void 0:t.getCanvas())&&(c.current.getCanvas().style.cursor="pointer")}catch{}},[z]),At=A.useCallback(()=>{var A;G(null),OA(null);try{(null==(A=c.current)?void 0:A.getCanvas())&&(c.current.getCanvas().style.cursor="")}catch{}},[]),et=D?"map-container-fullscreen":"map-container-16-9",tt=y.length>0||(null==r?void 0:r.latitude)&&(null==r?void 0:r.longitude),rt=!m||!tt,nt=tt;return t.jsxs("div",{className:`relative ${et}`,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."}),rt&&t.jsx("div",{className:"absolute inset-0 z-50 bg-bg-surface rounded-[1.125rem] flex items-center justify-center","aria-hidden":"true",children:t.jsxs("div",{className:"flex flex-col items-center gap-3",children:[t.jsx("div",{className:"w-6 h-6 border-2 border-accent-primary border-t-transparent rounded-full animate-spin"}),t.jsx("span",{className:"text-sm text-text-muted",children:"Loading map..."})]})}),nt&&t.jsx("div",{className:`relative w-full h-full ${D?"":"rounded-[1.125rem] overflow-hidden"} ${rt?"opacity-0":"opacity-100 transition-opacity duration-300"}`,children:t.jsxs(U,{ref:c,...C,onMove:Me,mapStyle:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",style:{width:"100%",height:"100%"},attributionControl:!1,interactiveLayerIds:Je,onMouseMove:$e,onMouseLeave:At,onClick:qe,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&&c.current){const A=c.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(Y,{position:"bottom-right"}),t.jsx(Ee,{enabled:L,exaggeration:4}),t.jsx(ke,{coveragePoints:jA,visible:jA.length>0&&PA,terrainEnabled:L,brightness:FA}),t.jsx(Bt,{showTopology:N,isExiting:ge,hoveredEdgeKey:z,highlightedLoopEdges:null==UA?void 0:UA.highlightedEdgeKeys,onEdgeHover:WA,onLoopHover:VA,loops:u.loops,neighborNames:KA,opacityBias:O,widthMultiplier:W,trafficFilter:Z,showNeighborLines:j,disableHover:he||hA}),i&&t.jsx(Dt,{targetHash:i,nodeCoordinates:$A,onComplete:a}),s&&t.jsx(Et,{highlightedEdgeKey:s,validatedPolylines:oe,weakPolylines:ie,onEnsureTopology:Ve}),t.jsx(jt,{ghost:l??null,neighborCoordinates:$A,onHighlightedNeighborsChange:NA}),t.jsx(gt,{neighborsWithLocation:XA,localNode:r,localHash:n,zeroHopNeighbors:ee,lastHopNeighborMap:Ae,meshTopology:u,hoveredMarker:_,onMarkerHover:H,getNodeOpacity:xe,shouldShowNode:ye,onRequestRemove:o?Ze:void 0,openPopupId:kA,onOpenPopup:MA,onClosePopup:DA,blinkingNodes:ve,blinkColor:we})]})}),(()=>{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=e.listenerScore??0,n=e.loudScore??0,o=r>0||n>0;return o&&(t.push({label:"listener",value:r,color:"text-accent-success"}),t.push({label:"loud",value:n,color:"text-accent-danger"})),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}(GA?{type:GA.type,properties:GA.properties}:null,UA,ce);return A&&t.jsx("div",{className:"map-edge-tooltip",children:t.jsx("div",{className:"map-control-glass map-edge-tooltip-inner",children:t.jsx(St,{data:A})})})})(),t.jsx(QA,{mapRef:c,showNeighborLines:j,onToggleNeighborLines:Qe,hasNeighborPolylines:ae.length>0,nodeFilter:R,onNodeFilterChange:Ne,hasHubNodes:u.hubNodes.length>0,hasZeroHopNeighbors:ee.size>0,showCoverage:F,onToggleCoverage:je,show3DTerrain:L,onToggle3DTerrain:We,isFullscreen:D,onToggleFullscreen:De}),t.jsxs("div",{className:"map-legend-stack",children:[t.jsx(SA,{isActive:N,hasAnalyzed:xA,isLoading:hA,onClick:Be}),t.jsx(IA,{isActive:RA,onClick:_A}),t.jsx(TA,{isActive:jA.length>0&&PA,onClick:LA}),t.jsx(EA,{showTopology:N,validatedPolylineCount:oe.length,filteredNeighborCount:XA.length,hasLocalNode:!(!(null==r?void 0:r.latitude)||!(null==r?void 0:r.longitude)),meshTopology:u,zeroHopNeighbors:ee,neighborsWithLocation:XA})]}),!D&&t.jsx("div",{className:"glass-card-frame absolute inset-0 pointer-events-none rounded-[1.125rem]",style:{zIndex:9999},"aria-hidden":"true"}),t.jsx(cA,{isOpen:null!==K,onCancel:()=>J(null),onConfirm:Ke,title:"Remove Node?",message:`Remove "${tA}" from the contacts list? This will hide the node until it sends a new packet.`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger"}),t.jsx(yA,{isOpen:uA,currentStep:fA,packetCount:bA}),t.jsx(JA,{})]})}export{Lt as default}; diff --git a/frontend/dist/assets/ContactsMapMapLibre-C5vcx8J6.js b/frontend/dist/assets/ContactsMapMapLibre-C5vcx8J6.js new file mode 100644 index 00000000..9efdafad --- /dev/null +++ b/frontend/dist/assets/ContactsMapMapLibre-C5vcx8J6.js @@ -0,0 +1 @@ +import{r as A,b as e,j as t,aa as r,ab as n,b9 as o,ba as i,h as a,at as s,ao as l,V as c,a2 as u,ad as d,k as f,aP as g,bb as h,bc as m,bd as b,be as p,af as x,A as v,aL as w,Z as y,bf as k,bg as C,bh as B,c as M,bi as D,X as E,bj as N,a8 as Q,bk as j,av as P,b2 as F,bl as S,$ as L,o as I,an as R,a5 as T,bm as _,au as H,b5 as z,b6 as G,b8 as O,b4 as U,bn as Y}from"./vendor-react-O8XH9yVn.js";import"./maplibre-gl-Bk5DsYkB.js";import{L as W,c as V}from"./link-scoring-DacI-LFP.js";import{y as Z,B as K,T as J,at as X,au as q,av as $,e as AA,aw as eA,M as tA,N as rA,ax as nA,ay as oA,f as iA,G as aA,az as sA,aA as lA}from"./index-Dp0UlTio.js";import{C as cA}from"./ConfirmModal-DYznouaT.js";import{c as uA}from"./recharts-BU7auunF.js";import{g as dA,f as fA,h as gA,i as hA}from"./useThemeColors-CD0TSU03.js";import{p as mA,a as bA}from"./vendor-core-WoOfkQwm.js";import{P as pA,N as xA}from"./Contacts-au5gCj-N.js";import"./deckgl-DTsmDcfs.js";import"./PageLayout-DE5PEtD2.js";import"./HashBadge-aS_UIcg2.js";import"./SignalIndicator-BVAbF7xm.js";import"./CollisionExplorerModal-DEtEH0fD.js";import"./leaflet-D_ckmI2R.js";function vA(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 wA({label:A,icon:e,status:n,detail:o}){return t.jsxs("div",{className:uA("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:uA("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:uA("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 yA=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(wA,{label:"Analyzing Database",icon:t.jsx(i,{className:"w-4 h-4"}),status:f("analyzing"),detail:"Processing packet paths"}),t.jsx(wA,{label:"Building Topology",icon:t.jsx(n,{className:"w-4 h-4"}),status:f("building"),detail:"Computing mesh edges"}),t.jsx(wA,{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)}),kA={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 CA(){if("undefined"==typeof window)return kA;const A=dA(),e=fA();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:kA.edges.neighborRest,neighborHover:kA.edges.neighborHover,highlight:e.highlight},edgeOpacity:kA.edgeOpacity}}const BA=2e3;function MA({text:A}){return t.jsx(J,{content:A,delay:200,children:t.jsx(g,{className:"w-3.5 h-3.5 text-text-muted cursor-help"})})}function DA({title:A,tooltip:e,isOpen:r,onToggle:n,hasBorder:o=!1}){return t.jsxs("button",{onClick:n,className:"w-full flex items-center justify-between text-text-secondary font-medium py-1 hover:text-text-primary transition-colors "+(o?"mt-2 pt-2 border-t border-white/10":""),children:[t.jsxs("span",{className:"flex items-center gap-1",children:[A,t.jsx(MA,{text:e})]}),t.jsx(f,{className:"w-3 h-3 text-text-muted transition-transform duration-200 "+(r?"":"-rotate-90")})]})}function EA({showTopology:e,validatedPolylineCount:r,filteredNeighborCount:n,hasLocalNode:o,meshTopology:i,zeroHopNeighbors:s,neighborsWithLocation:f}){const g=gA(),h=Z(),m=K(),b=h.filter(A=>A.isLikelyReal).length,p=function(A){let e=0;for(const t of A.txDelayRecommendations.values())"backbone"===t.networkRole&&e++;return e}(i),[x,v]=A.useState(!0),[w,y]=A.useState(!0),[k,C]=A.useState(!0);return t.jsxs("div",{className:"map-control-glass text-xs",style:{padding:"0.625rem"},children:[t.jsx(DA,{title:"Nodes",tooltip:"Node type shown by shape. Yellow = direct RF neighbor.",isOpen:x,onToggle:()=>v(!x)}),x&&t.jsxs("div",{className:"flex flex-col gap-1 mt-1.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"14px",height:"14px",backgroundColor:g.nodeFill}}),t.jsx("span",{className:"text-text-muted",children:"Node"}),t.jsx(MA,{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:"14px",height:"14px",backgroundColor:g.hubColor}}),t.jsx("span",{className:"text-text-muted",children:"Hub"}),t.jsx(MA,{text:"Network hub (≥10% of last-hop traffic). Hubs are central to mesh traffic flow."})]}),(B=f,B.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(l,{className:"w-3 h-3 flex-shrink-0",style:{color:g.roomColor},strokeWidth:2.5}),t.jsx("span",{className:"text-text-muted",children:"Room"}),t.jsx(MA,{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(c,{className:"w-3 h-3 flex-shrink-0",style:{color:g.localColor},strokeWidth:2.5}),t.jsx("span",{className:"text-text-muted",children:"Local"}),t.jsx(MA,{text:"Your repeater. This is the node running pyMC_Repeater that you're connected to."})]}),s.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:g.neighborColor}}),t.jsx("span",{className:"text-text-muted",children:"Neighbor"}),t.jsx(MA,{text:"Zero-hop direct RF contact. Color indicates we receive their ADVERTs directly."})]}),i.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:"14px",height:"14px",backgroundColor:g.hubColor,opacity:.7}}),t.jsx("span",{className:"text-text-muted",children:"Gateway"}),t.jsx(MA,{text:"Significant traffic forwarder (7-10% of last-hop traffic). Gateways relay substantial traffic to the local node."})]}),p>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"rounded-full flex-shrink-0",style:{width:"14px",height:"14px",backgroundColor:"rgb(168, 85, 247)",opacity:.8}}),t.jsx("span",{className:"text-text-muted",children:"Backbone"}),t.jsx(MA,{text:"Critical relay with 4+ neighbors and high betweenness centrality. Backbone nodes carry the majority of mesh traffic."})]}),i.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:"14px",height:"14px",background:"transparent",border:`4px solid ${g.mobileColor}`,boxSizing:"border-box"}}),t.jsx("span",{className:"text-text-muted",children:"Mobile"}),t.jsx(MA,{text:"Volatile node that frequently appears/disappears from paths. Likely a portable or vehicle-mounted device."})]}),b>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 (",b,")"]}),t.jsx(MA,{text:"Unknown repeater discovered via Viterbi HMM path analysis. These nodes appear in paths but aren't in our neighbor table."})]})]}),s.size>0&&t.jsxs(t.Fragment,{children:[t.jsx(DA,{title:"Link Quality",tooltip:"Neighbor edge colors based on bidirectional link balance. 2-Way = balanced. Listener = they hear us. Loud = they route to us.",isOpen:w,onToggle:()=>y(!w),hasBorder:!0}),w&&t.jsxs("div",{className:"flex flex-col gap-1 mt-1.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"flex-shrink-0 rounded-sm",style:{width:"16px",height:"3px",backgroundColor:W.YELLOW}}),t.jsx("span",{className:"text-text-muted",children:"2-Way"}),t.jsx(MA,{text:"33-67% balanced. Ideal bidirectional link - this neighbor both hears us and routes traffic to us equally well."})]}),t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"flex-shrink-0 rounded-sm",style:{width:"16px",height:"3px",backgroundColor:W.GREEN}}),t.jsx("span",{className:"text-text-muted",children:"Listener"}),t.jsx(MA,{text:">67% listener score. This neighbor hears our transmissions well (good RX from us)."})]}),t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("div",{className:"flex-shrink-0 rounded-sm",style:{width:"16px",height:"3px",backgroundColor:W.RED}}),t.jsx("span",{className:"text-text-muted",children:"Loud"}),t.jsx(MA,{text:"<33% listener score. This neighbor routes more traffic TO us than they hear from us."})]})]})]}),e&&r>0&&t.jsxs(t.Fragment,{children:[t.jsx(DA,{title:"Topology",tooltip:"Links with 5+ validations. Thickness = relative strength.",isOpen:k,onToggle:()=>C(!k),hasBorder:!0}),k&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex flex-col gap-0.5 text-text-muted mt-1",children:[t.jsxs("div",{className:"flex justify-between tabular-nums",children:[t.jsx("span",{children:"Nodes"}),t.jsx("span",{className:"text-text-secondary",children:n+(o?1:0)})]}),i.hubNodes.length>0&&t.jsxs("div",{className:"flex justify-between tabular-nums",children:[t.jsx("span",{children:"Hubs"}),t.jsx("span",{style:{color:kA.hubColor},children:i.hubNodes.length})]})]}),i.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(u,{className:"w-3 h-3 flex-shrink-0",style:{color:kA.edges.hoverLoop}}),t.jsxs("div",{className:"flex flex-col",children:[t.jsxs("span",{style:{color:kA.edges.hoverLoop},className:"font-medium",children:[i.loops.length," ",1===i.loops.length?"Loop":"Loops"]}),t.jsx("span",{className:"text-text-muted text-[10px] leading-tight",children:"Redundant paths"})]})]})}),m.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(d,{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:[m.totalPaths.toLocaleString()," Viterbi"]}),t.jsx("span",{className:"text-text-muted text-[10px] leading-tight",children:"HMM decoded paths"})]})]})})]})]})]});var B}function NA({options:A,value:e,onChange:r,size:n="sm",className:o=""}){const i={sm:"text-[10px] px-1.5 py-0.5",md:"text-xs px-2 py-1"};return t.jsx("div",{className:`inline-flex rounded-md bg-black/40 p-0.5 ${o}`,role:"radiogroup",children:A.map(A=>{const o=e===A.value;return t.jsx("button",{onClick:()=>r(A.value),className:`\n ${i[n]}\n rounded transition-all font-medium\n ${o?"bg-white/15 text-text-primary shadow-sm":"text-text-muted hover:text-text-secondary hover:bg-white/5"}\n `,role:"radio","aria-checked":o,title:A.title,children:A.icon?t.jsxs("span",{className:"flex items-center gap-1",children:[A.icon,t.jsx("span",{className:"hidden sm:inline",children:A.label})]}):A.label},A.value)})})}function QA({mapRef:A,showNeighborLines:e,onToggleNeighborLines:r,hasNeighborPolylines:n,nodeFilter:o,onNodeFilterChange:i,hasHubNodes:a,hasZeroHopNeighbors:s,showCoverage:l,onToggleCoverage:c,show3DTerrain:u,onToggle3DTerrain:d,isFullscreen:f,onToggleFullscreen:g}){const y=[{value:"all",label:"All",title:"Show all nodes"},...a?[{value:"hubs",label:"Hubs",title:"Show only hub nodes and their connections"}]:[],...s?[{value:"direct",label:"Direct",title:"Show only zero-hop (direct RF) neighbors"}]:[]];return t.jsxs(t.Fragment,{children:[t.jsx("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",children:[n&&t.jsx("button",{onClick:r,className:"map-control-btn rounded-lg transition-colors hover:bg-white/5",style:e?{backgroundColor:"#1a1408"}:void 0,title:e?"Hide neighbor lines":"Show neighbor lines","aria-label":e?"Hide neighbor lines":"Show neighbor lines","aria-pressed":e,children:t.jsx(h,{className:"map-control-icon "+(e?"text-amber-400":"text-text-secondary")})}),y.length>1&&t.jsx(NA,{options:y,value:o,onChange:i,size:"sm"}),t.jsx("button",{onClick:d,className:"map-control-btn rounded-lg transition-colors hover:bg-white/5",style:u?{backgroundColor:"#0a1a1a"}:void 0,title:u?"Disable 3D terrain":"Enable 3D terrain","aria-label":u?"Disable 3D terrain":"Enable 3D terrain","aria-pressed":u,children:t.jsx(m,{className:"map-control-icon "+(u?"text-teal-400":"text-text-secondary")})}),t.jsx("button",{onClick:g,className:"map-control-btn rounded-lg transition-colors hover:bg-white/5",title:f?"Exit fullscreen":"Fullscreen","aria-label":f?"Exit fullscreen":"Enter fullscreen","aria-pressed":f,children:f?t.jsx(b,{className:"map-control-icon text-text-secondary"}):t.jsx(p,{className:"map-control-icon text-text-secondary"})})]})}),t.jsx("div",{className:"absolute top-[3.5rem] right-3 z-[600] map-controls-container sm:top-[4rem] sm:right-4 lg:top-[4.5rem]",children:t.jsxs("div",{className:"flex flex-col items-stretch map-nav-module",children:[t.jsx("button",{onClick:()=>{var e,t;null==(t=null==(e=A.current)?void 0:e.getMap())||t.zoomIn()},className:"map-control-btn hover:bg-white/5 flex items-center justify-center",title:"Zoom in","aria-label":"Zoom in",children:t.jsx(x,{className:"map-control-icon text-text-secondary"})}),t.jsx("button",{onClick:()=>{var e,t;null==(t=null==(e=A.current)?void 0:e.getMap())||t.zoomOut()},className:"map-control-btn hover:bg-white/5 border-t border-white/6 flex items-center justify-center",title:"Zoom out","aria-label":"Zoom out",children:t.jsx(v,{className:"map-control-icon text-text-secondary"})}),t.jsx("button",{onClick:()=>{var e;const t=null==(e=A.current)?void 0:e.getMap();t&&t.easeTo({bearing:0,pitch:0,duration:300})},className:"map-control-btn hover:bg-white/5 border-t border-white/6 flex items-center justify-center",title:"Reset bearing to north","aria-label":"Reset bearing to north",children:t.jsx(w,{className:"map-control-icon text-text-secondary"})})]})})]})}const jA="#4ADE80",PA="DeepAnalysis";function FA(){return"abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(36*Math.random())]}function SA({isActive:e,hasAnalyzed:r,isLoading:o,onClick:i}){const[a,l]=A.useState(!1),[c,u]=A.useState(PA),d=A.useRef(!1),f=A.useRef(null),[g]=A.useState(()=>{var A;return"undefined"!=typeof window&&((null==(A=window.matchMedia)?void 0:A.call(window,"(hover: hover)").matches)??!1)}),h=a&&!e&&!o&&g;A.useEffect(()=>{if(a&&!e&&!o&&!d.current){d.current=!0;const A=performance.now(),e=t=>{const r=t-A,n=Math.min(r/700,1),o=Math.floor(12*n);let i="";for(let A=0;A<12;A++)i+=A{f.current&&cancelAnimationFrame(f.current)}},[a,e,o]);const m=o?"Analyzing...":c;return t.jsxs("button",{onClick:i,onMouseEnter:()=>g&&l(!0),onMouseLeave:()=>g&&l(!1),onPointerEnter:()=>g&&l(!0),onPointerLeave:()=>g&&l(!1),disabled:o,className:`map-control-btn flex items-center gap-2 w-full text-left transition-colors ${e?"map-control-glass-active":"map-control-glass"} ${o?"cursor-wait":""}`,style:{padding:"0.5rem 0.625rem",backgroundColor:e?"#0a1a0a":"#050505"},title:o?"Analyzing packet history...":r?e?"Hide topology edges":"Show topology edges":"Load full packet history and build topology",children:[o?t.jsx(s,{className:"w-3.5 h-3.5 flex-shrink-0 text-green-400 animate-spin"}):t.jsx(n,{className:"w-3.5 h-3.5 flex-shrink-0 transition-colors "+(e?"text-green-400":"text-text-secondary"),style:h?{color:jA}:void 0}),t.jsx("span",{className:e?"text-green-400":"text-text-secondary",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:e||h?700:500,letterSpacing:"-0.01em",lineHeight:1,...h?{color:jA}:{}},children:m})]})}const LA="#00FFFF";function IA({isActive:e,onClick:r}){const[n,o]=A.useState(!1),[i,a]=A.useState(0),s=A.useRef(!1),l=A.useRef(null),[c,u]=A.useState(0),d=A.useRef(!1),[f]=A.useState(()=>{var A;return"undefined"!=typeof window&&((null==(A=window.matchMedia)?void 0:A.call(window,"(hover: hover)").matches)??!1)}),g=n&&!e&&f;A.useEffect(()=>{g&&!d.current&&(d.current=!0,u(1),setTimeout(()=>u(2),100),setTimeout(()=>u(3),200)),n||(d.current=!1,u(0))},[g,n]),A.useEffect(()=>{if(n&&!e&&!s.current){s.current=!0;const A=performance.now(),e=t=>{const r=t-A,n=Math.min(r/400,1);a(n),n<1&&(l.current=requestAnimationFrame(e))};l.current=requestAnimationFrame(e)}return n||(l.current&&(cancelAnimationFrame(l.current),l.current=null),s.current=!1,a(0)),()=>{l.current&&cancelAnimationFrame(l.current)}},[n,e]);const h=A=>{if(e)return;if(!g)return;const t=11*i;return A>=t-2&&Af&&o(!0),onMouseLeave:()=>f&&o(!1),onPointerEnter:()=>f&&o(!0),onPointerLeave:()=>f&&o(!1),className:"map-control-btn flex items-center gap-2 w-full text-left transition-colors "+(e?"map-control-glass-active":"map-control-glass"),style:{padding:"0.5rem 0.625rem",backgroundColor:e?"#0a2a2a":"#050505"},title:e?"Disable live packet tracing (reduces CPU usage)":"Enable live packet tracing",children:[t.jsx(y,{className:"w-3.5 h-3.5 flex-shrink-0 "+(e?"text-cyan-400":"text-text-secondary"),fill:1===c?"#FFFFFF":3===c?LA:"none",stroke:1===c||2===c?"#FFFFFF":g?LA:"currentColor",style:{transition:"fill 0.05s, stroke 0.05s"}}),t.jsx("span",{className:e?"text-cyan-400":"text-text-secondary",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:e||g?700:500,letterSpacing:"-0.01em",lineHeight:1},children:"LiveTrace".split("").map((A,e)=>t.jsx("span",{style:{color:h(e)||void 0},children:A},e))})]})}const RA="#fe8019";function TA({isActive:e,onClick:r,brightness:n=.7,onBrightnessChange:o}){const[i,a]=A.useState(!1),[s,l]=A.useState(!1),[c]=A.useState(()=>{var A;return"undefined"!=typeof window&&((null==(A=window.matchMedia)?void 0:A.call(window,"(hover: hover)").matches)??!1)});A.useEffect(()=>{if(!i||e)return;const A=requestAnimationFrame(()=>l(!0)),t=setTimeout(()=>l(!1),80);return()=>{cancelAnimationFrame(A),clearTimeout(t)}},[i,e]);const u=Math.max(.01,Math.min(1,n)),d=u<.999,f=u>.011,g=i&&!e&&c;return t.jsxs("button",{onClick:r,onMouseEnter:()=>c&&a(!0),onMouseLeave:()=>c&&a(!1),onPointerEnter:()=>c&&a(!0),onPointerLeave:()=>c&&a(!1),className:"map-control-btn flex items-center gap-2 w-full text-left transition-colors "+(e?"map-control-glass-active":"map-control-glass"),style:{padding:"0.5rem 0.625rem",backgroundColor:e?"#1a1408":"#050505"},title:e?"Configure wardriving coverage":"Show wardriving coverage",children:[t.jsx(k,{className:"w-3.5 h-3.5 flex-shrink-0 transition-colors "+(e?"text-amber-400":"text-text-secondary"),style:g?{color:RA}:void 0}),t.jsx("span",{className:e?"text-amber-400":"text-text-secondary",style:{fontFamily:e||g?"'Jacquard 12', serif":"ui-monospace, SFMono-Regular, monospace",fontSize:e||g?"0.75rem":"0.6875rem",fontWeight:500,letterSpacing:"-0.01em",lineHeight:1,transition:"none",transform:e?"scale(1.45)":g?`scale(${s?1.595:1.45})`:void 0,transformOrigin:"left center",...g?{color:RA}:{}},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,u-.2);null==o||o(e)},disabled:!f,className:"p-0.5 rounded transition-colors "+(f?"hover:bg-[#252525] text-amber-400":"text-amber-400/30 cursor-not-allowed"),title:`Decrease opacity (${Math.round(100*u)}%)`,children:t.jsx(C,{className:"w-3.5 h-3.5"})}),t.jsx("button",{onClick:A=>{A.stopPropagation();const e=Math.min(1,u+.2);null==o||o(e)},disabled:!d,className:"p-0.5 rounded transition-colors "+(d?"hover:bg-[#252525] text-amber-400":"text-amber-400/30 cursor-not-allowed"),title:`Increase opacity (${Math.round(100*u)}%)`,children:t.jsx(B,{className:"w-3.5 h-3.5"})})]})]})}function _A(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 HA(A){return Math.exp(-A*Math.LN2/7)}const zA="pymc-wardriving-url",GA="pymc-wardriving-enabled",OA="pymc-wardriving-brightness";function UA(A){"undefined"!=typeof localStorage&&(A?localStorage.setItem(zA,A):localStorage.removeItem(zA))}function YA(A){"undefined"!=typeof localStorage&&localStorage.setItem(GA,String(A))}function WA(){if("undefined"==typeof localStorage)return.7;const A=localStorage.getItem(OA);if(A){const e=parseFloat(A);if(!isNaN(e)&&e>=.01&&e<=1)return e}return.7}function VA(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 ZA=M((A,e)=>({status:"idle",isVisible:"undefined"!=typeof localStorage&&"true"===localStorage.getItem(GA),coveragePoints:[],repeaters:[],error:null,stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},url:"undefined"==typeof localStorage?"":localStorage.getItem(zA)||"",brightness:WA(),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(OA,String(e))}(t),A({brightness:t})},toggleVisibility:()=>{const t=!e().isVisible;YA(t),A({isVisible:t})},setVisible:e=>{YA(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}=_A(r.hash),o=parseInt(r.time,10),i=isNaN(o)?30:(Date.now()-o)/864e5,a=HA(i),s=VA(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()}),UA(e.trim()),YA(!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:""}),UA(""),YA(!1)}}));function KA({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 JA(){const{isModalOpen:e,closeModal:n,status:i,isVisible:a,stats:l,error:c,url:u,brightness:f,loadCoverage:g,clearCoverage:h,toggleVisibility:m,setUrl:b,setBrightness:p}=ZA(),x="connecting"===i||"loading"===i||"processing"===i,[v,w]=A.useState(u),y=A.useCallback(async()=>{await g(v)},[v,g]),k=A.useCallback(()=>{w(""),h()},[h]),C=A.useCallback(A=>{"Enter"!==A.key||A.shiftKey||x||(A.preventDefault(),y())},[y,x]),M=A.useCallback(A=>{const e=A.target.value;w(e),b(e)},[b]);if(!e)return null;const S=l.coverageCount>0,L=v.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(D,{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-[#252525] transition-colors disabled:opacity-50",children:t.jsx(E,{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:v,onChange:M,onKeyDown:C,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(KA,{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(N,{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&&S&&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"]})]})]}),S&&!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(Q,{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()}`]})]})]}),S&&!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(B,{className:"w-4 h-4 flex-shrink-0 "+(f>.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*f),"%"]})]}),t.jsx("input",{type:"range",min:"1",max:"100",value:100*f,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:S&&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-[#202020] rounded-lg transition-colors disabled:opacity-50",title:a?"Hide heatmap":"Show heatmap",children:a?t.jsxs(t.Fragment,{children:[t.jsx(j,{className:"w-3.5 h-3.5"})," Hide"]}):t.jsxs(t.Fragment,{children:[t.jsx(d,{className:"w-3.5 h-3.5"})," Show"]})}),t.jsxs("button",{onClick:k,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(P,{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-[#252525] rounded-lg transition-colors disabled:opacity-50",children:S?"Done":"Cancel"}),t.jsx("button",{onClick:y,disabled:!L,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..."]}):S?t.jsxs(t.Fragment,{children:[t.jsx(o,{className:"w-4 h-4"}),"Refresh"]}):t.jsxs(t.Fragment,{children:[t.jsx(F,{className:"w-4 h-4"}),"Connect"]})})]})]})]})]})}const XA={getItem:A=>{try{return localStorage.getItem(A)}catch{return null}},setItem:(A,e)=>{try{localStorage.setItem(A,e)}catch{}},removeItem:A=>{try{localStorage.removeItem(A)}catch{}}},qA=M()(mA(A=>({isEnabled:!1,toggle:()=>A(A=>({isEnabled:!A.isEnabled})),setEnabled:e=>A({isEnabled:e})}),{name:"pymc-live-trace",storage:bA(()=>XA)}));var $A=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=O(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=[],M=[],D=[];function E(A){C.unshift(A)}function N(A){D.unshift(A)}var Q=Math.abs,j=Math.ceil,P=Math.floor,F=Math.min,S=0,L=null;t.preloadedImages={},t.preloadedAudios={};var I,R,T=null,_="data:application/octet-stream;base64,";function H(A){return String.prototype.startsWith?A.startsWith(_):0===A.indexOf(_)}function z(){return d.length}T="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|Ve(0|t,0|a,1,0),a=0|Ve(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|We(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 L(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|Ve(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|OA(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|OA(A,e))){if((0|a)!=(0|c)){if(0|Y(c,0|n[7696+(28*a|0)>>2])){A=0|VA(A,e),l=1,e=0|B();break}M(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|VA(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|UA(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|OA(A,e)))break;n[r>>2]=1+(0|n[r>>2]);break}switch(127&d){case 8:case 118:break A}3!=(0|OA(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 T(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,M=0,D=0,E=0,N=0,Q=0,j=0,F=0,S=0,L=0,I=0,R=0,T=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){Q=0,j=0;e:for(;;){if(R=1/(+(w>>>0)+4294967296*+(0|v)),_=+o[h>>3],T=+((v=0|Ze(0|w,0|v,0|Q,0|j))>>>0)+4294967296*+(0|B()),I=+(Q>>>0)+4294967296*+(0|j),o[l>>3]=R*(_*T)+R*(+o[m>>3]*I),o[g>>3]=R*(+o[d>>3]*T)+R*(+o[f>>3]*I),0|(v=0|KA(l,r,c))){x=v;break}C=0|At(0|(E=0|n[(N=c)>>2]),0|(N=0|n[N+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,L=16;else for(M=0,D=0;;){if((0|M)>(0|t)|(0|M)==(0|t)&D>>>0>e>>>0){x=1;break e}if((0|w)==(0|E)&(0|k)==(0|N))break t;if(C=0|$e(0|(v=0|Ve(0|C,0|y,1,0)),0|B(),0|e,0|t),y=0|B(),D=0|Ve(0|D,0|M,1,0),M=0|B(),!(0|(w=0|n[(k=v=s+(C<<3)|0)>>2]))&!(0|(k=0|n[k+4>>2]))){S=v,L=16;break}}}while(0);if(16!=(0|L)||(L=0,!(0|E)&!(0|N))||(n[(D=S)>>2]=E,n[D+4>>2]=N,D=a+(n[i>>2]<<3)|0,n[D>>2]=E,n[D+4>>2]=N,D=0|Ve(0|n[(D=i)>>2],0|n[D+4>>2],1,0),E=0|B(),n[(N=i)>>2]=D,n[N+4>>2]=E),Q=0|Ve(0|Q,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>Q>>>0)){w=1;break A}}w=0}else w=1}while(0);if(F=F+1|0,!w){L=21;break}if((0|F)>=(0|(v=0|n[A>>2]))){x=0,L=21;break}}return 21==(0|L)?(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 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)>>2]}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)+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 W(A,e){return 0|n[848+(28*(A|=0)|0)+((e|=0)<<2)>>2]}function V(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|Oe(.14285714285714285*+(r-l|0)),n[A>>2]=i,a=0|Oe(.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)))&&M(27795,26892,354,26903),((0|r)>-1?(-2147483648|r)>=(0|o):(-2147483648^r)<(0|o))&&M(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|Oe(.14285714285714285*+(t+i|0)),n[A>>2]=o,i=0|Oe(.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)))&&M(27795,26892,402,26917),((0|t)>-1?(-2147483648|t)>=(0|r):(-2147483648^t)<(0|r))&&M(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|Oe(.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|Oe(.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|Oe(.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|Oe(.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 MA(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 DA(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)&&M(27795,26932,282,26947),e=0|tt(0|A,0|e,52),B(),e&=15,0|HA(A,a)?NA(r,e,i,2,t):FA(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 NA(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,D,E,N,Q=0,j=0,F=0,S=0,L=0,I=0;if(N=P,P=P+272|0,S=N+240|0,B=N,D=N+224|0,E=N+208|0,b=N+176|0,p=N+160|0,x=N+192|0,v=N+144|0,w=N+128|0,y=N+112|0,k=N+96|0,C=N+80|0,n[(Q=N+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],QA(S,Q,B),n[i>>2]=0,(0|(S=r+t+(5==(0|r)&1)|0))<=(0|t))P=N;else{s=D+4|0,l=b+4|0,c=t+5|0,u=16880+((a=0|n[Q>>2])<<2)|0,d=16960+(a<<2)|0,f=w+8|0,g=y+8|0,h=k+8|0,m=E+4|0,F=t;A:for(;;){j=B+((0|F)%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|F)>(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],Q=0|n[17040+(80*r|0)+(n[D>>2]<<2)>>2],n[b>>2]=n[18640+(80*r|0)+(20*Q|0)>>2],(0|(j=0|n[18640+(80*r|0)+(20*Q|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*Q|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),L=+(0|n[d>>2]),o[w>>3]=3*L,o[f>>3]=0,I=-1.5*L,o[y>>3]=I,o[g>>3]=2.598076211353316*L,o[k>>3]=I,o[h>>3]=-2.598076211353316*L,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}Qe(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|F)<(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[D>>2]=n[E>>2],n[D+4>>2]=n[E+4>>2],n[D+8>>2]=n[E+8>>2],n[D+12>>2]=n[E+12>>2],(0|(F=F+1|0))>=(0|S)){A=3;break}}3!=(0|A)?12==(0|A)&&M(26970,27017,572,27027):P=N}}function QA(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,D=0,E=0,N=0,Q=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,D=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=D,D=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),N=+(0|n[l>>2]),o[m>>3]=3*N,o[c>>3]=0,Q=-1.5*N,o[b>>3]=Q,o[u>>3]=2.598076211353316*N,o[p>>3]=Q,o[d>>3]=-2.598076211353316*N,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}Qe(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)&&M(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 LA(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 TA(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|Ve(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|Ve(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 OA(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 UA(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 WA(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 VA(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|O(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|O(l)),0,45),e|=A,A=B()|-1040385&r,a=0|U(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|UA(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)&&M(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 NA(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|Ve(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|Ve(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|Ve(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)&&M(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|We(1,12))||M(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]&&M(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|Ue(24))||M(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]&&M(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|V(h,m))))return P=c,1;7==(0|(g=0|V(m,h)))?M(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|WA(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|VA(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||M(27563,27538,191,27548),(f=!!(0|a))&(d=!!(0|s))&&M(27590,27538,192,27548),f){if(7==(0|(d=0|OA(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|OA(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)&&M(27621,27538,261,27548),7==(0|(d=0|OA(A,e)))|7==(0|(u=0|OA(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|W(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|W(g,t=0|lA(o))))?0:0|z(s);e:do{if(t){if(i){if(7==(0|(s=0|OA(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|W(g,s)))&&M(27648,27538,411,27678),0|z(t)?M(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&&M(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|V(m,g)))&&M(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|OA(t,s)))&&M(27795,27538,440,27678),t=0|G(m),(0|(t=0|n[(t?21792:21584)+(28*c|0)+(s<<2)>>2]))<0&&M(27795,27538,454,27678),t){s=0,l=0|n[(c=r)>>2],c=0|n[c+4>>2];do{l=0|UA(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|OA(A,e)))|7==(0|(l=0|OA(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|OA(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|Me(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|De(0|n[o>>2],0|n[p>>2],e,t)){v=42;break}if(g&&0|Ne(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|Me(0|n[o>>2],0|n[p>>2],f)){v=53;break}if(0|Ne(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|De(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:M(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:M(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|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,M=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);)M=x,x=i,g=s,i=M;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 Me(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 De(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,M=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(M=e,B=(0|(e=e+1|0))==(0|d)?0:e,f=+o[c+8+(M<<4)+8>>3],g=+o[c+8+(B<<4)+8>>3]-f,h=+o[c+8+(M<<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 Ne(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 Qe(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|LA(A,e),i=0|OA(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:M(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&&M(27795,27797,248,27822),(0|((g=!!(0|c))?4:5))<(0|f)&&M(27795,27797,248,27822),0|Fe(A,e,v)&&M(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]))&&M(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 Le(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|We(e,4),n[A>>2]=r,r||M(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 Te(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|Ue(40))||M(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 Oe(A){return 0|+ct(+(A=+A))}function Ue(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 We(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|Ue(t))&&3&n[A+-4>>2]?(lt(0|A,0,0|t),0|A):0|A}function Ve(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|Ve(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 N(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),D(12),-1):(0|e)>(0|r)&&!(0|Q(0|e))?(D(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){TA(A,e,l,a),TA(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:We,_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|Ve(0|(a=0|qe(0|u,0|d,5,0)),0|B(),-5,-1),a=0|Ve(0|(a=0|Xe(0|a,0|B(),6,0)),0|B(),1,0),c=0|B()):(a=u,c=d),g=0|Ve(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|Ve(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))M(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|Ve(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)&&M(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)):(M(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|Ve(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:TA,_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|Te(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|Te(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,D=0,E=0,N=0,Q=0,j=0,P=0,F=0,S=0,L=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|Ue(i<<2))||M(27396,27235,317,27415),(e=0|Ue(i<<5))||M(27437,27235,321,27415),n[A>>2]=0,n[(E=A+4|0)>>2]=0,n[s>>2]=0,i=0,S=0,D=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=D,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|We(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+(D<<5)|0,g=0|n[a>>2]){for(o[(h=e+(D<<5)+8|0)>>3]=17976931348623157e292,o[(m=e+(D<<5)+24|0)>>3]=17976931348623157e292,o[u>>3]=-17976931348623157e292,o[(b=e+(D<<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=D+1|0}if(a=0|n[(F=a+8|0)>>2],n[F>>2]=0,!a){I=45;break}D=s,m=r}if(21==(0|I))M(27213,27235,35,27247);else if(23==(0|I))M(27267,27235,37,27247);else if(27==(0|I))M(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),Q=0,r=0;;){if(N=0|n[t+(Q<<2)>>2],F)I=73;else{if(!(D=0|Ue(j))){I=50;break}if(!(E=0|Ue(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[N>>2])?(n[D+(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[D>>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[D+(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[D+(a<<2)>>2]}else i=0}}while(0);if(Ye(D),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]=N,n[s>>2]=N}else I=73}if(73==(0|I)){if(I=0,0|(r=0|n[N>>2]))do{E=r,r=0|n[r+16>>2],Ye(E)}while(0|r);Ye(N),r=1}if((0|(Q=Q+1|0))>=(0|S)){L=r;break A}}50==(0|I)?M(27452,27235,249,27471):52==(0|I)?M(27490,27235,252,27471):70==(0|I)&&M(27310,27235,61,27333)}else L=0}while(0);return Ye(t),Ye(e),0|L}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)&&M(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|Ve(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|Ve(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|Ve(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,D=0,E=0,N=0,Q=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+(Q=A+(i<<3)|0)>>2],n[(P=e+(i<<3)|0)>>2]=n[Q>>2],n[P+4>>2]=j,i=0|Ve(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|Ue(o=t<<3)))return 13;if(st(0|j,0|A,0|o),!(Q=0|We(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(),N=(E&=15)-1|0,D=!!(0|E),C=(0|r)>0|!(0|r)&t>>>0>0;e:do{if(D&C){if(v=0|rt(0|N,0,52),w=0|B(),N>>>0>15){if(!(!(0|u)&!(0|i))){P=16;break A}for(a=0,A=0;;){if(a=0|Ve(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|N)){i=12,P=27;break A}if((0|d)!=(0|N)&&(l|=v,A=-15728641&A|w,d>>>0>=E>>>0)){c=N;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=Q+(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|Ve(0|g,0|h,1,0)),0|B(),0|t,0|r),h=0|B();x=0|Ve(0|x,0|p,1,0),p=0|B(),f=0|n[(d=c=Q+(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|Ve(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|Ve(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|We(k,8))){P=48;break}do{if(C){for(b=0,A=0,m=0,p=0;;){if(!(0|(a=0|n[(s=d=Q+(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|Ve(0|A,0|m,1,0),y=0|B()):y=m}if(b=0|Ve(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=N>>>0>15,v=0|rt(0|N,0,52),w=0|B(),!D){for(a=0,c=0,l=0,s=0;!(0|u)&!(0|i)||(n[(N=e+(a<<3)|0)>>2]=u,n[N+4>>2]=i,a=0|Ve(0|a,0|c,1,0),c=0|B()),l=0|Ve(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|N)){P=80;break A}if((0|h)!=(0|N)){if(d=u|v,f=-15728641&i|w,h>>>0>=E>>>0){g=N;do{D=0|rt(7,0,3*(14-g|0)|0),g=g+1|0,d|=D,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+(D=Q+(m<<3)|0)>>2]))==(0|f)&&(0|n[D>>2])==(0|d)){P=65;break}m=0|$e(0|(D=0|Ve(0|m,0|p,1,0)),0|B(),0|t,0|r),p=0|B(),h=0|Ve(0|h,0|g,1,0),g=0|B(),D=Q+(m<<3)|0}while((0|n[D>>2])!=(0|d)||(0|n[D+4>>2])!=(0|f));if(65==(0|P)&&(P=0,!0&100663296==(117440512&b)))break;n[(D=e+(a<<3)|0)>>2]=u,n[D+4>>2]=i,a=0|Ve(0|a,0|c,1,0),c=0|B()}}while(0);if(s=0|Ve(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|Q,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))M(27795,27122,620,27132);else{if(41==(0|P))return Ye(j),Ye(Q),10;if(48==(0|P))return Ye(j),Ye(Q),13;80==(0|P)?M(27795,27122,711,27132):81==(0|P)?M(27795,27122,723,27132):85==(0|P)&&(st(0|e,0|j,t<<3),P=89)}return 21==(0|P)?(Ye(j),Ye(Q),0|(P=5)):27==(0|P)?(Ye(j),Ye(Q),0|(P=i)):89==(0|P)?(Ye(j),Ye(Q),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:DA,_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|DA(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|DA(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|DA(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:LA,_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?(QA(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,D=0,E=0;if(a=P,P=P+48|0,c=a+12|0,D=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)&&M(27795,27538,692,27747),0|me(A,e,t,r,c)&&M(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[D>>2]=t,n[(h=D+4|0)>>2]=r,n[(m=D+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[D>>2]=t,n[h>>2]=r,n[m>>2]=s,BA(D),0|(s=0|be(A,e,D,o+(p<<3)|0)))break A;if(!((0|b)<(0|C)|(0|b)==(0|C)&p>>>0>>0)){s=0;break A}t=0|Ve(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|Ve(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|T(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|Ve(0|t,0|i,1,0),i=0|Ve(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|We(i,8)){if(!(d=0|We(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|Ve(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:T,_i64Add:Ve,_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:MA,_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|MA(A,e)?0|(i=1):0|(i=1&!!(0|Le(A,e)))},_isValidVertex:Le,_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:Ue,_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|Ve(0|A,0|t,1,0),t=0|Ve(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|Ve(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|We(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|Ve(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,M=0,D=0,E=0,N=0,Q=0,j=0,F=0,S=0,R=0,T=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|Ue(32+(n[(g=A+8|0)>>2]<<5)|0)))return P=s,13;if(Be(A,_),!(l=0|Ce(t))){if(T=0|n[(R=A)+4>>2],n[(l=f)>>2]=n[R>>2],n[l+4>>2]=T,ke(f,o),l=0|eA(o,e,i))R=0,T=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|Ve(0|t,0|l,12,0),T=0|B(),n[(l=i)>>2]=R,n[l+4>>2]=T,l=0}if(!l){if(!(t=0|We(R,8)))return Ye(_),P=s,13;if(!(d=0|We(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,T,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,T,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|T)>0|!(0|T)&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){N=t,Q=d,j=t,F=d,S=t,l=t,M=t,D=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|L(g=0|n[(e=N+(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|We(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|T),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|T)|(0|m)==(0|T)&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|Ve(0|h,0|g,1,0)),0|B(),0|R,0|T),g=0|B(),b=0|Ve(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|Me(A,_,a)&&(b=0|Ve(0|c,0|u,1,0),u=0|B(),n[(m=d)>>2]=p,n[m+4>>2]=x,n[(c=Q+(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|Ve(0|w,0|y,1,0),y=0|B(),k=0|Ve(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=N+(c<<3)|0)>>2]=0,n[C+4>>2]=0,c=0|Ve(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=S,k=D,C=Q,t=M,E=l,D=j,M=v,l=w,S=F,F=y,j=k,Q=N,N=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|We(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|Ve(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|Ve(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|Ve(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|Ve(0|n[(c=i)>>2],0|n[c+4>>2],0|l,0|s),s=0|B(),u))){s=12;break}if(d=0|Ve(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)?NA(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,+Q(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},T){H(T)||(W=T,T=t.locateFile?t.locateFile(W,o):o+W),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&&L){var A=L;L=null,A()}}()},q=function(){n(T,X,function(){throw"could not load memory initializer "+T})},$=O(T);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=O(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(){V||(V=!0,l||(k(B),k(M),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)N(t.postRun.shift());k(D)}()))}S>0||(function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)E(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(L=function A(){V||eA(),V||(L=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 $A?$A:{}),Ae="number",ee={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"},te={1e3:"Unknown unit",1001:"Array length out of bounds",1002:"Got unexpected null value for H3 index"};function re(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 ne(A){if(0!==A)throw function(A,e){return re(ee,A,2===arguments.length?{value:e}:{})}(A)}var oe={};[["sizeOfH3Index",Ae],["sizeOfLatLng",Ae],["sizeOfCellBoundary",Ae],["sizeOfGeoLoop",Ae],["sizeOfGeoPolygon",Ae],["sizeOfLinkedGeoPolygon",Ae],["sizeOfCoordIJ",Ae],["readInt64AsDoubleFromPointer",Ae],["isValidCell",Ae,[Ae,Ae]],["isValidIndex",Ae,[Ae,Ae]],["latLngToCell",Ae,[Ae,Ae,Ae,Ae]],["cellToLatLng",Ae,[Ae,Ae,Ae]],["cellToBoundary",Ae,[Ae,Ae,Ae]],["maxGridDiskSize",Ae,[Ae,Ae]],["gridDisk",Ae,[Ae,Ae,Ae,Ae]],["gridDiskDistances",Ae,[Ae,Ae,Ae,Ae,Ae]],["gridRing",Ae,[Ae,Ae,Ae,Ae]],["gridRingUnsafe",Ae,[Ae,Ae,Ae,Ae]],["maxPolygonToCellsSize",Ae,[Ae,Ae,Ae,Ae]],["polygonToCells",Ae,[Ae,Ae,Ae,Ae]],["maxPolygonToCellsSizeExperimental",Ae,[Ae,Ae,Ae,Ae]],["polygonToCellsExperimental",Ae,[Ae,Ae,Ae,Ae,Ae,Ae]],["cellsToLinkedMultiPolygon",Ae,[Ae,Ae,Ae]],["destroyLinkedMultiPolygon",null,[Ae]],["compactCells",Ae,[Ae,Ae,Ae,Ae]],["uncompactCells",Ae,[Ae,Ae,Ae,Ae,Ae,Ae]],["uncompactCellsSize",Ae,[Ae,Ae,Ae,Ae,Ae]],["isPentagon",Ae,[Ae,Ae]],["isResClassIII",Ae,[Ae,Ae]],["getBaseCellNumber",Ae,[Ae,Ae]],["getResolution",Ae,[Ae,Ae]],["getIndexDigit",Ae,[Ae,Ae,Ae]],["constructCell",Ae,[Ae,Ae,Ae,Ae]],["maxFaceCount",Ae,[Ae,Ae,Ae]],["getIcosahedronFaces",Ae,[Ae,Ae,Ae]],["cellToParent",Ae,[Ae,Ae,Ae,Ae]],["cellToChildren",Ae,[Ae,Ae,Ae,Ae]],["cellToCenterChild",Ae,[Ae,Ae,Ae,Ae]],["cellToChildrenSize",Ae,[Ae,Ae,Ae,Ae]],["cellToChildPos",Ae,[Ae,Ae,Ae,Ae]],["childPosToCell",Ae,[Ae,Ae,Ae,Ae,Ae,Ae]],["areNeighborCells",Ae,[Ae,Ae,Ae,Ae,Ae]],["cellsToDirectedEdge",Ae,[Ae,Ae,Ae,Ae,Ae]],["getDirectedEdgeOrigin",Ae,[Ae,Ae,Ae]],["getDirectedEdgeDestination",Ae,[Ae,Ae,Ae]],["isValidDirectedEdge",Ae,[Ae,Ae]],["directedEdgeToCells",Ae,[Ae,Ae,Ae]],["originToDirectedEdges",Ae,[Ae,Ae,Ae]],["directedEdgeToBoundary",Ae,[Ae,Ae,Ae]],["gridDistance",Ae,[Ae,Ae,Ae,Ae,Ae]],["gridPathCells",Ae,[Ae,Ae,Ae,Ae,Ae]],["gridPathCellsSize",Ae,[Ae,Ae,Ae,Ae,Ae]],["cellToLocalIj",Ae,[Ae,Ae,Ae,Ae,Ae,Ae]],["localIjToCell",Ae,[Ae,Ae,Ae,Ae,Ae]],["getHexagonAreaAvgM2",Ae,[Ae,Ae]],["getHexagonAreaAvgKm2",Ae,[Ae,Ae]],["getHexagonEdgeLengthAvgM",Ae,[Ae,Ae]],["getHexagonEdgeLengthAvgKm",Ae,[Ae,Ae]],["greatCircleDistanceM",Ae,[Ae,Ae]],["greatCircleDistanceKm",Ae,[Ae,Ae]],["greatCircleDistanceRads",Ae,[Ae,Ae]],["cellAreaM2",Ae,[Ae,Ae,Ae]],["cellAreaKm2",Ae,[Ae,Ae,Ae]],["cellAreaRads2",Ae,[Ae,Ae,Ae]],["edgeLengthM",Ae,[Ae,Ae,Ae]],["edgeLengthKm",Ae,[Ae,Ae,Ae]],["edgeLengthRads",Ae,[Ae,Ae,Ae]],["getNumCells",Ae,[Ae,Ae]],["getRes0Cells",Ae,[Ae]],["res0CellCount",Ae],["getPentagons",Ae,[Ae,Ae]],["pentagonCount",Ae],["cellToVertex",Ae,[Ae,Ae,Ae,Ae]],["cellToVertexes",Ae,[Ae,Ae,Ae]],["vertexToLatLng",Ae,[Ae,Ae,Ae]],["isValidVertex",Ae,[Ae,Ae]]].forEach(function(A){oe[A[0]]=$A.cwrap.apply($A,A)});var ie=16,ae=oe.sizeOfH3Index(),se=oe.sizeOfLatLng(),le=oe.sizeOfCellBoundary();oe.sizeOfGeoPolygon(),oe.sizeOfGeoLoop(),oe.sizeOfLinkedGeoPolygon(),oe.sizeOfCoordIJ();var ce=/[^0-9a-fA-F]/;function ue(A){if(A>=0)return A.toString(ie);var e=de(8,(A&=2147483647).toString(ie));return(parseInt(e[0],ie)+8).toString(ie)+e.substring(1)}function de(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 we(r[Math.min(23,Math.floor(24*o))])}function ke({coveragePoints:e,visible:r,terrainEnabled:n=!1,brightness:o=.7}){const{current:i}=S(),[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=hA();return 24===e.length&&0!==(null==(A=e[0])?void 0:A[0])?e:ve}(),[]);A.useEffect(()=>{if(!f||!Array.isArray(f)||0===f.length)return void queueMicrotask(()=>{s(null),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=he(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=me(o.hexId).map(([A,e])=>[e,A]);A.push(A[0]);const i=ye(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=ye(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(xe),i=e.getSource(pe);if(r&&a&&a.features.length>0){if(i?e.getSource(pe).setData(a):e.addSource(pe,{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:xe,type:"fill",source:pe,paint:{"fill-color":["get","color"],"fill-opacity":o}},i)}}else n&&e.removeLayer(xe),i&&e.removeSource(pe)}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(xe)&&e.setPaintProperty(xe,"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(xe)&&e.removeLayer(xe),e.getSource(pe)&&e.removeSource(pe)}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 Ce="https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png",Be="terrarium",Me="terrain-dem",De="hillshade-dem",Ee="terrain-hillshade";function Ne({enabled:e,exaggeration:t=4}){const{current:r}=S(),n=A.useRef(null);return A.useEffect(()=>{var A;const e=null==(A=null==r?void 0:r.getMap)?void 0:A.call(r);if(!e)return;let t=!0;const n=()=>{var A,r;if(t)try{if(e.getSource(De)||e.addSource(De,{type:"raster-dem",tiles:[Ce],encoding:Be,tileSize:256,maxzoom:14}),!e.getLayer(Ee)){const t=null==(r=null==(A=e.getStyle())?void 0:A.layers)?void 0:r.find(A=>"symbol"===A.type);e.addLayer({id:Ee,type:"hillshade",source:De,paint:{"hillshade-shadow-color":"rgba(10, 10, 10, 0.6)","hillshade-highlight-color":"rgba(245, 240, 230, 0.4)","hillshade-accent-color":"rgba(90, 75, 65, 0.3)","hillshade-illumination-direction":315,"hillshade-exaggeration":.35}},null==t?void 0:t.id)}}catch(n){}};return e.isStyleLoaded()?n():e.once("style.load",n),()=>{t=!1}},[r]),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=()=>{if(i)try{o.getSource(Me)||o.addSource(Me,{type:"raster-dem",tiles:[Ce],encoding:Be,tileSize:256,maxzoom:14}),e?(o.setCenterClampedToGround(!1),o.setTerrain({source:Me,exaggeration:t}),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))):(o.setTerrain(null),o.setCenterClampedToGround(!0),o.getPitch()>0&&!o.isMoving()&&o.easeTo({pitch:0,duration:800}),o.setMaxPitch(60))}catch(A){}};return o.isStyleLoaded()?a():o.once("style.load",a),()=>{i=!1,null!==n.current&&(clearTimeout(n.current),n.current=null);try{o.getStyle()&&o.isStyleLoaded()&&o.setTerrain(null)}catch{}}},[r,e,t]),A.useEffect(()=>{var A;const e=null==(A=null==r?void 0:r.getMap)?void 0:A.call(r);return()=>{var A;try{(null==(A=null==e?void 0:e.getStyle)?void 0:A.call(e))&&e.isStyleLoaded()&&(e.setTerrain(null),e.getLayer(Ee)&&e.removeLayer(Ee),e.getSource(De)&&e.removeSource(De),e.getSource(Me)&&e.removeSource(Me))}catch{}}},[r]),null}function Qe(A,e=!1,t=!1,r=!1,n=.7){const o=fA();return r?n>=.75?o.restBright:o.rest:n>=.85?o.rest:o.restDim}function je(A){return[A[1],A[0]]}function Pe(A,e,t,r=12){const[n,o]=A,[i,a]=e,s=[];for(let l=0;l<=r;l++){const A=l/r,e=o+(a-o)*A,c=n+(i-n)*A,u=4*t*A*(1-A);s.push([e,c,u])}return s}function Fe(A){return A<.5?4*A*A*A:1-Math.pow(-2*A+2,3)/2}function Se(A,e,t,r,n,o,i,a,s,l,c){const u=CA(),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),M=(null==C?void 0:C.node_name)||(null==C?void 0:C.name)||g.toHash.slice(0,8),D=[A[0]+(i[0]-A[0])*h,A[1]+(i[1]-A[1])*h];let E,N,Q,j;if(e){const A=o.get(g.key)??vA(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(N=y?u.edges.highlight:Qe(0,g.isDirectPathEdge??!1,x,v,w),Q=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:N,hoverColor:Q,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:M,fromHash:g.fromHash,toHash:g.toHash},geometry:{type:"LineString",coordinates:[je(A),je(D)]}})}return{type:"FeatureCollection",features:d}}function Le(A,e){const t=CA(),r=[];let n=0;for(const o of A){const A=e.get(o.hash);A&&A.blendedScore>n&&(n=A.blendedScore)}for(const o of A){const{from:A,to:i,hash:a,neighbor:s,lastHopData:l}=o,c=`neighbor-${a}`,u=(null==l?void 0:l.avgRssi)??s.rssi??null,d=(null==l?void 0:l.avgSnr)??s.snr??null,f=(null==l?void 0:l.count)??0,g=(null==l?void 0:l.confidence)??1,h=e.get(a),m=(null==h?void 0:h.listenerScore)??0,b=(null==h?void 0:h.loudScore)??0,p=(null==h?void 0:h.blendedScore)??0,x=n>0?p/n:0,v=o.rxAdvertCount??0,w=o.txProxyCount??0,y=v+w,k=y>0?(w-v)/y:0,C=Pe(A,i,150,8);r.push({type:"Feature",properties:{key:c,hash:a,name:s.node_name||s.name||a.slice(0,8),prefix:a.slice(2,4).toUpperCase(),color:t.neighborColor,width:2.5,opacity:.85,rssi:u,snr:d,packetCount:f,confidence:g,hasAvgRssi:void 0!==(null==l?void 0:l.avgRssi),hasAvgSnr:void 0!==(null==l?void 0:l.avgSnr),isNeighborEdge:!0,listenerScore:m,loudScore:b,blendedScore:p,trafficWeight:x,linkAsymmetry:k,rxAdvertCount:v,txProxyCount:w},geometry:{type:"LineString",coordinates:C}})}return{type:"FeatureCollection",features:r}}function Ie(A){return A<.5?4*A*A*A:1-Math.pow(-2*A+2,3)/2}function Re(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 Te(A,e,t){const r=t?AA(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 _e="edge-blink-source",He="edge-blink-layer",ze=1e3,Ge=1e3,Oe="node-markers-layer";function Ue(A){return A<0||A>=ze?0:1-A/ze}function Ye(A){if(A<0)return 0;if(A>=Ge)return 0;const e=A/Ge;return Math.pow(1-e,3)}function We(A){return[A[1],A[0]]}function Ve(A){const e=new Date(1e3*A);return`${(e.getMonth()+1).toString().padStart(2,"0")}/${e.getDate().toString().padStart(2,"0")}`}function Ze({hash:e,hashPrefix:n,name:o,isHub:i,isGateway:a,isBackbone:l,isZeroHop:c,isMobile:u,isRoomServer:d,isStale:f,lastSeenTimestamp:g,centrality:h,affinity:m,meanSnr:b,meanRssi:p,neighbor:x,onRemove:v,txDelayRec:w,onPingResult:y}){const k=gA(),[C,B]=A.useState(!1),[M,D]=A.useState(!1),[E,N]=A.useState(null),[Q,j]=A.useState(null),F=A.useCallback(async()=>{if(!M){D(!0),j(null),N(null);try{const A=e.startsWith("0x")?e.slice(0,4):`0x${e.slice(0,2)}`,t=await tA(A,30);t.success&&t.data?(N(t.data),null==y||y(t.data)):j(t.error||"Ping failed")}catch(A){j(A instanceof Error?A.message:"Ping failed")}finally{D(!1)}}},[e,M,y]),S=c?"Direct":(null==m?void 0:m.typicalHopPosition)?`${m.typicalHopPosition}-hop`:null,z=w&&!w.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"}},O={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-[#1a1a1a] px-1 py-0.5 rounded",children:n}),t.jsx("button",{onClick:async()=>{try{await navigator.clipboard.writeText(e),B(!0),setTimeout(()=>B(!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"),B(!0),setTimeout(()=>B(!1),1500)}catch{}document.body.removeChild(t)}},className:"p-0.5 hover:bg-[#252525] rounded transition-colors",title:"Copy full hash",children:C?t.jsx(r,{className:"w-3 h-3 text-accent-success"}):t.jsx(L,{className:"w-3 h-3 text-text-secondary"})}),t.jsx(pA,{hash:e,size:"sm"}),S&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded "+(c?"bg-amber-400 text-gray-900":"bg-[#2a2a2a] text-white"),children:S}),x.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:k.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:k.hubColor,color:"#fff",opacity:.8},title:"Gateway: 7-10% of last-hop traffic",children:"Gate"}),l&&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"}),u&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-orange-500/25 text-orange-300",children:"Mobile"}),d&&t.jsx("span",{className:"px-1 py-0.5 text-[9px] font-bold uppercase rounded bg-amber-500/25 text-amber-400",children:"Room"}),f&&g&&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 ",Ve(g)]})]}),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(I,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsx("span",{className:"font-mono",children:rA(x.last_seen)})]}),(null==m?void 0:m.distanceMeters)&&t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(R,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsx("span",{className:"font-mono font-semibold text-text-primary",children:(U=m.distanceMeters,null===U?"—":U<1e3?`${Math.round(U)}m`:`${(U/1e3).toFixed(1)}km`)})]}),x.latitude&&x.longitude&&0!==x.latitude&&0!==x.longitude&&t.jsxs("span",{className:"flex items-center gap-0.5",children:[t.jsx(T,{className:"w-3 h-3 text-text-muted shrink-0"}),t.jsxs("span",{className:"font-mono text-text-muted",children:[x.latitude.toFixed(2),", ",x.longitude.toFixed(2)]})]})]}),t.jsx("div",{className:"mb-1.5",style:{width:224},children:t.jsx(xA,{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==m?void 0:m.frequency)||0})]}),c&&void 0!==b&&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:[b.toFixed(1)," dB"]})]}),z&&w.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[w.networkRole].bg} ${G[w.networkRole].text}`,title:G[w.networkRole].title,children:w.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:x.advert_count||0})]}),c&&void 0!==p&&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(p)," dBm"]})]}),z&&w.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 ${O[w.dataConfidence].bg} ${O[w.dataConfidence].text}`,title:O[w.dataConfidence].title,children:w.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(_,{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:["×",(w.floodFactor??w.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:["×",(w.directFactor??w.directTxDelayFactor).toFixed(1)]})]})]})]}),t.jsxs("div",{className:"flex items-center justify-between pt-1 border-t border-white/[0.08]",children:[c?t.jsxs("button",{onClick:F,disabled:M,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:[M?t.jsx(s,{className:"w-3 h-3 animate-spin"}):t.jsx(H,{className:"w-3 h-3"}),t.jsx("span",{children:"Ping"})]}):t.jsx("div",{}),v&&t.jsx("button",{onClick:v,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(P,{className:"w-3.5 h-3.5"})})]}),E&&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:[E.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:[E.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:[E.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:E.path.length})]})]})]})]}),Q&&t.jsxs("div",{className:"mt-1.5 pt-1.5 border-t border-white/[0.08] text-[10px] text-red-400",children:["⚠ ",Q]})]});var U}const Ke="node-markers-native",Je="node-markers-layer",Xe="node-markers-layer-local",qe="marker-standard",$e="marker-standard-neighbor",At="marker-hub",et="marker-hub-neighbor",tt="marker-gateway",rt="marker-gateway-neighbor",nt="marker-mobile",ot="marker-mobile-neighbor",it="marker-room-server",at="marker-room-server-neighbor",st="marker-local",lt="marker-blink-black",ct="marker-blink-black-local",ut="marker-blink",dt="marker-blink-local";function ft(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 gt(A){return A.startsWith("0x")?A.slice(2,4).toUpperCase():A.slice(0,2).toUpperCase()}function ht({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}=S(),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=dA(),t=(A,e,t=0,r=!1)=>{const n=document.createElement("canvas");n.width=32,n.height=32;const o=n.getContext("2d",r?{colorSpace:"display-p3"}:void 0),i=14-t/2;return o.beginPath(),o.arc(16,16,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,{data:o.getImageData(0,0,32,32),pixelRatio:2}},r=(A,e=!1)=>{const t=document.createElement("canvas");t.width=48,t.height=48;const r=t.getContext("2d",e?{colorSpace:"display-p3"}:void 0),n=24*.35*2;return r.strokeStyle=A,r.lineWidth=5,r.lineCap="round",r.lineJoin="round",r.beginPath(),r.moveTo(24-n,24),r.lineTo(24,24-n),r.lineTo(40.8,24),r.stroke(),r.beginPath(),r.moveTo(24-.7*n,24),r.lineTo(24-.7*n,35.76),r.lineTo(35.76,35.76),r.lineTo(35.76,24),r.stroke(),r.beginPath(),r.moveTo(20.64,35.76),r.lineTo(20.64,27.36),r.lineTo(27.36,27.36),r.lineTo(27.36,35.76),r.stroke(),{data:r.getImageData(0,0,48,48),pixelRatio:2}},n=(A,e)=>{const t=document.createElement("canvas");t.width=48,t.height=48;const r=t.getContext("2d"),n=24*.35*2;return r.strokeStyle=A,r.lineWidth=5,r.lineCap="round",r.lineJoin="round",e&&(r.fillStyle=e),r.beginPath(),r.roundRect(24-n,24-.6*n,1.6*n,1.2*n,6),e&&r.fill(),r.stroke(),r.beginPath(),r.moveTo(18.96,34.08),r.lineTo(24-.6*n,40.8),r.lineTo(24,34.08),r.stroke(),{data:r.getImageData(0,0,48,48),pixelRatio:2}},o="#00FF00",i={[qe]:t(e.nodeFill,e.nodeStroke,1.5),[$e]:t(e.neighborColor),[At]:t(e.hubColor),[et]:t(e.neighborColor),[tt]:t(e.hubColor+"B3"),[rt]:t(e.neighborColor),[nt]:t("transparent",e.mobileColor,2),[ot]:t(e.neighborColor),[it]:n(e.roomColor),[at]:n(e.neighborColor,"#1a1a1c"),[st]:r(e.localColor),[lt]:t("#000000"),[ct]:r("#000000"),[ut]:t(o,void 0,0,!0),[dt]:r(o,!0)};for(const[a,s]of Object.entries(i))A.hasImage(a)&&A.removeImage(a),A.addImage(a,s.data,{pixelRatio:s.pixelRatio})}(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 ft(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=ft(n),m=a.centrality.get(e)||0,b=i.get(e),p="stale"===(null==b?void 0:b.status),x=p?Math.min(s,.5):s;let v="standard";h?v="roomServer":d?v="hub":f?v="gateway":g&&(v="mobile");const w=a.fullAffinity.get(e),y=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:gt(e),iconType:v,isNeighbor:l,isHub:d,isGateway:f,isMobile:g,isRoomServer:h,isStale:p,isZeroHop:l,opacity:x,blinkIntensity:0,lastSeenTimestamp:null==b?void 0:b.lastSeen,centrality:m,neighborJson:JSON.stringify(n),affinityJson:w?JSON.stringify(w):void 0,txDelayRecJson:y?JSON.stringify(y):void 0,meanSnr:(null==b?void 0:b.avgSnr)??void 0,meanRssi:(null==b?void 0:b.avgRssi)??void 0}})}return{type:"FeatureCollection",features:t}},[e,o,i,a,c,u]),y=A.useMemo(()=>(null==r?void 0:r.latitude)&&(null==r?void 0:r.longitude)?{type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:[r.longitude,r.latitude]},properties:{hash:"local",name:r.name,hashPrefix:n?gt(n):"",iconType:"local",isNeighbor:!1,isHub:!1,isGateway:!1,isMobile:!1,isRoomServer:!1,isStale:!1,isZeroHop:!1,opacity:1,blinkIntensity:0,centrality:0}}]}:{type:"FeatureCollection",features:[]},[r,n]),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,Xe];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 M=A.useRef(w),D=A.useRef(y);A.useEffect(()=>{M.current=w,D.current=y},[w,y]),A.useEffect(()=>{var A;const e=null==(A=null==b?void 0:b.getMap)?void 0:A.call(b);if(!e||!x||!m||0===m.size)return;const t=e.getSource(Ke),r=e.getSource(`${Ke}-local`);if(t||r){if(t){const A=M.current;let e=!1;const r=A.features.map(A=>{const t=m.get(A.properties.hash)??0;return t!==A.properties.blinkIntensity?(e=!0,{...A,properties:{...A.properties,blinkIntensity:t}}):A});e&&t.setData({type:"FeatureCollection",features:r})}if(r&&n){const A=m.get(n)??0,e=D.current;e.features.length>0&&e.features[0].properties.blinkIntensity!==A&&r.setData({type:"FeatureCollection",features:[{...e.features[0],properties:{...e.features[0].properties,blinkIntensity:A}}]})}}},[b,x,m,n]);const E=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 N=dA(),Q=["case",[">",["get","blinkIntensity"],.66],ut,[">",["get","blinkIntensity"],.33],lt,["==",["get","iconType"],"roomServer"],["case",["get","isNeighbor"],at,it],["==",["get","iconType"],"hub"],["case",["get","isNeighbor"],et,At],["==",["get","iconType"],"gateway"],["case",["get","isNeighbor"],rt,tt],["==",["get","iconType"],"mobile"],["case",["get","isNeighbor"],ot,nt],["case",["get","isNeighbor"],$e,qe]],j=["interpolate",["linear"],["zoom"],6,.25,10,1];return t.jsxs(t.Fragment,{children:[t.jsx(z,{id:Ke,type:"geojson",data:w,children:t.jsx(G,{id:Je,type:"symbol",layout:{"icon-image":Q,"icon-size":j,"icon-allow-overlap":!0,"icon-ignore-placement":!0,"symbol-sort-key":["get","opacity"]},paint:{"icon-opacity":["get","opacity"]}})}),t.jsx(z,{id:`${Ke}-local`,type:"geojson",data:y,children:t.jsx(G,{id:Xe,type:"symbol",layout:{"icon-image":["case",[">",["get","blinkIntensity"],.66],dt,[">",["get","blinkIntensity"],.33],ct,st],"icon-size":j,"icon-allow-overlap":!0,"icon-ignore-placement":!0},paint:{"icon-opacity":1}})}),E&&h&&t.jsx(O,{longitude:E.longitude,latitude:E.latitude,offset:{center:[0,0],top:[0,12],"top-left":[6,12],"top-right":[-6,12],bottom:[0,-12],"bottom-left":[6,-12],"bottom-right":[-6,-12],left:[12,0],right:[-12,0]},maxWidth:"280px",closeOnClick:!0,onClose:h,className:"maplibre-popup",children:E.isLocal?t.jsxs("div",{className:"text-sm",children:[t.jsx("strong",{className:"text-base",children:E.name}),E.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:gt(E.hash)}),t.jsx("br",{}),t.jsx("span",{style:{color:N.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)]})]}):E.neighbor&&E.hash?t.jsx(Ze,{hash:E.hash,hashPrefix:E.hashPrefix,name:E.name,isHub:E.isHub,isGateway:E.isGateway,isBackbone:E.isBackbone,isZeroHop:E.isZeroHop,isMobile:E.isMobile,isRoomServer:E.isRoomServer,isStale:E.isStale,lastSeenTimestamp:E.lastSeenTimestamp,centrality:E.centrality,affinity:E.affinity,meanSnr:E.meanSnr,meanRssi:E.meanRssi,neighbor:E.neighbor,txDelayRec:E.txDelayRec,onRemove:d?()=>d(E.hash,E.name):void 0}):null})]})}const mt=[Je,Xe];A.createContext(null);const bt="topology-validated-edges-native",pt="topology-weak-edges-native",xt="neighbor-edges-native",vt="topology-weak-edges-native",wt="topology-validated-edges-native",yt="neighbor-edges-native",kt={type:"FeatureCollection",features:[]},Ct={"line-cap":"round","line-join":"round"},Bt={"line-color":"transparent","line-width":16,"line-opacity":0};function Mt({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}=S(),m=e||r,b=!0,p=f?"visible":"none",x=g||r,v=A.useRef(null),w=A.useRef(x),y=A.useRef(new Map),k=A.useRef(l),C=A.useRef(a);A.useLayoutEffect(()=>{w.current=x,k.current=l,C.current=a});const B=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]);A.useLayoutEffect(()=>{y.current=B},[B]);const M=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=C.current)||e.call(C,null)}else if(a&&C.current){const e=y.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=>k.current[A]||A.substring(0,4))};C.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=C.current)||t.call(C,null)}}},[i]),D=A.useCallback(()=>{var A;null!==v.current&&(v.current=null,i(null),null==(A=C.current)||A.call(C,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,M),e.on("mouseleave",t,D),!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,M),e.off("mouseleave",t,D))}catch{}}}return()=>{try{r()&&(e.off("mousemove",t,M),e.off("mouseleave",t,D))}catch{}}},[h,m,M,D]),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,M),e.on("mouseleave",t,D),!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,M),e.off("mouseleave",t,D))}catch{}}}return()=>{try{r()&&(e.off("mousemove",t,M),e.off("mouseleave",t,D))}catch{}}},[h,b,f,M,D]),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(yt,"node-markers-layer"),r("neighbor-edges-hitarea-native",yt),(r(wt,"neighbor-edges-hitarea-native")||r(wt,"node-markers-layer"))&&r("topology-validated-edges-hitarea-native",wt),r(vt,"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===bt||A.sourceId===pt||A.sourceId===xt)&&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,N=function(A,e,t,r,n){const o=CA(),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),Q=function(A){const e=null!==A,{YELLOW:t,GREEN:r,RED:n,GRAY:o}=W,i=["to-number",["get","listenerScore"],0],a=["to-number",["get","loudScore"],0],s=["/",i,["max",["+",i,a],1]],l=["*",["+",.2,["*",["to-number",["get","trafficWeight"],0],.8]],8];return{"line-color":["case",["all",["==",i,0],["==",a,0]],o,[">=",s,.97],r,["<=",s,.03],n,["interpolate",["linear"],s,.03,n,.5,t,.97,r]],"line-width":["interpolate",["linear"],["zoom"],6,e?["case",["==",["get","key"],A],["max",["*",l,.25],1.25],["*",l,.25]]:["*",l,.25],10,e?["case",["==",["get","key"],A],["max",l,5],l]:l],"line-opacity":e?["case",["==",["get","key"],A],1,.35]:.9}}(E);return t.jsxs(t.Fragment,{children:[m&&t.jsx(z,{id:pt,type:"geojson",data:kt,children:t.jsx(G,{id:vt,type:"line",paint:N,layout:Ct})}),m&&t.jsxs(z,{id:bt,type:"geojson",data:kt,children:[t.jsx(G,{id:"topology-validated-edges-hitarea-native",type:"line",paint:Bt,layout:Ct}),t.jsx(G,{id:wt,type:"line",paint:N,layout:Ct})]}),t.jsxs(z,{id:xt,type:"geojson",data:kt,children:[t.jsx(G,{id:"neighbor-edges-hitarea-native",type:"line",paint:Bt,layout:{...Ct,visibility:p}}),t.jsx(G,{id:yt,type:"line",paint:Q,layout:{...Ct,visibility:p}})]})]})}const Dt=["topology-validated-edges-hitarea-native","topology-validated-edges-native","topology-weak-edges-native","neighbor-edges-hitarea-native","neighbor-edges-native"];function Et({targetHash:e,nodeCoordinates:t,onComplete:r}){const{current:n}=S(),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:10,duration:2500,essential:!0}),setTimeout(()=>{null==r||r()},2600)},[e,t,n,r]),null}function Nt({highlightedEdgeKey:e,validatedPolylines:t,weakPolylines:r,onEnsureTopology:n}){const{current:o}=S(),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 Qt(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 jt(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 Pt({ghost:e,neighborCoordinates:r,onHighlightedNeighborsChange:n}){const{current:o}=S(),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)},[e,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:[jt(t,A,Math.max(500,Math.min(o,n)))]}},[e,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(z,{id:"ghost-uncertainty-circle",type:"geojson",data:c,children:t.jsx(G,{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))}(kA.edges.neighborHover);const Ft={longitude:0,latitude:0,zoom:2};function St(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))*6371}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:"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 It({neighbors:e,localNode:r,localHash:n,onRemoveNode:o,selectedNodeHash:i,onNodeSelected:a,highlightedEdgeKey:s,highlightedGhost:l}){const c=A.useRef(null),u=nA(),d=oA(),f=iA(),g=aA(),h=sA(),[m,b]=A.useState(!1),p=lA(A=>A.preloadFromNodes),x=lA(A=>A.isLoading),v=lA(A=>A.terrainGrid),w=n??h,y=A.useMemo(()=>{const A=[];for(const[,t]of Object.entries(e))t.latitude&&t.longitude&&A.push([t.latitude,t.longitude]);return A},[e]),k=A.useMemo(()=>function(A,e){let t=[...A];if((null==e?void 0:e.latitude)&&(null==e?void 0:e.longitude)&&t.push([e.latitude,e.longitude]),0===t.length)return null;if(1===t.length){const[A,e]=t[0];return{longitude:e,latitude:A,zoom:14}}t=function(A,e){if(A.length<=2)return A;let t,r;if((null==e?void 0:e.latitude)&&(null==e?void 0:e.longitude))t=e.latitude,r=e.longitude;else{let e=0,n=0;for(const[t,r]of A)e+=t,n+=r;t=e/A.length,r=n/A.length}const n=A.map(([A,e])=>({pos:[A,e],dist:St(t,r,A,e)}));n.sort((A,e)=>A.dist-e.dist);const o=n[Math.floor(n.length/2)].dist,i=Math.max(3*o,50),a=n.filter(A=>A.dist<=i).map(A=>A.pos);return a.length<.5*A.length?A:a}(t,e);let r=1/0,n=-1/0,o=1/0,i=-1/0;for(const[f,g]of t)r=Math.min(r,g),n=Math.max(n,g),o=Math.min(o,f),i=Math.max(i,f);const a=(r+n)/2,s=(o+i)/2,l=i-o,c=n-r,u=Math.max(l,c);let d=16;return u>0&&(d=Math.floor(Math.log2(360/u*1.2)),d=Math.max(1,Math.min(14,d))),d=Math.min(d+1,12),{longitude:a,latitude:s,zoom:d}}(y,r),[y,r]),[C,B]=A.useState(()=>k??Ft),M=A.useRef(!1);A.useEffect(()=>{!M.current&&k&&(B(k),M.current=!0,setTimeout(()=>b(!0),50))},[k]);const[D,E]=A.useState(!1),[N,Q]=A.useState(!1),[j,P]=A.useState(!0),[F,S]=A.useState(!1),[L,I]=A.useState(!1),[R,T]=A.useState("all"),[_,H]=A.useState(null),[z,G]=A.useState(null),[O]=A.useState(0),[W]=A.useState(.5),[Z]=A.useState(0),[K,J]=A.useState(null),[tA,rA]=A.useState(""),[uA,dA]=A.useState(!1),[fA,gA]=A.useState("fetching"),[hA,mA]=A.useState(!1),[bA,pA]=A.useState(0),[xA,wA]=A.useState(!1),[kA,CA]=A.useState(null),MA=A.useCallback(A=>CA(A),[]),DA=A.useCallback(()=>CA(null),[]),[,NA]=A.useState(new Set),jA=ZA(A=>A.coveragePoints),PA=ZA(A=>A.isVisible),FA=ZA(A=>A.brightness),LA=ZA(A=>A.openModal),RA=qA(A=>A.isEnabled),_A=qA(A=>A.toggle),HA=A.useRef(!1);A.useEffect(()=>{jA.length>0&&PA&&!HA.current&&(P(!1),HA.current=!0)},[jA.length,PA]);const zA=A.useRef(null);A.useEffect(()=>{if(i&&i!==zA.current){zA.current=i;const A=setTimeout(()=>{CA(i)},1250);return()=>clearTimeout(A)}},[i]);const[GA,OA]=A.useState(null),[UA,YA]=A.useState(null),WA=A.useCallback((A,e,t)=>{G(A),A&&e&&t?OA({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||OA(null)},[]),VA=A.useCallback((A,e)=>{YA(A),A&&OA(null)},[]),KA=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]),XA=A.useMemo(()=>Object.entries(e).filter(([,A])=>A.latitude&&A.longitude),[e]),$A=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 XA)t.latitude&&t.longitude&&A.set(e,[t.latitude,t.longitude]);return A},[w,r,XA]),Ae=A.useMemo(()=>{const A=new Map;for(const e of f)"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},[f]),ee=A.useMemo(()=>{var A,t;const r=new Set;for(const n of Ae.keys())(null==(A=e[n])?void 0:A.latitude)&&(null==(t=e[n])?void 0:t.longitude)&&r.add(n);return r},[Ae,e]),te=A.useMemo(()=>{if(0===ee.size||!w)return new Map;const A=q.getPackets();if(0===A.length)return new Map;const e=AA(w);return V(A,ee,e).scores},[ee,w,g.packetCount]),re=A.useCallback(A=>!!(w&&(A.fromHash===w&&ee.has(A.toHash)||A.toHash===w&&ee.has(A.fromHash))),[w,ee]),ne=A.useMemo(()=>{var A,t;if(0===f.length||!w)return[];if(g.backgroundLoadComplete)return[];const r=[];for(const n of f){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},[f,w,g.backgroundLoadComplete,e]),oe=A.useMemo(()=>{const A=[];if(ne.length>0&&!g.backgroundLoadComplete){for(const e of ne){const t=$A.get(e.fromHash),r=$A.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A}for(const e of u.validatedEdges){if(re(e))continue;const t=$A.get(e.fromHash),r=$A.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A},[u.validatedEdges,$A,re,ne,g.backgroundLoadComplete]),ie=A.useMemo(()=>{const A=[];for(const e of u.weakEdges){if(re(e))continue;const t=$A.get(e.fromHash),r=$A.get(e.toHash);t&&r&&A.push({from:t,to:r,edge:e})}return A},[u.weakEdges,$A,re]),ae=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 u.lastHopNeighbors)n.set(e.hash,e.count);const o=new Map;for(const e of f)o.set(e.hash,e.count);for(const r of ee){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:Ae.get(r)??null,rxAdvertCount:a,txProxyCount:s})}return A},[r,ee,e,Ae,u.lastHopNeighbors,f]),se=A.useMemo(()=>new Set(u.loopEdgeKeys),[u.loopEdgeKeys]),le=A.useMemo(()=>new Set(u.backboneEdges),[u.backboneEdges]),ce=A.useMemo(()=>{let A=0;if(ne.length>0&&!g.backgroundLoadComplete){for(const e of ne)e.certainCount>A&&(A=e.certainCount);return A||1}for(const e of u.validatedEdges)e.certainCount>A&&(A=e.certainCount);return A||1},[u.validatedEdges,ne,g.backgroundLoadComplete]),ue=A.useRef(null);A.useLayoutEffect(()=>{var A,e;ue.current=(null==(e=null==(A=c.current)?void 0:A.getMap)?void 0:e.call(A))??null});const de=X(),fe=A.useMemo(()=>q.getPackets(),[de]);!function({map:e,nodeCoordinates:t,packets:r,localHash:n,neighbors:o,meshTopology:i,enabled:a=!0}){const s=A.useRef(null),l=e&&"current"in e?e.current:e;A.useEffect(()=>{s.current=l},[l]);const c=A.useRef(!1),u=A.useRef(null),d=A.useRef([]),f=A.useRef(0),g=A.useRef(!1),[h,m]=A.useState(!1),b=A.useRef(null),p=A.useRef([]),x=A.useRef(new Map),v=A.useRef(t);A.useEffect(()=>{v.current=t},[t]),A.useEffect(()=>{x.current=function(A,e){const t=new Map;for(const r of Object.keys(A)){const A=AA(r);t.has(A)||t.set(A,r)}if(e){const A=AA(e);t.set(A,e)}return t}(o,n)},[o,n]),A.useEffect(()=>{if(!a){b.current&&(clearTimeout(b.current),b.current=null),p.current=[],null!==u.current&&(cancelAnimationFrame(u.current),u.current=null),d.current=[];const A=s.current;if(A&&c.current){const e=A.getSource(_e);e&&e.setData({type:"FeatureCollection",features:[]})}g.current=!1,f.current=0}},[a]),A.useEffect(()=>{const A=l;if(!A)return;let e=null,t=!1;const r=()=>{if(!t&&!c.current)try{A.getLayer(He)&&A.removeLayer(He),A.getSource(_e)&&A.removeSource(_e),A.addSource(_e,{type:"geojson",data:{type:"FeatureCollection",features:[]}});const t=A.getLayer(Oe)?Oe:void 0;A.addLayer({id:He,type:"line",source:_e,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],"#8B7BAD","#00FFFF"],"line-width":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],1.875,2.5],"line-opacity":["*",["get","opacityMult"],["interpolate",["linear"],["get","intensity"],0,0,.1,.8,.5,1,1,1]]}},t),c.current=!0,m(!0),e&&(clearInterval(e),e=null)}catch{}};return A.isStyleLoaded()&&r(),A.once("style.load",()=>{r()}),c.current||(e=setInterval(()=>{c.current?e&&clearInterval(e):r()},100),setTimeout(()=>{e&&(clearInterval(e),e=null)},5e3)),()=>{t=!0,e&&clearInterval(e),null!==u.current&&(cancelAnimationFrame(u.current),u.current=null);const A=s.current;if(A&&c.current){try{A.getLayer(He)&&A.removeLayer(He),A.getSource(_e)&&A.removeSource(_e)}catch{}c.current=!1,m(!1)}}},[l]);const w=A.useRef(()=>{});A.useEffect(()=>{w.current=()=>{const A=s.current;if(!A)return;const e=A.getSource(_e);if(!e)return;const t=performance.now(),r=d.current,n=[],o=[];for(const i of r){const A=t-i.startTime-i.delay;if(A<(i.isSpeculative?Ge:ze)){o.push(i);const e=i.isSpeculative?Ye(A):Ue(A);e>0&&n.push({type:"Feature",properties:{intensity:e,opacityMult:i.isSpeculative?.5:1,isSpeculative:i.isSpeculative??!1},geometry:{type:"LineString",coordinates:[i.fromCoord,i.toCoord]}})}}e.setData({type:"FeatureCollection",features:n}),d.current=o,o.length>0?u.current=requestAnimationFrame(()=>w.current()):u.current=null}},[]);const y=A.useCallback(()=>{const A=s.current;A&&function(A){if(!A.getLayer(He))return;const e=A.getLayer(Oe)?Oe:void 0;try{A.moveLayer(He,e)}catch{}}(A),null===u.current&&(u.current=requestAnimationFrame(()=>w.current()))},[]),k=A.useCallback(()=>{if(!s.current||!c.current)return;const A=p.current;if(p.current=[],b.current=null,0===A.length)return;const e=x.current,t=v.current;if(0===e.size)return;const r=performance.now();let o=0,a=!1;const l=new Set;for(const s of A){const A=$(s,n);if(!A||A.original.length<2)continue;const c=A.original;let u=0,f=null;for(let n=0;n0){A.sort((A,e)=>e.confidence-A.confidence);const e=Math.max(1,Math.ceil(.25*A.length)),n=A.slice(0,e),i=o+150*u;for(const{edgeKey:A,otherHash:o}of n){const e=t.get(f),n=t.get(o);d.current.push({edgeKey:A,fromCoord:We(e),toCoord:We(n),startTime:r,delay:i,isSpeculative:!0}),l.add(A),a=!0}}}u>0&&(o+=150*u*.5)}a&&y()},[n,i,y]);A.useEffect(()=>{const A=s.current;if(!a)return;if(!A)return;if(!h)return;if(0===r.length)return;const e=Date.now(),t=f.current;if(!g.current){g.current=!0;const A=(e-3e4)/1e3,t=r.filter(e=>(e.timestamp??0)>=A),n=Math.max(...r.map(A=>A.timestamp??0));if(f.current=n,t.length>0){t.sort((A,e)=>(A.timestamp??0)-(e.timestamp??0));const A=t.slice(-20);p.current.push(...A),k()}return}const n=r.filter(A=>(A.timestamp??0)>t);0!==n.length&&(f.current=Math.max(...n.map(A=>A.timestamp??0)),p.current.push(...n),b.current&&clearTimeout(b.current),b.current=setTimeout(k,175))},[a,r,k,h]),A.useEffect(()=>()=>{b.current&&clearTimeout(b.current)},[])}({map:ue,nodeCoordinates:$A,packets:fe,localHash:w,neighbors:e,meshTopology:u,enabled:RA});const{isExiting:ge,isAnimating:he,resetAnimationState:me}=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,neighborLinkScores:h=new Map}){const m=A.useRef(null);A.useEffect(()=>{const A=e&&"current"in e?e.current:e;m.current=A});const b=A.useRef(new Map),p=A.useRef(1),x=A.useRef(new Map),v=A.useRef(new Map),w=A.useRef(!1),y=A.useRef(null),k=A.useRef(t),C=A.useRef(new Set),B=A.useRef(""),M=A.useRef(new Map),D=A.useRef(""),E=A.useRef(""),N=A.useRef(""),Q=A.useRef(r),j=A.useRef(n),P=A.useRef(o),F=A.useRef(i),S=A.useRef(a),L=A.useRef(s),I=A.useRef(l),R=A.useRef(d),T=A.useRef(f),_=A.useRef(h);A.useEffect(()=>{Q.current=r,j.current=n,P.current=o,F.current=i,S.current=a,L.current=s,I.current=l,R.current=d,T.current=f,_.current=h},[r,n,o,i,a,s,l,d,f,h]);const H=A.useCallback((A=!1)=>{var e,t,r,n,o,i,a,s,l,d;const f=m.current;if(!f)return;const h=f.getSource(c),w=f.getSource(u),y=f.getSource(g);if(h){const o=Se(Q.current,!0,b.current,p.current,x.current,v.current,P.current,F.current,S.current,L.current,I.current),i=`${o.features.length}:${(null==(t=null==(e=o.features[0])?void 0:e.properties)?void 0:t.key)??""}:${(null==(n=null==(r=o.features[o.features.length-1])?void 0:r.properties)?void 0:n.key)??""}:${Array.from(b.current.values()).reduce((A,e)=>A+e,0).toFixed(2)}`;(A||i!==D.current)&&(h.setData(o),D.current=i)}if(w){const e=Se(j.current,!1,b.current,p.current,x.current,v.current,P.current,F.current,S.current,L.current,I.current),t=`${e.features.length}:${(null==(i=null==(o=e.features[0])?void 0:o.properties)?void 0:i.key)??""}:${(null==(s=null==(a=e.features[e.features.length-1])?void 0:a.properties)?void 0:s.key)??""}`;(A||t!==E.current)&&(w.setData(e),E.current=t)}if(y&&R.current.length>0){const e=Le(R.current,_.current),t=`${e.features.length}:${(null==(d=null==(l=e.features[0])?void 0:l.properties)?void 0:d.hash)??""}`;(A||t!==N.current)&&(y.setData(e),N.current=t)}},[c,u,g]),z=A.useCallback(()=>{y.current&&(cancelAnimationFrame(y.current),y.current=null),b.current=new Map,p.current=1,x.current=new Map,v.current=new Map,w.current=!1,C.current=new Set,B.current="",M.current=new Map},[]);return A.useEffect(()=>{const A=k.current,e=t;if(k.current=t,m.current){if(y.current&&(cancelAnimationFrame(y.current),y.current=null),A&&!e&&!w.current){w.current=!0;const A=new Map(b.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)b.current.set(e,t*(1-i));H(!0),o<1?y.current=requestAnimationFrame(t):(w.current=!1,b.current=new Map,C.current=new Set,B.current="",x.current=new Map,v.current=new Map,y.current=null,H(!0))};y.current=requestAnimationFrame(t)}!A&&e&&(b.current=new Map,C.current=new Set,B.current="")}},[t,H]),A.useEffect(()=>{const A=m.current;if(!t||w.current||!A)return;const e=[...r,...n],o=e.map(A=>`${A.edge.key}:${A.edge.certainCount}`).sort().join(","),i=0===C.current.size,a=""!==B.current&&B.current!==o;if(!i&&!a)return void H();const s=[],l=[];for(const{edge:t}of e)C.current.has(t.key)?l.push(t.key):s.push(t.key);a&&l.length>0&&(x.current=new Map(M.current),p.current=0),v.current=new Map;for(const{edge:t}of r){const A=vA(t.certainCount);v.current.set(t.key,A)}for(const t of s)b.current.set(t,0);for(const t of l)b.current.has(t)||b.current.set(t,1);if(s.length>0||a&&l.length>0){y.current&&(cancelAnimationFrame(y.current),y.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);p.current=Fe(A)}H(!0);const o=BA+(s.length-1)*e;y.current=n{const A=m.current;if(!A||!g)return;const e=()=>{const e=A.getSource(g);if(!e)return!1;if(d.length>0){const A=Le(d,h);e.setData(A)}else e.setData({type:"FeatureCollection",features:[]});return!0};if(e())return;const t=r=>{r.sourceId===g&&e()&&A.off("sourcedata",t)};A.on("sourcedata",t);const r=()=>{e()&&(A.off("styledata",r),A.off("sourcedata",t))};return A.on("styledata",r),()=>{A.off("sourcedata",t),A.off("styledata",r)}},[g,d,h]),A.useEffect(()=>()=>{y.current&&(cancelAnimationFrame(y.current),y.current=null)},[]),{isExiting:w.current,isAnimating:null!==y.current,resetAnimationState:z,weightAnimProgress:p.current,animStartWeights:x.current,animTargetWeights:v.current}}({map:ue,showTopology:N,validatedPolylines:oe,weakPolylines:ie,maxCertainCount:ce,loopEdgeKeys:se,backboneEdgeKeys:le,highlightedEdgeKey:s,neighbors:e,validatedSourceId:bt,weakSourceId:pt,neighborPolylines:ae,showNeighborLines:j,neighborSourceId:xt,neighborLinkScores:te}),be=A.useMemo(()=>{const A=new Set;for(const e of u.hubNodes){A.add(e);for(const t of u.validatedEdges)t.fromHash===e&&A.add(t.toHash),t.toHash===e&&A.add(t.fromHash)}return A},[u.hubNodes,u.validatedEdges]),pe=A.useMemo(()=>{const A=new Set;if(!n)return A;for(const e of u.validatedEdges)e.fromHash===n&&A.add(e.toHash),e.toHash===n&&A.add(e.fromHash);return A},[n,u.validatedEdges]),{getNodeOpacity:xe}=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)*Ie(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:"direct"===R,soloHubs:"hubs"===R,neighborHashes:XA.map(([A])=>A),hubConnectedNodes:be,directNodeSet:ee,localConnectedNodes:pe,showTopology:N}),{blinkingNodes:ve,blinkColor:we}=function({neighbors:e,localHash:t,enabled:r=!0}){const[n,o]=A.useState(new Map),i=X(),a=A.useRef(q.getPackets());A.useEffect(()=>{a.current=q.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=AA(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=Re(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=$(r,t);if(!A||0===A.original.length)continue;const e=Te(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:RA}),ye=A.useCallback(A=>{if("all"===R)return!0;if("direct"===R)return ee.has(A);if("hubs"===R){if(u.hubNodes.includes(A))return!0;for(const e of u.validatedEdges){if(e.fromHash===A&&u.hubNodes.includes(e.toHash))return!0;if(e.toHash===A&&u.hubNodes.includes(e.fromHash))return!0}return!1}return!0},[R,ee,u.hubNodes,u.validatedEdges]),Ce=A.useCallback(async()=>{mA(!0),dA(!0),gA("fetching"),pA(0),await d(),pA(g.packetCount),gA("analyzing"),await new Promise(A=>setTimeout(A,200)),gA("building");const A=Date.now(),e=Date.now()-A;e<1700&&await new Promise(A=>setTimeout(A,1700-e)),gA("complete"),await new Promise(A=>setTimeout(A,1e3)),dA(!1),mA(!1),me(),wA(!0),setTimeout(()=>{Q(!0)},150)},[d,me,g.packetCount]),Be=A.useCallback(()=>{xA?Q(A=>!A):Ce()},[xA,Ce]),Me=A.useCallback(A=>{B(A.viewState)},[]),De=A.useCallback(()=>{E(A=>{var e,t,r,n,o,i,a;const s=!A,l=null==(r=null==(t=null==(e=c.current)?void 0:e.getContainer())?void 0:t.closest(".map-container-fullscreen, .map-container-16-9"))?void 0:r.parentElement;return s?l&&document.fullscreenEnabled?null==(n=l.requestFullscreen)||n.call(l).catch(()=>{}):l&&document.webkitFullscreenEnabled&&(null==(o=l.webkitRequestFullscreen)||o.call(l)):document.fullscreenElement?null==(i=document.exitFullscreen)||i.call(document).catch(()=>{}):document.webkitFullscreenElement&&(null==(a=document.webkitExitFullscreen)||a.call(document)),s})},[]),Ee=A.useCallback(A=>{T(A)},[]),Qe=A.useCallback(()=>{P(A=>!A)},[]),je=A.useCallback(()=>{S(A=>!A)},[]),Pe=A.useCallback(()=>{I(A=>{const e=!A;if(c.current){const A=c.current.getMap();A&&A.stop()}if(e&&c.current){const A=c.current.getMap();A&&A.easeTo({pitch:45,duration:1500,easing:A=>1-Math.pow(1-A,3)})}if(!e&&c.current){const A=c.current.getMap();A&&A.easeTo({pitch:0,bearing:0,duration:800,easing:A=>1-Math.pow(1-A,2)})}return e})},[]),Ve=A.useCallback(()=>{N||Q(!0)},[N]),Ze=A.useCallback((A,e)=>{J(A),rA(e)},[]),Ke=A.useCallback(()=>{K&&o&&o(K),J(null),rA("")},[K,o]),Je=A.useMemo(()=>[...Dt,...mt],[]),Xe=A.useRef(!1);A.useEffect(()=>{Xe.current="ontouchstart"in window||navigator.maxTouchPoints>0},[]);const qe=A.useCallback(A=>{!Xe.current||!GA||A.features&&0!==A.features.length||(OA(null),G(null))},[GA]),$e=A.useCallback(A=>{var e,t;if(!A.features||0===A.features.length)return;if(A.features.some(A=>{var e,t;return null==(t=null==(e=A.layer)?void 0:e.id)?void 0:t.startsWith("node-markers-")}))return void(z&&(G(null),OA(null)));const r=A.features.find(A=>{var e;const t=null==(e=A.layer)?void 0:e.id;return(null==t?void 0:t.startsWith("topology-"))||(null==t?void 0:t.startsWith("neighbor-"))});if(!r)return;const 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]$/,"");G(e),A.lngLat&&OA({longitude:A.lngLat.lng,latitude:A.lngLat.lat,type:i?"topology":"neighbor",properties:o})}try{(null==(t=c.current)?void 0:t.getCanvas())&&(c.current.getCanvas().style.cursor="pointer")}catch{}},[z]),At=A.useCallback(()=>{var A;G(null),OA(null);try{(null==(A=c.current)?void 0:A.getCanvas())&&(c.current.getCanvas().style.cursor="")}catch{}},[]),et=D?"map-container-fullscreen":"map-container-16-9",tt=y.length>0||(null==r?void 0:r.latitude)&&(null==r?void 0:r.longitude),rt=!m||!tt,nt=tt;return t.jsxs("div",{className:`relative ${et}`,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."}),rt&&t.jsx("div",{className:"absolute inset-0 z-50 glass-card flex items-center justify-center","aria-hidden":"true",children:t.jsxs("div",{className:"flex flex-col items-center gap-3",children:[t.jsx("div",{className:"w-6 h-6 border-2 border-accent-primary border-t-transparent rounded-full animate-spin"}),t.jsx("span",{className:"text-sm text-text-muted",children:"Loading map..."})]})}),nt&&t.jsx("div",{className:`relative w-full h-full ${D?"":"rounded-[1.125rem] overflow-hidden"} ${rt?"opacity-0":"opacity-100 transition-opacity duration-300"}`,children:t.jsxs(U,{ref:c,...C,onMove:Me,mapStyle:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",style:{width:"100%",height:"100%"},attributionControl:!1,interactiveLayerIds:Je,onMouseMove:$e,onMouseLeave:At,onClick:qe,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&&c.current){const A=c.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(Y,{position:"bottom-right"}),t.jsx(Ne,{enabled:L,exaggeration:4}),t.jsx(ke,{coveragePoints:jA,visible:jA.length>0&&PA,terrainEnabled:L,brightness:FA}),t.jsx(Mt,{showTopology:N,isExiting:ge,hoveredEdgeKey:z,highlightedLoopEdges:null==UA?void 0:UA.highlightedEdgeKeys,onEdgeHover:WA,onLoopHover:VA,loops:u.loops,neighborNames:KA,opacityBias:O,widthMultiplier:W,trafficFilter:Z,showNeighborLines:j,disableHover:he||hA}),i&&t.jsx(Et,{targetHash:i,nodeCoordinates:$A,onComplete:a}),s&&t.jsx(Nt,{highlightedEdgeKey:s,validatedPolylines:oe,weakPolylines:ie,onEnsureTopology:Ve}),t.jsx(Pt,{ghost:l??null,neighborCoordinates:$A,onHighlightedNeighborsChange:NA}),t.jsx(ht,{neighborsWithLocation:XA,localNode:r,localHash:n,zeroHopNeighbors:ee,lastHopNeighborMap:Ae,meshTopology:u,hoveredMarker:_,onMarkerHover:H,getNodeOpacity:xe,shouldShowNode:ye,onRequestRemove:o?Ze:void 0,openPopupId:kA,onOpenPopup:MA,onClosePopup:DA,blinkingNodes:ve,blinkColor:we})]})}),(()=>{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=e.listenerScore??0,n=e.loudScore??0,o=r>0||n>0;return o&&(t.push({label:"listener",value:r,color:"text-accent-success"}),t.push({label:"loud",value:n,color:"text-accent-danger"})),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}(GA?{type:GA.type,properties:GA.properties}:null,UA,ce);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(QA,{mapRef:c,showNeighborLines:j,onToggleNeighborLines:Qe,hasNeighborPolylines:ae.length>0,nodeFilter:R,onNodeFilterChange:Ee,hasHubNodes:u.hubNodes.length>0,hasZeroHopNeighbors:ee.size>0,showCoverage:F,onToggleCoverage:je,show3DTerrain:L,onToggle3DTerrain:Pe,isFullscreen:D,onToggleFullscreen:De}),t.jsxs("div",{className:"map-legend-stack",children:[t.jsx(SA,{isActive:N,hasAnalyzed:xA,isLoading:hA,onClick:Be}),t.jsx(IA,{isActive:RA,onClick:_A}),t.jsx(TA,{isActive:jA.length>0&&PA,onClick:LA}),t.jsx(EA,{showTopology:N,validatedPolylineCount:oe.length,filteredNeighborCount:XA.length,hasLocalNode:!(!(null==r?void 0:r.latitude)||!(null==r?void 0:r.longitude)),meshTopology:u,zeroHopNeighbors:ee,neighborsWithLocation:XA})]}),!D&&t.jsx("div",{className:"glass-card-frame absolute inset-0 pointer-events-none rounded-[1.125rem]",style:{zIndex:9999},"aria-hidden":"true"}),t.jsx(cA,{isOpen:null!==K,onCancel:()=>J(null),onConfirm:Ke,title:"Remove Node?",message:`Remove "${tA}" from the contacts list? This will hide the node until it sends a new packet.`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger"}),t.jsx(yA,{isOpen:uA,currentStep:fA,packetCount:bA}),t.jsx(JA,{})]})}export{It as default}; diff --git a/frontend/dist/assets/Dashboard-BfuIudYD.js b/frontend/dist/assets/Dashboard-BfuIudYD.js deleted file mode 100644 index bb42abc6..00000000 --- a/frontend/dist/assets/Dashboard-BfuIudYD.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e,r as t,T as s,y as n,z as a,A as l,p as r,D as i,g as o,E as c,x as d,H as u,I as m,J as h,K as x,O as p,Q as f,Z as g,U as v,V as j,W as b,Y as N,o as y}from"./vendor-react-ClShp8p7.js";import{u as k,a as w,b as M,c as _,d as S,e as L,f as C,h as B,j as F,T as R,k as T,m as H,n as D,D as P,o as $}from"./index-DY0XR9s0.js";import{u as A,a as E}from"./useThemeColors-BsFY5Gki.js";import{C as z,a as W,P as I,b as K,c as O}from"./PageLayout-CQDLcONp.js";import{P as V,a as U,b as q,g as X}from"./PacketDetailModal-DuWvKGFM.js";import{T as J}from"./TimeRangeSelector-3DTeUpqT.js";import{H as Q}from"./HashBadge-BiZRDKRx.js";import{R as G,L as Y,a as Z,A as ee,C as te,X as se,Y as ne,T as ae,b as le}from"./recharts-BjCld2b0.js";import{c as re}from"./link-scoring-LdZ64cNF.js";import{R as ie}from"./Grid-CpI-_Yqf.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";import"./SignalIndicator-Dag5FlAv.js";const oe={received:{barBase:"var(--metric-received)"},forwarded:{barBase:"var(--metric-forwarded)"},transmitted:{barBase:"var(--metric-transmitted)"},dropped:{barBase:"var(--metric-dropped)"},neutral:{barBase:"var(--metric-neutral)"}},ce={sm:"card-sm",md:"card-md",lg:"card-lg",hero:"card-hero",auto:""};function de({buckets:s,colorType:n,height:a=64}){const l=oe[n].barBase,r=t.useMemo(()=>{if(!(null==s?void 0:s.length))return[];const e=s.length/60,t=e<=1?s:Array.from({length:60},(t,n)=>{var a,l;const r=s.slice(Math.floor(n*e),Math.floor((n+1)*e)),i=r.reduce((e,t)=>e+t.count,0),o=r.length?r.reduce((e,t)=>e+t.avg_snr,0)/r.length:0;return{bucket:n,start:(null==(a=r[0])?void 0:a.start)??0,end:(null==(l=r.at(-1))?void 0:l.end)??0,count:i,airtime_ms:r.reduce((e,t)=>e+t.airtime_ms,0),avg_snr:o,avg_rssi:0}}),n=Math.max(...t.map(e=>e.count),1);return t.map(e=>({height:e.count>0?Math.max(e.count/n*100,8):0,color:e.count>0?l:"transparent",count:e.count,snr:e.avg_snr}))},[s,l]);return(null==s?void 0:s.length)?e.jsx("div",{className:"w-full flex items-end gap-[1px]",style:{height:a},children:r.map((t,s)=>{var n;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==(n=t.snr)?void 0:n.toFixed(1)}dB`:"No packets"},s)})}):e.jsx("div",{className:"w-full flex items-end justify-center gap-[2px] opacity-20",style:{height:a},children:e.jsx("span",{className:"type-data-xs text-text-muted",children:"No data"})})}function ue({title:t,value:s,color:n="neutral",subtitle:a,buckets:l,timeRangeLabel:r,icon:i,size:o="md",isLoaded:c=!0}){const{barBase:d}=oe[n],u="string"==typeof s?s:s.toLocaleString();return e.jsxs("div",{className:`data-card flex flex-col relative ${ce[o]}`,children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i&&e.jsx("span",{className:"icon-sm text-text-secondary",children:i}),e.jsx("span",{className:"type-micro",children:t}),r&&e.jsx("span",{className:"pill-tag",children:r})]}),e.jsx("div",{className:"data-card-value",children:u}),e.jsx("div",{className:"flex-1 py-2 mt-2",children:l?e.jsx(de,{buckets:l,colorType:n,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,opacity:.15}})})}),e.jsx("div",{className:"type-label text-text-muted border-t border-border-subtle pt-3 mt-2",children:a??`Total ${t.toLowerCase()}`}),!c&&e.jsx(z,{})]})}const me=.2;function he(e,t=1){return Math.floor(5*t*e)}function xe(e){const t=Math.round(e/me)*me;return Math.max(0,Math.min(5,t))}function pe({stats:r,receivedBuckets:i,droppedBuckets:o,forwardedBuckets:c,bucketDurationSeconds:d,timeRangeLabel:u,isLoaded:m=!0}){var h,x,p,f;const g=t.useMemo(()=>function(e,t,s,n,a){var l,r;const i=e=>(null==e?void 0:e.reduce((e,t)=>e+t.count,0))??0,o=i(t),c=i(s),d=i(n),u=o||(null==e?void 0:e.rx_count)||1,m=c||(null==e?void 0:e.dropped_count)||0,h=u>0?m/(u+m)*100:0;let x=0;if((null==n?void 0:n.length)&&a)x=100*d/(n.length*a*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 p=(null==e?void 0:e.neighbors)??{},f=Object.values(p).filter(e=>e.zero_hop).length;let g=1;h<3?g-=me:h>15?g+=.4:h>10&&(g+=me),x>5&&(g+=me),f>10&&(g+=me);const v=xe(g),j=xe(.28*v),b=he(v),N=he(j),y=he((null==(r=null==(l=null==e?void 0:e.config)?void 0:l.delays)?void 0:r.tx_delay_factor)??1);return{floodFactor:v,directFactor:j,floodSlots:b,directSlots:N,adjustment:b>y?"increase":b10?"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!==v?e.jsxs("span",{children:["Current: ×",v.toFixed(1)," / ×",(null==j?void 0:j.toFixed(1))??"—"]}):e.jsx("span",{children:"Slot-aligned factors"})}),!m&&e.jsx(z,{})]})}function fe(e){return(e.payload_type_name||X(e.payload_type??e.type)).toLowerCase().includes("advert")}function ge(){const s=k(),n=w(),a=M(),l=_(),d=S(),[u,m]=t.useState(null),[h,x]=t.useState(null),p=t.useRef(0),f=t.useRef(0),g=t.useMemo(()=>[...s.length<=100?s:s.slice(-100)].sort((e,t)=>(t.timestamp??0)-(e.timestamp??0)),[s]),v=t.useMemo(()=>{const e=new Map;if(!(null==d?void 0:d.neighbors))return e;d.local_hash&&e.set(L(d.local_hash),d.local_hash);for(const t of Object.keys(d.neighbors)){const s=L(t);e.has(s)||e.set(s,t)}return e},[d]),j=t.useMemo(()=>g.slice(0,15).map(e=>{if(e.src_hash&&e.src_hash.length<=4){const t=v.get(e.src_hash.toUpperCase());if(t)return{...e,src_hash_full:t}}return e}),[g,v]);t.useEffect(()=>{var e;if(!g.length)return;const t=(null==(e=g[0])?void 0:e.timestamp)??0,s=t>f.current&&f.current>0;if(f.current=t,!s)return;const n=g.find(fe);if(!n||(n.timestamp??0)<=f.current)return;const a=requestAnimationFrame(()=>m(n.packet_hash)),l=setTimeout(()=>m(null),600);return()=>{cancelAnimationFrame(a),clearTimeout(l)}},[g]),t.useEffect(()=>{if(l>0&&l!==p.current&&g.length>0){p.current=l;const e=g.find(fe);if(e){const t=requestAnimationFrame(()=>m(e.packet_hash)),s=setTimeout(()=>m(null),600);return()=>{cancelAnimationFrame(t),clearTimeout(s)}}}},[l,g]);const b=()=>e.jsxs(e.Fragment,{children:[e.jsx(r,{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"})]});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(r,{className:"chart-title-icon"}),"Recent Packets"]}),e.jsxs("div",{className:"flex items-center gap-3",children:[a&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(i,{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(o,{to:"/packets",className:"pill-subtle",children:["View all ",e.jsx(c,{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-12 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:n&&0===g.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.jsx("td",{colSpan:6,className:"text-center py-8",children:b()})}):j.map((t,s)=>e.jsx(V,{packet:t,onClick:x,isFlashing:fe(t)&&u===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:n&&0===g.length?e.jsx("div",{className:"p-8 text-center text-text-muted",children:"Loading packets..."}):0===j.length?e.jsx("div",{className:"p-8 text-center",children:b()}):j.map((t,s)=>e.jsx(U,{packet:t,onClick:x,isFlashing:fe(t)&&u===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 ",g.length," packets"]}),h&&e.jsx(q,{packet:h,onClose:()=>x(null)})]})}t.memo(function({active:t,payload:s,label:n,formatValue:a,labelKey:l}){var r;if(!t||!(null==s?void 0:s.length))return null;const i=l&&(null==(r=s[0])?void 0:r.payload)?s[0].payload[l]:n;return e.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-4 py-3 shadow-xl",children:[i&&e.jsx("p",{className:"type-data-xs text-white/50 mb-2",children:i}),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:a?a(t.value,t.name):t.value.toLocaleString()})]},s))})]})});const ve=t.memo(function({active:t,payload:s,color:n,labelKey:a,unit:l=""}){var r,i;if(!t||!(null==s?void 0:s.length))return null;const o=s[0],c=null==(r=null==o?void 0:o.payload)?void 0:r[a];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:n}}),e.jsxs("span",{className:"type-data-sm text-white tabular-nums",children:[null==(i=null==o?void 0:o.value)?void 0:i.toLocaleString(),l]})]})]})});t.memo(function({payload:t}){return(null==t?void 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 je={stable:"M5 12h14",up:"M5 15l7-7 7 7",down:"M19 9l-7 7-7-7"};function be({trend:t}){return e.jsx("span",{className:`mini-widget-trend ${t}`,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:je[t]})})})}function Ne(){return e.jsx("div",{className:"mini-widget-loading",children:e.jsx("div",{className:"mini-widget-loading-spinner"})})}function ye({message:t}){return e.jsx("div",{className:"mini-widget-error",children:e.jsx("span",{title:t,children:"No data"})})}function ke({title:t,icon:s,value:n,unit:a,valueSize:l="md",status:r,subtitle:i,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}),r&&"unknown"!==r&&e.jsx("div",{className:`mini-widget-status-dot ${r}`}),o&&e.jsx(be,{trend:o})]}),d?e.jsx(Ne,{}):u?e.jsx(ye,{message:u}):e.jsxs(e.Fragment,{children:[void 0!==n&&e.jsxs("div",{className:x,children:[n,a&&e.jsx("span",{className:"mini-widget-unit",children:a})]}),i&&e.jsx("div",{className:"mini-widget-subtitle",children:i}),c]})]})}const we=t.createContext({lbtStats:null,noiseFloor:null,hourlyNoiseFloor:[],linkQuality:null,channelHealth:null,trends:null,stats:null,recentPackets:[],quickNeighbors:[],isLoading:!0,error:null,refresh:async()=>{}});function Me(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 _e(e,t,s=2,n=!1){if(null===t)return"stable";const a=e-t;return(0!==t?100*Math.abs(a/t):Math.abs(a))0?"up":"down":a>0?"down":"up"}function Se({children:s}){const n=S(),a=k(),l=C(),r=B(),i=null===n,o=t.useMemo(()=>function(e){const t=Math.floor(Date.now()/1e3),s=t-86400,n=e.filter(e=>e.timestamp>=s&&void 0!==e.lbt_attempts&&e.lbt_attempts>0),a=n.length,l=n.filter(e=>(e.lbt_attempts??0)>1).length,r=a>0?l/a*100:0,i=n.filter(e=>(e.lbt_attempts??0)>1),o=i.length>0?i.reduce((e,t)=>e+(t.lbt_attempts??0),0)/i.length:0,c=n.filter(e=>!0===e.lbt_channel_busy||1===e.lbt_channel_busy).length,d=a>0?c/a*100:0,u=[];for(const v of n){const e=Me(v.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=[],f=[],g=[];for(let v=0;v<24;v++){const e=t-3600*(24-v),s=e+3600,a=n.filter(t=>t.timestamp>=e&&t.timestamp(e.lbt_attempts??0)>1).length,r=a.length>0?l/a.length*100:0;p.push(r);const i=[];for(const t of a){const e=Me(t.lbt_backoff_delays_ms);i.push(...e)}const o=i.length>0?i.reduce((e,t)=>e+t,0)/i.length:0;if(g.push(o),0===a.length)f.push(0);else{const e=a.filter(e=>!0===e.lbt_channel_busy||1===e.lbt_channel_busy).length,t=i.length>0?Math.max(...i):0,s=Math.min(a.length/5,1),n=.15,l=Math.log(1+r*n)/Math.log(1+100*n)*40,c=e/a.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;f.push(Math.min(h*s,85))}}return{totalPacketsWithLBT:a,packetsWithRetries:l,retryRate:r,avgRetries:o,channelBusyCount:c,channelBusyRate:d,avgBackoffMs:h,maxBackoffMs:x,totalBackoffMs:m,hourlyRetryRates:p,hourlyCollisionRisk:f,hourlyAvgBackoffMs:g,windowHours:24,packetCount:e.length}}(a),[a]),c=(null==n?void 0:n.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 F(24);if(t.success&&(null==(e=t.data)?void 0:e.history)){const e=Math.floor(Date.now()/1e3),s=[];for(let n=0;n<24;n++){const a=e-3600*(24-n),l=a+3600,r=t.data.history.filter(e=>e.timestamp>=a&&e.timestamp0){const e=r.reduce((e,t)=>e+t.noise_floor_dbm,0)/r.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==n?void 0:n.neighbors,x=t.useMemo(()=>{const e=h??{};return Object.fromEntries(Object.entries(e).filter(([e])=>!r.has(e)))},[h,r]),p=t.useMemo(()=>l.filter(e=>!r.has(e.hash)),[l,r]),f=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){const s=void 0===e?50:e>=10?100:e>=5?80:e>=0?60:e>=-5?40:20,n=void 0===t?50:t>=-70?100:t>=-80?80:t>=-90?60:t>=-100?40:20;return Math.round(.6*s+.4*n)}(e.avgSnr??void 0,e.avgRssi??void 0),n=t[e.hash];return{name:(null==n?void 0:n.name)||(null==n?void 0:n.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 n=s.length>0?s.reduce((e,t)=>e+t.score,0)/s.length:0;return{neighbors:s,networkScore:Math.round(n),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 n=e?Math.max(0,Math.min(100,100-5*e.retryRate)):50;let a=50;null!==t&&(a=Math.max(0,Math.min(100,(t+120)/30*100)));const l=(null==s?void 0:s.networkScore)??50,r=Math.round(.35*n+.25*a+.4*l);let i;return i=r>=85?"excellent":r>=70?"good":r>=50?"fair":r>=30?"congested":"critical",{score:r,status:i,components:{lbtHealth:Math.round(n),noiseHealth:Math.round(a),linkHealth:Math.round(l)}}}(o,c,f),[o,c,f]),[v,j]=t.useState({noiseFloor:null,networkScore:null,channelHealth:null}),b=t.useRef(0);t.useEffect(()=>{const e=()=>{const e=Date.now();e-b.current>3e4&&(b.current=e,j({noiseFloor:c,networkScore:(null==f?void 0:f.networkScore)??null,channelHealth:(null==g?void 0:g.score)??null}))};e();const t=setInterval(e,5e3);return()=>clearInterval(t)},[c,null==f?void 0:f.networkScore,null==g?void 0:g.score]);const N=t.useMemo(()=>({noiseFloor:{current:c,previous:v.noiseFloor,trend:null!==c?_e(c,v.noiseFloor,2,!0):"stable"},networkScore:{current:(null==f?void 0:f.networkScore)??0,previous:v.networkScore,trend:_e((null==f?void 0:f.networkScore)??0,v.networkScore,3,!1)},channelHealth:{current:(null==g?void 0:g.score)??0,previous:v.channelHealth,trend:_e((null==g?void 0:g.score)??0,v.channelHealth,3,!1)}}),[c,null==f?void 0:f.networkScore,null==g?void 0:g.score,v]),y={lbtStats:o,noiseFloor:c,hourlyNoiseFloor:d,linkQuality:f,channelHealth:g,trends:N,stats:n,recentPackets:a,quickNeighbors:l,isLoading:i,error:null,refresh:async()=>{}};return e.jsx(we.Provider,{value:y,children:s})}function Le(){const e=t.useContext(we);if(void 0===e)throw new Error("useLBTData must be used within an LBTDataProvider");return e}const Ce={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 Be(e,t){return 0===e?"No backoffs":`${t.toFixed(0)}% retry rate`}function Fe(){const{lbtStats:s,isLoading:n,error:a}=Le(),r=d(),i=(null==s?void 0:s.avgBackoffMs)??0,o=(null==s?void 0:s.retryRate)??0,c=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=Ce[c];return e.jsx(ke,{title:"LBT Backoff",icon:e.jsx(l,{className:"mini-widget-icon"}),value:Math.round(i),unit:"ms",status:c,subtitle:s?Be(i,o):void 0,isLoading:n,error:a,onClick:()=>r("/packets"),children:e.jsx("div",{className:"mini-widget-sparkline",children:h.length>0?e.jsx(G,{width:"100%",height:24,children:e.jsx(Y,{data:h,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(Z,{type:"monotone",dataKey:"value",stroke:x,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Re(){const{lbtStats:t,isLoading:s,error:n}=Le(),a=d(),l=(null==t?void 0:t.channelBusyCount)??0,r=(null==t?void 0:t.totalPacketsWithLBT)??0,i=(null==t?void 0:t.channelBusyRate)??0,o=t?(c=i)<.5?"excellent":c<1?"good":c<2?"fair":c<5?"congested":"critical":"unknown";var c;return e.jsx(ke,{title:"Ch. Busy",icon:e.jsx(u,{className:"mini-widget-icon"}),value:l,status:o,subtitle:t?`${i.toFixed(2)}% of ${r} TX`:void 0,isLoading:s,error:n,onClick:()=>a("/packets")})}function Te(e){return null===e?"No reading":e<-115?"Very quiet":e<-105?"Quiet":e<-95?"Moderate":e<-85?"Elevated":"High interference"}const He={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 De(){const{noiseFloor:s,hourlyNoiseFloor:n,trends:a,isLoading:l,error:r}=Le(),i=null===(o=s)||o<-110?"excellent":o<-100?"good":o<-90?"fair":o<-80?"congested":"critical";var o;const c=null==a?void 0:a.noiseFloor.trend,d=t.useMemo(()=>!n||n.length<2?[]:n.map(e=>({value:e})),[n]),u=He[i];return e.jsx(ke,{title:"Noise Floor",icon:e.jsx(m,{className:"mini-widget-icon"}),value:null!==s?Math.round(s):"—",unit:null!==s?"dBm":void 0,status:i,trend:c,subtitle:Te(s),isLoading:l,error:r,children:e.jsx("div",{className:"mini-widget-sparkline",children:d.length>0?e.jsx(G,{width:"100%",height:24,children:e.jsx(Y,{data:d,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(Z,{type:"monotone",dataKey:"value",stroke:u,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Pe(){const s=d(),n=C(),a=k(),l=S(),r=null===l,i=(null==l?void 0:l.local_hash)?L(l.local_hash):"",o=(null==l?void 0:l.neighbors)??{},{neighborHashes:c,neighborNames:u}=t.useMemo(()=>{const e=new Set,t=new Map;for(const s of n){e.add(s.hash);const n=o[s.hash],a=(null==n?void 0:n.name)||(null==n?void 0:n.node_name)||s.prefix;t.set(s.hash,a)}return{neighborHashes:e,neighborNames:t}},[n,o]),m=t.useMemo(()=>{if(0===c.size||0===a.length||!i)return{champion:null,listener:null,loudest:null};const{scores:e}=re(a,c,i),t=[];for(const[a,r]of e)0!==r.blendedScore&&t.push({...r,name:u.get(a)??L(a)});let s=null,n=null,l=null;for(const a of t)(!s||a.blendedScore>s.blendedScore)&&(s=a),(!n||a.listenerScore>n.listenerScore)&&(n=a),(!l||a.loudScore>l.loudScore)&&(l=a);return{champion:s,listener:n,loudest:l}},[a,c,i,u]),{champion:g,listener:v,loudest:j}=m,b=g||v||j?e.jsxs("div",{className:"flex flex-col gap-0.5 mt-auto",children:[g&&e.jsx(R,{content:(N=g,e.jsxs("div",{className:"max-w-[220px]",children:[e.jsxs("div",{className:"font-semibold mb-1",children:["🏆 Champion: ",N.name]}),e.jsxs("div",{className:"text-text-muted mb-1",children:["Blended Score: ",N.blendedScore,e.jsx("span",{className:"text-text-muted/60 ml-1",children:"(Listener + Loud)"})]}),e.jsxs("div",{className:"border-t border-border-subtle pt-1 mt-1 space-y-0.5",children:[e.jsxs("div",{children:["Listener: ",N.listenerScore,"/100 (",N.listenerCount," shared paths)"]}),e.jsxs("div",{children:["Loud: ",N.loudScore,"/100 (",N.loudCount," packets relayed)"]})]})]})),children:e.jsxs("div",{className:"flex items-center gap-1 text-sm rounded px-1 -mx-1 hover:bg-white/5 transition-colors cursor-default",children:[e.jsx(h,{className:"w-3 h-3 text-map-neighbor-color flex-shrink-0"}),e.jsx("span",{className:"font-semibold text-map-neighbor-color font-mono truncate flex-1 min-w-0",children:g.name}),e.jsx("span",{className:"text-map-neighbor-color pl-2 tabular-nums flex-shrink-0 w-9 text-right",children:g.blendedScore})]})}),v&&v.hash!==(null==g?void 0:g.hash)&&e.jsx(R,{content:(t=>e.jsxs("div",{className:"max-w-[220px]",children:[e.jsxs("div",{className:"font-semibold mb-1",children:["👂 Best Listener: ",t.name]}),e.jsxs("div",{className:"text-text-muted mb-1",children:["Score: ",t.listenerScore,"/100"]}),e.jsx("div",{className:"border-t border-border-subtle pt-1 mt-1",children:e.jsxs("div",{children:[t.listenerCount," packets where they heard your transmissions"]})})]}))(v),children:e.jsxs("div",{className:"flex items-center gap-1 text-sm rounded px-1 -mx-1 hover:bg-white/5 transition-colors cursor-default",children:[e.jsx(x,{className:"w-3 h-3 text-text-muted flex-shrink-0"}),e.jsx("span",{className:"text-text-muted font-mono truncate flex-1 min-w-0",children:v.name}),e.jsx("span",{className:"text-text-muted pl-2 tabular-nums flex-shrink-0 w-9 text-right",children:v.blendedScore})]})}),j&&j.hash!==(null==g?void 0:g.hash)&&j.hash!==(null==v?void 0:v.hash)&&e.jsx(R,{content:(t=>e.jsxs("div",{className:"max-w-[220px]",children:[e.jsxs("div",{className:"font-semibold mb-1",children:["📢 Loudest: ",t.name]}),e.jsxs("div",{className:"text-text-muted mb-1",children:["Score: ",t.loudScore,"/100"]}),e.jsx("div",{className:"border-t border-border-subtle pt-1 mt-1",children:e.jsxs("div",{children:[t.loudCount," packets they relayed directly to you"]})})]}))(j),children:e.jsxs("div",{className:"flex items-center gap-1 text-sm rounded px-1 -mx-1 hover:bg-white/5 transition-colors cursor-default",children:[e.jsx(p,{className:"w-3 h-3 text-text-muted flex-shrink-0"}),e.jsx("span",{className:"text-text-muted font-mono truncate flex-1 min-w-0",children:j.name}),e.jsx("span",{className:"text-text-muted pl-2 tabular-nums flex-shrink-0 w-9 text-right",children:j.blendedScore})]})})]}):0===n.length?e.jsx("div",{className:"flex items-center justify-center text-sm text-text-muted mt-auto",children:"No direct neighbors"}):e.jsx("div",{className:"flex items-center justify-center text-sm text-text-muted mt-auto",children:"No routing data yet"});var N;return e.jsx(ke,{title:"Link Leaders",icon:e.jsx(f,{className:"mini-widget-icon"}),isLoading:r,onClick:()=>s("/contacts"),children:b})}const $e={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 Ae(){const{lbtStats:s,isLoading:n,error:a}=Le(),l=s?function(e){const{retryRate:t,channelBusyCount:s,totalPacketsWithLBT:n,avgBackoffMs:a,maxBackoffMs:l}=e;if(0===n)return 0;const r=Math.min(n/10,1),i=Math.log(1+.15*t)/Math.log(16)*40,o=s/n*100,c=Math.min(.5*o,25);let d=0;a>100&&(d=Math.min(8*Math.log10(a/100),15));let u=0;l>500&&a>0&&l>2*a&&(u=Math.min((l-500)/200,5));const m=(i+c+d+u)*r;return Math.min(m,85)}(s):0,r=s?(i=l)<15?"excellent":i<30?"good":i<45?"fair":i<60?"congested":"critical":"unknown";var i;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=$e[r];return e.jsx(ke,{title:"Collision Risk",icon:e.jsx(g,{className:"mini-widget-icon"}),value:l.toFixed(1),unit:"%",status:r,subtitle:c,isLoading:n,error:a,children:e.jsx("div",{className:"mini-widget-sparkline",children:u.length>0?e.jsx(G,{width:"100%",height:24,children:e.jsx(Y,{data:u,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(Z,{type:"monotone",dataKey:"value",stroke:m,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Ee(){const[s,n]=t.useState(!1),[a]=t.useState(0),{stats:l,lbtStats:i,isLoading:o}=Le(),c=t.useMemo(()=>{if(!l)return null;const e=l.airtime_used_ms??0,t=l.max_airtime_ms??1;return{usedMs:e,maxMs:t,remainingMs:l.airtime_remaining_ms??0,utilizationPercent:l.utilization_percent??(t>0?e/t*100:0)}},[l]),d=t.useMemo(()=>{if(!i||0===i.totalPacketsWithLBT)return 100;const e=i.channelBusyCount,t=i.totalPacketsWithLBT;return(t-e)/t*100},[i]),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`:((f=x)<1e3?`${Math.round(f)}ms`:f<6e4?`${(f/1e3).toFixed(1)}s`:`${(f/6e4).toFixed(1)}m`)+" remaining";var f;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(ke,{title:"Duty Cycle",icon:e.jsx(r,{className:"mini-widget-icon"}),value:u.toFixed(1),unit:"%",status:m,subtitle:p,isLoading:o,children:g})}function ze({className:t=""}){return e.jsx(Se,{children:e.jsxs("div",{className:`mesh-health-container ${t}`,children:[e.jsxs("div",{className:"mesh-health-header",children:[e.jsx(v,{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(Fe,{}),e.jsx(Ae,{}),e.jsx(De,{}),e.jsx(Ee,{}),e.jsx(Re,{}),e.jsx(Pe,{})]})]})})}function We(){var n,a;const l=S(),i=T(),o=k(),c=H(),d=A(),u=E(),[m,h]=t.useState(4),x=P[m],p=null==(n=null==l?void 0:l.config)?void 0:n.radio,f=t.useMemo(()=>p?{sf:p.spreading_factor??10,bw:p.bandwidth??25e4,cr:p.coding_rate??5,preamble:p.preamble_length??8}:null,[p]),g=o.length,v=t.useMemo(()=>g?D(x.minutes,x.buckets,o,l):null,[g,x.minutes,x.buckets,f]),w=t.useMemo(()=>function(e,t){if(!(null==e?void 0:e.length))return[];const s=t>1440?{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}:{hour:"2-digit",minute:"2-digit",hour12:!1};return e.map(e=>({time:new Date(1e3*e.start).toLocaleString([],s),received:e.count}))}(null==v?void 0:v.received,x.minutes),[null==v?void 0:v.received,x.minutes]),M=t.useMemo(()=>function(e){if(!e.length)return[0,"auto"];const t=e.map(e=>e.received),s=Math.min(...t),n=Math.max(...t);if(s===n)return[Math.max(0,s-1),n+1];const a=.1*(n-s);return[Math.max(0,Math.floor(s-a)),Math.ceil(n+a)]}(w),[w]),_=t.useMemo(()=>{return(e=w.length)<=12?0:e<=24?2:e<=48?5:e<=72?8:Math.floor(e/7);var e},[w.length]),L=t.useMemo(()=>{const e=e=>(null==e?void 0:e.reduce((e,t)=>e+t.count,0))??0,t=e(null==v?void 0:v.received),s=e(null==v?void 0:v.forwarded),n=e(null==v?void 0:v.dropped),a=e(null==v?void 0:v.transmitted),l=((null==v?void 0:v.time_range_minutes)??x.minutes)/60;return{received:t,forwarded:s,dropped:n,transmitted:a,rxPerHour:l>0?Math.round(t/l):0,fwdPerHour:l>0?Math.round(s/l):0}},[v,x.minutes]),C=(null==l?void 0:l.uptime_seconds)?$(l.uptime_seconds):"0m",B=(null==l?void 0:l.node_name)??(null==(a=null==l?void 0:l.config)?void 0:a.node_name)??"Unknown Node";return i?e.jsxs(W,{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:i}),e.jsx("p",{className:"type-data-sm text-white/40 mt-4",children:"Make sure the backend is running on port 8000"})]}):e.jsxs(I,{children:[e.jsx(K,{title:B,icon:e.jsx(j,{}),controls:e.jsx(J,{ranges:P,selectedIndex:m,onSelect:h})}),e.jsx(ie,{template:"hero",children:e.jsxs(W,{isLoaded:c,skeletonType:"chart",children:[e.jsx(O,{icon:e.jsx(s,{}),title:"RECEIVED",badge:x.label,iconColor:"text-accent-success"}),e.jsx("div",{className:"type-hero font-semibold min-h-[3rem]",style:{color:d.received},children:L.received.toLocaleString()}),e.jsxs("div",{className:"type-body-sm text-text-secondary mt-1",children:[L.rxPerHour,"/hr rate"]}),e.jsx("div",{className:"mt-4",children:w.length>0?e.jsx(G,{width:"100%",height:180,children:e.jsxs(ee,{data:w,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:d.received,stopOpacity:.3}),e.jsx("stop",{offset:"95%",stopColor:d.received,stopOpacity:0})]})}),e.jsx(te,{strokeDasharray:"3 3",stroke:u.grid,vertical:!1}),e.jsx(se,{dataKey:"time",axisLine:!1,tickLine:!1,tick:{fill:u.axisTick,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dy:8,interval:_,minTickGap:20}),e.jsx(ne,{domain:M,axisLine:!1,tickLine:!1,tick:{fill:u.axisTick,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dx:-8,width:40}),e.jsx(ae,{content:e.jsx(ve,{color:d.received,labelKey:"time",unit:" packets"}),cursor:{stroke:u.cursor,strokeWidth:1}}),e.jsx(le,{type:"stepAfter",dataKey:"received",stroke:d.received,fill:"url(#gradient-received)",strokeWidth:1,dot:!1,activeDot:{r:4,strokeWidth:0,fill:d.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(ie,{template:"compact",children:[e.jsx(ue,{title:"FORWARDED",value:L.forwarded,subtitle:`${L.fwdPerHour}/hr rate`,color:"forwarded",buckets:null==v?void 0:v.forwarded,timeRangeLabel:x.label,icon:e.jsx(b,{className:"w-4 h-4"}),isLoaded:c}),e.jsx(ue,{title:"DROPPED",value:L.dropped,subtitle:"Filtered or duplicate",color:"dropped",buckets:null==v?void 0:v.dropped,timeRangeLabel:x.label,icon:e.jsx(N,{className:"w-4 h-4"}),isLoaded:c}),e.jsx(pe,{stats:l,receivedBuckets:null==v?void 0:v.received,droppedBuckets:null==v?void 0:v.dropped,forwardedBuckets:null==v?void 0:v.forwarded,bucketDurationSeconds:null==v?void 0:v.bucket_duration_seconds,timeRangeLabel:x.label,isLoaded:c}),e.jsx(ue,{title:"UPTIME",value:C,subtitle:"Since last restart",color:"neutral",icon:e.jsx(y,{className:"w-4 h-4"}),isLoaded:c})]}),e.jsx(ze,{}),e.jsx(ge,{}),l&&e.jsx(ie,{template:"auto",children:e.jsxs(W,{children:[e.jsx(O,{icon:e.jsx(r,{}),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:B})]}),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",l.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",l.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:l.local_hash?e.jsx(Q,{hash:l.local_hash,size:"sm"}):e.jsx("span",{className:"type-data-sm text-text-muted",children:"N/A"})})]})]}),l.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(Q,{hash:l.public_key,prefixLength:12,suffixLength:8})})]})]})})]})}export{We as default}; diff --git a/frontend/dist/assets/Dashboard-D_Tfd9l2.js b/frontend/dist/assets/Dashboard-D_Tfd9l2.js new file mode 100644 index 00000000..ce011391 --- /dev/null +++ b/frontend/dist/assets/Dashboard-D_Tfd9l2.js @@ -0,0 +1 @@ +import{j as e,r as t,T as s,y as n,z as a,A as l,p as r,D as i,g as o,E as c,x as d,H as u,I as m,J as h,K as x,O as p,Q as f,Z as g,U as v,V as j,W as b,Y as N,o as y}from"./vendor-react-O8XH9yVn.js";import{u as w,a as k,b as M,c as _,d as L,e as S,f as C,h as R,j as T,T as B,k as F,m as A,n as I,D as P,o as D}from"./index-Dp0UlTio.js";import{u as $,a as E}from"./useThemeColors-CD0TSU03.js";import{C as H,S as W,a as z,P as O,b as G,c as K}from"./PageLayout-DE5PEtD2.js";import{P as J,a as V,b as U,g as q}from"./PacketDetailModal-CR1FHEH5.js";import{T as X}from"./TimeRangeSelector-9pGCd7oa.js";import{H as Q}from"./HashBadge-aS_UIcg2.js";import{s as Y}from"./SignalIndicator-BVAbF7xm.js";import{R as Z,L as ee,a as te,A as se,C as ne,X as ae,Y as le,T as re,b as ie}from"./recharts-BU7auunF.js";import{c as oe}from"./link-scoring-DacI-LFP.js";import{R as ce}from"./Grid-CIZAny_R.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";const de={received:{barBase:"var(--metric-received)"},forwarded:{barBase:"var(--metric-forwarded)"},transmitted:{barBase:"var(--metric-transmitted)"},dropped:{barBase:"var(--metric-dropped)"},neutral:{barBase:"var(--metric-neutral)"}},ue={sm:"card-sm",md:"card-md",lg:"card-lg",hero:"card-hero",auto:""};function me({buckets:s,colorType:n,height:a=64}){const l=de[n].barBase,r=t.useMemo(()=>{if(!(null==s?void 0:s.length))return[];const e=s.length/60,t=e<=1?s:Array.from({length:60},(t,n)=>{var a,l;const r=s.slice(Math.floor(n*e),Math.floor((n+1)*e)),i=r.reduce((e,t)=>e+t.count,0),o=r.length?r.reduce((e,t)=>e+t.avg_snr,0)/r.length:0;return{bucket:n,start:(null==(a=r[0])?void 0:a.start)??0,end:(null==(l=r.at(-1))?void 0:l.end)??0,count:i,airtime_ms:r.reduce((e,t)=>e+t.airtime_ms,0),avg_snr:o,avg_rssi:0}}),n=Math.max(...t.map(e=>e.count),1);return t.map(e=>({height:e.count>0?Math.max(e.count/n*100,8):0,color:e.count>0?l:"transparent",count:e.count,snr:e.avg_snr}))},[s,l]);return(null==s?void 0:s.length)?e.jsx("div",{className:"w-full flex items-end gap-[1px]",style:{height:a},children:r.map((t,s)=>{var n;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==(n=t.snr)?void 0:n.toFixed(1)}dB`:"No packets"},s)})}):e.jsx("div",{className:"w-full flex items-end justify-center gap-[2px] opacity-20",style:{height:a},children:e.jsx("span",{className:"type-data-xs text-text-muted",children:"No data"})})}function he({title:t,value:s,color:n="neutral",subtitle:a,buckets:l,timeRangeLabel:r,icon:i,size:o="md",isLoaded:c=!0}){const{barBase:d}=de[n],u="string"==typeof s?s:s.toLocaleString();return c?e.jsxs("div",{className:`data-card flex flex-col relative ${ue[o]}`,children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[i&&e.jsx("span",{className:"icon-sm text-text-secondary",children:i}),e.jsx("span",{className:"type-micro",children:t}),r&&e.jsx("span",{className:"pill-tag",children:r})]}),e.jsx("div",{className:"data-card-value",children:u}),e.jsx("div",{className:"flex-1 py-2 mt-2",children:l?e.jsx(me,{buckets:l,colorType:n,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,opacity:.15}})})}),e.jsx("div",{className:"type-label text-text-muted border-t border-border-subtle pt-3 mt-2",children:a??`Total ${t.toLowerCase()}`})]}):e.jsx("div",{className:`data-card flex flex-col relative ${ue[o]}`,children:e.jsx(H,{})})}const xe=.2;function pe(e,t=1){return Math.floor(5*t*e)}function fe(e){const t=Math.round(e/xe)*xe;return Math.max(0,Math.min(5,t))}function ge({stats:t,receivedBuckets:r,droppedBuckets:i,forwardedBuckets:o,bucketDurationSeconds:c,timeRangeLabel:d,isLoaded:u=!0}){var m,h,x,p;if(!u)return e.jsx("div",{className:"data-card flex flex-col relative",children:e.jsx(H,{})});const f=function(e,t,s,n,a){var l,r;const i=e=>(null==e?void 0:e.reduce((e,t)=>e+t.count,0))??0,o=i(t),c=i(s),d=i(n),u=o||(null==e?void 0:e.rx_count)||1,m=c||(null==e?void 0:e.dropped_count)||0,h=u>0?m/(u+m)*100:0;let x=0;if((null==n?void 0:n.length)&&a)x=100*d/(n.length*a*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 p=(null==e?void 0:e.neighbors)??{},f=Object.values(p).filter(e=>e.zero_hop).length;let g=1;h<3?g-=xe:h>15?g+=.4:h>10&&(g+=xe),x>5&&(g+=xe),f>10&&(g+=xe);const v=fe(g),j=fe(.28*v),b=pe(v),N=pe(j),y=pe((null==(r=null==(l=null==e?void 0:e.config)?void 0:l.delays)?void 0:r.tx_delay_factor)??1);return{floodFactor:v,directFactor:j,floodSlots:b,directSlots:N,adjustment:b>y?"increase":b10?"text-accent-warning":"text-text-secondary"),children:[f.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:[f.txUtilization.toFixed(2),"%"]})]})]}),e.jsx("div",{className:"type-label text-text-muted border-t border-border-subtle pt-3 mt-2 truncate",children:null!==g?e.jsxs("span",{children:["Current: ×",g.toFixed(1)," / ×",(null==v?void 0:v.toFixed(1))??"—"]}):e.jsx("span",{children:"Slot-aligned factors"})})]})}function ve(e){return(e.payload_type_name||q(e.payload_type??e.type)).toLowerCase().includes("advert")}function je(){const s=w(),n=k(),a=M(),l=_(),d=L(),[u,m]=t.useState(null),[h,x]=t.useState(null),p=t.useRef(0),f=t.useRef(0),g=t.useMemo(()=>[...s.length<=100?s:s.slice(-100)].sort((e,t)=>(t.timestamp??0)-(e.timestamp??0)),[s]),v=t.useMemo(()=>{const e=new Map;if(!(null==d?void 0:d.neighbors))return e;d.local_hash&&e.set(S(d.local_hash),d.local_hash);for(const t of Object.keys(d.neighbors)){const s=S(t);e.has(s)||e.set(s,t)}return e},[d]),j=t.useMemo(()=>g.slice(0,15).map(e=>{if(e.src_hash&&e.src_hash.length<=4){const t=v.get(e.src_hash.toUpperCase());if(t)return{...e,src_hash_full:t}}return e}),[g,v]);t.useEffect(()=>{var e;if(!g.length)return;const t=(null==(e=g[0])?void 0:e.timestamp)??0,s=t>f.current&&f.current>0;if(f.current=t,!s)return;const n=g.find(ve);if(!n||(n.timestamp??0)<=f.current)return;const a=requestAnimationFrame(()=>m(n.packet_hash)),l=setTimeout(()=>m(null),600);return()=>{cancelAnimationFrame(a),clearTimeout(l)}},[g]),t.useEffect(()=>{if(l>0&&l!==p.current&&g.length>0){p.current=l;const e=g.find(ve);if(e){const t=requestAnimationFrame(()=>m(e.packet_hash)),s=setTimeout(()=>m(null),600);return()=>{cancelAnimationFrame(t),clearTimeout(s)}}}},[l,g]);const b=()=>e.jsxs(e.Fragment,{children:[e.jsx(r,{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"})]});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(r,{className:"chart-title-icon"}),"Recent Packets"]}),e.jsxs("div",{className:"flex items-center gap-3",children:[a&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(i,{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(o,{to:"/packets",className:"pill-subtle",children:["View all ",e.jsx(c,{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-12 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:n&&0===g.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.jsx("td",{colSpan:6,className:"text-center py-8",children:b()})}):j.map((t,s)=>e.jsx(J,{packet:t,onClick:x,isFlashing:ve(t)&&u===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:n&&0===g.length?e.jsx("div",{className:"p-8 text-center text-text-muted",children:"Loading packets..."}):0===j.length?e.jsx("div",{className:"p-8 text-center",children:b()}):j.map((t,s)=>e.jsx(V,{packet:t,onClick:x,isFlashing:ve(t)&&u===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 ",g.length," packets"]}),h&&e.jsx(U,{packet:h,onClose:()=>x(null)})]})}t.memo(function({active:t,payload:s,label:n,formatValue:a,labelKey:l}){var r;if(!t||!(null==s?void 0:s.length))return null;const i=l&&(null==(r=s[0])?void 0:r.payload)?s[0].payload[l]:n;return e.jsxs("div",{className:"bg-tooltip-bg border border-border-subtle rounded-lg px-4 py-3 shadow-xl",children:[i&&e.jsx("p",{className:"type-data-xs text-white/50 mb-2",children:i}),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:a?a(t.value,t.name):t.value.toLocaleString()})]},s))})]})});const be=t.memo(function({active:t,payload:s,color:n,labelKey:a,unit:l=""}){var r,i;if(!t||!(null==s?void 0:s.length))return null;const o=s[0],c=null==(r=null==o?void 0:o.payload)?void 0:r[a];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:n}}),e.jsxs("span",{className:"type-data-sm text-white tabular-nums",children:[null==(i=null==o?void 0:o.value)?void 0:i.toLocaleString(),l]})]})]})});t.memo(function({payload:t}){return(null==t?void 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 Ne={stable:"M5 12h14",up:"M5 15l7-7 7 7",down:"M19 9l-7 7-7-7"};function ye({trend:t}){return e.jsx("span",{className:`mini-widget-trend ${t}`,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:Ne[t]})})})}function we(){return e.jsx("div",{className:"mini-widget-loading",children:e.jsx("div",{className:"mini-widget-loading-spinner"})})}function ke({message:t}){return e.jsx("div",{className:"mini-widget-error",children:e.jsx("span",{title:t,children:"No data"})})}function Me({title:t,icon:s,value:n,unit:a,valueSize:l="md",status:r,subtitle:i,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}),r&&"unknown"!==r&&e.jsx("div",{className:`mini-widget-status-dot ${r}`}),o&&e.jsx(ye,{trend:o})]}),d?e.jsx(we,{}):u?e.jsx(ke,{message:u}):e.jsxs(e.Fragment,{children:[void 0!==n&&e.jsxs("div",{className:x,children:[n,a&&e.jsx("span",{className:"mini-widget-unit",children:a})]}),i&&e.jsx("div",{className:"mini-widget-subtitle",children:i}),c]})]})}const _e={DELTA_CRITICAL:10,SLOPE_CRITICAL:4,JITTER_CRITICAL:6,DELTA_WARNING:5,SLOPE_WARNING:2,JITTER_WARNING:4},Le={baselineMedian:null,baselineP10:null,baselineP90:null,currentMedian:null,currentSampleCount:0,delta:0,slope:0,jitter:0,penalty:0,penaltyReason:null,computedAt:0,isReliable:!1};function Se(e,t){if(0===e.length)return null;const s=[...e].sort((e,t)=>e-t),n=t/100*(s.length-1),a=Math.floor(n),l=Math.ceil(n);return a===l?s[a]:s[a]+(s[l]-s[a])*(n-a)}function Ce(e){return Se(e,50)}const Re={lbtStats:null,noiseFloor:null,hourlyNoiseFloor:[],linkQuality:null,channelHealth:null,nfTrend:Le,radioConfig:null,trends:null,stats:null,recentPackets:[],quickNeighbors:[],isLoading:!0,error:null,refresh:async()=>{}},Te=t.createContext(Re);function Be(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 Fe(e,t,s=2,n=!1){if(null===t)return"stable";const a=e-t;return(0!==t?100*Math.abs(a/t):Math.abs(a))0?"up":"down":a>0?"down":"up"}function Ae({children:s}){var n;const a=L(),l=w(),r=C(),i=R(),o=null===a,c=t.useMemo(()=>function(e){const t=Math.floor(Date.now()/1e3),s=t-86400,n=e.filter(e=>e.timestamp>=s&&void 0!==e.lbt_attempts&&e.lbt_attempts>0),a=n.length,l=n.filter(e=>(e.lbt_attempts??0)>1).length,r=a>0?l/a*100:0,i=n.filter(e=>(e.lbt_attempts??0)>1),o=i.length>0?i.reduce((e,t)=>e+(t.lbt_attempts??0),0)/i.length:0,c=n.filter(e=>!0===e.lbt_channel_busy||1===e.lbt_channel_busy).length,d=a>0?c/a*100:0,u=[];for(const v of n){const e=Be(v.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=[],f=[],g=[];for(let v=0;v<24;v++){const e=t-3600*(24-v),s=e+3600,a=n.filter(t=>t.timestamp>=e&&t.timestamp(e.lbt_attempts??0)>1).length,r=a.length>0?l/a.length*100:0;p.push(r);const i=[];for(const t of a){const e=Be(t.lbt_backoff_delays_ms);i.push(...e)}const o=i.length>0?i.reduce((e,t)=>e+t,0)/i.length:0;if(g.push(o),0===a.length)f.push(0);else{const e=a.filter(e=>!0===e.lbt_channel_busy||1===e.lbt_channel_busy).length,t=i.length>0?Math.max(...i):0,s=Math.min(a.length/5,1),n=.15,l=Math.log(1+r*n)/Math.log(1+100*n)*40,c=e/a.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;f.push(Math.min(h*s,85))}}return{totalPacketsWithLBT:a,packetsWithRetries:l,retryRate:r,avgRetries:o,channelBusyCount:c,channelBusyRate:d,avgBackoffMs:h,maxBackoffMs:x,totalBackoffMs:m,hourlyRetryRates:p,hourlyCollisionRisk:f,hourlyAvgBackoffMs:g,windowHours:24,packetCount:e.length}}(l),[l]),d=(null==a?void 0:a.noise_floor_dbm)??null,u=t.useMemo(()=>{var e;const t=null==(e=null==a?void 0:a.config)?void 0:e.radio;return t?{sf:t.spreading_factor??7,bwHz:t.bandwidth??125e3}:null},[null==(n=null==a?void 0:a.config)?void 0:n.radio]),[m,h]=t.useState([]),x=t.useRef(0);t.useEffect(()=>{const e=async()=>{var e;const t=Date.now();if(!(t-x.current<6e4)){x.current=t;try{const t=await T(24);if(t.success&&(null==(e=t.data)?void 0:e.history)){const e=Math.floor(Date.now()/1e3),s=[];for(let n=0;n<24;n++){const a=e-3600*(24-n),l=a+3600,r=t.data.history.filter(e=>e.timestamp>=a&&e.timestamp0){const e=r.reduce((e,t)=>e+t.noise_floor_dbm,0)/r.length;s.push(e)}else s.push(s.length>0?s[s.length-1]:-100)}h(s)}}catch{}}};e();const t=setInterval(e,6e4);return()=>clearInterval(t)},[]);const p=null==a?void 0:a.neighbors,f=t.useMemo(()=>{const e=p??{};return Object.fromEntries(Object.entries(e).filter(([e])=>!i.has(e)))},[p,i]),g=t.useMemo(()=>r.filter(e=>!i.has(e.hash)),[r,i]),v=t.useMemo(()=>function(e){if(0===e.length)return{...Le,computedAt:Math.floor(Date.now()/1e3)};const t=Math.floor(Date.now()/1e3),s=e.filter(e=>Number.isFinite(e)),n=e.length>0?[e[e.length-1]]:[],a=e.slice(-4).filter(e=>Number.isFinite(e)),l=Ce(s),r=Se(s,10),i=Se(s,90),o=Ce(n),c=null!==o&&null!==r?o-r:0,d=function(e){if(e.length<2)return 0;const t=e.length;let s=0,n=0,a=0,l=0;const r=e[0].timestamp;for(const o of e){const e=(o.timestamp-r)/3600,t=o.value;s+=e,n+=t,a+=e*t,l+=e*e}const i=t*l-s*s;return Math.abs(i)<1e-4?0:(t*a-s*n)/i}(a.map((e,s)=>({timestamp:t-3600*(a.length-1-s),value:e}))),u=function(e){if(e.length<2)return 0;const t=e.reduce((e,t)=>e+t,0)/e.length,s=e.map(e=>Math.pow(e-t,2)).reduce((e,t)=>e+t,0)/e.length;return Math.sqrt(s)}(a),m=s.length>=12,[h,x]=m?function(e,t,s){const n=_e;return e>=n.DELTA_CRITICAL?[2,`Noise floor ${e.toFixed(1)} dB above baseline`]:t>=n.SLOPE_CRITICAL?[2,`Noise floor rising ${t.toFixed(1)} dB/hour`]:s>=n.JITTER_CRITICAL?[2,`Noise floor unstable (±${s.toFixed(1)} dB)`]:e>=n.DELTA_WARNING?[1,`Noise floor ${e.toFixed(1)} dB above baseline`]:t>=n.SLOPE_WARNING?[1,`Noise floor rising ${t.toFixed(1)} dB/hour`]:s>=n.JITTER_WARNING?[1,`Noise floor variable (±${s.toFixed(1)} dB)`]:[0,null]}(c,d,u):[0,null];return{baselineMedian:l,baselineP10:r,baselineP90:i,currentMedian:o,currentSampleCount:n.length,delta:c,slope:d,jitter:u,penalty:h,penaltyReason:x,computedAt:t,isReliable:m}}(m),[m]),j=t.useMemo(()=>function(e,t,s){if(0===e.length)return{neighbors:[],networkScore:0,neighborCount:0,bestLink:null,worstLink:null};const n=e.map(e=>{const n=function(e,t,s){const n=Y(e,t,s,0);if(n)switch(n.finalGrade){case"excellent":return 100;case"good":return 80;case"fair":return 60;case"poor":return 40;case"critical":return 20}const a=void 0===e?50:e>=10?100:e>=5?80:e>=0?60:e>=-5?40:20,l=void 0===t?50:t>=-70?100:t>=-80?80:t>=-90?60:t>=-100?40:20;return Math.round(.6*a+.4*l)}(e.avgSnr??void 0,e.avgRssi??void 0,s),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:n,advertCount:e.count}});n.sort((e,t)=>t.score-e.score);const a=n.length>0?n.reduce((e,t)=>e+t.score,0)/n.length:0;return{neighbors:n,networkScore:Math.round(a),neighborCount:n.length,bestLink:n.length>0?{name:n[0].name,score:n[0].score}:null,worstLink:n.length>0?{name:n[n.length-1].name,score:n[n.length-1].score}:null}}(g,f,u),[g,f,u]),b=t.useMemo(()=>function(e,t,s){const n=e?Math.max(0,Math.min(100,100-5*e.retryRate)):50;let a=50;null!==t&&(a=Math.max(0,Math.min(100,(t+120)/30*100)));const l=(null==s?void 0:s.networkScore)??50,r=Math.round(.35*n+.25*a+.4*l);let i;return i=r>=85?"excellent":r>=70?"good":r>=50?"fair":r>=30?"congested":"critical",{score:r,status:i,components:{lbtHealth:Math.round(n),noiseHealth:Math.round(a),linkHealth:Math.round(l)}}}(c,d,j),[c,d,j]),[N,y]=t.useState({noiseFloor:null,networkScore:null,channelHealth:null}),k=t.useRef(0);t.useEffect(()=>{const e=()=>{const e=Date.now();e-k.current>3e4&&(k.current=e,y({noiseFloor:d,networkScore:(null==j?void 0:j.networkScore)??null,channelHealth:(null==b?void 0:b.score)??null}))};e();const t=setInterval(e,5e3);return()=>clearInterval(t)},[d,null==j?void 0:j.networkScore,null==b?void 0:b.score]);const M=t.useMemo(()=>({noiseFloor:{current:d,previous:N.noiseFloor,trend:null!==d?Fe(d,N.noiseFloor,2,!0):"stable"},networkScore:{current:(null==j?void 0:j.networkScore)??0,previous:N.networkScore,trend:Fe((null==j?void 0:j.networkScore)??0,N.networkScore,3,!1)},channelHealth:{current:(null==b?void 0:b.score)??0,previous:N.channelHealth,trend:Fe((null==b?void 0:b.score)??0,N.channelHealth,3,!1)}}),[d,null==j?void 0:j.networkScore,null==b?void 0:b.score,N]),_={lbtStats:c,noiseFloor:d,hourlyNoiseFloor:m,linkQuality:j,channelHealth:b,nfTrend:v,radioConfig:u,trends:M,stats:a,recentPackets:l,quickNeighbors:r,isLoading:o,error:null,refresh:async()=>{}};return e.jsx(Te.Provider,{value:_,children:s})}function Ie(){const e=t.useContext(Te);if(void 0===e)throw new Error("useLBTData must be used within an LBTDataProvider");return e}const Pe={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 De(e,t){return 0===e?"No backoffs":`${t.toFixed(0)}% retry rate`}function $e(){const{lbtStats:n,isLoading:a,error:l}=Ie(),r=d(),i=(null==n?void 0:n.avgBackoffMs)??0,o=(null==n?void 0:n.retryRate)??0,c=n?(u=i)<100?"excellent":u<250?"good":u<500?"fair":u<1e3?"congested":"critical":"unknown";var u;const m=null==n?void 0:n.hourlyAvgBackoffMs,h=t.useMemo(()=>!m||m.length<2?[]:m.map(e=>({value:e})),[m]),x=Pe[c];return e.jsx(Me,{title:"LBT Backoff",icon:e.jsx(s,{className:"mini-widget-icon"}),value:Math.round(i),unit:"ms",status:c,subtitle:n?De(i,o):void 0,isLoading:a,error:l,onClick:()=>r("/packets"),children:e.jsx("div",{className:"mini-widget-sparkline",children:h.length>0?e.jsx(Z,{width:"100%",height:24,children:e.jsx(ee,{data:h,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(te,{type:"monotone",dataKey:"value",stroke:x,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Ee(){const{lbtStats:t,isLoading:s,error:n}=Ie(),a=d(),l=(null==t?void 0:t.channelBusyCount)??0,r=(null==t?void 0:t.totalPacketsWithLBT)??0,i=(null==t?void 0:t.channelBusyRate)??0,o=t?(c=i)<.5?"excellent":c<1?"good":c<2?"fair":c<5?"congested":"critical":"unknown";var c;return e.jsx(Me,{title:"Ch. Busy",icon:e.jsx(u,{className:"mini-widget-icon"}),value:l,status:o,subtitle:t?`${i.toFixed(2)}% of ${r} TX`:void 0,isLoading:s,error:n,onClick:()=>a("/packets")})}function He(e){return null===e?"No reading":e<-115?"Very quiet":e<-105?"Quiet":e<-95?"Moderate":e<-85?"Elevated":"High interference"}const We={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 ze(){const{noiseFloor:s,hourlyNoiseFloor:n,trends:a,isLoading:l,error:r}=Ie(),i=null===(o=s)||o<-110?"excellent":o<-100?"good":o<-90?"fair":o<-80?"congested":"critical";var o;const c=null==a?void 0:a.noiseFloor.trend,d=t.useMemo(()=>!n||n.length<2?[]:n.map(e=>({value:e})),[n]),u=We[i];return e.jsx(Me,{title:"Noise Floor",icon:e.jsx(m,{className:"mini-widget-icon"}),value:null!==s?Math.round(s):"—",unit:null!==s?"dBm":void 0,status:i,trend:c,subtitle:He(s),isLoading:l,error:r,children:e.jsx("div",{className:"mini-widget-sparkline",children:d.length>0?e.jsx(Z,{width:"100%",height:24,children:e.jsx(ee,{data:d,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(te,{type:"monotone",dataKey:"value",stroke:u,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Oe(){const s=d(),n=C(),a=w(),l=L(),r=null===l,i=(null==l?void 0:l.local_hash)?S(l.local_hash):"",o=(null==l?void 0:l.neighbors)??{},{neighborHashes:c,neighborNames:u}=t.useMemo(()=>{const e=new Set,t=new Map;for(const s of n){e.add(s.hash);const n=o[s.hash],a=(null==n?void 0:n.name)||(null==n?void 0:n.node_name)||s.prefix;t.set(s.hash,a)}return{neighborHashes:e,neighborNames:t}},[n,o]),m=t.useMemo(()=>{if(0===c.size||0===a.length||!i)return{champion:null,listener:null,loudest:null};const{scores:e}=oe(a,c,i),t=[];for(const[a,r]of e)0!==r.blendedScore&&t.push({...r,name:u.get(a)??S(a)});let s=null,n=null,l=null;for(const a of t)(!s||a.blendedScore>s.blendedScore)&&(s=a),(!n||a.listenerScore>n.listenerScore)&&(n=a),(!l||a.loudScore>l.loudScore)&&(l=a);return{champion:s,listener:n,loudest:l}},[a,c,i,u]),{champion:g,listener:v,loudest:j}=m,b=g||v||j?e.jsxs("div",{className:"flex flex-col gap-0.5 mt-auto",children:[g&&e.jsx(B,{content:(N=g,e.jsxs("div",{className:"max-w-[220px]",children:[e.jsxs("div",{className:"font-semibold mb-1",children:["🏆 Champion: ",N.name]}),e.jsxs("div",{className:"text-text-muted mb-1",children:["Blended Score: ",N.blendedScore,e.jsx("span",{className:"text-text-muted/60 ml-1",children:"(Listener + Loud)"})]}),e.jsxs("div",{className:"border-t border-border-subtle pt-1 mt-1 space-y-0.5",children:[e.jsxs("div",{children:["Listener: ",N.listenerScore,"/100 (",N.listenerCount," shared paths)"]}),e.jsxs("div",{children:["Loud: ",N.loudScore,"/100 (",N.loudCount," packets relayed)"]})]})]})),children:e.jsxs("div",{className:"flex items-center gap-1 text-sm rounded px-1 -mx-1 hover:bg-white/5 transition-colors cursor-default",children:[e.jsx(h,{className:"w-3 h-3 text-map-neighbor-color flex-shrink-0"}),e.jsx("span",{className:"font-semibold text-map-neighbor-color font-mono truncate flex-1 min-w-0",children:g.name}),e.jsx("span",{className:"text-map-neighbor-color pl-2 tabular-nums flex-shrink-0 w-9 text-right",children:g.blendedScore})]})}),v&&v.hash!==(null==g?void 0:g.hash)&&e.jsx(B,{content:(t=>e.jsxs("div",{className:"max-w-[220px]",children:[e.jsxs("div",{className:"font-semibold mb-1",children:["👂 Best Listener: ",t.name]}),e.jsxs("div",{className:"text-text-muted mb-1",children:["Score: ",t.listenerScore,"/100"]}),e.jsx("div",{className:"border-t border-border-subtle pt-1 mt-1",children:e.jsxs("div",{children:[t.listenerCount," packets where they heard your transmissions"]})})]}))(v),children:e.jsxs("div",{className:"flex items-center gap-1 text-sm rounded px-1 -mx-1 hover:bg-white/5 transition-colors cursor-default",children:[e.jsx(x,{className:"w-3 h-3 text-text-muted flex-shrink-0"}),e.jsx("span",{className:"text-text-muted font-mono truncate flex-1 min-w-0",children:v.name}),e.jsx("span",{className:"text-text-muted pl-2 tabular-nums flex-shrink-0 w-9 text-right",children:v.blendedScore})]})}),j&&j.hash!==(null==g?void 0:g.hash)&&j.hash!==(null==v?void 0:v.hash)&&e.jsx(B,{content:(t=>e.jsxs("div",{className:"max-w-[220px]",children:[e.jsxs("div",{className:"font-semibold mb-1",children:["📢 Loudest: ",t.name]}),e.jsxs("div",{className:"text-text-muted mb-1",children:["Score: ",t.loudScore,"/100"]}),e.jsx("div",{className:"border-t border-border-subtle pt-1 mt-1",children:e.jsxs("div",{children:[t.loudCount," packets they relayed directly to you"]})})]}))(j),children:e.jsxs("div",{className:"flex items-center gap-1 text-sm rounded px-1 -mx-1 hover:bg-white/5 transition-colors cursor-default",children:[e.jsx(p,{className:"w-3 h-3 text-text-muted flex-shrink-0"}),e.jsx("span",{className:"text-text-muted font-mono truncate flex-1 min-w-0",children:j.name}),e.jsx("span",{className:"text-text-muted pl-2 tabular-nums flex-shrink-0 w-9 text-right",children:j.blendedScore})]})})]}):0===n.length?e.jsx("div",{className:"flex items-center justify-center text-sm text-text-muted mt-auto",children:"No direct neighbors"}):e.jsx("div",{className:"flex items-center justify-center text-sm text-text-muted mt-auto",children:"No routing data yet"});var N;return e.jsx(Me,{title:"Link Leaders",icon:e.jsx(f,{className:"mini-widget-icon"}),isLoading:r,onClick:()=>s("/contacts"),children:b})}const Ge={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(){const{lbtStats:s,isLoading:n,error:a}=Ie(),l=s?function(e){const{retryRate:t,channelBusyCount:s,totalPacketsWithLBT:n,avgBackoffMs:a,maxBackoffMs:l}=e;if(0===n)return 0;const r=Math.min(n/10,1),i=Math.log(1+.15*t)/Math.log(16)*40,o=s/n*100,c=Math.min(.5*o,25);let d=0;a>100&&(d=Math.min(8*Math.log10(a/100),15));let u=0;l>500&&a>0&&l>2*a&&(u=Math.min((l-500)/200,5));const m=(i+c+d+u)*r;return Math.min(m,85)}(s):0,r=s?(i=l)<15?"excellent":i<30?"good":i<45?"fair":i<60?"congested":"critical":"unknown";var i;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=Ge[r];return e.jsx(Me,{title:"Collision Risk",icon:e.jsx(g,{className:"mini-widget-icon"}),value:l.toFixed(1),unit:"%",status:r,subtitle:c,isLoading:n,error:a,children:e.jsx("div",{className:"mini-widget-sparkline",children:u.length>0?e.jsx(Z,{width:"100%",height:24,children:e.jsx(ee,{data:u,margin:{top:2,right:2,bottom:2,left:2},children:e.jsx(te,{type:"monotone",dataKey:"value",stroke:m,strokeWidth:1,dot:!1,isAnimationActive:!1})})}):e.jsx("div",{className:"h-full"})})})}function Je(){const[s,n]=t.useState(!1),[a]=t.useState(0),{stats:l,lbtStats:i,isLoading:o}=Ie(),c=t.useMemo(()=>{if(!l)return null;const e=l.airtime_used_ms??0,t=l.max_airtime_ms??1;return{usedMs:e,maxMs:t,remainingMs:l.airtime_remaining_ms??0,utilizationPercent:l.utilization_percent??(t>0?e/t*100:0)}},[l]),d=t.useMemo(()=>{if(!i||0===i.totalPacketsWithLBT)return 100;const e=i.channelBusyCount,t=i.totalPacketsWithLBT;return(t-e)/t*100},[i]),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`:((f=x)<1e3?`${Math.round(f)}ms`:f<6e4?`${(f/1e3).toFixed(1)}s`:`${(f/6e4).toFixed(1)}m`)+" remaining";var f;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(Me,{title:"Duty Cycle",icon:e.jsx(r,{className:"mini-widget-icon"}),value:u.toFixed(1),unit:"%",status:m,subtitle:p,isLoading:o,children:g})}function Ve(){return e.jsxs("div",{className:"mini-widget",children:[e.jsxs("div",{className:"mini-widget-header",children:[e.jsx(W,{className:"w-4 h-4"}),e.jsx(W,{className:"h-3 w-16"})]}),e.jsx(W,{className:"h-7 w-12 mt-2"}),e.jsx(W,{className:"h-3 w-20 mt-2"})]})}function Ue(){return e.jsx("div",{className:"widget-row",children:Array.from({length:6}).map((t,s)=>e.jsx(Ve,{},s))})}function qe({className:t="",isLoaded:s=!0}){return e.jsxs("div",{className:`mesh-health-container relative ${t}`,children:[e.jsxs("div",{className:"mesh-health-header",children:[e.jsx(v,{className:"w-4 h-4 text-accent-primary"}),e.jsx("span",{className:"type-label text-text-muted",children:"MESH HEALTH"})]}),s?e.jsx(Ae,{children:e.jsxs("div",{className:"widget-row",children:[e.jsx($e,{}),e.jsx(Ke,{}),e.jsx(ze,{}),e.jsx(Je,{}),e.jsx(Ee,{}),e.jsx(Oe,{})]})}):e.jsx(Ue,{})]})}function Xe(){var s,a;const l=L(),i=F(),o=w(),c=A(),d=$(),u=E(),[m,h]=t.useState(4),x=P[m],p=null==(s=null==l?void 0:l.config)?void 0:s.radio,f=t.useMemo(()=>p?{sf:p.spreading_factor??10,bw:p.bandwidth??25e4,cr:p.coding_rate??5,preamble:p.preamble_length??8}:null,[p]),g=o.length,v=t.useMemo(()=>g?I(x.minutes,x.buckets,o,l):null,[g,x.minutes,x.buckets,f]),k=t.useMemo(()=>function(e,t){if(!(null==e?void 0:e.length))return[];const s=t>1440?{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}:{hour:"2-digit",minute:"2-digit",hour12:!1};return e.map(e=>({time:new Date(1e3*e.start).toLocaleString([],s),received:e.count}))}(null==v?void 0:v.received,x.minutes),[null==v?void 0:v.received,x.minutes]),M=t.useMemo(()=>function(e){if(!e.length)return[0,"auto"];const t=e.map(e=>e.received),s=Math.min(...t),n=Math.max(...t);if(s===n)return[Math.max(0,s-1),n+1];const a=.1*(n-s);return[Math.max(0,Math.floor(s-a)),Math.ceil(n+a)]}(k),[k]),_=t.useMemo(()=>{return(e=k.length)<=12?0:e<=24?2:e<=48?5:e<=72?8:Math.floor(e/7);var e},[k.length]),S=t.useMemo(()=>{const e=e=>(null==e?void 0:e.reduce((e,t)=>e+t.count,0))??0,t=e(null==v?void 0:v.received),s=e(null==v?void 0:v.forwarded),n=e(null==v?void 0:v.dropped),a=e(null==v?void 0:v.transmitted),l=((null==v?void 0:v.time_range_minutes)??x.minutes)/60;return{received:t,forwarded:s,dropped:n,transmitted:a,rxPerHour:l>0?Math.round(t/l):0,fwdPerHour:l>0?Math.round(s/l):0}},[v,x.minutes]),C=(null==l?void 0:l.uptime_seconds)?D(l.uptime_seconds):"0m",R=(null==l?void 0:l.node_name)??(null==(a=null==l?void 0:l.config)?void 0:a.node_name)??"Unknown Node";return i?e.jsxs(z,{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:i}),e.jsx("p",{className:"type-data-sm text-white/40 mt-4",children:"Make sure the backend is running on port 8000"})]}):e.jsxs(O,{children:[e.jsx(G,{title:R,icon:e.jsx(j,{}),controls:e.jsx(X,{ranges:P,selectedIndex:m,onSelect:h})}),e.jsx(ce,{template:"hero",children:e.jsx(z,{isLoaded:c,skeletonType:"chart",children:c&&e.jsxs(e.Fragment,{children:[e.jsx(K,{icon:e.jsx(n,{}),title:"RECEIVED",badge:x.label,iconColor:"text-accent-success"}),e.jsx("div",{className:"type-hero font-semibold min-h-[3rem]",style:{color:d.received},children:S.received.toLocaleString()}),e.jsxs("div",{className:"type-body-sm text-text-secondary mt-1",children:[S.rxPerHour,"/hr rate"]}),e.jsx("div",{className:"mt-4",children:k.length>0?e.jsx(Z,{width:"100%",height:180,children:e.jsxs(se,{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:d.received,stopOpacity:.3}),e.jsx("stop",{offset:"95%",stopColor:d.received,stopOpacity:0})]})}),e.jsx(ne,{strokeDasharray:"3 3",stroke:u.grid,vertical:!1}),e.jsx(ae,{dataKey:"time",axisLine:!1,tickLine:!1,tick:{fill:u.axisTick,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dy:8,interval:_,minTickGap:20}),e.jsx(le,{domain:M,axisLine:!1,tickLine:!1,tick:{fill:u.axisTick,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dx:-8,width:40}),e.jsx(re,{content:e.jsx(be,{color:d.received,labelKey:"time",unit:" packets"}),cursor:{stroke:u.cursor,strokeWidth:1}}),e.jsx(ie,{type:"stepAfter",dataKey:"received",stroke:d.received,fill:"url(#gradient-received)",strokeWidth:1,dot:!1,activeDot:{r:4,strokeWidth:0,fill:d.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(ce,{template:"compact",children:[e.jsx(he,{title:"FORWARDED",value:S.forwarded,subtitle:`${S.fwdPerHour}/hr rate`,color:"forwarded",buckets:null==v?void 0:v.forwarded,timeRangeLabel:x.label,icon:e.jsx(b,{className:"w-4 h-4"}),isLoaded:c}),e.jsx(he,{title:"DROPPED",value:S.dropped,subtitle:"Filtered or duplicate",color:"dropped",buckets:null==v?void 0:v.dropped,timeRangeLabel:x.label,icon:e.jsx(N,{className:"w-4 h-4"}),isLoaded:c}),e.jsx(ge,{stats:l,receivedBuckets:null==v?void 0:v.received,droppedBuckets:null==v?void 0:v.dropped,forwardedBuckets:null==v?void 0:v.forwarded,bucketDurationSeconds:null==v?void 0:v.bucket_duration_seconds,timeRangeLabel:x.label,isLoaded:c}),e.jsx(he,{title:"UPTIME",value:C,subtitle:"Since last restart",color:"neutral",icon:e.jsx(y,{className:"w-4 h-4"}),isLoaded:c})]}),e.jsx(qe,{isLoaded:c}),e.jsx(je,{}),l&&e.jsx(ce,{template:"auto",children:e.jsxs(z,{children:[e.jsx(K,{icon:e.jsx(r,{}),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:R})]}),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",l.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",l.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:l.local_hash?e.jsx(Q,{hash:l.local_hash,size:"sm"}):e.jsx("span",{className:"type-data-sm text-text-muted",children:"N/A"})})]})]}),l.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(Q,{hash:l.public_key,prefixLength:12,suffixLength:8})})]})]})})]})}export{Xe as default}; diff --git a/frontend/dist/assets/Grid-CpI-_Yqf.js b/frontend/dist/assets/Grid-CIZAny_R.js similarity index 90% rename from frontend/dist/assets/Grid-CpI-_Yqf.js rename to frontend/dist/assets/Grid-CIZAny_R.js index 912a7b7b..64e236a4 100644 --- a/frontend/dist/assets/Grid-CpI-_Yqf.js +++ b/frontend/dist/assets/Grid-CIZAny_R.js @@ -1 +1 @@ -import{r as o,j as e}from"./vendor-react-ClShp8p7.js";import{c as t}from"./recharts-BjCld2b0.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-O8XH9yVn.js";import{c as t}from"./recharts-BU7auunF.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-BiZRDKRx.js b/frontend/dist/assets/HashBadge-aS_UIcg2.js similarity index 94% rename from frontend/dist/assets/HashBadge-BiZRDKRx.js rename to frontend/dist/assets/HashBadge-aS_UIcg2.js index 495cba8f..f7d2cffb 100644 --- a/frontend/dist/assets/HashBadge-BiZRDKRx.js +++ b/frontend/dist/assets/HashBadge-aS_UIcg2.js @@ -1 +1 @@ -import{r as e,j as t,aa as o,$ as n}from"./vendor-react-ClShp8p7.js";import{c as s}from"./recharts-BjCld2b0.js";const a={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"},r={xs:"w-2 h-2",sm:"w-2.5 h-2.5",md:"w-3 h-3"};function c({hash:c,copyValue:i,prefixLength:l=8,suffixLength:p=6,full:u=!1,className:d,size:x="md"}){const[h,m]=e.useState(!1),[w,f]=e.useState(!1),y=e.useRef(null),b=i??c,g=r[x],v=u||c.length<=l+p+3?c:`${c.slice(0,l)}…${c.slice(-p)}`,j=e.useCallback(e=>{e.preventDefault(),e.stopPropagation(),y.current&&clearTimeout(y.current),function(e){var t;if("undefined"!=typeof window&&(window.isSecureContext||"https:"===window.location.protocol||"localhost"===window.location.hostname)&&(null==(t=navigator.clipboard)?void 0:t.writeText))return navigator.clipboard.writeText(e).catch(()=>{}),!0;try{const{scrollX:t,scrollY:o}=window,n=document.createElement("textarea");n.value=e,n.style.cssText="position:fixed;left:-9999px;top:-9999px;opacity:0;pointer-events: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(o){return!1}}(b),m(!0),y.current=setTimeout(()=>m(!1),2e3)},[b]);return t.jsxs("button",{type:"button",onClick:j,onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!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",a[x],d),title:`Click to copy: ${b}`,"aria-label":`Copy hash ${b}`,children:[t.jsx("span",{className:s("transition-colors duration-200",h?"text-accent-success":"text-text-secondary"),children:v}),t.jsx("span",{className:s("flex items-center justify-center transition-all duration-200","xs"===x?"w-2.5 h-2.5":"sm"===x?"w-3 h-3":"w-3.5 h-3.5"),children:h?t.jsx(o,{className:s("text-accent-success",g)}):t.jsx(n,{className:s("transition-opacity duration-200",w?"opacity-70":"opacity-40",g)})})]})}export{c as H}; +import{r as e,j as t,aa as o,$ as n}from"./vendor-react-O8XH9yVn.js";import{c as s}from"./recharts-BU7auunF.js";const a={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"},r={xs:"w-2 h-2",sm:"w-2.5 h-2.5",md:"w-3 h-3"};function c({hash:c,copyValue:i,prefixLength:l=8,suffixLength:p=6,full:u=!1,className:d,size:x="md"}){const[h,m]=e.useState(!1),[w,f]=e.useState(!1),y=e.useRef(null),b=i??c,g=r[x],v=u||c.length<=l+p+3?c:`${c.slice(0,l)}…${c.slice(-p)}`,j=e.useCallback(e=>{e.preventDefault(),e.stopPropagation(),y.current&&clearTimeout(y.current),function(e){var t;if("undefined"!=typeof window&&(window.isSecureContext||"https:"===window.location.protocol||"localhost"===window.location.hostname)&&(null==(t=navigator.clipboard)?void 0:t.writeText))return navigator.clipboard.writeText(e).catch(()=>{}),!0;try{const{scrollX:t,scrollY:o}=window,n=document.createElement("textarea");n.value=e,n.style.cssText="position:fixed;left:-9999px;top:-9999px;opacity:0;pointer-events: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(o){return!1}}(b),m(!0),y.current=setTimeout(()=>m(!1),2e3)},[b]);return t.jsxs("button",{type:"button",onClick:j,onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!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",a[x],d),title:`Click to copy: ${b}`,"aria-label":`Copy hash ${b}`,children:[t.jsx("span",{className:s("transition-colors duration-200",h?"text-accent-success":"text-text-secondary"),children:v}),t.jsx("span",{className:s("flex items-center justify-center transition-all duration-200","xs"===x?"w-2.5 h-2.5":"sm"===x?"w-3 h-3":"w-3.5 h-3.5"),children:h?t.jsx(o,{className:s("text-accent-success",g)}):t.jsx(n,{className:s("transition-opacity duration-200",w?"opacity-70":"opacity-40",g)})})]})}export{c as H}; diff --git a/frontend/dist/assets/Login-_qpV4GUm.js b/frontend/dist/assets/Login-BF2bENkR.js similarity index 98% rename from frontend/dist/assets/Login-_qpV4GUm.js rename to frontend/dist/assets/Login-BF2bENkR.js index f98f6112..11b5418d 100644 --- a/frontend/dist/assets/Login-_qpV4GUm.js +++ b/frontend/dist/assets/Login-BF2bENkR.js @@ -1 +1 @@ -import{r as e,j as s,x as t}from"./vendor-react-ClShp8p7.js";import{g as r,i as a,P as n,s as l,l as o}from"./index-DY0XR9s0.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";import"./recharts-BjCld2b0.js";const i=e.memo(function({width:e,height:t,className:r="",fill:a="currentColor"}){return s.jsxs("svg",{viewBox:"0 0 134 15",width:e,height:t,className:r,role:"img","aria-label":"MeshCore",style:{fillRule:"evenodd",clipRule:"evenodd"},children:[s.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"}),s.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"}),s.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"}),s.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"}),s.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"}),s.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"}),s.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"}),s.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"})]})}),c="/assets/WCM_Waves-RN-_ocPH.gif",d="#9cf15b";function m(){const m=t(),[x,p]=e.useState("admin"),[h,u]=e.useState(""),[f,C]=e.useState(()=>r()),[b,g]=e.useState(!1),[j,L]=e.useState(null);e.useEffect(()=>{a()&&m("/",{replace:!0})},[m]);const y=async e=>{e.preventDefault(),g(!0),L(null);const s=await o(x,h,f);g(!1),s.success?window.location.href="/":L(s.error||"Login failed")};return s.jsxs("div",{className:"min-h-screen min-h-[100dvh] flex flex-col bg-black",children:[s.jsx("div",{className:"fixed inset-0 -z-20 bg-cover bg-center bg-no-repeat",style:{backgroundImage:"url(/assets/water.webp)"},"aria-hidden":"true"}),s.jsx("div",{className:"fixed inset-0 -z-10 bg-black/40 pointer-events-none","aria-hidden":"true"}),s.jsx("div",{className:"fixed inset-0 bg-gradient-to-br from-[#9cf15b]/5 via-transparent to-[#9cf15b]/3 pointer-events-none z-0"}),s.jsx("div",{className:"flex-1 flex items-center justify-center px-4 py-6 sm:px-6 sm:py-8",children:s.jsxs("div",{className:"w-full max-w-sm sm:max-w-md",children:[s.jsxs("div",{className:"text-center mb-6 sm:mb-8",children:[s.jsx("h1",{className:"sr-only",children:"pyMC Console"}),s.jsx(n,{height:28,className:"mx-auto mb-2 sm:mb-3 sm:h-8"}),s.jsxs("p",{className:"font-mono text-text-muted text-xs sm:text-sm flex items-center justify-center gap-1.5 sm:gap-2",children:[s.jsx(i,{height:10,fill:"#6B7280",className:"sm:h-3"}),s.jsx("span",{children:"Network Management"})]})]}),s.jsxs("div",{className:"glass-card p-5 sm:p-8 rounded-xl sm:rounded-2xl border border-border-subtle bg-bg-surface/80 backdrop-blur-xl shadow-2xl",children:[s.jsxs("div",{className:"text-center mb-5 sm:mb-6",children:[s.jsx("div",{className:"inline-flex items-center justify-center w-12 h-12 sm:w-16 sm:h-16 rounded-full bg-accent-primary/10 mb-3 sm:mb-4",children:s.jsx("svg",{className:"w-6 h-6 sm:w-8 sm:h-8 text-accent-primary",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:s.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"})})}),s.jsx("h2",{className:"font-display text-lg sm:text-xl font-semibold text-text-primary",children:"Authentication Required"}),s.jsx("p",{className:"font-mono text-text-muted text-xs sm:text-sm mt-1",children:"Sign in to access the console"})]}),s.jsxs("form",{onSubmit:y,className:"space-y-4 sm:space-y-5",children:[s.jsxs("div",{children:[s.jsx("label",{htmlFor:"username",className:"block font-display text-sm font-medium text-text-secondary mb-1.5 sm:mb-2",children:"Username"}),s.jsx("input",{id:"username",type:"text",value:x,onChange:e=>{p(e.target.value),j&&L(null)},className:"w-full px-3 sm:px-4 py-2.5 sm:py-3 rounded-lg bg-bg-elevated border border-border-subtle \n font-mono text-sm sm:text-base 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})]}),s.jsxs("div",{children:[s.jsx("label",{htmlFor:"password",className:"block font-display text-sm font-medium text-text-secondary mb-1.5 sm:mb-2",children:"Password"}),s.jsx("input",{id:"password",type:"password",value:h,onChange:e=>{u(e.target.value),j&&L(null)},onKeyDown:e=>{"Enter"===e.key&&x&&h&&!b&&(e.preventDefault(),y(e))},className:"w-full px-3 sm:px-4 py-2.5 sm:py-3 rounded-lg bg-bg-elevated border border-border-subtle \n font-mono text-sm sm:text-base 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})]}),s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsx("input",{id:"remember-me",type:"checkbox",checked:f,onChange:e=>{return s=e.target.checked,C(s),void l(s);var s},className:"w-4 h-4 mt-0.5 rounded border-border-subtle bg-bg-elevated text-accent-primary \n focus:ring-2 focus:ring-accent-primary/50 focus:ring-offset-0\n cursor-pointer transition-colors"}),s.jsxs("div",{children:[s.jsx("label",{htmlFor:"remember-me",className:"text-sm text-text-secondary cursor-pointer select-none",children:"Keep me signed in"}),s.jsx("p",{className:"text-xs text-text-muted mt-0.5",children:"Stay logged in after closing browser"})]})]}),j&&s.jsx("div",{className:"p-2.5 sm:p-3 rounded-lg bg-accent-danger/10 border border-accent-danger/30",children:s.jsxs("p",{className:"font-mono text-xs sm:text-sm text-accent-danger flex items-center gap-2",children:[s.jsx("svg",{className:"w-4 h-4 flex-shrink-0",fill:"currentColor",viewBox:"0 0 20 20",children:s.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"})}),j]})}),s.jsx("button",{type:"submit",disabled:b||!x||!h,className:"w-full py-2.5 sm:py-3 px-4 rounded-lg font-display font-semibold text-sm sm:text-base 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:b?s.jsxs("span",{className:"flex items-center justify-center gap-2",children:[s.jsxs("svg",{className:"animate-spin h-4 w-4 sm:h-5 sm:w-5",viewBox:"0 0 24 24",children:[s.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4",fill:"none"}),s.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"})]})]}),s.jsx("div",{className:"mt-5 sm:mt-8 text-center",children:s.jsxs("p",{className:"font-mono text-xs sm:text-sm text-text-muted",children:["A ",s.jsx("span",{style:{color:d},children:"@RightUp"})," X ",s.jsx("span",{style:{color:d},children:"@Treehouse⚡"})," Collab"]})})]})}),s.jsx("footer",{className:"py-4 sm:py-6 md:py-8 px-4",children:s.jsxs("div",{className:"max-w-sm sm:max-w-md mx-auto",children:[s.jsx("p",{className:"font-mono text-[10px] sm:text-xs text-text-muted text-center mb-2 sm:mb-3 uppercase tracking-wider",children:"Powered By"}),s.jsxs("div",{className:"glass-card p-3 sm:p-4 rounded-lg sm:rounded-xl border border-border-subtle bg-bg-surface/60 backdrop-blur-xl",children:[s.jsxs("div",{className:"hidden sm:flex items-center justify-center gap-4 sm:gap-6",children:[s.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:s.jsxs("span",{className:"font-display font-bold text-base sm:text-lg tracking-tight",children:[s.jsx("span",{style:{color:d},children:"py"}),s.jsx("span",{className:"text-text-primary",children:"MC"})]})}),s.jsx("span",{className:"text-border-subtle",children:"•"}),s.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:s.jsx(i,{height:12,className:"text-text-primary sm:h-3.5"})}),s.jsx("span",{className:"text-border-subtle",children:"•"}),s.jsxs("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 sm:gap-2 hover:opacity-80 transition-opacity group",title:"West Coast Mesh",children:[s.jsx("div",{className:"w-7 h-7 sm:w-9 sm:h-9 rounded-md sm:rounded-lg overflow-hidden border border-white/10 group-hover:border-white/20 transition-all",children:s.jsx("img",{src:c,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),s.jsx("span",{className:"font-display font-bold text-base sm:text-lg tracking-tight text-text-primary",children:"WCM"})]})]}),s.jsxs("div",{className:"flex sm:hidden items-center justify-center gap-3",children:[s.jsx("a",{href:"https://github.com/rightup/pyMC_Repeater",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center hover:opacity-80 transition-opacity",title:"pyMC Repeater",children:s.jsxs("span",{className:"font-display font-bold text-sm tracking-tight",children:[s.jsx("span",{style:{color:d},children:"py"}),s.jsx("span",{className:"text-text-primary",children:"MC"})]})}),s.jsx("span",{className:"text-border-subtle text-xs",children:"•"}),s.jsx("a",{href:"https://meshcore.co.uk",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center hover:opacity-80 transition-opacity",title:"MeshCore",children:s.jsx(i,{height:10,className:"text-text-primary"})}),s.jsx("span",{className:"text-border-subtle text-xs",children:"•"}),s.jsxs("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 hover:opacity-80 transition-opacity",title:"West Coast Mesh",children:[s.jsx("div",{className:"w-6 h-6 rounded overflow-hidden border border-white/10",children:s.jsx("img",{src:c,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),s.jsx("span",{className:"font-display font-bold text-sm tracking-tight text-text-primary",children:"WCM"})]})]})]})]})})]})}export{m as default}; +import{r as e,j as s,x as t}from"./vendor-react-O8XH9yVn.js";import{g as r,i as a,P as n,s as l,l as o}from"./index-Dp0UlTio.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";import"./recharts-BU7auunF.js";const i=e.memo(function({width:e,height:t,className:r="",fill:a="currentColor"}){return s.jsxs("svg",{viewBox:"0 0 134 15",width:e,height:t,className:r,role:"img","aria-label":"MeshCore",style:{fillRule:"evenodd",clipRule:"evenodd"},children:[s.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"}),s.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"}),s.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"}),s.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"}),s.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"}),s.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"}),s.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"}),s.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"})]})}),c="/assets/WCM_Waves-RN-_ocPH.gif",d="#9cf15b";function m(){const m=t(),[x,p]=e.useState("admin"),[h,u]=e.useState(""),[f,C]=e.useState(()=>r()),[b,g]=e.useState(!1),[j,L]=e.useState(null);e.useEffect(()=>{a()&&m("/",{replace:!0})},[m]);const y=async e=>{e.preventDefault(),g(!0),L(null);const s=await o(x,h,f);g(!1),s.success?window.location.href="/":L(s.error||"Login failed")};return s.jsxs("div",{className:"min-h-screen min-h-[100dvh] flex flex-col bg-black",children:[s.jsx("div",{className:"fixed inset-0 -z-20 bg-cover bg-center bg-no-repeat",style:{backgroundImage:"url(/assets/water.webp)"},"aria-hidden":"true"}),s.jsx("div",{className:"fixed inset-0 -z-10 bg-black/40 pointer-events-none","aria-hidden":"true"}),s.jsx("div",{className:"fixed inset-0 bg-gradient-to-br from-[#9cf15b]/5 via-transparent to-[#9cf15b]/3 pointer-events-none z-0"}),s.jsx("div",{className:"flex-1 flex items-center justify-center px-4 py-6 sm:px-6 sm:py-8",children:s.jsxs("div",{className:"w-full max-w-sm sm:max-w-md",children:[s.jsxs("div",{className:"text-center mb-6 sm:mb-8",children:[s.jsx("h1",{className:"sr-only",children:"pyMC Console"}),s.jsx(n,{height:28,className:"mx-auto mb-2 sm:mb-3 sm:h-8"}),s.jsxs("p",{className:"font-mono text-text-muted text-xs sm:text-sm flex items-center justify-center gap-1.5 sm:gap-2",children:[s.jsx(i,{height:10,fill:"#6B7280",className:"sm:h-3"}),s.jsx("span",{children:"Network Management"})]})]}),s.jsxs("div",{className:"glass-card p-5 sm:p-8 rounded-xl sm:rounded-2xl border border-border-subtle bg-bg-surface/80 backdrop-blur-xl shadow-2xl",children:[s.jsxs("div",{className:"text-center mb-5 sm:mb-6",children:[s.jsx("div",{className:"inline-flex items-center justify-center w-12 h-12 sm:w-16 sm:h-16 rounded-full bg-accent-primary/10 mb-3 sm:mb-4",children:s.jsx("svg",{className:"w-6 h-6 sm:w-8 sm:h-8 text-accent-primary",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:s.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"})})}),s.jsx("h2",{className:"font-display text-lg sm:text-xl font-semibold text-text-primary",children:"Authentication Required"}),s.jsx("p",{className:"font-mono text-text-muted text-xs sm:text-sm mt-1",children:"Sign in to access the console"})]}),s.jsxs("form",{onSubmit:y,className:"space-y-4 sm:space-y-5",children:[s.jsxs("div",{children:[s.jsx("label",{htmlFor:"username",className:"block font-display text-sm font-medium text-text-secondary mb-1.5 sm:mb-2",children:"Username"}),s.jsx("input",{id:"username",type:"text",value:x,onChange:e=>{p(e.target.value),j&&L(null)},className:"w-full px-3 sm:px-4 py-2.5 sm:py-3 rounded-lg bg-bg-elevated border border-border-subtle \n font-mono text-sm sm:text-base 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})]}),s.jsxs("div",{children:[s.jsx("label",{htmlFor:"password",className:"block font-display text-sm font-medium text-text-secondary mb-1.5 sm:mb-2",children:"Password"}),s.jsx("input",{id:"password",type:"password",value:h,onChange:e=>{u(e.target.value),j&&L(null)},onKeyDown:e=>{"Enter"===e.key&&x&&h&&!b&&(e.preventDefault(),y(e))},className:"w-full px-3 sm:px-4 py-2.5 sm:py-3 rounded-lg bg-bg-elevated border border-border-subtle \n font-mono text-sm sm:text-base 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})]}),s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsx("input",{id:"remember-me",type:"checkbox",checked:f,onChange:e=>{return s=e.target.checked,C(s),void l(s);var s},className:"w-4 h-4 mt-0.5 rounded border-border-subtle bg-bg-elevated text-accent-primary \n focus:ring-2 focus:ring-accent-primary/50 focus:ring-offset-0\n cursor-pointer transition-colors"}),s.jsxs("div",{children:[s.jsx("label",{htmlFor:"remember-me",className:"text-sm text-text-secondary cursor-pointer select-none",children:"Keep me signed in"}),s.jsx("p",{className:"text-xs text-text-muted mt-0.5",children:"Stay logged in after closing browser"})]})]}),j&&s.jsx("div",{className:"p-2.5 sm:p-3 rounded-lg bg-accent-danger/10 border border-accent-danger/30",children:s.jsxs("p",{className:"font-mono text-xs sm:text-sm text-accent-danger flex items-center gap-2",children:[s.jsx("svg",{className:"w-4 h-4 flex-shrink-0",fill:"currentColor",viewBox:"0 0 20 20",children:s.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"})}),j]})}),s.jsx("button",{type:"submit",disabled:b||!x||!h,className:"w-full py-2.5 sm:py-3 px-4 rounded-lg font-display font-semibold text-sm sm:text-base 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:b?s.jsxs("span",{className:"flex items-center justify-center gap-2",children:[s.jsxs("svg",{className:"animate-spin h-4 w-4 sm:h-5 sm:w-5",viewBox:"0 0 24 24",children:[s.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4",fill:"none"}),s.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"})]})]}),s.jsx("div",{className:"mt-5 sm:mt-8 text-center",children:s.jsxs("p",{className:"font-mono text-xs sm:text-sm text-text-muted",children:["A ",s.jsx("span",{style:{color:d},children:"@RightUp"})," X ",s.jsx("span",{style:{color:d},children:"@Treehouse⚡"})," Collab"]})})]})}),s.jsx("footer",{className:"py-4 sm:py-6 md:py-8 px-4",children:s.jsxs("div",{className:"max-w-sm sm:max-w-md mx-auto",children:[s.jsx("p",{className:"font-mono text-[10px] sm:text-xs text-text-muted text-center mb-2 sm:mb-3 uppercase tracking-wider",children:"Powered By"}),s.jsxs("div",{className:"glass-card p-3 sm:p-4 rounded-lg sm:rounded-xl border border-border-subtle bg-bg-surface/60 backdrop-blur-xl",children:[s.jsxs("div",{className:"hidden sm:flex items-center justify-center gap-4 sm:gap-6",children:[s.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:s.jsxs("span",{className:"font-display font-bold text-base sm:text-lg tracking-tight",children:[s.jsx("span",{style:{color:d},children:"py"}),s.jsx("span",{className:"text-text-primary",children:"MC"})]})}),s.jsx("span",{className:"text-border-subtle",children:"•"}),s.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:s.jsx(i,{height:12,className:"text-text-primary sm:h-3.5"})}),s.jsx("span",{className:"text-border-subtle",children:"•"}),s.jsxs("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 sm:gap-2 hover:opacity-80 transition-opacity group",title:"West Coast Mesh",children:[s.jsx("div",{className:"w-7 h-7 sm:w-9 sm:h-9 rounded-md sm:rounded-lg overflow-hidden border border-white/10 group-hover:border-white/20 transition-all",children:s.jsx("img",{src:c,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),s.jsx("span",{className:"font-display font-bold text-base sm:text-lg tracking-tight text-text-primary",children:"WCM"})]})]}),s.jsxs("div",{className:"flex sm:hidden items-center justify-center gap-3",children:[s.jsx("a",{href:"https://github.com/rightup/pyMC_Repeater",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center hover:opacity-80 transition-opacity",title:"pyMC Repeater",children:s.jsxs("span",{className:"font-display font-bold text-sm tracking-tight",children:[s.jsx("span",{style:{color:d},children:"py"}),s.jsx("span",{className:"text-text-primary",children:"MC"})]})}),s.jsx("span",{className:"text-border-subtle text-xs",children:"•"}),s.jsx("a",{href:"https://meshcore.co.uk",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center hover:opacity-80 transition-opacity",title:"MeshCore",children:s.jsx(i,{height:10,className:"text-text-primary"})}),s.jsx("span",{className:"text-border-subtle text-xs",children:"•"}),s.jsxs("a",{href:"https://wcmesh.com",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 hover:opacity-80 transition-opacity",title:"West Coast Mesh",children:[s.jsx("div",{className:"w-6 h-6 rounded overflow-hidden border border-white/10",children:s.jsx("img",{src:c,alt:"West Coast Mesh",className:"w-full h-full object-cover"})}),s.jsx("span",{className:"font-display font-bold text-sm tracking-tight text-text-primary",children:"WCM"})]})]})]})]})})]})}export{m as default}; diff --git a/frontend/dist/assets/Logs-sry4OZK_.js b/frontend/dist/assets/Logs-l6s0ar29.js similarity index 90% rename from frontend/dist/assets/Logs-sry4OZK_.js rename to frontend/dist/assets/Logs-l6s0ar29.js index f28e64b3..9dfd44e7 100644 --- a/frontend/dist/assets/Logs-sry4OZK_.js +++ b/frontend/dist/assets/Logs-l6s0ar29.js @@ -1 +1 @@ -import{j as e,D as s,a2 as t,F as a,r as l,aP as c,at as n,aW as i}from"./vendor-react-ClShp8p7.js";import{c as r}from"./recharts-BjCld2b0.js";import{a3 as o,a4 as x,b as m,a5 as d,p as u,a2 as p,a6 as h,a7 as j}from"./index-DY0XR9s0.js";import{u as g}from"./usePolling-CQUaWSqs.js";import{P as N,b as f,a as v,c as b,L as y}from"./PageLayout-CQDLcONp.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";const w=l.memo(function({log:s}){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:r("type-data-sm w-14 shrink-0",j(s.level)),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=o(),[t,a]=l.useState("INFO"),[x,m]=l.useState(!1),[d,u]=l.useState(null);l.useEffect(()=>{if(s.length>0){const e=s.some(e=>"DEBUG"===e.level);a(e?"DEBUG":"INFO")}},[s]);const p=l.useCallback(async e=>{if(e!==t&&!x){m(!0),u(null);try{const s=await h(e);s.success&&s.data?(a(e),u(s.data.message),setTimeout(()=>u(null),5e3)):(u(s.error??"Failed to change log level"),setTimeout(()=>u(null),3e3))}catch{u("Failed to change log level"),setTimeout(()=>u(null),3e3)}finally{m(!1)}}},[t,x]),j="h-[32px] px-4 rounded-full type-data flex items-center gap-2 transition-colors",g=x&&"opacity-50 cursor-not-allowed";return e.jsxs("div",{className:"flex items-center gap-2",children:[d&&e.jsx("span",{className:"text-xs text-text-muted animate-pulse",children:d}),e.jsxs("div",{className:"flex bg-white/[0.02] rounded-full p-1",children:[e.jsxs("button",{onClick:()=>p("INFO"),disabled:x,className:r(j,"INFO"===t?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary",g),children:[e.jsx(c,{className:"w-4 h-4"}),"Info"]}),e.jsxs("button",{onClick:()=>p("DEBUG"),disabled:x,className:r(j,"DEBUG"===t?"bg-amber-500/20 text-amber-400":"text-text-muted hover:text-text-secondary",g),children:[x?e.jsx(n,{className:"w-4 h-4 animate-spin"}):e.jsx(i,{className:"w-4 h-4"}),"Debug"]})]})]})}function k(){const l=o(),c=x(),n=m(),i=d(),h=u();return g(i,p.logs,n),e.jsxs(N,{children:[e.jsx(f,{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:()=>h(!n),className:r("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:r("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(b,{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(y,{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}; +import{j as e,D as s,a2 as t,F as a,r as l,aP as c,at as n,aW as i}from"./vendor-react-O8XH9yVn.js";import{c as r}from"./recharts-BU7auunF.js";import{a3 as o,a4 as x,b as m,a5 as d,p as u,a2 as p,a6 as h,a7 as j}from"./index-Dp0UlTio.js";import{u as g}from"./usePolling-UdPi_fKb.js";import{P as N,b as f,a as v,c as b,L as y}from"./PageLayout-DE5PEtD2.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";const w=l.memo(function({log:s}){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:r("type-data-sm w-14 shrink-0",j(s.level)),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=o(),[t,a]=l.useState("INFO"),[x,m]=l.useState(!1),[d,u]=l.useState(null);l.useEffect(()=>{if(s.length>0){const e=s.some(e=>"DEBUG"===e.level);a(e?"DEBUG":"INFO")}},[s]);const p=l.useCallback(async e=>{if(e!==t&&!x){m(!0),u(null);try{const s=await h(e);s.success&&s.data?(a(e),u(s.data.message),setTimeout(()=>u(null),5e3)):(u(s.error??"Failed to change log level"),setTimeout(()=>u(null),3e3))}catch{u("Failed to change log level"),setTimeout(()=>u(null),3e3)}finally{m(!1)}}},[t,x]),j="h-[32px] px-4 rounded-full type-data flex items-center gap-2 transition-colors",g=x&&"opacity-50 cursor-not-allowed";return e.jsxs("div",{className:"flex items-center gap-2",children:[d&&e.jsx("span",{className:"text-xs text-text-muted animate-pulse",children:d}),e.jsxs("div",{className:"flex bg-white/[0.02] rounded-full p-1",children:[e.jsxs("button",{onClick:()=>p("INFO"),disabled:x,className:r(j,"INFO"===t?"bg-accent-primary/20 text-accent-primary":"text-text-muted hover:text-text-secondary",g),children:[e.jsx(c,{className:"w-4 h-4"}),"Info"]}),e.jsxs("button",{onClick:()=>p("DEBUG"),disabled:x,className:r(j,"DEBUG"===t?"bg-amber-500/20 text-amber-400":"text-text-muted hover:text-text-secondary",g),children:[x?e.jsx(n,{className:"w-4 h-4 animate-spin"}):e.jsx(i,{className:"w-4 h-4"}),"Debug"]})]})]})}function k(){const l=o(),c=x(),n=m(),i=d(),h=u();return g(i,p.logs,n),e.jsxs(N,{children:[e.jsx(f,{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:()=>h(!n),className:r("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:r("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(b,{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(y,{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/PacketDetailModal-DuWvKGFM.js b/frontend/dist/assets/PacketDetailModal-CR1FHEH5.js similarity index 98% rename from frontend/dist/assets/PacketDetailModal-DuWvKGFM.js rename to frontend/dist/assets/PacketDetailModal-CR1FHEH5.js index 70045588..3537364e 100644 --- a/frontend/dist/assets/PacketDetailModal-DuWvKGFM.js +++ b/frontend/dist/assets/PacketDetailModal-CR1FHEH5.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PathMapMapLibre-C_YZ_YE8.js","assets/vendor-react-ClShp8p7.js","assets/vendor-core-WoOfkQwm.js","assets/maplibre-gl-B1CfjdFi.css"])))=>i.map(i=>d[i]); -import{r as e,_ as t,a3 as s,E as a,a4 as n,j as r,a5 as o,a6 as c,a7 as i,b as l,X as d,h as x,a8 as h,k as u,a9 as p,aa as m,$ as f}from"./vendor-react-ClShp8p7.js";import{c as b}from"./recharts-BjCld2b0.js";import{q as g,R as j,r as y,t as v,v as N,e as w,d as _,w as k,x as M,y as C,z as P}from"./index-DY0XR9s0.js";import{S as T,g as S}from"./SignalIndicator-Dag5FlAv.js";import{H as D}from"./HashBadge-BiZRDKRx.js";import{_ as E}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}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"}},U={sm:"w-3.5 h-3.5",md:"w-4 h-4"};function H(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=e.memo(function({packet:e,showLabel:t=!0,size:s="sm"}){const a=H(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(U[s],n.color)}),t&&r.jsx("span",{className:b("text-[10px] font-semibold tracking-wide",n.color),children:n.label})]})});function $(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 I(e){return z[H(e)].color}function q(e){return{payloadType:e.payload_type_name||L(e.payload_type??e.type),routeType:e.route_type_name||F(e.route_type??e.route)}}function X({packet:e,onClick:t,isFlashing:s=!1}){const{payloadType:a,routeType:n}=q(e);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(V,{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(D,{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",children:r.jsx("div",{className:"flex justify-end",children:r.jsx(T,{rssi:e.rssi,snr:e.snr,compact:!0,showValues:!0})})})]})}const G=e.memo(function(e){return r.jsx(X,{...e})}),W=e.memo(function({packet:e,onClick:t,isFlashing:s=!1}){const{payloadType:a,routeType:n}=q(e);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(V,{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(D,{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-12 flex-shrink-0 flex justify-end",children:r.jsx(T,{rssi:e.rssi,compact:!0,showValues:!0})})]})})});function K(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 Q=e.lazy(()=>E(()=>import("./PathMapMapLibre-C_YZ_YE8.js"),__vite__mapDeps([0,1,2,3])));function B(e){return`${(100*e).toFixed(0)}%`}function Y(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 J 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 Z({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))K(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:B(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(J,{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(Q,{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:Y(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 ee(e){if(!e)return[];if(Array.isArray(e))return e;try{const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function te({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 se({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 ae({originalPath:e,forwardedPath:t,ghostPrefixes:s}){const n=t.length>0?t:e;if(0===n.length)return r.jsx("span",{className:"text-xs text-text-muted",children:"No path data"});const o=e=>null==s?void 0:s.has(e.toUpperCase());return r.jsx("div",{className:"flex items-center gap-1 flex-wrap",children:n.map((e,t)=>r.jsxs("div",{className:"flex items-center gap-1",children:[o(e)?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(D,{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(),E=e.useMemo(()=>new Set(w.map(e=>e.prefix.toUpperCase())),[w]),R=t.payload_type_name||L(t.payload_type??t.type),z=t.route_type_name||F(t.route_type??t.route),U=t.payload_length??t.length??0,H=t.tx_delay_ms??0,q=ee(t.original_path),X=ee(t.forwarded_path),G=q.length>0||X.length>0,W=X.length>0?X: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,Y=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),J=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(V,{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(te,{label:"Packet Hash",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(D,{hash:t.packet_hash,size:"sm"}),r.jsx(se,{onClick:()=>re(t.packet_hash,"hash"),copied:"hash"===g})]})}),r.jsx(te,{label:"Route",children:r.jsx("span",{className:b("px-2 py-0.5 rounded text-xs border font-medium",O(z)),children:z})})]}),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:S(t.rssi)})]}),r.jsx(T,{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(te,{label:"Source",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(D,{hash:t.src_hash,size:"sm"}),r.jsx(se,{onClick:()=>re(t.src_hash,"src"),copied:"src"===g})]})}),t.dst_hash&&r.jsx(te,{label:"Destination",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(D,{hash:t.dst_hash,size:"sm"}),r.jsx(se,{onClick:()=>re(t.dst_hash,"dst"),copied:"dst"===g})]})})]}),G&&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"}),W.some(e=>E.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(ae,{originalPath:q,forwardedPath:X,ghostPrefixes:E})]}),G&&W.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(Z,{path:W,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(te,{label:"Size",compact:!0,children:r.jsxs("span",{className:"font-mono",children:[U,"B"]})}),r.jsx(te,{label:"TX Delay",compact:!0,children:r.jsxs("span",{className:"font-mono",children:[H.toFixed(1),"ms"]})}),r.jsx(te,{label:"Score",compact:!0,children:r.jsx("span",{className:"font-mono",children:void 0!==t.score?t.score.toFixed(3):"—"})})]}),r.jsx(te,{label:"Status",children:r.jsx("span",{className:I(t),children:$(t)})}),J&&r.jsxs("div",{className:"glass-card-inner p-3",children:[r.jsx("p",{className:"text-xs text-text-muted mb-2",children:"Payload"}),Y.isText&&Y.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:Y.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{G as P,W as a,ne as b,H as c,L as g}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PathMapMapLibre-XwxmBUnL.js","assets/vendor-react-O8XH9yVn.js","assets/vendor-core-WoOfkQwm.js","assets/maplibre-gl-B1CfjdFi.css"])))=>i.map(i=>d[i]); +import{r as e,_ as t,a3 as s,E as a,a4 as n,j as r,a5 as o,a6 as c,a7 as i,b as l,X as d,h as x,a8 as h,k as u,a9 as p,aa as m,$ as f}from"./vendor-react-O8XH9yVn.js";import{c as b}from"./recharts-BU7auunF.js";import{q as g,R as j,r as y,t as v,v as N,e as w,d as _,w as k,x as M,y as C,z as P}from"./index-Dp0UlTio.js";import{S as T,g as S}from"./SignalIndicator-BVAbF7xm.js";import{H as D}from"./HashBadge-aS_UIcg2.js";import{_ as E}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}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"}},U={sm:"w-3.5 h-3.5",md:"w-4 h-4"};function H(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=e.memo(function({packet:e,showLabel:t=!0,size:s="sm"}){const a=H(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(U[s],n.color)}),t&&r.jsx("span",{className:b("text-[10px] font-semibold tracking-wide",n.color),children:n.label})]})});function $(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 I(e){return z[H(e)].color}function q(e){return{payloadType:e.payload_type_name||L(e.payload_type??e.type),routeType:e.route_type_name||F(e.route_type??e.route)}}function X({packet:e,onClick:t,isFlashing:s=!1}){const{payloadType:a,routeType:n}=q(e);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(V,{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(D,{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",children:r.jsx("div",{className:"flex justify-end",children:r.jsx(T,{rssi:e.rssi,snr:e.snr,compact:!0,showValues:!0})})})]})}const G=e.memo(function(e){return r.jsx(X,{...e})}),W=e.memo(function({packet:e,onClick:t,isFlashing:s=!1}){const{payloadType:a,routeType:n}=q(e);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(V,{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(D,{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-12 flex-shrink-0 flex justify-end",children:r.jsx(T,{rssi:e.rssi,compact:!0,showValues:!0})})]})})});function K(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 Q=e.lazy(()=>E(()=>import("./PathMapMapLibre-XwxmBUnL.js"),__vite__mapDeps([0,1,2,3])));function B(e){return`${(100*e).toFixed(0)}%`}function Y(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 J 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 Z({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))K(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:B(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(J,{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(Q,{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:Y(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 ee(e){if(!e)return[];if(Array.isArray(e))return e;try{const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function te({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 se({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 ae({originalPath:e,forwardedPath:t,ghostPrefixes:s}){const n=t.length>0?t:e;if(0===n.length)return r.jsx("span",{className:"text-xs text-text-muted",children:"No path data"});const o=e=>null==s?void 0:s.has(e.toUpperCase());return r.jsx("div",{className:"flex items-center gap-1 flex-wrap",children:n.map((e,t)=>r.jsxs("div",{className:"flex items-center gap-1",children:[o(e)?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(D,{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(),E=e.useMemo(()=>new Set(w.map(e=>e.prefix.toUpperCase())),[w]),R=t.payload_type_name||L(t.payload_type??t.type),z=t.route_type_name||F(t.route_type??t.route),U=t.payload_length??t.length??0,H=t.tx_delay_ms??0,q=ee(t.original_path),X=ee(t.forwarded_path),G=q.length>0||X.length>0,W=X.length>0?X: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,Y=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),J=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(V,{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(te,{label:"Packet Hash",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(D,{hash:t.packet_hash,size:"sm"}),r.jsx(se,{onClick:()=>re(t.packet_hash,"hash"),copied:"hash"===g})]})}),r.jsx(te,{label:"Route",children:r.jsx("span",{className:b("px-2 py-0.5 rounded text-xs border font-medium",O(z)),children:z})})]}),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:S(t.rssi)})]}),r.jsx(T,{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(te,{label:"Source",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(D,{hash:t.src_hash,size:"sm"}),r.jsx(se,{onClick:()=>re(t.src_hash,"src"),copied:"src"===g})]})}),t.dst_hash&&r.jsx(te,{label:"Destination",children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx(D,{hash:t.dst_hash,size:"sm"}),r.jsx(se,{onClick:()=>re(t.dst_hash,"dst"),copied:"dst"===g})]})})]}),G&&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"}),W.some(e=>E.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(ae,{originalPath:q,forwardedPath:X,ghostPrefixes:E})]}),G&&W.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(Z,{path:W,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(te,{label:"Size",compact:!0,children:r.jsxs("span",{className:"font-mono",children:[U,"B"]})}),r.jsx(te,{label:"TX Delay",compact:!0,children:r.jsxs("span",{className:"font-mono",children:[H.toFixed(1),"ms"]})}),r.jsx(te,{label:"Score",compact:!0,children:r.jsx("span",{className:"font-mono",children:void 0!==t.score?t.score.toFixed(3):"—"})})]}),r.jsx(te,{label:"Status",children:r.jsx("span",{className:I(t),children:$(t)})}),J&&r.jsxs("div",{className:"glass-card-inner p-3",children:[r.jsx("p",{className:"text-xs text-text-muted mb-2",children:"Payload"}),Y.isText&&Y.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:Y.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{G as P,W as a,ne as b,H as c,L as g}; diff --git a/frontend/dist/assets/Packets-BVVUdxzG.js b/frontend/dist/assets/Packets-Cn-iDbXq.js similarity index 95% rename from frontend/dist/assets/Packets-BVVUdxzG.js rename to frontend/dist/assets/Packets-Cn-iDbXq.js index 1066cc4c..f96fa84e 100644 --- a/frontend/dist/assets/Packets-BVVUdxzG.js +++ b/frontend/dist/assets/Packets-Cn-iDbXq.js @@ -1 +1 @@ -import{r as e,j as t,_ as s,E as a,Y as l,$ as r,a0 as i,D as c,a1 as n,a2 as o,p as d,X as m}from"./vendor-react-ClShp8p7.js";import{c as x}from"./recharts-BjCld2b0.js";import{u as p,b as u,p as h,c as b,q as g,R as j}from"./index-DY0XR9s0.js";import{c as v,P as f,a as y,b as N,g as w}from"./PacketDetailModal-DuWvKGFM.js";import{P as k,b as S,a as R,c as _}from"./PageLayout-CQDLcONp.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";import"./SignalIndicator-Dag5FlAv.js";import"./HashBadge-BiZRDKRx.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 M=e.memo(function({packets:c}){const n=e.useMemo(()=>{let e=0,t=0,s=0;const a=new Set;let l=0,r=0;for(const o of c){switch(v(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 i=c.length,n=r>0?Math.round(l/r):0;return{total:i,rx:i,fwd:e,dropped:t,duplicate:s,uniqueSources:a.size,avgRssi:n,rxPercent:100,fwdPercent:i>0?Math.round(e/i*100):0,droppedPercent:i>0?Math.round(t/i*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:n.rx,color:"bg-accent-primary/10",percentage:n.rxPercent}),t.jsx(C,{icon:t.jsx(a,{className:"w-3.5 h-3.5 text-accent-success"}),label:"Forwarded",value:n.fwd,color:"bg-accent-success/10",percentage:n.fwdPercent}),t.jsx(C,{icon:t.jsx(l,{className:"w-3.5 h-3.5 text-accent-danger"}),label:"Dropped",value:n.dropped,color:"bg-accent-danger/10",percentage:n.droppedPercent}),t.jsx(C,{icon:t.jsx(r,{className:"w-3.5 h-3.5 text-text-muted"}),label:"Duplicates",value:n.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(i,{className:"w-3.5 h-3.5 text-accent-secondary"}),label:"Sources",value:n.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:[n.avgRssi," dBm"]}),t.jsx("span",{className:"text-[10px] text-text-muted",children:"Avg Signal"})]})]})]})})});function P(e){return(e.payload_type_name||w(e.payload_type??e.type)).toLowerCase().includes("advert")}function L(){const s=p(),a=u(),l=h(),[r,i]=e.useState(null),[w,C]=e.useState(!1),[L,D]=e.useState({limit:100,status:"all"}),T=b(),[F,A]=e.useState(null),$=e.useRef(0),[q,E]=e.useState(Date.now);e.useEffect(()=>{L.timeRange&&L.timeRange>0&&queueMicrotask(()=>E(Date.now()))},[L.timeRange,s]);const H=e.useMemo(()=>{const e=L.limit??100;return[...s.length<=e?s:s.slice(-e)].sort((e,t)=>(t.timestamp??0)-(e.timestamp??0))},[s,L.limit]),B=0===s.length,O=e.useMemo(()=>{let e=H;if(void 0!==L.type){const t=g[L.type];e=e.filter(e=>{const s=e.type??e.payload_type,a=e.payload_type_name;return s===L.type||a===t})}if(void 0!==L.route){const t=j[L.route];e=e.filter(e=>{const s=e.route??e.route_type,a=e.route_type_name;return s===L.route||a===t})}if(L.status&&"all"!==L.status&&(e=e.filter(e=>v(e)===L.status)),void 0!==L.signalMin&&(e=e.filter(e=>e.rssi>=L.signalMin)),L.timeRange&&L.timeRange>0){const t=q/1e3-3600*L.timeRange;e=e.filter(e=>e.timestamp>=t)}return e},[H,L.type,L.route,L.status,L.signalMin,L.timeRange,q]);e.useEffect(()=>{if(T>0&&T!==$.current&&H.length>0){$.current=T;const e=H.find(P);if(e){const t=requestAnimationFrame(()=>A(e.packet_hash)),s=setTimeout(()=>A(null),600);return()=>{cancelAnimationFrame(t),clearTimeout(s)}}}},[T,H]);const z=(e,t)=>D(s=>({...s,[e]:t})),G=void 0!==L.type||void 0!==L.route||L.status&&"all"!==L.status||void 0!==L.signalMin||L.timeRange&&L.timeRange>0;return t.jsxs(k,{children:[t.jsx(S,{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:()=>C(!w),className:x("sm:hidden px-3 py-1.5 rounded-lg text-sm font-medium transition-all","flex items-center gap-1.5 border",G?"bg-accent-primary/20 text-accent-primary border-accent-primary/30":"bg-bg-subtle text-text-muted border-border-subtle"),children:[t.jsx(n,{className:"w-4 h-4"}),G&&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(R,{noPadding:!0,className:x("overflow-hidden transition-all duration-200",w?"max-h-96 opacity-100":"max-h-0 opacity-0 sm:max-h-96 sm:opacity-100"),children:[t.jsx(_,{listHeader:!0,icon:t.jsx(n,{className:"icon-sm"}),title:"Filters",actions:G?t.jsxs("button",{onClick:()=>D({limit:L.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:L.type??"",onChange:e=>z("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:L.route??"",onChange:e=>z("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:L.status??"all",onChange:e=>z("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:L.timeRange??0,onChange:e=>z("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:L.signalMin??"",onChange:e=>z("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:L.limit??100,onChange:e=>z("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(M,{packets:O}),t.jsxs(R,{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-12 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:B&&0===H.length?t.jsx("tr",{children:t.jsx("td",{colSpan:6,className:"text-center py-12 text-text-muted",children:"Loading packets..."})}):0===O.length?t.jsx("tr",{children:t.jsx("td",{colSpan:6,className:"text-center py-12 text-text-muted",children:"No packets found"})}):O.map((e,s)=>t.jsx(f,{packet:e,onClick:i,isFlashing:P(e)&&F===e.packet_hash},`${e.packet_hash}_${e.timestamp}_${s}`))})]})}),t.jsx("div",{className:"sm:hidden divide-y divide-border-subtle/30",children:B&&0===H.length?t.jsx("div",{className:"p-8 text-center text-text-muted",children:"Loading packets..."}):0===O.length?t.jsx("div",{className:"p-8 text-center text-text-muted",children:"No packets found"}):O.map((e,s)=>t.jsx(y,{packet:e,onClick:i,isFlashing:P(e)&&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 ",O.length," of ",H.length," packets"]})]}),r&&t.jsx(N,{packet:r,onClose:()=>i(null)})]})}export{L as default}; +import{r as e,j as t,_ as s,E as a,Y as l,$ as r,a0 as i,D as c,a1 as n,a2 as o,p as d,X as m}from"./vendor-react-O8XH9yVn.js";import{c as x}from"./recharts-BU7auunF.js";import{u as p,b as u,p as h,c as b,q as g,R as j}from"./index-Dp0UlTio.js";import{c as v,P as f,a as y,b as N,g as w}from"./PacketDetailModal-CR1FHEH5.js";import{P as k,b as S,a as R,c as _}from"./PageLayout-DE5PEtD2.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";import"./SignalIndicator-BVAbF7xm.js";import"./HashBadge-aS_UIcg2.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 M=e.memo(function({packets:c}){const n=e.useMemo(()=>{let e=0,t=0,s=0;const a=new Set;let l=0,r=0;for(const o of c){switch(v(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 i=c.length,n=r>0?Math.round(l/r):0;return{total:i,rx:i,fwd:e,dropped:t,duplicate:s,uniqueSources:a.size,avgRssi:n,rxPercent:100,fwdPercent:i>0?Math.round(e/i*100):0,droppedPercent:i>0?Math.round(t/i*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:n.rx,color:"bg-accent-primary/10",percentage:n.rxPercent}),t.jsx(C,{icon:t.jsx(a,{className:"w-3.5 h-3.5 text-accent-success"}),label:"Forwarded",value:n.fwd,color:"bg-accent-success/10",percentage:n.fwdPercent}),t.jsx(C,{icon:t.jsx(l,{className:"w-3.5 h-3.5 text-accent-danger"}),label:"Dropped",value:n.dropped,color:"bg-accent-danger/10",percentage:n.droppedPercent}),t.jsx(C,{icon:t.jsx(r,{className:"w-3.5 h-3.5 text-text-muted"}),label:"Duplicates",value:n.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(i,{className:"w-3.5 h-3.5 text-accent-secondary"}),label:"Sources",value:n.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:[n.avgRssi," dBm"]}),t.jsx("span",{className:"text-[10px] text-text-muted",children:"Avg Signal"})]})]})]})})});function P(e){return(e.payload_type_name||w(e.payload_type??e.type)).toLowerCase().includes("advert")}function L(){const s=p(),a=u(),l=h(),[r,i]=e.useState(null),[w,C]=e.useState(!1),[L,D]=e.useState({limit:100,status:"all"}),T=b(),[F,A]=e.useState(null),$=e.useRef(0),[q,E]=e.useState(Date.now);e.useEffect(()=>{L.timeRange&&L.timeRange>0&&queueMicrotask(()=>E(Date.now()))},[L.timeRange,s]);const H=e.useMemo(()=>{const e=L.limit??100;return[...s.length<=e?s:s.slice(-e)].sort((e,t)=>(t.timestamp??0)-(e.timestamp??0))},[s,L.limit]),B=0===s.length,O=e.useMemo(()=>{let e=H;if(void 0!==L.type){const t=g[L.type];e=e.filter(e=>{const s=e.type??e.payload_type,a=e.payload_type_name;return s===L.type||a===t})}if(void 0!==L.route){const t=j[L.route];e=e.filter(e=>{const s=e.route??e.route_type,a=e.route_type_name;return s===L.route||a===t})}if(L.status&&"all"!==L.status&&(e=e.filter(e=>v(e)===L.status)),void 0!==L.signalMin&&(e=e.filter(e=>e.rssi>=L.signalMin)),L.timeRange&&L.timeRange>0){const t=q/1e3-3600*L.timeRange;e=e.filter(e=>e.timestamp>=t)}return e},[H,L.type,L.route,L.status,L.signalMin,L.timeRange,q]);e.useEffect(()=>{if(T>0&&T!==$.current&&H.length>0){$.current=T;const e=H.find(P);if(e){const t=requestAnimationFrame(()=>A(e.packet_hash)),s=setTimeout(()=>A(null),600);return()=>{cancelAnimationFrame(t),clearTimeout(s)}}}},[T,H]);const z=(e,t)=>D(s=>({...s,[e]:t})),G=void 0!==L.type||void 0!==L.route||L.status&&"all"!==L.status||void 0!==L.signalMin||L.timeRange&&L.timeRange>0;return t.jsxs(k,{children:[t.jsx(S,{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:()=>C(!w),className:x("sm:hidden px-3 py-1.5 rounded-lg text-sm font-medium transition-all","flex items-center gap-1.5 border",G?"bg-accent-primary/20 text-accent-primary border-accent-primary/30":"bg-bg-subtle text-text-muted border-border-subtle"),children:[t.jsx(n,{className:"w-4 h-4"}),G&&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(R,{noPadding:!0,className:x("overflow-hidden transition-all duration-200",w?"max-h-96 opacity-100":"max-h-0 opacity-0 sm:max-h-96 sm:opacity-100"),children:[t.jsx(_,{listHeader:!0,icon:t.jsx(n,{className:"icon-sm"}),title:"Filters",actions:G?t.jsxs("button",{onClick:()=>D({limit:L.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:L.type??"",onChange:e=>z("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:L.route??"",onChange:e=>z("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:L.status??"all",onChange:e=>z("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:L.timeRange??0,onChange:e=>z("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:L.signalMin??"",onChange:e=>z("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:L.limit??100,onChange:e=>z("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(M,{packets:O}),t.jsxs(R,{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-12 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:B&&0===H.length?t.jsx("tr",{children:t.jsx("td",{colSpan:6,className:"text-center py-12 text-text-muted",children:"Loading packets..."})}):0===O.length?t.jsx("tr",{children:t.jsx("td",{colSpan:6,className:"text-center py-12 text-text-muted",children:"No packets found"})}):O.map((e,s)=>t.jsx(f,{packet:e,onClick:i,isFlashing:P(e)&&F===e.packet_hash},`${e.packet_hash}_${e.timestamp}_${s}`))})]})}),t.jsx("div",{className:"sm:hidden divide-y divide-border-subtle/30",children:B&&0===H.length?t.jsx("div",{className:"p-8 text-center text-text-muted",children:"Loading packets..."}):0===O.length?t.jsx("div",{className:"p-8 text-center text-text-muted",children:"No packets found"}):O.map((e,s)=>t.jsx(y,{packet:e,onClick:i,isFlashing:P(e)&&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 ",O.length," of ",H.length," packets"]})]}),r&&t.jsx(N,{packet:r,onClose:()=>i(null)})]})}export{L as default}; diff --git a/frontend/dist/assets/PageLayout-CQDLcONp.js b/frontend/dist/assets/PageLayout-CQDLcONp.js deleted file mode 100644 index 2007db4f..00000000 --- a/frontend/dist/assets/PageLayout-CQDLcONp.js +++ /dev/null @@ -1 +0,0 @@ -import{j as e}from"./vendor-react-ClShp8p7.js";import{c as s}from"./recharts-BjCld2b0.js";const a=[45,72,33,58,80,42,65,28,55,75,38,62];function l({className:a,style:l}){return e.jsx("div",{className:s("animate-pulse bg-white/[0.06] rounded",a),style:l})}function c(){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(l,{className:"w-14 h-6 rounded shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[e.jsx(l,{className:"h-4 w-full"}),e.jsx(l,{className:"h-4 w-3/4"}),e.jsx(l,{className:"h-3 w-32 mt-1"})]})]})})}function r({count:s=8}){return e.jsx("div",{className:"space-y-2",children:Array.from({length:s}).map((s,a)=>e.jsx(c,{},a))})}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(l,{className:"w-5 h-5"}),e.jsx(l,{className:"h-4 w-24"})]}),e.jsx(l,{className:"h-8 w-20"}),e.jsxs("div",{className:"flex-1 flex flex-col justify-end gap-2",children:[e.jsx(l,{className:"h-3 w-full"}),e.jsx(l,{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(l,{className:"w-5 h-5"}),e.jsx(l,{className:"h-4 w-24"})]}),e.jsx("div",{className:"flex-1 flex items-end gap-1 pb-4",children:a.slice(0,8).map((s,a)=>e.jsx(l,{className:"flex-1",style:{height:`${s}%`}},a))})]})}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(l,{className:"w-5 h-5"}),e.jsx(l,{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,a)=>e.jsx(l,{className:"h-6 w-full"},a))})]})}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,r as L,d as P,o as a,x as b,h as c}; diff --git a/frontend/dist/assets/PageLayout-DE5PEtD2.js b/frontend/dist/assets/PageLayout-DE5PEtD2.js new file mode 100644 index 00000000..609165d9 --- /dev/null +++ b/frontend/dist/assets/PageLayout-DE5PEtD2.js @@ -0,0 +1 @@ +import{j as e}from"./vendor-react-O8XH9yVn.js";import{c as s}from"./recharts-BU7auunF.js";const a=[45,72,33,58,80,42,65,28,55,75,38,62];function l({className:a,style:l}){return e.jsx("div",{className:s("animate-pulse bg-white/[0.06] rounded",a),style:l})}function c(){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(l,{className:"w-14 h-6 rounded shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0 space-y-2",children:[e.jsx(l,{className:"h-4 w-full"}),e.jsx(l,{className:"h-4 w-3/4"}),e.jsx(l,{className:"h-3 w-32 mt-1"})]})]})})}function r({count:s=8}){return e.jsx("div",{className:"space-y-2",children:Array.from({length:s}).map((s,a)=>e.jsx(c,{},a))})}function i(){return e.jsxs("div",{className:"flex flex-col gap-3 h-full","aria-hidden":"true",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(l,{className:"w-5 h-5"}),e.jsx(l,{className:"h-4 w-24"})]}),e.jsx(l,{className:"h-8 w-20"}),e.jsxs("div",{className:"flex-1 flex flex-col justify-end gap-2",children:[e.jsx(l,{className:"h-3 w-full"}),e.jsx(l,{className:"h-3 w-3/4"})]})]})}function t(){return e.jsxs("div",{className:"flex flex-col gap-3 h-full","aria-hidden":"true",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(l,{className:"w-5 h-5"}),e.jsx(l,{className:"h-4 w-24"})]}),e.jsx("div",{className:"flex-1 flex items-end gap-1",children:a.slice(0,8).map((s,a)=>e.jsx(l,{className:"flex-1",style:{height:`${s}%`}},a))})]})}function n({rows:s=5}){return e.jsxs("div",{className:"flex flex-col h-full","aria-hidden":"true",children:[e.jsx("div",{className:"pb-3 border-b border-border-subtle",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(l,{className:"w-5 h-5"}),e.jsx(l,{className:"h-4 w-24"})]})}),e.jsx("div",{className:"flex-1 pt-3 flex flex-col gap-3",children:Array.from({length:s}).map((s,a)=>e.jsx(l,{className:"h-6 w-full"},a))})]})}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 h({children:a,size:l,compact:c,noPadding:r,className:d,style:x,onClick:h,isLoaded:o=!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:h,children:[a,!o&&(()=>{switch(f){case"chart":return e.jsx(t,{});case"list":return e.jsx(n,{});default:return e.jsx(i,{})}})()]})}function o({icon:a,title:l,badge:c,subtitle:r,actions:i,iconColor:t="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",t),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})]}),i&&e.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:i})]}),r&&e.jsx("p",{className:"type-label text-text-muted ml-7",children:r})]})}export{i as C,r as L,d as P,l as S,h as a,x as b,o as c}; diff --git a/frontend/dist/assets/PathMapMapLibre-C_YZ_YE8.js b/frontend/dist/assets/PathMapMapLibre-XwxmBUnL.js similarity index 98% rename from frontend/dist/assets/PathMapMapLibre-C_YZ_YE8.js rename to frontend/dist/assets/PathMapMapLibre-XwxmBUnL.js index c63a926b..41676f7b 100644 --- a/frontend/dist/assets/PathMapMapLibre-C_YZ_YE8.js +++ b/frontend/dist/assets/PathMapMapLibre-XwxmBUnL.js @@ -1 +1 @@ -import{r as e,j as o,b4 as t,b5 as r,b6 as n,b7 as i,b8 as l}from"./vendor-react-ClShp8p7.js";import"./maplibre-gl-Bk5DsYkB.js";import"./vendor-core-WoOfkQwm.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}; +import{r as e,j as o,b4 as t,b5 as r,b6 as n,b7 as i,b8 as l}from"./vendor-react-O8XH9yVn.js";import"./maplibre-gl-Bk5DsYkB.js";import"./vendor-core-WoOfkQwm.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-BVAbF7xm.js b/frontend/dist/assets/SignalIndicator-BVAbF7xm.js new file mode 100644 index 00000000..a05cadd8 --- /dev/null +++ b/frontend/dist/assets/SignalIndicator-BVAbF7xm.js @@ -0,0 +1 @@ +import{j as n,aw as e,ax as r,ay as t,az as a,aA as s,r as o}from"./vendor-react-O8XH9yVn.js";import{c as i}from"./recharts-BU7auunF.js";const l={5:-2.5,6:-5,7:-7.5,8:-10,9:-12.5,10:-15,11:-17.5,12:-20},c={62500:{5:-123,6:-125,7:-127,8:-130,9:-133,10:-136,11:-138,12:-140},125e3:{5:-120,6:-122,7:-124,8:-127,9:-130,10:-133,11:-135,12:-137},25e4:{5:-117,6:-119,7:-121,8:-124,9:-127,10:-130,11:-132,12:-134},5e5:{5:-114,6:-116,7:-118,8:-121,9:-124,10:-127,11:-129,12:-131}};function u(n,e,r){if(null==n||!Number.isFinite(n))return null;if(null==e||!Number.isFinite(e))return null;const{sf:t,bwHz:a}=r,s=function(n){const e=Math.max(5,Math.min(12,Math.round(n)));return l[e]??l[7]}(t),o=function(n,e){let r=62500;r=n>=375e3?5e5:n>=187500?25e4:n>=93750?125e3:62500;const t=c[r];return t[Math.max(5,Math.min(12,Math.round(e)))]??t[7]}(a,t),i=n-s,u=e-o;return{snrMargin:i,rssiMargin:u,worstMargin:Math.min(i,u)}}const d={EXCELLENT:6,GOOD:3,FAIR:0},x={EXCELLENT:10,GOOD:6,FAIR:2},f=["excellent","good","fair","poor","critical"];function g(n,e){return n>=e.EXCELLENT?"excellent":n>=e.GOOD?"good":n>=e.FAIR?"fair":n>=e.FAIR-3?"poor":"critical"}function m(n,e){if(0===e)return n;const r=f.indexOf(n),t=Math.min(r+e,f.length-1);return f[t]}function p(n,e,r,t){const a=(s=g(n.snrMargin,d),o=g(n.rssiMargin,x),f.indexOf(s)>=f.indexOf(o)?s:o);var s,o;const i=m(a,e);return{baseGrade:a,finalGrade:i,snrMargin:n.snrMargin,rssiMargin:n.rssiMargin,worstMargin:n.worstMargin,nfPenalty:e,wasDowngraded:e>0&&i!==a,confidence:r,isMarginBased:t}}function h(n,e,r,t=0){return r&&null!=n?function(n,e,r,t=0){const a=u(n,e,r);return a?p(a,t,"high",!0):null}(n,e,r,t):null!=n&&null!=e?function(n,e,r=0){const t=function(n,e){return u(n,e,{sf:7,bwHz:62500})}(n,e);return t?p(t,r,"low",!0):null}(n,e,t):function(n,e=0){if(null==n||!Number.isFinite(n))return null;const r=function(n){return n>=-90?"excellent":n>=-100?"good":n>=-110?"fair":n>=-120?"poor":"critical"}(n),t=m(r,e);return{baseGrade:r,finalGrade:t,snrMargin:null,rssiMargin:null,worstMargin:null,nfPenalty:e,wasDowngraded:e>0&&t!==r,confidence:"low",isMarginBased:!1}}(e,t)}const w={excellent:"color(display-p3 0.00 1.00 0.00)",good:"color(display-p3 0.55 0.90 0.15)",fair:"color(display-p3 1.00 0.85 0.00)",weak:"color(display-p3 1.00 0.55 0.15)",poor:"color(display-p3 1.00 0.20 0.20)"},M={excellent:"#4ADE80",good:"#A3E635",fair:"#FACC15",weak:"#FB923C",poor:"#EF4444"};function N(n){return n>=-90?"excellent":n>=-100?"good":n>=-110?"fair":n>=-120?"weak":"poor"}function j(n,e){return e?{backgroundColor:M[n],"--p3-color":w[n]}:{backgroundColor:"rgba(255, 255, 255, 0.1)"}}function y(n){return n?"signal-bar-active":""}function b({rssi:o,className:l="w-4 h-4"}){const c=N(o),u=function(n){switch(n){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"}}(c),d=i(u,l);switch(c){case"excellent":return n.jsx(s,{className:d});case"good":return n.jsx(a,{className:d});case"fair":return n.jsx(t,{className:d});case"weak":return n.jsx(r,{className:d});default:return n.jsx(e,{className:d})}}const v=o.memo(function({rssi:e,snr:r,compact:t=!1,showValues:a=!0,radioConfig:s,nfPenalty:o=0}){const l=void 0!==r?function(n,e,r,t=0){const a=h(e,n,r,t);return a?function(n){switch(n){case"excellent":return"excellent";case"good":return"good";case"fair":return"fair";case"poor":return"weak";case"critical":return"poor"}}(a.finalGrade):N(n)}(e,r,s,o):N(e),c={excellent:4,good:3,fair:2,weak:1,poor:0}[l];return t?n.jsxs("div",{className:"flex items-center gap-1.5",children:[a&&n.jsx("span",{className:"text-[10px] font-mono text-text-secondary tabular-nums w-[32px] text-left",children:e}),n.jsx("div",{className:"flex items-end gap-[2px] h-3 w-[14px]",children:Array.from({length:4}).map((e,r)=>n.jsx("div",{className:i("w-[3px] rounded-[1px] transition-colors",y(rn.jsx("div",{className:i("w-[3px] rounded-[1px] transition-colors",y(r=-90?"excellent":e>=-100?"good":e>=-110?"fair":e>=-120?"weak":"poor"}function d(e,s){return s?{backgroundColor:i[e],"--p3-color":c[e]}:{backgroundColor:"rgba(255, 255, 255, 0.1)"}}function p(e){return e?"signal-bar-active":""}function m({rssi:n,className:c="w-4 h-4"}){const i=x(n),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"}}(i),p=l(d,c);switch(i){case"excellent":return e.jsx(o,{className:p});case"good":return e.jsx(r,{className:p});case"fair":return e.jsx(t,{className:p});case"weak":return e.jsx(a,{className:p});default:return e.jsx(s,{className:p})}}const u=n.memo(function({rssi:s,snr:a,compact:t=!1,showValues:r=!0}){const o=x(s),n={excellent:4,good:3,fair:2,weak:1,poor:0}[o];return t?e.jsxs("div",{className:"flex items-center gap-1.5",children:[r&&e.jsx("span",{className:"text-[10px] font-mono text-text-secondary tabular-nums w-[32px] text-left",children:s}),e.jsx("div",{className:"flex items-end gap-[2px] h-3 w-[14px]",children:Array.from({length:4}).map((s,a)=>e.jsx("div",{className:l("w-[3px] rounded-[1px] transition-colors",p(ae.jsx("div",{className:l("w-[3px] rounded-[1px] transition-colors",p(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,aB as l,H as i,aC as o,aD as c,aE as d,aF as u,aG as m,aH as h,aI as x,aJ as p,aK as g,o as f,aL as b,aM as y,aN as v,aO as j,aP as N,aQ as w,a7 as k,aR as M,aj as C,h as S,ad as T,aS as P,ab as $,p as R,C as F,as as A}from"./vendor-react-ClShp8p7.js";import{O as L,Q as D,S as E,U as B,V as _,q as H,W as z,X as O,B as W,Y as V,d as q,h as G,f as I,u as X,m as K,Z as Y,j as Q,_ as U}from"./index-DY0XR9s0.js";import{u as J}from"./usePolling-CQUaWSqs.js";import{a as Z,u as ee,b as te,c as se,d as ae,e as ne,s as re,p as le}from"./useThemeColors-BsFY5Gki.js";import{c as ie,R as oe,d as ce,L as de,C as ue,X as me,Y as he,T as xe,a as pe}from"./recharts-BjCld2b0.js";import{T as ge}from"./TimeRangeSelector-3DTeUpqT.js";import{a as fe,c as be,P as ye,b as ve}from"./PageLayout-CQDLcONp.js";import{C as je}from"./CollisionExplorerModal-2LJtIYk6.js";import{R as Ne,C as we}from"./Grid-CpI-_Yqf.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";import"./leaflet-D_ckmI2R.js";function ke({children:e,centered:t,className:s}){return n.jsx("div",{className:ie("flex-1 min-h-0",t&&"flex items-center justify-center",s),children:e})}const Me={useAbsoluteThresholds:!0,baselinePercentile:6,spikePercentile:50,baselineDbm:-107,spikeDbm:-100,mergeGapSeconds:45,minSequenceLength:16,similarityToleranceDbm:5};function Ce(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 Se(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:Ce(t,50),p90:Ce(t,90),p95:Ce(t,95),p99:Ce(t,99),max:t[t.length-1],min:t[0]}}function Te(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"}r.memo(function({options:e,data:t,className:s="",onCreate:a}){const l=r.useRef(null),i=r.useRef(null);return r.useEffect(()=>{const s=l.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 i.current=c,null==a||a(c),()=>{c.destroy(),i.current=null}},[e]),r.useEffect(()=>{i.current&&t&&i.current.setData(t)},[t]),r.useEffect(()=>{const e=l.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!i.current)return;const{width:s,height:a}=t.contentRect;s>0&&a>0&&i.current.setSize({width:Math.floor(s),height:Math.floor(a)})});return t.observe(e),()=>{t.disconnect()}},[]),n.jsx("div",{ref:l,className:`w-full h-full ${s}`,style:{minHeight:100}})});const Pe=new Map;function $e(e){var t;if(!e.startsWith("var("))return e;const s=Pe.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",l=getComputedStyle(document.documentElement).getPropertyValue(n).trim()||r;return Pe.set(e,l),l}function Re(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{x.current=e,p.current=t,g.current=a,f.current=s});const y=r.useRef({band:l,innerBand:i,mean:o,median:c,average:d,cursor:u});r.useLayoutEffect(()=>{y.current={band:l,innerBand:i,mean:o,median:c,average:d,cursor:u}});const v=r.useMemo(()=>[e.map(e=>e.timestamp),e.map(e=>e.max)],[e]),j=r.useMemo(()=>{const e=function(e,t,s,a){return{hooks:{draw:n=>{const r=e.current,l=t.current,i=s.current,o=a.current;if(0===r.length)return;const c=n.ctx,d=n.bbox,u=d.left,m=d.top,h=d.width,x=d.height;if(h<=0||x<=0)return;const p=n.data[0],g=p.length;if(0===g)return;const f=p[0],b=p[g-1]-f||1,y=e=>u+(e-f)/b*h,v=e=>m+x*(1-e/l),j={min:r.map(e=>({x:y(e.timestamp),y:v(e.min)})),max:r.map(e=>({x:y(e.timestamp),y:v(e.max)})),p5:r.map(e=>({x:y(e.timestamp),y:v(e.p5)})),p95:r.map(e=>({x:y(e.timestamp),y:v(e.p95)})),p25:r.map(e=>({x:y(e.timestamp),y:v(e.p25)})),p75:r.map(e=>({x:y(e.timestamp),y:v(e.p75)})),mean:r.map(e=>({x:y(e.timestamp),y:v(e.mean)})),median:r.map(e=>({x:y(e.timestamp),y:v(e.median)})),average:r.map(e=>({x:y(e.timestamp),y:v(e.average)}))},N=(e,t)=>i?i===e?Math.min(1,1.5*t):"minMax"===i||"p5p95"===i||"p25p75"===i?.3*t:t:t,w=e=>i?i===e?1:"mean"===i||"median"===i||"average"===i?.3:1:1,k={band:$e(o.band),innerBand:$e(o.innerBand),mean:$e(o.mean),median:$e(o.median),average:$e(o.average)};c.save(),c.strokeStyle=k.average,c.lineWidth=4,c.globalAlpha=w("average"),Re(c,j.average),c.stroke(),c.globalAlpha=N("minMax",.15),c.fillStyle=k.band,c.beginPath(),Re(c,j.max);const M=[...j.min].reverse();for(const e of M)c.lineTo(e.x,e.y);c.closePath(),c.fill(),c.globalAlpha=N("p5p95",.3),c.fillStyle=k.band,c.beginPath(),Re(c,j.p95);const C=[...j.p5].reverse();for(const e of C)c.lineTo(e.x,e.y);c.closePath(),c.fill(),c.globalAlpha=N("p25p75",.55),c.fillStyle=k.innerBand,c.beginPath(),Re(c,j.p75);const S=[...j.p25].reverse();for(const e of S)c.lineTo(e.x,e.y);c.closePath(),c.fill(),c.strokeStyle=k.median,c.lineWidth=1.5,c.globalAlpha=w("median"),c.setLineDash([4,4]),Re(c,j.median),c.stroke(),c.strokeStyle=k.mean,c.lineWidth=1.5,c.globalAlpha=w("mean"),c.setLineDash([]),Re(c,j.mean),c.stroke(),c.restore()}}}}(x,p,g,y);return{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:[e]}},[t]);r.useEffect(()=>{const t=m.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(),l=Math.floor(r.width)||400,i=Math.floor(r.height)||200,o=new E({...j,width:l,height:i},v,t);return h.current=o,b.current=a,()=>{o.destroy(),h.current=null}},[j,v,e.length]),r.useEffect(()=>{const e=m.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:m,className:"w-full h-full rounded-2xl overflow-hidden",onMouseLeave:N})});const Fe="undefined"!=typeof window&&(null==(t=null==(e=window.matchMedia)?void 0:e.call(window,"(color-gamut: p3)"))?void 0:t.matches);function Ae(){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 Le=["min","max","p75","p95","p99","mean","median","average","midpoint"];let De=null,Ee=0;const Be={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 _e(e){return Be[e]??Be[255]}function He(e){const t=Date.now();(!De||t-Ee>1e3)&&(De={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)"}},Ee=t);const s=De;return e>=1?s.critical:e>=.75?s.poor:e>=.5?s.fair:e>=.25?s.good:s.green}function ze(e,t,s,a,n,r,l,i,o,c=null,d=null,u=1,m=null,h="airtime",x=.5){if(0===t.length)return;const p=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,S=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,T=getComputedStyle(document.documentElement),P=T.getPropertyValue("--signal-critical").trim()||"#EF4444",$=T.getPropertyValue("--bg-elevated").trim()||"#333233";p.save(),p.fillStyle="rgba(0, 0, 0, 0.4)";const R=8*v;if(p.beginPath(),p.roundRect(g,f,b,y,R),p.fill(),p.restore(),!C&&M>=20){p.save();const e=f+y*(1-20/M);p.fillStyle=$,p.globalAlpha=.5,p.fillRect(g,f,b,e-f),p.restore()}p.save(),p.lineWidth=1*v,p.setLineDash([4*v,4*v]);for(let A=S;As+n)return;const i=getComputedStyle(document.documentElement).getPropertyValue("--text-primary").trim()||"#FFFFFF";e.save(),e.strokeStyle=i,e.globalAlpha=.5,e.lineWidth=1*l,e.setLineDash([4*l,4*l]),e.beginPath(),e.moveTo(Math.round(t)+.5,a),e.lineTo(Math.round(t)+.5,a+r),e.stroke(),e.restore()}(p,m,g,f,b,y,v),l){!function(e,t,s,a,n,r,l=null,i=null,o=1,c=25){const{points:d,rawValues:u,count:m,packetTypes:h,timestamps:x}=t,p=1*o*(window.devicePixelRatio||1);e.globalCompositeOperation="source-over";const g=l?parseInt(l.replace("TYPE_",""),10):null;for(let f=0;f=i.start&&e0&&function(e,t,s,a,n,r,l,i,o,c,d=.5){if(0===t.length)return;const u=o-i||1,m=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=Fe?`color(display-p3 ${m.p3r} ${m.p3g} ${m.p3b})`:`rgb(${m.r}, ${m.g}, ${m.b})`;for(const h of t){if(h.endTso)continue;const t=a+(Math.max(h.startTs,i)-i)/u*r,s=a+(Math.min(h.endTs,o)-i)/u*r,d=Math.max(s-t,2*c);e.fillRect(t,n,d,l)}e.restore()}(p,i,0,g,f,b,y,w,k,v,d?Math.max(.03,.03*x):x)}const Oe=r.memo(function({data:e,maxValue:t,visibleLines:s=Le,highlightedLine:a=null,onHover:l,scatterData:i=null,noiseFloorAnomalies:o=null,showNoiseFloorOverlay:c=!1,overlayOpacity:d=.5,highlightedType:u=null,hoveredTimeRange:m=null,timeRangeHours:h=24,yAxisMode:x="airtime"}){const p=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(l),N=r.useRef(i),w=r.useRef(o),k=r.useRef(c),M=r.useRef(u),C=r.useRef(m),S=r.useRef(null),T=r.useRef(null),P=r.useRef(x),$=r.useRef(d),R=h<=12?1.2:1,F=r.useRef(R),A=r.useRef(e.length);r.useLayoutEffect(()=>{f.current=e,b.current=t,y.current=s,v.current=a,j.current=l,N.current=i,w.current=o,k.current=c,M.current=u,C.current=m,F.current=R,P.current=x,$.current=d}),r.useEffect(()=>{S.current=Ae()},[]);const L=r.useMemo(()=>[e.map(e=>e.timestamp),new Array(e.length).fill(1)],[e]),D=r.useMemo(()=>({hooks:{draw:e=>{const t=S.current||Ae();ze(e,f.current,b.current,y.current,v.current,t,N.current,w.current,k.current,M.current,C.current,F.current,T.current,P.current,$.current)}}}),[]),B=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=p.current;if(!t||0===e.length)return;const s=A.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(L),void(A.current=a);g.current&&g.current.destroy();const r=t.getBoundingClientRect(),l=Math.floor(r.width)||400,i=Math.floor(r.height)||200,o=new E({...B,width:l,height:i},L,t);return g.current=o,A.current=a,()=>{o.destroy(),g.current=null}},[B,L,e.length]),r.useEffect(()=>{const e=p.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,i,o,c,d,u,m,R]);const _=r.useCallback(t=>{var s,a;const n=p.current,r=g.current;if(!n||!r||0===e.length)return;const l=n.getBoundingClientRect(),i=t.clientX-l.left,o=window.devicePixelRatio||1,c=r.bbox,d=c.left/o,u=c.width/o;if(id+u)return T.current=null,r.redraw(),void(null==(s=j.current)||s.call(j,null));T.current=i*o;const m=(i-d)/u,h=e.length,x=Math.floor(m*h),f=Math.max(0,Math.min(h-1,x));r.redraw(),null==(a=j.current)||a.call(j,f)},[e.length]),H=r.useCallback(()=>{var e;T.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:p,className:"w-full h-full rounded-lg overflow-hidden",onMouseMove:_,onMouseLeave:H})}),We={[B.REQ]:"var(--pkt-science-req)",[B.ANON_REQ]:"var(--pkt-science-anon-req)",[B.RESPONSE]:"var(--pkt-science-response)",[B.ACK]:"var(--pkt-science-ack)",[B.ADVERT]:"var(--pkt-science-advert)",[B.TXT_MSG]:"var(--pkt-science-txt-msg)",[B.GRP_TXT]:"var(--pkt-science-grp-txt)",[B.GRP_DATA]:"var(--pkt-science-grp-data)",[B.PATH]:"var(--pkt-science-path)",[B.TRACE]:"var(--pkt-science-trace)",[B.MULTIPART]:"var(--pkt-science-multipart)",[B.RAW_CUSTOM]:"var(--pkt-science-raw-custom)"},Ve="var(--pkt-science-unknown)";function qe(e){return"number"!=typeof e?Ve:We[e]??Ve}const Ge=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 l=0;for(const i of e){const e=i.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=L(i);c.totalAirtime+=D(d,{spreadingFactor:a.sf,bandwidthHz:a.bw,codingRate:a.cr,preambleLength:a.preamble}),this.buckets.set(o,c),e>this.lastProcessedTimestamp&&(this.lastProcessedTimestamp=e),l++}this.processedPacketCount+=l}toBucketDataArray(e,t){const s=t-e,a=Math.ceil(s/this.bucketDuration),n=s/3600,r=[];for(let l=0;l24?s.toLocaleDateString([],{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}):s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),i=this.buckets.get(l)??{total:0,totalAirtime:0};r.push({timestamp:t,time:a,total:i.total,totalAirtime:i.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 Ie(e){return H[e]??`TYPE_${e.toString(16).toUpperCase()}`}const Xe={sf:10,bw:25e4,cr:5,preamble:8};function Ke(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(!l)return null;const e=new Map;for(const t of l.items)e.set(t.key,t.value);return e},[l]),o=null!==i;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=qe(e.typeNum),l=(null==i?void 0:i.get(e.key))??0,c=a.get(e.key)??0,d=o?l:c,u=d>1e-4,m=t===e.key,h=t&&t!==e.key;let x="legend-item";return m?x+=" legend-item-active":h?x+=" legend-item-dimmed":o&&l>1e-4?x+=" legend-item-chart-active":o&&l<=1e-4&&(x+=" legend-item-dimmed"),n.jsxs("div",{className:x,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}),u&&n.jsxs("span",{className:"legend-value "+(o?"legend-value-live":""),children:[(100*d).toFixed(1),"%"]})]},e.key)})})})}function Qe({x:e,y:t,width:s,height:a,name:r,size:l,index:i,depth:o,hoveredIndex:c,onHover:d,total:u,typeNum:m}){if(1!==o)return null;const h=null!==c&&!(c===i),x=qe(m),p=u>0?l/u*100:0,g=s>36&&a>20,f=s>36&&a>32;return n.jsxs("g",{onMouseEnter:e=>d(i,e),onMouseLeave:()=>d(null),style:{cursor:"default"},children:[n.jsx("rect",{x:e,y:t,width:s,height:a,fill:x,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:[p.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 Ue({data:e,total:t,color:s,position:a,containerWidth:r}){if(!e||!a)return null;const l=(e.value/t*100).toFixed(1),i=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:i,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:[l,"%"]})]}),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 Je({sortedTypes:e,aggregateShares:t}){var s,a,l;const[i,o]=r.useState(null),[c,d]=r.useState(null),[u,m]=r.useState(0),[h,x]=r.useState(null),p=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=p.current;if(e){const s=e.getBoundingClientRect();m(s.width),d({x:t.clientX-s.left,y:t.clientY-s.top})}}else d(null)},[]),v=r.useCallback(e=>{if(x(e),e){const t=b.findIndex(t=>t.key===e);o(t>=0?t:null)}else o(null)},[b]),j=null!==i?{name:(null==(s=b[i])?void 0:s.name)??"",value:(null==(a=b[i])?void 0:a.size)??0}:null,N=null!==i?qe(null==(l=b[i])?void 0:l.typeNum):"";return 0===e.length||0===f?n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(g,{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:p,children:[n.jsx(oe,{width:"100%",height:"100%",children:n.jsx(ce,{data:b,dataKey:"size",aspectRatio:4/3,stroke:"none",isAnimationActive:!1,content:n.jsx(Qe,{x:0,y:0,width:0,height:0,name:"",size:0,index:0,depth:0,hoveredIndex:i,onHover:y,total:f,typeNum:0})})}),n.jsx(Ue,{data:j,total:f,color:N,position:c,containerWidth:u})]}),n.jsx(Ye,{sortedTypes:e,highlightedType:h,onTypeHover:v,aggregateShares:t})]})}function Ze(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,l=a[0],i=a[n-1],o=e=>{const t=Math.min(Math.ceil(e*n)-1,n-1);return a[Math.max(0,t)]};return{min:l,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:i}}function et({statsBuckets:e,mode:t,packets:s,startTs:a,endTs:l,radioConfig:i,sortedTypes:o,aggregateShares:c,noiseFloorAnomalies:d,showNoiseFloorOverlay:u,overlayOpacity:m=.5}){const[h,x]=r.useState(null),[p,f]=r.useState(null),b=r.useMemo(()=>(l-a)/3600,[a,l]),y=r.useCallback(e=>{f(e)},[]),v=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 l=[],i=new Map;for(const e of r){const s=e.type??e.payload_type??-1,r=L(e);let o;if(o="airtime"===a?D(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:o,byteSize:r,packetType:s,bucketIndex:c};l.push(d),i.has(c)||i.set(c,[]),i.get(c).push(d)}if(0===l.length)return null;const o=[],c=[],d=[],u=new Map;if("share"===a)for(const[,e]of i)for(const t of e)u.set(t,t.byteSize);else for(const[,e]of i){const t=e.reduce((e,t)=>e+t.airtimeMs,0)/3e5*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&&(o.push(t),c.push(e.timestamp),d.push(e.packetType))}const m=Math.min(...c),h=Math.max(...c),x=h-m||1,p=[...o].sort((e,t)=>e-t),g=p[0],f=p[p.length-1],b=Math.floor(.05*p.length),y=Math.floor(.5*p.length),v=Math.min(Math.ceil(.95*p.length),p.length-1),j=p[b],N=p[y],w=p[v],k=new Map;for(const e of o){const t=Math.round(100*e)/100;k.set(t,(k.get(t)??0)+1)}const M=k.size,C=[...k.entries()].sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e,t])=>({value:e,count:t,percent:t/o.length*100}));let S;if("share"===a)S=200;else{const e=5,t=Math.ceil(f/e)*e;S=t<=10?10:t+e}const T=new Float32Array(2*o.length),P=new Float32Array(o.length),$=new Uint8Array(o.length),R=new Float32Array(o.length);for(let e=0;e=0?d[e]:255,R[e]=c[e]}return{points:T,rawValues:P,packetTypes:$,timestamps:R,count:o.length,minTime:m,maxTime:h,minValue:0,maxValue:S,rawMinValue:g,rawMaxValue:f,unit:"%",stats:{p5:j,p50:N,p95:w,uniqueValues:M,topValues:C}}},[e,t,s,a,n])}(s,a,l,"share"===t?"share":"airtime",i),{data:j}=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),l=Math.floor(r/2),i=[];let o=0,c=0;for(let d=0;dj.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})),[j]),w=r.useMemo(()=>(null==v?void 0:v.maxValue)?v.maxValue:"share"===t?200:10,[v,t]),k=r.useCallback(e=>{x(e)},[]),M=r.useMemo(()=>{if(null===h||!j[h])return null;const e=j[h];let t;t=b>=168?75:b>=72?35:b>=24?15:b>=3?10:5;const s=60*t/2,a=e.timestamp;return{start:a-s,end:a+s}},[h,j,b]),C=r.useMemo(()=>{if(null===h||!j[h]||!M)return null;const e=j[h].time,{start:a,end:n}=M,r=s.filter(e=>e.timestamp>=a&&e.timestamp({key:e.key,label:e.label,value:0,color:qe(e.typeNum)}))};const l=new Map,c=new Map;let d=0,u=0;for(const t of r){const e=`TYPE_${t.type??t.payload_type??-1}`;if(l.set(e,(l.get(e)??0)+1),d++,i){const s=L(t),a=D(s,{spreadingFactor:i.sf,bandwidthHz:i.bw,codingRate:i.cr,preambleLength:i.preamble});c.set(e,(c.get(e)??0)+a),u+=a}}const m=o.map(e=>{let s;return s="airtime"===t?u>0?(c.get(e.key)??0)/u:0:d>0?(l.get(e.key)??0)/d:0,{key:e.key,label:e.label,value:s,color:qe(e.typeNum)}});return{timestamp:j[h].timestamp,timeLabel:e,items:m}},[h,j,M,s,o,t,i]);if(0===j.length)return n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(g,{className:"w-6 h-6 mr-2 opacity-50"}),n.jsx("span",{children:"No packet data available"})]});const S=(null==C?void 0:C.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(Oe,{data:N,maxValue:w,onHover:k,scatterData:v,noiseFloorAnomalies:d,showNoiseFloorOverlay:u,overlayOpacity:m,highlightedType:p,hoveredTimeRange:M,timeRangeHours:b,yAxisMode:"share"===t?"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(Ye,{sortedTypes:o,highlightedType:p,onTypeHover:y,aggregateShares:c,hoverData:C})]})}function tt({active:e,payload:t,label:s,mode:a}){if(!e||!t||0===t.length)return null;const r=t.filter(e=>null!==e.value&&void 0!==e.value);if(0===r.length)return null;const l=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:l}),r.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.jsx("span",{className:"text-text-primary tabular-nums font-mono",children:"share"===a?`${Number(e.value).toLocaleString()} B`:`${Number(e.value).toFixed(2)}%`})]},t))]})}function st(e){return e>=1e9?`${(e/1e9).toFixed(1)}G`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:e.toFixed(0)}function at({packets:e,mode:t,startTs:s,endTs:a,radioConfig:l,bucketCount:i}){const o=ee(),c=te(),d=se(),u=c.critical,m=o.neutral,[h,x]=r.useState(null),{trendData:p,totals:b}=r.useMemo(()=>{if(0===e.length)return{trendData:[],totals:{rxBytes:0,txBytes:0,rxAirtime:0,txAirtime:0},actualBucketCount:0};const n=a-s,r=Math.min(Math.ceil(n/300),i),o=n/r,c=1e3*o,d=[];for(let e=0;e=a)continue;const n=Math.min(Math.floor((e-s)/o),r-1),i=L(t),c=D(i,{spreadingFactor:l.sf,bandwidthHz:l.bw,codingRate:l.cr,preambleLength:l.preamble});t.transmitted?(d[n].txBytes+=i,d[n].txAirtime+=c,m+=i,x+=c):(d[n].rxBytes+=i,d[n].rxAirtime+=c,u+=i,h+=c)}return{trendData:d.map(e=>{if("share"===t)return{timestamp:e.timestamp,rx:e.rxBytes>0?e.rxBytes:null,tx:e.txBytes>0?e.txBytes:null};{const t=c>0?e.rxAirtime/c*100:0,s=c>0?e.txAirtime/c*100:0;return{timestamp:e.timestamp,rx:t>0?t:null,tx:s>0?s:null}}}),totals:{rxBytes:u,txBytes:m,rxAirtime:h,txAirtime:x}}},[e,s,a,i,t,l,300]),y=r.useMemo(()=>{if(0===p.length)return"share"===t?100:10;let e=0;for(const t of p){const s=t.rx??0,a=t.tx??0;s>e&&(e=s),a>e&&(e=a)}const s=1.1*e;return"share"===t?s<=100?100:s<=500?100*Math.ceil(s/100):s<=1e3?200*Math.ceil(s/200):s<=5e3?500*Math.ceil(s/500):s<=1e4?1e3*Math.ceil(s/1e3):5e3*Math.ceil(s/5e3):Math.max(1,Math.ceil(s))},[p,t]),v=r.useMemo(()=>{if(null!==h&&p[h]){const e=p[h],s=e.rx??0,a=e.tx??0;return"share"===t?{rx:st(s),tx:st(a),total:st(s+a),isHovered:!0}:{rx:`${s.toFixed(2)}%`,tx:`${a.toFixed(2)}%`,total:`${(s+a).toFixed(2)}%`,isHovered:!0}}if("share"===t)return{rx:st(b.rxBytes),tx:st(b.txBytes),total:st(b.rxBytes+b.txBytes),isHovered:!1};{let e=0,t=0,s=0;for(const r of p)null===r.rx&&null===r.tx||(e+=r.rx??0,t+=r.tx??0,s++);const a=s>0?e/s:0,n=s>0?t/s:0;return{rx:`${a.toFixed(2)}%`,tx:`${n.toFixed(2)}%`,total:`${(a+n).toFixed(2)}%`,isHovered:!1}}},[h,p,b,t]),j=r.useMemo(()=>{const e=a-s,t=e/3600;return[0,.25,.5,.75,1].map(a=>{const n=new Date(1e3*(s+e*a)),r=n.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),l=n.toLocaleDateString([],{weekday:"short"});return{pct:a,label:t>24?`${l} ${r}`:r}})},[s,a]),N=r.useCallback(e=>{const t=null==e?void 0:e.activeTooltipIndex;x("number"==typeof t?t:null)},[]),w=r.useMemo(()=>{const e=a-s,t=Math.round(e/3600);return t>=24?`${Math.round(t/24)}d`:`${t}h`},[s,a]),k=r.useCallback(e=>"share"===t?e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:e.toFixed(0):`${e.toFixed(0)}%`,[t]);return 0===p.length?n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(g,{className:"w-6 h-6 mr-2 opacity-50"}),n.jsx("span",{children:"No packet 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:j.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(f,{className:"w-2.5 h-2.5 opacity-60"}),n.jsx("span",{className:"tabular-nums",children:e.label})]},t))})}),n.jsxs("div",{className:"flex-1 min-h-0 relative",children:[n.jsx("div",{className:"absolute left-0 top-1/2 -translate-y-1/2 type-data-xs text-text-muted font-mono",style:{width:44},children:n.jsx("div",{className:"text-center",children:w})}),n.jsx(oe,{width:"100%",height:"100%",minWidth:1,minHeight:1,children:n.jsxs(de,{data:p,margin:{top:4,right:8,bottom:4,left:0},onMouseMove:N,onMouseLeave:()=>x(null),children:[n.jsx(ue,{strokeDasharray:"3 3",stroke:d.primary,strokeOpacity:.15,vertical:!1}),n.jsx(me,{dataKey:"timestamp",type:"number",domain:[s,a],axisLine:!1,tickLine:!1,tick:!1,height:0}),n.jsx(he,{axisLine:!1,tickLine:!1,tick:{fill:d.primary,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dx:-8,width:44,tickFormatter:k,domain:[0,y]}),n.jsx(xe,{content:n.jsx(tt,{mode:t})}),n.jsx(pe,{type:"linear",dataKey:"rx",name:"RX",stroke:u,strokeWidth:2.5,strokeOpacity:.9,dot:!1,connectNulls:!1,isAnimationActive:!1}),n.jsx(pe,{type:"linear",dataKey:"tx",name:"TX",stroke:m,strokeWidth:2.5,strokeOpacity:.9,dot:!1,connectNulls:!1,isAnimationActive:!1})]})})]}),n.jsxs("div",{className:"flex-shrink-0 flex items-center justify-between mt-2",children:[n.jsxs("div",{className:"flex items-center gap-4 text-xs font-mono pl-11",children:[n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("div",{className:"w-4 h-0.5",style:{backgroundColor:u}}),n.jsx("span",{className:"text-text-muted",children:"RX"})]}),n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("div",{className:"w-4 h-0.5",style:{backgroundColor:m}}),n.jsx("span",{className:"text-text-muted",children:"TX"})]}),n.jsx("span",{className:"text-text-muted",children:"share"===t?"Bytes":"Utilization"})]}),n.jsxs("div",{className:"text-right pr-2",children:[n.jsx("span",{className:"font-mono font-bold text-xl text-text-primary",children:v.total}),n.jsx("span",{className:"text-xs text-text-muted ml-2",children:v.isHovered?"bucket":"total"})]})]})]})}function nt({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 rt({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(l,{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(i,{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("trend"),className:"toggle-group-item "+("trend"===e?"active":""),title:"Trend line chart",children:n.jsx(c,{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(d,{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(u,{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(h,{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(x,{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 it=r.memo(function({packets:e,startTs:t,endTs:s,bucketCount:a,radioConfig:l=Xe,mode:i="share",smoothing:o="raw",noiseFloorAnomalies:c=null,showNoiseFloorOverlay:d=!1,overlayOpacity:u=.5}){const m=Z(),[h,x]=r.useState(null),[p,f]=r.useState([]),b=r.useRef(null),y=r.useRef(0);r.useEffect(()=>{const t=Math.abs(e.length-y.current);if(0===t&&p.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,p.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:Ie(a),totalCount:n});return s.sort((e,t)=>t.totalCount-e.totalCount)}(p),[p]),j=r.useMemo(()=>function(e,t,s,a,n,r){const l=s-t,i=l/a,o=1e3*i,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)/i),a-1),l=`TYPE_${d.type??d.payload_type??-1}`;c[r].counts[l]=(c[r].counts[l]??0)+1,c[r].total++;const o=L(d),u=D(o,{spreadingFactor:n.sf,bandwidthHz:n.bw,codingRate:n.cr,preambleLength:n.preamble});c[r].airtimes[l]=(c[r].airtimes[l]??0)+u,c[r].totalAirtime+=u}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}(p,t,s,a,l,v),[p,t,s,a,l,v]),N=r.useMemo(()=>Ge.getBuckets(p,t,s,l),[p,t,s,l]),w=r.useMemo(()=>v.reduce((e,t)=>e+t.totalCount,0),[v]),{sortedTypes:k,aggregateShares:M}=r.useMemo(()=>{const e=new Map;if("share"===i){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,i,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?l.counts[e.key]/l.total*100:0;n.push(l)}return n}(e,0,s),r=n.length,l=s.length,i=Array.from({length:l},()=>new Array(r).fill(0));for(let m=0;m0?(e.counts[a]??0)/e.total:0}else{let t=0;for(let a=0;a0?r/t:0}}}const o=Array.from({length:l},()=>new Array(r).fill(0));for(let m=0;mfunction(e,t){switch(t){case"zlema":return Ke(e,6);case"ema":return Ke(e,12);case"smooth":return Ke(e,24);case"ultra":return Ke(e,96);default:return e}}(e,a)),d=Array.from({length:l},()=>new Array(r).fill(0));for(let m=0;m0?c[m-1][e]:0;let s=c[m][e]-t;s<0&&(s=0),s>1&&(s=1),d[m][e]=s}for(let m=0;m0&&Math.abs(e-1)>1e-6){const t=1/e;for(let e=0;e{x(e)},[]),[T,P]=r.useState(null),$=r.useCallback(e=>{P(e)},[]),R=r.useMemo(()=>{if(null===T||!C[T])return null;const e=C[T];return{timestamp:e.timestamp,timeLabel:e.time,items:k.map(t=>({key:t.key,label:t.label,value:e[t.key]??0,color:qe(t.typeNum)}))}},[T,C,k]),F=r.useMemo(()=>({timestamps:C.map(e=>e.timestamp),series:k.map(e=>({key:e.key,label:e.label,color:qe(e.typeNum),values:C.map(t=>t[e.key]??0)}))}),[C,k]);return 0===p.length?0===e.length?n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(g,{className:"w-6 h-6 mr-2 opacity-50"}),n.jsx("span",{children:"No packet data available"})]}):null:"mosaic"===o?n.jsx(Je,{sortedTypes:k,aggregateShares:M}):"stats"===o?n.jsx(et,{statsBuckets:N,mode:i,packets:p,startTs:t,endTs:s,radioConfig:l,sortedTypes:k,aggregateShares:M,noiseFloorAnomalies:c,showNoiseFloorOverlay:d,overlayOpacity:u}):"trend"===o?n.jsx(at,{packets:p,mode:i,startTs:t,endTs:s,radioConfig:l,bucketCount:a}):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(_,{timestamps:F.timestamps,series:F.series,highlightedKey:h,cursorColor:m.cursor,onHover:$})})}),n.jsx(Ye,{sortedTypes:k,highlightedType:h,onTypeHover:S,aggregateShares:M,hoverData:R})]})}),ot={"1x":1,"2x":2,"4x":4,"8x":8,"16x":16,"36x":36},ct=[1,5,10,25,50,100,150];function dt(e,t,s,a){const n=Math.PI/180,r=(a-t)*n,l=e*n,i=s*n,o=Math.sin(r)*Math.cos(i),c=Math.cos(l)*Math.sin(i)-Math.sin(l)*Math.cos(i)*Math.cos(r);return(180*Math.atan2(o,c)/Math.PI+360)%360}function ut(e,t,s,a){const n=Math.PI/180,r=(s-e)*n,l=(a-t)*n,i=Math.sin(r/2)**2+Math.cos(e*n)*Math.cos(s*n)*Math.sin(l/2)**2;return 12742*Math.atan2(Math.sqrt(i),Math.sqrt(1-i))}const mt=[{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 ht(e,t){return t[re(e)]||"#808080"}const xt=r.memo(function({neighbors:e,quickNeighbors:t,localLat:s,localLon:a,onStatsChange:l}){const[i,o]=r.useState(null),[c,d]=r.useState(new Set),[u,m]=r.useState({width:0,height:0}),[h,x]=r.useState("1x"),[p,g]=r.useState(1),f=r.useRef(null),y=r.useRef({}),v=r.useRef(null),j=r.useRef(null),N=r.useRef(p);N.current=p;const w=ae(),k=te(),M=ne(),C=se();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&&m({width:e,height:s})}});t.observe(e);const s=e.getBoundingClientRect();return s.width>0&&s.height>0&&m({width:s.width,height:s.height}),()=>t.disconnect()},[]);const S=r.useMemo(()=>{const e=new Set;if(t)for(const s of t)e.add(s.hash);return e},[t]),T=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:$,totalNeighbors:R,zeroHopCount:F}=r.useMemo(()=>{const t=[];for(const[r,l]of Object.entries(e)){if(!l.latitude||!l.longitude||0===l.latitude||0===l.longitude)continue;if(!S.has(r))continue;const e=dt(s,a,l.latitude,l.longitude),n=ut(s,a,l.latitude,l.longitude),i=T.get(r);t.push({hash:r.slice(0,8),name:l.node_name||l.name||"Unknown",snr:(null==i?void 0:i.snr)??l.snr??null,rssi:(null==i?void 0:i.rssi)??l.rssi??null,bearing:e,distance:n,normalizedDistance:0,lastSeen:l.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,S,T]);r.useEffect(()=>{null==l||l({zeroHopCount:F,totalCount:R,maxDistanceKm:$})},[F,R,$]),r.useEffect(()=>{const e=ot[h],t=N.current;f.current&&cancelAnimationFrame(f.current);const s=performance.now(),a=n=>{const r=n-s,l=Math.min(r/400,1),i=(o=l)<.5?8*o*o*o*o:1-Math.pow(-2*o+2,4)/2;var o;g(t+(e-t)*i),f.current=l<1?requestAnimationFrame(a):null};return f.current=requestAnimationFrame(a),()=>{f.current&&cancelAnimationFrame(f.current)}},[h]);const A=$/p,L=r.useMemo(()=>ct.filter(e=>e<=1.1*A),[A]);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,E=r.useMemo(()=>{const{width:e,height:t}=u,s=e/2,a=t/2,n=Math.max(10,e/2-12),r=Math.max(10,t/2-12),l=Math.max(10,n-16),i=Math.max(10,r-16);return{width:e,height:t,centerX:s,centerY:a,maxRadiusX:l,maxRadiusY:i,labelRadiusX:n,labelRadiusY:r,cornerRadius:.2*Math.min(l,i)}},[u]),{width:B,height:_,centerX:H,centerY:z,maxRadiusX:O,maxRadiusY:W,labelRadiusX:V,labelRadiusY:q,cornerRadius:G}=E,I=r.useCallback((e,t=1)=>{const s=O*t,a=W*t,n=Math.min(G*t,s,a),r=(e%360+360)%360,l=r*Math.PI/180,i=180*Math.atan2(a-n,s-n)/Math.PI;let o,c;if(r<=45-i||r>315+i){const e=Math.tan(l);o=Math.max(H-s+n,Math.min(H+s-n,H+a*e*(s/a))),c=z-a}else if(r>45-i&&r<=45+i)o=H+s-n+n*Math.sin(l),c=z-a+n-n*Math.cos(l);else if(r>45+i&&r<=135-i){const e=1/Math.tan(l);c=Math.max(z-a+n,Math.min(z+a-n,z-s*e*(a/s))),o=H+s}else if(r>135-i&&r<=135+i)o=H+s-n+n*Math.sin(l),c=z+a-n-n*Math.cos(l);else if(r>135+i&&r<=225-i){const e=Math.tan(l);o=Math.max(H-s+n,Math.min(H+s-n,H-a*e*(s/a))),c=z+a}else if(r>225-i&&r<=225+i)o=H-s+n+n*Math.sin(l),c=z+a-n-n*Math.cos(l);else if(r>225+i&&r<=315-i){const e=1/Math.tan(l);c=Math.max(z-a+n,Math.min(z+a-n,z-s*e*(a/s))),o=H-s}else o=H-s+n+n*Math.sin(l),c=z-a+n-n*Math.cos(l);return{x:o,y:c}},[H,z,O,W,G]),X=r.useCallback((e,t)=>{const s=I(e,1);return{x:H+(s.x-H)*t,y:z+(s.y-z)*t}},[I,H,z]),K=r.useCallback(e=>({N:{x:H,y:z-q},S:{x:H,y:z+q},E:{x:H+V,y:z},W:{x:H-V,y:z},NE:{x:H+V,y:z-q},SE:{x:H+V,y:z+q},SW:{x:H-V,y:z+q},NW:{x:H-V,y:z-q}}[e]),[H,z,V,q]),Y=r.useCallback(e=>{const t=O*e,s=W*e,a=Math.min(G*e,t,s),n=H-t,r=H+t,l=z-s,i=z+s;return[`M ${n+a} ${l}`,`L ${r-a} ${l}`,`Q ${r} ${l} ${r} ${l+a}`,`L ${r} ${i-a}`,`Q ${r} ${i} ${r-a} ${i}`,`L ${n+a} ${i}`,`Q ${n} ${i} ${n} ${i-a}`,`L ${n} ${l+a}`,`Q ${n} ${l} ${n+a} ${l}`,"Z"].join(" ")},[H,z,O,W,G]),Q=r.useCallback(e=>{o(e)},[]),U=r.useCallback(e=>{x(e)},[]),J=r.useCallback(e=>$<=0?0:e/$*p,[$,p]),Z=e=>`${e}km`,ee=r.useMemo(()=>{const e=L.map(e=>{const t=e/$*p;return{km:e,scale:t,labelY:z-W*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},[L,$,p,z,W]),re=u.width>0&&u.height>0;return D?0===R?n.jsxs("div",{ref:v,className:"flex flex-col items-center justify-center h-full text-text-muted",children:[n.jsx(b,{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:re&&n.jsxs("svg",{width:B,height:_,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:Y(1)})})]}),L.map(e=>{const t=J(e);if(t>1.05||t<.02)return null;const s=ee.some(t=>t.km===e),a=H+O*t*.71,r=z-W*t*.71;return n.jsxs("g",{children:[n.jsx("path",{d:Y(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?H:"E"===e?H+O:H-O,a=t?"N"===e?z-W:z+W:z;return n.jsx("line",{x1:H,y1:z,x2:s,y2:a,stroke:C.primary,strokeOpacity:.15,strokeWidth:1,strokeDasharray:"4 4"},e)}),["NE","SE","SW","NW"].map(e=>{const t=K(e);return n.jsx("line",{x1:H,y1:z,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=K(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=K(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:H,cy:z,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=$>0?e.distance/$*p:0;if(t>1)return null;const{x:s,y:a}=X(e.bearing,t),r=null!==e.snr?ht(e.snr,w):"#808080",l=(null==i?void 0:i.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"}),l&&n.jsx("circle",{cx:s,cy:a,r:10.5,fill:r,opacity:.3}),n.jsx("circle",{cx:s,cy:a,r:l?7:5,fill:r,stroke:"rgba(0,0,0,0.5)",strokeWidth:1,style:{cursor:"pointer",transition:"r 0.15s"},onMouseEnter:()=>Q(e),onMouseLeave:()=>Q(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:()=>U(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))}),i&&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:i.name}),n.jsx("div",{className:"text-text-muted text-xs font-mono",children:i.hash}),null!==i.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:ht(i.snr,w)},children:[i.snr.toFixed(1)," dB"]}),n.jsxs("span",{className:"text-text-muted ml-1",children:["(",(le=i.snr,(null==(ie=mt.find(e=>le>=e.min))?void 0:ie.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:[i.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:[i.bearing.toFixed(0),"°"]})]})]})]})]}):n.jsxs("div",{ref:v,className:"flex flex-col items-center justify-center h-full text-text-muted",children:[n.jsx(b,{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 le,ie});function pt(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 gt=r.memo(function({timestamps:e,values:t,onStatsChange:s}){var a,l;const i=te(),[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:pt(n,5),p95:pt(n,95)}},[t]);r.useEffect(()=>{null==s||s(d)},[d]);const u=r.useCallback(()=>{c(e=>!e)},[]),{heatmapData:m,xLabels:h,yLabels:x}=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],l=e[e.length-1]-r||1,i=new Float32Array(2*e.length);for(let o=0;ole(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&&b({width:e,height:s})}});t.observe(e);const s=e.getBoundingClientRect();return s.width>0&&s.height>0&&b({width:s.width,height:s.height}),()=>t.disconnect()},[]),r.useEffect(()=>{const e=p.current;if(!e||!m||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:l}=m,{r:i,g:o,b:c}=N,d=Math.max(3,Math.min(8,s/l*4));t.globalCompositeOperation="source-over";for(let u=0;un.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:p,className:"absolute inset-0 w-full h-full","aria-hidden":"true"}),n.jsx("button",{type:"button",onClick:u,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(y,{className:"w-3.5 h-3.5 text-text-muted","aria-hidden":"true"}):n.jsx(v,{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"})}),ft={repeater:"var(--signal-critical)",companion:"var(--accent-tertiary)",room_server:"var(--accent-secondary)"};function bt(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 yt=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=bt(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:ft.repeater},{label:"Companions",count:t.companion,percent:0,color:ft.companion},{label:"Room Servers",count:t.room_server,percent:0,color:ft.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 vt({children:e,minHeight:t="100%",rootMargin:s="200px 0px",keepMounted:a=!0,className:l=""}){const i=r.useRef(null),[o,c]=r.useState(!1),[d,u]=r.useState(!1);r.useEffect(()=>{const e=i.current;if(!e)return;const t=new IntersectionObserver(([e])=>{const t=e.isIntersecting;u(t),t&&c(!0)},{rootMargin:s,threshold:0});return t.observe(e),()=>{t.disconnect()}},[s]);const m=d||a&&o;return n.jsx("div",{ref:i,className:`h-full w-full ${l}`,style:{minHeight:t},children:m?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 jt={excellent:"text-signal-excellent",good:"text-signal-good",fair:"text-signal-fair",poor:"text-signal-critical"},Nt={excellent:"bg-signal-excellent/10",good:"bg-signal-good/10",fair:"bg-signal-fair/10",poor:"bg-signal-critical/10"},wt={excellent:"bg-signal-excellent",good:"bg-signal-good",fair:"bg-signal-fair",poor:"bg-signal-critical"};function kt({value:e,status:t}){return n.jsx("div",{className:"w-full h-2 bg-surface-elevated rounded-full overflow-hidden",children:n.jsx("div",{className:`h-full ${wt[t]} transition-all duration-300`,style:{width:`${Math.min(100,Math.max(0,e))}%`}})})}function Mt(){const e=z(),t=O(),[s,a]=r.useState(null),l=r.useCallback((e,t)=>{a({prefix:e,candidateHashes:t})},[]),i=r.useCallback(()=>{a(null)},[]);if(!t)return n.jsxs(fe,{children:[n.jsx(be,{icon:n.jsx(j,{}),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(N,{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=(u=e.collisionRate)<=10?"excellent":u<=25?"good":"poor";var u;const m="poor"===o||"poor"===d?"poor":"fair"===o||"fair"===d?"fair":"good"===o||"good"===d?"good":"excellent",h="excellent"===m||"good"===m?w:k;return n.jsxs(fe,{className:"flex flex-col overflow-hidden",children:[n.jsx(be,{icon:n.jsx(j,{}),title:"Prefix Conflicts",largeTitle:!0,actions:n.jsxs("div",{className:`flex items-center gap-1.5 px-2.5 py-1 rounded-full ${Nt[m]}`,children:[n.jsx(h,{className:`w-3.5 h-3.5 ${jt[m]}`}),n.jsx("span",{className:`type-data-xs font-medium ${jt[m]}`,children:"excellent"===m?"Excellent":"good"===m?"Good":"fair"===m?"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 ${jt[o]}`,children:[(100*e.avgConfidence).toFixed(1),"%"]})]}),n.jsx(kt,{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 ${jt[d]}`,children:[e.collisionRate.toFixed(1),"%"]})]}),n.jsx(kt,{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:()=>l(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(k,{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(w,{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(je,{isOpen:!!s,prefix:(null==s?void 0:s.prefix)||"",candidateHashes:(null==s?void 0:s.candidateHashes)||[],onClose:i})]})}function Ct({icon:e,label:t,value:s,sublabel:a,highlight:r,tooltip:l}){return n.jsxs("div",{className:"flex items-center justify-between py-2 "+(l?"cursor-help":""),title:l,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 St(){const e=W(),t=V().length;if(!e||0===e.totalPaths)return null;const{totalPaths:s,pathsWithGhosts:a,observationOverrideCount:r,tracePacketsProcessed:l,pathPacketsProcessed:i,distantEdgesDiscovered:o,duplicateGroupsFound:c,duplicatePathsUnique:d,echolocationEdgesInferred:u}=e,m=s>0?((s-a)/s*100).toFixed(1):"0",h=s>0?(a/s*100).toFixed(1):"0",p=s>0?(r/s*100).toFixed(1):"0",g=l+i,f=g>0||o>0,b=c>0||u>0;return n.jsxs(fe,{children:[n.jsx(be,{title:"Path Decoder",icon:n.jsx(M,{}),largeTitle:!0,badge:t>0?`${t} hidden`:void 0}),n.jsxs(ke,{children:[n.jsx("p",{className:"type-data-xs text-text-muted mb-3",children:"Decodes packet routes to map your mesh topology and discover hidden repeaters."}),n.jsxs("div",{className:"divide-y divide-white/5",children:[n.jsx(Ct,{icon:n.jsx(C,{className:"w-3.5 h-3.5"}),label:"Traceable",value:`${m}%`,sublabel:`of ${s.toLocaleString()} paths`,highlight:parseFloat(m)>=90,tooltip:"Percentage of packet journeys where every hop was identified. Higher = better visibility into how traffic flows through your mesh."}),n.jsx(Ct,{icon:n.jsx(S,{className:"w-3.5 h-3.5"}),label:"Hidden Nodes",value:a.toLocaleString(),sublabel:`paths (${h}%)`,highlight:a>0,tooltip:"Paths containing unidentified repeaters. These 'ghost' nodes forward traffic but haven't announced themselves via ADVERT — possibly distant or newly added nodes."}),n.jsx(Ct,{icon:n.jsx(T,{className:"w-3.5 h-3.5"}),label:"Learning Rate",value:`${p}%`,sublabel:"adapted",tooltip:"How often real traffic patterns improved our predictions over geography alone. Higher values mean the decoder is learning your mesh's actual behavior — which routes are preferred, which nodes are most active."})]}),f&&n.jsxs("div",{className:"mt-3 pt-3 border-t border-border-subtle",children:[n.jsx("p",{className:"type-micro mb-2",children:"Beyond Line-of-Sight"}),n.jsxs("div",{className:"divide-y divide-white/5",children:[n.jsx(Ct,{icon:n.jsx(P,{className:"w-3.5 h-3.5"}),label:"Route Reports",value:g.toLocaleString(),sublabel:l>0?`(${l} TRACE)`:void 0,tooltip:"TRACE/PATH packets from distant nodes share their routing tables. This reveals connections we can't directly observe — mapping parts of the mesh we don't touch."}),n.jsx(Ct,{icon:n.jsx($,{className:"w-3.5 h-3.5"}),label:"Remote Links",value:o.toLocaleString(),highlight:o>0,tooltip:"Node-to-node connections discovered from route reports. These links exist outside our RF range but help complete the topology picture."})]})]}),b&&n.jsxs("div",{className:"mt-3 pt-3 border-t border-border-subtle",children:[n.jsx("p",{className:"type-micro mb-2",children:"Echo Analysis"}),n.jsxs("div",{className:"divide-y divide-white/5",children:[n.jsx(Ct,{icon:n.jsx(R,{className:"w-3.5 h-3.5"}),label:"Multi-Path Packets",value:c.toLocaleString(),sublabel:d>0?`(${d} routes)`:void 0,tooltip:"Packets received via multiple paths simultaneously. Like sonar, these 'echoes' reveal redundant routes — important for understanding mesh resilience."}),n.jsx(Ct,{icon:n.jsx(x,{className:"w-3.5 h-3.5"}),label:"Inferred Links",value:u.toLocaleString(),highlight:u>0,tooltip:"Connections discovered from echo patterns. When the same packet arrives via different forwarders nearly simultaneously, those forwarders likely hear each other."})]})]}),t>0&&n.jsx("div",{className:"mt-3 pt-3 border-t border-border-subtle cursor-help",title:"High-confidence hidden repeaters: appear in 10+ paths, have 2+ known neighbors, ≥30% confidence, and plausible location. View them on the Contacts map.",children:n.jsxs("p",{className:"type-label text-text-muted",children:[n.jsx("span",{className:"text-accent-tertiary type-data-sm",children:t})," ","likely repeater",1!==t?"s":""," discovered from traffic patterns"]})})]})]})}function Tt(){var e,t,s,a,l,i,o,c,d,u,m,h,x,p,f,y,v;const j=q(),N=G(),w=I(),k=X(),M=K(),[C,S]=r.useState([]),[T,P]=r.useState(null),[$,L]=r.useState(null),[D,E]=r.useState(!0),[B,_]=r.useState(null),[H,z]=r.useState(5),[O,W]=r.useState("share"),[V,Z]=r.useState("stats"),[ee,te]=r.useState(!1),[se,ae]=r.useState(!1),[ne,re]=r.useState(Me),[le,ie]=r.useState(.5),oe=Y[H].hours,ce=60*oe,de=Y[H],ue=U(oe),me=r.useCallback(e=>{r.startTransition(()=>z(e))},[]),he=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==(i=null==(l=null==j?void 0:j.config)?void 0:l.radio)?void 0:i.coding_rate,null==(c=null==(o=null==j?void 0:j.config)?void 0:o.radio)?void 0:c.preamble_length]);r.useEffect(()=>{!async function(){var e;_(null);try{const t=await Q(oe);t.success&&(null==(e=t.data)?void 0:e.history)&&S(t.data.history)}catch(t){_(t instanceof Error?t.message:"Failed to load chart data")}finally{E(!1)}}()},[oe]);const xe=r.useMemo(()=>72===oe?6e5:168===oe?18e5:336===oe?36e5:3e5,[oe]),pe=r.useCallback(async()=>{var e;try{const t=await Q(oe);t.success&&(null==(e=t.data)?void 0:e.history)&&S(t.data.history)}catch{}},[oe]);J(pe,xe,!0,!0);const je=r.useMemo(()=>0===C.length?{timestamps:[],values:[]}:{timestamps:C.map(e=>e.timestamp),values:C.map(e=>e.noise_floor_dbm)},[C]),ke=r.useMemo(()=>{if(C.length<10)return{anomalies:[],debug:void 0};const e=function(e,t={}){const s={...Me,...t};if(e.length<10)return{anomalies:[],thresholds:Se([]),totalSamples:e.length,anomalySamples:0};const a=e.map(e=>e.noise_floor_dbm),n=Se(a),r=[...a].sort((e,t)=>e-t);let l,i;s.useAbsoluteThresholds?(l=s.baselineDbm,i=s.spikeDbm):(l=Ce(r,s.baselinePercentile),i=Ce(r,s.spikePercentile));const o=[...e].sort((e,t)=>e.timestamp-t.timestamp),c=[];let d=null,u=0;for(const m of o)if(m.noise_floor_dbm>l&&m.noise_floor_dbme+t,0)/d.values.length):(d.values.length>=s.minSequenceLength&&c.push(d),d={startTs:m.timestamp,endTs:m.timestamp,values:[m.noise_floor_dbm],timestamps:[m.timestamp],rollingAvg:m.noise_floor_dbm})}else d={startTs:m.timestamp,endTs:m.timestamp,values:[m.noise_floor_dbm],timestamps:[m.timestamp],rollingAvg:m.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:u,debug:{baselineCutoff:l,spikeCutoff:i,midBandSamples:u}}:{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:Te(s,l,i),sampleCount:e.values.length}}),thresholds:n,totalSamples:e.length,anomalySamples:u,debug:{baselineCutoff:l,spikeCutoff:i,midBandSamples:u}}}(C,ne);return{anomalies:e.anomalies,debug:e.debug}},[C,ne]),Pe=ke.anomalies,$e=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]),Re=r.useMemo(()=>{const e=Date.now()/1e3-3600*oe;return Object.fromEntries(Object.entries($e).filter(([,t])=>t.last_seen>=e))},[$e,oe]),Fe=r.useMemo(()=>{const e=60*ce/ue,t=Math.floor(Date.now()/1e3),s=Math.floor(t/e)*e;return{start:s-60*ce,end:s}},[ce,ue]);return n.jsxs(ye,{children:[n.jsx(ve,{title:"Statistics",icon:n.jsx(F,{}),controls:n.jsx(ge,{ranges:Y,selectedIndex:H,onSelect:me})}),B&&n.jsx(fe,{className:"border border-accent-red/50 bg-accent-red/10",children:n.jsx("p",{className:"text-accent-red",children:B})}),ee&&se&&n.jsxs(fe,{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:["(",de.label,")"]})]}),n.jsx("button",{onClick:()=>re(e=>({...e,useAbsoluteThresholds:!e.useAbsoluteThresholds})),className:"type-data-xs px-2 py-1 rounded transition-colors "+(ne.useAbsoluteThresholds?"bg-accent-purple/30 text-accent-purple":"bg-glass-elevated text-text-muted hover:text-text-secondary"),children:ne.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==(u=null==(d=ke.debug)?void 0:d.baselineCutoff)?void 0:u.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==(m=ke.debug)?void 0:m.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==(x=ke.debug)?void 0:x.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:Pe.length})]})]}),n.jsxs("div",{className:"mt-4 pt-4 border-t border-border-subtle space-y-4",children:[ne.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 (",ne.baselineDbm," dBm)"]}),n.jsx("input",{type:"range",min:"-120",max:"-60",value:ne.baselineDbm,onChange:e=>re(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 (",ne.spikeDbm," dBm)"]}),n.jsx("input",{type:"range",min:"-100",max:"-20",value:ne.spikeDbm,onChange:e=>re(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 (",ne.mergeGapSeconds,"s)"]}),n.jsx("input",{type:"range",min:"5",max:"120",step:"5",value:ne.mergeGapSeconds,onChange:e=>re(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 (",ne.minSequenceLength,")"]}),n.jsx("input",{type:"range",min:"2",max:"20",value:ne.minSequenceLength,onChange:e=>re(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 (±",ne.similarityToleranceDbm," dBm)"]}),n.jsx("input",{type:"range",min:"1",max:"15",value:ne.similarityToleranceDbm,onChange:e=>re(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*le),"%)"]}),n.jsx("input",{type:"range",min:"0.1",max:"1",step:"0.05",value:le,onChange:e=>ie(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",ne.baselinePercentile,")"]}),n.jsx("input",{type:"range",min:"1",max:"50",value:ne.baselinePercentile,onChange:e=>re(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",ne.spikePercentile,")"]}),n.jsx("input",{type:"range",min:"50",max:"99",value:ne.spikePercentile,onChange:e=>re(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 (",ne.mergeGapSeconds,"s)"]}),n.jsx("input",{type:"range",min:"5",max:"120",step:"5",value:ne.mergeGapSeconds,onChange:e=>re(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 (",ne.minSequenceLength,")"]}),n.jsx("input",{type:"range",min:"2",max:"20",value:ne.minSequenceLength,onChange:e=>re(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 (±",ne.similarityToleranceDbm," dBm)"]}),n.jsx("input",{type:"range",min:"1",max:"15",value:ne.similarityToleranceDbm,onChange:e=>re(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*le),"%)"]}),n.jsx("input",{type:"range",min:"0.1",max:"1",step:"0.05",value:le,onChange:e=>ie(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:[ne.useAbsoluteThresholds?`useAbsoluteThresholds: true, baselineDbm: ${ne.baselineDbm}, spikeDbm: ${ne.spikeDbm}`:`useAbsoluteThresholds: false, baselinePercentile: ${ne.baselinePercentile}, spikePercentile: ${ne.spikePercentile}`,", mergeGapSeconds: ",ne.mergeGapSeconds,", minSequenceLength: ",ne.minSequenceLength,", similarityToleranceDbm: ",ne.similarityToleranceDbm]})]})]})]}),D?n.jsx(Ne,{template:"auto",children:n.jsx(fe,{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(Ne,{template:"hero-auto",children:n.jsxs(fe,{isLoaded:M,skeletonType:"chart",children:[n.jsx(be,{icon:n.jsx(g,{}),title:"Packet Analyzer",badge:de.label,largeTitle:!0,actions:n.jsxs("div",{className:"flex flex-wrap items-center gap-2 justify-end",children:["stats"===V&&n.jsx(rt,{enabled:ee,onChange:te,anomalyCount:Pe.length,showTuning:se,onTuningChange:ae}),n.jsx(lt,{smoothing:V,onChange:Z}),n.jsx(nt,{mode:O,onChange:W})]})}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(it,{packets:k,startTs:Fe.start,endTs:Fe.end,bucketCount:ue,radioConfig:he??void 0,mode:O,smoothing:V,noiseFloorAnomalies:Pe,showNoiseFloorOverlay:ee,overlayOpacity:le})})]})}),n.jsxs(Ne,{template:"panel",children:[n.jsx(we,{span:12,md:6,children:n.jsxs(fe,{isLoaded:M,skeletonType:"chart",children:[n.jsx(be,{icon:n.jsx(b,{}),title:"Link Quality",badge:de.label,largeTitle:!0,actions:$?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:$.zeroHopCount})," nbr"]}),n.jsxs("span",{children:[n.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:$.totalCount})," obs"]}),n.jsxs("span",{children:[n.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:$.maxDistanceKm.toFixed(0)})," km"]})]}):null}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(vt,{children:n.jsx(xt,{neighbors:Re,quickNeighbors:w,localLat:(null==(f=null==(p=null==j?void 0:j.config)?void 0:p.repeater)?void 0:f.latitude)??0,localLon:(null==(v=null==(y=null==j?void 0:j.config)?void 0:y.repeater)?void 0:v.longitude)??0,onStatsChange:L})})})]})}),n.jsx(we,{span:12,md:6,children:n.jsxs(fe,{isLoaded:M,skeletonType:"chart",children:[n.jsx(be,{icon:n.jsx(A,{}),title:"Network Composition",badge:de.label,largeTitle:!0}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(vt,{children:n.jsx(yt,{neighbors:Re})})})]})})]}),n.jsxs(Ne,{template:"panel",children:[n.jsx(we,{span:12,md:6,children:n.jsx(Mt,{})}),n.jsx(we,{span:12,md:6,children:n.jsx(St,{})})]}),n.jsx(Ne,{template:"panel",children:n.jsx(we,{span:12,children:n.jsxs(fe,{isLoaded:M,skeletonType:"chart",children:[n.jsx(be,{icon:n.jsx(R,{}),title:"RF Noise Floor",largeTitle:!0,actions:T?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:T.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:T.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:T.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(vt,{children:n.jsx(gt,{timestamps:je.timestamps,values:je.values,onStatsChange:P})})})]})})})]})]})}export{Tt as default}; +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,aB as l,H as i,aC as o,aD as c,aE as d,aF as u,aG as m,aH as h,aI as x,aJ as p,aK as g,o as f,aL as b,aM as y,aN as v,aO as j,aP as N,aQ as w,a7 as k,aR as M,aj as C,h as S,ad as T,aS as P,ab as $,p as F,C as R,as as A}from"./vendor-react-O8XH9yVn.js";import{O as L,Q as D,S as E,U as B,V as _,q as H,W as z,X as O,B as W,Y as V,d as q,h as G,f as I,u as X,m as K,Z as Y,j as Q,_ as U}from"./index-Dp0UlTio.js";import{u as J}from"./usePolling-UdPi_fKb.js";import{a as Z,u as ee,b as te,c as se,d as ae,e as ne,s as re,p as le}from"./useThemeColors-CD0TSU03.js";import{c as ie,R as oe,d as ce,L as de,C as ue,X as me,Y as he,T as xe,a as pe}from"./recharts-BU7auunF.js";import{T as ge}from"./TimeRangeSelector-9pGCd7oa.js";import{a as fe,c as be,P as ye,b as ve}from"./PageLayout-DE5PEtD2.js";import{C as je}from"./CollisionExplorerModal-DEtEH0fD.js";import{R as Ne,C as we}from"./Grid-CIZAny_R.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";import"./leaflet-D_ckmI2R.js";function ke({children:e,centered:t,className:s}){return n.jsx("div",{className:ie("flex-1 min-h-0",t&&"flex items-center justify-center",s),children:e})}const Me={useAbsoluteThresholds:!0,baselinePercentile:6,spikePercentile:50,baselineDbm:-107,spikeDbm:-100,mergeGapSeconds:45,minSequenceLength:16,similarityToleranceDbm:5};function Ce(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 Se(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:Ce(t,50),p90:Ce(t,90),p95:Ce(t,95),p99:Ce(t,99),max:t[t.length-1],min:t[0]}}function Te(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"}r.memo(function({options:e,data:t,className:s="",onCreate:a}){const l=r.useRef(null),i=r.useRef(null);return r.useEffect(()=>{const s=l.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 i.current=c,null==a||a(c),()=>{c.destroy(),i.current=null}},[e]),r.useEffect(()=>{i.current&&t&&i.current.setData(t)},[t]),r.useEffect(()=>{const e=l.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t||!i.current)return;const{width:s,height:a}=t.contentRect;s>0&&a>0&&i.current.setSize({width:Math.floor(s),height:Math.floor(a)})});return t.observe(e),()=>{t.disconnect()}},[]),n.jsx("div",{ref:l,className:`w-full h-full ${s}`,style:{minHeight:100}})});const Pe=new Map;function $e(e){var t;if(!e.startsWith("var("))return e;const s=Pe.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",l=getComputedStyle(document.documentElement).getPropertyValue(n).trim()||r;return Pe.set(e,l),l}function Fe(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{x.current=e,p.current=t,g.current=a,f.current=s});const y=r.useRef({band:l,innerBand:i,mean:o,median:c,average:d,cursor:u});r.useLayoutEffect(()=>{y.current={band:l,innerBand:i,mean:o,median:c,average:d,cursor:u}});const v=r.useMemo(()=>[e.map(e=>e.timestamp),e.map(e=>e.max)],[e]),j=r.useMemo(()=>{const e=function(e,t,s,a){return{hooks:{draw:n=>{const r=e.current,l=t.current,i=s.current,o=a.current;if(0===r.length)return;const c=n.ctx,d=n.bbox,u=d.left,m=d.top,h=d.width,x=d.height;if(h<=0||x<=0)return;const p=n.data[0],g=p.length;if(0===g)return;const f=p[0],b=p[g-1]-f||1,y=e=>u+(e-f)/b*h,v=e=>m+x*(1-e/l),j={min:r.map(e=>({x:y(e.timestamp),y:v(e.min)})),max:r.map(e=>({x:y(e.timestamp),y:v(e.max)})),p5:r.map(e=>({x:y(e.timestamp),y:v(e.p5)})),p95:r.map(e=>({x:y(e.timestamp),y:v(e.p95)})),p25:r.map(e=>({x:y(e.timestamp),y:v(e.p25)})),p75:r.map(e=>({x:y(e.timestamp),y:v(e.p75)})),mean:r.map(e=>({x:y(e.timestamp),y:v(e.mean)})),median:r.map(e=>({x:y(e.timestamp),y:v(e.median)})),average:r.map(e=>({x:y(e.timestamp),y:v(e.average)}))},N=(e,t)=>i?i===e?Math.min(1,1.5*t):"minMax"===i||"p5p95"===i||"p25p75"===i?.3*t:t:t,w=e=>i?i===e?1:"mean"===i||"median"===i||"average"===i?.3:1:1,k={band:$e(o.band),innerBand:$e(o.innerBand),mean:$e(o.mean),median:$e(o.median),average:$e(o.average)};c.save(),c.strokeStyle=k.average,c.lineWidth=4,c.globalAlpha=w("average"),Fe(c,j.average),c.stroke(),c.globalAlpha=N("minMax",.15),c.fillStyle=k.band,c.beginPath(),Fe(c,j.max);const M=[...j.min].reverse();for(const e of M)c.lineTo(e.x,e.y);c.closePath(),c.fill(),c.globalAlpha=N("p5p95",.3),c.fillStyle=k.band,c.beginPath(),Fe(c,j.p95);const C=[...j.p5].reverse();for(const e of C)c.lineTo(e.x,e.y);c.closePath(),c.fill(),c.globalAlpha=N("p25p75",.55),c.fillStyle=k.innerBand,c.beginPath(),Fe(c,j.p75);const S=[...j.p25].reverse();for(const e of S)c.lineTo(e.x,e.y);c.closePath(),c.fill(),c.strokeStyle=k.median,c.lineWidth=1.5,c.globalAlpha=w("median"),c.setLineDash([4,4]),Fe(c,j.median),c.stroke(),c.strokeStyle=k.mean,c.lineWidth=1.5,c.globalAlpha=w("mean"),c.setLineDash([]),Fe(c,j.mean),c.stroke(),c.restore()}}}}(x,p,g,y);return{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:[e]}},[t]);r.useEffect(()=>{const t=m.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(),l=Math.floor(r.width)||400,i=Math.floor(r.height)||200,o=new E({...j,width:l,height:i},v,t);return h.current=o,b.current=a,()=>{o.destroy(),h.current=null}},[j,v,e.length]),r.useEffect(()=>{const e=m.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:m,className:"w-full h-full rounded-2xl overflow-hidden",onMouseLeave:N})});const Re="undefined"!=typeof window&&(null==(t=null==(e=window.matchMedia)?void 0:e.call(window,"(color-gamut: p3)"))?void 0:t.matches);function Ae(){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 Le=["min","max","p75","p95","p99","mean","median","average","midpoint"];let De=null,Ee=0;const Be={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 _e(e){return Be[e]??Be[255]}function He(e){const t=Date.now();(!De||t-Ee>1e3)&&(De={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)"}},Ee=t);const s=De;return e>=1?s.critical:e>=.75?s.poor:e>=.5?s.fair:e>=.25?s.good:s.green}function ze(e,t,s,a,n,r,l,i,o,c=null,d=null,u=1,m=null,h="airtime",x=.5){if(0===t.length)return;const p=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,S=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,T=getComputedStyle(document.documentElement),P=T.getPropertyValue("--signal-critical").trim()||"#EF4444",$=T.getPropertyValue("--bg-elevated").trim()||"#333233";p.save(),p.fillStyle="rgba(0, 0, 0, 0.4)";const F=8*v;if(p.beginPath(),p.roundRect(g,f,b,y,F),p.fill(),p.restore(),!C&&M>=20){p.save();const e=f+y*(1-20/M);p.fillStyle=$,p.globalAlpha=.5,p.fillRect(g,f,b,e-f),p.restore()}p.save(),p.lineWidth=1*v,p.setLineDash([4*v,4*v]);for(let A=S;As+n)return;const i=getComputedStyle(document.documentElement).getPropertyValue("--text-primary").trim()||"#FFFFFF";e.save(),e.strokeStyle=i,e.globalAlpha=.5,e.lineWidth=1*l,e.setLineDash([4*l,4*l]),e.beginPath(),e.moveTo(Math.round(t)+.5,a),e.lineTo(Math.round(t)+.5,a+r),e.stroke(),e.restore()}(p,m,g,f,b,y,v),l){!function(e,t,s,a,n,r,l=null,i=null,o=1,c=25){const{points:d,rawValues:u,count:m,packetTypes:h,timestamps:x}=t,p=1*o*(window.devicePixelRatio||1);e.globalCompositeOperation="source-over";const g=l?parseInt(l.replace("TYPE_",""),10):null;for(let f=0;f=i.start&&e0&&function(e,t,s,a,n,r,l,i,o,c,d=.5){if(0===t.length)return;const u=o-i||1,m=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=Re?`color(display-p3 ${m.p3r} ${m.p3g} ${m.p3b})`:`rgb(${m.r}, ${m.g}, ${m.b})`;for(const h of t){if(h.endTso)continue;const t=a+(Math.max(h.startTs,i)-i)/u*r,s=a+(Math.min(h.endTs,o)-i)/u*r,d=Math.max(s-t,2*c);e.fillRect(t,n,d,l)}e.restore()}(p,i,0,g,f,b,y,w,k,v,d?Math.max(.03,.03*x):x)}const Oe=r.memo(function({data:e,maxValue:t,visibleLines:s=Le,highlightedLine:a=null,onHover:l,scatterData:i=null,noiseFloorAnomalies:o=null,showNoiseFloorOverlay:c=!1,overlayOpacity:d=.5,highlightedType:u=null,hoveredTimeRange:m=null,timeRangeHours:h=24,yAxisMode:x="airtime"}){const p=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(l),N=r.useRef(i),w=r.useRef(o),k=r.useRef(c),M=r.useRef(u),C=r.useRef(m),S=r.useRef(null),T=r.useRef(null),P=r.useRef(x),$=r.useRef(d),F=h<=12?1.2:1,R=r.useRef(F),A=r.useRef(e.length);r.useLayoutEffect(()=>{f.current=e,b.current=t,y.current=s,v.current=a,j.current=l,N.current=i,w.current=o,k.current=c,M.current=u,C.current=m,R.current=F,P.current=x,$.current=d}),r.useEffect(()=>{S.current=Ae()},[]);const L=r.useMemo(()=>[e.map(e=>e.timestamp),new Array(e.length).fill(1)],[e]),D=r.useMemo(()=>({hooks:{draw:e=>{const t=S.current||Ae();ze(e,f.current,b.current,y.current,v.current,t,N.current,w.current,k.current,M.current,C.current,R.current,T.current,P.current,$.current)}}}),[]),B=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=p.current;if(!t||0===e.length)return;const s=A.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(L),void(A.current=a);g.current&&g.current.destroy();const r=t.getBoundingClientRect(),l=Math.floor(r.width)||400,i=Math.floor(r.height)||200,o=new E({...B,width:l,height:i},L,t);return g.current=o,A.current=a,()=>{o.destroy(),g.current=null}},[B,L,e.length]),r.useEffect(()=>{const e=p.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,i,o,c,d,u,m,F]);const _=r.useCallback(t=>{var s,a;const n=p.current,r=g.current;if(!n||!r||0===e.length)return;const l=n.getBoundingClientRect(),i=t.clientX-l.left,o=window.devicePixelRatio||1,c=r.bbox,d=c.left/o,u=c.width/o;if(id+u)return T.current=null,r.redraw(),void(null==(s=j.current)||s.call(j,null));T.current=i*o;const m=(i-d)/u,h=e.length,x=Math.floor(m*h),f=Math.max(0,Math.min(h-1,x));r.redraw(),null==(a=j.current)||a.call(j,f)},[e.length]),H=r.useCallback(()=>{var e;T.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:p,className:"w-full h-full rounded-lg overflow-hidden",onMouseMove:_,onMouseLeave:H})}),We={[B.REQ]:"var(--pkt-science-req)",[B.ANON_REQ]:"var(--pkt-science-anon-req)",[B.RESPONSE]:"var(--pkt-science-response)",[B.ACK]:"var(--pkt-science-ack)",[B.ADVERT]:"var(--pkt-science-advert)",[B.TXT_MSG]:"var(--pkt-science-txt-msg)",[B.GRP_TXT]:"var(--pkt-science-grp-txt)",[B.GRP_DATA]:"var(--pkt-science-grp-data)",[B.PATH]:"var(--pkt-science-path)",[B.TRACE]:"var(--pkt-science-trace)",[B.MULTIPART]:"var(--pkt-science-multipart)",[B.RAW_CUSTOM]:"var(--pkt-science-raw-custom)"},Ve="var(--pkt-science-unknown)";function qe(e){return"number"!=typeof e?Ve:We[e]??Ve}const Ge=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 l=0;for(const i of e){const e=i.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=L(i);c.totalAirtime+=D(d,{spreadingFactor:a.sf,bandwidthHz:a.bw,codingRate:a.cr,preambleLength:a.preamble}),this.buckets.set(o,c),e>this.lastProcessedTimestamp&&(this.lastProcessedTimestamp=e),l++}this.processedPacketCount+=l}toBucketDataArray(e,t){const s=t-e,a=Math.ceil(s/this.bucketDuration),n=s/3600,r=[];for(let l=0;l24?s.toLocaleDateString([],{weekday:"short",hour:"2-digit",minute:"2-digit",hour12:!1}):s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),i=this.buckets.get(l)??{total:0,totalAirtime:0};r.push({timestamp:t,time:a,total:i.total,totalAirtime:i.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 Ie(e){return H[e]??`TYPE_${e.toString(16).toUpperCase()}`}const Xe={sf:10,bw:25e4,cr:5,preamble:8};function Ke(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(!l)return null;const e=new Map;for(const t of l.items)e.set(t.key,t.value);return e},[l]),o=null!==i;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=qe(e.typeNum),l=(null==i?void 0:i.get(e.key))??0,c=a.get(e.key)??0,d=o?l:c,u=d>1e-4,m=t===e.key,h=t&&t!==e.key;let x="legend-item";return m?x+=" legend-item-active":h?x+=" legend-item-dimmed":o&&l>1e-4?x+=" legend-item-chart-active":o&&l<=1e-4&&(x+=" legend-item-dimmed"),n.jsxs("div",{className:x,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}),u&&n.jsxs("span",{className:"legend-value "+(o?"legend-value-live":""),children:[(100*d).toFixed(1),"%"]})]},e.key)})})})}function Qe({x:e,y:t,width:s,height:a,name:r,size:l,index:i,depth:o,hoveredIndex:c,onHover:d,total:u,typeNum:m}){if(1!==o)return null;const h=null!==c&&!(c===i),x=qe(m),p=u>0?l/u*100:0,g=s>36&&a>20,f=s>36&&a>32;return n.jsxs("g",{onMouseEnter:e=>d(i,e),onMouseLeave:()=>d(null),style:{cursor:"default"},children:[n.jsx("rect",{x:e,y:t,width:s,height:a,fill:x,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:[p.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 Ue({data:e,total:t,color:s,position:a,containerWidth:r}){if(!e||!a)return null;const l=(e.value/t*100).toFixed(1),i=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:i,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:[l,"%"]})]}),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 Je({sortedTypes:e,aggregateShares:t}){var s,a,l;const[i,o]=r.useState(null),[c,d]=r.useState(null),[u,m]=r.useState(0),[h,x]=r.useState(null),p=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=p.current;if(e){const s=e.getBoundingClientRect();m(s.width),d({x:t.clientX-s.left,y:t.clientY-s.top})}}else d(null)},[]),v=r.useCallback(e=>{if(x(e),e){const t=b.findIndex(t=>t.key===e);o(t>=0?t:null)}else o(null)},[b]),j=null!==i?{name:(null==(s=b[i])?void 0:s.name)??"",value:(null==(a=b[i])?void 0:a.size)??0}:null,N=null!==i?qe(null==(l=b[i])?void 0:l.typeNum):"";return 0===e.length||0===f?n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(g,{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:p,children:[n.jsx(oe,{width:"100%",height:"100%",children:n.jsx(ce,{data:b,dataKey:"size",aspectRatio:4/3,stroke:"none",isAnimationActive:!1,content:n.jsx(Qe,{x:0,y:0,width:0,height:0,name:"",size:0,index:0,depth:0,hoveredIndex:i,onHover:y,total:f,typeNum:0})})}),n.jsx(Ue,{data:j,total:f,color:N,position:c,containerWidth:u})]}),n.jsx(Ye,{sortedTypes:e,highlightedType:h,onTypeHover:v,aggregateShares:t})]})}function Ze(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,l=a[0],i=a[n-1],o=e=>{const t=Math.min(Math.ceil(e*n)-1,n-1);return a[Math.max(0,t)]};return{min:l,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:i}}function et({statsBuckets:e,mode:t,packets:s,startTs:a,endTs:l,radioConfig:i,sortedTypes:o,aggregateShares:c,noiseFloorAnomalies:d,showNoiseFloorOverlay:u,overlayOpacity:m=.5}){const[h,x]=r.useState(null),[p,f]=r.useState(null),b=r.useMemo(()=>(l-a)/3600,[a,l]),y=r.useCallback(e=>{f(e)},[]),v=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 l=[],i=new Map;for(const e of r){const s=e.type??e.payload_type??-1,r=L(e);let o;if(o="airtime"===a?D(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:o,byteSize:r,packetType:s,bucketIndex:c};l.push(d),i.has(c)||i.set(c,[]),i.get(c).push(d)}if(0===l.length)return null;const o=[],c=[],d=[],u=new Map;if("share"===a)for(const[,e]of i)for(const t of e)u.set(t,t.byteSize);else for(const[,e]of i){const t=e.reduce((e,t)=>e+t.airtimeMs,0)/3e5*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&&(o.push(t),c.push(e.timestamp),d.push(e.packetType))}const m=Math.min(...c),h=Math.max(...c),x=h-m||1,p=[...o].sort((e,t)=>e-t),g=p[0],f=p[p.length-1],b=Math.floor(.05*p.length),y=Math.floor(.5*p.length),v=Math.min(Math.ceil(.95*p.length),p.length-1),j=p[b],N=p[y],w=p[v],k=new Map;for(const e of o){const t=Math.round(100*e)/100;k.set(t,(k.get(t)??0)+1)}const M=k.size,C=[...k.entries()].sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e,t])=>({value:e,count:t,percent:t/o.length*100}));let S;if("share"===a)S=200;else{const e=5,t=Math.ceil(f/e)*e;S=t<=10?10:t+e}const T=new Float32Array(2*o.length),P=new Float32Array(o.length),$=new Uint8Array(o.length),F=new Float32Array(o.length);for(let e=0;e=0?d[e]:255,F[e]=c[e]}return{points:T,rawValues:P,packetTypes:$,timestamps:F,count:o.length,minTime:m,maxTime:h,minValue:0,maxValue:S,rawMinValue:g,rawMaxValue:f,unit:"%",stats:{p5:j,p50:N,p95:w,uniqueValues:M,topValues:C}}},[e,t,s,a,n])}(s,a,l,"share"===t?"share":"airtime",i),{data:j}=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),l=Math.floor(r/2),i=[];let o=0,c=0;for(let d=0;dj.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})),[j]),w=r.useMemo(()=>(null==v?void 0:v.maxValue)?v.maxValue:"share"===t?200:10,[v,t]),k=r.useCallback(e=>{x(e)},[]),M=r.useMemo(()=>{if(null===h||!j[h])return null;const e=j[h];let t;t=b>=168?75:b>=72?35:b>=24?15:b>=3?10:5;const s=60*t/2,a=e.timestamp;return{start:a-s,end:a+s}},[h,j,b]),C=r.useMemo(()=>{if(null===h||!j[h]||!M)return null;const e=j[h].time,{start:a,end:n}=M,r=s.filter(e=>e.timestamp>=a&&e.timestamp({key:e.key,label:e.label,value:0,color:qe(e.typeNum)}))};const l=new Map,c=new Map;let d=0,u=0;for(const t of r){const e=`TYPE_${t.type??t.payload_type??-1}`;if(l.set(e,(l.get(e)??0)+1),d++,i){const s=L(t),a=D(s,{spreadingFactor:i.sf,bandwidthHz:i.bw,codingRate:i.cr,preambleLength:i.preamble});c.set(e,(c.get(e)??0)+a),u+=a}}const m=o.map(e=>{let s;return s="airtime"===t?u>0?(c.get(e.key)??0)/u:0:d>0?(l.get(e.key)??0)/d:0,{key:e.key,label:e.label,value:s,color:qe(e.typeNum)}});return{timestamp:j[h].timestamp,timeLabel:e,items:m}},[h,j,M,s,o,t,i]);if(0===j.length)return n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(g,{className:"w-6 h-6 mr-2 opacity-50"}),n.jsx("span",{children:"No packet data available"})]});const S=(null==C?void 0:C.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(Oe,{data:N,maxValue:w,onHover:k,scatterData:v,noiseFloorAnomalies:d,showNoiseFloorOverlay:u,overlayOpacity:m,highlightedType:p,hoveredTimeRange:M,timeRangeHours:b,yAxisMode:"share"===t?"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(Ye,{sortedTypes:o,highlightedType:p,onTypeHover:y,aggregateShares:c,hoverData:C})]})}function tt({active:e,payload:t,label:s,mode:a}){if(!e||!t||0===t.length)return null;const r=t.filter(e=>null!==e.value&&void 0!==e.value);if(0===r.length)return null;const l=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:l}),r.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.jsx("span",{className:"text-text-primary tabular-nums font-mono",children:"share"===a?`${Number(e.value).toLocaleString()} B`:`${Number(e.value).toFixed(2)}%`})]},t))]})}function st(e){return e>=1e9?`${(e/1e9).toFixed(1)}G`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:e.toFixed(0)}function at({packets:e,mode:t,startTs:s,endTs:a,radioConfig:l,bucketCount:i}){const o=ee(),c=te(),d=se(),u=c.critical,m=o.neutral,[h,x]=r.useState(null),{trendData:p,totals:b}=r.useMemo(()=>{if(0===e.length)return{trendData:[],totals:{rxBytes:0,txBytes:0,rxAirtime:0,txAirtime:0},actualBucketCount:0};const n=a-s,r=Math.min(Math.ceil(n/300),i),o=n/r,c=1e3*o,d=[];for(let e=0;e=a)continue;const n=Math.min(Math.floor((e-s)/o),r-1),i=L(t),c=D(i,{spreadingFactor:l.sf,bandwidthHz:l.bw,codingRate:l.cr,preambleLength:l.preamble});t.transmitted?(d[n].txBytes+=i,d[n].txAirtime+=c,m+=i,x+=c):(d[n].rxBytes+=i,d[n].rxAirtime+=c,u+=i,h+=c)}return{trendData:d.map(e=>{if("share"===t)return{timestamp:e.timestamp,rx:e.rxBytes>0?e.rxBytes:null,tx:e.txBytes>0?e.txBytes:null};{const t=c>0?e.rxAirtime/c*100:0,s=c>0?e.txAirtime/c*100:0;return{timestamp:e.timestamp,rx:t>0?t:null,tx:s>0?s:null}}}),totals:{rxBytes:u,txBytes:m,rxAirtime:h,txAirtime:x}}},[e,s,a,i,t,l,300]),y=r.useMemo(()=>{if(0===p.length)return"share"===t?100:10;let e=0;for(const t of p){const s=t.rx??0,a=t.tx??0;s>e&&(e=s),a>e&&(e=a)}const s=1.1*e;return"share"===t?s<=100?100:s<=500?100*Math.ceil(s/100):s<=1e3?200*Math.ceil(s/200):s<=5e3?500*Math.ceil(s/500):s<=1e4?1e3*Math.ceil(s/1e3):5e3*Math.ceil(s/5e3):Math.max(1,Math.ceil(s))},[p,t]),v=r.useMemo(()=>{if(null!==h&&p[h]){const e=p[h],s=e.rx??0,a=e.tx??0;return"share"===t?{rx:st(s),tx:st(a),total:st(s+a),isHovered:!0}:{rx:`${s.toFixed(2)}%`,tx:`${a.toFixed(2)}%`,total:`${(s+a).toFixed(2)}%`,isHovered:!0}}if("share"===t)return{rx:st(b.rxBytes),tx:st(b.txBytes),total:st(b.rxBytes+b.txBytes),isHovered:!1};{let e=0,t=0,s=0;for(const r of p)null===r.rx&&null===r.tx||(e+=r.rx??0,t+=r.tx??0,s++);const a=s>0?e/s:0,n=s>0?t/s:0;return{rx:`${a.toFixed(2)}%`,tx:`${n.toFixed(2)}%`,total:`${(a+n).toFixed(2)}%`,isHovered:!1}}},[h,p,b,t]),j=r.useMemo(()=>{const e=a-s,t=e/3600;return[0,.25,.5,.75,1].map(a=>{const n=new Date(1e3*(s+e*a)),r=n.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1}),l=n.toLocaleDateString([],{weekday:"short"});return{pct:a,label:t>24?`${l} ${r}`:r}})},[s,a]),N=r.useCallback(e=>{const t=null==e?void 0:e.activeTooltipIndex;x("number"==typeof t?t:null)},[]),w=r.useMemo(()=>{const e=a-s,t=Math.round(e/3600);return t>=24?`${Math.round(t/24)}d`:`${t}h`},[s,a]),k=r.useCallback(e=>"share"===t?e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:e.toFixed(0):`${e.toFixed(0)}%`,[t]);return 0===p.length?n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(g,{className:"w-6 h-6 mr-2 opacity-50"}),n.jsx("span",{children:"No packet 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:j.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(f,{className:"w-2.5 h-2.5 opacity-60"}),n.jsx("span",{className:"tabular-nums",children:e.label})]},t))})}),n.jsxs("div",{className:"flex-1 min-h-0 relative",children:[n.jsx("div",{className:"absolute left-0 top-1/2 -translate-y-1/2 type-data-xs text-text-muted font-mono",style:{width:44},children:n.jsx("div",{className:"text-center",children:w})}),n.jsx(oe,{width:"100%",height:"100%",minWidth:1,minHeight:1,children:n.jsxs(de,{data:p,margin:{top:4,right:8,bottom:4,left:0},onMouseMove:N,onMouseLeave:()=>x(null),children:[n.jsx(ue,{strokeDasharray:"3 3",stroke:d.primary,strokeOpacity:.15,vertical:!1}),n.jsx(me,{dataKey:"timestamp",type:"number",domain:[s,a],axisLine:!1,tickLine:!1,tick:!1,height:0}),n.jsx(he,{axisLine:!1,tickLine:!1,tick:{fill:d.primary,fontSize:10,fontFamily:"'JetBrains Mono', monospace"},dx:-8,width:44,tickFormatter:k,domain:[0,y]}),n.jsx(xe,{content:n.jsx(tt,{mode:t})}),n.jsx(pe,{type:"linear",dataKey:"rx",name:"RX",stroke:u,strokeWidth:2.5,strokeOpacity:.9,dot:!1,connectNulls:!1,isAnimationActive:!1}),n.jsx(pe,{type:"linear",dataKey:"tx",name:"TX",stroke:m,strokeWidth:2.5,strokeOpacity:.9,dot:!1,connectNulls:!1,isAnimationActive:!1})]})})]}),n.jsxs("div",{className:"flex-shrink-0 flex items-center justify-between mt-2",children:[n.jsxs("div",{className:"flex items-center gap-4 text-xs font-mono pl-11",children:[n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("div",{className:"w-4 h-0.5",style:{backgroundColor:u}}),n.jsx("span",{className:"text-text-muted",children:"RX"})]}),n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("div",{className:"w-4 h-0.5",style:{backgroundColor:m}}),n.jsx("span",{className:"text-text-muted",children:"TX"})]}),n.jsx("span",{className:"text-text-muted",children:"share"===t?"Bytes":"Utilization"})]}),n.jsxs("div",{className:"text-right pr-2",children:[n.jsx("span",{className:"font-mono font-bold text-xl text-text-primary",children:v.total}),n.jsx("span",{className:"text-xs text-text-muted ml-2",children:v.isHovered?"bucket":"total"})]})]})]})}function nt({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 rt({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(l,{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(i,{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("trend"),className:"toggle-group-item "+("trend"===e?"active":""),title:"Trend line chart",children:n.jsx(c,{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(d,{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(u,{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(h,{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(x,{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 it=r.memo(function({packets:e,startTs:t,endTs:s,bucketCount:a,radioConfig:l=Xe,mode:i="share",smoothing:o="raw",noiseFloorAnomalies:c=null,showNoiseFloorOverlay:d=!1,overlayOpacity:u=.5}){const m=Z(),[h,x]=r.useState(null),[p,f]=r.useState([]),b=r.useRef(null),y=r.useRef(0);r.useEffect(()=>{const t=Math.abs(e.length-y.current);if(0===t&&p.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,p.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:Ie(a),totalCount:n});return s.sort((e,t)=>t.totalCount-e.totalCount)}(p),[p]),j=r.useMemo(()=>function(e,t,s,a,n,r){const l=s-t,i=l/a,o=1e3*i,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)/i),a-1),l=`TYPE_${d.type??d.payload_type??-1}`;c[r].counts[l]=(c[r].counts[l]??0)+1,c[r].total++;const o=L(d),u=D(o,{spreadingFactor:n.sf,bandwidthHz:n.bw,codingRate:n.cr,preambleLength:n.preamble});c[r].airtimes[l]=(c[r].airtimes[l]??0)+u,c[r].totalAirtime+=u}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}(p,t,s,a,l,v),[p,t,s,a,l,v]),N=r.useMemo(()=>Ge.getBuckets(p,t,s,l),[p,t,s,l]),w=r.useMemo(()=>v.reduce((e,t)=>e+t.totalCount,0),[v]),{sortedTypes:k,aggregateShares:M}=r.useMemo(()=>{const e=new Map;if("share"===i){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,i,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?l.counts[e.key]/l.total*100:0;n.push(l)}return n}(e,0,s),r=n.length,l=s.length,i=Array.from({length:l},()=>new Array(r).fill(0));for(let m=0;m0?(e.counts[a]??0)/e.total:0}else{let t=0;for(let a=0;a0?r/t:0}}}const o=Array.from({length:l},()=>new Array(r).fill(0));for(let m=0;mfunction(e,t){switch(t){case"zlema":return Ke(e,6);case"ema":return Ke(e,12);case"smooth":return Ke(e,24);case"ultra":return Ke(e,96);default:return e}}(e,a)),d=Array.from({length:l},()=>new Array(r).fill(0));for(let m=0;m0?c[m-1][e]:0;let s=c[m][e]-t;s<0&&(s=0),s>1&&(s=1),d[m][e]=s}for(let m=0;m0&&Math.abs(e-1)>1e-6){const t=1/e;for(let e=0;e{x(e)},[]),[T,P]=r.useState(null),$=r.useCallback(e=>{P(e)},[]),F=r.useMemo(()=>{if(null===T||!C[T])return null;const e=C[T];return{timestamp:e.timestamp,timeLabel:e.time,items:k.map(t=>({key:t.key,label:t.label,value:e[t.key]??0,color:qe(t.typeNum)}))}},[T,C,k]),R=r.useMemo(()=>({timestamps:C.map(e=>e.timestamp),series:k.map(e=>({key:e.key,label:e.label,color:qe(e.typeNum),values:C.map(t=>t[e.key]??0)}))}),[C,k]);return 0===p.length?0===e.length?n.jsxs("div",{className:"h-full flex items-center justify-center text-text-muted",children:[n.jsx(g,{className:"w-6 h-6 mr-2 opacity-50"}),n.jsx("span",{children:"No packet data available"})]}):null:"mosaic"===o?n.jsx(Je,{sortedTypes:k,aggregateShares:M}):"stats"===o?n.jsx(et,{statsBuckets:N,mode:i,packets:p,startTs:t,endTs:s,radioConfig:l,sortedTypes:k,aggregateShares:M,noiseFloorAnomalies:c,showNoiseFloorOverlay:d,overlayOpacity:u}):"trend"===o?n.jsx(at,{packets:p,mode:i,startTs:t,endTs:s,radioConfig:l,bucketCount:a}):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(_,{timestamps:R.timestamps,series:R.series,highlightedKey:h,cursorColor:m.cursor,onHover:$})})}),n.jsx(Ye,{sortedTypes:k,highlightedType:h,onTypeHover:S,aggregateShares:M,hoverData:F})]})}),ot={"1x":1,"2x":2,"4x":4,"8x":8,"16x":16,"36x":36},ct=[1,5,10,25,50,100,150];function dt(e,t,s,a){const n=Math.PI/180,r=(a-t)*n,l=e*n,i=s*n,o=Math.sin(r)*Math.cos(i),c=Math.cos(l)*Math.sin(i)-Math.sin(l)*Math.cos(i)*Math.cos(r);return(180*Math.atan2(o,c)/Math.PI+360)%360}function ut(e,t,s,a){const n=Math.PI/180,r=(s-e)*n,l=(a-t)*n,i=Math.sin(r/2)**2+Math.cos(e*n)*Math.cos(s*n)*Math.sin(l/2)**2;return 12742*Math.atan2(Math.sqrt(i),Math.sqrt(1-i))}const mt=[{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 ht(e,t){return t[re(e)]||"#808080"}const xt=r.memo(function({neighbors:e,quickNeighbors:t,localLat:s,localLon:a,onStatsChange:l}){const[i,o]=r.useState(null),[c,d]=r.useState(new Set),[u,m]=r.useState({width:0,height:0}),[h,x]=r.useState("1x"),[p,g]=r.useState(1),f=r.useRef(null),y=r.useRef({}),v=r.useRef(null),j=r.useRef(null),N=r.useRef(p);N.current=p;const w=ae(),k=te(),M=ne(),C=se();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&&m({width:e,height:s})}});t.observe(e);const s=e.getBoundingClientRect();return s.width>0&&s.height>0&&m({width:s.width,height:s.height}),()=>t.disconnect()},[]);const S=r.useMemo(()=>{const e=new Set;if(t)for(const s of t)e.add(s.hash);return e},[t]),T=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:$,totalNeighbors:F,zeroHopCount:R}=r.useMemo(()=>{const t=[];for(const[r,l]of Object.entries(e)){if(!l.latitude||!l.longitude||0===l.latitude||0===l.longitude)continue;if(!S.has(r))continue;const e=dt(s,a,l.latitude,l.longitude),n=ut(s,a,l.latitude,l.longitude),i=T.get(r);t.push({hash:r.slice(0,8),name:l.node_name||l.name||"Unknown",snr:(null==i?void 0:i.snr)??l.snr??null,rssi:(null==i?void 0:i.rssi)??l.rssi??null,bearing:e,distance:n,normalizedDistance:0,lastSeen:l.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,S,T]);r.useEffect(()=>{null==l||l({zeroHopCount:R,totalCount:F,maxDistanceKm:$})},[R,F,$]),r.useEffect(()=>{const e=ot[h],t=N.current;f.current&&cancelAnimationFrame(f.current);const s=performance.now(),a=n=>{const r=n-s,l=Math.min(r/400,1),i=(o=l)<.5?8*o*o*o*o:1-Math.pow(-2*o+2,4)/2;var o;g(t+(e-t)*i),f.current=l<1?requestAnimationFrame(a):null};return f.current=requestAnimationFrame(a),()=>{f.current&&cancelAnimationFrame(f.current)}},[h]);const A=$/p,L=r.useMemo(()=>ct.filter(e=>e<=1.1*A),[A]);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,E=r.useMemo(()=>{const{width:e,height:t}=u,s=e/2,a=t/2,n=Math.max(10,e/2-12),r=Math.max(10,t/2-12),l=Math.max(10,n-16),i=Math.max(10,r-16);return{width:e,height:t,centerX:s,centerY:a,maxRadiusX:l,maxRadiusY:i,labelRadiusX:n,labelRadiusY:r,cornerRadius:.2*Math.min(l,i)}},[u]),{width:B,height:_,centerX:H,centerY:z,maxRadiusX:O,maxRadiusY:W,labelRadiusX:V,labelRadiusY:q,cornerRadius:G}=E,I=r.useCallback((e,t=1)=>{const s=O*t,a=W*t,n=Math.min(G*t,s,a),r=(e%360+360)%360,l=r*Math.PI/180,i=180*Math.atan2(a-n,s-n)/Math.PI;let o,c;if(r<=45-i||r>315+i){const e=Math.tan(l);o=Math.max(H-s+n,Math.min(H+s-n,H+a*e*(s/a))),c=z-a}else if(r>45-i&&r<=45+i)o=H+s-n+n*Math.sin(l),c=z-a+n-n*Math.cos(l);else if(r>45+i&&r<=135-i){const e=1/Math.tan(l);c=Math.max(z-a+n,Math.min(z+a-n,z-s*e*(a/s))),o=H+s}else if(r>135-i&&r<=135+i)o=H+s-n+n*Math.sin(l),c=z+a-n-n*Math.cos(l);else if(r>135+i&&r<=225-i){const e=Math.tan(l);o=Math.max(H-s+n,Math.min(H+s-n,H-a*e*(s/a))),c=z+a}else if(r>225-i&&r<=225+i)o=H-s+n+n*Math.sin(l),c=z+a-n-n*Math.cos(l);else if(r>225+i&&r<=315-i){const e=1/Math.tan(l);c=Math.max(z-a+n,Math.min(z+a-n,z-s*e*(a/s))),o=H-s}else o=H-s+n+n*Math.sin(l),c=z-a+n-n*Math.cos(l);return{x:o,y:c}},[H,z,O,W,G]),X=r.useCallback((e,t)=>{const s=I(e,1);return{x:H+(s.x-H)*t,y:z+(s.y-z)*t}},[I,H,z]),K=r.useCallback(e=>({N:{x:H,y:z-q},S:{x:H,y:z+q},E:{x:H+V,y:z},W:{x:H-V,y:z},NE:{x:H+V,y:z-q},SE:{x:H+V,y:z+q},SW:{x:H-V,y:z+q},NW:{x:H-V,y:z-q}}[e]),[H,z,V,q]),Y=r.useCallback(e=>{const t=O*e,s=W*e,a=Math.min(G*e,t,s),n=H-t,r=H+t,l=z-s,i=z+s;return[`M ${n+a} ${l}`,`L ${r-a} ${l}`,`Q ${r} ${l} ${r} ${l+a}`,`L ${r} ${i-a}`,`Q ${r} ${i} ${r-a} ${i}`,`L ${n+a} ${i}`,`Q ${n} ${i} ${n} ${i-a}`,`L ${n} ${l+a}`,`Q ${n} ${l} ${n+a} ${l}`,"Z"].join(" ")},[H,z,O,W,G]),Q=r.useCallback(e=>{o(e)},[]),U=r.useCallback(e=>{x(e)},[]),J=r.useCallback(e=>$<=0?0:e/$*p,[$,p]),Z=e=>`${e}km`,ee=r.useMemo(()=>{const e=L.map(e=>{const t=e/$*p;return{km:e,scale:t,labelY:z-W*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},[L,$,p,z,W]),re=u.width>0&&u.height>0;return D?0===F?n.jsxs("div",{ref:v,className:"flex flex-col items-center justify-center h-full text-text-muted",children:[n.jsx(b,{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:re&&n.jsxs("svg",{width:B,height:_,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:Y(1)})})]}),L.map(e=>{const t=J(e);if(t>1.05||t<.02)return null;const s=ee.some(t=>t.km===e),a=H+O*t*.71,r=z-W*t*.71;return n.jsxs("g",{children:[n.jsx("path",{d:Y(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?H:"E"===e?H+O:H-O,a=t?"N"===e?z-W:z+W:z;return n.jsx("line",{x1:H,y1:z,x2:s,y2:a,stroke:C.primary,strokeOpacity:.15,strokeWidth:1,strokeDasharray:"4 4"},e)}),["NE","SE","SW","NW"].map(e=>{const t=K(e);return n.jsx("line",{x1:H,y1:z,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=K(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=K(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:H,cy:z,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=$>0?e.distance/$*p:0;if(t>1)return null;const{x:s,y:a}=X(e.bearing,t),r=null!==e.snr?ht(e.snr,w):"#808080",l=(null==i?void 0:i.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"}),l&&n.jsx("circle",{cx:s,cy:a,r:10.5,fill:r,opacity:.3}),n.jsx("circle",{cx:s,cy:a,r:l?7:5,fill:r,stroke:"rgba(0,0,0,0.5)",strokeWidth:1,style:{cursor:"pointer",transition:"r 0.15s"},onMouseEnter:()=>Q(e),onMouseLeave:()=>Q(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:()=>U(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))}),i&&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:i.name}),n.jsx("div",{className:"text-text-muted text-xs font-mono",children:i.hash}),null!==i.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:ht(i.snr,w)},children:[i.snr.toFixed(1)," dB"]}),n.jsxs("span",{className:"text-text-muted ml-1",children:["(",(le=i.snr,(null==(ie=mt.find(e=>le>=e.min))?void 0:ie.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:[i.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:[i.bearing.toFixed(0),"°"]})]})]})]})]}):n.jsxs("div",{ref:v,className:"flex flex-col items-center justify-center h-full text-text-muted",children:[n.jsx(b,{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 le,ie});function pt(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 gt=r.memo(function({timestamps:e,values:t,onStatsChange:s}){var a,l;const i=te(),[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:pt(n,5),p95:pt(n,95)}},[t]);r.useEffect(()=>{null==s||s(d)},[d]);const u=r.useCallback(()=>{c(e=>!e)},[]),{heatmapData:m,xLabels:h,yLabels:x}=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],l=e[e.length-1]-r||1,i=new Float32Array(2*e.length);for(let o=0;ole(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&&b({width:e,height:s})}});t.observe(e);const s=e.getBoundingClientRect();return s.width>0&&s.height>0&&b({width:s.width,height:s.height}),()=>t.disconnect()},[]),r.useEffect(()=>{const e=p.current;if(!e||!m||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:l}=m,{r:i,g:o,b:c}=N,d=Math.max(3,Math.min(8,s/l*4));t.globalCompositeOperation="source-over";for(let u=0;un.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:p,className:"absolute inset-0 w-full h-full","aria-hidden":"true"}),n.jsx("button",{type:"button",onClick:u,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(y,{className:"w-3.5 h-3.5 text-text-muted","aria-hidden":"true"}):n.jsx(v,{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"})}),ft={repeater:"var(--signal-critical)",companion:"var(--accent-tertiary)",room_server:"var(--accent-secondary)"};function bt(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 yt=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=bt(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:ft.repeater},{label:"Companions",count:t.companion,percent:0,color:ft.companion},{label:"Room Servers",count:t.room_server,percent:0,color:ft.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 vt({children:e,minHeight:t="100%",rootMargin:s="200px 0px",keepMounted:a=!0,className:l=""}){const i=r.useRef(null),[o,c]=r.useState(!1),[d,u]=r.useState(!1);r.useEffect(()=>{const e=i.current;if(!e)return;const t=new IntersectionObserver(([e])=>{const t=e.isIntersecting;u(t),t&&c(!0)},{rootMargin:s,threshold:0});return t.observe(e),()=>{t.disconnect()}},[s]);const m=d||a&&o;return n.jsx("div",{ref:i,className:`h-full w-full ${l}`,style:{minHeight:t},children:m?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 jt={excellent:"text-signal-excellent",good:"text-signal-good",fair:"text-signal-fair",poor:"text-signal-critical"},Nt={excellent:"bg-signal-excellent/10",good:"bg-signal-good/10",fair:"bg-signal-fair/10",poor:"bg-signal-critical/10"},wt={excellent:"bg-signal-excellent",good:"bg-signal-good",fair:"bg-signal-fair",poor:"bg-signal-critical"};function kt({value:e,status:t}){return n.jsx("div",{className:"w-full h-2 bg-surface-elevated rounded-full overflow-hidden",children:n.jsx("div",{className:`h-full ${wt[t]} transition-all duration-300`,style:{width:`${Math.min(100,Math.max(0,e))}%`}})})}function Mt(){const e=z(),t=O(),[s,a]=r.useState(null),l=r.useCallback((e,t)=>{a({prefix:e,candidateHashes:t})},[]),i=r.useCallback(()=>{a(null)},[]);if(!t)return n.jsxs(fe,{children:[n.jsx(be,{icon:n.jsx(j,{}),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(N,{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=(u=e.collisionRate)<=10?"excellent":u<=25?"good":"poor";var u;const m="poor"===o||"poor"===d?"poor":"fair"===o||"fair"===d?"fair":"good"===o||"good"===d?"good":"excellent",h="excellent"===m||"good"===m?w:k;return n.jsxs(fe,{className:"flex flex-col overflow-hidden",children:[n.jsx(be,{icon:n.jsx(j,{}),title:"Prefix Conflicts",largeTitle:!0,actions:n.jsxs("div",{className:`flex items-center gap-1.5 px-2.5 py-1 rounded-full ${Nt[m]}`,children:[n.jsx(h,{className:`w-3.5 h-3.5 ${jt[m]}`}),n.jsx("span",{className:`type-data-xs font-medium ${jt[m]}`,children:"excellent"===m?"Excellent":"good"===m?"Good":"fair"===m?"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 ${jt[o]}`,children:[(100*e.avgConfidence).toFixed(1),"%"]})]}),n.jsx(kt,{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 ${jt[d]}`,children:[e.collisionRate.toFixed(1),"%"]})]}),n.jsx(kt,{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:()=>l(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(k,{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(w,{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(je,{isOpen:!!s,prefix:(null==s?void 0:s.prefix)||"",candidateHashes:(null==s?void 0:s.candidateHashes)||[],onClose:i})]})}function Ct({icon:e,label:t,value:s,sublabel:a,highlight:r,tooltip:l}){return n.jsxs("div",{className:"flex items-center justify-between py-2 "+(l?"cursor-help":""),title:l,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 St(){const e=W(),t=V().length;if(!e||0===e.totalPaths)return null;const{totalPaths:s,pathsWithGhosts:a,observationOverrideCount:r,tracePacketsProcessed:l,pathPacketsProcessed:i,distantEdgesDiscovered:o,duplicateGroupsFound:c,duplicatePathsUnique:d,echolocationEdgesInferred:u}=e,m=s>0?((s-a)/s*100).toFixed(1):"0",h=s>0?(a/s*100).toFixed(1):"0",p=s>0?(r/s*100).toFixed(1):"0",g=l+i,f=g>0||o>0,b=c>0||u>0;return n.jsxs(fe,{children:[n.jsx(be,{title:"Path Decoder",icon:n.jsx(M,{}),largeTitle:!0,badge:t>0?`${t} hidden`:void 0}),n.jsxs(ke,{children:[n.jsx("p",{className:"type-data-xs text-text-muted mb-3",children:"Decodes packet routes to map your mesh topology and discover hidden repeaters."}),n.jsxs("div",{className:"divide-y divide-white/5",children:[n.jsx(Ct,{icon:n.jsx(C,{className:"w-3.5 h-3.5"}),label:"Traceable",value:`${m}%`,sublabel:`of ${s.toLocaleString()} paths`,highlight:parseFloat(m)>=90,tooltip:"Percentage of packet journeys where every hop was identified. Higher = better visibility into how traffic flows through your mesh."}),n.jsx(Ct,{icon:n.jsx(S,{className:"w-3.5 h-3.5"}),label:"Hidden Nodes",value:a.toLocaleString(),sublabel:`paths (${h}%)`,highlight:a>0,tooltip:"Paths containing unidentified repeaters. These 'ghost' nodes forward traffic but haven't announced themselves via ADVERT — possibly distant or newly added nodes."}),n.jsx(Ct,{icon:n.jsx(T,{className:"w-3.5 h-3.5"}),label:"Learning Rate",value:`${p}%`,sublabel:"adapted",tooltip:"How often real traffic patterns improved our predictions over geography alone. Higher values mean the decoder is learning your mesh's actual behavior — which routes are preferred, which nodes are most active."})]}),f&&n.jsxs("div",{className:"mt-3 pt-3 border-t border-border-subtle",children:[n.jsx("p",{className:"type-micro mb-2",children:"Beyond Line-of-Sight"}),n.jsxs("div",{className:"divide-y divide-white/5",children:[n.jsx(Ct,{icon:n.jsx(P,{className:"w-3.5 h-3.5"}),label:"Route Reports",value:g.toLocaleString(),sublabel:l>0?`(${l} TRACE)`:void 0,tooltip:"TRACE/PATH packets from distant nodes share their routing tables. This reveals connections we can't directly observe — mapping parts of the mesh we don't touch."}),n.jsx(Ct,{icon:n.jsx($,{className:"w-3.5 h-3.5"}),label:"Remote Links",value:o.toLocaleString(),highlight:o>0,tooltip:"Node-to-node connections discovered from route reports. These links exist outside our RF range but help complete the topology picture."})]})]}),b&&n.jsxs("div",{className:"mt-3 pt-3 border-t border-border-subtle",children:[n.jsx("p",{className:"type-micro mb-2",children:"Echo Analysis"}),n.jsxs("div",{className:"divide-y divide-white/5",children:[n.jsx(Ct,{icon:n.jsx(F,{className:"w-3.5 h-3.5"}),label:"Multi-Path Packets",value:c.toLocaleString(),sublabel:d>0?`(${d} routes)`:void 0,tooltip:"Packets received via multiple paths simultaneously. Like sonar, these 'echoes' reveal redundant routes — important for understanding mesh resilience."}),n.jsx(Ct,{icon:n.jsx(x,{className:"w-3.5 h-3.5"}),label:"Inferred Links",value:u.toLocaleString(),highlight:u>0,tooltip:"Connections discovered from echo patterns. When the same packet arrives via different forwarders nearly simultaneously, those forwarders likely hear each other."})]})]}),t>0&&n.jsx("div",{className:"mt-3 pt-3 border-t border-border-subtle cursor-help",title:"High-confidence hidden repeaters: appear in 10+ paths, have 2+ known neighbors, ≥30% confidence, and plausible location. View them on the Contacts map.",children:n.jsxs("p",{className:"type-label text-text-muted",children:[n.jsx("span",{className:"text-accent-tertiary type-data-sm",children:t})," ","likely repeater",1!==t?"s":""," discovered from traffic patterns"]})})]})]})}function Tt(){var e,t,s,a,l,i,o,c,d,u,m,h,x,p,f,y,v;const j=q(),N=G(),w=I(),k=X(),M=K(),[C,S]=r.useState([]),[T,P]=r.useState(null),[$,L]=r.useState(null),[D,E]=r.useState(!0),[B,_]=r.useState(null),[H,z]=r.useState(5),[O,W]=r.useState("share"),[V,Z]=r.useState("stats"),[ee,te]=r.useState(!1),[se,ae]=r.useState(!1),[ne,re]=r.useState(Me),[le,ie]=r.useState(.5),oe=Y[H].hours,ce=60*oe,de=Y[H],ue=U(oe),me=r.useCallback(e=>{r.startTransition(()=>z(e))},[]),he=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==(i=null==(l=null==j?void 0:j.config)?void 0:l.radio)?void 0:i.coding_rate,null==(c=null==(o=null==j?void 0:j.config)?void 0:o.radio)?void 0:c.preamble_length]);r.useEffect(()=>{!async function(){var e;_(null);try{const t=await Q(oe);t.success&&(null==(e=t.data)?void 0:e.history)&&S(t.data.history)}catch(t){_(t instanceof Error?t.message:"Failed to load chart data")}finally{E(!1)}}()},[oe]);const xe=r.useMemo(()=>72===oe?6e5:168===oe?18e5:336===oe?36e5:3e5,[oe]),pe=r.useCallback(async()=>{var e;try{const t=await Q(oe);t.success&&(null==(e=t.data)?void 0:e.history)&&S(t.data.history)}catch{}},[oe]);J(pe,xe,!0,!0);const je=r.useMemo(()=>0===C.length?{timestamps:[],values:[]}:{timestamps:C.map(e=>e.timestamp),values:C.map(e=>e.noise_floor_dbm)},[C]),ke=r.useMemo(()=>{if(C.length<10)return{anomalies:[],debug:void 0};const e=function(e,t={}){const s={...Me,...t};if(e.length<10)return{anomalies:[],thresholds:Se([]),totalSamples:e.length,anomalySamples:0};const a=e.map(e=>e.noise_floor_dbm),n=Se(a),r=[...a].sort((e,t)=>e-t);let l,i;s.useAbsoluteThresholds?(l=s.baselineDbm,i=s.spikeDbm):(l=Ce(r,s.baselinePercentile),i=Ce(r,s.spikePercentile));const o=[...e].sort((e,t)=>e.timestamp-t.timestamp),c=[];let d=null,u=0;for(const m of o)if(m.noise_floor_dbm>l&&m.noise_floor_dbme+t,0)/d.values.length):(d.values.length>=s.minSequenceLength&&c.push(d),d={startTs:m.timestamp,endTs:m.timestamp,values:[m.noise_floor_dbm],timestamps:[m.timestamp],rollingAvg:m.noise_floor_dbm})}else d={startTs:m.timestamp,endTs:m.timestamp,values:[m.noise_floor_dbm],timestamps:[m.timestamp],rollingAvg:m.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:u,debug:{baselineCutoff:l,spikeCutoff:i,midBandSamples:u}}:{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:Te(s,l,i),sampleCount:e.values.length}}),thresholds:n,totalSamples:e.length,anomalySamples:u,debug:{baselineCutoff:l,spikeCutoff:i,midBandSamples:u}}}(C,ne);return{anomalies:e.anomalies,debug:e.debug}},[C,ne]),Pe=ke.anomalies,$e=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]),Fe=r.useMemo(()=>{const e=Date.now()/1e3-3600*oe;return Object.fromEntries(Object.entries($e).filter(([,t])=>t.last_seen>=e))},[$e,oe]),Re=r.useMemo(()=>{const e=60*ce/ue,t=Math.floor(Date.now()/1e3),s=Math.floor(t/e)*e;return{start:s-60*ce,end:s}},[ce,ue]);return n.jsxs(ye,{children:[n.jsx(ve,{title:"Statistics",icon:n.jsx(R,{}),controls:n.jsx(ge,{ranges:Y,selectedIndex:H,onSelect:me})}),B&&n.jsx(fe,{className:"border border-accent-red/50 bg-accent-red/10",children:n.jsx("p",{className:"text-accent-red",children:B})}),ee&&se&&n.jsxs(fe,{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:["(",de.label,")"]})]}),n.jsx("button",{onClick:()=>re(e=>({...e,useAbsoluteThresholds:!e.useAbsoluteThresholds})),className:"type-data-xs px-2 py-1 rounded transition-colors "+(ne.useAbsoluteThresholds?"bg-accent-purple/30 text-accent-purple":"bg-glass-elevated text-text-muted hover:text-text-secondary"),children:ne.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==(u=null==(d=ke.debug)?void 0:d.baselineCutoff)?void 0:u.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==(m=ke.debug)?void 0:m.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==(x=ke.debug)?void 0:x.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:Pe.length})]})]}),n.jsxs("div",{className:"mt-4 pt-4 border-t border-border-subtle space-y-4",children:[ne.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 (",ne.baselineDbm," dBm)"]}),n.jsx("input",{type:"range",min:"-120",max:"-60",value:ne.baselineDbm,onChange:e=>re(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 (",ne.spikeDbm," dBm)"]}),n.jsx("input",{type:"range",min:"-100",max:"-20",value:ne.spikeDbm,onChange:e=>re(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 (",ne.mergeGapSeconds,"s)"]}),n.jsx("input",{type:"range",min:"5",max:"120",step:"5",value:ne.mergeGapSeconds,onChange:e=>re(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 (",ne.minSequenceLength,")"]}),n.jsx("input",{type:"range",min:"2",max:"20",value:ne.minSequenceLength,onChange:e=>re(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 (±",ne.similarityToleranceDbm," dBm)"]}),n.jsx("input",{type:"range",min:"1",max:"15",value:ne.similarityToleranceDbm,onChange:e=>re(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*le),"%)"]}),n.jsx("input",{type:"range",min:"0.1",max:"1",step:"0.05",value:le,onChange:e=>ie(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",ne.baselinePercentile,")"]}),n.jsx("input",{type:"range",min:"1",max:"50",value:ne.baselinePercentile,onChange:e=>re(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",ne.spikePercentile,")"]}),n.jsx("input",{type:"range",min:"50",max:"99",value:ne.spikePercentile,onChange:e=>re(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 (",ne.mergeGapSeconds,"s)"]}),n.jsx("input",{type:"range",min:"5",max:"120",step:"5",value:ne.mergeGapSeconds,onChange:e=>re(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 (",ne.minSequenceLength,")"]}),n.jsx("input",{type:"range",min:"2",max:"20",value:ne.minSequenceLength,onChange:e=>re(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 (±",ne.similarityToleranceDbm," dBm)"]}),n.jsx("input",{type:"range",min:"1",max:"15",value:ne.similarityToleranceDbm,onChange:e=>re(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*le),"%)"]}),n.jsx("input",{type:"range",min:"0.1",max:"1",step:"0.05",value:le,onChange:e=>ie(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:[ne.useAbsoluteThresholds?`useAbsoluteThresholds: true, baselineDbm: ${ne.baselineDbm}, spikeDbm: ${ne.spikeDbm}`:`useAbsoluteThresholds: false, baselinePercentile: ${ne.baselinePercentile}, spikePercentile: ${ne.spikePercentile}`,", mergeGapSeconds: ",ne.mergeGapSeconds,", minSequenceLength: ",ne.minSequenceLength,", similarityToleranceDbm: ",ne.similarityToleranceDbm]})]})]})]}),D?n.jsx(Ne,{template:"auto",children:n.jsx(fe,{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(Ne,{template:"hero-auto",children:n.jsx(fe,{isLoaded:M,skeletonType:"chart",children:M&&n.jsxs(n.Fragment,{children:[n.jsx(be,{icon:n.jsx(g,{}),title:"Packet Analyzer",badge:de.label,largeTitle:!0,actions:n.jsxs("div",{className:"flex flex-wrap items-center gap-2 justify-end",children:["stats"===V&&n.jsx(rt,{enabled:ee,onChange:te,anomalyCount:Pe.length,showTuning:se,onTuningChange:ae}),n.jsx(lt,{smoothing:V,onChange:Z}),n.jsx(nt,{mode:O,onChange:W})]})}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(it,{packets:k,startTs:Re.start,endTs:Re.end,bucketCount:ue,radioConfig:he??void 0,mode:O,smoothing:V,noiseFloorAnomalies:Pe,showNoiseFloorOverlay:ee,overlayOpacity:le})})]})})}),n.jsxs(Ne,{template:"panel",children:[n.jsx(we,{span:12,md:6,children:n.jsx(fe,{isLoaded:M,skeletonType:"chart",children:M&&n.jsxs(n.Fragment,{children:[n.jsx(be,{icon:n.jsx(b,{}),title:"Link Quality",badge:de.label,largeTitle:!0,actions:$?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:$.zeroHopCount})," nbr"]}),n.jsxs("span",{children:[n.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:$.totalCount})," obs"]}),n.jsxs("span",{children:[n.jsx("span",{className:"text-text-secondary tabular-nums font-medium",children:$.maxDistanceKm.toFixed(0)})," km"]})]}):null}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(vt,{children:n.jsx(xt,{neighbors:Fe,quickNeighbors:w,localLat:(null==(f=null==(p=null==j?void 0:j.config)?void 0:p.repeater)?void 0:f.latitude)??0,localLon:(null==(v=null==(y=null==j?void 0:j.config)?void 0:y.repeater)?void 0:v.longitude)??0,onStatsChange:L})})})]})})}),n.jsx(we,{span:12,md:6,children:n.jsx(fe,{isLoaded:M,skeletonType:"chart",children:M&&n.jsxs(n.Fragment,{children:[n.jsx(be,{icon:n.jsx(A,{}),title:"Network Composition",badge:de.label,largeTitle:!0}),n.jsx("div",{className:"flex-1 min-h-0",children:n.jsx(vt,{children:n.jsx(yt,{neighbors:Fe})})})]})})})]}),n.jsxs(Ne,{template:"panel",children:[n.jsx(we,{span:12,md:6,children:n.jsx(Mt,{})}),n.jsx(we,{span:12,md:6,children:n.jsx(St,{})})]}),n.jsx(Ne,{template:"panel",children:n.jsx(we,{span:12,children:n.jsx(fe,{isLoaded:M,skeletonType:"chart",children:M&&n.jsxs(n.Fragment,{children:[n.jsx(be,{icon:n.jsx(F,{}),title:"RF Noise Floor",largeTitle:!0,actions:T?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:T.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:T.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:T.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(vt,{children:n.jsx(gt,{timestamps:je.timestamps,values:je.values,onStatsChange:P})})})]})})})})]})]})}export{Tt as default}; diff --git a/frontend/dist/assets/System-D8W5mK8k.js b/frontend/dist/assets/System-CMjUiDHD.js similarity index 96% rename from frontend/dist/assets/System-D8W5mK8k.js rename to frontend/dist/assets/System-CMjUiDHD.js index d53617ac..d5390f85 100644 --- a/frontend/dist/assets/System-D8W5mK8k.js +++ b/frontend/dist/assets/System-CMjUiDHD.js @@ -1 +1 @@ -import{r as e,j as t,a2 as s,aT as a,ae as r,aU as l,aV as n}from"./vendor-react-ClShp8p7.js";import{c,R as o,A as i,C as d,X as m,Y as x,T as u,e as p,b as h}from"./recharts-BjCld2b0.js";import{$ as j,a0 as y,a1 as f,a2 as g}from"./index-DY0XR9s0.js";import{e as v,a as b}from"./useThemeColors-BsFY5Gki.js";import{P as N,b as w,a as k,c as C}from"./PageLayout-CQDLcONp.js";import{R as F,C as _}from"./Grid-CpI-_Yqf.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";const M=Math.floor(12e5/g.system),S={primary:"bg-accent-tertiary",secondary:"bg-accent-secondary",green:"bg-accent-success",red:"bg-accent-danger",yellow:"bg-accent-secondary"},G=[{threshold:30,color:"var(--accent-tertiary)",next:"var(--accent-success)"},{threshold:50,color:"var(--accent-success)",next:"var(--accent-secondary)"},{threshold:65,color:"var(--accent-secondary)",next:"var(--signal-poor)"},{threshold:80,color:"var(--signal-poor)",next:"var(--accent-danger)"}];function L(e,t,s){const a=s-t,r={cold:(30-t)/a*100,normal:(50-t)/a*100,warm:(65-t)/a*100,hot:(80-t)/a*100};return`linear-gradient(to right, ${[{pos:0,color:"var(--accent-tertiary)"},{pos:r.cold,color:"var(--accent-tertiary)"},{pos:r.cold,color:"var(--accent-success)"},{pos:r.normal,color:"var(--accent-success)"},{pos:r.normal,color:"var(--accent-secondary)"},{pos:r.warm,color:"var(--accent-secondary)"},{pos:r.warm,color:"var(--signal-poor)"},{pos:r.hot,color:"var(--signal-poor)"},{pos:r.hot,color:"var(--accent-danger)"},{pos:100,color:"var(--accent-danger)"}].map(t=>{const s=e>0?t.pos/e*100:0;return`${t.color} ${Math.min(s,100)}%`}).join(", ")})`}const T=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":S[a];return t.jsx("div",{className:"h-2.5 bg-white/[0.02] rounded-full overflow-hidden",children:t.jsx("div",{className:c("h-full rounded-full",l),style:{width:`${r}%`}})})}),U=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),n=function(e){return e<30?{text:"Cool",color:"text-accent-tertiary"}:e<50?{text:"Normal",color:"text-accent-success"}:e<65?{text:"Warm",color:"text-accent-secondary"}:e<80?{text:"Hot",color:"text-signal-poor"}:{text:"Danger",color:"text-accent-danger"}}(e),c=r-a;return t.jsxs("div",{className:"space-y-1.5",children:[t.jsxs("div",{className:"flex justify-between items-baseline",children:[t.jsx("span",{className:"text-sm text-text-muted",children:s}),t.jsxs("div",{className:"flex items-baseline gap-2",children:[t.jsx("span",{className:"text-xs text-text-muted",children:n.text}),t.jsxs("span",{className:"text-sm font-mono tabular-nums",children:[t.jsx("span",{className:n.color,children:e.toFixed(1)}),t.jsx("span",{className:"text-text-primary",children:"°"})]})]})]}),t.jsxs("div",{className:"relative h-2 bg-white/[0.02] rounded-full overflow-hidden",children:[t.jsx("div",{className:"absolute inset-y-0 left-0 rounded-full transition-all duration-300 ease-out",style:{background:L(l,a,r),width:`${l}%`}}),t.jsx("div",{className:"absolute inset-0 flex items-center pointer-events-none",children:G.map(({threshold:e,color:s})=>{const r=(e-a)/c*100;return r<0||r>100?null:t.jsx("div",{className:"absolute w-px h-full",style:{left:`${r}%`,backgroundColor:s}},e)})})]})]})});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 $({active:e,payload:s,label:a}){return e&&(null==s?void 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 A=e.memo(function({data:e,cpuColor:s,memoryColor:a,chartGridColors:r}){const l=function(e){const t=[],s=Math.max(0,M-e.length),a=Date.now(),r=g.system;for(let n=0;n`${e}%`}),t.jsx(u,{content:t.jsx($,{})}),t.jsx(p,{content:t.jsx(O,{})}),t.jsx(h,{type:"stepAfter",dataKey:"cpu",name:"CPU",stroke:s,strokeWidth:2,fill:"url(#cpuGradient)",fillOpacity:.85,isAnimationActive:!1,connectNulls:!1}),t.jsx(h,{type:"stepAfter",dataKey:"memory",name:"Memory",stroke:a,strokeWidth:2,fill:"url(#memoryGradient)",fillOpacity:.85,isAnimationActive:!1,connectNulls:!1})]})})})});function P(){const[o,i]=e.useState(null),[d,m]=e.useState(!0),[x,u]=e.useState(null),[p,h]=e.useState(!1),S=j(),G=y(),L=v(),O=b(),$=L.chart3,P=L.chart4,R=e.useCallback(async()=>{try{const e=await f();e.success&&e.data?(i(e.data),u(null),G(e.data.cpu.usage_percent,e.data.memory.usage_percent,M)):u(e.error??"Failed to fetch hardware stats")}catch(e){u(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&&m(!1))})(),"undefined"==typeof Worker){const t=setInterval(R,g.system);return()=>{e=!1,clearInterval(t)}}{const s=`setInterval(() => postMessage('tick'), ${g.system});`,a=new Blob([s],{type:"application/javascript"});t=new Worker(URL.createObjectURL(a)),t.onmessage=()=>{e&&R()}}return()=>{e=!1,null==t||t.terminate()}},[R]),t.jsxs(N,{children:[t.jsx(w,{title:"System Stats",icon:t.jsx(a,{}),controls:t.jsxs("button",{onClick:async()=>{h(!0),await R(),h(!1)},disabled:p,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:c("w-4 h-4",p&&"animate-spin")}),"Refresh"]})}),x&&t.jsx(k,{className:"border border-accent-danger/50 bg-accent-danger/10",children:t.jsx("p",{className:"text-accent-danger",children:x})}),d?t.jsx(k,{className:"p-12 text-center",children:t.jsx("div",{className:"animate-pulse text-text-muted",children:"Loading system stats..."})}):o?t.jsxs(t.Fragment,{children:[t.jsx(F,{template:"hero",children:t.jsxs(k,{children:[t.jsx(C,{icon:t.jsx(r,{}),title:"System Resources",subtitle:"20 minute rolling window",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:$},children:[o.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:[o.memory.usage_percent.toFixed(0),"%"]})]})]})}),t.jsx("div",{className:"flex-1 min-h-0",children:t.jsx(A,{data:S,cpuColor:$,memoryColor:P,chartGridColors:O})}),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:[o.cpu.count," CPU cores"]}),o.cpu.load_avg&&t.jsxs("span",{className:"tabular-nums",children:["Load: ",o.cpu.load_avg["1min"].toFixed(2)," / ",o.cpu.load_avg["5min"].toFixed(2)," / ",o.cpu.load_avg["15min"].toFixed(2)]})]}),t.jsxs("span",{className:"tabular-nums",children:[(o.memory.used/1048576).toFixed(0)," / ",(o.memory.total/1048576).toFixed(0)," MB"]})]})]})}),t.jsxs(F,{template:"compact",children:[t.jsx(_,{span:12,md:6,children:t.jsxs(k,{children:[t.jsx(C,{icon:t.jsx(l,{}),title:"Disk Usage",subtitle:"Storage utilization",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:[o.disk.usage_percent.toFixed(1),"%"]})]}),t.jsx(T,{value:o.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:[(o.disk.used/1073741824).toFixed(1)," GB used"]}),t.jsxs("span",{className:"text-text-muted",children:[(o.disk.total/1073741824).toFixed(1)," GB total"]})]})]})]})}),t.jsx(_,{span:12,md:6,children:t.jsxs(k,{children:[t.jsx(C,{icon:t.jsx(n,{}),title:"Temperature",subtitle:"System sensors",largeTitle:!0}),o.temperatures&&Object.keys(o.temperatures).length>0?t.jsxs("div",{className:"space-y-2.5",children:[void 0!==o.temperatures.cpu_thermal&&t.jsx(U,{value:o.temperatures.cpu_thermal,label:"CPU",min:20,max:100}),Object.entries(o.temperatures).filter(([e])=>"cpu_thermal"!==e).slice(0,3).map(([e,s])=>t.jsx(U,{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{P as default}; +import{r as e,j as t,a2 as s,aT as a,ae as r,aU as l,aV as n}from"./vendor-react-O8XH9yVn.js";import{c,R as o,A as i,C as d,X as m,Y as x,T as u,e as p,b as h}from"./recharts-BU7auunF.js";import{$ as j,a0 as y,a1 as f,a2 as g}from"./index-Dp0UlTio.js";import{e as v,a as b}from"./useThemeColors-CD0TSU03.js";import{P as N,b as w,a as k,c as C}from"./PageLayout-DE5PEtD2.js";import{R as F,C as _}from"./Grid-CIZAny_R.js";import"./vendor-core-WoOfkQwm.js";import"./deckgl-DTsmDcfs.js";const M=Math.floor(12e5/g.system),S={primary:"bg-accent-tertiary",secondary:"bg-accent-secondary",green:"bg-accent-success",red:"bg-accent-danger",yellow:"bg-accent-secondary"},G=[{threshold:30,color:"var(--accent-tertiary)",next:"var(--accent-success)"},{threshold:50,color:"var(--accent-success)",next:"var(--accent-secondary)"},{threshold:65,color:"var(--accent-secondary)",next:"var(--signal-poor)"},{threshold:80,color:"var(--signal-poor)",next:"var(--accent-danger)"}];function L(e,t,s){const a=s-t,r={cold:(30-t)/a*100,normal:(50-t)/a*100,warm:(65-t)/a*100,hot:(80-t)/a*100};return`linear-gradient(to right, ${[{pos:0,color:"var(--accent-tertiary)"},{pos:r.cold,color:"var(--accent-tertiary)"},{pos:r.cold,color:"var(--accent-success)"},{pos:r.normal,color:"var(--accent-success)"},{pos:r.normal,color:"var(--accent-secondary)"},{pos:r.warm,color:"var(--accent-secondary)"},{pos:r.warm,color:"var(--signal-poor)"},{pos:r.hot,color:"var(--signal-poor)"},{pos:r.hot,color:"var(--accent-danger)"},{pos:100,color:"var(--accent-danger)"}].map(t=>{const s=e>0?t.pos/e*100:0;return`${t.color} ${Math.min(s,100)}%`}).join(", ")})`}const T=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":S[a];return t.jsx("div",{className:"h-2.5 bg-white/[0.02] rounded-full overflow-hidden",children:t.jsx("div",{className:c("h-full rounded-full",l),style:{width:`${r}%`}})})}),U=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),n=function(e){return e<30?{text:"Cool",color:"text-accent-tertiary"}:e<50?{text:"Normal",color:"text-accent-success"}:e<65?{text:"Warm",color:"text-accent-secondary"}:e<80?{text:"Hot",color:"text-signal-poor"}:{text:"Danger",color:"text-accent-danger"}}(e),c=r-a;return t.jsxs("div",{className:"space-y-1.5",children:[t.jsxs("div",{className:"flex justify-between items-baseline",children:[t.jsx("span",{className:"text-sm text-text-muted",children:s}),t.jsxs("div",{className:"flex items-baseline gap-2",children:[t.jsx("span",{className:"text-xs text-text-muted",children:n.text}),t.jsxs("span",{className:"text-sm font-mono tabular-nums",children:[t.jsx("span",{className:n.color,children:e.toFixed(1)}),t.jsx("span",{className:"text-text-primary",children:"°"})]})]})]}),t.jsxs("div",{className:"relative h-2 bg-white/[0.02] rounded-full overflow-hidden",children:[t.jsx("div",{className:"absolute inset-y-0 left-0 rounded-full transition-all duration-300 ease-out",style:{background:L(l,a,r),width:`${l}%`}}),t.jsx("div",{className:"absolute inset-0 flex items-center pointer-events-none",children:G.map(({threshold:e,color:s})=>{const r=(e-a)/c*100;return r<0||r>100?null:t.jsx("div",{className:"absolute w-px h-full",style:{left:`${r}%`,backgroundColor:s}},e)})})]})]})});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 $({active:e,payload:s,label:a}){return e&&(null==s?void 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 A=e.memo(function({data:e,cpuColor:s,memoryColor:a,chartGridColors:r}){const l=function(e){const t=[],s=Math.max(0,M-e.length),a=Date.now(),r=g.system;for(let n=0;n`${e}%`}),t.jsx(u,{content:t.jsx($,{})}),t.jsx(p,{content:t.jsx(O,{})}),t.jsx(h,{type:"stepAfter",dataKey:"cpu",name:"CPU",stroke:s,strokeWidth:2,fill:"url(#cpuGradient)",fillOpacity:.85,isAnimationActive:!1,connectNulls:!1}),t.jsx(h,{type:"stepAfter",dataKey:"memory",name:"Memory",stroke:a,strokeWidth:2,fill:"url(#memoryGradient)",fillOpacity:.85,isAnimationActive:!1,connectNulls:!1})]})})})});function P(){const[o,i]=e.useState(null),[d,m]=e.useState(!0),[x,u]=e.useState(null),[p,h]=e.useState(!1),S=j(),G=y(),L=v(),O=b(),$=L.chart3,P=L.chart4,R=e.useCallback(async()=>{try{const e=await f();e.success&&e.data?(i(e.data),u(null),G(e.data.cpu.usage_percent,e.data.memory.usage_percent,M)):u(e.error??"Failed to fetch hardware stats")}catch(e){u(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&&m(!1))})(),"undefined"==typeof Worker){const t=setInterval(R,g.system);return()=>{e=!1,clearInterval(t)}}{const s=`setInterval(() => postMessage('tick'), ${g.system});`,a=new Blob([s],{type:"application/javascript"});t=new Worker(URL.createObjectURL(a)),t.onmessage=()=>{e&&R()}}return()=>{e=!1,null==t||t.terminate()}},[R]),t.jsxs(N,{children:[t.jsx(w,{title:"System Stats",icon:t.jsx(a,{}),controls:t.jsxs("button",{onClick:async()=>{h(!0),await R(),h(!1)},disabled:p,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:c("w-4 h-4",p&&"animate-spin")}),"Refresh"]})}),x&&t.jsx(k,{className:"border border-accent-danger/50 bg-accent-danger/10",children:t.jsx("p",{className:"text-accent-danger",children:x})}),d?t.jsx(k,{className:"p-12 text-center",children:t.jsx("div",{className:"animate-pulse text-text-muted",children:"Loading system stats..."})}):o?t.jsxs(t.Fragment,{children:[t.jsx(F,{template:"hero",children:t.jsxs(k,{children:[t.jsx(C,{icon:t.jsx(r,{}),title:"System Resources",subtitle:"20 minute rolling window",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:$},children:[o.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:[o.memory.usage_percent.toFixed(0),"%"]})]})]})}),t.jsx("div",{className:"flex-1 min-h-0",children:t.jsx(A,{data:S,cpuColor:$,memoryColor:P,chartGridColors:O})}),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:[o.cpu.count," CPU cores"]}),o.cpu.load_avg&&t.jsxs("span",{className:"tabular-nums",children:["Load: ",o.cpu.load_avg["1min"].toFixed(2)," / ",o.cpu.load_avg["5min"].toFixed(2)," / ",o.cpu.load_avg["15min"].toFixed(2)]})]}),t.jsxs("span",{className:"tabular-nums",children:[(o.memory.used/1048576).toFixed(0)," / ",(o.memory.total/1048576).toFixed(0)," MB"]})]})]})}),t.jsxs(F,{template:"compact",children:[t.jsx(_,{span:12,md:6,children:t.jsxs(k,{children:[t.jsx(C,{icon:t.jsx(l,{}),title:"Disk Usage",subtitle:"Storage utilization",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:[o.disk.usage_percent.toFixed(1),"%"]})]}),t.jsx(T,{value:o.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:[(o.disk.used/1073741824).toFixed(1)," GB used"]}),t.jsxs("span",{className:"text-text-muted",children:[(o.disk.total/1073741824).toFixed(1)," GB total"]})]})]})]})}),t.jsx(_,{span:12,md:6,children:t.jsxs(k,{children:[t.jsx(C,{icon:t.jsx(n,{}),title:"Temperature",subtitle:"System sensors",largeTitle:!0}),o.temperatures&&Object.keys(o.temperatures).length>0?t.jsxs("div",{className:"space-y-2.5",children:[void 0!==o.temperatures.cpu_thermal&&t.jsx(U,{value:o.temperatures.cpu_thermal,label:"CPU",min:20,max:100}),Object.entries(o.temperatures).filter(([e])=>"cpu_thermal"!==e).slice(0,3).map(([e,s])=>t.jsx(U,{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{P as default}; diff --git a/frontend/dist/assets/Terminal-zsY3Osj2.js b/frontend/dist/assets/Terminal-Vhl_DY50.js similarity index 99% rename from frontend/dist/assets/Terminal-zsY3Osj2.js rename to frontend/dist/assets/Terminal-Vhl_DY50.js index b28e4272..ae14012f 100644 --- a/frontend/dist/assets/Terminal-zsY3Osj2.js +++ b/frontend/dist/assets/Terminal-Vhl_DY50.js @@ -1 +1 @@ -import{c as e,r as a,j as t,S as r}from"./vendor-react-ClShp8p7.js";import{c as s}from"./recharts-BjCld2b0.js";import{d as n,a8 as o,a9 as i,aa as l,ab as c,ac as m,a6 as d}from"./index-DY0XR9s0.js";import{P as p,b as y,a as u}from"./PageLayout-CQDLcONp.js";import"./vendor-core-WoOfkQwm.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}; +import{c as e,r as a,j as t,S as r}from"./vendor-react-O8XH9yVn.js";import{c as s}from"./recharts-BU7auunF.js";import{d as n,a8 as o,a9 as i,aa as l,ab as c,ac as m,a6 as d}from"./index-Dp0UlTio.js";import{P as p,b as y,a as u}from"./PageLayout-DE5PEtD2.js";import"./vendor-core-WoOfkQwm.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-3DTeUpqT.js b/frontend/dist/assets/TimeRangeSelector-9pGCd7oa.js similarity index 83% rename from frontend/dist/assets/TimeRangeSelector-3DTeUpqT.js rename to frontend/dist/assets/TimeRangeSelector-9pGCd7oa.js index e13e62a3..d41f85b8 100644 --- a/frontend/dist/assets/TimeRangeSelector-3DTeUpqT.js +++ b/frontend/dist/assets/TimeRangeSelector-9pGCd7oa.js @@ -1 +1 @@ -import{r as e,j as o}from"./vendor-react-ClShp8p7.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-O8XH9yVn.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/index-DjRKexsi.css b/frontend/dist/assets/index-DjRKexsi.css new file mode 100644 index 00000000..c41dc2b3 --- /dev/null +++ b/frontend/dist/assets/index-DjRKexsi.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;--aspect-video:16/9;--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-\[3\.5rem\]{top:3.5rem}.top-\[var\(--tip-y\,0\)\]{top:var(--tip-y,0)}.top-full{top:100%}.-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-1{margin-inline:calc(var(--spacing)*-1)}.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}.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-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)}.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}.contents{display:contents}.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}.aspect-video{aspect-ratio:var(--aspect-video)}.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-10{height:calc(var(--spacing)*10)}.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-\[100dvh\]{min-height:100dvh}.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-\[14px\]{width:14px}.w-\[32px\]{width:32px}.w-\[52px\]{width:52px}.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-\[220px\]{max-width:220px}.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-default{cursor:default}.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-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\/6{border-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.border-white\/6{border-color:color-mix(in oklab,var(--color-white)6%,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-\[\#1a1a1a\]{background-color:#1a1a1a}.bg-\[\#2a2a2a\]{background-color:#2a2a2a}.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-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\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/15{background-color:color-mix(in oklab,var(--color-white)15%,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-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-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.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-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-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-map-neighbor-color{color:var(--map-neighbor-color)}.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-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-sm{--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-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)}.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\/\[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-\[\#202020\]:hover{background-color:#202020}.hover\:bg-\[\#252525\]:hover{background-color:#252525}.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\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.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-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.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\:top-\[4rem\]{top:4rem}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:mx-4{margin-inline:calc(var(--spacing)*4)}.sm\:mt-8{margin-top:calc(var(--spacing)*8)}.sm\:mb-2{margin-bottom:calc(var(--spacing)*2)}.sm\:mb-3{margin-bottom:calc(var(--spacing)*3)}.sm\:mb-4{margin-bottom:calc(var(--spacing)*4)}.sm\:mb-6{margin-bottom:calc(var(--spacing)*6)}.sm\:mb-8{margin-bottom:calc(var(--spacing)*8)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:h-3{height:calc(var(--spacing)*3)}.sm\:h-3\.5{height:calc(var(--spacing)*3.5)}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:h-8{height:calc(var(--spacing)*8)}.sm\:h-9{height:calc(var(--spacing)*9)}.sm\:h-16{height:calc(var(--spacing)*16)}.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-5{width:calc(var(--spacing)*5)}.sm\:w-8{width:calc(var(--spacing)*8)}.sm\:w-9{width:calc(var(--spacing)*9)}.sm\:w-16{width:calc(var(--spacing)*16)}.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-md{max-width:var(--container-md)}.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)}:where(.sm\: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)))}.sm\:self-auto{align-self:auto}.sm\:rounded-2xl{border-radius:var(--radius-2xl)}.sm\:rounded-lg{border-radius:var(--radius-lg)}.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-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:p-8{padding:calc(var(--spacing)*8)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.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\:py-6{padding-block:calc(var(--spacing)*6)}.sm\:py-8{padding-block:calc(var(--spacing)*8)}.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\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.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)}.md\:py-8{padding-block:calc(var(--spacing)*8)}}@media(min-width:64rem){.lg\:top-\[4\.5rem\]{top:4.5rem}.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:#0f0;--signal-good:#8ce619;--signal-fair:#ffd900;--signal-poor:#ff8c26;--signal-critical:#f33;--signal-unknown:#616161;--sparkline-excellent:#0f0;--sparkline-good:#8ce619;--sparkline-fair:#ffd900;--sparkline-poor:#ff8c26;--sparkline-critical:#f33;--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;--text-xs:.64rem;--text-sm:.8rem;--text-base:1rem;--text-md:1.125rem;--text-lg:1.25rem;--text-xl:1.563rem;--text-2xl:1.953rem;--text-3xl:2.441rem;--text-4xl:3.052rem;--text-5xl:3.815rem;--text-6xl:4.768rem;--leading-tight:1.1;--leading-snug:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--tracking-tight:-.025em;--tracking-normal:0;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--font-extrabold:800}@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 0 1 0);--signal-good:color(display-p3 .55 .9 .15);--signal-fair:color(display-p3 1 .85 0);--signal-poor:color(display-p3 1 .55 .15);--signal-critical:color(display-p3 1 .2 .2);--sparkline-excellent:color(display-p3 .1 .9 .35);--sparkline-good:color(display-p3 .45 .85 .05);--sparkline-fair:color(display-p3 1 .8 0);--sparkline-poor:color(display-p3 1 .5 .1);--sparkline-critical:color(display-p3 1 .15 .15);--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:#b8bb26;--signal-fair:#d79921;--signal-poor:#fe8019;--signal-critical:#cc241d;--signal-unknown:#7c6f64;--sparkline-excellent:#5de08d;--sparkline-good:#c5cc3d;--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 0 1 0);--signal-good:color(display-p3 .7 .8 .1);--signal-fair:color(display-p3 .95 .7 .1);--signal-poor:color(display-p3 1 .55 .1);--signal-critical:color(display-p3 .9 .15 .15);--sparkline-excellent:color(display-p3 .35 .9 .5);--sparkline-good:color(display-p3 .7 .85 .2);--sparkline-fair:color(display-p3 1 .85 .2);--sparkline-poor:color(display-p3 1 .5 .15);--sparkline-critical:color(display-p3 1 .2 .2);--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:#7ec07c;--signal-fair:#edb54b;--signal-poor:#d26939;--signal-critical:#c33027;--signal-unknown:#195465;--sparkline-excellent:#00e5b0;--sparkline-good:#8ee090;--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 0 1 0);--signal-good:color(display-p3 .5 .85 .45);--signal-fair:color(display-p3 1 .8 .2);--signal-poor:color(display-p3 1 .5 .15);--signal-critical:color(display-p3 .9 .15 .15);--sparkline-excellent:color(display-p3 0 .95 .7);--sparkline-good:color(display-p3 .55 .9 .55);--sparkline-fair:color(display-p3 1 .85 0);--sparkline-poor:color(display-p3 1 .5 .2);--sparkline-critical:color(display-p3 1 .2 .2);--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:#c5d93d;--signal-fair:#e7c664;--signal-poor:#f39660;--signal-critical:#fc5d7c;--signal-unknown:#7f8490;--sparkline-excellent:#6f6;--sparkline-good:#ce4;--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 0 1 0);--signal-good:color(display-p3 .75 .9 .2);--signal-fair:color(display-p3 1 .85 .3);--signal-poor:color(display-p3 1 .55 .3);--signal-critical:color(display-p3 1 .35 .45);--sparkline-excellent:color(display-p3 .4 1 .4);--sparkline-good:color(display-p3 .8 .95 .25);--sparkline-fair:color(display-p3 1 .92 0);--sparkline-poor:color(display-p3 1 .55 .25);--sparkline-critical:color(display-p3 1 .35 .5);--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:#b8cc5c;--signal-fair:#e6c384;--signal-poor:#ffa066;--signal-critical:#e46876;--signal-unknown:#54546d;--sparkline-excellent:#7fe07f;--sparkline-good:#c0dd66;--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 0 1 0);--signal-good:color(display-p3 .7 .85 .3);--signal-fair:color(display-p3 1 .82 .45);--signal-poor:color(display-p3 1 .6 .35);--signal-critical:color(display-p3 1 .4 .45);--sparkline-excellent:color(display-p3 .5 .9 .5);--sparkline-good:color(display-p3 .75 .9 .4);--sparkline-fair:color(display-p3 1 .85 .4);--sparkline-poor:color(display-p3 1 .6 .35);--sparkline-critical:color(display-p3 1 .42 .5);--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{background-color:#050505;border-radius:.75rem;flex-direction:column;align-items:stretch;gap:0;max-width:calc(100vw - 1.5rem);display:flex;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-controls-row{flex-wrap:wrap;justify-content:flex-end;gap:.375rem;padding:.375rem;display:flex}.map-controls-row+.map-controls-row{border-top:1px solid #ffffff0f}.map-controls-secondary{flex-wrap:wrap}.map-control-btn{touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;padding:.5rem;transition:background-color .15s}@media(hover:hover)and (pointer:fine){.map-control-btn:hover{background-color:#151515}}.map-control-btn:active{background-color:#1a1a1a}.map-control-icon{width:16px;height:16px}.map-nav-module{padding:.375rem}@media(max-width:639px){.map-controls-container{max-width:calc(100vw - 1rem)}.map-controls-row{gap:.25rem;padding:.25rem}.map-control-btn{justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:.625rem;display:flex}.map-control-icon{width:18px;height:18px}.map-control-label{display:none}.map-nav-module{padding:.25rem}}@media(min-width:640px)and (max-width:1023px){.map-controls-row,.map-nav-module{padding:.375rem}}@media(min-width:1024px){.map-controls-row{gap:.5rem;padding:.5rem}.map-nav-module{padding:.5rem}}.map-legend-stack{z-index:600;flex-direction:column;gap:0;max-width:150px;max-height:calc(100% - 1.5rem);display:flex;position:absolute;bottom:.75rem;left:.75rem;overflow:hidden auto}.map-legend-stack>*{border-radius:0}.map-legend-stack>:first-child{border-radius:.75rem .75rem 0 0}.map-legend-stack>:last-child{border-radius:0 0 .75rem .75rem}.map-legend-stack>:only-child{border-radius:.75rem}.map-legend-stack>*+*{border-top:1px solid #ffffff0f}@media(min-width:640px){.map-legend-stack{max-width:160px;bottom:1rem;left:1rem}}.map-edge-tooltip{z-index:1000;pointer-events:none;max-width:calc(100vw - 2rem);position:absolute;bottom:1rem;left:calc(50% + 85px);transform:translate(-50%)}.map-edge-tooltip-inner{pointer-events:auto;padding:.625rem 1rem}@media(max-width:639px){.map-edge-tooltip{bottom:.5rem;left:.5rem;right:.5rem;transform:none}.map-edge-tooltip-inner{background-color:#050505f2;border-radius:.75rem;padding:.75rem}.map-edge-tooltip .w-\[540px\]{width:100%;max-width:100%}}.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}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}input:focus-visible{box-shadow:0 0 0 2px var(--accent-primary);outline:none}select{background-image:none}@supports (color:color(display-p3 1 1 1)){.signal-bar-active{background-color:var(--p3-color,inherit)}}@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-DnW36GDX.css b/frontend/dist/assets/index-DnW36GDX.css deleted file mode 100644 index 1fd475a3..00000000 --- a/frontend/dist/assets/index-DnW36GDX.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}@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-\[3\.5rem\]{top:3.5rem}.top-\[var\(--tip-y\,0\)\]{top:var(--tip-y,0)}.top-full{top:100%}.-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-1{margin-inline:calc(var(--spacing)*-1)}.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}.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-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)}.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}.contents{display:contents}.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-10{height:calc(var(--spacing)*10)}.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-\[100dvh\]{min-height:100dvh}.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-\[14px\]{width:14px}.w-\[32px\]{width:32px}.w-\[52px\]{width:52px}.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-\[220px\]{max-width:220px}.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-default{cursor:default}.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-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\/6{border-color:#ffffff0f}@supports (color:color-mix(in lab,red,red)){.border-white\/6{border-color:color-mix(in oklab,var(--color-white)6%,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-\[\#1a1a1a\]{background-color:#1a1a1a}.bg-\[\#2a2a2a\]{background-color:#2a2a2a}.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-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\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/15{background-color:color-mix(in oklab,var(--color-white)15%,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-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-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.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-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-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-map-neighbor-color{color:var(--map-neighbor-color)}.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-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-sm{--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-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)}.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\/\[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-\[\#202020\]:hover{background-color:#202020}.hover\:bg-\[\#252525\]:hover{background-color:#252525}.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\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.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-0:focus{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.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\:top-\[4rem\]{top:4rem}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:mx-4{margin-inline:calc(var(--spacing)*4)}.sm\:mt-8{margin-top:calc(var(--spacing)*8)}.sm\:mb-2{margin-bottom:calc(var(--spacing)*2)}.sm\:mb-3{margin-bottom:calc(var(--spacing)*3)}.sm\:mb-4{margin-bottom:calc(var(--spacing)*4)}.sm\:mb-6{margin-bottom:calc(var(--spacing)*6)}.sm\:mb-8{margin-bottom:calc(var(--spacing)*8)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:h-3{height:calc(var(--spacing)*3)}.sm\:h-3\.5{height:calc(var(--spacing)*3.5)}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:h-8{height:calc(var(--spacing)*8)}.sm\:h-9{height:calc(var(--spacing)*9)}.sm\:h-16{height:calc(var(--spacing)*16)}.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-5{width:calc(var(--spacing)*5)}.sm\:w-8{width:calc(var(--spacing)*8)}.sm\:w-9{width:calc(var(--spacing)*9)}.sm\:w-16{width:calc(var(--spacing)*16)}.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-md{max-width:var(--container-md)}.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)}:where(.sm\: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)))}.sm\:self-auto{align-self:auto}.sm\:rounded-2xl{border-radius:var(--radius-2xl)}.sm\:rounded-lg{border-radius:var(--radius-lg)}.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-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:p-8{padding:calc(var(--spacing)*8)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:px-5{padding-inline:calc(var(--spacing)*5)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.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\:py-6{padding-block:calc(var(--spacing)*6)}.sm\:py-8{padding-block:calc(var(--spacing)*8)}.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\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.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)}.md\:py-8{padding-block:calc(var(--spacing)*8)}}@media(min-width:64rem){.lg\:top-\[4\.5rem\]{top:4.5rem}.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:#4ade80;--signal-good:#a3e635;--signal-fair:#facc15;--signal-poor:#fb923c;--signal-critical:#ef4444;--signal-unknown:#616161;--sparkline-excellent:#22c55e;--sparkline-good:#84cc16;--sparkline-fair:#eab308;--sparkline-poor:#f97316;--sparkline-critical:#dc2626;--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;--text-xs:.64rem;--text-sm:.8rem;--text-base:1rem;--text-md:1.125rem;--text-lg:1.25rem;--text-xl:1.563rem;--text-2xl:1.953rem;--text-3xl:2.441rem;--text-4xl:3.052rem;--text-5xl:3.815rem;--text-6xl:4.768rem;--leading-tight:1.1;--leading-snug:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--tracking-tight:-.025em;--tracking-normal:0;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--font-extrabold:800}@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 0 1 0);--signal-good:color(display-p3 .55 .9 .15);--signal-fair:color(display-p3 1 .85 0);--signal-poor:color(display-p3 1 .55 .15);--signal-critical:color(display-p3 1 .2 .2);--sparkline-excellent:color(display-p3 .1 .9 .35);--sparkline-good:color(display-p3 .45 .85 .05);--sparkline-fair:color(display-p3 1 .8 0);--sparkline-poor:color(display-p3 1 .5 .1);--sparkline-critical:color(display-p3 1 .15 .15);--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:#b8bb26;--signal-fair:#d79921;--signal-poor:#fe8019;--signal-critical:#cc241d;--signal-unknown:#7c6f64;--sparkline-excellent:#5de08d;--sparkline-good:#c5cc3d;--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 0 1 0);--signal-good:color(display-p3 .7 .8 .1);--signal-fair:color(display-p3 .95 .7 .1);--signal-poor:color(display-p3 1 .55 .1);--signal-critical:color(display-p3 .9 .15 .15);--sparkline-excellent:color(display-p3 .35 .9 .5);--sparkline-good:color(display-p3 .7 .85 .2);--sparkline-fair:color(display-p3 1 .85 .2);--sparkline-poor:color(display-p3 1 .5 .15);--sparkline-critical:color(display-p3 1 .2 .2);--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:#7ec07c;--signal-fair:#edb54b;--signal-poor:#d26939;--signal-critical:#c33027;--signal-unknown:#195465;--sparkline-excellent:#00e5b0;--sparkline-good:#8ee090;--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 0 1 0);--signal-good:color(display-p3 .5 .85 .45);--signal-fair:color(display-p3 1 .8 .2);--signal-poor:color(display-p3 1 .5 .15);--signal-critical:color(display-p3 .9 .15 .15);--sparkline-excellent:color(display-p3 0 .95 .7);--sparkline-good:color(display-p3 .55 .9 .55);--sparkline-fair:color(display-p3 1 .85 0);--sparkline-poor:color(display-p3 1 .5 .2);--sparkline-critical:color(display-p3 1 .2 .2);--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:#c5d93d;--signal-fair:#e7c664;--signal-poor:#f39660;--signal-critical:#fc5d7c;--signal-unknown:#7f8490;--sparkline-excellent:#6f6;--sparkline-good:#ce4;--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 0 1 0);--signal-good:color(display-p3 .75 .9 .2);--signal-fair:color(display-p3 1 .85 .3);--signal-poor:color(display-p3 1 .55 .3);--signal-critical:color(display-p3 1 .35 .45);--sparkline-excellent:color(display-p3 .4 1 .4);--sparkline-good:color(display-p3 .8 .95 .25);--sparkline-fair:color(display-p3 1 .92 0);--sparkline-poor:color(display-p3 1 .55 .25);--sparkline-critical:color(display-p3 1 .35 .5);--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:#b8cc5c;--signal-fair:#e6c384;--signal-poor:#ffa066;--signal-critical:#e46876;--signal-unknown:#54546d;--sparkline-excellent:#7fe07f;--sparkline-good:#c0dd66;--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 0 1 0);--signal-good:color(display-p3 .7 .85 .3);--signal-fair:color(display-p3 1 .82 .45);--signal-poor:color(display-p3 1 .6 .35);--signal-critical:color(display-p3 1 .4 .45);--sparkline-excellent:color(display-p3 .5 .9 .5);--sparkline-good:color(display-p3 .75 .9 .4);--sparkline-fair:color(display-p3 1 .85 .4);--sparkline-poor:color(display-p3 1 .6 .35);--sparkline-critical:color(display-p3 1 .42 .5);--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{background-color:#050505;border-radius:.75rem;flex-direction:column;align-items:stretch;gap:0;max-width:calc(100vw - 1.5rem);display:flex;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-controls-row{flex-wrap:wrap;justify-content:flex-end;gap:.375rem;padding:.375rem;display:flex}.map-controls-row+.map-controls-row{border-top:1px solid #ffffff0f}.map-controls-secondary{flex-wrap:wrap}.map-control-btn{touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;padding:.5rem;transition:background-color .15s}@media(hover:hover)and (pointer:fine){.map-control-btn:hover{background-color:#151515}}.map-control-btn:active{background-color:#1a1a1a}.map-control-icon{width:16px;height:16px}.map-nav-module{padding:.375rem}@media(max-width:639px){.map-controls-container{max-width:calc(100vw - 1rem)}.map-controls-row{gap:.25rem;padding:.25rem}.map-control-btn{justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:.625rem;display:flex}.map-control-icon{width:18px;height:18px}.map-control-label{display:none}.map-nav-module{padding:.25rem}}@media(min-width:640px)and (max-width:1023px){.map-controls-row,.map-nav-module{padding:.375rem}}@media(min-width:1024px){.map-controls-row{gap:.5rem;padding:.5rem}.map-nav-module{padding:.5rem}}.map-legend-stack{z-index:600;flex-direction:column;gap:0;max-width:150px;max-height:calc(100% - 1.5rem);display:flex;position:absolute;bottom:.75rem;left:.75rem;overflow:hidden auto}.map-legend-stack>*{border-radius:0}.map-legend-stack>:first-child{border-radius:.75rem .75rem 0 0}.map-legend-stack>:last-child{border-radius:0 0 .75rem .75rem}.map-legend-stack>:only-child{border-radius:.75rem}.map-legend-stack>*+*{border-top:1px solid #ffffff0f}@media(min-width:640px){.map-legend-stack{max-width:160px;bottom:1rem;left:1rem}}.map-edge-tooltip{z-index:1000;pointer-events:none;max-width:calc(100vw - 2rem);position:absolute;bottom:1rem;left:calc(50% + 85px);transform:translate(-50%)}.map-edge-tooltip-inner{pointer-events:auto;padding:.625rem 1rem}@media(max-width:639px){.map-edge-tooltip{bottom:.5rem;left:.5rem;right:.5rem;transform:none}.map-edge-tooltip-inner{background-color:#050505f2;border-radius:.75rem;padding:.75rem}.map-edge-tooltip .w-\[540px\]{width:100%;max-width:100%}}.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}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}input:focus-visible{box-shadow:0 0 0 2px var(--accent-primary);outline:none}select{background-image:none}@supports (color:color(display-p3 1 1 1)){.signal-bar-active{background-color:var(--p3-color,inherit)}}@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-DY0XR9s0.js b/frontend/dist/assets/index-Dp0UlTio.js similarity index 81% rename from frontend/dist/assets/index-DY0XR9s0.js rename to frontend/dist/assets/index-Dp0UlTio.js index 22225235..e19558ac 100644 --- a/frontend/dist/assets/index-DY0XR9s0.js +++ b/frontend/dist/assets/index-Dp0UlTio.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Login-_qpV4GUm.js","assets/vendor-react-ClShp8p7.js","assets/vendor-core-WoOfkQwm.js","assets/Dashboard-BfuIudYD.js","assets/useThemeColors-BsFY5Gki.js","assets/PageLayout-CQDLcONp.js","assets/PacketDetailModal-DuWvKGFM.js","assets/SignalIndicator-Dag5FlAv.js","assets/HashBadge-BiZRDKRx.js","assets/TimeRangeSelector-3DTeUpqT.js","assets/link-scoring-LdZ64cNF.js","assets/Grid-CpI-_Yqf.js","assets/Packets-BVVUdxzG.js","assets/Contacts-BOYQNB5L.js","assets/CollisionExplorerModal-2LJtIYk6.js","assets/ConfirmModal-C9RGn9JH.js","assets/leaflet-CIGW-MKW.css","assets/Statistics-BfhO4w7p.js","assets/usePolling-CQUaWSqs.js","assets/System-D8W5mK8k.js","assets/Logs-sry4OZK_.js","assets/Terminal-zsY3Osj2.js","assets/Configuration-DZ4tFrFG.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 x,k as w,l as b,m as k,n as v,o as S,p as _,q as M,b as C,t as T,v as j,N,w as L,B as P}from"./vendor-react-ClShp8p7.js";import{_ as E}from"./deckgl-DTsmDcfs.js";import{c as I}from"./recharts-BjCld2b0.js";import"./vendor-core-WoOfkQwm.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 A=[{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"}],R=[{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}],F={colorScheme:"grey",backgroundImage:"/assets/water.webp",brightness:60},z="pymc-color-scheme",O="pymc-background-image",$="pymc-bg-brightness",B="pymc-background";function W(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},U=[50,100,200,300,400,500,600,700,800,900],q=["red","orange","yellow","green","aqua","blue","purple"];function G(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 J(e){const t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Y(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 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[Y(4.0767416621*c-3.3077115913*u+.2309699292*d),Y(h),Y(f)]}function X(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=J(e),a=J(t),o=J(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 U){const e=H[l],t=a*(1-.3*Math.abs(e-.5)),[s,n,r]=V(e,t,o);i[l]=G(s,n,r)}return i}function K(e){return"undefined"==typeof window?"":getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function Q(e,t){"undefined"!=typeof document&&document.documentElement.style.setProperty(e,t)}const Z="u-off",ee="u-label",te="width",se="height",ne="top",ae="bottom",oe="left",ie="right",le="#000",re=le+"0",ce="mousemove",ue="mousedown",de="mouseup",he="mouseenter",fe="mouseleave",pe="dblclick",me="change",ge="dppxchange",ye="--",xe="undefined"!=typeof window,we=xe?document:null,be=xe?window:null,ke=xe?navigator:null;let ve,Se;function _e(e,t){if(null!=t){let s=e.classList;!s.contains(t)&&s.add(t)}}function Me(e,t){let s=e.classList;s.contains(t)&&s.remove(t)}function Ce(e,t,s){e.style[t]=s+"px"}function Te(e,t,s,n){let a=we.createElement(e);return null!=t&&_e(a,t),null!=s&&s.insertBefore(a,n),a}function je(e,t){return Te("div",e,t)}const Ne=new WeakMap;function Le(e,t,s,n,a){let o="translate("+t+"px,"+s+"px)";o!=Ne.get(e)&&(e.style.transform=o,Ne.set(e,o),t<0||s<0||t>n||s>a?_e(e,Z):Me(e,Z))}const Pe=new WeakMap;function Ee(e,t,s){let n=t+s;n!=Pe.get(e)&&(Pe.set(e,n),e.style.background=t,e.style.borderColor=s)}const Ie=new WeakMap;function Ae(e,t,s,n){let a=t+""+s;a!=Ie.get(e)&&(Ie.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 Re={passive:!0},De={...Re,capture:!0};function Fe(e,t,s,n){t.addEventListener(e,s,n?De:Re)}function ze(e,t,s,n){t.removeEventListener(e,s,Re)}function Oe(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:at((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]}}xe&&function e(){let t=devicePixelRatio;ve!=t&&(ve=t,Se&&ze(me,Se,e),Se=matchMedia(`(min-resolution: ${ve-.001}dppx) and (max-resolution: ${ve+.001}dppx)`),Fe(me,Se,e),be.dispatchEvent(new CustomEvent(ge)))}();const Be=e=>null!=e,We=e=>null!=e&&e>0,He=$e(Be),Ue=$e(We);function qe(e,t,s,n){let a=ut(e),o=ut(t);e==t&&(-1==a?(e*=s,t/=s):(e/=s,t*=s));let i=10==s?dt:ht,l=1==o?it:at,r=(1==a?at:it)(i(nt(e))),c=l(i(nt(t))),u=ct(s,r),d=ct(s,c);return 10==s&&(r<0&&(u=Nt(u,-r)),c<0&&(d=Nt(d,-c))),n||2==s?(e=u*a,t=d*o):(e=jt(e,u),t=Tt(t,d)),[e,t]}function Ge(e,t,s,n){let a=qe(e,t,s,n);return 0==e&&(a[0]=0),0==t&&(a[1]=0),a}const Je={mode:3,pad:.1},Ye={pad:0,soft:null,mode:0},Ve={min:Ye,max:Ye};function Xe(e,t,s,n){return Ot(s)?Qe(e,t,s):(Ye.pad=s,Ye.soft=n?0:null,Ye.mode=n?3:0,Qe(e,t,Ve))}function Ke(e,t){return null==e?t:e}function Qe(e,t,s){let n=s.min,a=s.max,o=Ke(n.pad,0),i=Ke(a.pad,0),l=Ke(n.hard,-pt),r=Ke(a.hard,pt),c=Ke(n.soft,pt),u=Ke(a.soft,-pt),d=Ke(n.mode,0),h=Ke(a.mode,0),f=t-e,p=dt(f),m=rt(nt(e),nt(t)),g=dt(m),y=nt(g-p);(f<1e-24||y>10)&&(f=0,0!=e&&0!=t||(f=1e-24,2==d&&c!=pt&&(o=0),2==h&&u!=-pt&&(i=0)));let x=f||m||1e3,w=dt(x),b=ct(10,at(w)),k=Nt(jt(e-x*(0==f?0==e?.1:1:o),b/10),24),v=e>=c&&(1==d||3==d&&k<=c||2==d&&k>=c)?c:pt,S=rt(l,k=v?v:lt(v,k)),_=Nt(Tt(t+x*(0==f?0==t?.1:1:i),b/10),24),M=t<=u&&(1==h||3==h&&_>=u||2==h&&_<=u)?u:-pt,C=lt(r,_>M&&t<=M?M:rt(M,_));return S==C&&0==S&&(C=100),[S,C]}const Ze=new Intl.NumberFormat(xe?ke.language:"en-US"),et=e=>Ze.format(e),tt=Math,st=tt.PI,nt=tt.abs,at=tt.floor,ot=tt.round,it=tt.ceil,lt=tt.min,rt=tt.max,ct=tt.pow,ut=tt.sign,dt=tt.log10,ht=tt.log2,ft=(e,t=1)=>tt.asinh(e/t),pt=1/0;function mt(e){return 1+(0|dt((e^e>>31)-(e>>31)))}function gt(e,t,s){return lt(rt(e,t),s)}function yt(e){return"function"==typeof e}function xt(e){return yt(e)?e:()=>e}const wt=e=>e,bt=(e,t)=>t,kt=e=>null,vt=e=>!0,St=(e,t)=>e==t,_t=/\.\d*?(?=9{6,}|0{6,})/gm,Mt=e=>{if(Ft(e)||Lt.has(e))return e;const t=`${e}`,s=t.match(_t);if(null==s)return e;let n=s[0].length-1;if(-1!=t.indexOf("e-")){let[e,s]=t.split("e");return+`${Mt(e)}e${s}`}return Nt(e,n)};function Ct(e,t){return Mt(Nt(Mt(e/t))*t)}function Tt(e,t){return Mt(it(Mt(e/t))*t)}function jt(e,t){return Mt(at(Mt(e/t))*t)}function Nt(e,t=0){if(Ft(e))return e;let s=10**t,n=e*s*(1+Number.EPSILON);return ot(n)/s}const Lt=new Map;function Pt(e){return((""+e).split(".")[1]||"").length}function Et(e,t,s,n){let a=[],o=n.map(Pt);for(let i=t;i=0?0:t)+(i>=o[l]?0:o[l]),u=10==e?r:Nt(r,c);a.push(u),Lt.set(u,c)}}return a}const It={},At=[],Rt=[null,null],Dt=Array.isArray,Ft=Number.isInteger;function zt(e){return"string"==typeof e}function Ot(e){let t=!1;if(null!=e){let s=e.constructor;t=null==s||s==Object}return t}function $t(e){return null!=e&&"object"==typeof e}const Bt=Object.getPrototypeOf(Uint8Array),Wt="__proto__";function Ht(e,t=Ot){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,Jt=["January","February","March","April","May","June","July","August","September","October","November","December"],Yt=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function Vt(e){return e.slice(0,3)}const Xt=Yt.map(Vt),Kt=Jt.map(Vt),Qt={MMMM:Jt,MMM:Kt,WWWW:Yt,WWW:Xt};function Zt(e){return(e<10?"0":"")+e}const es={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=>Zt(e.getMonth()+1),M:e=>e.getMonth()+1,DD:e=>Zt(e.getDate()),D:e=>e.getDate(),WWWW:(e,t)=>t.WWWW[e.getDay()],WWW:(e,t)=>t.WWW[e.getDay()],HH:e=>Zt(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=>Zt(e.getMinutes()),m:e=>e.getMinutes(),ss:e=>Zt(e.getSeconds()),s:e=>e.getSeconds(),fff:e=>{return((t=e.getMilliseconds())<10?"00":t<100?"0":"")+t;var t}};function ts(e,t){t=t||Qt;let s,n=[],a=/\{([a-z]+)\}|[^{]+/gi;for(;s=a.exec(e);)n.push("{"==s[0][0]?es[s[1]]:s[0]);return e=>{let s="";for(let a=0;ae%1==0,as=[1,2,2.5,5],os=Et(10,-32,0,as),is=Et(10,0,32,as),ls=is.filter(ns),rs=os.concat(is),cs="{YYYY}",us="\n"+cs,ds="{M}/{D}",hs="\n"+ds,fs=hs+"/{YY}",ps="{aa}",ms="{h}:{mm}"+ps,gs="\n"+ms,ys=":{ss}",xs=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?Et(10,0,3,as).filter(ns):Et(10,-3,0,as)).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,cs,xs,xs,xs,xs,xs,xs,1],[28*a,"{MMM}",us,xs,xs,xs,xs,xs,1],[a,ds,us,xs,xs,xs,xs,xs,1],[n,"{h}"+ps,fs,xs,hs,xs,xs,xs,1],[s,ms,fs,xs,hs,xs,xs,xs,1],[t,ys,fs+" "+ms,xs,hs+" "+ms,xs,gs,xs,1],[e,ys+".{fff}",fs+" "+ms,xs,hs+" "+ms,xs,gs,xs,1]],function(t){return(l,r,c,u,d,h)=>{let f=[],p=d>=i,m=d>=o&&d=a?a:d,i=w+(at(c)-at(y))+Tt(y-w,o);f.push(i);let p=t(i),m=p.getHours()+p.getMinutes()/s+p.getSeconds()/n,g=d/n,x=h/l.axes[r]._space;for(;i=Nt(i+d,1==e?0:3),!(i>u);)if(g>1){let e=at(Nt(m+g,6))%24,s=t(i).getHours()-e;s>1&&(s=-1),i-=s*n,m=(m+g)%24,Nt((i-f[f.length-1])/d,3)*x>=.7&&f.push(i)}else f.push(i)}return f}}]}const[bs,ks,vs]=ws(1),[Ss,_s,Ms]=ws(.001);function Cs(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 Ts(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 js(e,t,s){return new Date(e,t,s)}function Ns(e,t){return t(e)}function Ls(e,t){return(s,n,a,o)=>null==o?ye:t(e(n))}Et(2,-53,53,[1]);const Ps={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:[]},Es=[0,0];function Is(e,t,s,n=!0){return e=>{0==e.button&&(!n||e.target==t)&&s(e)}}function As(e,t,s,n=!0){return e=>{(!n||e.target==t)&&s(e)}}const Rs={show:!0,x:!0,y:!0,lock:!1,move:function(e,t,s){return Es[0]=t,Es[1]=s,Es},points:{one:!1,show:function(e,t){let s=e.cursor.points,n=je(),a=s.size(e,t);Ce(n,te,a),Ce(n,se,a);let o=a/-2;Ce(n,"marginLeft",o),Ce(n,"marginTop",o);let i=s.width(e,t,a);return i&&Ce(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:Is,mouseup:Is,click:Is,dblclick:Is,mousemove:As,mouseleave:As,mouseenter:As},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},Fs=Ut({},Ds,{filter:bt}),zs=Ut({},Fs,{size:10}),Os=Ut({},Ds,{show:!1}),$s='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"',Bs="bold "+$s,Ws={show:!0,scale:"x",stroke:le,space:50,gap:5,alignTo:1,size:50,labelGap:0,labelSize:30,labelFont:Bs,side:2,grid:Fs,ticks:zs,border:Os,font:$s,lineGap:1.5,rotate:0},Hs={show:!0,scale:"x",auto:!1,sorted:1,min:pt,max:-pt,idxs:[]};function Us(e,t,s,n,a){return t.map(e=>null==e?"":et(e))}function qs(e,t,s,n,a,o,i){let l=[],r=Lt.get(a)||0;for(let c=s=i?s:Nt(Tt(s,a),r);c<=n;c=Nt(c+a,r))l.push(Object.is(c,-0)?0:c);return l}function Gs(e,t,s,n,a,o,i){const l=[],r=e.scales[e.axes[t].scale].log,c=at((10==r?dt:ht)(s));a=ct(r,c),10==r&&(a=rs[Oe(a,rs)]);let u=s,d=a*r;10==r&&(d=rs[Oe(d,rs)]);do{l.push(u),u+=a,10!=r||Lt.has(u)||(u=Nt(u,Lt.get(a))),u>=d&&(d=(a=u)*r,10==r&&(d=rs[Oe(d,rs)]))}while(u<=n);return l}function Js(e,t,s,n,a,o,i){let l=e.scales[e.axes[t].scale].asinh,r=n>l?Gs(e,t,rt(l,s),n,a):[l],c=n>=0&&s<=0?[0]:[];return(s<-l?Gs(e,t,rt(l,-n),-s,a):[l]).reverse().map(e=>-e).concat(c,r)}const Ys=/./,Vs=/[12357]/,Xs=/[125]/,Ks=/1/,Qs=(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 Zs(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?Ys:r(7,i)-u>=c?Vs:r(5,i)-u>=c?Xs:Ks;if(d==Ks){let e=nt(r(1,i)-u);if(ea,on={show:!0,auto:!0,sorted:0,gaps:an,alpha:1,facets:[Ut({},nn,{scale:"x"}),Ut({},nn,{scale:"y"})]},ln={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:an,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=nt(i-o)/(e.series[t].points.space*ve);return n[1]-n[0]<=l},filter:null},values:null,min:pt,max:-pt,idxs:[],path:null,clip:null};function rn(e,t,s,n,a){return s/10}const cn={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},un=Ut({},cn,{time:!1,ori:1}),dn={};function hn(e,t){let s=dn[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?Sn:_n;let x,w;1==g?(x=s,w=n):(x=n,w=s);let b=m(c(t[x],l,f,d)),k=m(u(i[x],r,p,h)),v=m(c(t[w],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 yn(e,t,s,n,a,o){let i=null;if(e.length>0){i=new Path2D;const l=0==t?Mn:Cn;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 xn(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?ot:t=>Ct(t,e)}function bn(e){let t=0==e?kn:vn,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=lt(r,i/2,l/2),c=lt(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 kn=(e,t,s)=>{e.moveTo(t,s)},vn=(e,t,s)=>{e.moveTo(s,t)},Sn=(e,t,s)=>{e.lineTo(t,s)},_n=(e,t,s)=>{e.lineTo(s,t)},Mn=bn(0),Cn=bn(1),Tn=(e,t,s,n,a,o)=>{e.arc(t,s,n,a,o)},jn=(e,t,s,n,a,o)=>{e.arc(s,t,n,a,o)},Nn=(e,t,s,n,a,o,i)=>{e.bezierCurveTo(t,s,n,a,o,i)},Ln=(e,t,s,n,a,o,i)=>{e.bezierCurveTo(s,t,a,n,i,o)};function Pn(e){return(e,t,s,n,a)=>fn(e,t,(t,o,i,l,r,c,u,d,h,f,p)=>{let m,g,{pxRound:y,points:x}=t;0==l.ori?(m=kn,g=Tn):(m=vn,g=jn);const w=Nt(x.width*ve,3);let b=(x.size-x.width)/2*ve,k=Nt(2*b,3),v=new Path2D,S=new Path2D,{left:_,top:M,width:C,height:T}=e.bbox;Mn(S,_-k,M-k,C+2*k,T+2*k);const j=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*st)}};if(a)a.forEach(j);else for(let e=s;e<=n;e++)j(e);return{stroke:w>0?v:null,fill:v,clip:S,flags:3}})}function En(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 In=En(Sn),An=En(_n);function Rn(e){const t=Ke(null==e?void 0:e.alignGaps,0);return(e,s,n,a)=>fn(e,s,(o,i,l,r,c,u,d,h,f,p,m)=>{[n,a]=He(l,n,a);let g,y,x=o.pxRound,w=e=>x(u(e,r,p,h)),b=e=>x(d(e,c,m,f));0==r.ori?(g=Sn,y=In):(g=_n,y=An);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=w(i[1==k?n:a]),f=w(i[n]),p=w(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:w(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,w(i[e]),b(t))}let[M,C]=pn(e,s);if(null!=o.fill||0!=M){let t=v.fill=new Path2D(S),l=b(o.fillTo(e,s,o.min,o.max,M)),r=w(i[n]),c=w(i[a]);-1==k&&([c,r]=[r,c]),g(t,c,l),g(t,r,l)}if(!o.spanGaps){let c=[];_&&c.push(...xn(i,l,n,a,k,w,t)),v.gaps=c=o.gaps(e,s,n,a,c),v.clip=yn(c,r.ori,h,f,p,m)}return 0!=C&&(v.band=2==C?[gn(e,s,n,a,S,-1),gn(e,s,n,a,S,1)]:gn(e,s,n,a,S,C)),v})}function Dn(e,t,s,n,a,o,i=pt){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{Zn.pxRatio=ve}));const $n=Rn(),Bn=Pn();function Wn(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 Ut({},0==t?s:n,e)}function Un(e,t,s){return null==t?Rt:[t,s]}const qn=Un;function Gn(e,t,s){return null==t?Rt:Xe(t,s,.1,!0)}function Jn(e,t,s,n){return null==t?Rt:qe(t,s,e.scales[n].log,!1)}const Yn=Jn;function Vn(e,t,s,n){return null==t?Rt:Ge(t,s,e.scales[n].log,!1)}const Xn=Vn;function Kn(e){let t,s;return[e=e.replace(/(\d+)px/,(e,n)=>(t=ot((s=+n)*ve))+"px"),t,s]}function Qn(e){e.show&&[e.font,e.labelFont].forEach(e=>{let t=Nt(e[2]*ve,1);e[0]=e[0].replace(/[0-9.]+px/,t+"px"),e[1]=t})}function Zn(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=je("uplot");null!=e.id&&(c.id=e.id),_e(c,e.class),e.title&&(je("u-title",c).textContent=e.title);const u=Te("canvas"),d=n.ctx=u.getContext("2d"),h=je("u-wrap",c);Fe("click",h,e=>{e.target===p&&(Nn!=Mn||Ln!=Cn)&&Zn.click(n,e)},!0);const f=n.under=je("u-under",h);h.appendChild(u);const p=n.over=je("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,x=n.series=1==a?Wn(e.series||[],Hs,ln,!1):(w=e.series||[null],b=on,w.map((e,t)=>0==t?{}:Ut({},b,e)));var w,b;const k=n.axes=Wn(e.axes||[],Ws,sn,!0),v=n.scales={},S=n.bands=e.bands||[];S.forEach(e=>{e.fill=xt(e.fill||null),e.dir=Ke(e.dir,-1)});const _=2==a?x[1].facets[0].scale:x[0].scale,M={axes:function(){for(let e=0;eDs[e]):y,w=2==f.distr?Ds[y[1]]-Ds[y[0]]:u,b=t.ticks,S=t.border,_=b.show?b.size:0,M=ot(_*ve),C=ot((2==t.alignTo?t._size-_-t.gap:t.gap)*ve),T=t._rotate*-st/180,j=g(t._pos*ve),N=j+(M+C)*c;a=0==i?N:0,s=1==i?N:0,Bs(t.font[0],r,1==t.align?oe:2==t.align?ie:T>0?oe:T<0?ie:0==i?"center":3==o?ie:oe,T||1==i?"middle":2==o?ne:ae);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=x.some(e=>e._focus)&&As!=Vt.alpha;e&&(d.globalAlpha=As=Vt.alpha),x.forEach((e,s)=>{if(s>0&&e.show&&(Xs(s,!1),Xs(s,!0),null==e._paths)){let o=As;As!=e.alpha&&(d.globalAlpha=As=e.alpha);let i=2==a?[0,t[s][0].length-1]:function(e){let t=gt(ds-1,0,us-1),s=gt(hs+1,0,us-1);for(;null==e[t]&&t>0;)t--;for(;null==e[s]&&s{if(t>0&&e.show){let s=As;As!=e.alpha&&(d.globalAlpha=As=e.alpha),null!=e._paths&&Ks(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),Ks(t,!0))}As!=s&&(d.globalAlpha=As=s),Ra("drawSeries",t)}}),e&&(d.globalAlpha=As=1)}}},C=(e.drawOrder||["axes","series"]).map(e=>M[e]);function T(e){const t=3==e.distr?t=>dt(t>0?t:e.clamp(n,t,e.min,e.max,e.key)):4==e.distr?t=>ft(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 j(t){let s=v[t];if(null==s){let n=(e.scales||It)[t]||It;if(null!=n.from){j(n.from);let e=Ut({},v[n.from],n,{key:t});e.valToPct=T(e),v[t]=e}else{s=v[t]=Ut({},t==_?cn:un,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]?Je:{mode:1,hard:o[0],soft:o[0]},max:null==o[1]?Je:{mode:1,hard:o[1],soft:o[1]}},i=!1),!i&&Ot(o))){let e=o;o=(t,s,n)=>null==s?Rt:Xe(s,n,e)}s.range=xt(o||(e?qn:t==_?3==s.distr?Yn:4==s.distr?Xn:Un:3==s.distr?Jn:4==s.distr?Vn:Gn)),s.auto=xt(!i&&s.auto),s.clamp=xt(s.clamp||rn),s._min=s._max=null,s.valToPct=T(s)}}}j("x"),j("y"),1==a&&x.forEach(e=>{j(e.scale)}),k.forEach(e=>{j(e.scale)});for(let Z in e.scales)j(Z);const N=v[_],L=N.distr;let P,E;0==N.ori?(_e(c,"u-hz"),P=o,E=i):(_e(c,"u-vt"),P=i,E=o);const I={};for(let Z in v){let e=v[Z];null==e.min&&null==e.max||(I[Z]={min:e.min,max:e.max},e.min=e.max=null)}const A=e.tzDate||(e=>new Date(ot(e/y))),R=e.fmtDate||ts,D=1==y?vs(A):Ms(A),F=Ts(A,Cs(1==y?ks:_s,R)),z=Ls(A,Ns("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",R)),O=[],$=n.legend=Ut({},Ps,e.legend),B=n.cursor=Ut({},Rs,{drag:{y:2==a}},e.cursor),W=$.show,H=B.show,U=$.markers;let q,G,J;$.idxs=O,U.width=xt(U.width),U.dash=xt(U.dash),U.stroke=xt(U.stroke),U.fill=xt(U.fill);let Y,V=[],X=[],K=!1,Q={};if($.live){const e=x[1]?x[1].values:null;K=null!=e,Y=K?e(n,1,0):{_:0};for(let t in Y)Q[t]=ye}if(W)if(q=Te("table","u-legend",c),J=Te("tbody",null,q),$.mount(n,q),K){G=Te("thead",null,q,J);let e=Te("tr",null,G);for(var le in Te("th",null,e),Y)Te("th",ee,e).textContent=le}else _e(q,"u-inline"),$.live&&_e(q,"u-live");const me={show:!0},xe={show:!1},ke=new Map;function Se(e,t,s,a=!0){const o=ke.get(t)||{},i=B.bind[e](n,t,s,a);i&&(Fe(e,t,o[e]=i),ke.set(t,o))}function Ne(e,t,s){const n=ke.get(t)||{};for(let a in n)null!=e&&a!=e||(ze(a,t,n[a]),delete n[a]);null==e&&ke.delete(t)}let Pe=0,Ie=0,Re=0,De=0,$e=0,Ye=0,Ve=$e,Qe=Ye,Ze=Re,et=De,at=0,ut=0,ht=0,wt=0;n.bbox={};let _t=!1,Mt=!1,Tt=!1,jt=!1,Et=!1,Ft=!1;function Bt(e,t,s){(s||e!=n.width||t!=n.height)&&Wt(e,t),yn(!1),Tt=!0,Mt=!0,Rn()}function Wt(e,t){n.width=Pe=Re=e,n.height=Ie=De=t,$e=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?(Re-=r,3==o?($e+=r,n=!0):s=!0):(De-=r,0==o?(Ye+=r,e=!0):t=!0))}}),as[0]=e,as[1]=s,as[2]=t,as[3]=n,Re-=cs[1]+cs[3],$e+=cs[3],De-=cs[2]+cs[0],Ye+=cs[0]}(),function(){let e=$e+Re,t=Ye+De,s=$e,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;at=s.left=Ct($e*ve,.5),ut=s.top=Ct(Ye*ve,.5),ht=s.width=Ct(Re*ve,.5),wt=s.height=Ct(De*ve,.5)}const qt=3;if(n.setSize=function({width:e,height:t}){Bt(e,t)},null==B.dataIdx){let e=B.hover,s=e.skip=new Set(e.skip??[]);s.add(void 0);let n=e.prox=xt(e.prox),a=e.bias??(e.bias=0);B.dataIdx=(e,o,i,l)=>{if(0==o)return i;let r=i,c=n(e,o,i,l)??pt,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=>{B.event=e};B.idxs=O,B._lock=!1;let Yt=B.points;Yt.show=xt(Yt.show),Yt.size=xt(Yt.size),Yt.stroke=xt(Yt.stroke),Yt.width=xt(Yt.width),Yt.fill=xt(Yt.fill);const Vt=n.focus=Ut({},e.focus||{alpha:.3},B.focus),Xt=Vt.prox>=0,Kt=Xt&&Yt.one;let Qt=[],Zt=[],es=[];function ss(e,t){let s=Yt.show(n,t);if(s instanceof HTMLElement)return _e(s,"u-cursor-pt"),_e(s,e.class),Le(s,-10,-10,Re,De),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)?Ls(A,Ns(s,R)):s||z:s||tn,e.label=e.label||(t?"Time":"Value")}if(Kt||t>0){e.width=null==e.width?1:e.width,e.paths=e.paths||$n||kt,e.fillTo=xt(e.fillTo||mn),e.pxAlign=+Ke(e.pxAlign,m),e.pxRound=wn(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=Nt(1*(3+2*(rt(1,e.width)||1)),3),s=e.points=Ut({},{size:t,width:rt(1,.2*t),stroke:e.stroke,space:2*t,paths:Bn,_stroke:null,_fill:null},e.points);s.show=xt(s.show),s.filter=xt(s.filter),s.fill=xt(s.fill),s.stroke=xt(s.stroke),s.paths=xt(s.paths),s.pxAlign=e.pxAlign}if(W){let s=function(e,t){if(0==t&&(K||!$.live||2==a))return Rt;let s=[],o=Te("tr","u-series",J,J.childNodes[t]);_e(o,e.class),e.show||_e(o,Z);let i=Te("th",null,o);if(U.show){let e=je("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=je(ee,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)),Se("click",i,t=>{if(B._lock)return;Jt(t);let s=x.indexOf(e);if((t.ctrlKey||t.metaKey)!=$.isolate){let e=x.some((e,t)=>t>0&&t!=s&&e.show);x.forEach((t,n)=>{n>0&&ia(n,e?n==s?me:xe:me,!0,Fa.setSeries)})}else ia(s,{show:!e.show},!0,Fa.setSeries)},!1),Xt&&Se(he,i,t=>{B._lock||(Jt(t),ia(x.indexOf(e),ua,!0,Fa.setSeries))},!1)),Y){let e=Te("td","u-value",o);e.textContent="--",s.push(e)}return[o,s]}(e,t);V.splice(t,0,s[0]),X.splice(t,0,s[1]),$.values.push(null)}if(H){O.splice(t,0,null);let s=null;Kt?0==t&&(s=ss(e,t)):t>0&&(s=ss(e,t)),Qt.splice(t,0,s),Zt.splice(t,0,0),es.splice(t,0,0)}Ra("addSeries",t)}n.addSeries=function(e,t){t=null==t?x.length:t,e=1==a?Hn(e,t,Hs,ln):Hn(e,t,{},on),x.splice(t,0,e),ns(x[t],t)},n.delSeries=function(e){if(x.splice(e,1),W){$.values.splice(e,1),X.splice(e,1);let t=V.splice(e,1)[0];Ne(null,t.firstChild),t.remove()}H&&(O.splice(e,1),Qt.splice(e,1)[0].remove(),Zt.splice(e,1),es.splice(e,1)),Ra("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?ot(Ws.size/3):0),1==r&&(a||i)&&(c=1==t&&!o||3==t&&!l?ot(sn.size/2):0),c}const is=n.padding=(e.padding||[os,os,os,os]).map(e=>xt(Ke(e,os))),cs=n._padding=is.map((e,t)=>e(n,t,as,0));let us,ds=null,hs=null;const fs=1==a?x[0].idxs:null;let ps,ms,gs,ys,xs,ws,js,Es,Is,As,Ds=null,Fs=!1;function zs(e,s){if(t=null==e?[]:e,n.data=n._data=t,2==a){us=0;for(let e=1;e=0,Ft=!0,Rn()}}function Os(){let e,s;Fs=!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]=qe(e,e,N.log,!1):4==L?[e,s]=Ge(e,e,N.log,!1):N.time?s=e+ot(86400/y):[e,s]=Xe(e,s,.1,!0))):(ds=fs[0]=e=null,hs=fs[1]=s=null)),oa(_,e,s)}function $s(e,t,s,n,a,o){e??(e=re),s??(s=At),n??(n="butt"),a??(a=re),o??(o="round"),e!=ps&&(d.strokeStyle=ps=e),a!=ms&&(d.fillStyle=ms=a),t!=gs&&(d.lineWidth=gs=t),o!=xs&&(d.lineJoin=xs=o),n!=ws&&(d.lineCap=ws=n),s!=ys&&d.setLineDash(ys=s)}function Bs(e,t,s,n){t!=ms&&(d.fillStyle=ms=t),e!=js&&(d.font=js=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,Fs)&&(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?Ue:He,i=a?We:Be;[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??pt,r??-pt]}(a,t,n,o,3==e.distr):[s.min,s.max];e.min=lt(e.min,s.min=i[0]),e.max=rt(e.max,s.max=i[1])}}n.setData=zs;const Vs={min:null,max:null};function Xs(e,t){let s=t?x[e].points:x[e];s._stroke=s.stroke(n,e),s._fill=s.fill(n,e)}function Ks(e,s){let a=s?x[e].points:x[e],{stroke:o,fill:i,clip:l,flags:r,_stroke:c=a._stroke,_fill:u=a._fill,_width:h=a.width}=a._paths;h=Nt(h*ve,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=at-h/2,t=ut-h/2,s=ht+h,n=wt+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=x[p.series[1]],y=t[p.series[1]],w=(g._paths||It).band;Dt(w)&&(w=1==p.dir?w[0]:w[1]);let b=null;g.show&&w&&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):w=null,nn(s,a,o,i,b,r,c,u,d,h,e,w),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 Qs=3;function nn(e,t,s,n,a,o,i,l,r,c,u,h){$s(e,t,s,n,a),(r||c||h)&&(d.save(),r&&d.clip(r),c&&d.clip(c)),h?(l&Qs)==Qs?(d.clip(h),u&&d.clip(u),dn(a,i),an(e,o,t)):2&l?(dn(a,i),d.clip(h),an(e,o,t)):1&l&&(d.save(),d.clip(h),u&&d.clip(u),dn(a,i),d.restore(),an(e,o,t)):(dn(a,i),an(e,o,t)),(r||c||h)&&d.restore()}function an(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 dn(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),$s(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=rt(mt(e),mt(t)),i=t-e,l=Oe(a/n*i,s);do{let e=s[l],t=n*e/i;if(t>=a&&o+(e<5?Lt.get(e):0)<=17)return[e,t]}while(++lDs[e]):f,m=2==o.distr?Ds[f[1]]-Ds[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=it(s.size(n,g,a,e)),null!=y&&s._size!=y&&(t=!1)}),t}function gn(e){let t=!0;return is.forEach((s,a)=>{let o=s(n,a,as,e);o!=cs[a]&&(t=!1),cs[a]=o}),t}function yn(e){x.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,Mn,Cn,Tn,jn,Nn,Ln,Pn=!1,En=!1,In=[];function An(){En=!1;for(let e=0;e0){x.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=Oe(l.min,t[0]),hs=Oe(l.max,t[0]),hs-ds>1&&(t[0][ds]l.max&&hs--),s.min=Ds[ds],s.max=Ds[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==pt?null:s.min,s.max==-pt?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?dt(a.min):4==e?ft(a.min,a.asinh):100==e?a.fwd(a.min):a.min,a._max=3==e?dt(a.max):4==e?ft(a.max,a.asinh):100==e?a.fwd(a.max):a.max,s[t]=o=!0}}if(o){x.forEach((e,t)=>{2==a?t>0&&s.y&&(e._paths=null):s[e.scale]&&(e._paths=null)});for(let e in s)Tt=!0,Ra("setScale",e);H&&B.left>=0&&(jt=Ft=!0)}for(let t in I)I[t]=null}(),_t=!1),Tt&&(function(){let e=!1,t=0;for(;!e;){t++;let s=pn(t),a=gn(t);e=t==qt||s&&a,e||(Wt(n.width,n.height),Mt=!0)}}(),Tt=!1),Mt){if(Ce(f,oe,$e),Ce(f,ne,Ye),Ce(f,te,Re),Ce(f,se,De),Ce(p,oe,$e),Ce(p,ne,Ye),Ce(p,te,Re),Ce(p,se,De),Ce(h,te,Pe),Ce(h,se,Ie),u.width=ot(Pe*ve),u.height=ot(Ie*ve),k.forEach(({_el:e,_show:t,_size:s,_pos:n,side:a})=>{if(null!=e)if(t){let t=a%2==1;Ce(e,t?"left":"top",n-(3===a||0===a?s:0)),Ce(e,t?"width":"height",s),Ce(e,t?"top":"left",t?Ye:$e),Ce(e,t?"height":"width",t?De:Re),Me(e,Z)}else _e(e,Z)}),ps=ms=gs=xs=ws=js=Es=Is=ys=null,As=1,ba(!0),$e!=Ve||Ye!=Qe||Re!=Ze||De!=et){yn(!1);let e=Re/Ze,t=De/et;if(H&&!jt&&B.left>=0){B.left*=e,B.top*=t,kn&&Le(kn,ot(B.left),0,Re,De),vn&&Le(vn,0,ot(B.top),Re,De);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)Ce(na,e,sa[e])}Ve=$e,Qe=Ye,Ze=Re,et=De}Ra("setSize"),Mt=!1}Pe>0&&Ie>0&&(d.clearRect(0,0,u.width,u.height),Ra("drawClear"),C.forEach(e=>e()),Ra("draw")),sa.show&&Et&&(aa(sa),Et=!1),H&&jt&&(xa(null,!0,!1),jt=!1),$.show&&$.live&&Ft&&(ga(),Ft=!1),r||(r=!0,n.status=1,Ra("ready")),Fs=!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=Oe(s.min,t[0]),s.max=Oe(s.max,t[0]),s.min==s.max&&s.max++),I[e]=s,_t=!0,Rn()}}n.batch=function(e,t=!1){Pn=!0,En=t,e(n),Dn(),t&&In.length>0&&queueMicrotask(An)},n.redraw=(e,t)=>{Tt=t||!1,!1!==e?oa(_,N.min,N.max):Rn()},n.setScale=Fn;let On=!1;const Zn=B.drag;let ea=Zn.x,ta=Zn.y;H&&(B.x&&(xn=je("u-cursor-x",p)),B.y&&(bn=je("u-cursor-y",p)),0==N.ori?(kn=xn,vn=bn):(kn=bn,vn=xn),Nn=B.left,Ln=B.top);const sa=n.select=Ut({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),na=sa.show?je("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&&Ce(na,t,e[t]);!1!==t&&Ra("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;x.forEach((n,o)=>{if(1==a||o>0){let a=t||0==o||o==e;n._focus=t?null:a,s&&function(e,t){x[e].alpha=t,H&&null!=Qt[e]&&(Qt[e].style.opacity=t),W&&V[e]&&(V[e].style.opacity=t)}(o,a?1:Vt.alpha)}}),ca=e,s&&Rn()}}(e),null!=t.show&&x.forEach((s,n)=>{n>0&&(e==n||null==e)&&(s.show=t.show,function(e){if(x[e].show)W&&Me(V[e],Z);else if(W&&_e(V[e],Z),H){let t=Kt?Qt[0]:Qt[e];null!=t&&Le(t,-10,-10,Re,De)}}(n),2==a?(oa(s.facets[0].scale,null,null),oa(s.facets[1].scale,null,null)):oa(s.scale,null,null),Rn())}),!1!==s&&Ra("setSeries",e,t),o&&$a("setSeries",n,e,t)}let la,ra,ca;n.setSelect=aa,n.setSeries=ia,n.addBand=function(e,t){e.fill=xt(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){Ut(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/ve-(1==n.ori?Ye:$e));let a=Re;1==n.ori&&(a=De,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?ct(10,i):4==l?((e,t=1)=>tt.sinh(e)*t)(i,n.asinh):100==l?n.bwd(i):i}function ha(e,t){Ce(na,oe,sa.left=e),Ce(na,te,sa.width=t)}function fa(e,t){Ce(na,ne,sa.top=e),Ce(na,se,sa.height=t)}W&&Xt&&Se(fe,q,e=>{B._lock||(Jt(e),null!=ca&&ia(null,ua,!0,Fa.setSeries))}),n.valToIdx=e=>Oe(e,t[0]),n.posToIdx=function(e,s){return Oe(da(e,_,s),t[0],ds,hs)},n.posToVal=da,n.valToPos=(e,t,s)=>0==v[t].ori?o(e,v[t],s?ht:Re,s?at:0):i(e,v[t],s?wt:De,s?ut:0),n.setCursor=(e,t,s)=>{Nn=e.left,Ln=e.top,xa(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),$.idx=O[0]),W&&$.live){for(let e=0;e0||1==a&&!K)&&ya(e,O[e]);!function(){if(W&&$.live)for(let e=2==a?1:0;ehs;la=pt,ra=null;let r=0==N.ori?Re:De,c=1==N.ori?Re:De;if(Nn<0||0==us||l){i=B.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(Xt&&null!=k){let t=1==N.ori?Nn:Ln,s=nt(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(Ft||Kt){let e,t;0==N.ori?(e=s,t=y):(e=y,t=s);let a,o,i,r,c,x,w=!0,b=Yt.bbox;if(null!=b){w=!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(x=Yt.fill(n,g),c=Yt.stroke(n,g),Kt)g==ra&&la<=Vt.prox&&(l=i,u=r,d=a,h=o,f=w,p=x,m=c);else{let e=Qt[g];null!=e&&(Zt[g]=i,es[g]=r,Ae(e,a,o,w),Ee(e,x,c),Le(e,it(i),it(r),Re,De))}}}}if(Kt){let e=Vt.prox;if(Ft||(null==ca?la<=e:la>e||ra!=ca)){let e=Qt[0];null!=e&&(Zt[0]=l,es[0]=u,Ae(e,d,h,f),Ee(e,p,m),Le(e,it(l),it(u),Re,De))}}}if(sa.show&&On)if(null!=e){let[t,s]=Fa.scales,[n,a]=Fa.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,x=e.scales[o].ori,w=e.posToVal,b=null!=t&&n(t,o),k=null!=s&&a(s,i);b&&ea?(0==x?(l=p,u=g):(l=m,u=y),d=v[t],h=P(w(l,o),d,r,0),f=P(w(l+u,o),d,r,0),pa(lt(h,f),nt(f-h))):pa(0,r),k&&ta?(1==x?(l=p,u=g):(l=m,u=y),d=v[s],h=E(w(l,i),d,c,0),f=E(w(l+u,i),d,c,0),ma(lt(h,f),nt(f-h))):ma(0,c)}else _a()}else{let e=nt(Tn-Sn),t=nt(jn-_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=Mn,n=Nn):(s=Cn,n=Ln),pa(lt(s,n),nt(n-s)),ta||ma(0,c)),ta&&(1==N.ori?(s=Mn,n=Nn):(s=Cn,n=Ln),ma(lt(s,n),nt(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!=za){let[e,t]=Fa.scales;Fa.values[0]=null!=e?da(0==N.ori?Nn:Ln,e):null,Fa.values[1]=null!=t?da(1==N.ori?Nn:Ln,t):null}$a(ce,n,Nn,Ln,Re,De,i)}if(Xt){let e=o&&Fa.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)}}Ft&&($.idx=i,ga()),!1!==s&&Ra("setCursor")}n.setLegend=ga;let wa=null;function ba(e=!1){e?wa=null:(wa=p.getBoundingClientRect(),Ra("syncRect",wa))}function ka(e,t,s,n,a,o,i){B._lock||On&&null!=e&&0==e.movementX&&0==e.movementY||(va(e,t,s,n,a,o,0,!1,null!=e),null!=e?xa(null,!0,!0):xa(t,!0,!1))}function va(e,t,s,a,o,i,r,c,u){if(null==wa&&ba(!1),Jt(e),null!=e)s=e.clientX-wa.left,a=e.clientY-wa.top;else{if(s<0||a<0)return Nn=-10,void(Ln=-10);let[e,n]=Fa.scales,r=t.cursor.sync,[c,u]=r.values,[d,h]=r.scales,[f,p]=Fa.match,m=t.axes[0].side%2==1,g=0==N.ori?Re:De,y=1==N.ori?Re:De,x=m?i:o,w=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/x),a=null!=h?p(n,h)?l(u,v[n],y,0):-10:y*(k/w),1==N.ori){let e=s;s=a,a=e}}!u||null!=t&&t.cursor.event.type!=ce||((s<=1||s>=Re-1)&&(s=Ct(s,Re)),(a<=1||a>=De-1)&&(a=Ct(a,De))),c?(Sn=s,_n=a,[Mn,Cn]=B.move(n,s,a)):(Nn=s,Ln=a)}Object.defineProperty(n,"rect",{get:()=>(null==wa&&ba(!1),wa)});const Sa={width:0,height:0,left:0,top:0};function _a(){aa(Sa,!1)}let Ma,Ca,Ta,ja;function Na(e,t,s,a,o,i,l){On=!0,ea=ta=Zn._x=Zn._y=!1,va(e,t,s,a,o,i,0,!0,!1),null!=e&&(Se(de,we,La,!1),$a(ue,n,Mn,Cn,Re,De,null));let{left:r,top:c,width:u,height:d}=sa;Ma=r,Ca=c,Ta=u,ja=d}function La(e,t,s,a,o,i,l){On=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=Ma!=r||Ca!=c||Ta!=u||ja!=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!=pt&&oa(a,da(s+n,a),da(s,a))}_a()}else B.lock&&(B._lock=!B._lock,xa(t,!0,null!=e));null!=e&&(Ne(de,we),$a(de,n,Nn,Ln,Re,De,null))}function Pa(e,t,s,a,o,i,l){B._lock||(Jt(e),Os(),_a(),null!=e&&$a(pe,n,Nn,Ln,Re,De,null))}function Ea(){k.forEach(Qn),Bt(n.width,n.height,!0)}Fe(ge,be,Ea);const Ia={};Ia.mousedown=Na,Ia.mousemove=ka,Ia.mouseup=La,Ia.dblclick=Pa,Ia.setSeries=(e,t,s,a)=>{-1!=(s=(0,Fa.match[2])(n,t,s))&&ia(s,a,!0,!1)},H&&(Se(ue,p,Na),Se(ce,p,ka),Se(he,p,e=>{Jt(e),ba(!1)}),Se(fe,p,function(e,t,s,n,a,o,i){if(B._lock)return;Jt(e);let l=On;if(On){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>=Re-a,n=Ln<=a||Ln>=De-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 Da=(e,t,s)=>s,Fa=Ut({key:null,setSeries:!1,filters:{pub:vt,sub:vt},scales:[_,x[1]?x[1].scale:null],match:[St,St,Da],values:[null,null]},B.sync);2==Fa.match.length&&Fa.match.push(Da),B.sync=Fa;const za=Fa.key,Oa=hn(za);function $a(e,t,s,n,a,o,i){Fa.filters.pub(e,t,s,n,a,o,i)&&Oa.pub(e,t,s,n,a,o,i)}function Ba(){Ra("init",e,t),zs(t||e.data,!1),I[_]?Fn(_,I[_]):Os(),Et=sa.show&&(sa.width>0||sa.height>0),jt=Ft=!0,Bt(e.width,e.height)}return Oa.sub(n),n.pub=function(e,t,s,n,a,o,i){Fa.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),ke.clear(),ze(ge,be,Ea),c.remove(),null==q||q.remove(),Ra("destroy")},x.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?x[1].scale:_,a=v[e.scale]);let o=a.time;e.size=xt(e.size),e.space=xt(e.space),e.rotate=xt(e.rotate),Dt(e.incrs)&&e.incrs.forEach(e=>{!Lt.has(e)&&Lt.set(e,Pt(e))}),e.incrs=xt(e.incrs||(2==a.distr?ls:o?1==y?bs:Ss:rs)),e.splits=xt(e.splits||(o&&1==a.distr?D:3==a.distr?Gs:4==a.distr?Js:qs)),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=Dt(i)&&!Dt(i[0])?xt(i):o?Dt(i)?Ts(A,Cs(i,R)):zt(i)?function(e,t){let s=ts(t);return(t,n,a,o,i)=>n.map(t=>s(e(t)))}(A,i):i||F:i||Us,e.filter=xt(e.filter||(a.distr>=3&&10==a.log?Zs:3==a.distr&&2==a.log?en:bt)),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=je("u-axis",h))}}),s?s instanceof HTMLElement?(s.appendChild(c),Ba()):s(n,Ba):Ba(),n}Zn.assign=Ut,Zn.fmtNum=et,Zn.rangeNum=Xe,Zn.rangeLog=qe,Zn.rangeAsinh=Ge,Zn.orient=fn,Zn.pxRatio=ve,Zn.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=rt(1,at((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;ifn(e,o,(r,c,u,d,h,f,p,m,g,y,x)=>{[i,l]=He(u,i,l);let w=r.pxRound,{left:b,width:k}=e.bbox,v=e=>w(f(e,d,y,m)),S=e=>w(p(e,h,x,g)),_=0==d.ori?Sn:_n;const M={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},C=M.stroke,T=d.dir*(0==d.ori?1:-1);let j=S(u[1==T?i:l]),N=v(c[1==T?i:l]),L=N,P=N;a&&-1==t&&(P=b,_(C,P,j)),_(C,N,j);for(let e=1==T?i:l;e>=i&&e<=l;e+=T){let s=u[e];if(null==s)continue;let n=v(c[e]),a=S(s);1==t?_(C,n,j):_(C,L,a),_(C,n,a),j=a,L=n}let E=L;a&&1==t&&(E=b+k,_(C,E,j));let[I,A]=pn(e,o);if(null!=r.fill||0!=I){let t=M.fill=new Path2D(C),s=S(r.fillTo(e,o,r.min,r.max,I));_(t,E,s),_(t,P,s)}if(!r.spanGaps){let a=[];a.push(...xn(c,u,i,l,T,v,n));let h=r.width*ve/2,f=s||1==t?h:-h,p=s||-1==t?-h:h;a.forEach(e=>{e[0]+=f,e[1]+=p}),M.gaps=a=r.gaps(e,o,i,l,a),M.clip=yn(a,d.ori,m,g,y,x)}return 0!=A&&(M.band=2==A?[gn(e,o,i,l,C,-1),gn(e,o,i,l,C,1)]:gn(e,o,i,l,C,A)),M})},e.bars=function(e){const t=Ke((e=e||It).size,[.6,pt,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=xt(a),i=1-t[0],l=Ke(t[1],pt),r=Ke(t[2],1),c=Ke(e.disp,It),u=Ke(e.each,e=>{}),{fill:d,stroke:h}=c;return(e,t,a,f)=>fn(e,t,(p,m,g,y,x,w,b,k,v,S,_)=>{let M,C,T=p.pxRound,j=s,N=n*ve,L=l*ve,P=r*ve;0==y.ori?[M,C]=o(e,t):[C,M]=o(e,t);const E=y.dir*(0==y.ori?1:-1);let I,A,R,D=0==y.ori?Mn:Cn,F=0==y.ori?u:(e,t,s,n,a,o,i)=>{u(e,t,s,a,n,i,o)},z=Ke(e.bands,At).find(e=>e.series[0]==t),O=null!=z?z.dir:0,$=p.fillTo(e,t,p.min,p.max,O),B=T(b($,x,_,v)),W=S,H=T(p.width*ve),U=!1,q=null,G=null,J=null,Y=null;null==d||0!=H&&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)}),H>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:X}=c;if(null!=V&&null!=X){j=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=X.values(e,t,a,f);A=2==X.unit?s[0]*S:w(s[0],y,S,k)-w(0,y,S,k),W=Dn(m,g,w,y,S,k,W),R=W-A+N}else W=Dn(m,g,w,y,S,k,W),R=W*i+N,A=W-R;R<1&&(R=0),H>=A/2&&(H=0),R<5&&(T=wt);let K=R>0;A=T(gt(W-R-(K?H:0),P,L)),I=(0==j?A/2:j==E?0:A)-j*E*((0==j?N/2:0)+(K?H/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!=z)ee=e.data[z.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=M*A,se=C*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=b(e,x,_,v)}let a=w(2!=y.distr||null!=c?m[s]:s,y,S,k),o=b(Ke(n,$),x,_,v),i=T(a-I),l=T(rt(o,B)),r=T(lt(o,B)),u=l-r;if(null!=n){let a=n<0?se:te,o=n<0?te:se;U?(H>0&&null!=J[s]&&D(Y.get(J[s]),i,r+at(H/2),A,rt(0,u-H),a,o),null!=q[s]&&D(G.get(q[s]),i,r+at(H/2),A,rt(0,u-H),a,o)):D(Z,i,r+at(H/2),A,rt(0,u-H),a,o),F(e,t,s,i-H/2,r,A+H,u)}}return H>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)=>fn(t,n,(i,l,r,c,u,d,h,f,p,m,g)=>{[a,o]=He(r,a,o);let y,x,w,b=i.pxRound,k=e=>b(d(e,c,m,f)),v=e=>b(h(e,u,g,p));0==c.ori?(y=kn,w=Sn,x=Nn):(y=vn,w=_n,x=Ln);const S=c.dir*(0==c.ori?1:-1);let _=k(l[1==S?a:o]),M=_,C=[],T=[];for(let e=1==S?a:o;e>=a&&e<=o;e+=S)if(null!=r[e]){let t=k(l[e]);C.push(M=t),T.push(v(r[e]))}const j={stroke:e(C,T,y,w,x,b),fill:null,clip:null,band:null,gaps:null,flags:1},N=j.stroke;let[L,P]=pn(t,n);if(null!=i.fill||0!=L){let e=j.fill=new Path2D(N),s=v(i.fillTo(t,n,i.min,i.max,L));w(e,M,s),w(e,_,s)}if(!i.spanGaps){let e=[];e.push(...xn(l,r,a,o,S,k,s)),j.gaps=e=i.gaps(t,n,a,o,e),j.clip=yn(e,c.ori,f,p,m,g)}return 0!=P&&(j.band=2==P?[gn(t,n,a,o,N,-1),gn(t,n,a,o,N,1)]:gn(t,n,a,o,N,P)),j})}(Fn,e)}}const ea=new Map;function ta(e){var t;if(!e.startsWith("var("))return e;const s=ea.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 ea.set(e,i),i}const sa=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);s.useLayoutEffect(()=>{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,i=window.devicePixelRatio||1,l=function(){const e=getComputedStyle(document.documentElement);return{fontFamily:e.getPropertyValue("--font-data").trim()||'"JetBrains Mono", ui-monospace, monospace',textPrimary:e.getPropertyValue("--text-primary").trim()||"#FFFFFF"}}();t.save(),t.strokeStyle=l.textPrimary,t.globalAlpha=.15,t.lineWidth=1*i,t.setLineDash([4*i,4*i]);for(const c of[.2,.4,.6,.8]){const e=Math.round(n+o*(1-c))+.5;t.beginPath(),t.moveTo(Math.round(s),e),t.lineTo(Math.round(s+a),e),t.stroke()}t.restore(),t.save(),t.font=`bold ${10*i}px ${l.fontFamily}`,t.fillStyle=l.textPrimary,t.textBaseline="middle",t.textAlign="left";const r=8*i;for(const c of[0,20,40,60,80,100]){const e=n+o*(1-c/100),s=Math.max(n+r,Math.min(n+o-r,e));t.fillText(`${c}%`,0,s)}t.restore()}(e)}}}),[]),m=s.useMemo(()=>({width:400,height:200,padding:[8,0,0,32],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 Zn({...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})}),na=s.createContext(null);function aa({children:e}){const[t,a]=s.useState(()=>function(){if("undefined"==typeof window)return F;try{let t=localStorage.getItem(z),s=localStorage.getItem(O);const n=localStorage.getItem($);if(!t&&!s){const e=localStorage.getItem(B);if(e){const n=D.find(t=>t.id===e);n&&(t=n.colorScheme,s=n.backgroundImage,localStorage.setItem(z,t),localStorage.setItem(O,s),localStorage.removeItem(B))}}const a="string"==typeof(e=t)&&A.some(t=>t.id===e)?t:F.colorScheme,o=s||F.backgroundImage;let i=F.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 F}var e}());s.useEffect(()=>{(function(e){const t=(s=e,A.find(e=>e.id===s)??A[0]);var s;t.dataTheme?document.documentElement.setAttribute("data-theme",t.dataTheme):document.documentElement.removeAttribute("data-theme")})(t.colorScheme),ea.clear(),requestAnimationFrame(()=>{!function(){if("undefined"==typeof window)return;for(const t of q){const e=K(`--palette-${t}-bright`),s=K(`--palette-${t}`),n=e||s;if(!n)continue;const a=X(n);for(const o of U)Q(`--palette-${t}-${o}`,a[o])}const e=K("--palette-bg-4");if(e){const t=X(e);for(const e of U)Q(`--palette-neutral-${e}`,t[e])}}()})},[t.colorScheme]),s.useEffect(()=>{!function(e){if("undefined"!=typeof window)try{localStorage.setItem(z,e.colorScheme),localStorage.setItem(O,e.backgroundImage),localStorage.setItem($,String(e.brightness))}catch{}}(t)},[t]),s.useEffect(()=>{R.forEach(e=>{(new Image).src=e.src})},[]);const o=s.useCallback(e=>{a(t=>({...t,colorScheme:e}))},[]),i=s.useCallback(e=>{const t=R.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(na.Provider,{value:c,children:e})}function oa(){const e=s.useContext(na);if(!e)throw new Error("useTheme must be used within a ThemeProvider. Wrap your app with in App.tsx.");return e}const ia="0.9.142",la="'JetBrains Mono', monospace",ra=s.memo(function({height:e=16,responsive:t=!1,className:s=""}){const a="var(--accent-primary)",o="#FFFFFF";if(t){const e=145,t=24;return n.jsxs("svg",{className:s,viewBox:`0 0 ${e} ${t}`,preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":"pyMC:Console",style:{display:"block",width:"80%",height:"auto"},children:[n.jsx("style",{children:`\n .logo-text {\n font-family: ${la};\n }\n .logo-accent {\n fill: var(--accent-primary, #719CDF);\n }\n `}),n.jsxs("text",{x:"0",y:"18",className:"logo-text",fontSize:"20",fontWeight:"400",letterSpacing:"-0.02em",children:[n.jsx("tspan",{className:"logo-accent",children:"py"}),n.jsx("tspan",{fill:o,children:"MC"}),n.jsx("tspan",{className:"logo-accent",children:":"}),n.jsx("tspan",{fill:o,children:"Console"})]})]})}const i="string"==typeof e?parseFloat(e):e,l={fontFamily:la,fontSize:.8*i+"px",fontWeight:400,lineHeight:1,letterSpacing:"-0.02em",whiteSpace:"nowrap"};return n.jsxs("span",{className:s,style:l,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"})]})}),ca={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"},ua={0:"T_FLOOD",1:"FLOOD",2:"DIRECT",3:"T_DIRECT"},da={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 ha(e){return 1===e||0===e}const fa={spreadingFactor:7,bandwidthHz:125e3,codingRate:5,preambleLength:8,crcEnabled:!0,explicitHeader:!0};function pa(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 ma(e,t={}){const s=t.spreadingFactor??fa.spreadingFactor,n=t.bandwidthHz??fa.bandwidthHz,a=t.codingRate??fa.codingRate,o=t.preambleLength??fa.preambleLength??8,i=t.crcEnabled??fa.crcEnabled?1:0,l=t.explicitHeader??fa.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 ga="pymc_jwt_token",ya="pymc_client_id",xa="pymc_remember_me",wa=new Set;function ba(e){return wa.add(e),()=>wa.delete(e)}function ka(e){for(const s of wa)try{s(e)}catch(t){}}function va(){let e=localStorage.getItem(ya);return e||(e=`${Date.now()}-${Math.random().toString(36).substring(2,15)}`,localStorage.setItem(ya,e)),e}function Sa(){return"true"===localStorage.getItem(xa)}function _a(e){e?localStorage.setItem(xa,"true"):localStorage.removeItem(xa)}function Ma(){return Sa()?localStorage:sessionStorage}function Ca(){return Ma().getItem(ga)||localStorage.getItem(ga)||sessionStorage.getItem(ga)}function Ta(e){Ma().setItem(ga,e),Sa()?sessionStorage.removeItem(ga):localStorage.removeItem(ga),ka(e)}function ja(){localStorage.removeItem(ga),sessionStorage.removeItem(ga),ka(null)}function Na(){return!(!Ca()||Pa()&&(ja(),1))}function La(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 Pa(){const e=Ca();if(!e)return!0;const t=La(e);return!t||!t.exp||Date.now()>=1e3*t.exp-6e4}function Ea(){const e=Ca();if(!e)return 0;const t=La(e);return t&&t.exp?Math.max(0,Math.floor((1e3*t.exp-Date.now())/1e3)):0}function Ia(){const e=Ca();if(!e)return!1;const t=La(e);if(!t||!t.exp)return!1;const s=1e3*t.exp-Date.now();return s>0&&s<3e5}function Aa(){const e=Ca();if(!e)return null;const t=La(e);return t&&t.sub?t.sub:null}async function Ra(e,t,s=!1){_a(s);try{const s=await fetch("/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t,client_id:va()})}),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?(Ta(a.token),{success:!0}):{success:!1,error:a.error||"Login failed"}}catch(n){return{success:!1,error:"Connection error. Please try again."}}}async function Da(){const e=Ca();if(!e)return!1;const t=La(e);(null==t?void 0:t.exp)&&Math.floor((1e3*t.exp-Date.now())/1e3);try{const t=await fetch("/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({client_id:va()})});if(!t.ok){let e="";try{const s=await t.json();e=s.error||JSON.stringify(s)}catch{e=t.statusText}return!1}const s=await t.json();if(s.success&&s.token){Ta(s.token);const e=La(s.token);return(null==e?void 0:e.exp)&&Math.floor((1e3*e.exp-Date.now())/1e3),!0}return!1}catch(s){return!1}}let Fa=null;async function za(){const e=Ca();if(!e)return!1;const t=La(e);return(null==t?void 0:t.exp)&&Math.floor((1e3*t.exp-Date.now())/1e3),!Ia()||Fa||(Fa=Da().finally(()=>{Fa=null}),Fa)}function Oa(){ja()}let $a=!1;function Ba(){if($a)return;if("undefined"==typeof document)return;const e=async()=>{if("visible"!==document.visibilityState)return;if(!Ca())return;if(Pa())return ja(),void("undefined"==typeof window||window.location.pathname.includes("/login")||(window.location.href="/login"));const e=Ea();e>0&&e<300&&await Da()};document.addEventListener("visibilitychange",e),$a=!0,"visible"===document.visibilityState&&e()}const Wa=Object.freeze(Object.defineProperty({__proto__:null,clearToken:ja,getClientId:va,getRememberMe:Sa,getToken:Ca,getTokenTimeRemaining:Ea,getUsername:Aa,isAuthenticated:Na,isTokenExpired:Pa,login:Ra,logout:Oa,onTokenChange:ba,parseJWT:La,refreshToken:Da,refreshTokenIfNeeded:za,setRememberMe:_a,setToken:Ta,shouldRefreshToken:Ia,startVisibilityBasedRefresh:Ba},Symbol.toStringTag,{value:"Module"})),Ha=new Map;let Ua=!1;async function qa(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=Ha.get(n);if(e)return e}const a=`${e}`;!s&&Ia()&&await Da();const o=Ca();if(!o&&!e.includes("/auth/"))throw window.location.href="/login",new Error("Not authenticated");const 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&&!Ua&&await Da())return qa(e,t,!0);throw Ua||(Ua=!0,ja(),window.location.replace("/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&&(Ha.set(n,l),l.finally(()=>{Ha.delete(n)})),l}function Ga(e){return e&&"chat node"===e.toLowerCase()?"Companion":e}async function Ja(){return function(e){if(e.neighbors)for(const t of Object.values(e.neighbors))t.contact_type=Ga(t.contact_type);return e}(await qa("/api/stats"))}async function Ya(){return qa("/api/logs")}async function Va(e=24){return qa(`/api/noise_floor_history?hours=${e}`)}async function Xa(){return qa("/api/hardware_stats")}async function Ka(){return qa("/api/send_advert",{method:"POST",body:"{}"})}async function Qa(e){return qa("/api/set_mode",{method:"POST",body:JSON.stringify({mode:e})})}async function Za(e){return qa("/api/set_duty_cycle",{method:"POST",body:JSON.stringify({enabled:e})})}const eo=new Map;function to(e=!1){if(e)eo.clear();else for(const[t]of eo)parseInt(t.split("-")[0],10)<=60&&eo.delete(t)}function so(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)??fa.spreadingFactor,bandwidthHz:(null==s?void 0:s.bandwidth)??fa.bandwidthHz,codingRate:(null==s?void 0:s.coding_rate)??fa.codingRate,preambleLength:(null==s?void 0:s.preamble_length)??fa.preambleLength,crcEnabled:!0,explicitHeader:!0}}(n):fa,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=ma(pa(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 no(e){return qa("/api/update_radio_config",{method:"POST",body:JSON.stringify(e)})}async function ao(e){return qa("/api/set_log_level",{method:"POST",body:JSON.stringify({level:e})})}async function oo(){return qa("/api/transport_keys")}async function io(e){return qa("/api/transport_keys",{method:"POST",body:JSON.stringify(e)})}async function lo(e,t){return qa(`/api/transport_key/${e}`,{method:"PUT",body:JSON.stringify(t)})}async function ro(e){return qa(`/api/transport_key/${e}`,{method:"DELETE"})}async function co(e){return qa("/api/global_flood_policy",{method:"POST",body:JSON.stringify({global_flood_allow:e})})}async function uo(e,t=10){return qa("/api/ping_neighbor",{method:"POST",body:JSON.stringify({target_id:e,timeout:t})})}async function ho(e){return qa("/api/update_web_config",{method:"POST",body:JSON.stringify(e)})}async function fo(){return qa("/api/check_pymc_console")}async function po(){return qa("/api/restart_service",{method:"POST",body:"{}"})}async function mo(){return qa("/auth/tokens")}async function go(e){return qa("/auth/tokens",{method:"POST",body:JSON.stringify({name:e})})}async function yo(e){return qa(`/auth/tokens/${e}`,{method:"DELETE"})}const xo="pymc-packet-cache",wo="pymc-packet-cache-meta",bo=36e5,ko=12096e5,vo=5e3,So=5e5,_o=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>bo}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;const t=Date.now(),s=Math.floor((t-ko)/1e3),n=42e4;this.loadProgress={loaded:0,target:n,percent:0},this.statusMessage="Loading 14-day history...",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 a=0,o=0,i=0;const l=Math.ceil(100);for(let r=0;r0))break;{const n=this.packets.size;this.mergePackets(u.data);const i=this.packets.size-n;a+=i;const l=Math.min(...u.data.map(e=>e.timestamp??1/0));if(l!==1/0&&(void 0===t||l=2)break}else o=0;if(u.data.length=So)break}r=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(a){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;const e=Date.now(),t=Math.floor((e-ko)/1e3),s=42e4;this.statusMessage="Loading 14-day topology...",this.loadProgress={loaded:0,target:s,percent:0},this.notifyListeners();try{let e,n=0,a=0,o=0;const i=Math.ceil(100);for(let l=0;l0))break;{const s=this.packets.size;this.mergePackets(c.data);const o=this.packets.size-s;n+=o;const i=Math.min(...c.data.map(e=>e.timestamp??1/0));if(i!==1/0&&(void 0===e||i=2)break}else a=0;if(c.data.length=So)break}l=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(n){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)}delay(e){return new Promise(t=>setTimeout(t,e))}async fetchChunkWithRetry(e,t,s,n,a){for(let i=0;i<3;i++)try{return await this.fetchFilteredPackets(e,t,!1,a)}catch(o){const e=2===i,t=1e3*Math.pow(2,i);o instanceof Error&&o.name,e||(this.statusMessage=`Retry in ${Math.round(t/1e3)}s...`,this.notifyListeners(),await this.delay(t))}return null}enforceMemoryCap(){if(this.packets.size<=So)return;const e=this.getPackets(),t=e.length-So;for(let s=0;st&&(this.meta.oldestTimestamp=e[t].timestamp??0)}loadFromStorage(){if("undefined"!=typeof window)try{const e=localStorage.getItem(wo);e&&(this.meta=JSON.parse(e));const t=localStorage.getItem(xo);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>bo)return void this.clear();this.meta.backgroundLoadComplete=!1;const s=37500;this.meta.topologyLoadComplete&&this.packets.size3e3?e.slice(-3e3):e;localStorage.setItem(xo,JSON.stringify(t))}catch(e){if(e instanceof DOMException&&"QuotaExceededError"===e.name)try{localStorage.removeItem(xo),localStorage.setItem(wo,JSON.stringify(this.meta))}catch{}}}clearStorage(){if("undefined"!=typeof window)try{localStorage.removeItem(xo),localStorage.removeItem(wo)}catch(e){}}async fetchRecentPackets(e=1e3,t=!1){const s=`/api/recent_packets?limit=${e}`,{getToken:n}=await E(async()=>{const{getToken:e}=await Promise.resolve().then(()=>Wa);return{getToken:e}},void 0),a=n(),o={};a&&(o.Authorization=`Bearer ${a}`);const i=await fetch(s,{headers:o});if(401===i.status&&!t){const{refreshToken:t}=await E(async()=>{const{refreshToken:e}=await Promise.resolve().then(()=>Wa);return{refreshToken:e}},void 0);if(await t())return this.fetchRecentPackets(e,!0)}if(!i.ok)throw new Error(`API error: ${i.status}`);return i.json()}async fetchFilteredPackets(e,t=5e3,s=!1,n){const a=new URLSearchParams;a.set("limit",String(t)),void 0!==e&&a.set("end_timestamp",String(e-.001)),void 0!==n&&a.set("start_timestamp",String(n));const o=`/api/filtered_packets?${a}`,{getToken:i}=await E(async()=>{const{getToken:e}=await Promise.resolve().then(()=>Wa);return{getToken:e}},void 0),l=i(),r={};l&&(r.Authorization=`Bearer ${l}`);const c=new AbortController,u=setTimeout(()=>c.abort(),3e4);try{const n=await fetch(o,{headers:r,signal:c.signal});if(401===n.status&&!s){const{refreshToken:s}=await E(async()=>{const{refreshToken:e}=await Promise.resolve().then(()=>Wa);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(u)}}};function Mo(e){return{paths:e.paths,byEndpoints:new Map(e.byEndpointsEntries),canonicalPaths:new Map(e.canonicalPathsEntries),totalObservations:e.totalObservations,uniquePathCount:e.uniquePathCount}}function Co(){return{paths:[],byEndpoints:new Map,canonicalPaths:new Map,totalObservations:0,uniquePathCount:0}}const To=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:Co(),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?Mo(t.pathRegistry):Co(),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()}},jo=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()}},No=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),t(this,"unsubscribeTokenChange",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,this.unsubscribeTokenChange=ba(e=>{this.setAuthToken(e)}),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.unsubscribeTokenChange&&(this.unsubscribeTokenChange(),this.unsubscribeTokenChange=null),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}},Lo=.05,Po=1e3,Eo="terrarium";function Io(e,t,s){try{return e.queryTerrainElevation({lng:t,lat:s})??0}catch{return 0}}const Ao=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(Eo)||(n.addSource(Eo,{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===Eo&&t.isSourceLoaded&&(clearTimeout(s),n.off("sourcedata",a),e())};n.on("sourcedata",a)})),n.setTerrain({source:Eo}),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>Po&&(i=Po),l>Po&&(l=Po);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-Lo,maxLat:n+Lo,minLng:a-Lo,maxLng:o+Lo}}(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 Ro(e){return e.startsWith("0x")||e.startsWith("0X")?e.slice(2,4).toUpperCase():e.slice(0,2).toUpperCase()}function Do(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?Ro(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 Fo(e,t){const s=e.toUpperCase();return t.startsWith("0x")||t.startsWith("0X")?t.slice(2).toUpperCase().startsWith(s):t.toUpperCase().startsWith(s)}const zo=[{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}],Oo=[{label:"1h",hours:1},{label:"3h",hours:3},{label:"12h",hours:12},{label:"24h",hours:24},{label:"3d",hours:72},{label:"7d",hours:168},{label:"14d",hours:336}];function $o(e){switch(e){case 1:return 3600;case 3:case 12:return 5400;case 24:return 8640;case 72:case 168:case 336:return 720;default:{const t=3600*e,s=Math.round(t/10);return Math.min(Math.max(360,s),720)}}}const Bo={stats:3e3,packets:3e3,charts:3e4,logs:2e3,system:3e3},Wo={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 Ho(e){return Wo[e]??"text-text-muted border-border-subtle"}const Uo="pymc-resource-history",qo="pymc-resource-last-fetch",Go="pymc-hidden-contacts",Jo="pymc-quick-neighbors",Yo="pymc-local-hash";let Vo=null,Xo=null;function Ko(e,t){const s=t-1e3*e;return s<=6048e5?"active":s<=12096e5?"stale":"expired"}function Qo(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:ha(s)?t.length<=1:0===t.length;var n}(e)}function Zo(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 ei(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 ti(e){return{hash:e,count:0,rssiSum:0,rssiCount:0,snrSum:0,snrCount:0,lastSeen:0}}function si(e,t){const s=Ko(e.lastSeen,t);return"expired"===s?null:{hash:e.hash,prefix:Ro(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 ni(){if("undefined"==typeof window)return[];try{const e=localStorage.getItem(Jo);if(e)return JSON.parse(e)}catch{}return[]}function ai(e){"undefined"!=typeof window&&(Xo&&clearTimeout(Xo),Xo=setTimeout(()=>{try{localStorage.setItem(Jo,JSON.stringify(e))}catch{}Xo=null},1e3))}function oi(){if("undefined"!=typeof window)try{const e=localStorage.getItem(Yo);if(e)return e}catch{}}function ii(e){if("undefined"!=typeof window)try{localStorage.setItem(Yo,e)}catch{}}function li(){if("undefined"==typeof window)return[];try{const e=localStorage.getItem(Uo);if(e)return JSON.parse(e)}catch{}return[]}function ri(){if("undefined"==typeof window)return new Set;try{const e=localStorage.getItem(Go);if(e)return new Set(JSON.parse(e))}catch{}return new Set}function ci(){if("undefined"==typeof window)return 0;try{const e=localStorage.getItem(qo);if(e)return parseInt(e,10)||0}catch{}return 0}const ui=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:li(),lastResourceFetch:ci(),hiddenContacts:ri(),quickNeighbors:ni(),cachedLocalHash:oi(),initialized:!1,packetCacheState:_o.getState(),mutationsInFlight:new Set,initializeApp:async()=>{const{initialized:s}=t();if(!s){e({initialized:!0,statsLoading:!0,packetsLoading:!0}),_o.subscribe(t=>{e({packetCacheState:t})});try{const{hiddenContacts:s}=t(),n=await Ja(),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=Ko(t.last_seen??0,o);"expired"!==n&&i.push({hash:e,prefix:Ro(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}),ai(i),l&&ii(l);const r=()=>{const s=_o.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 _o.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 No.init({apiBaseUrl:"",authToken:Ca()??void 0,statsIntervalMs:Bo.stats,packetsIntervalMs:Bo.packets}),No.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=Ko(t.last_seen??0,l);"expired"!==s&&r.push({hash:e,prefix:Ro(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}),ai(r),c&&ii(c)}),No.onPackets((s,n,a)=>{if(0===s.length)return;const{lastPacketTimestamp:o}=t();for(const e of s)if(e.packet_hash){_o.mergePacketsDirectly(s);break}const i=a>o;i&&(e({flashReceived:t().flashReceived+1}),to());const l=_o.getPackets();e({packets:l,packetsLoading:!1,lastPacketTimestamp:a}),i&&t().triggerTopologyCompute()}),No.onError((t,s)=>{e("stats"===t?{statsError:s}:{packetsError:s})}),"undefined"!=typeof document&&document.addEventListener("visibilitychange",()=>{document.hidden||No.forceRefresh()})}catch(n){!function(e){setInterval(()=>{e().fetchStats()},Bo.stats),setInterval(()=>{e().liveMode&&!_o.isHeavyLoadInProgress()&&e().fetchPackets()},Bo.packets)}(t)}}},prefetchForRoute:e=>{switch(e){case"/logs":Ya().catch(()=>{});break;case"/system":Xa().catch(()=>{});break;case"/statistics":(async function(e=24){return qa(`/api/packet_type_graph_data?hours=${e}`)})(3).catch(()=>{}),Va(3).catch(()=>{});break;case"/settings":(async function(){return qa("/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 Ja(),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=Ko(l.last_seen??0,n);"expired"!==t&&a.push({hash:e,prefix:Ro(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}),ai(a),i&&ii(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 _o.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}),to()),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 Ya();e({logs:t.logs,logsLoading:!1})}catch{e({logsLoading:!1})}},setLiveMode:t=>{e({liveMode:t}),No.isReady()&&No.setLiveMode(t)},setMode:async s=>{const n="setMode",{mutationsInFlight:a}=t(),o=new Set(a);o.add(n),e({mutationsInFlight:o});try{if(!(await Qa(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 Za(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 qa("/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})},startMutation:s=>{const{mutationsInFlight:n}=t(),a=new Set(n);a.add(s),e({mutationsInFlight:a})},clearMutation:s=>{const{mutationsInFlight:n}=t(),a=new Set(n);a.delete(s),e({mutationsInFlight:a})},sendAdvert:async()=>{try{const s=await Ka();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&&(Vo&&clearTimeout(Vo),Vo=setTimeout(()=>{try{localStorage.setItem(Uo,JSON.stringify(u)),localStorage.setItem(qo,d.toString())}catch{}Vo=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(Go,JSON.stringify([...e]))}catch{}}(a)},clearPacketCache:()=>{_o.clear(),e({packets:[],lastPacketTimestamp:0}),_o.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=Ao.getState().getTerrainGridForDisambiguation();To.compute(o,c,u,d,h,void 0,f,p??void 0)},triggerDeepAnalysis:async()=>{await _o.forceDeepLoad();const s=_o.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=Ro(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=Ro(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(!Qo(c))continue;const e=Zo(c.src_hash,a,i,o,s);if(!e)continue;let t=l.get(e);t||(t=ti(e),l.set(e,t)),ei(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=si(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}),ai(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&&jo.compute(e,o)}})),di=ui,hi=()=>ui(e=>e.stats),fi=()=>ui(e=>e.statsError),pi=()=>ui(e=>e.packets),mi=()=>ui(e=>e.packetsLoading),gi=()=>ui(e=>e.logs),yi=()=>ui(e=>e.logsLoading),xi=()=>ui(e=>e.liveMode),wi=()=>ui(e=>e.flashAdvert),bi=()=>ui(e=>e.fetchLogs),ki=()=>ui(e=>e.setLiveMode),vi=()=>ui(e=>e.resourceHistory),Si=()=>ui(e=>e.addResourceDataPoint),_i=()=>ui(e=>e.hiddenContacts),Mi=()=>ui(e=>e.hideContact),Ci=()=>ui(e=>e.packetCacheState),Ti=()=>ui(e=>e.triggerDeepAnalysis),ji=()=>ui(e=>e.quickNeighbors),Ni=()=>ui(e=>e.cachedLocalHash),Li=()=>ui(e=>e.lastPacketTimestamp),Pi=()=>ui(e=>e.packetCacheState.backgroundLoadComplete);function Ei({showLabel:e=!1,className:t}){const a=ui(e=>e.flashReceived),o=wi(),[i,l]=s.useState("idle");return s.useEffect(()=>{if(a<=0)return;const e=requestAnimationFrame(()=>l("received")),t=setTimeout(()=>l("idle"),300);return()=>{cancelAnimationFrame(e),clearTimeout(t)}},[a]),s.useEffect(()=>{if(o<=0)return;const e=requestAnimationFrame(()=>l("transmitted")),t=setTimeout(()=>l("idle"),300);return()=>{cancelAnimationFrame(e),clearTimeout(t)}},[o]),n.jsxs("span",{className:I("inline-flex items-center gap-2",t),children:[n.jsx("span",{className:I("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 Ii=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(()=>{jo.subscribe((e,t)=>{const s=Ii.getState();t&&!s.isComputing?s.setComputing(!0):!t&&e.size>0?s.setSparklines(e):!t&&s.isComputing&&s.setComputing(!1)})},0);const Ai=()=>Ii(e=>e.isComputing),Ri=[],Di=new Map;function Fi(e){return Ii(t=>{const s=t.sparklines.get(e);if(!s||0===s.length)return Ri;const n=Di.get(e);return n===s?n:(Di.set(e,s),s)})}const zi=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:Co(),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&&To.subscribe((e,t)=>{zi.getState().setTopology(e,t)});const Oi=()=>zi(e=>e.topology),$i=()=>zi(e=>e.topology.hubNodes),Bi=()=>zi(e=>e.topology.centrality),Wi=()=>zi(e=>e.topology.fullAffinity);let Hi=null,Ui=null,qi=null,Gi=null;const Ji=()=>zi(e=>(e.topology.hubNodes!==Ui&&(Ui=e.topology.hubNodes,Hi=new Set(e.topology.hubNodes)),Hi)),Yi=()=>zi(e=>e.topology.pathHealth),Vi=()=>zi(e=>e.topology.disambiguationStats),Xi=()=>zi(e=>e.topology.disambiguationStats.highCollisionPrefixes),Ki=()=>zi(e=>e.topology.disambiguationStats.totalPrefixes>0),Qi=()=>zi(e=>e.topology.discoveredNodes),Zi=()=>zi(e=>e.topology.viterbiStats),el=()=>zi(e=>(e.topology.discoveredNodes!==Gi&&(Gi=e.topology.discoveredNodes,qi=e.topology.discoveredNodes.filter(e=>e.isLikelyReal)),qi));function tl(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 sl(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 nl(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 al(e){return new Date(1e3*e).toLocaleString()}function ol(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 il(e){return`${(e/1e6).toFixed(3)} MHz`}function ll(e){return`${(e/1e3).toFixed(1)} kHz`}function rl(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 cl=[{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}],ul="pymc-controls-expanded";function dl(){var e,t,a,r;const{pathname:c}=o(),{stats:u,setMode:d,setDutyCycle:f,sendAdvert:p}=di(),m=Aa(),C=ui(e=>e.prefetchForRoute),T=Ci(),j=Ai(),N=zi(e=>e.isComputing),L=el(),[P,E]=s.useState(!1),[A,R]=s.useState(!0),[D,F]=s.useState(!1),z=s.useRef(null),O=s.useCallback(e=>{e!==c&&(z.current&&clearTimeout(z.current),z.current=setTimeout(()=>{C(e)},100))},[c,C]),$=s.useCallback(()=>{z.current&&(clearTimeout(z.current),z.current=null)},[]);s.useEffect(()=>{const e=localStorage.getItem(ul);null!==e&&queueMicrotask(()=>R("true"===e))},[]);const B=()=>{const e=!A;R(e),localStorage.setItem(ul,String(e))};s.useEffect(()=>{queueMicrotask(()=>E(!1))},[c]),s.useEffect(()=>(document.body.style.overflow=P?"hidden":"",()=>{document.body.style.overflow=""}),[P]);const W=null==u?void 0:u.noise_floor_dbm,H=(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()=>{F(!0),await p(),setTimeout(()=>F(!1),1e3)},G=()=>{d("forward"===H?"monitor":"forward")},J=()=>{f(!U)},Y=()=>{Oa(),window.location.href="/login"},V=T.isLoading||T.isTopologyLoading,X=V||j||N,K=T.loadProgress,Q=()=>{if(!X)return null;let e="Analyzing database";V&&K?e=`Loading ${K.loaded.toLocaleString()} packets`:j?e="Computing sparklines":N&&(e="Building topology");const t=(null==K?void 0:K.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:cl.map(e=>{const t=c===e.to;return n.jsxs(g,{to:e.to,onClick:()=>E(!1),onMouseEnter:()=>O(e.to),onMouseLeave:$,className:I("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:I("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: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:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(x,{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(w,{className:I("w-4 h-4 text-text-muted transition-transform duration-200",A?"rotate-0":"-rotate-90")})]}),n.jsx("div",{className:I("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:D,className:I("control-btn control-btn-primary w-full",D&&"opacity-70"),children:[n.jsx(b,{className:I("w-4 h-4",D&&"animate-pulse")}),n.jsx("span",{children:D?"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:I("control-toggle-status","forward"===H?"text-accent-success":"text-accent-secondary"),children:"forward"===H?"FWD":"MON"})]}),n.jsx("button",{onClick:G,className:I("control-btn w-full","forward"===H?"control-btn-success":"control-btn-warning"),children:"forward"===H?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:I("control-toggle-status",U?"text-accent-success":"text-text-muted"),children:U?"ON":"OFF"})]}),n.jsxs("button",{onClick:J,className:I("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:[tl(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!=W?`${W.toFixed(0)} dBm`:"—"})]})})}),n.jsxs("div",{className:"px-4 py-3 flex items-center justify-between border-t border-white/5",children:[n.jsx(Ei,{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(M,{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",children:[n.jsx("h1",{className:"sr-only",children:"pyMC Console"}),n.jsx(ra,{height:26,className:"block"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsxs("p",{className:"type-data-xs text-text-muted",children:["v",ia]}),n.jsx(Ei,{}),n.jsx("button",{onClick:()=>E(!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:I("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:()=>E(!1),"aria-hidden":"true"}),n.jsxs("aside",{className:I("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:"px-4 py-5 border-b border-white/5",children:[n.jsx("h1",{className:"sr-only",children:"pyMC Console"}),n.jsx(ra,{responsive:!0,className:"block"}),n.jsxs("p",{className:"type-data-xs text-text-muted mt-1.5",children:["v",ia]})]}),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:"px-5 py-6 border-b border-white/5",children:[n.jsx("h1",{className:"sr-only",children:"pyMC Console"}),n.jsx(ra,{responsive:!0,className:"block"}),n.jsxs("p",{className:"type-data-xs text-text-muted mt-1.5",children:["v",ia]})]}),Z(),Q(),ee(),te()]})]})}const hl=s.memo(function(){const{theme:e}=oa(),{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"})]})}),fl=20,pl=12,ml=s.createContext(null);function gl({children:e}){const[t,a]=s.useState({content:null,mouseX:0,mouseY:0,visible:!1}),o=s.useRef(null),[i,l]=s.useState({x:0,y:0}),r=s.useCallback((e,t,s)=>{a({content:e,mouseX:t,mouseY:s,visible:!0})},[]),c=s.useCallback(()=>{a(e=>({...e,visible:!1}))},[]),u=s.useCallback((e,t)=>{a(s=>s.visible?{...s,mouseX:e,mouseY:t}:s)},[]);s.useEffect(()=>{if(!t.visible||!o.current)return;const e=o.current.getBoundingClientRect(),{mouseX:s,mouseY:n}=t,a=window.innerWidth,i=window.innerHeight;let r,c;r=s+fl+e.width+pl>a?s-fl-e.width:s+fl,r=Math.max(pl,Math.min(r,a-e.width-pl)),c=n-fl-e.height{c.current&&(clearTimeout(c.current),c.current=null)},h=s.useCallback(t=>{d(),c.current=setTimeout(()=>{u.current=!0,o(e,t.clientX,t.clientY)},a)},[o,e,a]),f=s.useCallback(e=>{u.current&&l(e.clientX,e.clientY)},[l]),p=s.useCallback(()=>{d(),u.current=!1,i()},[i]),m=s.useCallback(()=>{if(d(),!r.current)return;const t=r.current.getBoundingClientRect();c.current=setTimeout(()=>{u.current=!0,o(e,t.left+t.width/2,t.top)},a)},[o,e,a]),g=s.useCallback(()=>{d(),u.current=!1,i()},[i]);return s.useEffect(()=>()=>{d(),u.current&&(u.current=!1,i())},[i]),s.useEffect(()=>{const e=()=>{u.current&&(d(),u.current=!1,i())};return document.addEventListener("click",e,!0),()=>document.removeEventListener("click",e,!0)},[i]),n.jsx("span",{ref:r,onMouseEnter:h,onMouseMove:f,onMouseLeave:p,onFocus:m,onBlur:g,className:"contents",children:t})}function xl({className:e=""}){return n.jsx("div",{className:`bg-white/5 animate-pulse rounded-lg ${e}`,"aria-hidden":"true"})}function wl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading dashboard",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(xl,{className:"h-8 w-48"}),n.jsx(xl,{className:"h-8 w-32"})]}),n.jsx(xl,{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(xl,{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(xl,{className:"h-44"},t))}),n.jsx(xl,{className:"h-96"})]})}function bl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading list",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(xl,{className:"h-8 w-40"}),n.jsx(xl,{className:"h-8 w-24"})]}),n.jsx(xl,{className:"h-20"}),n.jsxs("div",{className:"glass-card overflow-hidden",children:[n.jsx(xl,{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(xl,{className:"h-6"})},t))})]})]})}function kl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading map",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(xl,{className:"h-8 w-32"}),n.jsx(xl,{className:"h-6 w-48"})]}),n.jsx(xl,{className:"h-[500px]"}),n.jsx(xl,{className:"h-64"})]})}function vl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading charts",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(xl,{className:"h-8 w-36"}),n.jsx(xl,{className:"h-8 w-40"})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[n.jsx(xl,{className:"h-80"}),n.jsx(xl,{className:"h-80"})]}),n.jsx(xl,{className:"h-64"})]})}function Sl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading settings",children:[n.jsx(xl,{className:"h-8 w-32"}),n.jsxs("div",{className:"space-y-6",children:[n.jsx(xl,{className:"h-48"}),n.jsx(xl,{className:"h-64"}),n.jsx(xl,{className:"h-32"})]})]})}function _l(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading system info",children:[n.jsx(xl,{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(xl,{className:"h-28"},t))}),n.jsx(xl,{className:"h-64"}),n.jsx(xl,{className:"h-48"})]})}const Ml=s.lazy(()=>E(()=>import("./Login-_qpV4GUm.js"),__vite__mapDeps([0,1,2]))),Cl=s.lazy(()=>E(()=>import("./Dashboard-BfuIudYD.js"),__vite__mapDeps([3,1,2,4,5,6,7,8,9,10,11]))),Tl=s.lazy(()=>E(()=>import("./Packets-BVVUdxzG.js"),__vite__mapDeps([12,1,2,6,7,8,5]))),jl=s.lazy(()=>E(()=>import("./Contacts-BOYQNB5L.js").then(e=>e.C),__vite__mapDeps([13,1,2,5,8,7,14,15,16]))),Nl=s.lazy(()=>E(()=>import("./Statistics-BfhO4w7p.js"),__vite__mapDeps([17,1,2,18,4,9,5,14,11,16]))),Ll=s.lazy(()=>E(()=>import("./System-D8W5mK8k.js"),__vite__mapDeps([19,1,2,4,5,11]))),Pl=s.lazy(()=>E(()=>import("./Logs-sry4OZK_.js"),__vite__mapDeps([20,1,2,18,5]))),El=s.lazy(()=>E(()=>import("./Terminal-zsY3Osj2.js"),__vite__mapDeps([21,1,2,5]))),Il=s.lazy(()=>E(()=>import("./Configuration-DZ4tFrFG.js"),__vite__mapDeps([22,1,2,8,15,5,11])));function Al({children:e}){const t=o();return Na()?n.jsx(n.Fragment,{children:e}):n.jsx(N,{to:"/login",state:{from:t},replace:!0})}class Rl 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 Dl(){const e=ui(e=>e.initializeApp),t=Na();return s.useEffect(()=>{if(!t)return;e();const s=setInterval(()=>{za()},3e4);return za(),Ba(),()=>clearInterval(s)},[e,t]),n.jsxs(gl,{children:[n.jsx(hl,{}),n.jsxs(T,{children:[n.jsx(j,{path:"/login",element:n.jsx(s.Suspense,{fallback:n.jsx("div",{className:"min-h-screen bg-bg-body"}),children:n.jsx(Ml,{})})}),n.jsx(j,{path:"/*",element:n.jsx(Al,{children:n.jsxs("div",{className:"flex h-screen overflow-hidden",children:[n.jsx(dl,{}),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(Rl,{children:n.jsxs(T,{children:[n.jsx(j,{path:"/",element:n.jsx(s.Suspense,{fallback:n.jsx(wl,{}),children:n.jsx(Cl,{})})}),n.jsx(j,{path:"/packets",element:n.jsx(s.Suspense,{fallback:n.jsx(bl,{}),children:n.jsx(Tl,{})})}),n.jsx(j,{path:"/contacts",element:n.jsx(s.Suspense,{fallback:n.jsx(kl,{}),children:n.jsx(jl,{})})}),n.jsx(j,{path:"/statistics",element:n.jsx(s.Suspense,{fallback:n.jsx(vl,{}),children:n.jsx(Nl,{})})}),n.jsx(j,{path:"/system",element:n.jsx(s.Suspense,{fallback:n.jsx(_l,{}),children:n.jsx(Ll,{})})}),n.jsx(j,{path:"/logs",element:n.jsx(s.Suspense,{fallback:n.jsx(bl,{}),children:n.jsx(Pl,{})})}),n.jsx(j,{path:"/terminal",element:n.jsx(s.Suspense,{fallback:n.jsx(bl,{}),children:n.jsx(El,{})})}),n.jsx(j,{path:"/configuration",element:n.jsx(s.Suspense,{fallback:n.jsx(Sl,{}),children:n.jsx(Il,{})})})]})})})})]})})})]})]})}const Fl=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")||Fl.apply(console,e)},L.createRoot(document.getElementById("root")).render(n.jsx(s.StrictMode,{children:n.jsx(aa,{children:n.jsx(P,{children:n.jsx(Dl,{})})})}));export{vi as $,Yi as A,Zi as B,rl as C,zo as D,Fi as E,Ai as F,Ci as G,Xi as H,di as I,Mi as J,$i as K,Bi as L,uo as M,sl as N,pa as O,ra as P,ma as Q,ua as R,Zn as S,yl as T,da as U,sa as V,Vi as W,Ki as X,el as Y,Oo as Z,$o as _,mi as a,Si as a0,Xa as a1,Bo as a2,gi as a3,yi as a4,bi as a5,ao as a6,Ho as a7,Ja as a8,Ka as a9,Ao as aA,Qa as aa,Za as ab,no as ac,oa as ad,D as ae,W as af,mo as ag,oo as ah,il as ai,ll as aj,ho as ak,fo as al,po as am,go as an,yo as ao,co as ap,io as aq,lo as ar,ro as as,Li as at,_o as au,Do as av,ha as aw,Oi as ax,Ti as ay,Ni as az,xi as b,wi as c,hi as d,Ro as e,ji as f,Sa as g,_i as h,Na as i,Va as j,fi as k,Ra as l,Pi as m,so as n,tl as o,ki as p,ca as q,nl as r,_a as s,ol as t,pi as u,Fo as v,Ji as w,Wi as x,Qi as y,al as z}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Login-BF2bENkR.js","assets/vendor-react-O8XH9yVn.js","assets/vendor-core-WoOfkQwm.js","assets/Dashboard-D_Tfd9l2.js","assets/useThemeColors-CD0TSU03.js","assets/PageLayout-DE5PEtD2.js","assets/PacketDetailModal-CR1FHEH5.js","assets/SignalIndicator-BVAbF7xm.js","assets/HashBadge-aS_UIcg2.js","assets/TimeRangeSelector-9pGCd7oa.js","assets/link-scoring-DacI-LFP.js","assets/Grid-CIZAny_R.js","assets/Packets-Cn-iDbXq.js","assets/Contacts-au5gCj-N.js","assets/CollisionExplorerModal-DEtEH0fD.js","assets/ConfirmModal-DYznouaT.js","assets/leaflet-CIGW-MKW.css","assets/Statistics-BHA07L60.js","assets/usePolling-UdPi_fKb.js","assets/System-CMjUiDHD.js","assets/Logs-l6s0ar29.js","assets/Terminal-Vhl_DY50.js","assets/Configuration-Cq1_waCf.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 x,k as w,l as b,m as k,n as v,o as S,p as _,q as M,b as C,t as T,v as j,N,w as L,B as P}from"./vendor-react-O8XH9yVn.js";import{_ as E}from"./deckgl-DTsmDcfs.js";import{c as I}from"./recharts-BU7auunF.js";import"./vendor-core-WoOfkQwm.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 A=[{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"}],R=[{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}],F={colorScheme:"grey",backgroundImage:"/assets/water.webp",brightness:60},z="pymc-color-scheme",O="pymc-background-image",$="pymc-bg-brightness",B="pymc-background";function W(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},U=[50,100,200,300,400,500,600,700,800,900],q=["red","orange","yellow","green","aqua","blue","purple"];function G(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 J(e){const t=e/255;return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Y(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 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[Y(4.0767416621*c-3.3077115913*u+.2309699292*d),Y(h),Y(f)]}function X(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=J(e),a=J(t),o=J(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 U){const e=H[l],t=a*(1-.3*Math.abs(e-.5)),[s,n,r]=V(e,t,o);i[l]=G(s,n,r)}return i}function K(e){return"undefined"==typeof window?"":getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function Q(e,t){"undefined"!=typeof document&&document.documentElement.style.setProperty(e,t)}const Z="u-off",ee="u-label",te="width",se="height",ne="top",ae="bottom",oe="left",ie="right",le="#000",re=le+"0",ce="mousemove",ue="mousedown",de="mouseup",he="mouseenter",fe="mouseleave",pe="dblclick",me="change",ge="dppxchange",ye="--",xe="undefined"!=typeof window,we=xe?document:null,be=xe?window:null,ke=xe?navigator:null;let ve,Se;function _e(e,t){if(null!=t){let s=e.classList;!s.contains(t)&&s.add(t)}}function Me(e,t){let s=e.classList;s.contains(t)&&s.remove(t)}function Ce(e,t,s){e.style[t]=s+"px"}function Te(e,t,s,n){let a=we.createElement(e);return null!=t&&_e(a,t),null!=s&&s.insertBefore(a,n),a}function je(e,t){return Te("div",e,t)}const Ne=new WeakMap;function Le(e,t,s,n,a){let o="translate("+t+"px,"+s+"px)";o!=Ne.get(e)&&(e.style.transform=o,Ne.set(e,o),t<0||s<0||t>n||s>a?_e(e,Z):Me(e,Z))}const Pe=new WeakMap;function Ee(e,t,s){let n=t+s;n!=Pe.get(e)&&(Pe.set(e,n),e.style.background=t,e.style.borderColor=s)}const Ie=new WeakMap;function Ae(e,t,s,n){let a=t+""+s;a!=Ie.get(e)&&(Ie.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 Re={passive:!0},De={...Re,capture:!0};function Fe(e,t,s,n){t.addEventListener(e,s,n?De:Re)}function ze(e,t,s,n){t.removeEventListener(e,s,Re)}function Oe(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:at((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]}}xe&&function e(){let t=devicePixelRatio;ve!=t&&(ve=t,Se&&ze(me,Se,e),Se=matchMedia(`(min-resolution: ${ve-.001}dppx) and (max-resolution: ${ve+.001}dppx)`),Fe(me,Se,e),be.dispatchEvent(new CustomEvent(ge)))}();const Be=e=>null!=e,We=e=>null!=e&&e>0,He=$e(Be),Ue=$e(We);function qe(e,t,s,n){let a=ut(e),o=ut(t);e==t&&(-1==a?(e*=s,t/=s):(e/=s,t*=s));let i=10==s?dt:ht,l=1==o?it:at,r=(1==a?at:it)(i(nt(e))),c=l(i(nt(t))),u=ct(s,r),d=ct(s,c);return 10==s&&(r<0&&(u=Nt(u,-r)),c<0&&(d=Nt(d,-c))),n||2==s?(e=u*a,t=d*o):(e=jt(e,u),t=Tt(t,d)),[e,t]}function Ge(e,t,s,n){let a=qe(e,t,s,n);return 0==e&&(a[0]=0),0==t&&(a[1]=0),a}const Je={mode:3,pad:.1},Ye={pad:0,soft:null,mode:0},Ve={min:Ye,max:Ye};function Xe(e,t,s,n){return Ot(s)?Qe(e,t,s):(Ye.pad=s,Ye.soft=n?0:null,Ye.mode=n?3:0,Qe(e,t,Ve))}function Ke(e,t){return null==e?t:e}function Qe(e,t,s){let n=s.min,a=s.max,o=Ke(n.pad,0),i=Ke(a.pad,0),l=Ke(n.hard,-pt),r=Ke(a.hard,pt),c=Ke(n.soft,pt),u=Ke(a.soft,-pt),d=Ke(n.mode,0),h=Ke(a.mode,0),f=t-e,p=dt(f),m=rt(nt(e),nt(t)),g=dt(m),y=nt(g-p);(f<1e-24||y>10)&&(f=0,0!=e&&0!=t||(f=1e-24,2==d&&c!=pt&&(o=0),2==h&&u!=-pt&&(i=0)));let x=f||m||1e3,w=dt(x),b=ct(10,at(w)),k=Nt(jt(e-x*(0==f?0==e?.1:1:o),b/10),24),v=e>=c&&(1==d||3==d&&k<=c||2==d&&k>=c)?c:pt,S=rt(l,k=v?v:lt(v,k)),_=Nt(Tt(t+x*(0==f?0==t?.1:1:i),b/10),24),M=t<=u&&(1==h||3==h&&_>=u||2==h&&_<=u)?u:-pt,C=lt(r,_>M&&t<=M?M:rt(M,_));return S==C&&0==S&&(C=100),[S,C]}const Ze=new Intl.NumberFormat(xe?ke.language:"en-US"),et=e=>Ze.format(e),tt=Math,st=tt.PI,nt=tt.abs,at=tt.floor,ot=tt.round,it=tt.ceil,lt=tt.min,rt=tt.max,ct=tt.pow,ut=tt.sign,dt=tt.log10,ht=tt.log2,ft=(e,t=1)=>tt.asinh(e/t),pt=1/0;function mt(e){return 1+(0|dt((e^e>>31)-(e>>31)))}function gt(e,t,s){return lt(rt(e,t),s)}function yt(e){return"function"==typeof e}function xt(e){return yt(e)?e:()=>e}const wt=e=>e,bt=(e,t)=>t,kt=e=>null,vt=e=>!0,St=(e,t)=>e==t,_t=/\.\d*?(?=9{6,}|0{6,})/gm,Mt=e=>{if(Ft(e)||Lt.has(e))return e;const t=`${e}`,s=t.match(_t);if(null==s)return e;let n=s[0].length-1;if(-1!=t.indexOf("e-")){let[e,s]=t.split("e");return+`${Mt(e)}e${s}`}return Nt(e,n)};function Ct(e,t){return Mt(Nt(Mt(e/t))*t)}function Tt(e,t){return Mt(it(Mt(e/t))*t)}function jt(e,t){return Mt(at(Mt(e/t))*t)}function Nt(e,t=0){if(Ft(e))return e;let s=10**t,n=e*s*(1+Number.EPSILON);return ot(n)/s}const Lt=new Map;function Pt(e){return((""+e).split(".")[1]||"").length}function Et(e,t,s,n){let a=[],o=n.map(Pt);for(let i=t;i=0?0:t)+(i>=o[l]?0:o[l]),u=10==e?r:Nt(r,c);a.push(u),Lt.set(u,c)}}return a}const It={},At=[],Rt=[null,null],Dt=Array.isArray,Ft=Number.isInteger;function zt(e){return"string"==typeof e}function Ot(e){let t=!1;if(null!=e){let s=e.constructor;t=null==s||s==Object}return t}function $t(e){return null!=e&&"object"==typeof e}const Bt=Object.getPrototypeOf(Uint8Array),Wt="__proto__";function Ht(e,t=Ot){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,Jt=["January","February","March","April","May","June","July","August","September","October","November","December"],Yt=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function Vt(e){return e.slice(0,3)}const Xt=Yt.map(Vt),Kt=Jt.map(Vt),Qt={MMMM:Jt,MMM:Kt,WWWW:Yt,WWW:Xt};function Zt(e){return(e<10?"0":"")+e}const es={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=>Zt(e.getMonth()+1),M:e=>e.getMonth()+1,DD:e=>Zt(e.getDate()),D:e=>e.getDate(),WWWW:(e,t)=>t.WWWW[e.getDay()],WWW:(e,t)=>t.WWW[e.getDay()],HH:e=>Zt(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=>Zt(e.getMinutes()),m:e=>e.getMinutes(),ss:e=>Zt(e.getSeconds()),s:e=>e.getSeconds(),fff:e=>{return((t=e.getMilliseconds())<10?"00":t<100?"0":"")+t;var t}};function ts(e,t){t=t||Qt;let s,n=[],a=/\{([a-z]+)\}|[^{]+/gi;for(;s=a.exec(e);)n.push("{"==s[0][0]?es[s[1]]:s[0]);return e=>{let s="";for(let a=0;ae%1==0,as=[1,2,2.5,5],os=Et(10,-32,0,as),is=Et(10,0,32,as),ls=is.filter(ns),rs=os.concat(is),cs="{YYYY}",us="\n"+cs,ds="{M}/{D}",hs="\n"+ds,fs=hs+"/{YY}",ps="{aa}",ms="{h}:{mm}"+ps,gs="\n"+ms,ys=":{ss}",xs=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?Et(10,0,3,as).filter(ns):Et(10,-3,0,as)).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,cs,xs,xs,xs,xs,xs,xs,1],[28*a,"{MMM}",us,xs,xs,xs,xs,xs,1],[a,ds,us,xs,xs,xs,xs,xs,1],[n,"{h}"+ps,fs,xs,hs,xs,xs,xs,1],[s,ms,fs,xs,hs,xs,xs,xs,1],[t,ys,fs+" "+ms,xs,hs+" "+ms,xs,gs,xs,1],[e,ys+".{fff}",fs+" "+ms,xs,hs+" "+ms,xs,gs,xs,1]],function(t){return(l,r,c,u,d,h)=>{let f=[],p=d>=i,m=d>=o&&d=a?a:d,i=w+(at(c)-at(y))+Tt(y-w,o);f.push(i);let p=t(i),m=p.getHours()+p.getMinutes()/s+p.getSeconds()/n,g=d/n,x=h/l.axes[r]._space;for(;i=Nt(i+d,1==e?0:3),!(i>u);)if(g>1){let e=at(Nt(m+g,6))%24,s=t(i).getHours()-e;s>1&&(s=-1),i-=s*n,m=(m+g)%24,Nt((i-f[f.length-1])/d,3)*x>=.7&&f.push(i)}else f.push(i)}return f}}]}const[bs,ks,vs]=ws(1),[Ss,_s,Ms]=ws(.001);function Cs(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 Ts(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 js(e,t,s){return new Date(e,t,s)}function Ns(e,t){return t(e)}function Ls(e,t){return(s,n,a,o)=>null==o?ye:t(e(n))}Et(2,-53,53,[1]);const Ps={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:[]},Es=[0,0];function Is(e,t,s,n=!0){return e=>{0==e.button&&(!n||e.target==t)&&s(e)}}function As(e,t,s,n=!0){return e=>{(!n||e.target==t)&&s(e)}}const Rs={show:!0,x:!0,y:!0,lock:!1,move:function(e,t,s){return Es[0]=t,Es[1]=s,Es},points:{one:!1,show:function(e,t){let s=e.cursor.points,n=je(),a=s.size(e,t);Ce(n,te,a),Ce(n,se,a);let o=a/-2;Ce(n,"marginLeft",o),Ce(n,"marginTop",o);let i=s.width(e,t,a);return i&&Ce(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:Is,mouseup:Is,click:Is,dblclick:Is,mousemove:As,mouseleave:As,mouseenter:As},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},Fs=Ut({},Ds,{filter:bt}),zs=Ut({},Fs,{size:10}),Os=Ut({},Ds,{show:!1}),$s='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"',Bs="bold "+$s,Ws={show:!0,scale:"x",stroke:le,space:50,gap:5,alignTo:1,size:50,labelGap:0,labelSize:30,labelFont:Bs,side:2,grid:Fs,ticks:zs,border:Os,font:$s,lineGap:1.5,rotate:0},Hs={show:!0,scale:"x",auto:!1,sorted:1,min:pt,max:-pt,idxs:[]};function Us(e,t,s,n,a){return t.map(e=>null==e?"":et(e))}function qs(e,t,s,n,a,o,i){let l=[],r=Lt.get(a)||0;for(let c=s=i?s:Nt(Tt(s,a),r);c<=n;c=Nt(c+a,r))l.push(Object.is(c,-0)?0:c);return l}function Gs(e,t,s,n,a,o,i){const l=[],r=e.scales[e.axes[t].scale].log,c=at((10==r?dt:ht)(s));a=ct(r,c),10==r&&(a=rs[Oe(a,rs)]);let u=s,d=a*r;10==r&&(d=rs[Oe(d,rs)]);do{l.push(u),u+=a,10!=r||Lt.has(u)||(u=Nt(u,Lt.get(a))),u>=d&&(d=(a=u)*r,10==r&&(d=rs[Oe(d,rs)]))}while(u<=n);return l}function Js(e,t,s,n,a,o,i){let l=e.scales[e.axes[t].scale].asinh,r=n>l?Gs(e,t,rt(l,s),n,a):[l],c=n>=0&&s<=0?[0]:[];return(s<-l?Gs(e,t,rt(l,-n),-s,a):[l]).reverse().map(e=>-e).concat(c,r)}const Ys=/./,Vs=/[12357]/,Xs=/[125]/,Ks=/1/,Qs=(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 Zs(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?Ys:r(7,i)-u>=c?Vs:r(5,i)-u>=c?Xs:Ks;if(d==Ks){let e=nt(r(1,i)-u);if(ea,on={show:!0,auto:!0,sorted:0,gaps:an,alpha:1,facets:[Ut({},nn,{scale:"x"}),Ut({},nn,{scale:"y"})]},ln={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:an,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=nt(i-o)/(e.series[t].points.space*ve);return n[1]-n[0]<=l},filter:null},values:null,min:pt,max:-pt,idxs:[],path:null,clip:null};function rn(e,t,s,n,a){return s/10}const cn={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},un=Ut({},cn,{time:!1,ori:1}),dn={};function hn(e,t){let s=dn[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?Sn:_n;let x,w;1==g?(x=s,w=n):(x=n,w=s);let b=m(c(t[x],l,f,d)),k=m(u(i[x],r,p,h)),v=m(c(t[w],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 yn(e,t,s,n,a,o){let i=null;if(e.length>0){i=new Path2D;const l=0==t?Mn:Cn;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 xn(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?ot:t=>Ct(t,e)}function bn(e){let t=0==e?kn:vn,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=lt(r,i/2,l/2),c=lt(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 kn=(e,t,s)=>{e.moveTo(t,s)},vn=(e,t,s)=>{e.moveTo(s,t)},Sn=(e,t,s)=>{e.lineTo(t,s)},_n=(e,t,s)=>{e.lineTo(s,t)},Mn=bn(0),Cn=bn(1),Tn=(e,t,s,n,a,o)=>{e.arc(t,s,n,a,o)},jn=(e,t,s,n,a,o)=>{e.arc(s,t,n,a,o)},Nn=(e,t,s,n,a,o,i)=>{e.bezierCurveTo(t,s,n,a,o,i)},Ln=(e,t,s,n,a,o,i)=>{e.bezierCurveTo(s,t,a,n,i,o)};function Pn(e){return(e,t,s,n,a)=>fn(e,t,(t,o,i,l,r,c,u,d,h,f,p)=>{let m,g,{pxRound:y,points:x}=t;0==l.ori?(m=kn,g=Tn):(m=vn,g=jn);const w=Nt(x.width*ve,3);let b=(x.size-x.width)/2*ve,k=Nt(2*b,3),v=new Path2D,S=new Path2D,{left:_,top:M,width:C,height:T}=e.bbox;Mn(S,_-k,M-k,C+2*k,T+2*k);const j=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*st)}};if(a)a.forEach(j);else for(let e=s;e<=n;e++)j(e);return{stroke:w>0?v:null,fill:v,clip:S,flags:3}})}function En(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 In=En(Sn),An=En(_n);function Rn(e){const t=Ke(null==e?void 0:e.alignGaps,0);return(e,s,n,a)=>fn(e,s,(o,i,l,r,c,u,d,h,f,p,m)=>{[n,a]=He(l,n,a);let g,y,x=o.pxRound,w=e=>x(u(e,r,p,h)),b=e=>x(d(e,c,m,f));0==r.ori?(g=Sn,y=In):(g=_n,y=An);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=w(i[1==k?n:a]),f=w(i[n]),p=w(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:w(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,w(i[e]),b(t))}let[M,C]=pn(e,s);if(null!=o.fill||0!=M){let t=v.fill=new Path2D(S),l=b(o.fillTo(e,s,o.min,o.max,M)),r=w(i[n]),c=w(i[a]);-1==k&&([c,r]=[r,c]),g(t,c,l),g(t,r,l)}if(!o.spanGaps){let c=[];_&&c.push(...xn(i,l,n,a,k,w,t)),v.gaps=c=o.gaps(e,s,n,a,c),v.clip=yn(c,r.ori,h,f,p,m)}return 0!=C&&(v.band=2==C?[gn(e,s,n,a,S,-1),gn(e,s,n,a,S,1)]:gn(e,s,n,a,S,C)),v})}function Dn(e,t,s,n,a,o,i=pt){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{Zn.pxRatio=ve}));const $n=Rn(),Bn=Pn();function Wn(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 Ut({},0==t?s:n,e)}function Un(e,t,s){return null==t?Rt:[t,s]}const qn=Un;function Gn(e,t,s){return null==t?Rt:Xe(t,s,.1,!0)}function Jn(e,t,s,n){return null==t?Rt:qe(t,s,e.scales[n].log,!1)}const Yn=Jn;function Vn(e,t,s,n){return null==t?Rt:Ge(t,s,e.scales[n].log,!1)}const Xn=Vn;function Kn(e){let t,s;return[e=e.replace(/(\d+)px/,(e,n)=>(t=ot((s=+n)*ve))+"px"),t,s]}function Qn(e){e.show&&[e.font,e.labelFont].forEach(e=>{let t=Nt(e[2]*ve,1);e[0]=e[0].replace(/[0-9.]+px/,t+"px"),e[1]=t})}function Zn(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=je("uplot");null!=e.id&&(c.id=e.id),_e(c,e.class),e.title&&(je("u-title",c).textContent=e.title);const u=Te("canvas"),d=n.ctx=u.getContext("2d"),h=je("u-wrap",c);Fe("click",h,e=>{e.target===p&&(Nn!=Mn||Ln!=Cn)&&Zn.click(n,e)},!0);const f=n.under=je("u-under",h);h.appendChild(u);const p=n.over=je("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,x=n.series=1==a?Wn(e.series||[],Hs,ln,!1):(w=e.series||[null],b=on,w.map((e,t)=>0==t?{}:Ut({},b,e)));var w,b;const k=n.axes=Wn(e.axes||[],Ws,sn,!0),v=n.scales={},S=n.bands=e.bands||[];S.forEach(e=>{e.fill=xt(e.fill||null),e.dir=Ke(e.dir,-1)});const _=2==a?x[1].facets[0].scale:x[0].scale,M={axes:function(){for(let e=0;eDs[e]):y,w=2==f.distr?Ds[y[1]]-Ds[y[0]]:u,b=t.ticks,S=t.border,_=b.show?b.size:0,M=ot(_*ve),C=ot((2==t.alignTo?t._size-_-t.gap:t.gap)*ve),T=t._rotate*-st/180,j=g(t._pos*ve),N=j+(M+C)*c;a=0==i?N:0,s=1==i?N:0,Bs(t.font[0],r,1==t.align?oe:2==t.align?ie:T>0?oe:T<0?ie:0==i?"center":3==o?ie:oe,T||1==i?"middle":2==o?ne:ae);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=x.some(e=>e._focus)&&As!=Vt.alpha;e&&(d.globalAlpha=As=Vt.alpha),x.forEach((e,s)=>{if(s>0&&e.show&&(Xs(s,!1),Xs(s,!0),null==e._paths)){let o=As;As!=e.alpha&&(d.globalAlpha=As=e.alpha);let i=2==a?[0,t[s][0].length-1]:function(e){let t=gt(ds-1,0,us-1),s=gt(hs+1,0,us-1);for(;null==e[t]&&t>0;)t--;for(;null==e[s]&&s{if(t>0&&e.show){let s=As;As!=e.alpha&&(d.globalAlpha=As=e.alpha),null!=e._paths&&Ks(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),Ks(t,!0))}As!=s&&(d.globalAlpha=As=s),Ra("drawSeries",t)}}),e&&(d.globalAlpha=As=1)}}},C=(e.drawOrder||["axes","series"]).map(e=>M[e]);function T(e){const t=3==e.distr?t=>dt(t>0?t:e.clamp(n,t,e.min,e.max,e.key)):4==e.distr?t=>ft(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 j(t){let s=v[t];if(null==s){let n=(e.scales||It)[t]||It;if(null!=n.from){j(n.from);let e=Ut({},v[n.from],n,{key:t});e.valToPct=T(e),v[t]=e}else{s=v[t]=Ut({},t==_?cn:un,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]?Je:{mode:1,hard:o[0],soft:o[0]},max:null==o[1]?Je:{mode:1,hard:o[1],soft:o[1]}},i=!1),!i&&Ot(o))){let e=o;o=(t,s,n)=>null==s?Rt:Xe(s,n,e)}s.range=xt(o||(e?qn:t==_?3==s.distr?Yn:4==s.distr?Xn:Un:3==s.distr?Jn:4==s.distr?Vn:Gn)),s.auto=xt(!i&&s.auto),s.clamp=xt(s.clamp||rn),s._min=s._max=null,s.valToPct=T(s)}}}j("x"),j("y"),1==a&&x.forEach(e=>{j(e.scale)}),k.forEach(e=>{j(e.scale)});for(let Z in e.scales)j(Z);const N=v[_],L=N.distr;let P,E;0==N.ori?(_e(c,"u-hz"),P=o,E=i):(_e(c,"u-vt"),P=i,E=o);const I={};for(let Z in v){let e=v[Z];null==e.min&&null==e.max||(I[Z]={min:e.min,max:e.max},e.min=e.max=null)}const A=e.tzDate||(e=>new Date(ot(e/y))),R=e.fmtDate||ts,D=1==y?vs(A):Ms(A),F=Ts(A,Cs(1==y?ks:_s,R)),z=Ls(A,Ns("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",R)),O=[],$=n.legend=Ut({},Ps,e.legend),B=n.cursor=Ut({},Rs,{drag:{y:2==a}},e.cursor),W=$.show,H=B.show,U=$.markers;let q,G,J;$.idxs=O,U.width=xt(U.width),U.dash=xt(U.dash),U.stroke=xt(U.stroke),U.fill=xt(U.fill);let Y,V=[],X=[],K=!1,Q={};if($.live){const e=x[1]?x[1].values:null;K=null!=e,Y=K?e(n,1,0):{_:0};for(let t in Y)Q[t]=ye}if(W)if(q=Te("table","u-legend",c),J=Te("tbody",null,q),$.mount(n,q),K){G=Te("thead",null,q,J);let e=Te("tr",null,G);for(var le in Te("th",null,e),Y)Te("th",ee,e).textContent=le}else _e(q,"u-inline"),$.live&&_e(q,"u-live");const me={show:!0},xe={show:!1},ke=new Map;function Se(e,t,s,a=!0){const o=ke.get(t)||{},i=B.bind[e](n,t,s,a);i&&(Fe(e,t,o[e]=i),ke.set(t,o))}function Ne(e,t,s){const n=ke.get(t)||{};for(let a in n)null!=e&&a!=e||(ze(a,t,n[a]),delete n[a]);null==e&&ke.delete(t)}let Pe=0,Ie=0,Re=0,De=0,$e=0,Ye=0,Ve=$e,Qe=Ye,Ze=Re,et=De,at=0,ut=0,ht=0,wt=0;n.bbox={};let _t=!1,Mt=!1,Tt=!1,jt=!1,Et=!1,Ft=!1;function Bt(e,t,s){(s||e!=n.width||t!=n.height)&&Wt(e,t),yn(!1),Tt=!0,Mt=!0,Rn()}function Wt(e,t){n.width=Pe=Re=e,n.height=Ie=De=t,$e=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?(Re-=r,3==o?($e+=r,n=!0):s=!0):(De-=r,0==o?(Ye+=r,e=!0):t=!0))}}),as[0]=e,as[1]=s,as[2]=t,as[3]=n,Re-=cs[1]+cs[3],$e+=cs[3],De-=cs[2]+cs[0],Ye+=cs[0]}(),function(){let e=$e+Re,t=Ye+De,s=$e,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;at=s.left=Ct($e*ve,.5),ut=s.top=Ct(Ye*ve,.5),ht=s.width=Ct(Re*ve,.5),wt=s.height=Ct(De*ve,.5)}const qt=3;if(n.setSize=function({width:e,height:t}){Bt(e,t)},null==B.dataIdx){let e=B.hover,s=e.skip=new Set(e.skip??[]);s.add(void 0);let n=e.prox=xt(e.prox),a=e.bias??(e.bias=0);B.dataIdx=(e,o,i,l)=>{if(0==o)return i;let r=i,c=n(e,o,i,l)??pt,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=>{B.event=e};B.idxs=O,B._lock=!1;let Yt=B.points;Yt.show=xt(Yt.show),Yt.size=xt(Yt.size),Yt.stroke=xt(Yt.stroke),Yt.width=xt(Yt.width),Yt.fill=xt(Yt.fill);const Vt=n.focus=Ut({},e.focus||{alpha:.3},B.focus),Xt=Vt.prox>=0,Kt=Xt&&Yt.one;let Qt=[],Zt=[],es=[];function ss(e,t){let s=Yt.show(n,t);if(s instanceof HTMLElement)return _e(s,"u-cursor-pt"),_e(s,e.class),Le(s,-10,-10,Re,De),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)?Ls(A,Ns(s,R)):s||z:s||tn,e.label=e.label||(t?"Time":"Value")}if(Kt||t>0){e.width=null==e.width?1:e.width,e.paths=e.paths||$n||kt,e.fillTo=xt(e.fillTo||mn),e.pxAlign=+Ke(e.pxAlign,m),e.pxRound=wn(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=Nt(1*(3+2*(rt(1,e.width)||1)),3),s=e.points=Ut({},{size:t,width:rt(1,.2*t),stroke:e.stroke,space:2*t,paths:Bn,_stroke:null,_fill:null},e.points);s.show=xt(s.show),s.filter=xt(s.filter),s.fill=xt(s.fill),s.stroke=xt(s.stroke),s.paths=xt(s.paths),s.pxAlign=e.pxAlign}if(W){let s=function(e,t){if(0==t&&(K||!$.live||2==a))return Rt;let s=[],o=Te("tr","u-series",J,J.childNodes[t]);_e(o,e.class),e.show||_e(o,Z);let i=Te("th",null,o);if(U.show){let e=je("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=je(ee,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)),Se("click",i,t=>{if(B._lock)return;Jt(t);let s=x.indexOf(e);if((t.ctrlKey||t.metaKey)!=$.isolate){let e=x.some((e,t)=>t>0&&t!=s&&e.show);x.forEach((t,n)=>{n>0&&ia(n,e?n==s?me:xe:me,!0,Fa.setSeries)})}else ia(s,{show:!e.show},!0,Fa.setSeries)},!1),Xt&&Se(he,i,t=>{B._lock||(Jt(t),ia(x.indexOf(e),ua,!0,Fa.setSeries))},!1)),Y){let e=Te("td","u-value",o);e.textContent="--",s.push(e)}return[o,s]}(e,t);V.splice(t,0,s[0]),X.splice(t,0,s[1]),$.values.push(null)}if(H){O.splice(t,0,null);let s=null;Kt?0==t&&(s=ss(e,t)):t>0&&(s=ss(e,t)),Qt.splice(t,0,s),Zt.splice(t,0,0),es.splice(t,0,0)}Ra("addSeries",t)}n.addSeries=function(e,t){t=null==t?x.length:t,e=1==a?Hn(e,t,Hs,ln):Hn(e,t,{},on),x.splice(t,0,e),ns(x[t],t)},n.delSeries=function(e){if(x.splice(e,1),W){$.values.splice(e,1),X.splice(e,1);let t=V.splice(e,1)[0];Ne(null,t.firstChild),t.remove()}H&&(O.splice(e,1),Qt.splice(e,1)[0].remove(),Zt.splice(e,1),es.splice(e,1)),Ra("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?ot(Ws.size/3):0),1==r&&(a||i)&&(c=1==t&&!o||3==t&&!l?ot(sn.size/2):0),c}const is=n.padding=(e.padding||[os,os,os,os]).map(e=>xt(Ke(e,os))),cs=n._padding=is.map((e,t)=>e(n,t,as,0));let us,ds=null,hs=null;const fs=1==a?x[0].idxs:null;let ps,ms,gs,ys,xs,ws,js,Es,Is,As,Ds=null,Fs=!1;function zs(e,s){if(t=null==e?[]:e,n.data=n._data=t,2==a){us=0;for(let e=1;e=0,Ft=!0,Rn()}}function Os(){let e,s;Fs=!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]=qe(e,e,N.log,!1):4==L?[e,s]=Ge(e,e,N.log,!1):N.time?s=e+ot(86400/y):[e,s]=Xe(e,s,.1,!0))):(ds=fs[0]=e=null,hs=fs[1]=s=null)),oa(_,e,s)}function $s(e,t,s,n,a,o){e??(e=re),s??(s=At),n??(n="butt"),a??(a=re),o??(o="round"),e!=ps&&(d.strokeStyle=ps=e),a!=ms&&(d.fillStyle=ms=a),t!=gs&&(d.lineWidth=gs=t),o!=xs&&(d.lineJoin=xs=o),n!=ws&&(d.lineCap=ws=n),s!=ys&&d.setLineDash(ys=s)}function Bs(e,t,s,n){t!=ms&&(d.fillStyle=ms=t),e!=js&&(d.font=js=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,Fs)&&(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?Ue:He,i=a?We:Be;[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??pt,r??-pt]}(a,t,n,o,3==e.distr):[s.min,s.max];e.min=lt(e.min,s.min=i[0]),e.max=rt(e.max,s.max=i[1])}}n.setData=zs;const Vs={min:null,max:null};function Xs(e,t){let s=t?x[e].points:x[e];s._stroke=s.stroke(n,e),s._fill=s.fill(n,e)}function Ks(e,s){let a=s?x[e].points:x[e],{stroke:o,fill:i,clip:l,flags:r,_stroke:c=a._stroke,_fill:u=a._fill,_width:h=a.width}=a._paths;h=Nt(h*ve,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=at-h/2,t=ut-h/2,s=ht+h,n=wt+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=x[p.series[1]],y=t[p.series[1]],w=(g._paths||It).band;Dt(w)&&(w=1==p.dir?w[0]:w[1]);let b=null;g.show&&w&&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):w=null,nn(s,a,o,i,b,r,c,u,d,h,e,w),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 Qs=3;function nn(e,t,s,n,a,o,i,l,r,c,u,h){$s(e,t,s,n,a),(r||c||h)&&(d.save(),r&&d.clip(r),c&&d.clip(c)),h?(l&Qs)==Qs?(d.clip(h),u&&d.clip(u),dn(a,i),an(e,o,t)):2&l?(dn(a,i),d.clip(h),an(e,o,t)):1&l&&(d.save(),d.clip(h),u&&d.clip(u),dn(a,i),d.restore(),an(e,o,t)):(dn(a,i),an(e,o,t)),(r||c||h)&&d.restore()}function an(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 dn(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),$s(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=rt(mt(e),mt(t)),i=t-e,l=Oe(a/n*i,s);do{let e=s[l],t=n*e/i;if(t>=a&&o+(e<5?Lt.get(e):0)<=17)return[e,t]}while(++lDs[e]):f,m=2==o.distr?Ds[f[1]]-Ds[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=it(s.size(n,g,a,e)),null!=y&&s._size!=y&&(t=!1)}),t}function gn(e){let t=!0;return is.forEach((s,a)=>{let o=s(n,a,as,e);o!=cs[a]&&(t=!1),cs[a]=o}),t}function yn(e){x.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,Mn,Cn,Tn,jn,Nn,Ln,Pn=!1,En=!1,In=[];function An(){En=!1;for(let e=0;e0){x.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=Oe(l.min,t[0]),hs=Oe(l.max,t[0]),hs-ds>1&&(t[0][ds]l.max&&hs--),s.min=Ds[ds],s.max=Ds[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==pt?null:s.min,s.max==-pt?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?dt(a.min):4==e?ft(a.min,a.asinh):100==e?a.fwd(a.min):a.min,a._max=3==e?dt(a.max):4==e?ft(a.max,a.asinh):100==e?a.fwd(a.max):a.max,s[t]=o=!0}}if(o){x.forEach((e,t)=>{2==a?t>0&&s.y&&(e._paths=null):s[e.scale]&&(e._paths=null)});for(let e in s)Tt=!0,Ra("setScale",e);H&&B.left>=0&&(jt=Ft=!0)}for(let t in I)I[t]=null}(),_t=!1),Tt&&(function(){let e=!1,t=0;for(;!e;){t++;let s=pn(t),a=gn(t);e=t==qt||s&&a,e||(Wt(n.width,n.height),Mt=!0)}}(),Tt=!1),Mt){if(Ce(f,oe,$e),Ce(f,ne,Ye),Ce(f,te,Re),Ce(f,se,De),Ce(p,oe,$e),Ce(p,ne,Ye),Ce(p,te,Re),Ce(p,se,De),Ce(h,te,Pe),Ce(h,se,Ie),u.width=ot(Pe*ve),u.height=ot(Ie*ve),k.forEach(({_el:e,_show:t,_size:s,_pos:n,side:a})=>{if(null!=e)if(t){let t=a%2==1;Ce(e,t?"left":"top",n-(3===a||0===a?s:0)),Ce(e,t?"width":"height",s),Ce(e,t?"top":"left",t?Ye:$e),Ce(e,t?"height":"width",t?De:Re),Me(e,Z)}else _e(e,Z)}),ps=ms=gs=xs=ws=js=Es=Is=ys=null,As=1,ba(!0),$e!=Ve||Ye!=Qe||Re!=Ze||De!=et){yn(!1);let e=Re/Ze,t=De/et;if(H&&!jt&&B.left>=0){B.left*=e,B.top*=t,kn&&Le(kn,ot(B.left),0,Re,De),vn&&Le(vn,0,ot(B.top),Re,De);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)Ce(na,e,sa[e])}Ve=$e,Qe=Ye,Ze=Re,et=De}Ra("setSize"),Mt=!1}Pe>0&&Ie>0&&(d.clearRect(0,0,u.width,u.height),Ra("drawClear"),C.forEach(e=>e()),Ra("draw")),sa.show&&Et&&(aa(sa),Et=!1),H&&jt&&(xa(null,!0,!1),jt=!1),$.show&&$.live&&Ft&&(ga(),Ft=!1),r||(r=!0,n.status=1,Ra("ready")),Fs=!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=Oe(s.min,t[0]),s.max=Oe(s.max,t[0]),s.min==s.max&&s.max++),I[e]=s,_t=!0,Rn()}}n.batch=function(e,t=!1){Pn=!0,En=t,e(n),Dn(),t&&In.length>0&&queueMicrotask(An)},n.redraw=(e,t)=>{Tt=t||!1,!1!==e?oa(_,N.min,N.max):Rn()},n.setScale=Fn;let On=!1;const Zn=B.drag;let ea=Zn.x,ta=Zn.y;H&&(B.x&&(xn=je("u-cursor-x",p)),B.y&&(bn=je("u-cursor-y",p)),0==N.ori?(kn=xn,vn=bn):(kn=bn,vn=xn),Nn=B.left,Ln=B.top);const sa=n.select=Ut({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),na=sa.show?je("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&&Ce(na,t,e[t]);!1!==t&&Ra("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;x.forEach((n,o)=>{if(1==a||o>0){let a=t||0==o||o==e;n._focus=t?null:a,s&&function(e,t){x[e].alpha=t,H&&null!=Qt[e]&&(Qt[e].style.opacity=t),W&&V[e]&&(V[e].style.opacity=t)}(o,a?1:Vt.alpha)}}),ca=e,s&&Rn()}}(e),null!=t.show&&x.forEach((s,n)=>{n>0&&(e==n||null==e)&&(s.show=t.show,function(e){if(x[e].show)W&&Me(V[e],Z);else if(W&&_e(V[e],Z),H){let t=Kt?Qt[0]:Qt[e];null!=t&&Le(t,-10,-10,Re,De)}}(n),2==a?(oa(s.facets[0].scale,null,null),oa(s.facets[1].scale,null,null)):oa(s.scale,null,null),Rn())}),!1!==s&&Ra("setSeries",e,t),o&&$a("setSeries",n,e,t)}let la,ra,ca;n.setSelect=aa,n.setSeries=ia,n.addBand=function(e,t){e.fill=xt(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){Ut(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/ve-(1==n.ori?Ye:$e));let a=Re;1==n.ori&&(a=De,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?ct(10,i):4==l?((e,t=1)=>tt.sinh(e)*t)(i,n.asinh):100==l?n.bwd(i):i}function ha(e,t){Ce(na,oe,sa.left=e),Ce(na,te,sa.width=t)}function fa(e,t){Ce(na,ne,sa.top=e),Ce(na,se,sa.height=t)}W&&Xt&&Se(fe,q,e=>{B._lock||(Jt(e),null!=ca&&ia(null,ua,!0,Fa.setSeries))}),n.valToIdx=e=>Oe(e,t[0]),n.posToIdx=function(e,s){return Oe(da(e,_,s),t[0],ds,hs)},n.posToVal=da,n.valToPos=(e,t,s)=>0==v[t].ori?o(e,v[t],s?ht:Re,s?at:0):i(e,v[t],s?wt:De,s?ut:0),n.setCursor=(e,t,s)=>{Nn=e.left,Ln=e.top,xa(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),$.idx=O[0]),W&&$.live){for(let e=0;e0||1==a&&!K)&&ya(e,O[e]);!function(){if(W&&$.live)for(let e=2==a?1:0;ehs;la=pt,ra=null;let r=0==N.ori?Re:De,c=1==N.ori?Re:De;if(Nn<0||0==us||l){i=B.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(Xt&&null!=k){let t=1==N.ori?Nn:Ln,s=nt(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(Ft||Kt){let e,t;0==N.ori?(e=s,t=y):(e=y,t=s);let a,o,i,r,c,x,w=!0,b=Yt.bbox;if(null!=b){w=!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(x=Yt.fill(n,g),c=Yt.stroke(n,g),Kt)g==ra&&la<=Vt.prox&&(l=i,u=r,d=a,h=o,f=w,p=x,m=c);else{let e=Qt[g];null!=e&&(Zt[g]=i,es[g]=r,Ae(e,a,o,w),Ee(e,x,c),Le(e,it(i),it(r),Re,De))}}}}if(Kt){let e=Vt.prox;if(Ft||(null==ca?la<=e:la>e||ra!=ca)){let e=Qt[0];null!=e&&(Zt[0]=l,es[0]=u,Ae(e,d,h,f),Ee(e,p,m),Le(e,it(l),it(u),Re,De))}}}if(sa.show&&On)if(null!=e){let[t,s]=Fa.scales,[n,a]=Fa.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,x=e.scales[o].ori,w=e.posToVal,b=null!=t&&n(t,o),k=null!=s&&a(s,i);b&&ea?(0==x?(l=p,u=g):(l=m,u=y),d=v[t],h=P(w(l,o),d,r,0),f=P(w(l+u,o),d,r,0),pa(lt(h,f),nt(f-h))):pa(0,r),k&&ta?(1==x?(l=p,u=g):(l=m,u=y),d=v[s],h=E(w(l,i),d,c,0),f=E(w(l+u,i),d,c,0),ma(lt(h,f),nt(f-h))):ma(0,c)}else _a()}else{let e=nt(Tn-Sn),t=nt(jn-_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=Mn,n=Nn):(s=Cn,n=Ln),pa(lt(s,n),nt(n-s)),ta||ma(0,c)),ta&&(1==N.ori?(s=Mn,n=Nn):(s=Cn,n=Ln),ma(lt(s,n),nt(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!=za){let[e,t]=Fa.scales;Fa.values[0]=null!=e?da(0==N.ori?Nn:Ln,e):null,Fa.values[1]=null!=t?da(1==N.ori?Nn:Ln,t):null}$a(ce,n,Nn,Ln,Re,De,i)}if(Xt){let e=o&&Fa.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)}}Ft&&($.idx=i,ga()),!1!==s&&Ra("setCursor")}n.setLegend=ga;let wa=null;function ba(e=!1){e?wa=null:(wa=p.getBoundingClientRect(),Ra("syncRect",wa))}function ka(e,t,s,n,a,o,i){B._lock||On&&null!=e&&0==e.movementX&&0==e.movementY||(va(e,t,s,n,a,o,0,!1,null!=e),null!=e?xa(null,!0,!0):xa(t,!0,!1))}function va(e,t,s,a,o,i,r,c,u){if(null==wa&&ba(!1),Jt(e),null!=e)s=e.clientX-wa.left,a=e.clientY-wa.top;else{if(s<0||a<0)return Nn=-10,void(Ln=-10);let[e,n]=Fa.scales,r=t.cursor.sync,[c,u]=r.values,[d,h]=r.scales,[f,p]=Fa.match,m=t.axes[0].side%2==1,g=0==N.ori?Re:De,y=1==N.ori?Re:De,x=m?i:o,w=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/x),a=null!=h?p(n,h)?l(u,v[n],y,0):-10:y*(k/w),1==N.ori){let e=s;s=a,a=e}}!u||null!=t&&t.cursor.event.type!=ce||((s<=1||s>=Re-1)&&(s=Ct(s,Re)),(a<=1||a>=De-1)&&(a=Ct(a,De))),c?(Sn=s,_n=a,[Mn,Cn]=B.move(n,s,a)):(Nn=s,Ln=a)}Object.defineProperty(n,"rect",{get:()=>(null==wa&&ba(!1),wa)});const Sa={width:0,height:0,left:0,top:0};function _a(){aa(Sa,!1)}let Ma,Ca,Ta,ja;function Na(e,t,s,a,o,i,l){On=!0,ea=ta=Zn._x=Zn._y=!1,va(e,t,s,a,o,i,0,!0,!1),null!=e&&(Se(de,we,La,!1),$a(ue,n,Mn,Cn,Re,De,null));let{left:r,top:c,width:u,height:d}=sa;Ma=r,Ca=c,Ta=u,ja=d}function La(e,t,s,a,o,i,l){On=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=Ma!=r||Ca!=c||Ta!=u||ja!=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!=pt&&oa(a,da(s+n,a),da(s,a))}_a()}else B.lock&&(B._lock=!B._lock,xa(t,!0,null!=e));null!=e&&(Ne(de,we),$a(de,n,Nn,Ln,Re,De,null))}function Pa(e,t,s,a,o,i,l){B._lock||(Jt(e),Os(),_a(),null!=e&&$a(pe,n,Nn,Ln,Re,De,null))}function Ea(){k.forEach(Qn),Bt(n.width,n.height,!0)}Fe(ge,be,Ea);const Ia={};Ia.mousedown=Na,Ia.mousemove=ka,Ia.mouseup=La,Ia.dblclick=Pa,Ia.setSeries=(e,t,s,a)=>{-1!=(s=(0,Fa.match[2])(n,t,s))&&ia(s,a,!0,!1)},H&&(Se(ue,p,Na),Se(ce,p,ka),Se(he,p,e=>{Jt(e),ba(!1)}),Se(fe,p,function(e,t,s,n,a,o,i){if(B._lock)return;Jt(e);let l=On;if(On){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>=Re-a,n=Ln<=a||Ln>=De-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 Da=(e,t,s)=>s,Fa=Ut({key:null,setSeries:!1,filters:{pub:vt,sub:vt},scales:[_,x[1]?x[1].scale:null],match:[St,St,Da],values:[null,null]},B.sync);2==Fa.match.length&&Fa.match.push(Da),B.sync=Fa;const za=Fa.key,Oa=hn(za);function $a(e,t,s,n,a,o,i){Fa.filters.pub(e,t,s,n,a,o,i)&&Oa.pub(e,t,s,n,a,o,i)}function Ba(){Ra("init",e,t),zs(t||e.data,!1),I[_]?Fn(_,I[_]):Os(),Et=sa.show&&(sa.width>0||sa.height>0),jt=Ft=!0,Bt(e.width,e.height)}return Oa.sub(n),n.pub=function(e,t,s,n,a,o,i){Fa.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),ke.clear(),ze(ge,be,Ea),c.remove(),null==q||q.remove(),Ra("destroy")},x.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?x[1].scale:_,a=v[e.scale]);let o=a.time;e.size=xt(e.size),e.space=xt(e.space),e.rotate=xt(e.rotate),Dt(e.incrs)&&e.incrs.forEach(e=>{!Lt.has(e)&&Lt.set(e,Pt(e))}),e.incrs=xt(e.incrs||(2==a.distr?ls:o?1==y?bs:Ss:rs)),e.splits=xt(e.splits||(o&&1==a.distr?D:3==a.distr?Gs:4==a.distr?Js:qs)),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=Dt(i)&&!Dt(i[0])?xt(i):o?Dt(i)?Ts(A,Cs(i,R)):zt(i)?function(e,t){let s=ts(t);return(t,n,a,o,i)=>n.map(t=>s(e(t)))}(A,i):i||F:i||Us,e.filter=xt(e.filter||(a.distr>=3&&10==a.log?Zs:3==a.distr&&2==a.log?en:bt)),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=je("u-axis",h))}}),s?s instanceof HTMLElement?(s.appendChild(c),Ba()):s(n,Ba):Ba(),n}Zn.assign=Ut,Zn.fmtNum=et,Zn.rangeNum=Xe,Zn.rangeLog=qe,Zn.rangeAsinh=Ge,Zn.orient=fn,Zn.pxRatio=ve,Zn.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=rt(1,at((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;ifn(e,o,(r,c,u,d,h,f,p,m,g,y,x)=>{[i,l]=He(u,i,l);let w=r.pxRound,{left:b,width:k}=e.bbox,v=e=>w(f(e,d,y,m)),S=e=>w(p(e,h,x,g)),_=0==d.ori?Sn:_n;const M={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:1},C=M.stroke,T=d.dir*(0==d.ori?1:-1);let j=S(u[1==T?i:l]),N=v(c[1==T?i:l]),L=N,P=N;a&&-1==t&&(P=b,_(C,P,j)),_(C,N,j);for(let e=1==T?i:l;e>=i&&e<=l;e+=T){let s=u[e];if(null==s)continue;let n=v(c[e]),a=S(s);1==t?_(C,n,j):_(C,L,a),_(C,n,a),j=a,L=n}let E=L;a&&1==t&&(E=b+k,_(C,E,j));let[I,A]=pn(e,o);if(null!=r.fill||0!=I){let t=M.fill=new Path2D(C),s=S(r.fillTo(e,o,r.min,r.max,I));_(t,E,s),_(t,P,s)}if(!r.spanGaps){let a=[];a.push(...xn(c,u,i,l,T,v,n));let h=r.width*ve/2,f=s||1==t?h:-h,p=s||-1==t?-h:h;a.forEach(e=>{e[0]+=f,e[1]+=p}),M.gaps=a=r.gaps(e,o,i,l,a),M.clip=yn(a,d.ori,m,g,y,x)}return 0!=A&&(M.band=2==A?[gn(e,o,i,l,C,-1),gn(e,o,i,l,C,1)]:gn(e,o,i,l,C,A)),M})},e.bars=function(e){const t=Ke((e=e||It).size,[.6,pt,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=xt(a),i=1-t[0],l=Ke(t[1],pt),r=Ke(t[2],1),c=Ke(e.disp,It),u=Ke(e.each,e=>{}),{fill:d,stroke:h}=c;return(e,t,a,f)=>fn(e,t,(p,m,g,y,x,w,b,k,v,S,_)=>{let M,C,T=p.pxRound,j=s,N=n*ve,L=l*ve,P=r*ve;0==y.ori?[M,C]=o(e,t):[C,M]=o(e,t);const E=y.dir*(0==y.ori?1:-1);let I,A,R,D=0==y.ori?Mn:Cn,F=0==y.ori?u:(e,t,s,n,a,o,i)=>{u(e,t,s,a,n,i,o)},z=Ke(e.bands,At).find(e=>e.series[0]==t),O=null!=z?z.dir:0,$=p.fillTo(e,t,p.min,p.max,O),B=T(b($,x,_,v)),W=S,H=T(p.width*ve),U=!1,q=null,G=null,J=null,Y=null;null==d||0!=H&&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)}),H>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:X}=c;if(null!=V&&null!=X){j=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=X.values(e,t,a,f);A=2==X.unit?s[0]*S:w(s[0],y,S,k)-w(0,y,S,k),W=Dn(m,g,w,y,S,k,W),R=W-A+N}else W=Dn(m,g,w,y,S,k,W),R=W*i+N,A=W-R;R<1&&(R=0),H>=A/2&&(H=0),R<5&&(T=wt);let K=R>0;A=T(gt(W-R-(K?H:0),P,L)),I=(0==j?A/2:j==E?0:A)-j*E*((0==j?N/2:0)+(K?H/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!=z)ee=e.data[z.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=M*A,se=C*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=b(e,x,_,v)}let a=w(2!=y.distr||null!=c?m[s]:s,y,S,k),o=b(Ke(n,$),x,_,v),i=T(a-I),l=T(rt(o,B)),r=T(lt(o,B)),u=l-r;if(null!=n){let a=n<0?se:te,o=n<0?te:se;U?(H>0&&null!=J[s]&&D(Y.get(J[s]),i,r+at(H/2),A,rt(0,u-H),a,o),null!=q[s]&&D(G.get(q[s]),i,r+at(H/2),A,rt(0,u-H),a,o)):D(Z,i,r+at(H/2),A,rt(0,u-H),a,o),F(e,t,s,i-H/2,r,A+H,u)}}return H>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)=>fn(t,n,(i,l,r,c,u,d,h,f,p,m,g)=>{[a,o]=He(r,a,o);let y,x,w,b=i.pxRound,k=e=>b(d(e,c,m,f)),v=e=>b(h(e,u,g,p));0==c.ori?(y=kn,w=Sn,x=Nn):(y=vn,w=_n,x=Ln);const S=c.dir*(0==c.ori?1:-1);let _=k(l[1==S?a:o]),M=_,C=[],T=[];for(let e=1==S?a:o;e>=a&&e<=o;e+=S)if(null!=r[e]){let t=k(l[e]);C.push(M=t),T.push(v(r[e]))}const j={stroke:e(C,T,y,w,x,b),fill:null,clip:null,band:null,gaps:null,flags:1},N=j.stroke;let[L,P]=pn(t,n);if(null!=i.fill||0!=L){let e=j.fill=new Path2D(N),s=v(i.fillTo(t,n,i.min,i.max,L));w(e,M,s),w(e,_,s)}if(!i.spanGaps){let e=[];e.push(...xn(l,r,a,o,S,k,s)),j.gaps=e=i.gaps(t,n,a,o,e),j.clip=yn(e,c.ori,f,p,m,g)}return 0!=P&&(j.band=2==P?[gn(t,n,a,o,N,-1),gn(t,n,a,o,N,1)]:gn(t,n,a,o,N,P)),j})}(Fn,e)}}const ea=new Map;function ta(e){var t;if(!e.startsWith("var("))return e;const s=ea.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 ea.set(e,i),i}const sa=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);s.useLayoutEffect(()=>{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,i=window.devicePixelRatio||1,l=function(){const e=getComputedStyle(document.documentElement);return{fontFamily:e.getPropertyValue("--font-data").trim()||'"JetBrains Mono", ui-monospace, monospace',textPrimary:e.getPropertyValue("--text-primary").trim()||"#FFFFFF"}}();t.save(),t.strokeStyle=l.textPrimary,t.globalAlpha=.15,t.lineWidth=1*i,t.setLineDash([4*i,4*i]);for(const c of[.2,.4,.6,.8]){const e=Math.round(n+o*(1-c))+.5;t.beginPath(),t.moveTo(Math.round(s),e),t.lineTo(Math.round(s+a),e),t.stroke()}t.restore(),t.save(),t.font=`bold ${10*i}px ${l.fontFamily}`,t.fillStyle=l.textPrimary,t.textBaseline="middle",t.textAlign="left";const r=8*i;for(const c of[0,20,40,60,80,100]){const e=n+o*(1-c/100),s=Math.max(n+r,Math.min(n+o-r,e));t.fillText(`${c}%`,0,s)}t.restore()}(e)}}}),[]),m=s.useMemo(()=>({width:400,height:200,padding:[8,0,0,32],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 Zn({...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})}),na=s.createContext(null);function aa({children:e}){const[t,a]=s.useState(()=>function(){if("undefined"==typeof window)return F;try{let t=localStorage.getItem(z),s=localStorage.getItem(O);const n=localStorage.getItem($);if(!t&&!s){const e=localStorage.getItem(B);if(e){const n=D.find(t=>t.id===e);n&&(t=n.colorScheme,s=n.backgroundImage,localStorage.setItem(z,t),localStorage.setItem(O,s),localStorage.removeItem(B))}}const a="string"==typeof(e=t)&&A.some(t=>t.id===e)?t:F.colorScheme,o=s||F.backgroundImage;let i=F.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 F}var e}());s.useEffect(()=>{(function(e){const t=(s=e,A.find(e=>e.id===s)??A[0]);var s;t.dataTheme?document.documentElement.setAttribute("data-theme",t.dataTheme):document.documentElement.removeAttribute("data-theme")})(t.colorScheme),ea.clear(),requestAnimationFrame(()=>{!function(){if("undefined"==typeof window)return;for(const t of q){const e=K(`--palette-${t}-bright`),s=K(`--palette-${t}`),n=e||s;if(!n)continue;const a=X(n);for(const o of U)Q(`--palette-${t}-${o}`,a[o])}const e=K("--palette-bg-4");if(e){const t=X(e);for(const e of U)Q(`--palette-neutral-${e}`,t[e])}}()})},[t.colorScheme]),s.useEffect(()=>{!function(e){if("undefined"!=typeof window)try{localStorage.setItem(z,e.colorScheme),localStorage.setItem(O,e.backgroundImage),localStorage.setItem($,String(e.brightness))}catch{}}(t)},[t]),s.useEffect(()=>{R.forEach(e=>{(new Image).src=e.src})},[]);const o=s.useCallback(e=>{a(t=>({...t,colorScheme:e}))},[]),i=s.useCallback(e=>{const t=R.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(na.Provider,{value:c,children:e})}function oa(){const e=s.useContext(na);if(!e)throw new Error("useTheme must be used within a ThemeProvider. Wrap your app with in App.tsx.");return e}const ia="0.9.143",la="'JetBrains Mono', monospace",ra=s.memo(function({height:e=16,responsive:t=!1,className:s=""}){const a="var(--accent-primary)",o="#FFFFFF";if(t){const e=145,t=24;return n.jsxs("svg",{className:s,viewBox:`0 0 ${e} ${t}`,preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":"pyMC:Console",style:{display:"block",width:"80%",height:"auto"},children:[n.jsx("style",{children:`\n .logo-text {\n font-family: ${la};\n }\n .logo-accent {\n fill: var(--accent-primary, #719CDF);\n }\n `}),n.jsxs("text",{x:"0",y:"18",className:"logo-text",fontSize:"20",fontWeight:"400",letterSpacing:"-0.02em",children:[n.jsx("tspan",{className:"logo-accent",children:"py"}),n.jsx("tspan",{fill:o,children:"MC"}),n.jsx("tspan",{className:"logo-accent",children:":"}),n.jsx("tspan",{fill:o,children:"Console"})]})]})}const i="string"==typeof e?parseFloat(e):e,l={fontFamily:la,fontSize:.8*i+"px",fontWeight:400,lineHeight:1,letterSpacing:"-0.02em",whiteSpace:"nowrap"};return n.jsxs("span",{className:s,style:l,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"})]})}),ca={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"},ua={0:"T_FLOOD",1:"FLOOD",2:"DIRECT",3:"T_DIRECT"},da={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 ha(e){return 1===e||0===e}const fa={spreadingFactor:7,bandwidthHz:125e3,codingRate:5,preambleLength:8,crcEnabled:!0,explicitHeader:!0};function pa(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 ma(e,t={}){const s=t.spreadingFactor??fa.spreadingFactor,n=t.bandwidthHz??fa.bandwidthHz,a=t.codingRate??fa.codingRate,o=t.preambleLength??fa.preambleLength??8,i=t.crcEnabled??fa.crcEnabled?1:0,l=t.explicitHeader??fa.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 ga="pymc_jwt_token",ya="pymc_client_id",xa="pymc_remember_me",wa=new Set;function ba(e){return wa.add(e),()=>wa.delete(e)}function ka(e){for(const s of wa)try{s(e)}catch(t){}}function va(){let e=localStorage.getItem(ya);return e||(e=`${Date.now()}-${Math.random().toString(36).substring(2,15)}`,localStorage.setItem(ya,e)),e}function Sa(){return"true"===localStorage.getItem(xa)}function _a(e){e?localStorage.setItem(xa,"true"):localStorage.removeItem(xa)}function Ma(){return Sa()?localStorage:sessionStorage}function Ca(){return Ma().getItem(ga)||localStorage.getItem(ga)||sessionStorage.getItem(ga)}function Ta(e){Ma().setItem(ga,e),Sa()?sessionStorage.removeItem(ga):localStorage.removeItem(ga),ka(e)}function ja(){localStorage.removeItem(ga),sessionStorage.removeItem(ga),ka(null)}function Na(){return!(!Ca()||Pa()&&(ja(),1))}function La(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 Pa(){const e=Ca();if(!e)return!0;const t=La(e);return!t||!t.exp||Date.now()>=1e3*t.exp-6e4}function Ea(){const e=Ca();if(!e)return 0;const t=La(e);return t&&t.exp?Math.max(0,Math.floor((1e3*t.exp-Date.now())/1e3)):0}function Ia(){const e=Ca();if(!e)return!1;const t=La(e);if(!t||!t.exp)return!1;const s=1e3*t.exp-Date.now();return s>0&&s<3e5}function Aa(){const e=Ca();if(!e)return null;const t=La(e);return t&&t.sub?t.sub:null}async function Ra(e,t,s=!1){_a(s);try{const s=await fetch("/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:e,password:t,client_id:va()})}),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?(Ta(a.token),{success:!0}):{success:!1,error:a.error||"Login failed"}}catch(n){return{success:!1,error:"Connection error. Please try again."}}}async function Da(){const e=Ca();if(!e)return!1;const t=La(e);(null==t?void 0:t.exp)&&Math.floor((1e3*t.exp-Date.now())/1e3);try{const t=await fetch("/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({client_id:va()})});if(!t.ok){let e="";try{const s=await t.json();e=s.error||JSON.stringify(s)}catch{e=t.statusText}return!1}const s=await t.json();if(s.success&&s.token){Ta(s.token);const e=La(s.token);return(null==e?void 0:e.exp)&&Math.floor((1e3*e.exp-Date.now())/1e3),!0}return!1}catch(s){return!1}}let Fa=null;async function za(){const e=Ca();if(!e)return!1;const t=La(e);return(null==t?void 0:t.exp)&&Math.floor((1e3*t.exp-Date.now())/1e3),!Ia()||Fa||(Fa=Da().finally(()=>{Fa=null}),Fa)}function Oa(){ja()}let $a=!1;function Ba(){if($a)return;if("undefined"==typeof document)return;const e=async()=>{if("visible"!==document.visibilityState)return;if(!Ca())return;if(Pa())return ja(),void("undefined"==typeof window||window.location.pathname.includes("/login")||(window.location.href="/login"));const e=Ea();e>0&&e<300&&await Da()};document.addEventListener("visibilitychange",e),$a=!0,"visible"===document.visibilityState&&e()}const Wa=Object.freeze(Object.defineProperty({__proto__:null,clearToken:ja,getClientId:va,getRememberMe:Sa,getToken:Ca,getTokenTimeRemaining:Ea,getUsername:Aa,isAuthenticated:Na,isTokenExpired:Pa,login:Ra,logout:Oa,onTokenChange:ba,parseJWT:La,refreshToken:Da,refreshTokenIfNeeded:za,setRememberMe:_a,setToken:Ta,shouldRefreshToken:Ia,startVisibilityBasedRefresh:Ba},Symbol.toStringTag,{value:"Module"})),Ha=new Map;let Ua=!1;async function qa(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=Ha.get(n);if(e)return e}const a=`${e}`;!s&&Ia()&&await Da();const o=Ca();if(!o&&!e.includes("/auth/"))throw window.location.href="/login",new Error("Not authenticated");const 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&&!Ua&&await Da())return qa(e,t,!0);throw Ua||(Ua=!0,ja(),window.location.replace("/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&&(Ha.set(n,l),l.finally(()=>{Ha.delete(n)})),l}function Ga(e){return e&&"chat node"===e.toLowerCase()?"Companion":e}async function Ja(){return function(e){if(e.neighbors)for(const t of Object.values(e.neighbors))t.contact_type=Ga(t.contact_type);return e}(await qa("/api/stats"))}async function Ya(){return qa("/api/logs")}async function Va(e=24){return qa(`/api/noise_floor_history?hours=${e}`)}async function Xa(){return qa("/api/hardware_stats")}async function Ka(){return qa("/api/send_advert",{method:"POST",body:"{}"})}async function Qa(e){return qa("/api/set_mode",{method:"POST",body:JSON.stringify({mode:e})})}async function Za(e){return qa("/api/set_duty_cycle",{method:"POST",body:JSON.stringify({enabled:e})})}const eo=new Map;function to(e=!1){if(e)eo.clear();else for(const[t]of eo)parseInt(t.split("-")[0],10)<=60&&eo.delete(t)}function so(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)??fa.spreadingFactor,bandwidthHz:(null==s?void 0:s.bandwidth)??fa.bandwidthHz,codingRate:(null==s?void 0:s.coding_rate)??fa.codingRate,preambleLength:(null==s?void 0:s.preamble_length)??fa.preambleLength,crcEnabled:!0,explicitHeader:!0}}(n):fa,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=ma(pa(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 no(e){return qa("/api/update_radio_config",{method:"POST",body:JSON.stringify(e)})}async function ao(e){return qa("/api/set_log_level",{method:"POST",body:JSON.stringify({level:e})})}async function oo(){return qa("/api/transport_keys")}async function io(e){return qa("/api/transport_keys",{method:"POST",body:JSON.stringify(e)})}async function lo(e,t){return qa(`/api/transport_key/${e}`,{method:"PUT",body:JSON.stringify(t)})}async function ro(e){return qa(`/api/transport_key/${e}`,{method:"DELETE"})}async function co(e){return qa("/api/global_flood_policy",{method:"POST",body:JSON.stringify({global_flood_allow:e})})}async function uo(e,t=10){return qa("/api/ping_neighbor",{method:"POST",body:JSON.stringify({target_id:e,timeout:t})})}async function ho(e){return qa("/api/update_web_config",{method:"POST",body:JSON.stringify(e)})}async function fo(){return qa("/api/check_pymc_console")}async function po(){return qa("/api/restart_service",{method:"POST",body:"{}"})}async function mo(){return qa("/auth/tokens")}async function go(e){return qa("/auth/tokens",{method:"POST",body:JSON.stringify({name:e})})}async function yo(e){return qa(`/auth/tokens/${e}`,{method:"DELETE"})}const xo="pymc-packet-cache",wo="pymc-packet-cache-meta",bo=36e5,ko=12096e5,vo=5e3,So=5e5,_o=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>bo}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;const t=Date.now(),s=Math.floor((t-ko)/1e3),n=42e4;this.loadProgress={loaded:0,target:n,percent:0},this.statusMessage="Loading 14-day history...",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 a=0,o=0,i=0;const l=Math.ceil(100);for(let r=0;r0))break;{const n=this.packets.size;this.mergePackets(u.data);const i=this.packets.size-n;a+=i;const l=Math.min(...u.data.map(e=>e.timestamp??1/0));if(l!==1/0&&(void 0===t||l=2)break}else o=0;if(u.data.length=So)break}r=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(a){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;const e=Date.now(),t=Math.floor((e-ko)/1e3),s=42e4;this.statusMessage="Loading 14-day topology...",this.loadProgress={loaded:0,target:s,percent:0},this.notifyListeners();try{let e,n=0,a=0,o=0;const i=Math.ceil(100);for(let l=0;l0))break;{const s=this.packets.size;this.mergePackets(c.data);const o=this.packets.size-s;n+=o;const i=Math.min(...c.data.map(e=>e.timestamp??1/0));if(i!==1/0&&(void 0===e||i=2)break}else a=0;if(c.data.length=So)break}l=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(n){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)}delay(e){return new Promise(t=>setTimeout(t,e))}async fetchChunkWithRetry(e,t,s,n,a){for(let i=0;i<3;i++)try{return await this.fetchFilteredPackets(e,t,!1,a)}catch(o){const e=2===i,t=1e3*Math.pow(2,i);o instanceof Error&&o.name,e||(this.statusMessage=`Retry in ${Math.round(t/1e3)}s...`,this.notifyListeners(),await this.delay(t))}return null}enforceMemoryCap(){if(this.packets.size<=So)return;const e=this.getPackets(),t=e.length-So;for(let s=0;st&&(this.meta.oldestTimestamp=e[t].timestamp??0)}loadFromStorage(){if("undefined"!=typeof window)try{const e=localStorage.getItem(wo);e&&(this.meta=JSON.parse(e));const t=localStorage.getItem(xo);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>bo)return void this.clear();this.meta.backgroundLoadComplete=!1;const s=37500;this.meta.topologyLoadComplete&&this.packets.size3e3?e.slice(-3e3):e;localStorage.setItem(xo,JSON.stringify(t))}catch(e){if(e instanceof DOMException&&"QuotaExceededError"===e.name)try{localStorage.removeItem(xo),localStorage.setItem(wo,JSON.stringify(this.meta))}catch{}}}clearStorage(){if("undefined"!=typeof window)try{localStorage.removeItem(xo),localStorage.removeItem(wo)}catch(e){}}async fetchRecentPackets(e=1e3,t=!1){const s=`/api/recent_packets?limit=${e}`,{getToken:n}=await E(async()=>{const{getToken:e}=await Promise.resolve().then(()=>Wa);return{getToken:e}},void 0),a=n(),o={};a&&(o.Authorization=`Bearer ${a}`);const i=await fetch(s,{headers:o});if(401===i.status&&!t){const{refreshToken:t}=await E(async()=>{const{refreshToken:e}=await Promise.resolve().then(()=>Wa);return{refreshToken:e}},void 0);if(await t())return this.fetchRecentPackets(e,!0)}if(!i.ok)throw new Error(`API error: ${i.status}`);return i.json()}async fetchFilteredPackets(e,t=5e3,s=!1,n){const a=new URLSearchParams;a.set("limit",String(t)),void 0!==e&&a.set("end_timestamp",String(e-.001)),void 0!==n&&a.set("start_timestamp",String(n));const o=`/api/filtered_packets?${a}`,{getToken:i}=await E(async()=>{const{getToken:e}=await Promise.resolve().then(()=>Wa);return{getToken:e}},void 0),l=i(),r={};l&&(r.Authorization=`Bearer ${l}`);const c=new AbortController,u=setTimeout(()=>c.abort(),3e4);try{const n=await fetch(o,{headers:r,signal:c.signal});if(401===n.status&&!s){const{refreshToken:s}=await E(async()=>{const{refreshToken:e}=await Promise.resolve().then(()=>Wa);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(u)}}};function Mo(e){return{paths:e.paths,byEndpoints:new Map(e.byEndpointsEntries),canonicalPaths:new Map(e.canonicalPathsEntries),totalObservations:e.totalObservations,uniquePathCount:e.uniquePathCount}}function Co(){return{paths:[],byEndpoints:new Map,canonicalPaths:new Map,totalObservations:0,uniquePathCount:0}}const To=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:Co(),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?Mo(t.pathRegistry):Co(),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()}},jo=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()}},No=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),t(this,"unsubscribeTokenChange",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,this.unsubscribeTokenChange=ba(e=>{this.setAuthToken(e)}),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.unsubscribeTokenChange&&(this.unsubscribeTokenChange(),this.unsubscribeTokenChange=null),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}},Lo=.05,Po=1e3,Eo="terrarium";function Io(e,t,s){try{return e.queryTerrainElevation({lng:t,lat:s})??0}catch{return 0}}const Ao=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(Eo)||(n.addSource(Eo,{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===Eo&&t.isSourceLoaded&&(clearTimeout(s),n.off("sourcedata",a),e())};n.on("sourcedata",a)})),n.setTerrain({source:Eo}),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>Po&&(i=Po),l>Po&&(l=Po);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-Lo,maxLat:n+Lo,minLng:a-Lo,maxLng:o+Lo}}(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 Ro(e){return e.startsWith("0x")||e.startsWith("0X")?e.slice(2,4).toUpperCase():e.slice(0,2).toUpperCase()}function Do(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?Ro(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 Fo(e,t){const s=e.toUpperCase();return t.startsWith("0x")||t.startsWith("0X")?t.slice(2).toUpperCase().startsWith(s):t.toUpperCase().startsWith(s)}const zo=[{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}],Oo=[{label:"1h",hours:1},{label:"3h",hours:3},{label:"12h",hours:12},{label:"24h",hours:24},{label:"3d",hours:72},{label:"7d",hours:168},{label:"14d",hours:336}];function $o(e){switch(e){case 1:return 3600;case 3:case 12:return 5400;case 24:return 8640;case 72:case 168:case 336:return 720;default:{const t=3600*e,s=Math.round(t/10);return Math.min(Math.max(360,s),720)}}}const Bo={stats:3e3,packets:3e3,charts:3e4,logs:2e3,system:3e3},Wo={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 Ho(e){return Wo[e]??"text-text-muted border-border-subtle"}const Uo="pymc-resource-history",qo="pymc-resource-last-fetch",Go="pymc-hidden-contacts",Jo="pymc-quick-neighbors",Yo="pymc-local-hash";let Vo=null,Xo=null;function Ko(e,t){const s=t-1e3*e;return s<=6048e5?"active":s<=12096e5?"stale":"expired"}function Qo(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:ha(s)?t.length<=1:0===t.length;var n}(e)}function Zo(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 ei(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 ti(e){return{hash:e,count:0,rssiSum:0,rssiCount:0,snrSum:0,snrCount:0,lastSeen:0}}function si(e,t){const s=Ko(e.lastSeen,t);return"expired"===s?null:{hash:e.hash,prefix:Ro(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 ni(){if("undefined"==typeof window)return[];try{const e=localStorage.getItem(Jo);if(e)return JSON.parse(e)}catch{}return[]}function ai(e){"undefined"!=typeof window&&(Xo&&clearTimeout(Xo),Xo=setTimeout(()=>{try{localStorage.setItem(Jo,JSON.stringify(e))}catch{}Xo=null},1e3))}function oi(){if("undefined"!=typeof window)try{const e=localStorage.getItem(Yo);if(e)return e}catch{}}function ii(e){if("undefined"!=typeof window)try{localStorage.setItem(Yo,e)}catch{}}function li(){if("undefined"==typeof window)return[];try{const e=localStorage.getItem(Uo);if(e)return JSON.parse(e)}catch{}return[]}function ri(){if("undefined"==typeof window)return new Set;try{const e=localStorage.getItem(Go);if(e)return new Set(JSON.parse(e))}catch{}return new Set}function ci(){if("undefined"==typeof window)return 0;try{const e=localStorage.getItem(qo);if(e)return parseInt(e,10)||0}catch{}return 0}const ui=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:li(),lastResourceFetch:ci(),hiddenContacts:ri(),quickNeighbors:ni(),cachedLocalHash:oi(),initialized:!1,packetCacheState:_o.getState(),mutationsInFlight:new Set,initializeApp:async()=>{const{initialized:s}=t();if(!s){e({initialized:!0,statsLoading:!0,packetsLoading:!0}),_o.subscribe(t=>{e({packetCacheState:t})});try{const{hiddenContacts:s}=t(),n=await Ja(),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=Ko(t.last_seen??0,o);"expired"!==n&&i.push({hash:e,prefix:Ro(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}),ai(i),l&&ii(l);const r=()=>{const s=_o.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 _o.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 No.init({apiBaseUrl:"",authToken:Ca()??void 0,statsIntervalMs:Bo.stats,packetsIntervalMs:Bo.packets}),No.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=Ko(t.last_seen??0,l);"expired"!==s&&r.push({hash:e,prefix:Ro(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}),ai(r),c&&ii(c)}),No.onPackets((s,n,a)=>{if(0===s.length)return;const{lastPacketTimestamp:o}=t();for(const e of s)if(e.packet_hash){_o.mergePacketsDirectly(s);break}const i=a>o;i&&(e({flashReceived:t().flashReceived+1}),to());const l=_o.getPackets();e({packets:l,packetsLoading:!1,lastPacketTimestamp:a}),i&&t().triggerTopologyCompute()}),No.onError((t,s)=>{e("stats"===t?{statsError:s}:{packetsError:s})}),"undefined"!=typeof document&&document.addEventListener("visibilitychange",()=>{document.hidden||No.forceRefresh()})}catch(n){!function(e){setInterval(()=>{e().fetchStats()},Bo.stats),setInterval(()=>{e().liveMode&&!_o.isHeavyLoadInProgress()&&e().fetchPackets()},Bo.packets)}(t)}}},prefetchForRoute:e=>{switch(e){case"/logs":Ya().catch(()=>{});break;case"/system":Xa().catch(()=>{});break;case"/statistics":(async function(e=24){return qa(`/api/packet_type_graph_data?hours=${e}`)})(3).catch(()=>{}),Va(3).catch(()=>{});break;case"/settings":(async function(){return qa("/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 Ja(),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=Ko(l.last_seen??0,n);"expired"!==t&&a.push({hash:e,prefix:Ro(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}),ai(a),i&&ii(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 _o.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}),to()),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 Ya();e({logs:t.logs,logsLoading:!1})}catch{e({logsLoading:!1})}},setLiveMode:t=>{e({liveMode:t}),No.isReady()&&No.setLiveMode(t)},setMode:async s=>{const n="setMode",{mutationsInFlight:a}=t(),o=new Set(a);o.add(n),e({mutationsInFlight:o});try{if(!(await Qa(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 Za(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 qa("/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})},startMutation:s=>{const{mutationsInFlight:n}=t(),a=new Set(n);a.add(s),e({mutationsInFlight:a})},clearMutation:s=>{const{mutationsInFlight:n}=t(),a=new Set(n);a.delete(s),e({mutationsInFlight:a})},sendAdvert:async()=>{try{const s=await Ka();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&&(Vo&&clearTimeout(Vo),Vo=setTimeout(()=>{try{localStorage.setItem(Uo,JSON.stringify(u)),localStorage.setItem(qo,d.toString())}catch{}Vo=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(Go,JSON.stringify([...e]))}catch{}}(a)},clearPacketCache:()=>{_o.clear(),e({packets:[],lastPacketTimestamp:0}),_o.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=Ao.getState().getTerrainGridForDisambiguation();To.compute(o,c,u,d,h,void 0,f,p??void 0)},triggerDeepAnalysis:async()=>{await _o.forceDeepLoad();const s=_o.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=Ro(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=Ro(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(!Qo(c))continue;const e=Zo(c.src_hash,a,i,o,s);if(!e)continue;let t=l.get(e);t||(t=ti(e),l.set(e,t)),ei(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=si(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}),ai(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&&jo.compute(e,o)}})),di=ui,hi=()=>ui(e=>e.stats),fi=()=>ui(e=>e.statsError),pi=()=>ui(e=>e.packets),mi=()=>ui(e=>e.packetsLoading),gi=()=>ui(e=>e.logs),yi=()=>ui(e=>e.logsLoading),xi=()=>ui(e=>e.liveMode),wi=()=>ui(e=>e.flashAdvert),bi=()=>ui(e=>e.fetchLogs),ki=()=>ui(e=>e.setLiveMode),vi=()=>ui(e=>e.resourceHistory),Si=()=>ui(e=>e.addResourceDataPoint),_i=()=>ui(e=>e.hiddenContacts),Mi=()=>ui(e=>e.hideContact),Ci=()=>ui(e=>e.packetCacheState),Ti=()=>ui(e=>e.triggerDeepAnalysis),ji=()=>ui(e=>e.quickNeighbors),Ni=()=>ui(e=>e.cachedLocalHash),Li=()=>ui(e=>e.lastPacketTimestamp),Pi=()=>ui(e=>null!==e.stats&&e.packetCacheState.backgroundLoadComplete);function Ei({showLabel:e=!1,className:t}){const a=ui(e=>e.flashReceived),o=wi(),[i,l]=s.useState("idle");return s.useEffect(()=>{if(a<=0)return;const e=requestAnimationFrame(()=>l("received")),t=setTimeout(()=>l("idle"),300);return()=>{cancelAnimationFrame(e),clearTimeout(t)}},[a]),s.useEffect(()=>{if(o<=0)return;const e=requestAnimationFrame(()=>l("transmitted")),t=setTimeout(()=>l("idle"),300);return()=>{cancelAnimationFrame(e),clearTimeout(t)}},[o]),n.jsxs("span",{className:I("inline-flex items-center gap-2",t),children:[n.jsx("span",{className:I("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 Ii=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(()=>{jo.subscribe((e,t)=>{const s=Ii.getState();t&&!s.isComputing?s.setComputing(!0):!t&&e.size>0?s.setSparklines(e):!t&&s.isComputing&&s.setComputing(!1)})},0);const Ai=()=>Ii(e=>e.isComputing),Ri=[],Di=new Map;function Fi(e){return Ii(t=>{const s=t.sparklines.get(e);if(!s||0===s.length)return Ri;const n=Di.get(e);return n===s?n:(Di.set(e,s),s)})}const zi=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:Co(),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&&To.subscribe((e,t)=>{zi.getState().setTopology(e,t)});const Oi=()=>zi(e=>e.topology),$i=()=>zi(e=>e.topology.hubNodes),Bi=()=>zi(e=>e.topology.centrality),Wi=()=>zi(e=>e.topology.fullAffinity);let Hi=null,Ui=null,qi=null,Gi=null;const Ji=()=>zi(e=>(e.topology.hubNodes!==Ui&&(Ui=e.topology.hubNodes,Hi=new Set(e.topology.hubNodes)),Hi)),Yi=()=>zi(e=>e.topology.pathHealth),Vi=()=>zi(e=>e.topology.disambiguationStats),Xi=()=>zi(e=>e.topology.disambiguationStats.highCollisionPrefixes),Ki=()=>zi(e=>e.topology.disambiguationStats.totalPrefixes>0),Qi=()=>zi(e=>e.topology.discoveredNodes),Zi=()=>zi(e=>e.topology.viterbiStats),el=()=>zi(e=>(e.topology.discoveredNodes!==Gi&&(Gi=e.topology.discoveredNodes,qi=e.topology.discoveredNodes.filter(e=>e.isLikelyReal)),qi));function tl(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 sl(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 nl(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 al(e){return new Date(1e3*e).toLocaleString()}function ol(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 il(e){return`${(e/1e6).toFixed(3)} MHz`}function ll(e){return`${(e/1e3).toFixed(1)} kHz`}function rl(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 cl=[{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}],ul="pymc-controls-expanded";function dl(){var e,t,a,r;const{pathname:c}=o(),{stats:u,setMode:d,setDutyCycle:f,sendAdvert:p}=di(),m=Aa(),C=ui(e=>e.prefetchForRoute),T=Ci(),j=Ai(),N=zi(e=>e.isComputing),L=el(),[P,E]=s.useState(!1),[A,R]=s.useState(!0),[D,F]=s.useState(!1),z=s.useRef(null),O=s.useCallback(e=>{e!==c&&(z.current&&clearTimeout(z.current),z.current=setTimeout(()=>{C(e)},100))},[c,C]),$=s.useCallback(()=>{z.current&&(clearTimeout(z.current),z.current=null)},[]);s.useEffect(()=>{const e=localStorage.getItem(ul);null!==e&&queueMicrotask(()=>R("true"===e))},[]);const B=()=>{const e=!A;R(e),localStorage.setItem(ul,String(e))};s.useEffect(()=>{queueMicrotask(()=>E(!1))},[c]),s.useEffect(()=>(document.body.style.overflow=P?"hidden":"",()=>{document.body.style.overflow=""}),[P]);const W=null==u?void 0:u.noise_floor_dbm,H=(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()=>{F(!0),await p(),setTimeout(()=>F(!1),1e3)},G=()=>{d("forward"===H?"monitor":"forward")},J=()=>{f(!U)},Y=()=>{Oa(),window.location.href="/login"},V=T.isLoading||T.isTopologyLoading,X=V||j||N,K=T.loadProgress,Q=()=>{if(!X)return null;let e="Analyzing database";V&&K?e=`Loading ${K.loaded.toLocaleString()} packets`:j?e="Computing sparklines":N&&(e="Building topology");const t=(null==K?void 0:K.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:cl.map(e=>{const t=c===e.to;return n.jsxs(g,{to:e.to,onClick:()=>E(!1),onMouseEnter:()=>O(e.to),onMouseLeave:$,className:I("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:I("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: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:[n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(x,{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(w,{className:I("w-4 h-4 text-text-muted transition-transform duration-200",A?"rotate-0":"-rotate-90")})]}),n.jsx("div",{className:I("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:D,className:I("control-btn control-btn-primary w-full",D&&"opacity-70"),children:[n.jsx(b,{className:I("w-4 h-4",D&&"animate-pulse")}),n.jsx("span",{children:D?"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:I("control-toggle-status","forward"===H?"text-accent-success":"text-accent-secondary"),children:"forward"===H?"FWD":"MON"})]}),n.jsx("button",{onClick:G,className:I("control-btn w-full","forward"===H?"control-btn-success":"control-btn-warning"),children:"forward"===H?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:I("control-toggle-status",U?"text-accent-success":"text-text-muted"),children:U?"ON":"OFF"})]}),n.jsxs("button",{onClick:J,className:I("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:[tl(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!=W?`${W.toFixed(0)} dBm`:"—"})]})})}),n.jsxs("div",{className:"px-4 py-3 flex items-center justify-between border-t border-white/5",children:[n.jsx(Ei,{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(M,{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",children:[n.jsx("h1",{className:"sr-only",children:"pyMC Console"}),n.jsx(ra,{height:26,className:"block"})]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsxs("p",{className:"type-data-xs text-text-muted",children:["v",ia]}),n.jsx(Ei,{}),n.jsx("button",{onClick:()=>E(!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:I("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:()=>E(!1),"aria-hidden":"true"}),n.jsxs("aside",{className:I("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:"px-4 py-5 border-b border-white/5",children:[n.jsx("h1",{className:"sr-only",children:"pyMC Console"}),n.jsx(ra,{responsive:!0,className:"block"}),n.jsxs("p",{className:"type-data-xs text-text-muted mt-1.5",children:["v",ia]})]}),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:"px-5 py-6 border-b border-white/5",children:[n.jsx("h1",{className:"sr-only",children:"pyMC Console"}),n.jsx(ra,{responsive:!0,className:"block"}),n.jsxs("p",{className:"type-data-xs text-text-muted mt-1.5",children:["v",ia]})]}),Z(),Q(),ee(),te()]})]})}const hl=s.memo(function(){const{theme:e}=oa(),{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"})]})}),fl=20,pl=12,ml=s.createContext(null);function gl({children:e}){const[t,a]=s.useState({content:null,mouseX:0,mouseY:0,visible:!1}),o=s.useRef(null),[i,l]=s.useState({x:0,y:0}),r=s.useCallback((e,t,s)=>{a({content:e,mouseX:t,mouseY:s,visible:!0})},[]),c=s.useCallback(()=>{a(e=>({...e,visible:!1}))},[]),u=s.useCallback((e,t)=>{a(s=>s.visible?{...s,mouseX:e,mouseY:t}:s)},[]);s.useEffect(()=>{if(!t.visible||!o.current)return;const e=o.current.getBoundingClientRect(),{mouseX:s,mouseY:n}=t,a=window.innerWidth,i=window.innerHeight;let r,c;r=s+fl+e.width+pl>a?s-fl-e.width:s+fl,r=Math.max(pl,Math.min(r,a-e.width-pl)),c=n-fl-e.height{c.current&&(clearTimeout(c.current),c.current=null)},h=s.useCallback(t=>{d(),c.current=setTimeout(()=>{u.current=!0,o(e,t.clientX,t.clientY)},a)},[o,e,a]),f=s.useCallback(e=>{u.current&&l(e.clientX,e.clientY)},[l]),p=s.useCallback(()=>{d(),u.current=!1,i()},[i]),m=s.useCallback(()=>{if(d(),!r.current)return;const t=r.current.getBoundingClientRect();c.current=setTimeout(()=>{u.current=!0,o(e,t.left+t.width/2,t.top)},a)},[o,e,a]),g=s.useCallback(()=>{d(),u.current=!1,i()},[i]);return s.useEffect(()=>()=>{d(),u.current&&(u.current=!1,i())},[i]),s.useEffect(()=>{const e=()=>{u.current&&(d(),u.current=!1,i())};return document.addEventListener("click",e,!0),()=>document.removeEventListener("click",e,!0)},[i]),n.jsx("span",{ref:r,onMouseEnter:h,onMouseMove:f,onMouseLeave:p,onFocus:m,onBlur:g,className:"contents",children:t})}function xl({className:e=""}){return n.jsx("div",{className:`bg-white/5 animate-pulse rounded-lg ${e}`,"aria-hidden":"true"})}function wl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading dashboard",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(xl,{className:"h-8 w-48"}),n.jsx(xl,{className:"h-8 w-32"})]}),n.jsx(xl,{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(xl,{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(xl,{className:"h-44"},t))}),n.jsx(xl,{className:"h-96"})]})}function bl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading list",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(xl,{className:"h-8 w-40"}),n.jsx(xl,{className:"h-8 w-24"})]}),n.jsx(xl,{className:"h-20"}),n.jsxs("div",{className:"glass-card overflow-hidden",children:[n.jsx(xl,{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(xl,{className:"h-6"})},t))})]})]})}function kl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading map",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(xl,{className:"h-8 w-32"}),n.jsx(xl,{className:"h-6 w-48"})]}),n.jsx(xl,{className:"h-[500px]"}),n.jsx(xl,{className:"h-64"})]})}function vl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading charts",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx(xl,{className:"h-8 w-36"}),n.jsx(xl,{className:"h-8 w-40"})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[n.jsx(xl,{className:"h-80"}),n.jsx(xl,{className:"h-80"})]}),n.jsx(xl,{className:"h-64"})]})}function Sl(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading settings",children:[n.jsx(xl,{className:"h-8 w-32"}),n.jsxs("div",{className:"space-y-6",children:[n.jsx(xl,{className:"h-48"}),n.jsx(xl,{className:"h-64"}),n.jsx(xl,{className:"h-32"})]})]})}function _l(){return n.jsxs("div",{className:"section-gap","aria-label":"Loading system info",children:[n.jsx(xl,{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(xl,{className:"h-28"},t))}),n.jsx(xl,{className:"h-64"}),n.jsx(xl,{className:"h-48"})]})}const Ml=s.lazy(()=>E(()=>import("./Login-BF2bENkR.js"),__vite__mapDeps([0,1,2]))),Cl=s.lazy(()=>E(()=>import("./Dashboard-D_Tfd9l2.js"),__vite__mapDeps([3,1,2,4,5,6,7,8,9,10,11]))),Tl=s.lazy(()=>E(()=>import("./Packets-Cn-iDbXq.js"),__vite__mapDeps([12,1,2,6,7,8,5]))),jl=s.lazy(()=>E(()=>import("./Contacts-au5gCj-N.js").then(e=>e.C),__vite__mapDeps([13,1,2,5,8,7,14,15,16]))),Nl=s.lazy(()=>E(()=>import("./Statistics-BHA07L60.js"),__vite__mapDeps([17,1,2,18,4,9,5,14,11,16]))),Ll=s.lazy(()=>E(()=>import("./System-CMjUiDHD.js"),__vite__mapDeps([19,1,2,4,5,11]))),Pl=s.lazy(()=>E(()=>import("./Logs-l6s0ar29.js"),__vite__mapDeps([20,1,2,18,5]))),El=s.lazy(()=>E(()=>import("./Terminal-Vhl_DY50.js"),__vite__mapDeps([21,1,2,5]))),Il=s.lazy(()=>E(()=>import("./Configuration-Cq1_waCf.js"),__vite__mapDeps([22,1,2,8,15,5,11])));function Al({children:e}){const t=o();return Na()?n.jsx(n.Fragment,{children:e}):n.jsx(N,{to:"/login",state:{from:t},replace:!0})}class Rl 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 Dl(){const e=ui(e=>e.initializeApp),t=Na();return s.useEffect(()=>{if(!t)return;e();const s=setInterval(()=>{za()},3e4);return za(),Ba(),()=>clearInterval(s)},[e,t]),n.jsxs(gl,{children:[n.jsx(hl,{}),n.jsxs(T,{children:[n.jsx(j,{path:"/login",element:n.jsx(s.Suspense,{fallback:n.jsx("div",{className:"min-h-screen bg-bg-body"}),children:n.jsx(Ml,{})})}),n.jsx(j,{path:"/*",element:n.jsx(Al,{children:n.jsxs("div",{className:"flex h-screen overflow-hidden",children:[n.jsx(dl,{}),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(Rl,{children:n.jsxs(T,{children:[n.jsx(j,{path:"/",element:n.jsx(s.Suspense,{fallback:n.jsx(wl,{}),children:n.jsx(Cl,{})})}),n.jsx(j,{path:"/packets",element:n.jsx(s.Suspense,{fallback:n.jsx(bl,{}),children:n.jsx(Tl,{})})}),n.jsx(j,{path:"/contacts",element:n.jsx(s.Suspense,{fallback:n.jsx(kl,{}),children:n.jsx(jl,{})})}),n.jsx(j,{path:"/statistics",element:n.jsx(s.Suspense,{fallback:n.jsx(vl,{}),children:n.jsx(Nl,{})})}),n.jsx(j,{path:"/system",element:n.jsx(s.Suspense,{fallback:n.jsx(_l,{}),children:n.jsx(Ll,{})})}),n.jsx(j,{path:"/logs",element:n.jsx(s.Suspense,{fallback:n.jsx(bl,{}),children:n.jsx(Pl,{})})}),n.jsx(j,{path:"/terminal",element:n.jsx(s.Suspense,{fallback:n.jsx(bl,{}),children:n.jsx(El,{})})}),n.jsx(j,{path:"/configuration",element:n.jsx(s.Suspense,{fallback:n.jsx(Sl,{}),children:n.jsx(Il,{})})})]})})})})]})})})]})]})}const Fl=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")||Fl.apply(console,e)},L.createRoot(document.getElementById("root")).render(n.jsx(s.StrictMode,{children:n.jsx(aa,{children:n.jsx(P,{children:n.jsx(Dl,{})})})}));export{vi as $,Yi as A,Zi as B,rl as C,zo as D,Fi as E,Ai as F,Ci as G,Xi as H,di as I,Mi as J,$i as K,Bi as L,uo as M,sl as N,pa as O,ra as P,ma as Q,ua as R,Zn as S,yl as T,da as U,sa as V,Vi as W,Ki as X,el as Y,Oo as Z,$o as _,mi as a,Si as a0,Xa as a1,Bo as a2,gi as a3,yi as a4,bi as a5,ao as a6,Ho as a7,Ja as a8,Ka as a9,Ao as aA,Qa as aa,Za as ab,no as ac,oa as ad,D as ae,W as af,mo as ag,oo as ah,il as ai,ll as aj,ho as ak,fo as al,po as am,go as an,yo as ao,co as ap,io as aq,lo as ar,ro as as,Li as at,_o as au,Do as av,ha as aw,Oi as ax,Ti as ay,Ni as az,xi as b,wi as c,hi as d,Ro as e,ji as f,Sa as g,_i as h,Na as i,Va as j,fi as k,Ra as l,Pi as m,so as n,tl as o,ki as p,ca as q,nl as r,_a as s,ol as t,pi as u,Fo as v,Ji as w,Wi as x,Qi as y,al as z}; diff --git a/frontend/dist/assets/link-scoring-LdZ64cNF.js b/frontend/dist/assets/link-scoring-DacI-LFP.js similarity index 94% rename from frontend/dist/assets/link-scoring-LdZ64cNF.js rename to frontend/dist/assets/link-scoring-DacI-LFP.js index b9ec6223..4673879b 100644 --- a/frontend/dist/assets/link-scoring-LdZ64cNF.js +++ b/frontend/dist/assets/link-scoring-DacI-LFP.js @@ -1 +1 @@ -import{e as t,aw as e}from"./index-DY0XR9s0.js";function o(t){if(Array.isArray(t))return t;if("string"==typeof t&&t.startsWith("["))try{const e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}return[]}function n(n,r,s){const a=new Map;for(const e of r){const o=t(e);a.has(o)||a.set(o,e)}const c=new Map,i=new Map;for(const t of n){const n=t.route??t.route_type;if(!e(n))continue;const r=o(t.original_path);if(0===r.length)continue;const f=r.map(t=>t.toUpperCase());if(!t.transmitted&&f.length>=2){const t=f[f.length-2];if(t){const e=a.get(t);e&&i.set(e,(i.get(e)??0)+1)}}if(f.includes(s))for(const t of f){if(t===s)continue;const e=a.get(t);e&&c.set(e,(c.get(e)??0)+1)}}let f=0,u=0;for(const t of r)f=Math.max(f,c.get(t)??0),u=Math.max(u,i.get(t)??0);const h=new Map;let g=0,l=0,p=0;for(const t of r){const e=c.get(t)??0,o=i.get(t)??0,n=f>0?Math.round(e/f*100):0,r=u>0?Math.round(o/u*100):0,s=n+r;h.set(t,{hash:t,listenerCount:e,loudCount:o,listenerScore:n,loudScore:r,blendedScore:s}),g=Math.max(g,n),l=Math.max(l,r),p=Math.max(p,s)}return{scores:h,maxListenerScore:g,maxLoudScore:l,maxBlendedScore:p}}const r={YELLOW:"#FBBF24",GREEN:"#719872",RED:"#E12672",GRAY:"#505050"};export{r as L,n as c}; +import{e as t,aw as e}from"./index-Dp0UlTio.js";function o(t){if(Array.isArray(t))return t;if("string"==typeof t&&t.startsWith("["))try{const e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}return[]}function n(n,r,s){const a=new Map;for(const e of r){const o=t(e);a.has(o)||a.set(o,e)}const c=new Map,i=new Map;for(const t of n){const n=t.route??t.route_type;if(!e(n))continue;const r=o(t.original_path);if(0===r.length)continue;const f=r.map(t=>t.toUpperCase());if(!t.transmitted&&f.length>=2){const t=f[f.length-2];if(t){const e=a.get(t);e&&i.set(e,(i.get(e)??0)+1)}}if(f.includes(s))for(const t of f){if(t===s)continue;const e=a.get(t);e&&c.set(e,(c.get(e)??0)+1)}}let f=0,u=0;for(const t of r)f=Math.max(f,c.get(t)??0),u=Math.max(u,i.get(t)??0);const h=new Map;let g=0,l=0,p=0;for(const t of r){const e=c.get(t)??0,o=i.get(t)??0,n=f>0?Math.round(e/f*100):0,r=u>0?Math.round(o/u*100):0,s=n+r;h.set(t,{hash:t,listenerCount:e,loudCount:o,listenerScore:n,loudScore:r,blendedScore:s}),g=Math.max(g,n),l=Math.max(l,r),p=Math.max(p,s)}return{scores:h,maxListenerScore:g,maxLoudScore:l,maxBlendedScore:p}}const r={YELLOW:"#FBBF24",GREEN:"#719872",RED:"#E12672",GRAY:"#505050"};export{r as L,n as c}; diff --git a/frontend/dist/assets/recharts-BjCld2b0.js b/frontend/dist/assets/recharts-BU7auunF.js similarity index 99% rename from frontend/dist/assets/recharts-BjCld2b0.js rename to frontend/dist/assets/recharts-BU7auunF.js index 12977405..562db3bd 100644 --- a/frontend/dist/assets/recharts-BjCld2b0.js +++ b/frontend/dist/assets/recharts-BU7auunF.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-ClShp8p7.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}; +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-O8XH9yVn.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/usePolling-CQUaWSqs.js b/frontend/dist/assets/usePolling-UdPi_fKb.js similarity index 75% rename from frontend/dist/assets/usePolling-CQUaWSqs.js rename to frontend/dist/assets/usePolling-UdPi_fKb.js index aa2be29e..7ce65fd7 100644 --- a/frontend/dist/assets/usePolling-CQUaWSqs.js +++ b/frontend/dist/assets/usePolling-UdPi_fKb.js @@ -1 +1 @@ -import{r}from"./vendor-react-ClShp8p7.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-O8XH9yVn.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-BsFY5Gki.js b/frontend/dist/assets/useThemeColors-CD0TSU03.js similarity index 97% rename from frontend/dist/assets/useThemeColors-BsFY5Gki.js rename to frontend/dist/assets/useThemeColors-CD0TSU03.js index 83a9d6d8..e3b1d1fc 100644 --- a/frontend/dist/assets/useThemeColors-BsFY5Gki.js +++ b/frontend/dist/assets/useThemeColors-CD0TSU03.js @@ -1 +1 @@ -import{r as t}from"./vendor-react-ClShp8p7.js";function e(t){if(!t)return null;const e=t.match(/color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(e)return{r:Math.round(255*Math.min(1,Math.max(0,parseFloat(e[1])))),g:Math.round(255*Math.min(1,Math.max(0,parseFloat(e[2])))),b:Math.round(255*Math.min(1,Math.max(0,parseFloat(e[3]))))};if(t.startsWith("#")){const e=t.replace("#","");if(3===e.length)return{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16)};if(e.length>=6)return{r:parseInt(e.slice(0,2),16),g:parseInt(e.slice(2,4),16),b:parseInt(e.slice(4,6),16)}}const r=t.match(/rgba?\(([\d.]+),?\s*([\d.]+),?\s*([\d.]+)/);return r?{r:Math.round(parseFloat(r[1])),g:Math.round(parseFloat(r[2])),b:Math.round(parseFloat(r[3]))}:null}function r(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 e=t.match(/color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(e){const t=Math.round(255*Math.min(1,Math.max(0,parseFloat(e[1])))),r=Math.round(255*Math.min(1,Math.max(0,parseFloat(e[2])))),o=Math.round(255*Math.min(1,Math.max(0,parseFloat(e[3]))));return`#${t.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`}const r=t.match(/rgba?\(([\d.]+),?\s*([\d.]+),?\s*([\d.]+)/);if(r){const t=Math.round(parseFloat(r[1])),e=Math.round(parseFloat(r[2])),o=Math.round(parseFloat(r[3]));return`#${t.toString(16).padStart(2,"0")}${e.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`}return t}(r(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"},i={excellent:"#719872",good:"#6FBCBD",fair:"#DFBC72",poor:"#BE7572",critical:"#E12672",unknown:"#616161"},c={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[e,o]=t.useState(a);return t.useEffect(()=>{const t=()=>{const t={chart1:r("--chart-1")||a.chart1,chart2:r("--chart-2")||a.chart2,chart3:r("--chart-3")||a.chart3,chart4:r("--chart-4")||a.chart4,chart5:r("--chart-5")||a.chart5,chart6:r("--chart-6")||a.chart6,chart7:r("--chart-7")||a.chart7,chart8:r("--chart-8")||a.chart8};o(t)};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function u(){const[e,o]=t.useState(n);return t.useEffect(()=>{const t=()=>{o({received:r("--metric-received")||n.received,forwarded:r("--metric-forwarded")||n.forwarded,transmitted:r("--metric-transmitted")||n.transmitted,dropped:r("--metric-dropped")||n.dropped,neutral:r("--metric-neutral")||n.neutral})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function d(){const[e,o]=t.useState(c);return t.useEffect(()=>{const t=()=>{o({primary:r("--text-primary")||c.primary,secondary:r("--text-secondary")||c.secondary,muted:r("--text-muted")||c.muted})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function h(){const[e,o]=t.useState(i);return t.useEffect(()=>{const t=()=>{o({excellent:r("--signal-excellent")||i.excellent,good:r("--signal-good")||i.good,fair:r("--signal-fair")||i.fair,poor:r("--signal-poor")||i.poor,critical:r("--signal-critical")||i.critical,unknown:r("--signal-unknown")||i.unknown})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function m(){const[e,o]=t.useState(s);return t.useEffect(()=>{const t=()=>{o({nodeFill:r("--map-node-fill")||s.nodeFill,nodeStroke:r("--map-node-stroke")||s.nodeStroke,hubColor:r("--map-hub-color")||s.hubColor,localColor:r("--map-local-color")||s.localColor,neighborColor:r("--map-neighbor-color")||s.neighborColor,mobileColor:r("--map-mobile-color")||s.mobileColor,roomColor:r("--map-room-color")||s.roomColor,ghostColor:r("--map-ghost-color")||s.ghostColor})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function p(){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 f={rest:"#4B4B4B",restBright:"#616161",restDim:"#3F3F3F",hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:"#8A8A8A",hoverNeighbor:"#FBBF24",highlight:"#FFD700"};function g(){return"undefined"==typeof window?f:{rest:o("--map-edge-rest")||f.rest,restBright:o("--map-edge-rest-bright")||f.restBright,restDim:o("--map-edge-rest-dim")||f.restDim,hoverDirect:o("--map-edge-hover-direct")||f.hoverDirect,hoverLoop:o("--map-edge-hover-loop")||f.hoverLoop,hoverStandard:o("--map-edge-hover-standard")||f.hoverStandard,hoverNeighbor:o("--map-edge-hover-neighbor")||f.hoverNeighbor,highlight:o("--map-edge-highlight")||f.highlight}}const b={grid:"rgba(255, 255, 255, 0.06)",axisTick:"rgba(255, 255, 255, 0.4)",cursor:"rgba(255, 255, 255, 0.2)"};function F(){const[e,o]=t.useState(b);return t.useEffect(()=>{const t=()=>{o("undefined"==typeof window?b:{grid:r("--chart-grid")||b.grid,axisTick:r("--chart-axis-tick")||b.axisTick,cursor:r("--chart-cursor")||b.cursor})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function C(t,e){return r(`--palette-${t}-${e}`)||""}function M(){const t=[];for(let e=0;e<24;e++){const r=e/23,o=1-r,a=C("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,i=parseInt(a.slice(3,5),16)||0,c=parseInt(a.slice(5,7),16)||0,s=Math.round(80+130*r);t.push([n,i,c,s])}return t}function v(){const t=r("--signal-excellent")||i.excellent,e=r("--signal-good")||i.good,o=r("--signal-fair")||i.fair,a=r("--signal-poor")||i.poor,n=r("--signal-critical")||i.critical,c=[];for(let r=0;r<24;r++){let i;i=r<5?t:r<10?e:r<15?o:r<20?a:n,c.push(i)}return c}function B(){const[e,r]=t.useState(()=>v());return t.useEffect(()=>{const t=()=>{r(v())};let e=requestAnimationFrame(()=>{e=requestAnimationFrame(t)});const o=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){requestAnimationFrame(()=>{requestAnimationFrame(t)});break}});return o.observe(document.documentElement,{attributes:!0}),()=>{cancelAnimationFrame(e),o.disconnect()}},[]),e}function S(t){const e=(Math.max(-12,Math.min(12,t))- -12)/24;return Math.round(23*(1-e))}export{F as a,h as b,d as c,B as d,l as e,g as f,p as g,m as h,M as i,e as p,S as s,u}; +import{r as t}from"./vendor-react-O8XH9yVn.js";function e(t){if(!t)return null;const e=t.match(/color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(e)return{r:Math.round(255*Math.min(1,Math.max(0,parseFloat(e[1])))),g:Math.round(255*Math.min(1,Math.max(0,parseFloat(e[2])))),b:Math.round(255*Math.min(1,Math.max(0,parseFloat(e[3]))))};if(t.startsWith("#")){const e=t.replace("#","");if(3===e.length)return{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16)};if(e.length>=6)return{r:parseInt(e.slice(0,2),16),g:parseInt(e.slice(2,4),16),b:parseInt(e.slice(4,6),16)}}const r=t.match(/rgba?\(([\d.]+),?\s*([\d.]+),?\s*([\d.]+)/);return r?{r:Math.round(parseFloat(r[1])),g:Math.round(parseFloat(r[2])),b:Math.round(parseFloat(r[3]))}:null}function r(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 e=t.match(/color\(display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/);if(e){const t=Math.round(255*Math.min(1,Math.max(0,parseFloat(e[1])))),r=Math.round(255*Math.min(1,Math.max(0,parseFloat(e[2])))),o=Math.round(255*Math.min(1,Math.max(0,parseFloat(e[3]))));return`#${t.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`}const r=t.match(/rgba?\(([\d.]+),?\s*([\d.]+),?\s*([\d.]+)/);if(r){const t=Math.round(parseFloat(r[1])),e=Math.round(parseFloat(r[2])),o=Math.round(parseFloat(r[3]));return`#${t.toString(16).padStart(2,"0")}${e.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}`}return t}(r(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"},i={excellent:"#00FF00",good:"#8CE619",fair:"#FFD900",poor:"#FF8C26",critical:"#FF3333",unknown:"#616161"},c={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[e,o]=t.useState(a);return t.useEffect(()=>{const t=()=>{const t={chart1:r("--chart-1")||a.chart1,chart2:r("--chart-2")||a.chart2,chart3:r("--chart-3")||a.chart3,chart4:r("--chart-4")||a.chart4,chart5:r("--chart-5")||a.chart5,chart6:r("--chart-6")||a.chart6,chart7:r("--chart-7")||a.chart7,chart8:r("--chart-8")||a.chart8};o(t)};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function u(){const[e,o]=t.useState(n);return t.useEffect(()=>{const t=()=>{o({received:r("--metric-received")||n.received,forwarded:r("--metric-forwarded")||n.forwarded,transmitted:r("--metric-transmitted")||n.transmitted,dropped:r("--metric-dropped")||n.dropped,neutral:r("--metric-neutral")||n.neutral})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function d(){const[e,o]=t.useState(c);return t.useEffect(()=>{const t=()=>{o({primary:r("--text-primary")||c.primary,secondary:r("--text-secondary")||c.secondary,muted:r("--text-muted")||c.muted})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function h(){const[e,o]=t.useState(i);return t.useEffect(()=>{const t=()=>{o({excellent:r("--signal-excellent")||i.excellent,good:r("--signal-good")||i.good,fair:r("--signal-fair")||i.fair,poor:r("--signal-poor")||i.poor,critical:r("--signal-critical")||i.critical,unknown:r("--signal-unknown")||i.unknown})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function m(){const[e,o]=t.useState(s);return t.useEffect(()=>{const t=()=>{o({nodeFill:r("--map-node-fill")||s.nodeFill,nodeStroke:r("--map-node-stroke")||s.nodeStroke,hubColor:r("--map-hub-color")||s.hubColor,localColor:r("--map-local-color")||s.localColor,neighborColor:r("--map-neighbor-color")||s.neighborColor,mobileColor:r("--map-mobile-color")||s.mobileColor,roomColor:r("--map-room-color")||s.roomColor,ghostColor:r("--map-ghost-color")||s.ghostColor})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function p(){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 f={rest:"#4B4B4B",restBright:"#616161",restDim:"#3F3F3F",hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:"#8A8A8A",hoverNeighbor:"#FBBF24",highlight:"#FFD700"};function g(){return"undefined"==typeof window?f:{rest:o("--map-edge-rest")||f.rest,restBright:o("--map-edge-rest-bright")||f.restBright,restDim:o("--map-edge-rest-dim")||f.restDim,hoverDirect:o("--map-edge-hover-direct")||f.hoverDirect,hoverLoop:o("--map-edge-hover-loop")||f.hoverLoop,hoverStandard:o("--map-edge-hover-standard")||f.hoverStandard,hoverNeighbor:o("--map-edge-hover-neighbor")||f.hoverNeighbor,highlight:o("--map-edge-highlight")||f.highlight}}const b={grid:"rgba(255, 255, 255, 0.06)",axisTick:"rgba(255, 255, 255, 0.4)",cursor:"rgba(255, 255, 255, 0.2)"};function F(){const[e,o]=t.useState(b);return t.useEffect(()=>{const t=()=>{o("undefined"==typeof window?b:{grid:r("--chart-grid")||b.grid,axisTick:r("--chart-axis-tick")||b.axisTick,cursor:r("--chart-cursor")||b.cursor})};t();const e=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){setTimeout(t,50);break}});return e.observe(document.documentElement,{attributes:!0}),()=>{e.disconnect()}},[]),e}function C(t,e){return r(`--palette-${t}-${e}`)||""}function M(){const t=[];for(let e=0;e<24;e++){const r=e/23,o=1-r,a=C("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,i=parseInt(a.slice(3,5),16)||0,c=parseInt(a.slice(5,7),16)||0,s=Math.round(80+130*r);t.push([n,i,c,s])}return t}function v(){const t=r("--signal-excellent")||i.excellent,e=r("--signal-good")||i.good,o=r("--signal-fair")||i.fair,a=r("--signal-poor")||i.poor,n=r("--signal-critical")||i.critical,c=[];for(let r=0;r<24;r++){let i;i=r<5?t:r<10?e:r<15?o:r<20?a:n,c.push(i)}return c}function B(){const[e,r]=t.useState(()=>v());return t.useEffect(()=>{const t=()=>{r(v())};let e=requestAnimationFrame(()=>{e=requestAnimationFrame(t)});const o=new MutationObserver(e=>{for(const r of e)if("data-theme"===r.attributeName){requestAnimationFrame(()=>{requestAnimationFrame(t)});break}});return o.observe(document.documentElement,{attributes:!0}),()=>{cancelAnimationFrame(e),o.disconnect()}},[]),e}function S(t){const e=(Math.max(-12,Math.min(12,t))- -12)/24;return Math.round(23*(1-e))}export{F as a,h as b,d as c,B as d,l as e,g as f,p as g,m as h,M as i,e as p,S as s,u}; diff --git a/frontend/dist/assets/vendor-react-ClShp8p7.js b/frontend/dist/assets/vendor-react-O8XH9yVn.js similarity index 99% rename from frontend/dist/assets/vendor-react-ClShp8p7.js rename to frontend/dist/assets/vendor-react-O8XH9yVn.js index e54f1278..07e8e153 100644 --- a/frontend/dist/assets/vendor-react-ClShp8p7.js +++ b/frontend/dist/assets/vendor-react-O8XH9yVn.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-WoOfkQwm.js";import{g as t,_ as n}from"./deckgl-DTsmDcfs.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