Files
vpp-maglev/cmd/frontend/web/dist/assets/index-DjixLt11.js
Pim van Pelt 35643fd774 Rename maglev-frontend → maglevd-frontend; v0.9.1; API RX/TX pulse
Rename the web dashboard binary to maglevd-frontend and move it to
/usr/sbin (it's a daemon and belongs with maglevd). The systemd unit
name stays vpp-maglev-frontend.service since that prefix is the
package name. Manpage, README, user-guide, and debian packaging all
updated in lockstep; bump to 0.9.1 for the first real release.

All frontend env vars are now prefixed MAGLEV_FRONTEND_ so a single
/etc/default/vpp-maglev can be shared with maglevd without collisions.
Every flag has an env equivalent for Docker use. MAGLEV_FRONTEND_USER
and MAGLEV_FRONTEND_PASSWORD still gate the /admin surface.

VPPInfoPanel now pulses "API: ↑↓" indicators in the zippy title
whenever a vpp-api-send / vpp-api-recv log event arrives on the SSE
stream for the scoped maglevd — 250ms blue flash, re-triggerable,
with the two arrows tightly kerned via negative letter-spacing.
2026-04-13 00:13:52 +02:00

2 lines
36 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const l of s)if(l.type==="childList")for(const i of l.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const l={};return s.integrity&&(l.integrity=s.integrity),s.referrerPolicy&&(l.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?l.credentials="include":s.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function r(s){if(s.ep)return;s.ep=!0;const l=n(s);fetch(s.href,l)}})();const at=!1,ct=(e,t)=>e===t,H=Symbol("solid-proxy"),Ae=Symbol("solid-track"),ce={equals:ct};let We=Ke;const V=1,ue=2,Fe={owned:null,cleanups:null,context:null,owner:null};var S=null;let xe=null,ut=null,_=null,P=null,B=null,ve=0;function te(e,t){const n=_,r=S,s=e.length===0,l=t===void 0?r:t,i=s?Fe:{owned:null,cleanups:null,context:l?l.context:null,owner:l},o=s?e:()=>e(()=>R(()=>re(i)));S=i,_=null;try{return K(o,!0)}finally{_=n,S=r}}function A(e,t){t=t?Object.assign({},ce,t):ce;const n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},r=s=>(typeof s=="function"&&(s=s(n.value)),Ge(n,s));return[He.bind(n),r]}function C(e,t,n){const r=Pe(e,t,!1,V);le(r)}function W(e,t,n){We=pt;const r=Pe(e,t,!1,V);(!n||!n.render)&&(r.user=!0),B?B.push(r):le(r)}function F(e,t,n){n=n?Object.assign({},ce,n):ce;const r=Pe(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,le(r),He.bind(r)}function ft(e){return K(e,!1)}function R(e){if(_===null)return e();const t=_;_=null;try{return e()}finally{_=t}}function dt(e,t,n){const r=Array.isArray(e);let s,l=n&&n.defer;return i=>{let o;if(r){o=Array(e.length);for(let c=0;c<e.length;c++)o[c]=e[c]()}else o=e();if(l)return l=!1,i;const a=R(()=>t(o,s,i));return s=o,a}}function gt(e){W(()=>R(e))}function G(e){return S===null||(S.cleanups===null?S.cleanups=[e]:S.cleanups.push(e)),e}function Ce(){return _}function ht(){return S}function bt(e,t){const n=S,r=_;S=e,_=null;try{return K(t,!0)}catch(s){Te(s)}finally{S=n,_=r}}function He(){if(this.sources&&this.state)if(this.state===V)le(this);else{const e=P;P=null,K(()=>de(this),!1),P=e}if(_){const e=this.observers?this.observers.length:0;_.sources?(_.sources.push(this),_.sourceSlots.push(e)):(_.sources=[this],_.sourceSlots=[e]),this.observers?(this.observers.push(_),this.observerSlots.push(_.sources.length-1)):(this.observers=[_],this.observerSlots=[_.sources.length-1])}return this.value}function Ge(e,t,n){let r=e.value;return(!e.comparator||!e.comparator(r,t))&&(e.value=t,e.observers&&e.observers.length&&K(()=>{for(let s=0;s<e.observers.length;s+=1){const l=e.observers[s],i=xe&&xe.running;i&&xe.disposed.has(l),(i?!l.tState:!l.state)&&(l.pure?P.push(l):B.push(l),l.observers&&qe(l)),i||(l.state=V)}if(P.length>1e6)throw P=[],new Error},!1)),t}function le(e){if(!e.fn)return;re(e);const t=ve;mt(e,e.value,t)}function mt(e,t,n){let r;const s=S,l=_;_=S=e;try{r=e.fn(t)}catch(i){return e.pure&&(e.state=V,e.owned&&e.owned.forEach(re),e.owned=null),e.updatedAt=n+1,Te(i)}finally{_=l,S=s}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?Ge(e,r):e.value=r,e.updatedAt=n)}function Pe(e,t,n,r=V,s){const l={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:S,context:S?S.context:null,pure:n};return S===null||S!==Fe&&(S.owned?S.owned.push(l):S.owned=[l]),l}function fe(e){if(e.state===0)return;if(e.state===ue)return de(e);if(e.suspense&&R(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<ve);)e.state&&t.push(e);for(let n=t.length-1;n>=0;n--)if(e=t[n],e.state===V)le(e);else if(e.state===ue){const r=P;P=null,K(()=>de(e,t[0]),!1),P=r}}function K(e,t){if(P)return e();let n=!1;t||(P=[]),B?n=!0:B=[],ve++;try{const r=e();return $t(n),r}catch(r){n||(B=null),P=null,Te(r)}}function $t(e){if(P&&(Ke(P),P=null),e)return;const t=B;B=null,t.length&&K(()=>We(t),!1)}function Ke(e){for(let t=0;t<e.length;t++)fe(e[t])}function pt(e){let t,n=0;for(t=0;t<e.length;t++){const r=e[t];r.user?e[n++]=r:fe(r)}for(t=0;t<n;t++)fe(e[t])}function de(e,t){e.state=0;for(let n=0;n<e.sources.length;n+=1){const r=e.sources[n];if(r.sources){const s=r.state;s===V?r!==t&&(!r.updatedAt||r.updatedAt<ve)&&fe(r):s===ue&&de(r,t)}}}function qe(e){for(let t=0;t<e.observers.length;t+=1){const n=e.observers[t];n.state||(n.state=ue,n.pure?P.push(n):B.push(n),n.observers&&qe(n))}}function re(e){let t;if(e.sources)for(;e.sources.length;){const n=e.sources.pop(),r=e.sourceSlots.pop(),s=n.observers;if(s&&s.length){const l=s.pop(),i=n.observerSlots.pop();r<s.length&&(l.sourceSlots[i]=r,s[r]=l,n.observerSlots[r]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)re(e.tOwned[t]);delete e.tOwned}if(e.owned){for(t=e.owned.length-1;t>=0;t--)re(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}e.state=0}function vt(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function Te(e,t=S){throw vt(e)}const wt=Symbol("fallback");function Me(e){for(let t=0;t<e.length;t++)e[t]()}function yt(e,t,n={}){let r=[],s=[],l=[],i=0,o=t.length>1?[]:null;return G(()=>Me(l)),()=>{let a=e()||[],c=a.length,f,u;return a[Ae],R(()=>{let g,v,w,E,O,m,$,y,k;if(c===0)i!==0&&(Me(l),l=[],r=[],s=[],i=0,o&&(o=[])),n.fallback&&(r=[wt],s[0]=te(x=>(l[0]=x,n.fallback())),i=1);else if(i===0){for(s=new Array(c),u=0;u<c;u++)r[u]=a[u],s[u]=te(p);i=c}else{for(w=new Array(c),E=new Array(c),o&&(O=new Array(c)),m=0,$=Math.min(i,c);m<$&&r[m]===a[m];m++);for($=i-1,y=c-1;$>=m&&y>=m&&r[$]===a[y];$--,y--)w[y]=s[$],E[y]=l[$],o&&(O[y]=o[$]);for(g=new Map,v=new Array(y+1),u=y;u>=m;u--)k=a[u],f=g.get(k),v[u]=f===void 0?-1:f,g.set(k,u);for(f=m;f<=$;f++)k=r[f],u=g.get(k),u!==void 0&&u!==-1?(w[u]=s[f],E[u]=l[f],o&&(O[u]=o[f]),u=v[u],g.set(k,u)):l[f]();for(u=m;u<c;u++)u in w?(s[u]=w[u],l[u]=E[u],o&&(o[u]=O[u],o[u](u))):s[u]=te(p);s=s.slice(0,i=c),r=a.slice(0)}return s});function p(g){if(l[u]=g,o){const[v,w]=A(u);return o[u]=w,t(a[u],v)}return t(a[u])}}}function h(e,t){return R(()=>e(t||{}))}const _t=e=>`Stale read from <${e}>.`;function J(e){const t="fallback"in e&&{fallback:()=>e.fallback};return F(yt(()=>e.each,e.children,t||void 0))}function N(e){const t=e.keyed,n=F(()=>e.when,void 0,void 0),r=t?n:F(n,void 0,{equals:(s,l)=>!s==!l});return F(()=>{const s=r();if(s){const l=e.children;return typeof l=="function"&&l.length>0?R(()=>l(t?s:()=>{if(!R(r))throw _t("Show");return n()})):l}return e.fallback},void 0,void 0)}const I=e=>F(()=>e());function St(e,t,n){let r=n.length,s=t.length,l=r,i=0,o=0,a=t[s-1].nextSibling,c=null;for(;i<s||o<l;){if(t[i]===n[o]){i++,o++;continue}for(;t[s-1]===n[l-1];)s--,l--;if(s===i){const f=l<r?o?n[o-1].nextSibling:n[l-o]:a;for(;o<l;)e.insertBefore(n[o++],f)}else if(l===o)for(;i<s;)(!c||!c.has(t[i]))&&t[i].remove(),i++;else if(t[i]===n[l-1]&&n[o]===t[s-1]){const f=t[--s].nextSibling;e.insertBefore(n[o++],t[i++].nextSibling),e.insertBefore(n[--l],f),t[s]=n[l]}else{if(!c){c=new Map;let u=o;for(;u<l;)c.set(n[u],u++)}const f=c.get(t[i]);if(f!=null)if(o<f&&f<l){let u=i,p=1,g;for(;++u<s&&u<l&&!((g=c.get(t[u]))==null||g!==f+p);)p++;if(p>f-o){const v=t[i];for(;o<f;)e.insertBefore(n[o++],v)}else e.replaceChild(n[o++],t[i++])}else i++;else t[i++].remove()}}}const Be="_$DX_DELEGATE";function kt(e,t,n,r={}){let s;return te(l=>{s=l,t===document?e():d(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{s(),t.textContent=""}}function b(e,t,n,r){let s;const l=()=>{const o=document.createElement("template");return o.innerHTML=e,o.content.firstChild},i=()=>(s||(s=l())).cloneNode(!0);return i.cloneNode=i,i}function we(e,t=window.document){const n=t[Be]||(t[Be]=new Set);for(let r=0,s=e.length;r<s;r++){const l=e[r];n.has(l)||(n.add(l),t.addEventListener(l,Ct))}}function L(e,t,n){n==null?e.removeAttribute(t):e.setAttribute(t,n)}function xt(e,t){t==null?e.removeAttribute("class"):e.className=t}function At(e,t,n,r){Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n}function ye(e,t,n){return R(()=>e(t,n))}function d(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return ge(e,t,r,n);C(s=>ge(e,t(),s,n),r)}function Ct(e){let t=e.target;const n=`$$${e.type}`,r=e.target,s=e.currentTarget,l=a=>Object.defineProperty(e,"target",{configurable:!0,value:a}),i=()=>{const a=t[n];if(a&&!t.disabled){const c=t[`${n}Data`];if(c!==void 0?a.call(t,c,e):a.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&l(t.host),!0},o=()=>{for(;i()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),e.composedPath){const a=e.composedPath();l(a[0]);for(let c=0;c<a.length-2&&(t=a[c],!!i());c++){if(t._$host){t=t._$host,o();break}if(t.parentNode===s)break}}else o();l(r)}function ge(e,t,n,r,s){for(;typeof n=="function";)n=n();if(t===n)return n;const l=typeof t,i=r!==void 0;if(e=i&&n[0]&&n[0].parentNode||e,l==="string"||l==="number"){if(l==="number"&&(t=t.toString(),t===n))return n;if(i){let o=n[0];o&&o.nodeType===3?o.data!==t&&(o.data=t):o=document.createTextNode(t),n=q(e,n,r,o)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||l==="boolean")n=q(e,n,r);else{if(l==="function")return C(()=>{let o=t();for(;typeof o=="function";)o=o();n=ge(e,o,n,r)}),()=>n;if(Array.isArray(t)){const o=[],a=n&&Array.isArray(n);if(Ee(o,t,n,s))return C(()=>n=ge(e,o,n,r,!0)),()=>n;if(o.length===0){if(n=q(e,n,r),i)return n}else a?n.length===0?Re(e,o,r):St(e,n,o):(n&&q(e),Re(e,o));n=o}else if(t.nodeType){if(Array.isArray(n)){if(i)return n=q(e,n,r,t);q(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function Ee(e,t,n,r){let s=!1;for(let l=0,i=t.length;l<i;l++){let o=t[l],a=n&&n[e.length],c;if(!(o==null||o===!0||o===!1))if((c=typeof o)=="object"&&o.nodeType)e.push(o);else if(Array.isArray(o))s=Ee(e,o,a)||s;else if(c==="function")if(r){for(;typeof o=="function";)o=o();s=Ee(e,Array.isArray(o)?o:[o],Array.isArray(a)?a:[a])||s}else e.push(o),s=!0;else{const f=String(o);a&&a.nodeType===3&&a.data===f?e.push(a):e.push(document.createTextNode(f))}}return s}function Re(e,t,n=null){for(let r=0,s=t.length;r<s;r++)e.insertBefore(t[r],n)}function q(e,t,n,r){if(n===void 0)return e.textContent="";const s=r||document.createTextNode("");if(t.length){let l=!1;for(let i=t.length-1;i>=0;i--){const o=t[i];if(s!==o){const a=o.parentNode===e;!l&&!i?a?e.replaceChild(s,o):e.insertBefore(s,n):a&&o.remove()}else l=!0}}else e.insertBefore(s,n);return[s]}const Et="http://www.w3.org/2000/svg";function Pt(e,t=!1,n=void 0){return t?document.createElementNS(Et,e):document.createElement(e,{is:n})}function Tt(e){const{useShadow:t}=e,n=document.createTextNode(""),r=()=>e.mount||document.body,s=ht();let l;return W(()=>{l||(l=bt(s,()=>F(()=>e.children)));const i=r();if(i instanceof HTMLHeadElement){const[o,a]=A(!1),c=()=>a(!0);te(f=>d(i,()=>o()?f():l(),null)),G(c)}else{const o=Pt(e.isSVG?"g":"div",e.isSVG),a=t&&o.attachShadow?o.attachShadow({mode:"open"}):o;Object.defineProperty(o,"_$host",{get(){return n.parentNode},configurable:!0}),d(a,l),i.appendChild(o),e.ref&&e.ref(o),G(()=>i.removeChild(o))}},void 0,{render:!0}),n}async function Ye(e){const t=await fetch(e,{credentials:"same-origin"});if(!t.ok)throw new Error(`${e}: ${t.status} ${t.statusText}`);return await t.json()}function Je(){return Ye("/view/api/state")}function Ot(){return Ye("/view/api/version")}const he=Symbol("store-raw"),Y=Symbol("store-node"),M=Symbol("store-has"),Xe=Symbol("store-self");function ze(e){let t=e[H];if(!t&&(Object.defineProperty(e,H,{value:t=new Proxy(e,It)}),!Array.isArray(e))){const n=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let s=0,l=n.length;s<l;s++){const i=n[s];r[i].get&&Object.defineProperty(e,i,{enumerable:r[i].enumerable,get:r[i].get.bind(t)})}}return t}function X(e){let t;return e!=null&&typeof e=="object"&&(e[H]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function z(e,t=new Set){let n,r,s,l;if(n=e!=null&&e[he])return n;if(!X(e)||t.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):t.add(e);for(let i=0,o=e.length;i<o;i++)s=e[i],(r=z(s,t))!==s&&(e[i]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):t.add(e);const i=Object.keys(e),o=Object.getOwnPropertyDescriptors(e);for(let a=0,c=i.length;a<c;a++)l=i[a],!o[l].get&&(s=e[l],(r=z(s,t))!==s&&(e[l]=r))}return e}function be(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function se(e,t,n){if(e[t])return e[t];const[r,s]=A(n,{equals:!1,internal:!0});return r.$=s,e[t]=r}function Nt(e,t){const n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===H||t===Y||(delete n.value,delete n.writable,n.get=()=>e[H][t]),n}function Qe(e){Ce()&&se(be(e,Y),Xe)()}function Lt(e){return Qe(e),Reflect.ownKeys(e)}const It={get(e,t,n){if(t===he)return e;if(t===H)return n;if(t===Ae)return Qe(e),n;const r=be(e,Y),s=r[t];let l=s?s():e[t];if(t===Y||t===M||t==="__proto__")return l;if(!s){const i=Object.getOwnPropertyDescriptor(e,t);Ce()&&(typeof l!="function"||e.hasOwnProperty(t))&&!(i&&i.get)&&(l=se(r,t,l)())}return X(l)?ze(l):l},has(e,t){return t===he||t===H||t===Ae||t===Y||t===M||t==="__proto__"?!0:(Ce()&&se(be(e,M),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:Lt,getOwnPropertyDescriptor:Nt};function Q(e,t,n,r=!1){if(!r&&e[t]===n)return;const s=e[t],l=e.length;n===void 0?(delete e[t],e[M]&&e[M][t]&&s!==void 0&&e[M][t].$()):(e[t]=n,e[M]&&e[M][t]&&s===void 0&&e[M][t].$());let i=be(e,Y),o;if((o=se(i,t,s))&&o.$(()=>n),Array.isArray(e)&&e.length!==l){for(let a=e.length;a<l;a++)(o=i[a])&&o.$();(o=se(i,"length",l))&&o.$(e.length)}(o=i[Xe])&&o.$()}function Ze(e,t){const n=Object.keys(t);for(let r=0;r<n.length;r+=1){const s=n[r];Q(e,s,t[s])}}function jt(e,t){if(typeof t=="function"&&(t=t(e)),t=z(t),Array.isArray(t)){if(e===t)return;let n=0,r=t.length;for(;n<r;n++){const s=t[n];e[n]!==s&&Q(e,n,s)}Q(e,"length",r)}else Ze(e,t)}function ee(e,t,n=[]){let r,s=e;if(t.length>1){r=t.shift();const i=typeof r,o=Array.isArray(e);if(Array.isArray(r)){for(let a=0;a<r.length;a++)ee(e,[r[a]].concat(t),n);return}else if(o&&i==="function"){for(let a=0;a<e.length;a++)r(e[a],a)&&ee(e,[a].concat(t),n);return}else if(o&&i==="object"){const{from:a=0,to:c=e.length-1,by:f=1}=r;for(let u=a;u<=c;u+=f)ee(e,[u].concat(t),n);return}else if(t.length>1){ee(e[r],t,[r].concat(n));return}s=e[r],n=[r].concat(n)}let l=t[0];typeof l=="function"&&(l=l(s,n),l===s)||r===void 0&&l==null||(l=z(l),r===void 0||X(s)&&X(l)&&!Array.isArray(l)?Ze(s,l):Q(e,r,l))}function Dt(...[e,t]){const n=z(e||{}),r=Array.isArray(n),s=ze(n);function l(...i){ft(()=>{r&&i.length===1?jt(n,i[0]):ee(n,i)})}return[s,l]}const me=new WeakMap,et={get(e,t){if(t===he)return e;const n=e[t];let r;return X(n)?me.get(n)||(me.set(n,r=new Proxy(n,et)),r):n},set(e,t,n){return Q(e,t,z(n)),!0},deleteProperty(e,t){return Q(e,t,void 0,!0),!0}};function _e(e){return t=>{if(X(t)){let n;(n=me.get(t))||me.set(t,n=new Proxy(t,et)),e(n)}return t}}const[Mt,Bt]=A(0);setInterval(()=>Bt(e=>e+1),5e3);function Oe(e){const t={};for(const n of e.backends)t[n.name]=n.state;for(const n of e.frontends){let r=0;for(let a=0;a<n.pools.length;a++){let c=!1;for(const f of n.pools[a].backends)if(t[f.name]==="up"&&f.weight>0){c=!0;break}if(c){r=a;break}}let s=!1,l=!1,i=!0;const o=new Set;for(let a=0;a<n.pools.length;a++)for(const c of n.pools[a].backends){const f=t[c.name];c.effective_weight=f==="up"&&a===r?c.weight:0,c.effective_weight>0&&(s=!0),o.has(c.name)||(o.add(c.name),l=!0,f!=="unknown"&&(i=!1))}!l||i?n.state="unknown":s?n.state="up":n.state="down"}}const[$e,ie]=Dt({byName:{}});function tt(e){const t={};for(const n of e)Oe(n),t[n.maglevd.name]=n;ie({byName:t})}function Rt(e,t){ie(_e(n=>{const r=n.byName[e];if(!r)return;const s=r.backends.find(l=>l.name===t.backend);s&&(s.state=t.transition.to,s.enabled=t.transition.to!=="disabled",s.last_transition=t.transition,s.transitions||(s.transitions=[]),s.transitions.push(t.transition),s.transitions.length>20&&(s.transitions=s.transitions.slice(s.transitions.length-20)),Oe(r))}))}function Ut(e,t){ie(_e(n=>{const r=n.byName[e];r&&(r.vpp_state=t)}))}function Vt(e,t){ie(_e(n=>{const r=n.byName[e];r&&(r.maglevd.connected=t.connected,r.maglevd.last_error=t.last_error)}))}function Wt(e,t,n,r,s){ie(_e(l=>{const i=l.byName[e];if(!i)return;const o=i.frontends.find(f=>f.name===t);if(!o)return;const a=o.pools.find(f=>f.name===n);if(!a)return;const c=a.backends.find(f=>f.name===r);c&&(c.weight=s,Oe(i))}))}function Ft(e,t){return e.includes(":")?`[${e}]:${t}`:`${e}:${t}`}function Ht(e){if(Mt(),!e||!e.at_unix_ns||e.at_unix_ns<=0)return"";const t=Date.now()-e.at_unix_ns/1e6,n=Math.floor(t/1e3);if(n<=1)return"now";const r=n%60,s=Math.floor(n/60);if(s<1)return`${n}s ago`;const l=s%60,i=Math.floor(s/60);if(i<1)return`${l}m${r}s ago`;const o=i%24,a=Math.floor(i/24);return a<1?`${i}h${l}m ago`:`${a}d${o}h ago`}const Ue=500,[pe,Gt]=A([]);function Kt(e){Gt(t=>{const n=[...t,e];return n.length>Ue?n.slice(n.length-Ue):n})}function qt(){const e=new EventSource("/view/api/events");return e.onmessage=t=>{try{const n=JSON.parse(t.data);Yt(n)}catch(n){console.error("sse parse error",n,t.data)}},e.addEventListener("resync",async()=>{try{const t=await Je();tt(t)}catch(t){console.error("resync refetch failed",t)}}),e.onerror=t=>{console.debug("sse error, browser will reconnect",t)},e}function Yt(e){switch(Kt(e),e.type){case"backend":Rt(e.maglevd,e.payload);break;case"frontend":e.maglevd,e.payload;break;case"maglevd-status":Vt(e.maglevd,e.payload);break;case"vpp-status":Ut(e.maglevd,e.payload.state);break}}const[Se,nt]=A(void 0);var Jt=b("<nav class=scope-selector>"),Xt=b("<button class=scope-tab><span class=dot>");const zt=()=>{const e=()=>Object.keys($e.byName).sort();return(()=>{var t=Jt();return d(t,h(J,{get each(){return e()},children:n=>{const r=()=>$e.byName[n],s=()=>r()?.maglevd.connected??!1;return(()=>{var l=Xt();return l.firstChild,l.$$click=()=>nt(n),d(l,n,null),C(i=>{var o=Se()===n,a=!!s(),c=!s(),f=r()?.maglevd.address??"";return o!==i.e&&l.classList.toggle("active",i.e=o),a!==i.t&&l.classList.toggle("connected",i.t=a),c!==i.a&&l.classList.toggle("disconnected",i.a=c),f!==i.o&&L(l,"title",i.o=f),i},{e:void 0,t:void 0,a:void 0,o:void 0}),l})()}})),t})()};we(["click"]);var Qt=b("<span class=status-badge>");const rt=e=>(()=>{var t=Qt();return d(t,()=>e.label??e.state),C(()=>L(t,"data-state",e.state)),t})();var Zt=b("<span class=probe-heartbeat>");const en="▶",tn="⏸",nn="⏹",rn="❤️",Ve=400;function sn(e){switch(e){case"paused":return tn;case"disabled":case"removed":return nn;default:return en}}const ln=e=>{const[t,n]=A(!1);let r,s;return W(()=>{const l=pe();if(l.length===0)return;const i=l[l.length-1];if(i.type!=="log"||i.maglevd!==e.maglevd)return;const o=i.payload;o.attrs?.backend===e.backend&&o.msg==="probe-start"&&(n(!0),r?.animate([{transform:"scale(1)"},{transform:"scale(1.6)",offset:.25},{transform:"scale(1)"}],{duration:Ve,easing:"ease-out"}),s!==void 0&&clearTimeout(s),s=window.setTimeout(()=>{n(!1),s=void 0},Ve))}),G(()=>{s!==void 0&&clearTimeout(s)}),(()=>{var l=Zt(),i=r;return typeof i=="function"?ye(i,l):r=l,d(l,(()=>{var o=I(()=>!!t());return()=>o()?rn:sn(e.state)})()),C(()=>l.classList.toggle("in-flight",!!t())),l})()};var on=b("<span class=flash-target>");const ne=e=>{let t;return W(dt(()=>e.value,()=>{t?.animate([{transform:"scale(1)",backgroundColor:"#facc15",boxShadow:"0 0 0 2px #facc15",offset:0},{transform:"scale(1.35)",backgroundColor:"#facc15",boxShadow:"0 0 0 4px #facc15",offset:.18},{transform:"scale(1)",backgroundColor:"#facc15",boxShadow:"0 0 0 2px #facc15",offset:.5},{transform:"scale(1)",backgroundColor:"transparent",boxShadow:"0 0 0 0 transparent",offset:1}],{duration:1500,easing:"ease-out"})},{defer:!0})),(()=>{var n=on(),r=t;return typeof r=="function"?ye(r,n):t=n,d(n,()=>e.children??e.value),n})()};async function an(e,t,n){const r=`/admin/api/${encodeURIComponent(e)}/backend/${encodeURIComponent(t)}/${n}`,s=await fetch(r,{method:"POST",credentials:"same-origin"});if(!s.ok){const l=(await s.text()).trim();throw new Error(l||`${s.status} ${s.statusText}`)}return await s.json()}async function cn(e,t,n,r,s,l){const i=`/admin/api/${encodeURIComponent(e)}/frontend/${encodeURIComponent(t)}/pool/${encodeURIComponent(n)}/backend/${encodeURIComponent(r)}/weight`,o=await fetch(i,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({weight:s,flush:l})});if(!o.ok){const a=(await o.text()).trim();throw new Error(a||`${o.status} ${o.statusText}`)}return await o.json()}var un=b("<div class=modal-backdrop><div class=modal-card role=dialog aria-modal=true><header class=modal-header><h3></h3><button type=button class=modal-close aria-label=close>×</button></header><div class=modal-body>");const fn=e=>(W(()=>{const t=n=>{n.key==="Escape"&&e.onClose()};document.addEventListener("keydown",t),G(()=>document.removeEventListener("keydown",t))}),h(Tt,{get mount(){return document.body},get children(){var t=un(),n=t.firstChild,r=n.firstChild,s=r.firstChild,l=s.nextSibling,i=r.nextSibling;return t.$$mousedown=o=>{o.target===o.currentTarget&&e.onClose()},d(s,()=>e.title),At(l,"click",e.onClose),d(i,()=>e.children),C(()=>L(n,"aria-label",e.title)),t}}));we(["mousedown","click"]);var dn=b("<div class=kebab-menu role=menu>"),gn=b('<div class=kebab-wrap><button type=button class=kebab-btn aria-haspopup=menu title="backend actions">⋮'),hn=b("<button type=button class=kebab-item role=menuitem>"),bn=b("<p class=dialog-error>"),mn=b("<footer class=dialog-footer><button type=button class=btn-secondary>cancel</button><button type=button class=btn-primary>"),$n=b("<p class=dialog-warn>VPP's flow table will be cleared for this backend. Active sessions will be dropped immediately."),pn=b('<div class=dialog-body><p class=dialog-target><code></code> in pool <code></code> of frontend <code></code></p><label class=dialog-field><span class=weight-slider-label>weight<output class=weight-slider-value></output></span><input type=range class=weight-slider min=0 max=100 step=1><small>0100; 0 keeps the backend in the pool but assigns it no traffic</small></label><label class="dialog-field checkbox"><input type=checkbox><span>flush existing flows'),vn=b("<p class=dialog-note>VPP's flow table is left alone. Existing sessions keep reaching this backend until they finish."),wn=b("<div class=dialog-body><p class=dialog-consequence>");function yn(e){const t={label:"set weight…",action:"weight"};switch(e){case"up":case"down":case"unknown":return[t,{label:"pause",action:"pause"},{label:"disable",action:"disable"}];case"paused":return[t,{label:"resume",action:"resume"},{label:"disable",action:"disable"}];case"disabled":return[t,{label:"enable",action:"enable"}];default:return[]}}function _n(e){switch(e){case"pause":return"This will stop health checks and set the weight to 0, but existing flows to this backend are kept. New traffic will be rerouted to other backends.";case"resume":return"This will restart health checks. The backend re-enters the 'unknown' state and will start receiving traffic once it probes up.";case"disable":return"This will stop health checks, set the weight to 0, AND flush VPP's flow table for this backend. Active sessions will be dropped immediately.";case"enable":return"This will restart health checks on a previously disabled backend. It re-enters the 'unknown' state and will start receiving traffic once it probes up."}}const Sn=e=>{const[t,n]=A(!1),[r,s]=A(),[l,i]=A(!1),[o,a]=A(),[c,f]=A(e.configuredWeight),[u,p]=A(!1);let g;const v=()=>yn(e.state);W(()=>{if(!t())return;const m=y=>{g&&(g.contains(y.target)||n(!1))},$=y=>{y.key==="Escape"&&n(!1)};document.addEventListener("mousedown",m),document.addEventListener("keydown",$),G(()=>{document.removeEventListener("mousedown",m),document.removeEventListener("keydown",$)})});const w=m=>{n(!1),a(void 0),m==="weight"&&(f(e.configuredWeight),p(!1)),s(m)},E=()=>{l()||(s(void 0),a(void 0))},O=async()=>{const m=r();if(m){i(!0),a(void 0);try{if(m==="weight"){const $=c();if(!Number.isFinite($)||$<0||$>100)throw new Error("weight must be an integer in [0, 100]");const y=Math.floor($);await cn(e.maglevd,e.frontend,e.pool,e.backend,y,u()),Wt(e.maglevd,e.frontend,e.pool,e.backend,y)}else await an(e.maglevd,e.backend,m);s(void 0)}catch($){a(`${$}`)}finally{i(!1)}}};return h(N,{get when(){return v().length>0},get children(){var m=gn(),$=m.firstChild,y=g;return typeof y=="function"?ye(y,m):g=m,$.$$click=k=>{k.stopPropagation(),n(x=>!x)},d(m,h(N,{get when(){return t()},get children(){var k=dn();return d(k,h(J,{get each(){return v()},children:x=>(()=>{var T=hn();return T.$$click=()=>w(x.action),d(T,()=>x.label),T})()})),k}}),null),d(m,h(N,{get when(){return r()},children:k=>h(fn,{get title(){return kn(k(),e.backend)},onClose:E,get children(){return[I(()=>I(()=>k()==="weight")()?(()=>{var x=pn(),T=x.firstChild,j=T.firstChild,D=j.nextSibling,Z=D.nextSibling,oe=Z.nextSibling,ae=oe.nextSibling,Le=T.nextSibling,Ie=Le.firstChild,lt=Ie.firstChild,it=lt.nextSibling,je=Ie.nextSibling,ot=Le.nextSibling,De=ot.firstChild;return d(j,()=>e.backend),d(Z,()=>e.pool),d(ae,()=>e.frontend),d(it,c),je.$$input=ke=>f(Number(ke.currentTarget.value)),De.addEventListener("change",ke=>p(ke.currentTarget.checked)),d(x,h(N,{get when(){return u()},get fallback(){return vn()},get children(){return $n()}}),null),C(()=>je.value=c()),C(()=>De.checked=u()),x})():(()=>{var x=wn(),T=x.firstChild;return d(T,()=>_n(k())),x})()),h(N,{get when(){return o()},get children(){var x=bn();return d(x,o),x}}),(()=>{var x=mn(),T=x.firstChild,j=T.nextSibling;return T.$$click=E,j.$$click=O,d(j,()=>l()?"committing…":"commit"),C(D=>{var Z=l(),oe=!!(k()==="disable"||k()==="weight"&&u()),ae=l();return Z!==D.e&&(T.disabled=D.e=Z),oe!==D.t&&j.classList.toggle("btn-danger",D.t=oe),ae!==D.a&&(j.disabled=D.a=ae),D},{e:void 0,t:void 0,a:void 0}),x})()]}})}),null),C(()=>L($,"aria-expanded",t())),m}})};function kn(e,t){switch(e){case"weight":return`Set weight — ${t}`;case"pause":return`Pause ${t}?`;case"resume":return`Resume ${t}?`;case"disable":return`Disable ${t}?`;case"enable":return`Enable ${t}?`}}we(["click","input"]);const U=window.location.pathname.startsWith("/admin");var xn=b("<td class=actions>"),An=b("<tr class=backend-row><td class=col-pool></td><td class=backend-name><span class=backend-name-text></span></td><td class=backend-address></td><td></td><td class=numeric></td><td class=numeric></td><td class=age>");const Cn=e=>{const t=()=>e.backend;return(()=>{var n=An(),r=n.firstChild,s=r.nextSibling,l=s.firstChild,i=s.nextSibling,o=i.nextSibling,a=o.nextSibling,c=a.nextSibling,f=c.nextSibling;return d(r,(()=>{var u=I(()=>!!e.showPool);return()=>u()?e.pool:""})()),d(s,h(ln,{get maglevd(){return e.maglevd},get backend(){return t().name},get state(){return t().state}}),l),d(l,()=>t().name),d(i,()=>t().address),d(o,h(ne,{get value(){return t().state},get children(){return h(rt,{get state(){return t().state}})}})),d(a,h(ne,{get value(){return e.poolBackend.weight}})),d(c,h(ne,{get value(){return e.poolBackend.effective_weight}})),d(f,()=>Ht(t().last_transition)),d(n,h(N,{when:U,get children(){var u=xn();return d(u,h(Sn,{get maglevd(){return e.maglevd},get frontend(){return e.frontend},get pool(){return e.pool},get backend(){return t().name},get state(){return t().state},get configuredWeight(){return e.poolBackend.weight}})),u}}),null),C(u=>{var p=!e.poolActive,g=t().state;return p!==u.e&&n.classList.toggle("pool-standby",u.e=p),g!==u.t&&L(n,"data-state",u.t=g),u},{e:void 0,t:void 0}),n})()};var En=b("<details class=zippy><summary></summary><div class=zippy-body>");const Ne=e=>(()=>{var t=En(),n=t.firstChild,r=n.nextSibling;return d(n,()=>e.title),d(r,()=>e.children),C(()=>t.open=e.open),t})();var Pn=b("<span class=frontend-title><span class=frontend-title-name></span><span class=frontend-title-addr></span><span class=frontend-title-proto>"),Tn=b("<span class=tag>sticky"),On=b("<span class=frontend-title-desc>"),Nn=b('<th class="col-actions actions">'),Ln=b('<table class=backend-table><thead><tr><th class=col-pool>pool</th><th class=col-name>backend</th><th class=col-address>address</th><th class=col-state>state</th><th class="col-weight numeric">weight</th><th class="col-effective numeric">effective</th><th class=col-age>last transition</th></tr></thead><tbody>');const In=e=>{const t=()=>Object.fromEntries(e.snap.backends.map(s=>[s.name,s])),n=()=>e.frontend,r=(()=>{var s=Pn(),l=s.firstChild,i=l.nextSibling,o=i.nextSibling;return d(l,()=>n().name),d(s,h(ne,{get value(){return n().state??"unknown"},get children(){return h(rt,{get state(){return n().state??"unknown"}})}}),i),d(i,()=>Ft(n().address,n().port)),d(o,()=>n().protocol.toUpperCase()),d(s,(()=>{var a=I(()=>!!n().src_ip_sticky);return()=>a()&&Tn()})(),null),d(s,(()=>{var a=I(()=>!!n().description);return()=>a()&&(()=>{var c=On();return d(c,()=>n().description),c})()})(),null),s})();return h(Ne,{title:r,open:!0,get children(){var s=Ln(),l=s.firstChild,i=l.firstChild,o=i.firstChild,a=o.nextSibling,c=a.nextSibling,f=c.nextSibling,u=f.nextSibling,p=u.nextSibling;p.nextSibling;var g=l.nextSibling;return d(i,h(N,{when:U,get children(){return Nn()}}),null),d(g,h(J,{get each(){return n().pools},children:v=>{const w=()=>v.backends.some(E=>E.effective_weight>0);return h(J,{get each(){return v.backends},children:(E,O)=>{const m=t()[E.name];return m?h(Cn,{get maglevd(){return e.snap.maglevd.name},get frontend(){return n().name},get pool(){return v.name},get showPool(){return O()===0},get poolActive(){return w()},backend:m,poolBackend:E}):null}})}})),s}})};var jn=b("<span class=vpp-badge>"),Dn=b("<span class=zippy-title>VPP<span class=vpp-io aria-hidden=true><span class=vpp-io-label>API:</span><span class=vpp-tx>↑</span><span class=vpp-rx>↓"),Mn=b("<p class=empty>No VPP information available."),Bn=b("<dl class=kv><dt>version</dt><dd></dd><dt>build date</dt><dd></dd><dt>pid</dt><dd></dd><dt>booted</dt><dd></dd><dt>connected</dt><dd>");const Rn=e=>{const t=()=>e.info?.boottime_ns?new Date(e.info.boottime_ns/1e6).toISOString():"",n=()=>e.info?.connecttime_ns?new Date(e.info.connecttime_ns/1e6).toISOString():"",r=()=>e.state==="connected"?"connected":"disconnected",[s,l]=A(!1),[i,o]=A(!1);let a,c;const f=()=>{l(!0),a&&clearTimeout(a),a=window.setTimeout(()=>{l(!1),a=void 0},250)},u=()=>{o(!0),c&&clearTimeout(c),c=window.setTimeout(()=>{o(!1),c=void 0},250)};W(()=>{const g=pe();if(!g.length)return;const v=g[g.length-1];if(v.maglevd!==e.name||v.type!=="log")return;const w=v.payload?.msg;w&&(w.startsWith("vpp-api-send")?f():w.startsWith("vpp-api-recv")&&u())}),G(()=>{a&&clearTimeout(a),c&&clearTimeout(c)});const p=(()=>{var g=Dn(),v=g.firstChild,w=v.nextSibling,E=w.firstChild,O=E.nextSibling,m=O.nextSibling;return d(g,h(ne,{get value(){return r()},get children(){var $=jn();return d($,r),C(()=>L($,"data-state",r())),$}}),w),C($=>{var y=!!s(),k=!!i();return y!==$.e&&O.classList.toggle("lit",$.e=y),k!==$.t&&m.classList.toggle("lit",$.t=k),$},{e:void 0,t:void 0}),g})();return h(Ne,{title:p,get children(){return h(N,{get when(){return e.info},get fallback(){return Mn()},children:g=>(()=>{var v=Bn(),w=v.firstChild,E=w.nextSibling,O=E.nextSibling,m=O.nextSibling,$=m.nextSibling,y=$.nextSibling,k=y.nextSibling,x=k.nextSibling,T=x.nextSibling,j=T.nextSibling;return d(E,()=>g().version),d(m,()=>g().build_date),d(y,()=>g().pid),d(x,t),d(j,n),v})()})}})};var Un=b("<main class=overview>"),Vn=b("<p class=empty>No maglevd selected."),Wn=b('<div class="banner warn"> disconnected'),Fn=b("<div class=frontend-list>");const Hn=()=>{const e=()=>{const t=Se();return t?$e.byName[t]:void 0};return(()=>{var t=Un();return d(t,h(N,{get when(){return e()},get fallback(){return Vn()},children:n=>[h(N,{get when(){return!n().maglevd.connected},get children(){var r=Wn(),s=r.firstChild;return d(r,()=>n().maglevd.name,s),d(r,(()=>{var l=I(()=>!!n().maglevd.last_error);return()=>l()&&`: ${n().maglevd.last_error}`})(),null),r}}),(()=>{var r=Fn();return d(r,h(J,{get each(){return n().frontends},children:s=>h(In,{get snap(){return n()},frontend:s})})),r})(),h(Rn,{get name(){return n().maglevd.name},get info(){return n().vpp_info},get state(){return n().vpp_state}})]})),t})()};var Gn=b("<ol class=event-tail>"),Kn=b("<div class=debug-toolbar><label><input type=checkbox>all maglevds</label><button></button><span class=count> events"),qn=b("<li>");const Yn=()=>{const[e,t]=A(!1),[n,r]=A(!1),[s,l]=A([]),i=F(()=>{const c=n()?s():pe();if(e())return c;const f=Se();return f?c.filter(u=>u.maglevd===f):c}),o=()=>{n()?r(!1):(l([...pe()]),r(!0))};let a;return W(()=>{i(),!n()&&a&&(a.scrollTop=a.scrollHeight)}),h(Ne,{title:"Event stream",get children(){return[(()=>{var c=Gn(),f=a;return typeof f=="function"?ye(f,c):a=c,d(c,h(J,{get each(){return i()},children:u=>(()=>{var p=qn();return d(p,()=>zn(u)),C(g=>{var v=`event-row event-${u.type}`,w=!!Jn(u);return v!==g.e&&xt(p,g.e=v),w!==g.t&&p.classList.toggle("event-sync",g.t=w),g},{e:void 0,t:void 0}),p})()})),c})(),(()=>{var c=Kn(),f=c.firstChild,u=f.firstChild,p=f.nextSibling,g=p.nextSibling,v=g.firstChild;return u.addEventListener("change",w=>t(w.currentTarget.checked)),p.$$click=o,d(p,()=>n()?"resume":"pause"),d(g,()=>i().length,v),C(()=>u.checked=e()),c})()]}})};function Jn(e){return e.type!=="log"?!1:e.payload.msg.startsWith("vpp-lb-sync-")}function Xn(e){if(!e)return"";const t=["vip","protocol","port","address","weight","from","to","encap","src-ip-sticky","flush"],n=[],r=new Set;for(const s of t)s in e&&(n.push(`${s}=${e[s]}`),r.add(s));for(const[s,l]of Object.entries(e))r.has(s)||n.push(`${s}=${l}`);return n.join(" ")}function zn(e){const t=new Date(e.at_unix_ns/1e6).toISOString().substring(11,23),n=`[${e.maglevd}]`;switch(e.type){case"backend":{const r=e.payload;return`${t} ${n} backend ${r.backend}: ${r.transition.from}${r.transition.to}`}case"frontend":{const r=e.payload;return`${t} ${n} frontend ${r.frontend}: ${r.transition.from}${r.transition.to}`}case"log":{const r=e.payload;if(r.msg.startsWith("vpp-lb-sync-"))return`${t} ${n} ${r.msg} ${Xn(r.attrs)}`.trimEnd();const s=r.attrs?Object.entries(r.attrs).map(([l,i])=>`${l}=${i}`).join(" "):"";return`${t} ${n} ${r.level} ${r.msg} ${s}`.trimEnd()}case"maglevd-status":return`${t} ${n} maglevd status: ${JSON.stringify(e.payload)}`;default:return`${t} ${n} ${e.type}`}}we(["click"]);const Qn="/view/assets/logo-bimi-Bguc6E_L.svg";var Zn=b("<span class=mode-tag>"),er=b("<a class=admin-toggle>"),tr=b('<div class=app><header class=app-header><div class=brand><a class=brand-logo href=https://ipng.ch/ target=_blank rel=noopener title="IPng Networks"><img alt=IPng></a><a class=brand-name href=https://git.ipng.ch/ipng/vpp-maglev target=_blank rel=noopener title="vpp-maglev on git.ipng.ch"><strong>vpp-maglev'),nr=b("<span class=version> (<!>)"),rr=b('<div class="banner err">'),sr=b("<p class=loading>Loading…");const lr=()=>{const[e,t]=A(),[n,r]=A();gt(async()=>{try{const[l,i]=await Promise.all([Je(),Ot()]);tt(l),r(i),!Se()&&l.length>0&&nt(l[0].maglevd.name),qt()}catch(l){t(`${l}`)}});const s=()=>n()?.admin_enabled===!0;return(()=>{var l=tr(),i=l.firstChild,o=i.firstChild,a=o.firstChild,c=a.firstChild;return a.nextSibling,L(c,"src",Qn),d(o,(()=>{var f=I(()=>!!n());return()=>f()&&(()=>{var u=nr(),p=u.firstChild,g=p.nextSibling;return g.nextSibling,d(u,()=>n().version,p),d(u,()=>n().commit,g),C(()=>L(u,"title",`commit ${n().commit} · built ${n().date}`)),u})()})(),null),d(i,h(zt,{}),null),d(i,h(N,{get when(){return U||s()},get children(){var f=Zn();return d(f,U?"admin":"view"),f}}),null),d(i,h(N,{get when(){return s()},get children(){var f=er();return L(f,"href",U?"/view/":"/admin/"),L(f,"title",U?"exit admin mode":"enter admin mode"),d(f,U?"exit admin":"admin…"),f}}),null),d(l,(()=>{var f=I(()=>!!e());return()=>f()&&(()=>{var u=rr();return d(u,e),u})()})(),null),d(l,(()=>{var f=I(()=>!e()&&Object.keys($e.byName).length===0);return()=>f()&&sr()})(),null),d(l,h(Hn,{}),null),d(l,h(N,{when:U,get children(){return h(Yn,{})}}),null),l})()},st=document.getElementById("root");if(!st)throw new Error("no #root element");kt(()=>h(lr,{}),st);