eminiar 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,63 +1,63 @@
1
- "use strict";(()=>{var qi=Object.create;var fn=Object.defineProperty;var Wi=Object.getOwnPropertyDescriptor;var Ji=Object.getOwnPropertyNames;var Vi=Object.getPrototypeOf,Ki=Object.prototype.hasOwnProperty;var gs=e=>{throw TypeError(e)};var Zi=(e,n,s)=>n in e?fn(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s;var Yi=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Qi=(e,n,s,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Ji(n))!Ki.call(e,r)&&r!==s&&fn(e,r,{get:()=>n[r],enumerable:!(i=Wi(n,r))||i.enumerable});return e};var ea=(e,n,s)=>(s=e!=null?qi(Vi(e)):{},Qi(n||!e||!e.__esModule?fn(s,"default",{value:e,enumerable:!0}):s,e));var Y=(e,n,s)=>Zi(e,typeof n!="symbol"?n+"":n,s),ta=(e,n,s)=>n.has(e)||gs("Cannot "+s);var fs=(e,n,s)=>n.has(e)?gs("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(e):n.set(e,s);var bs=(e,n,s)=>(ta(e,n,"access private method"),s);var Kr=Yi((bu,Yt)=>{"use strict";var Qa=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};var P=(function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,s=0,i={},r={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function m(p){return p instanceof a?new a(p.type,m(p.content),p.alias):Array.isArray(p)?p.map(m):p.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(m){return Object.prototype.toString.call(m).slice(8,-1)},objId:function(m){return m.__id||Object.defineProperty(m,"__id",{value:++s}),m.__id},clone:function m(p,v){v=v||{};var b,y;switch(r.util.type(p)){case"Object":if(y=r.util.objId(p),v[y])return v[y];b={},v[y]=b;for(var k in p)p.hasOwnProperty(k)&&(b[k]=m(p[k],v));return b;case"Array":return y=r.util.objId(p),v[y]?v[y]:(b=[],v[y]=b,p.forEach(function(S,T){b[T]=m(S,v)}),b);default:return p}},getLanguage:function(m){for(;m;){var p=n.exec(m.className);if(p)return p[1].toLowerCase();m=m.parentElement}return"none"},setLanguage:function(m,p){m.className=m.className.replace(RegExp(n,"gi"),""),m.classList.add("language-"+p)},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(b){var m=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(b.stack)||[])[1];if(m){var p=document.getElementsByTagName("script");for(var v in p)if(p[v].src==m)return p[v]}return null}},isActive:function(m,p,v){for(var b="no-"+p;m;){var y=m.classList;if(y.contains(p))return!0;if(y.contains(b))return!1;m=m.parentElement}return!!v}},languages:{plain:i,plaintext:i,text:i,txt:i,extend:function(m,p){var v=r.util.clone(r.languages[m]);for(var b in p)v[b]=p[b];return v},insertBefore:function(m,p,v,b){b=b||r.languages;var y=b[m],k={};for(var S in y)if(y.hasOwnProperty(S)){if(S==p)for(var T in v)v.hasOwnProperty(T)&&(k[T]=v[T]);v.hasOwnProperty(S)||(k[S]=y[S])}var w=b[m];return b[m]=k,r.languages.DFS(r.languages,function(E,A){A===w&&E!=m&&(this[E]=k)}),k},DFS:function m(p,v,b,y){y=y||{};var k=r.util.objId;for(var S in p)if(p.hasOwnProperty(S)){v.call(p,S,p[S],b||S);var T=p[S],w=r.util.type(T);w==="Object"&&!y[k(T)]?(y[k(T)]=!0,m(T,v,null,y)):w==="Array"&&!y[k(T)]&&(y[k(T)]=!0,m(T,v,S,y))}}},plugins:{},highlightAll:function(m,p){r.highlightAllUnder(document,m,p)},highlightAllUnder:function(m,p,v){var b={callback:v,container:m,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};r.hooks.run("before-highlightall",b),b.elements=Array.prototype.slice.apply(b.container.querySelectorAll(b.selector)),r.hooks.run("before-all-elements-highlight",b);for(var y=0,k;k=b.elements[y++];)r.highlightElement(k,p===!0,b.callback)},highlightElement:function(m,p,v){var b=r.util.getLanguage(m),y=r.languages[b];r.util.setLanguage(m,b);var k=m.parentElement;k&&k.nodeName.toLowerCase()==="pre"&&r.util.setLanguage(k,b);var S=m.textContent,T={element:m,language:b,grammar:y,code:S};function w(A){T.highlightedCode=A,r.hooks.run("before-insert",T),T.element.innerHTML=T.highlightedCode,r.hooks.run("after-highlight",T),r.hooks.run("complete",T),v&&v.call(T.element)}if(r.hooks.run("before-sanity-check",T),k=T.element.parentElement,k&&k.nodeName.toLowerCase()==="pre"&&!k.hasAttribute("tabindex")&&k.setAttribute("tabindex","0"),!T.code){r.hooks.run("complete",T),v&&v.call(T.element);return}if(r.hooks.run("before-highlight",T),!T.grammar){w(r.util.encode(T.code));return}if(p&&e.Worker){var E=new Worker(r.filename);E.onmessage=function(A){w(A.data)},E.postMessage(JSON.stringify({language:T.language,code:T.code,immediateClose:!0}))}else w(r.highlight(T.code,T.grammar,T.language))},highlight:function(m,p,v){var b={code:m,grammar:p,language:v};if(r.hooks.run("before-tokenize",b),!b.grammar)throw new Error('The language "'+b.language+'" has no grammar.');return b.tokens=r.tokenize(b.code,b.grammar),r.hooks.run("after-tokenize",b),a.stringify(r.util.encode(b.tokens),b.language)},tokenize:function(m,p){var v=p.rest;if(v){for(var b in v)p[b]=v[b];delete p.rest}var y=new c;return d(y,y.head,m),l(m,y,p,y.head,0),h(y)},hooks:{all:{},add:function(m,p){var v=r.hooks.all;v[m]=v[m]||[],v[m].push(p)},run:function(m,p){var v=r.hooks.all[m];if(!(!v||!v.length))for(var b=0,y;y=v[b++];)y(p)}},Token:a};e.Prism=r;function a(m,p,v,b){this.type=m,this.content=p,this.alias=v,this.length=(b||"").length|0}a.stringify=function m(p,v){if(typeof p=="string")return p;if(Array.isArray(p)){var b="";return p.forEach(function(w){b+=m(w,v)}),b}var y={type:p.type,content:m(p.content,v),tag:"span",classes:["token",p.type],attributes:{},language:v},k=p.alias;k&&(Array.isArray(k)?Array.prototype.push.apply(y.classes,k):y.classes.push(k)),r.hooks.run("wrap",y);var S="";for(var T in y.attributes)S+=" "+T+'="'+(y.attributes[T]||"").replace(/"/g,"&quot;")+'"';return"<"+y.tag+' class="'+y.classes.join(" ")+'"'+S+">"+y.content+"</"+y.tag+">"};function o(m,p,v,b){m.lastIndex=p;var y=m.exec(v);if(y&&b&&y[1]){var k=y[1].length;y.index+=k,y[0]=y[0].slice(k)}return y}function l(m,p,v,b,y,k){for(var S in v)if(!(!v.hasOwnProperty(S)||!v[S])){var T=v[S];T=Array.isArray(T)?T:[T];for(var w=0;w<T.length;++w){if(k&&k.cause==S+","+w)return;var E=T[w],A=E.inside,F=!!E.lookbehind,$=!!E.greedy,R=E.alias;if($&&!E.pattern.global){var _=E.pattern.toString().match(/[imsuy]*$/)[0];E.pattern=RegExp(E.pattern.source,_+"g")}for(var I=E.pattern||E,X=b.next,q=y;X!==p.tail&&!(k&&q>=k.reach);q+=X.value.length,X=X.next){var H=X.value;if(p.length>m.length)return;if(!(H instanceof a)){var re=1,ne;if($){if(ne=o(I,q,m,F),!ne||ne.index>=m.length)break;var be=ne.index,Oe=ne.index+ne[0].length,M=q;for(M+=X.value.length;be>=M;)X=X.next,M+=X.value.length;if(M-=X.value.length,q=M,X.value instanceof a)continue;for(var se=X;se!==p.tail&&(M<Oe||typeof se.value=="string");se=se.next)re++,M+=se.value.length;re--,H=m.slice(q,M),ne.index-=q}else if(ne=o(I,0,H,F),!ne)continue;var be=ne.index,We=ne[0],ke=H.slice(0,be),Te=H.slice(be+We.length),wt=q+H.length;k&&wt>k.reach&&(k.reach=wt);var Je=X.prev;ke&&(Je=d(p,Je,ke),q+=ke.length),u(p,Je,re);var Z=new a(S,A?r.tokenize(We,A):We,R,We);if(X=d(p,Je,Z),Te&&d(p,X,Te),re>1){var he={cause:S+","+w,reach:wt};l(m,p,v,X.prev,q,he),k&&he.reach>k.reach&&(k.reach=he.reach)}}}}}}function c(){var m={value:null,prev:null,next:null},p={value:null,prev:m,next:null};m.next=p,this.head=m,this.tail=p,this.length=0}function d(m,p,v){var b=p.next,y={value:v,prev:p,next:b};return p.next=y,b.prev=y,m.length++,y}function u(m,p,v){for(var b=p.next,y=0;y<v&&b!==m.tail;y++)b=b.next;p.next=b,b.prev=p,m.length-=y}function h(m){for(var p=[],v=m.head.next;v!==m.tail;)p.push(v.value),v=v.next;return p}if(!e.document)return e.addEventListener&&(r.disableWorkerMessageHandler||e.addEventListener("message",function(m){var p=JSON.parse(m.data),v=p.language,b=p.code,y=p.immediateClose;e.postMessage(r.highlight(b,r.languages[v],v)),y&&e.close()},!1)),r;var g=r.util.currentScript();g&&(r.filename=g.src,g.hasAttribute("data-manual")&&(r.manual=!0));function f(){r.manual||r.highlightAll()}if(!r.manual){var x=document.readyState;x==="loading"||x==="interactive"&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return r})(Qa);typeof Yt<"u"&&Yt.exports&&(Yt.exports=P);typeof global<"u"&&(global.Prism=P);P.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};P.languages.markup.tag.inside["attr-value"].inside.entity=P.languages.markup.entity;P.languages.markup.doctype.inside["internal-subset"].inside=P.languages.markup;P.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&amp;/,"&"))});Object.defineProperty(P.languages.markup.tag,"addInlined",{value:function(n,s){var i={};i["language-"+s]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:P.languages[s]},i.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:i}};r["language-"+s]={pattern:/[\s\S]+/,inside:P.languages[s]};var a={};a[n]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return n}),"i"),lookbehind:!0,greedy:!0,inside:r},P.languages.insertBefore("markup","cdata",a)}});Object.defineProperty(P.languages.markup.tag,"addAttribute",{value:function(e,n){P.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:P.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});P.languages.html=P.languages.markup;P.languages.mathml=P.languages.markup;P.languages.svg=P.languages.markup;P.languages.xml=P.languages.extend("markup",{});P.languages.ssml=P.languages.xml;P.languages.atom=P.languages.xml;P.languages.rss=P.languages.xml;(function(e){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+n.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var s=e.languages.markup;s&&(s.tag.addInlined("style","css"),s.tag.addAttribute("style","css"))})(P);P.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};P.languages.javascript=P.languages.extend("clike",{"class-name":[P.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});P.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;P.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:P.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:P.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:P.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:P.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:P.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});P.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:P.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});P.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});P.languages.markup&&(P.languages.markup.tag.addInlined("script","javascript"),P.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));P.languages.js=P.languages.javascript;(function(){if(typeof P>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e="Loading\u2026",n=function(g,f){return"\u2716 Error "+g+" while fetching file: "+f},s="\u2716 Error: File does not exist or is empty",i={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},r="data-src-status",a="loading",o="loaded",l="failed",c="pre[data-src]:not(["+r+'="'+o+'"]):not(['+r+'="'+a+'"])';function d(g,f,x){var m=new XMLHttpRequest;m.open("GET",g,!0),m.onreadystatechange=function(){m.readyState==4&&(m.status<400&&m.responseText?f(m.responseText):m.status>=400?x(n(m.status,m.statusText)):x(s))},m.send(null)}function u(g){var f=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(g||"");if(f){var x=Number(f[1]),m=f[2],p=f[3];return m?p?[x,Number(p)]:[x,void 0]:[x,x]}}P.hooks.add("before-highlightall",function(g){g.selector+=", "+c}),P.hooks.add("before-sanity-check",function(g){var f=g.element;if(f.matches(c)){g.code="",f.setAttribute(r,a);var x=f.appendChild(document.createElement("CODE"));x.textContent=e;var m=f.getAttribute("data-src"),p=g.language;if(p==="none"){var v=(/\.(\w+)$/.exec(m)||[,"none"])[1];p=i[v]||v}P.util.setLanguage(x,p),P.util.setLanguage(f,p);var b=P.plugins.autoloader;b&&b.loadLanguages(p),d(m,function(y){f.setAttribute(r,o);var k=u(f.getAttribute("data-range"));if(k){var S=y.split(/\r\n?|\n/g),T=k[0],w=k[1]==null?S.length:k[1];T<0&&(T+=S.length),T=Math.max(0,Math.min(T-1,S.length)),w<0&&(w+=S.length),w=Math.max(0,Math.min(w,S.length)),y=S.slice(T,w).join(`
2
- `),f.hasAttribute("data-start")||f.setAttribute("data-start",String(T+1))}x.textContent=y,P.highlightElement(x)},function(y){f.setAttribute(r,l),x.textContent=y})}}),P.plugins.fileHighlight={highlight:function(f){for(var x=(f||document).querySelectorAll(c),m=0,p;p=x[m++];)P.highlightElement(p)}};var h=!1;P.fileHighlight=function(){h||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),h=!0),P.plugins.fileHighlight.highlight.apply(this,arguments)}})()});var Mt,Q,ws,na,Me,ys,_s,Ss,bn,Ct,ot,Ts,kn,yn,vn,sa,Rt={},Ft=[],ra=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,It=Array.isArray;function Ae(e,n){for(var s in n)e[s]=n[s];return e}function xn(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Dt(e,n,s){var i,r,a,o={};for(a in n)a=="key"?i=n[a]:a=="ref"?r=n[a]:o[a]=n[a];if(arguments.length>2&&(o.children=arguments.length>3?Mt.call(arguments,2):s),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)o[a]===void 0&&(o[a]=e.defaultProps[a]);return $t(e,o,i,r,null)}function $t(e,n,s,i,r){var a={type:e,props:n,key:s,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++ws,__i:-1,__u:0};return r==null&&Q.vnode!=null&&Q.vnode(a),a}function N(e){return e.children}function At(e,n){this.props=e,this.context=n}function Be(e,n){if(n==null)return e.__?Be(e.__,e.__i+1):null;for(var s;n<e.__k.length;n++)if((s=e.__k[n])!=null&&s.__e!=null)return s.__e;return typeof e.type=="function"?Be(e):null}function ia(e){if(e.__P&&e.__d){var n=e.__v,s=n.__e,i=[],r=[],a=Ae({},n);a.__v=n.__v+1,Q.vnode&&Q.vnode(a),wn(e.__P,a,n,e.__n,e.__P.namespaceURI,32&n.__u?[s]:null,i,s??Be(n),!!(32&n.__u),r),a.__v=n.__v,a.__.__k[a.__i]=a,Rs(i,a,r),n.__e=n.__=null,a.__e!=s&&Es(a)}}function Es(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(n){if(n!=null&&n.__e!=null)return e.__e=e.__c.base=n.__e}),Es(e)}function vs(e){(!e.__d&&(e.__d=!0)&&Me.push(e)&&!Lt.__r++||ys!=Q.debounceRendering)&&((ys=Q.debounceRendering)||_s)(Lt)}function Lt(){try{for(var e,n=1;Me.length;)Me.length>n&&Me.sort(Ss),e=Me.shift(),n=Me.length,ia(e)}finally{Me.length=Lt.__r=0}}function Cs(e,n,s,i,r,a,o,l,c,d,u){var h,g,f,x,m,p,v=i&&i.__k||Ft,b=n.length;for(c=aa(s,n,v,c,b),h=0;h<b;h++)(f=s.__k[h])!=null&&(g=f.__i!=-1&&v[f.__i]||Rt,f.__i=h,p=wn(e,f,g,r,a,o,l,c,d,u),x=f.__e,f.ref&&g.ref!=f.ref&&(g.ref&&_n(g.ref,null,f),u.push(f.ref,f.__c||x,f)),m==null&&x!=null&&(m=x),4&f.__u?(c=$s(f,c,e),g.__e&&(g.__e=null)):typeof f.type=="function"&&p!==void 0?c=p:x&&(c=x.nextSibling),f.__u&=-7);return s.__e=m,c}function aa(e,n,s,i,r){var a,o,l,c,d,u=s.length,h=u,g=0;for(e.__k=new Array(r),a=0;a<r;a++)(o=n[a])!=null&&typeof o!="boolean"&&typeof o!="function"?(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||o.constructor==String?o=e.__k[a]=$t(null,o,null,null,null):It(o)?o=e.__k[a]=$t(N,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[a]=$t(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+g,o.__=e,o.__b=e.__b+1,l=null,(d=o.__i=oa(o,s,c,h))!=-1&&(h--,(l=s[d])&&(l.__u|=2)),l==null||l.__v==null?(d==-1&&(r>u?g--:r<u&&g++),typeof o.type!="function"&&(o.__u|=4)):d!=c&&(d==c-1?g--:d==c+1?g++:(d>c?g--:g++,o.__u|=4))):e.__k[a]=null;if(h)for(a=0;a<u;a++)(l=s[a])!=null&&(2&l.__u)==0&&(l.__e==i&&(i=Be(l)),Ls(l,l));return i}function $s(e,n,s){var i,r;if(typeof e.type=="function"){for(i=e.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=e,n=$s(i[r],n,s));return n}e.__e!=n&&(n&&e.type&&!n.parentNode&&(n=Be(e)),n=s.insertBefore(e.__e,n||null));do n=n&&n.nextSibling;while(n!=null&&n.nodeType==8);return n}function oa(e,n,s,i){var r,a,o,l=e.key,c=e.type,d=n[s],u=d!=null&&(2&d.__u)==0;if(d===null&&l==null||u&&l==d.key&&c==d.type)return s;if(i>(u?1:0)){for(r=s-1,a=s+1;r>=0||a<n.length;)if((d=n[o=r>=0?r--:a++])!=null&&(2&d.__u)==0&&l==d.key&&c==d.type)return o}return-1}function ks(e,n,s){n[0]=="-"?e.setProperty(n,s??""):e[n]=s==null?"":typeof s!="number"||ra.test(n)?s:s+"px"}function Et(e,n,s,i,r){var a,o;e:if(n=="style")if(typeof s=="string")e.style.cssText=s;else{if(typeof i=="string"&&(e.style.cssText=i=""),i)for(n in i)s&&n in s||ks(e.style,n,"");if(s)for(n in s)i&&s[n]==i[n]||ks(e.style,n,s[n])}else if(n[0]=="o"&&n[1]=="n")a=n!=(n=n.replace(Ts,"$1")),o=n.toLowerCase(),n=o in e||n=="onFocusOut"||n=="onFocusIn"?o.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+a]=s,s?i?s[ot]=i[ot]:(s[ot]=kn,e.addEventListener(n,a?vn:yn,a)):e.removeEventListener(n,a?vn:yn,a);else{if(r=="http://www.w3.org/2000/svg")n=n.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(n!="width"&&n!="height"&&n!="href"&&n!="list"&&n!="form"&&n!="tabIndex"&&n!="download"&&n!="rowSpan"&&n!="colSpan"&&n!="role"&&n!="popover"&&n in e)try{e[n]=s??"";break e}catch{}typeof s=="function"||(s==null||s===!1&&n[4]!="-"?e.removeAttribute(n):e.setAttribute(n,n=="popover"&&s==1?"":s))}}function xs(e){return function(n){if(this.l){var s=this.l[n.type+e];if(n[Ct]==null)n[Ct]=kn++;else if(n[Ct]<s[ot])return;return s(Q.event?Q.event(n):n)}}}function wn(e,n,s,i,r,a,o,l,c,d){var u,h,g,f,x,m,p,v,b,y,k,S,T,w,E,A,F=n.type;if(n.constructor!==void 0)return null;128&s.__u&&(c=!!(32&s.__u),a=[l=n.__e=s.__e]),(u=Q.__b)&&u(n);e:if(typeof F=="function"){h=o.length;try{if(b=n.props,y=F.prototype&&F.prototype.render,k=(u=F.contextType)&&i[u.__c],S=u?k?k.props.value:u.__:i,s.__c?v=(g=n.__c=s.__c).__=g.__E:(y?n.__c=g=new F(b,S):(n.__c=g=new At(b,S),g.constructor=F,g.render=ca),k&&k.sub(g),g.state||(g.state={}),g.__n=i,f=g.__d=!0,g.__h=[],g._sb=[]),y&&g.__s==null&&(g.__s=g.state),y&&F.getDerivedStateFromProps!=null&&(g.__s==g.state&&(g.__s=Ae({},g.__s)),Ae(g.__s,F.getDerivedStateFromProps(b,g.__s))),x=g.props,m=g.state,g.__v=n,f)y&&F.getDerivedStateFromProps==null&&g.componentWillMount!=null&&g.componentWillMount(),y&&g.componentDidMount!=null&&g.__h.push(g.componentDidMount);else{if(y&&F.getDerivedStateFromProps==null&&b!==x&&g.componentWillReceiveProps!=null&&g.componentWillReceiveProps(b,S),n.__v==s.__v||!g.__e&&g.shouldComponentUpdate!=null&&g.shouldComponentUpdate(b,g.__s,S)===!1){n.__v!=s.__v&&(g.props=b,g.state=g.__s,g.__d=!1),n.__e=s.__e,n.__k=s.__k,n.__k.some(function($){$&&($.__=n)}),Ft.push.apply(g.__h,g._sb),g._sb=[],g.__h.length&&o.push(g),l=Be(s);break e}g.componentWillUpdate!=null&&g.componentWillUpdate(b,g.__s,S),y&&g.componentDidUpdate!=null&&g.__h.push(function(){g.componentDidUpdate(x,m,p)})}if(g.context=S,g.props=b,g.__P=e,g.__e=!1,T=Q.__r,w=0,y)g.state=g.__s,g.__d=!1,T&&T(n),u=g.render(g.props,g.state,g.context),Ft.push.apply(g.__h,g._sb),g._sb=[];else do g.__d=!1,T&&T(n),u=g.render(g.props,g.state,g.context),g.state=g.__s;while(g.__d&&++w<25);g.state=g.__s,g.getChildContext!=null&&(i=Ae(Ae({},i),g.getChildContext())),y&&!f&&g.getSnapshotBeforeUpdate!=null&&(p=g.getSnapshotBeforeUpdate(x,m)),E=u!=null&&u.type===N&&u.key==null?Fs(u.props.children):u,l=Cs(e,It(E)?E:[E],n,s,i,r,a,o,l,c,d),g.base=n.__e,n.__u&=-161,g.__h.length&&o.push(g),v&&(g.__E=g.__=null)}catch($){if(o.length=h,n.__v=null,c||a!=null){if($.then){for(n.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;a!=null&&(a[a.indexOf(l)]=null),n.__e=l}else if(a!=null)for(A=a.length;A--;)xn(a[A])}else n.__e=s.__e;n.__k==null&&(n.__k=s.__k||[]),$.then||As(n),Q.__e($,n,s)}}else a==null&&n.__v==s.__v?(n.__k=s.__k,n.__e=s.__e):l=n.__e=la(s.__e,n,s,i,r,a,o,c,d);return(u=Q.diffed)&&u(n),128&n.__u?void 0:l}function As(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(As))}function Rs(e,n,s){for(var i=0;i<s.length;i++)_n(s[i],s[++i],s[++i]);Q.__c&&Q.__c(n,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(a){a.call(r)})}catch(a){Q.__e(a,r.__v)}})}function Fs(e){return typeof e!="object"||e==null||e.__b>0?e:It(e)?e.map(Fs):e.constructor!==void 0?null:Ae({},e)}function la(e,n,s,i,r,a,o,l,c){var d,u,h,g,f,x,m,p=s.props||Rt,v=n.props,b=n.type;if(b=="svg"?r="http://www.w3.org/2000/svg":b=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),a!=null){for(d=0;d<a.length;d++)if((f=a[d])&&"setAttribute"in f==!!b&&(b?f.localName==b:f.nodeType==3)){e=f,a[d]=null;break}}if(e==null){if(b==null)return document.createTextNode(v);e=document.createElementNS(r,b,v.is&&v),l&&(Q.__m&&Q.__m(n,a),l=!1),a=null}if(b==null)p===v||l&&e.data==v||(e.data=v);else{if(a=b=="textarea"&&v.defaultValue!=null?null:a&&Mt.call(e.childNodes),!l&&a!=null)for(p={},d=0;d<e.attributes.length;d++)p[(f=e.attributes[d]).name]=f.value;for(d in p)f=p[d],d=="dangerouslySetInnerHTML"?h=f:d=="children"||d in v||d=="value"&&"defaultValue"in v||d=="checked"&&"defaultChecked"in v||Et(e,d,null,f,r);for(d in v)f=v[d],d=="children"?g=f:d=="dangerouslySetInnerHTML"?u=f:d=="value"?x=f:d=="checked"?m=f:l&&typeof f!="function"||p[d]===f||Et(e,d,f,p[d],r);if(u)l||h&&(u.__html==h.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),n.__k=[];else if(h&&(e.innerHTML=""),Cs(n.type=="template"?e.content:e,It(g)?g:[g],n,s,i,b=="foreignObject"?"http://www.w3.org/1999/xhtml":r,a,o,a?a[0]:s.__k&&Be(s,0),l,c),a!=null)for(d=a.length;d--;)xn(a[d]);l&&b!="textarea"||(d="value",b=="progress"&&x==null?e.removeAttribute("value"):x!=null&&(x!==e[d]||b=="progress"&&!x||b=="option"&&x!=p[d])&&Et(e,d,x,p[d],r),d="checked",m!=null&&m!=e[d]&&Et(e,d,m,p[d],r))}return e}function _n(e,n,s){try{if(typeof e=="function"){var i=typeof e.__u=="function";i&&e.__u(),i&&n==null||(e.__u=e(n))}else e.current=n}catch(r){Q.__e(r,s)}}function Ls(e,n,s){var i,r;if(Q.unmount&&Q.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||_n(i,null,n)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(a){Q.__e(a,n)}i.base=i.__P=i.__n=null}if(i=e.__k)for(r=0;r<i.length;r++)i[r]&&Ls(i[r],n,s||typeof e.type!="function");s||xn(e.__e),e.__c=e.__=e.__e=void 0}function ca(e,n,s){return this.constructor(e,s)}function Ms(e,n,s){var i,r,a,o;n==document&&(n=document.documentElement),Q.__&&Q.__(e,n),r=(i=typeof s=="function")?null:s&&s.__k||n.__k,a=[],o=[],wn(n,e=(!i&&s||n).__k=Dt(N,null,[e]),r||Rt,Rt,n.namespaceURI,!i&&s?[s]:r?null:n.firstChild?Mt.call(n.childNodes):null,a,!i&&s?s:r?r.__e:n.firstChild,i,o),Rs(a,e,o),e.props.children=null}Mt=Ft.slice,Q={__e:function(e,n,s,i){for(var r,a,o;n=n.__;)if((r=n.__c)&&!r.__)try{if((a=r.constructor)&&a.getDerivedStateFromError!=null&&(r.setState(a.getDerivedStateFromError(e)),o=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,i||{}),o=r.__d),o)return r.__E=r}catch(l){e=l}throw e}},ws=0,na=function(e){return e!=null&&e.constructor===void 0},At.prototype.setState=function(e,n){var s;s=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Ae({},this.state),typeof e=="function"&&(e=e(Ae({},s),this.props)),e&&Ae(s,e),e!=null&&this.__v&&(n&&this._sb.push(n),vs(this))},At.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),vs(this))},At.prototype.render=N,Me=[],_s=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ss=function(e,n){return e.__v.__b-n.__v.__b},Lt.__r=0,bn=Math.random().toString(8),Ct="__d"+bn,ot="__a"+bn,Ts=/(PointerCapture)$|Capture$/i,kn=0,yn=xs(!1),vn=xs(!0),sa=0;var Ve,ie,Sn,Is,Ke=0,js=[],le=Q,Ds=le.__b,Ns=le.__r,Ps=le.diffed,Os=le.__c,Bs=le.unmount,Hs=le.__;function Pt(e,n){le.__h&&le.__h(ie,e,Ke||n),Ke=0;var s=ie.__H||(ie.__H={__:[],__h:[]});return e>=s.__.length&&s.__.push({}),s.__[e]}function C(e){return Ke=1,da(Gs,e)}function da(e,n,s){var i=Pt(Ve++,2);if(i.t=e,!i.__c&&(i.__=[s?s(n):Gs(void 0,n),function(l){var c=i.__N?i.__N[0]:i.__[0],d=i.t(c,l);c!==d&&(i.__N=[d,i.__[1]],i.__c.setState({}))}],i.__c=ie,!ie.__f)){var r=function(l,c,d){if(!i.__c.__H)return!0;var u=!1,h=i.__c.props!==l;if(i.__c.__H.__.some(function(f){if(f.__N){u=!0;var x=f.__[0];f.__=f.__N,f.__N=void 0,x!==f.__[0]&&(h=!0)}}),a){var g=a.call(this,l,c,d);return u?g||h:g}return!u||h};ie.__f=!0;var a=ie.shouldComponentUpdate,o=ie.componentWillUpdate;ie.componentWillUpdate=function(l,c,d){if(this.__e){var u=a;a=void 0,r(l,c,d),a=u}o&&o.call(this,l,c,d)},ie.shouldComponentUpdate=r}return i.__N||i.__}function U(e,n){var s=Pt(Ve++,3);!le.__s&&En(s.__H,n)&&(s.__=e,s.u=n,ie.__H.__h.push(s))}function ua(e,n){var s=Pt(Ve++,4);!le.__s&&En(s.__H,n)&&(s.__=e,s.u=n,ie.__h.push(s))}function ae(e){return Ke=5,V(function(){return{current:e}},[])}function Us(e,n,s){Ke=6,ua(function(){if(typeof e=="function"){var i=e(n());return function(){e(null),i&&typeof i=="function"&&i()}}if(e)return e.current=n(),function(){return e.current=null}},s==null?s:s.concat(e))}function V(e,n){var s=Pt(Ve++,7);return En(s.__H,n)&&(s.__=e(),s.__H=n,s.__h=e),s.__}function Xs(e,n){return Ke=8,V(function(){return e},n)}function pa(){for(var e;e=js.shift();){var n=e.__H;if(e.__P&&n)try{n.__h.some(Nt),n.__h.some(Tn),n.__h=[]}catch(s){n.__h=[],le.__e(s,e.__v)}}}le.__b=function(e){ie=null,Ds&&Ds(e)},le.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),Hs&&Hs(e,n)},le.__r=function(e){Ns&&Ns(e),Ve=0;var n=(ie=e.__c).__H;n&&(Sn===ie?(n.__h=[],ie.__h=[],n.__.some(function(s){s.__N&&(s.__=s.__N),s.u=s.__N=void 0})):(n.__h.some(Nt),n.__h.some(Tn),n.__h=[],Ve=0)),Sn=ie},le.diffed=function(e){Ps&&Ps(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(js.push(n)!==1&&Is===le.requestAnimationFrame||((Is=le.requestAnimationFrame)||ha)(pa)),n.__H.__.some(function(s){s.u&&(s.__H=s.u,s.u=void 0)})),Sn=ie=null},le.__c=function(e,n){n.some(function(s){try{s.__h.some(Nt),s.__h=s.__h.filter(function(i){return!i.__||Tn(i)})}catch(i){n.some(function(r){r.__h&&(r.__h=[])}),n=[],le.__e(i,s.__v)}}),Os&&Os(e,n)},le.unmount=function(e){Bs&&Bs(e);var n,s=e.__c;s&&s.__H&&(s.__H.__.some(function(i){try{Nt(i)}catch(r){n=r}}),s.__H=void 0,n&&le.__e(n,s.__v))};var zs=typeof requestAnimationFrame=="function";function ha(e){var n,s=function(){clearTimeout(i),zs&&cancelAnimationFrame(n),setTimeout(e)},i=setTimeout(s,35);zs&&(n=requestAnimationFrame(s))}function Nt(e){var n=ie,s=e.__c;typeof s=="function"&&(e.__c=void 0,s()),ie=n}function Tn(e){var n=ie;e.__c=e.__(),ie=n}function En(e,n){return!e||e.length!==n.length||n.some(function(s,i){return s!==e[i]})}function Gs(e,n){return typeof n=="function"?n(e):n}var Ot=new URLSearchParams(location.search).get("root")??"",Cn=()=>Ot;function qs(e){Ot=e;let n=new URL(location.href);n.searchParams.set("root",e),history.replaceState(null,"",n.toString())}function ma(e,n){let s=new URL(e,location.origin);Ot&&s.searchParams.set("root",Ot);for(let[i,r]of Object.entries(n??{}))r==null||r===""||s.searchParams.set(i,String(r));return s.toString()}var lt=class extends Error{constructor(s,i){super(s);Y(this,"status",i)}};async function O(e,n,s){let i=await fetch(ma(e,n),s),r=await i.json().catch(()=>({error:"bad response"}));if(i.status===404&&r.error==="not found"&&e.startsWith("/api/"))throw new lt(`${e} is not available on the running server; restart \`eminiar ui\` to pick up the rebuilt bundle`,i.status);if(!i.ok)throw new lt(r.error??`HTTP ${i.status}`,i.status);if(r&&typeof r=="object"&&"error"in r&&r.error)throw new lt(String(r.error),i.status);return r}function ye(e,n,s="POST",i){return O(e,i,{method:s,headers:{"content-type":"application/json"},body:JSON.stringify(n)})}function Bt(e,n){return O(e,n,{method:"DELETE",headers:{"content-type":"application/json"}})}var ee=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Math.round(e));function oe(e){if(!e)return"";let n=Date.now()-e;return n<6e4?"just now":n<36e5?`${Math.round(n/6e4)}m ago`:n<864e5?`${Math.round(n/36e5)}h ago`:`${Math.round(n/864e5)}d ago`}var ge=e=>e?new Date(e).toISOString().slice(0,10):"",Ws=e=>e?new Date(e).toLocaleTimeString():"",Ht=e=>e.split("/").pop()??e;var ga={file:"#2563eb",function:"#16a34a",method:"#0d9488",class:"#d97706",interface:"#7c3aed",type:"#8b5cf6",enum:"#a855f7",field:"#64748b",variable:"#64748b",route:"#e11d48",package:"#6b7280",memory:"#2563eb",doc:"#1e40af",tag:"#9ca3af",topic:"#6b7280",person:"#f59e0b",concept:"#0ea5e9",cluster:"#2563eb"},Re=e=>ga[e]??"#94a3b8",fa={imports:"#2563eb",reexports:"#3b82f6",calls:"#16a34a",references:"#0ea5e9",extends:"#7c3aed",implements:"#8b5cf6",handles:"#e11d48",defines:"#9ca3af",exports:"#9ca3af",co_changes:"#f59e0b",mentions:"#2563eb",supersedes:"#6b7280",links:"#3b82f6",documents:"#1e40af",about:"#93c5fd",tagged:"#9ca3af",in_topic:"#cdd2da",authored:"#d97706",link:"#2563eb"},Ze=e=>fa[e]??"#94a3b8",zt=new Set(["imports","reexports","calls","references","extends","implements","handles","mentions","supersedes","links","documents","about"]),Js=["imports","calls","references","extends","implements","handles","reexports","co_changes","mentions","defines"],L=(...e)=>e.filter(Boolean).join(" ");function Vs(e,n){let s;return(...i)=>{clearTimeout(s),s=setTimeout(()=>e(...i),n)}}var Ye=e=>`${Math.round((e??0)*100)}%`;function Ks(e){let n=e.slice(e.lastIndexOf(".")+1).toLowerCase();return{ts:"typescript",mts:"typescript",cts:"typescript",tsx:"tsx",js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"jsx",py:"python",go:"go",php:"php",json:"json",md:"markdown",sh:"bash"}[n]??"plain"}var ba=0;function t(e,n,s,i,r,a){n||(n={});var o,l,c=n;if("ref"in c)for(l in c={},n)l=="ref"?o=n[l]:c[l]=n[l];var d={type:e,props:c,key:s,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ba,__i:-1,__u:0,__source:r,__self:a};if(typeof e=="function"&&(o=e.defaultProps))for(l in o)c[l]===void 0&&(c[l]=o[l]);return Q.vnode&&Q.vnode(d),d}var $n=new Set;function K(e,n=!1){for(let s of $n)s(e,n)}function Zs(){let[e,n]=C(null);return U(()=>{let s,i=(r,a)=>{n({msg:r,bad:a}),clearTimeout(s),s=setTimeout(()=>n(null),a?6e3:2500)};return $n.add(i),()=>{$n.delete(i),clearTimeout(s)}},[]),e?t("div",{class:L("toast",e.bad&&"bad"),children:e.msg}):null}function j(e,n){let[s,i]=C({data:void 0,error:void 0,loading:!0}),[r,a]=C(0),o=ae(0);U(()=>{let c=++o.current;i(d=>({...d,loading:!0,error:void 0})),e().then(d=>c===o.current&&i({data:d,error:void 0,loading:!1}),d=>c===o.current&&i(u=>({...u,error:d.message,loading:!1})))},[...n,r]);let l=Xs(()=>a(c=>c+1),[]);return{...s,reload:l}}var B=()=>t("span",{class:"spin"}),W=({children:e})=>t("div",{class:"empty",children:e}),J=({error:e})=>t("div",{class:"empty bad",children:e});function me({kind:e}){return t("span",{class:"tag kind",style:{color:Re(e)},children:e})}function D({children:e,class:n}){return t("span",{class:L("tag",n),children:e})}function Fe({value:e,max:n,width:s=80}){let i=n>0?Math.max(2,e/n*s):2;return t("span",{class:"bar",style:{width:`${i}px`},title:String(e)})}function Ie({rows:e}){return t("dl",{class:"kv",children:e.map(([n,s])=>t(N,{children:[t("dt",{children:n}),t("dd",{children:s})]}))})}function Ce({tabs:e,value:n,onChange:s}){return t("div",{class:"subtabs",children:e.map(([i,r])=>t("button",{type:"button",class:L(n===i&&"active"),onClick:()=>s(i),children:r}))})}function Ys({left:e,center:n,right:s,leftWidth:i=280,rightWidth:r=340}){let[a,o]=C(i),[l,c]=C(r),d=ae(null),[u,h]=C(null);U(()=>{let f=m=>{let p=d.current;if(!p)return;let v=m.clientX-p.x;p.side==="l"?o(Math.max(160,Math.min(700,p.start+v))):c(Math.max(200,Math.min(800,p.start-v)))},x=()=>{d.current=null,h(null)};return window.addEventListener("mousemove",f),window.addEventListener("mouseup",x),()=>{window.removeEventListener("mousemove",f),window.removeEventListener("mouseup",x)}},[]);let g=[e?`${a}px 5px`:"","minmax(0, 1fr)",s?`5px ${l}px`:""].filter(Boolean).join(" ");return t("div",{class:"split",style:{gridTemplateColumns:g},children:[e&&t(N,{children:[t("div",{class:"pane",children:e}),t("div",{class:L("gutter",u==="l"&&"on"),onMouseDown:f=>{d.current={side:"l",x:f.clientX,start:a},h("l"),f.preventDefault()}})]}),t("div",{class:"pane",children:n}),s&&t(N,{children:[t("div",{class:L("gutter",u==="r"&&"on"),onMouseDown:f=>{d.current={side:"r",x:f.clientX,start:l},h("r"),f.preventDefault()}}),t("div",{class:"pane",children:s})]})]})}function Qe(e,n,s=!0){let[i,r]=C(n),[a,o]=C(s?-1:1);return{sorted:(e??[]).slice().sort((d,u)=>{let h=d[i],g=u[i];return typeof h=="number"&&typeof g=="number"?(h-g)*a:String(h??"").localeCompare(String(g??""))*a}),th:(d,u,h=!1)=>t("th",{class:L("sortable",h&&"num",i===d&&"sorted"),onClick:()=>{i===d?o(g=>g===1?-1:1):(r(d),o(h?-1:1))},children:[u,i===d?a===1?" \u25B2":" \u25BC":""]})}}var ya=["overview","explore","galaxy","architecture","history","memory","docs","coverage","sessions","system"];function Qs(){let e=location.hash.replace(/^#\/?/,""),[n="",s=""]=e.split("?"),i=ya.includes(n)?n:"overview",r={};for(let[a,o]of new URLSearchParams(s))r[a]=o;return{view:i,params:r}}function z(e,n={}){let s=new URLSearchParams;for(let[r,a]of Object.entries(n))a&&s.set(r,a);let i=s.toString();location.hash=`/${e}${i?`?${i}`:""}`}function er(){let[e,n]=C(Qs);return U(()=>{let s=()=>n(Qs());return window.addEventListener("hashchange",s),()=>window.removeEventListener("hashchange",s)},[]),e}function An(e,n){var s,i=1;e==null&&(e=0),n==null&&(n=0);function r(){var a,o=s.length,l,c=0,d=0;for(a=0;a<o;++a)l=s[a],c+=l.x,d+=l.y;for(c=(c/o-e)*i,d=(d/o-n)*i,a=0;a<o;++a)l=s[a],l.x-=c,l.y-=d}return r.initialize=function(a){s=a},r.x=function(a){return arguments.length?(e=+a,r):e},r.y=function(a){return arguments.length?(n=+a,r):n},r.strength=function(a){return arguments.length?(i=+a,r):i},r}function tr(e){let n=+this._x.call(null,e),s=+this._y.call(null,e);return nr(this.cover(n,s),n,s,e)}function nr(e,n,s,i){if(isNaN(n)||isNaN(s))return e;var r,a=e._root,o={data:i},l=e._x0,c=e._y0,d=e._x1,u=e._y1,h,g,f,x,m,p,v,b;if(!a)return e._root=o,e;for(;a.length;)if((m=n>=(h=(l+d)/2))?l=h:d=h,(p=s>=(g=(c+u)/2))?c=g:u=g,r=a,!(a=a[v=p<<1|m]))return r[v]=o,e;if(f=+e._x.call(null,a.data),x=+e._y.call(null,a.data),n===f&&s===x)return o.next=a,r?r[v]=o:e._root=o,e;do r=r?r[v]=new Array(4):e._root=new Array(4),(m=n>=(h=(l+d)/2))?l=h:d=h,(p=s>=(g=(c+u)/2))?c=g:u=g;while((v=p<<1|m)===(b=(x>=g)<<1|f>=h));return r[b]=a,r[v]=o,e}function sr(e){var n,s,i=e.length,r,a,o=new Array(i),l=new Array(i),c=1/0,d=1/0,u=-1/0,h=-1/0;for(s=0;s<i;++s)isNaN(r=+this._x.call(null,n=e[s]))||isNaN(a=+this._y.call(null,n))||(o[s]=r,l[s]=a,r<c&&(c=r),r>u&&(u=r),a<d&&(d=a),a>h&&(h=a));if(c>u||d>h)return this;for(this.cover(c,d).cover(u,h),s=0;s<i;++s)nr(this,o[s],l[s],e[s]);return this}function rr(e,n){if(isNaN(e=+e)||isNaN(n=+n))return this;var s=this._x0,i=this._y0,r=this._x1,a=this._y1;if(isNaN(s))r=(s=Math.floor(e))+1,a=(i=Math.floor(n))+1;else{for(var o=r-s||1,l=this._root,c,d;s>e||e>=r||i>n||n>=a;)switch(d=(n<i)<<1|e<s,c=new Array(4),c[d]=l,l=c,o*=2,d){case 0:r=s+o,a=i+o;break;case 1:s=r-o,a=i+o;break;case 2:r=s+o,i=a-o;break;case 3:s=r-o,i=a-o;break}this._root&&this._root.length&&(this._root=l)}return this._x0=s,this._y0=i,this._x1=r,this._y1=a,this}function ir(){var e=[];return this.visit(function(n){if(!n.length)do e.push(n.data);while(n=n.next)}),e}function ar(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function ue(e,n,s,i,r){this.node=e,this.x0=n,this.y0=s,this.x1=i,this.y1=r}function or(e,n,s){var i,r=this._x0,a=this._y0,o,l,c,d,u=this._x1,h=this._y1,g=[],f=this._root,x,m;for(f&&g.push(new ue(f,r,a,u,h)),s==null?s=1/0:(r=e-s,a=n-s,u=e+s,h=n+s,s*=s);x=g.pop();)if(!(!(f=x.node)||(o=x.x0)>u||(l=x.y0)>h||(c=x.x1)<r||(d=x.y1)<a))if(f.length){var p=(o+c)/2,v=(l+d)/2;g.push(new ue(f[3],p,v,c,d),new ue(f[2],o,v,p,d),new ue(f[1],p,l,c,v),new ue(f[0],o,l,p,v)),(m=(n>=v)<<1|e>=p)&&(x=g[g.length-1],g[g.length-1]=g[g.length-1-m],g[g.length-1-m]=x)}else{var b=e-+this._x.call(null,f.data),y=n-+this._y.call(null,f.data),k=b*b+y*y;if(k<s){var S=Math.sqrt(s=k);r=e-S,a=n-S,u=e+S,h=n+S,i=f.data}}return i}function lr(e){if(isNaN(u=+this._x.call(null,e))||isNaN(h=+this._y.call(null,e)))return this;var n,s=this._root,i,r,a,o=this._x0,l=this._y0,c=this._x1,d=this._y1,u,h,g,f,x,m,p,v;if(!s)return this;if(s.length)for(;;){if((x=u>=(g=(o+c)/2))?o=g:c=g,(m=h>=(f=(l+d)/2))?l=f:d=f,n=s,!(s=s[p=m<<1|x]))return this;if(!s.length)break;(n[p+1&3]||n[p+2&3]||n[p+3&3])&&(i=n,v=p)}for(;s.data!==e;)if(r=s,!(s=s.next))return this;return(a=s.next)&&delete s.next,r?(a?r.next=a:delete r.next,this):n?(a?n[p]=a:delete n[p],(s=n[0]||n[1]||n[2]||n[3])&&s===(n[3]||n[2]||n[1]||n[0])&&!s.length&&(i?i[v]=s:this._root=s),this):(this._root=a,this)}function cr(e){for(var n=0,s=e.length;n<s;++n)this.remove(e[n]);return this}function dr(){return this._root}function ur(){var e=0;return this.visit(function(n){if(!n.length)do++e;while(n=n.next)}),e}function pr(e){var n=[],s,i=this._root,r,a,o,l,c;for(i&&n.push(new ue(i,this._x0,this._y0,this._x1,this._y1));s=n.pop();)if(!e(i=s.node,a=s.x0,o=s.y0,l=s.x1,c=s.y1)&&i.length){var d=(a+l)/2,u=(o+c)/2;(r=i[3])&&n.push(new ue(r,d,u,l,c)),(r=i[2])&&n.push(new ue(r,a,u,d,c)),(r=i[1])&&n.push(new ue(r,d,o,l,u)),(r=i[0])&&n.push(new ue(r,a,o,d,u))}return this}function hr(e){var n=[],s=[],i;for(this._root&&n.push(new ue(this._root,this._x0,this._y0,this._x1,this._y1));i=n.pop();){var r=i.node;if(r.length){var a,o=i.x0,l=i.y0,c=i.x1,d=i.y1,u=(o+c)/2,h=(l+d)/2;(a=r[0])&&n.push(new ue(a,o,l,u,h)),(a=r[1])&&n.push(new ue(a,u,l,c,h)),(a=r[2])&&n.push(new ue(a,o,h,u,d)),(a=r[3])&&n.push(new ue(a,u,h,c,d))}s.push(i)}for(;i=s.pop();)e(i.node,i.x0,i.y0,i.x1,i.y1);return this}function mr(e){return e[0]}function gr(e){return arguments.length?(this._x=e,this):this._x}function fr(e){return e[1]}function br(e){return arguments.length?(this._y=e,this):this._y}function He(e,n,s){var i=new Rn(n??mr,s??fr,NaN,NaN,NaN,NaN);return e==null?i:i.addAll(e)}function Rn(e,n,s,i,r,a){this._x=e,this._y=n,this._x0=s,this._y0=i,this._x1=r,this._y1=a,this._root=void 0}function yr(e){for(var n={data:e.data},s=n;e=e.next;)s=s.next={data:e.data};return n}var fe=He.prototype=Rn.prototype;fe.copy=function(){var e=new Rn(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root,s,i;if(!n)return e;if(!n.length)return e._root=yr(n),e;for(s=[{source:n,target:e._root=new Array(4)}];n=s.pop();)for(var r=0;r<4;++r)(i=n.source[r])&&(i.length?s.push({source:i,target:n.target[r]=new Array(4)}):n.target[r]=yr(i));return e};fe.add=tr;fe.addAll=sr;fe.cover=rr;fe.data=ir;fe.extent=ar;fe.find=or;fe.remove=lr;fe.removeAll=cr;fe.root=dr;fe.size=ur;fe.visit=pr;fe.visitAfter=hr;fe.x=gr;fe.y=br;function ce(e){return function(){return e}}function xe(e){return(e()-.5)*1e-6}function va(e){return e.x+e.vx}function ka(e){return e.y+e.vy}function Fn(e){var n,s,i,r=1,a=1;typeof e!="function"&&(e=ce(e==null?1:+e));function o(){for(var d,u=n.length,h,g,f,x,m,p,v=0;v<a;++v)for(h=He(n,va,ka).visitAfter(l),d=0;d<u;++d)g=n[d],m=s[g.index],p=m*m,f=g.x+g.vx,x=g.y+g.vy,h.visit(b);function b(y,k,S,T,w){var E=y.data,A=y.r,F=m+A;if(E){if(E.index>g.index){var $=f-E.x-E.vx,R=x-E.y-E.vy,_=$*$+R*R;_<F*F&&($===0&&($=xe(i),_+=$*$),R===0&&(R=xe(i),_+=R*R),_=(F-(_=Math.sqrt(_)))/_*r,g.vx+=($*=_)*(F=(A*=A)/(p+A)),g.vy+=(R*=_)*F,E.vx-=$*(F=1-F),E.vy-=R*F)}return}return k>f+F||T<f-F||S>x+F||w<x-F}}function l(d){if(d.data)return d.r=s[d.data.index];for(var u=d.r=0;u<4;++u)d[u]&&d[u].r>d.r&&(d.r=d[u].r)}function c(){if(n){var d,u=n.length,h;for(s=new Array(u),d=0;d<u;++d)h=n[d],s[h.index]=+e(h,d,n)}}return o.initialize=function(d,u){n=d,i=u,c()},o.iterations=function(d){return arguments.length?(a=+d,o):a},o.strength=function(d){return arguments.length?(r=+d,o):r},o.radius=function(d){return arguments.length?(e=typeof d=="function"?d:ce(+d),c(),o):e},o}function xa(e){return e.index}function vr(e,n){var s=e.get(n);if(!s)throw new Error("node not found: "+n);return s}function Ln(e){var n=xa,s=h,i,r=ce(30),a,o,l,c,d,u=1;e==null&&(e=[]);function h(p){return 1/Math.min(l[p.source.index],l[p.target.index])}function g(p){for(var v=0,b=e.length;v<u;++v)for(var y=0,k,S,T,w,E,A,F;y<b;++y)k=e[y],S=k.source,T=k.target,w=T.x+T.vx-S.x-S.vx||xe(d),E=T.y+T.vy-S.y-S.vy||xe(d),A=Math.sqrt(w*w+E*E),A=(A-a[y])/A*p*i[y],w*=A,E*=A,T.vx-=w*(F=c[y]),T.vy-=E*F,S.vx+=w*(F=1-F),S.vy+=E*F}function f(){if(o){var p,v=o.length,b=e.length,y=new Map(o.map((S,T)=>[n(S,T,o),S])),k;for(p=0,l=new Array(v);p<b;++p)k=e[p],k.index=p,typeof k.source!="object"&&(k.source=vr(y,k.source)),typeof k.target!="object"&&(k.target=vr(y,k.target)),l[k.source.index]=(l[k.source.index]||0)+1,l[k.target.index]=(l[k.target.index]||0)+1;for(p=0,c=new Array(b);p<b;++p)k=e[p],c[p]=l[k.source.index]/(l[k.source.index]+l[k.target.index]);i=new Array(b),x(),a=new Array(b),m()}}function x(){if(o)for(var p=0,v=e.length;p<v;++p)i[p]=+s(e[p],p,e)}function m(){if(o)for(var p=0,v=e.length;p<v;++p)a[p]=+r(e[p],p,e)}return g.initialize=function(p,v){o=p,d=v,f()},g.links=function(p){return arguments.length?(e=p,f(),g):e},g.id=function(p){return arguments.length?(n=p,g):n},g.iterations=function(p){return arguments.length?(u=+p,g):u},g.strength=function(p){return arguments.length?(s=typeof p=="function"?p:ce(+p),x(),g):s},g.distance=function(p){return arguments.length?(r=typeof p=="function"?p:ce(+p),m(),g):r},g}var wa={value:()=>{}};function xr(){for(var e=0,n=arguments.length,s={},i;e<n;++e){if(!(i=arguments[e]+"")||i in s||/[\s.]/.test(i))throw new Error("illegal type: "+i);s[i]=[]}return new jt(s)}function jt(e){this._=e}function _a(e,n){return e.trim().split(/^|\s+/).map(function(s){var i="",r=s.indexOf(".");if(r>=0&&(i=s.slice(r+1),s=s.slice(0,r)),s&&!n.hasOwnProperty(s))throw new Error("unknown type: "+s);return{type:s,name:i}})}jt.prototype=xr.prototype={constructor:jt,on:function(e,n){var s=this._,i=_a(e+"",s),r,a=-1,o=i.length;if(arguments.length<2){for(;++a<o;)if((r=(e=i[a]).type)&&(r=Sa(s[r],e.name)))return r;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++a<o;)if(r=(e=i[a]).type)s[r]=kr(s[r],e.name,n);else if(n==null)for(r in s)s[r]=kr(s[r],e.name,null);return this},copy:function(){var e={},n=this._;for(var s in n)e[s]=n[s].slice();return new jt(e)},call:function(e,n){if((r=arguments.length-2)>0)for(var s=new Array(r),i=0,r,a;i<r;++i)s[i]=arguments[i+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(a=this._[e],i=0,r=a.length;i<r;++i)a[i].value.apply(n,s)},apply:function(e,n,s){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var i=this._[e],r=0,a=i.length;r<a;++r)i[r].value.apply(n,s)}};function Sa(e,n){for(var s=0,i=e.length,r;s<i;++s)if((r=e[s]).name===n)return r.value}function kr(e,n,s){for(var i=0,r=e.length;i<r;++i)if(e[i].name===n){e[i]=wa,e=e.slice(0,i).concat(e.slice(i+1));break}return s!=null&&e.push({name:n,value:s}),e}var Mn=xr;var et=0,dt=0,ct=0,_r=1e3,Ut,ut,Xt=0,ze=0,Gt=0,pt=typeof performance=="object"&&performance.now?performance:Date,Sr=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Nn(){return ze||(Sr(Ta),ze=pt.now()+Gt)}function Ta(){ze=0}function In(){this._call=this._time=this._next=null}In.prototype=qt.prototype={constructor:In,restart:function(e,n,s){if(typeof e!="function")throw new TypeError("callback is not a function");s=(s==null?Nn():+s)+(n==null?0:+n),!this._next&&ut!==this&&(ut?ut._next=this:Ut=this,ut=this),this._call=e,this._time=s,Dn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Dn())}};function qt(e,n,s){var i=new In;return i.restart(e,n,s),i}function Tr(){Nn(),++et;for(var e=Ut,n;e;)(n=ze-e._time)>=0&&e._call.call(void 0,n),e=e._next;--et}function wr(){ze=(Xt=pt.now())+Gt,et=dt=0;try{Tr()}finally{et=0,Ca(),ze=0}}function Ea(){var e=pt.now(),n=e-Xt;n>_r&&(Gt-=n,Xt=e)}function Ca(){for(var e,n=Ut,s,i=1/0;n;)n._call?(i>n._time&&(i=n._time),e=n,n=n._next):(s=n._next,n._next=null,n=e?e._next=s:Ut=s);ut=e,Dn(i)}function Dn(e){if(!et){dt&&(dt=clearTimeout(dt));var n=e-ze;n>24?(e<1/0&&(dt=setTimeout(wr,e-pt.now()-Gt)),ct&&(ct=clearInterval(ct))):(ct||(Xt=pt.now(),ct=setInterval(Ea,_r)),et=1,Sr(wr))}}function Er(){let e=1;return()=>(e=(1664525*e+1013904223)%4294967296)/4294967296}function Cr(e){return e.x}function $r(e){return e.y}var $a=10,Aa=Math.PI*(3-Math.sqrt(5));function Pn(e){var n,s=1,i=.001,r=1-Math.pow(i,1/300),a=0,o=.6,l=new Map,c=qt(h),d=Mn("tick","end"),u=Er();e==null&&(e=[]);function h(){g(),d.call("tick",n),s<i&&(c.stop(),d.call("end",n))}function g(m){var p,v=e.length,b;m===void 0&&(m=1);for(var y=0;y<m;++y)for(s+=(a-s)*r,l.forEach(function(k){k(s)}),p=0;p<v;++p)b=e[p],b.fx==null?b.x+=b.vx*=o:(b.x=b.fx,b.vx=0),b.fy==null?b.y+=b.vy*=o:(b.y=b.fy,b.vy=0);return n}function f(){for(var m=0,p=e.length,v;m<p;++m){if(v=e[m],v.index=m,v.fx!=null&&(v.x=v.fx),v.fy!=null&&(v.y=v.fy),isNaN(v.x)||isNaN(v.y)){var b=$a*Math.sqrt(.5+m),y=m*Aa;v.x=b*Math.cos(y),v.y=b*Math.sin(y)}(isNaN(v.vx)||isNaN(v.vy))&&(v.vx=v.vy=0)}}function x(m){return m.initialize&&m.initialize(e,u),m}return f(),n={tick:g,restart:function(){return c.restart(h),n},stop:function(){return c.stop(),n},nodes:function(m){return arguments.length?(e=m,f(),l.forEach(x),n):e},alpha:function(m){return arguments.length?(s=+m,n):s},alphaMin:function(m){return arguments.length?(i=+m,n):i},alphaDecay:function(m){return arguments.length?(r=+m,n):+r},alphaTarget:function(m){return arguments.length?(a=+m,n):a},velocityDecay:function(m){return arguments.length?(o=1-m,n):1-o},randomSource:function(m){return arguments.length?(u=m,l.forEach(x),n):u},force:function(m,p){return arguments.length>1?(p==null?l.delete(m):l.set(m,x(p)),n):l.get(m)},find:function(m,p,v){var b=0,y=e.length,k,S,T,w,E;for(v==null?v=1/0:v*=v,b=0;b<y;++b)w=e[b],k=m-w.x,S=p-w.y,T=k*k+S*S,T<v&&(E=w,v=T);return E},on:function(m,p){return arguments.length>1?(d.on(m,p),n):d.on(m)}}}function On(){var e,n,s,i,r=ce(-30),a,o=1,l=1/0,c=.81;function d(f){var x,m=e.length,p=He(e,Cr,$r).visitAfter(h);for(i=f,x=0;x<m;++x)n=e[x],p.visit(g)}function u(){if(e){var f,x=e.length,m;for(a=new Array(x),f=0;f<x;++f)m=e[f],a[m.index]=+r(m,f,e)}}function h(f){var x=0,m,p,v=0,b,y,k;if(f.length){for(b=y=k=0;k<4;++k)(m=f[k])&&(p=Math.abs(m.value))&&(x+=m.value,v+=p,b+=p*m.x,y+=p*m.y);f.x=b/v,f.y=y/v}else{m=f,m.x=m.data.x,m.y=m.data.y;do x+=a[m.data.index];while(m=m.next)}f.value=x}function g(f,x,m,p){if(!f.value)return!0;var v=f.x-n.x,b=f.y-n.y,y=p-x,k=v*v+b*b;if(y*y/c<k)return k<l&&(v===0&&(v=xe(s),k+=v*v),b===0&&(b=xe(s),k+=b*b),k<o&&(k=Math.sqrt(o*k)),n.vx+=v*f.value*i/k,n.vy+=b*f.value*i/k),!0;if(f.length||k>=l)return;(f.data!==n||f.next)&&(v===0&&(v=xe(s),k+=v*v),b===0&&(b=xe(s),k+=b*b),k<o&&(k=Math.sqrt(o*k)));do f.data!==n&&(y=a[f.data.index]*i/k,n.vx+=v*y,n.vy+=b*y);while(f=f.next)}return d.initialize=function(f,x){e=f,s=x,u()},d.strength=function(f){return arguments.length?(r=typeof f=="function"?f:ce(+f),u(),d):r},d.distanceMin=function(f){return arguments.length?(o=f*f,d):Math.sqrt(o)},d.distanceMax=function(f){return arguments.length?(l=f*f,d):Math.sqrt(l)},d.theta=function(f){return arguments.length?(c=f*f,d):Math.sqrt(c)},d}function Bn(e){var n=ce(.1),s,i,r;typeof e!="function"&&(e=ce(e==null?0:+e));function a(l){for(var c=0,d=s.length,u;c<d;++c)u=s[c],u.vx+=(r[c]-u.x)*i[c]*l}function o(){if(s){var l,c=s.length;for(i=new Array(c),r=new Array(c),l=0;l<c;++l)i[l]=isNaN(r[l]=+e(s[l],l,s))?0:+n(s[l],l,s)}}return a.initialize=function(l){s=l,o()},a.strength=function(l){return arguments.length?(n=typeof l=="function"?l:ce(+l),o(),a):n},a.x=function(l){return arguments.length?(e=typeof l=="function"?l:ce(+l),o(),a):e},a}function Hn(e){var n=ce(.1),s,i,r;typeof e!="function"&&(e=ce(e==null?0:+e));function a(l){for(var c=0,d=s.length,u;c<d;++c)u=s[c],u.vy+=(r[c]-u.y)*i[c]*l}function o(){if(s){var l,c=s.length;for(i=new Array(c),r=new Array(c),l=0;l<c;++l)i[l]=isNaN(r[l]=+e(s[l],l,s))?0:+n(s[l],l,s)}}return a.initialize=function(l){s=l,o()},a.strength=function(l){return arguments.length?(n=typeof l=="function"?l:ce(+l),o(),a):n},a.y=function(l){return arguments.length?(e=typeof l=="function"?l:ce(+l),o(),a):e},a}function zn(e,n,s){let i=new Map,r=e.map(c=>{let d=s?.get(c.id),u={...c,deg:0,r:4};return d&&(u.x=d.x,u.y=d.y),i.set(c.id,u),u}),a=[];for(let c of n){let d=i.get(c.src),u=i.get(c.dst);!d||!u||d===u||(d.deg++,u.deg++,a.push({source:d,target:u,kind:c.kind,weight:c.weight,count:c.count,lines:c.lines}))}for(let c of r)c.r=4+Math.min(12,Math.sqrt(c.deg)*1.8)+(c.root?3:0);let o=r.length,l=Pn(r).force("link",Ln(a).distance(c=>c.kind==="co_changes"?90:c.kind==="defines"?36:60).strength(c=>c.kind==="co_changes"?.15:.5)).force("charge",On().strength(o>400?-60:-140).distanceMax(600)).force("collide",Fn().radius(c=>c.r+4).iterations(2)).force("center",An(0,0).strength(.05)).force("x",Bn(0).strength(.02)).force("y",Hn(0).strength(.02)).alphaDecay(o>400?.05:.03).velocityDecay(.4);return{nodes:r,links:a,sim:l,byId:i}}function Ar(e,n){let s=zn(e,n);s.sim.stop();let i=s.nodes.filter(x=>x.kind==="file"),r=s.nodes.filter(x=>x.kind!=="file"),a=new Map;for(let x of i){let m=(x.path??x.label).split("/").slice(0,-1).join("/")||".";(a.get(m)??a.set(m,[]).get(m)).push(x)}let o=[...a.keys()].sort((x,m)=>x.split("/").length-m.split("/").length||x.localeCompare(m)),l=220,c=34,d=-(o.length-1)*l/2,u=new Map;for(let x of o){let m=a.get(x).sort((v,b)=>v.label.localeCompare(b.label)),p=-(m.length-1)*c/2;for(let v of m)v.x=d,v.y=p,v.fx=d,v.fy=p,u.set(v.path??v.label,v),p+=c;d+=l}let h=new Map,g=[];for(let x of r){let m=x.path?u.get(x.path):void 0;if(!m){g.push(x);continue}let p=h.get(m.id)??0;h.set(m.id,p+1),x.x=(m.x??0)+70+p%3*46,x.y=(m.y??0)+Math.floor(p/3)*14-8,x.fx=x.x,x.fy=x.y}let f=(o.length?a.get(o[0]).length:0)*c/2+60;for(let x of g)x.x=-(g.length-1)*60/2+g.indexOf(x)*60,x.y=f,x.fx=x.x,x.fy=x.y;return f+=40,s}var jn=e=>Re(e.kind),Un=e=>"circle";function Rr(e,n=1){return{color:Ze(e),dash:e==="calls"?[4,3]:e==="co_changes"?[1,3]:e==="references"?[2,2]:void 0,width:e==="co_changes"?1+n*2:1,alpha:e==="co_changes"?.35:.45,directed:zt.has(e)}}function Fr(e,n,s,i,r){switch(e.beginPath(),n){case"square":{let a=r*.88;e.rect(s-a,i-a,a*2,a*2);break}case"diamond":{let a=r*1.25;e.moveTo(s,i-a),e.lineTo(s+a,i),e.lineTo(s,i+a),e.lineTo(s-a,i),e.closePath();break}case"triangle":{let a=r*1.3;e.moveTo(s,i-a),e.lineTo(s+a*.87,i+a*.5),e.lineTo(s-a*.87,i+a*.5),e.closePath();break}case"hexagon":{let a=r*1.12;for(let o=0;o<6;o++){let l=Math.PI/3*o,c=s+a*Math.cos(l),d=i+a*Math.sin(l);o===0?e.moveTo(c,d):e.lineTo(c,d)}e.closePath();break}default:e.arc(s,i,r,0,Math.PI*2)}}function Lr(e){switch(e){case"square":return"M1.5 1.5H10.5V10.5H1.5Z";case"diamond":return"M6 0.5L11.5 6L6 11.5L0.5 6Z";case"triangle":return"M6 0.8L11.4 10.6H0.6Z";case"hexagon":return"M11.5 6L8.75 10.76H3.25L0.5 6L3.25 1.24H8.75Z";default:return"M6 1A5 5 0 1 1 5.99 1Z"}}function ht({shape:e,color:n}){let s=e==="ring";return t("svg",{class:"glyph",width:"11",height:"11",viewBox:"0 0 12 12","aria-hidden":"true",children:t("path",{d:Lr(e),fill:s?"none":n,stroke:n,"stroke-width":s?1.6:0})})}function Wt({color:e,dash:n}){return t("svg",{class:"glyph",width:"18",height:"8",viewBox:"0 0 18 8","aria-hidden":"true",children:t("line",{x1:"0",y1:"4",x2:"18",y2:"4",stroke:e,"stroke-width":"2","stroke-dasharray":n?.length?n.join(" "):void 0})})}var Ra=e=>e.kind==="file"||e.kind==="package"?Ht(e.label):e.label.split(".").pop()??e.label,Fa=()=>document.documentElement.getAttribute("data-theme")==="dark"||document.documentElement.getAttribute("data-theme")!=="light"&&window.matchMedia("(prefers-color-scheme: dark)").matches;function De(e){let n=ae(null),s=ae(null),i=ae(null),r=ae({k:1,x:0,y:0}),a=ae(!1),o=ae(null),l=ae(null),[c,d]=C(null),[u,h]=C(!1),g=ae(e);g.current=e;let f=()=>{let $=n.current,R=i.current;if(!$||!R)return;let _=$.getContext("2d");if(!_)return;let I=window.devicePixelRatio||1,X=$.width/I,q=$.height/I,H=r.current,re=Fa(),{selected:ne,highlight:Oe}=g.current,M=g.current.colorOf??jn,se=g.current.shapeOf??Un,be=g.current.edgeStyleOf??Rr,We=g.current.labelOf??Ra,ke=ne?R.byId.get(ne):void 0,Te=new Set;if(ke){Te.add(ke.id);for(let Z of R.links){let he=Z.source,de=Z.target;he.id===ke.id&&Te.add(de.id),de.id===ke.id&&Te.add(he.id)}}_.setTransform(I,0,0,I,0,0),_.clearRect(0,0,X,q),_.translate(X/2+H.x,q/2+H.y),_.scale(H.k,H.k);for(let Z of R.links){let he=Z.source,de=Z.target;if(he.x===void 0||de.x===void 0)continue;let _t=`${he.id}|${de.id}|${Z.kind}`,hn=Oe?.has(_t),St=ke&&!(Te.has(he.id)&&Te.has(de.id))&&he.id!==ke.id&&de.id!==ke.id,Ee=be(Z.kind,Z.weight);if(_.globalAlpha=hn?1:St?.06:Ee.alpha??.45,_.strokeStyle=Ee.color,_.lineWidth=(hn?2.5:Ee.width??1)/H.k,_.setLineDash(Ee.dash?Ee.dash.map(Tt=>Tt/H.k):[]),_.beginPath(),_.moveTo(he.x,he.y??0),_.lineTo(de.x,de.y??0),_.stroke(),_.setLineDash([]),Ee.directed&&H.k>.5){let Tt=de.x-he.x,hs=(de.y??0)-(he.y??0),ms=Math.hypot(Tt,hs)||1,it=Tt/ms,at=hs/ms,mn=de.x-it*(de.r+2),gn=(de.y??0)-at*(de.r+2),Le=5/H.k;_.fillStyle=Ee.color,_.beginPath(),_.moveTo(mn,gn),_.lineTo(mn-it*Le*2-at*Le,gn-at*Le*2+it*Le),_.lineTo(mn-it*Le*2+at*Le,gn-at*Le*2-it*Le),_.closePath(),_.fill()}}let Je=R.nodes.length<=120||H.k>1.6;_.font=`${11/H.k}px system-ui, sans-serif`,_.textBaseline="middle";for(let Z of R.nodes){if(Z.x===void 0||Z.y===void 0)continue;let he=ke&&!Te.has(Z.id);_.globalAlpha=he?.2:1;let de=se(Z),_t=M(Z);if(Fr(_,de,Z.x,Z.y,Z.r/Math.max(1,H.k**.5)),de==="ring"?(_.fillStyle=re?"#171a21":"#ffffff",_.fill(),_.lineWidth=1.6/H.k,_.strokeStyle=_t,_.stroke()):(_.fillStyle=_t,_.fill()),(Z.root||Z.id===ne||Z===o.current)&&(_.lineWidth=2.5/H.k,_.strokeStyle=re?"#e5e7eb":"#1b1f24",_.stroke()),Je||Z.root||Z.deg>3||Te.has(Z.id)||Z===o.current||Z.id===ne){let St=We(Z),Ee=Z.x+Z.r/Math.max(1,H.k**.5)+3/H.k;_.lineWidth=3/H.k,_.strokeStyle=re?"#171a21":"#ffffff",_.strokeText(St,Ee,Z.y),_.fillStyle=re?"#e5e7eb":"#1b1f24",_.fillText(St,Ee,Z.y)}}_.globalAlpha=1},x=()=>{let $=n.current,R=i.current;if(!$||!R?.nodes.length)return;let _=window.devicePixelRatio||1,I=$.width/_,X=$.height/_,q=Number.POSITIVE_INFINITY,H=Number.POSITIVE_INFINITY,re=Number.NEGATIVE_INFINITY,ne=Number.NEGATIVE_INFINITY;for(let be of R.nodes)be.x===void 0||be.y===void 0||(q=Math.min(q,be.x),H=Math.min(H,be.y),re=Math.max(re,be.x),ne=Math.max(ne,be.y));let Oe=Math.max(100,re-q+120),M=Math.max(100,ne-H+120),se=Math.min(2.5,Math.min(I/Oe,X/M));r.current={k:se,x:-((q+re)/2)*se,y:-((H+ne)/2)*se},f()};Us(e.handle??null,()=>({fit:x}),[]);let m=e.nodes.map($=>$.id).join("|"),p=e.edges.map($=>`${$.src}|${$.dst}|${$.kind}`).join(`
3
- `),v=e.mode??"galaxy";U(()=>{let $=e.keepPositions?i.current?.byId:void 0;i.current?.sim.stop();let R=v==="hierarchy"?Ar(e.nodes,e.edges):zn(e.nodes,e.edges,$);i.current=R,a.current=!1;let _=!1,I=!1,X=0;if(v==="hierarchy"){x();return}return R.sim.on("tick",()=>{X++,(X%2===0||R.sim.alpha()<.05)&&f(),!_&&(X===30||R.sim.alpha()<.3)&&(_=!0,a.current||x())}),R.sim.on("end",()=>{I||(I=!0,_=!0,a.current||x())}),()=>R.sim.stop()},[m,p,v]),U(()=>{f()},[e.selected,e.highlight,c,e.colorOf,e.shapeOf,e.edgeStyleOf]),U(()=>{let $=s.current,R=n.current;if(!$||!R)return;let _=()=>{let H=window.devicePixelRatio||1;R.width=Math.max(1,$.clientWidth*H),R.height=Math.max(1,$.clientHeight*H),f()};_();let I=new ResizeObserver(_);I.observe($);let X=window.matchMedia("(prefers-color-scheme: dark)");X.addEventListener("change",f);let q=new MutationObserver(f);return q.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>{I.disconnect(),X.removeEventListener("change",f),q.disconnect()}},[]);let b=$=>{let _=n.current.getBoundingClientRect(),I=r.current;return{x:($.clientX-_.left-_.width/2-I.x)/I.k,y:($.clientY-_.top-_.height/2-I.y)/I.k}},y=$=>{let R=i.current;if(!R)return null;let _=b($),I=r.current,X=null,q=Number.POSITIVE_INFINITY;for(let H of R.nodes){if(H.x===void 0||H.y===void 0)continue;let re=Math.hypot(H.x-_.x,H.y-_.y),ne=H.r/Math.max(1,I.k**.5)+6/I.k;re<ne&&re<q&&(q=re,X=H)}return X},k=$=>{let R=y($),_=r.current;l.current={node:R??void 0,px:$.clientX,py:$.clientY,vx:_.x,vy:_.y,moved:!1},R&&(R.fx=R.x,R.fy=R.y,i.current?.sim.alphaTarget(.2).restart()),h(!0),$.preventDefault()},S=$=>{let R=l.current;if(R){let I=$.clientX-R.px,X=$.clientY-R.py;if(Math.abs(I)+Math.abs(X)>3&&(R.moved=!0),R.node){let q=b($);R.node.fx=q.x,R.node.fy=q.y,v==="hierarchy"&&(R.node.x=q.x,R.node.y=q.y,f())}else R.moved&&(a.current=!0),r.current={...r.current,x:R.vx+I,y:R.vy+X},f();return}let _=y($);_!==o.current&&(o.current=_,d(_))},T=$=>{let R=l.current;l.current=null,h(!1),R&&(R.node?(v!=="hierarchy"&&(R.node.fx=null,R.node.fy=null,i.current?.sim.alphaTarget(0)),R.moved||g.current.onSelect?.(R.node.id===g.current.selected?null:R.node.id)):R.moved||g.current.onSelect?.(null))},w=$=>{$.preventDefault();let _=n.current.getBoundingClientRect(),I=r.current;a.current=!0;let X=$.deltaY>0?.9:1.1,q=Math.max(.05,Math.min(8,I.k*X)),H=$.clientX-_.left-_.width/2,re=$.clientY-_.top-_.height/2;r.current={k:q,x:H-(H-I.x)*q/I.k,y:re-(re-I.y)*q/I.k},f()},E=$=>{let R=y($);R&&g.current.onActivate?.(R.id)},A=[...new Set(e.nodes.map($=>$.kind))],F=[...new Set(e.edges.map($=>$.kind))];return t("div",{class:"gwrap",ref:s,children:[t("canvas",{ref:n,class:L(u&&"drag",c&&!u&&"hover"),onMouseDown:k,onMouseMove:S,onMouseUp:T,onMouseLeave:()=>{o.current=null,d(null),l.current&&!l.current.node&&(l.current=null)},onWheel:w,onDblClick:E}),c&&!u&&t("div",{class:"overlay tip",style:{left:12,top:12},children:[t("b",{children:c.kind})," ",c.label,c.path&&c.kind!=="file"?t("span",{class:"muted",children:[" ","\xB7 ",c.path,c.line?`:${c.line}`:""]}):null,t("span",{class:"muted",children:[" ","\xB7 ",c.deg," edge",c.deg===1?"":"s"]})]}),e.legend!==!1&&t("div",{class:"overlay legend",children:[A.map($=>{let R=e.nodes.find(_=>_.kind===$);return t("span",{children:[e.shapeOf||e.colorOf?t(ht,{shape:(e.shapeOf??Un)(R),color:(e.colorOf??jn)(R)}):t("i",{style:{background:Re($)}}),$]})}),F.map($=>{let R=e.edgeStyleOf?.($,1);return t("span",{children:[R?t(Wt,{color:R.color,dash:R.dash}):t("s",{style:{borderColor:Ze($)}}),$]})})]}),t("button",{type:"button",class:"overlay fit",onClick:x,children:"fit view"})]})}function Mr(e,n,s,i,r){let a=e.reduce((x,m)=>x+(m.value??m.size),0);if(!a||!e.length)return[];let o=i*r/a,l=[],c=0,d=n,u=s,h=i,g=r,f=[...e].sort((x,m)=>(m.value??m.size)-(x.value??x.size));for(;c<f.length;){let x=h>=g,m=x?g:h,p=[],v=0,b=Number.POSITIVE_INFINITY;for(;c<f.length;){let S=f[c],T=(S.value??S.size)*o,w=[...p,S],E=v+T,A=Math.max(...w.map(R=>(R.value??R.size)*o)),F=Math.min(...w.map(R=>(R.value??R.size)*o)),$=Math.max(m*m*A/(E*E),E*E/(m*m*F));if($>b&&p.length)break;b=$,p=w,v=E,c++}let y=m?v/m:0,k=0;for(let S of p){let T=y?(S.value??S.size)*o/y:0;l.push(x?{node:S,x:d,y:u+k,w:y,h:T,depth:0}:{node:S,x:d+k,y:u,w:T,h:y,depth:0}),k+=T}x?(d+=y,h-=y):(u+=y,g-=y)}return l}function Ir(e,n,s,i=18){let r=[];for(let a of Mr(e.children??[],0,0,n,s))if(r.push({...a,depth:0}),a.node.children?.length&&a.w>40&&a.h>30)for(let o of Mr(a.node.children,a.x+2,a.y+i,Math.max(0,a.w-4),Math.max(0,a.h-i-2)))r.push({...o,depth:1});return r}function Dr(e,n,s){let i={name:n||"(project)",path:n,size:0,children:[]},r=new Map([["",i]]),a=l=>{let c=r.get(l);if(c)return c;let d=a(l.includes("/")?l.slice(0,l.lastIndexOf("/")):""),u={name:l.split("/").pop()??l,path:l,size:0,children:[]};return d.children.push(u),r.set(l,u),u};for(let l of e){if(n&&!l.path.startsWith(n))continue;let c=n?l.path.slice(n.length).replace(/^\//,""):l.path,d=c.includes("/")?c.slice(0,c.lastIndexOf("/")):"",u=Math.max(1,s(l));a(d).children.push({name:c.split("/").pop()??c,path:l.path,size:u,data:l})}let o=l=>(l.children?.length&&(l.size=l.children.reduce((c,d)=>c+o(d),0)),l.size);return o(i),i}var Nr={typescript:"#2563eb",tsx:"#3b82f6",javascript:"#d97706",python:"#16a34a",go:"#0d9488",php:"#6366f1",other:"#6b7280"};function La(e){let n=Math.max(0,Math.min(1,e)),s=Math.round(37+180*n),i=Math.round(99+20*n),r=Math.round(235+-229*n);return`rgb(${s},${i},${r})`}function Ma({files:e,arch:n}){let[s,i]=C(""),[r,a]=C("language"),[o,l]=C("loc"),[c,d]=C(null),u=ae(null),[h,g]=C({w:900,h:520});U(()=>{let b=u.current;if(!b)return;let y=new ResizeObserver(()=>g({w:b.clientWidth,h:b.clientHeight}));return y.observe(b),g({w:b.clientWidth,h:b.clientHeight}),()=>y.disconnect()},[]);let f=V(()=>{let b=Dr(e,s,y=>o==="uniform"?1:y.loc||Math.max(1,y.size/40));return Ir(b,h.w,h.h)},[e,s,o,h]),m=c?(b=>e.filter(y=>y.path===b||y.path.startsWith(`${b}/`)))(c):[],p=m.length===1&&m[0]?.path===c?m[0]:void 0,v=n?.entryPoints.filter(b=>b.kind!=="script")??[];return t("div",{class:"grid wide",style:{alignItems:"start"},children:[t("div",{children:[t("div",{class:"row",style:{marginBottom:8},children:[t("span",{class:"row tight",children:[t("a",{onClick:()=>i(""),children:n?.project.name??"project"}),s.split("/").filter(Boolean).map((b,y,k)=>t(N,{children:[t("span",{class:"muted",children:"\u203A"}),t("a",{onClick:()=>i(k.slice(0,y+1).join("/")),children:b})]}))]}),t("span",{class:"spacer"}),t("span",{class:"row tight",children:[t("button",{type:"button",class:L("chip",o==="loc"&&"on"),onClick:()=>l("loc"),children:"size: loc"}),t("button",{type:"button",class:L("chip",o==="uniform"&&"on"),onClick:()=>l("uniform"),children:"uniform"}),t("button",{type:"button",class:L("chip",r==="language"&&"on"),onClick:()=>a("language"),children:"color: language"}),t("button",{type:"button",class:L("chip",r==="heat"&&"on"),onClick:()=>a("heat"),children:"heat"})]})]}),t("div",{class:"treemap",ref:u,children:f.map(b=>{let y=b.node.data,k=!!b.node.children?.length,S=y?r==="heat"?La(y.score):Nr[y.language??"other"]??Nr.other:void 0;return t("div",{class:L("cell",k&&"dir",c===b.node.path&&"sel"),style:{left:b.x,top:b.y,width:Math.max(0,b.w),height:Math.max(0,b.h),background:S},title:y?`${y.path} \xB7 ${y.loc} loc \xB7 ${y.symbols} symbols \xB7 heat ${y.score.toFixed(2)}`:`${b.node.path} \xB7 ${b.node.size} loc`,onClick:T=>{T.stopPropagation(),d(b.node.path)},onDblClick:T=>{T.stopPropagation(),k?i(b.node.path):y&&z("explore",{file:y.path})},children:k?t("span",{class:"lbl",children:[b.node.name,"/"]}):b.w>50&&b.h>14?b.node.name:""})})}),t("div",{class:"muted small",style:{marginTop:6},children:"Area is lines of code (or uniform). Double-click a folder to open it, a file to read it. Heat mixes fan-in, recent commits and complexity; it is a signal, not a grade."})]}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("h3",{children:c??"selection"}),p?t(N,{children:[t("div",{class:"row small",children:[t(D,{children:p.language??"?"}),t(D,{children:[p.loc," loc"]}),t(D,{children:[p.symbols," symbols"]}),t(D,{children:["fan-in ",p.fanIn]}),t(D,{children:["heat ",p.score.toFixed(2)]}),t(D,{children:p.status})]}),t("div",{class:"row",style:{marginTop:8},children:[t("button",{type:"button",class:"sm",onClick:()=>z("explore",{file:p.path}),children:"Open source"}),t("button",{type:"button",class:"sm",onClick:()=>z("galaxy",{node:`file:${p.path}`}),children:"Galaxy"})]})]}):m.length?t("div",{class:"row small",children:[t(D,{children:[m.length," files"]}),t(D,{children:[ee(m.reduce((b,y)=>b+y.loc,0))," loc"]}),t(D,{children:[m.reduce((b,y)=>b+y.symbols,0)," symbols"]}),t(D,{children:["mean heat ",(m.reduce((b,y)=>b+y.score,0)/m.length).toFixed(2)]})]}):t("div",{class:"muted small",children:"Click a cell."})]}),t("div",{class:"card",children:[t("h3",{children:"entry points"}),v.length?t("table",{children:t("tbody",{children:v.map(b=>t("tr",{class:"click",onClick:()=>z("explore",{file:b.path}),children:[t("td",{children:t(D,{children:b.kind})}),t("td",{class:"break",children:b.name}),t("td",{class:"muted small break",children:b.path})]}))})}):t("div",{class:"muted small",children:"none found"})]}),n&&t("div",{class:"card",children:[t("h3",{children:"overview"}),t("div",{class:"row small",children:[t(D,{children:[n.overview.files," files"]}),t(D,{children:[n.overview.symbols," symbols"]}),t(D,{children:[n.overview.edges," edges"]}),Object.entries(n.overview.languages).map(([b,y])=>t(D,{children:[b," ",y]}))]}),n.project.description?t("div",{class:"muted small",style:{marginTop:6},children:n.project.description}):null]})]})]})}function Ia(){let e=j(()=>O("/api/routes"),[]);return e.error?t(J,{error:e.error}):e.data?e.data.length?t("div",{class:"card flush",children:t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"method"}),t("th",{children:"path"}),t("th",{children:"framework"}),t("th",{children:"handler"}),t("th",{children:"registered in"})]})}),t("tbody",{children:e.data.map(n=>t("tr",{children:[t("td",{children:t(D,{children:n.method})}),t("td",{class:"mono",children:n.path}),t("td",{class:"muted",children:n.framework}),t("td",{children:n.handlers.map(s=>t("div",{children:[t("a",{onClick:()=>s.path?z("explore",{file:s.path,symbol:s.id}):z("galaxy",{node:s.id}),children:s.name}),s.path?t("span",{class:"muted small",children:[" ",s.path]}):null]}))}),t("td",{class:"muted small",children:t("a",{onClick:()=>z("explore",{file:n.file,line:n.line?String(n.line):void 0}),children:[n.file,n.line?`:${n.line}`:""]})})]}))})]})}):t(W,{children:"No routes detected. express/fastify/hono/koa/hapi/restify registrations, moleculer service schemas and gateway aliases, and Next.js route files are recognised."}):t(B,{})}function Da(){let[e,n]=C("file"),[s,i]=C(""),r=j(()=>O("/api/hotspots",{kind:e,path:s.trim()||void 0,limit:80}),[e,s]),{sorted:a,th:o}=Qe(r.data,"score"),l={fan_in:Math.max(1,...a.map(c=>c.fan_in)),commits_90d:Math.max(1,...a.map(c=>c.commits_90d)),complexity:Math.max(1,...a.map(c=>c.complexity))};return t(N,{children:[t("div",{class:"row",style:{marginBottom:10},children:[t("button",{type:"button",class:L("chip",e==="file"&&"on"),onClick:()=>n("file"),children:"files"}),t("button",{type:"button",class:L("chip",e==="symbol"&&"on"),onClick:()=>n("symbol"),children:"functions and classes"}),t("input",{type:"text",placeholder:"folder prefix, e.g. src/graph/",value:s,onInput:c=>i(c.target.value),style:{width:260}}),t("span",{class:"muted small",children:"Score = 0.4\xB7fan-in + 0.4\xB7commits/90d + 0.2\xB7complexity, log-scaled. A signal of where attention goes, not a quality grade."})]}),r.error?t(J,{error:r.error}):r.data?t("div",{class:"card flush",children:t("table",{children:[t("thead",{children:t("tr",{children:[o("path",e==="file"?"file":"symbol"),o("fan_in","fan-in",!0),o("commits_90d","commits/90d",!0),o("complexity","complexity",!0),o("loc","loc",!0),o("score","score",!0),t("th",{children:"last"})]})}),t("tbody",{children:a.map(c=>t("tr",{class:"click",onClick:()=>c.kind==="file"?z("explore",{file:c.path}):z("explore",{file:c.path.split(" > ")[0],symbol:c.id}),children:[t("td",{class:"break",children:[c.kind!=="file"?t(me,{kind:c.kind}):null,c.path]}),t("td",{class:"num",children:[t(Fe,{value:c.fan_in,max:l.fan_in,width:60})," ",c.fan_in]}),t("td",{class:"num",children:[t(Fe,{value:c.commits_90d,max:l.commits_90d,width:60})," ",c.commits_90d]}),t("td",{class:"num",children:[t(Fe,{value:c.complexity,max:l.complexity,width:60})," ",c.complexity]}),t("td",{class:"num",children:c.loc}),t("td",{class:"num",children:t("b",{children:c.score.toFixed(2)})}),t("td",{class:"muted small",children:c.last_touched})]}))})]})}):t(B,{})]})}function Na(){let e=j(()=>O("/api/clusters"),[]),[n,s]=C(null),[i,r]=C(null),[a,o]=C(new Set),l=V(()=>{let u=e.data;if(!u)return{nodes:[],edges:[]};let h=[],g=[];if(i!==null){let f=u.cycles[i]??[];for(let x of f)h.push({id:`file:${x}`,label:x,kind:"file",path:x,line:null});for(let x=0;x<f.length;x++)g.push({src:`file:${f[x]}`,dst:`file:${f[(x+1)%f.length]}`,kind:"imports",weight:1});return{nodes:h,edges:g}}for(let f of u.clusters){if(a.has(f.id))for(let x of u.members[String(f.id)]??[])h.push({id:`file:${x.path}`,label:x.path,kind:"file",path:x.path,line:null,score:x.score});if(h.push({id:`cluster:${f.id}`,label:`#${f.id} ${f.label} (${f.size})`,kind:"cluster",path:null,line:null}),a.has(f.id))for(let x of u.members[String(f.id)]??[])g.push({src:`file:${x.path}`,dst:`cluster:${f.id}`,kind:"link",weight:.5});for(let[x,m]of Object.entries(f.links))g.push({src:`cluster:${f.id}`,dst:`cluster:${x}`,kind:"imports",weight:Math.min(1,m/10),count:m})}return{nodes:h,edges:g}},[e.data,i,a]);if(e.error)return t(J,{error:e.error});let c=e.data;if(!c)return t(B,{});let d=n?.startsWith("cluster:")?c.clusters.find(u=>String(u.id)===n.slice(8)):void 0;return t("div",{class:"grid wide",style:{alignItems:"start"},children:[t("div",{class:"card flush",style:{height:560},children:l.nodes.length?t(De,{nodes:l.nodes,edges:l.edges,selected:n,onSelect:s,onActivate:u=>{if(u.startsWith("cluster:")){let h=Number(u.slice(8));o(g=>{let f=new Set(g);return f.has(h)?f.delete(h):f.add(h),f})}else u.startsWith("file:")&&z("explore",{file:u.slice(5)})}}):t(W,{children:"No clusters yet. Run a reindex."})}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("h3",{children:["clusters \xB7 ",c.clusters.length]}),t("div",{class:"muted small",style:{marginBottom:6},children:"Connectivity groups from imports and co-change (label propagation). Double-click a cluster to expand its files; they are not proof of architectural boundaries."}),t("div",{class:"list",style:{maxHeight:260},children:c.clusters.map(u=>t("div",{class:L("item",n===`cluster:${u.id}`&&"sel"),onClick:()=>{r(null),s(`cluster:${u.id}`)},children:[t("div",{class:"n",children:["#",u.id," ",u.label," ",t("span",{class:"muted",children:["\xB7 ",u.size," files"]})]}),t("div",{class:"p",children:u.files.slice(0,3).join(", ")})]}))})]}),d&&t("div",{class:"card",children:[t("h3",{children:["cluster #",d.id," members"]}),t("div",{class:"list",style:{maxHeight:220},children:(c.members[String(d.id)]??[]).map(u=>t("div",{class:"item",onClick:()=>z("explore",{file:u.path}),children:t("div",{class:"p",children:[u.path," ",t("span",{class:"muted",children:["\xB7 heat ",u.score.toFixed(2)]})]})}))})]}),t("div",{class:"card",children:[t("h3",{children:["import cycles \xB7 ",c.cycles.length]}),c.cycles.length?t("div",{class:"list",style:{maxHeight:220},children:c.cycles.map((u,h)=>t("div",{class:L("item",i===h&&"sel"),onClick:()=>{r(i===h?null:h),s(null)},children:t("div",{class:"p",children:[u.length," files: ",u.slice(0,4).join(" \u2192 "),u.length>4?" \u2026":""]})}))}):t("div",{class:"muted small",children:"none"}),i!==null?t("button",{type:"button",class:"sm",style:{marginTop:6},onClick:()=>r(null),children:"show clusters"}):null]})]})]})}function Pr({id:e,depth:n,onSelect:s,selected:i}){let r=j(()=>O("/api/behavior",{id:e}),[e]),[a,o]=C(new Set);if(r.error)return t("div",{class:"muted small",children:r.error});if(!r.data)return t(B,{});let l=r.data;return t(N,{children:[n===0&&t("div",{class:L("bnode",i===l.root.id&&"sel"),onClick:()=>s(l),children:[t(D,{children:"start"}),t(me,{kind:l.root.kind}),t("b",{children:l.root.label}),t("span",{class:"muted small",children:l.root.path})]}),t("div",{class:"kids",children:l.callees.length?l.callees.map(c=>{let d=a.has(c.node.id);return t(N,{children:[t("div",{class:L("bnode",i===c.node.id&&"sel"),onClick:()=>s({root:c.node,callees:[]}),children:[t("span",{class:"arrow",onClick:u=>{u.stopPropagation(),o(h=>{let g=new Set(h);return g.has(c.node.id)?g.delete(c.node.id):g.add(c.node.id),g})},children:c.node.kind==="package"||c.node.kind==="route"?"\xB7":d?"\u25BE":"\u25B8"}),t(D,{children:c.kind==="handles"?"handles":"possible call"}),t(me,{kind:c.node.kind}),t("span",{children:c.node.label}),t("span",{class:"muted small",children:[c.lines?.length?`L${c.lines.join(", L")}`:"",c.count&&c.count>1?` \xD7${c.count}`:""]})]}),d&&n<6?t(Pr,{id:c.node.id,depth:n+1,onSelect:s,selected:i}):null]})}):t("div",{class:"muted small",style:{padding:"2px 6px"},children:"no resolved calls"})})]})}function Pa({params:e}){let[n,s]=C(e.node??null),[i,r]=C(""),[a,o]=C([]),[l,c]=C(null);return U(()=>{if(i.trim().length<2)return o([]);let d=setTimeout(()=>{O("/api/nodes/search",{q:i.trim(),limit:10}).then(u=>o(u.filter(h=>h.kind!=="file"&&h.kind!=="package"))).catch(()=>o([]))},180);return()=>clearTimeout(d)},[i]),t("div",{class:"grid wide",style:{alignItems:"start"},children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:10,position:"relative"},children:[t("span",{class:"muted small",children:"Start"}),t("input",{type:"text",placeholder:"function or method\u2026",value:i,onInput:d=>r(d.target.value),style:{width:320}}),a.length>0&&t("div",{class:"suggest",style:{top:36,left:40},children:a.map(d=>t("div",{onMouseDown:()=>{s(d.id),r(""),o([]),c(null)},children:[t(me,{kind:d.kind}),t("span",{class:"ellipsis",children:d.label}),t("span",{class:"path",children:d.path})]}))}),t("span",{class:"muted small",children:"Branches are possible static calls from the index, not an execution order."})]}),t("div",{class:"btree",children:n?t(Pr,{id:n,depth:0,onSelect:c,selected:l?.root.id??null}):t(W,{children:"Choose a starting operation."})})]}),t("div",{class:"card",children:[t("h3",{children:l?"selected operation":"starting operation"}),l?t(N,{children:[t("div",{class:"row tight",children:[t(me,{kind:l.root.kind}),t("b",{class:"break",children:l.root.label})]}),t("div",{class:"muted small",children:[l.root.path,l.root.line?`:${l.root.line}`:"",l.root.endLine?`\u2013${l.root.endLine}`:""]}),l.root.complexity?t("div",{class:"row small",style:{marginTop:6},children:[t(D,{children:["complexity ",l.root.complexity]}),t(D,{children:[l.root.loc," loc"]})]}):null,t("div",{class:"row",style:{marginTop:8},children:[l.root.path?t("button",{type:"button",class:"sm",onClick:()=>z("explore",{file:l.root.path,line:l.root.line?String(l.root.line):void 0,symbol:l.root.id}),children:"Open definition"}):null,t("button",{type:"button",class:"sm",onClick:()=>{s(l.root.id),c(null)},children:"Start here"}),t("button",{type:"button",class:"sm",onClick:()=>z("galaxy",{node:l.root.id}),children:"Galaxy"})]})]}):t("div",{class:"muted small",children:"Click an operation in the tree."})]})]})}function Or({params:e}){let[n,s]=C(e.tab||"overview");U(()=>{e.tab&&s(e.tab)},[e.tab]);let i=j(()=>O("/api/tree"),[]),r=j(()=>O("/api/architecture",{aspects:"overview,entry_points"}),[]);return t("div",{class:"page",children:[t(Ce,{tabs:[["overview","Overview"],["routes","Routes"],["hotspots","Hotspots"],["structure","System structure"],["behavior","Behavior"]],value:n,onChange:s}),n==="overview"&&(i.data?t(Ma,{files:i.data.files,arch:r.data}):i.error?t(J,{error:i.error}):t(B,{})),n==="routes"&&t(Ia,{}),n==="hotspots"&&t(Da,{}),n==="structure"&&t(Na,{}),n==="behavior"&&t(Pa,{params:e})]})}function Br(){let e=j(()=>O("/api/coverage"),[]),[n,s]=C(""),[i,r]=C(""),[a,o]=C(null),l=V(()=>{let p=i.trim().toLowerCase();return(e.data?.files??[]).filter(v=>(!n||v.status===n)&&(!p||v.path.toLowerCase().includes(p)||(v.reason??"").toLowerCase().includes(p)))},[e.data,n,i]),{sorted:c,th:d}=Qe(l,"path",!1),u=async(p,v)=>{o(p);try{let b=await ye("/api/actions",v);K(b.output.split(`
4
- `)[0]??"done",!b.ok),e.reload()}catch(b){K(b.message,!0)}finally{o(null)}};if(e.error)return t("div",{class:"page",children:t(J,{error:e.error})});let h=e.data;if(!h)return t("div",{class:"page",children:t(B,{})});let g=h.summary.byStatus,f=Object.values(g).reduce((p,v)=>p+v,0),x=h.freshness.headMatches&&!h.freshness.dirty.length&&!h.freshness.queued,m=[["indexed",g.indexed??0,"parsed into the graph and search"],["partial",g.partial??0,"indexed, syntax errors recovered"],["skipped",g.skipped??0,"too large or parser error"],["unsupported",g.unsupported??0,"matched by globs, no parser"]];return t("div",{class:"page",children:[t("div",{class:"grid",children:[m.map(([p,v,b])=>t("div",{class:L("card"),style:{cursor:"pointer"},onClick:()=>s(n===p?"":p),children:[t("h3",{children:[p,n===p?t("span",{class:"right",children:"filtering"}):null]}),t("div",{class:L("big",p==="skipped"&&v>0&&"bad",p==="partial"&&v>0&&"warn"),children:v}),t("div",{class:"sub",children:b})]})),t("div",{class:"card",children:[t("h3",{children:"freshness"}),t("div",{class:L("big",x?"ok":"warn"),children:x?"fresh":h.freshness.dirty.length||h.freshness.queued?"stale":"git behind"}),t("div",{class:"sub",children:[h.freshness.dirty.length," changed \xB7 ",h.freshness.queued," queued"]})]})]}),t("div",{class:"grid wide",children:[t("div",{class:"card",children:[t("h3",{children:["files"," ",t("span",{class:"right",children:[c.length," of ",f]})]}),t("div",{class:"row",style:{marginBottom:8},children:[t("input",{type:"search",class:"grow",placeholder:"filter by path or reason\u2026",value:i,onInput:p=>r(p.target.value)}),t("select",{value:n,onChange:p=>s(p.target.value),children:[t("option",{value:"",children:"any status"}),["indexed","partial","skipped","unsupported"].map(p=>t("option",{value:p,children:p}))]}),t("button",{type:"button",disabled:!!a,onClick:()=>u("code",{action:"reindex",scope:"code"}),children:a==="code"?t(B,{}):"Reindex code"}),t("button",{type:"button",disabled:!!a,onClick:()=>u("full",{action:"reindex",scope:"code",full:!0}),children:a==="full"?t(B,{}):"Full reindex"})]}),t("div",{class:"list",style:{maxHeight:560},children:t("table",{children:[t("thead",{children:t("tr",{children:[d("path","path"),d("status","status"),d("reason","reason"),d("symbols","symbols",!0),d("size","size",!0),d("indexed_at","indexed",!0),t("th",{})]})}),t("tbody",{children:c.length?c.slice(0,500).map(p=>t("tr",{children:[t("td",{class:"break",children:t("a",{onClick:()=>z("explore",{file:p.path}),children:p.path})}),t("td",{children:t(D,{class:p.status==="indexed"?"s-accepted":p.status==="partial"?"s-proposed":"risk-high",children:p.status})}),t("td",{class:"muted small",children:[p.reason??"",p.errors?t("div",{class:"bad small",children:p.errors.slice(0,160)}):null]}),t("td",{class:"num",children:p.symbols??""}),t("td",{class:"num",children:ee(p.size??0)}),t("td",{class:"num muted small",children:oe(p.indexed_at)}),t("td",{children:t("button",{type:"button",class:"sm",disabled:!!a,onClick:()=>u(p.path,{action:"reindex",scope:"code",paths:[p.path]}),children:a===p.path?t(B,{}):"reindex"})})]})):t("tr",{children:t("td",{colSpan:7,children:t(W,{children:"no files match"})})})})]})})]}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("h3",{children:"index state"}),t(Ie,{rows:[["HEAD",h.freshness.head?.slice(0,10)??"no git"],["git signals at",h.freshness.indexedHead?`${h.freshness.indexedHead.slice(0,10)}${h.freshness.headMatches?" (current)":" (behind)"}`:"never"],["last run",h.freshness.lastRun?oe(h.freshness.lastRun):"never"],["queued",String(h.freshness.queued)],["last scan",h.scan?.at?`${oe(h.scan.at)} \xB7 ${h.scan.scanned} files \xB7 ${h.scan.durationMs} ms`:"n/a"]]})]}),h.freshness.dirty.length?t("div",{class:"card",children:[t("h3",{children:["changed since indexed \xB7 ",h.freshness.dirty.length]}),t("div",{class:"list",style:{maxHeight:200},children:h.freshness.dirty.map(p=>t("div",{class:"item",onClick:()=>z("explore",{file:p}),children:t("div",{class:"p",children:p})}))}),t("button",{type:"button",class:"sm",style:{marginTop:6},disabled:!!a,onClick:()=>u("dirty",{action:"reindex",scope:"code",paths:h.freshness.dirty}),children:a==="dirty"?t(B,{}):"Reindex changed files"})]}):null,h.summary.reasons.length?t("div",{class:"card",children:[t("h3",{children:"why files are not fully indexed"}),t("table",{children:t("tbody",{children:h.summary.reasons.map(p=>t("tr",{class:"click",onClick:()=>r(p.reason),children:[t("td",{children:p.reason}),t("td",{class:"num",children:p.n})]}))})})]}):null,t("div",{class:"card",children:[t("h3",{children:"scope"}),t("div",{class:"small",children:[t("div",{class:"muted",children:"include"}),t("div",{class:"mono break",children:(h.scan?.include??[]).join(" ")||"(defaults)"}),t("div",{class:"muted",style:{marginTop:4},children:"exclude"}),t("div",{class:"mono break",children:(h.scan?.exclude??[]).join(" ")||"(defaults)"}),t("div",{class:"muted",style:{marginTop:6},children:"Change them in eminiar.config.json under graph.include / graph.exclude. A clean coverage result means no recorded gap, not proof of completeness."})]})]})]})]})]})}var mt=[{id:"readme",group:"project",label:"Readme & guides",blurb:"README, CONTRIBUTING, CHANGELOG and other top-level guides"},{id:"guides",group:"project",label:"Docs folders",blurb:"docs/ directories: handbooks, how-tos, references"},{id:"adr",group:"project",label:"Decision records",blurb:"architecture decision records"},{id:"agent-instructions",group:"project",label:"Agent instructions",blurb:"Copilot, Claude and Cursor instructions, agents and skills"},{id:"api-specs",group:"project",label:"API specs",blurb:"OpenAPI, Postman, GraphQL and protobuf definitions"},{id:"env-reference",group:"project",label:"Environment reference",blurb:".env examples: every variable the project reads"},{id:"deploy-config",group:"project",label:"Deploy config",blurb:"Terraform, Kubernetes, Helm, Compose and CI workflows"},{id:"local",group:"project",label:"Other local files",blurb:"hand-registered paths"},{id:"service",group:"external",label:"Services",blurb:"third-party products and APIs the project integrates"},{id:"api",group:"external",label:"External APIs",blurb:"hosts the code calls, found by probing their docs"},{id:"infra",group:"external",label:"Infrastructure",blurb:"platforms the project runs on"},{id:"library",group:"external",label:"Libraries",blurb:"frameworks and packages"},{id:"web",group:"external",label:"Web pages",blurb:"hand-registered URLs"}],Hr=new Map(mt.map(e=>[e.id,e]));function Jt(e){return Hr.get(e)??Hr.get("local")}var zr={project:"Project documentation",external:"External documentation"};function Xn(e){let n=mt.findIndex(s=>s.id===e);return n===-1?mt.length:n}function Gn({title:e,rows:n,label:s,onPick:i,max:r=60}){return t("div",{class:"section",children:[t("h4",{children:[e," \xB7 ",n.length]}),t("table",{children:t("tbody",{children:n.slice(0,r).map(a=>t("tr",{class:"click",onClick:()=>i(a.id),children:[t("td",{children:t(D,{children:a.kind})}),t("td",{class:"break",children:s(a.id)})]}))})}),n.length>r?t("div",{class:"muted small",children:["\u2026 ",n.length-r," more"]}):null]})}function Oa(e,n){if(n.hiddenKinds.has(e.kind))return!1;if(e.group==="memory"&&!e.missing){let s=e.status??"accepted";if(n.hideSuperseded&&s==="superseded"||n.status&&s!==n.status)return!1}return!(e.group==="doc"&&!e.missing&&n.category&&e.sub!==n.category)}function jr(e,n){let s=new Set(e.nodes.filter(o=>Oa(o,n)).map(o=>o.id)),i=e.edges.filter(o=>!n.hiddenEdges.has(o.kind)&&s.has(o.src)&&s.has(o.dst)),r=new Set(i.flatMap(o=>[o.src,o.dst]));return{nodes:e.nodes.filter(o=>s.has(o.id)&&(o.seed||o.root||r.has(o.id))),edges:i}}function qn(e,n){let s=new Map;for(let i of e)s.set(n(i),(s.get(n(i))??0)+1);return s}var Ba={memory:"diamond",doc:"square",tag:"triangle",topic:"hexagon"};function Vt(e){return e.missing?"ring":Ba[e.kind]??"circle"}function Kt(e){let n=e;return n.group==="memory"&&(n.status==="superseded"||n.status==="deprecated")?"#93c5fd":Re(e.kind)}function Wn(e){let n={links:[4,3],supersedes:[6,3],about:[2,3],tagged:[1,3],in_topic:[1,3]};return{color:Ze(e),dash:n[e],width:e==="documents"||e==="mentions"?1.4:1,alpha:e==="tagged"||e==="in_topic"?.35:.55,directed:zt.has(e)}}function Ur(e){let n=e;return n.group==="memory"||n.group==="doc"||n.group==="hub"||e.kind==="package"?e.label:e.kind==="file"?e.label.split("/").pop()??e.label:e.label.split(".").pop()??e.label}var Ha=["proposed","accepted","superseded","deprecated"],za=["memory","doc","topic","tag","file","package"],ja=["mentions","links","supersedes","documents","about","tagged","in_topic"],Ua={mentions:"a memory's related: header names it",links:"a mem: link in a memory's body",supersedes:"a decision that replaces another",documents:"a doc source covers this package or names this file",about:"a memory relates to a page of this local doc source",tagged:"carries this tag",in_topic:"memory topic or doc category"},Xr=(e,n)=>[...e].sort((s,i)=>{let r=n.indexOf(s),a=n.indexOf(i);return(r===-1?99:r)-(a===-1?99:a)||s.localeCompare(i)});function Gr(e,n){let s=new Set(e);return s.has(n)?s.delete(n):s.add(n),s}function Zt({scope:e,focus:n}){let s=e==="docs"?"docs":"memory",[i,r]=C(null),[a,o]=C(!1),[l,c]=C(0),[d,u]=C(new Set),[h,g]=C(new Set),[f,x]=C(""),[m,p]=C(""),[v,b]=C(e==="memory"),[y,k]=C(!1),[S,T]=C(n??null);U(()=>{let M=!0;return o(!0),O("/api/knowledge",{scope:e,focus:n,limit:300}).then(se=>{M&&(r(se),T(n??null))}).catch(se=>M&&K(se.message,!0)).finally(()=>M&&o(!1)),()=>{M=!1}},[e,n,l]);let w=V(()=>i?jr(i,{hiddenKinds:d,hiddenEdges:h,status:f,category:m,hideSuperseded:v}):null,[i,d,h,f,m,v]),E=V(()=>qn(i?.nodes??[],M=>M.kind),[i]),A=V(()=>qn(i?.edges??[],M=>M.kind),[i]),F=M=>i?.nodes.find(se=>se.kind===M&&!se.missing),$=V(()=>[...new Set((i?.nodes??[]).filter(M=>M.group==="doc"&&M.sub).map(M=>M.sub))],[i]),R=(i?.nodes??[]).some(M=>M.group==="memory"),_=V(()=>new Map((i?.nodes??[]).map(M=>[M.id,M])),[i]),I=S?_.get(S):void 0,X=w?.edges??[],q=I?X.filter(M=>M.dst===I.id):[],H=I?X.filter(M=>M.src===I.id):[],re=M=>_.get(M)?.label??M,ne=M=>z(s,{tab:"graph",focus:M}),Oe=n?_.get(n):void 0;return t("div",{class:"kgalaxy",children:[t("div",{class:"gtoolbar",children:[n?t("span",{class:"row tight",children:[t("span",{class:"muted small",children:"focused on"}),t("b",{class:"break",children:Oe?.label??n}),t("button",{type:"button",class:"sm",onClick:()=>z(s,{tab:"graph"}),children:"Show all"})]}):t("span",{class:"muted small",children:e==="docs"?"documentation sources and what they cover":"memories and what they are about"}),R?t(N,{children:[t("select",{value:f,title:"memory status",onChange:M=>x(M.target.value),children:[t("option",{value:"",children:"any status"}),Ha.map(M=>t("option",{value:M,children:M}))]}),t("button",{type:"button",class:L("chip",v&&"on"),onClick:()=>b(!v),children:"hide superseded"})]}):null,$.length?t("select",{value:m,title:"doc category",onChange:M=>p(M.target.value),children:[t("option",{value:"",children:"any category"}),$.map(M=>t("option",{value:M,children:Jt(M).label}))]}):null,t("button",{type:"button",class:L("chip",y&&"on"),onClick:()=>k(!y),children:"legend"}),t("button",{type:"button",class:"sm",title:"reload",onClick:()=>c(M=>M+1),children:"\u21BB"}),t("span",{class:"count",children:a?t(B,{}):w&&i?`${w.nodes.length} of ${i.nodes.length} nodes \xB7 ${w.edges.length} edges${i.truncated?` \xB7 first ${i.nodes.length} of ${i.total}`:""}`:""})]}),t("div",{class:"gtoolbar",style:{paddingTop:4,paddingBottom:6},children:[t("span",{class:"muted small",children:"nodes:"}),Xr([...E.keys()],za).map(M=>{let se=F(M);return t("button",{type:"button",class:L("chip",!d.has(M)&&"on"),onClick:()=>u(Gr(d,M)),children:[se?t(ht,{shape:Vt(se),color:Kt(se)}):null,M," ",E.get(M)]})}),t("span",{class:"muted small",style:{marginLeft:8},children:"edges:"}),Xr([...A.keys()],ja).map(M=>{let se=Wn(M);return t("button",{type:"button",title:Ua[M],class:L("chip",!h.has(M)&&"on"),onClick:()=>g(Gr(h,M)),children:[t(Wt,{color:se.color,dash:se.dash}),M," ",A.get(M)]})})]}),t("div",{class:"kbody",style:{gridTemplateColumns:I?"minmax(0,1fr) 320px":"minmax(0,1fr)"},children:[t("div",{style:{minWidth:0,minHeight:0},children:w?w.nodes.length?t(De,{nodes:w.nodes,edges:w.edges,selected:S,onSelect:T,onActivate:ne,legend:y,colorOf:Kt,shapeOf:Vt,edgeStyleOf:Wn,labelOf:Ur}):i?.nodes.length?t(W,{children:"Nothing left after these filters."}):e==="docs"?t(W,{children:"No documentation sources yet. Add some from Discover."}):t(W,{children:"No memories yet."}):t(W,{children:t(B,{})})}),I&&t("div",{class:"panel right",children:[t("div",{class:"head",children:["selection ",t("span",{class:"spacer"}),t("a",{onClick:()=>T(null),children:"close"})]}),t("div",{class:"body",children:[t(Xa,{node:I,focus:n,onFocus:ne}),t(Gn,{title:"incoming",rows:q.map(M=>({kind:M.kind,id:M.src})),label:re,onPick:T}),t(Gn,{title:"outgoing",rows:H.map(M=>({kind:M.kind,id:M.dst})),label:re,onPick:T})]})]})]})]})}function Xa({node:e,focus:n,onFocus:s}){let i=e.group==="hub";return t("div",{class:"section",children:[t("div",{class:"row tight",children:[t(ht,{shape:Vt(e),color:Kt(e)}),t(me,{kind:e.kind}),t("b",{class:"break",children:e.label})]}),t("div",{class:"row tight wrap",style:{marginTop:4},children:[e.sub&&e.group==="memory"?t(D,{children:e.sub}):null,e.status?t("span",{class:`tag s-${e.status}`,children:e.status}):null,e.group==="doc"&&e.detail?t(D,{children:e.detail}):null,e.provider?t(D,{children:e.provider}):null,(e.tags??[]).map(r=>t(D,{children:["#",r]}))]}),e.path&&e.group==="code"&&e.kind!=="file"?t("div",{class:"muted small",children:[e.path,e.line?`:${e.line}`:""]}):null,e.missing?t("div",{class:"muted small",style:{marginTop:4},children:"Referenced, but nothing defines it: a deleted or renamed memory, a file outside the index, or a package the code does not import."}):null,t("div",{class:"row wrap",style:{marginTop:8},children:[e.id!==n?t("button",{type:"button",class:"sm primary",onClick:()=>s(e.id),children:"Focus here"}):null,e.group==="memory"&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>z("memory",{name:e.label}),children:"Open memory"}):null,e.group==="doc"&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>z("docs",{tab:"sources",name:e.label}),children:"Open doc source"}):null,!i&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>z("galaxy",{node:e.id}),children:"Open in code galaxy"}):null,e.kind==="file"&&e.path&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>z("explore",{file:e.path}),children:"Open source"}):null]})]})}var Ga={url:"#2563eb",path:"#16a34a"},qa={catalog:"#16a34a",probe:"#2563eb",registry:"#d97706",unknown:"#6b7280"};function Wr({kind:e}){return t("span",{class:"tag kind",style:{color:Ga[e]??"#6b7280"},children:e})}function Jr({urls:e}){return t("span",{class:"break",children:e.map((n,s)=>t(N,{children:[s?", ":"",t("a",{href:n,target:"_blank",rel:"noreferrer",children:n})]}))})}function Wa({s:e,busy:n,onSync:s,onRemove:i}){let r=j(()=>O("/api/docs/pages",{name:e.name}),[e.name,e.sync?.at]),a=[["kind",t(Wr,{kind:e.kind})],...e.provider?[["provider",e.provider]]:[],...e.title?[["title",e.title]]:[],e.kind==="url"?["seeds",t(Jr,{urls:e.urls??[]})]:["path",`${e.path}${e.glob?.length?` [${e.glob.join(", ")}]`:""}`],...e.kind==="url"?[["crawl",`depth ${e.crawl?.depth??"default"}, max ${e.crawl?.maxPages??"default"} pages, ttl ${e.ttlHours??"default"} h`]]:[],...e.tags?.length?[["tags",e.tags.join(", ")]]:[],["added",e.addedAt.slice(0,10)],["last sync",e.sync?`${oe(e.sync.at)} \xB7 ${e.sync.pages} ${e.kind==="url"?"pages":"files"} \xB7 ${e.sync.documents} docs \xB7 ${e.sync.chunks} chunks \xB7 ${e.sync.ms} ms${e.sync.errors.length?` \xB7 ${e.sync.errors.length} error(s)`:""}`:"never"]];return t("div",{children:[t("div",{class:"row",style:{marginBottom:6},children:[t("b",{class:"grow break",children:e.name}),t("button",{type:"button",class:"sm",disabled:!!n,onClick:()=>s(!1),children:n===`sync ${e.name}`?t(B,{}):"sync"}),t("button",{type:"button",class:"sm",disabled:!!n,title:"refetch ignoring the cache and drop stale pages",onClick:()=>s(!0),children:"force"}),t("button",{type:"button",class:"sm",title:"this source in the knowledge graph",onClick:()=>z("docs",{tab:"graph",focus:`doc:${e.name}`}),children:"graph"}),t("button",{type:"button",class:"sm danger",disabled:!!n,onClick:i,children:"remove"})]}),t(Ie,{rows:a}),e.sync?.errors.length?t("pre",{class:"log",style:{marginTop:8},children:e.sync.errors.join(`
5
- `)}):null,t("h3",{style:{marginTop:12},children:["indexed pages ",t("span",{class:"muted small",children:["(",e.documents,")"]})]}),r.error?t(J,{error:r.error}):r.data?r.data.length?t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"title"}),t("th",{class:"num",children:"chunks"}),t("th",{children:"indexed"})]})}),t("tbody",{children:r.data.map(o=>t("tr",{children:[t("td",{class:"break",children:o.uri?.startsWith("http")?t("a",{href:o.uri,target:"_blank",rel:"noreferrer",children:o.title}):o.title}),t("td",{class:"num",children:o.chunks}),t("td",{class:"muted nowrap",children:ge(o.created_at)})]}))})]}):t(W,{children:"nothing indexed yet \u2014 run sync"}):t(B,{})]})}function Ja({onDone:e}){let[n,s]=C(""),[i,r]=C(""),[a,o]=C(""),[l,c]=C(""),[d,u]=C(""),[h,g]=C(""),[f,x]=C(""),[m,p]=C(""),[v,b]=C(!1);return t("div",{class:"card",children:[t("h3",{children:"add a source"}),t("div",{class:"grid",style:{gridTemplateColumns:"1fr 2fr 1fr",gap:8},children:[t("div",{class:"field",children:[t("label",{children:"name (optional)"}),t("input",{type:"text",placeholder:"moleculer",value:n,onInput:k=>s(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"url(s) \u2014 one per line; same-origin pages under each are crawled"}),t("textarea",{rows:2,placeholder:"https://moleculer.services/docs/0.14/",value:i,onInput:k=>r(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"or provider (npm:zod, pypi:fastapi, api:api.example.com)"}),t("input",{type:"text",value:d,onInput:k=>u(k.target.value)})]})]}),t("div",{class:"grid",style:{gridTemplateColumns:"2fr 2fr 1fr 1fr 2fr",gap:8},children:[t("div",{class:"field",children:[t("label",{children:"or local path"}),t("input",{type:"text",placeholder:"docs/",value:a,onInput:k=>o(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"globs (comma separated)"}),t("input",{type:"text",placeholder:"**/*.md",value:l,onInput:k=>c(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"crawl depth"}),t("input",{type:"number",min:0,max:3,value:h,onInput:k=>g(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"max pages"}),t("input",{type:"number",min:1,max:200,value:f,onInput:k=>x(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"tags"}),t("input",{type:"text",value:m,onInput:k=>p(k.target.value)})]})]}),t("div",{class:"row",children:t("button",{type:"button",class:"primary",disabled:v,onClick:async()=>{let k=i.split(/\s+/).map(S=>S.trim()).filter(Boolean);if(!k.length&&!a.trim()&&!d.trim())return K("give a url, a path or a provider",!0);b(!0);try{let S=await ye("/api/docs",{sources:[{name:n.trim()||void 0,urls:k.length?k:void 0,path:a.trim()||void 0,glob:l.trim()?l.split(",").map(T=>T.trim()).filter(Boolean):void 0,provider:d.trim()||void 0,crawl:h||f?{depth:h?Number(h):void 0,maxPages:f?Number(f):void 0}:void 0,tags:m.trim()?m.split(",").map(T=>T.trim()).filter(Boolean):void 0}],sync:!0});K(S.failed.length?S.failed[0].reason:`added ${[...S.added,...S.updated].join(", ")}`,!!S.failed.length),e(S),S.failed.length||(s(""),r(""),o(""),c(""),u(""))}catch(S){K(S.message,!0)}finally{b(!1)}},children:v?t(B,{}):"Add & index"})})]})}function Jn(e){let n=e.tags?.[0];return e.kind==="path"&&n&&(e.name===n||e.name.startsWith(`${n}-`))?n:e.name}function qr(e){if(e.kind==="path"){let s=e.path&&e.path!=="."?e.path:"",i=e.glob?.length?e.glob.length<=2?e.glob.join(", "):`${e.glob.length} globs`:"";return[s,i].filter(Boolean).join(" \xB7 ")||e.title||"project root"}return[...new Set((e.urls??[]).map(s=>s.replace(/^https?:\/\//,"").split("/")[0]))].join(", ")||e.provider||""}function Va({s:e,sel:n,onSelect:s}){let i=Jn(e);return t("div",{class:L("item",n&&"sel"),onClick:s,children:[t("div",{class:"n",children:[i,i!==e.name?t("span",{class:"muted small",children:[" ",e.name]}):null]}),t("div",{class:"p",title:e.kind==="url"?(e.urls??[]).join(`
6
- `):qr(e),children:[t(Wr,{kind:e.kind}),e.provider?t("span",{class:"muted",children:[e.provider," \xB7 "]}):null,t("span",{class:"muted",children:qr(e)})]}),t("div",{class:"p",children:t("span",{class:"muted",children:[e.documents," docs \xB7 ",e.chunks," chunks \xB7"," ",e.sync?`synced ${oe(e.sync.at)}`:"never synced",e.sync?.errors.length?t("span",{class:"bad",children:[" \xB7 ",e.sync.errors.length," errors"]}):null]})})]})}function Ka({params:e,onLog:n}){let s=j(()=>O("/api/docs"),[]),[i,r]=C(e.name??null),[a,o]=C(""),[l,c]=C(!1),[d,u]=C(null);U(()=>{e.name&&r(e.name)},[e.name]);let[h,g]=C("all"),[f,x]=C(new Set),m=s.data,p=V(()=>{let w=a.trim().toLowerCase();return(m?.sources??[]).filter(E=>(h==="all"||E.category===h)&&(!w||E.name.includes(w)||(E.title??"").toLowerCase().includes(w)||(E.provider??"").includes(w)||(E.tags??[]).some(A=>A.includes(w))||(E.urls??[]).some(A=>A.includes(w))||(E.path??"").includes(w)))},[m,a,h]),v=V(()=>{let w=new Map;for(let E of m?.sources??[])w.set(E.category,(w.get(E.category)??0)+1);return w},[m]),b=V(()=>{let w=new Map;for(let F of p){let $=w.get(F.category)??[];$.push(F),w.set(F.category,$)}let E=[...w.entries()].sort((F,$)=>Xn(F[0])-Xn($[0])).map(([F,$])=>({info:Jt(F),items:$.sort((R,_)=>Jn(R).localeCompare(Jn(_)))})),A=[];for(let F of E){let $=A[A.length-1];$?.group===F.info.group?$.cats.push(F):A.push({group:F.info.group,label:zr[F.info.group],cats:[F]})}return A},[p]),y=w=>x(E=>{let A=new Set(E);return A.has(w)?A.delete(w):A.add(w),A}),k=p.find(w=>w.name===i)??m?.sources.find(w=>w.name===i),S=async(w,E)=>{let A=w?.length===1?`sync ${w[0]}`:"sync all";u(A);try{let F=await ye("/api/docs/sync",{names:w,force:E});n(F.text),K(`${A} done`),s.reload()}catch(F){K(F.message,!0)}finally{u(null)}},T=async w=>{if(confirm(`Remove documentation source "${w}" and its indexed pages?`))try{let E=await Bt("/api/docs",{name:w});K(`removed ${w} (${E.documents} document(s))`),r(null),s.reload()}catch(E){K(E.message,!0)}};return s.error?t(J,{error:s.error}):t(N,{children:[t("div",{class:"row",style:{marginBottom:12},children:[t("button",{type:"button",class:"primary",onClick:()=>c(w=>!w),children:l?"close":"+ Add source"}),t("button",{type:"button",disabled:!!d||!m?.sources.length,onClick:()=>S(void 0,!1),children:d==="sync all"?t(B,{}):"\u21BB Sync all"}),t("input",{type:"search",class:"grow",placeholder:"filter by name, provider, tag or url\u2026",value:a,onInput:w=>o(w.target.value)}),t("span",{class:"muted small nowrap",children:m?`${m.sources.length} sources \xB7 ${ee(m.totals.documents)} docs \xB7 ${ee(m.totals.chunks)} chunks \xB7 ${m.manifest}`:""})]}),m?.sources.length?t("div",{class:"row wrap",style:{marginBottom:10,gap:4},children:[t("button",{type:"button",class:L("chip",h==="all"&&"on"),onClick:()=>g("all"),children:["All \xB7 ",m.sources.length]}),mt.filter(w=>v.get(w.id)).map(w=>t("button",{type:"button",class:L("chip",h===w.id&&"on"),title:w.blurb,onClick:()=>g(h===w.id?"all":w.id),children:[w.label," \xB7 ",v.get(w.id)]}))]}):null,l&&t(Ja,{onDone:w=>{n(w.text),s.reload();let E=[...w.added,...w.updated][0];E&&r(E)}}),m?.orphans.length?t("div",{class:"empty",style:{marginBottom:12},children:["indexed under docs: but missing from the manifest:"," ",m.orphans.map(w=>`${w.source} (${w.documents})`).join(", ")," \u2014 re-add them or purge the index."]}):null,t("div",{class:"grid wide",style:{gridTemplateColumns:"minmax(280px,1fr) minmax(0,2fr)",alignItems:"start"},children:[t("div",{class:"card flush",children:t("div",{class:"list",children:m?p.length?b.map(w=>t(N,{children:[b.length>1?t("div",{class:"group-h",children:w.label}):null,w.cats.map(({info:E,items:A})=>{let F=!f.has(E.id);return t(N,{children:[t("div",{class:L("cat-h",!F&&"closed"),title:E.blurb,onClick:()=>y(E.id),children:[t("span",{class:"caret",children:F?"\u25BE":"\u25B8"}),E.label,t("span",{class:"muted",children:[" \xB7 ",A.length]}),t("span",{class:"muted small right",children:[ee(A.reduce(($,R)=>$+R.documents,0))," docs"]})]}),F?A.map($=>t(Va,{s:$,sel:i===$.name,onSelect:()=>r($.name)})):null]})})]})):t(W,{children:m.sources.length?"no sources match":"No documentation sources yet. Use Discover, or add a url, path or provider."}):t(W,{children:t(B,{})})})}),t("div",{class:"card",children:k?t(Wa,{s:k,busy:d,onSync:w=>S([k.name],w),onRemove:()=>T(k.name)}):t(W,{children:"Select a source to see its pages and sync state."})})]})]})}function Za({onLog:e,onAdded:n}){let[s,i]=C(!1),[r,a]=C(!1),o=j(()=>r?O("/api/docs/discover",{dev:s?1:void 0}):Promise.resolve(void 0),[r,s]),[l,c]=C(new Set),[d,u]=C({}),[h,g]=C(!1),f=o.data;U(()=>{if(!f)return;let y=new Set;for(let k of f.local)k.registered||y.add(`local:${k.name}`);for(let k of f.providers)!k.registered&&(k.confidence==="probe"||k.confidence==="catalog"&&k.tier!=="library"&&k.tier!=="infra")&&y.add(`prov:${k.name}`);c(y)},[f]);let x=y=>c(k=>{let S=new Set(k);return S.has(y)?S.delete(y):S.add(y),S}),m=async()=>{if(!f)return;let y=[];for(let k of f.local)l.has(`local:${k.name}`)&&y.push({name:k.name,path:k.path,glob:k.glob,title:k.why,tags:k.project?[k.project]:void 0});for(let k of f.providers){if(!l.has(`prov:${k.name}`))continue;let S=d[k.name]?.trim(),T=S?S.split(/\s+/).filter(Boolean):k.urls.length?k.urls:void 0;!T&&k.confidence==="unknown"||y.push({name:k.name,provider:k.provider,urls:T,title:k.title,crawl:k.crawl})}if(!y.length)return K("nothing selected",!0);g(!0),e(`adding ${y.length} source(s)\u2026`);try{let k=await ye("/api/docs",{sources:y,sync:!0});e(k.text),K(`${k.added.length+k.updated.length} added${k.failed.length?`, ${k.failed.length} failed`:""}`,!!k.failed.length&&!k.added.length),n(),a(!1),setTimeout(()=>a(!0),0)}catch(k){K(k.message,!0)}finally{g(!1)}},p=y=>(f?.providers??[]).filter(k=>k.confidence===y),v=({keyId:y,title:k,meta:S,right:T,registered:w})=>t("tr",{class:L(w&&"muted"),children:[t("td",{style:{width:24},children:t("input",{type:"checkbox",disabled:w,checked:l.has(y),onChange:()=>x(y)})}),t("td",{class:"break",children:[k,w?t("span",{class:"tag",children:" registered"}):null]}),t("td",{class:"break muted small",children:S}),t("td",{children:T??null})]}),b=({conf:y,note:k})=>{let S=p(y);return S.length?t("div",{class:"card flush",style:{marginBottom:12},children:[t("h3",{style:{padding:"10px 12px 0"},children:[t("span",{class:"tag kind",style:{color:qa[y]},children:y})," ",y==="catalog"?"libraries, services and infrastructure":y==="probe"?"third-party APIs called from code":y==="registry"?"packages resolved through npm / PyPI / Go":"unknown env prefixes and images"," ",t("span",{class:"muted small",children:["\u2014 ",k]})]}),t("table",{children:t("tbody",{children:S.map(T=>t(v,{keyId:`prov:${T.name}`,registered:T.registered,title:t(N,{children:[t("b",{children:T.name})," ",t("span",{class:"muted small",children:["\u2190 ",T.provider]})]}),meta:t(N,{children:[T.title,T.usedBy.length>1?` \xB7 used by ${T.usedBy.length} projects`:T.usedBy[0]&&T.usedBy[0]!=="."?` \xB7 ${T.usedBy[0]}`:"",T.urls.length?t(N,{children:[" \xB7 ",t(Jr,{urls:T.urls.slice(0,2)})]}):y==="probe"||y==="unknown"?` \xB7 ${T.evidence[0]}`:""]}),right:y==="unknown"||y==="probe"?t("input",{type:"text",placeholder:y==="probe"?"docs url (optional; probed if empty)":"docs url",style:{minWidth:220},value:d[T.name]??"",onInput:w=>u({...d,[T.name]:w.target.value})}):void 0}))})})]}):null};return t(N,{children:[t("div",{class:"row",style:{marginBottom:12},children:[t("button",{type:"button",class:"primary",disabled:o.loading&&r,onClick:()=>r?o.reload():a(!0),children:o.loading&&r?t(B,{}):r?"\u21BB Scan again":"Scan project"}),t("label",{class:"small",children:[t("input",{type:"checkbox",checked:s,onChange:y=>i(y.target.checked)})," ","include devDependencies"]}),t("span",{class:"spacer"}),f?t(N,{children:[t("span",{class:"muted small",children:[f.projects.length>1?`${f.projects.length} projects \xB7 `:"",f.local.length," local \xB7 ",f.providers.length," providers \xB7 ",l.size," selected"]}),t("button",{type:"button",class:"primary",disabled:h||!l.size,onClick:m,children:h?t(B,{}):"Add selected & index"})]}):null]}),o.error?t(J,{error:o.error}):null,r?f?t(N,{children:[f.local.length?t("div",{class:"card flush",style:{marginBottom:12},children:[t("h3",{style:{padding:"10px 12px 0"},children:["local documentation ",t("span",{class:"muted small",children:"\u2014 indexed from the working tree"})]}),t("table",{children:t("tbody",{children:f.local.map(y=>t(v,{keyId:`local:${y.name}`,registered:y.registered,title:t(N,{children:[t("b",{children:y.name})," ",t("span",{class:"muted small",children:y.path})]}),meta:`${y.files} file(s) \xB7 ${ee(y.bytes)} B \xB7 ${y.why}${y.glob&&y.glob.length<=4?` \xB7 ${y.glob.join(", ")}`:""}`}))})})]}):null,t(b,{conf:"catalog",note:"documentation URLs known offline"}),t(b,{conf:"probe",note:"docs., developer. and /docs locations are probed when added; give a url to skip the guess"}),t(b,{conf:"registry",note:"homepage and README come from the package registry when added"}),t(b,{conf:"unknown",note:"needs a documentation url"})]}):t(B,{}):t(W,{children:"Scans the project (and one level of sub-projects) for READMEs, docs folders, ADRs, API specs, agent instructions and env references, plus the npm / PyPI / Go packages, env var prefixes, container images, infrastructure files and outbound API calls \u2014 and maps each to its documentation. Nothing is fetched until you add."})]})}function Ya({sources:e}){let[n,s]=C(""),[i,r]=C(""),[a,o]=C(""),l=j(()=>a?O("/api/search",{q:a,source:i?`docs:${i}`:"docs:*",limit:15}):Promise.resolve(void 0),[a,i]);return t(N,{children:[t("div",{class:"row",style:{marginBottom:12},children:[t("input",{type:"search",class:"grow",placeholder:"ask the documentation\u2026 (hybrid keyword + semantic)",value:n,onInput:c=>s(c.target.value),onKeyDown:c=>{c.key==="Enter"&&o(n.trim())}}),t("select",{value:i,onChange:c=>r(c.target.value),children:[t("option",{value:"",children:"all documentation"}),e.map(c=>t("option",{value:c,children:c}))]}),t("button",{type:"button",class:"primary",onClick:()=>o(n.trim()),children:"Search"})]}),l.error?t(J,{error:l.error}):null,a?l.data?l.data.hits.length?t("div",{class:"stack",children:[l.data.corrections.length?t("div",{class:"muted small",children:["corrected: ",l.data.corrections.map(c=>`${c.from}\u2192${c.to}`).join(", ")]}):null,l.data.hits.map(c=>t("div",{class:"card hit",children:[t("div",{class:"row tight",children:[t("b",{class:"break",children:c.uri?.startsWith("http")?t("a",{href:c.uri,target:"_blank",rel:"noreferrer",children:c.title}):c.title}),t("span",{class:"tag",children:c.source.replace(/^docs:/,"")}),t("span",{class:"muted small",children:["doc ",c.doc," \xB7 ",c.score.toFixed(3)]})]}),t("pre",{class:"json",style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,marginTop:4},children:c.snippet})]}))]}):t(W,{children:"no matches"}):t(B,{}):t(W,{children:"Searches only the documentation sources (source docs:*). Claude uses the same index through em_docs lookup."})]})}function Vr({params:e}){let[n,s]=C(e.tab??"sources"),[i,r]=C([]),[a,o]=C(0),l=j(()=>O("/api/docs"),[a]),c=d=>r(u=>[...u,`[${new Date().toLocaleTimeString()}]
7
- ${d}`]);return U(()=>{e.tab&&s(e.tab)},[e.tab]),t("div",{class:"page",children:[t(Ce,{tabs:[["sources","Sources"],["discover","Discover"],["search","Search"],["graph","Graph"]],value:n,onChange:d=>{s(d),z("docs",{tab:d})}}),n==="sources"&&t(Ka,{params:e,onLog:c},a),n==="discover"&&t(Za,{onLog:c,onAdded:()=>o(d=>d+1)}),n==="search"&&t(Ya,{sources:(l.data?.sources??[]).map(d=>d.name)}),n==="graph"&&t(Zt,{scope:"docs",focus:e.focus}),i.length?t("div",{class:"card",style:{marginTop:12},children:[t("h3",{children:["sync log"," ",t("button",{type:"button",class:"sm right",onClick:()=>r([]),children:"clear"})]}),t("pre",{class:"log",children:i.join(`
1
+ "use strict";(()=>{var Qi=Object.create;var _n=Object.defineProperty;var ea=Object.getOwnPropertyDescriptor;var ta=Object.getOwnPropertyNames;var na=Object.getPrototypeOf,sa=Object.prototype.hasOwnProperty;var ks=e=>{throw TypeError(e)};var ra=(e,n,s)=>n in e?_n(e,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[n]=s;var ia=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var aa=(e,n,s,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of ta(n))!sa.call(e,r)&&r!==s&&_n(e,r,{get:()=>n[r],enumerable:!(i=ea(n,r))||i.enumerable});return e};var oa=(e,n,s)=>(s=e!=null?Qi(na(e)):{},aa(n||!e||!e.__esModule?_n(s,"default",{value:e,enumerable:!0}):s,e));var Q=(e,n,s)=>ra(e,typeof n!="symbol"?n+"":n,s),la=(e,n,s)=>n.has(e)||ks("Cannot "+s);var xs=(e,n,s)=>n.has(e)?ks("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(e):n.set(e,s);var ws=(e,n,s)=>(la(e,n,"access private method"),s);var ei=ia((Lu,rn)=>{"use strict";var ao=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};var B=(function(e){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,s=0,i={},r={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function h(m){return m instanceof a?new a(m.type,h(m.content),m.alias):Array.isArray(m)?m.map(h):m.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(h){return Object.prototype.toString.call(h).slice(8,-1)},objId:function(h){return h.__id||Object.defineProperty(h,"__id",{value:++s}),h.__id},clone:function h(m,v){v=v||{};var y,b;switch(r.util.type(m)){case"Object":if(b=r.util.objId(m),v[b])return v[b];y={},v[b]=y;for(var k in m)m.hasOwnProperty(k)&&(y[k]=h(m[k],v));return y;case"Array":return b=r.util.objId(m),v[b]?v[b]:(y=[],v[b]=y,m.forEach(function(T,E){y[E]=h(T,v)}),y);default:return m}},getLanguage:function(h){for(;h;){var m=n.exec(h.className);if(m)return m[1].toLowerCase();h=h.parentElement}return"none"},setLanguage:function(h,m){h.className=h.className.replace(RegExp(n,"gi"),""),h.classList.add("language-"+m)},currentScript:function(){if(typeof document>"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(y){var h=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(y.stack)||[])[1];if(h){var m=document.getElementsByTagName("script");for(var v in m)if(m[v].src==h)return m[v]}return null}},isActive:function(h,m,v){for(var y="no-"+m;h;){var b=h.classList;if(b.contains(m))return!0;if(b.contains(y))return!1;h=h.parentElement}return!!v}},languages:{plain:i,plaintext:i,text:i,txt:i,extend:function(h,m){var v=r.util.clone(r.languages[h]);for(var y in m)v[y]=m[y];return v},insertBefore:function(h,m,v,y){y=y||r.languages;var b=y[h],k={};for(var T in b)if(b.hasOwnProperty(T)){if(T==m)for(var E in v)v.hasOwnProperty(E)&&(k[E]=v[E]);v.hasOwnProperty(T)||(k[T]=b[T])}var w=y[h];return y[h]=k,r.languages.DFS(r.languages,function(C,R){R===w&&C!=h&&(this[C]=k)}),k},DFS:function h(m,v,y,b){b=b||{};var k=r.util.objId;for(var T in m)if(m.hasOwnProperty(T)){v.call(m,T,m[T],y||T);var E=m[T],w=r.util.type(E);w==="Object"&&!b[k(E)]?(b[k(E)]=!0,h(E,v,null,b)):w==="Array"&&!b[k(E)]&&(b[k(E)]=!0,h(E,v,T,b))}}},plugins:{},highlightAll:function(h,m){r.highlightAllUnder(document,h,m)},highlightAllUnder:function(h,m,v){var y={callback:v,container:h,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};r.hooks.run("before-highlightall",y),y.elements=Array.prototype.slice.apply(y.container.querySelectorAll(y.selector)),r.hooks.run("before-all-elements-highlight",y);for(var b=0,k;k=y.elements[b++];)r.highlightElement(k,m===!0,y.callback)},highlightElement:function(h,m,v){var y=r.util.getLanguage(h),b=r.languages[y];r.util.setLanguage(h,y);var k=h.parentElement;k&&k.nodeName.toLowerCase()==="pre"&&r.util.setLanguage(k,y);var T=h.textContent,E={element:h,language:y,grammar:b,code:T};function w(R){E.highlightedCode=R,r.hooks.run("before-insert",E),E.element.innerHTML=E.highlightedCode,r.hooks.run("after-highlight",E),r.hooks.run("complete",E),v&&v.call(E.element)}if(r.hooks.run("before-sanity-check",E),k=E.element.parentElement,k&&k.nodeName.toLowerCase()==="pre"&&!k.hasAttribute("tabindex")&&k.setAttribute("tabindex","0"),!E.code){r.hooks.run("complete",E),v&&v.call(E.element);return}if(r.hooks.run("before-highlight",E),!E.grammar){w(r.util.encode(E.code));return}if(m&&e.Worker){var C=new Worker(r.filename);C.onmessage=function(R){w(R.data)},C.postMessage(JSON.stringify({language:E.language,code:E.code,immediateClose:!0}))}else w(r.highlight(E.code,E.grammar,E.language))},highlight:function(h,m,v){var y={code:h,grammar:m,language:v};if(r.hooks.run("before-tokenize",y),!y.grammar)throw new Error('The language "'+y.language+'" has no grammar.');return y.tokens=r.tokenize(y.code,y.grammar),r.hooks.run("after-tokenize",y),a.stringify(r.util.encode(y.tokens),y.language)},tokenize:function(h,m){var v=m.rest;if(v){for(var y in v)m[y]=v[y];delete m.rest}var b=new d;return c(b,b.head,h),l(h,b,m,b.head,0),p(b)},hooks:{all:{},add:function(h,m){var v=r.hooks.all;v[h]=v[h]||[],v[h].push(m)},run:function(h,m){var v=r.hooks.all[h];if(!(!v||!v.length))for(var y=0,b;b=v[y++];)b(m)}},Token:a};e.Prism=r;function a(h,m,v,y){this.type=h,this.content=m,this.alias=v,this.length=(y||"").length|0}a.stringify=function h(m,v){if(typeof m=="string")return m;if(Array.isArray(m)){var y="";return m.forEach(function(w){y+=h(w,v)}),y}var b={type:m.type,content:h(m.content,v),tag:"span",classes:["token",m.type],attributes:{},language:v},k=m.alias;k&&(Array.isArray(k)?Array.prototype.push.apply(b.classes,k):b.classes.push(k)),r.hooks.run("wrap",b);var T="";for(var E in b.attributes)T+=" "+E+'="'+(b.attributes[E]||"").replace(/"/g,"&quot;")+'"';return"<"+b.tag+' class="'+b.classes.join(" ")+'"'+T+">"+b.content+"</"+b.tag+">"};function o(h,m,v,y){h.lastIndex=m;var b=h.exec(v);if(b&&y&&b[1]){var k=b[1].length;b.index+=k,b[0]=b[0].slice(k)}return b}function l(h,m,v,y,b,k){for(var T in v)if(!(!v.hasOwnProperty(T)||!v[T])){var E=v[T];E=Array.isArray(E)?E:[E];for(var w=0;w<E.length;++w){if(k&&k.cause==T+","+w)return;var C=E[w],R=C.inside,F=!!C.lookbehind,$=!!C.greedy,L=C.alias;if($&&!C.pattern.global){var _=C.pattern.toString().match(/[imsuy]*$/)[0];C.pattern=RegExp(C.pattern.source,_+"g")}for(var I=C.pattern||C,G=y.next,q=b;G!==m.tail&&!(k&&q>=k.reach);q+=G.value.length,G=G.next){var A=G.value;if(m.length>h.length)return;if(!(A instanceof a)){var j=1,se;if($){if(se=o(I,q,h,F),!se||se.index>=h.length)break;var be=se.index,He=se.index+se[0].length,N=q;for(N+=G.value.length;be>=N;)G=G.next,N+=G.value.length;if(N-=G.value.length,q=N,G.value instanceof a)continue;for(var re=G;re!==m.tail&&(N<He||typeof re.value=="string");re=re.next)j++,N+=re.value.length;j--,A=h.slice(q,N),se.index-=q}else if(se=o(I,0,A,F),!se)continue;var be=se.index,Ze=se[0],ke=A.slice(0,be),Ee=A.slice(be+Ze.length),$t=q+A.length;k&&$t>k.reach&&(k.reach=$t);var Ye=G.prev;ke&&(Ye=c(m,Ye,ke),q+=ke.length),u(m,Ye,j);var Y=new a(T,R?r.tokenize(Ze,R):Ze,L,Ze);if(G=c(m,Ye,Y),Ee&&c(m,G,Ee),j>1){var he={cause:T+","+w,reach:$t};l(h,m,v,G.prev,q,he),k&&he.reach>k.reach&&(k.reach=he.reach)}}}}}}function d(){var h={value:null,prev:null,next:null},m={value:null,prev:h,next:null};h.next=m,this.head=h,this.tail=m,this.length=0}function c(h,m,v){var y=m.next,b={value:v,prev:m,next:y};return m.next=b,y.prev=b,h.length++,b}function u(h,m,v){for(var y=m.next,b=0;b<v&&y!==h.tail;b++)y=y.next;m.next=y,y.prev=m,h.length-=b}function p(h){for(var m=[],v=h.head.next;v!==h.tail;)m.push(v.value),v=v.next;return m}if(!e.document)return e.addEventListener&&(r.disableWorkerMessageHandler||e.addEventListener("message",function(h){var m=JSON.parse(h.data),v=m.language,y=m.code,b=m.immediateClose;e.postMessage(r.highlight(y,r.languages[v],v)),b&&e.close()},!1)),r;var g=r.util.currentScript();g&&(r.filename=g.src,g.hasAttribute("data-manual")&&(r.manual=!0));function f(){r.manual||r.highlightAll()}if(!r.manual){var x=document.readyState;x==="loading"||x==="interactive"&&g&&g.defer?document.addEventListener("DOMContentLoaded",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return r})(ao);typeof rn<"u"&&rn.exports&&(rn.exports=B);typeof global<"u"&&(global.Prism=B);B.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]};B.languages.markup.tag.inside["attr-value"].inside.entity=B.languages.markup.entity;B.languages.markup.doctype.inside["internal-subset"].inside=B.languages.markup;B.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&amp;/,"&"))});Object.defineProperty(B.languages.markup.tag,"addInlined",{value:function(n,s){var i={};i["language-"+s]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:B.languages[s]},i.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:i}};r["language-"+s]={pattern:/[\s\S]+/,inside:B.languages[s]};var a={};a[n]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return n}),"i"),lookbehind:!0,greedy:!0,inside:r},B.languages.insertBefore("markup","cdata",a)}});Object.defineProperty(B.languages.markup.tag,"addAttribute",{value:function(e,n){B.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:B.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}});B.languages.html=B.languages.markup;B.languages.mathml=B.languages.markup;B.languages.svg=B.languages.markup;B.languages.xml=B.languages.extend("markup",{});B.languages.ssml=B.languages.xml;B.languages.atom=B.languages.xml;B.languages.rss=B.languages.xml;(function(e){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+n.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var s=e.languages.markup;s&&(s.tag.addInlined("style","css"),s.tag.addAttribute("style","css"))})(B);B.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/};B.languages.javascript=B.languages.extend("clike",{"class-name":[B.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});B.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;B.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:B.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:B.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:B.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:B.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:B.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});B.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:B.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});B.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});B.languages.markup&&(B.languages.markup.tag.addInlined("script","javascript"),B.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));B.languages.js=B.languages.javascript;(function(){if(typeof B>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e="Loading\u2026",n=function(g,f){return"\u2716 Error "+g+" while fetching file: "+f},s="\u2716 Error: File does not exist or is empty",i={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},r="data-src-status",a="loading",o="loaded",l="failed",d="pre[data-src]:not(["+r+'="'+o+'"]):not(['+r+'="'+a+'"])';function c(g,f,x){var h=new XMLHttpRequest;h.open("GET",g,!0),h.onreadystatechange=function(){h.readyState==4&&(h.status<400&&h.responseText?f(h.responseText):h.status>=400?x(n(h.status,h.statusText)):x(s))},h.send(null)}function u(g){var f=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(g||"");if(f){var x=Number(f[1]),h=f[2],m=f[3];return h?m?[x,Number(m)]:[x,void 0]:[x,x]}}B.hooks.add("before-highlightall",function(g){g.selector+=", "+d}),B.hooks.add("before-sanity-check",function(g){var f=g.element;if(f.matches(d)){g.code="",f.setAttribute(r,a);var x=f.appendChild(document.createElement("CODE"));x.textContent=e;var h=f.getAttribute("data-src"),m=g.language;if(m==="none"){var v=(/\.(\w+)$/.exec(h)||[,"none"])[1];m=i[v]||v}B.util.setLanguage(x,m),B.util.setLanguage(f,m);var y=B.plugins.autoloader;y&&y.loadLanguages(m),c(h,function(b){f.setAttribute(r,o);var k=u(f.getAttribute("data-range"));if(k){var T=b.split(/\r\n?|\n/g),E=k[0],w=k[1]==null?T.length:k[1];E<0&&(E+=T.length),E=Math.max(0,Math.min(E-1,T.length)),w<0&&(w+=T.length),w=Math.max(0,Math.min(w,T.length)),b=T.slice(E,w).join(`
2
+ `),f.hasAttribute("data-start")||f.setAttribute("data-start",String(E+1))}x.textContent=b,B.highlightElement(x)},function(b){f.setAttribute(r,l),x.textContent=b})}}),B.plugins.fileHighlight={highlight:function(f){for(var x=(f||document).querySelectorAll(d),h=0,m;m=x[h++];)B.highlightElement(m)}};var p=!1;B.fileHighlight=function(){p||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),p=!0),B.plugins.fileHighlight.highlight.apply(this,arguments)}})()});var Ht,ee,Cs,ca,De,_s,$s,As,Sn,Mt,ht,Rs,Cn,Tn,En,da,Nt={},Pt=[],ua=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Bt=Array.isArray;function Fe(e,n){for(var s in n)e[s]=n[s];return e}function $n(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function zt(e,n,s){var i,r,a,o={};for(a in n)a=="key"?i=n[a]:a=="ref"?r=n[a]:o[a]=n[a];if(arguments.length>2&&(o.children=arguments.length>3?Ht.call(arguments,2):s),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)o[a]===void 0&&(o[a]=e.defaultProps[a]);return Dt(e,o,i,r,null)}function Dt(e,n,s,i,r){var a={type:e,props:n,key:s,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:r??++Cs,__i:-1,__u:0};return r==null&&ee.vnode!=null&&ee.vnode(a),a}function P(e){return e.children}function It(e,n){this.props=e,this.context=n}function Be(e,n){if(n==null)return e.__?Be(e.__,e.__i+1):null;for(var s;n<e.__k.length;n++)if((s=e.__k[n])!=null&&s.__e!=null)return s.__e;return typeof e.type=="function"?Be(e):null}function pa(e){if(e.__P&&e.__d){var n=e.__v,s=n.__e,i=[],r=[],a=Fe({},n);a.__v=n.__v+1,ee.vnode&&ee.vnode(a),An(e.__P,a,n,e.__n,e.__P.namespaceURI,32&n.__u?[s]:null,i,s??Be(n),!!(32&n.__u),r),a.__v=n.__v,a.__.__k[a.__i]=a,Is(i,a,r),n.__e=n.__=null,a.__e!=s&&Fs(a)}}function Fs(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(n){if(n!=null&&n.__e!=null)return e.__e=e.__c.base=n.__e}),Fs(e)}function Ss(e){(!e.__d&&(e.__d=!0)&&De.push(e)&&!Ot.__r++||_s!=ee.debounceRendering)&&((_s=ee.debounceRendering)||$s)(Ot)}function Ot(){try{for(var e,n=1;De.length;)De.length>n&&De.sort(As),e=De.shift(),n=De.length,pa(e)}finally{De.length=Ot.__r=0}}function Ls(e,n,s,i,r,a,o,l,d,c,u){var p,g,f,x,h,m,v=i&&i.__k||Pt,y=n.length;for(d=ma(s,n,v,d,y),p=0;p<y;p++)(f=s.__k[p])!=null&&(g=f.__i!=-1&&v[f.__i]||Nt,f.__i=p,m=An(e,f,g,r,a,o,l,d,c,u),x=f.__e,f.ref&&g.ref!=f.ref&&(g.ref&&Rn(g.ref,null,f),u.push(f.ref,f.__c||x,f)),h==null&&x!=null&&(h=x),4&f.__u?(d=Ms(f,d,e),g.__e&&(g.__e=null)):typeof f.type=="function"&&m!==void 0?d=m:x&&(d=x.nextSibling),f.__u&=-7);return s.__e=h,d}function ma(e,n,s,i,r){var a,o,l,d,c,u=s.length,p=u,g=0;for(e.__k=new Array(r),a=0;a<r;a++)(o=n[a])!=null&&typeof o!="boolean"&&typeof o!="function"?(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||o.constructor==String?o=e.__k[a]=Dt(null,o,null,null,null):Bt(o)?o=e.__k[a]=Dt(P,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[a]=Dt(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,d=a+g,o.__=e,o.__b=e.__b+1,l=null,(c=o.__i=ha(o,s,d,p))!=-1&&(p--,(l=s[c])&&(l.__u|=2)),l==null||l.__v==null?(c==-1&&(r>u?g--:r<u&&g++),typeof o.type!="function"&&(o.__u|=4)):c!=d&&(c==d-1?g--:c==d+1?g++:(c>d?g--:g++,o.__u|=4))):e.__k[a]=null;if(p)for(a=0;a<u;a++)(l=s[a])!=null&&(2&l.__u)==0&&(l.__e==i&&(i=Be(l)),Ps(l,l));return i}function Ms(e,n,s){var i,r;if(typeof e.type=="function"){for(i=e.__k,r=0;i&&r<i.length;r++)i[r]&&(i[r].__=e,n=Ms(i[r],n,s));return n}e.__e!=n&&(n&&e.type&&!n.parentNode&&(n=Be(e)),n=s.insertBefore(e.__e,n||null));do n=n&&n.nextSibling;while(n!=null&&n.nodeType==8);return n}function ha(e,n,s,i){var r,a,o,l=e.key,d=e.type,c=n[s],u=c!=null&&(2&c.__u)==0;if(c===null&&l==null||u&&l==c.key&&d==c.type)return s;if(i>(u?1:0)){for(r=s-1,a=s+1;r>=0||a<n.length;)if((c=n[o=r>=0?r--:a++])!=null&&(2&c.__u)==0&&l==c.key&&d==c.type)return o}return-1}function Ts(e,n,s){n[0]=="-"?e.setProperty(n,s??""):e[n]=s==null?"":typeof s!="number"||ua.test(n)?s:s+"px"}function Lt(e,n,s,i,r){var a,o;e:if(n=="style")if(typeof s=="string")e.style.cssText=s;else{if(typeof i=="string"&&(e.style.cssText=i=""),i)for(n in i)s&&n in s||Ts(e.style,n,"");if(s)for(n in s)i&&s[n]==i[n]||Ts(e.style,n,s[n])}else if(n[0]=="o"&&n[1]=="n")a=n!=(n=n.replace(Rs,"$1")),o=n.toLowerCase(),n=o in e||n=="onFocusOut"||n=="onFocusIn"?o.slice(2):n.slice(2),e.l||(e.l={}),e.l[n+a]=s,s?i?s[ht]=i[ht]:(s[ht]=Cn,e.addEventListener(n,a?En:Tn,a)):e.removeEventListener(n,a?En:Tn,a);else{if(r=="http://www.w3.org/2000/svg")n=n.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(n!="width"&&n!="height"&&n!="href"&&n!="list"&&n!="form"&&n!="tabIndex"&&n!="download"&&n!="rowSpan"&&n!="colSpan"&&n!="role"&&n!="popover"&&n in e)try{e[n]=s??"";break e}catch{}typeof s=="function"||(s==null||s===!1&&n[4]!="-"?e.removeAttribute(n):e.setAttribute(n,n=="popover"&&s==1?"":s))}}function Es(e){return function(n){if(this.l){var s=this.l[n.type+e];if(n[Mt]==null)n[Mt]=Cn++;else if(n[Mt]<s[ht])return;return s(ee.event?ee.event(n):n)}}}function An(e,n,s,i,r,a,o,l,d,c){var u,p,g,f,x,h,m,v,y,b,k,T,E,w,C,R,F=n.type;if(n.constructor!==void 0)return null;128&s.__u&&(d=!!(32&s.__u),a=[l=n.__e=s.__e]),(u=ee.__b)&&u(n);e:if(typeof F=="function"){p=o.length;try{if(y=n.props,b=F.prototype&&F.prototype.render,k=(u=F.contextType)&&i[u.__c],T=u?k?k.props.value:u.__:i,s.__c?v=(g=n.__c=s.__c).__=g.__E:(b?n.__c=g=new F(y,T):(n.__c=g=new It(y,T),g.constructor=F,g.render=fa),k&&k.sub(g),g.state||(g.state={}),g.__n=i,f=g.__d=!0,g.__h=[],g._sb=[]),b&&g.__s==null&&(g.__s=g.state),b&&F.getDerivedStateFromProps!=null&&(g.__s==g.state&&(g.__s=Fe({},g.__s)),Fe(g.__s,F.getDerivedStateFromProps(y,g.__s))),x=g.props,h=g.state,g.__v=n,f)b&&F.getDerivedStateFromProps==null&&g.componentWillMount!=null&&g.componentWillMount(),b&&g.componentDidMount!=null&&g.__h.push(g.componentDidMount);else{if(b&&F.getDerivedStateFromProps==null&&y!==x&&g.componentWillReceiveProps!=null&&g.componentWillReceiveProps(y,T),n.__v==s.__v||!g.__e&&g.shouldComponentUpdate!=null&&g.shouldComponentUpdate(y,g.__s,T)===!1){n.__v!=s.__v&&(g.props=y,g.state=g.__s,g.__d=!1),n.__e=s.__e,n.__k=s.__k,n.__k.some(function($){$&&($.__=n)}),Pt.push.apply(g.__h,g._sb),g._sb=[],g.__h.length&&o.push(g),l=Be(s);break e}g.componentWillUpdate!=null&&g.componentWillUpdate(y,g.__s,T),b&&g.componentDidUpdate!=null&&g.__h.push(function(){g.componentDidUpdate(x,h,m)})}if(g.context=T,g.props=y,g.__P=e,g.__e=!1,E=ee.__r,w=0,b)g.state=g.__s,g.__d=!1,E&&E(n),u=g.render(g.props,g.state,g.context),Pt.push.apply(g.__h,g._sb),g._sb=[];else do g.__d=!1,E&&E(n),u=g.render(g.props,g.state,g.context),g.state=g.__s;while(g.__d&&++w<25);g.state=g.__s,g.getChildContext!=null&&(i=Fe(Fe({},i),g.getChildContext())),b&&!f&&g.getSnapshotBeforeUpdate!=null&&(m=g.getSnapshotBeforeUpdate(x,h)),C=u!=null&&u.type===P&&u.key==null?Ns(u.props.children):u,l=Ls(e,Bt(C)?C:[C],n,s,i,r,a,o,l,d,c),g.base=n.__e,n.__u&=-161,g.__h.length&&o.push(g),v&&(g.__E=g.__=null)}catch($){if(o.length=p,n.__v=null,d||a!=null){if($.then){for(n.__u|=d?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;a!=null&&(a[a.indexOf(l)]=null),n.__e=l}else if(a!=null)for(R=a.length;R--;)$n(a[R])}else n.__e=s.__e;n.__k==null&&(n.__k=s.__k||[]),$.then||Ds(n),ee.__e($,n,s)}}else a==null&&n.__v==s.__v?(n.__k=s.__k,n.__e=s.__e):l=n.__e=ga(s.__e,n,s,i,r,a,o,d,c);return(u=ee.diffed)&&u(n),128&n.__u?void 0:l}function Ds(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ds))}function Is(e,n,s){for(var i=0;i<s.length;i++)Rn(s[i],s[++i],s[++i]);ee.__c&&ee.__c(n,e),e.some(function(r){try{e=r.__h,r.__h=[],e.some(function(a){a.call(r)})}catch(a){ee.__e(a,r.__v)}})}function Ns(e){return typeof e!="object"||e==null||e.__b>0?e:Bt(e)?e.map(Ns):e.constructor!==void 0?null:Fe({},e)}function ga(e,n,s,i,r,a,o,l,d){var c,u,p,g,f,x,h,m=s.props||Nt,v=n.props,y=n.type;if(y=="svg"?r="http://www.w3.org/2000/svg":y=="math"?r="http://www.w3.org/1998/Math/MathML":r||(r="http://www.w3.org/1999/xhtml"),a!=null){for(c=0;c<a.length;c++)if((f=a[c])&&"setAttribute"in f==!!y&&(y?f.localName==y:f.nodeType==3)){e=f,a[c]=null;break}}if(e==null){if(y==null)return document.createTextNode(v);e=document.createElementNS(r,y,v.is&&v),l&&(ee.__m&&ee.__m(n,a),l=!1),a=null}if(y==null)m===v||l&&e.data==v||(e.data=v);else{if(a=y=="textarea"&&v.defaultValue!=null?null:a&&Ht.call(e.childNodes),!l&&a!=null)for(m={},c=0;c<e.attributes.length;c++)m[(f=e.attributes[c]).name]=f.value;for(c in m)f=m[c],c=="dangerouslySetInnerHTML"?p=f:c=="children"||c in v||c=="value"&&"defaultValue"in v||c=="checked"&&"defaultChecked"in v||Lt(e,c,null,f,r);for(c in v)f=v[c],c=="children"?g=f:c=="dangerouslySetInnerHTML"?u=f:c=="value"?x=f:c=="checked"?h=f:l&&typeof f!="function"||m[c]===f||Lt(e,c,f,m[c],r);if(u)l||p&&(u.__html==p.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),n.__k=[];else if(p&&(e.innerHTML=""),Ls(n.type=="template"?e.content:e,Bt(g)?g:[g],n,s,i,y=="foreignObject"?"http://www.w3.org/1999/xhtml":r,a,o,a?a[0]:s.__k&&Be(s,0),l,d),a!=null)for(c=a.length;c--;)$n(a[c]);l&&y!="textarea"||(c="value",y=="progress"&&x==null?e.removeAttribute("value"):x!=null&&(x!==e[c]||y=="progress"&&!x||y=="option"&&x!=m[c])&&Lt(e,c,x,m[c],r),c="checked",h!=null&&h!=e[c]&&Lt(e,c,h,m[c],r))}return e}function Rn(e,n,s){try{if(typeof e=="function"){var i=typeof e.__u=="function";i&&e.__u(),i&&n==null||(e.__u=e(n))}else e.current=n}catch(r){ee.__e(r,s)}}function Ps(e,n,s){var i,r;if(ee.unmount&&ee.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||Rn(i,null,n)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(a){ee.__e(a,n)}i.base=i.__P=i.__n=null}if(i=e.__k)for(r=0;r<i.length;r++)i[r]&&Ps(i[r],n,s||typeof e.type!="function");s||$n(e.__e),e.__c=e.__=e.__e=void 0}function fa(e,n,s){return this.constructor(e,s)}function Os(e,n,s){var i,r,a,o;n==document&&(n=document.documentElement),ee.__&&ee.__(e,n),r=(i=typeof s=="function")?null:s&&s.__k||n.__k,a=[],o=[],An(n,e=(!i&&s||n).__k=zt(P,null,[e]),r||Nt,Nt,n.namespaceURI,!i&&s?[s]:r?null:n.firstChild?Ht.call(n.childNodes):null,a,!i&&s?s:r?r.__e:n.firstChild,i,o),Is(a,e,o),e.props.children=null}Ht=Pt.slice,ee={__e:function(e,n,s,i){for(var r,a,o;n=n.__;)if((r=n.__c)&&!r.__)try{if((a=r.constructor)&&a.getDerivedStateFromError!=null&&(r.setState(a.getDerivedStateFromError(e)),o=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(e,i||{}),o=r.__d),o)return r.__E=r}catch(l){e=l}throw e}},Cs=0,ca=function(e){return e!=null&&e.constructor===void 0},It.prototype.setState=function(e,n){var s;s=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=Fe({},this.state),typeof e=="function"&&(e=e(Fe({},s),this.props)),e&&Fe(s,e),e!=null&&this.__v&&(n&&this._sb.push(n),Ss(this))},It.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ss(this))},It.prototype.render=P,De=[],$s=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,As=function(e,n){return e.__v.__b-n.__v.__b},Ot.__r=0,Sn=Math.random().toString(8),Mt="__d"+Sn,ht="__a"+Sn,Rs=/(PointerCapture)$|Capture$/i,Cn=0,Tn=Es(!1),En=Es(!0),da=0;var Qe,ae,Fn,Hs,et=0,Ws=[],le=ee,Bs=le.__b,zs=le.__r,js=le.diffed,Us=le.__c,Gs=le.unmount,Xs=le.__;function Ut(e,n){le.__h&&le.__h(ae,e,et||n),et=0;var s=ae.__H||(ae.__H={__:[],__h:[]});return e>=s.__.length&&s.__.push({}),s.__[e]}function S(e){return et=1,ba(Ks,e)}function ba(e,n,s){var i=Ut(Qe++,2);if(i.t=e,!i.__c&&(i.__=[s?s(n):Ks(void 0,n),function(l){var d=i.__N?i.__N[0]:i.__[0],c=i.t(d,l);d!==c&&(i.__N=[c,i.__[1]],i.__c.setState({}))}],i.__c=ae,!ae.__f)){var r=function(l,d,c){if(!i.__c.__H)return!0;var u=!1,p=i.__c.props!==l;if(i.__c.__H.__.some(function(f){if(f.__N){u=!0;var x=f.__[0];f.__=f.__N,f.__N=void 0,x!==f.__[0]&&(p=!0)}}),a){var g=a.call(this,l,d,c);return u?g||p:g}return!u||p};ae.__f=!0;var a=ae.shouldComponentUpdate,o=ae.componentWillUpdate;ae.componentWillUpdate=function(l,d,c){if(this.__e){var u=a;a=void 0,r(l,d,c),a=u}o&&o.call(this,l,d,c)},ae.shouldComponentUpdate=r}return i.__N||i.__}function U(e,n){var s=Ut(Qe++,3);!le.__s&&Mn(s.__H,n)&&(s.__=e,s.u=n,ae.__H.__h.push(s))}function ya(e,n){var s=Ut(Qe++,4);!le.__s&&Mn(s.__H,n)&&(s.__=e,s.u=n,ae.__h.push(s))}function oe(e){return et=5,V(function(){return{current:e}},[])}function Js(e,n,s){et=6,ya(function(){if(typeof e=="function"){var i=e(n());return function(){e(null),i&&typeof i=="function"&&i()}}if(e)return e.current=n(),function(){return e.current=null}},s==null?s:s.concat(e))}function V(e,n){var s=Ut(Qe++,7);return Mn(s.__H,n)&&(s.__=e(),s.__H=n,s.__h=e),s.__}function Vs(e,n){return et=8,V(function(){return e},n)}function va(){for(var e;e=Ws.shift();){var n=e.__H;if(e.__P&&n)try{n.__h.some(jt),n.__h.some(Ln),n.__h=[]}catch(s){n.__h=[],le.__e(s,e.__v)}}}le.__b=function(e){ae=null,Bs&&Bs(e)},le.__=function(e,n){e&&n.__k&&n.__k.__m&&(e.__m=n.__k.__m),Xs&&Xs(e,n)},le.__r=function(e){zs&&zs(e),Qe=0;var n=(ae=e.__c).__H;n&&(Fn===ae?(n.__h=[],ae.__h=[],n.__.some(function(s){s.__N&&(s.__=s.__N),s.u=s.__N=void 0})):(n.__h.some(jt),n.__h.some(Ln),n.__h=[],Qe=0)),Fn=ae},le.diffed=function(e){js&&js(e);var n=e.__c;n&&n.__H&&(n.__H.__h.length&&(Ws.push(n)!==1&&Hs===le.requestAnimationFrame||((Hs=le.requestAnimationFrame)||ka)(va)),n.__H.__.some(function(s){s.u&&(s.__H=s.u,s.u=void 0)})),Fn=ae=null},le.__c=function(e,n){n.some(function(s){try{s.__h.some(jt),s.__h=s.__h.filter(function(i){return!i.__||Ln(i)})}catch(i){n.some(function(r){r.__h&&(r.__h=[])}),n=[],le.__e(i,s.__v)}}),Us&&Us(e,n)},le.unmount=function(e){Gs&&Gs(e);var n,s=e.__c;s&&s.__H&&(s.__H.__.some(function(i){try{jt(i)}catch(r){n=r}}),s.__H=void 0,n&&le.__e(n,s.__v))};var qs=typeof requestAnimationFrame=="function";function ka(e){var n,s=function(){clearTimeout(i),qs&&cancelAnimationFrame(n),setTimeout(e)},i=setTimeout(s,35);qs&&(n=requestAnimationFrame(s))}function jt(e){var n=ae,s=e.__c;typeof s=="function"&&(e.__c=void 0,s()),ae=n}function Ln(e){var n=ae;e.__c=e.__(),ae=n}function Mn(e,n){return!e||e.length!==n.length||n.some(function(s,i){return s!==e[i]})}function Ks(e,n){return typeof n=="function"?n(e):n}var Gt=new URLSearchParams(location.search).get("root")??"",Dn=()=>Gt;function Zs(e){Gt=e;let n=new URL(location.href);n.searchParams.set("root",e),history.replaceState(null,"",n.toString())}function xa(e,n){let s=new URL(e,location.origin);Gt&&s.searchParams.set("root",Gt);for(let[i,r]of Object.entries(n??{}))r==null||r===""||s.searchParams.set(i,String(r));return s.toString()}var gt=class extends Error{constructor(s,i){super(s);Q(this,"status",i)}};async function H(e,n,s){let i=await fetch(xa(e,n),s),r=await i.json().catch(()=>({error:"bad response"}));if(i.status===404&&r.error==="not found"&&e.startsWith("/api/"))throw new gt(`${e} is not available on the running server; restart \`eminiar ui\` to pick up the rebuilt bundle`,i.status);if(!i.ok)throw new gt(r.error??`HTTP ${i.status}`,i.status);if(r&&typeof r=="object"&&"error"in r&&r.error)throw new gt(String(r.error),i.status);return r}function ye(e,n,s="POST",i){return H(e,i,{method:s,headers:{"content-type":"application/json"},body:JSON.stringify(n)})}function Xt(e,n){return H(e,n,{method:"DELETE",headers:{"content-type":"application/json"}})}var te=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Math.round(e));function ie(e){if(!e)return"";let n=Date.now()-e;return n<6e4?"just now":n<36e5?`${Math.round(n/6e4)}m ago`:n<864e5?`${Math.round(n/36e5)}h ago`:`${Math.round(n/864e5)}d ago`}var ge=e=>e?new Date(e).toISOString().slice(0,10):"",Ys=e=>e?new Date(e).toLocaleTimeString():"",qt=e=>e.split("/").pop()??e;var wa={file:"#2563eb",function:"#16a34a",method:"#0d9488",class:"#d97706",interface:"#7c3aed",type:"#8b5cf6",enum:"#a855f7",field:"#64748b",variable:"#64748b",route:"#e11d48",package:"#6b7280",memory:"#2563eb",doc:"#1e40af",tag:"#9ca3af",topic:"#6b7280",branch:"#64748b",commit:"#94a3b8",person:"#f59e0b",concept:"#0ea5e9",cluster:"#2563eb"},xe=e=>wa[e]??"#94a3b8",_a={imports:"#2563eb",reexports:"#3b82f6",calls:"#16a34a",references:"#0ea5e9",extends:"#7c3aed",implements:"#8b5cf6",handles:"#e11d48",defines:"#9ca3af",exports:"#9ca3af",co_changes:"#f59e0b",mentions:"#2563eb",supersedes:"#6b7280",links:"#3b82f6",documents:"#1e40af",about:"#93c5fd",tagged:"#9ca3af",in_topic:"#cdd2da",authored:"#d97706",link:"#2563eb"},tt=e=>_a[e]??"#94a3b8",Wt=new Set(["imports","reexports","calls","references","extends","implements","handles","mentions","supersedes","links","documents","about"]),Qs=["imports","calls","references","extends","implements","handles","reexports","co_changes","mentions","defines"],D=(...e)=>e.filter(Boolean).join(" ");function er(e,n){let s;return(...i)=>{clearTimeout(s),s=setTimeout(()=>e(...i),n)}}var nt=e=>`${Math.round((e??0)*100)}%`;function tr(e){let n=e.slice(e.lastIndexOf(".")+1).toLowerCase();return{ts:"typescript",mts:"typescript",cts:"typescript",tsx:"tsx",js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"jsx",py:"python",go:"go",php:"php",json:"json",md:"markdown",sh:"bash"}[n]??"plain"}var Sa=0;function t(e,n,s,i,r,a){n||(n={});var o,l,d=n;if("ref"in d)for(l in d={},n)l=="ref"?o=n[l]:d[l]=n[l];var c={type:e,props:d,key:s,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Sa,__i:-1,__u:0,__source:r,__self:a};if(typeof e=="function"&&(o=e.defaultProps))for(l in o)d[l]===void 0&&(d[l]=o[l]);return ee.vnode&&ee.vnode(c),c}var In=new Set;function Z(e,n=!1){for(let s of In)s(e,n)}function nr(){let[e,n]=S(null);return U(()=>{let s,i=(r,a)=>{n({msg:r,bad:a}),clearTimeout(s),s=setTimeout(()=>n(null),a?6e3:2500)};return In.add(i),()=>{In.delete(i),clearTimeout(s)}},[]),e?t("div",{class:D("toast",e.bad&&"bad"),children:e.msg}):null}function X(e,n){let[s,i]=S({data:void 0,error:void 0,loading:!0}),[r,a]=S(0),o=oe(0);U(()=>{let d=++o.current;i(c=>({...c,loading:!0,error:void 0})),e().then(c=>d===o.current&&i({data:c,error:void 0,loading:!1}),c=>d===o.current&&i(u=>({...u,error:c.message,loading:!1})))},[...n,r]);let l=Vs(()=>a(d=>d+1),[]);return{...s,reload:l}}var z=()=>t("span",{class:"spin"}),W=({children:e})=>t("div",{class:"empty",children:e}),K=({error:e})=>t("div",{class:"empty bad",children:e});function ue({kind:e}){return t("span",{class:"tag kind",style:{color:xe(e)},children:e})}function M({children:e,class:n}){return t("span",{class:D("tag",n),children:e})}function Le({value:e,max:n,width:s=80}){let i=n>0?Math.max(2,e/n*s):2;return t("span",{class:"bar",style:{width:`${i}px`},title:String(e)})}function Ie({rows:e}){return t("dl",{class:"kv",children:e.map(([n,s])=>t(P,{children:[t("dt",{children:n}),t("dd",{children:s})]}))})}function $e({tabs:e,value:n,onChange:s}){return t("div",{class:"subtabs",children:e.map(([i,r])=>t("button",{type:"button",class:D(n===i&&"active"),onClick:()=>s(i),children:r}))})}function sr({left:e,center:n,right:s,leftWidth:i=280,rightWidth:r=340}){let[a,o]=S(i),[l,d]=S(r),c=oe(null),[u,p]=S(null);U(()=>{let f=h=>{let m=c.current;if(!m)return;let v=h.clientX-m.x;m.side==="l"?o(Math.max(160,Math.min(700,m.start+v))):d(Math.max(200,Math.min(800,m.start-v)))},x=()=>{c.current=null,p(null)};return window.addEventListener("mousemove",f),window.addEventListener("mouseup",x),()=>{window.removeEventListener("mousemove",f),window.removeEventListener("mouseup",x)}},[]);let g=[e?`${a}px 5px`:"","minmax(0, 1fr)",s?`5px ${l}px`:""].filter(Boolean).join(" ");return t("div",{class:"split",style:{gridTemplateColumns:g},children:[e&&t(P,{children:[t("div",{class:"pane",children:e}),t("div",{class:D("gutter",u==="l"&&"on"),onMouseDown:f=>{c.current={side:"l",x:f.clientX,start:a},p("l"),f.preventDefault()}})]}),t("div",{class:"pane",children:n}),s&&t(P,{children:[t("div",{class:D("gutter",u==="r"&&"on"),onMouseDown:f=>{c.current={side:"r",x:f.clientX,start:l},p("r"),f.preventDefault()}}),t("div",{class:"pane",children:s})]})]})}function st(e,n,s=!0){let[i,r]=S(n),[a,o]=S(s?-1:1);return{sorted:(e??[]).slice().sort((c,u)=>{let p=c[i],g=u[i];return typeof p=="number"&&typeof g=="number"?(p-g)*a:String(p??"").localeCompare(String(g??""))*a}),th:(c,u,p=!1)=>t("th",{class:D("sortable",p&&"num",i===c&&"sorted"),onClick:()=>{i===c?o(g=>g===1?-1:1):(r(c),o(p?-1:1))},children:[u,i===c?a===1?" \u25B2":" \u25BC":""]})}}var Ta=["overview","explore","galaxy","architecture","history","memory","docs","coverage","sessions","system"];function rr(){let e=location.hash.replace(/^#\/?/,""),[n="",s=""]=e.split("?"),i=Ta.includes(n)?n:"overview",r={};for(let[a,o]of new URLSearchParams(s))r[a]=o;return{view:i,params:r}}function O(e,n={}){let s=new URLSearchParams;for(let[r,a]of Object.entries(n))a&&s.set(r,a);let i=s.toString();location.hash=`/${e}${i?`?${i}`:""}`}function ir(){let[e,n]=S(rr);return U(()=>{let s=()=>n(rr());return window.addEventListener("hashchange",s),()=>window.removeEventListener("hashchange",s)},[]),e}function Nn(e,n){var s,i=1;e==null&&(e=0),n==null&&(n=0);function r(){var a,o=s.length,l,d=0,c=0;for(a=0;a<o;++a)l=s[a],d+=l.x,c+=l.y;for(d=(d/o-e)*i,c=(c/o-n)*i,a=0;a<o;++a)l=s[a],l.x-=d,l.y-=c}return r.initialize=function(a){s=a},r.x=function(a){return arguments.length?(e=+a,r):e},r.y=function(a){return arguments.length?(n=+a,r):n},r.strength=function(a){return arguments.length?(i=+a,r):i},r}function ar(e){let n=+this._x.call(null,e),s=+this._y.call(null,e);return or(this.cover(n,s),n,s,e)}function or(e,n,s,i){if(isNaN(n)||isNaN(s))return e;var r,a=e._root,o={data:i},l=e._x0,d=e._y0,c=e._x1,u=e._y1,p,g,f,x,h,m,v,y;if(!a)return e._root=o,e;for(;a.length;)if((h=n>=(p=(l+c)/2))?l=p:c=p,(m=s>=(g=(d+u)/2))?d=g:u=g,r=a,!(a=a[v=m<<1|h]))return r[v]=o,e;if(f=+e._x.call(null,a.data),x=+e._y.call(null,a.data),n===f&&s===x)return o.next=a,r?r[v]=o:e._root=o,e;do r=r?r[v]=new Array(4):e._root=new Array(4),(h=n>=(p=(l+c)/2))?l=p:c=p,(m=s>=(g=(d+u)/2))?d=g:u=g;while((v=m<<1|h)===(y=(x>=g)<<1|f>=p));return r[y]=a,r[v]=o,e}function lr(e){var n,s,i=e.length,r,a,o=new Array(i),l=new Array(i),d=1/0,c=1/0,u=-1/0,p=-1/0;for(s=0;s<i;++s)isNaN(r=+this._x.call(null,n=e[s]))||isNaN(a=+this._y.call(null,n))||(o[s]=r,l[s]=a,r<d&&(d=r),r>u&&(u=r),a<c&&(c=a),a>p&&(p=a));if(d>u||c>p)return this;for(this.cover(d,c).cover(u,p),s=0;s<i;++s)or(this,o[s],l[s],e[s]);return this}function cr(e,n){if(isNaN(e=+e)||isNaN(n=+n))return this;var s=this._x0,i=this._y0,r=this._x1,a=this._y1;if(isNaN(s))r=(s=Math.floor(e))+1,a=(i=Math.floor(n))+1;else{for(var o=r-s||1,l=this._root,d,c;s>e||e>=r||i>n||n>=a;)switch(c=(n<i)<<1|e<s,d=new Array(4),d[c]=l,l=d,o*=2,c){case 0:r=s+o,a=i+o;break;case 1:s=r-o,a=i+o;break;case 2:r=s+o,i=a-o;break;case 3:s=r-o,i=a-o;break}this._root&&this._root.length&&(this._root=l)}return this._x0=s,this._y0=i,this._x1=r,this._y1=a,this}function dr(){var e=[];return this.visit(function(n){if(!n.length)do e.push(n.data);while(n=n.next)}),e}function ur(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function pe(e,n,s,i,r){this.node=e,this.x0=n,this.y0=s,this.x1=i,this.y1=r}function pr(e,n,s){var i,r=this._x0,a=this._y0,o,l,d,c,u=this._x1,p=this._y1,g=[],f=this._root,x,h;for(f&&g.push(new pe(f,r,a,u,p)),s==null?s=1/0:(r=e-s,a=n-s,u=e+s,p=n+s,s*=s);x=g.pop();)if(!(!(f=x.node)||(o=x.x0)>u||(l=x.y0)>p||(d=x.x1)<r||(c=x.y1)<a))if(f.length){var m=(o+d)/2,v=(l+c)/2;g.push(new pe(f[3],m,v,d,c),new pe(f[2],o,v,m,c),new pe(f[1],m,l,d,v),new pe(f[0],o,l,m,v)),(h=(n>=v)<<1|e>=m)&&(x=g[g.length-1],g[g.length-1]=g[g.length-1-h],g[g.length-1-h]=x)}else{var y=e-+this._x.call(null,f.data),b=n-+this._y.call(null,f.data),k=y*y+b*b;if(k<s){var T=Math.sqrt(s=k);r=e-T,a=n-T,u=e+T,p=n+T,i=f.data}}return i}function mr(e){if(isNaN(u=+this._x.call(null,e))||isNaN(p=+this._y.call(null,e)))return this;var n,s=this._root,i,r,a,o=this._x0,l=this._y0,d=this._x1,c=this._y1,u,p,g,f,x,h,m,v;if(!s)return this;if(s.length)for(;;){if((x=u>=(g=(o+d)/2))?o=g:d=g,(h=p>=(f=(l+c)/2))?l=f:c=f,n=s,!(s=s[m=h<<1|x]))return this;if(!s.length)break;(n[m+1&3]||n[m+2&3]||n[m+3&3])&&(i=n,v=m)}for(;s.data!==e;)if(r=s,!(s=s.next))return this;return(a=s.next)&&delete s.next,r?(a?r.next=a:delete r.next,this):n?(a?n[m]=a:delete n[m],(s=n[0]||n[1]||n[2]||n[3])&&s===(n[3]||n[2]||n[1]||n[0])&&!s.length&&(i?i[v]=s:this._root=s),this):(this._root=a,this)}function hr(e){for(var n=0,s=e.length;n<s;++n)this.remove(e[n]);return this}function gr(){return this._root}function fr(){var e=0;return this.visit(function(n){if(!n.length)do++e;while(n=n.next)}),e}function br(e){var n=[],s,i=this._root,r,a,o,l,d;for(i&&n.push(new pe(i,this._x0,this._y0,this._x1,this._y1));s=n.pop();)if(!e(i=s.node,a=s.x0,o=s.y0,l=s.x1,d=s.y1)&&i.length){var c=(a+l)/2,u=(o+d)/2;(r=i[3])&&n.push(new pe(r,c,u,l,d)),(r=i[2])&&n.push(new pe(r,a,u,c,d)),(r=i[1])&&n.push(new pe(r,c,o,l,u)),(r=i[0])&&n.push(new pe(r,a,o,c,u))}return this}function yr(e){var n=[],s=[],i;for(this._root&&n.push(new pe(this._root,this._x0,this._y0,this._x1,this._y1));i=n.pop();){var r=i.node;if(r.length){var a,o=i.x0,l=i.y0,d=i.x1,c=i.y1,u=(o+d)/2,p=(l+c)/2;(a=r[0])&&n.push(new pe(a,o,l,u,p)),(a=r[1])&&n.push(new pe(a,u,l,d,p)),(a=r[2])&&n.push(new pe(a,o,p,u,c)),(a=r[3])&&n.push(new pe(a,u,p,d,c))}s.push(i)}for(;i=s.pop();)e(i.node,i.x0,i.y0,i.x1,i.y1);return this}function vr(e){return e[0]}function kr(e){return arguments.length?(this._x=e,this):this._x}function xr(e){return e[1]}function wr(e){return arguments.length?(this._y=e,this):this._y}function ze(e,n,s){var i=new Pn(n??vr,s??xr,NaN,NaN,NaN,NaN);return e==null?i:i.addAll(e)}function Pn(e,n,s,i,r,a){this._x=e,this._y=n,this._x0=s,this._y0=i,this._x1=r,this._y1=a,this._root=void 0}function _r(e){for(var n={data:e.data},s=n;e=e.next;)s=s.next={data:e.data};return n}var fe=ze.prototype=Pn.prototype;fe.copy=function(){var e=new Pn(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root,s,i;if(!n)return e;if(!n.length)return e._root=_r(n),e;for(s=[{source:n,target:e._root=new Array(4)}];n=s.pop();)for(var r=0;r<4;++r)(i=n.source[r])&&(i.length?s.push({source:i,target:n.target[r]=new Array(4)}):n.target[r]=_r(i));return e};fe.add=ar;fe.addAll=lr;fe.cover=cr;fe.data=dr;fe.extent=ur;fe.find=pr;fe.remove=mr;fe.removeAll=hr;fe.root=gr;fe.size=fr;fe.visit=br;fe.visitAfter=yr;fe.x=kr;fe.y=wr;function ce(e){return function(){return e}}function we(e){return(e()-.5)*1e-6}function Ea(e){return e.x+e.vx}function Ca(e){return e.y+e.vy}function On(e){var n,s,i,r=1,a=1;typeof e!="function"&&(e=ce(e==null?1:+e));function o(){for(var c,u=n.length,p,g,f,x,h,m,v=0;v<a;++v)for(p=ze(n,Ea,Ca).visitAfter(l),c=0;c<u;++c)g=n[c],h=s[g.index],m=h*h,f=g.x+g.vx,x=g.y+g.vy,p.visit(y);function y(b,k,T,E,w){var C=b.data,R=b.r,F=h+R;if(C){if(C.index>g.index){var $=f-C.x-C.vx,L=x-C.y-C.vy,_=$*$+L*L;_<F*F&&($===0&&($=we(i),_+=$*$),L===0&&(L=we(i),_+=L*L),_=(F-(_=Math.sqrt(_)))/_*r,g.vx+=($*=_)*(F=(R*=R)/(m+R)),g.vy+=(L*=_)*F,C.vx-=$*(F=1-F),C.vy-=L*F)}return}return k>f+F||E<f-F||T>x+F||w<x-F}}function l(c){if(c.data)return c.r=s[c.data.index];for(var u=c.r=0;u<4;++u)c[u]&&c[u].r>c.r&&(c.r=c[u].r)}function d(){if(n){var c,u=n.length,p;for(s=new Array(u),c=0;c<u;++c)p=n[c],s[p.index]=+e(p,c,n)}}return o.initialize=function(c,u){n=c,i=u,d()},o.iterations=function(c){return arguments.length?(a=+c,o):a},o.strength=function(c){return arguments.length?(r=+c,o):r},o.radius=function(c){return arguments.length?(e=typeof c=="function"?c:ce(+c),d(),o):e},o}function $a(e){return e.index}function Sr(e,n){var s=e.get(n);if(!s)throw new Error("node not found: "+n);return s}function Hn(e){var n=$a,s=p,i,r=ce(30),a,o,l,d,c,u=1;e==null&&(e=[]);function p(m){return 1/Math.min(l[m.source.index],l[m.target.index])}function g(m){for(var v=0,y=e.length;v<u;++v)for(var b=0,k,T,E,w,C,R,F;b<y;++b)k=e[b],T=k.source,E=k.target,w=E.x+E.vx-T.x-T.vx||we(c),C=E.y+E.vy-T.y-T.vy||we(c),R=Math.sqrt(w*w+C*C),R=(R-a[b])/R*m*i[b],w*=R,C*=R,E.vx-=w*(F=d[b]),E.vy-=C*F,T.vx+=w*(F=1-F),T.vy+=C*F}function f(){if(o){var m,v=o.length,y=e.length,b=new Map(o.map((T,E)=>[n(T,E,o),T])),k;for(m=0,l=new Array(v);m<y;++m)k=e[m],k.index=m,typeof k.source!="object"&&(k.source=Sr(b,k.source)),typeof k.target!="object"&&(k.target=Sr(b,k.target)),l[k.source.index]=(l[k.source.index]||0)+1,l[k.target.index]=(l[k.target.index]||0)+1;for(m=0,d=new Array(y);m<y;++m)k=e[m],d[m]=l[k.source.index]/(l[k.source.index]+l[k.target.index]);i=new Array(y),x(),a=new Array(y),h()}}function x(){if(o)for(var m=0,v=e.length;m<v;++m)i[m]=+s(e[m],m,e)}function h(){if(o)for(var m=0,v=e.length;m<v;++m)a[m]=+r(e[m],m,e)}return g.initialize=function(m,v){o=m,c=v,f()},g.links=function(m){return arguments.length?(e=m,f(),g):e},g.id=function(m){return arguments.length?(n=m,g):n},g.iterations=function(m){return arguments.length?(u=+m,g):u},g.strength=function(m){return arguments.length?(s=typeof m=="function"?m:ce(+m),x(),g):s},g.distance=function(m){return arguments.length?(r=typeof m=="function"?m:ce(+m),h(),g):r},g}var Aa={value:()=>{}};function Er(){for(var e=0,n=arguments.length,s={},i;e<n;++e){if(!(i=arguments[e]+"")||i in s||/[\s.]/.test(i))throw new Error("illegal type: "+i);s[i]=[]}return new Jt(s)}function Jt(e){this._=e}function Ra(e,n){return e.trim().split(/^|\s+/).map(function(s){var i="",r=s.indexOf(".");if(r>=0&&(i=s.slice(r+1),s=s.slice(0,r)),s&&!n.hasOwnProperty(s))throw new Error("unknown type: "+s);return{type:s,name:i}})}Jt.prototype=Er.prototype={constructor:Jt,on:function(e,n){var s=this._,i=Ra(e+"",s),r,a=-1,o=i.length;if(arguments.length<2){for(;++a<o;)if((r=(e=i[a]).type)&&(r=Fa(s[r],e.name)))return r;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++a<o;)if(r=(e=i[a]).type)s[r]=Tr(s[r],e.name,n);else if(n==null)for(r in s)s[r]=Tr(s[r],e.name,null);return this},copy:function(){var e={},n=this._;for(var s in n)e[s]=n[s].slice();return new Jt(e)},call:function(e,n){if((r=arguments.length-2)>0)for(var s=new Array(r),i=0,r,a;i<r;++i)s[i]=arguments[i+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(a=this._[e],i=0,r=a.length;i<r;++i)a[i].value.apply(n,s)},apply:function(e,n,s){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var i=this._[e],r=0,a=i.length;r<a;++r)i[r].value.apply(n,s)}};function Fa(e,n){for(var s=0,i=e.length,r;s<i;++s)if((r=e[s]).name===n)return r.value}function Tr(e,n,s){for(var i=0,r=e.length;i<r;++i)if(e[i].name===n){e[i]=Aa,e=e.slice(0,i).concat(e.slice(i+1));break}return s!=null&&e.push({name:n,value:s}),e}var Bn=Er;var rt=0,bt=0,ft=0,$r=1e3,Vt,yt,Kt=0,je=0,Zt=0,vt=typeof performance=="object"&&performance.now?performance:Date,Ar=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Un(){return je||(Ar(La),je=vt.now()+Zt)}function La(){je=0}function zn(){this._call=this._time=this._next=null}zn.prototype=Yt.prototype={constructor:zn,restart:function(e,n,s){if(typeof e!="function")throw new TypeError("callback is not a function");s=(s==null?Un():+s)+(n==null?0:+n),!this._next&&yt!==this&&(yt?yt._next=this:Vt=this,yt=this),this._call=e,this._time=s,jn()},stop:function(){this._call&&(this._call=null,this._time=1/0,jn())}};function Yt(e,n,s){var i=new zn;return i.restart(e,n,s),i}function Rr(){Un(),++rt;for(var e=Vt,n;e;)(n=je-e._time)>=0&&e._call.call(void 0,n),e=e._next;--rt}function Cr(){je=(Kt=vt.now())+Zt,rt=bt=0;try{Rr()}finally{rt=0,Da(),je=0}}function Ma(){var e=vt.now(),n=e-Kt;n>$r&&(Zt-=n,Kt=e)}function Da(){for(var e,n=Vt,s,i=1/0;n;)n._call?(i>n._time&&(i=n._time),e=n,n=n._next):(s=n._next,n._next=null,n=e?e._next=s:Vt=s);yt=e,jn(i)}function jn(e){if(!rt){bt&&(bt=clearTimeout(bt));var n=e-je;n>24?(e<1/0&&(bt=setTimeout(Cr,e-vt.now()-Zt)),ft&&(ft=clearInterval(ft))):(ft||(Kt=vt.now(),ft=setInterval(Ma,$r)),rt=1,Ar(Cr))}}function Fr(){let e=1;return()=>(e=(1664525*e+1013904223)%4294967296)/4294967296}function Lr(e){return e.x}function Mr(e){return e.y}var Ia=10,Na=Math.PI*(3-Math.sqrt(5));function Gn(e){var n,s=1,i=.001,r=1-Math.pow(i,1/300),a=0,o=.6,l=new Map,d=Yt(p),c=Bn("tick","end"),u=Fr();e==null&&(e=[]);function p(){g(),c.call("tick",n),s<i&&(d.stop(),c.call("end",n))}function g(h){var m,v=e.length,y;h===void 0&&(h=1);for(var b=0;b<h;++b)for(s+=(a-s)*r,l.forEach(function(k){k(s)}),m=0;m<v;++m)y=e[m],y.fx==null?y.x+=y.vx*=o:(y.x=y.fx,y.vx=0),y.fy==null?y.y+=y.vy*=o:(y.y=y.fy,y.vy=0);return n}function f(){for(var h=0,m=e.length,v;h<m;++h){if(v=e[h],v.index=h,v.fx!=null&&(v.x=v.fx),v.fy!=null&&(v.y=v.fy),isNaN(v.x)||isNaN(v.y)){var y=Ia*Math.sqrt(.5+h),b=h*Na;v.x=y*Math.cos(b),v.y=y*Math.sin(b)}(isNaN(v.vx)||isNaN(v.vy))&&(v.vx=v.vy=0)}}function x(h){return h.initialize&&h.initialize(e,u),h}return f(),n={tick:g,restart:function(){return d.restart(p),n},stop:function(){return d.stop(),n},nodes:function(h){return arguments.length?(e=h,f(),l.forEach(x),n):e},alpha:function(h){return arguments.length?(s=+h,n):s},alphaMin:function(h){return arguments.length?(i=+h,n):i},alphaDecay:function(h){return arguments.length?(r=+h,n):+r},alphaTarget:function(h){return arguments.length?(a=+h,n):a},velocityDecay:function(h){return arguments.length?(o=1-h,n):1-o},randomSource:function(h){return arguments.length?(u=h,l.forEach(x),n):u},force:function(h,m){return arguments.length>1?(m==null?l.delete(h):l.set(h,x(m)),n):l.get(h)},find:function(h,m,v){var y=0,b=e.length,k,T,E,w,C;for(v==null?v=1/0:v*=v,y=0;y<b;++y)w=e[y],k=h-w.x,T=m-w.y,E=k*k+T*T,E<v&&(C=w,v=E);return C},on:function(h,m){return arguments.length>1?(c.on(h,m),n):c.on(h)}}}function Xn(){var e,n,s,i,r=ce(-30),a,o=1,l=1/0,d=.81;function c(f){var x,h=e.length,m=ze(e,Lr,Mr).visitAfter(p);for(i=f,x=0;x<h;++x)n=e[x],m.visit(g)}function u(){if(e){var f,x=e.length,h;for(a=new Array(x),f=0;f<x;++f)h=e[f],a[h.index]=+r(h,f,e)}}function p(f){var x=0,h,m,v=0,y,b,k;if(f.length){for(y=b=k=0;k<4;++k)(h=f[k])&&(m=Math.abs(h.value))&&(x+=h.value,v+=m,y+=m*h.x,b+=m*h.y);f.x=y/v,f.y=b/v}else{h=f,h.x=h.data.x,h.y=h.data.y;do x+=a[h.data.index];while(h=h.next)}f.value=x}function g(f,x,h,m){if(!f.value)return!0;var v=f.x-n.x,y=f.y-n.y,b=m-x,k=v*v+y*y;if(b*b/d<k)return k<l&&(v===0&&(v=we(s),k+=v*v),y===0&&(y=we(s),k+=y*y),k<o&&(k=Math.sqrt(o*k)),n.vx+=v*f.value*i/k,n.vy+=y*f.value*i/k),!0;if(f.length||k>=l)return;(f.data!==n||f.next)&&(v===0&&(v=we(s),k+=v*v),y===0&&(y=we(s),k+=y*y),k<o&&(k=Math.sqrt(o*k)));do f.data!==n&&(b=a[f.data.index]*i/k,n.vx+=v*b,n.vy+=y*b);while(f=f.next)}return c.initialize=function(f,x){e=f,s=x,u()},c.strength=function(f){return arguments.length?(r=typeof f=="function"?f:ce(+f),u(),c):r},c.distanceMin=function(f){return arguments.length?(o=f*f,c):Math.sqrt(o)},c.distanceMax=function(f){return arguments.length?(l=f*f,c):Math.sqrt(l)},c.theta=function(f){return arguments.length?(d=f*f,c):Math.sqrt(d)},c}function qn(e){var n=ce(.1),s,i,r;typeof e!="function"&&(e=ce(e==null?0:+e));function a(l){for(var d=0,c=s.length,u;d<c;++d)u=s[d],u.vx+=(r[d]-u.x)*i[d]*l}function o(){if(s){var l,d=s.length;for(i=new Array(d),r=new Array(d),l=0;l<d;++l)i[l]=isNaN(r[l]=+e(s[l],l,s))?0:+n(s[l],l,s)}}return a.initialize=function(l){s=l,o()},a.strength=function(l){return arguments.length?(n=typeof l=="function"?l:ce(+l),o(),a):n},a.x=function(l){return arguments.length?(e=typeof l=="function"?l:ce(+l),o(),a):e},a}function Wn(e){var n=ce(.1),s,i,r;typeof e!="function"&&(e=ce(e==null?0:+e));function a(l){for(var d=0,c=s.length,u;d<c;++d)u=s[d],u.vy+=(r[d]-u.y)*i[d]*l}function o(){if(s){var l,d=s.length;for(i=new Array(d),r=new Array(d),l=0;l<d;++l)i[l]=isNaN(r[l]=+e(s[l],l,s))?0:+n(s[l],l,s)}}return a.initialize=function(l){s=l,o()},a.strength=function(l){return arguments.length?(n=typeof l=="function"?l:ce(+l),o(),a):n},a.y=function(l){return arguments.length?(e=typeof l=="function"?l:ce(+l),o(),a):e},a}function Jn(e,n,s){let i=new Map,r=e.map(d=>{let c=s?.get(d.id),u={...d,deg:0,r:4};return c&&(u.x=c.x,u.y=c.y),i.set(d.id,u),u}),a=[];for(let d of n){let c=i.get(d.src),u=i.get(d.dst);!c||!u||c===u||(c.deg++,u.deg++,a.push({source:c,target:u,kind:d.kind,weight:d.weight,count:d.count,lines:d.lines}))}for(let d of r)d.r=4+Math.min(12,Math.sqrt(d.deg)*1.8)+(d.root?3:0);let o=r.length,l=Gn(r).force("link",Hn(a).distance(d=>d.kind==="co_changes"?90:d.kind==="defines"?36:60).strength(d=>d.kind==="co_changes"?.15:.5)).force("charge",Xn().strength(o>400?-60:-140).distanceMax(600)).force("collide",On().radius(d=>d.r+4).iterations(2)).force("center",Nn(0,0).strength(.05)).force("x",qn(0).strength(.02)).force("y",Wn(0).strength(.02)).alphaDecay(o>400?.05:.03).velocityDecay(.4);return{nodes:r,links:a,sim:l,byId:i}}function Dr(e,n){let s=Jn(e,n);s.sim.stop();let i=s.nodes.filter(x=>x.kind==="file"),r=s.nodes.filter(x=>x.kind!=="file"),a=new Map;for(let x of i){let h=(x.path??x.label).split("/").slice(0,-1).join("/")||".";(a.get(h)??a.set(h,[]).get(h)).push(x)}let o=[...a.keys()].sort((x,h)=>x.split("/").length-h.split("/").length||x.localeCompare(h)),l=220,d=34,c=-(o.length-1)*l/2,u=new Map;for(let x of o){let h=a.get(x).sort((v,y)=>v.label.localeCompare(y.label)),m=-(h.length-1)*d/2;for(let v of h)v.x=c,v.y=m,v.fx=c,v.fy=m,u.set(v.path??v.label,v),m+=d;c+=l}let p=new Map,g=[];for(let x of r){let h=x.path?u.get(x.path):void 0;if(!h){g.push(x);continue}let m=p.get(h.id)??0;p.set(h.id,m+1),x.x=(h.x??0)+70+m%3*46,x.y=(h.y??0)+Math.floor(m/3)*14-8,x.fx=x.x,x.fy=x.y}let f=(o.length?a.get(o[0]).length:0)*d/2+60;for(let x of g)x.x=-(g.length-1)*60/2+g.indexOf(x)*60,x.y=f,x.fx=x.x,x.fy=x.y;return f+=40,s}var Vn=e=>xe(e.kind),Kn=e=>"circle";function Ir(e,n=1){return{color:tt(e),dash:e==="calls"?[4,3]:e==="co_changes"?[1,3]:e==="references"?[2,2]:void 0,width:e==="co_changes"?1+n*2:1,alpha:e==="co_changes"?.35:.45,directed:Wt.has(e)}}function Nr(e,n,s,i,r){switch(e.beginPath(),n){case"square":{let a=r*.88;e.rect(s-a,i-a,a*2,a*2);break}case"diamond":{let a=r*1.25;e.moveTo(s,i-a),e.lineTo(s+a,i),e.lineTo(s,i+a),e.lineTo(s-a,i),e.closePath();break}case"triangle":{let a=r*1.3;e.moveTo(s,i-a),e.lineTo(s+a*.87,i+a*.5),e.lineTo(s-a*.87,i+a*.5),e.closePath();break}case"hexagon":{let a=r*1.12;for(let o=0;o<6;o++){let l=Math.PI/3*o,d=s+a*Math.cos(l),c=i+a*Math.sin(l);o===0?e.moveTo(d,c):e.lineTo(d,c)}e.closePath();break}default:e.arc(s,i,r,0,Math.PI*2)}}function Pr(e){switch(e){case"square":return"M1.5 1.5H10.5V10.5H1.5Z";case"diamond":return"M6 0.5L11.5 6L6 11.5L0.5 6Z";case"triangle":return"M6 0.8L11.4 10.6H0.6Z";case"hexagon":return"M11.5 6L8.75 10.76H3.25L0.5 6L3.25 1.24H8.75Z";default:return"M6 1A5 5 0 1 1 5.99 1Z"}}function Ne({shape:e,color:n}){let s=e==="ring";return t("svg",{class:"glyph",width:"11",height:"11",viewBox:"0 0 12 12","aria-hidden":"true",children:t("path",{d:Pr(e),fill:s?"none":n,stroke:n,"stroke-width":s?1.6:0})})}function it({color:e,dash:n}){return t("svg",{class:"glyph",width:"18",height:"8",viewBox:"0 0 18 8","aria-hidden":"true",children:t("line",{x1:"0",y1:"4",x2:"18",y2:"4",stroke:e,"stroke-width":"2","stroke-dasharray":n?.length?n.join(" "):void 0})})}var Pa=e=>e.kind==="file"||e.kind==="package"?qt(e.label):e.label.split(".").pop()??e.label,Oa=()=>document.documentElement.getAttribute("data-theme")==="dark"||document.documentElement.getAttribute("data-theme")!=="light"&&window.matchMedia("(prefers-color-scheme: dark)").matches;function Ae(e){let n=oe(null),s=oe(null),i=oe(null),r=oe({k:1,x:0,y:0}),a=oe(!1),o=oe(null),l=oe(null),[d,c]=S(null),[u,p]=S(!1),g=oe(e);g.current=e;let f=()=>{let $=n.current,L=i.current;if(!$||!L)return;let _=$.getContext("2d");if(!_)return;let I=window.devicePixelRatio||1,G=$.width/I,q=$.height/I,A=r.current,j=Oa(),{selected:se,highlight:He}=g.current,N=g.current.colorOf??Vn,re=g.current.shapeOf??Kn,be=g.current.edgeStyleOf??Ir,Ze=g.current.labelOf??Pa,ke=se?L.byId.get(se):void 0,Ee=new Set;if(ke){Ee.add(ke.id);for(let Y of L.links){let he=Y.source,de=Y.target;he.id===ke.id&&Ee.add(de.id),de.id===ke.id&&Ee.add(he.id)}}_.setTransform(I,0,0,I,0,0),_.clearRect(0,0,G,q),_.translate(G/2+A.x,q/2+A.y),_.scale(A.k,A.k);for(let Y of L.links){let he=Y.source,de=Y.target;if(he.x===void 0||de.x===void 0)continue;let At=`${he.id}|${de.id}|${Y.kind}`,kn=He?.has(At),Rt=ke&&!(Ee.has(he.id)&&Ee.has(de.id))&&he.id!==ke.id&&de.id!==ke.id,Ce=be(Y.kind,Y.weight);if(_.globalAlpha=kn?1:Rt?.06:Ce.alpha??.45,_.strokeStyle=Ce.color,_.lineWidth=(kn?2.5:Ce.width??1)/A.k,_.setLineDash(Ce.dash?Ce.dash.map(Ft=>Ft/A.k):[]),_.beginPath(),_.moveTo(he.x,he.y??0),_.lineTo(de.x,de.y??0),_.stroke(),_.setLineDash([]),Ce.directed&&A.k>.5){let Ft=de.x-he.x,ys=(de.y??0)-(he.y??0),vs=Math.hypot(Ft,ys)||1,pt=Ft/vs,mt=ys/vs,xn=de.x-pt*(de.r+2),wn=(de.y??0)-mt*(de.r+2),Me=5/A.k;_.fillStyle=Ce.color,_.beginPath(),_.moveTo(xn,wn),_.lineTo(xn-pt*Me*2-mt*Me,wn-mt*Me*2+pt*Me),_.lineTo(xn-pt*Me*2+mt*Me,wn-mt*Me*2-pt*Me),_.closePath(),_.fill()}}let Ye=L.nodes.length<=120||A.k>1.6;_.font=`${11/A.k}px system-ui, sans-serif`,_.textBaseline="middle";for(let Y of L.nodes){if(Y.x===void 0||Y.y===void 0)continue;let he=ke&&!Ee.has(Y.id);_.globalAlpha=he?.2:1;let de=re(Y),At=N(Y);if(Nr(_,de,Y.x,Y.y,Y.r/Math.max(1,A.k**.5)),de==="ring"?(_.fillStyle=j?"#171a21":"#ffffff",_.fill(),_.lineWidth=1.6/A.k,_.strokeStyle=At,_.stroke()):(_.fillStyle=At,_.fill()),(Y.root||Y.id===se||Y===o.current)&&(_.lineWidth=2.5/A.k,_.strokeStyle=j?"#e5e7eb":"#1b1f24",_.stroke()),Ye||Y.root||Y.deg>3||Ee.has(Y.id)||Y===o.current||Y.id===se){let Rt=Ze(Y),Ce=Y.x+Y.r/Math.max(1,A.k**.5)+3/A.k;_.lineWidth=3/A.k,_.strokeStyle=j?"#171a21":"#ffffff",_.strokeText(Rt,Ce,Y.y),_.fillStyle=j?"#e5e7eb":"#1b1f24",_.fillText(Rt,Ce,Y.y)}}_.globalAlpha=1},x=()=>{let $=n.current,L=i.current;if(!$||!L?.nodes.length)return;let _=window.devicePixelRatio||1,I=$.width/_,G=$.height/_,q=Number.POSITIVE_INFINITY,A=Number.POSITIVE_INFINITY,j=Number.NEGATIVE_INFINITY,se=Number.NEGATIVE_INFINITY;for(let be of L.nodes)be.x===void 0||be.y===void 0||(q=Math.min(q,be.x),A=Math.min(A,be.y),j=Math.max(j,be.x),se=Math.max(se,be.y));let He=Math.max(100,j-q+120),N=Math.max(100,se-A+120),re=Math.min(2.5,Math.min(I/He,G/N));r.current={k:re,x:-((q+j)/2)*re,y:-((A+se)/2)*re},f()};Js(e.handle??null,()=>({fit:x}),[]);let h=e.nodes.map($=>$.id).join("|"),m=e.edges.map($=>`${$.src}|${$.dst}|${$.kind}`).join(`
3
+ `),v=e.mode??"galaxy";U(()=>{let $=e.keepPositions?i.current?.byId:void 0;i.current?.sim.stop();let L=v==="hierarchy"?Dr(e.nodes,e.edges):Jn(e.nodes,e.edges,$);i.current=L,a.current=!1;let _=!1,I=!1,G=0;if(v==="hierarchy"){x();return}return L.sim.on("tick",()=>{G++,(G%2===0||L.sim.alpha()<.05)&&f(),!_&&(G===30||L.sim.alpha()<.3)&&(_=!0,a.current||x())}),L.sim.on("end",()=>{I||(I=!0,_=!0,a.current||x())}),()=>L.sim.stop()},[h,m,v]),U(()=>{f()},[e.selected,e.highlight,d,e.colorOf,e.shapeOf,e.edgeStyleOf]),U(()=>{let $=s.current,L=n.current;if(!$||!L)return;let _=()=>{let A=window.devicePixelRatio||1;L.width=Math.max(1,$.clientWidth*A),L.height=Math.max(1,$.clientHeight*A),f()};_();let I=new ResizeObserver(_);I.observe($);let G=window.matchMedia("(prefers-color-scheme: dark)");G.addEventListener("change",f);let q=new MutationObserver(f);return q.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>{I.disconnect(),G.removeEventListener("change",f),q.disconnect()}},[]);let y=$=>{let _=n.current.getBoundingClientRect(),I=r.current;return{x:($.clientX-_.left-_.width/2-I.x)/I.k,y:($.clientY-_.top-_.height/2-I.y)/I.k}},b=$=>{let L=i.current;if(!L)return null;let _=y($),I=r.current,G=null,q=Number.POSITIVE_INFINITY;for(let A of L.nodes){if(A.x===void 0||A.y===void 0)continue;let j=Math.hypot(A.x-_.x,A.y-_.y),se=A.r/Math.max(1,I.k**.5)+6/I.k;j<se&&j<q&&(q=j,G=A)}return G},k=$=>{let L=b($),_=r.current;l.current={node:L??void 0,px:$.clientX,py:$.clientY,vx:_.x,vy:_.y,moved:!1},L&&(L.fx=L.x,L.fy=L.y,i.current?.sim.alphaTarget(.2).restart()),p(!0),$.preventDefault()},T=$=>{let L=l.current;if(L){let I=$.clientX-L.px,G=$.clientY-L.py;if(Math.abs(I)+Math.abs(G)>3&&(L.moved=!0),L.node){let q=y($);L.node.fx=q.x,L.node.fy=q.y,v==="hierarchy"&&(L.node.x=q.x,L.node.y=q.y,f())}else L.moved&&(a.current=!0),r.current={...r.current,x:L.vx+I,y:L.vy+G},f();return}let _=b($);_!==o.current&&(o.current=_,c(_))},E=$=>{let L=l.current;l.current=null,p(!1),L&&(L.node?(v!=="hierarchy"&&(L.node.fx=null,L.node.fy=null,i.current?.sim.alphaTarget(0)),L.moved||g.current.onSelect?.(L.node.id===g.current.selected?null:L.node.id)):L.moved||g.current.onSelect?.(null))},w=$=>{$.preventDefault();let _=n.current.getBoundingClientRect(),I=r.current;a.current=!0;let G=$.deltaY>0?.9:1.1,q=Math.max(.05,Math.min(8,I.k*G)),A=$.clientX-_.left-_.width/2,j=$.clientY-_.top-_.height/2;r.current={k:q,x:A-(A-I.x)*q/I.k,y:j-(j-I.y)*q/I.k},f()},C=$=>{let L=b($);L&&g.current.onActivate?.(L.id)},R=[...new Set(e.nodes.map($=>$.kind))],F=[...new Set(e.edges.map($=>$.kind))];return t("div",{class:"gwrap",ref:s,children:[t("canvas",{ref:n,class:D(u&&"drag",d&&!u&&"hover"),onMouseDown:k,onMouseMove:T,onMouseUp:E,onMouseLeave:()=>{o.current=null,c(null),l.current&&!l.current.node&&(l.current=null)},onWheel:w,onDblClick:C}),d&&!u&&t("div",{class:"overlay tip",style:{left:12,top:12},children:[t("b",{children:d.kind})," ",d.label,d.path&&d.kind!=="file"?t("span",{class:"muted",children:[" ","\xB7 ",d.path,d.line?`:${d.line}`:""]}):null,t("span",{class:"muted",children:[" ","\xB7 ",d.deg," edge",d.deg===1?"":"s"]})]}),e.legend!==!1&&t("div",{class:"overlay legend",children:[R.map($=>{let L=e.nodes.find(_=>_.kind===$);return t("span",{children:[e.shapeOf||e.colorOf?t(Ne,{shape:(e.shapeOf??Kn)(L),color:(e.colorOf??Vn)(L)}):t("i",{style:{background:xe($)}}),$]})}),F.map($=>{let L=e.edgeStyleOf?.($,1);return t("span",{children:[L?t(it,{color:L.color,dash:L.dash}):t("s",{style:{borderColor:tt($)}}),$]})})]}),t("button",{type:"button",class:"overlay fit",onClick:x,children:"fit view"})]})}function Or(e,n,s,i,r){let a=e.reduce((x,h)=>x+(h.value??h.size),0);if(!a||!e.length)return[];let o=i*r/a,l=[],d=0,c=n,u=s,p=i,g=r,f=[...e].sort((x,h)=>(h.value??h.size)-(x.value??x.size));for(;d<f.length;){let x=p>=g,h=x?g:p,m=[],v=0,y=Number.POSITIVE_INFINITY;for(;d<f.length;){let T=f[d],E=(T.value??T.size)*o,w=[...m,T],C=v+E,R=Math.max(...w.map(L=>(L.value??L.size)*o)),F=Math.min(...w.map(L=>(L.value??L.size)*o)),$=Math.max(h*h*R/(C*C),C*C/(h*h*F));if($>y&&m.length)break;y=$,m=w,v=C,d++}let b=h?v/h:0,k=0;for(let T of m){let E=b?(T.value??T.size)*o/b:0;l.push(x?{node:T,x:c,y:u+k,w:b,h:E,depth:0}:{node:T,x:c+k,y:u,w:E,h:b,depth:0}),k+=E}x?(c+=b,p-=b):(u+=b,g-=b)}return l}function Hr(e,n,s,i=18){let r=[];for(let a of Or(e.children??[],0,0,n,s))if(r.push({...a,depth:0}),a.node.children?.length&&a.w>40&&a.h>30)for(let o of Or(a.node.children,a.x+2,a.y+i,Math.max(0,a.w-4),Math.max(0,a.h-i-2)))r.push({...o,depth:1});return r}function Br(e,n,s){let i={name:n||"(project)",path:n,size:0,children:[]},r=new Map([["",i]]),a=l=>{let d=r.get(l);if(d)return d;let c=a(l.includes("/")?l.slice(0,l.lastIndexOf("/")):""),u={name:l.split("/").pop()??l,path:l,size:0,children:[]};return c.children.push(u),r.set(l,u),u};for(let l of e){if(n&&!l.path.startsWith(n))continue;let d=n?l.path.slice(n.length).replace(/^\//,""):l.path,c=d.includes("/")?d.slice(0,d.lastIndexOf("/")):"",u=Math.max(1,s(l));a(c).children.push({name:d.split("/").pop()??d,path:l.path,size:u,data:l})}let o=l=>(l.children?.length&&(l.size=l.children.reduce((d,c)=>d+o(c),0)),l.size);return o(i),i}var zr={typescript:"#2563eb",tsx:"#3b82f6",javascript:"#d97706",python:"#16a34a",go:"#0d9488",php:"#6366f1",other:"#6b7280"};function Ha(e){let n=Math.max(0,Math.min(1,e)),s=Math.round(37+180*n),i=Math.round(99+20*n),r=Math.round(235+-229*n);return`rgb(${s},${i},${r})`}function Ba({files:e,arch:n}){let[s,i]=S(""),[r,a]=S("language"),[o,l]=S("loc"),[d,c]=S(null),u=oe(null),[p,g]=S({w:900,h:520});U(()=>{let y=u.current;if(!y)return;let b=new ResizeObserver(()=>g({w:y.clientWidth,h:y.clientHeight}));return b.observe(y),g({w:y.clientWidth,h:y.clientHeight}),()=>b.disconnect()},[]);let f=V(()=>{let y=Br(e,s,b=>o==="uniform"?1:b.loc||Math.max(1,b.size/40));return Hr(y,p.w,p.h)},[e,s,o,p]),h=d?(y=>e.filter(b=>b.path===y||b.path.startsWith(`${y}/`)))(d):[],m=h.length===1&&h[0]?.path===d?h[0]:void 0,v=n?.entryPoints.filter(y=>y.kind!=="script")??[];return t("div",{class:"grid wide",style:{alignItems:"start"},children:[t("div",{children:[t("div",{class:"row",style:{marginBottom:8},children:[t("span",{class:"row tight",children:[t("a",{onClick:()=>i(""),children:n?.project.name??"project"}),s.split("/").filter(Boolean).map((y,b,k)=>t(P,{children:[t("span",{class:"muted",children:"\u203A"}),t("a",{onClick:()=>i(k.slice(0,b+1).join("/")),children:y})]}))]}),t("span",{class:"spacer"}),t("span",{class:"row tight",children:[t("button",{type:"button",class:D("chip",o==="loc"&&"on"),onClick:()=>l("loc"),children:"size: loc"}),t("button",{type:"button",class:D("chip",o==="uniform"&&"on"),onClick:()=>l("uniform"),children:"uniform"}),t("button",{type:"button",class:D("chip",r==="language"&&"on"),onClick:()=>a("language"),children:"color: language"}),t("button",{type:"button",class:D("chip",r==="heat"&&"on"),onClick:()=>a("heat"),children:"heat"})]})]}),t("div",{class:"treemap",ref:u,children:f.map(y=>{let b=y.node.data,k=!!y.node.children?.length,T=b?r==="heat"?Ha(b.score):zr[b.language??"other"]??zr.other:void 0;return t("div",{class:D("cell",k&&"dir",d===y.node.path&&"sel"),style:{left:y.x,top:y.y,width:Math.max(0,y.w),height:Math.max(0,y.h),background:T},title:b?`${b.path} \xB7 ${b.loc} loc \xB7 ${b.symbols} symbols \xB7 heat ${b.score.toFixed(2)}`:`${y.node.path} \xB7 ${y.node.size} loc`,onClick:E=>{E.stopPropagation(),c(y.node.path)},onDblClick:E=>{E.stopPropagation(),k?i(y.node.path):b&&O("explore",{file:b.path})},children:k?t("span",{class:"lbl",children:[y.node.name,"/"]}):y.w>50&&y.h>14?y.node.name:""})})}),t("div",{class:"muted small",style:{marginTop:6},children:"Area is lines of code (or uniform). Double-click a folder to open it, a file to read it. Heat mixes fan-in, recent commits and complexity; it is a signal, not a grade."})]}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("h3",{children:d??"selection"}),m?t(P,{children:[t("div",{class:"row small",children:[t(M,{children:m.language??"?"}),t(M,{children:[m.loc," loc"]}),t(M,{children:[m.symbols," symbols"]}),t(M,{children:["fan-in ",m.fanIn]}),t(M,{children:["heat ",m.score.toFixed(2)]}),t(M,{children:m.status})]}),t("div",{class:"row",style:{marginTop:8},children:[t("button",{type:"button",class:"sm",onClick:()=>O("explore",{file:m.path}),children:"Open source"}),t("button",{type:"button",class:"sm",onClick:()=>O("galaxy",{node:`file:${m.path}`}),children:"Galaxy"})]})]}):h.length?t("div",{class:"row small",children:[t(M,{children:[h.length," files"]}),t(M,{children:[te(h.reduce((y,b)=>y+b.loc,0))," loc"]}),t(M,{children:[h.reduce((y,b)=>y+b.symbols,0)," symbols"]}),t(M,{children:["mean heat ",(h.reduce((y,b)=>y+b.score,0)/h.length).toFixed(2)]})]}):t("div",{class:"muted small",children:"Click a cell."})]}),t("div",{class:"card",children:[t("h3",{children:"entry points"}),v.length?t("table",{children:t("tbody",{children:v.map(y=>t("tr",{class:"click",onClick:()=>O("explore",{file:y.path}),children:[t("td",{children:t(M,{children:y.kind})}),t("td",{class:"break",children:y.name}),t("td",{class:"muted small break",children:y.path})]}))})}):t("div",{class:"muted small",children:"none found"})]}),n&&t("div",{class:"card",children:[t("h3",{children:"overview"}),t("div",{class:"row small",children:[t(M,{children:[n.overview.files," files"]}),t(M,{children:[n.overview.symbols," symbols"]}),t(M,{children:[n.overview.edges," edges"]}),Object.entries(n.overview.languages).map(([y,b])=>t(M,{children:[y," ",b]}))]}),n.project.description?t("div",{class:"muted small",style:{marginTop:6},children:n.project.description}):null]})]})]})}function za(){let e=X(()=>H("/api/routes"),[]);return e.error?t(K,{error:e.error}):e.data?e.data.length?t("div",{class:"card flush",children:t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"method"}),t("th",{children:"path"}),t("th",{children:"framework"}),t("th",{children:"handler"}),t("th",{children:"registered in"})]})}),t("tbody",{children:e.data.map(n=>t("tr",{children:[t("td",{children:t(M,{children:n.method})}),t("td",{class:"mono",children:n.path}),t("td",{class:"muted",children:n.framework}),t("td",{children:n.handlers.map(s=>t("div",{children:[t("a",{onClick:()=>s.path?O("explore",{file:s.path,symbol:s.id}):O("galaxy",{node:s.id}),children:s.name}),s.path?t("span",{class:"muted small",children:[" ",s.path]}):null]}))}),t("td",{class:"muted small",children:t("a",{onClick:()=>O("explore",{file:n.file,line:n.line?String(n.line):void 0}),children:[n.file,n.line?`:${n.line}`:""]})})]}))})]})}):t(W,{children:"No routes detected. express/fastify/hono/koa/hapi/restify registrations, moleculer service schemas and gateway aliases, and Next.js route files are recognised."}):t(z,{})}function ja(){let[e,n]=S("file"),[s,i]=S(""),r=X(()=>H("/api/hotspots",{kind:e,path:s.trim()||void 0,limit:80}),[e,s]),{sorted:a,th:o}=st(r.data,"score"),l={fan_in:Math.max(1,...a.map(d=>d.fan_in)),commits_90d:Math.max(1,...a.map(d=>d.commits_90d)),complexity:Math.max(1,...a.map(d=>d.complexity))};return t(P,{children:[t("div",{class:"row",style:{marginBottom:10},children:[t("button",{type:"button",class:D("chip",e==="file"&&"on"),onClick:()=>n("file"),children:"files"}),t("button",{type:"button",class:D("chip",e==="symbol"&&"on"),onClick:()=>n("symbol"),children:"functions and classes"}),t("input",{type:"text",placeholder:"folder prefix, e.g. src/graph/",value:s,onInput:d=>i(d.target.value),style:{width:260}}),t("span",{class:"muted small",children:"Score = 0.4\xB7fan-in + 0.4\xB7commits/90d + 0.2\xB7complexity, log-scaled. A signal of where attention goes, not a quality grade."})]}),r.error?t(K,{error:r.error}):r.data?t("div",{class:"card flush",children:t("table",{children:[t("thead",{children:t("tr",{children:[o("path",e==="file"?"file":"symbol"),o("fan_in","fan-in",!0),o("commits_90d","commits/90d",!0),o("complexity","complexity",!0),o("loc","loc",!0),o("score","score",!0),t("th",{children:"last"})]})}),t("tbody",{children:a.map(d=>t("tr",{class:"click",onClick:()=>d.kind==="file"?O("explore",{file:d.path}):O("explore",{file:d.path.split(" > ")[0],symbol:d.id}),children:[t("td",{class:"break",children:[d.kind!=="file"?t(ue,{kind:d.kind}):null,d.path]}),t("td",{class:"num",children:[t(Le,{value:d.fan_in,max:l.fan_in,width:60})," ",d.fan_in]}),t("td",{class:"num",children:[t(Le,{value:d.commits_90d,max:l.commits_90d,width:60})," ",d.commits_90d]}),t("td",{class:"num",children:[t(Le,{value:d.complexity,max:l.complexity,width:60})," ",d.complexity]}),t("td",{class:"num",children:d.loc}),t("td",{class:"num",children:t("b",{children:d.score.toFixed(2)})}),t("td",{class:"muted small",children:d.last_touched})]}))})]})}):t(z,{})]})}function Ua(){let e=X(()=>H("/api/clusters"),[]),[n,s]=S(null),[i,r]=S(null),[a,o]=S(new Set),l=V(()=>{let u=e.data;if(!u)return{nodes:[],edges:[]};let p=[],g=[];if(i!==null){let f=u.cycles[i]??[];for(let x of f)p.push({id:`file:${x}`,label:x,kind:"file",path:x,line:null});for(let x=0;x<f.length;x++)g.push({src:`file:${f[x]}`,dst:`file:${f[(x+1)%f.length]}`,kind:"imports",weight:1});return{nodes:p,edges:g}}for(let f of u.clusters){if(a.has(f.id))for(let x of u.members[String(f.id)]??[])p.push({id:`file:${x.path}`,label:x.path,kind:"file",path:x.path,line:null,score:x.score});if(p.push({id:`cluster:${f.id}`,label:`#${f.id} ${f.label} (${f.size})`,kind:"cluster",path:null,line:null}),a.has(f.id))for(let x of u.members[String(f.id)]??[])g.push({src:`file:${x.path}`,dst:`cluster:${f.id}`,kind:"link",weight:.5});for(let[x,h]of Object.entries(f.links))g.push({src:`cluster:${f.id}`,dst:`cluster:${x}`,kind:"imports",weight:Math.min(1,h/10),count:h})}return{nodes:p,edges:g}},[e.data,i,a]);if(e.error)return t(K,{error:e.error});let d=e.data;if(!d)return t(z,{});let c=n?.startsWith("cluster:")?d.clusters.find(u=>String(u.id)===n.slice(8)):void 0;return t("div",{class:"grid wide",style:{alignItems:"start"},children:[t("div",{class:"card flush",style:{height:560},children:l.nodes.length?t(Ae,{nodes:l.nodes,edges:l.edges,selected:n,onSelect:s,onActivate:u=>{if(u.startsWith("cluster:")){let p=Number(u.slice(8));o(g=>{let f=new Set(g);return f.has(p)?f.delete(p):f.add(p),f})}else u.startsWith("file:")&&O("explore",{file:u.slice(5)})}}):t(W,{children:"No clusters yet. Run a reindex."})}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("h3",{children:["clusters \xB7 ",d.clusters.length]}),t("div",{class:"muted small",style:{marginBottom:6},children:"Connectivity groups from imports and co-change (label propagation). Double-click a cluster to expand its files; they are not proof of architectural boundaries."}),t("div",{class:"list",style:{maxHeight:260},children:d.clusters.map(u=>t("div",{class:D("item",n===`cluster:${u.id}`&&"sel"),onClick:()=>{r(null),s(`cluster:${u.id}`)},children:[t("div",{class:"n",children:["#",u.id," ",u.label," ",t("span",{class:"muted",children:["\xB7 ",u.size," files"]})]}),t("div",{class:"p",children:u.files.slice(0,3).join(", ")})]}))})]}),c&&t("div",{class:"card",children:[t("h3",{children:["cluster #",c.id," members"]}),t("div",{class:"list",style:{maxHeight:220},children:(d.members[String(c.id)]??[]).map(u=>t("div",{class:"item",onClick:()=>O("explore",{file:u.path}),children:t("div",{class:"p",children:[u.path," ",t("span",{class:"muted",children:["\xB7 heat ",u.score.toFixed(2)]})]})}))})]}),t("div",{class:"card",children:[t("h3",{children:["import cycles \xB7 ",d.cycles.length]}),d.cycles.length?t("div",{class:"list",style:{maxHeight:220},children:d.cycles.map((u,p)=>t("div",{class:D("item",i===p&&"sel"),onClick:()=>{r(i===p?null:p),s(null)},children:t("div",{class:"p",children:[u.length," files: ",u.slice(0,4).join(" \u2192 "),u.length>4?" \u2026":""]})}))}):t("div",{class:"muted small",children:"none"}),i!==null?t("button",{type:"button",class:"sm",style:{marginTop:6},onClick:()=>r(null),children:"show clusters"}):null]})]})]})}function jr({id:e,depth:n,onSelect:s,selected:i}){let r=X(()=>H("/api/behavior",{id:e}),[e]),[a,o]=S(new Set);if(r.error)return t("div",{class:"muted small",children:r.error});if(!r.data)return t(z,{});let l=r.data;return t(P,{children:[n===0&&t("div",{class:D("bnode",i===l.root.id&&"sel"),onClick:()=>s(l),children:[t(M,{children:"start"}),t(ue,{kind:l.root.kind}),t("b",{children:l.root.label}),t("span",{class:"muted small",children:l.root.path})]}),t("div",{class:"kids",children:l.callees.length?l.callees.map(d=>{let c=a.has(d.node.id);return t(P,{children:[t("div",{class:D("bnode",i===d.node.id&&"sel"),onClick:()=>s({root:d.node,callees:[]}),children:[t("span",{class:"arrow",onClick:u=>{u.stopPropagation(),o(p=>{let g=new Set(p);return g.has(d.node.id)?g.delete(d.node.id):g.add(d.node.id),g})},children:d.node.kind==="package"||d.node.kind==="route"?"\xB7":c?"\u25BE":"\u25B8"}),t(M,{children:d.kind==="handles"?"handles":"possible call"}),t(ue,{kind:d.node.kind}),t("span",{children:d.node.label}),t("span",{class:"muted small",children:[d.lines?.length?`L${d.lines.join(", L")}`:"",d.count&&d.count>1?` \xD7${d.count}`:""]})]}),c&&n<6?t(jr,{id:d.node.id,depth:n+1,onSelect:s,selected:i}):null]})}):t("div",{class:"muted small",style:{padding:"2px 6px"},children:"no resolved calls"})})]})}function Ga({params:e}){let[n,s]=S(e.node??null),[i,r]=S(""),[a,o]=S([]),[l,d]=S(null);return U(()=>{if(i.trim().length<2)return o([]);let c=setTimeout(()=>{H("/api/nodes/search",{q:i.trim(),limit:10}).then(u=>o(u.filter(p=>p.kind!=="file"&&p.kind!=="package"))).catch(()=>o([]))},180);return()=>clearTimeout(c)},[i]),t("div",{class:"grid wide",style:{alignItems:"start"},children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:10,position:"relative"},children:[t("span",{class:"muted small",children:"Start"}),t("input",{type:"text",placeholder:"function or method\u2026",value:i,onInput:c=>r(c.target.value),style:{width:320}}),a.length>0&&t("div",{class:"suggest",style:{top:36,left:40},children:a.map(c=>t("div",{onMouseDown:()=>{s(c.id),r(""),o([]),d(null)},children:[t(ue,{kind:c.kind}),t("span",{class:"ellipsis",children:c.label}),t("span",{class:"path",children:c.path})]}))}),t("span",{class:"muted small",children:"Branches are possible static calls from the index, not an execution order."})]}),t("div",{class:"btree",children:n?t(jr,{id:n,depth:0,onSelect:d,selected:l?.root.id??null}):t(W,{children:"Choose a starting operation."})})]}),t("div",{class:"card",children:[t("h3",{children:l?"selected operation":"starting operation"}),l?t(P,{children:[t("div",{class:"row tight",children:[t(ue,{kind:l.root.kind}),t("b",{class:"break",children:l.root.label})]}),t("div",{class:"muted small",children:[l.root.path,l.root.line?`:${l.root.line}`:"",l.root.endLine?`\u2013${l.root.endLine}`:""]}),l.root.complexity?t("div",{class:"row small",style:{marginTop:6},children:[t(M,{children:["complexity ",l.root.complexity]}),t(M,{children:[l.root.loc," loc"]})]}):null,t("div",{class:"row",style:{marginTop:8},children:[l.root.path?t("button",{type:"button",class:"sm",onClick:()=>O("explore",{file:l.root.path,line:l.root.line?String(l.root.line):void 0,symbol:l.root.id}),children:"Open definition"}):null,t("button",{type:"button",class:"sm",onClick:()=>{s(l.root.id),d(null)},children:"Start here"}),t("button",{type:"button",class:"sm",onClick:()=>O("galaxy",{node:l.root.id}),children:"Galaxy"})]})]}):t("div",{class:"muted small",children:"Click an operation in the tree."})]})]})}function Ur({params:e}){let[n,s]=S(e.tab||"overview");U(()=>{e.tab&&s(e.tab)},[e.tab]);let i=X(()=>H("/api/tree"),[]),r=X(()=>H("/api/architecture",{aspects:"overview,entry_points"}),[]);return t("div",{class:"page",children:[t($e,{tabs:[["overview","Overview"],["routes","Routes"],["hotspots","Hotspots"],["structure","System structure"],["behavior","Behavior"]],value:n,onChange:s}),n==="overview"&&(i.data?t(Ba,{files:i.data.files,arch:r.data}):i.error?t(K,{error:i.error}):t(z,{})),n==="routes"&&t(za,{}),n==="hotspots"&&t(ja,{}),n==="structure"&&t(Ua,{}),n==="behavior"&&t(Ga,{params:e})]})}function Gr(){let e=X(()=>H("/api/coverage"),[]),[n,s]=S(""),[i,r]=S(""),[a,o]=S(null),l=V(()=>{let m=i.trim().toLowerCase();return(e.data?.files??[]).filter(v=>(!n||v.status===n)&&(!m||v.path.toLowerCase().includes(m)||(v.reason??"").toLowerCase().includes(m)))},[e.data,n,i]),{sorted:d,th:c}=st(l,"path",!1),u=async(m,v)=>{o(m);try{let y=await ye("/api/actions",v);Z(y.output.split(`
4
+ `)[0]??"done",!y.ok),e.reload()}catch(y){Z(y.message,!0)}finally{o(null)}};if(e.error)return t("div",{class:"page",children:t(K,{error:e.error})});let p=e.data;if(!p)return t("div",{class:"page",children:t(z,{})});let g=p.summary.byStatus,f=Object.values(g).reduce((m,v)=>m+v,0),x=p.freshness.headMatches&&!p.freshness.dirty.length&&!p.freshness.queued,h=[["indexed",g.indexed??0,"parsed into the graph and search"],["partial",g.partial??0,"indexed, syntax errors recovered"],["skipped",g.skipped??0,"too large or parser error"],["unsupported",g.unsupported??0,"matched by globs, no parser"]];return t("div",{class:"page",children:[t("div",{class:"grid",children:[h.map(([m,v,y])=>t("div",{class:D("card"),style:{cursor:"pointer"},onClick:()=>s(n===m?"":m),children:[t("h3",{children:[m,n===m?t("span",{class:"right",children:"filtering"}):null]}),t("div",{class:D("big",m==="skipped"&&v>0&&"bad",m==="partial"&&v>0&&"warn"),children:v}),t("div",{class:"sub",children:y})]})),t("div",{class:"card",children:[t("h3",{children:"freshness"}),t("div",{class:D("big",x?"ok":"warn"),children:x?"fresh":p.freshness.dirty.length||p.freshness.queued?"stale":"git behind"}),t("div",{class:"sub",children:[p.freshness.dirty.length," changed \xB7 ",p.freshness.queued," queued"]})]})]}),t("div",{class:"grid wide",children:[t("div",{class:"card",children:[t("h3",{children:["files"," ",t("span",{class:"right",children:[d.length," of ",f]})]}),t("div",{class:"row",style:{marginBottom:8},children:[t("input",{type:"search",class:"grow",placeholder:"filter by path or reason\u2026",value:i,onInput:m=>r(m.target.value)}),t("select",{value:n,onChange:m=>s(m.target.value),children:[t("option",{value:"",children:"any status"}),["indexed","partial","skipped","unsupported"].map(m=>t("option",{value:m,children:m}))]}),t("button",{type:"button",disabled:!!a,onClick:()=>u("code",{action:"reindex",scope:"code"}),children:a==="code"?t(z,{}):"Reindex code"}),t("button",{type:"button",disabled:!!a,onClick:()=>u("full",{action:"reindex",scope:"code",full:!0}),children:a==="full"?t(z,{}):"Full reindex"})]}),t("div",{class:"list",style:{maxHeight:560},children:t("table",{children:[t("thead",{children:t("tr",{children:[c("path","path"),c("status","status"),c("reason","reason"),c("symbols","symbols",!0),c("size","size",!0),c("indexed_at","indexed",!0),t("th",{})]})}),t("tbody",{children:d.length?d.slice(0,500).map(m=>t("tr",{children:[t("td",{class:"break",children:t("a",{onClick:()=>O("explore",{file:m.path}),children:m.path})}),t("td",{children:t(M,{class:m.status==="indexed"?"s-accepted":m.status==="partial"?"s-proposed":"risk-high",children:m.status})}),t("td",{class:"muted small",children:[m.reason??"",m.errors?t("div",{class:"bad small",children:m.errors.slice(0,160)}):null]}),t("td",{class:"num",children:m.symbols??""}),t("td",{class:"num",children:te(m.size??0)}),t("td",{class:"num muted small",children:ie(m.indexed_at)}),t("td",{children:t("button",{type:"button",class:"sm",disabled:!!a,onClick:()=>u(m.path,{action:"reindex",scope:"code",paths:[m.path]}),children:a===m.path?t(z,{}):"reindex"})})]})):t("tr",{children:t("td",{colSpan:7,children:t(W,{children:"no files match"})})})})]})})]}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("h3",{children:"index state"}),t(Ie,{rows:[["HEAD",p.freshness.head?.slice(0,10)??"no git"],["git signals at",p.freshness.indexedHead?`${p.freshness.indexedHead.slice(0,10)}${p.freshness.headMatches?" (current)":" (behind)"}`:"never"],["last run",p.freshness.lastRun?ie(p.freshness.lastRun):"never"],["queued",String(p.freshness.queued)],["last scan",p.scan?.at?`${ie(p.scan.at)} \xB7 ${p.scan.scanned} files \xB7 ${p.scan.durationMs} ms`:"n/a"]]})]}),p.freshness.dirty.length?t("div",{class:"card",children:[t("h3",{children:["changed since indexed \xB7 ",p.freshness.dirty.length]}),t("div",{class:"list",style:{maxHeight:200},children:p.freshness.dirty.map(m=>t("div",{class:"item",onClick:()=>O("explore",{file:m}),children:t("div",{class:"p",children:m})}))}),t("button",{type:"button",class:"sm",style:{marginTop:6},disabled:!!a,onClick:()=>u("dirty",{action:"reindex",scope:"code",paths:p.freshness.dirty}),children:a==="dirty"?t(z,{}):"Reindex changed files"})]}):null,p.summary.reasons.length?t("div",{class:"card",children:[t("h3",{children:"why files are not fully indexed"}),t("table",{children:t("tbody",{children:p.summary.reasons.map(m=>t("tr",{class:"click",onClick:()=>r(m.reason),children:[t("td",{children:m.reason}),t("td",{class:"num",children:m.n})]}))})})]}):null,t("div",{class:"card",children:[t("h3",{children:"scope"}),t("div",{class:"small",children:[t("div",{class:"muted",children:"include"}),t("div",{class:"mono break",children:(p.scan?.include??[]).join(" ")||"(defaults)"}),t("div",{class:"muted",style:{marginTop:4},children:"exclude"}),t("div",{class:"mono break",children:(p.scan?.exclude??[]).join(" ")||"(defaults)"}),t("div",{class:"muted",style:{marginTop:6},children:"Change them in eminiar.config.json under graph.include / graph.exclude. A clean coverage result means no recorded gap, not proof of completeness."})]})]})]})]})]})}var kt=[{id:"readme",group:"project",label:"Readme & guides",blurb:"README, CONTRIBUTING, CHANGELOG and other top-level guides"},{id:"guides",group:"project",label:"Docs folders",blurb:"docs/ directories: handbooks, how-tos, references"},{id:"adr",group:"project",label:"Decision records",blurb:"architecture decision records"},{id:"agent-instructions",group:"project",label:"Agent instructions",blurb:"Copilot, Claude and Cursor instructions, agents and skills"},{id:"api-specs",group:"project",label:"API specs",blurb:"OpenAPI, Postman, GraphQL and protobuf definitions"},{id:"env-reference",group:"project",label:"Environment reference",blurb:".env examples: every variable the project reads"},{id:"deploy-config",group:"project",label:"Deploy config",blurb:"Terraform, Kubernetes, Helm, Compose and CI workflows"},{id:"local",group:"project",label:"Other local files",blurb:"hand-registered paths"},{id:"service",group:"external",label:"Services",blurb:"third-party products and APIs the project integrates"},{id:"api",group:"external",label:"External APIs",blurb:"hosts the code calls, found by probing their docs"},{id:"infra",group:"external",label:"Infrastructure",blurb:"platforms the project runs on"},{id:"library",group:"external",label:"Libraries",blurb:"frameworks and packages"},{id:"web",group:"external",label:"Web pages",blurb:"hand-registered URLs"}],Xr=new Map(kt.map(e=>[e.id,e]));function Qt(e){return Xr.get(e)??Xr.get("local")}var qr={project:"Project documentation",external:"External documentation"};function Zn(e){let n=kt.findIndex(s=>s.id===e);return n===-1?kt.length:n}function at({title:e,rows:n,label:s,onPick:i,max:r=60}){return t("div",{class:"section",children:[t("h4",{children:[e," \xB7 ",n.length]}),t("table",{children:t("tbody",{children:n.slice(0,r).map(a=>t("tr",{class:"click",onClick:()=>i(a.id),children:[t("td",{children:t(M,{children:a.kind})}),t("td",{class:"break",children:s(a.id)})]}))})}),n.length>r?t("div",{class:"muted small",children:["\u2026 ",n.length-r," more"]}):null]})}function Xa(e,n){if(n.hiddenKinds.has(e.kind))return!1;if(e.group==="memory"&&!e.missing){let s=e.status??"accepted";if(n.hideSuperseded&&s==="superseded"||n.status&&s!==n.status)return!1}return!(e.group==="doc"&&!e.missing&&n.category&&e.sub!==n.category)}function en(e,n){let s=new Set(e.nodes.filter(o=>Xa(o,n)).map(o=>o.id)),i=e.edges.filter(o=>!n.hiddenEdges.has(o.kind)&&s.has(o.src)&&s.has(o.dst)),r=new Set(i.flatMap(o=>[o.src,o.dst]));return{nodes:e.nodes.filter(o=>s.has(o.id)&&(o.seed||o.root||r.has(o.id))),edges:i}}function Ue(e,n){let s=new Map;for(let i of e)s.set(n(i),(s.get(n(i))??0)+1);return s}var qa={memory:"diamond",doc:"square",tag:"triangle",topic:"hexagon"};function tn(e){return e.missing?"ring":qa[e.kind]??"circle"}function nn(e){let n=e;return n.group==="memory"&&(n.status==="superseded"||n.status==="deprecated")?"#93c5fd":xe(e.kind)}function xt(e){let n={links:[4,3],supersedes:[6,3],about:[2,3],tagged:[1,3],in_topic:[1,3]};return{color:tt(e),dash:n[e],width:e==="documents"||e==="mentions"?1.4:1,alpha:e==="tagged"||e==="in_topic"?.35:.55,directed:Wt.has(e)}}function Wr(e){let n=e;return n.group==="memory"||n.group==="doc"||n.group==="hub"||e.kind==="package"?e.label:e.kind==="file"?e.label.split("/").pop()??e.label:e.label.split(".").pop()??e.label}var Wa=["proposed","accepted","superseded","deprecated"],Ja=["memory","doc","topic","tag","file","package"],Va=["mentions","links","supersedes","documents","about","tagged","in_topic"],Ka={mentions:"a memory's related: header names it",links:"a mem: link in a memory's body",supersedes:"a decision that replaces another",documents:"a doc source covers this package or names this file",about:"a memory relates to a page of this local doc source",tagged:"carries this tag",in_topic:"memory topic or doc category"},Jr=(e,n)=>[...e].sort((s,i)=>{let r=n.indexOf(s),a=n.indexOf(i);return(r===-1?99:r)-(a===-1?99:a)||s.localeCompare(i)});function Vr(e,n){let s=new Set(e);return s.has(n)?s.delete(n):s.add(n),s}function sn({scope:e,focus:n}){let s=e==="docs"?"docs":"memory",[i,r]=S(null),[a,o]=S(!1),[l,d]=S(0),[c,u]=S(new Set),[p,g]=S(new Set),[f,x]=S(""),[h,m]=S(""),[v,y]=S(e==="memory"),[b,k]=S(!1),[T,E]=S(n??null);U(()=>{let N=!0;return o(!0),H("/api/knowledge",{scope:e,focus:n,limit:300}).then(re=>{N&&(r(re),E(n??null))}).catch(re=>N&&Z(re.message,!0)).finally(()=>N&&o(!1)),()=>{N=!1}},[e,n,l]);let w=V(()=>i?en(i,{hiddenKinds:c,hiddenEdges:p,status:f,category:h,hideSuperseded:v}):null,[i,c,p,f,h,v]),C=V(()=>Ue(i?.nodes??[],N=>N.kind),[i]),R=V(()=>Ue(i?.edges??[],N=>N.kind),[i]),F=N=>i?.nodes.find(re=>re.kind===N&&!re.missing),$=V(()=>[...new Set((i?.nodes??[]).filter(N=>N.group==="doc"&&N.sub).map(N=>N.sub))],[i]),L=(i?.nodes??[]).some(N=>N.group==="memory"),_=V(()=>new Map((i?.nodes??[]).map(N=>[N.id,N])),[i]),I=T?_.get(T):void 0,G=w?.edges??[],q=I?G.filter(N=>N.dst===I.id):[],A=I?G.filter(N=>N.src===I.id):[],j=N=>_.get(N)?.label??N,se=N=>O(s,{tab:"graph",focus:N}),He=n?_.get(n):void 0;return t("div",{class:"kgalaxy",children:[t("div",{class:"gtoolbar",children:[n?t("span",{class:"row tight",children:[t("span",{class:"muted small",children:"focused on"}),t("b",{class:"break",children:He?.label??n}),t("button",{type:"button",class:"sm",onClick:()=>O(s,{tab:"graph"}),children:"Show all"})]}):t("span",{class:"muted small",children:e==="docs"?"documentation sources and what they cover":"memories and what they are about"}),L?t(P,{children:[t("select",{value:f,title:"memory status",onChange:N=>x(N.target.value),children:[t("option",{value:"",children:"any status"}),Wa.map(N=>t("option",{value:N,children:N}))]}),t("button",{type:"button",class:D("chip",v&&"on"),onClick:()=>y(!v),children:"hide superseded"})]}):null,$.length?t("select",{value:h,title:"doc category",onChange:N=>m(N.target.value),children:[t("option",{value:"",children:"any category"}),$.map(N=>t("option",{value:N,children:Qt(N).label}))]}):null,t("button",{type:"button",class:D("chip",b&&"on"),onClick:()=>k(!b),children:"legend"}),t("button",{type:"button",class:"sm",title:"reload",onClick:()=>d(N=>N+1),children:"\u21BB"}),t("span",{class:"count",children:a?t(z,{}):w&&i?`${w.nodes.length} of ${i.nodes.length} nodes \xB7 ${w.edges.length} edges${i.truncated?` \xB7 first ${i.nodes.length} of ${i.total}`:""}`:""})]}),t("div",{class:"gtoolbar",style:{paddingTop:4,paddingBottom:6},children:[t("span",{class:"muted small",children:"nodes:"}),Jr([...C.keys()],Ja).map(N=>{let re=F(N);return t("button",{type:"button",class:D("chip",!c.has(N)&&"on"),onClick:()=>u(Vr(c,N)),children:[re?t(Ne,{shape:tn(re),color:nn(re)}):null,N," ",C.get(N)]})}),t("span",{class:"muted small",style:{marginLeft:8},children:"edges:"}),Jr([...R.keys()],Va).map(N=>{let re=xt(N);return t("button",{type:"button",title:Ka[N],class:D("chip",!p.has(N)&&"on"),onClick:()=>g(Vr(p,N)),children:[t(it,{color:re.color,dash:re.dash}),N," ",R.get(N)]})})]}),t("div",{class:"kbody",style:{gridTemplateColumns:I?"minmax(0,1fr) 320px":"minmax(0,1fr)"},children:[t("div",{style:{minWidth:0,minHeight:0},children:w?w.nodes.length?t(Ae,{nodes:w.nodes,edges:w.edges,selected:T,onSelect:E,onActivate:se,legend:b,colorOf:nn,shapeOf:tn,edgeStyleOf:xt,labelOf:Wr}):i?.nodes.length?t(W,{children:"Nothing left after these filters."}):e==="docs"?t(W,{children:"No documentation sources yet. Add some from Discover."}):t(W,{children:"No memories yet."}):t(W,{children:t(z,{})})}),I&&t("div",{class:"panel right",children:[t("div",{class:"head",children:["selection ",t("span",{class:"spacer"}),t("a",{onClick:()=>E(null),children:"close"})]}),t("div",{class:"body",children:[t(Za,{node:I,focus:n,onFocus:se}),t(at,{title:"incoming",rows:q.map(N=>({kind:N.kind,id:N.src})),label:j,onPick:E}),t(at,{title:"outgoing",rows:A.map(N=>({kind:N.kind,id:N.dst})),label:j,onPick:E})]})]})]})]})}function Za({node:e,focus:n,onFocus:s}){let i=e.group==="hub";return t("div",{class:"section",children:[t("div",{class:"row tight",children:[t(Ne,{shape:tn(e),color:nn(e)}),t(ue,{kind:e.kind}),t("b",{class:"break",children:e.label})]}),t("div",{class:"row tight wrap",style:{marginTop:4},children:[e.sub&&e.group==="memory"?t(M,{children:e.sub}):null,e.status?t("span",{class:`tag s-${e.status}`,children:e.status}):null,e.group==="doc"&&e.detail?t(M,{children:e.detail}):null,e.provider?t(M,{children:e.provider}):null,(e.tags??[]).map(r=>t(M,{children:["#",r]}))]}),e.path&&e.group==="code"&&e.kind!=="file"?t("div",{class:"muted small",children:[e.path,e.line?`:${e.line}`:""]}):null,e.missing?t("div",{class:"muted small",style:{marginTop:4},children:"Referenced, but nothing defines it: a deleted or renamed memory, a file outside the index, or a package the code does not import."}):null,t("div",{class:"row wrap",style:{marginTop:8},children:[e.id!==n?t("button",{type:"button",class:"sm primary",onClick:()=>s(e.id),children:"Focus here"}):null,e.group==="memory"&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>O("memory",{name:e.label}),children:"Open memory"}):null,e.group==="doc"&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>O("docs",{tab:"sources",name:e.label}),children:"Open doc source"}):null,!i&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>O("galaxy",{node:e.id}),children:"Open in code galaxy"}):null,e.kind==="file"&&e.path&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>O("explore",{file:e.path}),children:"Open source"}):null]})]})}var Ya={url:"#2563eb",path:"#16a34a"},Qa={catalog:"#16a34a",probe:"#2563eb",registry:"#d97706",unknown:"#6b7280"};function Zr({kind:e}){return t("span",{class:"tag kind",style:{color:Ya[e]??"#6b7280"},children:e})}function Yr({urls:e}){return t("span",{class:"break",children:e.map((n,s)=>t(P,{children:[s?", ":"",t("a",{href:n,target:"_blank",rel:"noreferrer",children:n})]}))})}function eo({s:e,busy:n,onSync:s,onRemove:i}){let r=X(()=>H("/api/docs/pages",{name:e.name}),[e.name,e.sync?.at]),a=[["kind",t(Zr,{kind:e.kind})],...e.provider?[["provider",e.provider]]:[],...e.title?[["title",e.title]]:[],e.kind==="url"?["seeds",t(Yr,{urls:e.urls??[]})]:["path",`${e.path}${e.glob?.length?` [${e.glob.join(", ")}]`:""}`],...e.kind==="url"?[["crawl",`depth ${e.crawl?.depth??"default"}, max ${e.crawl?.maxPages??"default"} pages, ttl ${e.ttlHours??"default"} h`]]:[],...e.tags?.length?[["tags",e.tags.join(", ")]]:[],["added",e.addedAt.slice(0,10)],["last sync",e.sync?`${ie(e.sync.at)} \xB7 ${e.sync.pages} ${e.kind==="url"?"pages":"files"} \xB7 ${e.sync.documents} docs \xB7 ${e.sync.chunks} chunks \xB7 ${e.sync.ms} ms${e.sync.errors.length?` \xB7 ${e.sync.errors.length} error(s)`:""}`:"never"]];return t("div",{children:[t("div",{class:"row",style:{marginBottom:6},children:[t("b",{class:"grow break",children:e.name}),t("button",{type:"button",class:"sm",disabled:!!n,onClick:()=>s(!1),children:n===`sync ${e.name}`?t(z,{}):"sync"}),t("button",{type:"button",class:"sm",disabled:!!n,title:"refetch ignoring the cache and drop stale pages",onClick:()=>s(!0),children:"force"}),t("button",{type:"button",class:"sm",title:"this source in the knowledge graph",onClick:()=>O("docs",{tab:"graph",focus:`doc:${e.name}`}),children:"graph"}),t("button",{type:"button",class:"sm danger",disabled:!!n,onClick:i,children:"remove"})]}),t(Ie,{rows:a}),e.sync?.errors.length?t("pre",{class:"log",style:{marginTop:8},children:e.sync.errors.join(`
5
+ `)}):null,t("h3",{style:{marginTop:12},children:["indexed pages ",t("span",{class:"muted small",children:["(",e.documents,")"]})]}),r.error?t(K,{error:r.error}):r.data?r.data.length?t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"title"}),t("th",{class:"num",children:"chunks"}),t("th",{children:"indexed"})]})}),t("tbody",{children:r.data.map(o=>t("tr",{children:[t("td",{class:"break",children:o.uri?.startsWith("http")?t("a",{href:o.uri,target:"_blank",rel:"noreferrer",children:o.title}):o.title}),t("td",{class:"num",children:o.chunks}),t("td",{class:"muted nowrap",children:ge(o.created_at)})]}))})]}):t(W,{children:"nothing indexed yet \u2014 run sync"}):t(z,{})]})}function to({onDone:e}){let[n,s]=S(""),[i,r]=S(""),[a,o]=S(""),[l,d]=S(""),[c,u]=S(""),[p,g]=S(""),[f,x]=S(""),[h,m]=S(""),[v,y]=S(!1);return t("div",{class:"card",children:[t("h3",{children:"add a source"}),t("div",{class:"grid",style:{gridTemplateColumns:"1fr 2fr 1fr",gap:8},children:[t("div",{class:"field",children:[t("label",{children:"name (optional)"}),t("input",{type:"text",placeholder:"moleculer",value:n,onInput:k=>s(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"url(s) \u2014 one per line; same-origin pages under each are crawled"}),t("textarea",{rows:2,placeholder:"https://moleculer.services/docs/0.14/",value:i,onInput:k=>r(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"or provider (npm:zod, pypi:fastapi, api:api.example.com)"}),t("input",{type:"text",value:c,onInput:k=>u(k.target.value)})]})]}),t("div",{class:"grid",style:{gridTemplateColumns:"2fr 2fr 1fr 1fr 2fr",gap:8},children:[t("div",{class:"field",children:[t("label",{children:"or local path"}),t("input",{type:"text",placeholder:"docs/",value:a,onInput:k=>o(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"globs (comma separated)"}),t("input",{type:"text",placeholder:"**/*.md",value:l,onInput:k=>d(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"crawl depth"}),t("input",{type:"number",min:0,max:3,value:p,onInput:k=>g(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"max pages"}),t("input",{type:"number",min:1,max:200,value:f,onInput:k=>x(k.target.value)})]}),t("div",{class:"field",children:[t("label",{children:"tags"}),t("input",{type:"text",value:h,onInput:k=>m(k.target.value)})]})]}),t("div",{class:"row",children:t("button",{type:"button",class:"primary",disabled:v,onClick:async()=>{let k=i.split(/\s+/).map(T=>T.trim()).filter(Boolean);if(!k.length&&!a.trim()&&!c.trim())return Z("give a url, a path or a provider",!0);y(!0);try{let T=await ye("/api/docs",{sources:[{name:n.trim()||void 0,urls:k.length?k:void 0,path:a.trim()||void 0,glob:l.trim()?l.split(",").map(E=>E.trim()).filter(Boolean):void 0,provider:c.trim()||void 0,crawl:p||f?{depth:p?Number(p):void 0,maxPages:f?Number(f):void 0}:void 0,tags:h.trim()?h.split(",").map(E=>E.trim()).filter(Boolean):void 0}],sync:!0});Z(T.failed.length?T.failed[0].reason:`added ${[...T.added,...T.updated].join(", ")}`,!!T.failed.length),e(T),T.failed.length||(s(""),r(""),o(""),d(""),u(""))}catch(T){Z(T.message,!0)}finally{y(!1)}},children:v?t(z,{}):"Add & index"})})]})}function Yn(e){let n=e.tags?.[0];return e.kind==="path"&&n&&(e.name===n||e.name.startsWith(`${n}-`))?n:e.name}function Kr(e){if(e.kind==="path"){let s=e.path&&e.path!=="."?e.path:"",i=e.glob?.length?e.glob.length<=2?e.glob.join(", "):`${e.glob.length} globs`:"";return[s,i].filter(Boolean).join(" \xB7 ")||e.title||"project root"}return[...new Set((e.urls??[]).map(s=>s.replace(/^https?:\/\//,"").split("/")[0]))].join(", ")||e.provider||""}function no({s:e,sel:n,onSelect:s}){let i=Yn(e);return t("div",{class:D("item",n&&"sel"),onClick:s,children:[t("div",{class:"n",children:[i,i!==e.name?t("span",{class:"muted small",children:[" ",e.name]}):null]}),t("div",{class:"p",title:e.kind==="url"?(e.urls??[]).join(`
6
+ `):Kr(e),children:[t(Zr,{kind:e.kind}),e.provider?t("span",{class:"muted",children:[e.provider," \xB7 "]}):null,t("span",{class:"muted",children:Kr(e)})]}),t("div",{class:"p",children:t("span",{class:"muted",children:[e.documents," docs \xB7 ",e.chunks," chunks \xB7"," ",e.sync?`synced ${ie(e.sync.at)}`:"never synced",e.sync?.errors.length?t("span",{class:"bad",children:[" \xB7 ",e.sync.errors.length," errors"]}):null]})})]})}function so({params:e,onLog:n}){let s=X(()=>H("/api/docs"),[]),[i,r]=S(e.name??null),[a,o]=S(""),[l,d]=S(!1),[c,u]=S(null);U(()=>{e.name&&r(e.name)},[e.name]);let[p,g]=S("all"),[f,x]=S(new Set),h=s.data,m=V(()=>{let w=a.trim().toLowerCase();return(h?.sources??[]).filter(C=>(p==="all"||C.category===p)&&(!w||C.name.includes(w)||(C.title??"").toLowerCase().includes(w)||(C.provider??"").includes(w)||(C.tags??[]).some(R=>R.includes(w))||(C.urls??[]).some(R=>R.includes(w))||(C.path??"").includes(w)))},[h,a,p]),v=V(()=>{let w=new Map;for(let C of h?.sources??[])w.set(C.category,(w.get(C.category)??0)+1);return w},[h]),y=V(()=>{let w=new Map;for(let F of m){let $=w.get(F.category)??[];$.push(F),w.set(F.category,$)}let C=[...w.entries()].sort((F,$)=>Zn(F[0])-Zn($[0])).map(([F,$])=>({info:Qt(F),items:$.sort((L,_)=>Yn(L).localeCompare(Yn(_)))})),R=[];for(let F of C){let $=R[R.length-1];$?.group===F.info.group?$.cats.push(F):R.push({group:F.info.group,label:qr[F.info.group],cats:[F]})}return R},[m]),b=w=>x(C=>{let R=new Set(C);return R.has(w)?R.delete(w):R.add(w),R}),k=m.find(w=>w.name===i)??h?.sources.find(w=>w.name===i),T=async(w,C)=>{let R=w?.length===1?`sync ${w[0]}`:"sync all";u(R);try{let F=await ye("/api/docs/sync",{names:w,force:C});n(F.text),Z(`${R} done`),s.reload()}catch(F){Z(F.message,!0)}finally{u(null)}},E=async w=>{if(confirm(`Remove documentation source "${w}" and its indexed pages?`))try{let C=await Xt("/api/docs",{name:w});Z(`removed ${w} (${C.documents} document(s))`),r(null),s.reload()}catch(C){Z(C.message,!0)}};return s.error?t(K,{error:s.error}):t(P,{children:[t("div",{class:"row",style:{marginBottom:12},children:[t("button",{type:"button",class:"primary",onClick:()=>d(w=>!w),children:l?"close":"+ Add source"}),t("button",{type:"button",disabled:!!c||!h?.sources.length,onClick:()=>T(void 0,!1),children:c==="sync all"?t(z,{}):"\u21BB Sync all"}),t("input",{type:"search",class:"grow",placeholder:"filter by name, provider, tag or url\u2026",value:a,onInput:w=>o(w.target.value)}),t("span",{class:"muted small nowrap",children:h?`${h.sources.length} sources \xB7 ${te(h.totals.documents)} docs \xB7 ${te(h.totals.chunks)} chunks \xB7 ${h.manifest}`:""})]}),h?.sources.length?t("div",{class:"row wrap",style:{marginBottom:10,gap:4},children:[t("button",{type:"button",class:D("chip",p==="all"&&"on"),onClick:()=>g("all"),children:["All \xB7 ",h.sources.length]}),kt.filter(w=>v.get(w.id)).map(w=>t("button",{type:"button",class:D("chip",p===w.id&&"on"),title:w.blurb,onClick:()=>g(p===w.id?"all":w.id),children:[w.label," \xB7 ",v.get(w.id)]}))]}):null,l&&t(to,{onDone:w=>{n(w.text),s.reload();let C=[...w.added,...w.updated][0];C&&r(C)}}),h?.orphans.length?t("div",{class:"empty",style:{marginBottom:12},children:["indexed under docs: but missing from the manifest:"," ",h.orphans.map(w=>`${w.source} (${w.documents})`).join(", ")," \u2014 re-add them or purge the index."]}):null,t("div",{class:"grid wide",style:{gridTemplateColumns:"minmax(280px,1fr) minmax(0,2fr)",alignItems:"start"},children:[t("div",{class:"card flush",children:t("div",{class:"list",children:h?m.length?y.map(w=>t(P,{children:[y.length>1?t("div",{class:"group-h",children:w.label}):null,w.cats.map(({info:C,items:R})=>{let F=!f.has(C.id);return t(P,{children:[t("div",{class:D("cat-h",!F&&"closed"),title:C.blurb,onClick:()=>b(C.id),children:[t("span",{class:"caret",children:F?"\u25BE":"\u25B8"}),C.label,t("span",{class:"muted",children:[" \xB7 ",R.length]}),t("span",{class:"muted small right",children:[te(R.reduce(($,L)=>$+L.documents,0))," docs"]})]}),F?R.map($=>t(no,{s:$,sel:i===$.name,onSelect:()=>r($.name)})):null]})})]})):t(W,{children:h.sources.length?"no sources match":"No documentation sources yet. Use Discover, or add a url, path or provider."}):t(W,{children:t(z,{})})})}),t("div",{class:"card",children:k?t(eo,{s:k,busy:c,onSync:w=>T([k.name],w),onRemove:()=>E(k.name)}):t(W,{children:"Select a source to see its pages and sync state."})})]})]})}function ro({onLog:e,onAdded:n}){let[s,i]=S(!1),[r,a]=S(!1),o=X(()=>r?H("/api/docs/discover",{dev:s?1:void 0}):Promise.resolve(void 0),[r,s]),[l,d]=S(new Set),[c,u]=S({}),[p,g]=S(!1),f=o.data;U(()=>{if(!f)return;let b=new Set;for(let k of f.local)k.registered||b.add(`local:${k.name}`);for(let k of f.providers)!k.registered&&(k.confidence==="probe"||k.confidence==="catalog"&&k.tier!=="library"&&k.tier!=="infra")&&b.add(`prov:${k.name}`);d(b)},[f]);let x=b=>d(k=>{let T=new Set(k);return T.has(b)?T.delete(b):T.add(b),T}),h=async()=>{if(!f)return;let b=[];for(let k of f.local)l.has(`local:${k.name}`)&&b.push({name:k.name,path:k.path,glob:k.glob,title:k.why,tags:k.project?[k.project]:void 0});for(let k of f.providers){if(!l.has(`prov:${k.name}`))continue;let T=c[k.name]?.trim(),E=T?T.split(/\s+/).filter(Boolean):k.urls.length?k.urls:void 0;!E&&k.confidence==="unknown"||b.push({name:k.name,provider:k.provider,urls:E,title:k.title,crawl:k.crawl})}if(!b.length)return Z("nothing selected",!0);g(!0),e(`adding ${b.length} source(s)\u2026`);try{let k=await ye("/api/docs",{sources:b,sync:!0});e(k.text),Z(`${k.added.length+k.updated.length} added${k.failed.length?`, ${k.failed.length} failed`:""}`,!!k.failed.length&&!k.added.length),n(),a(!1),setTimeout(()=>a(!0),0)}catch(k){Z(k.message,!0)}finally{g(!1)}},m=b=>(f?.providers??[]).filter(k=>k.confidence===b),v=({keyId:b,title:k,meta:T,right:E,registered:w})=>t("tr",{class:D(w&&"muted"),children:[t("td",{style:{width:24},children:t("input",{type:"checkbox",disabled:w,checked:l.has(b),onChange:()=>x(b)})}),t("td",{class:"break",children:[k,w?t("span",{class:"tag",children:" registered"}):null]}),t("td",{class:"break muted small",children:T}),t("td",{children:E??null})]}),y=({conf:b,note:k})=>{let T=m(b);return T.length?t("div",{class:"card flush",style:{marginBottom:12},children:[t("h3",{style:{padding:"10px 12px 0"},children:[t("span",{class:"tag kind",style:{color:Qa[b]},children:b})," ",b==="catalog"?"libraries, services and infrastructure":b==="probe"?"third-party APIs called from code":b==="registry"?"packages resolved through npm / PyPI / Go":"unknown env prefixes and images"," ",t("span",{class:"muted small",children:["\u2014 ",k]})]}),t("table",{children:t("tbody",{children:T.map(E=>t(v,{keyId:`prov:${E.name}`,registered:E.registered,title:t(P,{children:[t("b",{children:E.name})," ",t("span",{class:"muted small",children:["\u2190 ",E.provider]})]}),meta:t(P,{children:[E.title,E.usedBy.length>1?` \xB7 used by ${E.usedBy.length} projects`:E.usedBy[0]&&E.usedBy[0]!=="."?` \xB7 ${E.usedBy[0]}`:"",E.urls.length?t(P,{children:[" \xB7 ",t(Yr,{urls:E.urls.slice(0,2)})]}):b==="probe"||b==="unknown"?` \xB7 ${E.evidence[0]}`:""]}),right:b==="unknown"||b==="probe"?t("input",{type:"text",placeholder:b==="probe"?"docs url (optional; probed if empty)":"docs url",style:{minWidth:220},value:c[E.name]??"",onInput:w=>u({...c,[E.name]:w.target.value})}):void 0}))})})]}):null};return t(P,{children:[t("div",{class:"row",style:{marginBottom:12},children:[t("button",{type:"button",class:"primary",disabled:o.loading&&r,onClick:()=>r?o.reload():a(!0),children:o.loading&&r?t(z,{}):r?"\u21BB Scan again":"Scan project"}),t("label",{class:"small",children:[t("input",{type:"checkbox",checked:s,onChange:b=>i(b.target.checked)})," ","include devDependencies"]}),t("span",{class:"spacer"}),f?t(P,{children:[t("span",{class:"muted small",children:[f.projects.length>1?`${f.projects.length} projects \xB7 `:"",f.local.length," local \xB7 ",f.providers.length," providers \xB7 ",l.size," selected"]}),t("button",{type:"button",class:"primary",disabled:p||!l.size,onClick:h,children:p?t(z,{}):"Add selected & index"})]}):null]}),o.error?t(K,{error:o.error}):null,r?f?t(P,{children:[f.local.length?t("div",{class:"card flush",style:{marginBottom:12},children:[t("h3",{style:{padding:"10px 12px 0"},children:["local documentation ",t("span",{class:"muted small",children:"\u2014 indexed from the working tree"})]}),t("table",{children:t("tbody",{children:f.local.map(b=>t(v,{keyId:`local:${b.name}`,registered:b.registered,title:t(P,{children:[t("b",{children:b.name})," ",t("span",{class:"muted small",children:b.path})]}),meta:`${b.files} file(s) \xB7 ${te(b.bytes)} B \xB7 ${b.why}${b.glob&&b.glob.length<=4?` \xB7 ${b.glob.join(", ")}`:""}`}))})})]}):null,t(y,{conf:"catalog",note:"documentation URLs known offline"}),t(y,{conf:"probe",note:"docs., developer. and /docs locations are probed when added; give a url to skip the guess"}),t(y,{conf:"registry",note:"homepage and README come from the package registry when added"}),t(y,{conf:"unknown",note:"needs a documentation url"})]}):t(z,{}):t(W,{children:"Scans the project (and one level of sub-projects) for READMEs, docs folders, ADRs, API specs, agent instructions and env references, plus the npm / PyPI / Go packages, env var prefixes, container images, infrastructure files and outbound API calls \u2014 and maps each to its documentation. Nothing is fetched until you add."})]})}function io({sources:e}){let[n,s]=S(""),[i,r]=S(""),[a,o]=S(""),l=X(()=>a?H("/api/search",{q:a,source:i?`docs:${i}`:"docs:*",limit:15}):Promise.resolve(void 0),[a,i]);return t(P,{children:[t("div",{class:"row",style:{marginBottom:12},children:[t("input",{type:"search",class:"grow",placeholder:"ask the documentation\u2026 (hybrid keyword + semantic)",value:n,onInput:d=>s(d.target.value),onKeyDown:d=>{d.key==="Enter"&&o(n.trim())}}),t("select",{value:i,onChange:d=>r(d.target.value),children:[t("option",{value:"",children:"all documentation"}),e.map(d=>t("option",{value:d,children:d}))]}),t("button",{type:"button",class:"primary",onClick:()=>o(n.trim()),children:"Search"})]}),l.error?t(K,{error:l.error}):null,a?l.data?l.data.hits.length?t("div",{class:"stack",children:[l.data.corrections.length?t("div",{class:"muted small",children:["corrected: ",l.data.corrections.map(d=>`${d.from}\u2192${d.to}`).join(", ")]}):null,l.data.hits.map(d=>t("div",{class:"card hit",children:[t("div",{class:"row tight",children:[t("b",{class:"break",children:d.uri?.startsWith("http")?t("a",{href:d.uri,target:"_blank",rel:"noreferrer",children:d.title}):d.title}),t("span",{class:"tag",children:d.source.replace(/^docs:/,"")}),t("span",{class:"muted small",children:["doc ",d.doc," \xB7 ",d.score.toFixed(3)]})]}),t("pre",{class:"json",style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,marginTop:4},children:d.snippet})]}))]}):t(W,{children:"no matches"}):t(z,{}):t(W,{children:"Searches only the documentation sources (source docs:*). Claude uses the same index through em_docs lookup."})]})}function Qr({params:e}){let[n,s]=S(e.tab??"sources"),[i,r]=S([]),[a,o]=S(0),l=X(()=>H("/api/docs"),[a]),d=c=>r(u=>[...u,`[${new Date().toLocaleTimeString()}]
7
+ ${c}`]);return U(()=>{e.tab&&s(e.tab)},[e.tab]),t("div",{class:"page",children:[t($e,{tabs:[["sources","Sources"],["discover","Discover"],["search","Search"],["graph","Graph"]],value:n,onChange:c=>{s(c),O("docs",{tab:c})}}),n==="sources"&&t(so,{params:e,onLog:d},a),n==="discover"&&t(ro,{onLog:d,onAdded:()=>o(c=>c+1)}),n==="search"&&t(io,{sources:(l.data?.sources??[]).map(c=>c.name)}),n==="graph"&&t(sn,{scope:"docs",focus:e.focus}),i.length?t("div",{class:"card",style:{marginTop:12},children:[t("h3",{children:["sync log"," ",t("button",{type:"button",class:"sm right",onClick:()=>r([]),children:"clear"})]}),t("pre",{class:"log",children:i.join(`
8
8
 
9
- `)})]}):null]})}var Vn=ea(Kr(),1);Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript;(function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var n=e.languages.extend("typescript",{});delete n["class-name"],e.languages.typescript["class-name"].inside=n,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:n}}}}),e.languages.ts=e.languages.typescript})(Prism);(function(e){var n=e.util.clone(e.languages.javascript),s=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,i=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,r=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(c,d){return c=c.replace(/<S>/g,function(){return s}).replace(/<BRACES>/g,function(){return i}).replace(/<SPREAD>/g,function(){return r}),RegExp(c,d)}r=a(r).source,e.languages.jsx=e.languages.extend("markup",n),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=n.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var o=function(c){return c?typeof c=="string"?c:typeof c.content=="string"?c.content:c.content.map(o).join(""):""},l=function(c){for(var d=[],u=0;u<c.length;u++){var h=c[u],g=!1;if(typeof h!="string"&&(h.type==="tag"&&h.content[0]&&h.content[0].type==="tag"?h.content[0].content[0].content==="</"?d.length>0&&d[d.length-1].tagName===o(h.content[0].content[1])&&d.pop():h.content[h.content.length-1].content==="/>"||d.push({tagName:o(h.content[0].content[1]),openedBraces:0}):d.length>0&&h.type==="punctuation"&&h.content==="{"?d[d.length-1].openedBraces++:d.length>0&&d[d.length-1].openedBraces>0&&h.type==="punctuation"&&h.content==="}"?d[d.length-1].openedBraces--:g=!0),(g||typeof h=="string")&&d.length>0&&d[d.length-1].openedBraces===0){var f=o(h);u<c.length-1&&(typeof c[u+1]=="string"||c[u+1].type==="plain-text")&&(f+=o(c[u+1]),c.splice(u+1,1)),u>0&&(typeof c[u-1]=="string"||c[u-1].type==="plain-text")&&(f=o(c[u-1])+f,c.splice(u-1,1),u--),c[u]=new e.Token("plain-text",f,null,f)}h.content&&typeof h.content!="string"&&l(h.content)}};e.hooks.add("after-tokenize",function(c){c.language!=="jsx"&&c.language!=="tsx"||l(c.tokens)})})(Prism);(function(e){var n=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",n),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var s=e.languages.tsx.tag;s.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+s.pattern.source+")",s.pattern.flags),s.lookbehind=!0})(Prism);Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/};Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python;Prism.languages.py=Prism.languages.python;Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/});Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}});delete Prism.languages.go["class-name"];(function(e){function n(s,i){return"___"+s.toUpperCase()+i+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(s,i,r,a){if(s.language===i){var o=s.tokenStack=[];s.code=s.code.replace(r,function(l){if(typeof a=="function"&&!a(l))return l;for(var c=o.length,d;s.code.indexOf(d=n(i,c))!==-1;)++c;return o[c]=l,d}),s.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(s,i){if(s.language!==i||!s.tokenStack)return;s.grammar=e.languages[i];var r=0,a=Object.keys(s.tokenStack);function o(l){for(var c=0;c<l.length&&!(r>=a.length);c++){var d=l[c];if(typeof d=="string"||d.content&&typeof d.content=="string"){var u=a[r],h=s.tokenStack[u],g=typeof d=="string"?d:d.content,f=n(i,u),x=g.indexOf(f);if(x>-1){++r;var m=g.substring(0,x),p=new e.Token(i,e.tokenize(h,s.grammar),"language-"+i,h),v=g.substring(x+f.length),b=[];m&&b.push.apply(b,o([m])),b.push(p),v&&b.push.apply(b,o([v])),typeof d=="string"?l.splice.apply(l,[c,1].concat(b)):d.content=b}}else d.content&&o(d.content)}return l}o(s.tokens)}}})})(Prism);(function(e){var n=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,s=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,r=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,a=/[{}\[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:n,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:s,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:r,punctuation:a};var o={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},l=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:o}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:o}}];e.languages.insertBefore("php","variable",{string:l,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:n,string:l,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:s,number:i,operator:r,punctuation:a}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",function(c){if(/<\?/.test(c.code)){var d=/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g;e.languages["markup-templating"].buildPlaceholders(c,"php",d)}}),e.hooks.add("after-tokenize",function(c){e.languages["markup-templating"].tokenizePlaceholders(c,"php")})})(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json;(function(e){var n=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function s(u){return u=u.replace(/<inner>/g,function(){return n}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+u+")")}var i=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,r=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return i}),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+r+a+"(?:"+r+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+r+a+")(?:"+r+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(i),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+r+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+r+"$"),inside:{"table-header":{pattern:RegExp(i),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:s(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:s(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:s(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:s(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(u){["url","bold","italic","strike","code-snippet"].forEach(function(h){u!==h&&(e.languages.markdown[u].inside.content.inside[h]=e.languages.markdown[h])})}),e.hooks.add("after-tokenize",function(u){if(u.language!=="markdown"&&u.language!=="md")return;function h(g){if(!(!g||typeof g=="string"))for(var f=0,x=g.length;f<x;f++){var m=g[f];if(m.type!=="code"){h(m.content);continue}var p=m.content[1],v=m.content[3];if(p&&v&&p.type==="code-language"&&v.type==="code-block"&&typeof p.content=="string"){var b=p.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp");b=(/[a-z][\w-]*/i.exec(b)||[""])[0].toLowerCase();var y="language-"+b;v.alias?typeof v.alias=="string"?v.alias=[v.alias,y]:v.alias.push(y):v.alias=[y]}}}h(u.tokens)}),e.hooks.add("wrap",function(u){if(u.type==="code-block"){for(var h="",g=0,f=u.classes.length;g<f;g++){var x=u.classes[g],m=/language-(.+)/.exec(x);if(m){h=m[1];break}}var p=e.languages[h];if(p)u.content=e.highlight(d(u.content),p,h);else if(h&&h!=="none"&&e.plugins.autoloader){var v="md-"+new Date().valueOf()+"-"+Math.floor(Math.random()*1e16);u.attributes.id=v,e.plugins.autoloader.loadLanguages(h,function(){var b=document.getElementById(v);b&&(b.innerHTML=e.highlight(b.textContent,e.languages[h],h))})}}});var o=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},c=String.fromCodePoint||String.fromCharCode;function d(u){var h=u.replace(o,"");return h=h.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(g,f){if(f=f.toLowerCase(),f[0]==="#"){var x;return f[1]==="x"?x=parseInt(f.slice(2),16):x=Number(f.slice(1)),c(x)}else{var m=l[f];return m||g}}),h}e.languages.md=e.languages.markdown})(Prism);(function(e){var n="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",s={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},i={bash:s,environment:{pattern:RegExp("\\$"+n),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+n),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+n),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:i},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:s}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:i},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:i.entity}}],environment:{pattern:RegExp("\\$?"+n),alias:"constant"},variable:i.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},s.inside=e.languages.bash;for(var r=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=i.variable[1].inside,o=0;o<r.length;o++)a[r[o]]=e.languages.bash[r[o]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash})(Prism);var eo=e=>e.replace(/[&<>]/g,n=>({"&":"&amp;","<":"&lt;",">":"&gt;"})[n]??n);function Qt(e,n){let s=Vn.default.languages[n];if(!s)return e.split(`
10
- `).map(eo);let i=Vn.default.highlight(e,s,n),r=[],a=[],o="",l=i.split(/(<span[^>]*>|<\/span>|\n)/);for(let c of l)c===`
11
- `?(r.push(o+"</span>".repeat(a.length)),o=a.join("")):c.startsWith("<span")?(a.push(c),o+=c):(c==="</span>"&&a.pop(),o+=c);return r.push(o+"</span>".repeat(a.length)),r}function Zr({code:e,lang:n,symbols:s,highlight:i,scrollTo:r,onLine:a}){let o=V(()=>Qt(e,n),[e,n]),l=V(()=>{let u=new Map;for(let h of s??[])h.start_line&&!u.has(h.start_line)&&u.set(h.start_line,h);return u},[s]),c=u=>{let h;for(let g of s??[])g.start_line&&g.end_line&&g.start_line<=u&&g.end_line>=u&&(!h||g.end_line-g.start_line<h.end_line-h.start_line)&&(h=g);return h},d=ae(null);return U(()=>{if(!r||!d.current)return;let u=d.current.querySelector(`tr[data-l="${r}"]`);u&&u.scrollIntoView({block:"center"})},[r]),t("div",{class:"code",ref:d,children:t("table",{children:t("tbody",{children:o.map((u,h)=>{let g=h+1,f=l.get(g),x=i&&g>=i[0]&&g<=i[1];return t("tr",{"data-l":g,class:L(x&&"hl",f&&"sym"),children:[t("td",{class:"ln",onClick:()=>a?.(g,c(g)),title:f?`${f.kind} ${f.name}`:void 0,children:g}),t("td",{dangerouslySetInnerHTML:{__html:u||" "}})]})})})})})}function to(e){let n={name:"",path:"",dirs:new Map,files:[]};for(let s of e){let i=s.path.split("/"),r=n;for(let a of i.slice(0,-1)){let o=r.dirs.get(a);o||(o={name:a,path:r.path?`${r.path}/${a}`:a,dirs:new Map,files:[]},r.dirs.set(a,o)),r=o}r.files.push(s)}return n}function Qr({dir:e,depth:n,open:s,toggle:i,selected:r,onSelect:a,filter:o}){let l=[...e.dirs.values()].sort((u,h)=>u.name.localeCompare(h.name)),c=[...e.files].sort((u,h)=>u.path.localeCompare(h.path)),d={paddingLeft:`${8+n*14}px`};return t(N,{children:[l.map(u=>{let h=s.has(u.path)||!!o;return t(N,{children:[t("div",{class:"node",style:d,onClick:()=>i(u.path),children:[t("span",{class:"arrow",children:h?"\u25BE":"\u25B8"}),t("span",{class:"name",children:u.name})]}),h&&t(Qr,{dir:u,depth:n+1,open:s,toggle:i,selected:r,onSelect:a,filter:o})]})}),c.map(u=>t("div",{class:L("node",r===u.path&&"sel"),style:d,title:`${u.status}${u.reason?` (${u.reason})`:""} \xB7 ${u.symbols} symbols \xB7 ${u.loc} loc`,onClick:()=>a(u.path),children:[t("span",{class:"arrow"}),t("i",{class:L("st",u.status)}),t("span",{class:"name",children:Ht(u.path)}),t("span",{class:L("heat",u.score>.6&&"hot"),children:u.score?u.score.toFixed(2):""})]}))]})}function no({files:e,selected:n,onSelect:s}){let[i,r]=C(""),[a,o]=C(()=>{let d=new Set;if(n){let u=n.split("/");for(let h=1;h<u.length;h++)d.add(u.slice(0,h).join("/"))}else{let u=new Map;for(let h of e){let g=h.path.split("/")[0];h.path.includes("/")&&u.set(g,(u.get(g)??0)+1)}for(let[h]of[...u].sort((g,f)=>f[1]-g[1]).slice(0,2))d.add(h)}return d});U(()=>{n&&o(d=>{let u=new Set(d),h=n.split("/");for(let g=1;g<h.length;g++)u.add(h.slice(0,g).join("/"));return u})},[n]);let l=V(()=>{let d=i.trim().toLowerCase();return d?e.filter(u=>u.path.toLowerCase().includes(d)):e},[e,i]),c=V(()=>to(l),[l]);return t("div",{class:"panel",children:[t("div",{class:"head",children:["explorer ",t("span",{class:"spacer"}),t("span",{children:[e.length," files"]})]}),t("div",{style:{padding:"6px 8px",borderBottom:"1px solid var(--line)"},children:t("input",{type:"search",placeholder:"filter files\u2026",style:{width:"100%"},value:i,onInput:d=>r(d.target.value)})}),t("div",{class:"body tree",children:t(Qr,{dir:c,depth:0,open:a,toggle:d=>o(u=>{let h=new Set(u);return h.has(d)?h.delete(d):h.add(d),h}),selected:n,onSelect:s,filter:i})})]})}function Yr({title:e,rows:n,onPick:s}){return n.length?t("div",{class:"section",children:[t("h4",{children:[e," \xB7 ",n.length]}),t("table",{children:t("tbody",{children:n.slice(0,40).map(i=>t("tr",{class:"click",onClick:()=>s(i.node.id,i.node.path,i.node.line),children:[t("td",{children:t(D,{children:i.kind})}),t("td",{class:"break",children:[t(me,{kind:i.node.kind})," ",i.node.label,i.node.path&&i.node.kind!=="file"?t("div",{class:"muted small",children:[i.node.path,i.lines?.length?` \xB7 L${i.lines.join(", L")}`:""]}):null]}),t("td",{class:"num muted",children:i.count??""})]}))})}),n.length>40?t("div",{class:"muted small",children:["\u2026 ",n.length-40," more"]}):null]}):null}function so({file:e,impact:n,symbol:s,onPick:i}){return e?t("div",{class:"panel right",children:[t("div",{class:"head",children:[s?"code details":"file impact"," ",t("span",{class:"spacer"}),t("a",{onClick:()=>z("history",{file:e}),children:"history"}),t("a",{onClick:()=>z("galaxy",{node:s?s.node.id:`file:${e}`}),children:"open in Galaxy \u2192"})]}),t("div",{class:"body",children:s?t(N,{children:[t("div",{class:"section",children:[t("div",{class:"row tight",children:[t(me,{kind:s.node.kind}),t("b",{class:"break",children:s.node.label})]}),t("div",{class:"muted small",children:[s.node.path,s.node.line?`:${s.node.line}`:"",s.node.exported?" \xB7 exported":""]}),s.metrics&&t("div",{class:"row small",style:{marginTop:6},children:[t(D,{children:["fan-in ",s.metrics.fan_in]}),t(D,{children:["fan-out ",s.metrics.fan_out]}),t(D,{children:["complexity ",s.metrics.complexity]}),t(D,{children:[s.metrics.loc," loc"]}),t(D,{children:["heat ",s.metrics.score.toFixed(2)]})]}),s.routes.length?t("div",{class:"small",style:{marginTop:6},children:["handles"," ",s.routes.map(r=>t("code",{children:r.label}))]}):null]}),t(Yr,{title:"callers and references",rows:s.callers,onPick:i}),t(Yr,{title:"calls and uses",rows:s.callees,onPick:i}),s.members.length?t("div",{class:"section",children:[t("h4",{children:["members \xB7 ",s.members.length]}),s.members.map(r=>t("div",{class:"small",children:t("a",{onClick:()=>i(r.id,r.path,r.line),children:[t(me,{kind:r.kind}),r.label]})}))]}):null,s.memories.length?t("div",{class:"section",children:[t("h4",{children:"memories mentioning it"}),s.memories.map(r=>t("div",{class:"small",children:[t("a",{onClick:()=>z("memory",{name:r.name}),children:r.name})," ",t(D,{children:r.kind})]}))]}):null]}):n?t(N,{children:[t("div",{class:"section",children:[t("div",{class:"row small",children:[t(D,{children:[n.directDependents," direct dependents"]}),t(D,{children:[n.affected," affected files"]}),t(D,{children:[n.tests," test file",n.tests===1?"":"s"]}),t(D,{children:[n.coChanged.length," co-changed"]})]}),t("div",{class:"muted small",style:{marginTop:4},children:"Structural edges from the index plus git co-change history. Files outside the index are invisible here."})]}),n.graph.nodes.length>1&&t("div",{class:"section",style:{padding:0,height:240},children:t(De,{nodes:n.graph.nodes,edges:n.graph.edges,legend:!1,onActivate:r=>r.startsWith("file:")&&i(r,r.slice(5),null)})}),t("div",{class:"section",children:[t("h4",{children:["affected \xB7 ",n.hits.length]}),t("table",{children:t("tbody",{children:n.hits.map(r=>t("tr",{class:"click",onClick:()=>i(r.id,r.path,null),children:[t("td",{class:"break",children:[t(me,{kind:r.kind}),r.label.replace(/^[a-z]+ /,""),t("div",{class:"muted small",children:r.reasons.join("; ")})]}),t("td",{class:"num muted",children:r.score.toFixed(2)})]}))})})]}),n.memories.length?t("div",{class:"section",children:[t("h4",{children:"memories"}),n.memories.map(r=>t("div",{class:"small",children:t("a",{onClick:()=>z("memory",{name:r}),children:r})}))]}):null]}):t("div",{class:"section",children:t(B,{})})})]}):t("div",{class:"panel right",children:t(W,{children:"Select a file to see what depends on it."})})}function ei({params:e}){let n=e.file,s=e.line?Number(e.line):void 0,i=j(()=>O("/api/tree"),[]),r=j(()=>n?O("/api/file",{path:n}):Promise.resolve(void 0),[n]),a=j(()=>n?O("/api/file-impact",{path:n}):Promise.resolve(void 0),[n]),[o,l]=C(e.symbol??null);U(()=>l(e.symbol??null),[e.symbol,n]);let c=j(()=>o?O("/api/symbol",{id:o}):Promise.resolve(void 0),[o]),d=(x,m,p)=>z("explore",{file:x,line:m?String(m):void 0,symbol:p}),u=(x,m,p)=>{x.startsWith("file:")?d(x.slice(5)):m?d(m,p,x):z("galaxy",{node:x})},h=c.data&&o?c.data:void 0,g=r.data?.symbols.find(x=>x.id===o),f=r.data;return t(Ys,{left:i.data?t(no,{files:i.data.files,selected:n,onSelect:x=>d(x)}):t("div",{class:"panel",children:t(W,{children:i.error??t(B,{})})}),center:t("div",{style:{height:"100%",display:"flex",flexDirection:"column"},children:[t("div",{class:"crumbs",children:[n?n.split("/").map((x,m,p)=>t(N,{children:[m>0&&t("span",{class:"sep",children:"\u203A"}),t("span",{class:m===p.length-1?"":"muted",children:x})]})):t("span",{class:"muted",children:"no file selected"}),t("span",{class:"spacer"}),f?.status&&f.status!=="indexed"?t("span",{class:"warn small",children:[f.status,f.reason?` \xB7 ${f.reason}`:""]}):null,f?t("span",{class:"muted small",children:[f.symbols.length," symbols \xB7 ",ee(f.size??0)," B"]}):null,o?t("button",{type:"button",class:"sm",onClick:()=>l(null),children:"\u2190 file impact"}):null]}),t("div",{style:{flex:1,minHeight:0},children:n?r.error?t(J,{error:r.error}):f?f.tooLarge?t(W,{children:[f.path," is over the 1.5 MB limit and is not shown."]}):t(Zr,{code:f.content??"",lang:Ks(f.path),symbols:f.symbols,highlight:g?.start_line&&g.end_line?[g.start_line,g.end_line]:null,scrollTo:s??g?.start_line??null,onLine:(x,m)=>l(m?.id??null)}):t(W,{children:t(B,{})}):t(W,{children:"Pick a file in the explorer. Click a line number to inspect the symbol around it."})})]}),right:t(so,{file:n,impact:a.data,symbol:h,onPick:u})})}var ro=["imports","calls","references","extends","implements","handles","reexports"];function io({value:e,onPick:n}){let[s,i]=C(e),[r,a]=C([]),[o,l]=C(!1),[c,d]=C(0);U(()=>i(e),[e]);let u=ae(Vs(async h=>{if(h.trim().length<2)return a([]);try{a(await O("/api/nodes/search",{q:h.trim(),limit:12})),l(!0),d(0)}catch{a([])}},180)).current;return t("div",{style:{position:"relative"},children:[t("input",{type:"text",placeholder:"search a file, symbol, route or memory\u2026",value:s,onInput:h=>{let g=h.target.value;i(g),u(g)},onFocus:()=>r.length&&l(!0),onBlur:()=>setTimeout(()=>l(!1),150),onKeyDown:h=>{if(h.key==="ArrowDown")d(g=>Math.min(r.length-1,g+1));else if(h.key==="ArrowUp")d(g=>Math.max(0,g-1));else if(h.key==="Enter"){let g=r[c];g&&(n(g),l(!1))}else h.key==="Escape"&&l(!1)}}),o&&r.length>0&&t("div",{class:"suggest",children:r.map((h,g)=>t("div",{class:L(g===c&&"on"),onMouseDown:()=>n(h),children:[t(me,{kind:h.kind}),t("span",{class:"ellipsis",children:h.label}),h.path&&h.kind!=="file"?t("span",{class:"path",children:h.path}):null]}))})]})}function ti({params:e}){let[n,s]=C({node:e.node??null,depth:1,direction:"both",kinds:ro,mode:"galaxy"}),[i,r]=C({back:[],fwd:[]}),[a,o]=C(null),[l,c]=C(!1),[d,u]=C(null),[h,g]=C(""),[f,x]=C(),[m,p]=C(!0),[v,b]=C(!1),y=ae(null);U(()=>{e.node&&e.node!==n.node&&k({...n,node:e.node})},[e.node]);let k=(_,I=!0)=>{I&&r(X=>({back:[...X.back,n].slice(-30),fwd:[]})),s(_)};U(()=>{let _=!0;c(!0),x(void 0);let I=n.kinds.join(",")||"none";return(n.node?O("/api/graph",{mode:"expand",node:n.node,direction:n.direction,kinds:I,depth:n.depth,limit:400}):O("/api/graph",{mode:"map",kinds:I,limit:200})).then(q=>{_&&(o(q),u(q.root??null))}).catch(q=>_&&K(q.message,!0)).finally(()=>_&&c(!1)),()=>{_=!1}},[n]);let S=_=>{b(!0),k({...n,node:_})},T=async()=>{if(!(!n.node||!h.trim()))try{let _=await O("/api/graph",{mode:"path",node:n.node,to:h.trim()});o(I=>{if(!I)return I;let X=new Set(I.nodes.map(H=>H.id)),q=new Set(I.edges.map(H=>`${H.src}|${H.dst}|${H.kind}`));return{...I,nodes:[...I.nodes,..._.nodes.filter(H=>!X.has(H.id))],edges:[...I.edges,..._.edges.filter(H=>!q.has(`${H.src}|${H.dst}|${H.kind}`))]}}),b(!0),x(new Set(_.edges.map(I=>`${I.src}|${I.dst}|${I.kind}`)))}catch(_){K(_.message,!0)}},w=a?.nodes.find(_=>_.id===d),E=w?a.edges.filter(_=>_.dst===w.id):[],A=w?a.edges.filter(_=>_.src===w.id):[],F=_=>a?.nodes.find(I=>I.id===_)?.label??_,$=a?.nodes.filter(_=>_.kind==="file").length??0,R=_=>k({...n,kinds:n.kinds.includes(_)?n.kinds.filter(I=>I!==_):[...n.kinds,_]});return t("div",{style:{height:"100%",display:"flex",flexDirection:"column"},children:[t("div",{class:"gtoolbar",children:[t("button",{type:"button",class:"sm",disabled:!i.back.length,title:"back",onClick:()=>{let _=i.back[i.back.length-1];_&&(r(I=>({back:I.back.slice(0,-1),fwd:[n,...I.fwd]})),s(_))},children:"\u2190"}),t("button",{type:"button",class:"sm",disabled:!i.fwd.length,title:"forward",onClick:()=>{let _=i.fwd[0];_&&(r(I=>({back:[...I.back,n],fwd:I.fwd.slice(1)})),s(_))},children:"\u2192"}),t(io,{value:n.node??"",onPick:_=>k({...n,node:_.id})}),t("button",{type:"button",class:"sm",onClick:()=>k({...n,node:null}),title:"whole project (file map)",children:"All"}),t("select",{value:n.direction,disabled:!n.node,title:n.node?void 0:"pick a node to follow edges in one direction",onChange:_=>k({...n,direction:_.target.value}),children:[t("option",{value:"both",children:"Both directions"}),t("option",{value:"in",children:"Incoming (who uses it)"}),t("option",{value:"out",children:"Outgoing (what it uses)"})]}),t("span",{class:"row tight",children:[t("button",{type:"button",class:"sm",disabled:!n.node||n.depth<=1,onClick:()=>k({...n,depth:n.depth-1}),children:"\u2212"}),t("span",{class:"small nowrap",children:[n.depth," layer",n.depth===1?"":"s"]}),t("button",{type:"button",class:"sm",disabled:!n.node||n.depth>=4,onClick:()=>k({...n,depth:n.depth+1}),children:"+1"})]}),t("span",{class:"row tight",children:[t("input",{type:"text",placeholder:"path to\u2026",style:{width:160},value:h,onInput:_=>g(_.target.value),onKeyDown:_=>_.key==="Enter"&&T()}),t("button",{type:"button",class:"sm",onClick:T,disabled:!n.node,children:"Path"})]}),t("span",{class:"row tight",children:[t("button",{type:"button",class:L("chip",n.mode==="galaxy"&&"on"),onClick:()=>s({...n,mode:"galaxy"}),children:"galaxy"}),t("button",{type:"button",class:L("chip",n.mode==="hierarchy"&&"on"),onClick:()=>s({...n,mode:"hierarchy"}),children:"hierarchy"}),t("button",{type:"button",class:L("chip",m&&"on"),onClick:()=>p(!m),children:"legend"})]}),t("span",{class:"count",children:l?t(B,{}):a?`${a.nodes.length} nodes \xB7 ${a.edges.length} edges${a.truncated?" \xB7 truncated":""}${a.total&&a.total>$?` \xB7 top ${$} of ${a.total} files`:""}`:""})]}),t("div",{class:"gtoolbar",style:{paddingTop:4,paddingBottom:6},children:[t("span",{class:"muted small",children:"edges:"}),Js.map(_=>t("button",{type:"button",class:L("chip",n.kinds.includes(_)&&"on"),onClick:()=>R(_),children:_}))]}),t("div",{style:{flex:1,minHeight:0,display:"grid",gridTemplateColumns:w?"minmax(0,1fr) 340px":"1fr"},children:[t("div",{style:{minWidth:0},children:a?a.nodes.length?t(De,{nodes:a.nodes,edges:a.edges,mode:n.mode,selected:d,highlight:f,onSelect:u,onActivate:S,legend:m,handle:y,keepPositions:v}):t(W,{children:"The graph is empty. Run a reindex from System."}):t(W,{children:t(B,{})})}),w&&t("div",{class:"panel right",children:[t("div",{class:"head",children:["selection ",t("span",{class:"spacer"}),t("a",{onClick:()=>u(null),children:"close"})]}),t("div",{class:"body",children:[t("div",{class:"section",children:[t("div",{class:"row tight",children:[t(me,{kind:w.kind}),t("b",{class:"break",children:w.label})]}),w.path&&w.kind!=="file"?t("div",{class:"muted small",children:[w.path,w.line?`:${w.line}`:""]}):null,t("div",{class:"row",style:{marginTop:8},children:[t("button",{type:"button",class:"sm primary",onClick:()=>S(w.id),children:"Expand from here"}),w.path?t("button",{type:"button",class:"sm",onClick:()=>z("explore",{file:w.path,line:w.line?String(w.line):void 0,symbol:w.kind==="file"?void 0:w.id}),children:"Open source"}):null,w.kind==="memory"?t("button",{type:"button",class:"sm",onClick:()=>z("memory",{name:w.label}),children:"Open memory"}):null]})]}),t("div",{class:"section",children:[t("h4",{children:["incoming \xB7 ",E.length]}),t("table",{children:t("tbody",{children:E.slice(0,60).map(_=>t("tr",{class:"click",onClick:()=>u(_.src),children:[t("td",{children:t(D,{children:_.kind})}),t("td",{class:"break",children:F(_.src)})]}))})})]}),t("div",{class:"section",children:[t("h4",{children:["outgoing \xB7 ",A.length]}),t("table",{children:t("tbody",{children:A.slice(0,60).map(_=>t("tr",{class:"click",onClick:()=>u(_.dst),children:[t("td",{children:t(D,{children:_.kind})}),t("td",{class:"break",children:F(_.dst)})]}))})})]})]})]})]})]})}function Kn(e){let n=[],s=[],i=0,r=a=>{let o=n.indexOf(null);return o===-1?(o=n.length,n.push(a)):n[o]=a,o};for(let a of e){let o=n.indexOf(a.sha);o===-1&&(o=r(a.sha));let l=[];for(let u=0;u<n.length;u++)u!==o&&n[u]===a.sha&&(l.push(u),n[u]=null);let c=[],d=a.parents;if(!d.length)n[o]=null;else{n[o]=d[0];for(let u of d.slice(1)){let h=n.indexOf(u);h===-1&&(h=r(u)),c.push(h)}}for(;n.length&&n[n.length-1]===null;)n.pop();i=Math.max(i,n.length,o+1),s.push({c:a,lane:o,after:[...n],joins:l,forks:c})}return{rows:s,lanes:i}}function ni(e){let n=[];for(let s=0;s<e.length-1;s++){let i=e[s],r=e[s+1];for(let a=0;a<i.after.length;a++){let o=i.after[a];o&&(o===r.c.sha&&a!==r.lane?n.push({kind:"curve",fromLane:a,toLane:r.lane,from:s,to:s+1,lane:a}):i.forks.includes(a)&&a!==i.lane?n.push({kind:"curve",fromLane:i.lane,toLane:a,from:s,to:s+1,lane:a}):n.push({kind:"line",lane:a,from:s,to:s+1}))}}return n}var tn=["feat","test","perf","refactor","fix","docs","other"],gt={feat:"#2563eb",test:"#16a34a",perf:"#d97706",refactor:"#7c3aed",fix:"#e11d48",docs:"#0284c7",other:"#9ca3af"},ri=e=>gt[e]??gt.other;function Zn(e){let n=Math.max(0,Math.min(1,e)),s=[191,219,254],i=[30,58,138],r=s.map((a,o)=>Math.round(a+((i[o]??0)-a)*n));return`rgb(${r[0]},${r[1]},${r[2]})`}function ii(e=800){let n=ae(null),[s,i]=C(e);return U(()=>{let r=n.current;if(!r)return;let a=new ResizeObserver(()=>i(r.clientWidth||e));return a.observe(r),i(r.clientWidth||e),()=>a.disconnect()},[]),[n,s]}function ai({weeks:e,range:n,onRange:s,hidden:i}){let[r,a]=ii(),o=150,l={l:34,r:8,t:8,b:22},c=Math.max(10,a-l.l-l.r),d=o-l.t-l.b,u=e.length,h=u?c/u:c,g=h>=5?1:0,f=Math.max(1,...e.map(E=>tn.reduce((A,F)=>A+(i.has(F)?0:E.byBucket[F]),0))),x=E=>l.t+d-E/f*d,[m,p]=C(null),v=ae(null),[b,y]=C(null),k=(E,A)=>{let F=A.getBoundingClientRect(),$=E-F.left-l.l;return Math.max(0,Math.min(u-1,Math.floor($/h)))},S=V(()=>{let E=[],A="";for(let $=0;$<u;$++){let R=e[$].week.slice(0,7);if(R!==A){A=R;let _=new Date(e[$].at),I=_.getUTCMonth()===0||!E.length?`${_.getUTCFullYear()}`:_.toLocaleString("en",{month:"short",timeZone:"UTC"});E.push({i:$,label:I})}}let F=Math.max(1,Math.ceil(E.length/Math.max(4,c/60)));return E.filter(($,R)=>R%F===0)},[e,c]),T=b??(n?[e.findIndex(E=>E.at+7*864e5>n[0]),e.findIndex(E=>E.at>n[1])-1]:null),w=m!==null?e[m]:void 0;return t("div",{class:"hist-chart",ref:r,children:[t("svg",{width:a,height:o,onMouseMove:E=>{let A=E.currentTarget,F=k(E.clientX,A);p(F),v.current&&y([Math.min(v.current.i0,F),Math.max(v.current.i0,F)])},onMouseLeave:()=>p(null),onMouseDown:E=>{let A=E.currentTarget,F=k(E.clientX,A);v.current={x0:E.clientX,i0:F},y([F,F]),E.preventDefault()},onMouseUp:E=>{let A=v.current;if(v.current=null,!A)return;if(Math.abs(E.clientX-A.x0)<3){y(null),s(null);return}let F=b;y(null),F&&s([e[F[0]].at,e[F[1]].at+7*864e5-1])},children:[t("title",{children:"commits per week by kind"}),[0,.5,1].map(E=>t("g",{children:[t("line",{x1:l.l,x2:a-l.r,y1:x(f*E),y2:x(f*E),class:"grid"}),t("text",{x:l.l-6,y:x(f*E)+3,class:"axis","text-anchor":"end",children:Math.round(f*E)})]})),S.map(E=>t("text",{x:l.l+E.i*h,y:o-6,class:"axis",children:E.label})),T&&T[0]>=0&&T[1]>=T[0]?t("rect",{x:l.l+T[0]*h,y:l.t,width:(T[1]-T[0]+1)*h,height:d,class:"brush"}):null,e.map((E,A)=>{let F=0;return t("g",{opacity:T&&(A<T[0]||A>T[1])?.35:1,children:tn.map($=>{if(i.has($))return null;let R=E.byBucket[$];if(!R)return null;let _=x(F+R),I=x(F);return F+=R,t("rect",{x:l.l+A*h+g/2,y:_,width:Math.max(.5,h-g),height:Math.max(0,I-_-(g&&I-_>2?1:0)),fill:gt[$],rx:h>=6?1.5:0})})})}),m!==null?t("line",{x1:l.l+m*h+h/2,x2:l.l+m*h+h/2,y1:l.t,y2:l.t+d,class:"cross"}):null]}),w?t("div",{class:"tip",style:{left:Math.min(a-190,l.l+m*h+10),top:4},children:[t("b",{children:["week of ",w.week]})," \xB7 ",w.total," commit",w.total===1?"":"s"," \xB7 +",w.added,"/-",w.deleted,t("div",{class:"row tight",style:{marginTop:4,flexWrap:"wrap"},children:tn.filter(E=>w.byBucket[E]).map(E=>t("span",{class:"kdot-lbl",children:[t("i",{class:"kdot",style:{background:gt[E]}}),E," ",w.byBucket[E]]}))})]}):null]})}function oi({counts:e,hidden:n,onToggle:s}){return t("div",{class:"row tight",style:{flexWrap:"wrap"},children:tn.map(i=>t("button",{type:"button",class:L("chip",!n.has(i)&&"on"),onClick:()=>s(i),title:n.has(i)?`show ${i}`:`hide ${i}`,children:[t("i",{class:"kdot",style:{background:gt[i],opacity:n.has(i)?.3:1}}),i," ",e[i]??0]}))})}function Yn({values:e,width:n=72,height:s=16}){let i=Math.max(1,...e),r=e.length,a=e.map((o,l)=>`${l/Math.max(1,r-1)*(n-2)+1},${s-1-o/i*(s-3)}`);return t("svg",{width:n,height:s,class:"spark",title:e.join(" "),children:[t("title",{children:["commits per month: ",e.join(" ")]}),t("polyline",{points:a.join(" ")}),e.map((o,l)=>o?t("circle",{cx:l/Math.max(1,r-1)*(n-2)+1,cy:s-1-o/i*(s-3),r:1.4}):null)]})}function li({files:e,selected:n,onSelect:s}){let[i,r]=ii(),a=300,o={l:42,r:16,t:12,b:30},l=Math.max(10,r-o.l-o.r),c=a-o.t-o.b,d=e.filter(y=>y.commits>=2),u=Math.max(2,...d.map(y=>y.commits)),h=Math.max(1,...d.map(y=>y.added+y.deleted)),g=y=>o.l+Math.log(y)/Math.log(u)*l,f=y=>o.t+c-y*c,x=y=>3+Math.sqrt((y.added+y.deleted)/h)*13,[m,p]=C(null),v=[...d].sort((y,k)=>k.risk-y.risk).slice(0,5),b=[1,2,5,10,20,50,100,200,500,1e3].filter(y=>y<=u);return t("div",{class:"hist-chart",ref:i,children:[t("svg",{width:r,height:a,children:[t("title",{children:"files by commits and fix share, sized by lines changed"}),[0,.25,.5,.75,1].map(y=>t("g",{children:[t("line",{x1:o.l,x2:r-o.r,y1:f(y),y2:f(y),class:"grid"}),t("text",{x:o.l-6,y:f(y)+3,class:"axis","text-anchor":"end",children:[Math.round(y*100),"%"]})]})),b.filter(y=>g(y)<r-o.r-70).map(y=>t("text",{x:g(y),y:a-8,class:"axis","text-anchor":"middle",children:y})),t("text",{x:r-o.r,y:a-8,class:"axis","text-anchor":"end",children:"commits (log) \u2192"}),t("text",{x:o.l+4,y:o.t+10,class:"axis",children:"share of commits that were fixes \u2191"}),d.map(y=>t("circle",{cx:g(y.commits),cy:f(y.commits?y.fixes/y.commits:0),r:x(y),fill:Zn(y.risk),class:L("dot",n===y.path&&"sel"),onMouseEnter:()=>p(y),onMouseLeave:()=>p(null),onClick:()=>s(y.path)})),v.map(y=>{let k=g(y.commits)>r-160;return t("text",{x:k?g(y.commits)-x(y)-3:g(y.commits)+x(y)+3,y:f(y.fixes/y.commits)+3,class:"lbl","text-anchor":k?"end":"start",children:y.path.split("/").slice(-2).join("/")})})]}),m?t("div",{class:"tip",style:{left:Math.min(r-260,g(m.commits)+12),top:Math.max(0,f(m.fixes/m.commits)-60)},children:[t("b",{children:m.path}),t("div",{class:"muted",children:[m.commits," commits \xB7 ",m.fixes," fixes \xB7 +",m.added,"/-",m.deleted," \xB7 risk"," ",m.risk.toFixed(2)]}),m.reasons.length?t("div",{class:"muted",children:m.reasons.join("; ")}):null]}):null]})}var si=["#2563eb","#d97706","#16a34a","#7c3aed","#e11d48","#0284c7","#db2777","#0d9488"],en=e=>si[e%si.length];function ci({rows:e,lanes:n,rowH:s,selected:i}){let a=n*14+10,o=d=>7+d*14,l=d=>d*s+s/2,c=ni(e);return t("svg",{class:"lanes",width:a,height:e.length*s,children:[t("title",{children:"commit graph"}),c.map(d=>d.kind==="line"?t("line",{x1:o(d.lane),x2:o(d.lane),y1:l(d.from),y2:l(d.to),stroke:en(d.lane)}):t("path",{d:`M${o(d.fromLane)},${l(d.from)} C${o(d.fromLane)},${l(d.from)+s/2} ${o(d.toLane)},${l(d.to)-s/2} ${o(d.toLane)},${l(d.to)}`,stroke:en(d.lane)})),e.map((d,u)=>t("circle",{cx:o(d.lane),cy:l(u),r:d.c.merge?3.5:4,fill:d.c.merge?"var(--card)":en(d.lane),stroke:en(d.lane),"stroke-width":i===d.c.sha?3:d.c.merge?2:1,class:L(i===d.c.sha&&"sel",!d.c.onHead&&"off")}))]})}function nn({kind:e,bucket:n}){return t("span",{class:"tag kind",style:{color:ri(n)},children:e})}function di({added:e,deleted:n}){let s=e+n,i=5,r=s?Math.round(e/s*i):0,a=s?Math.min(i-r,Math.round(n/s*i)):0;return t("span",{class:"pm",title:`+${e} / -${n}`,children:[t("span",{class:"add",children:["+",ee(e)]}),t("span",{class:"del",children:["-",ee(n)]}),t("span",{class:"bars",children:Array.from({length:i},(o,l)=>t("i",{class:l<r?"a":l<r+a?"d":""}))})]})}function ui({refs:e,tags:n,max:s=3}){let i=e.filter(r=>!r.startsWith("tag: "));return!i.length&&!n.length?null:t(N,{children:[n.slice(0,2).map(r=>t("span",{class:"ref tag",children:r})),i.slice(0,s).map(r=>t("span",{class:L("ref",r.includes("/")&&"remote"),children:r})),i.length>s?t("span",{class:"ref remote",children:["+",i.length-s]}):null]})}function ao({c:e}){return t(N,{children:[e.blamedBy?t("span",{class:"flag warn",title:`${e.blamedBy} later fix(es) removed lines from this commit`,children:["\u26A0 ",e.blamedBy]}):null,e.reverted?t("span",{class:"flag bad",title:"reverted",children:"\u21A9"}):null,e.origins&&(e.kind==="fix"||e.kind==="revert")?t("span",{class:"flag ok",title:`traced to ${e.origins} earlier commit(s)`,children:["\u21E0 ",e.origins]}):null,e.breaking?t("span",{class:"flag bad",children:"BREAKING"}):null]})}function tt({value:e}){return t("span",{class:"riskbar",title:e.toFixed(2),children:t("i",{style:{width:`${Math.round(e*100)}%`,background:Zn(.3+e*.7)}})})}function Ne({v:e,k:n,sub:s}){return t("div",{class:"stat",children:[t("div",{class:"v",children:[e,s?t("small",{children:s}):null]}),t("div",{class:"k",children:n})]})}function nt({commits:e,selected:n,onSelect:s,lanes:i,empty:r}){return e.length?t("div",{class:"commits",children:[i?t(ci,{rows:i.rows,lanes:i.lanes,rowH:28,selected:n}):null,t("div",{class:"rows",children:e.map(o=>t("div",{class:L("crow",n===o.sha&&"sel",!o.onHead&&"off"),onClick:()=>s(o.sha),title:`${o.sha}
9
+ `)})]}):null]})}var Qn=oa(ei(),1);Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/});Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/});Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}});Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}});Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript"));Prism.languages.js=Prism.languages.javascript;(function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var n=e.languages.extend("typescript",{});delete n["class-name"],e.languages.typescript["class-name"].inside=n,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:n}}}}),e.languages.ts=e.languages.typescript})(Prism);(function(e){var n=e.util.clone(e.languages.javascript),s=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,i=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,r=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(d,c){return d=d.replace(/<S>/g,function(){return s}).replace(/<BRACES>/g,function(){return i}).replace(/<SPREAD>/g,function(){return r}),RegExp(d,c)}r=a(r).source,e.languages.jsx=e.languages.extend("markup",n),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=n.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var o=function(d){return d?typeof d=="string"?d:typeof d.content=="string"?d.content:d.content.map(o).join(""):""},l=function(d){for(var c=[],u=0;u<d.length;u++){var p=d[u],g=!1;if(typeof p!="string"&&(p.type==="tag"&&p.content[0]&&p.content[0].type==="tag"?p.content[0].content[0].content==="</"?c.length>0&&c[c.length-1].tagName===o(p.content[0].content[1])&&c.pop():p.content[p.content.length-1].content==="/>"||c.push({tagName:o(p.content[0].content[1]),openedBraces:0}):c.length>0&&p.type==="punctuation"&&p.content==="{"?c[c.length-1].openedBraces++:c.length>0&&c[c.length-1].openedBraces>0&&p.type==="punctuation"&&p.content==="}"?c[c.length-1].openedBraces--:g=!0),(g||typeof p=="string")&&c.length>0&&c[c.length-1].openedBraces===0){var f=o(p);u<d.length-1&&(typeof d[u+1]=="string"||d[u+1].type==="plain-text")&&(f+=o(d[u+1]),d.splice(u+1,1)),u>0&&(typeof d[u-1]=="string"||d[u-1].type==="plain-text")&&(f=o(d[u-1])+f,d.splice(u-1,1),u--),d[u]=new e.Token("plain-text",f,null,f)}p.content&&typeof p.content!="string"&&l(p.content)}};e.hooks.add("after-tokenize",function(d){d.language!=="jsx"&&d.language!=="tsx"||l(d.tokens)})})(Prism);(function(e){var n=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",n),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var s=e.languages.tsx.tag;s.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+s.pattern.source+")",s.pattern.flags),s.lookbehind=!0})(Prism);Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/};Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python;Prism.languages.py=Prism.languages.python;Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/});Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}});delete Prism.languages.go["class-name"];(function(e){function n(s,i){return"___"+s.toUpperCase()+i+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(s,i,r,a){if(s.language===i){var o=s.tokenStack=[];s.code=s.code.replace(r,function(l){if(typeof a=="function"&&!a(l))return l;for(var d=o.length,c;s.code.indexOf(c=n(i,d))!==-1;)++d;return o[d]=l,c}),s.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(s,i){if(s.language!==i||!s.tokenStack)return;s.grammar=e.languages[i];var r=0,a=Object.keys(s.tokenStack);function o(l){for(var d=0;d<l.length&&!(r>=a.length);d++){var c=l[d];if(typeof c=="string"||c.content&&typeof c.content=="string"){var u=a[r],p=s.tokenStack[u],g=typeof c=="string"?c:c.content,f=n(i,u),x=g.indexOf(f);if(x>-1){++r;var h=g.substring(0,x),m=new e.Token(i,e.tokenize(p,s.grammar),"language-"+i,p),v=g.substring(x+f.length),y=[];h&&y.push.apply(y,o([h])),y.push(m),v&&y.push.apply(y,o([v])),typeof c=="string"?l.splice.apply(l,[d,1].concat(y)):c.content=y}}else c.content&&o(c.content)}return l}o(s.tokens)}}})})(Prism);(function(e){var n=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,s=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,r=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,a=/[{}\[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:n,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:s,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:r,punctuation:a};var o={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},l=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:o}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:o}}];e.languages.insertBefore("php","variable",{string:l,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:n,string:l,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:s,number:i,operator:r,punctuation:a}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",function(d){if(/<\?/.test(d.code)){var c=/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g;e.languages["markup-templating"].buildPlaceholders(d,"php",c)}}),e.hooks.add("after-tokenize",function(d){e.languages["markup-templating"].tokenizePlaceholders(d,"php")})})(Prism);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json;(function(e){var n=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function s(u){return u=u.replace(/<inner>/g,function(){return n}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+u+")")}var i=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,r=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return i}),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+r+a+"(?:"+r+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+r+a+")(?:"+r+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(i),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+r+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+r+"$"),inside:{"table-header":{pattern:RegExp(i),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:s(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:s(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:s(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:s(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(u){["url","bold","italic","strike","code-snippet"].forEach(function(p){u!==p&&(e.languages.markdown[u].inside.content.inside[p]=e.languages.markdown[p])})}),e.hooks.add("after-tokenize",function(u){if(u.language!=="markdown"&&u.language!=="md")return;function p(g){if(!(!g||typeof g=="string"))for(var f=0,x=g.length;f<x;f++){var h=g[f];if(h.type!=="code"){p(h.content);continue}var m=h.content[1],v=h.content[3];if(m&&v&&m.type==="code-language"&&v.type==="code-block"&&typeof m.content=="string"){var y=m.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp");y=(/[a-z][\w-]*/i.exec(y)||[""])[0].toLowerCase();var b="language-"+y;v.alias?typeof v.alias=="string"?v.alias=[v.alias,b]:v.alias.push(b):v.alias=[b]}}}p(u.tokens)}),e.hooks.add("wrap",function(u){if(u.type==="code-block"){for(var p="",g=0,f=u.classes.length;g<f;g++){var x=u.classes[g],h=/language-(.+)/.exec(x);if(h){p=h[1];break}}var m=e.languages[p];if(m)u.content=e.highlight(c(u.content),m,p);else if(p&&p!=="none"&&e.plugins.autoloader){var v="md-"+new Date().valueOf()+"-"+Math.floor(Math.random()*1e16);u.attributes.id=v,e.plugins.autoloader.loadLanguages(p,function(){var y=document.getElementById(v);y&&(y.innerHTML=e.highlight(y.textContent,e.languages[p],p))})}}});var o=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},d=String.fromCodePoint||String.fromCharCode;function c(u){var p=u.replace(o,"");return p=p.replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(g,f){if(f=f.toLowerCase(),f[0]==="#"){var x;return f[1]==="x"?x=parseInt(f.slice(2),16):x=Number(f.slice(1)),d(x)}else{var h=l[f];return h||g}}),p}e.languages.md=e.languages.markdown})(Prism);(function(e){var n="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",s={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},i={bash:s,environment:{pattern:RegExp("\\$"+n),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+n),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+n),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:i},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:s}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:i},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:i.entity}}],environment:{pattern:RegExp("\\$?"+n),alias:"constant"},variable:i.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},s.inside=e.languages.bash;for(var r=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=i.variable[1].inside,o=0;o<r.length;o++)a[r[o]]=e.languages.bash[r[o]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash})(Prism);var oo=e=>e.replace(/[&<>]/g,n=>({"&":"&amp;","<":"&lt;",">":"&gt;"})[n]??n);function an(e,n){let s=Qn.default.languages[n];if(!s)return e.split(`
10
+ `).map(oo);let i=Qn.default.highlight(e,s,n),r=[],a=[],o="",l=i.split(/(<span[^>]*>|<\/span>|\n)/);for(let d of l)d===`
11
+ `?(r.push(o+"</span>".repeat(a.length)),o=a.join("")):d.startsWith("<span")?(a.push(d),o+=d):(d==="</span>"&&a.pop(),o+=d);return r.push(o+"</span>".repeat(a.length)),r}function ti({code:e,lang:n,symbols:s,highlight:i,scrollTo:r,onLine:a}){let o=V(()=>an(e,n),[e,n]),l=V(()=>{let u=new Map;for(let p of s??[])p.start_line&&!u.has(p.start_line)&&u.set(p.start_line,p);return u},[s]),d=u=>{let p;for(let g of s??[])g.start_line&&g.end_line&&g.start_line<=u&&g.end_line>=u&&(!p||g.end_line-g.start_line<p.end_line-p.start_line)&&(p=g);return p},c=oe(null);return U(()=>{if(!r||!c.current)return;let u=c.current.querySelector(`tr[data-l="${r}"]`);u&&u.scrollIntoView({block:"center"})},[r]),t("div",{class:"code",ref:c,children:t("table",{children:t("tbody",{children:o.map((u,p)=>{let g=p+1,f=l.get(g),x=i&&g>=i[0]&&g<=i[1];return t("tr",{"data-l":g,class:D(x&&"hl",f&&"sym"),children:[t("td",{class:"ln",onClick:()=>a?.(g,d(g)),title:f?`${f.kind} ${f.name}`:void 0,children:g}),t("td",{dangerouslySetInnerHTML:{__html:u||" "}})]})})})})})}function lo(e){let n={name:"",path:"",dirs:new Map,files:[]};for(let s of e){let i=s.path.split("/"),r=n;for(let a of i.slice(0,-1)){let o=r.dirs.get(a);o||(o={name:a,path:r.path?`${r.path}/${a}`:a,dirs:new Map,files:[]},r.dirs.set(a,o)),r=o}r.files.push(s)}return n}function si({dir:e,depth:n,open:s,toggle:i,selected:r,onSelect:a,filter:o}){let l=[...e.dirs.values()].sort((u,p)=>u.name.localeCompare(p.name)),d=[...e.files].sort((u,p)=>u.path.localeCompare(p.path)),c={paddingLeft:`${8+n*14}px`};return t(P,{children:[l.map(u=>{let p=s.has(u.path)||!!o;return t(P,{children:[t("div",{class:"node",style:c,onClick:()=>i(u.path),children:[t("span",{class:"arrow",children:p?"\u25BE":"\u25B8"}),t("span",{class:"name",children:u.name})]}),p&&t(si,{dir:u,depth:n+1,open:s,toggle:i,selected:r,onSelect:a,filter:o})]})}),d.map(u=>t("div",{class:D("node",r===u.path&&"sel"),style:c,title:`${u.status}${u.reason?` (${u.reason})`:""} \xB7 ${u.symbols} symbols \xB7 ${u.loc} loc`,onClick:()=>a(u.path),children:[t("span",{class:"arrow"}),t("i",{class:D("st",u.status)}),t("span",{class:"name",children:qt(u.path)}),t("span",{class:D("heat",u.score>.6&&"hot"),children:u.score?u.score.toFixed(2):""})]}))]})}function co({files:e,selected:n,onSelect:s}){let[i,r]=S(""),[a,o]=S(()=>{let c=new Set;if(n){let u=n.split("/");for(let p=1;p<u.length;p++)c.add(u.slice(0,p).join("/"))}else{let u=new Map;for(let p of e){let g=p.path.split("/")[0];p.path.includes("/")&&u.set(g,(u.get(g)??0)+1)}for(let[p]of[...u].sort((g,f)=>f[1]-g[1]).slice(0,2))c.add(p)}return c});U(()=>{n&&o(c=>{let u=new Set(c),p=n.split("/");for(let g=1;g<p.length;g++)u.add(p.slice(0,g).join("/"));return u})},[n]);let l=V(()=>{let c=i.trim().toLowerCase();return c?e.filter(u=>u.path.toLowerCase().includes(c)):e},[e,i]),d=V(()=>lo(l),[l]);return t("div",{class:"panel",children:[t("div",{class:"head",children:["explorer ",t("span",{class:"spacer"}),t("span",{children:[e.length," files"]})]}),t("div",{style:{padding:"6px 8px",borderBottom:"1px solid var(--line)"},children:t("input",{type:"search",placeholder:"filter files\u2026",style:{width:"100%"},value:i,onInput:c=>r(c.target.value)})}),t("div",{class:"body tree",children:t(si,{dir:d,depth:0,open:a,toggle:c=>o(u=>{let p=new Set(u);return p.has(c)?p.delete(c):p.add(c),p}),selected:n,onSelect:s,filter:i})})]})}function ni({title:e,rows:n,onPick:s}){return n.length?t("div",{class:"section",children:[t("h4",{children:[e," \xB7 ",n.length]}),t("table",{children:t("tbody",{children:n.slice(0,40).map(i=>t("tr",{class:"click",onClick:()=>s(i.node.id,i.node.path,i.node.line),children:[t("td",{children:t(M,{children:i.kind})}),t("td",{class:"break",children:[t(ue,{kind:i.node.kind})," ",i.node.label,i.node.path&&i.node.kind!=="file"?t("div",{class:"muted small",children:[i.node.path,i.lines?.length?` \xB7 L${i.lines.join(", L")}`:""]}):null]}),t("td",{class:"num muted",children:i.count??""})]}))})}),n.length>40?t("div",{class:"muted small",children:["\u2026 ",n.length-40," more"]}):null]}):null}function uo({file:e,impact:n,symbol:s,onPick:i}){return e?t("div",{class:"panel right",children:[t("div",{class:"head",children:[s?"code details":"file impact"," ",t("span",{class:"spacer"}),t("a",{onClick:()=>O("history",{file:e}),children:"history"}),t("a",{onClick:()=>O("galaxy",{node:s?s.node.id:`file:${e}`}),children:"open in Galaxy \u2192"})]}),t("div",{class:"body",children:s?t(P,{children:[t("div",{class:"section",children:[t("div",{class:"row tight",children:[t(ue,{kind:s.node.kind}),t("b",{class:"break",children:s.node.label})]}),t("div",{class:"muted small",children:[s.node.path,s.node.line?`:${s.node.line}`:"",s.node.exported?" \xB7 exported":""]}),s.metrics&&t("div",{class:"row small",style:{marginTop:6},children:[t(M,{children:["fan-in ",s.metrics.fan_in]}),t(M,{children:["fan-out ",s.metrics.fan_out]}),t(M,{children:["complexity ",s.metrics.complexity]}),t(M,{children:[s.metrics.loc," loc"]}),t(M,{children:["heat ",s.metrics.score.toFixed(2)]})]}),s.routes.length?t("div",{class:"small",style:{marginTop:6},children:["handles"," ",s.routes.map(r=>t("code",{children:r.label}))]}):null]}),t(ni,{title:"callers and references",rows:s.callers,onPick:i}),t(ni,{title:"calls and uses",rows:s.callees,onPick:i}),s.members.length?t("div",{class:"section",children:[t("h4",{children:["members \xB7 ",s.members.length]}),s.members.map(r=>t("div",{class:"small",children:t("a",{onClick:()=>i(r.id,r.path,r.line),children:[t(ue,{kind:r.kind}),r.label]})}))]}):null,s.memories.length?t("div",{class:"section",children:[t("h4",{children:"memories mentioning it"}),s.memories.map(r=>t("div",{class:"small",children:[t("a",{onClick:()=>O("memory",{name:r.name}),children:r.name})," ",t(M,{children:r.kind})]}))]}):null]}):n?t(P,{children:[t("div",{class:"section",children:[t("div",{class:"row small",children:[t(M,{children:[n.directDependents," direct dependents"]}),t(M,{children:[n.affected," affected files"]}),t(M,{children:[n.tests," test file",n.tests===1?"":"s"]}),t(M,{children:[n.coChanged.length," co-changed"]})]}),t("div",{class:"muted small",style:{marginTop:4},children:"Structural edges from the index plus git co-change history. Files outside the index are invisible here."})]}),n.graph.nodes.length>1&&t("div",{class:"section",style:{padding:0,height:240},children:t(Ae,{nodes:n.graph.nodes,edges:n.graph.edges,legend:!1,onActivate:r=>r.startsWith("file:")&&i(r,r.slice(5),null)})}),t("div",{class:"section",children:[t("h4",{children:["affected \xB7 ",n.hits.length]}),t("table",{children:t("tbody",{children:n.hits.map(r=>t("tr",{class:"click",onClick:()=>i(r.id,r.path,null),children:[t("td",{class:"break",children:[t(ue,{kind:r.kind}),r.label.replace(/^[a-z]+ /,""),t("div",{class:"muted small",children:r.reasons.join("; ")})]}),t("td",{class:"num muted",children:r.score.toFixed(2)})]}))})})]}),n.memories.length?t("div",{class:"section",children:[t("h4",{children:"memories"}),n.memories.map(r=>t("div",{class:"small",children:t("a",{onClick:()=>O("memory",{name:r}),children:r})}))]}):null]}):t("div",{class:"section",children:t(z,{})})})]}):t("div",{class:"panel right",children:t(W,{children:"Select a file to see what depends on it."})})}function ri({params:e}){let n=e.file,s=e.line?Number(e.line):void 0,i=X(()=>H("/api/tree"),[]),r=X(()=>n?H("/api/file",{path:n}):Promise.resolve(void 0),[n]),a=X(()=>n?H("/api/file-impact",{path:n}):Promise.resolve(void 0),[n]),[o,l]=S(e.symbol??null);U(()=>l(e.symbol??null),[e.symbol,n]);let d=X(()=>o?H("/api/symbol",{id:o}):Promise.resolve(void 0),[o]),c=(x,h,m)=>O("explore",{file:x,line:h?String(h):void 0,symbol:m}),u=(x,h,m)=>{x.startsWith("file:")?c(x.slice(5)):h?c(h,m,x):O("galaxy",{node:x})},p=d.data&&o?d.data:void 0,g=r.data?.symbols.find(x=>x.id===o),f=r.data;return t(sr,{left:i.data?t(co,{files:i.data.files,selected:n,onSelect:x=>c(x)}):t("div",{class:"panel",children:t(W,{children:i.error??t(z,{})})}),center:t("div",{style:{height:"100%",display:"flex",flexDirection:"column"},children:[t("div",{class:"crumbs",children:[n?n.split("/").map((x,h,m)=>t(P,{children:[h>0&&t("span",{class:"sep",children:"\u203A"}),t("span",{class:h===m.length-1?"":"muted",children:x})]})):t("span",{class:"muted",children:"no file selected"}),t("span",{class:"spacer"}),f?.status&&f.status!=="indexed"?t("span",{class:"warn small",children:[f.status,f.reason?` \xB7 ${f.reason}`:""]}):null,f?t("span",{class:"muted small",children:[f.symbols.length," symbols \xB7 ",te(f.size??0)," B"]}):null,o?t("button",{type:"button",class:"sm",onClick:()=>l(null),children:"\u2190 file impact"}):null]}),t("div",{style:{flex:1,minHeight:0},children:n?r.error?t(K,{error:r.error}):f?f.tooLarge?t(W,{children:[f.path," is over the 1.5 MB limit and is not shown."]}):t(ti,{code:f.content??"",lang:tr(f.path),symbols:f.symbols,highlight:g?.start_line&&g.end_line?[g.start_line,g.end_line]:null,scrollTo:s??g?.start_line??null,onLine:(x,h)=>l(h?.id??null)}):t(W,{children:t(z,{})}):t(W,{children:"Pick a file in the explorer. Click a line number to inspect the symbol around it."})})]}),right:t(uo,{file:n,impact:a.data,symbol:p,onPick:u})})}var po=["imports","calls","references","extends","implements","handles","reexports"];function mo({value:e,onPick:n}){let[s,i]=S(e),[r,a]=S([]),[o,l]=S(!1),[d,c]=S(0);U(()=>i(e),[e]);let u=oe(er(async p=>{if(p.trim().length<2)return a([]);try{a(await H("/api/nodes/search",{q:p.trim(),limit:12})),l(!0),c(0)}catch{a([])}},180)).current;return t("div",{style:{position:"relative"},children:[t("input",{type:"text",placeholder:"search a file, symbol, route or memory\u2026",value:s,onInput:p=>{let g=p.target.value;i(g),u(g)},onFocus:()=>r.length&&l(!0),onBlur:()=>setTimeout(()=>l(!1),150),onKeyDown:p=>{if(p.key==="ArrowDown")c(g=>Math.min(r.length-1,g+1));else if(p.key==="ArrowUp")c(g=>Math.max(0,g-1));else if(p.key==="Enter"){let g=r[d];g&&(n(g),l(!1))}else p.key==="Escape"&&l(!1)}}),o&&r.length>0&&t("div",{class:"suggest",children:r.map((p,g)=>t("div",{class:D(g===d&&"on"),onMouseDown:()=>n(p),children:[t(ue,{kind:p.kind}),t("span",{class:"ellipsis",children:p.label}),p.path&&p.kind!=="file"?t("span",{class:"path",children:p.path}):null]}))})]})}function ii({params:e}){let[n,s]=S({node:e.node??null,depth:1,direction:"both",kinds:po,mode:"galaxy"}),[i,r]=S({back:[],fwd:[]}),[a,o]=S(null),[l,d]=S(!1),[c,u]=S(null),[p,g]=S(""),[f,x]=S(),[h,m]=S(!0),[v,y]=S(!1),b=oe(null);U(()=>{e.node&&e.node!==n.node&&k({...n,node:e.node})},[e.node]);let k=(_,I=!0)=>{I&&r(G=>({back:[...G.back,n].slice(-30),fwd:[]})),s(_)};U(()=>{let _=!0;d(!0),x(void 0);let I=n.kinds.join(",")||"none";return(n.node?H("/api/graph",{mode:"expand",node:n.node,direction:n.direction,kinds:I,depth:n.depth,limit:400}):H("/api/graph",{mode:"map",kinds:I,limit:200})).then(q=>{_&&(o(q),u(q.root??null))}).catch(q=>_&&Z(q.message,!0)).finally(()=>_&&d(!1)),()=>{_=!1}},[n]);let T=_=>{y(!0),k({...n,node:_})},E=async()=>{if(!(!n.node||!p.trim()))try{let _=await H("/api/graph",{mode:"path",node:n.node,to:p.trim()});o(I=>{if(!I)return I;let G=new Set(I.nodes.map(A=>A.id)),q=new Set(I.edges.map(A=>`${A.src}|${A.dst}|${A.kind}`));return{...I,nodes:[...I.nodes,..._.nodes.filter(A=>!G.has(A.id))],edges:[...I.edges,..._.edges.filter(A=>!q.has(`${A.src}|${A.dst}|${A.kind}`))]}}),y(!0),x(new Set(_.edges.map(I=>`${I.src}|${I.dst}|${I.kind}`)))}catch(_){Z(_.message,!0)}},w=a?.nodes.find(_=>_.id===c),C=w?a.edges.filter(_=>_.dst===w.id):[],R=w?a.edges.filter(_=>_.src===w.id):[],F=_=>a?.nodes.find(I=>I.id===_)?.label??_,$=a?.nodes.filter(_=>_.kind==="file").length??0,L=_=>k({...n,kinds:n.kinds.includes(_)?n.kinds.filter(I=>I!==_):[...n.kinds,_]});return t("div",{style:{height:"100%",display:"flex",flexDirection:"column"},children:[t("div",{class:"gtoolbar",children:[t("button",{type:"button",class:"sm",disabled:!i.back.length,title:"back",onClick:()=>{let _=i.back[i.back.length-1];_&&(r(I=>({back:I.back.slice(0,-1),fwd:[n,...I.fwd]})),s(_))},children:"\u2190"}),t("button",{type:"button",class:"sm",disabled:!i.fwd.length,title:"forward",onClick:()=>{let _=i.fwd[0];_&&(r(I=>({back:[...I.back,n],fwd:I.fwd.slice(1)})),s(_))},children:"\u2192"}),t(mo,{value:n.node??"",onPick:_=>k({...n,node:_.id})}),t("button",{type:"button",class:"sm",onClick:()=>k({...n,node:null}),title:"whole project (file map)",children:"All"}),t("select",{value:n.direction,disabled:!n.node,title:n.node?void 0:"pick a node to follow edges in one direction",onChange:_=>k({...n,direction:_.target.value}),children:[t("option",{value:"both",children:"Both directions"}),t("option",{value:"in",children:"Incoming (who uses it)"}),t("option",{value:"out",children:"Outgoing (what it uses)"})]}),t("span",{class:"row tight",children:[t("button",{type:"button",class:"sm",disabled:!n.node||n.depth<=1,onClick:()=>k({...n,depth:n.depth-1}),children:"\u2212"}),t("span",{class:"small nowrap",children:[n.depth," layer",n.depth===1?"":"s"]}),t("button",{type:"button",class:"sm",disabled:!n.node||n.depth>=4,onClick:()=>k({...n,depth:n.depth+1}),children:"+1"})]}),t("span",{class:"row tight",children:[t("input",{type:"text",placeholder:"path to\u2026",style:{width:160},value:p,onInput:_=>g(_.target.value),onKeyDown:_=>_.key==="Enter"&&E()}),t("button",{type:"button",class:"sm",onClick:E,disabled:!n.node,children:"Path"})]}),t("span",{class:"row tight",children:[t("button",{type:"button",class:D("chip",n.mode==="galaxy"&&"on"),onClick:()=>s({...n,mode:"galaxy"}),children:"galaxy"}),t("button",{type:"button",class:D("chip",n.mode==="hierarchy"&&"on"),onClick:()=>s({...n,mode:"hierarchy"}),children:"hierarchy"}),t("button",{type:"button",class:D("chip",h&&"on"),onClick:()=>m(!h),children:"legend"})]}),t("span",{class:"count",children:l?t(z,{}):a?`${a.nodes.length} nodes \xB7 ${a.edges.length} edges${a.truncated?" \xB7 truncated":""}${a.total&&a.total>$?` \xB7 top ${$} of ${a.total} files`:""}`:""})]}),t("div",{class:"gtoolbar",style:{paddingTop:4,paddingBottom:6},children:[t("span",{class:"muted small",children:"edges:"}),Qs.map(_=>t("button",{type:"button",class:D("chip",n.kinds.includes(_)&&"on"),onClick:()=>L(_),children:_}))]}),t("div",{style:{flex:1,minHeight:0,display:"grid",gridTemplateColumns:w?"minmax(0,1fr) 340px":"1fr"},children:[t("div",{style:{minWidth:0},children:a?a.nodes.length?t(Ae,{nodes:a.nodes,edges:a.edges,mode:n.mode,selected:c,highlight:f,onSelect:u,onActivate:T,legend:h,handle:b,keepPositions:v}):t(W,{children:"The graph is empty. Run a reindex from System."}):t(W,{children:t(z,{})})}),w&&t("div",{class:"panel right",children:[t("div",{class:"head",children:["selection ",t("span",{class:"spacer"}),t("a",{onClick:()=>u(null),children:"close"})]}),t("div",{class:"body",children:[t("div",{class:"section",children:[t("div",{class:"row tight",children:[t(ue,{kind:w.kind}),t("b",{class:"break",children:w.label})]}),w.path&&w.kind!=="file"?t("div",{class:"muted small",children:[w.path,w.line?`:${w.line}`:""]}):null,t("div",{class:"row",style:{marginTop:8},children:[t("button",{type:"button",class:"sm primary",onClick:()=>T(w.id),children:"Expand from here"}),w.path?t("button",{type:"button",class:"sm",onClick:()=>O("explore",{file:w.path,line:w.line?String(w.line):void 0,symbol:w.kind==="file"?void 0:w.id}),children:"Open source"}):null,w.kind==="memory"?t("button",{type:"button",class:"sm",onClick:()=>O("memory",{name:w.label}),children:"Open memory"}):null]})]}),t("div",{class:"section",children:[t("h4",{children:["incoming \xB7 ",C.length]}),t("table",{children:t("tbody",{children:C.slice(0,60).map(_=>t("tr",{class:"click",onClick:()=>u(_.src),children:[t("td",{children:t(M,{children:_.kind})}),t("td",{class:"break",children:F(_.src)})]}))})})]}),t("div",{class:"section",children:[t("h4",{children:["outgoing \xB7 ",R.length]}),t("table",{children:t("tbody",{children:R.slice(0,60).map(_=>t("tr",{class:"click",onClick:()=>u(_.dst),children:[t("td",{children:t(M,{children:_.kind})}),t("td",{class:"break",children:F(_.dst)})]}))})})]})]})]})]})]})}var Ge=["feat","test","perf","refactor","fix","docs","other"],ot={feat:"#2563eb",test:"#16a34a",perf:"#d97706",refactor:"#7c3aed",fix:"#e11d48",docs:"#0284c7",other:"#9ca3af"},Xe=e=>ot[e]??ot.other;function es(e){let n=[],s=[],i=0,r=a=>{let o=n.indexOf(null);return o===-1?(o=n.length,n.push(a)):n[o]=a,o};for(let a of e){let o=n.indexOf(a.sha);o===-1&&(o=r(a.sha));let l=[];for(let u=0;u<n.length;u++)u!==o&&n[u]===a.sha&&(l.push(u),n[u]=null);let d=[],c=a.parents;if(!c.length)n[o]=null;else{n[o]=c[0];for(let u of c.slice(1)){let p=n.indexOf(u);p===-1&&(p=r(u)),d.push(p)}}for(;n.length&&n[n.length-1]===null;)n.pop();i=Math.max(i,n.length,o+1),s.push({c:a,lane:o,after:[...n],joins:l,forks:d})}return{rows:s,lanes:i}}function ai(e){let n=[];for(let s=0;s<e.length-1;s++){let i=e[s],r=e[s+1];for(let a=0;a<i.after.length;a++){let o=i.after[a];o&&(o===r.c.sha&&a!==r.lane?n.push({kind:"curve",fromLane:a,toLane:r.lane,from:s,to:s+1,lane:a}):i.forks.includes(a)&&a!==i.lane?n.push({kind:"curve",fromLane:i.lane,toLane:a,from:s,to:s+1,lane:a}):n.push({kind:"line",lane:a,from:s,to:s+1}))}}return n}function ts(e){let n=Math.max(0,Math.min(1,e)),s=[191,219,254],i=[30,58,138],r=s.map((a,o)=>Math.round(a+((i[o]??0)-a)*n));return`rgb(${r[0]},${r[1]},${r[2]})`}function li(e=800){let n=oe(null),[s,i]=S(e);return U(()=>{let r=n.current;if(!r)return;let a=new ResizeObserver(()=>i(r.clientWidth||e));return a.observe(r),i(r.clientWidth||e),()=>a.disconnect()},[]),[n,s]}function ci({weeks:e,range:n,onRange:s,hidden:i}){let[r,a]=li(),o=150,l={l:34,r:8,t:8,b:22},d=Math.max(10,a-l.l-l.r),c=o-l.t-l.b,u=e.length,p=u?d/u:d,g=p>=5?1:0,f=Math.max(1,...e.map(C=>Ge.reduce((R,F)=>R+(i.has(F)?0:C.byBucket[F]),0))),x=C=>l.t+c-C/f*c,[h,m]=S(null),v=oe(null),[y,b]=S(null),k=(C,R)=>{let F=R.getBoundingClientRect(),$=C-F.left-l.l;return Math.max(0,Math.min(u-1,Math.floor($/p)))},T=V(()=>{let C=[],R="";for(let $=0;$<u;$++){let L=e[$].week.slice(0,7);if(L!==R){R=L;let _=new Date(e[$].at),I=_.getUTCMonth()===0||!C.length?`${_.getUTCFullYear()}`:_.toLocaleString("en",{month:"short",timeZone:"UTC"});C.push({i:$,label:I})}}let F=Math.max(1,Math.ceil(C.length/Math.max(4,d/60)));return C.filter(($,L)=>L%F===0)},[e,d]),E=y??(n?[e.findIndex(C=>C.at+7*864e5>n[0]),e.findIndex(C=>C.at>n[1])-1]:null),w=h!==null?e[h]:void 0;return t("div",{class:"hist-chart",ref:r,children:[t("svg",{width:a,height:o,onMouseMove:C=>{let R=C.currentTarget,F=k(C.clientX,R);m(F),v.current&&b([Math.min(v.current.i0,F),Math.max(v.current.i0,F)])},onMouseLeave:()=>m(null),onMouseDown:C=>{let R=C.currentTarget,F=k(C.clientX,R);v.current={x0:C.clientX,i0:F},b([F,F]),C.preventDefault()},onMouseUp:C=>{let R=v.current;if(v.current=null,!R)return;if(Math.abs(C.clientX-R.x0)<3){b(null),s(null);return}let F=y;b(null),F&&s([e[F[0]].at,e[F[1]].at+7*864e5-1])},children:[t("title",{children:"commits per week by kind"}),[0,.5,1].map(C=>t("g",{children:[t("line",{x1:l.l,x2:a-l.r,y1:x(f*C),y2:x(f*C),class:"grid"}),t("text",{x:l.l-6,y:x(f*C)+3,class:"axis","text-anchor":"end",children:Math.round(f*C)})]})),T.map(C=>t("text",{x:l.l+C.i*p,y:o-6,class:"axis",children:C.label})),E&&E[0]>=0&&E[1]>=E[0]?t("rect",{x:l.l+E[0]*p,y:l.t,width:(E[1]-E[0]+1)*p,height:c,class:"brush"}):null,e.map((C,R)=>{let F=0;return t("g",{opacity:E&&(R<E[0]||R>E[1])?.35:1,children:Ge.map($=>{if(i.has($))return null;let L=C.byBucket[$];if(!L)return null;let _=x(F+L),I=x(F);return F+=L,t("rect",{x:l.l+R*p+g/2,y:_,width:Math.max(.5,p-g),height:Math.max(0,I-_-(g&&I-_>2?1:0)),fill:ot[$],rx:p>=6?1.5:0})})})}),h!==null?t("line",{x1:l.l+h*p+p/2,x2:l.l+h*p+p/2,y1:l.t,y2:l.t+c,class:"cross"}):null]}),w?t("div",{class:"tip",style:{left:Math.min(a-190,l.l+h*p+10),top:4},children:[t("b",{children:["week of ",w.week]})," \xB7 ",w.total," commit",w.total===1?"":"s"," \xB7 +",w.added,"/-",w.deleted,t("div",{class:"row tight",style:{marginTop:4,flexWrap:"wrap"},children:Ge.filter(C=>w.byBucket[C]).map(C=>t("span",{class:"kdot-lbl",children:[t("i",{class:"kdot",style:{background:ot[C]}}),C," ",w.byBucket[C]]}))})]}):null]})}function di({counts:e,hidden:n,onToggle:s}){return t("div",{class:"row tight",style:{flexWrap:"wrap"},children:Ge.map(i=>t("button",{type:"button",class:D("chip",!n.has(i)&&"on"),onClick:()=>s(i),title:n.has(i)?`show ${i}`:`hide ${i}`,children:[t("i",{class:"kdot",style:{background:ot[i],opacity:n.has(i)?.3:1}}),i," ",e[i]??0]}))})}function ns({values:e,width:n=72,height:s=16}){let i=Math.max(1,...e),r=e.length,a=e.map((o,l)=>`${l/Math.max(1,r-1)*(n-2)+1},${s-1-o/i*(s-3)}`);return t("svg",{width:n,height:s,class:"spark",title:e.join(" "),children:[t("title",{children:["commits per month: ",e.join(" ")]}),t("polyline",{points:a.join(" ")}),e.map((o,l)=>o?t("circle",{cx:l/Math.max(1,r-1)*(n-2)+1,cy:s-1-o/i*(s-3),r:1.4}):null)]})}function ui({files:e,selected:n,onSelect:s}){let[i,r]=li(),a=300,o={l:42,r:16,t:12,b:30},l=Math.max(10,r-o.l-o.r),d=a-o.t-o.b,c=e.filter(b=>b.commits>=2),u=Math.max(2,...c.map(b=>b.commits)),p=Math.max(1,...c.map(b=>b.added+b.deleted)),g=b=>o.l+Math.log(b)/Math.log(u)*l,f=b=>o.t+d-b*d,x=b=>3+Math.sqrt((b.added+b.deleted)/p)*13,[h,m]=S(null),v=[...c].sort((b,k)=>k.risk-b.risk).slice(0,5),y=[1,2,5,10,20,50,100,200,500,1e3].filter(b=>b<=u);return t("div",{class:"hist-chart",ref:i,children:[t("svg",{width:r,height:a,children:[t("title",{children:"files by commits and fix share, sized by lines changed"}),[0,.25,.5,.75,1].map(b=>t("g",{children:[t("line",{x1:o.l,x2:r-o.r,y1:f(b),y2:f(b),class:"grid"}),t("text",{x:o.l-6,y:f(b)+3,class:"axis","text-anchor":"end",children:[Math.round(b*100),"%"]})]})),y.filter(b=>g(b)<r-o.r-70).map(b=>t("text",{x:g(b),y:a-8,class:"axis","text-anchor":"middle",children:b})),t("text",{x:r-o.r,y:a-8,class:"axis","text-anchor":"end",children:"commits (log) \u2192"}),t("text",{x:o.l+4,y:o.t+10,class:"axis",children:"share of commits that were fixes \u2191"}),c.map(b=>t("circle",{cx:g(b.commits),cy:f(b.commits?b.fixes/b.commits:0),r:x(b),fill:ts(b.risk),class:D("dot",n===b.path&&"sel"),onMouseEnter:()=>m(b),onMouseLeave:()=>m(null),onClick:()=>s(b.path)})),v.map(b=>{let k=g(b.commits)>r-160;return t("text",{x:k?g(b.commits)-x(b)-3:g(b.commits)+x(b)+3,y:f(b.fixes/b.commits)+3,class:"lbl","text-anchor":k?"end":"start",children:b.path.split("/").slice(-2).join("/")})})]}),h?t("div",{class:"tip",style:{left:Math.min(r-260,g(h.commits)+12),top:Math.max(0,f(h.fixes/h.commits)-60)},children:[t("b",{children:h.path}),t("div",{class:"muted",children:[h.commits," commits \xB7 ",h.fixes," fixes \xB7 +",h.added,"/-",h.deleted," \xB7 risk"," ",h.risk.toFixed(2)]}),h.reasons.length?t("div",{class:"muted",children:h.reasons.join("; ")}):null]}):null]})}var oi=["#2563eb","#d97706","#16a34a","#7c3aed","#e11d48","#0284c7","#db2777","#0d9488"],on=e=>oi[e%oi.length];function pi({rows:e,lanes:n,rowH:s,selected:i}){let a=n*14+10,o=c=>7+c*14,l=c=>c*s+s/2,d=ai(e);return t("svg",{class:"lanes",width:a,height:e.length*s,children:[t("title",{children:"commit graph"}),d.map(c=>c.kind==="line"?t("line",{x1:o(c.lane),x2:o(c.lane),y1:l(c.from),y2:l(c.to),stroke:on(c.lane)}):t("path",{d:`M${o(c.fromLane)},${l(c.from)} C${o(c.fromLane)},${l(c.from)+s/2} ${o(c.toLane)},${l(c.to)-s/2} ${o(c.toLane)},${l(c.to)}`,stroke:on(c.lane)})),e.map((c,u)=>t("circle",{cx:o(c.lane),cy:l(u),r:c.c.merge?3.5:4,fill:c.c.merge?"var(--card)":on(c.lane),stroke:on(c.lane),"stroke-width":i===c.c.sha?3:c.c.merge?2:1,class:D(i===c.c.sha&&"sel",!c.c.onHead&&"off")}))]})}var ho={branch:"hexagon",commit:"triangle",memory:"diamond",doc:"square"};function ln(e){return e.missing?"ring":ho[e.kind]??"circle"}function cn(e){let n=e;return n.kind==="commit"?Xe(n.bucket??"other"):n.kind==="branch"?n.live||n.isDefault?"#64748b":"#9ca3af":n.kind==="memory"&&(n.status==="superseded"||n.status==="deprecated")?"#93c5fd":xe(e.kind)}var go={contains:{color:"#64748b",width:1.2,alpha:.55,directed:!0},merged_into:{color:"#64748b",dash:[6,3],width:1.6,alpha:.6,directed:!0},touches:{color:"#94a3b8",width:.9,alpha:.4,directed:!0},records:{color:"#2563eb",dash:[2,3],width:1.2,alpha:.6,directed:!0},fixes:{color:"#e11d48",dash:[4,3],width:1.6,alpha:.75,directed:!0}};function ss(e){return go[e]??xt(e)}var fo=(e,n)=>e.length>n?`${e.slice(0,n-1)}\u2026`:e;function mi(e){return e.kind==="commit"?fo(e.label,32):e.kind==="file"?e.label.split("/").pop()??e.label:e.label}var bo=["branch","commit","file","memory","doc"],yo=["contains","merged_into","touches","fixes","records","mentions","documents"],vo={contains:"a commit made on this branch",merged_into:"the branch was merged into the default branch",touches:"the commit changed this file",fixes:"a fix whose removed lines trace back to this commit",records:"the commit wrote or edited this memory",mentions:"a memory's related: header names this file",documents:"a doc source covers this file"},ko=[5,8,15,30],hi=(e,n)=>[...e].sort((s,i)=>{let r=n.indexOf(s),a=n.indexOf(i);return(r===-1?99:r)-(a===-1?99:a)||s.localeCompare(i)});function gi(e,n){let s=new Set(e);return s.has(n)?s.delete(n):s.add(n),s}function fi({focus:e}){let[n,s]=S(null),[i,r]=S(!1),[a,o]=S(0),[l,d]=S(8),[c,u]=S(new Set),[p,g]=S(new Set),[f,x]=S(""),[h,m]=S(!1),[v,y]=S(e??null);U(()=>{let A=!0;return r(!0),H("/api/history/knowledge",{focus:e,branches:l,limit:400}).then(j=>{A&&(s(j),y(j.focus??null))}).catch(j=>A&&Z(j.message,!0)).finally(()=>A&&r(!1)),()=>{A=!1}},[e,l,a]);let b=V(()=>{if(!n?.git)return null;let A=f?n.nodes.filter(j=>j.kind!=="commit"||j.root||j.bucket===f):n.nodes;return en({nodes:A,edges:n.edges},{hiddenKinds:c,hiddenEdges:p,status:"",category:"",hideSuperseded:!1})},[n,c,p,f]),k=n?.git?n.nodes:[],T=V(()=>Ue(k,A=>A.kind),[n]),E=V(()=>Ue(n?.edges??[],A=>A.kind),[n]),w=V(()=>Ue(k.filter(A=>A.kind==="commit"),A=>A.bucket??"other"),[n]),C=A=>k.find(j=>j.kind===A&&!j.missing),R=V(()=>new Map(k.map(A=>[A.id,A])),[n]),F=v?R.get(v):void 0,$=b?.edges??[],L=F?$.filter(A=>A.dst===F.id):[],_=F?$.filter(A=>A.src===F.id):[],I=A=>{let j=R.get(A);return j?j.kind==="commit"?`${j.short} ${j.label}`:j.label:A},G=A=>O("history",{tab:"graph",focus:A}),q=n?.focus?R.get(n.focus):void 0;return n&&!n.git?t(W,{children:n.error??"Not a git repository."}):t("div",{class:"kgalaxy hgraph",children:[t("div",{class:"gtoolbar",children:[e?t("span",{class:"row tight",children:[t("span",{class:"muted small",children:"focused on"}),t("b",{class:"break",children:q?I(q.id):e}),t("button",{type:"button",class:"sm",onClick:()=>O("history",{tab:"graph"}),children:"Show all"})]}):t(P,{children:[t("span",{class:"muted small",children:"newest"}),t("select",{value:String(l),title:"feature branches drawn",onChange:A=>d(Number(A.target.value)),children:ko.map(A=>t("option",{value:String(A),children:A}))}),t("span",{class:"muted small",children:"branches, their commits and what they touched"})]}),t("select",{value:"",title:"focus a branch",onChange:A=>{let j=A.target.value;j&&G(`branch:${j}`)},children:[t("option",{value:"",children:"focus a branch\u2026"}),(n?.branches??[]).map(A=>t("option",{value:A.name,children:[A.name," (",A.commits,")",A.isDefault?" \xB7 default":A.merged?" \xB7 merged":"",A.live?"":" \xB7 deleted"]}))]}),w.size>1?t("select",{value:f,title:"commit kind",onChange:A=>x(A.target.value),children:[t("option",{value:"",children:"any commit kind"}),Ge.filter(A=>w.has(A)).map(A=>t("option",{value:A,children:[A," (",w.get(A),")"]}))]}):null,t("button",{type:"button",class:D("chip",h&&"on"),onClick:()=>m(!h),children:"legend"}),t("button",{type:"button",class:"sm",title:"reload",onClick:()=>o(A=>A+1),children:"\u21BB"}),t("span",{class:"count",children:i?t(z,{}):b&&n?`${b.nodes.length} of ${k.length} nodes \xB7 ${b.edges.length} edges${n.truncated?` \xB7 first ${k.length} of ${n.total}`:""}`:""})]}),t("div",{class:"gtoolbar",style:{paddingTop:4,paddingBottom:6},children:[t("span",{class:"muted small",children:"nodes:"}),hi([...T.keys()],bo).map(A=>{let j=C(A);return t("button",{type:"button",class:D("chip",!c.has(A)&&"on"),onClick:()=>u(gi(c,A)),children:[j?t(Ne,{shape:ln(j),color:cn(j)}):null,A," ",T.get(A)]})}),t("span",{class:"muted small",style:{marginLeft:8},children:"edges:"}),hi([...E.keys()],yo).map(A=>{let j=ss(A);return t("button",{type:"button",title:vo[A],class:D("chip",!p.has(A)&&"on"),onClick:()=>g(gi(p,A)),children:[t(it,{color:j.color,dash:j.dash}),A," ",E.get(A)]})})]}),t("div",{class:"kbody",style:{gridTemplateColumns:F?"minmax(0,1fr) 320px":"minmax(0,1fr)"},children:[t("div",{style:{minWidth:0,minHeight:0},children:b?b.nodes.length?t(Ae,{nodes:b.nodes,edges:b.edges,selected:v,onSelect:y,onActivate:G,legend:h,colorOf:cn,shapeOf:ln,edgeStyleOf:ss,labelOf:mi}):k.length?t(W,{children:"Nothing left after these filters."}):t(W,{children:"No commits to draw."}):t(W,{children:t(z,{})})}),F&&t("div",{class:"panel right",children:[t("div",{class:"head",children:["selection ",t("span",{class:"spacer"}),t("a",{onClick:()=>y(null),children:"close"})]}),t("div",{class:"body",children:[t(xo,{node:F,focus:n?.focus??void 0,onFocus:G}),t(at,{title:"incoming",rows:L.map(A=>({kind:A.kind,id:A.src})),label:I,onPick:y}),t(at,{title:"outgoing",rows:_.map(A=>({kind:A.kind,id:A.dst})),label:I,onPick:y})]})]})]})]})}function xo({node:e,focus:n,onFocus:s}){return t("div",{class:"section",children:[t("div",{class:"row tight",children:[t(Ne,{shape:ln(e),color:cn(e)}),t(ue,{kind:e.kind}),t("b",{class:"break",children:e.kind==="commit"?e.short:e.label})]}),e.kind==="commit"?t("div",{style:{marginTop:4},children:e.label}):null,t("div",{class:"row tight wrap",style:{marginTop:4},children:[e.kind==="commit"&&e.sub?t("span",{class:"tag",style:{borderColor:Xe(e.bucket??"other")},children:e.sub}):null,e.group==="memory"&&e.sub?t(M,{children:e.sub}):null,e.status?t("span",{class:`tag s-${e.status}`,children:e.status}):null,e.group==="doc"&&e.detail?t(M,{children:e.detail}):null,e.kind==="branch"?t(P,{children:[t(M,{children:[e.commits," own commits"]}),e.isDefault?t(M,{children:"default"}):e.merged?t(M,{children:"merged"}):t(M,{children:"open"}),e.live?null:t(M,{children:"ref deleted"}),(e.prs??[]).map(i=>t(M,{children:["#",i]}))]}):null,e.kind==="file"&&e.fixes?t(M,{children:[e.fixes," fixes"]}):null,e.risk?t(M,{children:["risk ",Math.round(e.risk*100),"%"]}):null]}),e.at?t("div",{class:"muted small",style:{marginTop:4},children:[e.author?`${e.author} \xB7 `:"",ie(e.at)]}):null,e.missing?t("div",{class:"muted small",style:{marginTop:4},children:e.kind==="file"?"No longer in the working tree (deleted or renamed since).":"Nothing defines it any more (deleted or renamed)."}):null,t("div",{class:"row wrap",style:{marginTop:8},children:[e.id!==n?t("button",{type:"button",class:"sm primary",onClick:()=>s(e.id),children:"Focus here"}):null,e.kind==="commit"&&e.short?t("button",{type:"button",class:"sm",onClick:()=>O("history",{tab:"timeline",sha:e.id.slice(7)}),children:"Open commit"}):null,e.kind==="branch"&&e.live&&!e.isDefault?t("button",{type:"button",class:"sm",onClick:()=>O("history",{tab:"branches",branch:e.label}),children:"Branch detail"}):null,e.kind==="file"&&e.path?t("button",{type:"button",class:"sm",onClick:()=>O("history",{tab:"files",file:e.path}),children:"File history"}):null,e.kind==="file"&&e.path&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>O("explore",{file:e.path}),children:"Open source"}):null,e.group==="memory"&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>O("memory",{name:e.label}),children:"Open memory"}):null,e.group==="doc"&&!e.missing?t("button",{type:"button",class:"sm",onClick:()=>O("docs",{tab:"sources",name:e.label}),children:"Open doc source"}):null]})]})}function dn({kind:e,bucket:n}){return t("span",{class:"tag kind",style:{color:Xe(n)},children:e})}function bi({added:e,deleted:n}){let s=e+n,i=5,r=s?Math.round(e/s*i):0,a=s?Math.min(i-r,Math.round(n/s*i)):0;return t("span",{class:"pm",title:`+${e} / -${n}`,children:[t("span",{class:"add",children:["+",te(e)]}),t("span",{class:"del",children:["-",te(n)]}),t("span",{class:"bars",children:Array.from({length:i},(o,l)=>t("i",{class:l<r?"a":l<r+a?"d":""}))})]})}function yi({refs:e,tags:n,max:s=3}){let i=e.filter(r=>!r.startsWith("tag: "));return!i.length&&!n.length?null:t(P,{children:[n.slice(0,2).map(r=>t("span",{class:"ref tag",children:r})),i.slice(0,s).map(r=>t("span",{class:D("ref",r.includes("/")&&"remote"),children:r})),i.length>s?t("span",{class:"ref remote",children:["+",i.length-s]}):null]})}function wo({c:e}){return t(P,{children:[e.blamedBy?t("span",{class:"flag warn",title:`${e.blamedBy} later fix(es) removed lines from this commit`,children:["\u26A0 ",e.blamedBy]}):null,e.reverted?t("span",{class:"flag bad",title:"reverted",children:"\u21A9"}):null,e.origins&&(e.kind==="fix"||e.kind==="revert")?t("span",{class:"flag ok",title:`traced to ${e.origins} earlier commit(s)`,children:["\u21E0 ",e.origins]}):null,e.breaking?t("span",{class:"flag bad",children:"BREAKING"}):null]})}function lt({value:e}){return t("span",{class:"riskbar",title:e.toFixed(2),children:t("i",{style:{width:`${Math.round(e*100)}%`,background:ts(.3+e*.7)}})})}function Pe({v:e,k:n,sub:s}){return t("div",{class:"stat",children:[t("div",{class:"v",children:[e,s?t("small",{children:s}):null]}),t("div",{class:"k",children:n})]})}function ct({commits:e,selected:n,onSelect:s,lanes:i,empty:r}){return e.length?t("div",{class:"commits",children:[i?t(pi,{rows:i.rows,lanes:i.lanes,rowH:28,selected:n}):null,t("div",{class:"rows",children:e.map(o=>t("div",{class:D("crow",n===o.sha&&"sel",!o.onHead&&"off"),onClick:()=>s(o.sha),title:`${o.sha}
12
12
  ${o.subject}
13
13
  ${o.author} \xB7 ${new Date(o.at).toLocaleString()}${o.riskReasons.length?`
14
- ${o.riskReasons.join("; ")}`:""}`,children:[t("span",{class:"when",children:ge(o.at)}),t("span",{class:"subj",children:[t("span",{class:"sha",children:o.short}),t(nn,{kind:o.kind,bucket:o.bucket}),o.subject,t(ui,{refs:o.refs,tags:o.tags})]}),t("span",{class:"meta",children:[t(ao,{c:o}),o.merge?t("span",{children:"merge"}):t(di,{added:o.added,deleted:o.deleted}),t("span",{children:o.author.split(" ")[0]})]})]}))})]}):t(W,{children:r??"No commits match."})}function Qn({l:e,onSelect:n}){return t("div",{class:"step",onClick:()=>n(e.sha),style:{cursor:"pointer"},children:[t("span",{class:"sha mono muted",children:e.short})," ",e.kind&&e.bucket?t(nn,{kind:e.kind,bucket:e.bucket}):null,t("a",{children:e.subject}),e.at?t("span",{class:"muted small",children:[" \xB7 ",ge(e.at)]}):null,e.paths.length?t("div",{class:"muted small",children:e.paths.join(", ")}):null]})}function oo({sha:e,path:n}){let s=j(()=>O("/api/history/diff",{sha:e,path:n}),[e,n]);if(s.error)return t(J,{error:s.error});if(!s.data)return t(B,{});let i=s.data.text.split(`
15
- `);return t(N,{children:[t("div",{class:"diff",children:i.map(r=>t("div",{class:r.startsWith("+++")||r.startsWith("---")?"muted":r.startsWith("diff --git")?"file":r.startsWith("@@")?"hunk":r.startsWith("+")?"add":r.startsWith("-")?"del":"",children:r.startsWith("diff --git")?r.replace(/^diff --git a\/(.*) b\/.*$/,"$1"):r||" "}))}),s.data.truncated?t("div",{class:"muted small",children:"diff truncated"}):null]})}function lo({sha:e,onSelect:n}){let s=j(()=>O("/api/history/commit",{sha:e}),[e]),[i,r]=C(!1);if(U(()=>r(!1),[e]),s.error)return t(J,{error:s.error});if(!s.data)return t(B,{});if(s.data.error)return t(J,{error:s.data.error});let a=s.data,o=a.commit,l=Math.max(1,...a.files.map(c=>c.added+c.deleted));return t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row tight",style:{flexWrap:"wrap"},children:[t(nn,{kind:o.kind,bucket:o.bucket}),o.scope?t(D,{children:o.scope}):null,o.breaking?t(D,{class:"risk-high",children:"breaking"}):null,o.pr?t(D,{children:["PR #",o.pr]}):null,o.issues.map(c=>t(D,{children:c})),t(ui,{refs:o.refs,tags:o.tags,max:6}),t("span",{class:"spacer"}),t("span",{class:"mono small muted",title:o.sha,children:o.sha.slice(0,12)})]}),t("h3",{style:{marginTop:6},children:o.subject}),t("div",{class:"muted small",children:[o.author," <",o.email,"> \xB7 ",new Date(o.at).toLocaleString()," (",oe(o.at),")",o.merge?" \xB7 merge":` \xB7 +${o.added}/-${o.deleted} in ${o.files} file${o.files===1?"":"s"} (${o.size})`,o.onHead?"":" \xB7 not reachable from HEAD"]}),o.body?t("div",{class:"msg",style:{marginTop:8},children:o.body}):null,o.riskReasons.length?t("div",{class:"row small",style:{marginTop:8,alignItems:"baseline"},children:[t(D,{class:o.risk>=.5?"risk-high":o.risk>=.3?"risk-medium":"risk-low",children:["hindsight ",o.risk.toFixed(2)]}),t("span",{class:"muted",children:o.riskReasons.join("; ")})]}):null,t("div",{class:"row",style:{marginTop:8},children:[t("button",{type:"button",class:"sm",onClick:()=>r(i===!1?null:!1),children:i===!1?"Show diff":"Hide diff"}),a.branches.length?t("span",{class:"muted small",children:["on ",a.branches.slice(0,5).join(", "),a.branches.length>5?` +${a.branches.length-5}`:""]}):null]})]}),a.blamedBy.length||a.origins.length||a.revertedBy?t("div",{class:"card",children:[t("h3",{children:"what history says"}),a.origins.length?t(N,{children:[t("div",{class:"muted small",style:{marginBottom:4},children:o.kind==="revert"?"reverts":"removed lines last written by (likely cause of the bug)"}),t("div",{class:"chain",children:a.origins.map(c=>t("div",{class:L("step","origin"),children:t(Qn,{l:c,onSelect:n})}))})]}):null,a.blamedBy.length?t(N,{children:[t("div",{class:"muted small",style:{margin:"6px 0 4px"},children:"later fixes that removed lines from this commit"}),t("div",{class:"chain",children:a.blamedBy.map(c=>t("div",{class:L("step","fix"),children:[t(Qn,{l:c,onSelect:n}),c.at?t("span",{class:"muted small",children:[Math.max(0,Math.round((c.at-o.at)/864e5)),"d later"]}):null]}))})]}):null,a.revertedBy?t(N,{children:[t("div",{class:"muted small",style:{margin:"6px 0 4px"},children:"reverted by"}),t("div",{class:"chain",children:t("div",{class:"step fix",children:t(Qn,{l:a.revertedBy,onSelect:n})})})]}):null]}):null,i!==!1?t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6},children:[t("h3",{style:{margin:0},children:["diff",i?` \xB7 ${i}`:""]}),i?t("button",{type:"button",class:"sm ghost",onClick:()=>r(null),children:"whole commit"}):null]}),t(oo,{sha:o.sha,path:i??void 0})]}):null,a.files.length?t("div",{class:"card",children:[t("h3",{children:["files \xB7 ",a.files.length,t("span",{class:"muted small",style:{fontWeight:400,marginLeft:8},children:"symbols are listed when the file has not changed since this commit"})]}),t("div",{class:"cfiles",children:a.files.map(c=>t("div",{class:"cfile",children:[t("div",{class:"row tight",children:[t("a",{class:"ellipsis grow",title:c.path,onClick:()=>z("explore",{file:c.path}),children:c.path}),t(Fe,{value:c.added+c.deleted,max:l,width:44}),t(di,{added:c.added,deleted:c.deleted})]}),t("div",{class:"row tight small",style:{flexWrap:"wrap"},children:[t("a",{class:"muted",onClick:()=>r(c.path),children:"diff"}),t("a",{class:"muted",onClick:()=>z("history",{tab:"files",file:c.path}),children:"history"}),c.renamedFrom?t("span",{class:"muted",children:["\u2190 ",c.renamedFrom]}):null,c.fileFixes?t("span",{class:"muted",title:`history risk ${c.fileRisk.toFixed(2)}`,children:[t(tt,{value:c.fileRisk})," ",c.fileFixes," past fix",c.fileFixes===1?"":"es"]}):null,c.symbols.map(d=>t("a",{onClick:()=>z("explore",{file:c.path,symbol:d.id,line:d.line?String(d.line):void 0}),children:[t("span",{class:"muted",children:d.kind})," ",d.name]}))]})]}))})]}):null]})}function co({ov:e,params:n,selected:s,onSelect:i}){let[r,a]=C(new Set),[o,l]=C(null),[c,d]=C(n.q??""),[u,h]=C(""),[g,f]=C(n.path??""),[x,m]=C(!1),[p,v]=C(!1),[b,y]=C(150),k=e.buckets.filter(A=>!r.has(A)),S=j(()=>O("/api/history/commits",{buckets:r.size?k.join(","):void 0,q:c.trim()||void 0,author:u||void 0,path:g.trim()||void 0,since:o?new Date(o[0]).toISOString():void 0,until:o?new Date(o[1]).toISOString():void 0,risky:x?1:void 0,head:p?1:void 0,limit:b}),[r,c,u,g,o,x,p,b]),T=j(()=>O("/api/history/graph",{limit:400}),[e.head]),w=V(()=>{if(!T.data||!S.data)return;let A=new Set(S.data.commits.map($=>$.sha)),F=T.data.commits.slice(0,S.data.commits.length);if(!(F.length!==A.size||!F.every($=>A.has($.sha))))return Kn(F)},[T.data,S.data]),E=V(()=>{let A={};for(let F of e.weeks)for(let $ of e.buckets)A[$]=(A[$]??0)+F.byBucket[$];return A},[e]);return t("div",{class:"grid wide",style:{alignItems:"start",gridTemplateColumns:"minmax(0, 1.4fr) minmax(320px, 1fr)"},children:[t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6,flexWrap:"wrap"},children:[t(oi,{counts:E,hidden:r,onToggle:A=>a(F=>{let $=new Set(F);return $.has(A)?$.delete(A):$.add(A),$})}),t("span",{class:"spacer"}),t("span",{class:"muted small",children:o?t(N,{children:[ge(o[0])," \u2192 ",ge(o[1])," ",t("a",{onClick:()=>l(null),children:"clear"})]}):"drag across the chart to focus a period"})]}),t(ai,{weeks:e.weeks,range:o,onRange:l,hidden:r})]}),t("div",{class:"card",children:[t("div",{class:"row",style:{flexWrap:"wrap",marginBottom:8},children:[t("input",{type:"search",placeholder:"search message, sha, issue\u2026",value:c,onInput:A=>d(A.target.value),style:{width:240}}),t("select",{value:u,onChange:A=>h(A.target.value),children:[t("option",{value:"",children:"everyone"}),e.authors.map(A=>t("option",{value:A.name,children:[A.name," (",A.commits,")"]}))]}),t("input",{type:"text",placeholder:"path prefix",value:g,onInput:A=>f(A.target.value),style:{width:180}}),t("button",{type:"button",class:L("chip",x&&"on"),onClick:()=>m(!x),title:"only commits later fixed, reverted, large or touching hotspots",children:"\u26A0 hindsight flags"}),t("button",{type:"button",class:L("chip",p&&"on"),onClick:()=>v(!p),children:"HEAD only"}),t("span",{class:"spacer"}),t("span",{class:"muted small",children:S.data?`${S.data.total} commits`:""})]}),S.error?t(J,{error:S.error}):S.data?t(N,{children:[t(nt,{commits:S.data.commits,selected:s,onSelect:i,lanes:w}),S.data.total>S.data.commits.length?t("div",{class:"row",style:{marginTop:8},children:t("button",{type:"button",class:"sm",onClick:()=>y(A=>A+200),children:["show more (",S.data.total-S.data.commits.length," left)"]})}):null]}):t(B,{})]})]}),t("div",{class:"stack",children:s?t(lo,{sha:s,onSelect:i}):t(N,{children:[t("div",{class:"card",children:[t("h3",{children:"worth knowing"}),e.notable.length?t(nt,{commits:e.notable,selected:null,onSelect:i}):t("div",{class:"muted small",children:"No commit stands out in hindsight."})]}),t("div",{class:"card",children:[t("h3",{children:"people"}),t("table",{children:t("tbody",{children:e.authors.slice(0,8).map(A=>t("tr",{class:"click",onClick:()=>h(A.name),children:[t("td",{children:A.name}),t("td",{class:"num",children:[t(Fe,{value:A.commits,max:e.authors[0]?.commits??1,width:70})," ",A.commits]}),t("td",{class:"muted small",children:[A.fixes," fixes \xB7 ",A.files," files"]}),t("td",{class:"muted small",children:oe(A.lastAt)})]}))})})]}),e.tags.length?t("div",{class:"card",children:[t("h3",{children:"releases"}),t("div",{class:"row tight",style:{flexWrap:"wrap"},children:e.tags.slice(0,20).map(A=>t("a",{onClick:()=>i(A.sha),title:ge(A.at),children:t("span",{class:"ref tag",children:A.name})}))})]}):null]})})]})}function uo({ov:e,params:n,onSelectCommit:s}){let[i,r]=C(n.branch??null),[a,o]=C(!1),[l,c]=C(!0),d=j(()=>O("/api/history/graph",{limit:120}),[e.head]),u=j(()=>i?O("/api/history/branch",{name:i}):Promise.resolve(null),[i]),h=V(()=>d.data?Kn(d.data.commits):void 0,[d.data]),g=e.branches.filter(p=>(a||!p.remote)&&(l||!p.merged||p.isDefault)),f=Math.max(1,...g.map(p=>Math.max(p.ahead,p.behind))),[x,m]=C(null);return t("div",{class:"grid wide",style:{alignItems:"start",gridTemplateColumns:"minmax(0, 1fr) minmax(360px, 1fr)"},children:[t("div",{class:"card",children:[t("h3",{children:["commit graph"," ",t("span",{class:"muted small",children:["\xB7 latest ",d.data?.commits.length??""," across all branches"]})]}),d.error?t(J,{error:d.error}):d.data?t(nt,{commits:d.data.commits,selected:x,onSelect:p=>{m(p),s(p)},lanes:h}):t(B,{})]}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6},children:[t("h3",{style:{margin:0},children:["branches \xB7 ",g.length]}),t("span",{class:"spacer"}),t("button",{type:"button",class:L("chip",a&&"on"),onClick:()=>o(!a),children:"remotes"}),t("button",{type:"button",class:L("chip",l&&"on"),onClick:()=>c(!l),children:"merged"})]}),t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"branch"}),t("th",{children:["vs ",e.base??"base"]}),t("th",{children:"last"})]})}),t("tbody",{children:g.map(p=>t("tr",{class:L("click",i===p.name&&"sel"),onClick:()=>r(p.name),children:[t("td",{class:"break",children:[t("span",{class:L("ref",p.remote&&"remote"),children:p.name}),p.current?t(D,{children:"current"}):null,p.isDefault?t(D,{children:"base"}):null,!p.merged&&!p.isDefault?t(D,{class:"risk-medium",children:"unmerged"}):null,p.lastSubject?t("div",{class:"muted small ellipsis",style:{maxWidth:260},children:p.lastSubject}):null]}),t("td",{children:p.isDefault?t("span",{class:"muted small",children:"\u2014"}):t("span",{class:"ab",title:`${p.ahead} ahead, ${p.behind} behind`,children:[t("span",{class:"ok",children:["+",p.ahead]}),t(Fe,{value:p.ahead,max:f,width:40}),t(Fe,{value:p.behind,max:f,width:40}),t("span",{class:"bad",children:["-",p.behind]})]})}),t("td",{class:"muted small nowrap",children:[oe(p.at),p.lastAuthor?` \xB7 ${p.lastAuthor.split(" ")[0]}`:""]})]}))})]})]}),i?t("div",{class:"card",children:[t("h3",{children:i}),u.error?t(J,{error:u.error}):u.data?u.data.error?t(J,{error:u.data.error}):t(po,{d:u.data,onSelect:p=>{m(p),s(p)}}):t(B,{})]}):t("div",{class:"card muted small",children:"Select a branch to see the commits only it has, the files they touch, and how bug-prone those files have been."})]})]})}function po({d:e,onSelect:n}){let s=e.branch,i=e.files.filter(r=>r.risk>=.3);return t(N,{children:[t("div",{class:"row small",style:{flexWrap:"wrap"},children:[t(D,{children:["tip ",s.sha.slice(0,7)]}),t(D,{children:oe(s.at)}),s.upstream?t(D,{children:["tracks ",s.upstream]}):null,s.isDefault?null:t(D,{class:s.merged?"s-accepted":"risk-medium",children:s.merged?"merged":`+${s.ahead} / -${s.behind}`})]}),s.isDefault?t("div",{class:"muted small",style:{marginTop:6},children:"This is the base branch; other branches are compared against it."}):t(N,{children:[t("div",{class:"muted small",style:{margin:"8px 0 4px"},children:[e.commits.length," commit",e.commits.length===1?"":"s"," only on this branch"]}),t(nt,{commits:e.commits,selected:null,onSelect:n,empty:"Nothing unique: the branch is fully merged or behind."}),e.files.length?t(N,{children:[t("div",{class:"muted small",style:{margin:"8px 0 4px"},children:["files touched ",i.length?`\xB7 ${i.length} with a fix-heavy history`:""]}),t("div",{class:"list",style:{maxHeight:220},children:e.files.map(r=>t("div",{class:"item",onClick:()=>z("history",{tab:"files",file:r.path}),children:t("div",{class:"p",children:[r.risk>=.3?t(tt,{value:r.risk}):null," ",r.path,t("span",{class:"muted",children:[" ","\xB7 ",r.commits," commit",r.commits===1?"":"s",r.fixes?`, ${r.fixes} past fixes`:""]})]})}))})]}):null]})]})}function ho({params:e,onSelectCommit:n}){let[s,i]=C(""),[r,a]=C(e.file??null);U(()=>{e.file&&a(e.file)},[e.file]);let o=j(()=>O("/api/history/files",{path:s.trim()||void 0,limit:400}),[s]),{sorted:l,th:c}=Qe(o.data?.files,"risk"),[d,u]=C(null);return t("div",{class:"grid wide",style:{alignItems:"start",gridTemplateColumns:"minmax(0, 1fr) minmax(360px, 1fr)"},children:[t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6},children:[t("h3",{style:{margin:0},children:"churn vs fix share"}),t("input",{type:"text",placeholder:"folder prefix, e.g. src/graph/",value:s,onInput:h=>i(h.target.value),style:{width:220}}),t("span",{class:"spacer"}),t("span",{class:"muted small",children:"size = lines changed \xB7 colour = history risk"})]}),o.data?t(li,{files:o.data.files,selected:r,onSelect:a}):o.error?t(J,{error:o.error}):t(B,{})]}),t("div",{class:"card flush",children:t("table",{children:[t("thead",{children:t("tr",{children:[c("path","file"),c("commits","commits",!0),c("fixes","fixes",!0),c("bugOrigins","caused fixes",!0),c("commits90d","90d",!0),t("th",{children:"12 months"}),c("risk","risk",!0)]})}),t("tbody",{children:l.slice(0,150).map(h=>t("tr",{class:L("click",r===h.path&&"sel"),onClick:()=>a(h.path),children:[t("td",{class:"break",children:h.path}),t("td",{class:"num",children:h.commits}),t("td",{class:"num",children:h.fixes}),t("td",{class:"num",children:h.bugOrigins}),t("td",{class:"num",children:h.commits90d}),t("td",{children:t(Yn,{values:h.months})}),t("td",{class:"num",children:[t(tt,{value:h.risk})," ",h.risk.toFixed(2)]})]}))})]})})]}),t("div",{class:"stack",children:r?t(mo,{path:r,selected:d,onSelect:h=>{u(h),n(h)}}):t("div",{class:"card muted small",children:"Pick a file to read its story: who changed it, what broke afterwards, and which fixes restored behaviour worth a test."})})]})}function mo({path:e,selected:n,onSelect:s}){let i=j(()=>O("/api/history/file",{path:e}),[e]);if(i.error)return t(J,{error:i.error});if(!i.data)return t(B,{});let r=i.data,a=r.file;return t(N,{children:[t("div",{class:"card",children:[t("h3",{class:"break",children:e}),a?t(N,{children:[t("div",{class:"row small",style:{flexWrap:"wrap"},children:[t(D,{children:[a.commits," commits"]}),t(D,{children:[a.fixes," fixes"]}),t(D,{children:["+",ee(a.added),"/-",ee(a.deleted)]}),t(D,{children:[ge(a.firstAt)," \u2192 ",ge(a.lastAt)]}),a.renamedFrom?t(D,{children:["from ",a.renamedFrom]}):null]}),t("div",{class:"row small",style:{marginTop:6,alignItems:"center"},children:[t(tt,{value:a.risk}),t("span",{class:"muted",children:["history risk ",a.risk.toFixed(2),a.reasons.length?`: ${a.reasons.join("; ")}`:""]})]}),t("div",{class:"row small",style:{marginTop:6,flexWrap:"wrap"},children:[t("span",{class:"muted",children:"authors:"}),a.authors.map(([o,l])=>t(D,{children:[o," ",l]})),t("span",{class:"spacer"}),t(Yn,{values:a.months,width:120,height:22})]}),t("div",{class:"row",style:{marginTop:8},children:[t("button",{type:"button",class:"sm",onClick:()=>z("explore",{file:e}),children:"Open source"}),t("button",{type:"button",class:"sm",onClick:()=>z("galaxy",{node:`file:${e}`}),children:"Galaxy"})]})]}):t("div",{class:"muted small",children:"No commits in the loaded window touch this file."})]}),r.origins.length?t("div",{class:"card",children:[t("h3",{children:"changes that later needed fixing"}),t("div",{class:"chain",children:r.origins.map(o=>t("div",{class:"step origin",children:[t("a",{onClick:()=>s(o.sha),children:[t("span",{class:"mono muted small",children:o.short})," ",t(nn,{kind:o.kind,bucket:o.bucket})," ",o.subject]}),t("span",{class:"muted small",children:[" \xB7 ",ge(o.at)]}),t("div",{class:"chain",style:{marginTop:2},children:o.fixes.map(l=>t("div",{class:"step fix",children:[t("a",{onClick:()=>s(l.sha),children:[t("span",{class:"mono muted small",children:l.short})," ",l.subject]}),t("span",{class:"muted small",children:[" \xB7 ",l.daysLater,"d later"]})]}))})]}))})]}):null,t("div",{class:"card",children:[t("h3",{children:["timeline \xB7 ",r.commits.length]}),t(nt,{commits:r.commits,selected:n,onSelect:s})]})]})}function go({ov:e,onSelectCommit:n}){let s=j(()=>O("/api/history/risk"),[e.head,e.stats.workingTree]),[i,r]=C(""),a=j(()=>i.trim()?O("/api/history/risk",{paths:i.trim()}):Promise.resolve(null),[i]),o=i.trim()?a.data:s.data,l=j(()=>O("/api/history/commits",{risky:1,limit:40}).then(c=>c.commits.filter(d=>d.blamedBy||d.reverted)),[e.head]);return t("div",{class:"grid wide",style:{alignItems:"start"},children:[t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6},children:[t("h3",{style:{margin:0},children:i.trim()?"history risk for these paths":"working tree exposure"}),t("input",{type:"text",placeholder:"or paths, comma separated",value:i,onInput:c=>r(c.target.value),style:{width:300}})]}),t("div",{class:"muted small",style:{marginBottom:8},children:"What the past says about the files you are changing now: fix density, changes here that were later fixed, and the last fix to re-read before editing."}),o?o.files.length?t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"file"}),t("th",{children:"risk"}),t("th",{children:"history"})]})}),t("tbody",{children:[...o.files].sort((c,d)=>(d.file?.risk??-1)-(c.file?.risk??-1)).map(c=>t("tr",{children:[t("td",{class:"break",children:t("a",{onClick:()=>z("history",{tab:"files",file:c.path}),children:c.path})}),t("td",{class:"nowrap",children:c.file?t(N,{children:[t(tt,{value:c.file.risk})," ",c.file.risk.toFixed(2)]}):t("span",{class:"muted small",children:"new"})}),t("td",{class:"small",children:c.file?t(N,{children:[t("div",{class:"muted",children:[c.file.commits," commits \xB7 ",c.file.fixes," fixes \xB7 last"," ",oe(c.file.lastAt),c.file.reasons.length?` \xB7 ${c.file.reasons.join("; ")}`:""]}),c.lastFix?t("div",{children:["last fix: ",c.lastFix]}):null,c.origins.length?t("div",{children:["needed fixing before:"," ",c.origins.map(d=>t("a",{onClick:()=>n(d.sha),style:{marginRight:6},children:[d.short," ",d.subject.slice(0,40)]}))]}):null]}):t("span",{class:"muted",children:"no history yet"})})]}))})]}):t(W,{children:"Working tree is clean."}):s.error?t(J,{error:s.error}):t(B,{})]}),t("div",{class:"card",children:[t("h3",{children:"bug-prone files"}),e.risky.length?t("table",{children:t("tbody",{children:e.risky.map(c=>t("tr",{class:"click",onClick:()=>z("history",{tab:"files",file:c.path}),children:[t("td",{class:"break",children:c.path}),t("td",{class:"nowrap",children:[t(tt,{value:c.risk})," ",c.risk.toFixed(2)]}),t("td",{class:"muted small",children:c.reasons.join("; ")||`${c.commits} commits`})]}))})}):t("div",{class:"muted small",children:"No file shows a fix pattern yet."})]})]}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("h3",{children:"lessons from this history"}),e.lessons.length?e.lessons.map(c=>t(fo,{text:c})):t("div",{class:"muted small",children:"Not enough history yet."}),e.stats.tracePending?t("div",{class:"muted small",style:{marginTop:6},children:[e.stats.tracePending," fixes still to trace; reload to continue."]}):null]}),t("div",{class:"card",children:[t("h3",{children:"changes that later needed fixing"}),t("div",{class:"muted small",style:{marginBottom:6},children:"A fix removed lines these commits wrote. The pattern, not the blame, is the lesson: what kind of change tends to break here?"}),l.data?t(nt,{commits:l.data,selected:null,onSelect:n,empty:"No traced fix origins yet."}):t(B,{})]})]})]})}function fo({text:e}){return t("div",{class:"lesson",children:[t("span",{class:"i",children:"\u25C6"}),t("span",{children:e})]})}function pi({params:e}){let[n,s]=C(e.tab||(e.file?"files":e.branch?"branches":"timeline")),[i,r]=C(e.sha??null);U(()=>{e.tab?s(e.tab):e.file?s("files"):e.branch&&s("branches")},[e.tab,e.file,e.branch]),U(()=>{e.sha&&r(e.sha)},[e.sha]);let a=j(()=>O("/api/history"),[]),o=u=>{r(u),s("timeline")};if(a.error)return t("div",{class:"page",children:t(J,{error:a.error})});if(!a.data)return t("div",{class:"page",children:t(B,{})});let l=a.data;if(!l.git)return t("div",{class:"page",children:t(W,{children:[l.error??"Not a git repository."," The history explorer reads `git log`; initialise a repository and commit to use it."]})});let c=l.stats,d=c.prior30?Math.round((c.last30-c.prior30)/c.prior30*100):null;return t("div",{class:"page",children:[t("div",{class:"hist-stats",children:[t(Ne,{v:c.commits,k:"commits",sub:`${c.onHead} on HEAD`}),t(Ne,{v:c.last30,k:"last 30 days",sub:d===null?`${c.prior30} in the 30 before`:`${d>=0?"+":""}${d}% vs prior 30`}),t(Ne,{v:c.fixes,k:"fixes",sub:`${Math.round(c.fixes/Math.max(1,c.commits-c.merges)*100)}%`}),t(Ne,{v:c.linksTraced,k:"traced fix origins",sub:c.tracePending?`${c.tracePending} pending`:`${c.fixesTraced} fixes`}),t(Ne,{v:c.branches,k:"branches",sub:c.unmerged?`${c.unmerged} unmerged`:"all merged"}),t(Ne,{v:c.authors,k:"authors",sub:`${c.files} files`}),t(Ne,{v:c.tags,k:"tags",sub:l.tags[0]?.name??""}),t(Ne,{v:c.workingTree,k:"working tree",sub:l.branch??"detached"})]}),t("div",{class:"row",style:{marginBottom:8},children:[t(Ce,{tabs:[["timeline","Timeline"],["branches","Branches"],["files","Files"],["risk","Risk & lessons"]],value:n,onChange:u=>{s(u),z("history",{tab:u,sha:i??void 0})}}),t("span",{class:"spacer"}),t("span",{class:"muted small",children:[l.branch??"detached"," @ ",l.head.slice(0,7)," \xB7 built ",oe(l.builtAt)," ",t("a",{onClick:()=>O("/api/history",{refresh:1}).then(()=>a.reload()),children:"rebuild"})]})]}),n==="timeline"&&t(co,{ov:l,params:e,selected:i,onSelect:r}),n==="branches"&&t(uo,{ov:l,params:e,onSelectCommit:o}),n==="files"&&t(ho,{params:e,onSelectCommit:o}),n==="risk"&&t(go,{ov:l,onSelectCommit:o})]})}var bo=/^([a-z][a-z0-9+.-]*):(.*)$/i;function ft(e){let n=e.trim();if(!n)return{kind:"text"};if(n.startsWith("#"))return{kind:"anchor",href:n};let s=bo.exec(n);if(!s){let a=n.replace(/^\.\//,"").split("#")[0]??"";return a?{kind:"file",file:a}:{kind:"text"}}let i=s[1].toLowerCase(),r=s[2];switch(i){case"mem":case"memory":return r?{kind:"memory",name:r}:{kind:"text"};case"file":case"sym":{let a=r.replace(/^\/+/,"").split("#")[0]??"";return a?{kind:"file",file:a}:{kind:"text"}}case"http":case"https":case"mailto":return{kind:"external",href:n};default:return{kind:"text"}}}function sn(e){if(e.kind==="memory")return`#/memory?name=${encodeURIComponent(e.name)}`;if(e.kind==="file")return`#/explore?file=${encodeURIComponent(e.file)}`}function ss(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var qe=ss();function _i(e){qe=e}var Ue={exec:()=>null};function st(e){let n=[];return s=>{let i=Math.max(0,Math.min(3,s-1)),r=n[i];return r||(r=e(i),n[i]=r),r}}function G(e,n=""){let s=typeof e=="string"?e:e.source,i={replace:(r,a)=>{let o=typeof a=="string"?a:a.source;return o=o.replace(pe.caret,"$1"),s=s.replace(r,o),i},getRegex:()=>new RegExp(s,n)};return i}var yo=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),pe={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/,numericCharacterReferenceOrAmpersand:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:st(e=>new RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:st(e=>new RegExp(`^ {0,${e}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:st(e=>new RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:st(e=>new RegExp(`^ {0,${e}}#`)),htmlBeginRegex:st(e=>new RegExp(`^ {0,${e}}(?:</?(?:${kt})(?: +|$|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)`,"i")),blockquoteBeginRegex:st(e=>new RegExp(`^ {0,${e}}>`))},vo=/^(?:[ \t]*(?:\n|$))+/,ko=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,xo=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,vt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,wo=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,rs=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Si=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ti=G(Si).replace(/bull/g,rs).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),_o=G(Si).replace(/bull/g,rs).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),is=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,So=/^[^\n]+/,as=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,To=G(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",as).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Eo=G(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,rs).getRegex(),kt="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",os=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Co=G("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!(?:script|pre|style|textarea)(?![a-z0-9-]))([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",os).replace("tag",kt).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ei=e=>G(is).replace("hr",vt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",e).replace("html"," {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag",kt).getRegex(),$o=Ei(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),Ao=Ei(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Ro=G(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ao).getRegex(),ls={blockquote:Ro,code:ko,def:To,fences:xo,heading:wo,hr:vt,html:Co,lheading:Ti,list:Eo,newline:vo,paragraph:$o,table:Ue,text:So},hi=G("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",vt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html"," {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag",kt).getRegex(),Fo={...ls,lheading:_o,table:hi,paragraph:G(is).replace("hr",vt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",hi).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html"," {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag",kt).getRegex()},Lo={...ls,html:G(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",os).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ue,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:G(is).replace("hr",vt).replace("heading",` *#{1,6} *[^
16
- ]`).replace("lheading",Ti).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Mo=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Io=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Ci=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,Do=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,$e=/[\p{P}\p{S}]/u,rt=/[\s\p{P}\p{S}]/u,xt=/[^\s\p{P}\p{S}]/u,No=G(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,rt).getRegex(),Po=/[\p{Pi}\p{Ps}"']/u,$i=/(?!~)[\p{P}\p{S}]/u,Oo=/(?!~)[\s\p{P}\p{S}]/u,Bo=/(?:[^\s\p{P}\p{S}]|~)/u,Ho=G(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",yo?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Ai=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,zo=G(Ai,"u").replace(/punct/g,$e).getRegex(),jo=G(Ai,"u").replace(/punct/g,$i).getRegex(),Uo=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,Xo=G(Uo,"u").replace(/openQuote/g,Po).replace(/punct/g,$e).getRegex(),Ri="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Go=G(Ri,"gu").replace(/notPunctSpace/g,xt).replace(/punctSpace/g,rt).replace(/punct/g,$e).getRegex(),qo=G(Ri,"gu").replace(/notPunctSpace/g,Bo).replace(/punctSpace/g,Oo).replace(/punct/g,$i).getRegex(),Wo="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",Jo=G(Wo,"gu").replace(/notPunctSpace/g,xt).replace(/punctSpace/g,rt).replace(/punct/g,$e).getRegex(),Vo=G("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,xt).replace(/punctSpace/g,rt).replace(/punct/g,$e).getRegex(),Ko="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",Zo=G(Ko,"gu").replace(/notPunctSpace/g,xt).replace(/punctSpace/g,rt).replace(/punct/g,$e).getRegex(),Yo=G(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,$e).getRegex(),Qo="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",el=G(Qo,"gu").replace(/notPunctSpace/g,xt).replace(/punctSpace/g,rt).replace(/punct/g,$e).getRegex(),tl=G(/\\(punct)/,"gu").replace(/punct/g,$e).getRegex(),nl=G(/(`+)(?:[^`]|[^`][\s\S]*?[^`])\1(?!`)|`+|\\(punct)/,"gu").replace(/punct/g,$e).getRegex(),sl=G(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),rl=G(os).replace("(?:-->|$)","-->").getRegex(),il=G("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",rl).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Fi=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,on=G(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",Fi).getRegex(),al=G(/^!?\[(label)\]\([ \t\n]*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?[ \t\n]*\)/).replace("label",on).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ol=G(/^!?\[(label)\]\[(ref)\]/).replace("label",on).replace("ref",as).getRegex(),ll=G(/^!?\[(ref)\](?:\[\])?/).replace("ref",as).getRegex(),mi=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,cl=G(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",Fi).getRegex(),dl=G("reflink|nolink(?!\\()","g").replace("reflink",G(/^!?\[(label)\]\[(ref)\]/).replace("label",cl).replace("ref",mi).getRegex()).replace("nolink",G(/^!?\[(ref)\](?:\[\])?/).replace("ref",mi).getRegex()).getRegex(),gi=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,ul=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,pl=G(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,ul).getRegex(),cs={_backpedal:Ue,anyPunctuation:tl,anyPunctuationOutsideCode:nl,autolink:sl,blockSkip:Ho,br:Ci,code:Io,del:Ue,delLDelim:Ue,delRDelim:Ue,emStrongLDelim:zo,emStrongRDelimAst:Go,emStrongRDelimUnd:Vo,escape:Mo,link:al,nolink:ll,punctuation:No,reflink:ol,reflinkSearch:dl,tag:il,text:Do,url:Ue},hl={...cs,emStrongLDelim:Xo,emStrongRDelimAst:Jo,emStrongRDelimUnd:Zo,link:G(/^!?\[(label)\]\((.*?)\)/).replace("label",on).getRegex(),reflink:G(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",on).getRegex()},ts={...cs,emStrongRDelimAst:qo,emStrongLDelim:jo,delLDelim:Yo,delRDelim:el,url:G(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",pl).replace("protocol",gi).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:G(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",gi).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},ml={...ts,br:G(Ci).replace("{2,}","*").getRegex(),text:G(ts.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},rn={normal:ls,gfm:Fo,pedantic:Lo},bt={normal:cs,gfm:ts,breaks:ml,pedantic:hl},gl={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},fi=e=>gl[e];function ve(e,n){if(n){if(pe.escapeTest.test(e))return e.replace(pe.escapeReplace,fi)}else if(pe.escapeTestNoEncode.test(e))return e.replace(pe.escapeReplaceNoEncode,fi);return e}function fl(e){return pe.numericCharacterReference.test(e)?e.replace(pe.numericCharacterReferenceOrAmpersand,(n,s,i)=>{if(s===void 0&&i===void 0)return"&amp;";let r=s===void 0?Number.parseInt(i,16):Number.parseInt(s,10);return r===0||r>1114111||r>=55296&&r<=57343?"\uFFFD":r===38?"&amp;":String.fromCodePoint(r)}):e}function bi(e){try{e=encodeURI(e).replace(pe.percentDecode,"%")}catch{return null}return e}function yi(e,n){let s=e.replace(pe.findPipe,(a,o,l)=>{let c=!1,d=o;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),i=s.split(pe.splitPipe),r=0;if(i[0].trim()||i.shift(),i.length>0&&!i.at(-1)?.trim()&&i.pop(),n)if(i.length>n)i.splice(n);else for(;i.length<n;)i.push("");for(;r<i.length;r++)i[r]=i[r].trim().replace(pe.slashPipe,"|");return i}function Pe(e,n,s){let i=e.length;if(i===0)return"";let r=0;for(;r<i;){let a=e.charAt(i-r-1);if(a===n&&!s)r++;else if(a!==n&&s)r++;else break}return e.slice(0,i-r)}function vi(e){let n=e.split(`
17
- `),s=n.length-1;for(;s>=0&&pe.blankLine.test(n[s]);)s--;return n.length-s<=2?e:n.slice(0,s+1).join(`
18
- `)}function ln(e){return e.trim().toLowerCase().toUpperCase().toLowerCase()}function ki(e,n){if(e.indexOf(n[0])===-1&&e.indexOf(n[1])===-1)return-1;let s=0;for(let i=0;i<e.length;i++)if(e[i]==="\\")i++;else if(e[i]===n[0])s++;else if(e[i]===n[1]&&(s--,s<0))return i;return s>0?-2:-1}function es(e,n=0){let s=n,i="";for(let r of e)if(r===" "){let a=4-s%4;i+=" ".repeat(a),s+=a}else i+=r,s++;return i}function xi(e,n,s,i,r){let a=n.href,o=n.title||null,l=e[1].replace(r.other.outputLinkReplace,"$1"),c=e[0].charAt(0)==="!",d=i.state.inLink,u=i.state.linkEmitted,h=i.state.inRawBlock;i.state.inLink=!0,i.state.linkEmitted=!1;let g=i.inlineTokens(l),f=i.state.linkEmitted;if(i.state.linkEmitted=u,i.state.inLink=d,!c){if(f){i.state.inRawBlock=h;return}i.state.linkEmitted=!0}return{type:c?"image":"link",raw:s,href:a,title:o,text:l,tokens:g}}function bl(e,n,s){let i=e.match(s.other.indentCodeCompensation);if(i===null)return n;let r=i[1];return n.split(`
14
+ ${o.riskReasons.join("; ")}`:""}`,children:[t("span",{class:"when",children:ge(o.at)}),t("span",{class:"subj",children:[t("span",{class:"sha",children:o.short}),t(dn,{kind:o.kind,bucket:o.bucket}),o.subject,t(yi,{refs:o.refs,tags:o.tags})]}),t("span",{class:"meta",children:[t(wo,{c:o}),o.merge?t("span",{children:"merge"}):t(bi,{added:o.added,deleted:o.deleted}),t("span",{children:o.author.split(" ")[0]})]})]}))})]}):t(W,{children:r??"No commits match."})}function rs({l:e,onSelect:n}){return t("div",{class:"step",onClick:()=>n(e.sha),style:{cursor:"pointer"},children:[t("span",{class:"sha mono muted",children:e.short})," ",e.kind&&e.bucket?t(dn,{kind:e.kind,bucket:e.bucket}):null,t("a",{children:e.subject}),e.at?t("span",{class:"muted small",children:[" \xB7 ",ge(e.at)]}):null,e.paths.length?t("div",{class:"muted small",children:e.paths.join(", ")}):null]})}function _o({sha:e,path:n}){let s=X(()=>H("/api/history/diff",{sha:e,path:n}),[e,n]);if(s.error)return t(K,{error:s.error});if(!s.data)return t(z,{});let i=s.data.text.split(`
15
+ `);return t(P,{children:[t("div",{class:"diff",children:i.map(r=>t("div",{class:r.startsWith("+++")||r.startsWith("---")?"muted":r.startsWith("diff --git")?"file":r.startsWith("@@")?"hunk":r.startsWith("+")?"add":r.startsWith("-")?"del":"",children:r.startsWith("diff --git")?r.replace(/^diff --git a\/(.*) b\/.*$/,"$1"):r||" "}))}),s.data.truncated?t("div",{class:"muted small",children:"diff truncated"}):null]})}function So({sha:e,onSelect:n}){let s=X(()=>H("/api/history/commit",{sha:e}),[e]),[i,r]=S(!1);if(U(()=>r(!1),[e]),s.error)return t(K,{error:s.error});if(!s.data)return t(z,{});if(s.data.error)return t(K,{error:s.data.error});let a=s.data,o=a.commit,l=Math.max(1,...a.files.map(d=>d.added+d.deleted));return t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row tight",style:{flexWrap:"wrap"},children:[t(dn,{kind:o.kind,bucket:o.bucket}),o.scope?t(M,{children:o.scope}):null,o.breaking?t(M,{class:"risk-high",children:"breaking"}):null,o.pr?t(M,{children:["PR #",o.pr]}):null,o.issues.map(d=>t(M,{children:d})),t(yi,{refs:o.refs,tags:o.tags,max:6}),t("span",{class:"spacer"}),t("span",{class:"mono small muted",title:o.sha,children:o.sha.slice(0,12)})]}),t("h3",{style:{marginTop:6},children:o.subject}),t("div",{class:"muted small",children:[o.author," <",o.email,"> \xB7 ",new Date(o.at).toLocaleString()," (",ie(o.at),")",o.merge?" \xB7 merge":` \xB7 +${o.added}/-${o.deleted} in ${o.files} file${o.files===1?"":"s"} (${o.size})`,o.onHead?"":" \xB7 not reachable from HEAD"]}),o.body?t("div",{class:"msg",style:{marginTop:8},children:o.body}):null,o.riskReasons.length?t("div",{class:"row small",style:{marginTop:8,alignItems:"baseline"},children:[t(M,{class:o.risk>=.5?"risk-high":o.risk>=.3?"risk-medium":"risk-low",children:["hindsight ",o.risk.toFixed(2)]}),t("span",{class:"muted",children:o.riskReasons.join("; ")})]}):null,t("div",{class:"row",style:{marginTop:8},children:[t("button",{type:"button",class:"sm",onClick:()=>r(i===!1?null:!1),children:i===!1?"Show diff":"Hide diff"}),t("button",{type:"button",class:"sm",onClick:()=>O("history",{tab:"graph",focus:`commit:${o.sha}`}),children:"Graph"}),a.branches.length?t("span",{class:"muted small",children:["on ",a.branches.slice(0,5).join(", "),a.branches.length>5?` +${a.branches.length-5}`:""]}):null]})]}),a.blamedBy.length||a.origins.length||a.revertedBy?t("div",{class:"card",children:[t("h3",{children:"what history says"}),a.origins.length?t(P,{children:[t("div",{class:"muted small",style:{marginBottom:4},children:o.kind==="revert"?"reverts":"removed lines last written by (likely cause of the bug)"}),t("div",{class:"chain",children:a.origins.map(d=>t("div",{class:D("step","origin"),children:t(rs,{l:d,onSelect:n})}))})]}):null,a.blamedBy.length?t(P,{children:[t("div",{class:"muted small",style:{margin:"6px 0 4px"},children:"later fixes that removed lines from this commit"}),t("div",{class:"chain",children:a.blamedBy.map(d=>t("div",{class:D("step","fix"),children:[t(rs,{l:d,onSelect:n}),d.at?t("span",{class:"muted small",children:[Math.max(0,Math.round((d.at-o.at)/864e5)),"d later"]}):null]}))})]}):null,a.revertedBy?t(P,{children:[t("div",{class:"muted small",style:{margin:"6px 0 4px"},children:"reverted by"}),t("div",{class:"chain",children:t("div",{class:"step fix",children:t(rs,{l:a.revertedBy,onSelect:n})})})]}):null]}):null,i!==!1?t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6},children:[t("h3",{style:{margin:0},children:["diff",i?` \xB7 ${i}`:""]}),i?t("button",{type:"button",class:"sm ghost",onClick:()=>r(null),children:"whole commit"}):null]}),t(_o,{sha:o.sha,path:i??void 0})]}):null,a.files.length?t("div",{class:"card",children:[t("h3",{children:["files \xB7 ",a.files.length,t("span",{class:"muted small",style:{fontWeight:400,marginLeft:8},children:"symbols are listed when the file has not changed since this commit"})]}),t("div",{class:"cfiles",children:a.files.map(d=>t("div",{class:"cfile",children:[t("div",{class:"row tight",children:[t("a",{class:"ellipsis grow",title:d.path,onClick:()=>O("explore",{file:d.path}),children:d.path}),t(Le,{value:d.added+d.deleted,max:l,width:44}),t(bi,{added:d.added,deleted:d.deleted})]}),t("div",{class:"row tight small",style:{flexWrap:"wrap"},children:[t("a",{class:"muted",onClick:()=>r(d.path),children:"diff"}),t("a",{class:"muted",onClick:()=>O("history",{tab:"files",file:d.path}),children:"history"}),d.renamedFrom?t("span",{class:"muted",children:["\u2190 ",d.renamedFrom]}):null,d.fileFixes?t("span",{class:"muted",title:`history risk ${d.fileRisk.toFixed(2)}`,children:[t(lt,{value:d.fileRisk})," ",d.fileFixes," past fix",d.fileFixes===1?"":"es"]}):null,d.symbols.map(c=>t("a",{onClick:()=>O("explore",{file:d.path,symbol:c.id,line:c.line?String(c.line):void 0}),children:[t("span",{class:"muted",children:c.kind})," ",c.name]}))]})]}))})]}):null]})}function To({ov:e,params:n,selected:s,onSelect:i}){let[r,a]=S(new Set),[o,l]=S(null),[d,c]=S(n.q??""),[u,p]=S(""),[g,f]=S(n.path??""),[x,h]=S(!1),[m,v]=S(!1),[y,b]=S(150),k=e.buckets.filter(R=>!r.has(R)),T=X(()=>H("/api/history/commits",{buckets:r.size?k.join(","):void 0,q:d.trim()||void 0,author:u||void 0,path:g.trim()||void 0,since:o?new Date(o[0]).toISOString():void 0,until:o?new Date(o[1]).toISOString():void 0,risky:x?1:void 0,head:m?1:void 0,limit:y}),[r,d,u,g,o,x,m,y]),E=X(()=>H("/api/history/graph",{limit:400}),[e.head]),w=V(()=>{if(!E.data||!T.data)return;let R=new Set(T.data.commits.map($=>$.sha)),F=E.data.commits.slice(0,T.data.commits.length);if(!(F.length!==R.size||!F.every($=>R.has($.sha))))return es(F)},[E.data,T.data]),C=V(()=>{let R={};for(let F of e.weeks)for(let $ of e.buckets)R[$]=(R[$]??0)+F.byBucket[$];return R},[e]);return t("div",{class:"grid wide",style:{alignItems:"start",gridTemplateColumns:"minmax(0, 1.4fr) minmax(320px, 1fr)"},children:[t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6,flexWrap:"wrap"},children:[t(di,{counts:C,hidden:r,onToggle:R=>a(F=>{let $=new Set(F);return $.has(R)?$.delete(R):$.add(R),$})}),t("span",{class:"spacer"}),t("span",{class:"muted small",children:o?t(P,{children:[ge(o[0])," \u2192 ",ge(o[1])," ",t("a",{onClick:()=>l(null),children:"clear"})]}):"drag across the chart to focus a period"})]}),t(ci,{weeks:e.weeks,range:o,onRange:l,hidden:r})]}),t("div",{class:"card",children:[t("div",{class:"row",style:{flexWrap:"wrap",marginBottom:8},children:[t("input",{type:"search",placeholder:"search message, sha, issue\u2026",value:d,onInput:R=>c(R.target.value),style:{width:240}}),t("select",{value:u,onChange:R=>p(R.target.value),children:[t("option",{value:"",children:"everyone"}),e.authors.map(R=>t("option",{value:R.name,children:[R.name," (",R.commits,")"]}))]}),t("input",{type:"text",placeholder:"path prefix",value:g,onInput:R=>f(R.target.value),style:{width:180}}),t("button",{type:"button",class:D("chip",x&&"on"),onClick:()=>h(!x),title:"only commits later fixed, reverted, large or touching hotspots",children:"\u26A0 hindsight flags"}),t("button",{type:"button",class:D("chip",m&&"on"),onClick:()=>v(!m),children:"HEAD only"}),t("span",{class:"spacer"}),t("span",{class:"muted small",children:T.data?`${T.data.total} commits`:""})]}),T.error?t(K,{error:T.error}):T.data?t(P,{children:[t(ct,{commits:T.data.commits,selected:s,onSelect:i,lanes:w}),T.data.total>T.data.commits.length?t("div",{class:"row",style:{marginTop:8},children:t("button",{type:"button",class:"sm",onClick:()=>b(R=>R+200),children:["show more (",T.data.total-T.data.commits.length," left)"]})}):null]}):t(z,{})]})]}),t("div",{class:"stack",children:s?t(So,{sha:s,onSelect:i}):t(P,{children:[t("div",{class:"card",children:[t("h3",{children:"worth knowing"}),e.notable.length?t(ct,{commits:e.notable,selected:null,onSelect:i}):t("div",{class:"muted small",children:"No commit stands out in hindsight."})]}),t("div",{class:"card",children:[t("h3",{children:"people"}),t("table",{children:t("tbody",{children:e.authors.slice(0,8).map(R=>t("tr",{class:"click",onClick:()=>p(R.name),children:[t("td",{children:R.name}),t("td",{class:"num",children:[t(Le,{value:R.commits,max:e.authors[0]?.commits??1,width:70})," ",R.commits]}),t("td",{class:"muted small",children:[R.fixes," fixes \xB7 ",R.files," files"]}),t("td",{class:"muted small",children:ie(R.lastAt)})]}))})})]}),e.tags.length?t("div",{class:"card",children:[t("h3",{children:"releases"}),t("div",{class:"row tight",style:{flexWrap:"wrap"},children:e.tags.slice(0,20).map(R=>t("a",{onClick:()=>i(R.sha),title:ge(R.at),children:t("span",{class:"ref tag",children:R.name})}))})]}):null]})})]})}function Eo({ov:e,params:n,onSelectCommit:s}){let[i,r]=S(n.branch??null),[a,o]=S(!1),[l,d]=S(!0),c=X(()=>H("/api/history/graph",{limit:120}),[e.head]),u=X(()=>i?H("/api/history/branch",{name:i}):Promise.resolve(null),[i]),p=V(()=>c.data?es(c.data.commits):void 0,[c.data]),g=e.branches.filter(m=>(a||!m.remote)&&(l||!m.merged||m.isDefault)),f=Math.max(1,...g.map(m=>Math.max(m.ahead,m.behind))),[x,h]=S(null);return t("div",{class:"grid wide",style:{alignItems:"start",gridTemplateColumns:"minmax(0, 1fr) minmax(360px, 1fr)"},children:[t("div",{class:"card",children:[t("h3",{children:["commit graph"," ",t("span",{class:"muted small",children:["\xB7 latest ",c.data?.commits.length??""," across all branches"]})]}),c.error?t(K,{error:c.error}):c.data?t(ct,{commits:c.data.commits,selected:x,onSelect:m=>{h(m),s(m)},lanes:p}):t(z,{})]}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6},children:[t("h3",{style:{margin:0},children:["branches \xB7 ",g.length]}),t("span",{class:"spacer"}),t("button",{type:"button",class:D("chip",a&&"on"),onClick:()=>o(!a),children:"remotes"}),t("button",{type:"button",class:D("chip",l&&"on"),onClick:()=>d(!l),children:"merged"})]}),t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"branch"}),t("th",{children:["vs ",e.base??"base"]}),t("th",{children:"last"})]})}),t("tbody",{children:g.map(m=>t("tr",{class:D("click",i===m.name&&"sel"),onClick:()=>r(m.name),children:[t("td",{class:"break",children:[t("span",{class:D("ref",m.remote&&"remote"),children:m.name}),m.current?t(M,{children:"current"}):null,m.isDefault?t(M,{children:"base"}):null,!m.merged&&!m.isDefault?t(M,{class:"risk-medium",children:"unmerged"}):null,m.lastSubject?t("div",{class:"muted small ellipsis",style:{maxWidth:260},children:m.lastSubject}):null]}),t("td",{children:m.isDefault?t("span",{class:"muted small",children:"\u2014"}):t("span",{class:"ab",title:`${m.ahead} ahead, ${m.behind} behind`,children:[t("span",{class:"ok",children:["+",m.ahead]}),t(Le,{value:m.ahead,max:f,width:40}),t(Le,{value:m.behind,max:f,width:40}),t("span",{class:"bad",children:["-",m.behind]})]})}),t("td",{class:"muted small nowrap",children:[ie(m.at),m.lastAuthor?` \xB7 ${m.lastAuthor.split(" ")[0]}`:""]})]}))})]})]}),i?t("div",{class:"card",children:[t("h3",{children:i}),u.error?t(K,{error:u.error}):u.data?u.data.error?t(K,{error:u.data.error}):t(Co,{d:u.data,onSelect:m=>{h(m),s(m)}}):t(z,{})]}):t("div",{class:"card muted small",children:"Select a branch to see the commits only it has, the files they touch, and how bug-prone those files have been."})]})]})}function Co({d:e,onSelect:n}){let s=e.branch,i=e.files.filter(r=>r.risk>=.3);return t(P,{children:[t("div",{class:"row small",style:{flexWrap:"wrap"},children:[t(M,{children:["tip ",s.sha.slice(0,7)]}),t(M,{children:ie(s.at)}),s.upstream?t(M,{children:["tracks ",s.upstream]}):null,s.isDefault?null:t(M,{class:s.merged?"s-accepted":"risk-medium",children:s.merged?"merged":`+${s.ahead} / -${s.behind}`}),t("span",{class:"spacer"}),t("button",{type:"button",class:"sm",onClick:()=>O("history",{tab:"graph",focus:`branch:${s.remote?s.name.replace(/^[^/]+\//,""):s.name}`}),children:"Graph"})]}),s.isDefault?t("div",{class:"muted small",style:{marginTop:6},children:"This is the base branch; other branches are compared against it."}):t(P,{children:[t("div",{class:"muted small",style:{margin:"8px 0 4px"},children:[e.commits.length," commit",e.commits.length===1?"":"s"," only on this branch"]}),t(ct,{commits:e.commits,selected:null,onSelect:n,empty:"Nothing unique: the branch is fully merged or behind."}),e.files.length?t(P,{children:[t("div",{class:"muted small",style:{margin:"8px 0 4px"},children:["files touched ",i.length?`\xB7 ${i.length} with a fix-heavy history`:""]}),t("div",{class:"list",style:{maxHeight:220},children:e.files.map(r=>t("div",{class:"item",onClick:()=>O("history",{tab:"files",file:r.path}),children:t("div",{class:"p",children:[r.risk>=.3?t(lt,{value:r.risk}):null," ",r.path,t("span",{class:"muted",children:[" ","\xB7 ",r.commits," commit",r.commits===1?"":"s",r.fixes?`, ${r.fixes} past fixes`:""]})]})}))})]}):null]})]})}function $o({params:e,onSelectCommit:n}){let[s,i]=S(""),[r,a]=S(e.file??null);U(()=>{e.file&&a(e.file)},[e.file]);let o=X(()=>H("/api/history/files",{path:s.trim()||void 0,limit:400}),[s]),{sorted:l,th:d}=st(o.data?.files,"risk"),[c,u]=S(null);return t("div",{class:"grid wide",style:{alignItems:"start",gridTemplateColumns:"minmax(0, 1fr) minmax(360px, 1fr)"},children:[t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6},children:[t("h3",{style:{margin:0},children:"churn vs fix share"}),t("input",{type:"text",placeholder:"folder prefix, e.g. src/graph/",value:s,onInput:p=>i(p.target.value),style:{width:220}}),t("span",{class:"spacer"}),t("span",{class:"muted small",children:"size = lines changed \xB7 colour = history risk"})]}),o.data?t(ui,{files:o.data.files,selected:r,onSelect:a}):o.error?t(K,{error:o.error}):t(z,{})]}),t("div",{class:"card flush",children:t("table",{children:[t("thead",{children:t("tr",{children:[d("path","file"),d("commits","commits",!0),d("fixes","fixes",!0),d("bugOrigins","caused fixes",!0),d("commits90d","90d",!0),t("th",{children:"12 months"}),d("risk","risk",!0)]})}),t("tbody",{children:l.slice(0,150).map(p=>t("tr",{class:D("click",r===p.path&&"sel"),onClick:()=>a(p.path),children:[t("td",{class:"break",children:p.path}),t("td",{class:"num",children:p.commits}),t("td",{class:"num",children:p.fixes}),t("td",{class:"num",children:p.bugOrigins}),t("td",{class:"num",children:p.commits90d}),t("td",{children:t(ns,{values:p.months})}),t("td",{class:"num",children:[t(lt,{value:p.risk})," ",p.risk.toFixed(2)]})]}))})]})})]}),t("div",{class:"stack",children:r?t(Ao,{path:r,selected:c,onSelect:p=>{u(p),n(p)}}):t("div",{class:"card muted small",children:"Pick a file to read its story: who changed it, what broke afterwards, and which fixes restored behaviour worth a test."})})]})}function Ao({path:e,selected:n,onSelect:s}){let i=X(()=>H("/api/history/file",{path:e}),[e]);if(i.error)return t(K,{error:i.error});if(!i.data)return t(z,{});let r=i.data,a=r.file;return t(P,{children:[t("div",{class:"card",children:[t("h3",{class:"break",children:e}),a?t(P,{children:[t("div",{class:"row small",style:{flexWrap:"wrap"},children:[t(M,{children:[a.commits," commits"]}),t(M,{children:[a.fixes," fixes"]}),t(M,{children:["+",te(a.added),"/-",te(a.deleted)]}),t(M,{children:[ge(a.firstAt)," \u2192 ",ge(a.lastAt)]}),a.renamedFrom?t(M,{children:["from ",a.renamedFrom]}):null]}),t("div",{class:"row small",style:{marginTop:6,alignItems:"center"},children:[t(lt,{value:a.risk}),t("span",{class:"muted",children:["history risk ",a.risk.toFixed(2),a.reasons.length?`: ${a.reasons.join("; ")}`:""]})]}),t("div",{class:"row small",style:{marginTop:6,flexWrap:"wrap"},children:[t("span",{class:"muted",children:"authors:"}),a.authors.map(([o,l])=>t(M,{children:[o," ",l]})),t("span",{class:"spacer"}),t(ns,{values:a.months,width:120,height:22})]}),t("div",{class:"row",style:{marginTop:8},children:[t("button",{type:"button",class:"sm",onClick:()=>O("explore",{file:e}),children:"Open source"}),t("button",{type:"button",class:"sm",onClick:()=>O("galaxy",{node:`file:${e}`}),children:"Galaxy"}),t("button",{type:"button",class:"sm",onClick:()=>O("history",{tab:"graph",focus:`file:${e}`}),children:"History graph"})]})]}):t("div",{class:"muted small",children:"No commits in the loaded window touch this file."})]}),r.origins.length?t("div",{class:"card",children:[t("h3",{children:"changes that later needed fixing"}),t("div",{class:"chain",children:r.origins.map(o=>t("div",{class:"step origin",children:[t("a",{onClick:()=>s(o.sha),children:[t("span",{class:"mono muted small",children:o.short})," ",t(dn,{kind:o.kind,bucket:o.bucket})," ",o.subject]}),t("span",{class:"muted small",children:[" \xB7 ",ge(o.at)]}),t("div",{class:"chain",style:{marginTop:2},children:o.fixes.map(l=>t("div",{class:"step fix",children:[t("a",{onClick:()=>s(l.sha),children:[t("span",{class:"mono muted small",children:l.short})," ",l.subject]}),t("span",{class:"muted small",children:[" \xB7 ",l.daysLater,"d later"]})]}))})]}))})]}):null,t("div",{class:"card",children:[t("h3",{children:["timeline \xB7 ",r.commits.length]}),t(ct,{commits:r.commits,selected:n,onSelect:s})]})]})}function Ro({ov:e,onSelectCommit:n}){let s=X(()=>H("/api/history/risk"),[e.head,e.stats.workingTree]),[i,r]=S(""),a=X(()=>i.trim()?H("/api/history/risk",{paths:i.trim()}):Promise.resolve(null),[i]),o=i.trim()?a.data:s.data,l=X(()=>H("/api/history/commits",{risky:1,limit:40}).then(d=>d.commits.filter(c=>c.blamedBy||c.reverted)),[e.head]);return t("div",{class:"grid wide",style:{alignItems:"start"},children:[t("div",{class:"stack",children:[t("div",{class:"card",children:[t("div",{class:"row",style:{marginBottom:6},children:[t("h3",{style:{margin:0},children:i.trim()?"history risk for these paths":"working tree exposure"}),t("input",{type:"text",placeholder:"or paths, comma separated",value:i,onInput:d=>r(d.target.value),style:{width:300}})]}),t("div",{class:"muted small",style:{marginBottom:8},children:"What the past says about the files you are changing now: fix density, changes here that were later fixed, and the last fix to re-read before editing."}),o?o.files.length?t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"file"}),t("th",{children:"risk"}),t("th",{children:"history"})]})}),t("tbody",{children:[...o.files].sort((d,c)=>(c.file?.risk??-1)-(d.file?.risk??-1)).map(d=>t("tr",{children:[t("td",{class:"break",children:t("a",{onClick:()=>O("history",{tab:"files",file:d.path}),children:d.path})}),t("td",{class:"nowrap",children:d.file?t(P,{children:[t(lt,{value:d.file.risk})," ",d.file.risk.toFixed(2)]}):t("span",{class:"muted small",children:"new"})}),t("td",{class:"small",children:d.file?t(P,{children:[t("div",{class:"muted",children:[d.file.commits," commits \xB7 ",d.file.fixes," fixes \xB7 last"," ",ie(d.file.lastAt),d.file.reasons.length?` \xB7 ${d.file.reasons.join("; ")}`:""]}),d.lastFix?t("div",{children:["last fix: ",d.lastFix]}):null,d.origins.length?t("div",{children:["needed fixing before:"," ",d.origins.map(c=>t("a",{onClick:()=>n(c.sha),style:{marginRight:6},children:[c.short," ",c.subject.slice(0,40)]}))]}):null]}):t("span",{class:"muted",children:"no history yet"})})]}))})]}):t(W,{children:"Working tree is clean."}):s.error?t(K,{error:s.error}):t(z,{})]}),t("div",{class:"card",children:[t("h3",{children:"bug-prone files"}),e.risky.length?t("table",{children:t("tbody",{children:e.risky.map(d=>t("tr",{class:"click",onClick:()=>O("history",{tab:"files",file:d.path}),children:[t("td",{class:"break",children:d.path}),t("td",{class:"nowrap",children:[t(lt,{value:d.risk})," ",d.risk.toFixed(2)]}),t("td",{class:"muted small",children:d.reasons.join("; ")||`${d.commits} commits`})]}))})}):t("div",{class:"muted small",children:"No file shows a fix pattern yet."})]})]}),t("div",{class:"stack",children:[t("div",{class:"card",children:[t("h3",{children:"lessons from this history"}),e.lessons.length?e.lessons.map(d=>t(Fo,{text:d})):t("div",{class:"muted small",children:"Not enough history yet."}),e.stats.tracePending?t("div",{class:"muted small",style:{marginTop:6},children:[e.stats.tracePending," fixes still to trace; reload to continue."]}):null]}),t("div",{class:"card",children:[t("h3",{children:"changes that later needed fixing"}),t("div",{class:"muted small",style:{marginBottom:6},children:"A fix removed lines these commits wrote. The pattern, not the blame, is the lesson: what kind of change tends to break here?"}),l.data?t(ct,{commits:l.data,selected:null,onSelect:n,empty:"No traced fix origins yet."}):t(z,{})]})]})]})}function Fo({text:e}){return t("div",{class:"lesson",children:[t("span",{class:"i",children:"\u25C6"}),t("span",{children:e})]})}function vi({params:e}){let[n,s]=S(e.tab||(e.file?"files":e.branch?"branches":"timeline")),[i,r]=S(e.sha??null);U(()=>{e.tab?s(e.tab):e.file?s("files"):e.branch&&s("branches")},[e.tab,e.file,e.branch]),U(()=>{e.sha&&r(e.sha)},[e.sha]);let a=X(()=>H("/api/history"),[]),o=u=>{r(u),s("timeline")};if(a.error)return t("div",{class:"page",children:t(K,{error:a.error})});if(!a.data)return t("div",{class:"page",children:t(z,{})});let l=a.data;if(!l.git)return t("div",{class:"page",children:t(W,{children:[l.error??"Not a git repository."," The history explorer reads `git log`; initialise a repository and commit to use it."]})});let d=l.stats,c=d.prior30?Math.round((d.last30-d.prior30)/d.prior30*100):null;return t("div",{class:"page",children:[t("div",{class:"hist-stats",children:[t(Pe,{v:d.commits,k:"commits",sub:`${d.onHead} on HEAD`}),t(Pe,{v:d.last30,k:"last 30 days",sub:c===null?`${d.prior30} in the 30 before`:`${c>=0?"+":""}${c}% vs prior 30`}),t(Pe,{v:d.fixes,k:"fixes",sub:`${Math.round(d.fixes/Math.max(1,d.commits-d.merges)*100)}%`}),t(Pe,{v:d.linksTraced,k:"traced fix origins",sub:d.tracePending?`${d.tracePending} pending`:`${d.fixesTraced} fixes`}),t(Pe,{v:d.branches,k:"branches",sub:d.unmerged?`${d.unmerged} unmerged`:"all merged"}),t(Pe,{v:d.authors,k:"authors",sub:`${d.files} files`}),t(Pe,{v:d.tags,k:"tags",sub:l.tags[0]?.name??""}),t(Pe,{v:d.workingTree,k:"working tree",sub:l.branch??"detached"})]}),t("div",{class:"row",style:{marginBottom:8},children:[t($e,{tabs:[["timeline","Timeline"],["branches","Branches"],["files","Files"],["graph","Graph"],["risk","Risk & lessons"]],value:n,onChange:u=>{s(u),O("history",{tab:u,sha:i??void 0})}}),t("span",{class:"spacer"}),t("span",{class:"muted small",children:[l.branch??"detached"," @ ",l.head.slice(0,7)," \xB7 built ",ie(l.builtAt)," ",t("a",{onClick:()=>H("/api/history",{refresh:1}).then(()=>a.reload()),children:"rebuild"})]})]}),n==="timeline"&&t(To,{ov:l,params:e,selected:i,onSelect:r}),n==="branches"&&t(Eo,{ov:l,params:e,onSelectCommit:o}),n==="files"&&t($o,{params:e,onSelectCommit:o}),n==="graph"&&t(fi,{focus:e.focus}),n==="risk"&&t(Ro,{ov:l,onSelectCommit:o})]})}var Lo=/^([a-z][a-z0-9+.-]*):(.*)$/i;function wt(e){let n=e.trim();if(!n)return{kind:"text"};if(n.startsWith("#"))return{kind:"anchor",href:n};let s=Lo.exec(n);if(!s){let a=n.replace(/^\.\//,"").split("#")[0]??"";return a?{kind:"file",file:a}:{kind:"text"}}let i=s[1].toLowerCase(),r=s[2];switch(i){case"mem":case"memory":return r?{kind:"memory",name:r}:{kind:"text"};case"file":case"sym":{let a=r.replace(/^\/+/,"").split("#")[0]??"";return a?{kind:"file",file:a}:{kind:"text"}}case"http":case"https":case"mailto":return{kind:"external",href:n};default:return{kind:"text"}}}function un(e){if(e.kind==="memory")return`#/memory?name=${encodeURIComponent(e.name)}`;if(e.kind==="file")return`#/explore?file=${encodeURIComponent(e.file)}`}function ls(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Ke=ls();function Ri(e){Ke=e}var We={exec:()=>null};function dt(e){let n=[];return s=>{let i=Math.max(0,Math.min(3,s-1)),r=n[i];return r||(r=e(i),n[i]=r),r}}function J(e,n=""){let s=typeof e=="string"?e:e.source,i={replace:(r,a)=>{let o=typeof a=="string"?a:a.source;return o=o.replace(me.caret,"$1"),s=s.replace(r,o),i},getRegex:()=>new RegExp(s,n)};return i}var Mo=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),me={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/,numericCharacterReferenceOrAmpersand:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:dt(e=>new RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:dt(e=>new RegExp(`^ {0,${e}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:dt(e=>new RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:dt(e=>new RegExp(`^ {0,${e}}#`)),htmlBeginRegex:dt(e=>new RegExp(`^ {0,${e}}(?:</?(?:${Et})(?: +|$|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)`,"i")),blockquoteBeginRegex:dt(e=>new RegExp(`^ {0,${e}}>`))},Do=/^(?:[ \t]*(?:\n|$))+/,Io=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,No=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Tt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Po=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,cs=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Fi=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Li=J(Fi).replace(/bull/g,cs).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Oo=J(Fi).replace(/bull/g,cs).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),ds=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,Ho=/^[^\n]+/,us=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Bo=J(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",us).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),zo=J(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,cs).getRegex(),Et="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",ps=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,jo=J("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!(?:script|pre|style|textarea)(?![a-z0-9-]))([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",ps).replace("tag",Et).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Mi=e=>J(ds).replace("hr",Tt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",e).replace("html"," {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag",Et).getRegex(),Uo=Mi(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),Go=Mi(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Xo=J(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Go).getRegex(),ms={blockquote:Xo,code:Io,def:Bo,fences:No,heading:Po,hr:Tt,html:jo,lheading:Li,list:zo,newline:Do,paragraph:Uo,table:We,text:Ho},ki=J("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Tt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html"," {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag",Et).getRegex(),qo={...ms,lheading:Oo,table:ki,paragraph:J(ds).replace("hr",Tt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ki).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html"," {0,3}(?:</?(?:tag)(?: +|\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\s>]|$)|!--)|<\\?|<![A-Za-z]|<!\\[CDATA\\[)").replace("tag",Et).getRegex()},Wo={...ms,html:J(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",ps).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:We,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:J(ds).replace("hr",Tt).replace("heading",` *#{1,6} *[^
16
+ ]`).replace("lheading",Li).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Jo=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Vo=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Di=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,Ko=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Re=/[\p{P}\p{S}]/u,ut=/[\s\p{P}\p{S}]/u,Ct=/[^\s\p{P}\p{S}]/u,Zo=J(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,ut).getRegex(),Yo=/[\p{Pi}\p{Ps}"']/u,Ii=/(?!~)[\p{P}\p{S}]/u,Qo=/(?!~)[\s\p{P}\p{S}]/u,el=/(?:[^\s\p{P}\p{S}]|~)/u,tl=J(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Mo?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Ni=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,nl=J(Ni,"u").replace(/punct/g,Re).getRegex(),sl=J(Ni,"u").replace(/punct/g,Ii).getRegex(),rl=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,il=J(rl,"u").replace(/openQuote/g,Yo).replace(/punct/g,Re).getRegex(),Pi="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",al=J(Pi,"gu").replace(/notPunctSpace/g,Ct).replace(/punctSpace/g,ut).replace(/punct/g,Re).getRegex(),ol=J(Pi,"gu").replace(/notPunctSpace/g,el).replace(/punctSpace/g,Qo).replace(/punct/g,Ii).getRegex(),ll="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",cl=J(ll,"gu").replace(/notPunctSpace/g,Ct).replace(/punctSpace/g,ut).replace(/punct/g,Re).getRegex(),dl=J("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ct).replace(/punctSpace/g,ut).replace(/punct/g,Re).getRegex(),ul="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",pl=J(ul,"gu").replace(/notPunctSpace/g,Ct).replace(/punctSpace/g,ut).replace(/punct/g,Re).getRegex(),ml=J(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Re).getRegex(),hl="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",gl=J(hl,"gu").replace(/notPunctSpace/g,Ct).replace(/punctSpace/g,ut).replace(/punct/g,Re).getRegex(),fl=J(/\\(punct)/,"gu").replace(/punct/g,Re).getRegex(),bl=J(/(`+)(?:[^`]|[^`][\s\S]*?[^`])\1(?!`)|`+|\\(punct)/,"gu").replace(/punct/g,Re).getRegex(),yl=J(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),vl=J(ps).replace("(?:-->|$)","-->").getRegex(),kl=J("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",vl).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Oi=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,hn=J(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",Oi).getRegex(),xl=J(/^!?\[(label)\]\([ \t\n]*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?[ \t\n]*\)/).replace("label",hn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),wl=J(/^!?\[(label)\]\[(ref)\]/).replace("label",hn).replace("ref",us).getRegex(),_l=J(/^!?\[(ref)\](?:\[\])?/).replace("ref",us).getRegex(),xi=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,Sl=J(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",Oi).getRegex(),Tl=J("reflink|nolink(?!\\()","g").replace("reflink",J(/^!?\[(label)\]\[(ref)\]/).replace("label",Sl).replace("ref",xi).getRegex()).replace("nolink",J(/^!?\[(ref)\](?:\[\])?/).replace("ref",xi).getRegex()).getRegex(),wi=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,El=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,Cl=J(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,El).getRegex(),hs={_backpedal:We,anyPunctuation:fl,anyPunctuationOutsideCode:bl,autolink:yl,blockSkip:tl,br:Di,code:Vo,del:We,delLDelim:We,delRDelim:We,emStrongLDelim:nl,emStrongRDelimAst:al,emStrongRDelimUnd:dl,escape:Jo,link:xl,nolink:_l,punctuation:Zo,reflink:wl,reflinkSearch:Tl,tag:kl,text:Ko,url:We},$l={...hs,emStrongLDelim:il,emStrongRDelimAst:cl,emStrongRDelimUnd:pl,link:J(/^!?\[(label)\]\((.*?)\)/).replace("label",hn).getRegex(),reflink:J(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",hn).getRegex()},as={...hs,emStrongRDelimAst:ol,emStrongLDelim:sl,delLDelim:ml,delRDelim:gl,url:J(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",Cl).replace("protocol",wi).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:J(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",wi).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},Al={...as,br:J(Di).replace("{2,}","*").getRegex(),text:J(as.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},pn={normal:ms,gfm:qo,pedantic:Wo},_t={normal:hs,gfm:as,breaks:Al,pedantic:$l},Rl={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},_i=e=>Rl[e];function ve(e,n){if(n){if(me.escapeTest.test(e))return e.replace(me.escapeReplace,_i)}else if(me.escapeTestNoEncode.test(e))return e.replace(me.escapeReplaceNoEncode,_i);return e}function Fl(e){return me.numericCharacterReference.test(e)?e.replace(me.numericCharacterReferenceOrAmpersand,(n,s,i)=>{if(s===void 0&&i===void 0)return"&amp;";let r=s===void 0?Number.parseInt(i,16):Number.parseInt(s,10);return r===0||r>1114111||r>=55296&&r<=57343?"\uFFFD":r===38?"&amp;":String.fromCodePoint(r)}):e}function Si(e){try{e=encodeURI(e).replace(me.percentDecode,"%")}catch{return null}return e}function Ti(e,n){let s=e.replace(me.findPipe,(a,o,l)=>{let d=!1,c=o;for(;--c>=0&&l[c]==="\\";)d=!d;return d?"|":" |"}),i=s.split(me.splitPipe),r=0;if(i[0].trim()||i.shift(),i.length>0&&!i.at(-1)?.trim()&&i.pop(),n)if(i.length>n)i.splice(n);else for(;i.length<n;)i.push("");for(;r<i.length;r++)i[r]=i[r].trim().replace(me.slashPipe,"|");return i}function Oe(e,n,s){let i=e.length;if(i===0)return"";let r=0;for(;r<i;){let a=e.charAt(i-r-1);if(a===n&&!s)r++;else if(a!==n&&s)r++;else break}return e.slice(0,i-r)}function Ei(e){let n=e.split(`
17
+ `),s=n.length-1;for(;s>=0&&me.blankLine.test(n[s]);)s--;return n.length-s<=2?e:n.slice(0,s+1).join(`
18
+ `)}function gn(e){return e.trim().toLowerCase().toUpperCase().toLowerCase()}function Ci(e,n){if(e.indexOf(n[0])===-1&&e.indexOf(n[1])===-1)return-1;let s=0;for(let i=0;i<e.length;i++)if(e[i]==="\\")i++;else if(e[i]===n[0])s++;else if(e[i]===n[1]&&(s--,s<0))return i;return s>0?-2:-1}function is(e,n=0){let s=n,i="";for(let r of e)if(r===" "){let a=4-s%4;i+=" ".repeat(a),s+=a}else i+=r,s++;return i}function $i(e,n,s,i,r){let a=n.href,o=n.title||null,l=e[1].replace(r.other.outputLinkReplace,"$1"),d=e[0].charAt(0)==="!",c=i.state.inLink,u=i.state.linkEmitted,p=i.state.inRawBlock;i.state.inLink=!0,i.state.linkEmitted=!1;let g=i.inlineTokens(l),f=i.state.linkEmitted;if(i.state.linkEmitted=u,i.state.inLink=c,!d){if(f){i.state.inRawBlock=p;return}i.state.linkEmitted=!0}return{type:d?"image":"link",raw:s,href:a,title:o,text:l,tokens:g}}function Ll(e,n,s){let i=e.match(s.other.indentCodeCompensation);if(i===null)return n;let r=i[1];return n.split(`
19
19
  `).map(a=>{let o=a.match(s.other.beginningSpace);if(o===null)return a;let[l]=o;return a.slice(Math.min(l.length,r.length))}).join(`
20
- `)}function wi(e,n,s,i){if(!n.includes("<"))return!1;for(let r=0;r<n.length;r++){if(n[r]==="\\"){r++;continue}if(n[r]==="`"){let l=i.inline.code.exec(n.slice(r));if(l){r+=l[0].length-1;continue}}if(n[r]!=="<")continue;let a=e.slice(s+r),o=i.inline.tag.exec(a)||i.inline.autolink.exec(a);if(o){if(o[0].length>n.length-r)return!0;r+=o[0].length-1}}return!1}var cn=class{constructor(e){Y(this,"options");Y(this,"rules");Y(this,"lexer");this.options=e||qe}space(e){let n=this.rules.block.newline.exec(e);if(n&&n[0].length>0)return{type:"space",raw:n[0]}}code(e){let n=this.rules.block.code.exec(e);if(n){let s=this.options.pedantic?n[0]:vi(n[0]),i=s.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:s,codeBlockStyle:"indented",text:i}}}fences(e){let n=this.rules.block.fences.exec(e);if(n){let s=n[0],i=bl(s,n[3]||"",this.rules);return{type:"code",raw:s,lang:n[2]?n[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):n[2],text:i}}}heading(e){let n=this.rules.block.heading.exec(e);if(n){let s=n[2].trim();if(this.rules.other.endingHash.test(s)){let i=Pe(s,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceTabChar.test(i))&&(s=i.trim())}return{type:"heading",raw:Pe(n[0],`
21
- `),depth:n[1].length,text:s,tokens:this.lexer.inline(s)}}}hr(e){let n=this.rules.block.hr.exec(e);if(n)return{type:"hr",raw:Pe(n[0],`
22
- `)}}blockquote(e){let n=this.rules.block.blockquote.exec(e);if(n){let s=Pe(n[0],`
20
+ `)}function Ai(e,n,s,i){if(!n.includes("<"))return!1;for(let r=0;r<n.length;r++){if(n[r]==="\\"){r++;continue}if(n[r]==="`"){let l=i.inline.code.exec(n.slice(r));if(l){r+=l[0].length-1;continue}}if(n[r]!=="<")continue;let a=e.slice(s+r),o=i.inline.tag.exec(a)||i.inline.autolink.exec(a);if(o){if(o[0].length>n.length-r)return!0;r+=o[0].length-1}}return!1}var fn=class{constructor(e){Q(this,"options");Q(this,"rules");Q(this,"lexer");this.options=e||Ke}space(e){let n=this.rules.block.newline.exec(e);if(n&&n[0].length>0)return{type:"space",raw:n[0]}}code(e){let n=this.rules.block.code.exec(e);if(n){let s=this.options.pedantic?n[0]:Ei(n[0]),i=s.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:s,codeBlockStyle:"indented",text:i}}}fences(e){let n=this.rules.block.fences.exec(e);if(n){let s=n[0],i=Ll(s,n[3]||"",this.rules);return{type:"code",raw:s,lang:n[2]?n[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):n[2],text:i}}}heading(e){let n=this.rules.block.heading.exec(e);if(n){let s=n[2].trim();if(this.rules.other.endingHash.test(s)){let i=Oe(s,"#");(this.options.pedantic||!i||this.rules.other.endingSpaceTabChar.test(i))&&(s=i.trim())}return{type:"heading",raw:Oe(n[0],`
21
+ `),depth:n[1].length,text:s,tokens:this.lexer.inline(s)}}}hr(e){let n=this.rules.block.hr.exec(e);if(n)return{type:"hr",raw:Oe(n[0],`
22
+ `)}}blockquote(e){let n=this.rules.block.blockquote.exec(e);if(n){let s=Oe(n[0],`
23
23
  `).split(`
24
- `),i="",r="",a=[];for(;s.length>0;){let o=!1,l=[],c;for(c=0;c<s.length;c++)if(this.rules.other.blockquoteStart.test(s[c]))l.push(s[c]),o=!0;else if(!o)l.push(s[c]);else break;s=s.slice(c);let d=l.join(`
25
- `),u=d.replace(this.rules.other.blockquoteSetextReplace,`
24
+ `),i="",r="",a=[];for(;s.length>0;){let o=!1,l=[],d;for(d=0;d<s.length;d++)if(this.rules.other.blockquoteStart.test(s[d]))l.push(s[d]),o=!0;else if(!o)l.push(s[d]);else break;s=s.slice(d);let c=l.join(`
25
+ `),u=c.replace(this.rules.other.blockquoteSetextReplace,`
26
26
  $1`).replace(this.rules.other.blockquoteSetextReplace2,"");i=i?`${i}
27
- ${d}`:d,r=r?`${r}
28
- ${u}`:u;let h=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(u,a,!0),this.lexer.state.top=h,s.length===0)break;let g=a.at(-1);if(g?.type==="code"||g?.type==="heading"||g?.type==="hr"||g?.type==="html")break;if(g?.type==="blockquote"){let f=g,x=s.join(`
29
- `),m=f.raw+`
30
- `+x.replace(this.rules.other.blockquoteSetextReplace2,""),p=this.blockquote(m);a[a.length-1]=p;let v=m.substring(p.raw.length).replace(/^\n/,""),b=v?v.split(`
31
- `).length:0,y=b?s.slice(0,-b):s;y.length>0&&(i=`${i}
32
- ${y.join(`
33
- `)}`),r=r.substring(0,r.length-f.text.length)+p.text;break}else if(g?.type==="list"){let f=g,x=f.raw+`
27
+ ${c}`:c,r=r?`${r}
28
+ ${u}`:u;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(u,a,!0),this.lexer.state.top=p,s.length===0)break;let g=a.at(-1);if(g?.type==="code"||g?.type==="heading"||g?.type==="hr"||g?.type==="html")break;if(g?.type==="blockquote"){let f=g,x=s.join(`
29
+ `),h=f.raw+`
30
+ `+x.replace(this.rules.other.blockquoteSetextReplace2,""),m=this.blockquote(h);a[a.length-1]=m;let v=h.substring(m.raw.length).replace(/^\n/,""),y=v?v.split(`
31
+ `).length:0,b=y?s.slice(0,-y):s;b.length>0&&(i=`${i}
32
+ ${b.join(`
33
+ `)}`),r=r.substring(0,r.length-f.text.length)+m.text;break}else if(g?.type==="list"){let f=g,x=f.raw+`
34
34
  `+s.join(`
35
- `),m=this.list(x);a[a.length-1]=m,i=i.substring(0,i.length-g.raw.length)+m.raw,r=r.substring(0,r.length-f.raw.length)+m.raw,s=x.substring(a.at(-1).raw.length).split(`
36
- `);continue}}return{type:"blockquote",raw:i,tokens:a,text:r}}}list(e){let n=this.rules.block.list.exec(e);if(n){let s=e,i=()=>s.length-e.length,r=n[1].trim(),a=r.length>1,o={type:"list",raw:"",ordered:a,start:a?+r.slice(0,-1):"",loose:!1,items:[]};r=a?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=a?r:"[*+-]");let l=this.rules.other.listItemRegex(r),c=!1;for(;e;){let u=!1,h="";if(!(n=l.exec(e))||this.rules.block.hr.test(e))break;let g=i();e=e.substring(n[0].length);let f=n[2].split(`
37
- `,1)[0],x=n[1].length,m=this.options.pedantic?es(f,x):f.replace(this.rules.other.leadingSpaceTab,k=>es(k,x)),p=e.split(`
38
- `,1)[0],v=!m.trim(),b=0;if(this.options.pedantic?(b=2,h=m.trimStart()):v?b=x+1:(b=m.search(this.rules.other.nonSpaceChar),b=b>4?1:b,h=m.slice(b),b+=x),v&&this.rules.other.blankLine.test(p)&&(e=e.substring(p.length+1),u=!0),!u){let k=this.rules.other.nextBulletRegex(b),S=this.rules.other.hrRegex(b),T=this.rules.other.fencesBeginRegex(b),w=this.rules.other.headingBeginRegex(b),E=this.rules.other.htmlBeginRegex(b),A=this.rules.other.blockquoteBeginRegex(b);for(;e;){let F=e.split(`
39
- `,1)[0],$;if(p=F,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),$=p):$=p.replace(this.rules.other.leadingSpaceTab,R=>es(R)),T.test(p)||w.test(p)||E.test(p)||A.test(p)||k.test(p)||S.test(p))break;if($.search(this.rules.other.nonSpaceChar)>=b||!p.trim())h+=`
40
- `+$.slice(b);else{if(v||m.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||T.test(m)||w.test(m)||S.test(m))break;h+=`
41
- `+p}v=!p.trim(),e=e.substring(F.length+1),m=$.slice(b)}}let y=s.slice(g,i());o.loose||(c?o.loose=!0:this.rules.other.doubleBlankLine.test(y)&&(c=!0)),o.items.push({type:"list_item",raw:y,task:!!this.options.gfm&&this.rules.other.listIsTask.test(h),loose:!1,text:h,tokens:[]})}let d=o.items.at(-1);if(d)d.raw=d.raw.trimEnd(),d.text=d.text.trimEnd();else return;o.raw=s.slice(0,i()).trimEnd();for(let u of o.items)if(this.lexer.state.top=!1,u.tokens=this.lexer.blockTokens(u.text,[]),!o.loose){let h=u.tokens.filter(f=>f.type==="space"),g=h.length>0&&h.some(f=>this.rules.other.anyLine.test(f.raw));o.loose=g}for(let u of o.items){let h=u.tokens[0];if(u.task&&(h?.type==="text"||h?.type==="paragraph")){u.text=u.text.replace(this.rules.other.listReplaceTask,""),h.raw=h.raw.replace(this.rules.other.listReplaceTask,""),h.text=h.text.replace(this.rules.other.listReplaceTask,"");for(let f=this.lexer.inlineQueue.length-1;f>=0;f--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[f].src)){this.lexer.inlineQueue[f].src=this.lexer.inlineQueue[f].src.replace(this.rules.other.listReplaceTask,"");break}let g=this.rules.other.listTaskCheckbox.exec(u.raw);if(g){let f={type:"checkbox",raw:g[0]+" ",checked:g[0]!=="[ ]"};u.checked=f.checked,o.loose?u.tokens[0]&&["paragraph","text"].includes(u.tokens[0].type)&&"tokens"in u.tokens[0]&&u.tokens[0].tokens?(u.tokens[0].raw=f.raw+u.tokens[0].raw,u.tokens[0].text=f.raw+u.tokens[0].text,u.tokens[0].tokens.unshift(f)):u.tokens.unshift({type:"paragraph",raw:f.raw,text:f.raw,tokens:[f]}):u.tokens.unshift(f)}}else u.task&&(u.task=!1)}if(o.loose)for(let u of o.items){u.loose=!0;for(let h of u.tokens)h.type==="text"&&(h.type="paragraph")}return o}}html(e){let n=this.rules.block.html.exec(e);if(n){let s=vi(n[0]);return{type:"html",block:!0,raw:s,pre:n[1]==="pre"||n[1]==="script"||n[1]==="style",text:s}}}def(e){let n=this.rules.block.def.exec(e);if(n){if(!this.rules.other.startAngleBracket.test(n[2])&&ki(n[2],"()")!==-1)return;let s=ln(n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=n[2]?n[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=n[3]?n[3].substring(1,n[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):n[3];return{type:"def",tag:s,raw:Pe(n[0],`
42
- `),href:i,title:r}}}table(e){let n=this.rules.block.table.exec(e);if(!n||!this.rules.other.tableDelimiter.test(n[2]))return;let s=yi(n[1]),i=n[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=n[3]?.trim()?n[3].replace(this.rules.other.tableRowBlankLine,"").split(`
43
- `):[],a={type:"table",raw:Pe(n[0],`
44
- `),header:[],align:[],rows:[]};if(s.length===i.length){for(let o of i)this.rules.other.tableAlignRight.test(o)?a.align.push("right"):this.rules.other.tableAlignCenter.test(o)?a.align.push("center"):this.rules.other.tableAlignLeft.test(o)?a.align.push("left"):a.align.push(null);for(let o=0;o<s.length;o++)a.header.push({text:s[o],tokens:this.lexer.inline(s[o]),header:!0,align:a.align[o]});for(let o of r)a.rows.push(yi(o,a.header.length).map((l,c)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:a.align[c]})));return a}}lheading(e){let n=this.rules.block.lheading.exec(e);if(n){let s=n[1].trim();return{type:"heading",raw:Pe(n[0],`
35
+ `),h=this.list(x);a[a.length-1]=h,i=i.substring(0,i.length-g.raw.length)+h.raw,r=r.substring(0,r.length-f.raw.length)+h.raw,s=x.substring(a.at(-1).raw.length).split(`
36
+ `);continue}}return{type:"blockquote",raw:i,tokens:a,text:r}}}list(e){let n=this.rules.block.list.exec(e);if(n){let s=e,i=()=>s.length-e.length,r=n[1].trim(),a=r.length>1,o={type:"list",raw:"",ordered:a,start:a?+r.slice(0,-1):"",loose:!1,items:[]};r=a?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=a?r:"[*+-]");let l=this.rules.other.listItemRegex(r),d=!1;for(;e;){let u=!1,p="";if(!(n=l.exec(e))||this.rules.block.hr.test(e))break;let g=i();e=e.substring(n[0].length);let f=n[2].split(`
37
+ `,1)[0],x=n[1].length,h=this.options.pedantic?is(f,x):f.replace(this.rules.other.leadingSpaceTab,k=>is(k,x)),m=e.split(`
38
+ `,1)[0],v=!h.trim(),y=0;if(this.options.pedantic?(y=2,p=h.trimStart()):v?y=x+1:(y=h.search(this.rules.other.nonSpaceChar),y=y>4?1:y,p=h.slice(y),y+=x),v&&this.rules.other.blankLine.test(m)&&(e=e.substring(m.length+1),u=!0),!u){let k=this.rules.other.nextBulletRegex(y),T=this.rules.other.hrRegex(y),E=this.rules.other.fencesBeginRegex(y),w=this.rules.other.headingBeginRegex(y),C=this.rules.other.htmlBeginRegex(y),R=this.rules.other.blockquoteBeginRegex(y);for(;e;){let F=e.split(`
39
+ `,1)[0],$;if(m=F,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting," "),$=m):$=m.replace(this.rules.other.leadingSpaceTab,L=>is(L)),E.test(m)||w.test(m)||C.test(m)||R.test(m)||k.test(m)||T.test(m))break;if($.search(this.rules.other.nonSpaceChar)>=y||!m.trim())p+=`
40
+ `+$.slice(y);else{if(v||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||E.test(h)||w.test(h)||T.test(h))break;p+=`
41
+ `+m}v=!m.trim(),e=e.substring(F.length+1),h=$.slice(y)}}let b=s.slice(g,i());o.loose||(d?o.loose=!0:this.rules.other.doubleBlankLine.test(b)&&(d=!0)),o.items.push({type:"list_item",raw:b,task:!!this.options.gfm&&this.rules.other.listIsTask.test(p),loose:!1,text:p,tokens:[]})}let c=o.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;o.raw=s.slice(0,i()).trimEnd();for(let u of o.items)if(this.lexer.state.top=!1,u.tokens=this.lexer.blockTokens(u.text,[]),!o.loose){let p=u.tokens.filter(f=>f.type==="space"),g=p.length>0&&p.some(f=>this.rules.other.anyLine.test(f.raw));o.loose=g}for(let u of o.items){let p=u.tokens[0];if(u.task&&(p?.type==="text"||p?.type==="paragraph")){u.text=u.text.replace(this.rules.other.listReplaceTask,""),p.raw=p.raw.replace(this.rules.other.listReplaceTask,""),p.text=p.text.replace(this.rules.other.listReplaceTask,"");for(let f=this.lexer.inlineQueue.length-1;f>=0;f--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[f].src)){this.lexer.inlineQueue[f].src=this.lexer.inlineQueue[f].src.replace(this.rules.other.listReplaceTask,"");break}let g=this.rules.other.listTaskCheckbox.exec(u.raw);if(g){let f={type:"checkbox",raw:g[0]+" ",checked:g[0]!=="[ ]"};u.checked=f.checked,o.loose?u.tokens[0]&&["paragraph","text"].includes(u.tokens[0].type)&&"tokens"in u.tokens[0]&&u.tokens[0].tokens?(u.tokens[0].raw=f.raw+u.tokens[0].raw,u.tokens[0].text=f.raw+u.tokens[0].text,u.tokens[0].tokens.unshift(f)):u.tokens.unshift({type:"paragraph",raw:f.raw,text:f.raw,tokens:[f]}):u.tokens.unshift(f)}}else u.task&&(u.task=!1)}if(o.loose)for(let u of o.items){u.loose=!0;for(let p of u.tokens)p.type==="text"&&(p.type="paragraph")}return o}}html(e){let n=this.rules.block.html.exec(e);if(n){let s=Ei(n[0]);return{type:"html",block:!0,raw:s,pre:n[1]==="pre"||n[1]==="script"||n[1]==="style",text:s}}}def(e){let n=this.rules.block.def.exec(e);if(n){if(!this.rules.other.startAngleBracket.test(n[2])&&Ci(n[2],"()")!==-1)return;let s=gn(n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=n[2]?n[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=n[3]?n[3].substring(1,n[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):n[3];return{type:"def",tag:s,raw:Oe(n[0],`
42
+ `),href:i,title:r}}}table(e){let n=this.rules.block.table.exec(e);if(!n||!this.rules.other.tableDelimiter.test(n[2]))return;let s=Ti(n[1]),i=n[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=n[3]?.trim()?n[3].replace(this.rules.other.tableRowBlankLine,"").split(`
43
+ `):[],a={type:"table",raw:Oe(n[0],`
44
+ `),header:[],align:[],rows:[]};if(s.length===i.length){for(let o of i)this.rules.other.tableAlignRight.test(o)?a.align.push("right"):this.rules.other.tableAlignCenter.test(o)?a.align.push("center"):this.rules.other.tableAlignLeft.test(o)?a.align.push("left"):a.align.push(null);for(let o=0;o<s.length;o++)a.header.push({text:s[o],tokens:this.lexer.inline(s[o]),header:!0,align:a.align[o]});for(let o of r)a.rows.push(Ti(o,a.header.length).map((l,d)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:a.align[d]})));return a}}lheading(e){let n=this.rules.block.lheading.exec(e);if(n){let s=n[1].trim();return{type:"heading",raw:Oe(n[0],`
45
45
  `),depth:n[2].charAt(0)==="="?1:2,text:s,tokens:this.lexer.inline(s)}}}paragraph(e){let n=this.rules.block.paragraph.exec(e);if(n){let s=n[1].charAt(n[1].length-1)===`
46
- `?n[1].slice(0,-1):n[1];return{type:"paragraph",raw:n[0],text:s,tokens:this.lexer.inline(s)}}}text(e){let n=this.rules.block.text.exec(e);if(n)return{type:"text",raw:n[0],text:n[0],tokens:this.lexer.inline(n[0])}}escape(e){let n=this.rules.inline.escape.exec(e);if(n)return{type:"escape",raw:n[0],text:n[1]}}tag(e){let n=this.rules.inline.tag.exec(e);if(n)return!this.lexer.state.inLink&&this.rules.other.startATag.test(n[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(n[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(n[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(n[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:n[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:n[0]}}link(e){if(this.lexer.state.linkParenPossible===!1)return;let n=this.rules.inline.link.exec(e);if(n){let s=n[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&wi(e,n[1],s,this.rules))return;let i=n[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(i)){if(!this.rules.other.endAngleBracket.test(i))return;let o=Pe(i.slice(0,-1),"\\");if((i.length-o.length)%2===0)return}else{let o=ki(n[2],"()");if(o===-2)return;if(o>-1){let l=(n[0].indexOf("!")===0?5:4)+n[1].length+o;n[2]=n[2].substring(0,o),n[0]=n[0].substring(0,l).trim(),n[3]=""}}let r=n[2],a="";if(this.options.pedantic){let o=this.rules.other.pedanticHrefTitle.exec(r);o&&(r=o[1],a=o[3])}else a=n[3]?n[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(i)?r=r.slice(1):r=r.slice(1,-1)),xi(n,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},n[0],this.lexer,this.rules)}}reflink(e,n){let s;if((s=this.rules.inline.reflink.exec(e))||(s=this.rules.inline.nolink.exec(e))){let i=s[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&wi(e,s[1],i,this.rules))return;let r=(s[2]||s[1]).replace(this.rules.other.multipleSpaceGlobal," "),a=n[ln(r)];if(!a){let o=s[0].charAt(0);return{type:"text",raw:o,text:o}}return xi(s,a,s[0],this.lexer,this.rules)}}emStrong(e,n,s=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!(!i||!i[1]&&!i[2]&&!i[3]&&!i[4]||i[4]&&s.match(this.rules.other.unicodeAlphaNumeric))&&(!(i[1]||i[3])||!s||this.rules.inline.punctuation.exec(s))){let r=[...i[0]].length-1,a,o,l=r,c=0,d=i[0][0],u=s===d,h=d==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,n=n.slice(-1*e.length+r);(i=h.exec(n))!==null;){if(a=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!a)continue;if(o=[...a].length,i[3]||i[4]){l+=o;continue}else if(i[5]||i[6]){if(r%3&&!((r+o)%3)){c+=o;continue}if(u)break}if(l-=o,l>0)continue;o=Math.min(o,o+l+c);let g=[...i[0]][0].length,f=e.slice(0,r+i.index+g+o);if(Math.min(r,o)%2){let m=f.slice(1,-1);return{type:"em",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}let x=f.slice(2,-2);return{type:"strong",raw:f,text:x,tokens:this.lexer.inlineTokens(x)}}}}codespan(e){let n=this.rules.inline.code.exec(e);if(n){let s=n[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(s),r=this.rules.other.startingSpaceChar.test(s)&&this.rules.other.endingSpaceChar.test(s);return i&&r&&(s=s.substring(1,s.length-1)),{type:"codespan",raw:n[0],text:s}}}br(e){let n=this.rules.inline.br.exec(e);if(n)return{type:"br",raw:n[0]}}del(e,n,s=""){let i=this.rules.inline.delLDelim.exec(e);if(i&&(!i[1]||!s||this.rules.inline.punctuation.exec(s))){let r=[...i[0]].length-1,a,o,l=r,c=this.rules.inline.delRDelim;for(c.lastIndex=0,n=n.slice(-1*e.length+r);(i=c.exec(n))!==null;){if(a=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!a||(o=[...a].length,o!==r))continue;if(i[3]||i[4]){l+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l);let d=[...i[0]][0].length,u=e.slice(0,r+i.index+d+o),h=u.slice(r,-r);return{type:"del",raw:u,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(e){let n=this.rules.inline.autolink.exec(e);if(n){let s,i;return n[2]==="@"?(s=n[1],i="mailto:"+s):(s=n[1],i=s),{type:"link",raw:n[0],text:s,href:i,autolink:!0,tokens:[{type:"text",raw:s,text:s}]}}}url(e){let n;if(n=this.rules.inline.url.exec(e)){let s,i;if(n[2]==="@")s=n[0],i="mailto:"+s;else{let r;do r=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])?.[0]??"";while(r!==n[0]);s=n[0],n[1]==="www."?i="http://"+n[0]:i=n[0]}return{type:"link",raw:n[0],text:s,href:i,autolink:!0,tokens:[{type:"text",raw:s,text:s}]}}}inlineText(e){let n=this.rules.inline.text.exec(e);if(n){let s=this.lexer.state.inRawBlock;return{type:"text",raw:n[0],text:s?n[0]:fl(n[0]),escaped:s}}}},un,Li,Xe,we=(Xe=class{constructor(n){fs(this,un);Y(this,"tokens");Y(this,"options");Y(this,"state");Y(this,"inlineQueue");Y(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=n||qe,this.options.tokenizer=this.options.tokenizer||new cn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,linkParenPossible:!0,top:!0};let s={other:pe,block:rn.normal,inline:bt.normal};this.options.pedantic?(s.block=rn.pedantic,s.inline=bt.pedantic):this.options.gfm&&(s.block=rn.gfm,this.options.breaks?s.inline=bt.breaks:s.inline=bt.gfm),this.tokenizer.rules=s}static get rules(){return{block:rn,inline:bt}}static lex(n,s){return new Xe(s).lex(n)}static lexInline(n,s){return new Xe(s).inlineTokens(n)}lex(n){n=n.replace(pe.carriageReturn,`
47
- `),this.blockTokens(n,this.tokens);for(let s=0;s<this.inlineQueue.length;s++){let i=this.inlineQueue[s];this.inlineTokens(i.src,i.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(n,s=[],i=!1){this.tokenizer.lexer=this,this.options.pedantic&&(n=n.replace(pe.tabCharGlobal," ").replace(pe.spaceLine,""));let r=1/0;for(;n;){if(n.length<r)r=n.length;else{this.infiniteLoopError(n.charCodeAt(0));break}let a;if(this.options.extensions?.block?.some(l=>(a=l.call({lexer:this},n,s))?(n=n.substring(a.raw.length),s.push(a),!0):!1))continue;if(a=this.tokenizer.space(n)){n=n.substring(a.raw.length);let l=s.at(-1);a.raw.length===1&&l!==void 0?l.raw+=`
46
+ `?n[1].slice(0,-1):n[1];return{type:"paragraph",raw:n[0],text:s,tokens:this.lexer.inline(s)}}}text(e){let n=this.rules.block.text.exec(e);if(n)return{type:"text",raw:n[0],text:n[0],tokens:this.lexer.inline(n[0])}}escape(e){let n=this.rules.inline.escape.exec(e);if(n)return{type:"escape",raw:n[0],text:n[1]}}tag(e){let n=this.rules.inline.tag.exec(e);if(n)return!this.lexer.state.inLink&&this.rules.other.startATag.test(n[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(n[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(n[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(n[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:n[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:n[0]}}link(e){if(this.lexer.state.linkParenPossible===!1)return;let n=this.rules.inline.link.exec(e);if(n){let s=n[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&Ai(e,n[1],s,this.rules))return;let i=n[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(i)){if(!this.rules.other.endAngleBracket.test(i))return;let o=Oe(i.slice(0,-1),"\\");if((i.length-o.length)%2===0)return}else{let o=Ci(n[2],"()");if(o===-2)return;if(o>-1){let l=(n[0].indexOf("!")===0?5:4)+n[1].length+o;n[2]=n[2].substring(0,o),n[0]=n[0].substring(0,l).trim(),n[3]=""}}let r=n[2],a="";if(this.options.pedantic){let o=this.rules.other.pedanticHrefTitle.exec(r);o&&(r=o[1],a=o[3])}else a=n[3]?n[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(i)?r=r.slice(1):r=r.slice(1,-1)),$i(n,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},n[0],this.lexer,this.rules)}}reflink(e,n){let s;if((s=this.rules.inline.reflink.exec(e))||(s=this.rules.inline.nolink.exec(e))){let i=s[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&Ai(e,s[1],i,this.rules))return;let r=(s[2]||s[1]).replace(this.rules.other.multipleSpaceGlobal," "),a=n[gn(r)];if(!a){let o=s[0].charAt(0);return{type:"text",raw:o,text:o}}return $i(s,a,s[0],this.lexer,this.rules)}}emStrong(e,n,s=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!(!i||!i[1]&&!i[2]&&!i[3]&&!i[4]||i[4]&&s.match(this.rules.other.unicodeAlphaNumeric))&&(!(i[1]||i[3])||!s||this.rules.inline.punctuation.exec(s))){let r=[...i[0]].length-1,a,o,l=r,d=0,c=i[0][0],u=s===c,p=c==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,n=n.slice(-1*e.length+r);(i=p.exec(n))!==null;){if(a=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!a)continue;if(o=[...a].length,i[3]||i[4]){l+=o;continue}else if(i[5]||i[6]){if(r%3&&!((r+o)%3)){d+=o;continue}if(u)break}if(l-=o,l>0)continue;o=Math.min(o,o+l+d);let g=[...i[0]][0].length,f=e.slice(0,r+i.index+g+o);if(Math.min(r,o)%2){let h=f.slice(1,-1);return{type:"em",raw:f,text:h,tokens:this.lexer.inlineTokens(h)}}let x=f.slice(2,-2);return{type:"strong",raw:f,text:x,tokens:this.lexer.inlineTokens(x)}}}}codespan(e){let n=this.rules.inline.code.exec(e);if(n){let s=n[2].replace(this.rules.other.newLineCharGlobal," "),i=this.rules.other.nonSpaceChar.test(s),r=this.rules.other.startingSpaceChar.test(s)&&this.rules.other.endingSpaceChar.test(s);return i&&r&&(s=s.substring(1,s.length-1)),{type:"codespan",raw:n[0],text:s}}}br(e){let n=this.rules.inline.br.exec(e);if(n)return{type:"br",raw:n[0]}}del(e,n,s=""){let i=this.rules.inline.delLDelim.exec(e);if(i&&(!i[1]||!s||this.rules.inline.punctuation.exec(s))){let r=[...i[0]].length-1,a,o,l=r,d=this.rules.inline.delRDelim;for(d.lastIndex=0,n=n.slice(-1*e.length+r);(i=d.exec(n))!==null;){if(a=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!a||(o=[...a].length,o!==r))continue;if(i[3]||i[4]){l+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l);let c=[...i[0]][0].length,u=e.slice(0,r+i.index+c+o),p=u.slice(r,-r);return{type:"del",raw:u,text:p,tokens:this.lexer.inlineTokens(p)}}}}autolink(e){let n=this.rules.inline.autolink.exec(e);if(n){let s,i;return n[2]==="@"?(s=n[1],i="mailto:"+s):(s=n[1],i=s),{type:"link",raw:n[0],text:s,href:i,autolink:!0,tokens:[{type:"text",raw:s,text:s}]}}}url(e){let n;if(n=this.rules.inline.url.exec(e)){let s,i;if(n[2]==="@")s=n[0],i="mailto:"+s;else{let r;do r=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])?.[0]??"";while(r!==n[0]);s=n[0],n[1]==="www."?i="http://"+n[0]:i=n[0]}return{type:"link",raw:n[0],text:s,href:i,autolink:!0,tokens:[{type:"text",raw:s,text:s}]}}}inlineText(e){let n=this.rules.inline.text.exec(e);if(n){let s=this.lexer.state.inRawBlock;return{type:"text",raw:n[0],text:s?n[0]:Fl(n[0]),escaped:s}}}},yn,Hi,Je,_e=(Je=class{constructor(n){xs(this,yn);Q(this,"tokens");Q(this,"options");Q(this,"state");Q(this,"inlineQueue");Q(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=n||Ke,this.options.tokenizer=this.options.tokenizer||new fn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,linkParenPossible:!0,top:!0};let s={other:me,block:pn.normal,inline:_t.normal};this.options.pedantic?(s.block=pn.pedantic,s.inline=_t.pedantic):this.options.gfm&&(s.block=pn.gfm,this.options.breaks?s.inline=_t.breaks:s.inline=_t.gfm),this.tokenizer.rules=s}static get rules(){return{block:pn,inline:_t}}static lex(n,s){return new Je(s).lex(n)}static lexInline(n,s){return new Je(s).inlineTokens(n)}lex(n){n=n.replace(me.carriageReturn,`
47
+ `),this.blockTokens(n,this.tokens);for(let s=0;s<this.inlineQueue.length;s++){let i=this.inlineQueue[s];this.inlineTokens(i.src,i.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(n,s=[],i=!1){this.tokenizer.lexer=this,this.options.pedantic&&(n=n.replace(me.tabCharGlobal," ").replace(me.spaceLine,""));let r=1/0;for(;n;){if(n.length<r)r=n.length;else{this.infiniteLoopError(n.charCodeAt(0));break}let a;if(this.options.extensions?.block?.some(l=>(a=l.call({lexer:this},n,s))?(n=n.substring(a.raw.length),s.push(a),!0):!1))continue;if(a=this.tokenizer.space(n)){n=n.substring(a.raw.length);let l=s.at(-1);a.raw.length===1&&l!==void 0?l.raw+=`
48
48
  `:s.push(a);continue}if(a=this.tokenizer.code(n)){n=n.substring(a.raw.length);let l=s.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
49
49
  `)?"":`
50
50
  `)+a.raw,l.text+=`
51
51
  `+a.text,this.inlineQueue.at(-1).src=l.text):s.push(a);continue}if(a=this.tokenizer.fences(n)){n=n.substring(a.raw.length),s.push(a);continue}if(a=this.tokenizer.heading(n)){n=n.substring(a.raw.length),s.push(a);continue}if(a=this.tokenizer.hr(n)){n=n.substring(a.raw.length),s.push(a);continue}if(a=this.tokenizer.blockquote(n)){n=n.substring(a.raw.length),s.push(a);continue}if(a=this.tokenizer.list(n)){n=n.substring(a.raw.length),s.push(a);continue}if(a=this.tokenizer.html(n)){n=n.substring(a.raw.length),s.push(a);continue}if(a=this.tokenizer.def(n)){n=n.substring(a.raw.length);let l=s.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
52
52
  `)?"":`
53
53
  `)+a.raw,l.text+=`
54
- `+a.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[a.tag]||(this.tokens.links[a.tag]={href:a.href,title:a.title},s.push(a));continue}if(a=this.tokenizer.table(n)){n=n.substring(a.raw.length),s.push(a);continue}if(a=this.tokenizer.lheading(n)){n=n.substring(a.raw.length),s.push(a);continue}let o=n;if(this.options.extensions?.startBlock){let l=1/0,c=n.slice(1),d;this.options.extensions.startBlock.forEach(u=>{d=u.call({lexer:this},c),typeof d=="number"&&d>=0&&(l=Math.min(l,d))}),l<1/0&&l>=0&&(o=n.substring(0,l+1))}if(this.state.top&&(a=this.tokenizer.paragraph(o))){let l=s.at(-1);i&&l?.type==="paragraph"?(l.raw+=(l.raw.endsWith(`
54
+ `+a.raw,this.inlineQueue.at(-1).src=l.text):this.tokens.links[a.tag]||(this.tokens.links[a.tag]={href:a.href,title:a.title},s.push(a));continue}if(a=this.tokenizer.table(n)){n=n.substring(a.raw.length),s.push(a);continue}if(a=this.tokenizer.lheading(n)){n=n.substring(a.raw.length),s.push(a);continue}let o=n;if(this.options.extensions?.startBlock){let l=1/0,d=n.slice(1),c;this.options.extensions.startBlock.forEach(u=>{c=u.call({lexer:this},d),typeof c=="number"&&c>=0&&(l=Math.min(l,c))}),l<1/0&&l>=0&&(o=n.substring(0,l+1))}if(this.state.top&&(a=this.tokenizer.paragraph(o))){let l=s.at(-1);i&&l?.type==="paragraph"?(l.raw+=(l.raw.endsWith(`
55
55
  `)?"":`
56
56
  `)+a.raw,l.text+=`
57
57
  `+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):s.push(a),i=o.length!==n.length,n=n.substring(a.raw.length);continue}if(a=this.tokenizer.text(n)){n=n.substring(a.raw.length);let l=s.at(-1);l?.type==="text"?(l.raw+=(l.raw.endsWith(`
58
58
  `)?"":`
59
59
  `)+a.raw,l.text+=`
60
- `+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):s.push(a);continue}if(n){this.infiniteLoopError(n.charCodeAt(0));break}}return this.state.top=!0,s}inline(n,s=[]){return this.inlineQueue.push({src:n,tokens:s}),s}linkInText(n){if(!n.includes("["))return!1;let s=this.tokenizer.rules.inline.link;for(let i of n.matchAll(this.tokenizer.rules.inline.blockSkip))if(s.test(i[0])&&n.charAt(i.index-1)!=="!")return!0;for(let i of n.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let r=i[0],a=r.lastIndexOf("[");if(!(r.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,ln(r.slice(a+1,-1))))&&!(a>1&&this.linkInText(r.slice(1,a-1))))return!0}return!1}inlineTokens(n,s=[]){this.tokenizer.lexer=this;let i=this.state.linkParenPossible;this.state.linkParenPossible=i&&n.includes(")");try{return bs(this,un,Li).call(this,n,s)}finally{this.state.linkParenPossible=i}}infiniteLoopError(n){let s="Infinite loop on byte: "+n;if(this.options.silent)console.error(s);else throw new Error(s)}},un=new WeakSet,Li=function(n,s){let i=n;if(this.tokens.links&&n.includes("[")){let l=this.tokenizer.rules.inline.reflinkSearch,c=d=>{let u=d.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,ln(d.slice(u+1,-1))))return d;if(u>1&&d.charAt(0)!=="!"){let h=d.slice(1,u-1);if(this.linkInText(h))return"["+h.replace(l,c)+"]["+"a".repeat(d.length-u-2)+"]"}return"["+"a".repeat(d.length-2)+"]"};i=i.replace(l,c)}i=i.replace(this.tokenizer.rules.inline.anyPunctuationOutsideCode,(l,c,d)=>d?"+".repeat(l.length):c?c+l.slice(c.length,-c.length).replace(/`/g,"+")+c:l),i=i.replace(this.tokenizer.rules.inline.blockSkip,(l,c,d)=>{let u=d?d.length:0;return l.slice(0,u)+"["+"a".repeat(l.length-u-2)+"]"}),i=this.options.hooks?.emStrongMask?.call({lexer:this},i)??i;let r=!1,a="",o=1/0;for(;n;){if(n.length<o)o=n.length;else{this.infiniteLoopError(n.charCodeAt(0));break}r||(a=""),r=!1;let l;if(this.options.extensions?.inline?.some(d=>(l=d.call({lexer:this},n,s))?(n=n.substring(l.raw.length),s.push(l),!0):!1))continue;if(l=this.tokenizer.escape(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.tag(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.link(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.reflink(n,this.tokens.links)){n=n.substring(l.raw.length);let d=s.at(-1);l.type==="text"&&d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):s.push(l);continue}if(l=this.tokenizer.emStrong(n,i,a)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.codespan(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.br(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.del(n,i,a)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.autolink(n)){n=n.substring(l.raw.length),s.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(n))){n=n.substring(l.raw.length),s.push(l);continue}let c=n;if(this.options.extensions?.startInline){let d=1/0,u=n.slice(1),h;this.options.extensions.startInline.forEach(g=>{h=g.call({lexer:this},u),typeof h=="number"&&h>=0&&(d=Math.min(d,h))}),d<1/0&&d>=0&&(c=n.substring(0,d+1))}if(l=this.tokenizer.inlineText(c)){n=n.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(a=l.raw.slice(-1)),r=!0;let d=s.at(-1);d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):s.push(l);continue}if(n){this.infiniteLoopError(n.charCodeAt(0));break}}return s},Xe),dn=class{constructor(e){Y(this,"options");Y(this,"parser");this.options=e||qe}space(e){return""}code({text:e,lang:n,escaped:s}){let i=(n||"").match(pe.notSpaceStart)?.[0],r=e?e.replace(pe.endingNewline,"")+`
60
+ `+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):s.push(a);continue}if(n){this.infiniteLoopError(n.charCodeAt(0));break}}return this.state.top=!0,s}inline(n,s=[]){return this.inlineQueue.push({src:n,tokens:s}),s}linkInText(n){if(!n.includes("["))return!1;let s=this.tokenizer.rules.inline.link;for(let i of n.matchAll(this.tokenizer.rules.inline.blockSkip))if(s.test(i[0])&&n.charAt(i.index-1)!=="!")return!0;for(let i of n.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let r=i[0],a=r.lastIndexOf("[");if(!(r.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,gn(r.slice(a+1,-1))))&&!(a>1&&this.linkInText(r.slice(1,a-1))))return!0}return!1}inlineTokens(n,s=[]){this.tokenizer.lexer=this;let i=this.state.linkParenPossible;this.state.linkParenPossible=i&&n.includes(")");try{return ws(this,yn,Hi).call(this,n,s)}finally{this.state.linkParenPossible=i}}infiniteLoopError(n){let s="Infinite loop on byte: "+n;if(this.options.silent)console.error(s);else throw new Error(s)}},yn=new WeakSet,Hi=function(n,s){let i=n;if(this.tokens.links&&n.includes("[")){let l=this.tokenizer.rules.inline.reflinkSearch,d=c=>{let u=c.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,gn(c.slice(u+1,-1))))return c;if(u>1&&c.charAt(0)!=="!"){let p=c.slice(1,u-1);if(this.linkInText(p))return"["+p.replace(l,d)+"]["+"a".repeat(c.length-u-2)+"]"}return"["+"a".repeat(c.length-2)+"]"};i=i.replace(l,d)}i=i.replace(this.tokenizer.rules.inline.anyPunctuationOutsideCode,(l,d,c)=>c?"+".repeat(l.length):d?d+l.slice(d.length,-d.length).replace(/`/g,"+")+d:l),i=i.replace(this.tokenizer.rules.inline.blockSkip,(l,d,c)=>{let u=c?c.length:0;return l.slice(0,u)+"["+"a".repeat(l.length-u-2)+"]"}),i=this.options.hooks?.emStrongMask?.call({lexer:this},i)??i;let r=!1,a="",o=1/0;for(;n;){if(n.length<o)o=n.length;else{this.infiniteLoopError(n.charCodeAt(0));break}r||(a=""),r=!1;let l;if(this.options.extensions?.inline?.some(c=>(l=c.call({lexer:this},n,s))?(n=n.substring(l.raw.length),s.push(l),!0):!1))continue;if(l=this.tokenizer.escape(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.tag(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.link(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.reflink(n,this.tokens.links)){n=n.substring(l.raw.length);let c=s.at(-1);l.type==="text"&&c?.type==="text"?(c.raw+=l.raw,c.text+=l.text):s.push(l);continue}if(l=this.tokenizer.emStrong(n,i,a)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.codespan(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.br(n)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.del(n,i,a)){n=n.substring(l.raw.length),s.push(l);continue}if(l=this.tokenizer.autolink(n)){n=n.substring(l.raw.length),s.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(n))){n=n.substring(l.raw.length),s.push(l);continue}let d=n;if(this.options.extensions?.startInline){let c=1/0,u=n.slice(1),p;this.options.extensions.startInline.forEach(g=>{p=g.call({lexer:this},u),typeof p=="number"&&p>=0&&(c=Math.min(c,p))}),c<1/0&&c>=0&&(d=n.substring(0,c+1))}if(l=this.tokenizer.inlineText(d)){n=n.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(a=l.raw.slice(-1)),r=!0;let c=s.at(-1);c?.type==="text"?(c.raw+=l.raw,c.text+=l.text):s.push(l);continue}if(n){this.infiniteLoopError(n.charCodeAt(0));break}}return s},Je),bn=class{constructor(e){Q(this,"options");Q(this,"parser");this.options=e||Ke}space(e){return""}code({text:e,lang:n,escaped:s}){let i=(n||"").match(me.notSpaceStart)?.[0],r=e?e.replace(me.endingNewline,"")+`
61
61
  `:"";return i?'<pre><code class="language-'+ve(i)+'">'+(s?r:ve(r,!0))+`</code></pre>
62
62
  `:"<pre><code>"+(s?r:ve(r,!0))+`</code></pre>
63
63
  `}blockquote({tokens:e}){return`<blockquote>
@@ -75,14 +75,14 @@ ${this.parser.parse(e)}</blockquote>
75
75
  `}tablerow({text:e}){return`<tr>
76
76
  ${e}</tr>
77
77
  `}tablecell(e){let n=this.parser.parseInline(e.tokens),s=e.header?"th":"td";return(e.align?`<${s} align="${e.align}">`:`<${s}>`)+n+`</${s}>
78
- `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${ve(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:n,text:s,tokens:i,autolink:r}){let a=r?ve(s,!0):this.parser.parseInline(i),o=bi(e);if(o===null)return a;e=ve(o,r);let l='<a href="'+e+'"';return n&&(l+=' title="'+ve(n)+'"'),l+=">"+a+"</a>",l}image({href:e,title:n,text:s,tokens:i}){i&&(s=this.parser.parseInline(i,this.parser.textRenderer));let r=bi(e);if(r===null)return ve(s);e=r;let a=`<img src="${ve(e)}" alt="${ve(s)}"`;return n&&(a+=` title="${ve(n)}"`),a+=">",a}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:ve(e.text)}},ds=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},_e=class ns{constructor(n){Y(this,"options");Y(this,"renderer");Y(this,"textRenderer");this.options=n||qe,this.options.renderer=this.options.renderer||new dn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new ds}static parse(n,s){return new ns(s).parse(n)}static parseInline(n,s){return new ns(s).parseInline(n)}parse(n){this.renderer.parser=this;let s="";for(let i=0;i<n.length;i++){let r=n[i];if(this.options.extensions?.renderers?.[r.type]){let o=r,l=this.options.extensions.renderers[o.type].call({parser:this},o);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(o.type)){s+=l||"";continue}}let a=r;switch(a.type){case"space":{s+=this.renderer.space(a);break}case"hr":{s+=this.renderer.hr(a);break}case"heading":{s+=this.renderer.heading(a);break}case"code":{s+=this.renderer.code(a);break}case"table":{s+=this.renderer.table(a);break}case"blockquote":{s+=this.renderer.blockquote(a);break}case"list":{s+=this.renderer.list(a);break}case"checkbox":{s+=this.renderer.checkbox(a);break}case"html":{s+=this.renderer.html(a);break}case"def":{s+=this.renderer.def(a);break}case"paragraph":{s+=this.renderer.paragraph(a);break}case"text":{s+=this.renderer.text(a);break}default:{let o='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return s}parseInline(n,s=this.renderer){this.renderer.parser=this;let i="";for(let r=0;r<n.length;r++){let a=n[r];if(this.options.extensions?.renderers?.[a.type]){let l=this.options.extensions.renderers[a.type].call({parser:this},a);if(l!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(a.type)){i+=l||"";continue}}let o=a;switch(o.type){case"escape":{i+=s.text(o);break}case"html":{i+=s.html(o);break}case"link":{i+=s.link(o);break}case"image":{i+=s.image(o);break}case"checkbox":{i+=s.checkbox(o);break}case"strong":{i+=s.strong(o);break}case"em":{i+=s.em(o);break}case"codespan":{i+=s.codespan(o);break}case"br":{i+=s.br(o);break}case"del":{i+=s.del(o);break}case"text":{i+=s.text(o);break}default:{let l='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return i}},an,yt=(an=class{constructor(e){Y(this,"options");Y(this,"block");this.options=e||qe}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?we.lex:we.lexInline}provideParser(e=this.block){return e?_e.parse:_e.parseInline}},Y(an,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),Y(an,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),an);function je(e,n){if(Array.isArray(n))for(let s=0;s<n.length;s++)e.push(n[s]);else e.push(n)}var yl=class{constructor(...e){Y(this,"defaults",ss());Y(this,"options",this.setOptions);Y(this,"parse",this.parseMarkdown(!0));Y(this,"parseInline",this.parseMarkdown(!1));Y(this,"Parser",_e);Y(this,"Renderer",dn);Y(this,"TextRenderer",ds);Y(this,"Lexer",we);Y(this,"Tokenizer",cn);Y(this,"Hooks",yt);this.use(...e)}walkTokens(e,n){let s=[];for(let i of e)switch(je(s,n.call(this,i)),i.type){case"table":{let r=i;for(let a of r.header)je(s,this.walkTokens(a.tokens,n));for(let a of r.rows)for(let o of a)je(s,this.walkTokens(o.tokens,n));break}case"list":{let r=i;je(s,this.walkTokens(r.items,n));break}default:{let r=i;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(a=>{let o=r[a].flat(1/0);je(s,this.walkTokens(o,n))}):r.tokens&&je(s,this.walkTokens(r.tokens,n))}}return s}use(...e){let n=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(s=>{let i={...s};if(i.async=this.defaults.async||i.async||!1,s.extensions&&(s.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let a=n.renderers[r.name];a?n.renderers[r.name]=function(...o){let l=r.renderer.apply(this,o);return l===!1&&(l=a.apply(this,o)),l}:n.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=n[r.level];a?a.unshift(r.tokenizer):n[r.level]=[r.tokenizer],r.start&&(r.level==="block"?n.startBlock?n.startBlock.push(r.start):n.startBlock=[r.start]:r.level==="inline"&&(n.startInline?n.startInline.push(r.start):n.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(n.childTokens[r.name]=r.childTokens)}),i.extensions=n),s.renderer){let r=this.defaults.renderer||new dn(this.defaults);for(let a in s.renderer){if(!(a in r))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let o=a,l=s.renderer[o],c=r[o];r[o]=(...d)=>{let u=l.apply(r,d);return u===!1&&(u=c.apply(r,d)),u||""}}i.renderer=r}if(s.tokenizer){let r=this.defaults.tokenizer||new cn(this.defaults);for(let a in s.tokenizer){if(!(a in r))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let o=a,l=s.tokenizer[o],c=r[o];r[o]=(...d)=>{let u=l.apply(r,d);return u===!1&&(u=c.apply(r,d)),u}}i.tokenizer=r}if(s.hooks){let r=this.defaults.hooks||new yt;for(let a in s.hooks){if(!(a in r))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let o=a,l=s.hooks[o],c=r[o];yt.passThroughHooks.has(a)?r[o]=d=>{if(this.defaults.async&&yt.passThroughHooksRespectAsync.has(a))return(async()=>{let h=await l.call(r,d);return c.call(r,h)})();let u=l.call(r,d);return c.call(r,u)}:r[o]=(...d)=>{if(this.defaults.async)return(async()=>{let h=await l.apply(r,d);return h===!1&&(h=await c.apply(r,d)),h})();let u=l.apply(r,d);return u===!1&&(u=c.apply(r,d)),u}}i.hooks=r}if(s.walkTokens){let r=this.defaults.walkTokens,a=s.walkTokens;i.walkTokens=function(o){let l=[];return l.push(a.call(this,o)),r&&je(l,r.call(this,o)),l}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,n){return we.lex(e,n??this.defaults)}parser(e,n){return _e.parse(e,n??this.defaults)}parseMarkdown(e){return(n,s)=>{let i={...s},r={...this.defaults,...i},a=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=e),r.async)return(async()=>{let o=r.hooks?await r.hooks.preprocess(n):n,l=await(r.hooks?await r.hooks.provideLexer(e):e?we.lex:we.lexInline)(o,r),c=r.hooks?await r.hooks.processAllTokens(l):l;r.walkTokens&&await Promise.all(this.walkTokens(c,r.walkTokens));let d=await(r.hooks?await r.hooks.provideParser(e):e?_e.parse:_e.parseInline)(c,r);return r.hooks?await r.hooks.postprocess(d):d})().catch(a);try{r.hooks&&(n=r.hooks.preprocess(n));let o=(r.hooks?r.hooks.provideLexer(e):e?we.lex:we.lexInline)(n,r);r.hooks&&(o=r.hooks.processAllTokens(o)),r.walkTokens&&this.walkTokens(o,r.walkTokens);let l=(r.hooks?r.hooks.provideParser(e):e?_e.parse:_e.parseInline)(o,r);return r.hooks&&(l=r.hooks.postprocess(l)),l}catch(o){return a(o)}}}onError(e,n){return s=>{if(s.message+=`
79
- Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+ve(s.message+"",!0)+"</pre>";return n?Promise.resolve(i):i}if(n)return Promise.reject(s);throw s}}},Ge=new yl;function te(e,n){return Ge.parse(e,n)}te.options=te.setOptions=function(e){return Ge.setOptions(e),te.defaults=Ge.defaults,_i(te.defaults),te};te.getDefaults=ss;te.defaults=qe;function vl(...e){return Ge.use(...e),te.defaults=Ge.defaults,_i(te.defaults),te}te.use=vl;te.walkTokens=function(e,n){return Ge.walkTokens(e,n)};te.parseInline=Ge.parseInline;te.Parser=_e;te.parser=_e.parse;te.Renderer=dn;te.TextRenderer=ds;te.Lexer=we;te.lexer=we.lex;te.Tokenizer=cn;te.Hooks=yt;te.parse=te;var mp=te.options,gp=te.setOptions,fp=te.walkTokens,bp=te.parseInline;var yp=_e.parse,Mi=we.lex;var kl={ts:"typescript",js:"javascript",mjs:"javascript",cjs:"javascript",py:"python",sh:"bash",shell:"bash",zsh:"bash",console:"bash",jsonc:"json",md:"markdown"},Ii={amp:"&",lt:"<",gt:">",quot:'"',apos:"'","#39":"'"};function xl(e){return e.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi,(n,s)=>s in Ii?Ii[s]:s.startsWith("#x")?String.fromCodePoint(Number.parseInt(s.slice(2),16)):s.startsWith("#")?String.fromCodePoint(Number.parseInt(s.slice(1),10)):n)}function Se({tokens:e}){return t(N,{children:(e??[]).map((n,s)=>Di(n,s))})}function wl({t:e}){let n=ft(e.href),s=t(Se,{tokens:e.tokens}),i=e.title??void 0,r=sn(n);return r?t("a",{class:"ref",href:r,title:i??e.href,children:s}):n.kind==="external"?t("a",{href:n.href,title:i,target:"_blank",rel:"noopener noreferrer",children:s}):n.kind==="anchor"?t("a",{href:n.href,title:i,children:s}):t("span",{title:e.href,children:s})}function Di(e,n){switch(e.type){case"text":{let s=e;return s.tokens?t(Se,{tokens:s.tokens},n):s.escaped?xl(s.text):s.text}case"escape":return e.text;case"strong":return t("strong",{children:t(Se,{tokens:e.tokens})},n);case"em":return t("em",{children:t(Se,{tokens:e.tokens})},n);case"del":return t("del",{children:t(Se,{tokens:e.tokens})},n);case"codespan":return t("code",{children:e.text},n);case"br":return t("br",{},n);case"link":return t(wl,{t:e},n);case"image":{let s=e,i=ft(s.href);return i.kind==="external"?t("img",{src:i.href,alt:s.text,title:s.title??void 0,loading:"lazy"},n):t("span",{class:"md-html",title:s.href,children:s.text},n)}case"checkbox":return t("input",{type:"checkbox",checked:e.checked,disabled:!0},n);case"html":return t("span",{class:"md-html",children:e.text},n);default:{let s=e;return s.tokens?t(Se,{tokens:s.tokens},n):s.raw}}}function _l({t:e}){let n=(e.lang??"").trim().split(/\s+/)[0]?.toLowerCase()??"",s=kl[n]??n,i=V(()=>Qt(e.text,s).join(`
80
- `),[e.text,s]);return t("pre",{class:"code","data-lang":n||void 0,children:t("code",{dangerouslySetInnerHTML:{__html:i}})})}function us({tokens:e}){return t(N,{children:(e??[]).map((n,s)=>Sl(n,s))})}function Sl(e,n){switch(e.type){case"space":case"def":return null;case"heading":{let s=e;return Dt(`h${Math.min(Math.max(s.depth,1),6)}`,{key:n},t(Se,{tokens:s.tokens}))}case"paragraph":return t("p",{children:t(Se,{tokens:e.tokens})},n);case"text":{let s=e;return s.tokens?t(Se,{tokens:s.tokens},n):s.text}case"checkbox":return Di(e,n);case"code":return t(_l,{t:e},n);case"blockquote":return t("blockquote",{children:t(us,{tokens:e.tokens})},n);case"list":{let s=e,i=s.items.map((r,a)=>t("li",{class:r.task?"task":void 0,children:t(us,{tokens:r.tokens})},a));return s.ordered?t("ol",{start:s.start===""?void 0:s.start,children:i},n):t("ul",{children:i},n)}case"table":{let s=e,i=(r,a)=>Dt(r.header?"th":"td",{key:a,style:r.align?{textAlign:r.align}:void 0},t(Se,{tokens:r.tokens}));return t("table",{children:[t("thead",{children:t("tr",{children:s.header.map(i)})}),t("tbody",{children:s.rows.map((r,a)=>t("tr",{children:r.map(i)},a))})]},n)}case"hr":return t("hr",{},n);case"html":return t("pre",{class:"md-html",children:e.text},n);default:{let s=e;return t("p",{children:s.tokens?t(Se,{tokens:s.tokens}):s.raw},n)}}}function pn({source:e,class:n}){let s=V(()=>Mi(e,{gfm:!0}),[e]);return t("div",{class:n?`md ${n}`:"md",children:t(us,{tokens:s})})}var Tl={decision:"#7c3aed",constraint:"#dc2626",fact:"#2563eb",preference:"#0d9488",todo:"#d97706",note:"#6b7280",onboarding:"#16a34a"};function ps({m:e}){return t(N,{children:[t("span",{class:"tag kind",style:{color:Tl[e.kind]??"#6b7280"},children:e.kind}),e.status&&e.status!=="accepted"?t("span",{class:`tag s-${e.status}`,children:e.status}):null]})}function Ni({value:e}){let n=sn(ft(e));return n?t("a",{class:"ref",href:n,title:e,children:e}):t("span",{class:"tag",title:e,children:e})}function El(e){return e.split(`
81
- `).find(n=>n.trim())?.replace(/^#+\s*/,"").slice(0,120)??""}var Pi={kind:"fact",tags:"",related:"",body:"",name:"",status:"",supersedes:""};function Oi(e){return{kind:e.kind,tags:e.tags.join(", "),related:e.related.join(", "),body:e.body,name:e.name,status:e.status??"",supersedes:e.supersedes??""}}function Cl({name:e,kinds:n,statuses:s,onSaved:i,onDeleted:r}){let a=j(()=>e?O("/api/memories",{name:e}):Promise.resolve(void 0),[e]),[o,l]=C(!e),[c,d]=C(!1),[u,h]=C(Pi),[g,f]=C(!1);U(()=>{l(!e),d(!1)},[e]),U(()=>{let w=a.data;e&&w&&h(Oi(w)),e||h(Pi)},[e,a.data]);let x=w=>E=>h({...u,[w]:E.target.value}),m=()=>{l(!1),d(!1)},p=async()=>{if(!u.body.trim())return K("body required",!0);f(!0);try{let w={kind:u.kind,content:u.body,tags:u.tags,related:u.related,status:u.status||void 0,supersedes:u.supersedes||void 0},E=e?await ye("/api/memories",w,"PUT",{name:e}):await ye("/api/memories",{...w,name:u.name.trim()||void 0});K(`${e?"saved":"created"} ${E.name}${E.superseded?` \xB7 ${E.superseded} marked superseded`:""}`),e===E.name&&a.reload(),i(E.name),m()}catch(w){K(w.message,!0)}finally{f(!1)}},v=()=>{a.data&&h(Oi(a.data)),m()},b=async()=>{if(!(!e||!confirm(`Delete memory "${e}" and its file?`)))try{await Bt("/api/memories",{name:e}),K(`deleted ${e}`),r()}catch(w){K(w.message,!0)}},y=async()=>{if(!e)return;let w=prompt("New name (topic/slug):",e);if(!(!w||w===e))try{let E=await ye("/api/memories",{to:w},"PATCH",{name:e});K(`renamed \u2192 ${E.name}${E.refsUpdated?` (${E.refsUpdated} references updated)`:""}`),i(E.name)}catch(E){K(E.message,!0)}},k=w=>{(w.metaKey||w.ctrlKey)&&w.key.toLowerCase()==="s"?(w.preventDefault(),p()):w.key==="Escape"&&e&&(w.preventDefault(),v())};if(e&&a.error)return t(J,{error:a.error});if(e&&!a.data)return t(B,{});let S=a.data,T=u.kind==="decision";return e&&S&&!o?t("div",{children:[t("div",{class:"row",style:{marginBottom:6},children:[t("b",{class:"grow break",children:e}),t("button",{type:"button",class:"sm primary",onClick:()=>l(!0),children:"edit"}),t("button",{type:"button",class:"sm",onClick:y,children:"rename"}),t("button",{type:"button",class:"sm",title:"this memory in the knowledge graph",onClick:()=>z("memory",{tab:"graph",focus:`memory:${e}`}),children:"graph"}),t("button",{type:"button",class:"sm danger",onClick:b,children:"delete"})]}),t("div",{class:"muted small",style:{marginBottom:8},children:[S.path," \xB7 created ",S.created.slice(0,10)," \xB7 updated ",S.updated.slice(0,10)]}),t("div",{class:"row tight mem-refs",style:{marginBottom:12},children:[t(ps,{m:S}),S.tags.map(w=>t("span",{class:"tag",children:["#",w]})),S.related.map(w=>t(Ni,{value:w})),S.supersedes?t("span",{class:"muted small",children:["supersedes ",t(Ni,{value:`mem:${S.supersedes}`})]}):null]}),t(pn,{source:S.body})]}):t("div",{children:[t("div",{class:"row",style:{marginBottom:6},children:[t("b",{class:"grow break",children:e??"New memory"}),e?t(N,{children:[t("span",{class:"muted small",children:"editing"}),t("button",{type:"button",class:"sm",onClick:y,children:"rename"}),t("button",{type:"button",class:"sm danger",onClick:b,children:"delete"})]}):null]}),e&&S?t("div",{class:"muted small",style:{marginBottom:8},children:[S.path," \xB7 created ",S.created.slice(0,10)," \xB7 updated ",S.updated.slice(0,10)]}):t("div",{class:"field",children:[t("label",{children:"name (topic/slug, optional \u2014 derived from kind + content)"}),t("input",{type:"text",placeholder:"auth/session-tokens",value:u.name,onInput:x("name")})]}),t("div",{class:"grid",style:{gridTemplateColumns:T?"1fr 1fr 2fr 2fr":"1fr 2fr 2fr",gap:8,marginBottom:0},children:[t("div",{class:"field",children:[t("label",{children:"kind"}),t("select",{value:u.kind,onChange:x("kind"),children:n.map(w=>t("option",{value:w,children:w}))})]}),T&&t("div",{class:"field",children:[t("label",{children:"status"}),t("select",{value:u.status,onChange:x("status"),children:[t("option",{value:"",children:"accepted (default)"}),s.map(w=>t("option",{value:w,children:w}))]})]}),t("div",{class:"field",children:[t("label",{children:"tags (comma separated)"}),t("input",{type:"text",value:u.tags,onInput:x("tags")})]}),t("div",{class:"field",children:[t("label",{children:"related (file:path, sym:path#Name, mem:name)"}),t("input",{type:"text",value:u.related,onInput:x("related")})]})]}),T&&t("div",{class:"field",children:[t("label",{children:"supersedes (name of the decision this replaces; it is marked superseded on save)"}),t("input",{type:"text",placeholder:"decision/old-approach",value:u.supersedes,onInput:x("supersedes")})]}),t("div",{class:"field",children:[t("div",{class:"row tight",children:[t("label",{class:"grow",children:"body (raw markdown)"}),t("a",{class:"small",onClick:()=>d(!c),children:c?"back to markdown":"preview"})]}),c?t(pn,{class:"preview",source:u.body.trim()?u.body:"_Nothing to preview yet._"}):t("textarea",{value:u.body,onInput:x("body"),onKeyDown:k,spellcheck:!1})]}),t("div",{class:"row",children:[t("button",{type:"button",class:"primary",disabled:g,onClick:p,children:g?t(B,{}):e?"Save":"Create"}),e?t("button",{type:"button",disabled:g,onClick:v,children:"Cancel"}):null,t("span",{class:"muted small",children:["\u2318S / Ctrl+S saves",e?", Esc cancels":""]})]})]})}function $l({rows:e}){let n=new Map;for(let s of e)(n.get(s.topic||"(no topic)")??n.set(s.topic||"(no topic)",[]).get(s.topic||"(no topic)")).push(s);return e.length?t("div",{class:"stack",children:[...n.entries()].sort().map(([s,i])=>t("div",{class:"card",children:[t("h3",{children:s}),i.map(r=>t("div",{style:{padding:"8px 0",borderBottom:"1px solid var(--line)"},children:[t("div",{class:"row tight",children:[t("b",{children:r.name}),t(ps,{m:r}),t("span",{class:"muted small",children:ge(r.updated_at)}),t("span",{class:"spacer"}),t("a",{class:"small",onClick:()=>z("memory",{name:r.name}),children:"open"})]}),r.supersedes?t("div",{class:"muted small",children:["supersedes ",r.supersedes]}):null,t("div",{style:{marginTop:6,fontSize:13},children:t(pn,{source:r.content})})]}))]}))}):t(W,{children:'No accepted decisions yet. Record one with kind "decision", or ask Claude to em_remember it.'})}function Bi({params:e}){let[n,s]=C(e.name?.startsWith("decision/")?"decision":e.tab??"all"),[i,r]=C(e.name??null),[a,o]=C(!1),[l,c]=C(""),[d,u]=C(""),h=j(()=>O("/api/memories"),[]);U(()=>{e.name&&(r(e.name),o(!1),s(m=>m==="graph"||m==="record"?e.name.startsWith("decision/")?"decision":"all":m))},[e.name]),U(()=>{e.tab&&s(e.tab)},[e.tab]),U(()=>{h.data?.gitignored&&K(`.gitignore keeps ${h.data.dir} out of git; memories stay local`,!0),h.data?.skipped.length&&K(`skipped invalid memory files: ${h.data.skipped.join(", ")}`,!0)},[h.data]);let g=V(()=>{let m=h.data?.memories??[],p=l.trim().toLowerCase();return m.filter(v=>(n==="all"||n==="record"||v.kind===n)&&(!d||(v.status??"accepted")===d)&&(!p||v.name.includes(p)||v.tags.some(b=>b.includes(p))||v.content.toLowerCase().includes(p)))},[h.data,n,l,d]);if(h.error)return t("div",{class:"page",children:t(J,{error:h.error})});let f=h.data,x=[["all","All"],...(f?.kinds??[]).map(m=>[m,m]),["record","Decision record"],["graph","Graph"]];return t("div",{class:"page",children:[t(Ce,{tabs:x,value:n,onChange:m=>{s(m),m!=="decision"&&u(""),(m==="graph"||e.tab)&&z("memory",{tab:m})}}),n==="graph"?t(Zt,{scope:"memory",focus:e.focus}):n==="record"?t($l,{rows:(f?.memories??[]).filter(m=>m.kind==="decision"&&(m.status??"accepted")==="accepted")}):t(N,{children:[t("div",{class:"row",style:{marginBottom:12},children:[t("button",{type:"button",class:"primary",onClick:()=>{o(!0),r(null)},children:"+ New memory"}),t("input",{type:"search",class:"grow",placeholder:"filter by name, tag or text\u2026",value:l,onInput:m=>c(m.target.value)}),n==="decision"&&t("select",{value:d,onChange:m=>u(m.target.value),children:[t("option",{value:"",children:"any status"}),(f?.statuses??[]).map(m=>t("option",{value:m,children:m}))]}),t("button",{type:"button",title:"re-import files edited by hand",onClick:async()=>{let m=await ye("/api/actions",{action:"reconcile"});K(m.output,!m.ok),h.reload()},children:"\u21BB Reconcile"}),t("span",{class:"muted small",children:[g.length," of ",f?.memories.length??0]})]}),t("div",{class:"grid wide",style:{gridTemplateColumns:"minmax(280px,1fr) minmax(0,2fr)",alignItems:"start"},children:[t("div",{class:"card flush",children:t("div",{class:"list",children:f?g.length?g.map(m=>t("div",{class:L("item",i===m.name&&"sel"),onClick:()=>{r(m.name),o(!1)},children:[t("div",{class:"n",children:m.name}),t("div",{class:"p",children:[t(ps,{m}),t("span",{class:"muted",children:[ge(m.updated_at)," \xB7 ",ee(m.size??0),"B"]})]}),t("div",{class:"p",children:El(m.content)})]})):t(W,{children:"no memories match"}):t(W,{children:t(B,{})})})}),t("div",{class:"card",children:a||i?t(Cl,{name:a?null:i,kinds:f?.kinds??[],statuses:f?.statuses??[],onSaved:m=>{o(!1),r(m),h.reload()},onDeleted:()=>{r(null),h.reload()}}):t(W,{children:"Select a memory, or create a new one."})})]})]}),t("div",{style:{display:"none"},children:t(D,{children:"x"})})]})}function Hi({rows:e}){let n=[...e].sort((s,i)=>i.raw_chars-s.raw_chars);return t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"tool"}),t("th",{class:"num",children:"calls"}),t("th",{class:"num",children:"seen"}),t("th",{class:"num",children:"returned"}),t("th",{class:"num",children:"saved"})]})}),t("tbody",{children:n.length?n.map(s=>{let i=Math.ceil(s.raw_chars/4),r=Math.ceil(s.returned_chars/4);return t("tr",{children:[t("td",{children:s.tool}),t("td",{class:"num",children:s.calls}),t("td",{class:"num",children:ee(i)}),t("td",{class:"num",children:ee(r)}),t("td",{class:"num",children:ee(Math.max(0,i-r))})]})}):t("tr",{children:t("td",{class:"muted",colSpan:5,children:"no calls yet"})})})]})}function zi(){let e=j(()=>O("/api/stats"),[]);if(e.error)return t("div",{class:"page",children:t(J,{error:e.error})});let n=e.data;if(!n)return t("div",{class:"page",children:t(B,{})});let s=[["session saved",ee(n.session.savedTokens),`${Ye(n.session.efficiency)} efficient \xB7 ${n.session.calls} calls`],["project saved",ee(n.projectTotals.savedTokens),`${Ye(n.projectTotals.efficiency)} efficient \xB7 ${n.projectTotals.calls} calls`],["lifetime saved",ee(n.lifetime.savedTokens),`${Ye(n.lifetime.efficiency)} efficient \xB7 ${n.lifetime.calls} calls`],["documents",String(n.index.documents),t(N,{children:[n.index.vectors," vectors",n.index.pendingEmbeddings?t("span",{class:"warn",children:" \xB7 backlog"}):null]})],["memories",String(n.index.memories),`${n.onboarding.length}/4 onboarding`],["graph",`${n.index.graph.nodes} nodes`,`${n.index.graph.edges} edges`]],i=Math.max(1,...n.daily.map(a=>a.saved_chars)),r=["overview","structure","commands","conventions"].filter(a=>!n.onboarding.includes(a));return t("div",{class:"page",children:[t("div",{class:"grid",children:s.map(([a,o,l])=>t("div",{class:"card",children:[t("h3",{children:a}),t("div",{class:"big",children:o}),t("div",{class:"sub",children:l})]}))}),t("div",{class:"grid wide",children:[t("div",{class:"card",children:[t("h3",{children:["tokens saved per day",t("span",{class:"right",children:n.daily.length?`${n.daily[0]?.day} \u2192 ${n.daily[n.daily.length-1]?.day}`:""})]}),t("div",{class:"bars",children:n.daily.length?n.daily.map(a=>t("div",{title:`${a.day}: ${ee(Math.ceil(a.saved_chars/4))} tokens, ${a.calls} calls`,style:{height:`${Math.max(2,100*a.saved_chars/i)}%`}})):t("div",{class:"muted",children:"no data yet"})})]}),t("div",{class:"card",children:[t("h3",{children:"system"}),t(Ie,{rows:[["project",n.project],["database",n.dbPath],["routing",n.routing],["embeddings",n.index.embeddings],["memories dir",n.memoriesDir],["onboarding",r.length?t("span",{class:"warn",children:["missing: ",r.join(", ")," \u2014 run /eminiar:em-onboard"]}):t("span",{class:"ok",children:"complete"})],["session",n.session.id]]})]})]}),t("div",{class:"grid two",children:[t("div",{class:"card",children:[t("h3",{children:"this session \xB7 by tool"}),t(Hi,{rows:n.session.tools})]}),t("div",{class:"card",children:[t("h3",{children:"lifetime \xB7 by tool"}),t(Hi,{rows:n.lifetime.tools})]})]}),t("div",{class:"grid",children:[t("div",{class:"card",children:[t("h3",{children:"index by source"}),t("table",{children:t("tbody",{children:Object.entries(n.index.bySource).filter(([,a])=>a).map(([a,o])=>t("tr",{children:[t("td",{children:a}),t("td",{class:"num",children:o})]}))})})]}),t("div",{class:"card",children:[t("h3",{children:"graph by edge kind"}),t("table",{children:t("tbody",{children:Object.entries(n.index.graph.byKind??{}).sort((a,o)=>o[1]-a[1]).map(([a,o])=>t("tr",{children:[t("td",{children:a}),t("td",{class:"num",children:o})]}))})})]}),t("div",{class:"card",style:{gridColumn:"span 2"},children:[t("h3",{children:["recent sessions"," ",t("a",{class:"right",onClick:()=>z("sessions"),children:"all \u2192"})]}),t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"started"}),t("th",{children:"session"}),t("th",{children:"last prompt"}),t("th",{class:"num",children:"calls"}),t("th",{class:"num",children:"saved"})]})}),t("tbody",{children:n.sessions.map(a=>t("tr",{children:[t("td",{class:"muted",children:[oe(a.started_at)," ",a.current?t(D,{children:"current"}):null]}),t("td",{children:t("code",{children:a.id.slice(0,8)})}),t("td",{class:"muted",children:(a.last_prompt??"").slice(0,90)}),t("td",{class:"num",children:a.calls}),t("td",{class:"num",children:ee(a.savedTokens)})]}))})]})]})]})]})}function ji(){let e=j(()=>O("/api/sessions",{limit:60}),[]),[n,s]=C(null),[i,r]=C(""),[a,o]=C(100);U(()=>{!n&&e.data?.[0]&&s(e.data[0].id)},[e.data]);let l=j(()=>n?O("/api/events",{session:n,category:i||void 0,limit:a}):Promise.resolve([]),[n,i,a]),c=[...new Set((l.data??[]).map(d=>d.category))].sort();return e.error?t("div",{class:"page",children:t(J,{error:e.error})}):t("div",{class:"page",children:t("div",{class:"grid wide",style:{gridTemplateColumns:"minmax(280px,1fr) minmax(0,2fr)",alignItems:"start"},children:[t("div",{class:"card flush",children:t("div",{class:"list",children:e.data?e.data.length?e.data.map(d=>t("div",{class:L("item",n===d.id&&"sel"),onClick:()=>s(d.id),children:[t("div",{class:"n",children:[t("code",{children:d.id.slice(0,8)})," ",d.current?t(D,{children:"current"}):null,t("span",{class:"muted",style:{float:"right",fontWeight:400},children:oe(d.started_at)})]}),t("div",{class:"p",children:(d.last_prompt??"(no prompt yet)").slice(0,100)}),t("div",{class:"p",children:[d.calls," calls \xB7 ",ee(d.savedTokens)," saved \xB7 ",Ye(d.efficiency),d.source?` \xB7 ${d.source}`:""]})]})):t(W,{children:"no sessions yet"}):t(W,{children:t(B,{})})})}),t("div",{class:"card",children:[t("h3",{children:["events \xB7 ",n?n.slice(0,8):"all"," \xB7 ",l.data?.length??0]}),t("div",{class:"row",style:{marginBottom:8},children:[t("select",{value:i,onChange:d=>r(d.target.value),children:[t("option",{value:"",children:"all categories"}),c.map(d=>t("option",{value:d,children:d}))]}),t("label",{class:"muted small",children:["limit"," ",t("select",{value:String(a),onChange:d=>o(Number(d.target.value)),children:[100,300,1e3].map(d=>t("option",{value:String(d),children:d}))})]})]}),l.error?t(J,{error:l.error}):t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"time"}),t("th",{children:"category"}),t("th",{children:"tool"}),t("th",{children:"payload"})]})}),t("tbody",{children:(l.data??[]).length?(l.data??[]).map(d=>t("tr",{children:[t("td",{class:"muted nowrap",title:new Date(d.ts).toLocaleString(),children:Ws(d.ts)}),t("td",{class:"nowrap",children:[t(D,{children:["P",d.priority]}),d.category]}),t("td",{children:d.tool??""}),t("td",{children:t("pre",{class:"json",children:JSON.stringify(d.payload).slice(0,400)})})]})):t("tr",{children:t("td",{colSpan:4,class:"muted",children:"no events"})})})]})]})]})})}function Al(){let[e,n]=C(!1),s=j(()=>O("/api/doctor",{fix:e?1:void 0}),[e]),i=(s.data??[]).filter(r=>!r.ok).length;return t(N,{children:[t("div",{class:"row",style:{marginBottom:10},children:[t("button",{type:"button",class:"primary",onClick:()=>s.reload(),children:"Re-run"}),t("button",{type:"button",onClick:()=>{n(!0),s.reload()},children:"Run with --fix"}),t("span",{class:"muted small",children:s.loading?t(B,{}):s.data?i?t("span",{class:"bad",children:[i," problem",i>1?"s":""]}):t("span",{class:"ok",children:"all checks pass"}):""})]}),s.error?t(J,{error:s.error}):t("div",{class:"card flush",children:t("table",{children:t("tbody",{children:(s.data??[]).map(r=>t("tr",{children:[t("td",{class:L(r.ok?"ok":"bad"),style:{width:24},children:r.ok?"\u2713":"\u2717"}),t("td",{class:"nowrap",children:r.name}),t("td",{class:"break",children:r.detail})]}))})})})]})}function Rl({onChanged:e}){let[n,s]=C([]),[i,r]=C(null),[a,o]=C("all"),[l,c]=C(!1),[d,u]=C(""),[h,g]=C(""),[f,x]=C("index"),[m,p]=C(""),v=j(()=>O("/api/stats"),[]),b=async(k,S)=>{r(k);let T=new Date().toLocaleTimeString();s(w=>[...w,`[${T}] ${k} \u2026`]);try{let w=await ye("/api/actions",S);s(E=>[...E,`${w.ok?"\u2713":"\u2717"} ${k} (${w.ms} ms)
82
- ${w.output}`]),w.ok?K(`${k} done`):K(w.output.split(`
83
- `)[0]??"failed",!0),e()}catch(w){s(E=>[...E,`\u2717 ${k} failed: ${w.message}`]),K(w.message,!0)}finally{r(null)}},y=({label:k,body:S,cls:T})=>t("button",{type:"button",class:T??"primary",disabled:!!i,onClick:()=>b(k,S),children:i===k?t(B,{}):k});return t(N,{children:[t("div",{class:"actions",children:[t("div",{class:"card",children:[t("h3",{children:"reindex"}),t("p",{children:"Rebuild the code graph, git signals, metrics, docs, memories or embeddings. Incremental unless full."}),t("div",{class:"row",children:[t("select",{value:a,onChange:k=>o(k.target.value),children:["all","code","git","metrics","docs","memories","embeddings"].map(k=>t("option",{value:k,children:k}))}),t("label",{class:"small",children:[t("input",{type:"checkbox",checked:l,onChange:k=>c(k.target.checked)})," ","full"]}),t(y,{label:`reindex ${a}`,body:{action:"reindex",scope:a,full:l}})]})]}),t("div",{class:"card",children:[t("h3",{children:"index a path"}),t("p",{children:"Index files or a directory into search (markdown by default; pass globs for other files)."}),t("div",{class:"row",children:[t("input",{type:"text",class:"grow",placeholder:"docs/ or README.md",value:d,onInput:k=>u(k.target.value)}),t("input",{type:"text",placeholder:"globs, comma separated",style:{maxWidth:200},value:h,onInput:k=>g(k.target.value)}),t("button",{type:"button",class:"primary",disabled:!!i||!d.trim(),onClick:()=>b("index",{action:"index",path:d,glob:h}),children:"Index"})]})]}),t("div",{class:"card",children:[t("h3",{children:"embeddings"}),t("p",{children:["Embed every chunk that still has no vector. Loads the model on first use."," ",v.data?t("span",{class:"muted",children:["(",v.data.index.embeddings,")"]}):null]}),t("div",{class:"row",children:t(y,{label:"embed pending",body:{action:"embed"}})})]}),t("div",{class:"card",children:[t("h3",{children:"memories"}),t("p",{children:["Re-import memory files edited, added or removed by hand under"," ",t("code",{children:v.data?.memoriesDir??".eminiar/memories"}),"."]}),t("div",{class:"row",children:t(y,{label:"reconcile",body:{action:"reconcile"}})})]}),t("div",{class:"card",children:[t("h3",{children:"purge"}),t("p",{children:"Permanently delete project data. Memory files stay on disk and are re-imported."}),t("div",{class:"row",children:[t("select",{value:f,onChange:k=>x(k.target.value),children:["index","sessions","graph","memories","all"].map(k=>t("option",{value:k,children:k}))}),t("input",{type:"text",placeholder:'type "purge" to confirm',style:{maxWidth:180},value:m,onInput:k=>p(k.target.value)}),t("button",{type:"button",class:"danger",disabled:!!i||m.trim()!=="purge",onClick:()=>{p(""),b(`purge ${f}`,{action:"purge",scope:f,confirm:!0})},children:"Purge"}),t(y,{label:"empty fetch cache",body:{action:"purge-fetch-cache"},cls:""})]})]}),t("div",{class:"card",children:[t("h3",{children:"server"}),v.data?t(Ie,{rows:[["project",v.data.project],["database",v.data.dbPath],["routing",v.data.routing]]}):t(B,{})]})]}),t("div",{class:"card",children:[t("h3",{children:["action log"," ",t("button",{type:"button",class:"sm right",onClick:()=>s([]),children:"clear"})]}),t("pre",{class:"log",children:n.length?n.join(`
78
+ `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${ve(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:n,text:s,tokens:i,autolink:r}){let a=r?ve(s,!0):this.parser.parseInline(i),o=Si(e);if(o===null)return a;e=ve(o,r);let l='<a href="'+e+'"';return n&&(l+=' title="'+ve(n)+'"'),l+=">"+a+"</a>",l}image({href:e,title:n,text:s,tokens:i}){i&&(s=this.parser.parseInline(i,this.parser.textRenderer));let r=Si(e);if(r===null)return ve(s);e=r;let a=`<img src="${ve(e)}" alt="${ve(s)}"`;return n&&(a+=` title="${ve(n)}"`),a+=">",a}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:ve(e.text)}},gs=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},Se=class os{constructor(n){Q(this,"options");Q(this,"renderer");Q(this,"textRenderer");this.options=n||Ke,this.options.renderer=this.options.renderer||new bn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new gs}static parse(n,s){return new os(s).parse(n)}static parseInline(n,s){return new os(s).parseInline(n)}parse(n){this.renderer.parser=this;let s="";for(let i=0;i<n.length;i++){let r=n[i];if(this.options.extensions?.renderers?.[r.type]){let o=r,l=this.options.extensions.renderers[o.type].call({parser:this},o);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(o.type)){s+=l||"";continue}}let a=r;switch(a.type){case"space":{s+=this.renderer.space(a);break}case"hr":{s+=this.renderer.hr(a);break}case"heading":{s+=this.renderer.heading(a);break}case"code":{s+=this.renderer.code(a);break}case"table":{s+=this.renderer.table(a);break}case"blockquote":{s+=this.renderer.blockquote(a);break}case"list":{s+=this.renderer.list(a);break}case"checkbox":{s+=this.renderer.checkbox(a);break}case"html":{s+=this.renderer.html(a);break}case"def":{s+=this.renderer.def(a);break}case"paragraph":{s+=this.renderer.paragraph(a);break}case"text":{s+=this.renderer.text(a);break}default:{let o='Token with "'+a.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return s}parseInline(n,s=this.renderer){this.renderer.parser=this;let i="";for(let r=0;r<n.length;r++){let a=n[r];if(this.options.extensions?.renderers?.[a.type]){let l=this.options.extensions.renderers[a.type].call({parser:this},a);if(l!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(a.type)){i+=l||"";continue}}let o=a;switch(o.type){case"escape":{i+=s.text(o);break}case"html":{i+=s.html(o);break}case"link":{i+=s.link(o);break}case"image":{i+=s.image(o);break}case"checkbox":{i+=s.checkbox(o);break}case"strong":{i+=s.strong(o);break}case"em":{i+=s.em(o);break}case"codespan":{i+=s.codespan(o);break}case"br":{i+=s.br(o);break}case"del":{i+=s.del(o);break}case"text":{i+=s.text(o);break}default:{let l='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return i}},mn,St=(mn=class{constructor(e){Q(this,"options");Q(this,"block");this.options=e||Ke}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?_e.lex:_e.lexInline}provideParser(e=this.block){return e?Se.parse:Se.parseInline}},Q(mn,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),Q(mn,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),mn);function qe(e,n){if(Array.isArray(n))for(let s=0;s<n.length;s++)e.push(n[s]);else e.push(n)}var Ml=class{constructor(...e){Q(this,"defaults",ls());Q(this,"options",this.setOptions);Q(this,"parse",this.parseMarkdown(!0));Q(this,"parseInline",this.parseMarkdown(!1));Q(this,"Parser",Se);Q(this,"Renderer",bn);Q(this,"TextRenderer",gs);Q(this,"Lexer",_e);Q(this,"Tokenizer",fn);Q(this,"Hooks",St);this.use(...e)}walkTokens(e,n){let s=[];for(let i of e)switch(qe(s,n.call(this,i)),i.type){case"table":{let r=i;for(let a of r.header)qe(s,this.walkTokens(a.tokens,n));for(let a of r.rows)for(let o of a)qe(s,this.walkTokens(o.tokens,n));break}case"list":{let r=i;qe(s,this.walkTokens(r.items,n));break}default:{let r=i;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(a=>{let o=r[a].flat(1/0);qe(s,this.walkTokens(o,n))}):r.tokens&&qe(s,this.walkTokens(r.tokens,n))}}return s}use(...e){let n=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(s=>{let i={...s};if(i.async=this.defaults.async||i.async||!1,s.extensions&&(s.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let a=n.renderers[r.name];a?n.renderers[r.name]=function(...o){let l=r.renderer.apply(this,o);return l===!1&&(l=a.apply(this,o)),l}:n.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=n[r.level];a?a.unshift(r.tokenizer):n[r.level]=[r.tokenizer],r.start&&(r.level==="block"?n.startBlock?n.startBlock.push(r.start):n.startBlock=[r.start]:r.level==="inline"&&(n.startInline?n.startInline.push(r.start):n.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(n.childTokens[r.name]=r.childTokens)}),i.extensions=n),s.renderer){let r=this.defaults.renderer||new bn(this.defaults);for(let a in s.renderer){if(!(a in r))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let o=a,l=s.renderer[o],d=r[o];r[o]=(...c)=>{let u=l.apply(r,c);return u===!1&&(u=d.apply(r,c)),u||""}}i.renderer=r}if(s.tokenizer){let r=this.defaults.tokenizer||new fn(this.defaults);for(let a in s.tokenizer){if(!(a in r))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let o=a,l=s.tokenizer[o],d=r[o];r[o]=(...c)=>{let u=l.apply(r,c);return u===!1&&(u=d.apply(r,c)),u}}i.tokenizer=r}if(s.hooks){let r=this.defaults.hooks||new St;for(let a in s.hooks){if(!(a in r))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let o=a,l=s.hooks[o],d=r[o];St.passThroughHooks.has(a)?r[o]=c=>{if(this.defaults.async&&St.passThroughHooksRespectAsync.has(a))return(async()=>{let p=await l.call(r,c);return d.call(r,p)})();let u=l.call(r,c);return d.call(r,u)}:r[o]=(...c)=>{if(this.defaults.async)return(async()=>{let p=await l.apply(r,c);return p===!1&&(p=await d.apply(r,c)),p})();let u=l.apply(r,c);return u===!1&&(u=d.apply(r,c)),u}}i.hooks=r}if(s.walkTokens){let r=this.defaults.walkTokens,a=s.walkTokens;i.walkTokens=function(o){let l=[];return l.push(a.call(this,o)),r&&qe(l,r.call(this,o)),l}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,n){return _e.lex(e,n??this.defaults)}parser(e,n){return Se.parse(e,n??this.defaults)}parseMarkdown(e){return(n,s)=>{let i={...s},r={...this.defaults,...i},a=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=e),r.async)return(async()=>{let o=r.hooks?await r.hooks.preprocess(n):n,l=await(r.hooks?await r.hooks.provideLexer(e):e?_e.lex:_e.lexInline)(o,r),d=r.hooks?await r.hooks.processAllTokens(l):l;r.walkTokens&&await Promise.all(this.walkTokens(d,r.walkTokens));let c=await(r.hooks?await r.hooks.provideParser(e):e?Se.parse:Se.parseInline)(d,r);return r.hooks?await r.hooks.postprocess(c):c})().catch(a);try{r.hooks&&(n=r.hooks.preprocess(n));let o=(r.hooks?r.hooks.provideLexer(e):e?_e.lex:_e.lexInline)(n,r);r.hooks&&(o=r.hooks.processAllTokens(o)),r.walkTokens&&this.walkTokens(o,r.walkTokens);let l=(r.hooks?r.hooks.provideParser(e):e?Se.parse:Se.parseInline)(o,r);return r.hooks&&(l=r.hooks.postprocess(l)),l}catch(o){return a(o)}}}onError(e,n){return s=>{if(s.message+=`
79
+ Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+ve(s.message+"",!0)+"</pre>";return n?Promise.resolve(i):i}if(n)return Promise.reject(s);throw s}}},Ve=new Ml;function ne(e,n){return Ve.parse(e,n)}ne.options=ne.setOptions=function(e){return Ve.setOptions(e),ne.defaults=Ve.defaults,Ri(ne.defaults),ne};ne.getDefaults=ls;ne.defaults=Ke;function Dl(...e){return Ve.use(...e),ne.defaults=Ve.defaults,Ri(ne.defaults),ne}ne.use=Dl;ne.walkTokens=function(e,n){return Ve.walkTokens(e,n)};ne.parseInline=Ve.parseInline;ne.Parser=Se;ne.parser=Se.parse;ne.Renderer=bn;ne.TextRenderer=gs;ne.Lexer=_e;ne.lexer=_e.lex;ne.Tokenizer=fn;ne.Hooks=St;ne.parse=ne;var Vp=ne.options,Kp=ne.setOptions,Zp=ne.walkTokens,Yp=ne.parseInline;var Qp=Se.parse,Bi=_e.lex;var Il={ts:"typescript",js:"javascript",mjs:"javascript",cjs:"javascript",py:"python",sh:"bash",shell:"bash",zsh:"bash",console:"bash",jsonc:"json",md:"markdown"},zi={amp:"&",lt:"<",gt:">",quot:'"',apos:"'","#39":"'"};function Nl(e){return e.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi,(n,s)=>s in zi?zi[s]:s.startsWith("#x")?String.fromCodePoint(Number.parseInt(s.slice(2),16)):s.startsWith("#")?String.fromCodePoint(Number.parseInt(s.slice(1),10)):n)}function Te({tokens:e}){return t(P,{children:(e??[]).map((n,s)=>ji(n,s))})}function Pl({t:e}){let n=wt(e.href),s=t(Te,{tokens:e.tokens}),i=e.title??void 0,r=un(n);return r?t("a",{class:"ref",href:r,title:i??e.href,children:s}):n.kind==="external"?t("a",{href:n.href,title:i,target:"_blank",rel:"noopener noreferrer",children:s}):n.kind==="anchor"?t("a",{href:n.href,title:i,children:s}):t("span",{title:e.href,children:s})}function ji(e,n){switch(e.type){case"text":{let s=e;return s.tokens?t(Te,{tokens:s.tokens},n):s.escaped?Nl(s.text):s.text}case"escape":return e.text;case"strong":return t("strong",{children:t(Te,{tokens:e.tokens})},n);case"em":return t("em",{children:t(Te,{tokens:e.tokens})},n);case"del":return t("del",{children:t(Te,{tokens:e.tokens})},n);case"codespan":return t("code",{children:e.text},n);case"br":return t("br",{},n);case"link":return t(Pl,{t:e},n);case"image":{let s=e,i=wt(s.href);return i.kind==="external"?t("img",{src:i.href,alt:s.text,title:s.title??void 0,loading:"lazy"},n):t("span",{class:"md-html",title:s.href,children:s.text},n)}case"checkbox":return t("input",{type:"checkbox",checked:e.checked,disabled:!0},n);case"html":return t("span",{class:"md-html",children:e.text},n);default:{let s=e;return s.tokens?t(Te,{tokens:s.tokens},n):s.raw}}}function Ol({t:e}){let n=(e.lang??"").trim().split(/\s+/)[0]?.toLowerCase()??"",s=Il[n]??n,i=V(()=>an(e.text,s).join(`
80
+ `),[e.text,s]);return t("pre",{class:"code","data-lang":n||void 0,children:t("code",{dangerouslySetInnerHTML:{__html:i}})})}function fs({tokens:e}){return t(P,{children:(e??[]).map((n,s)=>Hl(n,s))})}function Hl(e,n){switch(e.type){case"space":case"def":return null;case"heading":{let s=e;return zt(`h${Math.min(Math.max(s.depth,1),6)}`,{key:n},t(Te,{tokens:s.tokens}))}case"paragraph":return t("p",{children:t(Te,{tokens:e.tokens})},n);case"text":{let s=e;return s.tokens?t(Te,{tokens:s.tokens},n):s.text}case"checkbox":return ji(e,n);case"code":return t(Ol,{t:e},n);case"blockquote":return t("blockquote",{children:t(fs,{tokens:e.tokens})},n);case"list":{let s=e,i=s.items.map((r,a)=>t("li",{class:r.task?"task":void 0,children:t(fs,{tokens:r.tokens})},a));return s.ordered?t("ol",{start:s.start===""?void 0:s.start,children:i},n):t("ul",{children:i},n)}case"table":{let s=e,i=(r,a)=>zt(r.header?"th":"td",{key:a,style:r.align?{textAlign:r.align}:void 0},t(Te,{tokens:r.tokens}));return t("table",{children:[t("thead",{children:t("tr",{children:s.header.map(i)})}),t("tbody",{children:s.rows.map((r,a)=>t("tr",{children:r.map(i)},a))})]},n)}case"hr":return t("hr",{},n);case"html":return t("pre",{class:"md-html",children:e.text},n);default:{let s=e;return t("p",{children:s.tokens?t(Te,{tokens:s.tokens}):s.raw},n)}}}function vn({source:e,class:n}){let s=V(()=>Bi(e,{gfm:!0}),[e]);return t("div",{class:n?`md ${n}`:"md",children:t(fs,{tokens:s})})}var Bl={decision:"#7c3aed",constraint:"#dc2626",fact:"#2563eb",preference:"#0d9488",todo:"#d97706",note:"#6b7280",onboarding:"#16a34a"};function bs({m:e}){return t(P,{children:[t("span",{class:"tag kind",style:{color:Bl[e.kind]??"#6b7280"},children:e.kind}),e.status&&e.status!=="accepted"?t("span",{class:`tag s-${e.status}`,children:e.status}):null]})}function Ui({value:e}){let n=un(wt(e));return n?t("a",{class:"ref",href:n,title:e,children:e}):t("span",{class:"tag",title:e,children:e})}function zl(e){return e.split(`
81
+ `).find(n=>n.trim())?.replace(/^#+\s*/,"").slice(0,120)??""}var Gi={kind:"fact",tags:"",related:"",body:"",name:"",status:"",supersedes:""};function Xi(e){return{kind:e.kind,tags:e.tags.join(", "),related:e.related.join(", "),body:e.body,name:e.name,status:e.status??"",supersedes:e.supersedes??""}}function jl({name:e,kinds:n,statuses:s,onSaved:i,onDeleted:r}){let a=X(()=>e?H("/api/memories",{name:e}):Promise.resolve(void 0),[e]),[o,l]=S(!e),[d,c]=S(!1),[u,p]=S(Gi),[g,f]=S(!1);U(()=>{l(!e),c(!1)},[e]),U(()=>{let w=a.data;e&&w&&p(Xi(w)),e||p(Gi)},[e,a.data]);let x=w=>C=>p({...u,[w]:C.target.value}),h=()=>{l(!1),c(!1)},m=async()=>{if(!u.body.trim())return Z("body required",!0);f(!0);try{let w={kind:u.kind,content:u.body,tags:u.tags,related:u.related,status:u.status||void 0,supersedes:u.supersedes||void 0},C=e?await ye("/api/memories",w,"PUT",{name:e}):await ye("/api/memories",{...w,name:u.name.trim()||void 0});Z(`${e?"saved":"created"} ${C.name}${C.superseded?` \xB7 ${C.superseded} marked superseded`:""}`),e===C.name&&a.reload(),i(C.name),h()}catch(w){Z(w.message,!0)}finally{f(!1)}},v=()=>{a.data&&p(Xi(a.data)),h()},y=async()=>{if(!(!e||!confirm(`Delete memory "${e}" and its file?`)))try{await Xt("/api/memories",{name:e}),Z(`deleted ${e}`),r()}catch(w){Z(w.message,!0)}},b=async()=>{if(!e)return;let w=prompt("New name (topic/slug):",e);if(!(!w||w===e))try{let C=await ye("/api/memories",{to:w},"PATCH",{name:e});Z(`renamed \u2192 ${C.name}${C.refsUpdated?` (${C.refsUpdated} references updated)`:""}`),i(C.name)}catch(C){Z(C.message,!0)}},k=w=>{(w.metaKey||w.ctrlKey)&&w.key.toLowerCase()==="s"?(w.preventDefault(),m()):w.key==="Escape"&&e&&(w.preventDefault(),v())};if(e&&a.error)return t(K,{error:a.error});if(e&&!a.data)return t(z,{});let T=a.data,E=u.kind==="decision";return e&&T&&!o?t("div",{children:[t("div",{class:"row",style:{marginBottom:6},children:[t("b",{class:"grow break",children:e}),t("button",{type:"button",class:"sm primary",onClick:()=>l(!0),children:"edit"}),t("button",{type:"button",class:"sm",onClick:b,children:"rename"}),t("button",{type:"button",class:"sm",title:"this memory in the knowledge graph",onClick:()=>O("memory",{tab:"graph",focus:`memory:${e}`}),children:"graph"}),t("button",{type:"button",class:"sm danger",onClick:y,children:"delete"})]}),t("div",{class:"muted small",style:{marginBottom:8},children:[T.path," \xB7 created ",T.created.slice(0,10)," \xB7 updated ",T.updated.slice(0,10)]}),t("div",{class:"row tight mem-refs",style:{marginBottom:12},children:[t(bs,{m:T}),T.tags.map(w=>t("span",{class:"tag",children:["#",w]})),T.related.map(w=>t(Ui,{value:w})),T.supersedes?t("span",{class:"muted small",children:["supersedes ",t(Ui,{value:`mem:${T.supersedes}`})]}):null]}),t(vn,{source:T.body})]}):t("div",{children:[t("div",{class:"row",style:{marginBottom:6},children:[t("b",{class:"grow break",children:e??"New memory"}),e?t(P,{children:[t("span",{class:"muted small",children:"editing"}),t("button",{type:"button",class:"sm",onClick:b,children:"rename"}),t("button",{type:"button",class:"sm danger",onClick:y,children:"delete"})]}):null]}),e&&T?t("div",{class:"muted small",style:{marginBottom:8},children:[T.path," \xB7 created ",T.created.slice(0,10)," \xB7 updated ",T.updated.slice(0,10)]}):t("div",{class:"field",children:[t("label",{children:"name (topic/slug, optional \u2014 derived from kind + content)"}),t("input",{type:"text",placeholder:"auth/session-tokens",value:u.name,onInput:x("name")})]}),t("div",{class:"grid",style:{gridTemplateColumns:E?"1fr 1fr 2fr 2fr":"1fr 2fr 2fr",gap:8,marginBottom:0},children:[t("div",{class:"field",children:[t("label",{children:"kind"}),t("select",{value:u.kind,onChange:x("kind"),children:n.map(w=>t("option",{value:w,children:w}))})]}),E&&t("div",{class:"field",children:[t("label",{children:"status"}),t("select",{value:u.status,onChange:x("status"),children:[t("option",{value:"",children:"accepted (default)"}),s.map(w=>t("option",{value:w,children:w}))]})]}),t("div",{class:"field",children:[t("label",{children:"tags (comma separated)"}),t("input",{type:"text",value:u.tags,onInput:x("tags")})]}),t("div",{class:"field",children:[t("label",{children:"related (file:path, sym:path#Name, mem:name)"}),t("input",{type:"text",value:u.related,onInput:x("related")})]})]}),E&&t("div",{class:"field",children:[t("label",{children:"supersedes (name of the decision this replaces; it is marked superseded on save)"}),t("input",{type:"text",placeholder:"decision/old-approach",value:u.supersedes,onInput:x("supersedes")})]}),t("div",{class:"field",children:[t("div",{class:"row tight",children:[t("label",{class:"grow",children:"body (raw markdown)"}),t("a",{class:"small",onClick:()=>c(!d),children:d?"back to markdown":"preview"})]}),d?t(vn,{class:"preview",source:u.body.trim()?u.body:"_Nothing to preview yet._"}):t("textarea",{value:u.body,onInput:x("body"),onKeyDown:k,spellcheck:!1})]}),t("div",{class:"row",children:[t("button",{type:"button",class:"primary",disabled:g,onClick:m,children:g?t(z,{}):e?"Save":"Create"}),e?t("button",{type:"button",disabled:g,onClick:v,children:"Cancel"}):null,t("span",{class:"muted small",children:["\u2318S / Ctrl+S saves",e?", Esc cancels":""]})]})]})}function Ul({rows:e}){let n=new Map;for(let s of e)(n.get(s.topic||"(no topic)")??n.set(s.topic||"(no topic)",[]).get(s.topic||"(no topic)")).push(s);return e.length?t("div",{class:"stack",children:[...n.entries()].sort().map(([s,i])=>t("div",{class:"card",children:[t("h3",{children:s}),i.map(r=>t("div",{style:{padding:"8px 0",borderBottom:"1px solid var(--line)"},children:[t("div",{class:"row tight",children:[t("b",{children:r.name}),t(bs,{m:r}),t("span",{class:"muted small",children:ge(r.updated_at)}),t("span",{class:"spacer"}),t("a",{class:"small",onClick:()=>O("memory",{name:r.name}),children:"open"})]}),r.supersedes?t("div",{class:"muted small",children:["supersedes ",r.supersedes]}):null,t("div",{style:{marginTop:6,fontSize:13},children:t(vn,{source:r.content})})]}))]}))}):t(W,{children:'No accepted decisions yet. Record one with kind "decision", or ask Claude to em_remember it.'})}function qi({params:e}){let[n,s]=S(e.name?.startsWith("decision/")?"decision":e.tab??"all"),[i,r]=S(e.name??null),[a,o]=S(!1),[l,d]=S(""),[c,u]=S(""),p=X(()=>H("/api/memories"),[]);U(()=>{e.name&&(r(e.name),o(!1),s(h=>h==="graph"||h==="record"?e.name.startsWith("decision/")?"decision":"all":h))},[e.name]),U(()=>{e.tab&&s(e.tab)},[e.tab]),U(()=>{p.data?.gitignored&&Z(`.gitignore keeps ${p.data.dir} out of git; memories stay local`,!0),p.data?.skipped.length&&Z(`skipped invalid memory files: ${p.data.skipped.join(", ")}`,!0)},[p.data]);let g=V(()=>{let h=p.data?.memories??[],m=l.trim().toLowerCase();return h.filter(v=>(n==="all"||n==="record"||v.kind===n)&&(!c||(v.status??"accepted")===c)&&(!m||v.name.includes(m)||v.tags.some(y=>y.includes(m))||v.content.toLowerCase().includes(m)))},[p.data,n,l,c]);if(p.error)return t("div",{class:"page",children:t(K,{error:p.error})});let f=p.data,x=[["all","All"],...(f?.kinds??[]).map(h=>[h,h]),["record","Decision record"],["graph","Graph"]];return t("div",{class:"page",children:[t($e,{tabs:x,value:n,onChange:h=>{s(h),h!=="decision"&&u(""),(h==="graph"||e.tab)&&O("memory",{tab:h})}}),n==="graph"?t(sn,{scope:"memory",focus:e.focus}):n==="record"?t(Ul,{rows:(f?.memories??[]).filter(h=>h.kind==="decision"&&(h.status??"accepted")==="accepted")}):t(P,{children:[t("div",{class:"row",style:{marginBottom:12},children:[t("button",{type:"button",class:"primary",onClick:()=>{o(!0),r(null)},children:"+ New memory"}),t("input",{type:"search",class:"grow",placeholder:"filter by name, tag or text\u2026",value:l,onInput:h=>d(h.target.value)}),n==="decision"&&t("select",{value:c,onChange:h=>u(h.target.value),children:[t("option",{value:"",children:"any status"}),(f?.statuses??[]).map(h=>t("option",{value:h,children:h}))]}),t("button",{type:"button",title:"re-import files edited by hand",onClick:async()=>{let h=await ye("/api/actions",{action:"reconcile"});Z(h.output,!h.ok),p.reload()},children:"\u21BB Reconcile"}),t("span",{class:"muted small",children:[g.length," of ",f?.memories.length??0]})]}),t("div",{class:"grid wide",style:{gridTemplateColumns:"minmax(280px,1fr) minmax(0,2fr)",alignItems:"start"},children:[t("div",{class:"card flush",children:t("div",{class:"list",children:f?g.length?g.map(h=>t("div",{class:D("item",i===h.name&&"sel"),onClick:()=>{r(h.name),o(!1)},children:[t("div",{class:"n",children:h.name}),t("div",{class:"p",children:[t(bs,{m:h}),t("span",{class:"muted",children:[ge(h.updated_at)," \xB7 ",te(h.size??0),"B"]})]}),t("div",{class:"p",children:zl(h.content)})]})):t(W,{children:"no memories match"}):t(W,{children:t(z,{})})})}),t("div",{class:"card",children:a||i?t(jl,{name:a?null:i,kinds:f?.kinds??[],statuses:f?.statuses??[],onSaved:h=>{o(!1),r(h),p.reload()},onDeleted:()=>{r(null),p.reload()}}):t(W,{children:"Select a memory, or create a new one."})})]})]}),t("div",{style:{display:"none"},children:t(M,{children:"x"})})]})}function Wi({rows:e}){let n=[...e].sort((s,i)=>i.raw_chars-s.raw_chars);return t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"tool"}),t("th",{class:"num",children:"calls"}),t("th",{class:"num",children:"seen"}),t("th",{class:"num",children:"returned"}),t("th",{class:"num",children:"saved"})]})}),t("tbody",{children:n.length?n.map(s=>{let i=Math.ceil(s.raw_chars/4),r=Math.ceil(s.returned_chars/4);return t("tr",{children:[t("td",{children:s.tool}),t("td",{class:"num",children:s.calls}),t("td",{class:"num",children:te(i)}),t("td",{class:"num",children:te(r)}),t("td",{class:"num",children:te(Math.max(0,i-r))})]})}):t("tr",{children:t("td",{class:"muted",colSpan:5,children:"no calls yet"})})})]})}function Ji(){let e=X(()=>H("/api/stats"),[]);if(e.error)return t("div",{class:"page",children:t(K,{error:e.error})});let n=e.data;if(!n)return t("div",{class:"page",children:t(z,{})});let s=[["session saved",te(n.session.savedTokens),`${nt(n.session.efficiency)} efficient \xB7 ${n.session.calls} calls`],["project saved",te(n.projectTotals.savedTokens),`${nt(n.projectTotals.efficiency)} efficient \xB7 ${n.projectTotals.calls} calls`],["lifetime saved",te(n.lifetime.savedTokens),`${nt(n.lifetime.efficiency)} efficient \xB7 ${n.lifetime.calls} calls`],["documents",String(n.index.documents),t(P,{children:[n.index.vectors," vectors",n.index.pendingEmbeddings?t("span",{class:"warn",children:" \xB7 backlog"}):null]})],["memories",String(n.index.memories),`${n.onboarding.length}/4 onboarding`],["graph",`${n.index.graph.nodes} nodes`,`${n.index.graph.edges} edges`]],i=Math.max(1,...n.daily.map(a=>a.saved_chars)),r=["overview","structure","commands","conventions"].filter(a=>!n.onboarding.includes(a));return t("div",{class:"page",children:[t("div",{class:"grid",children:s.map(([a,o,l])=>t("div",{class:"card",children:[t("h3",{children:a}),t("div",{class:"big",children:o}),t("div",{class:"sub",children:l})]}))}),t("div",{class:"grid wide",children:[t("div",{class:"card",children:[t("h3",{children:["tokens saved per day",t("span",{class:"right",children:n.daily.length?`${n.daily[0]?.day} \u2192 ${n.daily[n.daily.length-1]?.day}`:""})]}),t("div",{class:"bars",children:n.daily.length?n.daily.map(a=>t("div",{title:`${a.day}: ${te(Math.ceil(a.saved_chars/4))} tokens, ${a.calls} calls`,style:{height:`${Math.max(2,100*a.saved_chars/i)}%`}})):t("div",{class:"muted",children:"no data yet"})})]}),t("div",{class:"card",children:[t("h3",{children:"system"}),t(Ie,{rows:[["project",n.project],["database",n.dbPath],["routing",n.routing],["embeddings",n.index.embeddings],["memories dir",n.memoriesDir],["onboarding",r.length?t("span",{class:"warn",children:["missing: ",r.join(", ")," \u2014 run /eminiar:em-onboard"]}):t("span",{class:"ok",children:"complete"})],["session",n.session.id]]})]})]}),t("div",{class:"grid two",children:[t("div",{class:"card",children:[t("h3",{children:"this session \xB7 by tool"}),t(Wi,{rows:n.session.tools})]}),t("div",{class:"card",children:[t("h3",{children:"lifetime \xB7 by tool"}),t(Wi,{rows:n.lifetime.tools})]})]}),t("div",{class:"grid",children:[t("div",{class:"card",children:[t("h3",{children:"index by source"}),t("table",{children:t("tbody",{children:Object.entries(n.index.bySource).filter(([,a])=>a).map(([a,o])=>t("tr",{children:[t("td",{children:a}),t("td",{class:"num",children:o})]}))})})]}),t("div",{class:"card",children:[t("h3",{children:"graph by edge kind"}),t("table",{children:t("tbody",{children:Object.entries(n.index.graph.byKind??{}).sort((a,o)=>o[1]-a[1]).map(([a,o])=>t("tr",{children:[t("td",{children:a}),t("td",{class:"num",children:o})]}))})})]}),t("div",{class:"card",style:{gridColumn:"span 2"},children:[t("h3",{children:["recent sessions"," ",t("a",{class:"right",onClick:()=>O("sessions"),children:"all \u2192"})]}),t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"started"}),t("th",{children:"session"}),t("th",{children:"last prompt"}),t("th",{class:"num",children:"calls"}),t("th",{class:"num",children:"saved"})]})}),t("tbody",{children:n.sessions.map(a=>t("tr",{children:[t("td",{class:"muted",children:[ie(a.started_at)," ",a.current?t(M,{children:"current"}):null]}),t("td",{children:t("code",{children:a.id.slice(0,8)})}),t("td",{class:"muted",children:(a.last_prompt??"").slice(0,90)}),t("td",{class:"num",children:a.calls}),t("td",{class:"num",children:te(a.savedTokens)})]}))})]})]})]})]})}function Vi(){let e=X(()=>H("/api/sessions",{limit:60}),[]),[n,s]=S(null),[i,r]=S(""),[a,o]=S(100);U(()=>{!n&&e.data?.[0]&&s(e.data[0].id)},[e.data]);let l=X(()=>n?H("/api/events",{session:n,category:i||void 0,limit:a}):Promise.resolve([]),[n,i,a]),d=[...new Set((l.data??[]).map(c=>c.category))].sort();return e.error?t("div",{class:"page",children:t(K,{error:e.error})}):t("div",{class:"page",children:t("div",{class:"grid wide",style:{gridTemplateColumns:"minmax(280px,1fr) minmax(0,2fr)",alignItems:"start"},children:[t("div",{class:"card flush",children:t("div",{class:"list",children:e.data?e.data.length?e.data.map(c=>t("div",{class:D("item",n===c.id&&"sel"),onClick:()=>s(c.id),children:[t("div",{class:"n",children:[t("code",{children:c.id.slice(0,8)})," ",c.current?t(M,{children:"current"}):null,t("span",{class:"muted",style:{float:"right",fontWeight:400},children:ie(c.started_at)})]}),t("div",{class:"p",children:(c.last_prompt??"(no prompt yet)").slice(0,100)}),t("div",{class:"p",children:[c.calls," calls \xB7 ",te(c.savedTokens)," saved \xB7 ",nt(c.efficiency),c.source?` \xB7 ${c.source}`:""]})]})):t(W,{children:"no sessions yet"}):t(W,{children:t(z,{})})})}),t("div",{class:"card",children:[t("h3",{children:["events \xB7 ",n?n.slice(0,8):"all"," \xB7 ",l.data?.length??0]}),t("div",{class:"row",style:{marginBottom:8},children:[t("select",{value:i,onChange:c=>r(c.target.value),children:[t("option",{value:"",children:"all categories"}),d.map(c=>t("option",{value:c,children:c}))]}),t("label",{class:"muted small",children:["limit"," ",t("select",{value:String(a),onChange:c=>o(Number(c.target.value)),children:[100,300,1e3].map(c=>t("option",{value:String(c),children:c}))})]})]}),l.error?t(K,{error:l.error}):t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"time"}),t("th",{children:"category"}),t("th",{children:"tool"}),t("th",{children:"payload"})]})}),t("tbody",{children:(l.data??[]).length?(l.data??[]).map(c=>t("tr",{children:[t("td",{class:"muted nowrap",title:new Date(c.ts).toLocaleString(),children:Ys(c.ts)}),t("td",{class:"nowrap",children:[t(M,{children:["P",c.priority]}),c.category]}),t("td",{children:c.tool??""}),t("td",{children:t("pre",{class:"json",children:JSON.stringify(c.payload).slice(0,400)})})]})):t("tr",{children:t("td",{colSpan:4,class:"muted",children:"no events"})})})]})]})]})})}function Gl(){let[e,n]=S(!1),s=X(()=>H("/api/doctor",{fix:e?1:void 0}),[e]),i=(s.data??[]).filter(r=>!r.ok).length;return t(P,{children:[t("div",{class:"row",style:{marginBottom:10},children:[t("button",{type:"button",class:"primary",onClick:()=>s.reload(),children:"Re-run"}),t("button",{type:"button",onClick:()=>{n(!0),s.reload()},children:"Run with --fix"}),t("span",{class:"muted small",children:s.loading?t(z,{}):s.data?i?t("span",{class:"bad",children:[i," problem",i>1?"s":""]}):t("span",{class:"ok",children:"all checks pass"}):""})]}),s.error?t(K,{error:s.error}):t("div",{class:"card flush",children:t("table",{children:t("tbody",{children:(s.data??[]).map(r=>t("tr",{children:[t("td",{class:D(r.ok?"ok":"bad"),style:{width:24},children:r.ok?"\u2713":"\u2717"}),t("td",{class:"nowrap",children:r.name}),t("td",{class:"break",children:r.detail})]}))})})})]})}function Xl({onChanged:e}){let[n,s]=S([]),[i,r]=S(null),[a,o]=S("all"),[l,d]=S(!1),[c,u]=S(""),[p,g]=S(""),[f,x]=S("index"),[h,m]=S(""),v=X(()=>H("/api/stats"),[]),y=async(k,T)=>{r(k);let E=new Date().toLocaleTimeString();s(w=>[...w,`[${E}] ${k} \u2026`]);try{let w=await ye("/api/actions",T);s(C=>[...C,`${w.ok?"\u2713":"\u2717"} ${k} (${w.ms} ms)
82
+ ${w.output}`]),w.ok?Z(`${k} done`):Z(w.output.split(`
83
+ `)[0]??"failed",!0),e()}catch(w){s(C=>[...C,`\u2717 ${k} failed: ${w.message}`]),Z(w.message,!0)}finally{r(null)}},b=({label:k,body:T,cls:E})=>t("button",{type:"button",class:E??"primary",disabled:!!i,onClick:()=>y(k,T),children:i===k?t(z,{}):k});return t(P,{children:[t("div",{class:"actions",children:[t("div",{class:"card",children:[t("h3",{children:"reindex"}),t("p",{children:"Rebuild the code graph, git signals, metrics, docs, memories or embeddings. Incremental unless full."}),t("div",{class:"row",children:[t("select",{value:a,onChange:k=>o(k.target.value),children:["all","code","git","metrics","docs","memories","embeddings"].map(k=>t("option",{value:k,children:k}))}),t("label",{class:"small",children:[t("input",{type:"checkbox",checked:l,onChange:k=>d(k.target.checked)})," ","full"]}),t(b,{label:`reindex ${a}`,body:{action:"reindex",scope:a,full:l}})]})]}),t("div",{class:"card",children:[t("h3",{children:"index a path"}),t("p",{children:"Index files or a directory into search (markdown by default; pass globs for other files)."}),t("div",{class:"row",children:[t("input",{type:"text",class:"grow",placeholder:"docs/ or README.md",value:c,onInput:k=>u(k.target.value)}),t("input",{type:"text",placeholder:"globs, comma separated",style:{maxWidth:200},value:p,onInput:k=>g(k.target.value)}),t("button",{type:"button",class:"primary",disabled:!!i||!c.trim(),onClick:()=>y("index",{action:"index",path:c,glob:p}),children:"Index"})]})]}),t("div",{class:"card",children:[t("h3",{children:"embeddings"}),t("p",{children:["Embed every chunk that still has no vector. Loads the model on first use."," ",v.data?t("span",{class:"muted",children:["(",v.data.index.embeddings,")"]}):null]}),t("div",{class:"row",children:t(b,{label:"embed pending",body:{action:"embed"}})})]}),t("div",{class:"card",children:[t("h3",{children:"memories"}),t("p",{children:["Re-import memory files edited, added or removed by hand under"," ",t("code",{children:v.data?.memoriesDir??".eminiar/memories"}),"."]}),t("div",{class:"row",children:t(b,{label:"reconcile",body:{action:"reconcile"}})})]}),t("div",{class:"card",children:[t("h3",{children:"purge"}),t("p",{children:"Permanently delete project data. Memory files stay on disk and are re-imported."}),t("div",{class:"row",children:[t("select",{value:f,onChange:k=>x(k.target.value),children:["index","sessions","graph","memories","all"].map(k=>t("option",{value:k,children:k}))}),t("input",{type:"text",placeholder:'type "purge" to confirm',style:{maxWidth:180},value:h,onInput:k=>m(k.target.value)}),t("button",{type:"button",class:"danger",disabled:!!i||h.trim()!=="purge",onClick:()=>{m(""),y(`purge ${f}`,{action:"purge",scope:f,confirm:!0})},children:"Purge"}),t(b,{label:"empty fetch cache",body:{action:"purge-fetch-cache"},cls:""})]})]}),t("div",{class:"card",children:[t("h3",{children:"server"}),v.data?t(Ie,{rows:[["project",v.data.project],["database",v.data.dbPath],["routing",v.data.routing]]}):t(z,{})]})]}),t("div",{class:"card",children:[t("h3",{children:["action log"," ",t("button",{type:"button",class:"sm right",onClick:()=>s([]),children:"clear"})]}),t("pre",{class:"log",children:n.length?n.join(`
84
84
 
85
- `):"ready."})]})]})}function Fl(){let e=j(()=>O("/api/runs"),[]);return e.error?t(J,{error:e.error}):e.data?t("div",{class:"card flush",children:t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"started"}),t("th",{children:"scope"}),t("th",{class:"num",children:"scanned"}),t("th",{class:"num",children:"indexed"}),t("th",{class:"num",children:"unchanged"}),t("th",{class:"num",children:"skipped"}),t("th",{class:"num",children:"removed"}),t("th",{class:"num",children:"errors"}),t("th",{class:"num",children:"ms"}),t("th",{children:"git"}),t("th",{children:"detail"})]})}),t("tbody",{children:e.data.length?e.data.map(n=>t("tr",{children:[t("td",{class:"muted nowrap",title:new Date(n.started_at).toLocaleString(),children:oe(n.started_at)}),t("td",{children:n.scope}),t("td",{class:"num",children:n.scanned}),t("td",{class:"num",children:n.indexed}),t("td",{class:"num",children:n.unchanged}),t("td",{class:"num",children:n.skipped}),t("td",{class:"num",children:n.removed}),t("td",{class:L("num",n.errors>0&&"bad"),children:n.errors}),t("td",{class:"num",children:n.finished_at?n.finished_at-n.started_at:"\u2026"}),t("td",{class:"muted small",children:n.head_sha?.slice(0,7)??""}),t("td",{class:"muted small break",children:n.detail??""})]})):t("tr",{children:t("td",{colSpan:11,class:"muted",children:"no runs logged yet"})})})]})}):t(B,{})}function Ui({onChanged:e}){let[n,s]=C("actions");return t("div",{class:"page",children:[t(Ce,{tabs:[["actions","Actions"],["doctor","Doctor"],["runs","Index runs"]],value:n,onChange:s}),n==="actions"&&t(Rl,{onChanged:e}),n==="doctor"&&t(Al,{}),n==="runs"&&t(Fl,{})]})}var Ll=[["overview","Overview"],["explore","Explore"],["galaxy","Galaxy"],["architecture","Architecture"],["history","History"],["memory","Memory"],["docs","Docs"],["coverage","Coverage"],["sessions","Sessions"],["system","System"]],Ml=new Set(["explore","galaxy"]);function Il(){try{let e=localStorage.getItem("eminiar.theme");return e==="light"||e==="dark"?e:"auto"}catch{return"auto"}}function Dl(e){e==="auto"?document.documentElement.removeAttribute("data-theme"):document.documentElement.setAttribute("data-theme",e);try{e==="auto"?localStorage.removeItem("eminiar.theme"):localStorage.setItem("eminiar.theme",e)}catch{}}function Xi(){let e=er(),[n,s]=C(Il),[i,r]=C(0),[a,o]=C(Cn),l=f=>{qs(f),o(f)},c=j(()=>O("/api/projects"),[i]),d=j(()=>O("/api/status"),[e.view,i,a]);U(()=>{c.data&&!Cn()&&l(c.data.current)},[c.data]),U(()=>{let f=setInterval(()=>r(x=>x+1),45e3);return()=>clearInterval(f)},[]);let u=[...new Set([c.data?.current,...c.data?.projects.map(f=>f.root)??[]].filter(Boolean))],h=d.data,g=e.view;return t(N,{children:[t("header",{class:"top",children:[t("div",{class:"brand",children:[t("span",{children:"em"}),"iniar",t("small",{children:h?.version?`v${h.version}`:""})]}),t("nav",{class:"tabs",children:Ll.map(([f,x])=>t("button",{type:"button",class:L(g===f&&"active"),onClick:()=>z(f),children:x}))}),t("span",{class:"spacer"}),t("span",{class:"small nowrap",title:h?`${h.graph.nodes} nodes \xB7 ${h.freshness.dirty.length} changed \xB7 ${h.freshness.queued} queued`:"",children:[t("i",{class:L("dot",h?.state)}),h?h.state==="empty"?"no graph":h.state==="stale"?"index stale":"index fresh":"\u2026"]}),t("button",{type:"button",class:"ghost sm",title:"theme",onClick:()=>{let f=n==="auto"?"dark":n==="dark"?"light":"auto";s(f),Dl(f)},children:n==="auto"?"\u25D0 auto":n==="dark"?"\u25CF dark":"\u25CB light"}),t("select",{class:"project",title:a,value:a,onChange:f=>{l(f.target.value),r(x=>x+1)},children:u.map(f=>t("option",{value:f,children:f.split("/").slice(-2).join("/")}))})]}),t("main",{class:L("work",Ml.has(g)&&"fill"),children:[g==="overview"&&t(zi,{}),g==="explore"&&t(ei,{params:e.params}),g==="galaxy"&&t(ti,{params:e.params}),g==="architecture"&&t(Or,{params:e.params}),g==="history"&&t(pi,{params:e.params}),g==="memory"&&t(Bi,{params:e.params}),g==="docs"&&t(Vr,{params:e.params}),g==="coverage"&&t(Br,{}),g==="sessions"&&t(ji,{}),g==="system"&&t(Ui,{onChanged:()=>r(f=>f+1)})]},a),t("footer",{class:"status",children:[t("span",{children:["server ",t("b",{class:"ok",children:"ready"})]}),h&&t(N,{children:[t("span",{children:[t("b",{children:h.graph.nodes})," nodes \xB7 ",t("b",{children:h.graph.edges})," edges"]}),t("span",{children:["files: ",t("b",{children:h.files.byStatus.indexed??0})," indexed",h.files.byStatus.partial?` \xB7 ${h.files.byStatus.partial} partial`:"",h.files.byStatus.skipped?` \xB7 ${h.files.byStatus.skipped} skipped`:""]}),t("span",{children:["git ",h.freshness.head?.slice(0,7)??"n/a",h.freshness.indexedHead&&h.freshness.indexedHead!==h.freshness.head?` (signals at ${h.freshness.indexedHead.slice(0,7)})`:""]}),t("span",{children:["last index ",h.freshness.lastRun?oe(h.freshness.lastRun):"never"]})]}),t("span",{class:"spacer"}),t("span",{class:"ellipsis",children:a})]}),t(Zs,{})]})}var Gi=document.getElementById("app");Gi&&Ms(t(Xi,{}),Gi);})();
85
+ `):"ready."})]})]})}function ql(){let e=X(()=>H("/api/runs"),[]);return e.error?t(K,{error:e.error}):e.data?t("div",{class:"card flush",children:t("table",{children:[t("thead",{children:t("tr",{children:[t("th",{children:"started"}),t("th",{children:"scope"}),t("th",{class:"num",children:"scanned"}),t("th",{class:"num",children:"indexed"}),t("th",{class:"num",children:"unchanged"}),t("th",{class:"num",children:"skipped"}),t("th",{class:"num",children:"removed"}),t("th",{class:"num",children:"errors"}),t("th",{class:"num",children:"ms"}),t("th",{children:"git"}),t("th",{children:"detail"})]})}),t("tbody",{children:e.data.length?e.data.map(n=>t("tr",{children:[t("td",{class:"muted nowrap",title:new Date(n.started_at).toLocaleString(),children:ie(n.started_at)}),t("td",{children:n.scope}),t("td",{class:"num",children:n.scanned}),t("td",{class:"num",children:n.indexed}),t("td",{class:"num",children:n.unchanged}),t("td",{class:"num",children:n.skipped}),t("td",{class:"num",children:n.removed}),t("td",{class:D("num",n.errors>0&&"bad"),children:n.errors}),t("td",{class:"num",children:n.finished_at?n.finished_at-n.started_at:"\u2026"}),t("td",{class:"muted small",children:n.head_sha?.slice(0,7)??""}),t("td",{class:"muted small break",children:n.detail??""})]})):t("tr",{children:t("td",{colSpan:11,class:"muted",children:"no runs logged yet"})})})]})}):t(z,{})}function Ki({onChanged:e}){let[n,s]=S("actions");return t("div",{class:"page",children:[t($e,{tabs:[["actions","Actions"],["doctor","Doctor"],["runs","Index runs"]],value:n,onChange:s}),n==="actions"&&t(Xl,{onChanged:e}),n==="doctor"&&t(Gl,{}),n==="runs"&&t(ql,{})]})}var Wl=[["overview","Overview"],["explore","Explore"],["galaxy","Galaxy"],["architecture","Architecture"],["history","History"],["memory","Memory"],["docs","Docs"],["coverage","Coverage"],["sessions","Sessions"],["system","System"]],Jl=new Set(["explore","galaxy"]);function Vl(){try{let e=localStorage.getItem("eminiar.theme");return e==="light"||e==="dark"?e:"auto"}catch{return"auto"}}function Kl(e){e==="auto"?document.documentElement.removeAttribute("data-theme"):document.documentElement.setAttribute("data-theme",e);try{e==="auto"?localStorage.removeItem("eminiar.theme"):localStorage.setItem("eminiar.theme",e)}catch{}}function Zi(){let e=ir(),[n,s]=S(Vl),[i,r]=S(0),[a,o]=S(Dn),l=f=>{Zs(f),o(f)},d=X(()=>H("/api/projects"),[i]),c=X(()=>H("/api/status"),[e.view,i,a]);U(()=>{d.data&&!Dn()&&l(d.data.current)},[d.data]),U(()=>{let f=setInterval(()=>r(x=>x+1),45e3);return()=>clearInterval(f)},[]);let u=[...new Set([d.data?.current,...d.data?.projects.map(f=>f.root)??[]].filter(Boolean))],p=c.data,g=e.view;return t(P,{children:[t("header",{class:"top",children:[t("div",{class:"brand",children:[t("span",{children:"em"}),"iniar",t("small",{children:p?.version?`v${p.version}`:""})]}),t("nav",{class:"tabs",children:Wl.map(([f,x])=>t("button",{type:"button",class:D(g===f&&"active"),onClick:()=>O(f),children:x}))}),t("span",{class:"spacer"}),t("span",{class:"small nowrap",title:p?`${p.graph.nodes} nodes \xB7 ${p.freshness.dirty.length} changed \xB7 ${p.freshness.queued} queued`:"",children:[t("i",{class:D("dot",p?.state)}),p?p.state==="empty"?"no graph":p.state==="stale"?"index stale":"index fresh":"\u2026"]}),t("button",{type:"button",class:"ghost sm",title:"theme",onClick:()=>{let f=n==="auto"?"dark":n==="dark"?"light":"auto";s(f),Kl(f)},children:n==="auto"?"\u25D0 auto":n==="dark"?"\u25CF dark":"\u25CB light"}),t("select",{class:"project",title:a,value:a,onChange:f=>{l(f.target.value),r(x=>x+1)},children:u.map(f=>t("option",{value:f,children:f.split("/").slice(-2).join("/")}))})]}),t("main",{class:D("work",Jl.has(g)&&"fill"),children:[g==="overview"&&t(Ji,{}),g==="explore"&&t(ri,{params:e.params}),g==="galaxy"&&t(ii,{params:e.params}),g==="architecture"&&t(Ur,{params:e.params}),g==="history"&&t(vi,{params:e.params}),g==="memory"&&t(qi,{params:e.params}),g==="docs"&&t(Qr,{params:e.params}),g==="coverage"&&t(Gr,{}),g==="sessions"&&t(Vi,{}),g==="system"&&t(Ki,{onChanged:()=>r(f=>f+1)})]},a),t("footer",{class:"status",children:[t("span",{children:["server ",t("b",{class:"ok",children:"ready"})]}),p&&t(P,{children:[t("span",{children:[t("b",{children:p.graph.nodes})," nodes \xB7 ",t("b",{children:p.graph.edges})," edges"]}),t("span",{children:["files: ",t("b",{children:p.files.byStatus.indexed??0})," indexed",p.files.byStatus.partial?` \xB7 ${p.files.byStatus.partial} partial`:"",p.files.byStatus.skipped?` \xB7 ${p.files.byStatus.skipped} skipped`:""]}),t("span",{children:["git ",p.freshness.head?.slice(0,7)??"n/a",p.freshness.indexedHead&&p.freshness.indexedHead!==p.freshness.head?` (signals at ${p.freshness.indexedHead.slice(0,7)})`:""]}),t("span",{children:["last index ",p.freshness.lastRun?ie(p.freshness.lastRun):"never"]})]}),t("span",{class:"spacer"}),t("span",{class:"ellipsis",children:a})]}),t(nr,{})]})}var Yi=document.getElementById("app");Yi&&Os(t(Zi,{}),Yi);})();
86
86
  /*! Bundled license information:
87
87
 
88
88
  prismjs/prism.js: